1. 程式人生 > >Linux3.4核心的基本配置和編譯

Linux3.4核心的基本配置和編譯

瞭解Linux3.4核心的特性及新增功能,掌握Linux核心的編譯過程及Linux核心配置選項的內容。

【實驗環境】

        ●主機:Ubuntu 10.10 (64bit);
                ●目標機:FS_S5PC100平臺;
              &nbsnbsp; ●交叉編譯工具鏈: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行:

        195

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

為:

# vim Makefile 195行:

        195
ARCH         ?= arm
        196

CROSS_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目錄。連線串列埠,開發板上電,測試核心,可以看到核心啟動的列印資訊。