tzz1983 发表于 2024-4-5 09:07:02

FreeRTOS @STC32G移植来了|重复造车轮

本帖最后由 tzz1983 于 2024-4-14 21:22 编辑

FreeRTOS@STC32G移植来了|重复造车轮
简介:
用于STC32G12K128, 32位8051内核上的 FreeTROS_V10.5.1移植版本.
移植版本弥补了 portYIELD_FROM_ISR() 缺失的问题.
Keil C251 编译器      



神农鼎 发表于 2024-4-7 14:36:31


正好搭配楼主的实战代码
实战 + 理论 探索,快速上手



FreeRTOS入门@STC32G , 【1 ~ 11 集】 连载,本坛荣誉版主杨老师出品
===STC32G12K128

STC32G FreeRTOS入门(1):单片机后台任务简介
STC32G FreeRTOS入门(2):单片机前后台任务编程中的问题
STC32G FreeRTOS入门(3):STC32G PK STC8--完胜
STC32G FreeRTOS入门(4):实时任务
STC32G FreeRTOS入门(5):与优化无关的软件延时函数
STC32G FreeRTOS入门(6):如何学好RTOS编程
STC32G FreeRTOS入门(7):抢占式任务调度
STC32G FreeRTOS入门(8):空闲任务与任务恢复
STC32G FreeRTOS入门(9):搭建完整操作系统功能
STC32G FreeRTOS入门(10):STC32G单片机的Keil C251引导过程简析
STC32G FreeRTOS入门(11):现场保护与恢复机制—FreeRTOS与C251中断异同


FreeRTOS入门@STC32G, 【1 ~ 11 集】 连载,本坛荣誉版主杨老师出品 - FreeRTOS/uCOS,GUI-uGFX/U8g2,文件系统/嵌入式系统/实时操作系统 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

杨为民 发表于 2024-4-5 09:31:43

这个要支持,终于肯自己把自己的原创作品拿出来了,不再假他人之手。
这里“原创”的意思是采用了一个与之前别人不一样的方法。
害羞的“小女孩”终于长大了,可让我足足等了半年!



杨为民 发表于 2024-4-5 09:34:52



就用楼主当年的原话作为介绍吧:

今天送杨老师一个礼物 <STC32G - FreeRTOS 中断切换任务版本>

这个版本去年年底就做了, 因为没有实际项目要用到, 当时只是浅尝即止了.
这个版本和官网上发的版本主要改动是用中断切换任务.基本功能已经做好了, 但文档还有些乱, 需要整理一下. 做的时候只是为了看一下运行结果,很多地方也还需要优化.
官网上那个FreeRTOS的版本中有个缺陷是, 如果在中断里激活了一个高优先级任务, 不能即时任务切换, 需要等到时钟滴塔到了以后再统一进行切换.
现在这个版本没有这个缺陷, 但是可靠性还得进一步验证.

去年年底我发现官网上这个FreeRTOS版本的缺点后就发贴提出过, 但很遗憾, 到现在官网上的范例代码仍没有改变, 还是老样子.

我希望杨老师接收这个礼物, 并将其发杨光大, 本人认为这是一个重大的改进, 毕竟名字叫做RTOS, 官网的例子不能实时切换任务, 那还能叫实时OS吗

范例中, 打开了任务运行时间统计功能, 串口0 printf 输出结果, 运行截图如下:
https://www.stcaimcu.com/data/attachment/forum/202310/06/120331upmip53btr4ss3fg.jpg

此代码需要注意的是, 运行时间统计功能需要很大的任务栈, 故范示中使用了heap_4.c , 好像 FreeRTOS 原码有个用大内存的地方原码也改过, 具体记不清了, 用的时候注意一下就可以了

tzz1983 发表于 2024-4-5 09:41:17

本帖最后由 tzz1983 于 2024-4-5 09:45 编辑

杨为民 发表于 2024-4-5 09:31
这个要支持,终于肯自己把自己的原创作品拿出来了,不再假他人之手。
这里“原创”的意思是采用了一个与之 ...
重新移植过了,没有动过源码.源码只是处理了一些警告.

其它:我范例中用了 任务运行时间统计, 需要动态内存, heap_1.c 没有释放内存的功能, 所以用了heap_4.c

新的运行截图



fanxsp 发表于 2024-4-5 10:37:08

{:4_250:}   有空时,下来学习、学习!

daybeen 发表于 2024-4-5 22:23:20

厉害

蜗牛 发表于 2024-4-7 14:10:31

准备学习FreeRTOS,支持一下{:4_250:}

杨为民 发表于 2024-4-16 21:58:02

tzz1983 发表于 2024-4-5 09:41
重新移植过了,没有动过源码.源码只是处理了一些警告.

其它:我范例中用了 任务运行时间统计, 需要动态 ...

你的这个移植版存在重大BUG:不能运行此次排行榜的实时响应时间测试程序,会死机。

作为本尊,你应该亲自编写一个可以正常运行的,不死机的测试程序发布出来供大家学习。
如果你编不成功,就请给出一个说明,我们等你消除BUG,发布新版本后再用你的新版本来学习研究。
静等


tzz1983 发表于 2024-4-17 10:26:14

本帖最后由 tzz1983 于 2024-4-17 11:27 编辑

杨为民 发表于 2024-4-16 21:58
你的这个移植版存在重大BUG:不能运行此次排行榜的实时响应时间测试程序,会死机。

作为本尊,你应该亲 ...
没有BUG哦, 我做了代码都没死机

代码做好了, 按您的要求做的,
按照您的方法, 我自己测试的结果分别为: 11.5微秒和11.2微秒
请检阅代码:


您是不是忘记中断里要用ISR特征的函数了?










页: [1] 2 3
查看完整版本: FreeRTOS @STC32G移植来了|重复造车轮