转载自: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./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内核的基本配置和编译的更多相关文章

  1. linux内核源代码、配置与编译

    内核源代码下载:www.kernel.org Linux内核源代码采用树形结构进行组织,非常合理地把功能相关的文件都放在同一个子目录下,使得程序更具可读性. linux内核代码最好不要在windows ...

  2. Linux内核配置、编译及Makefile简述

    Hi,大家好!我是CrazyCatJack.最近在学习Linux内核的配置.编译及Makefile文件.今天总结一下学习成果,分享给大家^_^ 1.解压缩打补丁 首先是解压缩你获取到的Linux内核. ...

  3. 基于OMAPL:Linux3.3内核的编译

    基于OMAPL:Linux3.3内核的编译 OMAPL对应3个版本的linux源代码,分别是:Linux-3.3.Linux-2.6.37.Linux2.6.33,这里的差距在于Linux2,缺少SY ...

  4. Linux 内核配置和编译

    Linux 内核配置和编译 一.配置内核 (1). 为什么要配置内核 1. 硬件需求 2. 软件需求 选出需要的,去掉不要的 (2). 如何配置内核 1. make  config 基于文本模式的交互 ...

  5. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  6. [国嵌攻略][099][Linux内核配置与编译]

    为什么要配置内核 基于硬件和软件的需求选出需要的功能,去掉不要的功能. 内核配置的方法 make config:基于文本交互的配置. make menuconfig:基于图形菜单的配置. make m ...

  7. linux下内核的配置和编译(2017-1-17)

    4.1 什么是内核 内核是操作系统内核的简称,内核负责实现操作系统的核心功能,包括资源管理模块,譬如内 存管理.调度系统等等.内核不包括应用程序.对于 linux 内核而言全世界是有一份内核,我们可 ...

  8. linux内核学习之二:编译内核

    在linux内核学习系列的第一课中讲述了搭建学习环境的过程(http://www.cnblogs.com/xiongyuanxiong/p/3523306.html),环境搭好后,马上就进入到下一环节 ...

  9. I2C(三) linux3.4(内核分析)

    目录 I2C(三) linux3.4(内核分析) (一)总线流程 bus.probe match i2c_device_probe (二)client注册 方式(一)静态加载 方式(二)指定设备 方式 ...

随机推荐

  1. CentOS 6.0 设置IP地址、网关、DNS

    切忌:    在做任何操作之前先备份原文件,我们约定备份文件的名称为:源文件名称+bak,例如原文件名称为:centos.txt    那么备份文件名称为:centos.txtbak 引言:linux ...

  2. JavaScript判断闰年

    <html><head>   <meta http-equiv="content-type" content="text/html;char ...

  3. SQL Server 2008安装和配置过程

    下面我将用图解的方式,来介绍SQL Server 2008安装和配置过程,希望对大家有所帮助. 闲言少叙,直奔主题!点击setup.exe安装文件后,如果系统没有以下组件,则会出现如下提示! 安装20 ...

  4. C#开源大全--汇总

    商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...

  5. 【UVA】【10828】随机程序

    数学期望/高斯消元/马尔可夫过程 刘汝佳老师白书上的例题- -b 本体不满足拓扑关系,但马尔可夫过程是可以高斯消元解的…… 用「高斯·约当消元」更方便! //UVA 10828 #include< ...

  6. 剑指offer--面试题10

    题目:求整数二进制表示中1的个数. 分析:此题直接考查二进制表示与位运算!!! 正数和负数的二进制表示不同!在计算机中,正数的二进制表示即为通常所写的二进制:而负数的二进制表示则用补码表示,即原码的反 ...

  7. AngularJS 基础

    1. AngularJs 是一个JS 框架,是一种基于MVC的设计模式 2. script 需引用 <script src="angular.min.js">,安装包 ...

  8. Web应用中的轻量级消息队列

    Web应用中为什么会需要消息队列?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达mysql,直接导致无数的行锁表锁,甚 ...

  9. Curl的毫秒超时的一个”Bug”

    Curl的毫秒超时的一个”Bug” -- PHP老杨 最近我们的服务在升级php使用的libcurl, 期望新版本的libcurl支持毫秒级的超时, 从而可以更加精细的控制后端的接口超时, 从而提高整 ...

  10. centos telnet --xinetd 服务

    telnet由于是明文传输,所以安全起见最好不要用telnet服务.但是由于telnet是一个比较方便的远程工具,在windows上是自带 的不需要安装客户端即可使用.如果telnet设置的比较复杂, ...