==== 补考卷子 ====================
谢谢LAOXU不但看了考试卷子,还能够仔细看我的代码,然后才做出了公正的评判。
下面是我的补考卷子:
《挑战者x51(4):零中断延迟的uC/OS-II的STC32G移植版》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4600) 2023年10月11日
一、引 言
(1)通常包括uC/OS-II在内的单片机上的RTOS都使用关闭总中断作为对临界资源和临界过程的保护方法,但是这种方法会影响RTOS系统的实时性。
在单片机RTOS中任务控制块(TCB)是最重要的临界资源,控制各个任务的状态。在单片机RTOS中进行任务调度是最重要的临界过程,它根据系统和用户的要求对RTOS的临界资源进行读写操作。
处于对操作系统可靠性的要求,要求对这些临界资源的操作必须是独占地连续地进行,因此关闭总中断是一种最简单的方法,可以确保临界区内的程序连续地被执行。
在临界区中关闭总中断执行程序的时候,任何中断都会被阻塞不能发生,这个中断延迟时间就成了RTOS系统的实时响应时间上限。
因此对于一个RTOS系统,这个中断延迟时间越小越好,最好为零。
(2)STC32G/F是STC最新的32位单片机系列,片上的大量高速设备可以在很多领域得到应用。片上众多的高速设备都需要中断的支持,中断源的数量已经超过60个。基于80251的中断机制,除个别中断外,总中断(EA)一个标志位,控制着这些所有这些中断的使能,如果在临界区中关闭总中断,则所有硬件中断都会被阻塞不能发生,如果这时发生同步/异步通讯中断请求,则可能产生通讯错误。
因此对于STC32G单片机RTOS系统,关闭总中断的时间越小越好,最好任何时候都不关闭总中断。
(3)挑战者x51-UCOS2 V3.10是uC/OS-II在STC32G单片机上移植版。其设计目标是:
在RTOS的所有内核中都不涉及对总中断标志“EA”的操作,在整个单片机运行过程中,挑战者x51系统都不会关闭总中断,实现零中断延迟,适用于对系统实时性及中断响应速度有很高要求的场。
(4)为了展示移植版的特色,判断移植版是否达到移植目标,移植版必须配有一些可以在实际单片机上运行的范例程序。
为了展示挑战者x51移植版是否达到所有内核函数全局不关总中断(零中断延迟)的目标,本文提供了三个范例,这三个范例都使用了定时器0的模式3不可屏蔽中断来作为挑战者x51实时操作系统的节拍器。
第一个范例显示了任何时候不关闭系统中断的效果,第二个范例显示了关闭总中断并不影响定时器0的不可屏蔽中断和RTOS的任务调度,第三个范例显示了在移植版中使用加锁/解锁的临界区保护方法不影响任何中断的发生。