uCOSII移植基础知识

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

uCosII移植基础知识(《uC/OS-II内核分析、移植与驱动程序开发》(陈是知))
所谓移植,就是使一个实时内核能在某个微处理器或微控制器上运行。

要使uc/osII正常运行,处理器必须满足以下要求:
1、处理器的C变压器能产生可重入代码。

(什么是可重入代码了?允许多个进程同时访问
的代码)
2、用C语言就可以打开和关闭中断。

3、处理器支持中断,并且能产生定时中断(频率通常在10至100Hz之间)。

4、处理器能支持容纳一定量的数据存储硬件堆栈(可能是几千字节)。

5、处理器包含将堆栈指针和其他CPU寄存器的内容读出并存储到堆栈或内存中的指令。

“堆”和“栈”是两个完全不同的概念,“堆栈”是我们的一种习惯叫法,如果没有特别说明,我们常说的“堆栈”其实是“栈”。

(那么,“堆”和“栈”到底是什么了?)
有些资料将OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()称为函数,这是不正确的。

因为宏与函数的区别非常明显,而且函数的调用与返回会伴随着对堆栈的操作,而宏仅仅是在编译的过程中进行字符串替换。

在程序的编写过程中能采用宏定义完成时要尽量少采用函数,因为目前很多处理器都有流水线的功能,函数的调用会带来跳转,自然也就打断流水线,造成性能损失。

从移植的角度来说,编写OSTaskStkInit()函数有一定难度,原因在于涉及的知识点较多,工作较细。

编写OSTaskStkInit()函数的第一步就是堆栈的设计,这是移植中的一大难点,大致需要考虑以下因素:
1、CPU自动入栈的寄存器及压栈顺序。

2、需要额外保存哪些寄存器。

3、所采用的编译器对形式参数的传递方法。

4、堆栈的增长方向。

5、堆栈指针是指向下一个可用空间还是指向上次入栈数据。

6、所采用的CPU是否存在系统堆栈。

7、堆栈深度。

堆栈的构建没有绝对的规则或公式,最关键的还是要掌握CPU的结构和uCOSII的原理,灵活应用。

相关文档
最新文档