ARM嵌入式系统开发完全入门与主流实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.11 实验:编译Linux内核

实验目的:

了解ARM系统内核的编译过程。

实验内容:

完成Linux内核的编译。

预备知识:

熟悉Linux的基本操作。

实验设备:

安装Redhat9的PC,配置好ARM-Linux的开发环境。

实验步骤:

1. 查看内核文件结构

打开Linux下的一个终端,输入:

            cd /s3c2410_linux/kernel/

即可进入Linux内核文件所在的目录,然后输入:

            ls

此时在屏幕上即可输出Linux内核所包含的文件。

2. 清理以前的编译结果

在打开的终端上输入:

            make clean
            make dep

在按回车键后即可清理掉以前的编译结果。

3. 编译内核

在打开的终端上输入:

            make menuconfig   /*推荐使用*/

这条命令是用来调用菜单式的配制内核界面的,相应的还有命令行式的配制方法

            make config      /*不推荐使用*/

在按回车键后即会出现类似于vivi的配置界面的界面,如图2-16所示。

图2-16 Linux内核配置菜单图

下面简单介绍一下各个选项的含义。

(1)Code maturity level options

这个选项的作用域是整个配置空间,如果在这里选中响应的级别,则不符合此条件的选项就不会在后面出现。这个选项是代码的成熟程度的选择,意思是如果你需要一个非常成熟稳定的系统,那么有些新功能就不能使用,并且一个包含有新功能的系统就可能存在相应的风险,可以根据自己的需求选择。进入“Code maturity level options”菜单后的画面如图2-17所示。

图2-17 “Code maturity level options”菜单配置图

(2)Loadable module support

这个选项是你的内核对内核模块的支持选项,包括是否支持和支持的一些配置等,选择此项会使内核文件变大。进入“Loadable module support”后的菜单画面如图2-18所示。

图2-18 “Loadable module support”菜单配置图

(3)System Type

选择对系统的支持,如选择什么样的ARM内核、什么样的配置平台等。实验仪提供的内核是给S3C2410提供的,如果使用不同的处理器系统或是不同的内核,此处的选项可能不同。进入“System Type”后的菜单画面如图2-19所示。

图2-19 “System Type”菜单配置图

(4)General setup

这里是内核本身的一些属性的配置,包括压缩方式、网络支持等很多属性。进入“General setup”后的菜单画面如图2-20所示。

图2-20 “General Setup”菜单配置图

(5)Parallel port support

这个选项顾名思义就是选择内核对并口的支持,当选中对并口支持后会出现新的选项来配置不同类型、不同模式的并口。进入“Parallel port support”后的菜单画面如图2-21所示。

图2-21 “Parallel port support”菜单配置图

(6)Memory Technology Devices (MTD)

这个选项是对MTD设备的支持选项,对嵌入式系统比较重要,内核对各种Flash的支持都在这里配置,包括种类、分区等。进入Memory Technology Devices后的菜单画面如图2-22所示。

图2-22 “Memory Technology Devices”菜单配置图

(7)Plug and Play configuration

内核对即插即用的支持选项,这个选项在嵌入式系统中极少使用。进入“Plug and Play Support”后的菜单画面如图2-23所示。

图2-23 “Plug and Play configuration”菜单配置图

(8)Block device

内核对块设备的支持选项,支持各种磁盘系统。进入“Block device”后的菜单画面如图2-24所示。

图2-24 “Block device”菜单配置图

(9)Multi-device support(RAID and LVM)

内核对多设备的支持选项,主要是对RAID和LVM的支持,这个在嵌入式系统中极少使用。进入“Multi-device support(RAID and LVM)”后的菜单画面如图2-25所示。

图2-25 “Multi-device support(RAID and LVM)”菜单配置图

(10)Networking options

内核的网络支持选项,Linux对网络的支持是内核级的,在这里可以配置对不同网络协议的支持情况。进入“Networking options”后的菜单画面如图2-26所示。

图2-26 “Networking options”菜单配置图

(11)Network device support

内核对网络设备的支持选项,通常对网卡的支持在这里选择,是常用的选项,例如系统在配置不同的网卡时就要在这里选中不同的选项。进入“Network device support”后的菜单画面如图2-27所示。

图2-27 “Network device support”菜单配置图

(12)Amateur Radio support

业余无线电支持选项,在嵌入式系统中极少使用。进入“Amateur Radio support”后的菜单画面如图2-28所示。

图2-28 “Amateur Radio support”菜单配置图

(13)IrDA (infraed) support

IrDA支持选项,就是对红外线通信口的支持。进入“IrDA (infraed) support”后的菜单画面如图2-29所示。

图2-29 “IrDA (infraed)support”菜单配置图

(14)ATA/IDE/MFM/RLL support

对IDE口的支持选项,这里选择支持不同的IDE设备,包括CDPOM、HARDDISK、TAP等。进入“ATA/IDE/MFM/RLL support”后的菜单画面如图2-30所示。

图2-30 “ATA/IDE/MFM/RLL support”菜单配置图

(15)SCSI support

SCSI设备的支持选项,也比较少使用。进入“SCSI support”后的菜单画面如图2-31所示。

图2-31 “SCSI support”菜单配置图

(16)I2O device support

智能IO结构支持,在嵌入式系统中也比较少使用。进入“I2O device support”后的菜单画面如图2-32所示。

图2-32 “I2O device support”菜单配置图

(17)ISDN subsystem

ISDN的支持选项。进入“ISDN subsystem”后的菜单画面如图2-33所示。

图2-33 “ISDN subsystem”菜单配置图

(18)Input core support

输入设备核支持选项,通常当需要支持USAB的HID设备时选中。进入“Input core support”后的菜单画面如图2-34所示。

图2-34 “Input core support”菜单配置图

(19)Character devices

字符型设备的支持选项,这个选项是在嵌入式系统中经常使用的选项,嵌入式系统中大量的设备都属于Char型的设备。进入“Character devices”后的菜单画面如图2-35所示。

图2-35 “Character devices”菜单配置图

(20)Multimedia devices

多媒体设备的支持选项。进入“Multimedia devices”后的菜单画面如图2-36所示。

图2-36 “Multimedia devices”菜单配置图

(21)File systems

内核对不同文件系统的支持选项,在这里选择需要支持的文件系统。进入“File systems”后的菜单画面如图2-37所示。

图2-37 “File systems”菜单配置图

(22)Console drivers

控制台的选择选项,这里主要选择是否把Console定位到VGA上面,以及是否对Frame-Buffer支持。进入“Console drivers”后的菜单画面如图2-38所示。

图2-38 “Console drivers”菜单配置图

(23)Sound

对声音设备的支持选项。进入“Sound”后的菜单画面如图2-39所示。

图2-39 “Sound”菜单配置图

(24)Mutimedia Capabilities Port drivers

多媒体设备的支持选项。进入“Mutimedia Capabilities Port drivers”后的菜单画面如图2-40所示。

图2-40 “Mutimedia Capabilities Port drivers”菜单配置图

(25)USB support

各种USB设备的支持选项。进入“USB support”后的菜单画面如图2-41所示。

图2-41 “support for USB”菜单配置图

(26)Bluetooth support

蓝牙设备的支持选项。进入“Bluetooth support”后的菜单画面如图2-42所示。

图2-42 “Bluetooth Subsystem support”菜单配置图

(27)Kernel backing

内核Debug用的一些选项,用于报告各种信息。进入“Kernel backing”后的菜单画面如图2-43所示。

图2-43 “Kernel backing”菜单配置图

(28)Load and Alternate Configration File

Load不同的配置文件。进入“Load and Alternate Configration File”后的菜单画面如图2-44所示。

图2-44 “Load and Alternate Configration File”菜单配置图

(29)Save Configration to an Alternate File

保存配置文件。进入“Save Configration to an Alternate File”后的菜单画面如图2-45所示。

图2-45 “Save Configration to an Alternate File”菜单配置图

在设置好各选项后选择“Exit”退出和保存就可以了。

4. 生成内核文件

在设置好各选项后退出,输入:

            make zImage

zImage文件是通过内核编译后生成的Linux内核文件,按回车键后即会在屏幕上看到其相应的生成过程。

5. 编译模块驱动程序

当内核编译完成后输入:

            make modules

即可开始模块驱动程序的编译,凡是在menuconfig中被选为<M>的都会在这条命令运行时被编译。

至此内核的编译已经完成,把生成的zImage文件复制到/tftpboot/目录中备用:

            cp ./arch/arm/boot/zImage /tftpboot/ -f

实验小结:

本次实验编译了Linux内核。内核的配置选项很多,本实验仪提供的内核文件已经做好了相应的配置,如果想深入了解内核,还需要很多相关的知识。