查看: 943|回复: 0

在Devkit8500板子上移植并定制自己的Android

[复制链接]

该用户从未签到

发表于 2014-10-28 13:51:31 | 显示全部楼层 |阅读模式
分享到:
Devkit8500是基于TI DM37xx系列处理器的开发套件。
首先,入手这个板子的时候,可以看看Devkit8500的配件包,它自带了一些额外的数据线或者小设备,其中最最要的是找到里面的DVD光盘,里面有好多东西对移植是非常重要的,包括各种需要使用到的编译工具和Linux kernel、Android源码!!
所有方法和教程其实都是参考其自带的Devkit8500用户手册
步骤:1、拷贝DVD中的编译工具和源码:
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系统了,具体参考用户手册!!
2、安装编译环境。
在ubuntu的$HOME目录下新建目录:tools,并将/media/cdrom/linux/tools中的工具解压,并拷贝到该目录,然后配置环境变量。如果用终端命令操作,示例如下:
cd /media/cdrom/linux/toolstar xvf arm-eabi-4.4.0.tar.bz2 -C $HOMEtar xvf arm-2007q3.tar.bz2 -C $HOME mkdir $HOME/tools cp /media/cdrom/linux/tools/mkimage $HOME/toolscp /media/cdrom/linux/tools/signGP $HOME/toolscp /media/cdrom/linux/tools/mkfs.ubifs $HOME/toolscp /media/cdrom/linux/tools/ubinize $HOME/toolscp /media/cdrom/linux/tools/ubinize.cfg $HOME/tools export PATH=$HOME/arm-eabi-4.4.0/binHOME/toolsPATH
你也可以将环境变量写进~/.bashrc文件,这样也比较方便,不知每回开机就要重新设置环境变量。
3、开始进行编译,并定制自己的Android系统
针对不同的目的要求可以定制不同的Android系统,我的主要目的是:要在自己定制的Android操作系统中移植安装Systemtap工具。对于移植安装Systemtap工具,我会在后面的博客分享给大家
分为2步:1、编译linux内核,2、在linux内核的基础上编译Android源码
  首先,我的Android源码和Linux内核源码都放在Home目录下

1、编译linux内核:linux-2.6.32-devkit8500
为了能够安装上systemtap,要对内核进行一些修改:进入到arch/arm/include/asm/ptrace.h,修改如下,在下面几行后面
#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))最后变成:
#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) */然后开始编译:
cd linux-2.6.32-devkit8500make distcleanmake omap3_devkit8500_android_defconfigmake menuconfig在图形界面中开启如下选项,这些是systematp必须需要的开关:
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
最后执行:
make uImage
执行完以上操作后,arch/arm/boot 目录下会生成我们需要的 uImage 文件。
2、编译Android源码,生成ubi.img
UBI是一种文件系统,主要用于智能手机中。厂商提供的源码还是有点问题,有些地方需要改动,就是这么点问题搞了好久,google也没结果!
  如下图,进入到/OMAP35x_Android_Graphics_SDK_3_01_00_03目录下

首先修改Rules.make文件两处,一是HOME变量路径,二是KERNEL_INSTALL_DIR,我将原来的注释了,然后加上了修改后的路径:
#set home area HOME (relative location for all SDK operations)#HOME=/home/android/rowboat-android-froyo-devkit8500HOME=/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-androidKERNEL_INSTALL_DIR=/home/ubuntu/linux-2.6.32-devkit8500这里之所以这么修改,主要是因为自己的Android源码和Linux内核源码在文件夹中位置不同,所以各位按着自己的修改即可。
由于我们要在之前的编译好的kernel的基础上编译Android源码,所以呢我们还要将下面
ubuntu@ubuntu:~$ cd linux-2.6.32-devkit8500/arch/arm/boot/ubuntu@ubuntu:~/linux-2.6.32-devkit8500/arch/arm/boot$ lsbootp  compressed  Image  install.sh  Makefile  uImage  zImage将其中zImage拷贝到以下目录,并重命名为kernel
ubuntu@ubuntu:~/rowboat-android-froyo-devkit8500/device/ti/omap3evm$ lsAndroidBoard.mk     asound.conf     init.rc  omap3evm.mk         TWL4030_Keypad.klAndroidProducts.mk  BoardConfig.mk  kernel   TWL4030_Keypad.kcm  vold.fstab另外还有一处需要改动的地方,就是在当前目录下,有三个文件夹
gfx_rel_es2.x_androidgfx_rel_es3.x_androidgfx_rel_es5.x_android我们分别进入这三个文件夹,然后找到 : install.sh文件,做如下修改,将文件最开头的一行:
#!/bin/sh改为:
#!/bin/bash
最后执行make进行编译
cd rowboat-android-froyo-devkit8500make这个过程要相对比较久,而且出错的可能性比较大,出错的情况也比较多,但是大部分错误的解决方法都可以在这个网站找到:https://www.cnblogs.com/ouling/archive/2011/09/08/2171337.html
当编译完成后,我们还需要做的一步就是制作ubi.img文件系统。这边我们还需要修改一个文件:rowboat-android-froyo-devkit8500目录下的build_ubi.sh,这个文件是制作ubi文件系统的脚本。
将下面代码
#!/bin/sh               //注意这sh也需要修改、、、、、、、、、、 MKFSUBI=/home/embest/tools/mkfs.ubifsMKFSUBI_ARG="-r ${ROOT_DIR} -m 2048 -e 129024 -c 4063 -o temp/ubifs.img"UBINIZE=/home/embest/tools/ubinizeUBINIZECFG=/home/embest/tools/ubinize.cfgUBINIZE_ARG="-o ubi.img -m 2048 -p 128KiB -s 512 ${UBINIZECFG}"修改为:
#!/bin/bash、、、、、、、、、、 MKFSUBI=/home/ubuntu/tools/mkfs.ubifsMKFSUBI_ARG="-r ${ROOT_DIR} -m 2048 -e 129024 -c 4063 -o temp/ubifs.img"UBINIZE=/home/ubuntu/tools/ubinizeUBINIZECFG=/home/ubuntu/tools/ubinize.cfgUBINIZE_ARG="-o ubi.img -m 2048 -p 128KiB -s 512 ${UBINIZECFG}"还有一处需要修改的地方,进入目录:
ubuntu@ubuntu:~/rowboat-android-froyo-devkit8500/out/target/product/devkit8500/root$ lsbin  data  default.prop  dev  init  init.goldfish.rc  initlogo.rle.bak  init.omap3.rc  init.rc  proc  sbin  sys  system然后修改init.rc文件
将下面:
mount rootfs rootfs / ro remountmount yaffs2 mtd@system /system ro remount修改为:
mount rootfs rootfs / rw remountmount yaffs2 mtd@system /system rw remount最后制作ubi.img,执行命令:
ubuntu@ubuntu:~/rowboat-android-froyo-devkit8500$ sudo ./build_ubi.sh如果没有出错,最后会提示安装成功,在tmp文件下生存ubi.img:
binary hal_server_test -> /system/bin/hal_server_testbinary framebuffer_test -> /system/bin/framebuffer_testbinary texture_benchmark -> /system/bin/texture_benchmarkbinary 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.img4、安装Android操作系统到板子上
在Android源码和Linux内核编译完成后,我们就可以安装Android系统了。
1、格式化TF卡
2、将光盘/linux/demo/Android/image下的所有文件拷贝到TF卡上,然后将ubi.img、uImage_4.3、uImage_7删除
3、将下面两个目录中
ubuntu@ubuntu:~/linux-2.6.32-devkit8500/arch/arm/boot$ lsbootp  compressed  Image  install.sh  Makefile  uImage  zImage ubuntu@ubuntu:~/rowboat-android-froyo-devkit8500/temp$ lsubifs.img  ubi.img的uImage和ubi.img拷贝到TF卡上
4、将TF卡插到板子上,并上电,等拷贝到板子Rom完成(当板子上的sys LED等一闪一闪的时候,说明拷贝完成),拔出TF卡,重新上电启动就可以了。一般你可以在你的ubuntu主机上安装minicom这个超级终端来控制板子!
具体可以查看网上一些资料。安装完成以后启动minicom是要做些修改,用如下命令启动:
sudo minicom -s然后配置Serial port setup选项,
Serial Device      : /dev/tty8      修改为:  Serial Device      : /dev/ttyS0Hardware Flow Control : Yes         修改为:Hardware Flow Control : NO
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-20 13:07 , Processed in 0.125183 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.