深入uclinux嵌入式操作系统

上传人:mg****85 文档编号:49915847 上传时间:2018-08-04 格式:PPT 页数:27 大小:1.29MB
返回 下载 相关 举报
深入uclinux嵌入式操作系统_第1页
第1页 / 共27页
深入uclinux嵌入式操作系统_第2页
第2页 / 共27页
深入uclinux嵌入式操作系统_第3页
第3页 / 共27页
深入uclinux嵌入式操作系统_第4页
第4页 / 共27页
深入uclinux嵌入式操作系统_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《深入uclinux嵌入式操作系统》由会员分享,可在线阅读,更多相关《深入uclinux嵌入式操作系统(27页珍藏版)》请在金锄头文库上搜索。

1、深入 嵌入式操作系统老铁 lao_ http:/www.lisoleg.org Linux Source Learning Group http:/ 嵌入式Linux?2000年9月份的调查。这项调查一直在延续着,截至2001年7 月30日,已经使用或将要使用嵌入式Linux的用户已达到 88.6%。 Why 嵌入式Linux?未来24个月嵌入式操作系统的应用调查(2000.9) 嵌入式Linux分类n第一类是在利用Linux强大功能的前提下,使它 尽可能的小,以满足许多嵌入式系统对体积的要 求,如uClinux(http:/www.uclinux.org);n第二类是将Linux开发成实时系

2、统尤其是硬/firm 实时系统,应用于一些关键的控制场合,如 Fsmlabs公司(http:/www.rtlinux.org)的 RTLinux、MontaVista(http:/) 的Hard Hat Linux等;n第三类的产品就是将实时性和嵌入式方案结合起 来的方案,很多公司都这么做,并且提供集成化 的开发方案,如Lineo、TimeSys、合肥华恒等。Why ? n全球每年生产的CPU的数量在二十亿颗左右,超过80%应 用于专用性很强的各类嵌入式系统。其中又有相当一部分 面向低端市场。为降低硬件成本及运行功耗,有一类CPU 在设计中取消了内存管理单元(Memory Management

3、 Unit,简称MMU)功能模块。如Motorola公司的M68328、 M68EN322 、MC68360、DragonBall系列如68EZ328、 68VZ328,ColdFire系列的如5272、5307,ARM7TDMI and MC68EN302、ETRAX、Intel i960、PRISMA、Atari 68k等 等。n标准Linux针对有MMU的处理器设计。在这种处理器上, 虚拟地址被送到MMU,把虚拟地址映射为物理地址。通 过赋予每个任务不同的虚拟地址/物理地址转换映射,可 支持不同任务之间的保护。 最初,运行于这类没有MMU的CPU之上的都是 一些很简单的单任务操作系统,或

4、者更简单的控制程 序,甚至根本就没有操作系统而直接运行应用程序。 在这种情况下,系统无法运行复杂的应用程序,或者 效率很低,而且,所有的应用程序需要重写,并要求 程序员十分了解硬件特性。这些都阻碍了应用于这类 CPU之上的嵌入式产品开发的速度。然而,随着uCLinux的诞生,这一切都改变了。Why ?(cont.) What is ?uCLinux是一个完全符合GNU/GPL公约的项目,完 全开放代码,现由Lineo公司支持维护。英文单 词中u表示Micro,小的意思,C表示Control,控 制的意思,所以uCLinux就是Micro-Control- Linux,字面上的理解就是“微控制领

5、域中的 Linux系统”。它专门针对没有MMU的CPU,并专 为嵌入式系统做了许多小型化的工作,已支持前 面提到的多款CPU。官方主页在 http:/www.uclinux.org。国内从事uclinux开发 有合肥华恒科技等几家公司 。Embedded Linux/Microcontroller ProjectKenneth Albanowski FOUNDING FATHERSD. Jeff Dionne核心开发人员12人左右。To join, send mail to majordomouclinux.org with the command “subscribe uclinux-dev

6、“ in the body of the message.已成功使用uCLinux的案例n合肥华恒的基于coldfire 5272/5407的家庭网关Soho/Home/VPN Router、基于 68EZ328的PDA开发套件nMaple 信号处理公司基于DragonBallVZ和TMS320C541xx DSP的DAQStick 系列嵌入式 信号处理板卡n珠海万禾的基于VZ328的多串口设备Webport2000,基于68VZ328的PDA开发套件nLineo 公司的uCsimm、uCdimm开发套件以及商业音乐媒体服务器BMMSMP3.COM采用 n西南交通大学电气检测与故障诊断信息研究

7、室的嵌入式电力设备运行状态监测系统nNetSilicon公司 NET+Works设备网络平台(基于ARM7TDMI)为Wireless Networks 公 司的BlueLAN 提供接入点n东软的智能家庭网关产品n爱立信的基于ARM7TDMI蓝芽BLIP无线通信设备n基于ARM7TDMI的Aplio公司的voice-over-IP电话nAXIS公司的AXIS2001网络数码相机nAdomo公司的家庭机顶盒nSnapsear的VPN安全设备n瑞士洛桑的Smartdata公司的微型计算机Chipslicen内存管理uClinux同标准Linux的最大区别就在于内存管理标准Linux使用的虚拟存储器

8、技术标准Linux是针对有内存管理单元的处理器设计的。虚拟地址被送到内存 管理单元(MMU),把虚拟地址映射为物理地址。采用分页的方式来载 入进程。实际存储器分割为相同大小的页面。 虚拟存储器由存储器管理机制及一个大容量的快速硬盘存储器支持。它的 实现基于局部性原理,当一个程序在运行之前,没有必要全部装入内存 ,而是仅将那些当前要运行的那些部分页面装入内存运行(copy-on- write),其余暂时留在硬盘上程序运行时如果它所要访问的页已存在, 则程序继续运行,如果发现不存在的页,操作系统将产生一个页失效异 常,导致操作系统把需要运行的部分加载到内存中。必要时操作系统还 可以把不需要的内存页

9、交换到磁盘上。通过赋予每个任务不同的虚拟-物理地址转换映射(页表),还可支持不同 任务之间的保护、共享等。对于多进程管理当处理器进行进程切换并执行一个新任务时,一个重要 部分就是为新任务切换页表。标准Linux系统的内存管理功能可以运行只加载了部分的程序,缩短了程序启动的时间运行比内存还要大的程序。理想情况下应该可以运行任意大小的程序 可以使多个程序同时驻留在内存中提高CPU的利用率 可以运行重定位程序。即程序可以方于内存中的任何一处,而且可以 在执行过程中移动 写机器无关的代码。程序不必事先约定机器的配置情况 减轻程序员分配和管理内存资源的负担可以进行程序代码共享 提供内存保护,进程不能以非

10、授权方式访问或修改页面,内核保护单 个进程的数据和代码以防止其它进程修改它们。否则,用户程序可能会 偶然(或恶意)的破坏内核或其它用户程序 代价:内存管理需要地址转换表和其他一些数据结构,留给程序的内存 减少了。地址转换增加了每条指令的执行时间,而对于有额外内存操作 的指令会更严重。当进程访问不在内存的页面时,系统处理失效的磁盘 I/O操作极耗时间。针对NOMMU的特殊处理uClinux针对没有MMU的处理器设计,不能使用处理器的虚拟内存管理技 术,但出现简单和尽量靠拢标准Linux得需要,uClinux仍然沿用标准 Linux的分页内存管理结构,系统在启动时把实际存储器进行分页,但 实际上采

11、用的是实存储器管理策略。 uClinux系统对于内存的访问是直接的,(它对地址的访问不需要经过 MMU,而是直接送到地址线上输出),所有程序中访问的地址都是实 际的物理地址。 操作系统对内存空间没有保护(这实际上是很多嵌入式系统的特点), 各个进程实际上共享一个运行空间(没有独立的地址转换表)。 一个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全 部载入主存储器的连续空间中。由于程序加载地址与预期(ld文件中 指出的)通常都不相同,这样relocation过程就是必须的。 磁盘交换空间无法使用的,系统执行时如果缺少内存将无法通过磁盘交 换来得到改善。对开发人员提出的更高要求从易用性

12、来说,uClinux的内存管理实际上是一种倒退,退回了到了UNIX早 期或是Dos系统时代。开发人员不得不参与系统的内存管理。从编译内 核开始,开发人员必须告诉系统这块开发板到底拥有多少的内存。 由于应用程序加载时必须分配连续的地址空间,而针对可连续地址分配内 存大小是受限的,开发人员在开发应用程序时必须考虑内存的分配情况 并关注应用程序需要运行空间的大小。另外由于采用实存储器管理策略 , 用户程序同内核以及其它用户程序在一个地址空间,程序开发时要保证不 侵犯其它程序的地址空间,以使得程序不至于破坏系统的正常工作,或 导致其它程序的运行异常。从内存的访问角度来看,开发人员的权利增 大了(开发人

13、员在编程时可以访问任意的地址空间),但与此同时系统 的安全性也大为下降。 从嵌入式设备实现的功能来看,嵌入式设备通常在某一特定的环境下运行 ,只要实现特定的功能,其功能相对简单,内存管理的要求完全可以由 开发人员考虑。内核加载方式 uCLinux的内核有两种可选的运行方式:可以在flash 上直接运行,也可以加载到内存中运行。后者可以 减少内存需要。Flash运行方式(XIP):把内核的可执行映像烧写 到flash上,系统启动时从flash的某个地址开始逐句 执行。这种方法实际上是很多嵌入式系统采用的方 法。内核加载方式:把内核的压缩文件存放在flash上 ,系统启动时读取压缩文件在内存里解压

14、,然后开 始执行,这种方式相对复杂一些,但是运行速度可 能更快(RAM的存取速率要比Flash高)。根(root)文件系统uCLinux系统采用romfs文件系统,这种文件系统相 对于一般的ext2文件系统要求更少的空间。空间的 节约来自于两个方面:首先内核支持romfs文件系 统比支持ext2文件系统需要更少的代码;其次 romfs文件系统相对简单,在建立文件系统超级块 (superblock)需要更少的存储空间。Romfs文件 系统不支持动态擦写保存,对于系统需要动态保存 的数据采用虚拟ram盘/JFFS的方法进行处理(ram 盘将采用ext2文件系统)。应用程序库nuCLinux小型化的

15、另一个做法是重写了应用程序库 ,相对于越来越大且越来越全的glibc库,uClibc对 libc做了精简。 http:/uclibc.org/uClibc.htmlnuClibm数学库nuCLinux对用户程序采用静态链接的形式,这种做 法会使应用程序变大,但是基于内存管理的问题, 也就是基于没有MMU的特性,只能这样做,同时 这种做法也更接近于通常嵌入式系统的做法。标准Linux系统系统数据段,代码段,堆和栈在虚存层面是连续的。堆向上 增长,栈向下增长,在堆底和栈顶之间有256MB的内存可供分配。uClinux 采用了实内存模式,各个内存段在物理内存层面是连续的,栈段在同数据 段在一起,堆有

16、系统内存管理,所有进程共享,由于内存连续和保护的要 求,栈段,数据段,代码段都是在程序加载是分配。 这种内存空间布局阻碍了动态连接库的运用。栈段的大小固定(在生成应 用时可以指定栈段大小),开发人员在开发时不得不使用一些方法估计判 断栈段的大小,使其即能满足程序的需要,又不浪费内存。可执行文件格式uCLinux系统使用flat可执行文件格式,目前也支持 elf文件格式。先解释几种可执行文件格式。coff(common object file format):一种通 用的对象文件格式;elf(executive linked file):一种为Linux系统 所采用的通用文件格式,支持动态连接和重定位;flat:elf格式有很大的文件头,flat文件对文件 头和一些段信息做了简化,可执行程序小。可执行文件加载当用户执行一个

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号