前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Xilinx Zynq系列的PS端裸机与FreeRTOS案例开发(工程编译、程序加载与固化法)

基于Xilinx Zynq系列的PS端裸机与FreeRTOS案例开发(工程编译、程序加载与固化法)

原创
作者头像
创龙科技Tronlong
修改2021-10-12 14:18:55
1.9K0
修改2021-10-12 14:18:55
举报

前 言:本文主要介绍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-软件资料\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 关键代码

想要获取本案例的详细内容或更多案例,欢迎私聊或评论区留言,感谢关注!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前 言:本文主要介绍PS端(ARM CPU0)的裸机与FreeRTOS案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx SDK 2017.4。
  • 想要获取本案例的详细内容或更多案例,欢迎私聊或评论区留言,感谢关注!
  • 1.3基于下载器固化程序
  • 1.3.1设置XSDK环境变量
  • 1.3.2固化程序到SPI FLASH
  • 1.3.3从SPI FLASH启动程序
  • 1.4基于SD卡启动程序
  • 想要获取本案例的详细内容或更多案例,欢迎私聊或评论区留言,感谢关注!
相关产品与服务
物联网
腾讯连连是腾讯云物联网全新商业品牌,它涵盖一站式物联网平台 IoT Explorer,连连官方微信小程序和配套的小程序 SDK、插件和开源 App,并整合腾讯云内优势产品能力,如大数据、音视频、AI等。同时,它打通腾讯系 C 端内容资源,如QQ音乐、微信支付、微保、微众银行、医疗健康等生态应用入口。提供覆盖“云-管-边-端”的物联网基础设施,面向“消费物联”和 “产业物联”两大赛道提供全方位的物联网产品和解决方案,助力企业高效实现数字化转型。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档