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

Android App Inventor – Develop Android App Without Coding

[Update: Google phased out App Inventor, but made it open source. It is now hosted by MIT at http://appinventoredu.mit.edu/welcome-to-app-inventor-edu“] We have previously shown how to setup your environment to develop Android application using Eclipse. However, if you are not into Java programming and learning Android API but still want to develop (simple) Android applications, that’s still possible thanks to App Inventor. App Inventor will allow you to create the application UI in your web browser (The Designer), configure how your application behaves via a Java JNLP (Java Network Launching Protocol) applet (The Block Editor) and run your application in your Android phone/tablet or if you don’t have hardware in an emulator (The emulator). For Windows XP + Emulator, all you’ll have to do is to follow the instructions in http://appinventor.googlelabs.com/learn/setup/setupwindows.html and then you’ll be able to create some “Hello Kitty” application. First download the installer. Run appinventor_setup_installer_v_1_1.exe to install the […]

Installing Android SDK on Windows XP – Hello World Application

You’ll find the full details for installing Android SDK at http://developer.android.com/sdk/installing.html. The purpose of this blog entry is to summarize what I had to do to install Android development environment (Android 2.3 SDK (Gingerbread)) on Windows XP. Before installing the Android SDK per se, you’ll need to install some set of tools used by the SDK. Here are the steps to setup your Windows XP computer for Android development: 1. Install Java Developer Kit (JDK) You need to go to http://www.oracle.com/technetwork/java/javase/downloads/index.html, select your OS (e.g. Linux, Windows, MAC…) and the file you want to download. I selected Java Platform (JDK), then downloaded Java SE Development Kit 6u23. I got the jdk-6u23-windows-i586.exe which I installed in the default directory, i.e. C:\Program Files\Java\jdk1.6.0_23). 2. Install Eclipse Classic Then you’ll need to install Eclipse, and open source IDE. Several versions are available at http://www.eclipse.org/downloads/, but since Google recommends Eclipse Classic, I just download […]

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

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

HTTP Server for uCLinux

You may need a web server on your no-MMU embedded system in order to allow remote configuration or possibly provide external access to some files. Usually, you’ll need a lightweight webserver (e.g. not Apache) with the required features and in case of no-mmu system, source that can accommodates uClinux limitations such as no fork support. You’ll also take into account the programming language or the server: e.g. C/C++. Java, Ruby, Perl… If your system does not support Java or Perl for example, that may not be the best solution to add one of those only for the web server and it also depends on the resources (Flash/RAM) available. There are plenty of C/C++ lightweight http servers such as thttpd or lighttpd, however those are using fork in their code. One open source http server that is lightweight and uses vfork (instead of fork) is mathopd. At the time of writing, […]

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

GPL Source code and SDE for Archos Gen8 Devices

Right at the end of November, Archos released the first version of their Android 2.2 firmware (2.0.54). They now have also released the GPL code for this firmware. http://www.archos.com/support/download/software/sources/gen8-gpl-froyo.tgz In this package, you’ll find the following: Linux Kernel 2.6.29 buildroot – Set of tools to generate the cross-compilation toolchain, the kernel and the root file system A directory called “external”  with the following libraries, tools and drivers: alsa-lib – Audio library blktrace – Driver debugging tool elfcopy –  Tool to generate executable binaries grub – Bootloader iptables – Firewall Tool liblzo  – LZO Compression Library webkit – Web Browser Engine alsa-utils – Audio Tools BlueZ – Bluetooth Protocol Stack elfutils – Tool to manipulate executable binaries hostapd – For Wifi Authentication jdiff – Java Code Analyzer openvpn – VPN Client/Server wpa_supplicant – Wifi tools for WPA/WPA2 bison – Parser Generator dbus – Libray and daemon for IPC (InterProcess Communication) genext2fs […]

EmbeddedTS embedded systems design