《嵌入式linux操作系统》由会员分享,可在线阅读,更多相关《嵌入式linux操作系统(49页珍藏版)》请在金锄头文库上搜索。
1、嵌入式Linux操作系统操作系统 1主要内容n嵌入式Linux系统基本概念n嵌入式Linux系统裁减与移植n嵌入式LINUX软件开发2主要内容n嵌入式Linux系统基本概念nLinux嵌入式Linux系统裁减与移植n嵌入式Linux应用315.1.1 嵌入式系统的定义MPU微处理器电源 模块时钟复位FlashRAMROMUSBLCDKeyboard外围电路Other外设嵌入式系统硬件组成 4嵌入式系统设备常见接口nI/OnA/D、D/An键盘nLCDn存储器接口n网络设备接口515.1.2 嵌入式操作系统的特点n“嵌入计算机系统的专用操作系统”。n嵌入性:物理环境(小型)、电气环境(可靠 )、
2、成本(价廉)等要求。n 专用性 :满足对象要求的最小软、硬件配置 等。n 性能要求:多任务调度、实时性能n功能要求:接口与通信能力6常见嵌入式操作系统 VxWorks 市场占有率最高的系统。它支持多种处理器 ,高性能 。 PSOSystem 模块化好,在中低端系统中应用广。pSOS已属于 WindRiver。 QNX 小巧灵活,在航空航天和工业控制中广泛应用 Windows CE 多线程、完整优先权、多任务的操作系统。 图形界面 好,开发工具友好 Linux-derived RTOS Montavist Linx, RTlinux;Other OSVTRX,Palm OS,ucos etc71
3、5.1.3 嵌入式Linux发展与应用专用嵌入式实时操作系统 vs 嵌入式Linux 操作系统专专用嵌入式实时实时 操作系统统嵌入式Linux操作系统统系统购买费统购买费非常昂贵贵商业业版本需要一定服务费务费使用费费每件产产品需都需缴纳缴纳免费费技术术支持开发发商一家支持商业业版厂商和Linux社团团网络协议栈络协议栈需要额额外购买购买免费费且性能优优异软软件移植难难,因为为系统统封闭闭易,因为为代码码开放产产品开发发周期长长,因为为参考代码码有限短,应应用和参考丰富实时实时 性能好可用RTLinux等模块块弥补补稳稳定性好较较好,高性能系统统待验证验证8如何选择合适的linux版本n标准的L
4、inux 版本。n小型化的嵌入式版本。n具有实时扩展功能的Linux 版本。nLinux 特殊应用版本。例如有许多针对不 同的如“瘦服务器”或“防火墙”应用的小型 化、实时特性增强的版本。9网络可选择资源标准版本nDebian:http:/ Hat:http:/ Linux: http:/ http:/www.prosa.it/embedded/etlinux/nLinux Router Project: http:/www.linuxrouter.org/nLOAF:http:/loaf.ecks.org/nucLinux:http:/www.uclinux.org/11网络可选择资源实时扩
5、展版nRTLinux:http:/nRTAI:http:/www.rtai.org/nEL/IX: http:/ http:/www.cl.cam.ac.uk/dmi1000/linux -srt/index.html12嵌入式linux构建与应用的关键技术n对linux 的裁减达到小型化的目的;n对不同嵌入式微处理器的linux 内核代码 移植,驱动程序的研究;n专业应用开发: 移植应用程序,开发面向 特定应用的控制软件。13嵌入式Linux操作系统实时性 n常用衡量实时性标准n确定性(Determinism):系统的行为表现应该 是确定的,每个系统调用执行的时间是可预测的 。n中断延迟时间
6、(Interrupt Latency Time):从 接收到中断信号到操作系统作出响应,并进入中 断服务程序的时间;n上下文切换时间(Context-Switching Time) ,就是操作系统将控制权从执行中取回,然后交 给另一个任务所需的时间。14嵌入式Linux操作系统实时性n影响中断处理时间的因素n处理器硬件电路的延迟时间,通常这个时间 可以忽略。n操作系统处理中断并将控制权转移给中断处 理程序所需要的时间。n操作系统的中断禁止时间,这是操作系统为 了保护重要的系统程序代码暂停接受中断需 要的时间。15嵌入式Linux操作系统实时性16Linux内核与实时性 对对比项项目Linux
7、2.4(s )Linux 2.6(s)内核在无负载时负载时 中断延时时最大值值8.531.0内核在重负载时负载时 中断延时时最大值值113.549.5内核在无负载时负载时 中断任务务响应应延时时最大 值值104412内核在强负载时负载时 中断任务务响应应延时时最大 值值444657817嵌入式Linux实时化技术 RTlinux双内核实时化结构18嵌入式Linux实时化技术RTLinux任务处理流程 19主要内容n嵌入式Linux系统基本概念nLinux嵌入式Linux系统裁减与移植n嵌入式Linux软件开发20从何处开始?n需要考虑的问题n是否支持自己的硬件平台n有多少可选软件、文件定制能力
8、如何n是否有完整文档、新版本升级是否方便等等一系列 问题。n可以选择的方法n基于面向特定应用的嵌入式Linux版本n基于通用嵌入式Linux版本n基于某通用Linux系统和Linux源代码库21Linux系统的软件分层 使用C库的应用程序C库直接访问 内核的 应用程序内核内核硬件22内核,C库,Shell和实用程序n典型的Linux系统包括3个主要的软件层:Linux内核 、C库和应用程序;n内核主要的功能包括内存管理、进程调度、设备驱动、 文件系统、网络协议栈和模块管理等;n内核之上是C库,这一层负责把符合POSIX标准的API 转换成内核可以识别的形式;n离硬件最远的是应用程序层,细分包含
9、两部分:n系统程序,一般指运行系统所不可缺少的程序;n用户程序,给用户提供各种功能;23嵌入式Linux系统构建流程 n裁减编译内核n建立root文件系统n制作系统映像n安装引导24第1步:裁减和编译内核n获得内核源代码n根据硬件平台获得对应的Linux系统源代码n从一个通用系统,如redhat系统获得源代码n裁减编译内核的步骤 n配置内核 n更新编译文件 n编译内核25编译内核原则nLinux内核拥有灵活方便的配置功能,菜单 分为,芯片组支持,外设支持,文件支持, 网络等,每类只将需要的内容编译进内核。n根据目标系统的硬件配置选择模块n根据应用目标选择其他功能模块n应当保证内核只支持一种或是
10、两种必要的文件系 统,如ext2和minix;n为支持内存虚拟磁盘启动,需要编译内核支持 ram disk和initrd26第1步:裁减编译内核n 以root超级用户登录,进入目录/usr/src/linux。 n 如果目标系统和主机系统不是同一硬件平台需要先建立交叉 编译环境并获得目标系统的内核源代码 n #make menuconfig n 对内核模块进行配置(也可以在X Window中运行make xconfig)。 n #make dep n 更新配置文件 n #make bzImage n (如果内核不大则执行#make zImage),执行该命令后,将 在/usr/src/linu
11、x/arch/i386/boot目录下生成内核文件 bzImage(或zImage)。 n 若配置中加入了模块的支持(选项为M),还需要执行#make modules和#make modules_install。 n 生成内核 n /usr/src/linux/arch/i386/boot/bzImage文件为内核 文件 n 改名为MiniKernel备用27第2步:建立root文件系统n什么是root文件系统?n一个完整的Linux系统除了内核外,还必须有一个 由C库和系统应用程序构成的root文件系统。n一个root文件系统包括支持完整Linux系统运行的 全部东西。n建立root文件系统
12、的步骤 n在主机中建立目标系统的root文件系统目录结构 n从代码库中挑选并裁减出适用的各种文件 n将root文件系统目录中的所有内容打包制作成映像28第2步:建立root文件系统nroot文件系统的内容n基本文件系统结构,至少含有目录/dev、/proc、 /bin、/etc、/lib、/usr、/tmp ;n最基本的系统应用程序,如sh、ls、cp、mv等;n最低限度的配置文件,如rc、inittab、fstab等;n基本设备,如/dev/mem、/dev/ tty*、 /dev/console;n基本程序运行所需的C函数库。29第2步:建立root文件系统n 建立目录系统n以root用户
13、登录开发主机,在合适的目录下(如根目录 下),用mkdir rootfs命令建立一个工作目录rootfs。n在rootfs/目录下的内容就是今后目标系统根目录(/) 下的内容。n在当前目录下执行cd rootfs进入到rootfs目录中,然后 用mkdir命令分别在rootfs目录下建立以下目录:/etc 放置系统配置文件;/sbin 放置重要的系统程序;/bin 放置系统基本应用程序;/dev 设备文件的目录; /proc proc文件系统所需目录; /lib 准备存放共享函数库; /mnt 准备挂载其他设备的目录节点 /usr 准备放置用户应用程序。 30第2步:建立root文件系统n 建
14、立目录系统n/proc、/mnt和/usr在此情况下都是空的,只需 要用mkdir创建它们即可。n/dev:设备文件需要用mknod产生。如果简单 起见用cp -dpR 参数开关来复制原系统的设备文 件节点也可以,例如cp -dpR /dev/mem /mnt/dev 。至少需要console、kmem、 mem、null、ram、tty*等文件。n/etc:一般可以包含rc.d/* (系统启动脚本)、 fstab(列出要登录的文件系统)、inittab(包含启 动过程参数) 。31第2步:建立root文件系统n 建立目录系统n/bin和/sbin:这两个目录中包含有一些系统运行不 可缺少的程
15、序和大量实用程序,如ls、mv、cat、cp 等。系统实用程序可以根据需要选择拷贝,而系统运 行不可缺少的一些程序必须拷贝过来,如init、getty 、login、mount、bash等。n/lib: 必须有函数库装载器,这个装载器或是ld.so ( 对 a.out 库) 或是 ld-linux.so (对 ELF 库)。如果有 一个模块化的内核,你还得必须考虑需要加载的模块 。它们都位于/lib/modules。32第2步:建立root文件系统n裁减root文件系统n动态库的裁减n精简系统应用程序n精简嵌入式系统专用程序33第2步:建立root文件系统n裁减root文件系统n动态库的裁减nLinux的C库glibc就是系统的动态连接库, 相当于Windows系统的系统dll动态连接库 。n用软件工具扫描系统所需要的库,然后进行 删减。n采用精简版本的C库,目前可以选择的开源 动态库有libc5、uclibc、dietlibc等,但需 要测试兼容性。 34第2步:建立root文件系统n精简系统应用程序nShell是必须的,采用Shell脚本开发的程 序因为是解释性的,所以尺寸往往只需要 几百个字节,而完成相同功能的C程序编 译后都至少要几KB。 n/bin和/sbin目录下的ls等各种系统