基于PC 104平台嵌入式Linux系统核心定制方法Word文档下载推荐.docx
- 文档编号:16900195
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:9
- 大小:25.11KB
基于PC 104平台嵌入式Linux系统核心定制方法Word文档下载推荐.docx
《基于PC 104平台嵌入式Linux系统核心定制方法Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于PC 104平台嵌入式Linux系统核心定制方法Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
e.版本为2.4内核相对庞大,编译后的内核文件也相对较大;
f.版本为2.2的内核已完全能够满足本项目的需要。
目前,大多数面向数据采集的嵌入式Linux研制工作都是基于版本2.0/2.2内核进行的。
实际上,内核版本的提升,其复杂度也随之升高,也会给嵌入式系统的定制工作带来很多的困难。
内核设置
内核设置工作可以通过直接修改内核源代码中的Makefile文件、Config.in文件和内核源代码根目录下的.config文件来完成。
内核源代码中的每个目录都有各自的用途,每个子目录下也都有相应的Makefile文件。
例如,在目录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内核设置命令是:
#makemenuconfig
命令执行后会显示一个字符型菜单配置环境,在该环境中有以下选项,通过这些选项设置可以定制Linux内核的各项功能,并对内核实现裁减。
下面对主要设置选项进行介绍:
(1)Codematurityleveloptions代码成熟等级。
此处只有一项:
promptfordevelopmentand/orincompletecode/drivers,如果要试验现在仍处于实验阶段的功能,就必须把该项选择为Y了;
否则可以把它选择为N。
在这部分,设定是否允许内核的一些试验选项被使用。
(2)Loadablemodulesupport对可加载模块的支持。
可加载模块码不是内核的一部分,但是当需要它的时候,可以被同内核一起加载并使用。
如果将内核代码编译成可加载模块,可以使内核更小,而且更稳定。
但是需要注意的是,如果将文件系统代码编译为可加载模块,将使内核无法读取文件系统,因此在启动的时候内核无法加载配置文件。
这里面有3项:
Enableloadablemodulesupport:
提供内核支持;
Setversioninformationonallmodulesymbols:
设置所有模块的版本信息;
Kernelmoduleloader:
让内核在启动时有自己装入必需模块的能力。
(3)Processortypeandfeatures
CPU类型选项。
可以选择处理器的类型,通常“/dev/cpu”选项更高级。
Processorfamily:
根据使用情况选择CPU类型。
HighMemorySupport:
大容量内存的支持。
可以支持到4G、64G,只有当计算机有超过1GB内存(不是磁盘空间)时才是必须的。
Mathemulation:
协处理器仿真。
如果计算机是386或486SX的CPU,则须打开该选项,因为这些CPU没有Linux需要的浮点运算单元(MathEmulation,也称数学协处理器),所以必须选择该选项。
MTTRsupport:
MTTR支持选项允许在PCI或者AGP总线众进行更快速的通讯。
Symmetricmulti-processingsupport:
对称多处理支持。
(4)Generalsetup
常规选项设置。
在这里可以制定特定的内核常规选项,比如网络支持。
网络支持是Linux内核的重要组成部分,这些选项通常是打开的。
现在的Linux发行版以ELF格式作为它们的“内核核心格式”,这是不同系统库(systemlibraries)的标准格式。
“ELF”是“a1out”格式的继承,几乎所有Linux程序都使用ELF库,有些老的程序仍然需要a1out格式支持。
主要选项有:
Networkingsupport:
网络支持。
PCIsupport:
PCI支持。
PCIaccessmode:
PCI存取模式。
可供选择的有BIOS、Direct和Any。
Supportforhot-pluggabeldevices:
热插拔设备支持。
但Linux支持的不是太好,可不选。
PCMCIA/CardBussupport:
PCMCIACardBus支持。
有PCMCIA就必选了。
SystemVIPC:
允许程序通信和同步。
BSDProcessAccounting:
保持诸如进程结束时产生的错误代码的。
Sysctlsupport:
允许程序修改某些内核选项而不需要重新编译内核或者重新启动计算机。
以上3项是有关进程处理/IPC调用的,主要就是SystemV和BSD两种风格。
如果不是使用BSD,可以按照缺省选择。
PowerMarchagementsupport:
电源管理支持。
AdvancedPowerManagementBIOSsupport:
高级电源管理BIOD支持。
(5)MemoryTechnologyDevice(MTD)
MTD设备支持。
这个选项使Linux可以读取闪存卡(FlashCard)之类的存储器,2.4版本内核
开始支持DOC。
(6)Parallelportsupport并口支持。
(7)PlugandPlayconfiguration即插即用支持。
(8)Blockdevices块设备支持。
子选项如下:
NormalPCfloppydisksupport:
普通PC软盘支持。
XTharddisksupport:
XT硬盘支持
MulexDAC960/DAC1100PCIRAID
Controllersupport:
RAID镜像选项。
Loopbackdevicesupport:
DOC要求有这个支持;
Networkblockdevicesupport:
网络块设备支持。
Logicalvolumemanager(LVM)support:
逻辑卷管理支持。
Multipledevicesdriversupport:
多设备驱动支持。
RAMdisksupport:
RAM盘支持。
(9)Networkingoptions网络选项。
Packetsocket:
网络包套接口。
Kernel/Usernetlinksocke:
内核和用户进程双向通信。
Networkfirewalls:
防火墙支持。
UNIXdomainsockets:
UNIX的socket。
TCP/IPnetworking:
TCP/IP支持。
TheIPXprotocol:
IPX协议支持。
(10)TelephonySupport
电话支持。
Linux下可以支持电话卡,这样就可以在IP上使用普通的电话提供语音服务了。
电话卡和modem没有任何关系。
(11)ATA/DE/MFM/RLLsupport
有关各种接口的硬盘/光驱/磁带/软盘支持。
DOC不需要该选项,CFC需要选择其中的部分选项。
(12)SCSIsupportSCSI设备的支持。
(13)IEEE1394(FireWire)support
要Fireware硬件来提高串行总线的性能。
(14)I2Odevicesupport
需要I2O接口适配器才能支持,在智能Input/Output(I2O)体系接口中使用。
(15)Networkdevicesupport
网络设备支持。
列出常见网卡的驱动程序。
(16)AmateurRadiosupport
配置业余无线广播。
(17)IrDA(infrared)support
红外支持。
(18)ISDNsubsystem
ISDN上网支持。
(19)OldCD-ROMdrivers(notSCSI、notIDE)非SCSI/DE口的光驱。
(20)Characterdevices
字符设备。
其中有:
I2Csupport:
I2C是Philips极力推动的微控制使用中使用的低速串行总线协议。
如果要选择下面的VideoForLinux,该项必选。
Mice:
鼠标。
现在可以支持总线、串口、PS/2、C&
T82C710mouseport、PC110digitizerpad。
Joysticks:
手柄支持。
WatchdogCards:
如果把这个选中,那么就会在/dev下创建一个名为watchdog的文件,它可以记录系统的运行情况,一直到系统重新启动的1min左右。
有了这个文件,就可以恢复系统到重启前的状态了。
VideoForLinux:
支持有关的音频/视频卡。
Ftape,thefloppytapedevicedriver:
PCMCIAcharacterdevicesupport:
上边介绍了。
(21)Filesystems文件系统。
介绍以下几项:
Quotasupport:
Quota可以限制每个用户可以使用的硬盘空间的上限,在多用户共同使用一台主机的情况中十分有效。
DOSFATfssupport:
DOSFAT文件格式的支持,可以支持FAT16、FAT32。
ISO9660CD-ROMfilesystemsupport:
光盘使用的就是ISO9660的文件格式。
NTFSfilesystemsupport:
ntfs是NT使用的文件格式。
/
procfilesystemsupport:
/proc文件系统是Lnux提供给用户和系统进行交互的通道,应该选上,否则有些功能没法正确执行。
还有另外3个大类是:
NetworkFileSystems(网络文件系统)、PartitionTypes(分区类型)、NativeLanguageSupport(本地语言支持)。
值得一提的是NetworkFileSystems里面的两种:
NFS和SMB分别是Linux和Windows相互以网络邻居的形式访问对方所使用的文件系统。
(22)Consoledrivers控制台驱动。
一般使用VGAtextconsole就可以了,标准的80325的文本控制台。
(23)Sound声卡驱动。
(24)USBsupprotUSB支持。
很多USB设备,比如鼠标、调制解调器、打印机、扫描仪等,在Linux都可以得到支持。
(25)Kernelhacking配置此选项可以在系统崩溃时,也可以进行一定的工作了。
但对于普通用户是用不着这个功能的。
内核编译
内核配置结束后就可以编译内核了,内核编译只有几个指令,但是内核编译的时间可能会很长。
在执行内核配置之前可以先执行#makemrproper命令,检查内核源程序,以发现内核文件是否完备。
内核编译的命令如下:
#makedep:
使内核正确设置所有模块的依赖关系。
makeclean:
清除所有已存在的目标文件,已存在的目标文件主要由上次内核编译形成,如果忘记做这一步,生成的内核将会非常庞大。
#makezImage/zdisk/bzImage/zlilo:
生成一个经过压缩的内核。
如果要制作成启动盘就使用makezdisk,而makezlilo则把生成的内核加入LLO中,不过在最初几次编译内核时不要使用此项,以免系统因生成的内核有故障而不能启动。
makebzImage用于生成超过1M文件大小的内核,makezImage生成小于1M的内核。
内核文件是经过压缩处理的。
如果内核中使用了可装卸的模块,则需要依次运行以下指令:
#makemodules:
编译内核模块。
#makemodules_install:
安装内核模块。
编译后的内核文件存放在arch/i386/boot/目录下。
以下为一个内核编译配置脚本,采用该脚本编译的内核可运行于当前所有x86平台,不具备网络和串口支持,内核编译后的大小在200K以内。
#基于x86体系结构
CONFIG_X86=y
#是内核中最新功能(或处于实验中的功能)可用
CONFIG_EXPERIMENTAL=y
#选择处理器类型和数学处理器仿真
CONFIG_M386=y
CONFIG_MATH_EMULATION=y
#设置进程间通信协议
CONFIG_SYSVIPC=y
CONFIG_SYSCTL=y
#设置可支持的二进制文件格式
CONFIG_BINFMT_ELF=y
#块设备支持,CFC和DOC在此设置不同
#设置内核支持DE驱动器
CONFIG_BLK_DEV_DE=y
CONFIG_BLK_DEV_DEDISK=y
CONFIG_BLK_DEV_CMD640=y
CONFIG_BLK_DEV_RZ1000=y
CONFIG_BLK_DEV_DEPCI=y
CONFIG_BLK_DEV_DEDMA=y
CONFIG_IDEDMA_AUTO=y
CONFIG_BLK_DEV_CS5530=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_PARDE_PARPORT=y
#字符设备设置
CONFIG_VT=y
#文件系统设置
#支持/proc、ext2文件系统
CONFIG_PROC_FS=y
CONFIG_EXT2_FS=y
#支持字符型终端
CONFIG_VGA_CONSOLE=y
网络和串口通信功能
Linux内核内置对网络和串口的支持,具体到内核编译,只要设置部分内核参数即可。
以下是网络设备的支持,需要注意的是其中PCI设备支持选项和以太网设备支持选项,如果选择网卡,这两类设备都必须被支持。
网卡的驱动程序如果未包含到内核,则可以模块形式加载。
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个参数。
CONFIG_SERIAL=y
#CONFIG_SERIAL_CONSOLE
#CONFIG_SERIAL_EXTENDED
#CONFIG_SERIAL_NONSTANDARD
本项目中仅设置两个串口支持。
文件系统定制
Linux操作系统为方便管理把外存抽象成一个可随时访问的块,为方便管理和使用又在块设备层上再作抽象,把块设备抽象成为文件系统,由文件系统管理块设备上的数据等,文件系统有很多种,不同文件系统有不同的管理方式,造成系统不兼容,为解决这个问题,在文件系统上又作一次抽象,提出了虚拟文件系统的概念。
Linux虚拟文件系统为用户提供了一个公共的接口,而不需要了解物理设备或逻辑系统的细节,系统允许系统管理员将在任何物理设备上的逻辑文件系统挂接在文件目录中。
目录结构
Linux文件系统符合FHS(FilesystemHierarchyStandard)标准,由一些目录和文件组成。
根据安装的方式不同,这些目录可能是不同的文件系统。
通常,一个系统可以有多个文件系统组成:
根分区文件系统(/),和安装在/usr下的文件系统,还有其他安装在/home、/var文件系统。
Linux目录结构起始和根目录,其中包含以下目录:
/vmlinuz
内核文件,内核文件的位置可由系统引导程序指定。
/bin
包含系统可执行程序,可以在这个目录下找到linux常用的命令。
/boot
存放系统启动时所需的各项文件。
/dev
包含所有的设备文件,这些设备是和系统的硬件有一定相互对应关系的特殊文件,分为块设备、字符设备和特殊设备,dev是设备(device)的英文缩写。
目录中包含了所有Linux系统中使用的外部设备,但是这里并不是放的外部设备的驱动程序,它实际上是一个访问这些外部设备的标识。
在Linux系统中,对外部设备的访问和访问一个文件、一个目录没有任何区别。
/cdrom
用于将光驱文件系统加载到这个目录下。
/etc
Linux系统的绝大部分配置文件都存放在这里。
比如网络配置文件,文件系统,XWindow配置文件,设备配置信息,设置用户信息等都在这个目录下。
/sbin
存放系统程序。
和/bin目录类似,但这些文件往往是用来进行系统管理或提供系统服务的,一般只有root才有运行的权限。
/home
存放一般用户个人目录的主目录,如果建立一个用户,用户名是“xx”,那么在/home目录下就有一个对应的/home/xx路径。
/lib
存放系统的各种库文件,lib是库(library)英文缩写。
这个目录用来存放系统动态连接共享库,采用动态链接编译的使用程序都会用到这个目录下的共享库。
/lost+found
用于放置垃圾文件,这个目录在大多数情况下都是空的。
但是如果正
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于PC 104平台嵌入式Linux系统核心定制方法 基于 PC 104 平台 嵌入式 Linux 系统 核心 定制 方法
![提示](https://static.bdocx.com/images/bang_tan.gif)