- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式操作系统笔记.
嵌入式操作系统1.定义:以应用为中心,以计算机技术为基础、软硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。2.特点:嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余。嵌入式系统的软件要求: 1、软件要求固化 2、可靠性高 3、许多应用中要求软件具有实时性。嵌入式系统开发需要专门的开发工具和环境。浓缩就是精华,麻雀虽小,五脏俱全可配置性可移植性可靠性高实时性高嵌入式系统通常是面向特定应用的。3.Boot Loader:引导加载程序是系统加电后运行的第一段软件代码。整个系统的加载启动任务完全由 Boot Loader 来完成。系统在上电或复位时通常都从地址 0处开始执行,而在这个地址处安排的通常就是系统的 Boot Loader 程序。不同的嵌入式板需要不同的Boot Loader。4.Boot Loader执行步骤:分为stage1和stage2stage1:硬件设备初始化。为加载Boot Loader 的stage2 准备RAM 空间。拷贝Boot Loader 的stage2 到RAM 空间中。设置好堆栈。跳转到 stage2 的 C 入口点。 stage2:初始化本阶段要使用到的硬件设备。检测系统内存映射(memory map)。将kernel 映像和根文件系统映像从flash 上读到RAM 空间中。为内核设置启动参数。调用内核。5.任务间的通信:信箱队列管道6.任务间的同步:信号量-semaphore事件组-event group信号-signaluc/os7.移植:uC/OS-Ⅱ的移植并不复杂,只要编写4个汇编语言的函数、6个C函数再定义3个宏和1个常量,这些宏和函数都非常简单,其中的5个C函数甚至只需声明不必包含代码。中断级任务切换的底层实现任务级任务切换的底层实现时钟节拍的产生和处理中断的相关处理部分8.任务的存储结构:任务程序代码(函数):任务的执行部分任务堆栈:用来保存任务的工作环境,满足任务切换和响应中断时保存CPU寄存器中的内容及任务调用其他函数时的需要任务控制块:记录任务的各个属性9.任务状态:睡眠、就绪、运行、等待、中断服务。10.状态切换函数:11. uC/OS-II预定义了两个系统任务:空闲任务63和统计任务62空闲任务OSTaskIdle():每个应用程序必须使用的统计任务OSTaskStat():应用程序可以根据实际需求来选择使用的堆栈的增长方向是随系统所使用的处理器不同而不同的。使用函数OSTaskCreate()创建任务时,要注意所使用的处理器所支持的堆栈增长方向13.系统提供任务堆栈初始化函数:OSTaskStkInit()。通常用户不会直接接触到这个函数,该函数由任务创建函数OSTaskCreate()调用参数如下:OS_STK *OSTaskStkInit(void (*task ) (void *pd),void * pdato,OS_STK *ptos,INT16U opt);14.任务控制块结构的主要成员:15.uC/OS-II用两条链表管理任务控制块空任务块链表:其中所有任务控制块还未分配给任务任务块链表:其中所有任务控制块已分配给任务16.当应用程序调用函数OSTaskCreate()创建一个任务时,这个函数会调用系统函数OSTCBInit()来为任务控制块进行初始化INT8U OSTCBInit(INT8U prio, //任务优先级别OS_STK * ptos,//任务堆栈栈顶指针OS_STK *pbos,//任务堆栈栈底指针INT16U stk_size,//任务的标识符void *pext,//任务堆栈的长度INT16U opt//任务控制块的选择项);17.uC/OS-II系统配置文件OS_CFG.H中定义了LOWEST_PRIO(最低优先级别的常数),系统总是把最低优先级LOWEST_PRIO赋给空闲任务18.用户任务的优先级要由用户在创建一个任务时显示地定义。19.创建任务实质上是创建一个任务控制块,并通过任务控制块把任务代码和任务堆栈关联起来形成一个完整的任务uC/OS-II有两个用来创建任务的函数:OSTaskCreate()和OSTaskCreateExt()OSTaskCreateExt()是前者的扩展,并提供了一些附加功能20.当一个任务请求信号量时,如果希望在信号量无效时准许任务不进入等待状态而继续运行,则调用OSSemAccept()INT16U OSSemAccept(OS_EVENT *pevent,//信号量的指针);21.被中止任务的任务控制块指针就存放在全局变量OSTCBCur中
文档评论(0)