加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 嵌入式Linux起步

嵌入式Linux起步.pdf

嵌入式Linux起步

搞军
2009-12-24 0人阅读 举报 0 0 暂无简介

简介:本文档为《嵌入式Linux起步pdf》,可适用于IT/计算机领域

Thesuccess'sroad嵌入式嵌入式LinuxLinux起步起步wwwfarsightcomcnwwwfarsightcomcn远见品质了解搭建嵌入式Linux系统远见品质什么是嵌入式系统?•无处不在融入生活远见品质嵌入式系统定义v嵌入式系统是以应用为中心以计算机技术为基础并且软硬件可裁剪适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。ØMP、PDA、手机ØDVD机、机顶盒Ø车载GPS系统、探测火星的机器人。远见品质嵌入式Linux系统简介v嵌入式系统开发已经进入位时代在当前的数字信息技术和网络技术高速发展的后PCPostPC时代嵌入式系统已经广泛的渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术、娱乐业以及人们的日常生活等方方面面中。随着国内外嵌入式产品的进一步开发和推广嵌入式技术越来越和人们的生活紧密结合。远见品质学习的目的学会编译内核?学会编写驱动程序?学会移植bootloader?学会开发GUI?……远见品质学习的重点站在全局进行领会不纠缠细节了解嵌入式系统开发的流程学习嵌入式系统开发的理念了解嵌入式系统开发的内容结合自身找到切入点确定学习内容以及学习的方法最重要的是知道做什么而不是怎么做远见品质初识嵌入式系统优龙FS开发板远见品质思考v上面的嵌入式系统开发板与手机有什么区别?v上面的嵌入式系统开发板中哪些部件是必须的?v嵌入式系统开发板和PC机有什么区别?远见品质嵌入式系统与PC机•处理器•存储器•输入•输出•软件(引导程序驱动程序操作系统应用程序)远见品质嵌入式系统与PC主板集成或外接卡USB芯片、网卡芯片其他设备主板集成MAX等芯片接口声卡音频芯片声音设备显示器LCD输出设备鼠标、键盘按键、触摸屏输入设备硬盘Flash芯片存储设备SDRAMDDR内存条SDRAM芯片内存CPU(Intel的Pentium、AMD的Athlon等)嵌入式处理器(ARMMIPS)CPUPC机嵌入式系统设备名称远见品质嵌入式系统与PC()不需要需要仿真器在本机就可开发调试借助服务器进行交叉编译开发环境操作系统包括或第三方提供需要移植协议栈操作系统含有大多数驱动程序或从网上下载直接使用每个设备驱动都必须针对电路板进行重新开发或移植一般不能直接下载使用驱动程序Windows、Linux等不需要移植WinCE、VxWorks、Linux等需要移植操作系统主板的BIOS引导无须改动Bootloader引导针对不同电路板进行移植引导代码PC机嵌入式系统远见品质嵌入式系统的特点v)嵌入式系统低功耗、体积小专用性强。嵌入式系统与PC机的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中能够把PC机中许多由板卡完成的任务集成在芯片内部从而有利于嵌入式系统设计趋于小型化。v)为了提高执行速度和系统可靠性嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中而不是存贮于磁盘等载体中。v)嵌入式系统的硬件和软件都必须高效率地设计系统要精简。操作系统一般和应用软件集成在一起。v)对软件代码质量要求很高。应该尽最大可能避免死机的情况发生。v)嵌入式系统开发需要专门的开发工具和开发环境。远见品质如何选择嵌入式CPU?vARMvPowerPCvMIPSvXscalevDSPvXv……••HowToChoiceHowToChoice远见品质嵌入式处理器使用调查WhatCPUswereusedinyourembeddedprojectsduringthepasttwoyearsWhichwillbeusedduringthenexttwo远见品质如何选择嵌入式操作系统?vLinuxvuCOSvWindowsCEvVxWorksvPalmOSvSymbian••HowToChoiceHowToChoice远见品质嵌入式操作系统使用调查WhichOSeshavebeeninyourembeddedsystemsduringthepastyearsWhichwillbeusedduringthenexttwo远见品质嵌入式Linux使用调查ActualandprojectedLinuxuse,overthelastfiveyears远见品质认识并熟练使用Linux操作系统远见品质Linux简介v姓名:Linuxv生日:年月v父亲:LinusTorvaldsv堂兄:UNIXv国别:芬兰v家庭住址:http:wwwlinuxorgv吉祥物:远见品质Linux关键字点击v社团(Community)v免费(Free)v开放(open)v易获得(available)v稳定(stable)v健壮(robust)vGPL(GeneralPublicLicense)v软件(software)远见品质Linux优点v提供了先进的网络支持v多任务、多用户v符合IEEEPOSIX标准v核心能仿真FPUv支持数十种文件系统格式v完全运行于保护模式v开放源代码v采用先进的内存管理机制更加有效地利用物理内存远见品质常用网址远见品质一些发行版vRedHatvFedoraCorevMandrakevSusevDebian远见品质Linux分区vLinux分区的形式vSwap分区v根分区vBoot分区v其他远见品质Linux的目录结构vbinbin该目录中存放Linux的常用命令vbootboot该目录下存放的都是系统启动时要用到的程序vdevdev该目录包含了Linux系统中使用的所有外部设备它实际上是访问这些外部设备的端口你可以访问这些外部设备与访问一个文件或一个目录没有区别。vsbinsbin该目录用来存放系统管理员的系统管理程序。远见品质Linux的目录结构()vetcetc该目录存放了系统管理时要用到的各种配置文件和子目录例如网络配置文件、文件系统等。vhomehome如果建立一个名为“xx”的用户那么在home目录下就有一个对应的“homexx”路径用来存放该用户的主目录。vliblib该目录用来存放系统动态连接共享库几乎所有的应用程序都会用到该目录下的共享库。远见品质Linux的目录结构()vlostfoundlostfound该目录在大多数情况下都是空的。但当突然停电、或者非正常关机后有些文件就临时存放在这里。vmntmnt该目录在一般情况下也是空的你可以临时将别的文件系统挂在该目录下。vprocproc可以在该目录下获取系统信息这些信息是在内存中由系统自己产生的。远见品质Linux的目录结构()vrootroot超级用户的主目录vtmptmp用来存放不同程序执行时产生的临时文件vusrusr用户应用程序和文件都存放在该目录下•与windows的组织结构的区别?远见品质Linux的基本命令vls:列出文件名vcat:显示文本文件vlessmore:分屏显示文件vrm:删除文件vcp:复制文件vmv:移动文件vmkdir:创建目录vrmdir:删除目录远见品质Linux的基本命令()vcd:转换目录vgrep:查找字符串vhead:显示文件开头vtail:显示文件结尾vsort:按次序显示文件vuniq:去掉文件中重复的行vdiff:比较两个文件vfile:测试文件内容远见品质Linux的基本命令()vecho:显示文本vdate:显示时间和日期vgzip:压缩文件vgunzip:解压缩文件vbzip:压缩文件vtar:打包和解包文件vwhereis:查找命令vwhich:查找实用程序远见品质Linux的基本命令()vps:列出进程vdf:检查文件系统空间占用情况vdu:显示磁盘空间的使用情况vkill:杀死进程vchmod:改变文件或目录的访问权限vchown:改变文件或目录的属主和组vchgrp:改变文件或目录所属的组vinfo:获得帮助远见品质Linux的基本命令()vpwd:显示当前工作目录的绝对路径vrpm:文件包管理vclear:清屏vln:创建文件链接vwho:列出系统上的用户名单vwrite:发送消息vtalk:与其他用户通信vman:获取帮助v思考:嵌入式开发VS系统管理?远见品质熟悉开发环境远见品质MiniCOM和超级终端v配置MiniCOMv配置超级终端远见品质需要熟悉的内容v开发板硬件基本配置v开发板与PC机连接方式vPC机相关配置v熟悉bootloader的使用远见品质嵌入式Linux开发流程电路设计(第版)BootLoader内核移植编译器移植电路设计(第版)电路设计(第版)文件系统开发应用程序开发远见品质嵌入式系统开发的内容远见品质嵌入式Linux编程基础远见品质Linux的编辑器vivvi的基本使用方法••输入模式输入模式••命令模式命令模式远见品质vi开始编辑v新增(append)aa从光标所在位置後面开始新增资料光标後的资料随新增资料向後移动。AA从光标所在列最後面的地方开始新增资料。v插入(insert)ii从光标所在位置前面开始插入资料光标後的资料随新增资料向後移动。II从光标列的第一个非空白字符前面开始插入资料。v开始(open)oo在光标所在列下新增一列并进入输入模式。OO在光标所在列上方新增一列并进入输入模式。远见品质vi删除与修改vvxx删除光标所在字符。vvdddd删除光标所在的列。vvrr修改光标所在字符r後接著要修正的字符vvRR进入取代状态新增资料会覆改原先资料直到按ESC回到指令模式下为止。vvss删除光标所在字符并进入输入模式。vvSS删除光标所在的列并进入输入模式。远见品质vi退出命令v<:q>不包存退出v<:q!>不保存强制性退出v<:w>保存编辑v<:wfilename>存入文件filename中v<:w!filename>强制性存入文件filename中v<:wq>(<:x>)保存并退出远见品质vi光标移动命令v<b>移动到当前单词的开始v<e>移动到当前单词的结尾v<w>向前移动一个单词v<h>向前移动一个字符v<j>向上移动一行v<k>向下移动一行v<l>向后移动一个字符远见品质vi改变与替换操作命令v<r>替换光标所在的字符v<R>替换字符序列v<cw>替换一个单词v<ce>同<cw>v<cb>替换光标所在的前一字符v<c$>替换自光标位置至行尾的所有字符v<C>同<c$>v<cc>替换当前行远见品质vi拷贝与粘贴命令v<yw>将光标所在单词拷入剪贴板v<y$>将光标至行尾的字符拷入剪贴板v<Y>同<y$>v<yy>将当前行拷入剪贴板v<p>将剪贴板中的内容粘贴在光标后v<P>将剪贴板中的内容粘贴在光标前远见品质GCC简介v全称为GNUCCGNU项目中符合ANSIC标准的编译系统v编译如C、C、ObjectC、Java、Fortran、Pascal、Modula和Ada等多种语言v一个交叉平台编译器适合在嵌入式领域的开发编译远见品质gcc编译器vGNUCompilerCollectionvC,C,ObjectiveC,Fortran,Java,Adavhttp:gccgnuorgGCCGCCJuly,GCCJune,GCCAugust,GCCMay,May,December,远见品质GCC简介vgcc所支持后缀名解释ØcC原始程序ØCcccxxC原始程序ØmObjectiveC原始程序Øi已经过预处理的C原始程序Øii已经过预处理的C原始程序ØsS汇编语言原始程序Øh预处理文件(头文件)Øo目标文件Øaso编译后的库文件远见品质编译器的作用源代码*c预处理器头文件*h编译器目标代码*o可执行文件引导代码库函数汇编处理链接vGcc的编译流程分为四个步骤Ø·预处理(PreProcessing)Ø·编译(Compiling)Ø·汇编(Assembling)Ø·链接(Linking)远见品质Make工程管理器v工程管理器顾名思义是指管理较多的文件vMake工程管理器也就是个“自动编译管理器”这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量同时它通过读入Makefile文件文件的内容来执行大量的编译工作远见品质MakefilevMakefile的作用是根据配置的情况构造出需要编译的源文件列表然后分别编译链接。vLinux内核中与Makefile相关的文件:Ø顶层Makefile:整个内核配置、编译的总体控制文件。Øconfig:内核配置文件包含由用户选择的配置选项用来存放内核配置后的结果。Øarch*Makefile:位于各种CPU体系目录下的Makefile如archarmMakefile是针对特定平台的Makefile。Ø各个子目录下的Makefile:比如driversMakefile负责所在子目录下源代码的管理。ØRulesmake:规则文件被所有的Makefile使用。远见品质Makefile基本结构vMakefile是Make读入的唯一配置文件Ø由make工具创建的目标体(target)通常是目标文件或可执行文件Ø要创建的目标体所依赖的文件(dependencyfile)Ø创建每个目标体时需要运行的命令(command)vMakefile格式target:dependencyfilescommandv例子helloo:hellochellohgcc–chelloc–ohelloo远见品质flags选项及其含义vffile指定file文件为描述文件如果file参数为“”符那么描述文件指向标准输入。如果没有“f”参数则系统将默认当前目录下名为makefile或者名为Makefile的文件为描述文件。vi忽略命令执行返回的出错信息。vs沉默模式在执行之前不输出相应的命令行信息。vr禁止使用buildin规则。vn非执行模式输出所有执行命令但并不执行。vt更新目标文件。vqmake操作将根据目标文件是否更新返回或非的状态信息。vp输出所有宏定义和目标文件描述。vdDebug模式输出有关文件和检测时间的详细信息。远见品质Makefile规则v隐式规则Ø隐含规则能够告诉make怎样使用传统的技术完成任务这样当用户使用它们时就不必详细指定编译的具体细节而只需把目标文件列出即可vC编译:c变为oØ$(CC)–c$(CPPFLAGS)$(CFLAGS)vC编译:cc或C变为oØ$(CXX)c$(CPPFLAGS)$(CXXFLAGS)远见品质Makefile规则v模式规则Ø模式规则是用来定义相同处理规则的多个文件的。它不同于隐式规则隐式规则仅仅能够用make默认的变量来进行操作而模式规则还能引入用户自定义变量为多个文件建立相同的规则从而简化了Makefile的编写Ø模式规则的格式类似于普通规则这个规则中的相关文件前必须用“”标明远见品质Make使用v直接运行makev选项ØCdir读入指定目录下的Makefileffile读入当前目录下的file文件作为MakefileØi忽略所有的命令执行错误ØIdir指定被包含的Makefile所在目录Øn只打印要执行的命令但不执行这些命令Øp显示make变量数据库和隐含规则Øs在执行命令时不显示命令Øw如果make在执行过程中改变目录打印当前目录名远见品质嵌入式交叉编译环境的创建远见品质开发工具调查Whatdevelopmenttoolsareyoumostlikelytouse远见品质Host与TargetLinux服务器(Host)客户机客户机客户机客户机交换机开发板(Target)串口•是一个基于x架构的计算机(Pentium处理器、Athlon处理器等)即i平台。•Target是目标平台比如ARM、MIPS、SuperH、PowerPC等。远见品质GCC交叉编译器vGNUBinutilsØGNUBinutils的主要工具有两个一个是连接程序ld另外一个是汇编程序as。其主要目的是为GNU系统提供汇编和连接工具。vGNUGCCØGNUGCC就是上面提到的GCCGCC主要是为GNU系统提供C编译器。现在支持多种语言这其中包括CC、Fortran、Java、ObjectiveC、甚至还有Ada。vGNUGLibcØ用于定义系统调用和其它一些基本的函数调用。远见品质GCC交叉编译器的生成v第步取得Binutils、GCC、Glibc源码。v第步配置并编译Binutils取得我们所需要的汇编和连接程序。v第步配置并编译GCC源码生成GCC编译器。一般是C编译器首先生成然后以这个为基础在结合下一步生成的Glibc的C函数库再编译生成其它编译器。v第步配置Glibc并编译生成Glibc的C函数库。v第步再次配置和编译GCC源码生成其它语言的编译器如C编译器等。远见品质代码结构远见品质设置环境变量exportPROJECT=SCTKexportPRJROOT=~$PROJECTexportTARGET=armlinuxexportPREFIX=$PROJECTtoolsexportTARGETPREFIX=$PREFIX$TARGETexportPATH=$PREFIXbin:$PATH远见品质TARGET常用的值shlinuxSuperHmipsellinuxMIPS(littleendian)mipslinuxMIPS(bigendian)armlinuxARMpowerpclinuxPowerPCTARGET的值实际平台远见品质交叉编译流程远见品质开发环境快速建立vv下载下载armarmelfelftoolstools<version>sh<version>shvv执行:执行:shsharmarmelfelftoolstools<version><version>shshvv配置环境变量配置环境变量•交叉编译环境非常重要!远见品质嵌入式系统开发的内容BootLoader内核移植编译器移植文件系统开发应用程序开发远见品质初识Bootloader远见品质Bootloader的概念vBootLoader就是在操作系统内核或用户应用程序运行之前运行的一段小程序。通过这段小程序我们可以初始化硬件设备、建立内存空间的映射图从而将系统的软硬件环境带到一个合适的状态以便为最终调用操作系统内核或用户应用程序准备好正确的环境。远见品质BootLoader的特征v初始化硬件特别是内存控制器v提供Linux内核的启动参数v启动Linux内核简化开发过程的一些特征:v读写存储器v通过串口网口上载文件到RAMv从RAM复制文件到Flash中远见品质Bootloader安装v系统加电或复位后所有的CPU通常都从CPU制造商预先安排的地址上取指令。比如SCB在复位的都从地址x取它的第一条指令。而嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM或FLASH等)被安排这个起始地址上因此在系统加电后CPU将首先执行BootLoader程序。也就是说对于基于SCB的这套系统我们的BootLoader是从地址开始存放的而这块起始地址需要采用可引导的固态存储设备如FLASH。远见品质控制BootLoader的设备或机制v串口通讯是最简单也是最廉价的一种双机通讯设备所以往往在BootLoader中主机和目标机之间都通过串口建立连接BootLoader程序在执行时通常会通过串口来进行IO比如:输出打印信息到串口从串口读取用户控制字符等。当然如果认为出口通讯速度不够也可以采用网络或者USB通讯那么相应的在BootLoader中就需要编写各自的驱动远见品质BootLoader的启动过程v多阶段的BootLoader能提供更为复杂的功能以及更好的可移植性。从固态存储设备上启动的BootLoader大多都是阶段的启动过程也即启动过程可以分为stase和stase两部分。远见品质BootLoader的操作模式v启动加载模式:这种模式也称为“自主”(Autonomous)模式也即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行整个过程并没有用户的介入。这种模式是BootLoader的正常工作模式。v下载模式:在这种模式下目标机上的BootLoader将通过串口连接或网络连接等通信手段从主机下载文件比如:下载应用程序、数据文件、内核映像等.从主机下载的文件通常首先被BootLoader保存到目标机的RAM中然后再被BootLoader写到目标机上的固态存储设备中。BootLoader的这种模式通常在系统更新时使用。远见品质BOOTLOADER的生命周期v初始化硬件Ø设置UARTØ设置网口Ø设置USBØ检测存储器v设置启动参数Ø内核硬件信息Ø波特率v跳转到LinuxKERNEL的首地址v消亡远见品质BootLoader的特征v初始化硬件特别是内存控制器v提供Linux内核的启动参数v启动Linux内核简化开发过程的一些特征:v读写存储器v通过串口网口上载文件到RAMv从RAM复制文件到Flash中远见品质Bootloader的重要功能v烧写flashv烧写内核v烧写文件系统v使用jtag口或其他远见品质常见的BootloaderX√XLoaderfromtheLARThardwareprojectXBLOBXX√LinuxbasedBIOSreplacementXLinuxBIOSXX√ROMableloaderforbootingsystemsthroughEthernetcardsXEtherbootXX√LoadsLinuxfromROMwithoutaBIOSXROLO√√√eCosbasedloader√RedBoot√√√Universalloader√UbootXX√LoadsLinuxfromDOSXLoadlinXX√GNU’ssuccessortoLILOXGRUBXX√MaindiskbootloaderforLinuxXLILOPowerPCARMxDescriptionMonitorBootloader远见品质FS的BIOS功能v主要有文件下载vFlash烧写v启动程序(存储在Flash中)v设置启动参数v设置启动操作系统远见品质BIOS具体功能v号功能:USB下载v号功能:串口下载v号功能:执行NANDFlash的烧写v号功能:从NANDFlash启动程序v号功能:擦除NANDFlash分区v号功能:烧写NorFlashv号功能:设置启动参数v号功能:设置自启动参数远见品质DNW窗口远见品质uboot简介vUboot是在PPCBoot基础上进化而来的一个开发源码的BootROM程序。v采用了高度模块化的编程方式远见品质UBoot程序结构v平台相关Øboard,cpu,libppc,libarm,include…v平台无关Øcommon,net,fs,drivers…v工具和文档Øtools,doc远见品质UBoot程序结构HeaderFilesandboardconfigsincludeFilesgenerictoXarchitecturelibiFilesgenerictoARMarchitecturelibarmFilesgenerictoPowerPCarchitecturelibppcCPUspecificfiles,mpcxx,ppcxx,armt,armt,xscale,icpuBoarddependentfiles,RPXlite(mpcxx),smdk(armt),sccdp(x)…board远见品质UBoot程序结构DigitalThermometerandThermostatdriversdttRealTimeClockdriversrtcHarddiskinterfacecodediskCommonuseddevicedriversdriversPowerOnSelfTestpostFileSystemCodefsNetworkingcodenetGenericlibraryfunctionslibgenericMiscfunctionscommon远见品质uboot代码分布vboard:与目标板相关的代码vcpu:与cpu相关的代码vinclude:头文件vcommon:通用代码vnet:网络相关代码vfs:文件系统相关代码vdisk:磁盘驱动相关代码远见品质uboot代码分布vdrivers:设备驱动程序vpost:加电自检vrtc:realtimeclockvdoc:文档vdtt:自动调温器驱动vtools:编译相关代码vlibxx:平台相关的文件远见品质uboot启动过程vstart:>reset:>cpuinitcrit>memsetup>relocate:>stacksetup:>startarmboot()>initsequencev>…v>mainloop()uboot执行go(或者bootm)命令引导Linux内核。远见品质uboot启动过程vStage:Ø基本的硬件初始化Ø为加载stage准备RAM空间Ø拷贝stage到RAM中Ø设置堆栈指针spØ跳到stage的入口点远见品质uboot启动过程vStage:Ø初始化本阶段要使用到的硬件设备Ø检测系统的内存映射Ø加载内核映像和文件系统映像Ø设置内核的启动参数Ø调用内核远见品质关键程序v串口初始化ØcpuarmtscxserialcvSDRAM初始化Øinclude…memoryhvFLASH初始化Øboardsmdkflashcv以太网初始化Øxxxxxxc远见品质编译ubootv配置ubootØmake<BOARDNAME>configmakesmdkconfigvBuildingØmakeCROSSCOMPILE=armlinuxv生成的文件:ØSystemmapThesymbolmapØubootUBootinELFØubootbinUBootrawbinaryimageØubootsrecUBootimageinMotorola'sSRecordformat远见品质移植uboot的步骤v下载源代码v阅读Readme文件v了解uboot结构v添加修改v编译v调试v发布vincludeconfigssmdkhvboardsmdksmdkcvintboardint(void)vintdraminit(void)vboardsmdkflashcvcpuarmtserialcvdriversrtlc远见品质烧写bootloaderv需要对Flash的烧写v利用flash烧写器v利用jtag工具远见品质嵌入式系统开发的内容BootLoader内核移植编译器移植文件系统开发应用程序开发远见品质了解并编译Linux内核远见品质内核的功能Ø系统调用Ø进程控制Ø内存管理Ø文件系统管理Ø设备驱动程序远见品质认识Linux内核版本v主版本ØØ,年更新v稳定版ØØ,月更新v稳定版更新Ø~Ø,周更新远见品质下载内核vhttp:kernelorgvwgethttp:kernelorgpublinuxkernelvwgethttp:kernelorglinux*bzsignvgpg–verifylinuxxxtarbzsignvtarjxvflinuxxxtarbz远见品质Linux内核v内核在系统中的位置Ø用户进程Ø系统调用接口Ø内核Ø硬件v什么是Linux内核?Ø从程序员的角度Ø从用户的角度远见品质Linux内核v内核子系统Ø进程调度Ø内存管理Ø内存管理Ø虚拟文件系统Ø网络Ø进程间通讯远见品质内核结构远见品质Linux内核结构initkernelmmipclibfsnetdriversarch•i•arm•ppc•mk•sh•……•i•arm•ppc•mk•sh•……include•char•usb•block•pci•……•char•usb•block•pci•……•kernel•mm•lib•kernel•mm•lib平台无关平台无关平台相关平台相关远见品质内核代码布局BugreportinstructionsREPORTINGBUGSKerneldocumentationDon'tmissit!DocumentationAlldevicedrivers(driversusb,etc)driversLinuxcopyingconditions(GNUGPL)COPYINGLinuxmaincontributorsCREDITSMaintainersofeachkernelpartVeryuseful!MAINTAINERSLinuxLinuxkernelcoreheadersincludelinuxArchitecturedependentheadersincludeasm<arch>KernelheadersincludeArchitecturedependentcodearch远见品质内核代码布局()ScriptsforinternalorexternalusescriptsTopLinuxmakefile(setsarchandversion)MakefileOverviewandbuildinginstructionsREADMECodeusedforprocesscommunicationipcFilesystems(fsext,etc)fsLinuxinitialization(includingmainc)initNetworksupportcode(notdrivers)netMemorymanagementcode(smalltoo!)mmMisclibraryroutines(zlib,crc)libLinuxkernelcore(verysmall!)kernel远见品质Linux内核v内核目录结构:usrsrcLinux***Øarch(重点)ØdriversØfsØincludeØinitØipcØkernelØmmØnetv内核源码与内核的关系?v编译模式Ø直接编译进内核Ø编译成模块远见品质编译Linux内核v进入到内核源代码目录Øcdusrsrclinuxvmakeconfigvmakexconfigvmakemenuconfigvmake远见品质快速编译v使用ccacheØhttp:ccachesambaorgv修改Makefile文件:ØCC=ccache$(CROSSCOMPILE)gccØHOSTCC=ccachegccv性能提升:Ø在FedoraCore系统中模块较多时提升Ø在嵌入式Linux系统中模块少提示远见品质编译生成的文件vvmlinuxØ未压缩的Linux内核varch<arch>bootzImageØ经zlib压缩后的Linux内核varch<arch>bootbzImageØ经zlib压缩后的Linux内核b是指big压缩更狠vbootvmlinuz<version>Ø经zlib压缩后的Linux内核远见品质编译生成的文件()vbootSystemmap<version>Ø内核符号地址vbootinitrd<version>imgØramdisk,要挂载的根文件系统vlibmodules<version>Ø模块vmodulesdepØ模块依赖文件远见品质裁剪Linuxv目的是创建嵌入式Linuxv裁剪的对象包括:ØLinux内核Ø库Ø守护进程ØGUI远见品质内核裁剪v选择合适的文件系统Øextextjffsv模块机制v网络协议v无用的驱动程序v调试信息远见品质共享库裁剪v思想:Ø通过提取和解析系统库内目标文件、符号的依赖关系通过对这些依赖构造关系模型进行关系演算根据应用程序中的符号信息在库目标文件一级实现系统库的裁剪。v步骤Ø确定待调函数集Ø确定系统库函数与目标文件的对应关系Ø确定系统库目标文件之间的相互依赖关系Ø生成裁剪后的系统库远见品质内核的交叉编译v修改目标平台Ø例如:ARM平台,crosscompilercommand:armlinuxgccØARCH=armØCROSSCOMPILE=armlinuxØTheMakefiledefineslaterCC=$(CROSSCOMPILE)gccv或运行下面命令ØmakeARCH=armCROSSCOMPILE=armlinux远见品质移植相关的文件v相关文件和目录ØarcharmconfiginØarcharmMakefileØarcharmbootMakefileØarcharmmachsc*Øincludeasmarmarchsc*ØarcharmtoolsmachtypesØarcharmbootcompressedheadscSØarcharmbootcompressedMakefilevLinux内核配置远见品质移植Linux内核varcharmconfiginvarcharmMakefilevarcharmmachsc*vincludeasmarmarchsc*varcharmkerneldebugarmvSvarcharmkernelentryarmvSvarcharmkernelheadarmvSvarcharmtoolsmachtypesvarcharmbootcompressedheadscSvarcharmbootcompressedMakefilevarcharmbootMakefile远见品质嵌入式系统开发的内容BootLoader内核移植编译器移植文件系统开发应用程序开发远见品质嵌入式文件系统开发远见品质Flash简介vFlash主要分为NOR和NAND两类ØNOR的读取速度比NAND稍快一些。ØNAND的写入速度比NOR快很多。ØNAND的擦除速度远比NOR快。Ø大多数写入操作需要先进行擦除操作。ØNAND的擦除单元更小相应的擦除电路更少远见品质Flash分类对比v接口差别v容量和成本v可靠性和耐用性Ø寿命(耐用性)Ø位交换Ø坏块处理v易用性v软件支持远见品质文件系统v文件系统(FileSystem)是一组程序它们告诉操作系统如何访问及解释存储在磁盘或磁带驱动器或者其它存储媒介上的内容v常见的文件系统包括:FAT和FAT(DOSWindows)、HPFS(OS)、NFS、NTFS(WindowsNT)以及其它文件系统远见品质CramfsvLinusTorvalds开发vcramfs是只读压缩的文件系统文件系统类型可以是extextv系统启动后kernel把cramfs文件系统载入到内存中解压所以比较占内存v采取了zlib做压缩,省空间vmkcramfsrootfsrootfscramfsvmountolooptcramfsusrimgusr远见品质CramfsvCramfs是针对Linux内核之后的版本所设计的一种新型文件系统也是压缩和只读格式的。它主要的优点是将文件数据以压缩形式存储在需要运行的时候进行解压缩。由于它存储的文件形式是压缩的格式所以文件系统不能直接在Flash上运行。虽然这样可以节约很多Flash存储空间但是文件系统运行需要将大量的数据拷贝进RAM中消耗了RAM空间。远见品质JFFS和JFFSv考虑到多数系统需要能够读写的文件系统可以使用MTDdriver的JFFS和JFFS日志式文件在Flash头部建立根文件系统(RootFilesystem)。日志式文件系统可以免受系统突然掉电的危险并且在下一次系统引导时不需要文件系统的检查。由于JFFS和JFFS文件格式是特别为Flash存储器设计的二者都具一种称为“损耗平衡”的特点也就是说Flash的所有被擦写的单元都保持相同的擦写次数。利用这些特有保护措施Flash的使用周期得到相当大的提升。JFFS使用压缩的文件格式为Flash节省了大量的存储空间它更优于JFFS格式在系统中使用。值得注意的是使用JFFS格式可能带来少量的Flash空间的浪费这主要是由于日志文件的过度开销和用于回收系统的无用存储单元浪费的空间大小约是两个数据段。远见品质YAFFS文件系统vYAFFSYetAnotherFlashFileSystem是一种类似于JFFSJFFS的专门为Flash设计的嵌入式文件系统。v与JFFS相比它减少了一些功能因此速度更快、占用内存更少。远见品质YAFFS文件组织结构vYAFFS将文件组织成固定大小(字节)的数据段。每个文件都有一个页面专门存放文件头文件头保存了文件的模式、所有者id、组id、长度、文件名等信息。为了提高文件数据块的查找速度文件的数据段被组织成树形结构。YAFFS在文件进行改写时总是先写入新的数据块然后将旧的数据块从文件中删除。YAFFS使用存放在页面备用空间中的ECC进行错误检测出现错误后会进行一定次数的重试多次重试失败后该页面就被停止使用。远见品质YAFFS和JFFS的不同vJFFS是一种日志文件系统通过日志机制保证文件系统的稳定性。YAFFS仅仅借鉴了日志系统的思想不提供日志机能所以稳定性不如JAFFS但是资源占用少。vJFFS中使用多级链表管理需要回收的脏块并且使用系统生成伪随机变量决定要回收的块通过这种方法能提供较好的写均衡在YAFFS中是从头到尾对块搜索所以在垃圾收集上JFFS的速度慢但是能延长NAND的寿命。远见品质RAMdiskv如果使用RAMdisk一般应选择EXT文件格式但EXT并不是一块特别高效的文件存储空间。由于存在RAMdisk上所以任何改变在下一次启动后都会丢失。当然也有许多人认为对嵌入式存储空间来讲这是一种优势因为每次系统启动都是从已知的文件系统状态开始的。vRamdisk也是Linux系统中的一种虚拟设备,是从内存中划分出来作为高速缓存的一部分,将它虚拟为磁盘。Ramdiskdevice(如:devram,devram)可以在任何时候被创建和加载,同其他磁盘分区一样被操作。Ramdisk通常用于系统启动。远见品质Ramdisk的优点v提升系统性能能把对慢速硬盘的操作转换为对高速内存的操作既提高了系统资源利用率又极大提高了系统运行效率。v提高软件性能由于系统内存存取速度远快于硬件磁盘速度所以

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/32

嵌入式Linux起步

仅供在线阅读

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利