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卡。
- ZYNQ 7000 MicroZED通过QSPI启动linux内核(不需要SD卡)
- ZYNQ-7000 QSPI Flash和SD卡启动Linux的方式
- zynq-7000的linux QSPI flash启动
- microzed qspi启动方式(1)
- ZYNQ Linux的QSPI Flash启动
- zed board 启动linux-qspi启动、sd卡启动
- zynq的三种启动方式(JTAG,SD,QSPI)
- zynq的三种启动方式(JTAG,SD,QSPI)
- zynq的三种启动方式(JTAG,SD,QSPI)
- zynq的三种启动方式(JTAG,SD,QSPI)
- zynq的三种启动方式(JTAG,SD,QSPI)
- zynq QSPI Flash 启动过程
- zynq QSPI启动速度优化
- zynq QSPI Flash 启动过程
- zynq QSPI
- zynq中通过xilffs读写SD卡
- Zynq中通过xilffs读写SD卡
- Xilinx ZYNQ 7000+Vivado2015.2系列(五)之ZYNQ的三种启动方式-JTAG、SD card、Flash
- android mac系统下怎么直接安装android apk到手机上
- Android Menus II-Popup Menu和Menu Groups
- matlab,Vs2010单步调试汇总
- 游戏AI - 行为树Part1:简介
- 使用SLF4J 实现热加载日志级别
- ZYNQ 7000 MicroZED通过QSPI启动linux内核(不需要SD卡)
- 游戏AI - 行为树Part2:框架
- BAPI:BAPI_CONTRACT_CREATE(内部合同创建)
- 优酷视频 真实地址 新
- python开发_常用的python模块及安装方法
- opencv-Mat2
- SQL查询中having和where的异同点
- 07-图4 哈利波特的考试
- Python+Hadoop Streaming实现MapReduce(word count)