ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:25.11KB ,
资源ID:3993286      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3993286.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于PC 104平台嵌入式Linux系统核心定制方法.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于PC 104平台嵌入式Linux系统核心定制方法.docx

1、基于PC 104平台嵌入式Linux系统核心定制方法基于PC/104平台嵌入式Linux系统核心定制方法2007-10-26 嵌入式在线 收藏 | 打印 基于PC/104平台的嵌入式Linux技术在海洋自动观测系统中具有广泛的使用前景,Linux核心定制方法的研究是嵌入式Linux系统研制的关键工作。本文结合PC/104平台嵌入式Linux系统的研制,详细论述了Linux内核和文件系统的定制方法。 本文就如何对Linux系统的核心实现定制进行论述,主要内容包括Linux内核部分和文件系统,系统定制的硬件平台是PC/104单片机。之所以将Linux内核定制、文件系统定制单独讨论,是因为在基于任何

2、平台的Linux系统定制过程中,其内核和文件系统的定制工作都具有相似的特征和相似的过程。 在基于PC/104平台的嵌入式Linux研制过程中,进行核心定制的主要目的是从需求出发使系统最大程度地满足使用的需要、最大程度地适应系统硬件平台、最优化地支持系统外围设备和使用程序,并且尽量减少对系统资源的占用、减少系统功耗,增强系统的安全性、稳定性、可靠性,另外使系统真正地实现产权自主化。 内核定制 一般操作系统的内核从体系结构角度可以划分为两种:微内核体系结构、单内核体系结构。微内核体系结构只在内核中包括了一些基本的内核功能,其它部分在用户内存空间运行,这种结构需要在各层之间进行调用,因此会有一定的消

3、耗,使执行效率不如单内核体系结构。Linux采用单内核体系结构,内核的所有部分都集中在一起,这样能使系统的各部分直接沟通,有效地缩短任务之间的切换时间,提高了系统的响应速度,实时性好并提高了CPU的利用率,但在系统比较大的时候体积也比较大,和嵌入式系统容量小、资源有限的特点不符合,因此需要进行非常精细的定制以适应嵌入式系统的需要。 内核版本 Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。Linux的开发采用的是双树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或称开发树(development tr

4、ee)。一些新特性、实验性改进等都将首先在开发树中进行,如果在开发树中所做的改进也可以使用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。 一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发树就体现在源程序的版本号中;源程序版本号的形式为x.y.z,对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳定树大一(是奇数)。到目前为止,稳定树的最高版本是2.4.21,开发树的最新版本是2.5.73。本项目采用的内核版本是2.2.20,选择2.2.20版本内核的主要原因有: a.版本为2.0及以前内核中的设备驱动不如2.2版本的全面;b.版本为2.2的内核增加了很多新特性

5、;c.新的版本为2.4的内核对PC/104的CPU块支持不好;d.由于不明原因版本为214的内核对PC/104 ;e.版本为2.4内核相对庞大,编译后的内核文件也相对较大;f.版本为2.2的内核已完全能够满足本项目的需要。 目前,大多数面向数据采集的嵌入式Linux研制工作都是基于版本2.0/2.2内核进行的。实际上,内核版本的提升,其复杂度也随之升高,也会给嵌入式系统的定制工作带来很多的困难。 内核设置 内核设置工作可以通过直接修改内核源代码中的Make file文件、Config.in文件和内核源代码根目录下的.config文件来完成。内核源代码中的每个目录都有各自的用途,每个子目录下也都

6、有相应的Make file文件。例如,在目录drivers/block/ Config.in文件中有如下语句:if“CONFIG_BLK_DEV_HD_DE”= “y”-o“CONFIG_BLK_DEV_HD_ONLY”= “y”;then define_boolCONFIG_BLK_DEV_HDy else define_boolCONFIG_BLK_DEV_HDn fi 这段语句的作用是定义在块设备中DE块设备驱动可以被编译在内核中也可以被编译成内核模块。采用修改配置文件的方式设置内核比较复杂,而且容易出现错误,但是对深入剖析和理解内核帮助很大。比较有效的方式还是直接利用Linux内核提供

7、的工具进行内核设置。在Linux源代码目录下,Linux内核设置命令是: # make menu config 命令执行后会显示一个字符型菜单配置环境,在该环境中有以下选项,通过这些选项设置可以定制Linux内核的各项功能,并对内核实现裁减。下面对主要设置选项进行介绍: (1) Code maturity level options代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,如果要试验现在仍处于实验阶段的功能,就必须把该项选择为Y了;否则可以把它选择为N。在这部分,设定是否允许内核的一些试验选项被使用。

8、 (2)Load able module support对可加载模块的支持。可加载模块码不是内核的一部分,但是当需要它的时候,可以被同内核一起加载并使用。如果将内核代码编译成可加载模块,可以使内核更小,而且更稳定。但是需要注意的是,如果将文件系统代码编译为可加载模块,将使内核无法读取文件系统,因此在启动的时候内核无法加载配置文件。 这里面有3项:Enable loadable module support:提供内核支持;Set version information on all module symbols:设置所有模块的版本信息;Kernel module loader:让内核在启动时有自

9、己装入必需模块的能力。 (3)Processor type and featuresCPU类型选项。可以选择处理器的类型,通常“/dev/cpu”选项更高级。Processor family:根据使用情况选择CPU类型。High Memory Support:大容量内存的支持。可以支持到4G、64G,只有当计算机有超过1GB内存(不是磁盘空间)时才是必须的。Mathe mulation:协处理器仿真。如果计算机是386或486SX的CPU,则须打开该选项,因为这些CPU没有Linux需要的浮点运算单元(Math Emulation,也称数学协处理器),所以必须选择该选项。MTTR suppor

10、t: MTTR支持选项允许在PCI或者AGP总线众进行更快速的通讯。Symmetric multi-processing support:对称多处理支持。 (4)Generalsetup 常规选项设置。在这里可以制定特定的内核常规选项,比如网络支持。网络支持是Linux内核的重要组成部分,这些选项通常是打开的。现在的Linux发行版以ELF格式作为它们的“内核核心格式”,这是不同系统库(system libraries)的标准格式。“ELF”是“a1out”格式的继承,几乎所有Linux程序都使用ELF库,有些老的程序仍然需要a1out格式支持。主要选项有:Networking support

11、:网络支持。PCI support: PCI支持。PCI accessmode: PCI存取模式。可供选择的有BIOS、Direct和Any。Support fo rhot-pluggabel devices:热插拔设备支持。但Linux支持的不是太好,可不选。PCMCIA/CardBus support: PCMCIA CardBus支持。有PCMCIA就必选了。System VIPC: 允许程序通信和同步。BSD Process Accounting:保持诸如进程结束时产生的错误代码的。Sysctl support:允许程序修改某些内核选项而不需要重新编译内核或者重新启动计算机。以上3项是

12、有关进程处理/IPC调用的,主要就是System V和BSD两种风格。如果不是使用BSD, 可以按照缺省选择。 Power Marcha gem ent support:电源管理支持。Advanced Power Management BIOS support: 高级电源管理BIOD支持。 (5)Memory Technology Device(MTD)MTD设备支持。这个选项使Linux可以读取闪存卡(Flash Card)之类的存储器,2.4版本内核开始支持DOC。(6)Paralle lport support并口支持。(7)Plug and Play configuration即插即用

13、支持。 (8)Block devices块设备支持。 子选项如下:Normal PC floppy disk support:普通PC软盘支持。XT hard disks upport:XT硬盘支持Mulex DAC960/DAC1100 PCI RAIDController support: RAID镜像选项。Loopback device support: DOC要求有这个支持;Network block device support:网络块设备支持。Logical volume manager(LVM) support:逻辑卷管理支持。Multiple devices driver su

14、pport:多设备驱动支持。RAM disk support: RAM盘支持。 (9)Networking options网络选项。Packet socket:网络包套接口。Kernel/User netlin ksocke:内核和用户进程双向通信。Network firewalls:防火墙支持。UNIX domain sockets:UNIX的socket。TCP/IP networking:TCP/IP支持。The IPX protocol:IPX协议支持。 (10)Telephony Support电话支持。Linux下可以支持电话卡,这样就可以在IP上使用普通的电话提供语音服务了。电话

15、卡和modem没有任何关系。(11)ATA/DE/MFM/RLL support 有关各种接口的硬盘/光驱/磁带/软盘支持。DOC不需要该选项,CFC需要选择其中的部分选项。(12)SCSI supportSCSI设备的支持。(13)IEEE 1394(FireWire)support 要Fireware硬件来提高串行总线的性能。(14)I2O devicesupport 需要I2O接口适配器才能支持,在智能Input/Output(I2O)体系接口中使用。(15)Network device support 网络设备支持。列出常见网卡的驱动程序。(16)Amateur Radio suppo

16、rt 配置业余无线广播。(17)IrDA(infrared) support 红外支持。(18)ISDN subsystem ISDN上网支持。(19)OldCD-ROM drivers(notSCSI、notIDE)非SCSI/DE口的光驱。 (20)Character devices字符设备。其中有:I2C support: I2C是Philips极力推动的微控制使用中使用的低速串行总线协议。如果要选择下面的Video For Linux,该项必选。Mice:鼠标。现在可以支持总线、串口、PS/2、C&T82C710 mouseport、PC110 digitizerpad。Joystic

17、ks:手柄支持。Watchdog Cards:如果把这个选中,那么就会在/dev下创建一个名为watchdog的文件,它可以记录系统的运行情况,一直到系统重新启动的1min左右。有了这个文件,就可以恢复系统到重启前的状态了。Video For Linux:支持有关的音频/视频卡。Ftape,the floppy tape device driver:PCMCIA character device support:上边介绍了。 (21)Filesy stems文件系统。介绍以下几项:Quota support: Quota可以限制每个用户可以使用的硬盘空间的上限,在多用户共同使用一台主机的情况中

18、十分有效。DOSFAT fssupport: DOSFAT文件格式的支持,可以支持FAT16、FAT32。 ISO 9660CD-ROM file system support:光盘使用的就是ISO9660的文件格式。NTFS file system support:ntfs是NT使用的文件格式。 /proc file system support:/proc文件系统是Lnux提供给用户和系统进行交互的通道,应该选上,否则有些功能没法正确执行。还有另外3个大类是:Network File Systems(网络文件系统)、Partition Types(分区类型)、 NativeLanguage

19、Support(本地语言支持)。值得一提的是NetworkFileSystems里面的两种:NFS和SMB分别是Linux和Windows相互以网络邻居的形式访问对方所使用的文件系统。 (22)Console drivers控制台驱动。一般使用VGA text console就可以了,标准的80325的文本控制台。(23)Sound声卡驱动。(24)USB supprotUSB支持。很多USB设备,比如鼠标、调制解调器、打印机、扫描仪等,在Linux都可以得到支持。(25)Kernel hacking配置此选项可以在系统崩溃时,也可以进行一定的工作了。但对于普通用户是用不着这个功能的。 内核编

20、译 内核配置结束后就可以编译内核了,内核编译只有几个指令,但是内核编译的时间可能会很长。在执行内核配置之前可以先执行#make mrproper命令,检查内核源程序,以发现内核文件是否完备。 内核编译的命令如下: #maked ep:使内核正确设置所有模块的依赖关系。make clean:清除所有已存在的目标文件,已存在的目标文件主要由上次内核编译形成,如果忘记做这一步,生成的内核将会非常庞大。#make zImage/zdisk/bzImage/zlilo:生成一个经过压缩的内核。如果要制作成启动盘就使用make zdisk,而make zlilo则把生成的内核加入LLO中,不过在最初几次编

21、译内核时不要使用此项,以免系统因生成的内核有故障而不能启动。make bzImage用于生成超过1M文件大小的内核,makezImage生成小于1M的内核。内核文件是经过压缩处理的。如果内核中使用了可装卸的模块,则需要依次运行以下指令:#make modules:编译内核模块。#make modules_install:安装内核模块。 编译后的内核文件存放在arch/i386/boot/目录下。以下为一个内核编译配置脚本,采用该脚本编译的内核可运行于当前所有x86平台,不具备网络和串口支持,内核编译后的大小在200K以内。#基于x86体系结构CONFIG_X86=y#是内核中最新功能(或处于实

22、验中的功能) 可用CONFIG_EXPERIMENTAL=y#选择处理器类型和数学处理器仿真 CONFIG_M386=yCONFIG_MATH_EMULATION=y#设置进程间通信协议CONFIG_SYSVIPC=yCONFIG_SYSCTL=y#设置可支持的二进制文件格式CONFIG_BINFMT_ELF=y#块设备支持,CFC和DOC在此设置不同#设置内核支持DE驱动器CONFIG_BLK_DEV_DE=yCONFIG_BLK_DEV_DEDISK=yCONFIG_BLK_DEV_CMD640=yCONFIG_BLK_DEV_RZ1000=yCONFIG_BLK_DEV_DEPCI=yC

23、ONFIG_BLK_DEV_DEDMA=yCONFIG_IDEDMA_AUTO=yCONFIG_BLK_DEV_CS5530=yCONFIG_BLK_DEV_LOOP=yCONFIG_PARDE_PARPORT=y#字符设备设置CONFIG_VT=y#文件系统设置#支持/proc、ext2文件系统CONFIG_PROC_FS=yCONFIG_EXT2_FS=y#支持字符型终端CONFIG_VGA_CONSOLE=y 网络和串口通信功能 Linux内核内置对网络和串口的支持,具体到内核编译,只要设置部分内核参数即可。以下是网络设备的支持,需要注意的是其中PCI设备支持选项和以太网设备支持选项,如

24、果选择网卡,这两类设备都必须被支持。网卡的驱动程序如果未包含到内核,则可以模块形式加载。 CONFIG_NET=y CONFIG_PCI=y CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y CONFIG_PCI_QUIRKS=y CONFIG_PCI_OLD_PROC=y CONFIG_NETLINK=y CONFIG_INET=y CONFIG_NET_ETHERNET=y 以下是串口设置参数,如果单纯支持两个串口,则设置CONFIG_SERIAL项即可。在系统需要4个以上串口支持,或需要基于串口的终端控制时,需要设置余下3个

25、参数。 CONFIG_SERIAL=y #CONFIG_SERIAL_CONSOLE #CONFIG_SERIAL_EXTENDED #CONFIG_SERIAL_NONSTANDARD 本项目中仅设置两个串口支持。 文件系统定制 Linux操作系统为方便管理把外存抽象成一个可随时访问的块,为方便管理和使用又在块设备层上再作抽象,把块设备抽象成为文件系统,由文件系统管理块设备上的数据等,文件系统有很多种,不同文件系统有不同的管理方式,造成系统不兼容,为解决这个问题,在文件系统上又作一次抽象,提出了虚拟文件系统的概念。Linux虚拟文件系统为用户提供了一个公共的接口,而不需要了解物理设备或逻辑系

26、统的细节,系统允许系统管理员将在任何物理设备上的逻辑文件系统挂接在文件目录中。 目录结构 Linux文件系统符合FHS(Filesystem Hierarchy Standard)标准,由一些目录和文件组成。根据安装的方式不同,这些目录可能是不同的文件系统。通常,一个系统可以有多个文件系统组成:根分区文件系统(/),和安装在/usr下的文件系统,还有其他安装在/home、/var文件系统。 Linux目录结构起始和根目录,其中包含以下目录:/vmlinuz内核文件,内核文件的位置可由系统引导程序指定。/bin包含系统可执行程序,可以在这个目录下找到linux常用的命令。/boot存放系统启动时

27、所需的各项文件。 /dev 包含所有的设备文件,这些设备是和系统的硬件有一定相互对应关系的特殊文件,分为块设备、字符设备和特殊设备,dev是设备(device)的英文缩写。目录中包含了所有Linux系统中使用的外部设备,但是这里并不是放的外部设备的驱动程序,它实际上是一个访问这些外部设备的标识。在Linux系统中,对外部设备的访问和访问一个文件、一个目录没有任何区别。 /cdrom 用于将光驱文件系统加载到这个目录下。 /etc Linux系统的绝大部分配置文件都存放在这里。比如网络配置文件,文件系统,XWindow配置文件,设备配置信息,设置用户信息等都在这个目录下。 /sbin 存放系统程序。和/bin目录类似,但这些文件往往是用来进行系统管理或提供系统服务的,一般只有root才有运行的权限。 /home 存放一般用户个人目录的主目录,如果建立一个用户,用户名是“xx”,那么在/home目录下就有一个对应的/home/xx路径。 /lib 存放系统的各种库文件,lib是库(library)英文缩写。这个目录用来存放系统动态连接共享库,采用动态链接编译的使用程序都会用到这个目录下的共享库。 /lost+found 用于放置垃圾文件,这个目录在大多数情况下都是空的。但是如果正

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1