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

最新版本uC-OS2-2.93.01已移植到STC32G上,请帮忙查错

[复制链接]

该用户从未签到

19

主题

525

回帖

1650

积分

荣誉版主

积分
1650
发表于 2023-9-22 18:40:13 | 显示全部楼层
tzz1983 发表于 2023-9-22 18:06
意思就是要切换到低的啰,代码等会我看。看了再说。
请问我刚才发的例子,在任务A的临界区中,有阻塞吗?你 ...

我知道呀, 在任务A的临界区内没有阻塞呀, 有吗, 在哪呢, 在任务B呀. 不行吗?
满足了你的条件啊, 在临界区内切换任务, 临界区内没有阻塞呀.
然后你告诉我, 任务B也不能有啊, 你是在临界区切换到任务B的, 整个任务B都相当于临界区了.
呵呵. 有点那个味道了吧, 然后接着论下去, 你就会发现, 你的矛很快就要插到自己的盾了.
因为接下来, 你在任务B基本做不了什么事情, 无奈, 你只能想个办法切换回去, 直接回A, 那吃相也难看了些, 不如借住任务C来过渡一下吧, 还美其名曰, 我做一个件天大的事, 你们都做不到.

点评

严格意义上来说,确实是切换了。  发表于 2023-9-22 19:19
回复 支持 反对 送花

使用道具 举报

该用户从未签到

11

主题

329

回帖

872

积分

荣誉版主

积分
872
 楼主| 发表于 2023-9-22 19:21:07 来自手机 | 显示全部楼层
其实这个功能呢,也当做一个扩展吧。
毕竟ucos移植到其他的CPU,有的支持,有的不支持这种代码切换功能。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

11

主题

329

回帖

872

积分

荣誉版主

积分
872
 楼主| 发表于 2023-9-22 19:33:57 | 显示全部楼层
本帖最后由 熊仔 于 2023-9-22 19:37 编辑
tzz1983 发表于 2023-9-22 17:30
你敢不敢正面回答我的问题,你要在临界区切换到比自己优先级高的任务,还是低的。 ...

杨老师提供的例子应该是唤醒高优先级任务,也就是切换到了高优先级的任务去处理紧急事情。

严格意义上说可以切换到就绪的任务。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

525

回帖

1650

积分

荣誉版主

积分
1650
发表于 2023-9-22 20:03:07 | 显示全部楼层
熊仔 发表于 2023-9-22 19:33
杨老师提供的例子应该是唤醒高优先级任务,也就是切换到了高优先级的任务去处理紧急事情。

严格意义上说 ...


"测试2_uCOSII-STC32G-V1.02.zip"去看了一这个代码, 有些乱, goto到处飞, 光是这个编程习惯就有些不敢恭维,想到作者可能和惊天大秘秘2有关, 没坚持下去. 不管它了吧. 对于惊天大秘秘2那类帖, 我没耐心看.

对于你自己这个V1.02的代码, 我看了一下, 我来注释一下,你看对不对?  "先申明, 我现在没有仿真机, 有些地方也没看懂, 你还开了TIM3, 不是最简单的程序范本, 有好些地方我都没去看, 所以我以下的注解可能是错的."

任务A:
142:    EA=  0;                 //关中断了,我要演示临界区切换了, 大家注意!
143:    OSCtxSw();           //我真要的切换了, 我调用切换函数了!  (然而此时, 最高优先级任务仍是任务A, 切换了个寂寞, 切回了自己!  哈哈)
144:    OSTimeDly(OS_TICKS_PER_SEC / 2);   //我要进阻塞了!  此时EA是关的!  临界区不可阻塞? 我开玩笑的!  别人不可以, 但我可以!  这次真的切走了, 切到了任务B.

接下来, 在任务B 和C之间, 来回解锁, 看起来就好像程序还是活的一样, (其实还是有一个地方没看懂的, EA在什么地方你又打开了呢, B和C任务是怎么活的?)


点评

你不用一直纠结把这个套用于常规用法。 这个临界区切换任务本来是特殊用法。基本上没人这么用。你不会用,说实话我也很可能不用。但是也有人需要这么用。 建议你去了解下我解决这个问题的背景。或者杨老师今天发的帖  详情 回复 发表于 2023-9-22 20:12
回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

525

回帖

1650

积分

荣誉版主

积分
1650
发表于 2023-9-22 20:08:26 | 显示全部楼层
范例程序啊, 能写成这样, 也真的是  I 服了 YOU,  简洁明了真的不好吗
回复 支持 反对 送花

使用道具 举报

该用户从未签到

11

主题

329

回帖

872

积分

荣誉版主

积分
872
 楼主| 发表于 2023-9-22 20:12:59 | 显示全部楼层
tzz1983 发表于 2023-9-22 20:03
"测试2_uCOSII-STC32G-V1.02.zip"去看了一这个代码, 有些乱, goto到处飞, 光是这个编程习惯就有些不敢恭 ...

你不用一直纠结把这个套用于常规用法。
这个临界区切换任务本来是特殊用法。基本上没人这么用。你不会用,说实话我也很可能不用。但是也有人需要这么用。
建议你去了解下我解决这个问题的背景。或者杨老师今天发的帖子。

还有加了功能对原本的os完全没有问题,是多了判断而已,正常用法都是中断切换。

其实一开始我都不想加这个功能,感觉太麻烦的,又要考虑large和huge模式。后来灵机一动想到全部改ECALL,然后看到切换是一个宏,那就方便多了,才改写出来。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

525

回帖

1650

积分

荣誉版主

积分
1650
发表于 2023-9-22 20:18:41 | 显示全部楼层
我差不多看懂了, Delay_MS() 你用的是这个, 不是OS的 OSTimeDly(), 怪不得你能盘活任务B和C,   值吗?
回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

525

回帖

1650

积分

荣誉版主

积分
1650
发表于 2023-9-23 07:31:02 来自手机 | 显示全部楼层
我不用纠结?
我是有些纠结,不是为自己,我用不到你这些乱七八糟的东西。
我只是不明白,把进出临界区定义为空,可以自说自话的通过论证,结出结论。
这还不算什么,接下来出续集,上精华版!
仍不算什么,不就别人自个玩玩,可怕的是竞有人跟风!那种空中高楼出的东西拿给我看?
这里是“罗刹国”吗?三更草鸡打鸣当司晨,半扇门楣表真情!是我来错了地方,打扰了。
最后,麻烦你删除“参考tzz1983”那句话,谢谢,你出的东西和我无关。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

19

主题

525

回帖

1650

积分

荣誉版主

积分
1650
发表于 2023-9-23 08:21:55 | 显示全部楼层
不如这样吧, 你们把STC官方出的产品, USB转2串口也好, 另外的产品也行
把注消临界段的UCOS放进去, 作为官方出厂程序, 必须多开几个可用中断优级, 并且高调出示原码, 表明全世界就我一家敢这么做, 例程代码一并发出.
如果做到这样, 我一定心服口服.

点评

“不如这样吧, 你们把STC官方出的产品, USB转2串口也好, 另外的产品也行 把注消临界段的UCOS放进去, 作为官方出厂程序, 必须多开几个可用中断优级, 并且高调出示原码, 表明全世界就我一家敢这么做, 例程代码一并发出  详情 回复 发表于 2023-9-23 11:13
回复 支持 0 反对 1 送花

使用道具 举报

该用户从未签到

11

主题

329

回帖

872

积分

荣誉版主

积分
872
 楼主| 发表于 2023-9-23 10:27:25 来自手机 | 显示全部楼层
看一楼的发布的,只有方法3和方法4。
方法0杨老师的,我不认同。

点评

“方法0杨老师的,我不认同。”是对方法0的测试方法不认同,还是对RTOS系统可以没有临界区保护的结论不认同,这个差别巨大! 如果,我用一根筷子挑着眼吃成了藕片,然后就得出筷子只要一只就够了的结论。你会对我挑  详情 回复 发表于 2023-9-23 11:23
回复 支持 反对 送花

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 23:31 , Processed in 0.078451 second(s), 71 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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