文档详情

嵌入式操作系统.ppt

发布:2017-06-19约5.17千字共42页下载文档
文本预览下载声明
中国科学技术大学计算机系 嵌入式操作系统 陈香兰 xlanchen@ustc.edu.cn 助教:陈博、李春华 Spring 2009 RTEMS操作系统介绍 提纲 RTEMS概述 RTEMS4.0.0体系结构及模块介绍 RTEMS4.0.0的启动 Hello任务的运行 Printf的实现 RTEMS概述 实时多处理器系统 Real Time Executive for Multiprocessor Systems 开源的无版税的实时嵌入操作系统 最早用于美国国防系统 first=实时导弹系统 =Real Time Executive for Missile Systems then=实时军用系统 =Real Time Executive for Military Systems, 现在由OAR公司负责版本的升级与维护。 在航空航天、军工、民用等领域都有广泛应用。 RTEMS体系结构 RTEMS的源代码结构 阅读各个层次目录下的readme 观察主要目录及文件 EXEC RTEMS操作系统包括一个核心score 核心之上有可以支持两种操作系统封装 符合POSIX标准的 RTEMS 在最上层是SAPI EXEC代码统计信息 SCORE:52166 行 RTEMS:16045 行 POSIX:11345 行 SAPI:3089 行 LIB Libbsp?libbsp.a Libc Libcpu Libmisc Libnetworking Start SCORE中的模块及其依赖关系 Src:15个主要的handler API扩展、user扩展、Workspace、heap、Object、Thread、threadq、Watchdog、tod、Msg、sem、mutex、Isr、interr、chain 一些辅助handler: address、sysstate、state、context、priority等 Mp相关 Cpu:提供CPU相关的一些支持 API和user扩展 不同的操作系统封装具有不同的操作系统语义。有时需要在score的基础上进行扩展。 score提供两种扩展: API扩展和user扩展。 API扩展提供了3个可扩展点 Predriver:系统初始化时,所有驱动初始化前 Postdriver:系统初始化时,所有驱动初始化后 Postswitch:根据需要在线程切换后 User扩展提供了8个扩展点: Thread_create:在线程初始化后执行 Thread_start:在线程启动后 Thread_restart:在线程重启后 Thread_delete:在线程close的后面运行 Thread_switch:上下文切换之前 Thread_begin:在线程入口程序运行前 Thread_exitted:在线程入口程序退出后 Fatal:系统出错时 每次扩展都要提供API/user扩展点集的扩展例程集,组织成一个扩展节点 可以进行多次扩展,所有扩展节点使用链表连接在一起 _API_extensions_List _User_extensions_List 扩展例程的执行 在每个扩展点,遍历API/user扩展链表,对每个扩展节点,找到这个扩展点的例程并执行 Score中的chain 这是score中普遍使用的一种数据结构 类似双向链表 包括一个链表控制结构和若干链表节点 使用chain链表的大多数数据结构都将链表节点数据结构作为第一个元素,以便于通过类型转换方式维护链表 Score的heap 一种动态内存管理方法 堆=一组堆块 所有的空闲堆块组织成一个空闲堆块链表。 分配算法:首次适应算法 分配:分割;回收:合并 初始化 给定内存区域,划分成两个堆块 一个大堆块,基本覆盖全部内存区域 最后8个字节为第二个堆块 为整个堆的尾堆块,永远不会分配出去 Score的workspace Workspace是score的可用内存区域。 Score的各个模块都通过workspace的分配/回收函数使用内存。 Workspace是score heap的一个应用实例。 Workspace的初始化 根据rtems静态配置信息,计算出Workspace的大小 在系统初始化时,辟出相应的物理内存作为Workspace Score的对象管理 17种对象类型 内部线程、RTEMS任务、POSIX线程 其他8种RTEMS对象类型: 定时器、信号量、消息队列、分区、区域、端口、周期、扩展 其他6种POSIX对象类型: 中断、消息队列、互斥量、信号量、条件变量、键值 每个对象类型有专门的对象类型信息结构保存该类对象的基本信息,包括: 类型号 最小和最大id 最多对象个数 有效对象句柄表 对象名字字符串数组、最大对象名字长度 空闲对象链表 等
显示全部
相似文档