Linux内核移植之三:内核配置选项

内容来自 韦东山《嵌入式Linux应用开发完全手册》

 

         Linux内核配置选项多达上千个,一个个地进行选择既耗费时间,对开发人员的要求也比较高(需要了解每个配置选项的作用)。一般的做法是在某个默认配置文件的基础上进行修改,比如我们可以先加载配置文件arch/arm/configs/s3c2410_defconfig,再增加、去除某些配置选项。

         下面分3部分介绍内核配置选项,先从整体介绍主菜单的类别,然后分别介绍和移植系统关系比较密切的“System Type”、“Device Drivers”菜单。

1.配置界面主菜单的类别

        表16.4讲解了主菜单的类别,以后读者配置内核时,可以根据自己所要设置的功能进入某个菜单,然后根据其中各个配置选项的帮助信息进行配置。

表16.4配置界面主菜单的类别/功能

配置界面主菜单 描述
Code maturity level options

代码成熟度选项:用于包含一些正在开发的或者不成熟的代码、驱动程序。一般不设置

General setup 常规设置:比如增加附加的内核版本号、支持内存页交换(swap)功能、System V进程间通信等。除非很熟悉其中的内容,否则一般使用默认配置
Loadable module support 可加载模块支持:一般都会打开可加载模块支持(Enable loadable module support)、允许卸载已经加载的模块(Module unloading)、让内核通过运行modprobe来自动加载所需要的模块(Automatic kernel module loading)
Block layer 块设备层:用于设置块设备的一些总体参数,比如是否支持大于2TB的块设备、是否支持大于2TB的文件、设置I/0调度器等。一般使用默认值即可
System Type 系统类型:选择CPU的架构、开发板类型等与开发板相关的配置选项
Bus support PCMC1A/CardBus总线的支持,对于本书的开发板,不用设置
Kermel Features 用于设置内核的一些参数,比如是否支持内核抢占(这对实时性有帮助)、是否支持动态修改系统时钟(imer ick)等
Boot oplions  启动参数:比如设置默认的命令行参数等,一般不用理会
Floating point enulalion 浮点运算仿真功能,县前Lx还不支持硬件浮点运算,所以要选择一个浮点仿真器,一般选择“NWFPE math emulation”
Userspace binary formats 可执行文件格式:一般都选择支持ELF、a.out格式
Power management options 电源管理选项
Networking 网络协议选项:一般都选择“Networking support”以支持网络功能,选择“Packet socket”以支持socket 接口功能,选择“TCP/IP networking”以支持TCP/IP网络协议。通常可以在选择“Networking support”后,使用默认配置
Device Drivers 设备驱动程序:几乎包含了Linux的所有驱动程序
File systems 文件系统:可以在里面选择要支持的文件系统,比如EXT2、JFFS2等
Profiling support  对系统的活动进行分析,仅供内核开发者使用
Kernel hacking 调试内核时的各种选项
Security options 安全选项:一般使用默认配置
Cryptographic options 加密选项
Library routines

库子程序:比如CRC32检验函数、zlib压缩函数等。不包含在内核源码中的第三方内核模块可能需要这些库,可以全不选,内核中若有其他部分依赖它,会自动选上

 

2.“System Type”菜单:系统类型

        对于arm平台(在顶层Makefile中修改“ARCH?=arm”),执行“make menuconfig”后在配置界面可以看到“System Type”字样,进入它得到另一个界面,如图16.5所示。

Linux内核移植之三:内核配置选项_第1张图片

        第一行“ARM system type”用来选择体系结构,进入它之后选中“Samsung S3C2410,S3C2412,S3C2413,S3C2440,S3C2442,S3C2443”,查看帮助信息可以知道它对应CONFIG ARCHS3C2410配置项。

        下面几行用来设置S3C2410(包括S3C2412等)系统的特性,比如选中“S3C2410UART to use for low-level messages”后按回车键,可以输入数字,表示使用哪个串口来输入内核打印信息;选中“S3C2410DMA support”表示支持DAM功能。

        再往下的“S3C2410Machines…>”、“S3C2440Machines-…>”表示这又是一个菜单,它们用来选择开发板类型。比如进入“S3C2410Machines”菜单后,可以看到如下内容:

{*]SMDK2410/A9M2410

[]IPAQ H1940

[]Acer N30

[]simtec Electronics BAST(EB2410ITX)

T1 Nexvision OTOM Board

[]AML M5900 Series

[]Thorcom VR1000

[*]QT2410

        它们表示目前内核中支持S3C2410的8种开发板。选中某个开发板后,它相应的文件就

会被编译进内核中。比如对于开发板“SMDK2410/A9M2410”,它的配置项为CONFIG ARCH SMDK2410(可以查看帮助信息知道这点),在arcl/arm/mach-s3c2410/Makefile中可以看到如下一行,表示如果选择支持该开发板,则arch/arm/mach-s3c2410/mach-smdk2410.c文件被编进内核中。

0bj-¥(CONPTGARCH_SMDK2410) += mach-smdk2410.0

        在移植内核时,可以选中某个配置相似的开发板,然后在上面进行修改。

        后面的内容一看名字就可以了解它们的功能,不再介绍。

3.“Device Drivers”菜单:设备驱动程序

        执行“make menuconfig”后在配置界面可以看到“Device Drivers”字样,进入它则进入如图16.6所示界面。

Linux内核移植之三:内核配置选项_第2张图片

        图16.6中的各个子菜单与内核源码 drivers/目录下各个子目录一一对应,如表16.5所示。在配置过程中可以参考这个表格找到对应的配置选项;在添加新驱动时,也可以参考它来决定代码放在哪个目录下。

表l6.5设备驱动程序配置子菜单分类/功能

“Device Drivers”子菜单 描述
Generic Driver Options 对应drivers/base目录,这是设备驱动程序中一些基本和通用的配置选项
Connector-unified userspace <>kemelspace linker 对应drivers/connector目录,一般不用理会
Memory Technology Device(MTD)support

对应drivers/mtd目录,它用于支持各种新型的存储设备,比如NOR Flash、NANDFlash等

Parallel port support 对应drivers/parport目录,它用于支持各种并口设备,在一般嵌入式开发板中用不到
Plug and Play support 对应drivers/pnp目录,支持各种“即插即用”的设备
Block devices 对应drivers/block目录,包括回环设备、RAMDISK等的驱动
AT/ATAPIUMFWRLL.supon 对应drivorsiae日录,它用来支持ATA/ATAPV MFM/RLL接口的硬盘、软盘、光盘等
SCSI device support 对应drivers/scsi目录,支持各种SCSl接口的设备
Serial ATA(prod)and Parallel ATA(experimental)drivers 对应 drivers/ata目录,支持SATA与PATA设备
Multi-device support(RAID and LVM) 对应drivers/md目录,表示多设备支持(RAID和LVM)。RAID和LVM的功能是使多个物理设备组建成一个单独的逻辑磁盘
Network device suppot 对应driversnet日录,用来支持各种网络设备,比如CS8900、DM9000等
ISDN subsytem 对应drivers/isdn目录,用来提供综合业务数字网(Integrated Service Digital Network)的驱动程序
Input device support 对应drivers/input目录,支持各类输入设备,比如键盘、Input device support鼠标等
Character devices

对应 drivers/char目录,它包含各种字符设备的驱动程序。串口的配置选项也是从这个菜单调用的,但是口的代码在drivers/serial目录下

I2C support 对应drivers/I2C目录,支持各类I2C设备
SPI support 对应drivers/spi目录,支持各类SPI设备
Dallas's 1-wire bus 对应drivers/wl目录,,支持一线总线。
Hardware Monitoring support

对应drivers/hwmon目录。当前主板大多都有一个监控硬件健康的设备用于监视温度/电压/风扇转速等,这些功能需要I2C的支持。在嵌入式开发板中一般用不到

Mise devices 对应drivers/misc目录,用来支持一些不好分类的设备,称为杂项设备
Multifunction device drivers 对应drivers/mfd目录,用来支持多功能的设备,比如 SM501,它既可用于显示图像,也可以用作串口等
LED devices 对应drivers/leds日录,包含各种LED驱动程序
Mulimedia devices 对应drivers/media目录,包含多媒体驱动,比如V4L(Video  for Linux“,它用于向上提供统一的图像、声音接口
Graphics support 对应drivers/video目录,提供图形设备/显卡的支持对应sound/目录(它不在drivers/日录下),用来支持各Sound种声卡
HID Devices

对应drivers/hid目录,用来支持各种USB-HID设备,或者符合USB.IID规范的设备(比如蓝牙设备),HID表示human interface device,比如各种USB接口的鼠标/键盘/游戏杆/手写板等输入设备
 

USB support  对应driversusb日录,包括各种USB Host 和USB Device设备
 
MMC/SD card support 对应drivers/mmc目录,用来支持各种MMC/SD卡
Real Time Clock 对应drivers/nc日录,用来支持各种实时时钟设备。比如S3C24x0上就集成了RTC芯片
   

你可能感兴趣的:(嵌入式Linux)