硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6091|回复: 28
收起左侧

[ThreadX全家桶] ZYNQ ThreadX 部分移植与演示

  [复制链接]

8

主题

104

回帖

138

积分

初级会员

积分
138
发表于 2021-11-17 11:34:16 | 显示全部楼层 |阅读模式

本次演示是基于vivado 2018.3版本完成的。硬件是7020 512M DDR 7010与7020的arm a9核是相同的,可以直接参考自己的硬件进行创建自己的工程。
本次的原始工程文件连接在论坛中已经可以找到。下载并解压,使用其中的xilinx下的文件。当前创建的threadx工程文件除了tx_initialize_low_level.S文件其余都是基于最新的6.1.9.

当前的文件工程见附件

1、 创建Vivado工程



我们创建一个名为Ailurus的工程:



一路Next





处理器选择:





到这里点击Finish即可.

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



创建新bd文件,使用默认名design_1。


点击+号,输入zynq, 提示zynq处理器双击:



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



DDR 配置




点击OK,确认,并如图所示连接:


我们电机下方红线处,验证我们的最小系统设计,如果没有问题进入下一步。file:///C:/Users/10322/AppData/Local/Temp/msohtmlclip1/01/clip_image028.png




生成HDL 文件,再次点击GenerateOutput Products:file:///C:/Users/10322/AppData/Local/Temp/msohtmlclip1/01/clip_image032.png



点击Generate Bitstream:file:///C:/Users/10322/AppData/Local/Temp/msohtmlclip1/01/clip_image034.png



完成后,到处bit文件到xSDK中



方便后期的Petalinux等设计使用。一定要勾选Includebitstreamfile:///C:/Users/10322/AppData/Local/Temp/msohtmlclip1/01/clip_image037.png



启动SDK:file:///C:/Users/10322/AppData/Local/Temp/msohtmlclip1/01/clip_image039.png




3、创建ThreadX 链接库:File->New->Other->Xilinx->LibraryProject点击Next:



修改如红线处:




我们把从github上下载好的文件的threadx->common中的inc与src文件夹和Port->cortex_a9->gnu中的inc与src文件夹内容全部拷贝到,当前工程的src文件夹中,
同时解压文件夹下的src目录下tx_initialize_low_level.S拷贝到当前工程的src文件夹下。同时将下原文件夹中的common_file文件夹拷贝到工程文件夹下面:
工程文件夹下面文件:


这个时候我们点击编译,我们可以看到已经成功生成了libtx.a库文件:




4、 创建ThreadX例程:

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



选择Hello World:file:///C:/Users/10322/AppData/Local/Temp/msohtmlclip1/01/clip_image047.png



我们首先编译当前的Hello World 确认无误后继续下一步:




5、修改编译选项添加common_file文件夹:

我们右键项目->New->Other->General->Floder->Next->Advance->LinkTo alternate location (Linkerd Floder)->Finishfile:///C:/Users/10322/AppData/Local/Temp/msohtmlclip1/01/clip_image051.png






这时候我们将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 v7Gcc 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中增加对应库的文件夹。





此时我们重新进行编译:




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





至此,demo_threadx工程创建完毕:



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

这是早些时候的测试版本:



网络测试:



Ailurus.7z

4.15 MB, 下载次数: 175

Ailurus.7z

评分

参与人数 4金币 +160 收起 理由
wzcsos + 20 很给力!
migsoft + 20 很给力!
morning_enr6U + 20 神马都是浮云
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
发表于 2021-11-17 11:45:38 | 显示全部楼层
帖子编辑中,一会好。
回复

使用道具 举报

0

主题

18

回帖

18

积分

新手上路

积分
18
发表于 2021-11-17 12:14:44 | 显示全部楼层
楼主威武,最近也准备学下ZYNQ!!!!
回复

使用道具 举报

11

主题

135

回帖

168

积分

初级会员

积分
168
发表于 2021-11-17 13:16:05 | 显示全部楼层
回复

使用道具 举报

5

主题

519

回帖

534

积分

金牌会员

积分
534
发表于 2021-11-17 15:46:07 | 显示全部楼层
回复

使用道具 举报

44

主题

562

回帖

699

积分

金牌会员

积分
699
发表于 2021-11-17 20:35:52 | 显示全部楼层
厉害大牛们
回复

使用道具 举报

4

主题

285

回帖

297

积分

高级会员

积分
297
发表于 2022-1-2 13:58:42 | 显示全部楼层
开始对这种神奇的CPU感兴趣了。以前都是CPU+CPLD组合使用。cpu与CPLD之间使用自定义协议。
回复

使用道具 举报

2

主题

75

回帖

81

积分

初级会员

积分
81
发表于 2022-1-4 20:42:19 | 显示全部楼层
厉害,我自己也在想做这个,FPGA才接触了几天什么都不懂,打心眼感谢楼主分享知识
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2022-7-21 19:19:00 | 显示全部楼层
楼主真的太牛了,最近一直在弄ZC706移植ThreadX,这篇教程帮了大忙
回复

使用道具 举报

3

主题

1222

回帖

1231

积分

至尊会员

积分
1231
发表于 2022-7-22 10:53:19 | 显示全部楼层
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2022-8-10 18:56:03 | 显示全部楼层
请教下楼主,有用过新版的tx_initialize_low_level.S吗?用6.1.9的A9 GNU tx_initialize_low_level.S的话貌似一直有异常啊,在build FIQ mode CPSR之后LR就一直异常,最后返回也是错的地址,微软和Xilinx官方也都没有更新支持最新的porting demo。。。
回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2022-8-12 13:54:39 | 显示全部楼层
Gony 发表于 2022-8-10 18:56
请教下楼主,有用过新版的tx_initialize_low_level.S吗?用6.1.9的A9 GNU tx_initialize_low_level.S的话貌 ...

这个确实没有用过,我记得新版本的和我用的Demo里面的版本差异很大,所以就没有尝试使用最新的。 可以对比一下差异化,定向分析。 不过如果不追求最新版,用Demo里面的也未尝不可。 该有的新功能都支持。
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2022-8-15 10:19:20 | 显示全部楼层
李益达 发表于 2022-8-12 13:54
这个确实没有用过,我记得新版本的和我用的Demo里面的版本差异很大,所以就没有尝试使用最新的。 可以对 ...

嗯嗯是的,用楼主的demo确实可以正常运行,应该是新porting设置系统栈哪里有问题,zynq的ld和官方example的ld差异有点大,想用新版是有点小强迫症
回复

使用道具 举报

7

主题

190

回帖

216

积分

高级会员

积分
216
发表于 2022-8-15 17:00:11 | 显示全部楼层
感谢分享  最近也刚搞了个zynq  改天我去试试看
回复

使用道具 举报

27

主题

272

回帖

353

积分

高级会员

积分
353
发表于 2022-10-17 14:47:07 | 显示全部楼层
image.png

移植 GitHub 最新代码, 直接报错 ;  IDE 是 Xilinx Vitis IDE v2022.1.0 (64-bit);
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2023-6-18 22:04:41 | 显示全部楼层
arm-none-eabi-gcc -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -specs=Xilinx.spec -Wl,-T -Wl,../src/lscript.ld -L../../zc702_bsp/ps7_cortexa9_0/lib -L../../tx/debug -o "demo_threadx.elf"  ./src/demo_threadx.o  ./common_file/asm_vectors.o ./common_file/board_setup.o   -ltx -Wl,--start-group,-lxil,-lgcc,-lc,--end-group
d:/xilinx2018p3/sdk/2018.3/gnu/aarch32/nt/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld.exe: cannot find -ltx
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:42: demo_threadx.elf] Error 1




请问程序是在Ubuntu下编译的吗?Windows下报这个错误
1687096943746.png
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2023-6-18 22:09:47 | 显示全部楼层
arm-none-eabi-gcc -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -specs=Xilinx.spec -Wl,-T -Wl,../src/lscript.ld -L../../zc702_bsp/ps7_cortexa9_0/lib -L../../tx/debug -o "demo_threadx.elf"  ./src/demo_threadx.o  ./common_file/asm_vectors.o ./common_file/board_setup.o   -ltx -Wl,--start-group,-lxil,-lgcc,-lc,--end-group
d:/xilinx2018p3/sdk/2018.3/gnu/aarch32/nt/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld.exe: cannot find -ltx
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:42: demo_threadx.elf] Error 1


请问程序是在Ubuntu下编译的吗?windows下一直报这个错误
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2023-6-18 23:01:27 | 显示全部楼层
已解决
回复

使用道具 举报

15

主题

54

回帖

99

积分

初级会员

积分
99
发表于 2023-7-4 20:10:44 | 显示全部楼层
请教一下,我这这参考这个移植到我们自已的硬件上,发现用ATKKPING 不断的ping 有掉包的情况。  不知道 你们有没有。
回复

使用道具 举报

8

主题

104

回帖

138

积分

初级会员

积分
138
 楼主| 发表于 2023-7-5 10:15:58 | 显示全部楼层
smare 发表于 2023-7-4 20:10
请教一下,我这这参考这个移植到我们自已的硬件上,发现用ATKKPING 不断的ping 有掉包的情况。  不知道 你 ...

没有测过长时间持续ping 包,短时间ping 测过(超过5分钟),没问题。iperf 持续的测过,基本跑满带宽,
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-10-24 11:20:13 | 显示全部楼层
请问在最后编译的 时候报以下的错误是什么原因
屏幕截图 2023-10-24 111839.png
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-11-22 21:29:42 | 显示全部楼层

请问下是怎么解决的,我也碰到了这个错误
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-11-24 09:31:16 | 显示全部楼层
hanwen 发表于 2023-10-24 11:20
请问在最后编译的 时候报以下的错误是什么原因

asm_vectors.S要用论坛压缩包里的版本,不能用xilinx自带的
回复

使用道具 举报

5

主题

95

回帖

110

积分

初级会员

积分
110
发表于 2023-12-27 09:58:01 | 显示全部楼层
下载搭配flash有什么需要特殊设置的吗?我下载后无法启动,debug是可以正常的运行
回复

使用道具 举报

15

主题

54

回帖

99

积分

初级会员

积分
99
发表于 2024-1-1 13:35:55 | 显示全部楼层
我试过固化到W25Q128 可以启动的。用的xilinx SDK ,记得自已加一个FSBL包。
回复

使用道具 举报

5

主题

95

回帖

110

积分

初级会员

积分
110
发表于 2024-1-7 21:24:07 | 显示全部楼层
smare 发表于 2024-1-1 13:35
我试过固化到W25Q128 可以启动的。用的xilinx SDK ,记得自已加一个FSBL包。

嗯嗯,可以的
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-1-17 11:32:14 | 显示全部楼层
Gony 发表于 2022-8-10 18:56
请教下楼主,有用过新版的tx_initialize_low_level.S吗?用6.1.9的A9 GNU tx_initialize_low_level.S的话貌 ...

最新6.4.0,移植是比较简单的,改两个地方就可以了
1. 把BSP里的asm_vectors.S拖到自己的源码里,把中断处理定向到threadx的中断处理过程

2. 修改port里A9 GNU的tx_initialize_low_level.S,开始先把lr寄存器保存到r4里,配置好堆栈后,从r4恢复lr寄存器, 程序就不会跑飞了,把堆栈的指针改掉,这样就可以用默认的vitis默认生成的lscript.ld,不用每次配置ld都修改一遍,中断向量表名字也改成BSP里的_vector_table,

..
回复

使用道具 举报

20

主题

30

回帖

90

积分

初级会员

积分
90
发表于 2024-1-18 16:58:08 | 显示全部楼层
这个例程不能下载了么,我这下载不了
回复

使用道具 举报

20

主题

30

回帖

90

积分

初级会员

积分
90
发表于 2024-1-18 17:01:27 | 显示全部楼层
liubuf 发表于 2024-1-18 16:58
这个例程不能下载了么,我这下载不了

不好意思,可以下载了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-27 02:02 , Processed in 0.491621 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表