TA的每日心情 | 奋斗 2020-3-25 15:17 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
开发环境说明
" f) P: j# {# F1 U Y表 1. I1 Q+ F: w% E
开发板型号
6 }5 w, E2 | q. u1 O$ |2 U | 是否支持本实验/ m& X0 M" \; `' H9 w
| TLZ7x-EasyEVM, b) ^* L" n" Y B, a( M& T" S( _
| 支持, l5 P$ H4 n+ j" H, w/ k
| TLZ7xH-EVM
8 S9 ^3 B0 C4 N3 l" T | 支持
1 B- p4 \1 w d* a/ \0 n |
- n: S% u4 r- M4 L% H. v本文以TLZ7x-EasyEVM开发板为例,核心板SoC芯片型号为XC7Z020,演示使用SD卡启动Zynq裸机程序的方法。1 [4 h: y C, \
基于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程序。
, q% d* Q5 H; G5 v 从SD卡启动SoC裸机程序说明分别参照《基于TcL脚本生成Vivado工程及编译》、《基于TcL脚本生成xsdk工程及编译》文档,编译All-Programmable-SoC-demos例程。
5 V" d g9 V5 ?将SD存储卡格式化为FAT32格式,或者直接使用SD系统启动卡的boot分区,SD系统启动卡boot分区即为FAT32格式。将PS端的xxx.elf程序和PL端xxx.bin程序复制到SD卡,另外将BOOT.BIN和u-boot.bin两个文件也添加复制到SD卡。& C+ [4 r- |& Q* r) \4 h
以光盘"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"。
4 U8 M1 a. ^. ^7 X7 E/ B& ^9 F
3 i3 P5 c( s- z# ~: W表 2
9 M8 S& p9 p: U4 |+ {! c6 v对应文件名 I/ w" b4 |' t1 j4 ]' u( l
| 职责说明* X) z9 N; D( z9 R( ?' H" W2 G
| FSBL\image\embeddedsw-[Git系列号]-[版本号\BOOT.BIN
& @) A# U1 y' M+ M. x9 C | 初始化DDR等外设,加载U-Boot镜像文件
0 x7 D9 L" ^) l9 d) \6 H, V | U-Boot\U-Boot-2017.01\image\u-boot.bin- _' Q" e4 B8 D1 f
| 加载运行裸机程序
+ v2 c% N: t, j. t9 ^ | xxx.elf4 k( w" K7 m3 m0 Y$ l }
| PS端裸机程序
i0 u" m2 u( {: o | xxx.bin. b4 D8 G6 r$ B6 O4 t: ^0 o4 I
| PL端程序,SoC例程依赖此文件5 w, \5 |, C- M/ a& ~
|
![]()
2 i# A, }$ j3 ~4 W3 r& g2 ]图 1* h0 I9 `0 P( L$ \: n- Y+ Z9 c
3 X) V4 S+ s. q& P2 D0 }/ X设置u-boot环境变量将开发板拨码开关拨到101001(1~6),此模式为SD卡启动模式。开发板上电启动,快速按任意键进入U-Boot命令行修改环境变量。 V0 G7 h3 r! J3 W& L& B
![]()
8 {5 ^3 s+ ^0 _) k图 2
" T! Z2 n- z% [) F8 T6 |. E* D" m. \ v- l; @
在U-Boot命令行下执行如下指令,设置需要加载的PL端xxx.bin程序,PL端程序名应根据实际情况修改,如果是Baremetal(NoOS)例程则无需执行此命令。
5 l3 f6 [! B: o7 l* aUboot# setenv bitstream_image axi_gpio_xc7z020.bin6 Z! F$ f4 _9 s
执行如下指令,设置需要加载的PS端xxx.elf程序,PS端程序名应根据实际情况修改。
7 C% B5 p' H7 U: v2 A) o( R. sUboot# setenv app_image axi_gpio.elf
% o, x4 {1 a4 y! k& ~% u9 ?, F/ g执行如下指令设置启动方式为appboot,并保存设置好的环境变量。
b! I( I [8 j( h3 {6 rUboot# setenv sdboot 'run appboot'
9 ]# a9 Y) u4 `Uboot# saveenv6 B: t8 z% q; g/ p
![]()
D$ u/ F q$ U, A9 j图 3
! \5 a T, z/ L+ _7 S. @+ D
" u* ^4 K# X2 K7 R( d; d7 K
8 Q4 t* L. Z3 h7 e7 Y1 e5 B; T5 o从SD卡启动裸机程序开发板断电,重新上电启动后,调试终端打印信息如下图所示。打印"## Starting application at 0x00100000 ..."信息后,开发板开始运行裸机程序。本次操作运行的是tl-axi-gpio-led-demo的裸机程序,运行程序后会打印"AXI GPIO TEST",并且可以看到底板的LED2在闪烁。
# Q0 y5 d6 `# { W" e/ B. }) K![]()
; O, Q$ r1 Y: y2 P8 u图 4! ]" ]0 x. B' ]+ _% Z+ O6 e& R
) p7 T7 J: i+ T( U恢复U-Boot环境变量经过前面步骤修改过环境变量后,U-Boot启动时将会读取相应的裸机程序。如需正常启动Linux系统,在U-Boot命令行下执行如下指令恢复默认的环境变量。
9 B5 h/ J+ y! w o- v; q. ]Uboot# env default -a9 a9 {1 M! ]6 Q3 c; o |
Uboot# saveenv
- `. R. G9 s1 x* V9 b. e0 j% \![]() 7 m. `2 z5 \/ W8 ]! t
图 5
7 l5 W& u7 [. I" N0 o1 v% e: O3 X' S9 u) ^* z* G
|
|