找回密码
 立即注册
查看: 641|回复: 37

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

[复制链接]

该用户从未签到

19

主题

519

回帖

1642

积分

荣誉版主

积分
1642
发表于 2024-4-5 09:07:02 | 显示全部楼层 |阅读模式
本帖最后由 tzz1983 于 2024-4-14 21:22 编辑

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

Keil C251 编译器   
     
FreeRTOS_STC32G12K.rar (1.16 MB, 下载次数: 70)



2 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复 送花

使用道具 举报

该用户从未签到

551

主题

9238

回帖

1万

积分

管理员

积分
13957
发表于 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)
回复 支持 反对 送花

使用道具 举报

该用户从未签到

61

主题

622

回帖

1万

积分

荣誉版主

积分
10818
发表于 2024-4-5 09:31:43 | 显示全部楼层
这个要支持,终于肯自己把自己的原创作品拿出来了,不再假他人之手
这里“原创”的意思是采用了一个与之前别人不一样的方法。
害羞的“小女孩”终于长大了,可让我足足等了半年

第一次.jpg


点评

重新移植过了,没有之前的担心动过源码. 源码险了处理了一些警告,基本上没动过 其它:我范例中用了 任务运行时间统计, 需要动态内存, heap_1.c 没有释放内存的功能, 所以用了heap_4.c 新的运行截图 [attachimg]  详情 回复 发表于 2024-4-5 09:41
回复 支持 反对 送花

使用道具 举报

该用户从未签到

61

主题

622

回帖

1万

积分

荣誉版主

积分
10818
发表于 2024-4-5 09:34:52 | 显示全部楼层


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

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

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

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

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

范例中, 打开了任务运行时间统计功能, 串口0 printf 输出结果, 运行截图如下:


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

回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

519

回帖

1642

积分

荣誉版主

积分
1642
 楼主| 发表于 2024-4-5 09:41:17 | 显示全部楼层
本帖最后由 tzz1983 于 2024-4-5 09:45 编辑
杨为民 发表于 2024-4-5 09:31
这个要支持,终于肯自己把自己的原创作品拿出来了,不再假他人之手。
这里“原创”的意思是采用了一个与之 ...

重新移植过了,没有动过源码.  源码只是处理了一些警告.

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

新的运行截图

333.PNG


点评

你的这个移植版存在重大BUG:不能运行此次排行榜的实时响应时间测试程序,会死机。 作为本尊,你应该亲自编写一个可以正常运行的,不死机的测试程序发布出来供大家学习。 如果你编不成功,就请给出一个说明,我们等  详情 回复 发表于 2024-4-16 21:58
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    6 小时前
  • 签到天数: 154 天

    [LV.7]常住居民III

    1

    主题

    96

    回帖

    453

    积分

    中级会员

    积分
    453
    发表于 2024-4-5 10:37:08 | 显示全部楼层
       有空时,下来学习、学习!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    前天 13:47
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    0

    主题

    26

    回帖

    310

    积分

    中级会员

    积分
    310
    发表于 2024-4-5 22:23:20 | 显示全部楼层
    厉害
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-3-19 18:22
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    0

    主题

    20

    回帖

    366

    积分

    中级会员

    积分
    366
    发表于 2024-4-7 14:10:31 | 显示全部楼层
    准备学习FreeRTOS,支持一下
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    61

    主题

    622

    回帖

    1万

    积分

    荣誉版主

    积分
    10818
    发表于 2024-4-16 21:58:02 | 显示全部楼层
    tzz1983 发表于 2024-4-5 09:41
    重新移植过了,没有动过源码.  源码只是处理了一些警告.

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

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

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


    点评

    没有啊, 我用都没死机 代码做好了, 按您的要求做的, 我按您的方法, 自己测试的结果分别为: 11.5 和 11.2 请检阅代码: [attachimg]41573[/attachimg] [attachimg]41574[/attachimg] [attachimg]41576[/att  详情 回复 发表于 2024-4-17 10:26
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    19

    主题

    519

    回帖

    1642

    积分

    荣誉版主

    积分
    1642
     楼主| 发表于 2024-4-17 10:26:14 | 显示全部楼层
    本帖最后由 tzz1983 于 2024-4-17 11:27 编辑
    杨为民 发表于 2024-4-16 21:58
    你的这个移植版存在重大BUG:不能运行此次排行榜的实时响应时间测试程序,会死机。

    作为本尊,你应该亲 ...

    没有BUG哦, 我做了代码都没死机

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

    捕获1.JPG
    您是不是忘记中断里要用ISR特征的函数了?

    捕获2.JPG

    捕获3.JPG

    捕获4.JPG

    FreeRTOS_STC32G12K给杨老师的切换测试代码.rar (1.18 MB, 下载次数: 13)


    点评

    (1)收到,谢谢! (2)以后在编写STCx51单片机程序的时候,对于bit位变量,千万别再写“P21=!P21”这种形式,请写为“P21=~P21”,丢脸。 自己去调研一下为什么,服不服都回复给初学者看看  详情 回复 发表于 2024-4-18 20:41
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-30 14:20 , Processed in 0.073870 second(s), 71 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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