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目录。连接串口,开发板上电,测试内核,可以看到内核启动的打印信息。
![](http://www.embedu.org/Column/images/Column634-1.jpg)
推荐阅读:linux内核input子系统解析
作者:李昕,华清远见研发中心讲师。
了解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目录。连接串口,开发板上电,测试内核,可以看到内核启动的打印信息。
![](http://www.embedu.org/Column/images/Column634-1.jpg)
推荐阅读:linux内核input子系统解析
相关文章推荐
- Linux3.4内核的基本配置和编译
- Linux3.4内核的基本配置和编译
- linux内核编译过程及配置说明解释(2)--General setup
- Linux 内核配置和编译(Ubuntu 10.4下操作)
- Ubuntu12.10 内核源码外编译 linux模块--编译驱动模块的基本方法
- Linux 2.6.19.x 内核编译配置选项简介
- [转]Linux 2.6.19.x 内核编译配置选项简介
- Linux 2.6.19.x 内核编译配置选项( 转载 )
- Linux 2.6 menuconfig内核编译配置选项详解
- 【内核】linux2.6版本内核编译配置选项(二)
- Linux 2.6.19.x 内核编译配置选项简介
- linux驱动编译进内核或模块配置
- Linux 2.6.19.x 内核编译配置选项简介
- linux 内核编译:内核配置原理与常见配置问题的解决方法&&内核版本控制解析
- Linux 内核配置及编译简介
- Linux内核的配置与编译(x86平台)
- Linux + ARM驱动开发环境配置(内核配置与编译)
- Linux 2.6.19.x 内核编译配置选项简介
- Linux 2.6 menuconfig内核编译配置选项详解
- Linux学习日志(9)- Linux 编译内核配置(001-键盘操作)