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


    转载自: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目录。连接串口,开发板上电,测试内核,可以看到内核启动的打印信息。

  • 相关阅读:
    Python数据可视化——散点图
    [ffmpeg 扩展第三方库编译系列] 关于 mingw32 下编译libcaca
    独立python环境之virtualenv和virtualenvwrapper
    深入理解maven及应用(一):生命周期和插件
    Android页面事件挂接模拟
    第六课 Struts的视图组件
    wxWidgets笔记_1_linux环境下wxwidgets的安装与配置
    使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中&lt;meta-data&gt;变量的值
    ubuntu 下安装eclipse &amp;java环境配置
    [Swift]LeetCode695. 岛屿的最大面积 | Max Area of Island
  • 原文地址:https://www.cnblogs.com/Ph-one/p/4934165.html
Copyright © 2020-2023  润新知