今天把android內核交叉編譯後移植到我的2440開發板,下面是一些心得。
1、從http://code.google.com/p/android/downloads/list上下載linux-2.6.25-android-1.0_r1.tar.gz
2、解壓到任意目錄下,解壓命令爲tar tar –zxvf linux-2.6.25-android-1.0_r1.tar.gz。
3、解壓2440板的交叉編譯工具arm-linux-gcc-3.4.1.tar.bz2命令爲tar xjvf arm-linux- 3.4.1.tar.bz2,將文件解壓到用戶目錄,如/usr/local/arm/下。
4、添加當前路徑進入環境變量,命令export PATH=/usr/local/arm/3.4.1/bin:$PATH
5、進入內核文件夾,如cd ~/kernel.git/
6、修改Makefile文件,gedit Makefile,如下
CROSS_COMPILE ?= arm-linux-
7、運行make menuconfig
(1)確保System Type ---> ARM system type ()中的內容爲Samsung S3C2410, S3C2412, S3C2413, S3C2440, S3C2442, S3C2443
(2)確保System Type ---> S3C2410 Machines --->SMDK2410/A9M2410被勾選
(3)取消選擇與Goldfish相關的內容,如下:
Device Drivers ---> Character devices ---> < > Goldfish TTY Driver
Device Drivers ---> Power supply class support ---> < > Goldfish battery driver (NEW)
Device Drivers ---> Real Time Clock ---> < > GOLDFISH (NEW)
Device Drivers ---> Graphics support ---> Support for frame buffer devices ---> < > Goldfish Framebuffer
device drivers->Graphics support->Console display driver support->[]VGA text console
(4)選擇S3C2410 LCD相關的內容
Device Drivers ---> Graphics support ---> Support for frame buffer devices ---> <*> S3C2410 LCD framebuffer support
Device Drivers ---> Graphics support ---> Bootup logo ---> Standard black and white Linux logo
Device Drivers ---> Graphics support ---> Bootup logo ---> Standard 16-color Linux logo
Device Drivers ---> Graphics support ---> Bootup logo ---> Standard 224-color Linux logo
(5) 選中Android內核必須選項
General setup ---> Use full shmem filesystem
General setup ---> Enable Android's Shared Memory Subsystem
System Type ---> Support Thumb user binaries
Device Drivers ---> Android ---> Android log driver
Device Drivers ---> Android ---> <*> Binder IPC Driver
(6) 儘量選中Android內核可選選項
Device Drivers ---> Android ---> RAM buffer console
Device Drivers ---> Android ---> Android timed gpio driver
Device Drivers ---> Android ---> Only allow certain groups to create sockets
(7)退出並保存.config
8、使用命令make zImage生成映像。
出現的一些問題
問題一:
CC arch/arm/kernel/asm-offsets.s
cc1: error: invalid option `abi=aapcs-linux'
make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1
make: *** [prepare0] Error 2
解決方法:
關閉kernel features -->Use EABI。
問題二:
drivers/video/console/vgacon.c:494: error: `PCIMEM_BASE' undeclared (first use in this function)
drivers/video/console/vgacon.c:494: error: (Each undeclared identifier is reported only once
解決方法:
device drivers->
Graphics support->
Console display driver support->
[ ]VGA text console(取消)
以上步驟中,省略了內核移植中的nandflash、lcd及yaffs2文件系統的支持,有機會補上去。
下載到開發板上就可以了,能夠啓動起來,遺憾的是,這個內核沒能啓動我的yaffs2根文件系統。我有點納悶了,不知道錯在哪裏,明明已經讓內核支持了yaffs2文件系統了,但是下載內核及根文件系統後,重新啓動Linux系統,到內核啓動完成,要加載根文件系統的地方就中斷了,具體錯誤如下:
待解決。