ZYNQ无SD卡纯NAND Flash启动Linux全攻略
ZYNQ无SD卡纯NAND Flash启动Linux全攻略文章目录ZYNQ无SD卡纯NAND Flash启动Linux全攻略 核心思路提前看️ 第一步Vivado硬件配置 (开启NAND控制器) 第二步PetaLinux系统配置 (划分Flash分区)1. 创建工程并导入硬件2. 配置NAND Flash分区关键3. 配置系统从NAND启动4. 配置文件系统打包进内核 (最稳妥的方案)⚙️ 第三步编译与生成文件生成 BOOT.bin⚡ 第四步通过JTAG烧录文件到NAND Flash1. 准备烧录环境2. 使用 Program Flash 工具烧录 第五步见证奇迹的时刻 常见问题排坑 (FAQ)在ZYNQ开发中大家最常用的是SD卡启动。但如果在实际产品或特定项目中板子上没有SD卡槽只有NAND Flash我们该如何把Linux系统跑起来呢很多新手遇到这个问题会一头雾水.elf文件怎么来BOOT.bin怎么生成内核又该放在哪别慌这篇教程将手把手教你如何配置、生成文件并烧录带你彻底打通NAND Flash启动的任督二脉 核心思路提前看在NAND Flash启动模式下我们需要把所有启动文件烧录到Flash的特定分区地址偏移量中。ZYNQ启动分为几个阶段对应的文件和生成方式如下BOOT.bin包含FSBL (.elf)、FPGA比特流 (.bit)、U-Boot (.elf)。放在Flash起始地址。image.ub包含Linux内核、设备树Device Tree和根文件系统Rootfs。放在Flash的Kernel分区。注意为了让小白最快成功本文采用initramfs根文件系统打包进内核镜像的方式这样只需要烧录BOOT.bin和image.ub两个文件即可️ 第一步Vivado硬件配置 (开启NAND控制器)要在NAND中启动ZYNQ的PS端必须开启NAND控制器。打开Vivado进入Block Design双击ZYNQ7 Processing SystemIP核。点击Peripheral I/O Pins。找到Memory Interfaces- 勾选SMC (NAND)。检查你的原理图配置正确的NAND引脚和Bank电平通常是Bank 500, 1.8V或3.3V。正常进行Run Synthesis-Run Implementation-Generate Bitstream。导出硬件点击File-Export-Export Hardware务必勾选“Include bitstream”生成.xsa文件老版本叫.hdf。 第二步PetaLinux系统配置 (划分Flash分区)将生成的.xsa文件拷贝到Ubuntu虚拟机中开始PetaLinux的配置。1. 创建工程并导入硬件petalinux-create--typeproject--templatezynq--namenand_boot_testcdnand_boot_test petalinux-config --get-hw-description你的xsa文件所在目录2. 配置NAND Flash分区关键在弹出的配置界面中我们需要对NAND Flash进行“切蛋糕”进入Subsystem AUTO Hardware Settings-Flash Settings。在这里配置你的NAND分区表。假设你的NAND比较大比如128MB或256MB我们可以这样分Partition 0: name boot, size 0x500000(5MB用来放BOOT.bin)Partition 1: name bootenv, size 0x20000(128KB用来放U-Boot环境变量)Partition 2: name kernel, size 0x2000000(32MB用来放image.ub包含了内核和文件系统)Partition 3: name spare, size 剩余大小(留作后用)(记下kernel分区的起始偏移量0x500000 0x20000 0x520000后面烧录要用)3. 配置系统从NAND启动仍在刚才的菜单中进入Subsystem AUTO Hardware Settings-Advanced bootable images storage Settings。将boot image settings和kernel image settings的启动介质都改为primary flash。4. 配置文件系统打包进内核 (最稳妥的方案)退回主菜单进入Image Packaging Configuration。将Root filesystem type设置为INITRAMFS。保存并退出 (Save-Exit)。⚙️ 第三步编译与生成文件配置完成后一键编译petalinux-build等待编译完成后所有的原材料就准备好了生成 BOOT.bin在终端输入以下命令PetaLinux会自动把fsbl.elf、system.bit和u-boot.elf打包成一个BOOT.bin文件petalinux-package--boot--fsbl--fpga--u-boot--force打包成功后你需要的文件都在images/linux/目录下BOOT.bin系统引导文件image.ub内核设备树根文件系统将这两个文件拷贝到你的Windows电脑上。⚡ 第四步通过JTAG烧录文件到NAND Flash因为没有SD卡我们不能把文件拷进卡里让它自己更新。我们需要借助下载器JTAG和 Vitis (或 Xilinx SDK) 将文件硬写进NAND Flash。1. 准备烧录环境用JTAG连接开发板和电脑。将开发板的启动模式拨码开关拨到 JTAG 模式很重要不然可能连不上。开发板上电。打开 Vitis (或者 Vivado 中点击Tools-Launch Vitis IDE)。2. 使用 Program Flash 工具烧录在 Vitis 菜单栏点击Xilinx-Program Flash(老版本SDK是Xilinx Tools-Program Flash)。我们需要烧录两次或者合并烧录第一次烧录BOOT.binHardware Platform: 选择你的XSA导出的平台如果有的话没有可留空工具会自动检测。Image File: 选择你刚生成的BOOT.bin。Offset: 填入0x0BOOT.bin永远在Flash的最开头。Flash Type: 选择nand。FSBL File: 选择images/linux/zynq_fsbl.elf烧录工具需要借助FSBL来操作Flash。点击Program。等待进度条走完。第二次烧录image.ubImage File: 选择你刚生成的image.ub。Offset: 填入0x520000这是我们在第二步划分的 kernel 分区起始地址千万别填错否则会覆盖BOOT.bin。Flash Type: 选择nand。FSBL File: 同上。点击Program。image.ub比较大烧录需要一些时间耐心等待。 第五步见证奇迹的时刻烧录完成后关闭开发板电源。将开发板的启动模式拨码开关拨到 NAND 启动模式具体参考你的开发板手册。打开串口调试助手MobaXterm、Putty等波特率通常设为115200。重新给开发板上电如果在串口终端中你看到了熟悉的 U-Boot 倒计时接着跑出 Linux 的企鹅图标和启动日志最后停在petalinux login:提示符前……恭喜你你已经成功掌握了ZYNQ从NAND Flash启动的全套流程 常见问题排坑 (FAQ)Q1烧录时提示 “Flash Operation Failed” 怎么办A请检查1. JTAG是否连接稳定2. 启动拨码是否在JTAG模式3. 烧录界面填入的FSBL文件是否正确4. 原理图NAND引脚是否在Vivado中配置正确。Q2U-Boot启动了但是提示找不到 image.ubA大概率是偏移地址填错了。U-Boot去0x520000找内核但你烧录到了别的地方或者在PetaLinux配置分区时kernel分区的地址和烧录地址不一致。去比对一下U-Boot打印的分区表信息。Q3这种initramfs方式关机后保存的文件会丢失吗A会丢失。initramfs是在内存中解压运行的临时根文件系统。如果你想让修改的文件永久保存后续需要学习如何挂载JFFS2或UBIFS文件系统。但对于小白打通“从0到1”的启动流程本教程的方案是最不易出错的
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2443933.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!