Tag: ARM

Run x86 program on ARM Chromebook with Exagear Desktop

About Exagear Desktop Many ARM Chromebook users should know you may not have much fun compared with x86 Chromebook, the main reason is you can’t run popular x86 programs on ARM Linux by Crouton. I have written a post about running x86 version Sopcast on Raspberry Pi before, which using QEMU user mode to run x86 program on ARM Linux, however, its drawback is the performance of QEMU user mode isn’t really well. Now we get a good news that Eltechs has released their new Exagear Desktop software, they claim it is able to get near native performance by running x86 Linux program on ARM Linux with Exagear Desktop, which is about 5 times faster than QEMU. This sounds really useful for my Samsung Chromebook, so I’m considering buy a license (Exagear Desktop is not freeware, you need to pay 20 to 30 dollars according to your device) to see its real performance. You can check more details about Exagear Desktop on Eltechs’ website: http://eltechs.com/product/exagear-desktop/ After paying 30 dollars, Eltechs will send you an email with downloading link and license file, you can download Exagear Desktop from their Google Drive link. Install Exagear Desktop You should know some concept about Exagear Desktop before you start trying, the ARM Linux system is called host system, the x86 Linux system you need to run is called guest system, and you need to make sure your ARM device meets its requirements: ARMv6 or ARMv7 processor; 512MB or more memory; Ubuntu 12.04 14.04 or other Debian-like Linux system. ARM Chromebook totally satisfy these requirements, for saving your time, you should try install Ubuntu Linux on Chromebook with Crouton. I’m using XUbuntu 14.04 armhf system to test Exagear Desktop software. Unpack the install package of Exagear Desktop, you can see these files: Exagear Desktop provides […]

Android x86对native ARM的支持

本文同步自(最佳显示效果请点击):https://zohead.com/archives/android-x86-arm-binary/ 之前入手联想 K800 这款使用 Intel x86 CPU 的手机时考虑过一个问题,就是 Android x86 对于已有的 Android 程序的兼容问题问题,特别是对于一些使用了 native ARM 代码的程序(以游戏居多),因为不可能原来所有的程序都可以及时更新来支持 x86 的 Android 手机(本来就很小众)。在我的想法中,Intel x86 环境下应该不可能直接运行 native 的 ARM 二进制代码(虚拟机那种不考虑),不过考虑到平时玩使用 native ARM 代码的游戏也不多,就没有在意。 我们先来看一个典型的使用了 native ARM library 的 Android 程序:《Bejeweled 2》,也就是大家在电脑上很熟悉的《宝石迷阵2》游戏的 Android 版本,查看 apk 安装文件里的内容,可以明显发现其使用了 ARM EABI 的动态库: 但我在 K800 上安装此游戏,完全可以正常运行并使用,只是似乎没有在 ARM Android 手机上运行的那么顺畅。 这就比较疑惑了,接下来那就进一步验证一下,将之前静态编译的一个 ARM 可执行程序拷到手机,在终端中运行,竟然也可以正常运行,我们看看这个 ARM 可执行程序的格式: 经过一番搜寻之后,发现原来 Android x86 4.0 版本之后已经开始支持对 native ARM 的仿真,这对于之前用处似乎一直不是很大的 Android x86 来说绝对可以算是相当大的进步。 联想 K800 使用的 CPU 是 Intel Atom Z2460,基于 Intel Medfield 平台,尽管 Z2460 是一款使用 x86 指令集的 CPU,但可以兼容运行大部分带有 native ARM 代码的应用,关键就是靠 Intel 并未公开发表的技术 ARM binary code translator,而且 binary translator 对于应用程序来说是透明的,一般不需要做任何特殊的改动。 在 Android x86 上 Google 修改了 dalvik 虚拟机的加载 native code 的函数(修改 libdvm,增加 libdvm_houdini.so),通过 Intel ARM to Atom binary translator 实现 JNI 调用。Android x86 中引入了 libhoudini.so 来做这件事情,通过查看 K800 的根文件系统,我们可以看到除了 /system/lib 下的标准的 x86 的动态库文件之外,新增了 /system/lib/libhoudini.so 库,另外 /system/lib/arm 目录下还有很多 ARM 版本的库文件。 下面是我在 K800 上运行一个 native ARM 程序时的进程输出: 上面看到的 /system/bin/houdini 进程即为在 Android x86 上运行的 native ARM 程序的表现形式。 从现在在 K800 手机上实际的测试情况来看,在 K800 上运行使用 native ARM 的 Android 似乎都还比较顺畅,像愤怒的小鸟就可以很顺畅的运行,这和现在 K800 用的 Android 4.0.4 ROM 也有关系,相对于不支持 native ARM 的 Android 2.3.7,游戏的兼容性是有相当大的改善的。另外很有可能 Intel Medfield 平台硬件上就有对 ARM binary translator 的加速功能。 当然这种二进制的转换必然会有性能上的损失,无法和 x86 原生程序相比,因此越来越多的 Android 程序也开始集成了 x86 版本的程序和库文件,来看看最新版本的水果忍者 apk 安装程序中的库文件列表,就可以看到 x86 版本: 有关 Android x86 运行 native ARM 程序的介绍: http://www.anandtech.com/show/5770/lava-xolo-x900-review-the-first-intel-medfield-phone/3 Android x86 下运行环境的搭建: http://www.buildroid.org/blog/?p=198

Raspberry Pi初步上手

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/raspberry-pi-start/ 前段时间听到 Raspberry Pi 微型电脑板(中文名称:树莓派)出来的消息,这是一个只有信用卡大小的售价 35 美元的 ARM 板,运行 Linux 系统,支持高清输出和高清视频播放,适合做各种省电的小应用方案,国外现在研究这个的人也很多,不过当时都需要直接从英国订购,发货时间长而且还要扣掉有点“可观”的税费,故没有很快买。 有关 Raspberry Pi 的详细介绍参考这里: http://en.wikipedia.org/wiki/Raspberry_pi 前两天看到 e络盟 网站上已经有了中国区的 Raspberry Pi 直接网上订购服务,在 e络盟 网站上注册账户并忍受其相当不人性化的支付和下订单方式之后,昨天终于收到寄过来的 Raspberry Pi B型板(售价 + 增值税 + 运费一共 300 天朝币多一点)。包装非常简单,只有裸板。 e络盟 上的 Raspberry Pi 订购链接在此,有兴趣的朋友也可以买来折腾试试:http://cn.element14.com/raspberry-pi/raspbrry-pcba/sbc-raspberry-pi-model-b/dp/2081185 从图上也可以看到 Raspberry Pi 算是麻雀虽小五脏俱全滴,板子中间有树莓派的 LOGO。整板使用 Broadcom BCM2835 SoC(集成 CPU、GPU、DSP、SDRAM),处理器为 ARM1176JZF-S 700 MHz,内存 256 MB,有 HDMI 输出(标准接口)、两个 USB 2.0 接口(支持 USB HUB)、一个 SD 卡插槽、一个百兆以太网卡、音频输出、GPIO 调试接口等,而且整个板子的功率只有 3.5W,可通过 MicroUSB 或者 GPIO 供电,一般的 5V 700mA 或以上的充电器就可以给 Raspberry Pi 供电。 由于 Raspberry Pi 只提供裸板,不提供其它一切配件,这些都要自己来弄了。我这没有支持 HDMI 或者 DVI 的高清显示器,只有老式 VGA,故先在网上淘了一个 HDMI 转 VGA 的转接头(需要注意的是 HDMI 转 DVI 再转 VGA 的方式是行不通的哦)。HDMI 转 VGA 是由数字信号转为模拟型号,必须使用数模转换芯片,因此这种转接头经常会有兼容性问题,购买时需要注意是否兼容。我买的是淘宝上的 鑫魔王 HDMI 转 VGA 线,并且特别买了支持音频输出的转接线(免广告之嫌,不给出链接 ^_^)。 Raspberry Pi 只支持从 SD 卡启动,不支持从 USB 启动,但可以启动好之后将 rootfs 放到 U盘上,为最好地兼容和优化考虑,建议使用 Raspberry Pi 官方网站上的 Raspbian “wheezy” 系统(点击 [这里] 进入下载),为此需要 SD 卡最小得有 2G。从官方网站下载系统后可以直接拷贝到 SD 卡中(dd 或直接对拷,不需要分区)。 由于我使用了 HDMI 转 VGA 装置,为了能正确完美的显示,需要先修改 SD 卡启动分区(FAT16 格式)中的 config.txt 配置文件: hdmi_force_hotplug=1 hdmi_drive=2 hdmi_group=2 hdmi_mode=47 disable_overscan=1 hdmi_force_hotplug、hdmi_drive、hdmi_group 都是为了使 HDMI 转 VGA 能正常工作,hdmi_mode 设置显示输出的分辨率(47 为我的显示器用的 1440 x 900 的分辨率,具体请参考 Raspberry Pi 上的帮助),disable_overscan 则是为了去掉显示画面四周的黑色边框。 有关 Raspberry Pi 配置文件的介绍请参考这里:http://elinux.org/RPi_config.txt 把 Raspberry Pi 的 HDMI 通过转接线接到 VGA 显示器,接上 USB 鼠标和键盘,插上网线,安装 SD 卡,然后供电(我实际使用的就是 5V 700mA 的手机充电器,完全没有压力 ^_^),正常的话就可以看到显示器上的启动输出画面咯: 具体的接线方式见下图(比较凌乱,哈哈): 稍等片刻,就会出现终端的登录界面。 直接敲回车登录,默认就是 raspi-config 配置界面,建议先做基本的配置,特别是语言、时区、键盘布局之类的,这些比较重要,而且从 Raspberry Pi 官方下的系统里的配置全都是适合英国的配置,我分别将语言设置和时区为中文、键盘改为美式键盘。 Raspbian “wheezy” 系统是基于 Debian 系统修改的,默认使用的是 DHCP 方式获得 IP,如果没有获得 IP 请手工配置。系统中的 apt 源也已经默认设置为 Raspbian 网站上的源,直接运行 apt-get 命令就可以安装需要的软件包。 在开启图形界面前,建议先使用 apt-get 命令在线安装下面的这些软件包,这对中文显示和输出比较重要: sudo apt-get install ttf-wqy-zenhei sudo apt-get install ttf-wqy-microhei sudo apt-get install fcitx 前两个是安装中文字体(不建议安装 simsun 字体),第三个安装中文输入法。 全部配置好之后就可以运行 startx 命令进入图形界面(图中即为 1440 x 900 的分辨率): 桌面中间又是大大的树莓派 LOGO。Raspbian “wheezy” 系统没有使用 GNOME 或者 KDE 之类的桌面环境,而是使用的 LXDE 轻量级桌面,这样也比较适合 Raspberry Pi 这种小的系统环境。 Raspbian “wheezy” 系统默认也自带了一些编程环境、网络浏览器之类的。下面是浏览中文网页的效果,看起来还是比较完美的(不支持 Flash 之类的就无所谓了 ^_^): 从初步上手使用的效果来看,Raspberry Pi 还是比较令人满意,高清视频播放还没机会测试。下面有机会再来继续折腾了,网上用 Raspberry Pi 做的比较多的是下载机之类的,还有另类的牛人加上了温度传感器之类的东东。 PS:Raspberry Pi 由于只有 256 MB 的内存,因此运行大的程序还是有点卡,而且系统整体的响应速度也和使用的 SD 卡有些关系,未避免影响系统系统,建议使用 class 4 或更高速度的存储卡。