close

首先,在Linux下,從Android Open Source Project取得Linux 2.6.27 kernel for Android:

Using Repo and Git

$ cd $(andkernel)

$ git clone git://android.git.kernel.org/kernel/common.git

 

ATMEL的Linux kernel patch其實就在'AT91CAP9-STK Linux Software Package'中,

還沒下載過的請按此ATMEL原廠下載

解壓縮之後,在linux-at91cap9stk-source/patch/linux中有三個Patch檔:

0001_CAP9-STK_linux-2.6.27-at91.patch

0002_CAP9-STK_linux-2.6.27-at91-exp-cap9-dk.patch

0003_CAP9-STK_linux-2.6.27-at91-exp-cap9-stk.patch

STK板需要0001+0003,DK板需要0001+0002。

 

把需要的Patch檔移動到$(andsrc)/kernel下,使用以下指令對kernel做patch:

$ patch -p1 < patch-file-name-here

有關patch的使用與功能,請參考這裡

(注意:在patch 0003的時候,會有Hunk #1 FAILED at 18. 出現在ads7846.c。

是這因為檔案已經修改過,不須再做patch。)

 

Patch成功後,還有kernel選項需要調整,

在$(andkernel)/common/arch/arm/configs/內有各種開發板的default設定值,

我們先套用at91cap9-stk的設定:

$ cp $(andkernel)/common/arch/arm/configs/at91cap9stk_defconfig $(andkernel)/common/.config

$ make ARCH=arm menuconfig

在這裡我們先不修改設定,直接Exit並儲存設定。

 

為了編譯ARM CPU可用的kernel,我們使用CodeSourcery的

Sourcery G++ Lite 2008q3-66 for ARM EABI

以下我們以下載IA32 GNU/Linux Installer為例:

$ ./arm-2008q3-66-arm-none-eabi.bin

安裝完成之後,把compiler加入PATH:

$ export PATH=$PATH:$(codesourcery)/Sourcery_G++_Lite/bin

修改$(andkernel)/common底下的Makefile:

CROSS_COMPILE   ?= arm-none-eabi-

接著就可以編譯kernel了!

$ make ARCH=arm

 

OK,現在我們有了kernel,不過U-Boot只吃uImage,

所以要把產生出來的Image改成uImage:

$ cd $(andkernel)/common/arch/arm/boot

$ gzip -9 Image

$ mkimage -A arm -O linux -T kernel -C gzip -a 0x70008000 -d Image.gz uImage

uImage就是我們要的kernel囉。

(待續...)

arrow
arrow
    全站熱搜

    sheng7337 發表在 痞客邦 留言(0) 人氣()