`
mmdev
  • 浏览: 12950369 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

在qemu的beagleboard上运行android

 
阅读更多

如之前的文章提到的,现在我们已经可以在Ubuntun上通过qemu模拟beagleboard了,进一步可以测试的是在这个qemu的beagleboard上运行Android。


主要工作是制作一个qemu-system-arm可以识别的模拟sd卡文件。

在上一篇文章中我们已经分析了 linaro-media-create所创建的img文件,当时也考虑了可以将创建的img文件loop回到/dev/loopx上,然后修改这个img文件,让它包含启动Android需要的文件。不过整个过程比较麻烦。

在网上看了一下,发现Linaro项目中就有一个linaro-anroid-media-create工具可以用于创建Android的模拟sd卡,测试一下发现之前安装qemu-system的时候已经安装了linaro-anroid-media-create 工具,使用方式如下:

linaro-anroid-media-create --dev $BOARD --image-file ./myandroid.img --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2

对应BeagleBoard的命令就是:

linaro-anroid-media-create --dev beagle --image-file ./myandroid.img --boot boot.tar.bz2 --system system.tar.bz2 --userdata userdata.tar.bz2

剩下的问题就是找的BeagleBoard对应的boot.tar.bz2 , system.tar.bz2 , userdata.tar.bz2这三个文件了。


这三个文件在Linaro项目网站上可以下载,链接如下:

http://releases.linaro.org/platform/linaro-n/android/11.09/beaglexm/


下载了以上三个文件,然后执行linaro-anroid-media-create命令生成myandroid.img文件,再通过以下命令通过qemu-system-arm启动这个系统

sudo qemu-system-arm -M beaglexm -m 512 -sd ./myandroid.img -clock unix -serial stdio


然后就可以看到qemu启动,本来满心欢喜地等待Android的启动,没想到系统启动过程出错,跑到booting the kernel的时候报如下错误:

Uncompressing Linux... done, booting the kernel.
omap2_inth_read: Bad register 0x00000020

看错误的话MLO和u-boot.bin都没有问题,应该是linux kernel有问题,于是将myandroid.img文件的第一个分区loop回来,命令如下:

sudo mount -o loop,offset=$[63*512] ./myandroid.img ./mountpoint


然后删除了uImage文件,拷贝了一个之前为BeagleBoard编译Android的时候做好的uImage文件,再次启动。

这次启动成功了,看到了Android小机器人,adb也启动了,不过后面的界面就跑不起来了。查看了一下错误,可能是qemu上的模拟BeagleBoard没办法模拟HDMI的原因。于是没有细究,毕竟咱不是用这个来调试Android上的应用的,需要调试Android应用的话就直接用Android SDK上的模拟器了,有意思的是Android SDK上的Android模拟器其实也是基于qemu模拟器的。

下面是运行截图:





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics