一,移植UCOSII操作系统的CPU前提条件
1,处理器的C编译器能产生可重入型的代码,如果不行的话,那么就不能在任务之间随意的切换,因为当你切换到别的任务的时候,该任务在这个函数的数据就会被破坏。
2,处理器CPU支持中断,并能产生定时中断
3,用C语言就可以开关中断,进行任务切换
4,处理器CPU能够支持一定数量的数据存储硬件堆栈,也就是栈
5,处理器有将堆栈指针以及其他的CPU的寄存器的内容读出,并存储到堆栈或者内存中去的指令。任务切换的时候,需要将当前的CPU指针保存到刚刚执行的任务当中。然后切换到优先级更高的任务当中。
二,UCOSII实际移植的文件:
UCOSII的移植实例就是要求用户编写4个简单的汇编语言函数,如果编译器支持插入行汇编代码就可以将所有的与处理器相关的代码放置到OS_CPU_C.c里面种,就不需要适用汇编文件。
(1)OSStartHighRdy(); //使得最高优先级的任务运行的函数
OSStart()函数调用OSStartHighRdy()来使得就绪太任务中最高优先级的任务开始运行
void OSStartHighRdy()
{
调用用户定义的OSTaskSwHook();
OSRunning = TRUE;
//得到将要恢复运行的任务的堆栈指针。
stack pointer = OSTcbHighRdy->OSTCBStkPtr;
//从新的堆栈中恢复处理器的所有的寄存器,就是把刚刚切换的堆栈保存到别的地方当中
//执行中断返回,然后跳转PC指针到别的地方中去。
}