- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式自整版
肖磊
任务的状态及其转换关系
μC/OS_II 把任务的优先权分为64个优先级别,每一个级别都用一个数字来表示。数字0表示任务的优先级别最高,数字越大则表示任务的优先级别越低
任务控制块结构的主要成员
Typedef struct os_tcb {
OS_STK *OSTCBStkPtr; //指向任务堆栈栈顶的指针
?……
? struct os_tcb *OSTCBNext;//指向后一个任务控制块的指针
struct os_tcb *OSTCBPrev; //指向前一个任务控制块的指针
? ……
INT16U OSTCBDly; //任务等待的时限(节拍数)
INT8U OSTCBStat; //任务的当前状态标志
INT8U OSTCBPrio; //任务的优先级别
……
} OS_TCB; //变量
下列程序实现把优先级别为prio的任务置为就绪状态
OSRdyGrp | =OSMapTbl[prio3];
OSRdyTbl[prio3] | = OSMapTbl[prio0x07];
重点:prio中的Y(prio右移3位)得下标,[]得对应二进制码,与或,将就绪表中相应-bit位置
prio中的X(prio与0x07相与)得下标[]得对应二进制码,对应的相或,将就绪表中相应X-bit置
下列程序实现将一个优先级别为prio的任务脱离就绪状态
if((OSRdyTbl[prio3]=~OSMapTbl[prio0x07])==0)
OSRdyGrp=~OSMapTbl[prio3];
重点:取prio中的X(任务优先级prio与0x07相与),查数组OSMapTbl[]的值取反,和prio中的Y(prio右移3位),查表OSRdyTbl的值相与得出结果赋值给OSRdyTbl[pro3],若OSRdyTbl[pro3]为零,则取反OSRdyTbl[pro3],与OSRdyGrp相与后赋值到OSRdyGrp,即将任务就绪中的相应位置0,使优先级别号为prio的任务脱离就绪状态。
下列代码实现从任务就绪表中获取优先级别最高的就绪任务
y = OSUnMapTal[OSRdyGrp]; //D5、D4、D3位
x = OSUnMapTal[OSRdyTbl[y]]; //D2、D1、D0位
prio = (y3)+x; //优先级别
重点:首先扫描组变量OSRdyGrp找到OSRdyGrp的最低位确定位号=Y扫面OSRdyTbl[y]找到OSRdyTbl[y]的最低位确定位号=X优先级别prio=Y*3+X.
嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用程序4个部分组成。
“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。
冯·诺依曼结构与哈佛结构的特点与区别。
(1)·诺依曼结构的特点
1)程序和数据储存在同一个储存空间,指向同一个储存器的不同物理地址;
2采用统一的地址和数据总线;
3处理器执行指令时,先取后执行
(2)
1)程序和数据储存在储存空间独立,独立访问;
2)四套总线:程序数据的数据总线地址总线;
3处理器执行指令时,取执行
区别:两者的程序和数据存储空间,方式,总线不同,·诺依曼结构,哈佛结构采用独立存储空间,分离的数据和地址总线,提高了执行速度,使数据吞吐率提高了一倍。
类别 CISC RISC 指令系统 指令数量很多,通常少于 有些指令执行时间很长,如整块的存储器内容;或将多个寄存器的内容赋值带存储器较长的执行时间的指令长度长度可变,长度,通常为字节方式方式多样 可以对存储器和寄存器算数和逻辑运算对寄存器进行算数和逻辑操作,oad和Store体系用优化编译器生成的目标编码程序优化编译技术,生成高效的目标代码程序)对,高对低)
RTOS对响应时间有非常严格的要求,当某一个外部事件或请求发生时,相应的任务必须在规定的时间内完成相应的处理。RTOS可以分为硬实时和软实时两种情形。
按照系统对响应时间的敏感程度,EOS(嵌入式操作系统RTOS(Real Time Operating Systems ,实时操作系统)和非实时操作系统两大类。
设备驱动层(BSP)把嵌入式操作系统与具体的硬件平台隔离开来。
所有的EOS都有一个内核(kernel),内核是系统当中的一个组件,它包含了任务管理、存储管理、输入/输出(I/O)设备管理和文件系统管理四个功能模块。
按照软件的体系结构,EOS可以分为单体结构、分层结构和微内核结构三大类。
嵌入式Linux操作系统和μC/OS-II都属于单体内核系统。
MS-DOS属于分层结构。
VxWorks属于微内核结构。
文档评论(0)