FreeRTOS @32G12K128移植; FreeRTOS @AI8051U移植来了|重复造车轮
FreeRTOS@STC32G移植来了|重复造车轮简介:
用于STC32G12K128, 32位8051内核上的 FreeTROS_V10.5.1移植版本.
移植版本弥补了 portYIELD_FROM_ISR() 缺失的问题.
Keil C251 编译器
2024/9/7
FreeRTOS 在 Ai8051U 上运行的 最简代码例程
为了方便大家在Ai8051U 实验箱 上做 FreeRTOS 实验,
直接下载即可运行。
通常RTOS移植成功后的例程,会衔接一些典型的使用例子.
最近发现一个有趣的事情,
对于一些初学者,RTOS本身没有难倒他们,反而是那些例程让他们绕得很深。
鉴于此,这次使用的是最简范本,例程中仅两个点灯任务,
第一个任务,让实验箱上的8个LED走流灯,只有三行代码:
第二个任务,每秒用printf()函数输出一段字符串,只有一行代码:
喜欢FrerRTOS的朋友们,放飞吧,喜欢什么功能自己加!
FreeRTOS 在 Ai8051U 上运行的 最简演示代码例程
为了方便大家在Ai8051U 实验箱 上做 FreeRTOS 实验,
直接下载即可运行。
这个要支持,终于肯自己把自己的原创作品拿出来了,不再假他人之手。
这里“原创”的意思是采用了一个与之前别人不一样的方法。
害羞的“小女孩”终于长大了,可让我足足等了半年!
就用楼主当年的原话作为介绍吧:
今天送杨老师一个礼物 <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:45 编辑
杨为民 发表于 2024-4-5 09:31
这个要支持,终于肯自己把自己的原创作品拿出来了,不再假他人之手。
这里“原创”的意思是采用了一个与之 ...
重新移植过了,没有动过源码.源码只是处理了一些警告.
其它:我范例中用了 任务运行时间统计, 需要动态内存, heap_1.c 没有释放内存的功能, 所以用了heap_4.c
新的运行截图
{:4_250:} 有空时,下来学习、学习! 厉害 准备学习FreeRTOS,支持一下{:4_250:} 正好搭配楼主的实战代码
实战 + 理论 探索,快速上手
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)
tzz1983 发表于 2024-4-5 09:41
重新移植过了,没有动过源码.源码只是处理了一些警告.
其它:我范例中用了 任务运行时间统计, 需要动态 ...
你的这个移植版存在重大BUG:不能运行此次排行榜的实时响应时间测试程序,会死机。
作为本尊,你应该亲自编写一个可以正常运行的,不死机的测试程序发布出来供大家学习。
如果你编不成功,就请给出一个说明,我们等你消除BUG,发布新版本后再用你的新版本来学习研究。
静等
本帖最后由 tzz1983 于 2024-4-17 11:27 编辑
杨为民 发表于 2024-4-16 21:58
你的这个移植版存在重大BUG:不能运行此次排行榜的实时响应时间测试程序,会死机。
作为本尊,你应该亲 ...
没有BUG哦, 我做了代码都没死机
代码做好了, 按您的要求做的,
按照您的方法, 我自己测试的结果分别为: 11.5微秒和11.2微秒
请检阅代码:
您是不是忘记中断里要用ISR特征的函数了?