《一种基于arm核的嵌入式操作系统的设计实现》由会员分享,可在线阅读,更多相关《一种基于arm核的嵌入式操作系统的设计实现(4页珍藏版)》请在金锄头文库上搜索。
1、第 卷第 期 计算机应用与软件 年 月 一种基于 核的嵌入式操作系统的设计实现葛 强 王宜怀 曹振华( 苏州大学计算机科学与技术学院 江苏 苏州 )收稿日期: 。葛强, 硕士生, 主研领域: 嵌入式系统及应用。摘 要 分析了当前嵌入式实时操作系统的特点, 提出并实现了一个简洁高效具有通用性的嵌入式操作系统设计方案。利用 将系统分为内核空间和用户空间, 成功地解决了系统和应用运行在一个特权级别而造成无法保护内核空间和外设互斥访问的问题。在调度方式上采用可变优先级的调度策略, 满足了系统对稳定性和实时性的需求。关键词 嵌入式实时操作系统 内存管理单元 ( , , , , ) , ( ) 引 言进入
2、 年代以来, 嵌入式系统的规模和复杂程度不断加强, 传统的嵌入式软件设计模式已经不能适应。传统的嵌入式系统结构和功能比较单一, 是一种前后台的结构。这种应用程序的主体是一个无限循环, 循环中调用相应函数来完成各种操作, 这部分是后台; 而中断服务程序处理异步事件称之为前台。时间相关性很强的关键操作( ) 一定是靠中断服务来保证的。因为中断服务提供的信息一直要等到后台程序走到该处理这个信息这一步时才能得到相应处理。因此该类系统实时性差 。开发人员也会因为考虑不同功能模块间的完整性和正确性显得力不从心。而建立在操作系统上的嵌入式系统将应用和系统管理进行了分割, 使得开发更加容易, 各个模块更加清晰
3、, 程序的可维护性好。更重要的是, 可以多任务并发执行, 以完成一个复杂系统的需求。现在有很多优秀的嵌入式操作系统, 对于大型系统可以选择 、 、 等; 小型的操作系统主要有 、 等。小型操作系统的最大问题是用户空间和系统空间在同一层次, 对系统区没有保护, 这样应用程序可以轻易修改系统的地址空间, 不能满足一些对系统安全要求较高且系统资源有限的小型嵌入式系统的需求 , 。鉴于此, 设计一个有一定通用性的采用分页内存管理的通用实时操作系统很有必要。 ( ) 是一个基于 核的嵌入式实时操作系统, 其结合了 核的实时性和 核中关于虚存的设计, 充分利用 核的内存管理单元( ) 将系统和应用分离,
4、同时将硬件管理和操作系统核分离, 使得内核更加小巧, 更具移植性, 保证了可以在修改很少代码的前提下将该操作系统移植到 核的不同目标板上。该操作系统现在已经在一个工业现场数据采集系统上成功应用。 系统的架构操作系统一般是由以下几个模块组成的, 每个模块实现一定的功能, 且模块相互作用构成了一个完整的系统( 如图 所示) 。系统初始化模块 它是操作系统能正确运行的第一段代码, 主要完成系统加电后的内存初始化、 底层硬件的初始化、 中断向量的重定向等一系列初始化工作。存储管理模块 它主要对系统内存进行划分, 分配每个任务的堆栈, 建立系统页表和每个任务页表, 最后启动 。本系统并没有采用 那样的动
5、态的任务, 而是像 一样采用静态的任务 。系统建立一个固定的空闲任务链表, 将固第 期 葛强等: 一种基于 核的嵌入式操作系统的设计实现 定数目的任务控制块( ) 挂在上面, 编写应用程序时调用申请函数 ( ) , 以建立一个任务并分配任务控制块。任务调度模块 它是整个操作系统中最灵活的一个部分,实现方式多种多样。可以说操作系统的实时性很大程度上取决于任务调度模块的实现方式。 通过将任务划分为实时任务和非实时任务, 使得实时任务可以更快地投入运行, 缩短了等待时间。实时任务处理对响应时间有严格要求的事件, 比如与外设通信的数据包的接收和发送。非实时任务一般处理对响应时间要求相对宽松的任务, 比
6、如对数据包的字段进行分析。中断和异常处理模块 它是每个操作系统必不可少的部分。 在基于 核的处理器上实现, 所以异常种类有:数据中止、 快速中断请求、 中断请求、 预取中止和软中断( ) 。本系统实现了软中断和 中断两个中断服务例程,其他例程设计成死循环的形式, 以防止系统受到意外异常的影响。在设计中断处理函数时, 采用可重入的方式, 允许中断嵌套, 加快了中断响应。图 系统结构示意图 主要模块的设计与实现 存储管理模块在采用虚存的操作系统中一般虚拟地址到物理地址之间的映射是固定的, 可以消除对流水线的扰乱并增加 的使用效率。在 的设计中, 系统区域使用固定的映射, 考虑到 核的特点, 采用了
7、两级映射, 分别是 主页表和 子页表。 页表项( 个数为 ) 全部建立。 子页表则根据实际情况部分建立 。有一点例外, 由于外设区域空间连续所以采用的是单级页表, 即 页表中从 项到 项是单级页表, 一页大小为 。在 主页表上为用户区域留出一个地址“ 窗口” ( 第 项) , 通过将不同任务的 子页表写入 主页表的“ 窗口” 内完成任务切换。由于 主页表一页的控制范围是 空间,所以任务的大小就限制在 之内, 能够满足小型嵌入式系统的需求。该设计方案避免了每个任务都要包含一套完整的页表, 节省了空间, 同样省去了建立全部页表的时间开销。内核区域在内存的物理地址是 到 。把内核区域映射到虚存的 和 两个地址, 可以解决系统引导时没有打开 前程序的执行问题。不会因为开启虚存功能而导致程序执行不连续。程序的中断向量在地址 , 所以要虚拟重新映射到 。这样一块物理地址就映射到两个不同虚拟地址空间上了。存储器组织如图所示, 而表 是虚拟和物理内存的对应表。图 虚拟存储器组织图表 虚存和物理内存的对应表区域 页大小虚存基址页数物理基址权限 策略内核 特权可读写直写共享 均可读写直写任务 可根据物理内存安排均可读写直写外设 特权可读写直写在 中通过区域登记表来记录不同的区域, 其结构为: ; 区域在虚存的起址 ; 虚存页的大小( 单位 ) ; 区域中页的数目 ; 区域的访问权限 ; 区域的