[原创] 基于SD卡启动裸机程序
576 查看
1 回复
 楼主 | 发布于 2020-06-24 | 只看楼主
分享到:

开发环境说明


表 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例程依赖此文件

设置u-boot环境变量

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

在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

从SD卡启动裸机程序

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

恢复U-Boot环境变量

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

Uboot# env default -a

Uboot# saveenv


(0 ) (0 )
回复 举报

回复于 2020-06-25 沙发

感谢分享
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部