本帖最后由 杨为民 于 2024-3-31 10:46 编辑
(1)最近网友“tzz1983”在论坛上推出了他用替代法软中断作为任务切换的方法的“C251-UCOSII”uC/OS-II移植版,引起了对任务切换核心过程要不要进行关闭总中断进行临界区保护的大讨论。 (2)今天熊仔网友也在论坛上推出了他用替代法软中断作为任务切换的方法的“uCOSII-STC32G”uC/OS-II移植版。并且请帮忙查错。 (3)根据笔者很早以前对RTOS的研究,采用软中断指令进行任务切换的时候不需要在软中断程序中进行临界区保护,因此对上面两个移植版本进行了测试,果然如此。 (4)下面是对网友“tzz1983”移植的C251-UCOSII_原始版进行测量的结果: (5)然后注释掉任务切换中断中的第115行关闭总中断程序和第119行的打开总中断程序,这个任务切换无临界区保护的测试程序编译后的运行结果与原始的一样。 (6)下面是对熊仔网友移植的UCOSII-STC32G_原始版进行测量的结果: (7)然后注释掉任务切换中断中的第163行到第167行关闭总中断程序以及第174和175行的打开总中断程序,这个任务切换无临界区保护的测试程序编译后的运行结果与原始的一样。 (8)结论:对于STC32G单片机,使用软中断替代法作为任务切换方法时,在软中断程序中无需采用任何临界区保护措施。
下面是网友“tzz1983”移植的C251-UCOSII的测试程序:
下面是熊仔网友移植的UCOSII-STC32G的测试程序
|