您的位置:首页 > 运维架构 > Linux

Linux3.4内核的基本配置和编译

2013-03-21 17:18 281 查看
转载自:http://www.embedu.org/Column/Column634.htm

作者:李昕,华清远见研发中心讲师。
了解Linux3.4内核的特性及新增功能,掌握Linux内核的编译过程及Linux内核配置选项的内容。
【实验环境】
●主机:Ubuntu 10.10 (64bit);

●目标机:FS_S5PC100平台

●交叉编译工具链:arm-eabi-4.4.0(Android4.0.4自带交叉工具链);
【实验步骤】
解压内核
将linux3.4.0_android_goldfish.tar.bz2拷贝到Android源码下并解压;
$ tar xvf linux3.4.0_android_goldfish.tar.bz2

$ cd kernel/goldfish
修改Makefile
打开内核源码顶层的Makefile,修改CPU架构和交叉工具链;
# vim Makefile 195行:

195ARCH ?= $(SUBARCH)

196CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)

为:
# vim Makefile 195行:

195ARCH ?= arm

196CROSS_COMPILE?= ../../prebuilt/linux-x86/toolchain/ \

arm-eabi-4.4.0/bin/arm-eabi-

#交叉工具链路径相对于Android源码的路径,具体以实际交叉工具链路径为准
添加配置文件
拷贝Samsung S5PC100标准板配置文件作为FS_S5PC100配置文件,make menuconfig所做的修改也会保存到.config文件中;
$ cp arch/arm/configs/s5pc100_defconfig .config
配置内核
该命令执行时会弹出一个菜单,我们可以对内核进行详细的配置。
$ make menuconfig
●添加NEON驱动
NEON 技术是 ARM Cortex-A 系列处理器的128位SIMD(单指令多数据)体系结构扩展,旨在为消费性多媒体应用提供灵活强大的加速功能,从而明显改善用户体验。它具有 32个寄存器,64位宽(是16个寄存器,128位宽的双倍视图。)
Floating point emulation --->

[*]VFP-format floating point maths

[*] Advanced SIMD (NEON) Extension support
●添加Android所需要的驱动
Device Drivers --->

[*] Staging drivers --->

Android --->

[*] Android Drivers

[*] Android Binder IPC Driver

[*] Enable the Anonymous Shared Memory Subsystem

<*> Android log driver

[*] Android RAM buffer console

[*] Persistent function tracer

[*] Timed output class driver (NEW)

<*> Android timed gpio driver

[*] Android Low Memory Killer

<*> Android Switch class support --->
修改文件
注释编译器不支持的调试语句。
# vimmm/page-writeback.c +1772

1772 //BUG_ON(PageWriteback(page));
编译内核
执行编译命令编译内核,如果主机配置多核CPU可以使用多线程编译;
$ make zImage–jn # n 代表编译线程的数量
通过上述操作我们能够在arch/arm/boot目录下生成一个zImage文件,这就是经过压缩后的内核镜像。
测试
拷贝内核镜像到TFTP目录。连接串口,开发板上电,测试内核,可以看到内核启动的打印信息。



推荐阅读:linux内核input子系统解析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: