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

Extract it

Install the following armel development packages: sudo /usr/share/pdebuild-cross/xapt -a armel libpango1.0-dev libavformat-dev […]

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 […]

Build the bootloaders (U-boot & X-Loader) for Pandaboard

I’ve tried to compile u-boot and x-loader for Pandaboard by following the instructions given at http://omappedia.org/wiki/Get_started_with_ubuntu_on_omap4#Bootloaders. I did this in Ubuntu 10.04 LTS with Linaro gcc compiler. Here are the instructions for the build: Create the folders:

Get u-boot and checkout the omap4_dev branch:

You may use a different tag. Simply run “git tag -l | grep L24” to see the list of tags. (I used the latest at the time of this post). Build u-boot for OMAP4

At this point, you should get U-boot (u-boot.bin). get x-loader and checkout the omap4_dev branch:

N.B: Both u-boot and x-loader folders must be at the same directory level. build x-loader for OMAP4:

The x-loader (MLO) should now be ready. Finally, you simply need to copy MLO and u-boot.bin files to the SD card. Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting […]

Linaro 11.11 Release with Kernel 3.1.1 and Android 4.0.1 Support

Linaro has just released version 11.11 based on Linux Kernel 3.1.1 and with support for Android ICS. The Android 4.0.1 Preview build for all low cost development boards supported by Linaro are available at http://releases.linaro.org/11.11/android/images-ics-preview/. Here are the highlights of the release: Android Linaro’s baseline has now been upgraded to 2.3.7. The first Versatile Express Android build has been completed. Pandaboard and Vexpress has been upgraded to kernel 3.1.1. A preview of Ice Cream Sandwich is released and running on Snowball, Origen, iMX53 and on Pandaboard with Linaro kernels. A NEON-optimized libpng has been itegrated in all builds. Preliminary DS-5 support has been integrated. Preliminary WiFi support on Android Origen. Kernel config for each build is available on android-build page. USB Ethernet works on Origen. Camera recording function works on Pandaboard. USB camera can be hotplugged on Pandaboard. Developer Platform Firefox can now be cross-built using multiarch. Instructions are available […]

Embedded Android Workshop at Android Open 2011

The first Android Open Conference took place about 10 days ago. Karim Yaghmour of OperSys published the presentation slides he used during his Android presentations. See Embedded Android Workshop presentation slides below. Those 159 slides cover the following: Android Basics Android History Android Ecosystem Legal Framework for Android Platform and Hardware requirements Development Tools Concepts and Internals: Android Concepts Framework Intro Native Development Overall Architecture System startup Linux Kernel Hardware Support Native User-Space Dalvik JNI System Server Calling on Services Activity Manager Binder Stock AOSP Apps Android Open Source Projects Tools and location Content Building Build system Adding new applications Images Using adb System Server Services run by System Server Observing the System Server Calling on system services Inside a few system services Creating your own system service Hardware Abstraction Layer Android Framework Location and components Android Customization Custom Toolchains and Dev Kits Rationale SDK generation NDK generation Creating a […]

Cross-compiling Berkelium (and Chromium) for ARM

Berkelium is a BSD licensed library that provides off-screen browser rendering via Google’s open source Chromium web browser. It takes advantage of Chromium’s multiprocess rendering to isolate browsers from each other and can render to any buffer in memory. The user of the library can inject input and javascript code into web pages to control them, as well as listen for events generated by the page such as navigation events, load sequence events and paint events. Berkelium provides a small API for embedding a fully functional browser into any application. This library is used by Xibo Digital Signage Player python client. I’ll give the instructions I followed to build Berkelium and Chromium for ARM. For now the build works, but I have a problem running berkelium in the emulator. First, you’ll need to install some tools and the development version of some libraries: sudo apt-get install git-core subversion cmake doxygen […]

Cross-comping zlib for ARM target

Zlib is defind as “A Massively Spiffy Yet Delicately Unobtrusive Compression Library” and used in many projects requiring compression. Here are the instructions cross-compile zlib for ARM: Download zlib1.25 wget http://cdnetworks-kr-2.dl.sourceforge.net/project/libpng/zlib/1.2.5/zlib-1.2.5.tar.gz Extract it tar xzvf zlib-1.2.5.tar.gz cd zlib-1.2.5 Configure, build and install zlib. CC=armv5tel-redhat-linux-gnueabi-gcc ./configure –prefix=/home/jaufranc/edev/rootfs make make install This will install libz.a (static library) and libz.so (dynamic library) in /home/jaufranc/edev/rootfs/lib and copy the header files to /home/jaufranc/edev/rootfs/include. 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. www.cnx-software.com

Installing an ARM Toolchain in Fedora

You can easily install an arm cross-compiler on Fedora as follows: cd /etc/yum.repos.d/ sudo wget http://ftp.linux.org.uk/pub/linux/arm/fedora/cross/cross.repo sudo yum install armv5tel-redhat-linux-gnueabi-gcc You can check the installation worked by checking the cross-compiler version [jaufranc@localhost ~]$ armv5tel-redhat-linux-gnueabi-gcc -v Using built-in specs. Target: armv5tel-redhat-linux-gnueabi Configured with: ../configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –enable-shared –enable-threads=posix –enable-checking=release –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-languages=c,c++ –disable-libgcj –with-sysroot=yes –enable-version-specific-runtime-libs –target=armv5tel-redhat-linux-gnueabi Thread model: posix gcc version 4.1.2 20070925 (Red Hat 4.1.2-33.fa1) This will only install the C compiler (gcc), to install the C++ compiler, run the following command: sudo yum install armv5tel-redhat-linux-gnueabi-gcc-c++ Tested in Fedora 12. 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. www.cnx-software.com

EmbeddedTS embedded systems design