Linux3.4内核的基本配置和编译
来源:互联网 发布:excel数据库功能 编辑:程序博客网 时间:2024/06/08 12:21
转载自: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目录。连接串口,开发板上电,测试内核,可以看到内核启动的打印信息。
- Linux3.4内核的基本配置和编译
- Linux3.4内核的基本配置和编译
- 1.linux3.8.4内核编译和安装
- Linux3.4.9编译内核过程
- linux3.14.38内核编译出错
- CentOS v6.4 64位系统编译linux3.0.8内核错误的解决
- Linux3.6.7在OK6410平台的移植(二)编译配置linux3.6.7
- linux3.1内核移植到S3C2416的过程和问题。
- 内核配置和编译
- linux3.* 内核的__setup函数
- 编译Linux3.0.4内核,建立源码树
- linux3.0.4下编译helloworld内核驱动程序
- linux3.0内核编译常见错误收集
- Ubunt 编译新内核 linux3.14.17
- 编译Linux3.0.4内核,建立源码树
- 3.1Linux内核的配置和编译
- <四> 内核的配置和编译
- linux内核的配置和编译
- JavaScript 构造器(constructor)介绍
- MyBatis 关联映射之多对多
- 新手上路 jquery 选择器篇(二) 代码笔记
- iOS导航栏的隐藏(优化导航出现和隐藏的问题)
- 知识点总结之异或
- Linux3.4内核的基本配置和编译
- 树上的DP
- Java接口回调
- HTML6(六)
- Excuses, Excuses! Time Limit: 1000MSMemory Limit: 10000K Total Submissions: 4346Accepted: 1497 D
- 使用viewpager加fragment切换界面
- Fleury(弗洛莱)算法实现
- mysqldump备份时保持数据一致性
- 常用数据类型的范围