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: [email protected]:~/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 lib diirectory contains two versions of the static library (why?) …

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 unnecessary features. The first thing to add is CFLAGS=”-Os” to …

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 Studio 2008 and Visual Studio 2010. A large number of …

Cross-compiling Python for MIPS and ARM Platforms

Python programming language is used in several open source projects such as Sugar OS and Xibo. Let’s see if we can cross-compile it in Ubuntu 10.10 using a mips compiler. I’ll use the instructions given at http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html. Let’s download Python 2.7.1 first and extract the source code: Then run the following command in Python-2.7.1 in order to build some tools for the host: There is no patch for Python 2.7.1 cross-compilation in the link above, so let’s just try to configure and build it: If we don’t use a patch the first error is: So I used some older patch to create a new patch: http://www.cnx-software.com/patch/python-2.7.1-cross-compile.patch. You can download it an apply it as follows: And repeat the step above to configure and cross-compile Python for mips. Finally install Python in ~/Python-2.7.1/install for example: After that copy all necessary files in ~/Python-2.7.1/install to your target board and run the python test:

Ayuda Splash Digital Signage Player Becomes Open Source

Ayuda Media Systems announced OpenSplash – a free, open source digital signage player at ISE 2011. Press Release Excerpt: Ayuda Media Systems (“Ayuda”) announced today at ISE 2011 that it will be open sourcing its Splash Digital Player. Dubbed “OpenSplash”, it is a free, multi-platform open source player that can be driven by any content management and scheduling system. “Offering a free, open source media player will enable a new wave of innovation in the signage industry” said Andreas Soupliotis, President & CEO of Ayuda. “There are a multitude of software vendors in the space that basically all do the same thing – push content from a content management system (CMS) to a network of players. Some do it a little better than others but the differentiation of identity is just not there. If there were a standard open software player that the industry rallied behind then everyone could focus on innovating next generation signage opportunities. Each year at DSE, …

Sigma Designs unveils its SMP8910 Series Secure Media Processors: SMP8910 SMP8911

Sigma Designs will announce its latest and all powerful Media Processor (SMP8910) based on MIPS at CES 2011. The SMP8910 with integrated studio-quality VXP® video processing provides a highly-integrated, high-performance solution for premium Blu-ray 3D players. It supports all the audio decoding options, video decoding options, and content protection requirements for Blu-ray players. The Secure Media Processor architecture offers advanced content protection, supporting a wide variety of Digital Rights Management (DRM) and Conditional Access (CA) solutions. Studio-quality VXP® video processing is included, offering fully adaptive deinterlacing, adaptive 3D noise reduction, mosquito noise reduction, block artifact reduction, adaptive detail enhancement featuring sharpness and texture enhancement with overshoot control, adaptive debanding, and adaptive contrast enhancement. 3D Video decoding of a variety of 3D Video formats is also featured, including Blu-ray 3D. Support for legacy, current, and future 3DTVs is provided by supporting a variety of 3D Video output formats. The high-performance 3D graphics available on the SMP8910 enables dynamic and customizable user …

P2P for embedded systems: BitTorrent and Emule – Part 2

In part1, I explained how to build and install aMule for mips platorm, in part2, we’ll build and install Transmission BitTorrent client for devices based on Sigma Designs SMP8634/SMP8635. Transmission BT is already used in quite a few NAS and media players including Syabas Networked Media Tank, Western Digital WD MyBook, ReadyNAS, D-Link DNS-323 & CH3SNAS… as you can see at the bottom of the transmission download page. Building Transmission 2.13 daemon and client First download Transmission 2.13 source code and required dependencies: OpenSSL 1.0.0c, cURL 7.21.3 and libevent 1.4.14b (do not use libevent 2.0.x). You’ll also need zlib 1.2.5 that we compiled in part1. Extract them: tar xjvf ../Downloads/transmission-2.13.tar.bz2 tar xzvf ../Downloads/openssl-1.0.0c.tar.gz tar xjvf ../Downloads/curl-7.21.3.tar.bz2 tar xzvf ../Downloads/libevent-2.0.9-rc.tar.gz Build OpenSSL 1.0.0c: ./Configure no-asm –prefix=/home/jaufranc/edev/libs linux-generic32 make CC=”mipsel-linux-gcc” AR=”mipsel-linux-ar r” RANLIB=”mipsel-linux-ranlib” make install Build cURL 7.2.13: ./configure –prefix=/home/jaufranc/edev/libs –build=mipsel-linux –target=mipsel-linux -host=i686 –disable-ipv6 –without-random –with-ssl=/home/jaufranc/edev/libs –with-zlib=/home/jaufranc/edev/libs CC=mipsel-linux-gcc LDFLAGS=-ldl make make install Build libevent 1.4.14b: ./configure –target=mipsel-linux –host=mipsel-linux –prefix=/home/jaufranc/edev/libs make make install …

P2P for embedded systems: BitTorrent and Emule – Part 1

Whether your device is a Network Access Storage (NAS) or a media player with network capabilities, you may consider adding P2P to allow downloads of files as you would do on your computer. Two of the most used P2P protocols are BitTorrent and eMule, but most of the client have a UI designed for Linux or Windows and may not be easily ported to an embedded system. So what we need to look for here are command line based clients or daemons that can be compiled and run in an embedded platform. After some research, here are the 2 programs we’ll use: aMule 2.2.6 a multiplatform eMule-like client Transmission 2.13 running as a daemon for BT dowloads Today, I’ll show how to use aMule 2.2.6 in Sigma Designs SMP863X target, for example in Popcorn Hour A-100. But a similar method (just a different compiler mips-linux-gnu-gcc and setting Little endian (-EL)) could also be used for SMP864x/SMP865x devices such as Popcorn …