找回密码
 立即注册
楼主: 13918***

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

[复制链接]
  • TA的每日心情
    奋斗
    昨天 06:57
  • 签到天数: 173 天

    [LV.7]常住居民III

    1

    主题

    164

    回帖

    715

    积分

    高级会员

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

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

    使用道具 举报

    该用户从未签到

    20

    主题

    576

    回帖

    1197

    积分

    荣誉版主

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


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

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


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



    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    5

    主题

    92

    回帖

    413

    积分

    中级会员

    积分
    413
     楼主| 发表于 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后的设计模式归纳清楚

    谢谢了!
                
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    5

    主题

    92

    回帖

    413

    积分

    中级会员

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



    如何修改为协作式?

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

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 06:57
  • 签到天数: 173 天

    [LV.7]常住居民III

    1

    主题

    164

    回帖

    715

    积分

    高级会员

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

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

    使用道具 举报

    该用户从未签到

    5

    主题

    92

    回帖

    413

    积分

    中级会员

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

    这个我猜测如是。

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

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

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 06:57
  • 签到天数: 173 天

    [LV.7]常住居民III

    1

    主题

    164

    回帖

    715

    积分

    高级会员

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

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

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

    使用道具 举报

    该用户从未签到

    5

    主题

    92

    回帖

    413

    积分

    中级会员

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

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

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


    谢谢

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 06:57
  • 签到天数: 173 天

    [LV.7]常住居民III

    1

    主题

    164

    回帖

    715

    积分

    高级会员

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

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

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


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 08:12
  • 签到天数: 166 天

    [LV.7]常住居民III

    152

    主题

    214

    回帖

    1790

    积分

    金牌会员

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-20 01:10 , Processed in 0.071877 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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