本帖最后由 yk1225 于 2011-10-21 15:46 编辑
论坛各位大神好,小弟初学arm,在阅读 陈明计写的arm上移植的ucos代码的时候有一些疑问如下,求各位解答:
1. __swi命令。
代码如下,这里求教一下__swi(**)这条命令的用法,阅读整个代码是不是说,在编译的时候,调用OS_TASK_SW的时候,会自动产生一个SWI的软中来进行处理的呢。如果是这样,OS_ENTER_CRITICAL及 OS_EXIT_CRITICAL均有对应的SWI终端处理函数,而OS_TASK_SW和_OSStartHighRdy没有对应的中断处理函数(这里说的中断处理函数值得是进入SWI中断后对应的switch分支),而是采用的直接调用的方式,这两个方式是否存在矛盾的呢。
附件中带的是陈明计(周立功单片机公司)编写的移植文件。
于提问相关的代码:
__swi(0x00) void OS_TASK_SW(void); /* 任务级任务切换函数 */
__swi(0x01) void _OSStartHighRdy(void); /* 运行优先级最高的任务 */
__swi(0x02) void OS_ENTER_CRITICAL(void); /* 关中断 */
__swi(0x03) void OS_EXIT_CRITICAL(void); /* 开中断 */ |