Linux内核裁剪实例

  • 格式:pdf
  • 大小:229.30 KB
  • 文档页数:10

下载文档原格式

  / 10
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux内核裁剪实例

从零开始配置内核是不明智的,建议在某一个默认配置的基础上进行修改,以达到自己产品的实际需求。

裁剪和配置内核的基本原则:

⏹基于某一个最接近的主板配置来修改;

⏹必须的、能确定的选项选中;

⏹不能确定的则不要改变原来配置;

⏹可选可不选的,建议根据help信息决定或者不选;

⏹一次改动不要太多,渐进式修改和验证;

⏹注意及时备份配置文件,出现意外可以回退恢复。

下面给出一些常见功能的配置裁剪实例,很多功能与所采用的主板硬件相关,与其它不同主板的内核配置上不一定完全相同,但还是有一些参考意义。

1.1.1 GPIO子系统配置

Linux 2.6以上内核引入了子系统,GPIO子系统将全部GPIO的操作接口都通过

“/sys/class/gpio/”目录导出,非常方便用户使用。

输入下列命令,进入内核配置菜单:

$ make ARCH=arm menuconfig

在主菜单界面中选择“Device Drivers”:

[*] Networking support --->

Device Drivers --->

File systems --->

Kernel hacking --->

进入“Device Drivers”界面,选择并进入“GPIO Support”:

[*] SPI support --->

PPS support --->

PTP clock support

-*- GPIO Support --->

<*> PWM Support --->

在“GPIO Support”中选中“/sys/cla ss/gpio…”:

--- GPIO Support

[*] /sys/class/gpio/... (sysfs interface)

*** Memory mapped GPIO drivers: ***

配置后重新编译内核,使用新内核的系统即可通过“/sys/class/gpio/”访问系统的GPIO 了。

1.1.2 LED子系统配置

Linux LED子系统提供了“/sys/class/leds/”的访问接口,启用LED子系统能很方便地操作系统的LED资源。

在“Device Drivers”配置界面,选中“LED Support”支持:

<*> MMC/SD/SDIO card support --->

<> Sony MemoryStick card support (EXPERIMENTAL) --->

[*] LED Support --->

[ ] Accessibility support --->

进入“LED Support”子菜单,选中LED类支持和LED触发器支持,并根据需要设置触发器:

--- LED Support

[*] LED Class Support

*** LED drivers ***

...

[*] LED Trigger support

*** LED Triggers ***

<*> LED Timer Trigger

<*> LED Heartbeat Trigger

<> LED backlight Trigger

<*> LED GPIO Trigger

<*> LED Default ON Trigger

只要将系统的LED设备驱动添加到LED子系统中,即可通过“/sys/class/leds/”接口来进行访问。

1.1.3 串口配置

串口是嵌入式Linux必不可少的外设,默认控制台通常就是串口,所以必须在内核中使能串口以及串口控制台支持。

在“Device Drivers”配置界面,选择“Character devices”:

Input device support --->

Character devices--->

-*- I2C support --->

进入“Character devices”配置菜单,选择“Serial drivers”:

[*] /dev/kmem virtual device support

Serial drivers--->

[ ] ARM JTAG DCC console

进入“Serial drivers”,在配置界面进行串口控制器配置。嵌入式Linux默认控制台是串口,所以还需使能串口控制台支持。串口控制器与具体处理器相关,需要根据硬件进行选择,很多处理器移植代码会默认选中自身的串口驱动支持,例如EPC-28x,已经默认选中了“i.MXS Application serial port support”:

8250/16550 and compatible serial support

*** Non-8250 serial port support ***

<*> i.MXS debug serial port support

<*> i.MXS Application serial port support

...

1.1.4 USB Host驱动配置

USB可以外接多种设备,不同设备的驱动配置也是不同的。下面以常用的U盘、USB 鼠标键盘配置为例进行介绍。

1.使用U盘

U盘在Linux系统下被认为是SCSI设备,所以必须在内核中选择支持SCSI。在主菜单界面选择“Device Drivers”,进入设备驱动配置界面,选择“SCSI device support”:

[*] Block devices --->

[*] Misc devices --->

SCSI device support --->

<> Serial ATA and Parallel A TA drivers --->

进入“SCSI device support”配置界面,进行如下配置:

<> RAID Transport Class

<*> SCSI device support

<> SCSI target support

[*] legacy /proc/scsi/ support

*** SCSI support type (disk, tape, CD-ROM) ***

<*> SCSI disk support

<> SCSI tape support

<> SCSI OnStream SC-x0 tape support

然后在驱动中配置USB控制器。进入“Device Drivers”,选中“USB support”:

<> Sound card support --->

[ ] HID Devices --->

[*] USB support--->

<*> MMC/SD/SDIO card support --->

进入“USB support”菜单,选中“Support for Host-side USB”,并根据处理器的控制器情况配置USB控制器。下面是EPC-28x处理器USB控制器的配置:

--- USB support

<*> Support for Host-side USB

[*] USB device filesystem (DEPRECA TED)

[*] USB device class-devices (DEPRECA TED)

[*] USB runtime power management (suspend/resume and wakeup)

<*> EHCI HCD (USB 2.0) support

[*] Support for Freescale controller

[*] Support for Host1 port on Freescale controller

[*] Support for DR host port on Freescale controller

[*] Root Hub Transaction Translators

使用U盘,必须使能USB大容量类支持,选中“USB Mass Storage support”:

相关主题