`
jinghuainfo
  • 浏览: 1528442 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

broncho a1 hack指南-移植Android-2.0

 
阅读更多

<!-- END HEADER --> <!-- LEFTBAR -->

转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静 <xianjimli at hotmail dot com>

很多朋友买Broncho A1就是冲着它的开放性来的,A1不但开放基本内核源代码,提供开发用的数据线,而且开放以前开发的Broncho Linux Platform手机平台。无论是对Just for fun的玩家,还是想学习嵌入式Linux开发的程序员,Broncho A1都是最好的选择之一。我们将写一系列的文章,为新手提供一个hack指南。也希望有兴趣的朋友加入文档的编写和修订工作中来。

3.移植Android 2.0

警告:移植Android 2.0的工作量很大,如果没有很多空闲时间和深入研究的决心,请不要轻易去尝试(呵,我可没有时间来帮你解决所有问题)。

3.1 下载和编译Android-2.0

下载源代码请参考android官方网站上的指南:http://source.android.com/download。
这里我们假设eclair的源代码已经下载到/work/android/android-eclair目录里了。

cd /work/android/android-eclair
make -j2

正常情况下应该可以顺利编译过去。

3.2 制作yaffs2文件系统

编译完成后,生成的文件系统out/target/product/generic/system.img不能直接使用,要用broncho提供的 mkyaffs2image(可到官方网站下载:http://www.broncho.cn/download/hacktools /mkyaffs2image)重新生成image,这个版本与原始版本不同之外在于,它在yaffs2文件系统的OOB里写了一些用于硬件ECC的数 据。可按下列方式生成:

[android-eclair]# mkyaffs2image out/target/product/generic/system system.bin

把生成的文件系统映像system.bin拷贝到tftp服务的根目录里:
[android-eclair]#cp system.bin /var/lib/tftpboot/
[android-eclair]#chmod 644 /var/lib/tftpboot/system.bin

3.2 编译内核

注:在本文发表之际,broncho还没有公布内核代码,开发人员正在从linux 2.6.28移植到linux 2.6.29,基本功能完成后就会公布。从商业角度考虑,这个公布的内核代码只提供基本的驱动程序,至于电源的管理等特性还需要hacker们自己的去完 善和优化。如果感兴趣的朋友比较多,可以考虑想成立一个开源项目,大家一起来玩。

下面以linux-2.6.28的编译为例。

在arch/arm/configs/目录下,有很多编译配置文件,其中arch/arm/configs/android_an0001_pxa300_defconfig是开发用的内核,里面支持usbnet。

[android-eclair]# cd linux-2.6.28

先配置内核,如果你还需要定制其它特性,可以用make ARCH=arm menuconfig来定制。
[linux-2.6.28]# make ARCH=arm android_an0001_pxa300_defconfig

拷贝initrd过来(也就是out/target/product/generic/root目录,前面编译eclair时生成的),后面编译内核时会根据它来生成initrd。
[linux-2.6.28]# cp /work/android/android-eclair/out/target/product/generic/root . -rf

编译
[linux-2.6.28]# make ARCH=arm CROSS_COMPILE=/work/android/android-eclair/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-

编译完成后,会生成arch/arm/boot/zImage, 把它拷贝到tftp服务的根目录下:
[linux-2.6.28]# cp arch/arm/boot/zImage /var/lib/tftpboot/kernel.bin
[linux-2.6.28]# chmod 644 /var/lib/tftpboot/kernel.bin

3.3 下载内核

确保tftp服务启动,firewall关闭。关于PC端的配置请参考《broncho a1 hack指南-准备环境》。

取下A1的电池,用开发数据数连接电脑和手机,用minicom打开串口,安装好电池,A1自动开机。

当串口输出下列信息时,按下空格键,blob进入交互模式:

Autoboot (1 seconds) in progress, press key SPACE to stop .Type “help” to get a list of commands

在交互模式下输入:dwrite kernel.bin
blob> dwrite kernel.bin

串口会输出:
Set id: 0×7d3
***** Plug-in USB cable & config usbdnet now ******
exit check_usb_connection:1

然后在PC端配置USBNET:
[root@localhost ~]# ifconfig usb0 1.1.1.1

此时手机端开始下载,串口会输出:
TFTPing kernel.bin####################* OK.
received 0×1459 blocks (0×28ae10 bytes)
download kernel.bin to nandflash partition kernel, address 0×9a0000 size 0×400000 …… OK

注意:如果下载时中断了,通常是因为dhclient重新配置了USBNET的IP地址,所以要禁止dhclient为USBNET动态配置IP。同事上次教我一个简单的办法,就是为usb0写一个网络配置脚本。

3.4 下载文件系统

在交互模式下输入:dwrite system.bin
blob> dwrite system.bin

如果前面刚刚下载过内核,不需要在PC端重新配置usbnet了,否则要在PC端执行:
[root@localhost ~]# ifconfig usb0 1.1.1.1

然后开始下载,串口会输出:
Vendor ID : 0×8086
Product ID : 0×7d3
TFTPing system.bin############################################################################################

这个过程比较长,可能要好几分钟,你可以先休息一下或者做点别的。

下载完成后reboot,串口会打印内核的调试信息:
Starting kernel at 0×80800000…

Uncompressing Linux……………………………………………………………………………………………………………
Linux version 2.6.28 (lixianjing@localhost.localdomain) (gcc version 4.1.1) #4 Wed Oct 7 16:42:59 CST 2009
CPU: XScale-V3 based processor [69056881] revision 1 (ARMv5TE), cr=0000397f
CPU: VIVT data cache, VIVT instruction cache
Machine: Marvell Form Factor Development Platform (aka Littleton)
Memory policy: ECC disabled, Data cache writeback
RO Mode clock: 60.00MHz (inactive)
Run Mode clock: 312.00MHz (*24)
Turbo Mode clock: 624.00MHz (*2, active)
HSIO bus clock: 208.00MHz
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
Kernel command line: init=/linuxrc root=/dev/ram0 console=ttyS2,115200 mem=128M android uart_dma
PID hash table entries: 512 (order: 9, 2048 bytes)
Console: colour dummy device 80×30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)

后面?系统启不来?运行有问题?那就对了,Android是一个通用平台,当然不可能直接拿过来用,你要针对不同的硬件去实现适配层,工作量相当 大,否则MOTO、HTC和BORQS(即 OPhone实现者)就不用养几百号开发人员了。即使你是天才,也不可能一个人完成这个任务。如果你真的感兴趣,可以选择某一方面去尝试,比如 WIFI,BT和GSM模组等。后面我们会介绍一些调试方法,有助于加快hack的速度。

前面我们已经告诉你玩火时要小心了,如果你不是真是的hacker,现在又后悔了,怎么呢?在后面的文章中,我们会告诉你怎么把A1恢复到原来的样子。

附:这是我在Fedora 12上为usb0写的配置文件:

/etc/sysconfig/network-scripts/ifcfg-usb0

DEVICE=usb0
BOOTPROTO=none
ONBOOT=no
TYPE=Ethernet
NETMASK=255.255.255.0
BROADCAST=1.1.1.255
IPADDR=1.1.1.1
GATEWAY=192.168.1.1
USERCTL=no
IPV6INIT=no
PREFIX=24
NAME=”System usb0″
UUID=689ce77b-bfa1-c10b-19a2-eb3a89251128
NM_CONTROLLED=no

分享到:
评论

相关推荐

    Android基于Soket聊天2.0

    Android之基于socket聊天小项目,包含服务器、客户端、数据库文件以及个人测试的截图。在之前的1.0的基础上,修改下拉刷新优化、主界面用viewPager实现左右滑动、增加最近会话和群组功能、系统提示使用淘宝体,更...

    Android基于Socket聊天最终版

    Android之基于socket聊天小项目,包含服务器、客户端、数据库文件以及个人测试的截图。最后一次修改了,开始上班了,不弄了,谢谢大家。

    Android场景桌面主题

    此压缩包中包含7套场景桌面主题以及主题设计规范文档,完全适配本人上传的场景桌面代码,解压后,将scene目录放在手机SD卡根目录下即可,另外如果有需要,可自行设计主题,具体可以参考主题设计规范文档。

    Android基于xmpp即时通讯 实例源码

    Android基于xmpp即时通讯软件,界面简洁大方,功能简单小巧,bug倒是不多不少。 编码方式是utf-8,不能直接导入eclipse,请自己新建一个工程,将源码覆盖过去,并将编码方式修改为utf-8。 了解更多,请移步:...

    Android版FTP服务器代码

    本应用是基于开源项目SwiFTP的一款轻量级FTP服务器,如果想了解更多,欢迎访问我的博客主页:http://blog.csdn.net/way_ping_li ,由于时间仓促,错误与疏忽之处在所难免,希望各位朋友们以邮件的形式反馈问题给我,再次...

    小米UI指南针

    一个美观的指南针应用,小米开源项目中下载的,加了很多注释和简单的加了个功能,代码不复杂,适合新手学习之用,gb编码。

    Android简洁版FTP服务器

    Android平台FTP服务器,在开源项目的基础上优化,修复一些常见的bug,比如,复制中文类型文件到手机中时会出错。

    Android便签应用

    一个简单实用的基于Android的便签小应用,界面美观,功能实用,几乎可以媲美商业小应用了,欢迎朋友下载体验或使用,有什么建议和批评,欢迎留言,谢谢合作!

    Android基于socket聊天

    Android之基于socket聊天小项目,包含服务器、客户端、数据库文件以及个人测试的截图。界面高仿QQ2012,希望大家多多支持,由于是个练手小项目,没有过多考虑性能,以及严格测试,不过个人测试,暂未发现bug,希望...

    Android高仿QQ手势图案解锁

    高仿Android手机QQ的手势图案解锁,代码由原生Android系统中提取出来,图片资源解压自手机QQ,图案带加密存储,更安全。

    android黎活明老师课程ppt

    简短的8天,深入浅出的讲述了android常用的

    Android空气质量检测仪

    说明 提供实时查询全国 76 个城市(共 509 个监测点)的空气质量监测数据,为健康生活提供指引。支持分享到社交网络。 【操作提示】 * 按 NEXT :切换显示【AQI 指数】与【PM2.5 浓度值】 * 按 PRINT :打印具体空气...

    Android录音机

    从源码中抽取的一款基于Android的录音机,温馨提示:录音机中的暂停功能暂不能用,因为官方的Api没有实现录音的暂停功能,高手可以在应用中实现暂停功能吧,我没有作处理。

    联系人ListView实现

    Android联系人的效果模仿,简单的一个小例子

    超逼真仿雅虎天气界面

    极致仿Android雅虎天气界面,先完成一个简单的界面,后续将我的“简洁天气”更新到仿雅虎天气界面,敬请期待

    Android场景桌面

    该代码为商业应用,仅供学习参考使用,使用方法请仔细阅读README文档,如有疑问,欢迎到http://blog.csdn.net/way_ping_li/article/details/10494925博客给我留言。

    水平校准仪

    一个很实用的基于Android的水平校准仪,有了这个工具,可以配合指南针使用,先校准水平传感器,然后再使用指南针,会有更高的准确性。

Global site tag (gtag.js) - Google Analytics