欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    51 uClinux操作系统原理介绍.pdf

    • 资源ID:70321862       资源大小:305.43KB        全文页数:56页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    51 uClinux操作系统原理介绍.pdf

    嵌入式系统程序设计嵌入式系统程序设计大连理工大学软件学院嵌入式系统工程系赖晓晨大连理工大学软件学院嵌入式系统工程系赖晓晨uClinux操作系统原理介绍操作系统原理介绍?uClinux简介简介?uClinux架构架构?BusyBox工具集工具集一、一、uClinux简介简介?uClinux是是Linux2.0版本的一个分支,版本的一个分支,全称全称Micro Control Linux,即,即“微控制领域的微控制领域的linux系统系统”,是,是GNU项目,代码完全开放。项目,代码完全开放。?uClinux采用采用flat(平面型)内存模型,专门应用于没有(平面型)内存模型,专门应用于没有MMU的的CPU。?使用的使用的Romfs文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟ram盘的方法进行处理盘的方法进行处理(ram盘将采用盘将采用ext2文件系统文件系统)。uClinux的历史发展的历史发展?1998年年1月月uClinux发行第一版,该版本基于发行第一版,该版本基于Palm PDA实现;实现;?1999年年2月份成功移植到月份成功移植到Motorola的的ColdFire系列处理器系列处理器MCF5206和和MCF5307;?uClinux发行至今已经历多个版本,最常用的版本为发行至今已经历多个版本,最常用的版本为uClinux-dist-20040408;?目前的目前的uClinux不仅支持不仅支持NOMMU处理器,同时也支持处理器,同时也支持MMU处理器,包括处理器,包括ARM、MIPS、sh、68K、x86甚至甚至SPARC等高性能处理器,并在等高性能处理器,并在60个以上基于这些处理器的开发平台成功实现。个以上基于这些处理器的开发平台成功实现。uClinux内核及版本内核及版本?uClinux基于基于linux内核版本。内核版本。?2.0.38:比较成熟。:比较成熟。?2.4.x:常用版本:常用版本?2.6.x:最新版本:最新版本?uClinux内核大小约内核大小约500k,如果加上一些基本应用,不超过,如果加上一些基本应用,不超过900k,很适合嵌入式系统。,很适合嵌入式系统。uClinux的特点的特点?广泛的处理器结构和硬件平台支持:基于广泛的处理器结构和硬件平台支持:基于Linux-2.4.x内核的内核的uClinux,支持,支持19种处理器结构,并在种处理器结构,并在60种以上的硬件开发平台成功实现。种以上的硬件开发平台成功实现。?完全的完全的Linux内核的特性:内核的特性:uClinux具备标准具备标准Linux系统的稳定性,并且支持系统的稳定性,并且支持linux内核约定的全部的特性,包括内核优先级特性以及许多的文件系统,设备驱动。内核约定的全部的特性,包括内核优先级特性以及许多的文件系统,设备驱动。uClinux的特点(续)的特点(续)?占用空间小:占用空间小:uClinux内核不超过内核不超过512KB,加上工具不超过,加上工具不超过900KB。UClinux是一个高度可定制化的内核,通过定制内核可以获得到一个是一个高度可定制化的内核,通过定制内核可以获得到一个300k以下的可固化的内核压缩镜像,包括终端和一些基本的设备驱动以及只读文件系统。以下的可固化的内核压缩镜像,包括终端和一些基本的设备驱动以及只读文件系统。uClinux的特点(续)的特点(续)?重写了标准重写了标准c函数库:函数库:uClinux系统中所有应用程序使用了嵌入式的标准系统中所有应用程序使用了嵌入式的标准C函数库函数库uClibc或或uC-libc,该函数库精简了,该函数库精简了Linux系统中的标准函数库系统中的标准函数库libc。uClinux的特点(续)的特点(续)?丰富的应用软件:丰富的应用软件:uClinux发布包中有大量的应用程序,包括各种网络协议、服务,图形界面,音频播放软件等等。除少数情况外,在发布包中有大量的应用程序,包括各种网络协议、服务,图形界面,音频播放软件等等。除少数情况外,在uClinux平台上可完全使用平台上可完全使用Linux应用程序接口,因此,用户可以移植应用程序接口,因此,用户可以移植Linux上的应用程序到上的应用程序到uClinux系统。除了与硬件相关代码和转换虚拟地址到物理的内存镜像外,几乎所有的代码不需要改变就可以编译。系统。除了与硬件相关代码和转换虚拟地址到物理的内存镜像外,几乎所有的代码不需要改变就可以编译。uClinux的特点(续)的特点(续)?低廉的成本:低廉的成本:?软件方面,自由开放的系统、开发工具和大量应用程序,可以节省用户的开发投入。软件方面,自由开放的系统、开发工具和大量应用程序,可以节省用户的开发投入。?硬件方面,内存管理单元硬件方面,内存管理单元MMU核心大小约占典型的核心大小约占典型的ARM SoC(System-on-Chip单片机单片机)晶体的晶体的30%,典型的网络和嵌入式系统里有一半以上的应用程序不需要,典型的网络和嵌入式系统里有一半以上的应用程序不需要MMU。uClinux的特点(续)的特点(续)?开源软件:源代码开放使用户得以跟踪和定制最核心和底层的代码以满足用户系统的需求。同时自由软件生命力强大,不断升级的新版本以及强大的网上技术支持给用户产品的维护和升级带来很大的方便。开源软件:源代码开放使用户得以跟踪和定制最核心和底层的代码以满足用户系统的需求。同时自由软件生命力强大,不断升级的新版本以及强大的网上技术支持给用户产品的维护和升级带来很大的方便。?完美的文件系统:完美的文件系统:uClinux支持一般的文件系统如支持一般的文件系统如NFS,EXT2,FAT16/32等,同时更支持专为嵌入式系统设计的等,同时更支持专为嵌入式系统设计的ROMFS、JFFS文件系统,在通常应用中,更多的使用后面的文件系统。文件系统,在通常应用中,更多的使用后面的文件系统。uClinux小型化方法小型化方法?采用采用romfs文件系统。文件系统。?romfs文件系统比文件系统比ext2需要更少的代码;需要更少的代码;?romfs文件系统相对简单,超级块文件系统相对简单,超级块(superblock)需要更少的存储空间。需要更少的存储空间。?重写了应用程序库,相对于越来越大且越来越全的重写了应用程序库,相对于越来越大且越来越全的glibc库,库,uClibc对对glibc做了精简。做了精简。uClinux的实时性问题的实时性问题?uClinux本身并没有关注实时问题,它并不是为了本身并没有关注实时问题,它并不是为了Linux的实时性而提出的。另外有一种的实时性而提出的。另外有一种Linux-Rt-linux关注实时问题。关注实时问题。?Rt-linux执行管理器把普通执行管理器把普通Linux的内核当成一个任务运行,同时还管理了实时进程。而非实时进程则交给普通的内核当成一个任务运行,同时还管理了实时进程。而非实时进程则交给普通Linux内核处理。内核处理。?uClinux可以使用可以使用Rt-linux的的patch,从而增强,从而增强uClinux的实时性,使得的实时性,使得uClinux可以应用于工业控制、进程控制等一些实时要求较高的应用。且保持了与标准可以应用于工业控制、进程控制等一些实时要求较高的应用。且保持了与标准linux的兼容。的兼容。运行运行uClinux的硬件平台的硬件平台?运行运行uClinux的硬件平台主要包括如下几个部分:的硬件平台主要包括如下几个部分:?cpu(ARMv4指令集兼容指令集兼容)?Uart?memory controller?定时器定时器?flash存储器,存储器,sdram存储器存储器?中断控制器和中断控制器和DMA。uClinux的开发环境的开发环境?宿主机运行宿主机运行linux操作系统,或使用操作系统,或使用cygwin模拟模拟linux操作系统操作系统?宿主机安装宿主机安装GNU开发套件开发套件?Gcc、Binutils、Gdb:arm-elf-gcc?uClinux的打印终端:的打印终端:uClinux的默认终端是串口,内核在启动时所有的信息都打印到串口终端的默认终端是串口,内核在启动时所有的信息都打印到串口终端(printk函数函数),也可以通过串口终端与系统交互。,也可以通过串口终端与系统交互。?uClinux在启动时启动了在启动时启动了telnetd,操作者可以远程登录上系统,从而控制系统的运行。,操作者可以远程登录上系统,从而控制系统的运行。uClinux 系统组成系统组成?一个基于一个基于uClinux 的完整的嵌入式系统由三个部分组成:系统引导程序、的完整的嵌入式系统由三个部分组成:系统引导程序、uClinux 操作系统内核和文件系统。操作系统内核和文件系统。bootloaderOS内核内核文件系统文件系统uClinux系统的系统的flash映像映像RAM系统引导程序系统引导程序?系统引导程序通常称为系统引导程序通常称为Boot Loader,是在任何硬件平台上执行的第一段代码,相当于,是在任何硬件平台上执行的第一段代码,相当于PC上的上的BIOS,主要负责系统初始化工作,然后将系统控制权交给操作系统,控制权交给操作系统后,系统的运行和,主要负责系统初始化工作,然后将系统控制权交给操作系统,控制权交给操作系统后,系统的运行和Boot Loader 再无任何关系。再无任何关系。?uClinux的发行包中不包含的发行包中不包含Boot Loader,Boot Loader必须由用户自己设计,但用户可以直接使用或参考一些开源的必须由用户自己设计,但用户可以直接使用或参考一些开源的Boot Loader软件工程。软件工程。Boot Loader的大小由其设计功能所决定,最小只有几的大小由其设计功能所决定,最小只有几K字节,功能复杂的一般也不超过字节,功能复杂的一般也不超过100K字节。字节。操作系统内核操作系统内核?uClinux 操作系统内核,完成的功能和大家熟悉的操作系统内核,完成的功能和大家熟悉的Linux内核相同,包括进程调度、内存管理、文件系统管理、网络接口和进程间通信。内核相同,包括进程调度、内存管理、文件系统管理、网络接口和进程间通信。?使用未压缩的系统内核,一般要占用使用未压缩的系统内核,一般要占用400K字节到字节到900K字节空间,如果是压缩后的系统内核,则占用空间一般在字节空间,如果是压缩后的系统内核,则占用空间一般在300K字节到字节到500K字节之间。字节之间。文件系统文件系统?文件系统主要存储用户应用程序,同时包括系统配置文件、系统程序和必需的驱动程序,其占用空间由用户的应用程序规模决定,从文件系统主要存储用户应用程序,同时包括系统配置文件、系统程序和必需的驱动程序,其占用空间由用户的应用程序规模决定,从200K字节到字节到1M字节不等。字节不等。?可执行文件格式可执行文件格式?coff(common object file format):一种通用的对象文件格式:一种通用的对象文件格式?elf(excutive linked file):一种为:一种为Linux系统所采用的通用文件格式,支持动态连接系统所采用的通用文件格式,支持动态连接?flat:elf格式有很大的文件头,格式有很大的文件头,flat文件对文件头和一些段信息做了简化文件对文件头和一些段信息做了简化uClinux应用程序格式应用程序格式?uClinux采用采用flat可执行文件格式,可以使用可执行文件格式,可以使用elf2flt工具把工具把elf格式可执行文件转换为格式可执行文件转换为flat格式文件。格式文件。?当用户要执行一个应用时,内核的执行文件加载器(当用户要执行一个应用时,内核的执行文件加载器(fs/binfmt_flat.c)将对)将对flat文件进行进一步处理,主要是对代码段和数据段进行修正。文件进行进一步处理,主要是对代码段和数据段进行修正。?应用程序在连接时并不知道将来要在系统的哪一段内存上运行,因此要求在任何地址都能运行,要做到地址无关(应用程序在连接时并不知道将来要在系统的哪一段内存上运行,因此要求在任何地址都能运行,要做到地址无关(PIC:position independent code)。)。flat(扁平)格式(扁平)格式二、二、uClinux内核架构内核架构文件系统模块文件系统模块文件系统文件系统内核初始化内核初始化启动模块启动模块系统调用处理程序(系统调用处理程序(system call handler)进程调用进程调用驱动程序驱动程序虚拟文件系统管理模块虚拟文件系统管理模块块设备驱动块设备驱动 字符设备驱动字符设备驱动海量设备驱动海量设备驱动Socket驱动程序驱动程序网络模块网络模块网络设备驱动程序网络设备驱动程序IPC模块模块MM模块模块异常处理异常处理C运行库运行库内核:内核:?启动模块启动模块负责用来启动启动模块启动模块负责用来启动linux内核,包括系统堆栈初始化,把压缩的内核,包括系统堆栈初始化,把压缩的linux映象从映象从flash解压到解压到ram中,并把控制权交给内核初始化例程。这部分内容高度硬件相关,代码要尽量精简。中,并把控制权交给内核初始化例程。这部分内容高度硬件相关,代码要尽量精简。uClinux内核架构分析内核架构分析?内核初始化模块内核初始化的入口地址是:内核初始化模块内核初始化的入口地址是:start_kernel(在(在init/main.c中),它初始化内核的其他部分,包括异常、中断、内存页、调度、驱动程序等。并启动中),它初始化内核的其他部分,包括异常、中断、内存页、调度、驱动程序等。并启动init进程进入多任务环境。进程进入多任务环境。uClinux内核架构分析(续)内核架构分析(续)?系统调用和异常处理当系统调用和异常处理当init程序运行时,内核对整个系统的运行不再进行直接控制,而是通过系统调用给应用程序提供服务和响应外部及内部的异步事件。当发生用户进程中断时,内核获得控制权,用户程序挂起,处理中断,之后返回。程序运行时,内核对整个系统的运行不再进行直接控制,而是通过系统调用给应用程序提供服务和响应外部及内部的异步事件。当发生用户进程中断时,内核获得控制权,用户程序挂起,处理中断,之后返回。uClinux内核架构分析(续)内核架构分析(续)?驱动程序驱动程序是整个驱动程序驱动程序是整个linux内核的主要组成部分,控制着操作系统和外部设备的交互。系统启动时,需要一个输出调试信息的设备。这个设备往往通过串口来实现。内核的主要组成部分,控制着操作系统和外部设备的交互。系统启动时,需要一个输出调试信息的设备。这个设备往往通过串口来实现。uClinux内核架构分析(续)内核架构分析(续)?文件系统文件系统uClinux同样支持多个文件系统,但针对嵌入式系统做了一些取舍。一般支持同样支持多个文件系统,但针对嵌入式系统做了一些取舍。一般支持ROMFS、EXT2、RAM FS、NFS等。其中等。其中ROMFS是最简单的只读文件系统,占用的空间最少,可用作根文件系统,存放是最简单的只读文件系统,占用的空间最少,可用作根文件系统,存放linux启动时用到的设备文件、配置文件和程序等。启动时用到的设备文件、配置文件和程序等。uClinux内核架构分析(续)内核架构分析(续)?内存管理:先看一下内存管理:先看一下标准标准linux的内存管理。它至少实现了以下功能:的内存管理。它至少实现了以下功能:?运行比内存还要大的程序。理想情况下应该可以运行任意大小的程序运行比内存还要大的程序。理想情况下应该可以运行任意大小的程序?可以运行只加载了部分的程序,缩短了程序启动的时间可以运行只加载了部分的程序,缩短了程序启动的时间?可以使多个程序同时驻留在内存中提高可以使多个程序同时驻留在内存中提高CPU的利用率的利用率?可以运行重定位程序。即程序可以位于内存中的任何一处,而且可以在执行过程中移动。可以运行重定位程序。即程序可以位于内存中的任何一处,而且可以在执行过程中移动。uClinux内核架构分析(续)内核架构分析(续)?内存管理:先看一下标准内存管理:先看一下标准linux的内存管理。它至少实现了以下功能:的内存管理。它至少实现了以下功能:?代码机器无关。程序不必事先约定机器的配置情况。代码机器无关。程序不必事先约定机器的配置情况。?减轻程序员分配和管理内存资源的负担。减轻程序员分配和管理内存资源的负担。?可以进行代码共享。例如,如果两个进程运行同一个程序,它们应该可以共享程序代码的同一个副本。可以进行代码共享。例如,如果两个进程运行同一个程序,它们应该可以共享程序代码的同一个副本。?提供内存保护,内核保护单个进程的数据和代码以防止非授权进程修改它们。否则,用户程序可能会偶然(或恶意)的破坏内核或其它用户程序。提供内存保护,内核保护单个进程的数据和代码以防止非授权进程修改它们。否则,用户程序可能会偶然(或恶意)的破坏内核或其它用户程序。uClinux内核架构分析(续)内核架构分析(续)?虚存系统并不是没有代价的。虚存系统并不是没有代价的。?内存管理需要地址转换表和其他一些数据结构,留给程序的内存减少了。内存管理需要地址转换表和其他一些数据结构,留给程序的内存减少了。?地址转换增加了每一条指令的执行时间,而对于有额外内存操作的指令会更严重。地址转换增加了每一条指令的执行时间,而对于有额外内存操作的指令会更严重。?当进程访问不在内存的页面时,系统发生失效。系统处理该失效,并将页面加载到内存中,极耗时间的磁盘当进程访问不在内存的页面时,系统发生失效。系统处理该失效,并将页面加载到内存中,极耗时间的磁盘I/O操作。操作。总之内存管理活动占用了相当一部分总之内存管理活动占用了相当一部分cpu时间(在较忙的系统中大约占时间(在较忙的系统中大约占10)。)。uClinux内核架构分析(续)内核架构分析(续)?内存管理内存管理1.uClinux不使用虚拟内存管理技术,但内存仍然分页(不使用虚拟内存管理技术,但内存仍然分页(4k页面),采用实存储器管理策略,对内存的访问直接使用物理地址。页面),采用实存储器管理策略,对内存的访问直接使用物理地址。2.进程运行前,必须分配足够的内存页,然后把程序全部载入内存,这与采用虚存的进程运行前,必须分配足够的内存页,然后把程序全部载入内存,这与采用虚存的linux有明显不同,是一种倒退。有明显不同,是一种倒退。uClinux内核架构分析(续)内核架构分析(续)?内存管理内存管理3.操作系统对内存没有保护,各个进程(包括内核进程)共享同一个内存地址空间,开发人员权限增大,系统的安全性降低。操作系统对内存没有保护,各个进程(包括内核进程)共享同一个内存地址空间,开发人员权限增大,系统的安全性降低。4.开发人员要参与内存管理,从编译内核开始,要告诉系统开发板上都有哪些内存,供系统使用前作出标记。仍然是一种倒退。开发人员要参与内存管理,从编译内核开始,要告诉系统开发板上都有哪些内存,供系统使用前作出标记。仍然是一种倒退。uClinux内核架构分析(续)内核架构分析(续)?进程管理进程管理1.linux系统提供了一个系统调用系统提供了一个系统调用vfork,它假定系统在调用完,它假定系统在调用完vfork后会马上执行后会马上执行exec,因此,因此vfork并不复制父进程的页面。事实上子进程和父进程共享同一块地址空间,但是子进程不能更改父进程的数据段和堆栈。并不复制父进程的页面。事实上子进程和父进程共享同一块地址空间,但是子进程不能更改父进程的数据段和堆栈。uClinux内核架构分析(续)内核架构分析(续)?进程管理进程管理2.当子进程要执行当子进程要执行exec时,要调入被执行代码的数据和代码,覆盖子进程的存储区,此时将会发生写保护错误,这个错误将导致内核为子进程重新分配存储空间,从而使子进程可以正确执行。时,要调入被执行代码的数据和代码,覆盖子进程的存储区,此时将会发生写保护错误,这个错误将导致内核为子进程重新分配存储空间,从而使子进程可以正确执行。uClinux内核架构分析(续)内核架构分析(续)?运行时库(运行库、运行时间库)运行时库提供了应用程序和内核程序的接口。运行时库(运行库、运行时间库)运行时库提供了应用程序和内核程序的接口。uClibc是经过裁剪后的适用于嵌入式设备的是经过裁剪后的适用于嵌入式设备的C运行时库,它由运行时库,它由GNU的的glibc移植而来,去掉了不适合嵌入式系统的部分,并增加了对移植而来,去掉了不适合嵌入式系统的部分,并增加了对flat内存结构的支持。内存结构的支持。uClinux内核架构分析(续)内核架构分析(续)三、三、BusyBox工具集工具集?BusyBox 是很多标准是很多标准 Linux工具的一个单个可执行实现,它包含了一些简单的工具,例如工具的一个单个可执行实现,它包含了一些简单的工具,例如 cat 和和 echo,还包含了一些更大、更复杂的工具,例如,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及以及 telnet(不过它的选项比传统的版本要少);有些人将(不过它的选项比传统的版本要少);有些人将 BusyBox 称为称为 Linux 工具里的瑞士军刀。工具里的瑞士军刀。BusyBox的诞生的诞生?BusyBox 最初是由最初是由 Bruce Perens 在在 1996 年为年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的安装盘编写的。其目标是在一张软盘上创建一个可引导的GNU/Linux 系统,这可以用作安装盘和急救盘。系统,这可以用作安装盘和急救盘。?一张软盘可以保存大约一张软盘可以保存大约 1.4-1.7MB 的内容,因此这里没有多少空间留给的内容,因此这里没有多少空间留给 Linux 内核以及相关的用户应用程序使用。因此他编写了内核以及相关的用户应用程序使用。因此他编写了BusyBox。BusyBox的启示的启示?BusyBox 揭露了这样一个事实:很多标准揭露了这样一个事实:很多标准 Linux 工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如 grep和和 find)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。公共部分公共部分catlstftp$tftp$ls$cat$BusyBoxBusyBox对对shell命令的精简命令的精简?实际上,实际上,BusyBox 可以将大约可以将大约 3.5MB 的工具包装成大约的工具包装成大约 200KB 大小。这就为可引导的磁盘和使用大小。这就为可引导的磁盘和使用 Linux 的嵌入式设备提供了更多功能。我们可以对的嵌入式设备提供了更多功能。我们可以对 2.4 和和 2.6 版本的版本的 Linux 内核使用内核使用 BusyBox。BusyBox执行原理执行原理?BusyBox 使用了符号链接以便使一个可执行程序看起来像很多程序一样。对于使用了符号链接以便使一个可执行程序看起来像很多程序一样。对于BusyBox 中包含的每个工具来说,都会这样创建一个符号链接,这样就可以使用这些符号链接来调用中包含的每个工具来说,都会这样创建一个符号链接,这样就可以使用这些符号链接来调用 BusyBox 了。了。BusyBox 然后可以通过然后可以通过 argv0 来调用内部工具。来调用内部工具。BusyBox执行原理执行原理示例示例/test.c#include int main(int argc,char*argv)int i;for(i=0;i Build BusyBox as a static binary(no shared libs)这个选项是一定要选择的,这样才能把这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库。否则必须要其他库文件才能运行,在单一个编译成静态链接的可执行文件,运行时才独立于其他函数库。否则必须要其他库文件才能运行,在单一个linux内核不能使他正常工作。内核不能使他正常工作。BusyBox配置重要选项配置重要选项?交叉编译:交叉编译:?Build Options-Do you want to build BusyBox with a Cross Compiler?选上选上Cross Compiler prefix如,如果交叉编译工具链在如,如果交叉编译工具链在/usr/bin目录下,前缀为目录下,前缀为arm-elf,则这里写,则这里写/usr/bin/arm-elf-BusyBox配置重要选项(续)配置重要选项(续)?安装选项:安装选项:?Installation Options-dont use/usr这个选项也一定要选,否则这个选项也一定要选,否则make install 后后busybox将安装在原系统的将安装在原系统的/usr下,这将覆盖掉系统原有的命令。选择这个选项后,下,这将覆盖掉系统原有的命令。选择这个选项后,make install后会在后会在busybox目录下生成一个叫目录下生成一个叫_install的目录,里面有的目录,里面有busybox和指向他的链接和指向他的链接.BusyBox配置重要选项(续)配置重要选项(续)?Shells选项:选项:Command line editing方向键,方向键,Tab补全等功能。补全等功能。构建构建BusyBox环境环境$make menuconfig/配置BusyBox$make/构建 BusyBox 的二进制文件。$make install/围绕 BusyBox 构建一个环境?BusyBox环境包括将标准 Linux 命令重定向到BusyBox的二进制文件的符号链接,它们都来自于busybox.links文件。这个文件是在编译BusyBox时创建的,它包含了已经配置的命令清单。在执行install时,就会检查busybox.links文件确定要创建的符号链接。BusyBox环境环境?编译好后在编译好后在busybox目录下生成子目录目录下生成子目录_install,里面的内容:里面的内容:drwxr-xr-xbinlrwxrwxrwxlinuxrc-bin/busyboxdrwxr-xr-xsbin其中可执行文件其中可执行文件busybox在在bin目录下目录下,其他的都是指向他的符号链接其他的都是指向他的符号链接.压缩压缩BusyBox?如果需要对如果需要对BusyBox映像的压缩,就需要记住两件事情:映像的压缩,就需要记住两件事情:?不要编译为静态二进制文件(这会将所有需要的库都包含到映像文件中)。相反,如果我们是编译为一个共享映像,那么它会使用其他应用程序使用的库(例如不要编译为静态二进制文件(这会将所有需要的库都包含到映像文件中)。相反,如果我们是编译为一个共享映像,那么它会使用其他应用程序使用的库(例如/lib/libc.so.X)。)。?使用使用 uClibc 进行编译,它的大小进行过优化,专门为嵌入式系统开发;而不要使用标准的进行编译,它的大小进行过优化,专门为嵌入式系统开发;而不要使用标准的glibc(GNU C 库)来编译。库)来编译。

    注意事项

    本文(51 uClinux操作系统原理介绍.pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开