David Mandala of Canonical talked at Linux.Conf.Au on 18th of January 2012 about Ubuntu for ARM and the move from netbook to server support. You can read my notes below, or jump at the end of this post to watch the presentation. The Past 2008: Ubuntu decides to only support ARMv7 architecture vs. Debian that supports ARMv4 and above. 2009: Ubuntu release for Freescale i.MX51 (ARMv5 built), and then Marvell ARMAVA with ARMv6 and VFP (ARM floating point unit) support. 2010: April (10.04) The first ARMv7 release for OMAP3 (Beagleboard) with VFP, Thunb2, NEON and SMP for ARM and first netbook edition October (10.10) Pandabord (OMAP4) release with initial device tree support for ARM. Starts work with Linaro. 2011: 11.04 (5th release) – Supports OMAP3 and OMAP4 only. The netbook edition is using Qt, further improvement to device tree, further work with linaro and on the way to the Unified […]
Cross-compiling Berkelium for ARMv6 with Emdebian Toolchain
Berkelium is a BSD licensed library that provides off-screen browser rendering via Google’s open source Chromium web browser. This library is used by Xibo Digital Signage Player python client and I already cross-compiled it using Ubuntu/Linaro toolchain. Since I need it to run on ARMv6 for the Raspberry Pi, I have cross-compiled it again in Debian with Emdebian ARM cross-compiler. Here are the instructions I followed to build Berkelium and Chromium for ARMv6 in Debian. First, you’ll need to install some development libraries for ARM: sudo /usr/share/pdebuild-cross/xapt -a armel libnss3-dev libgconf2-dev libgnome-keyring-dev libgtk2.0-dev libgnome-keyring-dev libgtk2.0-dev libxtst-dev libpam-dev libxss-dev libdbus-glib-1-dev libnss3-dev libgconf2-dev libgnome-keyring-dev libxss-dev libdbus-glib-1-dev libnspr4-dev libglib2.0-dev libjpeg-dev libasound2-dev libbz2-dev libgcrypt-dev libspeex-dev libcups2-dev and some tools on the build machine: sudo apt-get install git-core subversion cmake doxygen gyp gperf flex bison On 64-bit build machines (required for debug build) also install g++-multi and possibly some 32-bit libraries with xapt:
1 |
sudo apt-get install g++-multilib |
If […]
Linux Debugging: Listing Shared Libraries at Runtime
I had a library (a python plugin) that crashed and outputted the “very useful”: illegal instruction I tried pdb (the Python Debugger) to find the issue without success. So I tried to add some printf to this library but none were outputted at runtime. So I guessed the illegal instructions was generated by the shared libraries. Let’s see how many libraries we’ve got: ldd libbrowsernode.so | wc -l 125 Oh dear!… 125 libraries.. This is where panic sets in. Luckily, there is a simple way to list the dynamic libraries as they are loaded (and some more useful info). Simply set: export LD_DEBUG=files before running your program. This is extremely verbose, so I recommend you redirect the output to a file. This method allowed me to find undefined symbols during dynamic libraries load time with errors such as: opening file=/usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so [0]; direct_opencount=1 14121: 14121: /usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so: error: symbol lookup error: undefined […]
Linux Kernel 3.1.9 for Raspberry Pi Released & Build Instructions
Raspberry Pi has just announced the release of a fork a linux kernel 3.1.9. The source code with patches is available at https://github.com/raspberrypi/linux. If you just want to download the patch, I’ve created one: r-pi_linux_3.1.9.patch.gz The code related to Broadcom BCM2835 processor is referred as bcm2708 in the kernel and I can see committed related to the watchdog timer, the framebuffer, the VCHIQ driver (the driver sending messages to the GPU) and general commits for bcm2708. For those interested in the messages used to communicate between userspace and the GPU, the VCHIQ driver code is located at drivers/misc/vc04_services in the tree. I haven’t studied it yet, but as the platform should support graphics standards such as OpenGL and OpenMAX IL, most people should not really care about this interface as I suppose the OpenGL library (Mesa?) uses this driver. Here are the build instructions for Raspberry Pi kernel. I cross-compiled […]
Embedded Linux Conference 2012 Schedule
The Embedded Linux Conference (ELC 2012) will take place on February 15 – 15, 2012 at Hotel Sofitel in San Francisco. ELC consists of 3 days of presentations, tutorials and sessions. There will be over 50 sessions during those 3 days. I’ll highlight a few sessions that I find particularly interesting. February 15 10:30 – 11: 30 – Profiling and Performance Measurement Techniques Using Linux Kernel Tools by Govindraj Raja, Software Engineer at Texas Instruments and Partha S Basak, Technical Manager at Texas Instruments. With ever growing features and functionality of Linux kernel, one needs methods to trace and profile parts of Linux kernel for various reasons like performance analysis, debugging etc. This presentation aims at providing an insight into few of these tools and their salient features. Supporting use case data as captured on open source OMAP4 pandaboard is also provided. 14:00 – 15:00 – The Yocto Project Overview […]
Xibo Digital Signage in Raspberry Pi Emulator (Step 1)
Xibo (pronounced eX-E-bO) is an open source, multi-display, multi-zone, fully scheduled digital signage client/server solution written in Python and dotNET. If you are not familiar with Xibo you can visit http://xibo.org.uk/ or/and read my introduction XIBO: An Open Source Digital Signage Server/Client. The Raspberry Pi is a low cost board based on Broadcom BCM2835 (ARM1176 Core) that should be available for sale at the end of January / beginning of February at http://www.raspberrypi.com. There are two versions of the board: Model A: 128 MB RAM and no Ethernet Model B: 256 MB RAM with 10/100 Mbit Ethernet BCM 2835 also features a Videocore GPU supporting OpenGL and 1080p30 video decoding that makes it ideal for multimedia applications such as digital signage players. The board support both HDMI and composite video output. You should also be able to connect a LCD via the DSI interface. If we can make Xibo run […]
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
1 |
wget http://www.libavg.de/raw-attachment/wiki/DownLoad/libavg-1.7.0.tar.gz |
Extract it
1 2 |
tar xzvf libavg-1.7.0.tar.gz cd libavg-1.7.0 |
Install the following armel development packages: sudo /usr/share/pdebuild-cross/xapt -a armel libpango1.0-dev libavformat-dev […]
Samsung Merges Bada OS With Tizen
Samsung has announced that it was merging Bada operating system with the new Tizen project (Linux OS with HTML5 API) at CES 2012. The work has already started, but Samsung did not provide any estimated completion date. If you have been developing Bada applications, the good news is that Tizen will support mobile applications written with bada’s SDK (software development kit) and previously published bada apps will be backwards compatible. Bada and Tizen developers will be given the same software tools (SDKs and APIs) so that if you know how to program in Bada, you will also be able to make Tizen apps. Samsung expects Tizen will be used in entry-level smartphone powered by single core processors as well as other devices targeted by Tizen such as tablets, smart TVs, netbooks and In-vehicle infotainment (IVI) devices. One or two Tizen devices should be released in 2012, and the company said […]