栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

基于荔枝派Lichee Nano(全志f1c100s)的kernel移植(二)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于荔枝派Lichee Nano(全志f1c100s)的kernel移植(二)

基于荔枝派Lichee Nano(全志f1c100s)的kernel移植(二)

1.获取源代码2.linux内核修改dts设备树文件3.内核配置修改

3.1.使用命令进入配置界面3.2.支持jffs2文件系统3.3.支持MTD设备 4.添加flash型号支持

4.1修改源码下的 ./drivers/mtd/spi-nor/spi-nor.c,增加xt25f128b型号。 5.编译

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)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号