μC/OS-II在EP7312上的移植

[11-20 17:13:18]   来源:http://www.88dzw.com  嵌入式系统   阅读:8983

文章摘要:μC/OS-II的移植包括以下几个部分。(1) 设置与编译器有关的代码[OS_CPU.H]在不同的处理器中有不同的字长,所以必须定义一系列数据类型以确保移植的正确性。另外,在μC/OS-II中,不使用C的short、int和long等数据类型,这些都是和编译器相关的。下面就是μC/OS-II定义的一部分数据类型。typedef unsigned char BOOLEAN;typedef unsigned char INT8U; /*无符号8位整数 */typedef signed char INT8S; /*有符号8位整数 */typedef unsigned int INT16U; /*无

μC/OS-II在EP7312上的移植,标签:嵌入式系统开发,嵌入式开发,http://www.88dzw.com

  μC/OS-II的移植包括以下几个部分。

(1)  设置与编译器有关的代码[OS_CPU.H]

  在不同的处理器中有不同的字长,所以必须定义一系列数据类型以确保移植的正确性。另外,在μC/OS-II中,不使用C的short、int和long等数据类型,这些都是和编译器相关的。下面就是μC/OS-II定义的一部分数据类型。

typedef unsigned char BOOLEAN;
typedef unsigned char INT8U; /*无符号8位整数 */
typedef signed char INT8S; /*有符号8位整数 */
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://www.88dzw.com)。

(3) 用C语言编写6个与操作系统有关的函数[OS_CPU_C.C]

  这6个函数是:

  OSTaskStkInit()
  OSTaskCreatHook()
  OSTaskDelHook()
  OSTaskSwHook()
  OSTaskStatHook()
  OSTaskTickHook()

  这6个函数只对OSTaskStkInit()编写代码,后5个函数必须声明,但是内部并没有代码。OSTaskCreate()和OSTaskCreateExt()通过调用OSTaskStkInit()来初始化任务的堆栈结构。这个函数的移植代码,可参考文献[3]。

3  测试、编写驱动和应用程序

  做完以上工作以后,就要测试移植的是否正确。测试一个μC/OS-II实时内核并不复杂,就是让这个实时内核在自己的目标板上跑起来。开始时,可以运行一些简单的任务和时钟节拍中断任务,如果调试成功就可以在上面添加应用程序。

  μC/OS-II移植完成以后,就要在这个实时内核之上编写接口驱动程序。由于嵌入式操作系统体积更小,功能更强,且快速、稳定,更具有针对性,因此不像其它操作系统那样,对系统的所有接口设备都需要驱动、管理、调度和监视。由于嵌入式产品是针对特殊的用途而设计的,有很强的专一性,因此,在编写驱动程序时内容更精简,更具有稳定性,编写出的驱动模块更小。编写驱动程序应完成以下基本功能:①对设备初始化和释放;②把数据从内核传送到硬件和从硬件读取数据;③读取应用程序传送给设备文件的数据和回送应用程序请求的数据;④检测和处理设备出现的错误。实现了以上功能以后,一个嵌入式操作系统就基本构成了。

  完成了μC/OS-II的移植和驱动程序的编写以后,利用操作系统提供的API函数编写应用程序,调用μC/OS-II中与应用程序相关的系统服务。调试通过后,固化到目标板上,这个嵌入式应用软件就完成了。

上一页  [1] [2] 


Tag:嵌入式系统嵌入式系统开发,嵌入式开发嵌入式系统