首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

μC/OS-Ⅱ农田信息采集系统 02

μC/OS-Ⅱ农田信息采集系统 02

农田信息采集系统软件设计实现
3.1 μC/OS-Ⅱ嵌入式操作系统在S3CA4B0X芯片上的移植
在嵌入式操作系统应用中,每个任务都是相互独立的,而且会发生频繁的任务转换,为了使转换的任务能够返回到原来的断点,所以必须得把与转换的任务运行环境密切相关的各种寄存器和变量全部保存起来。这就是定义构造一个用户任务堆栈结构,来保证多任务嵌入式操作系统的正常运行,这种堆栈结构保存了与各个转换的任务运行环境密切相关的所有寄存器变量,而且所有任务的堆栈结构必须完全一致,这样才能用统一的任务切换程序在任务之间作频繁的任务转换,而且还要求不会破坏各个任务的实时运行环境。因此在建立每一个新任务的同时,必须为该任务分配一定的系统资源,包括一个任务栈、一个任务控制块,并将与该任务密切相关的各个变量,比如任务优先级别、堆栈大小等变量保存到任务控制块中,同时还得完全按照任务堆栈初始化结构那样初始化该任务的任务堆栈,然后将任务堆栈的栈顶指针保存到该任务控制块的相应位置。
移植工作主要是改写OS_CPU.H,OS_CPUA.ASM,OS_CPU.C,OS_CFGH,INCLUDES.H,其中与处理器相关的文件为:OS_CPU.H,OS_CP U.C,OS_CPU_.A.ASM。μC/OS-Ⅱ嵌入式操作系统硬件和软件体系结构如图2所示。



在数据类型定义中,S3C44B0X芯片是32位处理器,但是,μC/OS-Ⅱ嵌入式操作系统所处理的仍然是INT16U。用户必须将任务堆栈的数据类型告诉给μC/OS-Ⅱ嵌入式操作系统。这个过程是通过为OS_STK声明正确的C数据类型来完成的。S3C44B0X芯片的堆栈成员是16位的,所以将OS_TsK声明为无符号整形数据类型,定义如下:
tyPedefunsignedlong OS_STK;
堆栈增长方向OS_STK_GROWTH定义如下:
#defin OS_STK_GROWTH左堆栈增长方向为从上往下增长
#define STACKSIZE256/μC/OS-Ⅱ嵌入式操作系统需要先禁止中断访问代码的临界区,并且在访问完毕后重新允许中断。
与所有的实时内核一样,μC/OS-Ⅱ嵌入式操作系统需要先禁止中断再访问代码的临界区,并且在访问完毕后重新允许中断。这就使得μC/OS-Ⅱ嵌入式操作系统能够保护临界区代码免受多任务或中断服务例程的破坏。在S3CA4B0X芯片上是通过两个函数(OS_ENTER_CRITICAL()和OS_EXIT_RITICAL())实现开关中断的。

返回列表