- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2025-04-30 07:46:22
荣誉版主
- 积分
- 2319
|
发表于 2023-9-12 09:50:11
|
显示全部楼层
你的代码我早就刷到过, 但是我没有耐心仔细看. 首先表明, 我很喜欢STC-51内核的单片机, 用它的时间也超过了十年. UCOS早就可以运行在51内核上了, "杨屹" 那个版本有人还记得吗? 多少年了! 可有多少实际项目会运用呢?
这次我发出这个贴出来, 是有一点想抛砖引玉的意思. 想表明的意思有几点:
1. STC32G 这个251内核的比51内核的更适合运行OS, 你自己移植过OS, 你应该明白51内核运行OS时需要"栈搬家", 这就是51内核运行OS的最大短板,且无法绕过. 251内核就没有这个问题, 运行更流畅
2. 学最终的目的是用, 如果同意我的观点. 为何不把现在用在51运行OS的精力放在251内核上来呢. (再次表明,STC8(51内核)是一款非常优秀的单片机,并不是所有的应用都要用到OS,实际上大多数的应用都不需要用到OS,适不适合运行OS和产品本身好坏是两码事) 初发贴时我是在没有找到STC32G(251核)对应的UCOS版本, 才发出来的,希望是有人能接下去, 这样对于那些真正要用它做项目的人来说, 是可以提高很多效率的
3. 对于STC来说, 我是一名客户, 对于本论谈来说, 我只是一个小小的游客. 我发出代码, 不代表我的代码很优秀. 那些细节还是需要有专业的人去打磨的. 或者说大家在这里共同探讨, 排除BUG, 取长补短, 那也是非常好的
再说一下这个临界区切换任务的话题吧, 说实话, 这个东西我还真的是不明白, 有知情人的好心人可以用简明易懂的方式告诉我为什么吗? 非常期待.
在我的印象中, 临界区对于程序来说是一段不可分割代码, 并且为了整个OS的快速响应, 临界区是要尽量做得精简的. 现在说要在临界区切换任务, 有几点我不明白:
1.什么场景下有这种需求?
2. 临界区内切换任务了, 那还叫临界区吗? 新的任务是在临界区内运行吗? 又或者在切换任务时就自动退出了临界区, 那那些本来就在临界区内未运行代码又算是什么, 它们不是临界区的一部分?
3.进临界区和出临界区不对配对使用的吗, 你不可以运行完临界区再切换任务吗?
4.和楼上说的恰恰相反, 使用中断方式, 反而是可以在临界区切换任务的, 因为退出临界区(实际上就是开中断)后就会自动立刻切换任务.
顺便说一下我发的这个代码最新测试结果, 我没有专门去测试, 但是已经用在了一个小项目上面, 目前除了"邮箱队列"和"内存管理"的功能没有用到外, 其它的功能基本都用过了 (已经用过的功能有 信号量, 互斥, 邮箱 ,标志集, 软定时器. 统计任务, 堆栈检查), 目前没有发现问题.
|
|