嵌入式操作系统ppt课件.ppt

上传人:本田雅阁 文档编号:3305052 上传时间:2019-08-10 格式:PPT 页数:130 大小:763.06KB
返回 下载 相关 举报
嵌入式操作系统ppt课件.ppt_第1页
第1页 / 共130页
嵌入式操作系统ppt课件.ppt_第2页
第2页 / 共130页
嵌入式操作系统ppt课件.ppt_第3页
第3页 / 共130页
嵌入式操作系统ppt课件.ppt_第4页
第4页 / 共130页
嵌入式操作系统ppt课件.ppt_第5页
第5页 / 共130页
点击查看更多>>
资源描述

《嵌入式操作系统ppt课件.ppt》由会员分享,可在线阅读,更多相关《嵌入式操作系统ppt课件.ppt(130页珍藏版)》请在三一文库上搜索。

1、嵌入式操作系统,陈香兰 http:/ Spring 2007 中国科学技术大学计算机系,xlanchen2007.6.4,Embedded Operating Systems,2,上周一,SkyEye介绍 SkyEye简介 SkyEye的安装和使用 uClinux简介,xlanchen2007.6.4,Embedded Operating Systems,3,上周二,介绍了嵌入式系统的 Boot Loader,包括: Boot Loader 的概念 Boot Loader 的主要任务 Boot Loader 的框架结构 Boot Loader 的安装 部分开源的boot loader,xla

2、nchen2007.6.4,Embedded Operating Systems,4,本次课的主要内容,嵌入式Linux开发技术,嵌入式Linux开发技术,xlanchen2007.6.3,xlanchen2007.6.4,Embedded Operating Systems,6,主要内容,一、嵌入式Linux开发综述 二、Linux的配置和编译 三、根文件系统及其制作,xlanchen2007.6.4,Embedded Operating Systems,7,主要内容,一、嵌入式Linux开发综述 二、Linux的配置和编译 三、根文件系统及其制作,xlanchen2007.6.4,Embe

3、dded Operating Systems,8,一、嵌入式Linux开发综述,建立目标板Linux的基本步骤 开发嵌入式Linux系统最常用的主机类型 主机/目标机的开发体系结构 主机/目标板的调试方式 嵌入式Linux系统的一般架构 嵌入式Linux系统的启动过程 嵌入式Linux系统的引导配置的类型,xlanchen2007.6.4,Embedded Operating Systems,9,1、建立目标板Linux的基本步骤,建立目标板Linux系统有4个重要的步骤: (1)决定系统组件 Linux具有大量可选软件,应当为目标系统列出必须的功能清单 (2)配置并建立内核 选择合适的Lin

4、ux内核版本与适当的配置 建立内核 (3)建立根文件系统 (4)设置引导软件与配置,xlanchen2007.6.4,Embedded Operating Systems,10,2、开发嵌入式Linux系统最常用的主机类型,开发嵌入式Linux系统最常用的主机类型 (1)Linux工作站 通常就是一台安装了某个标准的Linux发行套件的PC机,如Debian、Mandrake、Red Hat等。 需约2、3G或更多的磁盘空间进行嵌入式Linux开发 建议具有128或以上的RAM及交换空间 (2)Unix工作站 由于Linux与Unix非常相似,对Linux适用的通常对Unix也适用,xlanc

5、hen2007.6.4,Embedded Operating Systems,11,(3)Windows工作站 许多开发者比较习惯Windows平台,并希望在Windows平台上开发嵌入式Linux系统 Cygwin: 可在Windows平台上建立跨平台开发工具链 VMWare: 可在虚拟环境中执行Linux,并在Linux上进行嵌入式Linux的开发,xlanchen2007.6.4,Embedded Operating Systems,12,3、主机/目标机的开发体系结构,在嵌入式Linux系统开发中,存在3种主机/目标机开发体系结构 (1)连接式 (2)使用可移动存储设备 (3)独立开发

6、式,xlanchen2007.6.4,Embedded Operating Systems,13,(1)连接式 ( the linked setup ),目标板和主机通过一个物理线路(如串行线或者以太网连接)永久的连接在一起 好处: 目标代码的传送无需 物理存储设备参与, 只需要上述连接就足 够了 在这种方式中,主机 包含了跨平台开发环 境,而目标板则包含了适当的引导加载程序、可用的内核以及最起码的根文件系统,xlanchen2007.6.4,Embedded Operating Systems,14,另一种做法是,以远程组件来简化目标板的开发工作,例如 通过TFTP下载内核 此外,根文件系统

7、还 可以通过NFS安装, 而不必在目标板中使 用存储介质 还可以使用连接进行 调试 通常使用以太网连接进行下载功能,而使用RS232串口连接进行调试,TFPT: Trivial File Transfer Protocol 小型文件传输协议 比FTP简单,NFS: Network File System 网络文件系统 允许访问远程计算机上的文件,*内核 *根文件系统,下载/NFS,xlanchen2007.6.4,Embedded Operating Systems,15,(2)使用可移动存储设备, the removable storage setup,主机和目标板之间没有实际的连接。 先由

8、主机将数据写入存储设备,然后将存储设备转接到目标板,并使用该存储设备引导目标板 同样的,在主机上包含了跨平台开发环境。而目标板则只包含了最起码的引导加载程序。其余的组件被存放在可移动存储设备上。,xlanchen2007.6.4,Embedded Operating Systems,16,xlanchen2007.6.4,Embedded Operating Systems,17,一种通常的操作方式使用易插拔的flash芯片: 先在主机上使用flash编程器将数据写入芯片, 然后再将该芯片插入目标板上的插座中,xlanchen2007.6.4,Embedded Operating System

9、s,18,(3)独立开发系统,在这种设置中,目标板是个独立的开发系统,它包含了引导、操作以及开发额外软件所必须的任何软件。 不需要跨平台开发环境, 不必在主机和目标板之间 传送任何数据 适合以PC为主的高级嵌入 式系统的开发,xlanchen2007.6.4,Embedded Operating Systems,19,4、主机/目标板的调试方式,用来连接目标板与主机进行调试的接口基本上有3种类型: (1)串行线、 (2)网络接口、 (3)特殊的调试硬件 BDM JTAG,xlanchen2007.6.4,Embedded Operating Systems,20,(1)使用串行线进行调试,这是

10、从主机对目标板进行调试的最简单的做法 缺点: 串行连接的速度比较有限 当嵌入式系统中只有一个串行串口, 或者串行连接是嵌入式系统对外唯一的接口, 那么就不可能在对系统调试的同时,以终端仿真器跟系统交互。,xlanchen2007.6.4,Embedded Operating Systems,21,(2)使用网络接口进行调试,这种方式与串行线连接相比,可以提供较高的带宽 由于可以在相同的物理网络连接上使用多重网络连接,可以兼顾调试与终端仿真交互 缺点: 无法使用网络连接对Linux内核进行调试。因为网络协议栈本身在Linux内核里。相对而言,内核的调试通常可以通过串行连接来进行,xlanchen

11、2007.6.4,Embedded Operating Systems,22,(3)使用特殊的调试硬件,通常会使用BDM或JTAG接口。 这些接口依靠的是CPU芯片中内嵌的BDM或JTAG特殊功能。 只要将一个特殊的调试器连接到CPU上的JTAG或BDM相关管脚,就可以完全控制CPU的行为。 因此,当遇到新的嵌入式目标板、或者对目标板上的Linux内核进行调试时,通常会使用JTAG和BDM,BDM Background Debug Mode 背景调试模式,JTAG Joint Test Action Group 联合测试小组 采用IEEE 1149.1,测试存取口和边界扫描标准,xlanche

12、n2007.6.4,Embedded Operating Systems,23,如图所示,包含4个部分: (1)硬件 (2)内核 (3)文件系统等 (4)应用程序/库,5、嵌入式Linux系统的一般架构,xlanchen2007.6.4,Embedded Operating Systems,24,(1)硬件,目标板的硬件必须符合 一些要求方能执行Linux系统。 至少32位CPU 一般情况下必须配备MMU(对于 不配备MMU的考虑使用uClinux) RAM容量必须满足系统的需要 一些最起码的I/O能力,以便在线调试 具有某种形式的永久性或网络存储设备以便内核加载及(或)存取根文件系统,xla

13、nchen2007.6.4,Embedded Operating Systems,25,(2)Linux内核,Linux内核是Linux操作系统的中心组件。使用内核的目的是希望以一致的方式管理硬件,以及为用户软件提供高层抽象层。 内核大致可以分成两个部分:底层接口层和高层抽象层,xlanchen2007.6.4,Embedded Operating Systems,26,底层接口层专属于硬件配置,内核运行其上,并以硬件无关的高层抽象层提供对硬件资源的直接控制。 比如,对于PPC和ARM系统,尽管其寄存器或内存分页的处理方式不同,但却可以使用通用的API来存取内核里高层的组件 通常底层部分会处理

14、CPU特有的操作、架构特有的内存操作以及设备的基本I/O,xlanchen2007.6.4,Embedded Operating Systems,27,(3)文件系统和网络协议等,在Linux内核的底层接口层与高层抽象层之间,内核有时会用到与特定设备上的结构化数据交互的组件,例如文件系统和网络协议。 通常,Linux内核至少需要一个具有合适结构的根文件系统。Linux内核会从中加载第一个应用程序、加载模块并为进程提供工作目录。,xlanchen2007.6.4,Embedded Operating Systems,28,(4)应用程序/库,内核上面是应用程序和工具程序。链接库通常与应用程序动态

15、链接在一起,xlanchen2007.6.4,Embedded Operating Systems,29,6、系统启动过程,在系统启动过程里,有3个主要软件组件参与其中: (1)引导加载程序 (2)内核 (3)Init进程,xlanchen2007.6.4,Embedded Operating Systems,30,(1)引导加载程序,引导加载程序是系统启动过程中执行的第一个软件,它与目标板的硬件有高度的依赖关系。 Linux有许多引导加载程序可用。 引导加载程序在完成底层硬件初始化工作后会接着跳到内核的启动程序代码执行。,xlanchen2007.6.4,Embedded Operating

16、 Systems,31,(2)内核,内核一开始的启动程序代码会因架构不同而有很大的差异,而且在为C程序代码设置合适的执行环境之前,它会先为自己进行初始化工作。 完成以上工作后,内核会跳到与架构无关的start_kernel函数执行,此函数会初始化高层内核功能,安装根文件系统,以及启动init进程,xlanchen2007.6.4,Embedded Operating Systems,32,3、Init进程,启动各种应用程序(根据设置),xlanchen2007.6.4,Embedded Operating Systems,33,7、引导配置的类型,Linux系统的引导配置与所选用的引导加载程序

17、、它的配置以及主机中软硬件的类型有非常密切的关系。 (1)固态存储媒体 (2)磁盘 (3)网络,xlanchen2007.6.4,Embedded Operating Systems,34,(1)固态存储媒体,固态存储媒体用于存放 最初的引导加载程序 配置参数 内核 根文件系统 嵌入式Linux系统在开发的不同阶段可能会使用不同的引导配置,但大部分在开发完成后使用固态存储媒体,xlanchen2007.6.4,Embedded Operating Systems,35,(2)磁盘,磁盘引导配置方式广泛应用于工作站及服务器中,此时内核和根文件系统位于磁盘上 最初的内核加载程序不是从磁盘上加载,第

18、二个内核加载程序就是直接从磁盘获得内核本身 可以用于嵌入式系统的开发阶段 要求:目标板上能够使用硬盘或者具有模仿硬盘的装置,xlanchen2007.6.4,Embedded Operating Systems,36,(3)网络,网络引导配置方式中,存在两种情况: (1)内核位于固态存储设备上或磁盘上,需要通过NFS安装根文件系统 (2)只有内核加载程序位于目标板的存储设备上,需要通过TFTP下载内核和根文件系统(或NFS) 往往用于开发初期,xlanchen2007.6.4,Embedded Operating Systems,37,主要内容,一、嵌入式Linux开发综述 二、Linux的配

19、置和编译 三、根文件系统及其制作,xlanchen2007.6.4,Embedded Operating Systems,38,内核是所有Linux系统软件组成的核心。它的性能对整个系统的性能起决定性作用。如果内核不支持目标板上的某个硬件,那么在目标板上使用这个内核时,这个硬件就不能起作用。 下面讨论如何为一个嵌入式系统准备好一个可用的Linux内核,包括内核的选择、配置、编译和安装。,xlanchen2007.6.4,Embedded Operating Systems,39,Linux内核源代码中的主要子目录,Documentation 内核方面的相关文档。 arch 与体系结构相关的代码

20、。对应于每个 支持的体系结构,有一个相应的目录 如i386、arm、alpha等。每个体系结 构子目录下包含几个主要的子目录: kernel 与体系结构相关的核心代码 mm 与体系结构相关的内存管理代码 lib 与体系结构相关的库代码 include 内核头文件。对每种支持的体系结构 有相应的子目录。 init 内核初始化代码。,xlanchen2007.6.4,Embedded Operating Systems,40,kernel 内核管理代码。 mm 内存管理代码。 ipc 进程间通讯代码。 net 网络部分代码。 lib 与体系结构无关的内核库代码。 drivers 设备驱动代码。每类

21、设备有相应的子 目录,如char、block、net等 fs 文件系统代码。每个支持文件系统有 相应的子目录,如ext2、proc等。 modules 可动态加载的模块。 Scripts 配置核心的脚本文件。,xlanchen2007.6.4,Embedded Operating Systems,41,Linux的配置和编译步骤,Linux内核从配置到安装大致有如下步骤: 清理:make mrproper 配置:make config/menuconfig/xconfig 建立依赖关系:make dep 编译:make或make zImage 安装:make install 但在嵌入式系统开发

22、中,并不总是按照上述步骤,xlanchen2007.6.4,Embedded Operating Systems,42,1、Linux内核选择,尽管http:/www.kernel.org是主要的内核来源,但这里可用的内核版本并不总适用于嵌入式系统 下面列出了针对当前主要嵌入式系统的Linux内核源代码下载地点,通常直接提供了针对某种目标硬件系统的Linux内核版本,xlanchen2007.6.4,Embedded Operating Systems,43,为了获得适合目标系统的内核,必须从主要的站点下载内核,还要打上合适的补丁。例如ARM Linux仅仅发布Linux官方内核的补丁。 找到

23、合适的Linux内核版本后,把它下载到某个目录中,解压,xlanchen2007.6.4,Embedded Operating Systems,44,2、Linux内核的配置,配置有很多种方法,配置过程中有很多选项可选 配置的结果是生成一个.config文件以及大量的符号连接和头文件,用于后续的过程。,.config文件中保存了在配置过程中定义的变量, 在Linux内核目录下的Makefile中将会包含这个文件,xlanchen2007.6.4,Embedded Operating Systems,45,ARMLinux的配置和编译,考虑将ARM Linux运行到SkyEye模拟平台上: (1

24、)下载源代码,建立交叉编译环境 (2)编译内核 (3)利用busybox生成一个简单的系统文件并且配置根文件系统 (4)配置SkyEye系统信息,使上述生成的内核及操作系统可以在SkyEye中运行,xlanchen2007.6.4,Embedded Operating Systems,46,准备ARM Linux,下载标准Linux 的内核源码和ARM Linux,其中ARM Linux 是基于标准Linux内核为ARM 做的补丁 标准Linux的内核源代码 ftp:/ftp.kernel.org linux-2.4.18.tar.bz2 ARM Linux的补丁 ftp:/ftp.arm.l

25、inux.org.uk/pub/armlinux patch-2.4.18-rmk7.bz2,xlanchen2007.6.4,Embedded Operating Systems,47,解压缩Linux-2.4.18, 解压缩补丁,并对linux-2.4.18打补丁 建立armlinux-2.4.18,将linux目录拷贝到该目录下,xlanchen2007.6.4,Embedded Operating Systems,48,建立交叉编译环境,下载交叉编译工具 ftp:/ftp.arm.linux.org.uk/pub/armlinux/toolchain cross-2.95.3.tar.

26、bz2 解压缩到/usr/local/arm目录下 tar jxf cross-2.95.3.tar.bz2 设置执行路径,在.bashrc中添加 然后,退出控制台,重新启动控制台,xlanchen2007.6.4,Embedded Operating Systems,49,检查是否建立好交叉编译环境 对arm-linux使用tab键功能 命令:arm-linux-gcc v,xlanchen2007.6.4,Embedded Operating Systems,50,配置和编译arm linux,修改Makefile中 目标板体系结构 交叉编译器,xlanchen2007.6.4,Embed

27、ded Operating Systems,51,我们考虑在skyeye上模拟ep7312,下载armlinux4skyeye 解压缩,xlanchen2007.6.4,Embedded Operating Systems,52,进入armlinux4skyeye installguide.txt,xlanchen2007.6.4,Embedded Operating Systems,53,为Skyeye模拟的ep7312进行如下修改: linux-2.4.x/drivers/char/Makefile, 增加 obj-$(CONFIG_LCD) += lcd_drv.o obj-$(CONF

28、IG_TOUCH_SCREEN) += skyeye_ts_drv.o linux-2.4.x/drivers/char/Config.in, 增加 tristate SkyEye LCD support(for EP7312) CONFIG_LCD tristate SkyEye Touch Screen support(for EP7312) CONFIG_TOUCH_SCREEN 增加lcd_drv.ch, lcd_struct.h, skyeye_ts_drv.ch, ep7312_sys.h files 到 linux/drivers/char/目录中,xlanchen2007.6.

29、4,Embedded Operating Systems,54,清除,命令: make mrproper make clean 配置,命令 make xconfig 在System Type中选择CLPS711X/EP721X和CLEP7312 在File System中,确保 /proc file system support ROM file system support Second extended fs support,xlanchen2007.6.4,Embedded Operating Systems,55,在Block Devices选择 RAM disk support In

30、itial RAM disk (initrd) support 在Character devices选择 SkyEye LCD support(for EP7312) SkyEye Touch Screen support(for EP7312) 建立依赖关系并编译,命令 make dep;make,xlanchen2007.6.4,Embedded Operating Systems,56,检查是否存在编译好的ARM Linux内核,xlanchen2007.6.4,Embedded Operating Systems,57,主要内容,一、嵌入式Linux开发综述 二、Linux的配置和编译

31、 三、根文件系统及其制作,xlanchen2007.6.4,Embedded Operating Systems,58,三、建立根文件系统,1、根文件系统的内容及其准备 2、选择根文件系统的格式及其设置,xlanchen2007.6.4,Embedded Operating Systems,59,根文件系统,Linux内核在系统启动期间进行的最后操作之一就是安装根文件系统。 根文件系统一直都是所有类UNIX系统不可或缺的组件 根文件系统的顶层目录各有其特殊的用法和目的。 其中一部分往往与多用户有关 在嵌入式系统中,这一部分是不必要的,xlanchen2007.6.4,Embedded Oper

32、ating Systems,60,根文件系统中的内容由FHS(Filesystem Hierarchy Standard,文件系统层次标准) 制定 制定该标准的组织为FHSG(FHS Group,http:/ Operating Systems,61,虚拟机安装的Linux下的根目录 和romfs下的目录,必要的用户命令(二进制文件),bootloader使用的静态文件,设备文件和其他特殊文件,系统配置文件,包括启动文件,用户主目录,必要的链接库,mount点,用于暂时安装文件系统,附加的软件套件,提供内核与进程信息的虚拟文件系统,root用户主目录,必要的系统管理员命令 (二进制文件),临时

33、文件,在第二层中包含大量的用户应用程序和文件,监控程序和工具程序所存放的可变数据,xlanchen2007.6.4,Embedded Operating Systems,62,建立根文件系统,建立根文件系统, 首先为多用户提供的可扩展环境的所有目录都应该省略 /home,/mnt,/opt,/root 甚至可以不要 /tmp和/var,这要根据实际情况确定 根据引导加载程序和它的配置情况,决定是否需要/boot 下列几个是比较重要的 /bin, /dev, /etc, /lib, /proc, /sbin, /usr /usr和/var这两个顶层目录与根目录非常像,有自己的目录结构,xlanc

34、hen2007.6.4,Embedded Operating Systems,63,xlanchen2007.6.4,Embedded Operating Systems,64,容易混淆的几个目录之一,/bin, /sbin, /usr/bin, /usr/sbin 普通用户和超级用户都比较有用的命令放在/bin下 普通用户不使用,只有超级用户比较有用的命令放在/sbin下 不常用的用户命令放在/usr/bin下 不常用的超级用户命令放在/usr/sbin下,xlanchen2007.6.4,Embedded Operating Systems,65,容易混淆的几个目录之二,/lib, /us

35、r/lib 系统启动需要的以及上述比较有用的命令所需要的库文件通常放在/lib下 所有其他的库文件一般都放在/usr/lib下,有的软件包会在/usr/lib下为自己所需的库文件建立一个专门的目录 例如Perl 5.x安装完后,会产生一个/usr/lib/perl5目录,xlanchen2007.6.4,Embedded Operating Systems,66,设置根文件系统的目录骨架:,为tmp目录的使用权打开sticky位, 确保/tmp下建立的文件只有建立它 的用户有权删除,建立根目录,建立顶层目录,建立/var的目录结构,建立/usr的目录结构,xlanchen2007.6.4,Em

36、bedded Operating Systems,67,根文件系统上的内容包括:,链接库 内核模块 内核映像 设备文件 系统应用程序 系统初始化文件 ,xlanchen2007.6.4,Embedded Operating Systems,68,为目标系统准备链接库,1、glibc 2、uClibc,xlanchen2007.6.4,Embedded Operating Systems,69,glibc,glibc套件包含若干链接库。主要包含4种类型的文件 实际的共享链接库,文件名为libLIBRARY_NAME-GLIBC_VERSION.so,例如glibc 2.5的数学链接库为libm-

37、2.5.so,xlanchen2007.6.4,Embedded Operating Systems,70,主修订版本的符号链接,文件名为libLIBRARY_NAME.so.MAJOR_REVISION_VERSION 例如实际的数学链接库libm-2.5.so, 其符号连接的名称为libm.so.6,xlanchen2007.6.4,Embedded Operating Systems,71,与版本无关的符号链接指向主修订版本的符号链接,用于为需要链接特定链接库的所有程序提供一个通用的条目,与主修订版本号或glibc涉及的版本无关。文件名为libLiBRARY_NAME.so, 例如lib

38、m.so指向libm.so.6,libm.so.6指向实际的共享链接库libm-2.2.3.so,xlanchen2007.6.4,Embedded Operating Systems,72,静态链接库包文件, 文件名格式为 libLIBRARY_NAME.a, 如动态装载库libdl的静 态包文件就是libdl.a,xlanchen2007.6.4,Embedded Operating Systems,73,我们只需前两种。 其余的文件只有在链接执行文件的时候才会用到,执行应用程序时不需要,xlanchen2007.6.4,Embedded Operating Systems,74,动态链接

39、器及其符号连接,除了链接库文件,还需要复制动态链接器及其符号连接 动态链接器的文件名,通常叫做 ld-GLIBC_VERSION.so,xlanchen2007.6.4,Embedded Operating Systems,75,动态链接器的符号链接 对于i386、arm或m68k,通常为 ld-linux.so.MAJOR_REVISION_VERSION 对于MIPS或PPC,则通常为 ld.so. MAJOR_REVISION_VERSION,xlanchen2007.6.4,Embedded Operating Systems,76,在向目标板的根文件系统实际复制任何 glibc组件前

40、,应先找出应用程序需要哪 些glibc组件。 可以使用ldd命令显示在主机上运行的文件所依赖的库 但是,对将要运行在目标端的命令,ldd可能不行,此时最好使用交叉编译环境提供的相关命令,xlanchen2007.6.4,Embedded Operating Systems,77,uClibc,uClibc是glibc的替代品,实现了部分必要的链接库。 网站:http:/www.uclibc.org/ 若下载的是源代码,则 make clean make config make CROSS=arm-linux- make PREFIX= install 若下载的是已经编译好的,则需要将库文件拷贝

41、到根文件系统目录下的lib目录中,xlanchen2007.6.4,Embedded Operating Systems,78,若只拷贝需要的库文件,则需要采用类似glibc的方法找出目标板所依赖的uClibc 一般情况下,为了更好的使用uClibc,需要安装与uClibc相配套的交叉编译工具链,可以到uClibc网站获取帮助,通常需要打补丁,xlanchen2007.6.4,Embedded Operating Systems,79,准备内核模块和内核映像,为目标系统准备内核模块 如果已经建立好内核模块,就将它们复制到目标板的/lib目录里 为目标系统准备内核映像 这与引导加载程序的能力和配

42、置有关 如果设置成从根文件系统启动内核,就要将内核映像复制到目标板的根文件系统的/boot目录下,xlanchen2007.6.4,Embedded Operating Systems,80,为目标系统建立设备文件,在Linux根文件系统中,所有的设备文件都放在/dev目录里,下面列出了一些基本的/dev条目,xlanchen2007.6.4,Embedded Operating Systems,81,可以使用如下的命令建立上表中的几个条目(需要root权限),-m指明设备访问权限,等等,xlanchen2007.6.4,Embedded Operating Systems,82,xlanch

43、en2007.6.4,Embedded Operating Systems,83,此外,/dev目录下还包含若干必要的符号链接,如 fd/proc/self/fd stdinfd/0 stdoutfd/1 stderrfd/2,xlanchen2007.6.4,Embedded Operating Systems,84,建立符号链接,xlanchen2007.6.4,Embedded Operating Systems,85,可以看一下,虚拟机中Linux主机上的 dev目录 下图为用过的romfs的dev目录,xlanchen2007.6.4,Embedded Operating Syste

44、ms,86,应用程序,Linux拥有丰富的命令,但是嵌入式Linux并不需要这么多的命令 有两种方法: 选择少量有用的Linux命令 尽可能包含多的命令,但是对命令的功能进行裁减 对于后者,介绍3个有用的套件 BusyBox TinyLogin Embutils,xlanchen2007.6.4,Embedded Operating Systems,87,BusyBox,BusyBox目前由Erik Andersen来维护 网站:http:/ 下载:http:/ 它把许多常见应用程序缩微版本组合到一个单独的小巧的可执行程序中,一般含有比较少的选项,更小的体积,不过所包含的这些 选项能够提供用户

45、所需要的大部分功能。 能够为任何一个小型或嵌入式系统提供一个相当完整的环境 提供相当程度的模块化功能,很容易为目标板定制,xlanchen2007.6.4,Embedded Operating Systems,88,例如,下载busybox-0.60.5 解压缩 配置命令,根据需要在Config.h中修改 编译、安装 若希望使用uClibc提供的库,那么交叉编译器改为uclibc相关的编译器,xlanchen2007.6.4,Embedded Operating Systems,89,查看rootfs下的各个bin目录,xlanchen2007.6.4,Embedded Operating S

46、ystems,90,TinyLogin,网站:http:/ 下载:http:/ TinyLogin将许多登录工具放在单个二进制文件中,通常会与BusyBox并用,两者由相同的开发者维护 TinyLogin中的大多数命令要使用root权限执行,xlanchen2007.6.4,Embedded Operating Systems,91,例,下载tinylogin-1.2 解压缩,然后配置 使用glibc或者uclibc的交叉编译器对其进行编译,例如 在root权限下将tinylogin-1.2安装到根文件系统目录中,xlanchen2007.6.4,Embedded Operating Syst

47、ems,92,xlanchen2007.6.4,Embedded Operating Systems,93,xlanchen2007.6.4,Embedded Operating Systems,94,Embutils,网站:http:/www.fefe.de/embutils/ 这是针对主流Unix命令提供的一组经过简化和优化的替代品。目前支持ARM、i386、PPC和MIPS 其维护者与diet libc相同,只能静态链接diet libc,xlanchen2007.6.4,Embedded Operating Systems,95,定制应用程序,自己的应用程序也要放在根文件系统的某个目录

48、下,这取决于应用程序所拥有的组件数量和类型 如果二进制文件较少,可以考虑放到/bin目录下 如果二进制文件多且复杂并且包含一些数据文件,最好在根文件系统中增加一个单独的目录,例如/project 第二种情况下,通常需要设置PATH环境变量,以便能够找到可执行文件,xlanchen2007.6.4,Embedded Operating Systems,96,准备系统初始化文件,系统初始化也是Unix系统很重要的一部分,正如我们之前所说,内核的最后一部初始化操作为启动init进程,这个程序负责创建一些其他进程并且启动系统的一些关键组件运行 在Linux中,init进程模仿了System V的init,这对于嵌入式Linux而言,功能太强大 我们将介绍 标准的system V 初始化 BusyBox初始化,xlanchen2007.6.4,Embedded Operating Systems,97,关于init的进一步说明,事实上,内核并不关心init进程是哪一个,init进程只不过代表了内核在初始化完成后要启动应用程序 我们可以修改启动

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1