基于荔枝派Lichee Nano(全志f1c100s)的kernel移植(二)
1.获取源代码
1.下载默认带480*272LCD的版本:git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git
2.或者下载不带LCD驱动的版本:git clone --depth=1 -b f1c100s https://github.com/Icenowy/linux.git
2.linux内核修改dts设备树文件
1.修改内核源码目录下的 ./arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dts
//==============================================================
说明:(注意这里我的板子上的SPI Flash型号是xt25f128b,因此上面的型号填的是xt25f128b,官方默认是w25f128,要根据自己板上的型号修改,对应的分区也在里面,烧录的时候需要用到)
由于我们使用的nor flash是xt25f128b,所以需要更改对应的flash型号,将原内容:
&spi0 {
pinctrl-names = "default";
pinctrl-0 = <&spi0_pins_a>;
status = "okay";
flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "winbond,w25q128", "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <40000000>;
};
};
更改为:
&spi0 {
pinctrl-names = "default";
pinctrl-0 = <&spi0_pins_a>;
status = "okay";
spi-max-frequency = <50000000>;
flash: xt25f128b@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "winbond,xt25f128b", "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <50000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x000000 0x100000>;
read-only;
};
partition@100000 {
label = "dtb";
reg = <0x100000 0x10000>;
read-only;
};
partition@110000 {
label = "kernel";
reg = <0x110000 0x400000>;
read-only;
};
partition@510000 {
label = "rootfs";
reg = <0x510000 0xAF0000>;
};
};
};
};
//==============================================================
3.内核配置修改
3.1.使用命令进入配置界面
make ARCH=arm menuconfig
3.2.支持jffs2文件系统
File systems --->
[*] Miscellaneous filesystems --->
<*> Journalling Flash File System v2 (JFFS2) support
3.3.支持MTD设备
Device Drivers --->
<*> Memory Technology Device (MTD) support --->
<*> Caching block device access to MTD devices
4.添加flash型号支持
4.1修改源码下的 ./drivers/mtd/spi-nor/spi-nor.c,增加xt25f128b型号。
//找到如下数组,并修改
static const struct flash_info spi_nor_ids[] = {
……
{
"w25q128", INFO(0xef4018, 0, 64 * 1024, 256, SECT_4K) },
//新增xt25f128b型号的spi flash支持
{
"xt25f128b", INFO(0x0b4018, 0, 64 * 1024, 256, 0) }, //添加这行即可
……
};
//如果是其他型号则将型号和对应的ID加入这个表中即可,如果是默认的w25q128,则需要将后面的SECT_4K改为0,如下:
{
"w25q128", INFO(0xef4018, 0, 64 * 1024, 256, 0) },
5.编译
- 建议使用如下命令编译:
# 为了加快编译速度,请自行更改线程数
# 覆盖.config文件
cp config configs/.config //这个没有的话就手动配置,其实上面已经配置好了。
# 编译内核,生成zImage
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8
# 编译dts,生成dtb文件
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs -j8
# 编译内核模块,并输出到out目录
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=out modules
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=out modules_install
- 编译完成后会生成如下两个文件:
./arch/arm/boot/zImage
./arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb
./out/lib/modules
基于荔枝派Lichee Nano(全志f1c100s)的rootfs移植(三)
链接: link.(https://blog.csdn.net/qq_39721016/article/details/123400520?spm=1001.2014.3001.5501)