- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
μC/OS-II 的移植 7.1 概述 7.1.1 移植条件 7.1.2 移植步骤 ** 作者:四川师范大学成都学院 屈召贵 QQUser目录 Main.C Main.H Includes.H OS_Cfg.H μC/OS-II Source目录 OS_CORE.C OS_FLAG.C OS_MBOX.C OS_MEM.C OS_MUTEX.C OS_Q.C OS_SEM.C OS_TASK.C OS_TIME.C OS_TMR.C uCOS_II.H μC/OS-II Ports目录Cortex M3 OS_CPU_C.C OS_CPU_A.ASM OS_CPU.H BSP(板级支持包) Startup.S Target.C Target.H ARM Cortex-M3 目标板 与处理器无关操作系统内核代码 与处理器有关需要移植代码 开发板相关代码 内核文件 移植的部分 用户代码 板级代码 主程序 ARM Cortex-M3的寄存器模型 LM3S系列单片机采用ARM Cortex-M3内核;在移植之前,先简述可见寄存器模型。 ARM Cortex-M3总共有20个寄存器,每个都是32位宽度。 R0-R12 通用寄存器,可存储数据也可存放指针 R13 用于存放堆栈指针。实际上有两个堆栈指针SP_process(进程堆栈)和 SP_main(主堆栈),但任何时候只有一个是可见的。在本移植中, SP_process用于任务代码(即线程模式),SP_main用于异常代码 (即处理模式)。 R14 连接寄存器LR。在执行分支链接指令(BL)或带交换的分支链接指 令(BLX)时,存储来自PC的返回地址;也用作异常的返回。 R15 程序计数寄存器PC。用于指示当前正被执行的指令。根据不同的指 令,每执行一条,PC增加2或增加4。 状态 中断 控制寄存器 移植μC/OS-II到处理器上必须满足以下条件 (1)处理器的C编译器能产生可重入代码 μC/OS是多任务内核,函数可能会被多个任务调用,代码的重入性是保证完成多任务的基础。可重入代码指的是可被多个体任务同时调用,而不会破坏数据的一段代码,或者说代码具有在执行过程中打断后再次被调用的能力。 举例说明: Swap1函数代码: Int temp; void swap1(int *x,int *y) { temp=*x; *x=*y; *y=temp; } 举例说明: Swap2函数代码: void swap2(int *x,int *y) { int temp; temp=*x; *x=*y; *y=temp; } 可重入 不可重入 编译器还得支持,MDK开 发环境,可生成可重入代码 (2)用C语言可打开和关闭中断 ARM处理器核包含一个CPSR寄存器,该寄存器包括一个全局的中断禁止位,控制它便可打开和关闭中断。 PRIMASK (3)处理器支持中断并且能产生定时中断 μC/OS-II通过处理器产生的定时器中断来实现多任务之间的调度。ARM Cortex-M3的处理器都支持中断并能产生定时器中断,专门有一个SysTick定时器来实现。 (4)处理器支持能够容纳一定量数据的硬件堆栈(通常需要几十KByte字节) 比如AT98C51处理器,内部只有128字节的RAM,要运行,需外扩RAM。CM3的芯片,内部可多达128KByte的容量,因此可直接使用。 (5)处理器有将堆栈指针和其他CPU寄存器读出和存储到堆栈(或内存)的指令 μC/OS-II进行任务调度时,会把当前任务的CPU寄存器存到此任务的堆栈中,然后,再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。所以,寄存器的入栈和出栈是μC/OS-II多任务调度的基础。 运行TCP、UDP需要的内存会更大,通常要100K左右 所谓移植,就是使一个实时操作系统能够在某个微处理器平台上或微控制器平台上运行。由μC/OS-II的文件系统可知,在移植过程中,用户需要关注的就是与处理器相关的代码。这部分包括一个头文件OS_CPU.H、一个汇编文件O
您可能关注的文档
最近下载
- 《信用管理》模拟试题及参考答案(2套).pdf
- 2024年03月西南民族大学2024年公开招聘教师笔试笔试历年典型考题及考点研判与答案解析.docx
- YY_T 0003-2023 手动病床标准.pdf
- 人教版七年级英语上册期末总复习语法知识点专项练习100题( 含答案).pdf
- 精品解析:2020-2021学年浙江省金华市义乌市教科版五年级上册期中考试科学试卷(原卷版).docx VIP
- 优秀销售培训ppt课件.pptx
- DB44∕T 857-2011 新建房屋白蚁预防技术规程(广东省).pdf
- ChatGPT+MindShow 三分钟搞定PPT制作.pdf VIP
- 分块式定子焊线机.pdf VIP
- 2021年最新四川省拟任县处级党政领导职务政治理论水平任职资格考试第八套试题.doc VIP
文档评论(0)