gconfig定制Linux内核(编辑中。。。)

devkit8000是基于TI公司的OMAP3530 Cortex-A8内核ARM处理器开发的一款开发板,最初的devkit8000开发板板载128M SDRAM和128M NAND Flash。后来又发布了2G版本,即第二代devkit8000,板载256M DDR SDRAM和256M NAND Flash。

对于OMAP3530,来自官网的参数表如下:

参数
  OMAP3530
CPU 1 64x+,ARM Cortex-A8
Peak MMACS 4160
Frequency(MHz) 520
RISC Frequency(MHz) 720
On-Chip L1/SRAM 112 KB (DSP),32 KB (ARM Cortex-A8)
On-Chip L2/SRAM 96 KB (DSP),256 KB (ARM Cortex-A8)
RAM(KB) 64 KB
ROM 16 KB (DSP),32 KB (ARM Cortex-A8)
EMIF 1 32-Bit SDRC,1 16-Bit GPMC
External Memory Type Supported LPDDR,NOR Flash,NAND flash,OneNAND,Asynch SRAM
DMA(Ch) 64-Ch EDMA,32-Bit Channel SDMA
Video Port (Configurable) 1 Dedicated Output,1 Dedicated Input
Graphics Accelerator 1
MMC/SD 3
McBSP 5
Pin/Package 423FCBGA, 515POP-FCBGA
POP Interface Yes (CBB)
I2C 3
McSPI 4
HDQ/1-Wire 1
UART(SCI) 3
USB 2
Timers 12 32-Bit GP,2 32-Bit WD
Core Supply (Volts) 0.8 V to 1.35 V
IO Supply(V) 1.8 V,3.0 V (MMC1 Only)
Operating Temperature Range(°C) 0 to 90,-40 to 105

 悲剧的是,应用于devkit8000的自带Linux却是OMAP3430内核。OMAP3430和OMAP3530都是面向无线应用的处理器,都自带了SGX 2D/3D加速功能,提供超强的多媒体处理能力,但是OMAP3530比3430更进一步,片上集成了430MHz TMS320C64x DSP Core,这下牛大了,图像处理能力比OMAP3430强大许多,而销售商提供的板载linux系统还是3430的,根本没有针对3530的强大性能制作相应的Linux内核,简直是草菅人命啊。。。

本文记录了本人在Ubuntu10.04下使用gconfig图形界面对Linux内核定制的过程,定制对象是DevKit8000开发板、 OMAP3530 内核。

DevKit8000附带了2.6.24内核,但Linux 的 kernel.org网站上,到了2.6.38,已经把devkit8000集成到了内核,所以可以先倒腾倒腾2.6.38,可惜的是,这是个任然是个3430的核,应该就是天漠提供的了,你还能期望什么呢?。。。

有很多个定制内核的工具,都是窗口界面的,很直观,如menuconfig、xconfig、gconfig等等,我在Ubuntu下做定制,打算使用gconfig来做,所以需要先把gconfig所需的运行库装好。当然,你也可以用menuconfig,但那是个类似于dos的“图形界面”,不是太习惯;xconfig是基于QT3开发的,要想使用它,你的安装QT3开发库和相关的其他模块。

gconfig是基于GTK的,如果没有安装GTK,会出现如下的运行错误: 

hyh@hyh-laptop:/usr/src/linux-2.6.38-rc6$ make gconfig
*
* Unable to find the GTK+ installation. Please make sure that
* the GTK+ 2.0 development package is correctly installed…
* You need gtk+-2.0, glib-2.0 and libglade-2.0.
*
make[1]: *** 没有规则可以创建“scripts/kconfig/gconf.o”需要的目标“scripts/kconfig/.tmp_gtkcheck”。 停止。
make: *** [gconfig] 错误 2

所以要运行gconfig,需要GTK开发环境相关的函数库,命令如下:

sudo apt-get install libglade2-dev

 

hyh@hyh-laptop:/usr/src/linux-2.6.38-rc6$ sudo apt-get install libglade2-dev
[sudo] password for hyh:
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
下列软件包是自动安装的并且现在不需要了:
linux-headers-2.6.32-24 linux-headers-2.6.32-24-generic
使用’apt-get autoremove’来删除它们
将会安装下列额外的软件包:
debhelper html2text libatk1.0-dev libcairo2-dev libdirectfb-dev
libdirectfb-extra libexpat1-dev libfontconfig1-dev libfreetype6-dev
libglib2.0-dev libgtk2.0-dev libjpeg62-dev libpango1.0-dev libpixman-1-dev
libpng12-dev libsysfs-dev libxcb-render-util0-dev libxcb-render0-dev
libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxfixes-dev
libxft-dev libxi-dev libxinerama-dev libxml2-dev libxrandr-dev
libxrender-dev x11proto-composite-dev x11proto-damage-dev x11proto-fixes-dev
x11proto-randr-dev x11proto-render-dev x11proto-xext-dev
x11proto-xinerama-dev zlib1g-dev
建议安装的软件包:
dh-make libcairo2-doc glade glade-gnome libglib2.0-doc python-subunit
libgtk2.0-doc libpango1.0-doc
下列【新】软件包将被安装:
debhelper html2text libatk1.0-dev libcairo2-dev libdirectfb-dev
libdirectfb-extra libexpat1-dev libfontconfig1-dev libfreetype6-dev
libglade2-dev libglib2.0-dev libgtk2.0-dev libjpeg62-dev libpango1.0-dev
libpixman-1-dev libpng12-dev libsysfs-dev libxcb-render-util0-dev
libxcb-render0-dev libxcomposite-dev libxcursor-dev libxdamage-dev
libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2-dev
libxrandr-dev libxrender-dev x11proto-composite-dev x11proto-damage-dev
x11proto-fixes-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev
x11proto-xinerama-dev zlib1g-dev
升级了 0 个软件包,新安装了 38 个软件包,要卸载 0 个软件包,有 8 个软件包未被升级。
需要下载 11.5MB 的软件包。

……
……

然后再执行make gconfig,就会出来.config的配置界面了:

hyh@hyh-laptop:/usr/src/linux-2.6.38-rc6$ make gconfig
HOSTCC scripts/kconfig/gconf.o
In file included from /usr/include/gtk-2.0/gtk/gtk.h:233,
from /usr/include/libglade-2.0/glade/glade-xml.h:26,
from /usr/include/libglade-2.0/glade/glade.h:28,
from scripts/kconfig/gconf.c:16:
/usr/include/gtk-2.0/gtk/gtkitemfactory.h:47: warning: function declaration isn’t a prototype
scripts/kconfig/gconf.c:82: warning: no previous prototype for ‘dbg_sym_flags’

……

……

……

这样,gconfig窗口就启动了,show一下:

 

说起Linux内核定制,实际上是对顶层目录的.config文件的定制,make命令会根据.config的配置加载并编译相关的模块,达到针对特殊硬件定制特殊Linux内核的目的。

看过gconfig界面,也算有了初步的认识,下一步看看如何定制适合OMAP3530的内核。

Comments

One Response

  1. Paulina说道:

    If I were a Teenage Mutant Ninja Turtle, now I’d say “Kaoabungw, dude!”

发表评论

电子邮件地址不会被公开。

Proudly powered by WordPress and Sweet Tech Theme