三星I8320 Android 移植(1)之Linux内核篇

此处省略三千字 2010-08-09

此帖发布的目的是让更多爱好者加入进来,共同开发和移植 AAndroid,奉行Linux开源的宗旨,大家共同努力和进步吧!
此帖发布的是Android的Linux内核章节。

发布之前,先感谢一下我的老师 mephistoph!  mephistoph 默默的做着代码移植工作。
为了调试方便,目前的版本是在TF卡内运行,内核用u-boot和uImage跑,暂时不刷机。

一.  准备工作

1.toolchain建立
下载和解压toochain: $ wget http://www.codesourcery.com/sgpp/lite/arm/portal/package5383/public/arm-none-linux-gnueabi/arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ tar xvjf arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C 你要解压的目录
设置toolchain: $ export PATH=/toolchain文件夹位置/bin:$PATH
$ export CROSS_COMPILE=arm-none-linux-gnueabi-
$ export ARCH=arm

2.安装git # apt-get install git-core

二.  u-boot 编绎

1. 下载master分支的源码 $ git clone git://h1.pargon.nl/srv/git-h1/u-boot.git
$ cd u-boot

2. 获取nowplus分支的代码更新(nowplus就是I8320的别名) $ git checkout nowplus

/*如果不成功,请用这个命令: $ git checkout -b nowplus origin/nowplus */

3. 修改u-boot/include/configs/omap3_nowplus.h

CONFIG_BOOTDELAY,CONFIG_EXTRA_ENV_SETTINGS和 CONFIG_BOOTCOMMAND #define CONFIG_BOOTDELAY 0

#define CONFIG_EXTRA_ENV_SETTINGS \
"loadaddr=0x82000000\0" \
"console=ttyS2,115200n8\0" \
"usbtty=cdc_acm\0"\
"stdout=usbtty\0" \
"stdin=usbtty\0" \
"stderr=usbtty\0" \
"bootargs=root=/dev/mmcblk0p1 rw init=/init rootdelay=1 rootfstype=ext3 rootwait debug\0" \

#define CONFIG_BOOTCOMMAND \
"bootm 0x86C30000"
4. 编绎u-boot $ make omap3_nowplus_config
$ make

三.  Linux 内核,版本为2.6.32.9

1. 下载master分支的源码 $ cd u-boot前一级目录 /*注意: u-boot和I8320Kernel应该在同一级目录下方便生成boot.bin*/
(git仓库搬家了,旧的: git://github.com/mephistophilis/I8320Kernel.git)
$ git clone git://gitorious.org/h1droid/i8320kernel.git
$ cd I8320Kernel

2. 获取i8320分支的代码更新 (现在没有i8320分支了$ git checkout i8320 /*如果不成功,请用这个命令: $ git checkout -b i8320 origin/i8320 */$ git pull origin i8320)
暂时只需要执行:
$ git pull origin master #更新代码

3. 为生成uImage设置工具路径 $ export PATH=u-boot目录/tools:$PATH
4. 编绎uImage $ cp arch/arm/configs/omap_nowplus_defconfig .config
$ make uImage
四.  生成 boot.bin
boot.bin目的是合成u-boot.bin和uImage.

1. 获取makeboot工具 $ cd kernel和u-boot前一级目录
$ wget http://h1droid.googlecode.com/files/makeboot.sh
$ chmod +x makeboot.sh

2. 生成boot.bin $ ./makeboot.sh ./u-boot/u-boot.bin ./I8320Kernel/arch/arm/boot/uImage

五.  运行 内核

1. 下载工具 $ git clone git://h1.pargon.nl/srv/git-h1/odin.git
$ cd odin

2. 编绎 $ make brick

3. 将I8320进入download状态,然后插上USB线,下载boot.bin $ ./odin ../boot.bin

/*boot.bin在前一级目录*/

这时屏幕会发白或花屏几秒,然后出来企鹅以及一些字符信息。
系统工作了。

相关推荐