When developing software for embedded systems, you may need to support multiple architectures such as arm, mips, x86, powerpc, alpha etc.. but you may not have the hardware required on hand to test them. This is where QEMU – a processor emulator – comes to the rescue. In a way, QEMU is similar to VirtualBox, VMWare or Citrix Xendeskop except it can support multiple architectures. I’ll show how to run Debian Lenny ARMEL in QEMU on a computer running Ubuntu 10.10 (aka Ubuntu Maverick Meerkat). QEMU (Qemu-kvm) Installation First install qemu-kvm and qemu-kvm-extras (the latter contains qemu-system-arm): sudo apt-get install qemu-kvm qemu-kvm-extras Let’s check qemu version: jaufranc@CNX-TOWER:~/edev$ qemu –version QEMU PC emulator version 0.12.5 (qemu-kvm-0.12.5), Copyright (c) 2003-2008 Fabrice Bellard Debian ARM Installation in QEMU Create a directory to store the required files for the emulator and download the Debian Lenny ARMEL kernel (vmlinuz) and debian installer rootfs (initrd.gz): mkdir […]
Ziilabs ZMS-05 and ZMS-08 SDK and Development Boards
Ziilabs (originally 3DLABS) is Singapore company, subsidiary of Creative Technology, that provides media application processors for consumers electronics and has offices in the UK, China, USA and Singapore. Ziilabs Media Processors Overview Ziilabs has two media processors: ZMS-05 – A Low Power HD Programmable Media Rich Processor based on two ARM9 core (ARM9-EJS) mainly aimed at smartphones and tablets with the following media capabilities: High compute density SIMD architecture High resolution – decode to 1080p / 720p encode Simultaneous video encode/decode at D1 Wide rage of optimised CODECs and APIs Accelerated OpenGL ES 3D graphics Hardware compositing Advanced image processing 8 GFlops programmable compute ZMS-08 – A HD Media Rich Applications Processor based on an ARM Cortex A8 running @ 1GHz mainly aimed at media players, set-top boxes and digital signage solutions with the following media capabilities: Blu-ray Quality 1080p H.264 Video Decode 1080p H.264 Video Encode 720p H.264 Video […]
Folders and Files Comparison in Linux with Meld
Beyond Compare and Winmerge are tools that can be used to compare files in Windows, but the latter is not available in Linux and the former is only available as a commercial application. One alternative is to use Meld, a diff and merge tool for Linux. This open source program is a GUI for diff2 and diff3 written using pygkt toolit based on Python, Glade and GTK+. This is not as powerful as the two programs aforementioned, but still very useful. It can also compare 3 files at the same time. To install it in ubuntu: sudo apt-get install meld It will still allow you to compare files, directory and merge changes. The file comparison merge function is a little confusing at first, but after a while you’ll get used to it. Meld can also support version control comparison with CVS, SVN, GIT, Bazaar-ng or Mercurial. Jean-Luc Aufranc (CNXSoft)Jean-Luc started […]
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:
1 |
tar xjvf Python-2.7.1.tar.bz2 |
Then run the following command in Python-2.7.1 in order to build some tools for the host:
1 2 3 4 5 |
./configure make python Parser/pgen mv python hostpython mv Parser/pgen Parser/hostpgen make distclean |
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:
1 2 |
CC=mipsel-linux-gcc CXX=mipsel-linux-g++ AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib ./configure --host=mipsel-linux --target=mipsel-linux --prefix=/python make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED="mipsel-linux-gcc -shared" CROSS_COMPILE=mipsel-linux- CROSS_COMPILE_TARGET=yes |
If we don’t use a patch the first error is:
1 |
Include/pyport.h:243:13: error: #error "This platform's pyconfig.h needs to define PY_FORMAT_LONG_LONG" |
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:
1 |
patch -p1 < python-2.7.1-cross-compile.patch |
And repeat the step above to configure and cross-compile Python for mips. Finally install Python in ~/Python-2.7.1/install for example:
1 |
make install HOSTPYTHON=./hostpython BLDSHARED="mipsel-linux-gcc -shared" CROSS_COMPILE=mipsel-linux- CROSS_COMPILE_TARGET=yes prefix=~/Python-2.7.1/install |
After that copy all necessary files in ~/Python-2.7.1/install to your […]
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 […]
OLPC XO 1.75 Hardware, Firmware and Software
OLPC demo’ed their 3rd generation laptop – OLCP XO 1.75 – based on Marvell Armada 610 at CES 2011. The good thing about this platform is that they opened most of it including the hardware, the software and for the first time the firmware. However, I found out it’s not so easy to find the hardware / software development information and source on the OLPC site, so I’ve decided to make a summary and provide links to the hardware, firmware and software for OLPC XO 1.75. OLPC XO 1.75 Hardware The XO-1.75 is powered by Marvell Armada 610 CPU (88AP610) with an ARM core clocked at 1Ghz. It has 1GB DDR3 SDRAM, 4GiB NAND Flash, a TFT display, an SD Card slot, Wi-Fi, a few USB ports and a camera. I believe the touchscreen is not part of the current hardware, but the block diagram below should be close to […]
Freescale i.MX Overview, SDK and Development Boards
Freescale i.MX Processors Overview Freescale i.MX multimedia applications processors are based on ARM9, ARM11 and ARM™ Cortex-A8 and Cortex-A9 core technologies “delivering an optimal balance of performance and long battery life for rich multimedia experiences on the go”. There are quite a few families within the Freescale i.MX Series namely: i.MXS Processors:ARM9 Core @ 100-200Mhz (i.MX1 (not recommended for new designs), i.MXL and i.MXS). i.MX21 Processors: ARM9 Core @ 233-266Mhz (i.MX21 and i.MX21S) i.MX23 Processors: ARM9 Core @ 454 Mhz (i.MX233) i.MX25 Processors: ARM9 Core @ 400MHz for industrial and automotive applications (i.MX251, i.MX253, i.MX255, i.MX257 and i.MX258) i.MX27 Processors: ARM9 Core @ 400Mhz for Video over IP, VoIP, Cordless and Mobile phones… (i.MX27 and i.MX27L) i.MX28 Processors: ARM9 Core @ 454 Mhz for industrial and consumer applications (i.MX281, i.MX283, i.MX285, i.MX286 and i.MX287) i.MX31 Processors: ARM11 Core @ 400-532 Mhz for industrial, consumer and automotive applications (i.MX31 and i.MX31L) […]
Resources for Atmel AT91SAM9: SAM926X, SAM9GXX, SAM9M1X, SAM9XE…
Atmel AT91SAM9 – or simply Atmel SAM9 – series are versatile microcontrollers and embedded microprocessors used in variety of products such as internet radios, embedded p2p downloaders, smart grid in-home displays, and much more. Atmel SAM9 series are divided into five subsets: The original SAM9 MCU based on ARM926EJ-S running at between 210 and 240 Mhz, namely AT91SAM9260, AT91SAM9261, AT91SAM9261S and AT91SAM9263 SAM9G eMPU (Embedded MPU) based on ARM926EJ-S, a new generation based on SAM9 MCU architecture but running at between 266 and 400Mhz: AT91SAM9G10, AT91SAM9G20, AT91SAM9G45 and AT91SAM9G46. SAM9M eMPU based on ARM926EJ-S clocked at 400Mhz and with a video decoder: AT91SAM9M10 and AT91SAM9M11 SAM9R MCU based on ARM926EJ-S running at 210 Mhz with similar characteristic as the original SAM9 MCU, except it does not support USB Host but can be used as a High Speed USB device: AT91SAM9R64 and AT91SAM9RL64 SAM9XE MCU are also based on ARM926EJ-S running […]