嵌入式系统教案(7-arm7操作系统)

嵌入式系统教案(7-arm7操作系统)

ID:15885554

大小:52.50 KB

页数:9页

时间:2018-08-06

嵌入式系统教案(7-arm7操作系统)_第1页
嵌入式系统教案(7-arm7操作系统)_第2页
嵌入式系统教案(7-arm7操作系统)_第3页
嵌入式系统教案(7-arm7操作系统)_第4页
嵌入式系统教案(7-arm7操作系统)_第5页
资源描述:

《嵌入式系统教案(7-arm7操作系统)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、—————————————————————————————教  案课程题目DSP及ARM技术专题题目ARM技术第七讲  移植μC/OS-II到ARM7授课教员王金洪授课单位研究六室 8第七讲 移植μC/OS-II到ARM7一、教学目的、要求使学员掌握移植一个操作系统到不同架构的微处理器的一般方法。掌握以μC/OS-II移植到ARM7为例所要修改的文件和注意事项。二、教学重点、难点重点:以μC/OS-II移植到ARM7为例所要修改的文件和注意事项。难点:以μC/OS-II移植到ARM7为例所要修改的文件和注意事项。三、课堂讲授设计采用PowerPoint课件讲授。四、讲授内容(一)μC/OS

2、-IIμC/OS-II是一个完整、可移植、可固化及可剪裁的占先式实时多任务内核。μC/OS-II用ANSIC语言编写,包含一小部分汇编代码,使之可以供不同架构的微处理器使用。(二)移植规划1、编译器的选择针对ARM处理器核的C语言编译器有很多,如SDT、ADS、IAR、TASKING和GCC。GCC虽然支持广泛,很多开发套件使用它作为编译器,与ADS比较其编译效率较低,这对充分发挥芯片性能很不利,所以最终使用ADS编译程序和调试。2、任务模块的取舍ARM7备注8处理器核具有用户、系统、管理、中止、未定义、中断和快中断7种模式,其中除用户模式外,其他均为特权模式。关于ARM7处理器核的详细情

3、况由第3章可知,管理、中止、未定义、中断和快中断与相应异常相联系,任务使用这些模式不太适合。而系统模式除了是特权模式外,其他与用户模式一样,因而可选的给任务使用的模式只有用户模式和系统模式。为了尽量减少任务代码错误对整个程序的影响,缺省的任务模式定为用户模式,可选为系统模式,同时提供接口使任务可以在这两种模式间切换。3、支持的指令集带T变量的ARM7处理器核具有两个指令集:标准32位ARM指令集和16位Thumb指令集,两种指令集有不同的应用范围。为了最大限度地支持芯片特性,任务应当可以使用任意一个指令集并可以自由切换,而且不同的任务应当可以使用不同的指令集,这次移植的代码已经实现了这一点

4、。(三)移植μC/OS-II1、移植μC/OS-II简介(1)对移植者的要求l对目标体系结构要有很深的了解;l对OS(操作系统)原理要有较深入的了解;l对所使用的编译器要有较深入的了解;l对需要移植的操作系统要有相当的了解;l对具体使用的芯片也要有一定的了解。μC/OS-II中要移植的部分见表7.1。(2)不需要OS_CPU_A.ASM的条件l可以直接使用C语言开关中断;l可以直接使用C语言编写中断服务程序;l可以直接使用C语言操作堆栈指针;l可以直接使用C语言保存CPU的所有寄存器。同时支持以上4点的C语言编译器几乎不存在。(3)中断服务程序的处理IRQ.inc文件中定义了一个汇编宏,是

5、μC/OS-II8为ARM7通用的中断服务程序的汇编与C函数接口代码。时钟节拍中断服务程序可以通过IRQ.S简化用户代码的编写。2、关于头文件includes.h和config.hμC/OS-II要求所有.C文件都要包含头文件includes.h,这样使得用户项目中的每个.c文件不用分别去考虑它实际上需要哪些头文件。使用该文件的缺点是它可能会包含一些实际不相关的头文件,这意味着每个文件的编译时间可能会增加,但却增强了代码的可移植性。本移植中另外增加了一个头文件config.h,要求用户程序必须包含此文件,在config.h文件中包含includes.h和特定的头文件和配置项。而μC/OS-

6、II的系统文件依然只包含includes.h。所有的配置改变包括头文件的增减均在config.h中进行。3、编写OS_COU.h(1)不依赖于编译器的数据类型程序清单7.1不依赖于编译器的数据类型。(2)使用软中断SWI作底层接口见表7.2软中断功能。见程序清单7.2SWI服务函数。(3)OS_STK_GROWTHADS的C语言编译器仅支持从上往下长,并且必须是满递减堆栈,所以OS_STK_GROWTH的值为1。见程序清单7.3定义堆栈增长方向。4、编写OS_CPU_C.c文件(1)OSTaskStkInit()在编写此函数之前,必须先确定任务的堆栈结构。而任务的堆栈结构是与CPU的体系结

7、构、编译器有密切的关联。见图7.1任务堆栈结构。见程序清单7.4函数OSTaskStkInit()代码。OsEnterSum用于保存关中断的次数。(2)软件中断异常SWI服务程序C语言部分程序清单7.5软中断代码的C语言部分,其中参数SWI_Num为功能号,而Regs为指向堆栈中保存寄存器的值的位置。8(3)OS_ENTER_CRITICAL()—关中断和OS_EXIT_CRITICAL()—开中断(4)OSStartH

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

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

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