基于荔枝派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.编译

  1. 建议使用如下命令编译:
# 为了加快编译速度,请自行更改线程数
# 覆盖.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
  1. 编译完成后会生成如下两个文件:
./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)

猜你喜欢

转载自blog.csdn.net/qq_39721016/article/details/123396573