m16c62在uc-os-ii嵌入式系统中的应用.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文档。上传文档
查看更多
M16C62在uC/OS-II嵌入式系统中的应用 导语:?M16C62在uC/OS-II嵌入式系统中的应用 【摘要】μC/OS-Ⅱ是一个源码公开的实时嵌入式操作系统,它的特点在于公开的源代码,很强的移植性,占先式多任务,每个任务有单独的栈,中断管理及很强的稳定性与可靠性等,目前越来越受到实时嵌入式系统设计者的关注,本文详细讲述了如何把uC/OS-II操作系统移植到M16C62单片机中,并给出了以M16C62单片机为核心处理器构成的一个实时多任务系统的设计方案。 【关键词】嵌入式操作系统、 uC/OS-II、 M16C62 单片机、 实时、 多任务前言 随着微电子技术和网络的发展,人们对网络的认识日益深入。网络终端产品也越来越受到人们的关注,嵌入式操作系统的应用也得到了前所未有的发展,人们对嵌入式的研究也有了长足的进步。基于某个操作系统的实时、多任务系统的设计合应用成为单片机应用的新的发展趋势。 uC/OS是一个公开源代码的嵌入式操作系统,uC/OS-II是由uC/OS V1.1版升级而来,在原来版本的基础上,uC/OS-II有了许多新功能,如:内存管理;在任务建立、删除、任务切换、时钟节拍切换处理过程中,允许用户调用自定义的函数;支持任务控制块(TCB)功能扩展;能效验各堆栈使用情况;以及其它一些新功能【2】。M16C62单片机是三菱公司在90年代末推出的新一代16位单片机,是目前应用最广泛的16位单片机之一。M16C族单片机融合了基于寄存器和基于存储器型两种结构的优点,从而能够实现类似RISC的高速处理性能。M16C62单片机具有超低功耗、极强的抗干扰能力和很高的C语言编程效率等特点,片内集成了10位A/D转换器、DMA控制器、异步通信通道、定时器等丰富的周边功能电路模块,非常适合应用在小型实时、多任务、嵌入式系统中【1】。把uC/OS-II移植到M16C62单片机中,就可以构成一个实时多任务应用系统。下面就来谈谈如何把uC/OS-II移植到M16C62单片机中,并以此设计一个实时多任务系统。1、uC/OS-II的移植 uC/OS-II采用完全占先式的实时内核,最多可以管理56个任务,每个任务对应一个不同的优先级,因而,uC/OS-II操作系统并不支持时间片轮转调度法。但是全部UC/OS-II的函数调用与服务的执行时间是可知的,也就是,uC/OS-II系统服务的执行时间不依赖于应用程序任务的多少。另外,uC/OS-II中每个任务都有自己单独的栈,每个栈的大小可以根据应用程序的需要进行分配,这样压低了系统对RAM的需求;在中断管理方面,uC/OS-II中的中断可以使正在执行的任务挂起,如果优先级更高的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,uC/OS-II的中断嵌套可达255层。 uC/OS-II的源码大部分是用可移植性很强的ANSI C 写的。只是和微处理器有关的很小一部分代码是用汇编写的,这样把uC/OS-II移植到MC16C62中就变得相对容易很多,主要是要修改和处理器有关的代码,如:OS-CPU.H、OS-CPU-A.ASM、OS-CPU-C.C。(1)、OS-CUP.H头文件 OS_CUP.H头文件主要是定义和处理器有关的数据类型,在M16C62中的数据类型包括无符号整型、有符号整型、无符号字符型、有符号字符型等。因此,OS_CPU.H头文件对这些类型进行全新的定义。除了和处理器有关的数据类型定义外,在OS-CUP.H中还作了有关中断禁止、中断允许、堆栈的增长方向等一些简单宏的定义。(2)、OS-CPU-A.ASM文件 在OS-CPU-A.ASM文件中包含四个汇编语言的函数:OSStartHighRdy()、OSCtxsw()、OSIntCtxsw()、OSTickISR()。在uC/OS-II中处于就绪态的任务的堆栈结构,看起来和刚中断的情形是一样的。要想运行最高优先级任务,移植要做的是就是将所有处理器的寄存器按顺序从任务堆栈中恢复出来,并且通过一条中断返回语句来实现任务的切换。因而,OSStartHighRdy()就是使要恢复的任务堆栈指针指到任务控制块的0偏址的内存单元中。也就是要把保存在任务堆栈中的数据以及CPU寄存器,如R0、R1、R2、R3、A0、A1、SB和FB返回到系统当前的寄存器中,并把当前堆栈指针指到PC指针的位置。 在uC/OS-II中任务的切换问题是通过发软件中断命令或依靠处理器执行陷阱指令来完成的。但是中断服务例程、陷阱或异常处理例程的向量地址必须指向OSCtxSw()【1】。在M16C62单片机中可以通过定义软件中断0来完成任务的切

文档评论(0)

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

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

1亿VIP精品文档

相关文档