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
196CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
為:
# vim Makefile 195行:
195ARCH ?= arm
196
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目錄。連線串列埠,開發板上電,測試核心,可以看到核心啟動的列印資訊。