完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本文就如何对Linux系统的核心实现定制进行论述,主要内容包括Linux内核部分和文件系统,系统定制的硬件平台是PC/104单片机。之所以将Linux内核定制、文件系统定制单独讨论,是因为在基于任何平台的Linux系统定制过程中,其内核和文件系统的定制工作都具有相似的特征和相似的过程。
|
|
相关推荐
2个回答
|
|
在基于PC/104平台的嵌入式Linux研制过程中,进行核心定制的主要目的是从需求出发使系统最大程度地满足应用的需要、最大程度地适应系统硬件平台、最优化地支持系统外围设备和应用程序,并且尽量减少对系统资源的占用、减少系统功耗,增强系统的安全性、稳定性、可靠性,另外使系统真正地实现产权自主化。
内核定制 一般操作系统的内核从体系结构角度可以划分为两种:微内核体系结构、单内核体系结构。微内核体系结构只在内核中包括了一些基本的内核功能,其它部分在用户内存空间运行,这种结构需要在各层之间进行调用,因此会有一定的消耗,使执行效率不如单内核体系结构。Linux采用单内核体系结构,内核的所有部分都集中在一起,这样能使系统的各部分直接沟通,有效地缩短任务之间的切换时间,提高了系统的响应速度,实时性好并提高了CPU的利用率,但在系统比较大的时候体积也比较大,与嵌入式系统容量小、资源有限的特点不符合,因此需要进行非常精细的定制以适应嵌入式系统的需要。 内核版本 Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。Linux的开发采用的是双树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或称开发树(development tree)。一些新特性、实验性改进等都将首先在开发树中进行,如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发树就体现在源程序的版本号中;源程序版本号的形式为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的内核增加了很多新特性; 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文件来完成。内核源代码中的每个目录都有各自的用途,每个子目录下也都有相应的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内核提供的工具进行内核设置。在Linux源代码目录下,Linux内核设置命令是: # make menu config 命令执行后会显示一个字符型菜单配置环境,在该环境中有以下选项,通过这些选项设置可以定制Linux内核的各项功能,并对内核实现裁减。下面对主要设置选项进行介绍: (1) Code maturity level options代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,如果要试验现在仍处于实验阶段的功能,就必须把该项选择为Y了;否则可以把它选择为N。在这部分,设定是否允许内核的一些试验选项被使用。 (2)Load able module support对可加载模块的支持。可加载模块码不是内核的一部分,但是当需要它的时候,可以被同内核一起加载并使用。如果将内核代码编译成可加载模块,可以使内核更小,而且更稳定。但是需要注意的是,如果将文件系统代码编译为可加载模块,将使内核无法读取文件系统,因此在启动的时候内核无法加载配置文件。 这里面有3项: Enable loadable module support:提供内核支持; Set version information on all module symbols:设置所有模块的版本信息; Kernel module loader:让内核在启动时有自己装入必需模块的能力。 (3)Processor type and features CPU类型选项。可以选择处理器的类型,通常“/dev/cpu”选项更高级。 Processor family:根据应用情况选择CPU类型。 High Memory Support:大容量内存的支持。可以支持到4G、64G,只有当计算机有超过1GB内存(不是磁盘空间)时才是必须的。 Mathe mulation:协处理器仿真。如果计算机是386或486SX的CPU,则须打开该选项,因为这些CPU没有Linux需要的浮点运算单元(Math Emulation,也称数学协处理器),所以必须选择该选项。 MTTR support: MTTR支持选项允许在PCI或者AGP总线众进行更快速的通讯。 Symmetric multi-processing support:对称多处理支持。 (4)Generalsetup 常规选项设置。在这里可以制定特定的内核常规选项,比如网络支持。网络支持是Linux内核的重要组成部分,这些选项通常是打开的。现在的Linux发行版以ELF格式作为它们的“内核核心格式”,这是不同系统库(system libraries)的标准格式。“ELF”是“a1out”格式的继承,几乎所有Linux程序都使用ELF库,有些老的程序仍然需要a1out格式支持。主要选项有: Networking support:网络支持。 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项是有关进程处理/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即插即用支持。 (8)Block devices块设备支持。 子选项如下: Normal PC floppy disk support:普通PC软盘支持。 XT hard disks upport:XT硬盘支持 Mulex DAC960/DAC1100 PCI RAID Controller support: RAID镜像选项。 Loopback device support: DOC要求有这个支持; Network block device support:网络块设备支持。 Logical volume manager(LVM) support:逻辑卷管理支持。 Multiple devices driver support:多设备驱动支持。 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上使用普通的电话提供语音服务了。电话卡和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 support 配置业余无线广播。 (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,该项必选。 |
|
|
|
只有小组成员才能发言,加入小组>>
863 浏览 0 评论
1191 浏览 1 评论
2566 浏览 5 评论
2901 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2762 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1203浏览 3评论
214浏览 2评论
486浏览 2评论
399浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
482浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-23 11:54 , Processed in 1.150596 second(s), Total 81, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号