硬汉嵌入式论坛

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

V6开发板使用MDK的RTE环境运行RTX5 移植步骤和注意事项

  [复制链接]

32

主题

295

回帖

391

积分

高级会员

积分
391
发表于 2020-2-20 21:10:29 | 显示全部楼层 |阅读模式
很感谢硬汉的耐心指导; 文档大部分内容是参考硬汉写的《安富莱 STM32-V6 开发板 RL-TCPnetV7.X 教程 》

硬件环境:V6开发板
1、主要步骤如下:
第1步,准备一个工程模板。
能直接运行程序即可,附件有空白模板,模板不做限制,任意模板均可;保证系统时钟配置正确即可;

第2步,移植RTX5.
移植RTX5是采用MDK的RTE环境直接添加。

第3步,处理HAL库时间基准。
因为RTX5 内核使用了systick,HAL库使用的Delay函数需要做重定向,使用DWT或者通用定时器均可;程序里面已经给出;

第4步,创建应用。
创建线程、删除线程、信号量、互斥一类的都可以直接参考《安富莱_STM32-V6开发板_RTX教程.pdf》

2、以下内容摘抄:《安富莱 STM32-V6 开发板 RL-TCPnetV7.X 教程 》
下面将STM32F4的移植步骤和注意事项为大家做个说明。
第 1 步,安装指定的 MDK 软件包版本
移植新版RL-TCPnet网络协议栈需要大家下载指定的MDK软件包版本:
CMSIS 软件包使用当前最新的:V5.6.0
STM32F4使用当前最新的:V2.14
CMSIS-Driver使用当前最新的:V10.2.0
MDK中间件使用当前最新的:V7.12.0
STM32CubeMX使用当前最新的:V5.4
ARM_Compiler使用当前最新的:V1.6.1

这些软件包的安装在STM32F4用户手册的第2章2.3小节有详细说明。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255

所有这些软件包汇总下载地址:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=95609


3、准备一个工程模板
首先准备好一个简单的裸机工程模板,工程模板的制作就不做讲解了。从这个帖子里面下载一个例子即可:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255
这里的重点是教大家移植RTX5系统。准备好的工程模板如下图所示(大家也可以制作其它任意的工程模板,不限制):

001.png


4、添加 RTX5 并配置
RTX5可以方便的通过MDK的RTE环境添加进来。对于F4版本,会添加多个F4版的HAL库文件,这些库文件我们可以使用,也可以不使用。教程配套的工程文件是不使用这些的,因为前面的工程模板里面已经添加了。所以要将这些文件全部隔离出来。


5、添加RTX5源码

002.png
点击OK按钮后,可以看到RTX5源码已经添加到工程里面了:

003.png

6、 将自动添加的库文件隔离出来
添加的所有文件中,startup_stm32f429xx.s和system_stm32f4xx.c要隔离出来,隔离方法也比较简单,
比如隔离startup_stm32f429xx.s文库,鼠标右击此文件选择Options for file ‘startup_stm32f429xx.s’

004.png

取消下面的对勾:

005.png
隔离这一个文件后,另一个文件system_stm32f4xx.c也被自动隔离了,隔离后的效果如下:

011.png
7、RTX5配置

剩下就是配置RTX5,设置RTX_Config.h文件即可,移植阶段先按照如下设置配置好,后面章节会专门为大家讲解每个参数的配置含义

006.png

注意事项:
工程模板如果使用DWT替换HAL中的函数HAL_Delay,偶尔会出现下载程序之后用户MDK软件里面的自动复位运行,效果不好,不工作的情况;
重新上电或者按下复位按钮均可以正常执行程序,这点需要注意一下;并不是程序有问题,DWT的特性,断电或者软件复位、按键复位都能100%保证可靠;
因为systick 被系统时钟用了,HAL Delay函数是无法使用的;需要用DWT或者通用定时器实现;

8、配置RTX5时钟节拍
这里设置好1000hz  一个TICK是1ms;设置之后内部会自动配置systick 定时器为系统提供时钟节拍;
007.png

9、RTX5调试组件System Analyzer 开启

008.png

通过System Analyzer 可以看到RTX5线程正常运行;

009.png

注意事项:需要把View菜单 Periodic Window Update 选中,否则会出现System Analyzer 不能动态更新的问题;
010.png

程序模板 V6-000_Template.zip (2.31 MB, 下载次数: 437)

移植好的工程文件;
V6_RTX5_Template.zip (2.33 MB, 下载次数: 298)

按照《安富莱 STM32-V6 开发板 RL-TCPnetV7.X 教程 》移植章节走一遍即可,感谢硬汉;
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2020-2-21 09:20:00 | 显示全部楼层
相当给力
回复

使用道具 举报

3

主题

1222

回帖

1231

积分

至尊会员

积分
1231
发表于 2020-2-21 10:07:31 | 显示全部楼层
非常帅的心得!!!
回复

使用道具 举报

2

主题

87

回帖

93

积分

初级会员

积分
93
发表于 2020-2-21 10:37:01 | 显示全部楼层
裸机版本程序模板和RTX或FREEROTS版本是不是,bsp.c,bsp.h,还有bsp_timer.三个文件需要改一改
回复

使用道具 举报

32

主题

295

回帖

391

积分

高级会员

积分
391
 楼主| 发表于 2020-2-21 20:25:12 | 显示全部楼层
EastWind 发表于 2020-2-21 10:37
裸机版本程序模板和RTX或FREEROTS版本是不是,bsp.c,bsp.h,还有bsp_timer.三个文件需要改一改

对,主要是SysTick 被RTX5用了,HAL Delay用DWT或者通用定时器实现,bsp文件里面,吧硬汉吧时钟部分初始化地方封装了一下,其它没有做改动;
回复

使用道具 举报

2

主题

87

回帖

93

积分

初级会员

积分
93
发表于 2020-2-21 22:26:02 | 显示全部楼层
谢谢分享,今天按教程把freertos 改成rxt5,用着不错,
回复

使用道具 举报

3

主题

59

回帖

68

积分

初级会员

积分
68
发表于 2020-2-22 09:34:44 | 显示全部楼层
startup_stm32f429xx.s和system_stm32f4xx.c要隔离出来是为啥呀?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2020-2-22 10:58:57 | 显示全部楼层
ruboss 发表于 2020-2-22 09:34
startup_stm32f429xx.s和system_stm32f4xx.c要隔离出来是为啥呀?

如果全套是MDK带的不用隔离。
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2020-2-22 18:28:02 | 显示全部楼层
非常好的心得,之前对移植一些问题一知半解的。
回复

使用道具 举报

32

主题

295

回帖

391

积分

高级会员

积分
391
 楼主| 发表于 2020-2-23 15:11:27 | 显示全部楼层
ruboss 发表于 2020-2-22 09:34
startup_stm32f429xx.s和system_stm32f4xx.c要隔离出来是为啥呀?

隔离出来是因为,用的模板创建RTX工程,实际测试,如果不用模板里面的.s文件,可以不隔离,对比过这两个文件是完全一样的
回复

使用道具 举报

116

主题

799

回帖

1147

积分

至尊会员

积分
1147
QQ
发表于 2020-2-25 14:36:53 | 显示全部楼层
有尝试过使用标准库添加RTX5吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2020-2-25 15:30:07 | 显示全部楼层
jcx0324 发表于 2020-2-25 14:36
有尝试过使用标准库添加RTX5吗

没问题,之前我还单独移植过,不使用RTE。

后来发现有点求远了,特别是使用中间件的时候,新版的中间件的驱动CMSIS-Driver已经都开始采用HAL了
回复

使用道具 举报

32

主题

295

回帖

391

积分

高级会员

积分
391
 楼主| 发表于 2020-2-25 20:53:29 | 显示全部楼层
补充一下,时间MDK自动的RTX 调试组件,需要设置软件时钟和系统设置的时钟频率一致,比如程序设置的168M,软件也需要设置成168M,设置方法DEBUG->Settings-Trace -> QQ图片20200225205210.png
否则会导致测量的结果不准确
回复

使用道具 举报

6

主题

126

回帖

144

积分

初级会员

积分
144
发表于 2020-2-28 10:00:33 | 显示全部楼层
多谢楼主分享,学习
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2020-3-7 14:13:57 | 显示全部楼层
谢谢分享,试一下
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2020-5-30 22:06:51 | 显示全部楼层

发现一个问题:在打开rtx5 运行后,无法使用rtt 组件打印

不知道是不是我得keil(v5.26.2.0)问题,本想在debug下看运行情况。一用就奔溃。

不过我通过修改LED 任务闪烁频率可以看到运行变化,初步判断应该是ok的


V6-001_rtx5_stdlib.zip

5.43 MB, 下载次数: 83

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2020-5-31 10:07:25 | 显示全部楼层
24diaos 发表于 2020-5-30 22:06
发现一个问题:在打开rtx5 运行后,无法使用rtt 组件打印

不知道是不是我得keil(v5.26.2.0)问题,本 ...

RTX会开Event Recoder组件的。

也用RTT的话,此贴:

这波操作可以,SEGGER帮MDK解决Event Recorder做printf的卡顿问题
http://www.armbbs.cn/forum.php?mod=viewthread&tid=97990
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2020-5-31 13:52:23 | 显示全部楼层
eric2013 发表于 2020-5-31 10:07
RTX会开Event Recoder组件的。

也用RTT的话,此贴:

收到。多谢解答 晚上鸡腿安排
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2022-11-5 22:48:52 | 显示全部楼层
eric2013 发表于 2020-2-25 15:30
没问题,之前我还单独移植过,不使用RTE。

后来发现有点求远了,特别是使用中间件的时候,新版的中间 ...

一直有这个困惑:如果一直使用ST的MCU,要改为国产MCU的话,所有的软件迁移几乎是不可行的?因为很多国产MCU的库基本都是基于标准库,并没有像ST的HAL库去兼容,可能是国内厂商的实力和沉淀远远还达不到。对于这个MCU更换的软件迁移问题,硬汉哥有什么好的方法或建议吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2022-11-6 10:05:18 | 显示全部楼层
ldh2020 发表于 2022-11-5 22:48
一直有这个困惑:如果一直使用ST的MCU,要改为国产MCU的话,所有的软件迁移几乎是不可行的?因为很多国产 ...

可以用,RTX内核可以方便添加。添加中间件的话,要看下是否有对应的CMSIS-Driver驱动,没有的话,可以在ST的基础上修改。
回复

使用道具 举报

17

主题

21

回帖

72

积分

初级会员

积分
72
发表于 2022-11-10 08:19:45 | 显示全部楼层
谢谢分享
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2022-11-15 11:35:57 | 显示全部楼层
怎么我这用RTX2的源码形式编译还有错误呢
__WEAK void osRtxKernelPreInit (void) {
}
C:\Users\jpsky\AppData\Local\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\RTOS2\RTX\Source\rtx_kernel.c(507): warning:  #77-D: this declaration has no storage class or type specifierC:\Users\jpsky\AppData\Local\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\RTOS2\RTX\Source\rtx_kernel.c(507): error:  #65: expected a ";"


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2022-11-15 11:57:41 | 显示全部楼层
jplzl10000 发表于 2022-11-15 11:35
怎么我这用RTX2的源码形式编译还有错误呢
__WEAK void osRtxKernelPreInit (void) {
}

分享你的工程到百度云,我看看。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2022-11-15 12:40:17 | 显示全部楼层
eric2013 发表于 2022-11-15 11:57
分享你的工程到百度云,我看看。

这个用的是F3的std库,不是HAL库,不知道是不是这个原因

STM32F30x_DSP_StdPeriph_Lib_V1.2.3.rar

28.2 MB, 下载次数: 2

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2022-11-15 14:43:34 | 显示全部楼层
jplzl10000 发表于 2022-11-15 12:40
这个用的是F3的std库,不是HAL库,不知道是不是这个原因

可以标准库的,测试了下你的工程,尝试解决下,发现好几处有问题

image.png
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 07:55 , Processed in 0.270986 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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