- 1、本文档共121页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
产品开发案例教学_实时操作系统uCOS
产品开发案例教学; 主要内容;?C/OS-II概述;μC/OS-II的各种商业应用;μC/OS-II的特点;如何学习?C/OS-II;为了实现资源共享,一个操作系统必须提供临界段擦作的功能。
μC/OS-Ⅱ为了处理临界段代码需要关中断,处理完毕后再开中断。这使得μC/OS-Ⅱ能够避免同时有其它任务或中断服务进入临界段代码。
μC/OS-Ⅱ定义两个宏(macros)来开关中断。分别是:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。
这两个宏的定义取决于所用的微处理器,每种微处理器都有自己的OS_CPU.H文件。 ;共享资源;任务;任务(task);任务状态;任务的状态-休眠;任务的状态-就绪;任务的状态-运行;任务的状态-ISR;任务的状态-阻塞;状态的转换;任务切换;任务调度;任务间的通讯;任务(task)管理;中断与时钟节拍;时钟节拍 ;OSTickISR ;任务控制块(TCB);任务控制块结构的主要成员;空闲任务和统计任务;任务就绪表(Ready List) ;任务就绪表;任务就绪表;使任务进入就绪态;使任务脱离就绪态;uC/OS -II流程图;?uC/OS-II的启动;μC/OS-Ⅱ初始化 ;μC/OS-Ⅱ初始化后的一些数据结构内容;μC/OS-Ⅱ初始化后的缓冲区 ;OSStart();系统启动后的状态;任务调度(Task Scheduling) ;根据就绪表确定最高优先级;根据就绪表确定最高优先级;源代码中使用了查表法;任务调度器;任务切换;任务级的任务切换OS_TASK_SW();调用OS_TASK_SW()前的数据结构;保存当前CPU寄存器的值;重新装入要运行的任务;任务切换OS_TASK_SW()的代码;创建任务;OSTaskCreate();OSTaskCreate()的实现过程;任务的栈空间;OS_STK *pstk;
pstk = (OS_STK *)malloc(stack_size);
/* 确认malloc()能得到足够的内存空间 */
if (pstk != (OS_STK *)0)
{
Create the task;
}
;栈的增长方向; 中断处理;中断服务程序ISR;OSTickISR ;OSIntEnter();OSIntExit的意义;OSIntExit();OSIntCtxSw(); 时间管理;OSTimeDLY();OSTimeDLY(); 任务间通信与同步; 任务间通信;消息邮箱;一个邮箱可能处于两种状态:
满的状态:邮箱包含一个非空指针型变量;
空的状态:邮箱的内容为空指针NULL;
邮箱的系统服务
OSMboxCreate()
OSMboxPost()
OSMboxPend()
OSMboxAccept()
OSMboxQuery();任务、ISR和消息邮箱的关系;邮箱的系统服务(1);邮箱的系统服务(2);OSMboxCreate()函数
OS_EVENT *CommMbox;
void main(void){
... OSInit(); ... CommMbox = OSMboxCreate((void*)0); ... OSStart();
} ;样例程序;样例程序;第三章、实时操作系统?C/OS-II;所谓移植,就是使一个实时操作系统能够在某个微处理器或微控制器平台上运行;
为了方便移植,?COS-II的大部分代码是用标准的C语言编写的,无须改动。但仍需要用C和汇编语言写一些与处理器相关的代码,这是因为?C/OS-Ⅱ在读写处理器的寄存器时只能通过汇编语言来实现。;处理器的C编译器能产生可重入代码;
在程序中可以打开或者关闭中断;
处理器支持中断,并且能产生定时中断(通常在10—1000Hz之间);
处理器支持能容纳一定量数据的硬件堆栈
处理器有将栈指针和其他CPU寄存器内容保存到栈(或者内存)的指令,以及相应的出栈指令。 ;可重入代码举例;非可重入代码举例;不可重入函数被中断破坏;如何使函数具有可重入性 ;设置OS_CPU.H中与处理器和编译器相关的代码;
用汇编语言编写四个与处理器相关的函数(OS_CPU.ASM);
用C语言编写十个操作系统相关的函数(OS_CPU_C.C)。;OS_CPU.H的修改包括三部分内容:一些符号常量、3个宏定义和10个数据类型的定义;
;设置OS_STK_GROWTH;宏定义
OS_ENTER_CRITICAL():进入临界区(禁止中断);
OS_EXIT_CRITICAL():退出临界区(允许中断);
OS_TASK_SW():当需要任务切换时这个宏被调用。其功能是产生一个软中断,并跳转到中断处理程序OSCtxSw(),去完
文档评论(0)