第七章 在51单片机上移植uc/os-2

来源:互联网 发布:软件开发规范文档 编辑:程序博客网 时间:2024/05/17 22:42

第七章 51单片机上移植uc/os-2

7.1 uc/os-2移植的一般性问题

7.1.1可重入函数

(1)多个任务调用同一个函数,其中的全局变量丢失产生错误。

(2)一般来说,一个可重入函数只使用局部变量,局部变量存储在堆栈中,如果一定要用,必须做保护。

7.1.2时钟节拍的产生

uc/os-2是通过硬件中断来实现系统时钟,并在时钟中断服务程序中来处理与时间相关的问题的。

7.1.3任务堆栈的设计:处理器支持一定数量的硬件堆栈,能够读写操作。

(1)堆栈的格式,因为生长方式不同。

(2)系统堆栈与任务堆栈的关系。堆栈必须设置在一个特定区域内:51要求堆栈必须在片内RAM,只能把应用程序中的任务堆栈的内容存放在片外RAM中,片内PAM中设置一个公用的堆栈

(3)片外RAM中用来存放任务堆栈内容的区域叫做任务堆栈映像,而片内PAM中的公用堆栈叫做系统堆栈。

7.251系列单片机上移植uc/os-2

一般用C语言编写。

7.2.1改写文件OS_CPU.H

(1)堆栈的增长方向:51是从低地址向高地址增长->OS_STK_GROWTH1

(2)定义临界段的宏

(3)定义任务切换宏

(4)定义数据类型

7.2.2任务堆栈的设计

151堆栈指针SP总是先加1再存数据,所以用的时候先减一。

(2)任务切换时,计算任务堆栈映像的最低地址空间用来存放用户堆栈的长度。

7.2.3文件OS_CPU_C.C的改写

改写任务堆栈初始化函数OSTaskStkInit(),使用西永设置时钟中断,添加定时器的初始化程序。

(1)改写任务堆栈初始化程序

(2)系统时钟初始化

7.2.4注意事项

(1)不要多修改。

(2)Keil中 重入函数有标注reentrant关键字

7.3一些应用

0 0
原创粉丝点击