TLZ7x-EasyEVM开发板XC7Z020基于SD卡启动裸机程序

天涯浪子 提交于 2020-10-01 09:37:35

开发环境说明

 

表 1

开发板型号

是否支持本实验

TLZ7x-EasyEVM

支持

TLZ7xH-EVM

支持

 

本文以TLZ7x-EasyEVM开发板为例,核心板SoC芯片型号为XC7Z020,演示使用SD卡启动Zynq裸机程序的方法。

基于SD卡启动的裸机程序主要包含两类,一是ARM(PS端)+FPGA(PL端)的All-Programmable-SoC-demos例程,二是纯PS(不依赖PL端)的Baremetal(NoOS)裸机例程。两类裸机程序的运行都需要依赖FSBL的BOOT.BIN文件和U-Boot的u-boot.bin文件引导,主要区别在于Baremetal(NoOS)裸机例程不包含PL端xxx.bin程序。

 从SD卡启动SoC裸机程序说明

分别参照《基于TcL脚本生成Vivado工程及编译》、《基于TcL脚本生成xsdk工程及编译》文档,编译All-Programmable-SoC-demos例程。

将SD存储卡格式化为FAT32格式,或者直接使用SD系统启动卡的boot分区,SD系统启动卡boot分区即为FAT32格式。将PS端的xxx.elf程序和PL端xxx.bin程序复制到SD卡,另外将BOOT.BIN和u-boot.bin两个文件也添加复制到SD卡。

以光盘"All-Programmable-SoC-demos\tl-axi-gpio-led-demo"例程为例,PS端程序为"tl-axi-gpio-led-demo\sw\axi_gpio_baremetal_demo\bin\axi_gpio.elf",PL端程序为"tl-axi-gpio-led-demo\hw\bin\axi_gpio_xc7z020.bin"。

 

表 2

对应文件名

职责说明

FSBL\image\embeddedsw-[Git系列号]-[版本号\BOOT.BIN

初始化DDR等外设,加载U-Boot镜像文件

U-Boot\U-Boot-2017.01\image\u-boot.bin

加载运行裸机程序

xxx.elf

PS端裸机程序

xxx.bin

PL端程序,SoC例程依赖此文件

 

图 1

 

 设置u-boot环境变量

将开发板拨码开关拨到101001(1~6),此模式为SD卡启动模式。开发板上电启动,快速按任意键进入U-Boot命令行修改环境变量。

 

图 2

 

在U-Boot命令行下执行如下指令,设置需要加载的PL端xxx.bin程序,PL端程序名应根据实际情况修改,如果是Baremetal(NoOS)例程则无需执行此命令。

Uboot# setenv bitstream_image axi_gpio_xc7z020.bin

执行如下指令,设置需要加载的PS端xxx.elf程序,PS端程序名应根据实际情况修改。

Uboot# setenv app_image axi_gpio.elf

执行如下指令设置启动方式为appboot,并保存设置好的环境变量。

Uboot# setenv sdboot 'run appboot'

Uboot# saveenv

 

图 3

 

 

从SD卡启动裸机程序

开发板断电,重新上电启动后,调试终端打印信息如下图所示。打印"## Starting application at 0x00100000 ..."信息后,开发板开始运行裸机程序。本次操作运行的是tl-axi-gpio-led-demo的裸机程序,运行程序后会打印"AXI GPIO TEST",并且可以看到底板的LED2在闪烁。

 

图 4

 

恢复U-Boot环境变量

经过前面步骤修改过环境变量后,U-Boot启动时将会读取相应的裸机程序。如需正常启动Linux系统,在U-Boot命令行下执行如下指令恢复默认的环境变量。

Uboot# env default -a

Uboot# saveenv

 

图 5

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!