嵌入式系统嵌入式系统/ARM技术中的嵌入式实时操作系统技术中的嵌入式实时操作系统μC//OS-II在在
LPC2378上的移植及应用上的移植及应用
0 引言 目前,市场以及院校科研用嵌入式系统产品,如Vxworks,Linux和Windows CE等都已经相当成
熟,提供了有力的开发和调试工具,但有些开发成本昂贵,周期较长,而μC/OS-Ⅱ是一种多任务实时源代码的
公开操作系统,内核精简,移植性较强,非常适合用于一些小型控制和实验系统的开发。 1 操作系统及
CPU介绍 μC/OS-Ⅱ是基于优先级的占先式实时多任务操作系统,包含有任务管理、时间管理、任务间同
步通信(信号量,邮箱,消息队列)和内存管理等功能。绝大部分代码用C语言写成,极少部分与处理器密切相关
的代码用汇编语言编写,便于移植。作为一个源代码公开的实时操作系统,最多可
0 引言引言
目前,市场以及院校科研用嵌入式系统产品,如Vxworks,Linux和Windows CE等都已经相当成熟,提供了有力的开发和
调试工具,但有些开发成本昂贵,周期较长,而μC/OS-Ⅱ是一种多任务实时源代码的公开操作系统,内核精简,移植性较
强,非常适合用于一些小型控制和实验系统的开发。
1 操作系统及操作系统及CPU介绍介绍
μC/OS-Ⅱ是基于优先级的占先式实时多任务操作系统,包含有任务管理、时间管理、任务间同步通信(信号量,邮箱,消
息队列)和内存管理等功能。绝大部分代码用C语言写成,极少部分与处理器密切相关的代码用汇编语言编写,便于移植。作
为一个源代码公开的实时操作系统,最多可以管理64个任务,并支持信号量、邮箱、消息队列等多种进程间的通信机制,同
时用户可以根据需求对内核中的功能模块进行裁剪。
LPC2378是一款基于ARM7TDMI-S内核的嵌入式精简指令集微控制器,包含了1个支持仿真的ARM7TDMI-SCPU,适用
于为了各种目的而需要进行串行通信的应用。该体系机构支持用户、软中断、中断、管理、中止、未定义、系统等7种处理器
模式,ARM7TDMI-S处理器内部有31个通用32位寄存器,6个状态寄存器。LPC2378包含了1个10/100 EthernetMAC,USB
2.0全速接口,4个UART接口,2路CAN通道,1个SPI接口,2个同步串行端口(SSP),3个I2C接口,1个I2S接口和
MiniBus(MiniBus仅用于LPC2378,它是8位数据/16位地址并行的总线)。下面以μC/OS-Ⅱ在工业级芯片LPC2378上的移植
为例,通过分析操作系统内核来介绍μC/OS-Ⅱ操作系统移植的一般方法和过程及相关问题的解决。
2 μC//OS-Ⅱ内核结构及工作原理内核结构及工作原理
2..1 内核基本结构内核基本结构
图1是接近μC/OS-Ⅱ的简单内核体系结构图,内核保留给上层应用的接口有3个,分别是软保护、ITC和DSR。由于μC/
OS-Ⅱ操作系统内核是可剥夺型实时多任务内核,因此最高优先级的任务一旦就绪,总能得到CPU的使用权。如果是中断服务
子程序使一个高优先级的任务进入就绪态,则中断完成时,中断了的任务被挂起,优先级高的任务开始运行。
2..2 μC//OS-Ⅱ内核基本工作原理内核基本工作原理
多任务系统中,操作系统内核负责管理各个任务,或者说为每个任务分配CPU,并且负责各任务之间的通信和协同,任
务切换是内核提供的基本服务。μC/OS-Ⅱ多任务操作系统的基本工作原理如下:
(1)在使用μC/OS-Ⅱ的所有服务之前,必须调用初始化函数OSInit(),初始化所有的变量和数据结构,同时创建空闲任务
OSTaskIdle(),并赋予最低的优先级别和永远的就绪态,同时完成任务控制块(TCB)的初始化、TCB优先级表的初始化、TCB
链表的初始化和事件控制块(ECB)链表的初始化。
(2)调用OSTaskCreate()或OSTaskCreateExt()创建至少一个新任务,并给任务赋予一定的优先级,而且它们有各自的一
套CPU寄存器和自己的栈空间。
(3)调用OSSTART()函数,通过从任务就绪表中找出用户建立的优先级别最高的任务控制块,然后开始多任务调度。