四、荔枝派Nano烧录镜像生成 Linux篇

一、下载Lichee官方指定Linux仓库及分支

git clone --depth=1 -b f1c100s-480272lcd-test https://github.com/Icenowy/linux.git

二、配置Linux

1、下载 .config 文件,放入源码主目录进行替换 (若下载时文件名有变,请重命名回 .config ); 2、make ARCH=arm menuconfig

如图所示

SPI-Flash的支持 进入 Device Drivers -> SPI support,将 Allwinner A10 SoCs SPI controller取消勾选,然后勾上下面的Allwinner A31 SPI Controller。这是为了修正配置文件中SPI驱动不正确的问题。 勾上并进入 Device Drivers -> Memory Technology Device (MTD) support,选上下面两项: Command line partitioning table parsing #为了解析内核参数传过来的分区信息,如果用设备树应该可以不选 Caching block device access to MTD devices #为了生成/dev/mtdblock*设备,不选会在启动的时候卡在 watiting for device /dev/mtdblock*
File systems > Miscellaneous filesystems 添加对JFFS2文件系统的支持

如下图

保存并退出

打开drivers/mtd/spi-nor/spi-nor.c,检查自己的flash型号的参数是否含有SECT_4K,如果有则改为0

如下图

最后修改设备树文件中的分区信息,可以参考前面官方教程里面的dts修改章节。 &spi0 { pinctrl-names = "default"; pinctrl-0 = <&spi0_pins_a>; status = "okay"; spi-max-frequency = <50000000>; flash: w25q128@0 { #address-cells = <1>; #size-cells = <1>; compatible = "winbond,w25q128", "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>; }; }; }; };

四、编译

执行编译命令

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8

经过编译

在linux/arch/arm/boot/zImage的目录生成 kernel镜像

在linux//arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb生成设备树编译文件

至此,Linux编译完成

经验分享 程序员 微信小程序 职场和发展