本次案例用到的是创龙科技的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 FLASHSPI 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-软件资料\Linux\FSBL\image\embeddedsw-gdea7f98-v1.1\”目录下。fsbl.elf与BOOT.BIN为同一套FSBL源码编译生成的两种不同格式的可执行文件,fsbl.elf主要用于固化时对SPI FLASH等外设进行初始化。u-boot.bin位于产品资料“4-软件资料\Linux\U-Boot\image\u-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-软件资料\Linux\FSBL\image\embeddedsw-[Git系列号]-[版本号]\”目录下,u-boot.bin位于产品资料“4-软件资料\Linux\U-Boot\image\u-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 关键代码
想要获取本案例的详细内容或更多案例,欢迎私聊或评论区留言,感谢关注!,