Installing Linaro ARM Cross Toolchain on Ubuntu

You can easily install Linaro arm cross-compiler on Ubuntu 10.04 (Lucid), 10.10 (Maverick) and 11.04 (Natty) as follows: sudo apt-get install gcc-arm-linux-gnueabi This will install Linaro cross-toolchain version 4.4 on Ubuntu 10.04 and 10.10, and version 4.5 on Ubuntu 11.04. You can check the installation worked by checking the cross-compiler version jaufranc@CNX-TOWER:~$ arm-linux-gnueabi-gcc -v Using built-in specs. Target: arm-linux-gnueabi Configured with: ../src/configure -v –with-pkgversion=’Ubuntu/Linaro 4.4.4-14ubuntu4′ –with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs –enable-languages=c,c++,fortran,objc,obj-c++ –prefix=/usr –program-suffix=-4.4 –enable-shared –enable-multiarch –enable-linker-build-id –with-system-zlib –libexecdir=/usr/lib –without-included-gettext –enable-threads=posix –with-gxx-include-dir=/usr/arm-linux-gnueabi/include/c++/4.4.5 –libdir=/usr/lib –enable-nls –enable-clocale=gnu –enable-libstdcxx-debug –enable-objc-gc –disable-sjlj-exceptions –with-arch=armv7-a –with-float=softfp –with-fpu=vfpv3-d16 –with-mode=thumb –disable-werror –enable-checking=release –program-prefix=arm-linux-gnueabi- –includedir=/usr/arm-linux-gnueabi/include –build=i686-linux-gnu –host=i686-linux-gnu –target=arm-linux-gnueabi –with-headers=/usr/arm-linux-gnueabi/include –with-libs=/usr/arm-linux-gnueabi/lib Thread model: posix gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu4) You can also install the latest version 4.5 (recommended) on Lucid and Maverick: sudo add-apt-repository ppa:linaro-maintainers/toolchain sudo apt-get update sudo apt-get install gcc-4.5-arm-linux-gnueabi If you are using an ARM platform running Ubuntu 10.10 or higher, you could also use the native GCC compiler. sudo apt-get install […]

Cross compiling Berkeley DB for ARM and MIPS

Following my blog entry about Databases for Linux Embedded Systems, here are the instructions to cross-compile Oracle Berkeley DB. First download the source code of the latest version of Berkeley DB (version 11gR2 – 11.2.5.1.25). You’ll need to register on Oracle website first on the download page http://www.oracle.com/technetwork/database/berkeleydb/downloads/index.html to download http://download.oracle.com/otn/berkeley-db/db-5.1.25.tar.gz (with AES encryption) or  http://download.oracle.com/otn/berkeley-db/db-5.1.25.NC.tar.gz (if you don’t need encryption). Extract the source code: tar xzvf ../Downloads/db-5.1.25.tar.gz Configure and build the source code. I’ll use mipsel-linux-gcc, but any other cross-compiler could be used. cd db-5.1.25/build_unix ../dist/configure –host=mipsel-linux CC=mipsel-linux-gcc RANLIB=mipsel-linux-ranlib STRIP=mipsel-linux-strip AR=mipsel-linux-ar –prefix=/home/jaufranc/edev/lib/db-11g make make install The full berkeley DB package is 79MB: jaufranc@CNX-TOWER:~/edev/lib/db-11g$ du –max-depth=1 -h 6.6M    ./lib 308K    ./bin 72M    ./docs 176K    ./include 79M    . However, you won’t need the include and docs directory in your embedded target. So you do not need to copy those. You may or may need the utilities in the bin file. The […]

Cross compiling SQLite for ARM and MIPS

Following my blog entry about Databases for Linux Embedded Systems, here are the instructions to cross-compile SQlite. First download the latest version of SQLite amalgamation with autoconf script (version 3.75): wget http://www.sqlite.org/sqlite-autoconf-3070500.tar.gz Extract the source code: tar xzvf sqlite-autoconf-3070500.tar.gz Configure and build the source code. I’ll use mipsel-linux-gcc, but any other cross-compiler could be used. cd sqlite-autoconf-3070500 ./configure –host=mipsel-linux –target=mipsel-linux –prefix=/home/jaufranc/edev/sqlite-mips make make install At this point the library is correctly configured and installed, so you’d just need to copy the relevant files to your target board (skip include and share directories and  libsqlite3.a) . Let’s check the size of the required files: ls -l ../sqlite-mips/bin/ -rwxr-xr-x 1 jaufranc jaufranc 125513 2011-03-14 14:21 sqlite ls -l ../sqlite-mips/lib/libsqlite3.so.0.8.6 -rwxr-xr-x 1 jaufranc jaufranc 2087584 2011-03-14 14:21 ../sqlite-mips/lib/libsqlite3.so.0.8.6 sqlite binary is 122.57KB and the dynamic library 2038.65KB. Let’s see if we can optimize the binary size with compilation flags and by disabling some […]

Android C/C++ development with Android Native SDK

HyperDevBox is a Japanese based software development company, developing games for Android. They are presenting their new Android game called “Spectral Souls”, the first tactical RPG game for Android. The interesting part is that this Android gamewas not developped with Java, but only using C/C++ programming with Android Native SDK (NDK) (Currently revision 5). Using the NDK means you’ll have to adapt your software to several hardware platform contrary to java development. They now only support Qualcomm and PowerVR GPU for now, and they are working on supporting NVidia Tegra platform and other upcoming GPU. The advantage of native code is a potential performance improvement and code re-use if you have already applications developed in C/C++, the inconvenience is that more work is need to support different hardware. Currently the NDK is only available for ARM platforms (ARMv5TE  andARMv7-A), future releases will support x86 instructions. The video below is an […]

Running .NET applications on Linux Embedded Systems

You may have some applications developed using Microsoft .NET application framework that are running on Windows XP, Windows Vista and Windows 7. .NET for Linux If after spending much effort and time, you have a request to port your application to Linux, you don’t need to rewrite everything thanks to Mono, an open source implementation of .NET framework that can be run in Windows, Linux and MacOS. The development framework is composed of three parts: Mono – An open source, cross-platform, implementation of C# and the CLR that is binary compatible with Microsoft.NET MonoDevelop – An open Source C# and .NET development environment for Linux, Windows, and Mac OS X Mono Tools for Visual Studio – Development Tools to develop and migrate .NET applications to Mono on Linux without leaving Visual Studio. This application can be tried for 30 days and / or purchased. This tools is compatible with Visual […]

Building Archos Gen8 Source on Ubuntu 10.10

[ad#Google Adsense-Leaderboard] In a follow-up post of GPL Source code and SDE for Archos Gen8 Devices earlier today, here are the steps I followed to build the toolchain, kernel and root file system with buildroot on Ubuntu 10.10 Desktop version: Extract the source code: tar xzvf ../Downloads/gen8-gpl-froyo.tgz Install extra packages for the build: sudo apt-get install flex bison build-essential zip curl libmpfr-dev libmpfr1ldbl automake autoconf libtool gettext texinfo Run the build to generate the toolchain, kernel and root file system: cd gen8-gpl-froyo/buildroot sudo make Then wait for a while (It took 1h15 on my machine) to get the binary images: zImage (kernel) in buildroot/linux/arch/arm/boot rootfs.arm.squashfs (rootFS) in buildroot/binaries/uclibc 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

Embedded Software Books

I’m often asked what useful books software engineers should read when they start to work on embedded systems. So here’s a list of books I would recommend as starters. First, nowadays many embedded systems are written in C (although lower end systems using 8-bit MCU are still likely to be written in Assembler), so software engineers had better make themselves very familiar with C/C++ and GNU tools (gcc, libtool. automake…) with a focus on embedded systems (e.g. interrupts handling, real-time capabilities, volatile variables, processes and threads’ stack handling, , cross compilers…).  Programming Embedded Systems: With C and GNU Development Tools, 2nd Edition is just the right book for that purpose. It deals with embedded Linux and eCos and provides useful examples. You may also read part of it online Once you start developing embedded systems you are likely to write device drivers at some points. Linux Device Drivers, 3rd Edition […]

EmbeddedTS embedded systems design