Chinaunix首页 | 论坛 | 博客
  • 博客访问: 385732
  • 博文数量: 115
  • 博客积分: 2501
  • 博客等级: 少校
  • 技术积分: 1009
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-23 17:05
文章分类

全部博文(115)

文章存档

2011年(2)

2010年(86)

2009年(27)

我的朋友

分类: 嵌入式

2010-10-16 23:46:40

1.3.3 配置Linux内核

1 进入Linux-2.6.29.1内核主目录,通过以下命令将2410的默认配置文件写到当前目录下的.configS3C2410的配置和S3C2440差不多,,在这基础上进行修改。

make  s3c2410_defconfig              

2 配置内核模块的功能,有几种方式可以进行界面选择:

make menuconfig(文本选单的配置方式,在有字符终端下才能使用)

make xconfig(图形窗口模式的配置方式,图形窗口的配置比较直观,必须支持Xwindow下才能使用)

make oldconfig(文本配置方式,在原内核配置的基础修改时使用)

这里使用make menuconfig命令。

3[*]Enable loadable module support--->

              [*]Forced module loading

              [*]Module unloading

4System Type--->

           S3C2410 Machines--->

                     [*]SMDK2410/A9M2410选上 其余不选

           S3C2440 Machines--->

                     [*]SMDK2440

                     [*]SMDK2440 with S3C2440 CPU module,其余不选

其余的Machines下选项全部不选(如2400241224422443

5Kernel Features--->

[*]Use the ARM EABI to compile the kernel

       注:由于所使用的的交叉编译arm-linux-gcc-4.3.2是符合EABI标准交叉编译器,对于浮点运行会预设硬浮点运算FPA(Float Point Architecture),而没有FPACPU,比如SAMSUNG S3C2410/S3C2440,会使用FPE(Float Point Emulation 即软浮点),这样在速度上就会遇到极大的限制,使用EABI(Embedded Application Binary Interface)则可以对此改善处理,ARM EABI有许多革新之处,其中最突出的改进就是Float Point Performance,它使用Vector Float Point(矢量浮点),因此可以极大提高涉及到浮点运算的程序。

参考:%3D1

6Boot options-

noinitrd root=/dev/mtdblock2 init=/linuxrc  console=ttySAC0 mem=64M

7Userspace binary formats--->

              [*]Kernel support for ELF binaries

其它的可以全部不选。

8 选择支持yaffs2文件系统

Filesystem--->

              Miscellaneous filesystems--->

                     <*>YAFFS2 file system support

                     [*]   Lets Yaffs do its own ECC

                     [*]Autoselect yaffs2 format

[*]Disable lazy loading

[*]Turn off wide tnodes

[*]Force chunk erase check

              Native language support

<*> Codepage 437 (United States,Canada)

<*>Simplified Chinese charset(GB2312)

<*>Traditional Chinese charset(Big5)

<*>NLS ISO 8859-1(Latin1:Western European Languages)

<*>NLS UTF-8

9Device Drivers--->

              Graphics support--->

                     <*>Support for frame buffer devices--->

                            [*]Enable firmware EDID

                            [*]Enable Video Mode Handling Helpers

                            <*>S3C2410 LCD framebuffer support

                     Console display driver support--->

                            <*>Framebuffer Console support

                            [*]Select compiled-in fonts

                            [*] VGA8x8 font

                            [*]VGA8x16 font

[*]Bootup logo--->

                            [*]Standard black and white Linux logo

                            [*]Standard 16-color Linux logo

                            [*]Standard 224-color Linux logo

Bootup logo--->选择的那几项,将会在系统启动时在液晶上显示开机logo

1.3.4、编译内核

编译内核需要遵守以下步骤:

1make dep

make dep的意思就是说:如果你使用程序A(比如支持特殊设备),而A需用到B(比如BA的一 个模块/子程序)。而你在做make config的时候将一个设备的驱动 由内核支持改为module,或取消支持,这将可能影响到B的一个参数的设置,需重新编译B,重新编译或连接A....如果程序数量非常多, 你是很难手工完全做好此工作的。make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要编译。所以,你要make dep

2make clean

清除一些以前留下的文件,比如以前编译生成的目标文件,这一步必须要进行。否则,即使内核配置改动过,编译内核时还是将原来生成的目标文件进行连接,而不生成改动后的文件。

3make zImage

Linux内核有两种映像:一种是非压缩内核,叫 Image,另一种是它的压缩版本,叫zImage。根据内核映像的不同,Linux内核的启动在开始阶段也有所不同。zImageImage经过压缩形成的,所以它的大小比 Image小。但为了能使用zImage,必须在它的开头加上解压缩的代码,将 zImage解压缩之后才能执行,因此它的执行速度比Image要慢。但考虑到嵌入式系统的存储空容量一般比较小,采用zImage可以占用较少的存储空间,因此牺牲一点性能上的代价也是值得的,所以一般的嵌入式系统均采用压缩内核的方式。

编译完成后,会在内核目录arch/arm/boot/下生成zImage内核映像文件。

阅读(718) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~