东软UCOSII教程08移植

东软UCOSII教程08移植

ID:37326599

大小:1.17 MB

页数:56页

时间:2019-05-21

东软UCOSII教程08移植_第1页
东软UCOSII教程08移植_第2页
东软UCOSII教程08移植_第3页
东软UCOSII教程08移植_第4页
东软UCOSII教程08移植_第5页
资源描述:

《东软UCOSII教程08移植》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、七、七、uCOS-IIuCOS-II的移植的移植东软人才实训中心3Sept.2008Copyright2008ByNeusoftGroup.AllrightsreservedConfidential1第七章:uCOS-II的移植目标:学时:3.0学时本章旨在向学员介绍uC/OS-II的移植,通过本章的学习,学员应该掌握如下知识:教学方法:讲授ppt+上机练�移植uC/OS-II的一般性问题习+点评+案例分析�在MCS-51系统上移植uC/OS-II时的堆栈设计�移植的测试3Sept.2008Confidential7.1uc/os-II操作系统的移植

2、�所谓操作系统的移植,是指使一个实时操作系统能够在某个特定的微处理器平台上运行。�µCOS-II的主要代码都是由标准的C语言写成的,移植方便。但仍需要用汇编语言写一些与处理器相关的代码,这是因为µC/OS-Ⅱ在读写处理器寄存器时只能通过汇编语言来实现。�移植的主要工作是修改部分与处理器硬件相关的代码。3Sept.2008Confidential7.1.1移植uC/OS-II满足的条件�处理器的C编译器能产生可重入代码。�用C程序就可以打开或者关闭中断。�处理器支持中断,并且能产生定时中断(通常在10-100Hz之间)。�处理器支持能够容纳一定量数据的

3、硬件堆栈(可能达几KB)。�处理器有将堆栈指针和其他CPU寄存器存储和读出到堆栈(或者内存)的指令。uC/OS-II是通过硬件中断来实一般情况下应该使用硬件定时器现系统时钟,并在时钟中断服来作为时钟中断源,这个定时器务程序中来处理与时间相关的可以是与微处理器集成在一个芯问题的。因此,用户所选用的片上的,也可以是分立的。处理器必须具有响应中断的能力。3Sept.2008Confidential7.1.2什么是可重入代码�可重入的代码指的是一段代码(比如:一个函数)可以被多个任务同时调用,而不必担心会破坏数据。�也就是说,可重入型函数在任何时候都可以被中

4、断执行,过一段时间以后又可以继续运行,而不会因为在函数中断的时候被其他的任务重新调用,影响函数中的数据。�可重入的代码的实现主要是编程技术,所有嵌入式集成开发环境都能产生可重入的代码。inttemp;例如,任务A和任务B都要调用函数voidSwap(int*x,int*y)Swap(),而该函数又使用了全局变量temp。{于是当任务A调用Swap()函数期间,系统发temp=*x;生了任务切换而使任务B也调用了Swap(),那么任务B将要改变全局变量temp的值,使*x=*y;任务A传递给全局变量temp的值丢失而出现*y=temp;错误。}一般来说

5、,一个可重入函数应该在函数中只使用局部变量,因为函数的局部变量存储在任务的堆栈中,所以可保证不同的任务在调用同一个函数时不会发生冲突。3Sept.2008Confidential7.1.3系统栈与任务栈的关系有些处理器对于堆栈的设置有特殊的要求,即要求堆栈必须设置在一个特定的区域,比如片内RAM。由于片内的RAM极其有限,不可能把应用程序中所有任务的堆栈都设置在片内RAM中,所以就只能把应用程序中各个任务堆栈的内容存放在片外RAM中,而只在片内RAM中设置一个公用的堆栈。CPU系统堆栈被中止运行的任务堆栈……SP……片外的RAM用来存放任务堆栈,片内

6、RAM中是系统的公共堆栈,当系统运行某个任务时,就要把该任务的堆栈映像复制到系统……被运行的任务堆栈堆栈中;而在中止这个任务时,再把系统堆栈中的内容复制回任务堆栈映像中。图7-1系统栈与任务栈的关系3Sept.2008Confidential7.1.4uC/OS-II文件结构图7-2uC/OS-II的文件结构3Sept.2008Confidential7.1.5需要修改的关键函数和宏定义名称函数/宏定义所在文件语言功能OS_CRITICAL_METHOD宏定义OS_CPU.HC语言处理临界段方式选择OS_STK_GROWTH宏定义OS_CPU.HC语

7、言堆栈增长方向OS_ENTER_CRITICAL()宏定义OS_CPU.HC语言进入临界区OS_EXIT_CRITICAL()宏定义OS_CPU.HC语言退出临界区OSStartHighRdy()函数OS_CPU_A.ASM汇编就绪态最高优先级任务运行OSCtxSw()函数OS_CPU_A.ASM汇编任务级任务切换OSIntCtxSw()函数OS_CPU_A.ASM汇编中断级任务切换OSTickISR()函数OS_CPU_A.ASM汇编时钟节拍OSTaskStkInit()函数OS_CPU_C.CC语言任务堆栈初始化表7-1需要修改的关键函数和宏定义

8、3Sept.2008Confidential7.1.6INCLUDES.H�使得项目中的每个.c文件不用分别

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。