主要分享在Devkit8500板子上移植并定制本身的Androidhtml
首先,入手这个板子的时候,能够看看Devkit8500的配件包,它自带了一些额外的数据线或者小设备,其中最最要的是找到里面的DVD光盘,里面有好多东西对移植是很是重要的,包括各类须要使用到的编译工具和Linux kernel、Android源码!!linux
全部方法和教程其实都是参考其自带的Devkit8500用户手册android
步骤:一、拷贝DVD中的编译工具和源码:shell
<!-- lang: shell --> linux-2.6.32-devkit8500.tar.bz2 // Linux-2.6.32的内核 rowboat-android-froyo-devkit8500.tar.bz2 //Android2.2的源码 /linux/demo/Android/image 下的全部文件 //已经提供好的,编译好的Android2.2的相关文件 /media/cdrom/linux/tools // 全部用到的工具 以及里面的用户手册,你直接拷贝中文的,用户手册分为2分,一份是简单的,另外一分是详细的,你把两份都拷下来。
在尚未开始编译本身的Android系统以前,咱们能够现将上面拷贝的/linux/demo/Android/image 下的全部文件复制到TF卡上,并根据您所使用的显示设备 LCD(4.3",7"),重命名 uImage_xx 为 uImage。(里面会有两个uImage文件,分别是4.3和7寸的显示屏的,根据本身的设备修改uImage的名称),而后将TF卡插到板子上,上电,等到因此文件都拷贝到板子的ROM上后,重启就能够看到Android系统了,具体参考用户手册!!ubuntu
二、安装编译环境。bash
在ubuntu的$HOME目录下新建目录:tools,并将/media/cdrom/linux/tools中的工具解压,并拷贝到该目录,而后配置环境变量。若是用终端命令操做,示例以下:svn
<!-- lang: shell --> cd /media/cdrom/linux/tools tar xvf arm-eabi-4.4.0.tar.bz2 -C $HOME tar xvf arm-2007q3.tar.bz2 -C $HOME mkdir $HOME/tools cp /media/cdrom/linux/tools/mkimage $HOME/tools cp /media/cdrom/linux/tools/signGP $HOME/tools cp /media/cdrom/linux/tools/mkfs.ubifs $HOME/tools cp /media/cdrom/linux/tools/ubinize $HOME/tools cp /media/cdrom/linux/tools/ubinize.cfg $HOME/tools export PATH=$HOME/arm-eabi-4.4.0/bin:$HOME/tools:$PATH
你也能够将环境变量写进~/.bashrc文件,这样也比较方便,不知每回开机就要从新设置环境变量。工具
三、开始进行编译,并定制本身的Android系统网站
针对不一样的目的要求能够定制不一样的Android系统,个人主要目的是:要在本身定制的Android操做系统中移植安装Systemtap工具。对于移植安装Systemtap工具,我会在后面的博客分享给你们ui
分为2步:一、编译linux内核,二、在linux内核的基础上编译Android源码
首先,个人Android源码和Linux内核源码都放在Home目录下
一、编译linux内核:linux-2.6.32-devkit8500 为了可以安装上systemtap,要对内核进行一些修改:进入到arch/arm/include/asm/ptrace.h,修改以下,在下面几行后面
<!-- lang: shell --> #define isa_mode(regs) \ ((((regs)->ARM_cpsr & PSR_J_BIT) >> 23) | \ (((regs)->ARM_cpsr & PSR_T_BIT) >> 5)) #define processor_mode(regs) \ ((regs)->ARM_cpsr & MODE_MASK) #define interrupts_enabled(regs) \ (!((regs)->ARM_cpsr & PSR_I_BIT)) #define fast_interrupts_enabled(regs) \ (!((regs)->ARM_cpsr & PSR_F_BIT))
添加:
<!-- lang: shell --> #define condition_codes(regs) \ ((regs)->ARM_cpsr &(PSR_V_BIT|PSR_C_BIT|PSR_Z_BIT|PSR_N_BIT))
最后变成:
<!-- lang: shell --> #define isa_mode(regs) \ ((((regs)->ARM_cpsr & PSR_J_BIT) >> 23) | \ (((regs)->ARM_cpsr & PSR_T_BIT) >> 5)) #define processor_mode(regs) \ ((regs)->ARM_cpsr & MODE_MASK) #define interrupts_enabled(regs) \ (!((regs)->ARM_cpsr & PSR_I_BIT)) #define fast_interrupts_enabled(regs) \ (!((regs)->ARM_cpsr & PSR_F_BIT)) #define condition_codes(regs) \ ((regs)->ARM_cpsr &(PSR_V_BIT|PSR_C_BIT|PSR_Z_BIT|PSR_N_BIT)) /* Are the current registers suitable for user mode? * (used to maintain security in signal handlers) */
而后开始编译:
<!-- lang: shell --> cd linux-2.6.32-devkit8500 make distclean make omap3_devkit8500_android_defconfig make menuconfig
在图形界面中开启以下选项,这些是systematp必须须要的开关:
<!-- lang: shell --> CONFIG_KPROBES: General Setup -> Kprobes CONFIG_RELAY: General Setup -> user spacerelay support CONFIG_PROFILING: General Setup -> Profilingsupport (EXPERIMENTAL) + General Setup -> Oprofile system profiling(EXPERIMENTAL)
另外还有一个开关要打开,这主要是为了符合你板子屏幕大小,打开屏幕大小选项:
个人屏幕是4.3的,因此选择4.3
最后执行:
<!-- lang: shell --> make uImage
执行完以上操做后,arch/arm/boot 目录下会生成咱们须要的 uImage 文件。
二、编译Android源码,生成ubi.img UBI是一种文件系统,主要用于智能手机中。厂商提供的源码仍是有点问题,有些地方须要改动,就是这么点问题搞了很久,google也没结果!
以下图,进入到/OMAP35x_Android_Graphics_SDK_3_01_00_03目录下
首先修改Rules.make文件两处,一是HOME变量路径,二是KERNEL_INSTALL_DIR,我将原来的注释了,而后加上了修改后的路径:
<!-- lang: shell --> #set home area HOME (relative location for all SDK operations) #HOME=/home/android/rowboat-android-froyo-devkit8500 HOME=/home/ubuntu/rowboat-android-froyo-devkit8500 #set the kernel installation path #KERNEL_INSTALL_DIR=/home/luofc/work/svn/AM37x_EVM/kernel/linux-2.6.32-android KERNEL_INSTALL_DIR=/home/ubuntu/linux-2.6.32-devkit8500
这里之因此这么修改,主要是由于本身的Android源码和Linux内核源码在文件夹中位置不一样,因此各位按着本身的修改便可。
因为咱们要在以前的编译好的kernel的基础上编译Android源码,因此呢咱们还要将下面
<!-- lang: shell --> ubuntu@ubuntu:~$ cd linux-2.6.32-devkit8500/arch/arm/boot/ ubuntu@ubuntu:~/linux-2.6.32-devkit8500/arch/arm/boot$ ls bootp compressed Image install.sh Makefile uImage zImage
将其中zImage拷贝到如下目录,并重命名为kernel
<!-- lang: shell --> ubuntu@ubuntu:~/rowboat-android-froyo-devkit8500/device/ti/omap3evm$ ls AndroidBoard.mk asound.conf init.rc omap3evm.mk TWL4030_Keypad.kl AndroidProducts.mk BoardConfig.mk kernel TWL4030_Keypad.kcm vold.fstab
另外还有一处须要改动的地方,就是在当前目录下,有三个文件夹
<!-- lang: shell --> gfx_rel_es2.x_android gfx_rel_es3.x_android gfx_rel_es5.x_android
咱们分别进入这三个文件夹,而后找到 : install.sh文件,作以下修改,将文件最开头的一行:
<!-- lang: shell --> #!/bin/sh
改成:
<!-- lang: shell --> #!/bin/bash
最后执行make进行编译
<!-- lang: shell --> cd rowboat-android-froyo-devkit8500 make
这个过程要相对比较久,并且出错的可能性比较大,出错的状况也比较多,可是大部分错误的解决方法均可以在这个网站找到:http://www.cnblogs.com/ouling/archive/2011/09/08/2171337.html
当编译完成后,咱们还须要作的一步就是制做ubi.img文件系统。这边咱们还须要修改一个文件:rowboat-android-froyo-devkit8500目录下的build_ubi.sh,这个文件是制做ubi文件系统的脚本。
将下面代码
<!-- lang: shell --> #!/bin/sh //注意这sh也须要修改 、、、、、、、、、、 MKFSUBI=/home/embest/tools/mkfs.ubifs MKFSUBI_ARG="-r ${ROOT_DIR} -m 2048 -e 129024 -c 4063 -o temp/ubifs.img" UBINIZE=/home/embest/tools/ubinize UBINIZECFG=/home/embest/tools/ubinize.cfg UBINIZE_ARG="-o ubi.img -m 2048 -p 128KiB -s 512 ${UBINIZECFG}"
修改成:
<!-- lang: shell --> #!/bin/bash 、、、、、、、、、、 MKFSUBI=/home/ubuntu/tools/mkfs.ubifs MKFSUBI_ARG="-r ${ROOT_DIR} -m 2048 -e 129024 -c 4063 -o temp/ubifs.img" UBINIZE=/home/ubuntu/tools/ubinize UBINIZECFG=/home/ubuntu/tools/ubinize.cfg UBINIZE_ARG="-o ubi.img -m 2048 -p 128KiB -s 512 ${UBINIZECFG}"
还有一处须要修改的地方,进入目录:
<!-- lang: shell --> ubuntu@ubuntu:~/rowboat-android-froyo-devkit8500/out/target/product/devkit8500/root$ ls bin data default.prop dev init init.goldfish.rc initlogo.rle.bak init.omap3.rc init.rc proc sbin sys system
而后修改init.rc文件
将下面:
<!-- lang: shell --> mount rootfs rootfs / ro remount mount yaffs2 mtd@system /system ro remount
修改成:
<!-- lang: shell --> mount rootfs rootfs / rw remount mount yaffs2 mtd@system /system rw remount
最后制做ubi.img,执行命令:
<!-- lang: shell --> ubuntu@ubuntu:~/rowboat-android-froyo-devkit8500$ sudo ./build_ubi.sh
若是没有出错,最后会提示安装成功,在tmp文件下生存ubi.img:
<!-- lang: shell --> binary hal_server_test -> /system/bin/hal_server_test binary framebuffer_test -> /system/bin/framebuffer_test binary texture_benchmark -> /system/bin/texture_benchmark binary xmultiegltest -> /system/bin/xmultiegltest Installation complete! ###~### file temp/ubi.img generated ### -rw-r--r-- 1 root root 79036416 2013-09-10 15:43 temp/ubi.img
四、安装Android操做系统到板子上
在Android源码和Linux内核编译完成后,咱们就能够安装Android系统了。
一、格式化TF卡
二、将光盘/linux/demo/Android/image下的全部文件拷贝到TF卡上,而后将ubi.img、uImage_4.三、uImage_7删除
三、将下面两个目录中
<!-- lang: shell --> ubuntu@ubuntu:~/linux-2.6.32-devkit8500/arch/arm/boot$ ls bootp compressed Image install.sh Makefile uImage zImage ubuntu@ubuntu:~/rowboat-android-froyo-devkit8500/temp$ ls ubifs.img ubi.img
的uImage和ubi.img拷贝到TF卡上
四、将TF卡插到板子上,并上电,等拷贝到板子Rom完成(当板子上的sys LED等一闪一闪的时候,说明拷贝完成),拔出TF卡,从新上电启动就能够了。通常你能够在你的ubuntu主机上安装minicom这个超级终端来控制板子!
具体能够查看网上一些资料。安装完成之后启动minicom是要作些修改,用以下命令启动:
<!-- lang: shell --> sudo minicom -s
而后配置Serial port setup选项,
<!-- lang: shell --> Serial Device : /dev/tty8 修改成: Serial Device : /dev/ttyS0 Hardware Flow Control : Yes 修改成:Hardware Flow Control : NO