将TIzigbee开源协议栈中的OS操作系统移植出来.docVIP

将TIzigbee开源协议栈中的OS操作系统移植出来.doc

  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文档。上传文档
查看更多
将TIzigbee开源协议栈中的OS操作系统移植出来

将TIzigbee开源协议栈中的OS操作系统移植出来本人从事zigbee的研发工作已接有多年,在这几年的技术之路上收获了很多,也失去了很多。几年之后,离开了zigbee研发岗位,决定写点什么作为纪念,另外也希望给后来的学习zigbee的同盟们留下一点“砖块”。 不复杂的小系统一般设计成如图1所示的样子,这种系统一般称作为前后台系统或超循环系统。整个应用程序(整个工程)是一个无限循环,对于应用中的具体操作既是在这个无限循环中不停地调用各个相应的函数来实现,这部分可以叫做后台行为。后台也叫做任务级。前台也叫中断级。要求实时响应的操作一般由中断服务来保证。如果前后台程序需要修改,原先整体的循环会被打乱的凌乱不堪,循环的时序也会受到影响,从而也就不能保证修改后的程序继续能够正常无误工作。这样就给中大型程序的升级,应用的增加,工程的管理带来的不可避免的麻烦,最坏的情况就是一个程序的升级相当于一个工程的重新编写。 ?????????????????????????图?1 此时就需要引进操作系统了,有了操作系统后,整个工程可以被划分成许多小的模块(任务)互相协调合作共同完成整个项目,程序修改或者升级时只需要修改对应的任务即可完成,不必改动整个工程,这是笔者认为在使用操作系统时最显而易见的好处。另外,使用操作系统使得程序的各个功能模块化,利用各种调度方法(不同操作系统可能不同)实现整个工程,从而也使得大型的程序、杂乱无章的循环变的尽然有序,程序运行更加安全可靠。现在在嵌入式领域被广泛关注和认同的操作系统有uCOS,linux,windowsCE,UCLINUX,等等,据笔者了解(才疏学浅),应用于8位单片机并得到了实践证明的暂时听说了UCOS以及RTX51就是KEIL公司针对51开发的一个小型RTOS。RTOS只提供了库接口函数,对于学者和开发者并不开源,所以使用者和探讨者的人数相对于UCOS并不多,UCOS是一款开源的实时操作系统,?UCOS一直受到学者和开发者的青睐,但是由于任务中加入ucos操作系统后编译所占用的code区以及XDATA区增大较多,不适合移植到小容量的单片机上使用。笔者有幸于2008年接触到TI公司应用与zigbee协议栈的一款非抢占操作系统,下面将其叫做LTOS(little??TI??OS??or??LiTie?OS),由于它应用简单方便,,开发项目稳定可靠,便于理解和学习,使得操作系统初学者可以很容易的对操作系统整体有一个全面的了解,所以笔者决定将该操作系统移植出来,放入STC12C60S2单片机中使用。记录下该文档抛砖引玉,使更多人能更快地理解该操作系统并得到的该小型操作系统更好的发展和应用。 一:对TI操作系统初步分析 ?1.1任务、事件、消息 刚拿到TI-MAC1.2.1时被该程序搞蒙了,TI-MAC1.2.1的程序竟然是基于他们自己编写的OS操作系统运行的。说到LTOS操作系统,不得不说说他的任务、事件和消息机制。据笔者理解,任务就是程序编写员将预实现的功能分成不同的模块,这些模块之间分工明确并且相互合作,共同完成程序员预完成的某个项目的整个功能;事件是这些任务中要处理的某个小功能的口令,比如老师说张三你站起来或坐下,张三听到站起来就站起来,听到坐下就坐下,同样道理,某个任务得到处理器后,先判断自己的事件是什么,如果是URAT_Writer则任务知道是串口写;而如果是LED_STOP,则任务知道是小灯停;消息是任务之间相互通信的方式,任务之间的数据传输一是通过消息来实现,二是通过延时设置任务来完成。任务内部消息就是一个系统事件。 在进入LTOS系统前,先利用osal_init_system()等初始化程序将操作系统初始化,主要功能就是内存分配函数的初始化、定时器的初始化以及为任务的加入。任务初始化时将任务按预先设定分配了不同的优先级,LTOS系统按照赋值的优先级顺序从高到底不停的扫描这些任务,查看他们是否被设置了事件,如果该任务被设置了事件,则操作系统将马上进入这个该任务对应的pFnEventProcessor(处理任务函数)中执行该任务中的事件。 初始化和任务加入完成之后就开始进入任务调度函数osalNextActiveTask(?void?)。进入任务调度函数首先扫描定时器和串口,查看定时器和串口的变化,然后利用osalNextActiveTask()函数查看任务列表中是否有被设置了事件的任务。以下是该函数的原型: osalTaskRec_t?*osalNextActiveTask(?void?) { ??osalTaskRec_t?*srchTask; ??//?Start?at?the?beginning ??srchTask?=?tasksHead; ??//?Wh

文档评论(0)

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

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

1亿VIP精品文档

相关文档