slide1
Download
Skip this Video
Download Presentation
嵌入式系统软件

Loading in 2 Seconds...

play fullscreen
1 / 188

嵌入式系统软件 - PowerPoint PPT Presentation


  • 116 Views
  • Uploaded on

嵌入式系统软件. 1. 嵌入式操作系统. 嵌入式操作系统是个集合 , 而且是个无限集合 监控程序 常规操作系统 ( 红外线  紫外线 ) 一维和多维. 嵌入式操作系统常常有实时要求 早期 : 嵌入式操作系统 = 实时操作系统 近期 : 1) 手持计算机和掌上计算机的出现 ; 2)CPU 速度的提高 ; 3) 常规操作系统增加实时进程调度的支持 , 如 POSIX.4  嵌入式操作系统 <> 实时操作系统. 许多嵌入式操作系统的内核是微内核结构 许多嵌入式操作系统都不带磁盘 根本不支持文件系统

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 嵌入式系统软件' - camila


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
1. 嵌入式操作系统
  • 嵌入式操作系统是个集合,而且是个无限集合
    • 监控程序常规操作系统

(红外线  紫外线)

    • 一维和多维
slide3
嵌入式操作系统常常有实时要求
    • 早期:嵌入式操作系统 = 实时操作系统
    • 近期:
      • 1)手持计算机和掌上计算机的出现;
      • 2)CPU速度的提高;
      • 3)常规操作系统增加实时进程调度的支持,如POSIX.4

嵌入式操作系统 <>实时操作系统

slide4
许多嵌入式操作系统的内核是微内核结构
  • 许多嵌入式操作系统都不带磁盘
    • 根本不支持文件系统
    • 结构上为了设备驱动而支持文件系统,但不支持文件系统的文件存储功能
slide5
许多嵌入式操作系统不采用存储管理技术,即不支持虚拟存储技术许多嵌入式操作系统不采用存储管理技术,即不支持虚拟存储技术
  • 许多嵌入式操作系统不划分“系统空间”和“用户空间”
    • 操作系统的“内核”与外围应用程序之间不再有物理的边界;
    • 系统中所谓“进程”实际上全都是内核线程
      • 静态连接、系统调用、进程调度/切换
slide6
对任何一个应用程序做细微的修改,都得重新生成整个系统,并且“下载”之;对任何一个应用程序做细微的修改,都得重新生成整个系统,并且“下载”之;
  • 系统调用的界面太庞大;
  • 共享变量的访问,需要谨慎对待;
  • 把通用操作系统上的应用移植过来需考虑“可重入”的问题;
slide7
不分系统空间和用户空间 <>必须静态连接
    • 如DOS、CP/M的INT21
  • 不分系统空间和用户空间 <>不能用页面映射技术
    • 但只用于不同进程之间,而非不同空间之间
  • 即使采用了存储管理,基本上都不采用页面交换技术
  • 重启动技术(watch dog)
2 rtos
2. RTOS
  • 是否实时
    • 一方面是多大程度上充分发挥硬件潜力,即综合速度快慢的问题;
    • 另一方面同时也是反映的速度在多大的程度上得到保证的问题
slide9
中断延迟(Interrupt Latency)
    • 中断不可嵌套
    • LINUX的Bottom Half
    • 中断可嵌套:优先级中断
      • 大多微处理器不支持;
      • LINUX不支持;
      • UNIX支持
    • 与指令集有关
    • DMA操作有关
    • 保证系统调用的原子性有关
slide10
调度延迟(Scheduling Latency)
    • 中断处理程序 进程处理
    • 一般调度算法(Round Robin)不能及时选中
    • 基于优先级调度算法,一般能及时选中
      • 如果目标进程优先级低呢?
    • 可剥夺调度和不可剥夺调度
      • LINUX是属于什么调度?

Linux既不是完全的可剥夺,也不是完全的不可剥夺

slide11
上下文切换延迟(Context Switch Latency)
    • 大小取决于CPU和操作系统
    • 采用MMU > 不采用MMU
slide12
只要发生调度,就能选中目标进程吗?
    • 根据时间片的耗用调整优先级
    • 拉开距离,分等级
  • 对实时进程而言,“应该没有问题”不够。
  • 是否可以不用中断、也不用调度,回到最简单的“监控程序”?
slide13
实时性简介
  • 对于什么是实时系统,POSIX 1003.b作了这样的定义:指系统能够在限定的响应时间内提供所需水平的服务
  • 实时系统根据其对于实时性要求的不同,可以分为软实时和硬实时两种类型
  • 一个计算机系统为了提供对于实时性的支持,它的操作系统必须对于CPU和其他资源进行有效的调度和管理,即实时调度
slide14
实时调度分类
  • 各种实时操作系统的实时调度算法从调度策略上可以分为如下三种类别:基于优先级的调度算法(Priority-driven scheduling-PD)、基于CPU使用比例的共享式的调度算法(Share-driven scheduling-SD)、以及基于时间的进程调度算法(Time-driven scheduling-TD)
  • 从调度方式上来讲可以分为:可抢占、不可抢占;从时间片来分:固定时间片、可变时间片
slide15
实时性改造
  • 对操作系统实时性的扩展可以从两方面进行:向外扩展和向上扩展
  • 向外扩展是从范围上扩展,让实时系统支持的范围更广,支持的设备更多
  • 向上扩展是扩充操作系统内核,从功能上扩充系统的实时处理
os rtos
实时多任务OS-RTOS
  • 单片机
    • 无os
    • 主程序
  • RTOS
    • 资源包装
    • API
    • 可移植(只要1-4%)
slide17
实时系统
  • 在实时计算中,系统的正确性不仅仅依赖于计算的逻辑结果而且依赖于结果产生的时间
  • 响应时间限定
  • 可预知
slide18
实时操作系统与I/O
  • 实时操作系统还需要有效的中断处理能力来处理异步事件和高效的I/O能力来处理有严格时间限制的数据收发应用。就是:
  • ●系统应该有在事先定义的时间范围内识别和处理离散的事件的能力。
  • ●系统能够处理和存储控制系统所需要的大量的数据。
slide19
周期性的系统
  • 非周期性系统
  • 硬实时系统
    • 灾难后果
  • 软实时系统
    • 性能下降
slide20
RTOS与分时系统
  • 事件响应时间限定
  • 事件随机到达
  • 系统可确定性
slide21
Rtos的历史
  • 1)早早期的监控系统
    • 系统init
    • 时钟
    • 简单的任务调度
  • 2)专用实时OS
    • 依赖于特定硬件
    • 移植性不好
  • 3)通用RTOS
slide22
嵌入式软件开发平台
  • RTOS
  • 标准化
  • 可移植
  • 设备独立
rtos struct
RTOS基本struct
  • 实时多任务core
    • 任务管理:多任务和基于优先级的任务调度
    • 定时器:系统的实时时钟服务,以及各个定时任务的调入等
    • Mem:管理系统的内存资源,如DRAM,ROM,FLASHRAM等
    • 资源管理:管理系统的各种资源如系统的各种设备,端口,中断等;
    • 事件和消息管理:管理各种系统级的事件,如实时中断响应,各种异常等;任务间同步和通信(信号量和邮箱等)以及各种系统消息和应用程序之间的通讯
slide24
RTOS的系统调用
  • 90%以上的设备独立
  • RTOS的任务---分时系统Process
slide25
实时带来的问题1-时间
  • 在实时系统中最基本的是系统应该能够提供对时间正确性进行指定的方法
  • 系统提供一种指定时间尺度的方法
  • 通用系统的延时不能满足
slide26
问题2-实时系统的结构
  • 实时系统的体系结构必须满足:
  • ●高运算速度
  • ●高速的中断处理
  • ●高的I/O吞吐率
  • ●合理的处理器和I/O设备的拓扑连接
  • ●高速可靠的和有时间约束的通信
  • ●体系结构支持的出错处理,
  • ●体系结构支持的调度
  • ●体系结构支持的操作系统,
  • ●体系结构支持的实时语言特性。
slide27
问题3-容错与分布
  • 稳定性
  • 容错
  • 分布式应用
slide28
问题4-实时通讯
  • ●逻辑正确
  • ●要有确定的延迟时间
slide29
问题5-其他问题
  • ●时间特性的指定和确正,这点与实际系统设计相同。
  • ●实时的调度理论。由于实时系统应用的特殊性以往通用系统中以大吞吐量为目标的调度算法必须改进以适应实时应用的需要。主要要求是满足时间的正确性,然后提供高度动态的,满足在线需求的,适应性的实时调度。
  • ●实时操作系统的设计和实现。在设计上首要目标是提供保证实时性的方法,包括一系列的经典问题的针对实时系统的解决方案。实现上要求操作系统的低开销,而且必须保证内核以及其他关键的可重入性。
slide30
●实时的编程语言和设计方法。在编程语言级完成或提供实时应用所需要的方法。●实时的编程语言和设计方法。在编程语言级完成或提供实时应用所需要的方法。
  • 比如象Ada语言,FORTH语言。
  • ●分布式的实时数据库。
  • ●系统的容错。
  • ●实时时钟的同步。
  • ●实时系统中的人工智能
slide31
与通用计算机区别
  • 通用:
    • 方便用户管理计算机资源
    • 追求系统资源最大利用率
  • RTOS
    • 调度的实时性
    • 响应时间可确定性
    • 高可靠性
slide32
性能衡量标准
  • 对传统的通用系统:
    • 大的系统吞吐量
    • 合理的响应速度
    • 对每个系统用户相对公平的进行计算资源的分配
  • 实时系统
    • 实时的数据吞吐取代了以吞吐量为目标的标准。
    • 对硬实时应用的优先响应取代了对每个用户的恰当的反应速度。
    • 系统的计算资源和其他外设资源必须优先满足实时应用的要求
slide33
RTOS的衡量指标
  • ●系统响应时间(System response time ):系统发出处理要求到系统给出应答信号的时间;
  • ●任务切换时间(Context-switching time):任务之间切换而使用的时间;
  • ●中断延迟(Interrupt latency time ) :是计算机接收到中断信号到操作系统作出响应,并完成换道转入中断服务程序的时间;
slide34
RTOS的任务调度机制
  • 决定了多任务能力与实时性
  • 通用模式:
    • 调度策略:优先级调度、时间片轮转调度
    • 调度方式:抢占式、不可抢占式、选择可抢占式
    • 时间片:定长时间片与变长时间片
  • RTOS一般使用抢占式任务调度
slide35
时间限定的任务调度算法
  • 速度单调算法
    • 工作由定期任务组织
    • 任务时间定长度
    • 使用频率高的优先级高
  • 时限驱动算法
    • 工作定期与不定期
    • 执行时长随着时间变化
    • 下一个要安排执行的任务是时限最早的任务
slide36
Mem管理
  • MMU
  • 实模式
  • 保护模式
slide37
最小mem开销
  • Price
  • 256K RAM
  • 4M
  • 32M RAM
slide38
中断禁止时间
  • 用户态->中断态
slide39
中断延时时间
  • 确认中断-----中断服务第一语句执行
  • 三部分
  • Microprocessor 的硬件延时
  • RTOS由中断将权利交给相关代码的时间
  • 中断禁止时间
slide40
可中断式内核
  • 中断发生时;即使运行核心服务也保证一定时间内响应
  • 缩短中断延时时间
slide41
任务切换时间
  • 控制权取回
  • 交给另外一任务
slide42
两个主要评价实时性的指标:
  • 最大中断禁止时间任务切换时间
slide43
任务
  • 分时系统以进程(线程)为基本单位
  • RTOS以任务为基本单位
  • 组成:
    • 任务控制块
    • 程序区
    • 数据区
    • 堆栈区
      • 系统堆栈
      • 用户堆栈
slide44
任务的状态
  • 运行
  • 就绪
  • 挂起
  • 休眠
slide45
任务的同步与通讯
  • 消息
  • 事件
  • 信号量
  • 信箱
  • 共享内存
slide46
消息
  • 系统公用数据交换区
    • 私有消息缓冲区
    • 公用消息缓冲池
  • 消息机制
    • 创建
    • 删除
    • 接受消息
    • 发送消息
    • 广播消息
    • 紧急消息
  • 消息可以是定长与不定长
slide47
事件
  • 应用于同步,通讯数据量不大
  • 接受事件
  • 发送事件
  • RTOS一般有15-32个事件
slide48
信号量
  • 创建
  • 删除
  • P操作
  • V操作
  • RTOS需要解决优先级倒置问题
slide49
优先级倒置问题
  • 条件
    • 高优先级任务H
    • 低优先级任务L
    • 中优先级任务M
    • 共享内存Y,写操作
    • 信号量S,互斥
  • 步骤
  • 1)L取得S(P操作),但是未做V操作
  • 2)H中断,H运行态
  • 3)H写Y,但是Y的S被占用
slide50
4)L重新取得控制权
  • 5)M出现,取得控制权
  • 结果:
  • M比H优先如果不断的M出现,H不能执行
slide51
解决方法
  • 1、采用非抢占式任务管理
  • 2、优先级继承
    • L抢回控制权后,暂时继承H的优先级
  • (priority inheritance)
    • 设S为正占用着某项共享资源的进程P以及所有正在等待占用这个资源的进程的集合;
    • 找出这个集合中的优先级最高者,其优先级为P’
    • 把进程P的优先级设置成P’
slide52
优先级封顶(priority ceiling)
    • 设S为所有可能竞争使用某项共享资源的进程的集合。事先为这个集合规定一个优先级上限p’,使得这个集合中所有进程的优先级都小于p’。注意p’并不一定是整个系统中的最好优先级。
    • 在创建保护该项资源的信号量或互斥量时,将p’作为一个参数。
    • 每当有进程通过这个信号量或互斥量取得共享资源时,就将此进程的优先级暂时提高到p’,一直到释放该项资源的时候才恢复其原有的优先级。
slide53
可以看出,操作系统的“实时”与否,并不仅仅取决于速度问题,甚至更多的是反应速度和处理时间的可预测性问题。可以看出,操作系统的“实时”与否,并不仅仅取决于速度问题,甚至更多的是反应速度和处理时间的可预测性问题。
slide54
实时操作系统和通用操作系统区别
  • 对于通用操作系统,总体的效率是更高的目标,必要时宁可牺牲个别进程的反应速度来达到总体效率的提高;而实时操作系统却反过来,必要时宁可牺牲总体效率也要保证个别进程的反应速度。
  • 对于通用操作系统,公正性更为重要,必要时宁可“劫富济贫”。而实时操作系统,高优先级进程的运行更为重要,必要时宁可“劫贫济富”
slide55
对于通用操作系统,性能的分析是统计分析、平均值分析。而实时操作系统性能分析则是“最坏情况”分析。对于通用操作系统,性能的分析是统计分析、平均值分析。而实时操作系统性能分析则是“最坏情况”分析。
  • 通用操作系统充分利用CPU处理能力,而实时操作系统有意让CPU处理能力供过于求,以确保反应速度和任务的完成。
slide56
3. 微内核与单内核
  • 分层模拟
  • 通用计算机需要“大而全”的内核
    • 你不需要,别人可能需要
    • 当局限于某个具体领域时,做些“裁减”
  • 嵌入式系统的用户群以及对功能的要求是相对封闭的
  • 商业上考虑,大而全也不合适
slide57
“裁减”或“系统生成”没有根本上解决问题
  • 将内核中的部分内容移到内核外面,作为服务进程运行。
    • 代表:MACH
  • 把内核中的部分内容移到外面,但不作为独立的进程运行,而是作为让应用程序调用的库函数存在。
    • fopen与open
    • socket
slide58
在微内核中保留哪些东西?
    • 进程管理
    • 存储管理
    • 进程间通信
    • 中断响应框架
slide59
微内核的优先级倒置问题
  • 有A、B两个应用程序,A的优先级比B高,但是A在睡眠,而B在运行。
  • B需要进行文件操作,发请求给文件服务进程,自己进入睡眠,等待文件操作完成
  • 本来在睡眠的文件服务进程接受到B的请求后开始为B服务。
  • 此时A因某外部事件而变成就绪。
  • 发生调度时,A与文件服务进程都是就绪状态。文件服务进程由于优先级高而更为优先。可是文件服务进程代表的是B,因此发生优先级倒置。
slide60
以上问题的解决办法是采用“客户驱动优先级”,但是对于LINUX等操作系统,由于是不可剥夺的,因此天生不可解决。以上问题的解决办法是采用“客户驱动优先级”,但是对于LINUX等操作系统,由于是不可剥夺的,因此天生不可解决。
slide61
A > B > C ,C正在运行
  • C需要文件操作,发请求给文件服务进程,进入睡眠,等待文件操作完成。
  • 文件服务进程开始为C服务,并将优先级设成与C相同。
  • 此时A被外部时间唤醒,也需要文件操作,发请求,进入睡眠。
  • A的请求在文件服务进程的等待队列中。发生优先级倒置。
slide62
B由于外部事件变成就绪
  • 由于B > C,B会被调度。
  • 对于C是合理的,但是对于A,太不公平。
  • 如果还有B1,B2,B3,B4,噢。。。
slide63
微内核的优点
  • 小而且简单,容易理解,容易维护
  • 各模块可以独立开发
  • 系统配置灵活方便
slide64
微内核的缺点
  • 效率降低
  • 安全降低
  • Minux的作者Andy Tanenbaum:“Only because the brain-dead nature of the Intel CPUs makes that difficult to do otherwise”
vxworks
VxWorks
  • 美国WindRiver
  • 统一空间
  • 函数接口多(3000多)
  • 是UNIX的远房变种,但区别也很大
  • 为不带MMU的处理器设计的,当然允许可选
  • 可剥夺调度
  • 采用优先级继承方法解决倒置问题
  • 支持消息、信号、管道等进程间通信
  • 支持POSIX
  • 网络支持很全面
  • 新版本:VxWorks AE,分离空间
slide68
QNX
  • 加拿大QNX Software System公司
  • 类似于MACH
  • 进程管理、文件系统管理、设备管理、网络管理都在内核之外
  • 符合POSIX
  • 采用消息作为进程间通信
  • 可剥夺
  • GUI类似于X WINDOWS
  • 支持网络和分布式计算
slide69
pSOS
  • 原美国Integrated System公司产品,现被WindRiver收购
  • 接近单一内核的微内核系统
  • 文件系统移到内核外
  • 采用优先级继承和优先级封顶技术
  • 存储管理可以根据需要舍取
  • 消息和事件作为进程间通信
  • 设备驱动留在内核中
  • Socket提供网络接口
windows ce
Windows CE
  • Microsoft公司的产品
  • 微内核,可剥夺
  • 采用页式存储管理,页面换入技术(可以锁定)
  • 内核映像既可以在ROM中,也可以在RAM中运行
  • 动态连接DLL
  • 中断处理分ISR与IST,不支持嵌套
  • 设备驱动也分两层
  • Winsock提供网络接口
  • GUI丰富
slide71
5 开源的嵌入式操作系统
  • 公开源码 <> 不是商品
slide73
MACH
  • Carnegie Mellon University
  • RT-MACH
rtlinux
RTLINUX
  • New Mexico Tech的Victor Yodaiken等人研制
  • 变种:
    • RTAI
    • ADEOS
slide75
KURT
  • Linux的变种,Kansas University
  • 时钟精度提高
  • 增加一些系统调用
  • 增加针对硬实时进程的调度策略
preempt linux
Preempt Linux
  • Robert M. Love
  • 针对LINUX的不可剥夺调度
  • 2001年RML补丁
timesys linux
TimeSys Linux
  • 美国公司,原致力于MACH,现转向linux
slide79
6 因特网时代应用模型的演变
  • 程序作为动态构件自动加载运行,而不需要由用户去逐个启动。
  • 构件支持脚本语言控制,多个构件可以相互操作,交换信息。
  • 以浏览器为交互式操作界面,既便于有户掌握,又为程序开发提供了统一标准。
  • 网络化资源管理,程序自动下载运行,不需要用户介入。
slide80
因特网时代应用模型的演变

来自不同软件开发商的软件模块动态组织起来运行

slide83
操作系统对XML的支持
  • XML文本描述语言的广泛使用将是因特网时代操作系统的另一明显标志
  • XML的每个标签(tag)都可以由用户定义
  • XML兼顾了对于人的可读性和计算机的处理效率
  • XML已经成了因特网信息交换的标准,未来的操作系统内核会对XML进行最有效的支持
slide85
硬件设备即插即用
  • 因特网时代要求硬件设备能即插即用
  • 解决方案只能是在驱动程序对象中加入非执行的描述信息,
  • 这种描述信息就是通常所说的元数据(metadata),它可以“告诉”访问者它有哪些特性和功能。
  • 元数据可以是XML形式、二进制或两者兼有。我们知道对象加上元数据就是构件。
  • 操作系统可以根据构件中的元数据生成中间件。这种在内核里动态生成的中间件是连接驱动构件与用户程序的“桥梁”,
  • 而这"桥梁"是内核根据硬件设备的元数据动态生成的,此时的新型操作系统仍然是"以不变应万变"
slide86
体系结构由固定变为灵活
  • 操作系统体系结构大致分为两种:大内核(Monolithic Kernel)和微内核(Micro Kernel)
  • 大内核操作系统将图形、设备驱动、文件系统等全部功能在操作系统内核中实现,运行在内核状态、同一地址空间。优点是减少进程间通信和状态切换的系统开销,获得较好的运行效率。缺点是内核庞大,占用资源多,剪裁不易,并且一旦个别驱动程序运行出错,就会导致整个系统崩溃,稳定性、安全性不好。
  • 微内核在内核中只实现那些必须由内核实现的基本功能,而将图形、文件系统、设备驱动、通讯等功能放在内核之外,作为系统服务来提供相应的功能,这些程序在用户状态下运行。这样做的优点是有一个精炼的内核,便于剪裁、移植。
slide88
操作系统与虚拟机
  • 操作系统可以作为虚拟机,直接提供中间件的运行环境
  • 操作系统可以对应用程序构件进行各种各样的控制,使得封装好的构件能够适应不同的运行环境和用户要求
  • 操作系统利用中间件技术支持和控制应用程序的运行环境,就形成了因特网时代操作系统的关键技术
slide89
基于中间件技术的嵌入式操作系统
  • 操作系统的实现采用构件技术,提供构件运行的虚拟机环境,支持动态加载构件
  • 构件的互操作性定义了编程语言无关、可扩展、跨平台的二进制标准。构件之间的相互作用通过一组称作接口(interface)的功能实现
  • 提供接口描述语言CDL,为服务器中新功能的实现提供了方便,如脚本语言调用构件对象函数等
  • 运行环境(虚拟机)可以在操作系统上自动生成中间件(代理构件),提供构件定位、调用、管理、中间件自动生成、构件通信(进程内、跨进程、跨网络等不同运行环境)等机制
  • 件技术保证了软件互操作性、版本升级独立性和运行环境透明性,提供了提高系统安全、软件协同开发、软件容错、可靠性、软件复用、软件升级的有效手段
slide90
基于中间件技术的操作系统的技术优势
  • 提供系统的安全保护机制
  • 硬件设备的即插即用
  • 稳定、健壮的系统特性
  • 灵活内核操作系统体系结构
linux
一、嵌入式Linux的定义
  • 嵌入式Linux(Embeded Linux)是指对Linux经过小型化裁剪后,能够固化在容量只有几十万字节或几十亿字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统
linux1
嵌入式Linux的优势
  • Linux系统是层次结构且内核完全开放
  • 强大的网络支持功能
  • Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍
  • Linux具有广泛的硬件支持特性
linux3
主流嵌入式Linux系统
  • μClinux
  • Embedix
  • RTLinux
  • RTAI
  • Monta Vista Linux
linux4
Linux的实时性
  • 一般的通用linux已经具备一定的实时性
  • 但无法满足硬实时的要求
    • 运行于linux内核空间的进程(核心态)不能被抢先
    • 在linux中,中断有时候会出于保护临界区操作的目的而被屏蔽
    • 通用linux的时间滴答长度为10ms(硬件时钟频率100HZ),但是这对于时间精度要求很高(微秒级)的实时进程来说是不够的
linux5
嵌入式Linux的实时性改造
  • 可以引入一个双内核结构
  • 对Linux内核代码作一些修改Linux本身的任务以及Linux内核本身作为一个优先级最低的任务,而实时任务作为优先级最高的任务以Linux的内核模块(Loadable Kernel Module,LKM)的形式存在的
  • 资源核方法:这种方法是为解决传统实时操作系统中固定优先级抢占式调度策略的局限性而产生的
linux 2 6
Linux 2.6内核实时性分析
  • 2.6中内核自身是可抢占的,它允许自身在执行任务时被打断
  • 2.6版本的Linux内核使用了由 Ingo Molnar 开发的新的调度器算法,称为O(1)算法
linux6
嵌入式Linux面临的挑战
  • 1、扩充Linux的实时系统
    • 内核不支持事件优先级和抢占实时特性
    • 对Linux实时性的扩展可以从两方面进行:
      • 向外扩展(让实时系统支持的范围更广,支持的设备更多)
      • 向上扩展(扩充Linux内核,从功能上扩充Linux的实时处理和控制系统)
slide100
RT-Linux的做法
    • Linux本身的任务以及Linux内核本身作为一个优先级最低的任务
    • 实时任务作为优先级最高的任务
    • 实时任务以Linux的内核模块(Loadable Kernel Module,LKM)的形式存在
rtlinux1
RTLinux硬实时操作系统简介
  • RTLinux是一硬实时操作系统
  • 实现了一个微内核的小的实时操作系统,而将普通Linux系统作为一个该操作系统中的一个低优先级的任务来运行
  • 普通Linux系统中的任务可以通过FIFO和实时任务进行通信
  • 通过软件来模拟硬件的中断控制器
  • RT-Linux通过将系统的实时时钟设置为单次触发状态,可以提供十几个微秒级的调度粒度
2 linux
2、改变Linux内核的体系结构
  • Monolithic内核体系
  • MicroKernel体系
  • 执行效率
  • 内核的体积
  • 升级、维护和移植
slide104
微内核技术
  • 缺点:操作系统的服务模块在独立的地址空间运行,使得进程间通信和上下文切换的系统开销大大增加,降低了系统效率。
3 linux
3、完善Linux的集成开发环境
  • Linux在基于图形界面的特定系统定制平台的研究上,与Windows操作系统相比还存在差距
posix
POSIX实时扩展
  • POSIX(Portable Operating System Interface)是为标准化类UNIX操作系统所必须具有的特征和接口而制定,其思想就是为了增强为类UNIX操作系统编写的软件的可移植性
linux7
二、嵌入式linux开发
  • 最小的嵌入式 Linux 系统仅需要三个基本元素:
    • 引导实用程序
    • Linux 微内核,由内存管理、进程管理和定时服务构成
    • 初始化过程
    • 硬件驱动程序
    • 一个或多个应用进程,以提供所需功能
linux8
面向嵌入式Linux 系统的图形用户界面
  • MicoroWindows/NanoX
    • 开放源码
    • 无任何硬件加速能力
    • 图形引擎中存在许多低效算法
    • 代码质量较差
  • OpenGUI
    • 可移植性稍差
  • Qt/Embedded
    • 低的程序效率、大的资源消耗
  • MiniGUI
linux9
嵌入式Linux开发
  • 了解硬件
  • 针对所用CPU的编译器/汇编器/连接器,相应的库工具,目标文件分析/管理工具,符号查看器
  • 编程器,下载工具和查错器
  • 安排内存地址
  • 编写启动代码和机器相关代码:硬件初始化,装载内核及安装根文件系统以及开始内核执行
  • 驱动程序
slide110

嵌入式Linux的一般开发步骤:

  • 精简内核
  • 系统启动
  • 驱动程序开发
  • 界面开发:将X-Window换成MicroWindows
slide111

精简内核

  •  构造内核的常用命令包括:make config、dep、clean、mrproper、zImage、bzImage、modules、modules_install。
slide112

精简内核的实例

  • 使用 make config 去掉多余功能。 ./Makefile ./arch/i386/kernel/ Makefile
slide113
启动优化基本技术
  • 一、固化各种不可扩展硬件的设置,尽量标准化可扩展设备的接口,节约设备检测时间。
  • 二、Lazy Loading,也即不加载当前非必需的模块,这些模块可以在启动后待机时间内加载,或者在具体用到之后再加载,把启动时间打散,从而缩短对用户来说至关重要的反应时间(Responding Time)。
  • 三、任务并行化,很多系统在启动任务时,是顺序执行,按部就班。为了减少启动时间,我们可以考虑任务的并行化,以减少启动时间的消耗。
linux10
嵌入式Linux启动过程分析
  • 在内核运行之前需要系统引导程序(Bootloader)完成加载内核和一些辅助性的工作,然后跳转到内核代码的起始地址并执行。
  • 整个arm linux内核的启动可分为三个阶段:第一阶段主要是进行cpu和体系结构的检查、cpu本身的初始化以及页表的建立等;第二阶段主要是对系统中的一些基础设施进行初始化;最后则是更高层次的初始化
slide115
系统启动
  • 系统启动的相关文件如下: ./arch/$ARCH/boot/ bootsect.s ./arch/$ARCH/boot/setup.s ./init/main.c bootsect.S 及 setup.S
linux11
嵌入式Linux的启动优化
  • 系统任务裁减
    • 裁减不适合本系统的部分任务
  • 系统任务并行
    • 明确任务依赖关系
    • 任务并行启动(make -j 工具的使用)
slide117

IBM系列PC的启动

  • IBM系列PC在电源打开后,由内存中地址FFFF:0000开始执行(这个地址一定在ROM BIOS中,ROM BIOS一般是在FE000h到FFFFFh中),而此处的内容则是一个jump指令,jump到另一个位于ROM BIOS中的位置,开始执行一系列的动作。   紧接着系统测试码之后,控制权会转移给ROM中的启动程序(ROM bootstrap routine)。这个程序会将磁盘上的第零轨第零扇区读入内存物理地址07C0:0000(即07C00h处。而位于Linux开机磁盘的boot sector上的是Linux的bootsect程序。
slide118

Linux的启动

  • Linux是由位于boot sector 的bootsect程序负责把setup及Linux的kernel载入内存中,再将控制权交给setup。
slide119

驱动程序

  • 在Linux系统里,设备驱动程序提供一组入口点,它们由一个结构在设备驱动程序初始化的时候向系统进行登记,以便系统在适当的时候调用。Linux系统里,通过调用register_chrdev 向系统注册字符型设备驱动程序。
slide120

添加驱动程序

  • 1.直接修改系统核心的源代码,把设备驱动程序加进核心里
  • 2.把设备驱动程序作为可加载的模块,由系统管理员动态地加载它,使之成为核心的一部分。  
slide121

驱动程序模块

  • Linux中,模块可以用C语言编写,用gcc编译成目标文件(不进行链接,作为*.o文件存在)。为此需要在gcc命令行里加上-c的参数。在成功地向系统注册了设备驱动程序后(调用register_chrdev),就可以用mknod命令来把设备映射为一个特别文件。其它程序需要使用这个设备的时候,对此特别文件进行操作。
linux12
三、linux启动流程
  • 初始化流程
  • 1 加电或复位
  • 2 BIOS的启动
  • 3 Boot Loader
  • 4 操作系统初始化
slide123
1 加电或复位
  • 冷启动过程开始,中央处理器进入复位状态,将内存中的所有数据清零,对内存进行校验,如果没错,CS寄存器将置入FFFF,IP寄存器置入0000,这个CS:IP组合指向的是BIOS的入口。系统就是这样进入BIOS启动过程的。
2 bios
2 BIOS启动
  • 上电自检POST(Power On Self Test)
  • 对系统内的硬件设备进行监测和连接
  • 最后,BIOS将从软盘或硬盘上读入Boot Loader.如果从硬盘启动,BIOS将读入该盘的零柱面零磁道1扇区(MBR),这个扇区上就放着Boot Loader.
2 bios1
2 BIOS启动
  • 除了启动程序,BIOS还提供了一组中断以便于对硬件设备的访问。我们知道,当键盘上的某一键被按下,CPU就会产生一个中断并把这个键的信息读入。
  • 在操作系统没有被装入以前(Bootsect.S还没有被读入),中断的响应程序由BIOS提供。
3 boot loader
3 Boot Loader
  • Boot Loader是一段汇编代码,存放在MBR中,它的主要作用就是将系统启动代码读入内存。
3 boot loader1
3 Boot Loader
  • 因为在启动过程中,BIOS会把Boot Loader读入内存,并把控制权交给它。MBR(硬盘启动)内的代码就是Boot Loader或者它的一部分,为了说明Boot loader的实现,先解释磁盘结构。
3 boot loader2
3 Boot Loader
  • 一个硬盘在DOS文件系统下可被分为四个基本分区,可以把一个基本分区定义为一个扩展分区,然后再把这个基本分区分为一个或多个逻辑分区。
  • 整个硬盘的分区表存放在硬盘的第一个扇区(MBR),每个扩展分区也对应一个分区表,它存放在该扩展分区对应的第一个扇区里。
  • 除主引导扇区外,每个基本分区和扩展分区也有自己的引导扇区,结构与MBR相同,但逻辑分区的引导扇区不能用于启动。
3 boot loader3
3 Boot Loader
  • 如果是硬盘启动,Boot Loader将查找主分区表中标记为活动分区的表项,把该表项对应的分区的引导扇区读入,然后将控制权交给该扇区内的引导程序。
3 boot loader4
3 Boot Loader
  • 如果计算机上装有不只一个操作系统,仅仅MS-DOS的Boot Loader无法完成这种工作,需要一个可以多重起动的工具,下面介绍Linux下最常用的LILO.
3 boot loader5
3 Boot Loader
  • LILO实际上是一个在Linux环境下编写的Boot Loader程序,主要功能是引导Linux操作系统的启动。
  • LILO的功能实际上是有几个程序共同实现的,它们是:

(1)Map Installer 这是LILO用于管理启动文件的程序。它将boot loader写入引导分区,创建纪录文件以映射内核的启动。

(2)The boot loader 它负责把Linux内核或其他操作系统 的引导分区读入内存。还提供命令行接口,让用户选择从哪个操作系统启动和加入启动参数。

(3)其他文件:主要包括用于存放Map Installer记录的map文件和存放LILO配置信息的配置文件。

3 boot loader6
3 Boot Loader
  • 从代码分析层次认识LILO运行过程。
slide133
4 进入操作系统
  • Boot Loader 做了这么多工作,一言以蔽之,只是把操作系统的代码调入内存,所以当它执行完后,自然该把控制权交给操作系统,由操作系统的启动程序来完成剩下的工作。
slide134
4 进入操作系统
  • 把控制权交给Setup.S这段程序
  • 进入保护模式,同时把控制权交给Head.S
  • Head.S调用/init/main.C中的start_kernel函数,启动程序从start_kernel()函数继续执行
4 1 setup s
4 进入操作系统(1)Setup.S
  • 首先,Setup.S对已经调入内存的操作系统代码进行检查,如果没错,它会通过BIOS中断获取内存容量,硬盘等信息(实模式)
  • 准备让CUP进入保护模式

a.先屏蔽中断信号

b.调用指令lidt和lgdt

c.对8259中断控制器进行编程

d.协处理器重新定位

完成这几件事后,Setup.S设置保护模式的标志,重取指令,再用一条跳转指令jmpi 0x100000,KERNEL_CS。进入保护模式下的启动阶段,控制权交给Head.S.

4 2 head s
4 进入操作系统(2)Head.S
  • 也要先做屏蔽中断一类的工作
  • 然后对中断向量表做一定的处理
  • Boot Loader读入内存的启动参数和命令行参数,Head.S把它们保存在empty_zero_page页中
  • 检查CUP类型
  • 对协处理器进行检查
  • 页初始化,调用setup_paging这个子函数
  • 因为已进入保护模式,段机制的多任务属性体现
4 3 main c
4 进入操作系统(3)main.c中的初始化
  • Head.S调用/init/main.c中的start_kernel函数,把控制权交给它,这个函数是整个操作系统初始化的最重要的函数,一旦它执行完,整个操作系统的初始化也就完成了。
4 3 main c1
4 进入操作系统(3)main.c中的初始化
  • 计算机在执行start_kernel前以进入了保护模式,使处理器完全进入了全面执行操作系统代码的状态。
  • 但直到目前为止,这都是针对处理器的。而一旦start_kernel开始执行,Linux内核就一步步展现。
  • Start_kernel执行后,就可以以一个用户的身份登陆和使用Linux了
4 3 main c2
4 进入操作系统(3)main.c中的初始化
  • 较为重要的函数如下
  • Setup_arch() 最基本硬件的初始化
  • Paging_init() 线性地址空间映射
  • Trap_init()中断向量表初始化
  • Int_IRQ与中断有关的初始化
  • Sched_init()进程调度初始化
  • Console_init()对中断的初始化
4 3 main c3
4 进入操作系统(3)main.c中的初始化
  • 对文件系统的初始化
  • Inode_initI() i节点管理机制初始化
  • Name_cache_init() 目录缓存机制初始化
  • Buffer_init() 块缓存机制初始化
4 3 main c4
4 进入操作系统(3)main.c中的初始化
  • 启动到了目前这种状态,只剩下运行/etc下的启动配置文件。
  • 这时初始化程序并没有完成操作系统各个部分的初始化,更关键的文件系统的安装还没有涉及,这是在init进程建立后完成的。就是start_kernel()最后部分内容。
4 4 init
4 进入操作系统(4)建立init进程
  • Linux要建立的第一个进程是init进程
  • 启动所需的Shell脚本文件

a.Linux系统启动所必须的

b.用户登陆后自己设定的

系统启动所必须的脚本存放在系统默认的配置文件目录/etc下。首先调用的是/etc/inittab.

linux13
四、Linux系统移植的两大部分
  • 内核部分和系统部分
  • (1)内核部分初始化和控制所有硬件设备(严格说不是所有,而是绝大部分),为内存管理、进程管理、设备读写等工作做好一切准备。(2)系统部分加载必需的设备,配置各种环境以便用户可以使用整个系统。
slide144
(1)内核移植
  • Linux内核可以视为由五个功能部分组成:进程管理(包括调度和通信)、内存管理、设备管理、虚拟文件系统、网络
  • 需要改动的就是进程管理、内存管理和设备管理中被独立出来的那部分即硬件相关部分的代码
slide145
修改的代码
  • 进程管理底层代码
  • BIOS接口代码
  • 时钟、中断等板上设备支持代码
  • 特殊结构代码:SMP
  • 内存管理
slide146
(2)系统移植
  • 一个最小系统的重建过程
  • 类似Linux系统应急盘DiskOnChip
  • 包括:init、libc库、驱动模块、必需的应用程序和系统配置脚本。
slide147
电源管理综述
  • 现在Linux中,最主要的电源管理方案主要有三种:APM、ACPI、DPM
  • 传统的APM(Advanced Power Management)是一种基于bios的电源管理标准
  • ACPI(Advanced Configuration and Power Interface),它主要是将电源管理的主要执行者由bios转换成为操作系统,这样可以提供更大的灵活性以及可扩展性
slide148
DPM简介
  • DPM-Dynamic Power Management
  • 在面向Linux的DPM架构中,内核中的DPM子系统负责维持整个系统的电源状态
  • 并把DPM系统的不同电源管理模块联系在一起。
  • 可以把DPM看成是为驱动程序、中间件和应用程序提供服务的元素
slide150
存储管理
  • 多程序模型
    • 这是没有硬件地址转换的内存管理模型。即使没有硬件地址转换功能支持,多个程序也可以共享相同的物理地址
  • 具有地址转换硬件的内存管理模型
    • 应用程序使用的是虚拟地址,CPU实际执行程序所示用的是物理地址,从虚拟地址到物理地址的转换需要操作系统和MMU硬件的参与
cache
高速缓冲(Cache)简介
  • Buffer Cache
  • Page Cache
  • Swap Cache
  • Hardware Cache
slide152
虚拟存储功能
  • 巨大的寻址空间
  • 内存映射
  • 公平的物理内存分配
  • 共享虚拟内存
slide153
主存与辅存层次信息传送
  • 页式虚拟存储器
  • 段式虚拟存储器
  • 段页式虚拟存储器
linux14
Linux存储管理
  • Linux使用了上述第二种存储管理模型。
  • 应用程序在标准Linux中的加载使用了“按需”分页的策略
  • Linux 的内存管理采取的是分页机制
  • Linux虚拟内存的实现,需要几种不同的机制来实现:地址映射机制、内存的分配与回收、请求页机制、交换机制、内存共享机制。
slide155
地址映射机制
  • 地址映射机制,主要完成主存、辅存和虚存之间的关联
  • Linux采用一系列的数据结构和一个硬件缓存(TLB)来实现地址映射机制
  • Linux内核的映射机制被设计成三层,在页面目录和页表之间增设了一层“中间目录”
slide156
内存的分配与回收
  • 最近被执行过的地址转换结果会被保留在MMU的转换后备缓存(TLB)中
  • 页分配使用2的幂数大小的块
  • Linux使用Buddy算法有效地分配和回收页块
buddy
Buddy算法
  • 这个算法首先找它请求大小的内存页块 ,它跟踪free_area数据结构中的list单元队列中的空闲页的链表
  • 如果找到的页块大于请求的页块,则该块将被分开成为合适大小的块
  • 因为所有的块都是2的幂次的页数组成,所以这个分割的过程比较简单,你只需要将它平分就可以了。空闲的块则放到适当的队列,而分配的页块则返回给调用者。
clinux
μCLinux存储管理
  • 其设计针对没有MMU的处理器,不能使用处理器的虚拟内存管理技术
  • μCLinux仍采用存储器的分页管理,系统在启动时把实际存储器进行分页
  • 没有MMU管理,所以实际上μCLinux采用实存储器管理策略(real memeory management)
  • μCLinux系统对于内存的访问是直接
  • 一个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全部载入主存储器的连续空间中
slide159
嵌入式系统的文件系统管理
  • 嵌入式系统的物理存储
    • Flash存储器由于其安全性高,存储密度大,体积小,价格相对便宜,是嵌入式领域中最受欢迎的一类存储器
  • 嵌入式系统中使用Flash存储器,通常有两种使用方式
    • 只进行只读访问
    • 在系统运行的时候既需要进行读操作,也需要进行写操作。
slide160
存储设备的管理方式
  • 直接访问Flash
    • 自己编写Flash的驱动程序(即基本操作函数)
  • Flash Disk
    • 有些Flash存储设备上附带了控制电路,并且提供了IDE的接口。这些设备通常都是模拟了PC中的IDE之类设备的接口
  • 专用于Flash的文件系统
    • JFFS等文件系统,目前已经非常成熟,并有了成功的应用
slide161
嵌入式文件系统的类型
  • RAMDISK
    • 在RAMDISK文件系统中,当系统启动的时候,会把外存中的映像文件加压缩到内存中,形成RAMDISK环境,便可以开始运行程序了。这种文件系统最大的问题就是,运行的程序的代码在内存和外存都占据了空间
  • cramfs
    • cramfs也是一种压缩式的文件系统。但是它不是一次性地把所有内容都解压缩到内存中,而所需数据的位置,计算数据在cramfs的位置,然后把所需的部分解压缩到内存中,再通过访问内存来得到所需的数据。由于这个整个过程,包括内存中数据的位置都是由cramfs文件系统自己来维护。所以对开发人员是透明的,也节省了空间。
  • romfs
    • romfs是一种只读文件系统,占用的系统资源也比较小。在romfs中,文件系统的管理代码占用的空间也比较小,但是romfs的文件访问权限和属主这些信息尚没有完全实现。此外,由于romfs文件系统是只读的,所以可以做得很小。
slide162
日志文件系统
  • 在嵌入式设备断电可能性比一般的计算机的可能性要大
  • 日志文件系统相对于普通文件系统,主要的变化就是增加了日志记录
jffs jffs2
JFFS与JFFS2文件系统
  • 2000年Axis公司发布了他们开发的日志式Flash文件系统
  • JFFS文件系统是开放源代码的文件系统,可以说是专门用于嵌入式Linux等系统的
  • JFFS是直接在Flash设备上实现的文件系统
  • JFFS2没有为Flash设备专门设计一个转换层来模拟普通的文件系统,而是直接对Flash进行操作
slide164
输入输出与设备管理概述
  • I/O设备抽象
  • I/O调度
  • 缓冲技术
  • 高速缓存
  • 错误处理
  • 性能与优化
slide165
I/O设备抽象
  • 不同的I/O设备,它们的读写方式不尽相同
  • 对于应用程序来说最好是所有的设备都可以通过一个相同的界面来进行读写操作
  • 需要通过一套机制对某一类相似的I/O设备的具体操作细节进行封装
  • 在操作系统中是通过设备驱动来实现的
slide166

操作系统内核

操作系统内核I/O子系统

软件

LCD驱动

触摸屏驱动

……

PCI bus驱动

LCD控制器

触摸屏控制器

……

PCI bus控制器

硬件

LCD

触摸屏

……

PCI bus

I/O设备抽象层次结构
slide167
I/O调度
  • I/O调度指的是对一组I/O请求进行安排,决定它们的执行顺序
  • 操作系统一般会把对某个设备的I/O请求放入那个设备的请求队列中去
  • 然后由I/O调度器对这些请求进行重新安排以改进系统的整体性能
slide168
缓冲技术
  • 引入缓冲技术,主要有以下三个原因 :
    • 一、是协调数据产生设备(producer)和数据接收设备(consumer)的速度
    • 二、是协调数据产生设备和数据接收设备的数据大小
    • 三、是因为为了保证写入外设的数据的一致性,要先把数据转移到内核空间
  • 在缓冲技术(Buffering)中,两个设备之间或者一个设备与一个应用程序之间需要传输数据时,这些数据会先保存在内存中,这个内存区域称为缓冲区
slide169
高速缓存
  • 高速缓存(Caching)是指把低速存储器的部分数据保存在高速存储器中以提高系统性能的技术
  • 缓冲技术跟缓存技术的区别:缓冲块中的数据是独一无二仅此一份的,而缓存中的数据是低速存储器中的数据的拷贝。
slide170
错误处理
  • 使用保护内存
  • I/O设备和传输操作在很多情况下都会发生错误,有的是暂时性的,有的是永久性的
  • 操作系统的错误提示能力相对硬件设备来说一般都比较低
  • 一个硬件设备可以提供非常丰富和详细的出错信息,但是操作系统往往会忽略其中的很多信息
slide171
/O性能对系统性能的影响
  • 首先它需要CPU执行设备驱动程序,并对I/O请求进行调度
  • 其次,I/O操作造成的程序执行上下文切换(context switch)也加重了CPU和缓存的负担
  • 并且I/O是中断操作的主要组成部分,内核的中断处理性能稍有不足就会在I/O操作中暴露无遗
  • 最后,I/O操作需要频繁的在设备控制器与内存、内存中用户空间与内核空间缓冲区之间拷贝数据
slide172
性能与优化
  • 减少上下文切换次数。
  • 减少数据在内存与设备之间复制的次数。
  • 通过使用更大的数据传输单元、智能化的设备控制器和轮循(如果空等可以有效减少)等手段来减少中断次数。
  • 把一部分I/O处理工作转移到硬件设备中去,使得外设能够跟CPU形成一定的并行处理,分担CPU的任务。
  • 在CPU、存储器、总线和I/O之间平衡工作量。因为任何一部分的过载都会导致其余部分的等待,从而造成整体性能下降。
real time linux
五、一些Real-Time Linux 简介
  • 1、NMT RT-Linux
  • NMT 是新墨西哥科技大学(New Mexico Technology) 的缩写
  • Real-time Linux 的鼻祖
  • 硬实时
  • 一个实时内核负责处理硬件消息,接管中断,实时任务可在该内核上直接运行
2 rtai
2、RTAI
  • Real-Time Application Interface
  • LKM
  • 在 Linux 上定义了 一组 RTHAL (Real-Time Hardware Abstraction Layer)
  • RTAI 只使用RTHAL和 Linux 沟通
3 lxrt
3、LXRT
  • RTAI 无法直接使用 Linux 的系统调用
  • 解决的方法:
  • 使用 RT-FIFO 将一个 RTAI real-time kernel module 和真正的 Linux 进程连接在一起
  • 代理:LXRT proxy
4 montavista linux 2 1
4、MontaVistaLinux2.1
  • MontaVista软件公司
  • 全球三大嵌入式Linux操作系统及解决方案供应商之一
  • MontaVistaLinux2.1支持6种体系结构的20款处理器,x86/IA-32、PowerPC、StrongARM、XScale、ARM、MIPS以及SH。
  • MontaVistaLinux2.1包括KDevelopIDE、目标配置工具(TargetConfigurationTool)、库优化工具(LibraryOptimizertool)。另外,它还提供超过215个应用软件包。
slide179
基于Linux2.4.17稳定内核,提供支持x86、MIPS、SH以及PowerPC体系结构的实时抢占式内核。基于Linux2.4.17稳定内核,提供支持x86、MIPS、SH以及PowerPC体系结构的实时抢占式内核。
  • 跨平台开发,支持14个主机开发环境,包括RedHat、YellowDogLinux、SuSE、Mandrake、Solaris以及VMWareonWindowsNT/2000
  • 该版本提供了215多个主机配套工具和嵌入式目标平台开发组件软件包,包括thttpd嵌入式服务器和802.11b无线通信标准附加包。
slide180
扩展了针对嵌入式跨平台开发的各类开放源代码工具的支持,提供了首个基于KDevelop的MontaVista开发环境;扩展了针对嵌入式跨平台开发的各类开放源代码工具的支持,提供了首个基于KDevelop的MontaVista开发环境;
  • 支持x86和PowerPC平台的Linux跟踪工具(包括内核性能和执行分析器);
  • ext3日志文件系统。
5 uclinux
5、uClinux
  • 专为无(MMU)的微控制器打造的嵌入式Linux操作系统。
  • uClinux已移植支持的微控制器和微处理器:摩托罗拉DragonBall(M68EZ328),M68328,M68EN322,ColdFire,QUICC(QuadIntegratedCommunicationsController)MotorolaMC68328:DragonBall集成微处理器ARM7TDMIMC68EN302AxisETRAXInteli960PRISMAAtari68kETRAX
slide182
特点
  • UClinux的内核要比原Linux2.0内核小的多
  • 1.内存管理
    • 不能使用处理器的虚拟内存管理技术
    • 分页管理
    • 对于内存的访问是直接的,所有程序中访问的地址都是实际的物理地址。
    • 对内存空间没有保护,各个进程实际上共享一个运行空间。一个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全部载入主存储器的连续空间中。
slide183
2.uCLinux两种可选的的内核加载方式
  • Flash运行方式:把内核的可执行映像文件烧到flash上,系统启动时从flash的某个地址开始逐句执行。
  • 内核加载方式:把内核的压缩文件存放在flash上,系统启动时读取压缩文件在内存里解压,然后开始执行,运行速度更快
slide184
3.uCLinux的romfs文件文件系统
    • 内核支持romfs文件系统比支持ext2文件系统需要更少的代码
    • 超级块(superblock)需要更少的存储空间。
  • 4.uCLinux的应用程序库
    • uClibc对libc做了精简
    • 静态链接
uclinux
uClinux的主要特色
  • 通用的LinuxAPIuCkernel<512KBuCkernel+工具<900KB完整的TCP/IP协议堆栈支持大量其它的网络协议支持各种文件系统,包括NFS、ext2、ROMfs、JFFS、MS-DOS以及FAT16/32
6 bluecat linux
6、 BlueCatLinux
  • LynuxWorks公司
  • 2.4Linux内核
  • 多种处理器
lynuxworks bluecat 4 0
LynuxWorksBlueCat4.0的特性
  • 为内核调试提供的独特的gdb扩展功能广受欢迎的开发环境和用户界面在追踪、调试内核以及应用程序函数的时候,可以使用简单明了的图形化界面能够快速对内核的功能,大小等进行配置使用开放构架的电源管理和优化方案加载和使用已经经过测试的应用组件更加方便BlueCatLinux4.0Developer\'sBundle商业许可证SpyKer系统跟踪工具VisualLynuxIDE或者CodeWarriorIDEEdition
slide188
具有硬实时特性的Linux产品――BlueCatRT(RealTime)具有硬实时特性的Linux产品――BlueCatRT(RealTime)
  • LynuxWorks公司是目前唯一一个能够提供同时满足开放标准嵌入式和实时需求的嵌入式操作系统解决方案的企业。
  • LynuxWorks提供的开发工具包括:编译器,调试器,内核跟踪工具以及分析器和集成开发环境等等。
ad