基于荔枝派Lichee Nano(全志f1c100s)的Nor Flash烧录程序教程(四)

本教程详细介绍了如何在LicheeNano开发板上进行NorFlash的烧录操作,包括MBR分区表的设置、sunxi-tools的安装和使用,以及u-boot、kernel、dtb、rootfs和userfs的烧录步骤。通过这些步骤,用户可以成功将系统文件烧录到开发板中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.MBR分区表

-----------------------------------------------------------MBR分区表-----------------------------------------------------------

分区序号分区大小分区作用地址空间及分区名
mtd01MBspl+uboot0x0000000-0x0100000 : “uboot”
mtd264KBdtb文件0x0100000-0x0110000: “dtb”
mtd24MBlinux内核0x0110000-0x0510000 : “kernel”
mtd3剩余根文件系统0x0510000-0x0c00000 : “rootfs”
mtd4剩余用户区0x0c00000-0x1000000 : “user”

2.安装下载工具 sunxi-tools

1)u-boot有了,接下来就是把它烧进板子里,所以我们需要一个适配 Nano 的下载工具。

2)获取烧录工具(目录根据自己的情况放置即可):

git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git

说明:如果有对应的压缩包,可跳过此步骤。

3)进入该目录cd sunxi-tools,使用命令编译和安装:

make && sudo make install

说明:如果编译过程中出现报错,大概率是缺少了一些链接库,需要根据对应的错误进行安装。

3.烧录

3.1烧录前说明:

1)将Nano上电,此时要确认Nano是否处于fel下载模式,如果你是一片全新的Nano ( 全新指没烧录过 ),其应该会自动进入fel模式,可以通过命令 sudo sunxi-fel ver 来确认有无成功进入fel模式。若出现如下错误,说明没有进入fel模式,此时需要先将Nano断电,拉低SPI flash 的 CS引脚,再重新上电;

2)将OTG先接入Nano(你的荔枝派开发板)和电脑,使用ubuntu烧录。进入fel模式后,进行程序下载

3.2.烧录u-boot

sunxi-fel -p spiflash-write 0 u-boot-sunxi-with-spl.bin

3.3.烧录kernel

sunxi-fel -p spiflash-write 0x0110000 arch/arm/boot/zImage

3.4.烧录dtb

sunxi-fel -p spiflash-write 0x0100000 arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb

3.5.烧录rootfs

sunxi-fel -p spiflash-write 0x0510000 rootfs.img

3.6.烧录userfs

说明:这个是个人创建的文件系统,该分区如果不需要可以不烧了

sunxi-fel -p spiflash-write 0x0c00000 userfs.img 
<think>我们参考引用内容,特别是引用[3]和引用[5]提供了关于全志F1C100s芯片上安装Linux系统的具体步骤。 根据引用[3],我们可以知道启动Linux内核需要手动输入uboot命令,包括加载内核镜像(zImage)和设备树文件(.dtb),设置启动参数(bootargs),然后启动内核(bootz)。 引用[5]则提到了在uboot中配置LCD参数和背光引脚,这属于uboot的配置部分,用于支持显示。 安装Linux系统到全志F1C100s芯片(通常使用SD卡或SPI Flash作为存储)的一般步骤: 1. 准备编译环境:安装交叉编译工具链。 2. 编译uboot:配置uboot以支持F1C100s,并编译生成u-boot-sunxi-with-spl.bin。 3. 编译Linux内核:配置内核,编译生成zImage和对应的设备树文件。 4. 准备根文件系统:可以构建BusyBox或使用现成的根文件系统(如Buildroot生成)。 5. 将上述组件烧录到SD卡或SPI Flash中。 具体步骤: 步骤1:准备编译环境 安装交叉编译工具链,例如arm-linux-gnueabi-。 步骤2:编译uboot 下载uboot源码(支持全志sunxi的版本),然后进行配置和编译。 例如,引用[5]中提到配置uboot的LCD参数和背光引脚,这可以在uboot的menuconfig中设置。 步骤3:编译Linux内核 下载Linux内核源码(支持全志sunxi的版本),然后进行配置和编译。 配置内核时,需要选择适合F1C100s的配置(例如,使用suniv_defconfig),然后编译生成zImage和设备树文件(suniv-f1c100s-licheepi-nano.dtb)。 步骤4:准备根文件系统 可以使用BusyBox构建最小根文件系统,或者使用Buildroot等工具生成完整的根文件系统。 将根文件系统制作成镜像(如ext4格式)或者直接复制到SD卡的第二个分区。 步骤5:烧录到SD卡 将SD卡插入电脑,假设SD卡设备为/dev/sdb。 - 使用dd命令烧写uboot到SD卡的开头(注意:seek=8,因为全志芯片要求uboot从第8K开始): `sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8` - 创建两个分区: 第一个分区(FAT32)用于存放内核镜像和设备树文件,大小约几十MB。 第二个分区(ext4)用于根文件系统,剩余空间。 - 将zImage和suniv-f1c100s-licheepi-nano.dtb复制到第一个分区。 - 将根文件系统的内容解压或复制到第二个分区。 步骤6:启动系统 将SD卡插入开发板,上电启动。 在uboot启动时,如果自动启动失败,可以进入uboot命令行,手动设置启动参数(如引用[3]所示): load mmc 0:1 0x80008000 zImage load mmc 0:1 0x80c08000 suniv-f1c100s-licheepi-nano.dtb setenv bootargs console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0 bootz 0x80008000 - 0x80c08000 为了让uboot自动启动,可以将这些命令保存到bootcmd环境变量中,并保存环境变量(使用saveenv命令)。 注意:以上步骤中的具体参数(如设备树文件名、分区号)可能需要根据实际情况调整。 另外,引用[4]提到了超频,但这不是安装系统必需的,属于性能优化。 根据引用[1]和[2],F1C100s和F1C200s的主要区别是内置内存大小和视频解码能力,但系统安装过程类似。 因此,总结安装步骤为:准备工具链 -> 编译uboot -> 编译内核 -> 制作根文件系统 -> 烧录到SD卡 -> 启动。 现在,我们为用户提供详细的步骤说明。</think>在全志F1C100S芯片上安装Linux系统需要经过以下步骤,结合硬件特性和开发环境进行配置: ### 一、硬件准备 1. **开发板要求** - 确认开发板包含SD卡槽、SPI Flash和调试串口(通过Type-C引出)[^2] - 准备至少4GB的SD卡(用于系统启动和存储) - 调试串口连接电脑(波特率115200) 2. **芯片特性注意** - F1C100S采用ARM926EJ-S内核(ARMv5架构),无硬件FPU[^1] - 内置32MB DDR1内存,支持720p视频解码[^2] ### 二、软件编译环境搭建 1. **安装工具链** ```bash sudo apt-get install gcc-arm-linux-gnueabi make u-boot-tools ``` 2. **获取源码** - U-Boot:`git clone https://github.com/Lichee-Pi/u-boot.git -b nano-v2018.01` - Linux内核:`git clone https://github.com/Lichee-Pi/linux.git -b nano-5.2-tf` ### 三、系统组件编译 1. **编译U-Boot** ```bash cd u-boot make ARCH=arm licheepi_nano_defconfig make ARCH=arm menuconfig # 配置LCD参数(如800x480)[^5] make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 ``` 2. **编译Linux内核** ```bash cd linux make ARCH=arm suniv_defconfig make ARCH=arm menuconfig # 启用必要驱动(如MMC、USB) make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage dtbs -j4 ``` 3. **制作根文件系统** 使用Buildroot构建最小系统: ```bash git clone https://github.com/buildroot/buildroot make licheepi_nano_defconfig make ``` ### 烧录系统到SD卡 1. **分区准备**(假设SD卡为`/dev/sdb`): ```bash sudo fdisk /dev/sdb # 创建两个分区: # 分区1: FAT32 (100MB, 存放内核) # 分区2: EXT4 (剩余空间, 根文件系统) sudo mkfs.vfat /dev/sdb1 sudo mkfs.ext4 /dev/sdb2 ``` 2. **烧写U-Boot**: ```bash sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8 ``` 3. **复制系统文件**: ```bash mount /dev/sdb1 /mnt/boot cp linux/arch/arm/boot/zImage /mnt/boot cp linux/arch/arm/boot/dts/suniv-f1c100s-*.dtb /mnt/boot umount /mnt/boot mount /dev/sdb2 /mnt/rootfs tar -xvf buildroot/output/images/rootfs.tar -C /mnt/rootfs umount /mnt/rootfs ``` ### 五、启动配置 1. **U-Boot环境变量**(通过串口调试): ```bash setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait rw setenv bootcmd "load mmc 0:1 0x80008000 zImage; load mmc 0:1 0x80c08000 suniv-f1c100s-licheepi-nano.dtb; bootz 0x80008000 - 0x80c08000" saveenv ``` 2. **首次启动**: 插入SD卡上电,系统将从mmcblk0p2加载根文件系统[^3]。观察串口输出,确认内核成功挂载根文件系统。 ### 六、高级配置(可选) 1. **超频设置** 在U-Boot配置中修改CPU频率(默认408MHz)和DDR频率(默认156MHz)[^4]: ```bash # 修改U-Boot配置文件 CONFIG_DRAM_CLK=240 # DDR超频至240MHz CONFIG_SYS_CLK_FREQ=720000000 # CPU超频至720MHz ``` 2. **显示驱动优化** 在`arch/arm/mach-sunxi/dram_suniv.c`中调整时序参数,匹配具体屏幕型号[^5]。 > **注意事项** > - F1C100S启动时**必须**从SPI Flash或SD卡加载引导程序[^2] > - 若使用SPI Flash启动,需通过`xfel`工具烧录:`xfel spinand write 0 u-boot-sunxi-with-spl.bin` > - 系统崩溃时可使用`earlyprintk`参数调试内核[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值