欢迎来到天天文库
浏览记录
ID:36229991
大小:149.07 KB
页数:5页
时间:2019-05-07
《嵌入式操作系统笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式操作系统1.定义:以应用为中心,以计算机技术为基础、软硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。2.特点:¡嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余。¡嵌入式系统的软件要求:1、软件要求固化2、可靠性高3、许多应用中要求软件具有实时性。¡嵌入式系统开发需要专门的开发工具和环境。¡浓缩就是精华,麻雀虽小,五脏俱全¡可配置性¡可移植性¡可靠性高¡实时性高¡嵌入式系统通常是面向特定应用的。3.BootLoader:l引导加载程序是系统加电后运行的第一段软件代码。l整个系统的加载
2、启动任务完全由BootLoader来完成。l系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。l不同的嵌入式板需要不同的BootLoader。4.BootLoader执行步骤:分为stage1和stage2stage1:¡硬件设备初始化。¡为加载BootLoader的stage2准备RAM空间。¡拷贝BootLoader的stage2到RAM空间中。¡设置好堆栈。¡跳转到stage2的C入口点。stage2:¡初始化本阶段要使用到的硬件设备。¡检测系统
3、内存映射(memorymap)。¡将kernel映像和根文件系统映像从flash上读到RAM空间中。¡为内核设置启动参数。¡调用内核。5.任务间的通信:1.信箱2.队列3.管道6.任务间的同步:1.信号量-semaphore2.事件组-eventgroup3.信号-signaluc/os7.移植:uC/OS-Ⅱ的移植并不复杂,只要编写4个汇编语言的函数、6个C函数再定义3个宏和1个常量,这些宏和函数都非常简单,其中的5个C函数甚至只需声明不必包含代码。n中断级任务切换的底层实现n任务级任务切换的底层实现n时钟节拍的产生和处
4、理n中断的相关处理部分8.任务的存储结构:¡任务程序代码(函数):任务的执行部分¡任务堆栈:用来保存任务的工作环境,满足任务切换和响应中断时保存CPU寄存器中的内容及任务调用其他函数时的需要¡任务控制块:记录任务的各个属性9.任务状态:睡眠、就绪、运行、等待、中断服务。10.状态切换函数:11.uC/OS-II预定义了两个系统任务:空闲任务63和统计任务62l空闲任务OSTaskIdle():每个应用程序必须使用的l统计任务OSTaskStat():应用程序可以根据实际需求来选择使用的12.堆栈的增长方向是随系统所使用的处
5、理器不同而不同的。使用函数OSTaskCreate()创建任务时,要注意所使用的处理器所支持的堆栈增长方向13.系统提供任务堆栈初始化函数:OSTaskStkInit()。通常用户不会直接接触到这个函数,该函数由任务创建函数OSTaskCreate()调用参数如下:OS_STK*OSTaskStkInit(void(*task)(void*pd),void*pdato,OS_STK*ptos,INT16Uopt);14.任务控制块结构的主要成员:15.uC/OS-II用两条链表管理任务控制块n空任务块链表:其中所有任务控制
6、块还未分配给任务n任务块链表:其中所有任务控制块已分配给任务16.当应用程序调用函数OSTaskCreate()创建一个任务时,这个函数会调用系统函数OSTCBInit()来为任务控制块进行初始化INT8UOSTCBInit(INT8Uprio,//任务优先级别OS_STK*ptos,//任务堆栈栈顶指针OS_STK*pbos,//任务堆栈栈底指针INT16Ustk_size,//任务的标识符void*pext,//任务堆栈的长度INT16Uopt//任务控制块的选择项);17.uC/OS-II系统配置文件OS_CFG.H
7、中定义了LOWEST_PRIO(最低优先级别的常数),系统总是把最低优先级LOWEST_PRIO赋给空闲任务18.用户任务的优先级要由用户在创建一个任务时显示地定义。19.创建任务实质上是创建一个任务控制块,并通过任务控制块把任务代码和任务堆栈关联起来形成一个完整的任务uC/OS-II有两个用来创建任务的函数:OSTaskCreate()和OSTaskCreateExt()OSTaskCreateExt()是前者的扩展,并提供了一些附加功能20.当一个任务请求信号量时,如果希望在信号量无效时准许任务不进入等待状态而继续运行
8、,则调用OSSemAccept()INT16UOSSemAccept(OS_EVENT*pevent,//信号量的指针);21.被中止任务的任务控制块指针就存放在全局变量OSTCBCur中
此文档下载收益归作者所有