基于zynq7100开发嵌入式软件(一)

写在前面

本文档基于zynq7100开发PS端代码的经验,没有操作系统,使用到了网口、GPIO、RAM读写、定时器等功能。

本文档描述了平台文件、BSP、静态库、应用程序创建的过程以及注意事项。同时在描述这些文件的过程中,对各中原理也进行了解释。

zynq7100中有两个核,目前开发只用了核0。

SDK使用

Xilinx的SDK也是基于eclipse的一个调试开发工具,其布局,使用方式和基于eclipse的其他工具类似。

无操作系统的PS端开发通常由三个部分组成:

  1. 硬件定义:即hdf文件,该文件是硬件平台的描述文件,定义了器件的类型、工程创建时间、地址映射及IP core信息等。基于该文件,可生成PS端最小系统,并进行最小系统初始化。同时PL部分的烧写文件bit文件也通常放在硬件定义中。
  2. 板级支持包BSP:创建BSP的过程中会生成.mss文件,该文件用来表征操作系统、库、驱动、处理器的信息,利用该文件可以查看相关示例程序。BSP最终会生成静态库文件和include文件,供上层软件调用。
  3. 创建可执行应用文件:创建不含操作系统的应用文件的过程中,会要求绑定bsp文件,其本质就是添加默认的头文件搜索路径、库文件搜索路径以及自动链接相关静态库。

新建/打开工作区

 打开工作区后的视图如下所示:

  1. 使用hdf文件创建平台

在project explorer中新建一个project,类型选择Hardware Platform Specification:

点击next,指定工程名,并选择相应的hdf文件:

点击finish,最终创建出来的工程如下图所示:

创建bsp工程

创建好硬件定义工程后,即可创建BSP工程,新建工程中选择Board Support Package:、

点击next,其中BSP OS选择standalone,project name可以根据需要修改。

点击finish后,会要求选择标准支持库外的其他支持库,由于本次需要使用PS端自带的网口进行通信,因此选择了lwip库(该库包含了TCP/IP协议栈相关的功能):

同时,对lwip库进行进一步配置,打开了igmp功能:

点击OK后,SDK工具会进行自动构建(如果需要取消自动构建功能,则点击工具栏中的Project,把Build Automatically前面的√取消即可)。

构建完成后的工程如下图所示,头文件包含在include文件夹中,库文件包含在lib文件夹中,由于增选了lwip库,因此生成了两个库文件xil.a和lwip4.a。

创建静态库工程

由于BSP中的函数名称不利于理解,因此在BSP基础上根据使用需要及编码习惯重新编写了驱动,并且将其编译为静态库文件,供可执行应用程序调用。

创建静态库文件

点击next,选择OS为Standalone,库类型为静态库:

由于在创建库文件的过程中并不会有关联BSP的设置,但是驱动跟BSP紧密相关,因此手动关联BSP,在工程属性中做如下设置:

创建可执行应用工程

新建一个应用工程:

OS平台选择standalone,BSP选择之前创建的BSP,再点击next,选择空白工程:

由于需要使用之前创建的静态库,因此需要在工程属性中做如下设置,用于包含头文件及库文件搜索路径:

PS:OS Platform为standalone和freertos时,使用的编译工具链是Xilinx ARM v7 GNU Toolchain,如果为Linux,编译工具链为Xilinx ARM v7 GNU/Linux Toolchain。

SDK调试

调试步骤

可执行应用程序编译完成后,会生成.elf文件,选中工程文件,右键->Debug As ->Launch on Hardware(System Debugger):

弹出如下确认框,点击yes:

最终出来调试界面。

可以单步运行,也可以打断电,具体调试操作此处不详述。

常见问题或注意事项

需要勾选Reset entire system

调试时没有停在main函数入口处

在调试过程中遇到点击调试并没有停在main函数入口处,而是停在了某个汇编语言的位置,从网上搜索资料说要对Debug进行配置,勾选Stop at main,如下面两张图所示:

但是在实操过程中,往往遇到这样的情况时,该选框勾选后会报错从而中断调试,应该在调试过程中某些配置进行了更改从而导致出错,有效的办法是点击应用工程的属性,点击运行调试选项,删除后重新开始。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用: Xilinx Zynq-7000系列是一个基于ARM架构的SoC(System-on-Chip),它将FPGA和处理器相结合,即可运行软件,又可定制硬件。引用:在Zynq开发中,嵌入式软件工程师的任务主要是进行软件开发和调试。他们通常使用Xilinx提供的SDK(Software Development Kit)进行嵌入式软件开发。首先,软件工程师需要创建一个基于Zynq的硬件平台规范(Hardware Platform Specification)。然后,他们可以在SDK中使用C/C++或者其他编程语言来编写嵌入式软件。引用:在开发过程中,嵌入式软件工程师可以选择不同的操作系统平台,例如standalone、freertos或者Linux。对于standalone和freertos,他们需要使用Xilinx ARM v7 GNU Toolchain来编译软件。而对于Linux,他们需要使用Xilinx ARM v7 GNU/Linux Toolchain。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Xilinx Zynq-7000系列:基于ARM Cortex-A9内核处理器和FPGA结构](https://download.csdn.net/download/weixin_38569515/14812358)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [基于zynq7100开发嵌入式软件(一)](https://blog.csdn.net/strawberrypll/article/details/131091132)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值