uCos-II操作系统在基于Cortex-M3处理器上简要移植步骤

uCos-II操作系统在基于Cortex-M3处理器上简要移植步骤

1、进行uCos-II系统的移植,首先要获取合适的uCos-II操作系统源码,主要有以下文件:

(1).h头文件

2.c源文件

然后将这些文件添加到工程目录之中。

2、修改启动文件的中断向量表:

(0UL),           /* Reserved */

(0UL),           /* Reserved */

(0UL),           /* Reserved */

(0UL),           /* Reserved */

SVC_Handler,

DebugMon_Handler,

(0UL),           /* Reserved */

//PendSV_Handler,

//SysTick_Handler,

    

        OS_CPU_PendSVHandler,

        OS_CPU_SysTickHandler,

将上面的两个中断处理函数进行替换。

3、修改系统时钟处理初始化函数,替换为对应处理器的时钟节拍函数。

OS_CPU_SysTickInit(clk * 10);

具体实现为:

/**********************************************************************************************************

*                                          INITIALIZE SYS TICK

*

* Description: Initialize the SysTick.

*

* Arguments  : cnts          is the number of SysTick counts between two OS tick interrupts.

*

* Note(s)    : 1) This function MUST be called after OSStart() & after processor initialization.

*********************************************************************************************************

*/

void  OS_CPU_SysTickInit (INT32U  cnts)

{

    

    OS_CPU_CM3_NVIC_ST_RELOAD = cnts - 1u;

                                                 /* Set prio of SysTick handler to min prio.           */

    OS_CPU_CM3_NVIC_PRIO_ST   = OS_CPU_CM3_NVIC_PRIO_MIN;

                                                 /* Enable timer.                                      */

    OS_CPU_CM3_NVIC_ST_CTRL  |= OS_CPU_CM3_NVIC_ST_CTRL_CLK_SRC | OS_CPU_CM3_NVIC_ST_CTRL_ENABLE;

                                                 /* Enable timer interrupt.                            */

    OS_CPU_CM3_NVIC_ST_CTRL  |= OS_CPU_CM3_NVIC_ST_CTRL_INTEN;

}

4、创建任务,分配任务优先级、任务堆栈空间,创建信号量、消息邮箱等。

如:

(1)#define Task_Zigbeein_PRIO      10

(2)OS_STK  Task_Zigbeein_STK[Task_Zigbeein_SS];

(3)OSTaskCreateExt(Task_Zigbeein, 

                  (void *)0, 

  &Task_Zigbeein_STK[Task_Zigbeein_SS-1], 

  Task_Zigbeein_PRIO, 

  Task_Zigbeein_PRIO,

  &Task_Zigbeein_STK[0], 

  Task_Zigbeein_SS,

  (void *)0, 

  OS_TASK_OPT_STK_CHK + OS_TASK_OPT_STK_CLR);

4void Task_Zigbeein(void *ppdata)

{

  ppdata = ppdata;

  while(1)

  {  

    OSMboxPend(ZigBee_Mbox, 0, &err); 

    data_process();

    OSSemPost(Screen_Sem);

    OSMboxPostOpt(Gprs_Mbox, NULL, OS_POST_OPT_BROADCAST);

  }

}

你可能感兴趣的:(uCos-II操作系统在基于Cortex-M3处理器上简要移植步骤)