How to Detect if an ARM ELF Binary is Hard-float (ARMHF) or Soft-float (ARMEL)

If some cases you may want to know if a library or binary built for the ARM architecture is using hard-float (armhf) or soft-float (armel). You can analyze ELF binary using readefl utility, so let’s have a try. First let’s install some armel and armhf files on a computer running Ubuntu by install gcc/g++ toolchain for armel and armhf:

We now have armhf and armel libraries installed in /usr/arm-linux-gnueabihf/lib and /usr/arm-linux-gnueabi/lib respectively. Let’s check the output of readelf filtered with “FP” string for libm.so.6 for armel:

and armhf:

Great, so there’s an extra line for armhf (Tag_ABI_VFP_args) that seems to confirm the library is hard-float. With readelf compiled from elftoolchain-0.6.1 (source code), the extra line will be a bit different: “Tag_ABI_VFP_args: AAPCS (VFP variant) AAPCS stands for ARM Architecture Procedure Call Standard. You can read more details on ARM website. There are also two other possible values […]

Raspberry Pi Releases Raspbian SD Card Image Based on Debian Wheezy ARMHF

The Raspberry Pi foundation announced the very first stable release of the Raspbian distribution, which is based on Debian 7.0 “Wheezy” armhf rootfs in order to take advantage of the FPU in Broadcom BCM2835. This distribution offers up to 40% performance improvement on several tasks, and for some specific tasks such as MP3 encoding is can boost the speed by nearly 6 times thanks to hard-float support. It is now the recommended distribution for the Raspberry Pi, runs LXDE environment, and comes with Midori browser, development tools and example source as per the previous Debian distros. omxplayer by gimli (XBMC developer) is also pre-installed in the image, and will allow you to play videos using hardware acceleration. You can download Raspbian via: Bittorrent – 2012-07-15-wheezy-raspbian.zip.torrent HTTP –  2012-07-15-wheezy-raspbian.zip The default credentials are pi / raspberry. Adam Armstrong has run some benchmarks to compare Raspbian (armhf) with the previous Raspberry Pi […]

Getting Started with MultiArch (armel / armhf) in Ubuntu

Until now, I used xapt and dpkg-cross to install cross libraries for armel, but since I’ve upgraded to Ubuntu 12.04, it appears to be broken. I’ve contacted Linaro about this issue, and the “cross-building” expert at Linaro (wookey) recommended me to use multiarch instead, as xapt/dpkg-cross will be eventually deprecated. He provided me an example showing how-to use multiarch to build Chromium. I’ve been looking for a “How-to multiarch”, but haven’t been able to find something really clear and simple, so I thought I would post it here. In the example, they used a chroot for cross-building, which is probably a good idea to avoid messing up with the system. It’s also possible multiarch is not 100% reliable, and I’ve read stories where people messed up their system when using multiarch with i386 (32-bit) and amd64 (64-bit). Preparing a chroot for cross-building I’ll use a 32-bit Ubuntu precise chroot, but […]

Installing Emdebian ARM Cross Toolchain in Debian

I had previously installed Sourcery G++ ARM Linux toolchain in Ubuntu to build some software running in Debian, but I encountered some issues with some libraries (libavg) that use gethostbyname in static libraries without any easy way to make it dynamic. In that case, the library in the rootfs and cross-compiler must match.  So I decided to install Debian Squeeze (6.0.3) and the corresponding cross-toolchain by Emdebian (short for Embedded Debian). First to use this toolchain, add the URL to get Emdebian packages to /etc/apt/sources.list: # # — Emdebian cross toolchains # deb http://www.emdebian.org/debian/ squeeze main Then install Emdebian public key: apt-get install emdebian-archive-keyring apt-get update If you don’t install the key, you’ll get the following error: W: GPG error: http://www.emdebian.org squeeze Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY B5B7720097BB3B58 Search and install packages for the architecture that you need, in this […]

EmbeddedTS embedded systems design