在qemu的beagleboard上运行android
2012-05-24 14:12
393 查看
如之前的文章提到的,现在我们已经可以在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模拟器的。
下面是运行截图:
主要工作是***一个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模拟器的。
下面是运行截图:
相关文章推荐
- 如何在Ubuntu中利用Qemu运行BeagleBoard firmware
- 在BeagleBoard XM 开发板上运行Android
- 在Android上使用qemu-user运行可执行文件
- Beagleboard上运行ARM/MeeGo的整理
- 玩转BeagleBoard xM——通过Repo下载Android 4.0 ICS源码
- 编译可在Android上运行的qemu user mode
- ubuntu 15.10 搭建android-x86 qemu测试运行环境
- 玩转BeagleBoard xM——TI_Android_ICS_4.0.3_DevKit编译错误及解决办法汇总
- BeagleBoard上android系统移植(三)
- 编译可在Android上运行的qemu user mode
- 在 BeagleBoard Black 上快速安装 Android 系统 与 使用adb
- 在BeagleBoard上运行QNX系统(一)
- Android源码编译(一)----------->TI-Android-GingerBread-2.3-DevKit-1.0 系统定制(just for beagleboard xm Rev B)
- Android-Cupcake porting guide to BeagleBoard
- 在BeagleBoard上运行QNX系统(总结)
- Porting Libusb for Android on the Beagleboard i...
- 在Android上使用qemu-user运行可执行文件
- 使用Qemu在Windows 7中运行LiveAndroid0.3
- 移植 libusb 到 Beagleboard 上的 Android
- android2.3系统成功下载编译移植到BeagleBoard上