TA的每日心情 | 奋斗 2020-3-25 15:17 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
开发环境说明
4 N5 h; C' I, ^3 X. \表 1
9 F& r! ]2 Q* @; K! \开发板型号
0 P' Q. R3 `2 p# `- h# b/ ]6 O | 是否支持本实验
- @5 O, ~4 ~7 [# U, m! }9 e7 m | TLZ7x-EasyEVM- L0 F$ p% {. O4 H" u I8 s! C! @1 a
| 支持
4 y, J, R4 \' W | TLZ7xH-EVM
2 R3 @, _8 Y* \$ ^/ a | 支持
6 d6 M" j! t; U f |
( J K" `1 }+ n# X0 o本文以TLZ7x-EasyEVM开发板为例,核心板SoC芯片型号为XC7Z020,演示使用SD卡启动Zynq裸机程序的方法。5 P$ R1 g4 h; W& v0 g9 e% S6 V; a3 D
基于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程序。
4 }* p9 Y/ [6 P) O3 H 从SD卡启动SoC裸机程序说明分别参照《基于TcL脚本生成Vivado工程及编译》、《基于TcL脚本生成xsdk工程及编译》文档,编译All-Programmable-SoC-demos例程。& [! ?* `, a$ ]9 h7 P$ p q
将SD存储卡格式化为FAT32格式,或者直接使用SD系统启动卡的boot分区,SD系统启动卡boot分区即为FAT32格式。将PS端的xxx.elf程序和PL端xxx.bin程序复制到SD卡,另外将BOOT.BIN和u-boot.bin两个文件也添加复制到SD卡。
: d. r0 a) p% T8 |以光盘"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"。- {3 z4 y: M% ?: ]& [( I8 ^) [
1 a' E& m0 k/ G {8 K
表 2, _8 n: N6 j) X3 r/ _- D
对应文件名
$ V- x8 P$ B* U5 C m; F! W2 p+ i | 职责说明
4 M2 u* T5 V4 q, w | FSBL\image\embeddedsw-[Git系列号]-[版本号\BOOT.BIN
& Y# t+ a4 r0 |% k" C | 初始化DDR等外设,加载U-Boot镜像文件
$ v0 {$ b: E# b- F8 u6 \, O9 ~% N | U-Boot\U-Boot-2017.01\image\u-boot.bin
$ J2 j& c2 d x8 O. a5 W9 d q& X | 加载运行裸机程序$ H% l! @# U$ G9 C2 P X* p
| xxx.elf. J6 z# h) o9 _' ?; }* V
| PS端裸机程序
, M& O6 G, _2 L( Q5 t/ P2 B | xxx.bin
$ m) J/ x6 Z. W7 I3 ~& Z0 J | PL端程序,SoC例程依赖此文件8 b+ j; f! D' M3 j* N
|
![]()
/ A! ]. E+ L' T- O2 c. _( Y图 1
: j9 e1 k& s }4 ^5 t% W. J; @: s( ~& |. n& r9 e( N% p+ D8 ]
设置u-boot环境变量将开发板拨码开关拨到101001(1~6),此模式为SD卡启动模式。开发板上电启动,快速按任意键进入U-Boot命令行修改环境变量。
) @( k; w4 {3 J![]()
2 ]2 _+ b2 a. E2 i' f, R/ F# H图 2
$ N A, V+ i5 g" n2 c& z+ v8 T; ^+ p" i0 ], h& K1 W
在U-Boot命令行下执行如下指令,设置需要加载的PL端xxx.bin程序,PL端程序名应根据实际情况修改,如果是Baremetal(NoOS)例程则无需执行此命令。2 L- t9 ?( |- z5 @- d
Uboot# setenv bitstream_image axi_gpio_xc7z020.bin2 `* V4 b2 r1 I `! T: E3 Y: p
执行如下指令,设置需要加载的PS端xxx.elf程序,PS端程序名应根据实际情况修改。
* k, J6 M/ g1 H" u& {9 vUboot# setenv app_image axi_gpio.elf
# J9 S0 [) w% u; Q# n$ ?执行如下指令设置启动方式为appboot,并保存设置好的环境变量。- i9 v0 a) [! ?6 R7 h
Uboot# setenv sdboot 'run appboot'- A% U- o6 F' x) n& o/ P y/ x
Uboot# saveenv
, l4 j$ ~) V2 e3 D![]()
- |1 z& S& h% ^" [1 ?图 3, E! M0 ?7 z1 Y
& I$ l1 q! _" P B
/ V- ~2 l) }7 I1 d
从SD卡启动裸机程序开发板断电,重新上电启动后,调试终端打印信息如下图所示。打印"## Starting application at 0x00100000 ..."信息后,开发板开始运行裸机程序。本次操作运行的是tl-axi-gpio-led-demo的裸机程序,运行程序后会打印"AXI GPIO TEST",并且可以看到底板的LED2在闪烁。" \: I/ R* S3 K" d) V3 Q5 k) `0 t
![]()
; l# _& |1 H3 b图 4
* u& Y7 B1 Q0 s/ c
2 x4 X3 Z# V; ^" u9 I恢复U-Boot环境变量经过前面步骤修改过环境变量后,U-Boot启动时将会读取相应的裸机程序。如需正常启动Linux系统,在U-Boot命令行下执行如下指令恢复默认的环境变量。) _8 H/ e' Q5 @- ]0 g K
Uboot# env default -a
6 Y# w' r, Q) d# Z5 | ^! _) IUboot# saveenv& k/ Z6 B: f( f
![]()
- u. f+ b" J4 E+ \. V8 C图 5* I% N3 E5 k- ^% W( P, z5 y
% D% S( d. C A' T+ U' F
|
|