嵌入式系统RTEOSμCOSII的移植共103页

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
移植规划 μC/OS-II的移植 嵌入式系统的初始化
移植规划---概述
所谓“移植”,就是使一个实时内核能在其它 的微处理器或微控制器上运行。
尽管大部分μC/OS-II的代码是用C语言编写的, 但是在编写与处理器硬件相关的代码时还是不得不 使用汇编语言。
移植的源自文库要工作就是编写这些与处理器硬件相关 的代码。
100Hz之间) 处理器支持能够容纳一定量数据的硬件堆栈(通常是几
千字节) 处理器有将堆栈指针和其他CPU寄存器的内容存储和读
出到堆栈(或者内存)的指令
什么是可重入代码
可重入的代码指的是一段可以被多个任 务同时调用,而不必担心会破坏数据的 代码(比如:一个函数)
即:可重入型函数在任何时候都可以被 中断执行,过一段时间以后又可以继续 运行,而不会因为在函数中断的时候被 其他的任务重新调用,而影响函数中的 数据
除了用户模式外,其他模式均可视为特权模式
移植规划(续)
任务模式的取舍
ARM7处理器核具有上述七种模式,其中除用户 模式外其它均为特权模式。其中管理、中止、未定义、 中断和快中断模式与相应异常相联系,任务使用这些 模式不太适合。
系统模式除了是特权模式外,其它与用户模式一样, 因而可选为任务使用的模式只有用户模式和系统模式。
可重入代码举例
程序1:可重入型函数 void swap(int *x, int *y) { int temp; temp=*x; *x=*y; *y=temp; }
非可重入代码举例
程序2:非可重入型函数 int temp; void swap(int *x, int *y) { temp=*x; *x=*y; *y=temp; }
为了尽量减少任务代码错误对整个程序的影响,缺 省的任务模式定为用户模式,可选为系统模式,同时 提供接口使任务可以在这两种模式间切换。
移植规划(续)
支持的指令集
带T变量的ARM7处理器核具有两个指令集: 标准32位ARM指令集 16位Thumb指令集
两种指令集有不同的应用范围。 为了最大限度地支持芯片的特性,任务应当可以使 用任意一个指令集并可以自由切换,而且不同的任务 应当可以使用不同的指令集
概述
要移植一个操作系统到一个特定的CPU体系结构 上并不是一件很容易的事情,它对移植者有以下要求:
1. 对目标体系结构要有很深了解;
2.要移对参植O考S一A原RM个公理司操要的作《有A系R较M体统深系到结入构一的》个文了档特解定;的CPU体系结构 上并不是一件很容易的事情,它对移植者有以下要求:
31.参对考《所目嵌使标入式用 体实的系时操编结作译构系统器要μ要有C/O有很S-I较深I 》深了一入解书 的;了解; 2. 对OS原理要有较深入的了解; 43.. 对对需所参要使考移 用ADS植的软件的编自操译带的作器编系要译器统有和要较连接有深器相入手册当的的了了解解;; 4. 对需要移植的操作系统要有相当的了解; 55.. 对对具具参考体体《使 使嵌入用用式的的实时芯芯操片片作系也也统要要μC一一/OS定定-II的的》了了一书解解。。
不可重入函数被中断破坏
如何使函数具有可重入性
使Swap()函数具有可重入性的条件:
把Temp定义为局部变量 调用Swap()函数之前关中断,调用
因为第4点的影响是全局性的,它决定移植代码的框架和功能。 参考具所体以芯片重的点数介据绍手第册4和点使。用手册
主要内容
移植规划 μC/OS-II的移植 嵌入式系统的初始化
C/OS-II的文件结构
μC/OS-II移植 ——μC/OS-II硬件软件体系结构
应用程序 (用户代码)
μC/OS-II (与处理器无关代码)
ARM处理器有7种操作模式: 用户模式(usr) - 正常的程序执行模式 快速中断模式(fiq) - 支持高速数据传输或通道处理 中断模式(irq) - 用于通用中断处理 管理员模式(svc) - 操作系统的保护模式. 中止模式(abt) - 支持虚拟内存和/或内存保护等异常 系统模式(sys) - 支持操作系统的特殊用户模式(运行操作系统任务) 未定义模式(und) - 支持硬件协处理器的软件仿真
移植μC/OS-II
概述
要移植一个操作系统到一个特定的CPU体系结 构并不是一件很容易的事情,它对移植者有以下 要求:
1. 对目标体系结构要有很深了解; 2. 对OS原理要有较深入的了解; 3. 对所使用的编译器要有较深入的了解; 4. 对需要移植的操作系统要有相当的了解; 5. 对具体使用的芯片也要一定的了解
目前在国内最流行的是ADS、SDT和GCC SDT和ADS均为ARM公司自己开发,ADS为SDT的升级 版,以后ARM公司不再支持SDT,故不选择SDT。GCC 虽然支持广泛,很多开发套件使用它作为编译器,但是与 ADS比较其编译效率较低,这对充分发挥芯片性能不利 考虑使用ADS编译程序和调试
ARM的工作模式
操作系统的移植大体可以分为两个层次: 跨体系结构的移植 针对特定处理器的移植
移植规划
在移植前针对所使用的微处理器进 行规划,主要有以下几个方面的考 虑:
编译器的选择 任务模式的选择 支持的指令集
移植规划(续)
编译器的选择
针对ARM处理器核的C语言编译器有很多,如SDT、 ADS、IAR、TASKING和GCC等
嵌入式系统RTEOSμCOSII的移植
11、不为五斗米折腰。 12、芳菊开林耀,青松冠岩列。怀此 贞秀姿 ,卓为 霜下杰 。
13、归去来兮,田蜀将芜胡不归。 14、酒能祛百虑,菊为制颓龄。 15、春蚕收长丝,秋熟靡王税。
嵌入式系统 —RTEOS μC/OS-II 的移植
2006年6月9日
主要内容
OS_CORE.c OS_FLAG.c
...
μC/OS-II配置 (与应用相关)
OS_CFG.H INCLUDES.H
μC/OS-II移植 (与处理器相关代码)
软件
硬件
CPU
定时器
移植时需要 编写的代码
用于产生 系统时钟
移植C/OS-II满足的条件
处理器的C编译器能产生可重入代码 在程序中可以打开或者关闭中断 处理器支持中断,并且能产生定时中断(通常在10—
相关文档
最新文档