嵌入式系统教案(7-ARM7操作系统).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统教案(7-ARM7操作系统).doc

————————————————————————————— 教  案 课程题目 DSP及ARM技术 专题题目 ARM技术 第七讲  移植μC/OS-II到ARM7 授课教员 王金洪 授课单位 研究六室  第七讲 移植μC/OS-II到ARM7 一、教学目的、要求 使学员掌握移植一个操作系统到不同架构的微处理器的一般方法。掌握以μC/OS-II移植到ARM7为例所要修改的文件和注意事项。 二、教学重点、难点 重点:以μC/OS-II移植到ARM7为例所要修改的文件和注意事项。 难点:以μC/OS-II移植到ARM7为例所要修改的文件和注意事项。 三、课堂讲授设计 采用PowerPoint课件讲授。 四、讲授内容 (一)μC/OS-II μC/OS-II是一个完整、可移植、可固化及可剪裁的占先式实时多任务内核。μC/OS-II用ANSI C语言编写,包含一小部分汇编代码,使之可以供不同架构的微处理器使用。 (二)移植规划 1、编译器的选择 针对ARM处理器核的C语言编译器有很多,如SDT、ADS、IAR、TASKING和GCC。GCC虽然支持广泛,很多开发套件使用它作为编译器,与ADS比较其编译效率较低,这对充分发挥芯片性能很不利,所以最终使用ADS编译程序和调试。 2、任务模块的取舍 ARM7处理器核具有用户、系统、管理、中止、未定义、中断和快中断7种模式,其中除用户模式外,其他均为特权模式。关于ARM7处理器核的详细情况由第3章可知,管理、中止、未定义、中断和快中断与相应异常相联系,任务使用这些模式不太适合。而系统模式除了是特权模式外,其他与用户模式一样,因而可选的给任务使用的模式只有用户模式和系统模式。为了尽量减少任务代码错误对整个程序的影响,缺省的任务模式定为用户模式,可选为系统模式,同时提供接口使任务可以在这两种模式间切换。 3、支持的指令集 带T变量的ARM7处理器核具有两个指令集:标准32位ARM指令集和16位Thumb指令集,两种指令集有不同的应用范围。为了最大限度地支持芯片特性,任务应当可以使用任意一个指令集并可以自由切换,而且不同的任务应当可以使用不同的指令集,这次移植的代码已经实现了这一点。 (三)移植μC/OS-II 1、移植μC/OS-II简介 (1)对移植者的要求 对目标体系结构要有很深的了解; 对OS(操作系统)原理要有较深入的了解; 对所使用的编译器要有较深入的了解; 对需要移植的操作系统要有相当的了解; 对具体使用的芯片也要有一定的了解。 μC/OS-II中要移植的部分见表7.1。 (2)不需要OS_CPU_A.ASM的条件 可以直接使用C语言开关中断; 可以直接使用C语言编写中断服务程序; 可以直接使用C语言操作堆栈指针; 可以直接使用C语言保存CPU的所有寄存器。 同时支持以上4点的C语言编译器几乎不存在。 (3)中断服务程序的处理 IRQ.inc文件中定义了一个汇编宏,是μC/OS-II为ARM7通用的中断服务程序的汇编与C函数接口代码。时钟节拍中断服务程序可以通过IRQ.S简化用户代码的编写。 2、关于头文件includes.h和config.h μC/OS-II要求所有.C文件都要包含头文件includes.h,这样使得用户项目中的每个.c文件不用分别去考虑它实际上需要哪些头文件。使用该文件的缺点是它可能会包含一些实际不相关的头文件,这意味着每个文件的编译时间可能会增加,但却增强了代码的可移植性。 本移植中另外增加了一个头文件config.h,要求用户程序必须包含此文件,在config.h文件中包含includes.h和特定的头文件和配置项。而μC/OS-II的系统文件依然只包含includes.h。所有的配置改变包括头文件的增减均在config.h中进行。 3、编写OS_COU.h (1)不依赖于编译器的数据类型 程序清单7.1 不依赖于编译器的数据类型。 (2)使用软中断SWI作底层接口 见表7.2 软中断功能。 见程序清单7.2 SWI服务函数。 (3)OS_STK_GROWTH ADS的C语言编译器仅支持从上往下长,并且必须是满递减堆栈,所以OS_STK_GROWTH的值为1。 见程序清单7.3 定义堆栈增长方向。 4、编写OS_CPU_C.c文件 (1)OSTaskStkInit() 在编写此函数之前,必须先确定任务的堆栈结构。而任务的堆栈结构是与CPU的体系结构、编译器有密切的关联。见图7.1 任务堆栈结构。见程序清单7.4 函数OSTaskStkInit()代码。 OsEnterSum用于保存关中断的次数。 (2)软件中断异常SWI服务程序C语言部分 程序清单

文档评论(0)

xx88606 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档