There has been a lot of controversy around GPU drivers and open source, as GPU drivers usually come with a blob (a binary file). If you have been lurking in Raspberry Pi forums you’ll know what I mean. But this will change thanks to Lima. No, not the capital of Peru but the open source graphics driver for ARM Mali GPUs (Mali-200 and Mali-400) also called Lima whose goal is stated as follows: The aim of this driver is to finally bring all the advantages of open source software to ARM SoC graphics drivers. Currently, the sole availability of binary drivers is increasing development and maintenance overhead, while also reducing portability, compatibility and limiting choice. Anyone who has dealt with GPU support on ARM, be it for a Linux with a GNU stack, or for an Android, knows the pain of dealing with these binaries. Lima is going to solve […]
Debugging Embedded Linux with GDBserver and Insight (gdb GUI)
Although it it sometimes possible to debug applications using GDB (The GNU Debugger) on the target boards, there is often not enough memory available to run GDB on embedded systems running Linux. To work around this issue, you can use gdbserver to perform remote debugging. Installing and running gdbserver on the target board First of all you need to install gdbserver on the target board. Assuming you use a Debian based distribution:
1 |
apt-get install gdbserver |
If you distribution, does not have binary repository, you can download gdb source code and cross-compile gdbserver. Once gdbserver is installed, (cross-)compile your application in debug mode and start gdbserver as follows:
1 |
gdbserver target_ip:target_port prog_dbg |
Where target_ip and target_port are respectively the IP address of the board and the chosen TCP port, and prog_dbg, the program under test compile in debug mode (CFLAGS=-g). Remote Debugging with GDB If you are familiar with gdb and prefer to use the command […]
Java SE Server Compiler now Available on ARM
Hardware and software development is going full-steam ahead for ARM servers. After Calxeda and AppliedMicro server SoCs – based respectively on Cortex A9 and ARMv8 architecture – have been announced and Ubuntu focusing further ARM development on Servers (Calxeda, Marvell and ARMv8), Oracle has released the Java SE server compiler – a throughput optimizing JIT compiler – for ARMv7. The ARMv7 server compiler is part of Java SE for Embedded 7 Update 2. First, some quick explanations on the 2 JIT compilers available for Java SE: Client: The client compiler is a fast start-up, lightly optimizing compiler. It’s better suited for smaller footprint systems and those running applications that require fast start-up such as Android applications. Server: The server compiler is optimizing code for throughput and produces highly-optimized code but incurs a start-up cost in achieving that. The server compiler only works on ARMv7 processors with hardfloat (VFPv3 FPU), and initial […]
The Past, Present and Future of Ubuntu for ARM
David Mandala of Canonical talked at Linux.Conf.Au on 18th of January 2012 about Ubuntu for ARM and the move from netbook to server support. You can read my notes below, or jump at the end of this post to watch the presentation. The Past 2008: Ubuntu decides to only support ARMv7 architecture vs. Debian that supports ARMv4 and above. 2009: Ubuntu release for Freescale i.MX51 (ARMv5 built), and then Marvell ARMAVA with ARMv6 and VFP (ARM floating point unit) support. 2010: April (10.04) The first ARMv7 release for OMAP3 (Beagleboard) with VFP, Thunb2, NEON and SMP for ARM and first netbook edition October (10.10) Pandabord (OMAP4) release with initial device tree support for ARM. Starts work with Linaro. 2011: 11.04 (5th release) – Supports OMAP3 and OMAP4 only. The netbook edition is using Qt, further improvement to device tree, further work with linaro and on the way to the Unified […]
Cross-compiling Berkelium for ARMv6 with Emdebian Toolchain
Berkelium is a BSD licensed library that provides off-screen browser rendering via Google’s open source Chromium web browser. This library is used by Xibo Digital Signage Player python client and I already cross-compiled it using Ubuntu/Linaro toolchain. Since I need it to run on ARMv6 for the Raspberry Pi, I have cross-compiled it again in Debian with Emdebian ARM cross-compiler. Here are the instructions I followed to build Berkelium and Chromium for ARMv6 in Debian. First, you’ll need to install some development libraries for ARM: sudo /usr/share/pdebuild-cross/xapt -a armel libnss3-dev libgconf2-dev libgnome-keyring-dev libgtk2.0-dev libgnome-keyring-dev libgtk2.0-dev libxtst-dev libpam-dev libxss-dev libdbus-glib-1-dev libnss3-dev libgconf2-dev libgnome-keyring-dev libxss-dev libdbus-glib-1-dev libnspr4-dev libglib2.0-dev libjpeg-dev libasound2-dev libbz2-dev libgcrypt-dev libspeex-dev libcups2-dev and some tools on the build machine: sudo apt-get install git-core subversion cmake doxygen gyp gperf flex bison On 64-bit build machines (required for debug build) also install g++-multi and possibly some 32-bit libraries with xapt:
1 |
sudo apt-get install g++-multilib |
If […]
Cross-compiling libavg 1.7 for ARM on Debian
libavg is a high-level development platform for media-centric applications using Python as scripting language and written in C++ and I’ve already written a post to cross-compile libavg 1.6 in Ubuntu (with linaro cross toolchain) and using Beagleboard qemu image. Since I’ve doing some preparation work to have software running on the Raspberry Pi and that the latter won’t support Ubuntu, I’ve had to cross-compile it again. This time, I’ve found a cleaner way to do the cross-compilation with dpkg-cross and xapt tools which can load the required armel package to the arm toolchain. Those tools really make life easy, as previously (a few years ago), I would have had to cross-compile all dependencies manually. Here are the steps I followed: Install Emdebian ARM Cross Toolchain and Tools in Debian. Download libavg 1.7 source code
1 |
wget http://www.libavg.de/raw-attachment/wiki/DownLoad/libavg-1.7.0.tar.gz |
Extract it
1 2 |
tar xzvf libavg-1.7.0.tar.gz cd libavg-1.7.0 |
Install the following armel development packages: sudo /usr/share/pdebuild-cross/xapt -a armel libpango1.0-dev libavformat-dev […]
Ubuntu TV Works on OMAP4 Pandaboard
Ricardo Salveti, Software Engineer at Canonical, has written a blog post saying that Ubuntu TV now support full video hardware acceleration on the Pandaboard, TI OMAP 4 low cost development board. A demo of Ubuntu TV on the ARM platform with Ubuntu TV UI and 720p/1080p video playback can be seen in the video below. Pandaboard is the first ARM platform that can fully run Ubuntu TV. If you have a Pandaboard, you can try it out by installing the packages available at Linaro’s Overlay PPA. Qt and Qtmobility are not there yet (Patches are available at https://github.com/robclark/qtmobility-1.1.0), but he said they would be soon. The source code for Ubuntu TV is available at https://code.launchpad.net/~s-team/ubuntutv/trunk Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011. […]
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 […]