ZYNQ无SD卡启动

基本流程

1、使用petalinux工具生成u-boot.bin文件以及根文件,u-boot.bin下载到QSPI,内核,设备树以及根文件下载到EMMC(使用petalinux生成image.ub我感觉有点麻烦,我用的是根据正点原子手册移植的内核)。

2,u-boot.bin烧录到qspi。

2、通过tftpboot以及nfs的方式启动linux。

3、在linux下格式化emmc。

4、修改linux启动方式。

5、启动linux。

一 u-boot以及根文件生成

1.1 配置petalinux工程        

        petalinux安装以及工程创建,均参考正点原子手册就可。

        因为要从QSPI Flash启动系统,所以需要把BOOT.BIN放到QSPI Flash里。把Subsystem AUTO Hardware Settings➡Advanced bootable images➡storage Settings boot image settings的image storage media改成primary flash。串口记得改成串口0。

        Linux内核和根文件系统要放在eMMC里,eMMC接在ZYNQ的SD1接口上,把Subsystem AUTO Hardware Settings➡SD/SDIO Settings的Primary SD/SDIO设置成ps7_sd_1(这里有Bug,后面改)。此时,根文件系统类型配置成INITRAMFS,因为后面需要先从内存启动Linux系统。其他保持默认设置。(这一段参考了其他博主的教程,我后续没有使用petalinux生成的image.ub 这步设置不需要)。

1.2 配置Linux根文件系统

执行以下命令配置根文件系统 petalinux-config -c rootfs

需要新增mkfs.ext4命令,后续用于格式化eMMC分区。Filesystem Packages➡base➡e2fsprogs的e2fsprogs和e2fsprogs-mke2fs使能。其他保持默认设置。

1.3 编译petalinux工程

petalinux-build

1.4 制作BOOT.BIN

petalinux-package --boot --fsbl --fpga --u-boot --force
将生成的u-boot.bin下载到板卡qspi内,将板卡切换至qspi模式启动,即可进uboot。

1.5 解压根文件

将petalinux生成的根文件压缩包解压到nfs文件夹内,第一次加载linux,使用nfs挂载根文件的方式启动。

二 内核及设备数生成

根据正点原子内核移植篇进行操作即可。

注意:按照正点原子手册操作时,需要在设备树里面添加sd1的信息,否则进linux后找不到emmc。

添加后重新生成设备树即可。

三 初次启动Linux

3.1 修改参数

首先修改uboot的ip地址,这一步根据正点原子手册指导的步骤即可

以下参数可以做参考,我防止遗忘,把配置贴在这里

setenv bootargs ‘console=ttyPS0,115200 root=/dev/nfs rw nfsroot=192.168.3.30:/home/fury/zynq/linux/nfs/rootfs ip=192.168.3.31:192.168. 3.30:192.168.1.1:255.255.255.0::eth0:off’

setenv bootcmd 'tftpboot 8000 zImage; tftpboot 103cdda8 zynq-alientek.dtb;bootz 8000 - 103cdda8'

saveenv

3.2 格式化emmc

参考了正点原子手册操作流程,在嵌入式开发v1.5.2的6.2.10章节

3.3 拷贝根文件

cd /run/media/mmcblk1p2        (使用df -h指令,看一下自己的挂载路径)

tftp -r /rootfs.tar.gz -l ./rootfs.tar.gz -g 192.168.3.30:69

tar -zxvpf rootfs.tar.gz

rm -rf rootfs.tar.gz

四 内核以及设备树加载到emmc

依然参考正点原子手册uboot篇  

举个栗子

tftpboot 00000000 image.ub
fatwrite mmc 0:1 00000000 image.ub 0x428400
一样的方法,将内核及设备树加载到EMMC内。

五 修改启动参数

setenv bootcmd 'fatload mmc 1:1 8000 zImage; fatload mmc 1:1 103cdda8 zynq-alientek.dtb;bootz 8000 - 103cdda8'

setenv bootargs 'console=ttyPS0,115200 root=/dev/mmcblk1p2 rootwait rw'

saveenv

步骤其实很简单,由于本人也是刚刚开始学习linux遂将zynq linux使用EMMC启动的操作流程记录下来,参考了好几位博主的文章,再次感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ZynqSD卡启动流程大致如下: 1. 复位向量从0x0000_0000开始执行,这时候处理器会进入bootrom代码执行。 2. Bootrom会初始化一些系统组件,加载FPGA Bit文件,然后尝试从SD卡中加载FSBL。 3. 如果Bootrom成功加载FSBL,则控制权被转交给FSBL程序,FSBL初始化DDR并加载U-boot。 4. U-boot会初始化系统并加载Linux内核。 5. Linux内核会启动并初始化系统,然后启动用户应用程序。 为这个SD卡启动生成对应的文件通常需要使用Xilinx SDK工具链。具体步骤如下: 1. 创建一个新的Xilinx SDK工程。 2. 将FSBL、U-boot和Linux内核相关文件添加到工程中。 3. 配置工程的BSP(Board Support Package)。 4. 生成BIF文件。BIF文件是一个描述SD卡启动镜像的文件,包含了各个镜像文件的大小和相对位置等信息。 5. 通过BIF文件生成SD卡启动镜像。这个启动镜像可以包含多个文件,通常包含FSBL、U-boot、Linux内核和根文件系统等。 BIF、ELF、BIN和BIT文件的作用如下: - BIF(Boot Image Format)文件:描述SD卡启动镜像的文件,包含了各个镜像文件的大小和相对位置等信息。 - ELF(Executable and Linkable Format)文件:可执行文件和可链接文件的格式,可以在Xilinx SDK中生成。 - BIN文件:二进制文件,通常用于将程序烧录到Flash或SD卡中。 - BIT(Binary Intelhex Format)文件:FPGA配置文件的格式,可以通过Xilinx Vivado生成。BIT文件包含了FPGA的配置信息,可以通过Bootrom加载到FPGA中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值