TA的每日心情 | 奋斗 2020-3-25 15:17 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
开发环境说明2 v# G8 p3 e% i# C0 |
表 1
9 ~. Q% \3 ?" m' A4 G开发板型号/ ^0 q4 U6 X( C5 e- r/ f |6 h
| 是否支持本实验
) b1 i( Y5 h% w, w | TLZ7x-EasyEVM) k' N/ ^0 Z9 \$ n9 Z, v
| 支持
6 A! O% _# i4 |, Q# |. S | TLZ7xH-EVM9 z! {+ ^0 a3 S2 `" v9 w- B- o
| 支持7 b, ^: D2 T0 `8 C9 M) d: n
|
/ B* F# ^% E$ Y4 \, j本文以TLZ7x-EasyEVM开发板为例,核心板SoC芯片型号为XC7Z020,演示使用SD卡启动Zynq裸机程序的方法。' O6 v: u& [ c2 c, E
基于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程序。
P/ O7 K Y% @ 从SD卡启动SoC裸机程序说明分别参照《基于TcL脚本生成Vivado工程及编译》、《基于TcL脚本生成xsdk工程及编译》文档,编译All-Programmable-SoC-demos例程。
8 B# ^' Q8 [0 F" E J将SD存储卡格式化为FAT32格式,或者直接使用SD系统启动卡的boot分区,SD系统启动卡boot分区即为FAT32格式。将PS端的xxx.elf程序和PL端xxx.bin程序复制到SD卡,另外将BOOT.BIN和u-boot.bin两个文件也添加复制到SD卡。
" l0 E0 V3 P4 W: k以光盘"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"。! H: e1 ?" j. U T, a
! G, Q' Y3 l* o s/ `# a表 2
' e( t; l" v* q4 t9 e对应文件名7 t6 o) Z6 O' T- o/ m8 ^% _
| 职责说明3 C) ?$ d( l8 N" W& p8 m9 y
| FSBL\image\embeddedsw-[Git系列号]-[版本号\BOOT.BIN
- t8 I; S8 T: [ p h( k. B | 初始化DDR等外设,加载U-Boot镜像文件/ S) Z" ]& r% q4 ]2 f1 s
| U-Boot\U-Boot-2017.01\image\u-boot.bin6 B. g0 B' q9 X
| 加载运行裸机程序( q; ?* o2 C n' A! r( s
| xxx.elf9 c6 T' \% M8 d6 x5 y& B
| PS端裸机程序
7 ]9 L* C1 M1 U# @) I9 w | xxx.bin
! b. S O1 A9 l- n | PL端程序,SoC例程依赖此文件6 T% I4 t' O3 U. Q [1 f
|
![]()
/ b, {4 M4 T3 r* J) ?图 1
1 W, ~7 b$ L1 `
% `, l. }* n6 Y8 Z3 X8 z0 n$ R设置u-boot环境变量将开发板拨码开关拨到101001(1~6),此模式为SD卡启动模式。开发板上电启动,快速按任意键进入U-Boot命令行修改环境变量。6 K, k9 g1 k1 o
![]()
' M2 @, j. A% a3 e4 ^图 2
/ J5 P) W5 D& g; g1 X0 a" s- ?$ n* W8 N% f
在U-Boot命令行下执行如下指令,设置需要加载的PL端xxx.bin程序,PL端程序名应根据实际情况修改,如果是Baremetal(NoOS)例程则无需执行此命令。
+ E/ g4 Y; D* \' D% d D) MUboot# setenv bitstream_image axi_gpio_xc7z020.bin
! a0 B6 g4 K* C [# ^: K2 W! Z执行如下指令,设置需要加载的PS端xxx.elf程序,PS端程序名应根据实际情况修改。5 ?( v, r* ~ F; t4 F" B
Uboot# setenv app_image axi_gpio.elf* v* |# ]- c3 P! I& G' Q9 f
执行如下指令设置启动方式为appboot,并保存设置好的环境变量。0 x) }9 W3 [" X& |
Uboot# setenv sdboot 'run appboot'
- u0 @3 ]' L) \& a2 b% ]+ yUboot# saveenv
" F' w; A" Q7 {( h* ~- h% q% h4 { [![]()
4 }: q4 k# V* t0 X图 3
, E' S6 h# T+ o/ W+ ?$ R6 Y2 |
, o4 E1 Q+ Z: O: n) J, }! t" A. s* f& t8 @ B' H1 `: ^: _! w6 l
从SD卡启动裸机程序开发板断电,重新上电启动后,调试终端打印信息如下图所示。打印"## Starting application at 0x00100000 ..."信息后,开发板开始运行裸机程序。本次操作运行的是tl-axi-gpio-led-demo的裸机程序,运行程序后会打印"AXI GPIO TEST",并且可以看到底板的LED2在闪烁。
" Q) ]/ {1 L4 i( O; }![]()
4 Y! V% F7 s& k- X* M; y) `图 4: ^6 e) |. q( \* J
}- x1 q, {0 x# H8 t5 j7 X2 X, G
恢复U-Boot环境变量经过前面步骤修改过环境变量后,U-Boot启动时将会读取相应的裸机程序。如需正常启动Linux系统,在U-Boot命令行下执行如下指令恢复默认的环境变量。) X6 I* W* n1 Y" V
Uboot# env default -a Q4 D! A Z8 l7 v. k$ C; O
Uboot# saveenv: T: W7 W# B# _& c# ~/ V# [. a* t/ R
![]() % J: Z# [" l# v4 K' P- e
图 50 K' Y" M2 j9 N) D2 D3 }0 U& O
9 S) ~8 j/ F. {& |( C2 s; c
|
|