uC/OS-II在EP7312上的移植
typedef unsigned int INT16U; /*无符号16位整数 */
typedef signed int INT16S; /*有符号16位整数 */
typedef unsigned long INT32U; /*无符号32位整数 */
typedef
signed long INT32S; /*有符号32位整数 */
typedef float FP32; /*单精度浮点数 */
typedef double FP64; /*双精度浮点数 */
μC/OS-II需要先禁止中断访问代码的临界区,并且在访问完毕后重新允许中断。μC/OS-II定义了两个宏来禁止和允许中断:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。
#define OS_ENTER_CRITICAL() IRQFIQDE
#define IRQFIQDE __asm
{
mrs r0, CPSR;
stmfd sp!, {r0};
orr r0, r0, #NOINT;
msr CPSR_c, r0;
}
#define OS_EXIT_CRITICAL() IRQFIQRE
#define IRQFIQRE __asm
{
ldmfd sp!, {r0};
msr CPSR_c, r0;
}
#endif
(2)编写4个汇编语言函数[OS_CPU_A.S]
μC/OS-II的移植实例要求用户编写4个简单的汇编语言函数:
OSStartHighRdy()
OSCtxSw()
OSIntCtxSw()
UCOS_IRQHandler
详细内容见本刊网络补充版(http://fanwen.oyaya.net收集整理)。
(3)用C语言编写6个与操作系统有关的函数[OS_CPU_C.C]
这6个函数是:
OSTaskStkInit()
OSTaskCreatHook()
OSTaskDelHook()
OSTaskSwHook()
OSTaskStatHook()
OSTaskTickHook()
这6个函数只对OSTaskStkInit()编写代码,后5个函数必须声明,但是内部并没有代码。OSTaskCreate()和OSTaskCreateExt()通过调用OSTaskStkInit()来初始化任务的堆栈结构。这个函数的移植代码,可参考文献[3]。
3 测试、编写驱动和应用程序
《uC/OS-II在EP7312上的移植(第2页)》