ZYNQ移植ThreadX demo

本次演示是基于vivado 2018.3版本完成的。硬件是7020 512M DDR 7010与7020的arm a9核是相同的,可以直接参考自己的硬件进行创建自己的工程。

本次的原始工程文件连接在论坛中已经可以找到。下载并解压,使用其中的xilinx下的文件。
当前创建的threadx工程文件除了tx_initialize_low_level.S文件其余都是基于最新的6.1.9版本

1、 创建Vivado工程
在这里插入图片描述

图 1

我们创建一个名为Ailurus的工程:
在这里插入图片描述

图 2

一路Next
在这里插入图片描述

图3

在这里插入图片描述
图 4

在这里插入图片描述
图 5

处理器选择:
在这里插入图片描述

图 6

在这里插入图片描述

图 7

到这里电机Finish即可.

2.配置ZYNQ处理器及其相关外设

在这里插入图片描述

图 8

创建新bd文件,使用默认名design_1。
在这里插入图片描述
图 9

点击+号,输入zynq, 提示zynq处理器双击:
在这里插入图片描述
图 10

我的硬件配置如此,自己可以根据自己的硬件进行配置即可

在这里插入图片描述

图 11

DDR 配置:
在这里插入图片描述

图 12

点击OK,确认,并如图所示连接:
在这里插入图片描述

图 13

我们电机下方红线处,验证我们的最小系统设计,如果没有问题进入下一步。
在这里插入图片描述

图 14

在这里插入图片描述

图 15

生成HDL 文件,再次点击Generate Output Products:
在这里插入图片描述
图 16

点击Generate Bitstream:
在这里插入图片描述
图 17

完成后,到处bit文件到xSDK中
在这里插入图片描述
图 18

方便后期的Petalinux等设计使用。
一定要勾选Include bitstream
在这里插入图片描述
图 19

启动SDK:
在这里插入图片描述
图 20

2、 创建ThreadX 链接库:
File->New->Other->Xilinx->Library Project
点击Next:
在这里插入图片描述

图 21


修改如红线处:
在这里插入图片描述
图 22

我们把从github上下载好的文件的threadx->common中的inc与src文件夹和 Port->cortex_a9->gnu中的inc与src文件夹内容全部拷贝到,当前工程的src文件夹中,

同时解压文件夹下的src目录下tx_initialize_low_level.S拷贝到当前工程的src文件夹下。
同时将下原文件夹中的common_file文件夹拷贝到工程文件夹下面:

工程文件夹下面文件:
在这里插入图片描述

图 23

这个时候我们点击编译,我们可以看到已经成功生成了libtx.a库文件:
在这里插入图片描述

图 24

3、 创建ThreadX例程:

File->New->Application Project,创建一个名为demo_threadx的工程,注意红线部分的选项:
第一次创建应用,我们选择基于当前的platform创建一个新的bsp。

在这里插入图片描述

图 25

选择Hello World:
在这里插入图片描述

图 26

我们首先编译当前的Hello World 确认无误后继续下一步:
在这里插入图片描述

图 27
4、 修改编译选项
添加common_file文件夹:

我们右键项目->New->Other->General->Floder->Next->Advance->Link To alternate location (Linkerd Floder)->Finish
在这里插入图片描述

图 28

在这里插入图片描述

图 29

这时候我们将HelloWorld.c文件修改为我们下载的demo中的demo_threadx.c文件并且编译:
出现error: tx_api.h: No such file or directory错误, 因为该文件在tx库工程中,我们在demo_threadx工程中添加对应的include文件夹以及对应的库的文件夹:

右键demo_threadx工程,
属性->C/C++ Build->Settings->ARM v7 Gcc compiler->Inferred Options->SoftWare Platform增减/tx/src文件夹:

C/C++ Build->Settings->ARM v7 Linker -> Libraries增减之前生成的tx库;

在C/C++ Build->Settings->ARM v7 Linker -> Inferred Options->SoftWare Platform中增加对应库的文件夹。

在这里插入图片描述

图 30

在这里插入图片描述

图 31

此时我们重新进行编译:
在这里插入图片描述

图 32

编译完成,进行一下测试:
右键工程,Debug As -> Debug Configurations->Xilinx C/C++ application (System Debuger)

在这里插入图片描述

图 33

在这里插入图片描述
图 34

至此,demo_threadx工程创建完毕:
在这里插入图片描述

														<center>**图 35**</center>

其余的关于FileX、USBX、NetX的工程创建可以按照这个创建,他们都依赖于libtx.a库,
比如USBX,NetX等同时还依赖于FileX的库,NetX需要按照自己的phy芯片修改对应驱动,其余的就可以按照此例子在对应位置添加对应文件以及目录即可。

这是早些时候的测试版本:
在这里插入图片描述

														<center>**图 36**</center>

网络测试:
在这里插入图片描述

图 37

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Zynq是一款由Xilinx开发的嵌入式处理器,它结合了ARM处理器和FPGA可编程逻辑,具有高度的灵活性和可扩展性。而rt-thread是一个轻量级的开源实时操作系统,专为嵌入式系统而设计。 移植rt-threadZynq平台并不复杂。首先,我们需要了解Zynq的体系结构和硬件资源,以确保更好地适配rt-thread。然后,我们需要获取rt-thread的源代码,并根据Zynq的平台特性进行相应的配置。 在移植过程中,需要进行以下几个关键步骤: 1. 配置工程:根据Zynq平台的处理器型号和外设资源,进行相关配置,比如中断控制器、计时器等。 2. 启动代码:根据Zynq的启动过程和处理器架构,编写启动代码。这通常涉及设置堆栈、初始化全局变量和硬件模块等。 3. 中断处理:实时操作系统需要处理中断请求,并进行任务调度。在Zynq平台上,我们需要编写相应的中断处理程序,并与rt-thread的任务调度机制进行集成。 4. 设备驱动:Zynq平台具有一系列外设资源,包括串口、以太网、SPI、I2C等。我们需要编写相应的设备驱动程序,以便rt-thread能够正确访问这些外设。 5. 内存管理:嵌入式操作系统需要进行内存管理,包括动态内存分配和垃圾回收。在Zynq平台上,我们需要配置内存控制器,并对内存管理策略进行相应的调整。 6. 系统调用:rt-thread提供了一系列系统调用接口,用于任务创建、线程同步、内存管理等。在移植过程中,我们需要根据Zynq平台的特性,进行相应的系统调用接口适配。 通过以上步骤,我们可以将rt-thread成功地移植Zynq平台上,并利用其轻量级实时操作系统特性,实现嵌入式系统的快速开发和高效运行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值