前 言:本文主要介绍PS端(ARM CPU0)的裸机与FreeRTOS案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx SDK 2017.4。
本次案例用到的是创龙科技的TLZ7x-EasyEVM-S开发板,它是一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC评估板,处理器集成PS端双核ARM Cortex-A9 PL端Artix-7架构28nm可编程逻辑资源,评估板由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
TLZ7x-EasyEVM-S评估板
评估板接口资源丰富,引出千兆网口、双路CAMERA、USB、Micro SD、CAN、UART等接口,支持LCD显示拓展及Qt图形界面开发,方便快速进行产品方案评估与技术预研。
想要获取本案例的详细内容或更多案例,欢迎私聊或评论区留言,感谢关注!
下面继续讲解第一章节的第三小节↓
1.3基于下载器固化程序
1.3.1设置XSDK环境变量
请在Windows中添加XSDK环境变量XIL_CSE_ZYNQ_UBOOT_QSPI_FREQ_HZ,并设置其值为50000000,此环境变量会将QSPI时钟设置为50MHz。
图 25
如不设置环境变量,可能会发生如下错误,或显示固化成功但无法正常启动。
图 26
1.3.2固化程序到SPI FLASH
SPI FLASH中一般固化FSBL(BOOT.BIN)、U-Boot(u-boot.bin)、PL端程序(Bitstream-xxx.bin)、PS端裸机/FreeRTOS程序(xxx.elf)四个程序镜像。程序启动顺序为:FSBL -> U-Boot -> PL端程序 -> PS端裸机/FreeRTOS程序。ZYNQ的FSBL(First Stage Bootloader)为一级Bootloader程序,U-Boot为二级Bootloader程序。
此四个程序在SPI FLASH中的分区说明见下表。
表 1
固化内容 | 文件名 | 固化地址 | 地址范围 | 容量大小 |
---|---|---|---|---|
FSBL | BOOT.BIN | 0x0 | 0x0-0x40000 | 256KByte |
U-Boot | u-boot.bin | 0x40000 | 0x40000-0xc0000 | 512KByte |
PS端裸机/FreeRTOS程序 | xxx.elf | 0x100000 | 0x100000-0x200000 | 1MByte |
PL端程序 | xxx.bin | 0x200000 | 0x200000-0x1000000 | 14MByte |
备注:地址范围0xc0000-0x100000(256KByte)用于保存U-Boot环境变量。
固化过程中,需使用FSBL的.elf格式可执行文件fsbl.elf辅助固化,fsbl.elf、BOOT.BIN位于产品资料“4-软件资料LinuxFSBLimageembeddedsw-gdea7f98-v1.1”目录下。fsbl.elf与BOOT.BIN为同一套FSBL源码编译生成的两种不同格式的可执行文件,fsbl.elf主要用于固化时对SPI FLASH等外设进行初始化。u-boot.bin位于产品资料“4-软件资料LinuxU-Bootimageu-boot-2017.01-g979d5b2-v2.0”目录下。请将fsbl.elf、BOOT.BIN、u-boot.bin三个文件拷贝至Windows非中文路径下。
请将评估板拨码开关设置为010101(1~6),此档位为JTAG模式,再将评估板上电。打开PS端工程,点击工具栏的“Program Flash”按钮。
图 27
首先在弹出的界面中确认Device能否被正常检测,可点击“Select...”查看,然后选择待固化文件BOOT.BIN,设置BOOT.BIN固化地址为0x0,选择Flash Type为qspi_single,最后选择fsbl.elf文件并点击Program。
图 28
等待固化完成,提示“Flash Operation Successful”则表示固化成功。
图 29
若Console控制台打印如下信息,在Program Flash界面取消勾选Device选项的“Auto Detect”,手动选择设备,然后重新固化即可。
图 30
图 31
按上述步骤,再依次把u-boot.bin、PS端裸机/FreeRTOS程序以及PL端程序固化至对应地址上。u-boot.bin固化地址为0x40000,PS端裸机/FreeRTOS程序固化地址为0x100000,PL端程序固化地址为0x200000。
当固化非.bin格式文件时,需手动输入文件路径,再重新选择fsbl.elf文件(相当于刷新),方可点击Program。
图 32
图 33
如无需加载PL端程序,则可跳过下图步骤。
图 34
1.3.3从SPI FLASH启动程序
请将评估板拨码开关设置为100101(1~6),此档位为SPI FLASH启动模式。请将SD卡取下,评估板上电启动,并快速按下键盘空格键进入U-Boot命令行。执行如下命令,设置启动方式为appboot,并保存设置好的环境变量。
appboot环境变量用于引导PS端裸机或FreeRTOS程序。当评估板启动时,首先从SD卡中加载PL端程序和PS端裸机/FreeRTOS程序,然后运行。如果运行不成功(无法从SD卡中找到对应程序),再从SPI FLASH中加载PL端程序和PS端裸机/FreeRTOS程序,然后运行。
U-Boot# setenv bootcmd 'run appboot'
U-boot# saveenv
图 35
评估板重启后,即可看到评估底板的LED2进行闪烁,说明程序从SPI FLASH加载并运行成功。
图 36
1.4基于SD卡启动程序
BOOT.BIN位于产品资料“4-软件资料LinuxFSBLimageembeddedsw-[Git系列号]-[版本号]”目录下,u-boot.bin位于产品资料“4-软件资料LinuxU-Bootimageu-boot-2017.01-[Git系列号]-[版本号]”目录下。
请将BOOT.BIN、u-boot.bin、PS端裸机/FreeRTOS程序(xxx.elf),以及PL端程序(Bitstream-xxx.bin)(xc7z010对应xx_xc7z010.bin,xc7z020对应xx_xc7z020.bin),拷贝至系统启动卡BOOT分区或另外一张FAT32格式的SD卡。
图 37
将评估板拨码开关设置为101001(1~6),此档位为SD卡启动模式。评估板上电启动,并快速按下键盘空格键进入U-Boot命令行。
图 38
执行如下命令,指定待加载的PL端程序。PL端程序名请根据实际情况修改,如无PL端程序则无需执行此命令。
U-boot# setenv bitstream_image axi_gpio_led_demo_xc7z010.bin
执行如下命令,指定待加载的PS端程序。PS端程序名请根据实际情况修改。
U-boot# setenv app_image axi_gpio_led_demo_a9.elf
执行如下命令,设置启动方式为appboot,并保存设置好的环境变量。
appboot环境变量用于引导裸机或FreeRTOS程序。评估板启动时,首先从SD卡中加载PL端程序、裸机/FreeRTOS程序,然后运行。如果运行不成功(无法从系统启动卡找到对应程序),再从SPI FLASH中加载PL端程序、裸机/FreeRTOS程序,然后运行。
U-boot# setenv bootcmd 'run appboot'
U-boot# saveenv
图 39
评估板重启后,即可看到评估底板的LED2进行闪烁,说明程序从SD卡加载并运行成功。
图 40
如需运行Linux系统,请执行如下命令恢复为默认环境变量。
U-boot# env default -a
U-boot# saveenv
图 41
由于案例幅度篇章过长,本文仅分享了工程编译、程序加载与固化方法中下载器固化程序与SD卡启动程序的讲解,感谢关注,后续还有以下相关章节↓↓↓可以关注或点击账户查看!
2 裸机案例
2.1 led-flash案例
2.1.1 案例功能
2.1.2 操作说明
2.1.3 关键代码
2.2 key-led-demo案例
2.2.1 案例功能
2.2.2 操作说明
2.2.3 关键代码
2.3 uart-echo案例
2.3.1 案例功能
2.3.2 操作说明
2.3.3 关键代码
2.4 qspi-flash案例
2.4.1 案例功能
2.4.2 操作说明
2.4.3 关键代码