找回密码
 立即注册
楼主: 13918210822

最小“非抢占”系统调度服务的必须功能--理念讨论贴,小白发贴,欢迎各位高手及小白

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-6 21:03:16 | 显示全部楼层
139182*** 发表于 2024-5-6 20:38
那我想你的作品应该基本满足我的需求,具体如何配置,我要学习一下
我考虑在 STC8H1K08上跑一个机箱前面 ...

在STC8H1K08上跑起来,完全没有问题,用消息队列来实现串口通讯协议,也是相当方便的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-5-6 21:10:38 | 显示全部楼层
本帖最后由 tzz1983 于 2024-5-6 21:12 编辑
139182*** 发表于 2024-5-6 14:56
是有向你们学习,缩减一个功能子集的想法

但是,理论知识储备不够,想得到大家的指点,哪些才是最基础的 ...

你的需求, 是比较合适用 RTOSTiny,  RTOSTiny基本上已经把51压榨到了极限, 切换效率很高的.
作者说只用协作式时, 代码仅850字节左右. 开抢占时, 也就1K多代码.

别被RTOS吓到, 那么多的C文档, 想当然就会以为很大,
其实, 通过适当的裁剪以后, 不太的, 也不会占用很多资源.

关键是它好用呀, 就像你说的, 用一个OSTimeDly() 代替无效的 _nop_()循环, 可以节省多少资源?
再者就是这个任务断点继续, 比起祼机的状态机, 不要舒服太多, 习惯了跟本就放不下!

小型RTOS都不会占用太多的资源, 我用数据来说明一下RTOS的资源占用情况:

uC/OS:
仅用基本功能时也就5KB左右的代码, 对于64KB的51机型来说, 毫无压力.  
DATA=30, XDATA=1K左右, 对于8K的51机型来说也没有压力.
OS自身的CPU占用率, 合理的设置可以降低到 1%以内.

RTOSTiny:
我编译了一下例程:  CODE=1404  DATA=42  XDATA=63  这么低的RTOS还有谁?


相信CosyOS只用基本功能时代码量也不高, 否则那就是裁剪做的不够到位.
因为他的代码开了很多测试功能, 我没有去尝试.

当然了, 不论多少, RTOS总会一些资源占用, 如果说小鱼小虾也是肉的话, 那就不怎么好跟话了.


总结, 当你真的了解RTOS后, 就是发现, RTOS的弊端跟本不是什么占用资源.
RTOS最大的弊端就是比祼机的入门门槛稍高了些,需要一定的时间去理解和熟悉!



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2024-5-6 21:31:41 | 显示全部楼层
本帖最后由 13918210822 于 2024-5-6 21:36 编辑
tzz1*** 发表于 2024-5-6 21:10
你的需求, 是比较合适用 RTOSTiny,  RTOSTiny基本上已经把51压榨到了极限, 切换效率很高的.
作者说只用协 ...

纯国产的Cosy应该是功能相对多一些
             Ti51"替我要“应该是更轻量,在看代码中。。。
你移植的uC/OS理论上更成熟,相对应的介绍文档也很多,不过要更多的资源,稍后再学习

想用几天时间把代码移植到Ti51上去, LCD1602操作,ADC操作(按键事件),串口协议解析都有一些代码量,所以850字节的确很符合想象。我估计 用上Fanxsp的RTOSTiny51有机会压缩在4~8K以内。

如果放开1点,用STC8H1K17应该uC/OS也能用,不过我要熟悉一下RTOS

51跑操作系统的确还是比较神奇,SOC上多用LinuxBSP, 51则是只用过前后台。

你们已经走在前面开个几个副本,我看看能不能进去实际杀几个怪:)

我对自己还有一个要求,就是边用边理解,能不能把使用RTOS后的设计模式归纳清楚

谢谢了!
            
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2024-5-6 21:52:22 | 显示全部楼层
fan*** 发表于 2024-5-6 21:03
在STC8H1K08上跑起来,完全没有问题,用消息队列来实现串口通讯协议,也是相当方便的。 ...

修改了tinyrtos51cfg.h


/*  任务   */
/* OSTASKS+OSBINSEMS+OSSEMS+OSEFLAGS+OSMSGQS < 256 */
#define OSTASKS                      4       // 任务数 ID: 0~OSTASKS-1
#define OSMETHOD              0       // 调度模式 0-协作式 1-抢先式

编译后,大小和内存占用没有改变(Program Size: data=42.0 xdata=63 const=0 code=1404),是否还要修改一些地方?



如何修改为协作式?

如何修改为协作式?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-6 22:01:15 | 显示全部楼层
本帖最后由 fanxsp 于 2024-5-6 22:08 编辑
139182*** 发表于 2024-5-6 21:52
修改了tinyrtos51cfg.h

OSMETHOD  设为0  就是协作式  为1 就是抢先式。这个例程 还有调用任务挂起、任务恢复,代码会略大一些。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2024-5-6 22:07:51 | 显示全部楼层
fan*** 发表于 2024-5-6 22:01
OSMETHOD  设为0  就是协作式  为1 就是抢先式

这个我猜测如是。

只是修改这个选项后,重新编译,obj大小没有变化

增加了 REMOVEUNUSED链接选项也没有改变

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-6 22:11:45 | 显示全部楼层
本帖最后由 fanxsp 于 2024-5-6 22:14 编辑
139182*** 发表于 2024-5-6 22:07
这个我猜测如是。

只是修改这个选项后,重新编译,obj大小没有变化

你的编译器,是什么版本的?优化等级多少? 我试了一下,我的有变化啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2024-5-7 04:30:13 | 显示全部楼层
fan*** 发表于 2024-5-6 22:11
你的编译器,是什么版本的?优化等级多少? 我试了一下,我的有变化啊

请帮忙看一下我的选项是否要调整,对比“有变化的”用的版本和选项应该是多少?

你提到的"例子中,任务挂起和恢复,代码稍大一点“是否可以条件编译,如何进行?


谢谢

Demo C51选项,应该是下载工程默认

Demo C51选项,应该是下载工程默认
截图202405070427326331.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-5-7 07:48:05 | 显示全部楼层
本帖最后由 fanxsp 于 2024-5-7 07:50 编辑
139182*** 发表于 2024-5-7 04:30
请帮忙看一下我的选项是否要调整,对比“有变化的”用的版本和选项应该是多少?

你提到的"例子中,任务 ...

TinyRTOS51 V1.30.zip (537.26 KB, 下载次数: 146)
这个是最新版,有增加一些新功能,准备过一段时间上传。


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:434
  • 最近打卡:2025-05-01 20:16:58
已绑定手机

229

主题

328

回帖

1471

积分

金牌会员

积分
1471
发表于 2024-5-7 08:10:27 | 显示全部楼层
我只想说单片机开发没必要上系统,提高自己的编程逻辑和编程思想
再复杂的程序也能运行自如,论坛上的系统对我来说没有任何资源可用,在我眼里纯浪费单片机资源
想实现多任务也就几百行代码,抢占式任务就写在中断里。

点评

我刚看了一下,新款单片机支持24位自动重载定时器了,如果硬件定时器够多的话,确实可以实现抢占式任务。。。  发表于 2024-5-30 09:38
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:41 , Processed in 0.159050 second(s), 120 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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