ZYNQ 7000 MicroZED通过QSPI启动linux内核(不需要SD卡)

来源:互联网 发布:网络金融理财产品 编辑:程序博客网 时间:2024/06/06 09:54

有SD卡的时候,常常通过SD内存入linux内核以及文件系统等,但是如果想要脱离SD卡来运行linux的话,就必须将linux启动所需的一些文件写入到QSPI中,因为MicroZED可以通过跳线帽将启动模式选择成为QSPI,这个QSPI就是在板子上的一个SPI通信的存储芯片。

 

想要通过QSPI来启动linux,我们首先来了解一下ZYNQ的启动流程,简单来说就是两个步骤,首先运行FSBL代码来初始化PS,然后就是SSBL,如果接下来要加载linux内核,那SSBL就是u-boot引导代码。通过这两步就可以加载内核了。知道启动流程之后,我们的目的就非常明确了,就是将启动linux所需的所有文件都放入QSPI中,下面我们就来完成这个过程。

 

1.首先需要准备的就是官网上下载的MicroZed_Linux_sd_image文件夹,解压缩之后会有以下文件:


其中boot.bin是通过将FSBL.ELF与u-boot.ELF一起生成的二进制文件,devicetree是设备树,通过设备树加载文件系统,system.bit.bin是初始化PL的bit流的二进制文件,uImage是linux内核文件。uramdisk.image.gz是ram disk文件系统。

 

2.通过Vivado SDK将boot.bin通过JTAG烧录到QSPI中。如图所示:


点击program等待烧录完成。

之前说过boot.bin中包含FSBL跟U-BOOT,所以如果此时将microZED上的跳线改成QSPI启动,则一上电系统首先会运行FSBL,然后进入u-boot加载内核,但是此时是没有内核可以加载的,所以会提示找不到内核文件。

此时进入到uboot的操作界面了

 

3.我们可以通过uboot将linux启动所需要的文件传输进入QSPI,这里我们通过串口传输。我们输入help可以查看可用的命令,我门这里需要运用到loadb(串口传输)和sf(SPI烧录)两个命令。我们整理下要烧录那些文件,并且存放在SPI的什么位置,可以通过下面这张图查看,最后的PL比特流如果没有可以不用烧录。


我们可以看到boot.bin已经通过JTAG烧录到QSPI中了,所以我们从uImage开始。

4.在uboot操作界面下输入sf会出现SF的用法:



可以看到主要有5个命令,其中我们只要运用到前四个就可以了

这些命令的用法在后面结合具体烧录步骤说明。

我们按照下面的语句输入就可以成功烧录uImage了:

sf probe 0 0 0   

初始化flash device

sf erase 0x00100000 0x500000 

将QSPI的内容从地址0x00100000开始擦除0x500000长度的数据

sf read 0x08000000 0x00100000 0x500000

将QSPI的内容从地址0x00100000开始复制0x500000长度的数据到DDR内存的0x08000000中,目的是为了清空DDR中的内容

loadb 0x08000000

这个步骤是串口传输文件到DDR中的0x8000000,这一步执行完后,系统会等待传输文件,通过串口工具将uImage传输到DDR中,注意传输协议选择kermit:


传输完成后,此时uImage应该是保存在DDR内存的0x08000000中。

sf write 0x08000000 0x00100000 0x500000

这一步是将DDR内存中的0x0800000中的数据传输到QSPI的0X00100000,并且传输长度为0x500000。

到此为止我们已经成功将uImage传输到QSPI中了,之后的几个文件按照同样的方法传输就可以。我在这里将代码列出来以供参考。

sf erase 0x00600000 0x20000

sf read 0x08000000 0x00600000 0x20000

loadb 0x08000000   //等待传输完成

sf write 0x08000000 0x00600000 0x20000

 

sf erase 0x00620000 0x5e0000

sf read 0x08000000 0x00620000 0x5e0000

loadb 0x08000000  //等待传输完成

sf write 0x08000000 0x00620000 0x5e0000

 

所有linux启动需要的文件传输到QSPI后,就可以重新上电,打开串口,就可以看到成功进入到了linux系统中了,整个过程没有用到SD卡。


0 0
原创粉丝点击