fanxsp 发表于 2024-5-6 21:03:16

13918210822 发表于 2024-5-6 20:38
那我想你的作品应该基本满足我的需求,具体如何配置,我要学习一下
我考虑在 STC8H1K08上跑一个机箱前面 ...
在STC8H1K08上跑起来,完全没有问题,用消息队列来实现串口通讯协议,也是相当方便的。

tzz1983 发表于 2024-5-6 21:10:38

本帖最后由 tzz1983 于 2024-5-6 21:12 编辑

13918210822 发表于 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=1404DATA=42XDATA=63这么低的RTOS还有谁?


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

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


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



13918210822 发表于 2024-5-6 21:31:41

本帖最后由 13918210822 于 2024-5-6 21:36 编辑

tzz1983 发表于 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后的设计模式归纳清楚

谢谢了!
            

13918210822 发表于 2024-5-6 21:52:22

fanxsp 发表于 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),是否还要修改一些地方?



fanxsp 发表于 2024-5-6 22:01:15

本帖最后由 fanxsp 于 2024-5-6 22:08 编辑

13918210822 发表于 2024-5-6 21:52
修改了tinyrtos51cfg.h



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

13918210822 发表于 2024-5-6 22:07:51

fanxsp 发表于 2024-5-6 22:01
OSMETHOD设为0就是协作式为1 就是抢先式

这个我猜测如是。

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

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

fanxsp 发表于 2024-5-6 22:11:45

本帖最后由 fanxsp 于 2024-5-6 22:14 编辑

13918210822 发表于 2024-5-6 22:07
这个我猜测如是。

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

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

13918210822 发表于 2024-5-7 04:30:13

fanxsp 发表于 2024-5-6 22:11
你的编译器,是什么版本的?优化等级多少? 我试了一下,我的有变化啊

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

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


谢谢

fanxsp 发表于 2024-5-7 07:48:05

本帖最后由 fanxsp 于 2024-5-7 07:50 编辑

13918210822 发表于 2024-5-7 04:30
请帮忙看一下我的选项是否要调整,对比“有变化的”用的版本和选项应该是多少?

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

这个是最新版,有增加一些新功能,准备过一段时间上传。


QQ624353765 发表于 2024-5-7 08:10:27

我只想说单片机开发没必要上系统,提高自己的编程逻辑和编程思想
再复杂的程序也能运行自如,论坛上的系统对我来说没有任何资源可用,在我眼里纯浪费单片机资源
想实现多任务也就几百行代码,抢占式任务就写在中断里。
页: 1 [2] 3 4 5 6
查看完整版本: 最小“非抢占”系统调度服务的必须功能--理念讨论贴,小白发贴,欢迎各位高手及小白