15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

【Linux】编译适用于NOR Flash的Linux文件系统

在嵌入式系统中,使用NOR Flash作为存储介质时,通常需要选择合适的文件系统并进行相关配置和编译。以下是实现这一目标的步骤。

1. 准备工作

  • 获取工具链:安装交叉编译工具,如 gcc-linaro 和设备树编译器 dtc
  • 下载源码: U-Boot 源码:Lichee-Pi U-Boot。 Linux 内核源码:Lichee-Pi Linux。

2. 配置和编译U-Boot

  • 配置支持NOR Flash
make ARCH=arm menuconfig
  • 设置默认启动参数: 修改 include/configs/sun8i.h 文件,添加如下内容:
#define CONFIG_BOOTCOMMAND "sf probe 0; sf read 0x41800000 0x100000 0x10000; sf read 0x41000000 0x110000 0x400000; bootz 0x41000000 - 0x41800000"
#define CONFIG_BOOTARGS "console=ttyS0,115200 root=/dev/mtdblock3 rootfstype=jffs2 rw"
  • 编译U-Boot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

3. 配置和编译Linux内核

  • 配置内核选项: make ARCH=arm menuconfig 启用 Device Drivers -> Memory Technology Device (MTD) support。 启用 File systems -> Miscellaneous filesystems -> JFFS2 support。
  • 修改设备树文件: 在设备树文件(如 sun8i-v3s-licheepi-zero.dts)中添加SPI Flash节点:
&spi0 {
   status = "okay";
   flash@0 {
       compatible = "jedec,spi-nor";
       reg = <0x0>;
       spi-max-frequency = <50000000>;
   };
};
  • 编译内核和设备树
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

4. 制作JFFS2文件系统镜像

  • 安装工具:
sudo apt-get install mtd-utils
  • 制作镜像:
mkfs.jffs2 -s 0x100 -e 0x10000 -p 0xAF0000 -d rootfs/ -o jffs2.img

5. 打包镜像

  • 将U-Boot、内核、设备树和文件系统打包为一个镜像:

dd if=/dev/zero of=flashimg.bin bs=1M count=16
dd if=u-boot-sunxi-with-spl.bin of=flashimg.bin bs=1K conv=notrunc
dd if=sun8i-v3s-licheepi-zero.dtb of=flashimg.bin bs=1K seek=1024 conv=notrunc
dd if=zImage of=flashimg.bin bs=1K seek=1088 conv=notrunc
dd if=jffs2.img of=flashimg.bin bs=1K seek=5184 conv=notrunc

6. 烧录镜像到NOR Flash

  • 使用 sunxi-fel 工具烧录镜像:
sudo sunxi-fel -p spiflash-write 0 flashimg.bin

anyShare分享到:
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。
stormwind

发表评论