移植ucos到一个陌生的平台,需要做不少工作,熟悉cpu结构和其所用的编译器是基本工作,初步完成认识这些工作后,就可以对移植ucos所需的函数进行修改编写了;
所选择的平台为开源处理器or1200,硬件平台使用FPGA开发板,具体关于OR1200处理器,可参考openrisc官网;
在os_cpu.c中,主要完成了“使能中断”,“去使能中断”,“堆栈初始化”和“钩子函数”的编写操作;
“使能中断”,“去使能中断”分别使能和关闭系统的中断功能,以便使得处理器进入OS所需要的“临界区”,完成相应的不可打断的操作;
“堆栈初始化”是在任务进行创建时对任务首次进入到CPU中进行运行的环境进行初始化,通用寄存器大部分设置为0,对任务指针进行赋值,并对状态寄存器进行赋值;当然这些值都是放在当前任务的堆栈中,当进行任务调度运行时,从堆栈中读出这些初始值,完成整个cpu的GPR和SPR的赋值;
“钩子函数”,在OS中有很多不推荐进行修改的文件和函数,但是如果确实需要在那些函数中插入自己的用户代码,就需要“钩子函数”了,钩子函数的命名是固定的,并且在相关的函数中已经发生了调用(需要打开宏),当需要掺入代码时,我们就在相应的钩子函数中写入自己的代码,并打开相关的宏即可;
这个文件主要完成移植所需的c文件书写,最重要的要数堆栈初始化函数了,需要好好理解;