Following “Pandaboard Cloud Cluster Running Google App Engine” post, there were some questions regarding the actual power efficiency of ARM servers vs Intel (Xeon) servers and some commenters questioned the performance of ARM chips. I’ve found a thesis evaluating how the energy efficiency of the ARMv7 architecture based processors Cortex-A9 and Cortex-A8 compares – in applications such as a SIP Proxy and a web server (Apache2) – to Intel Xeon processors. The focus of this thesis is to compare the energy efficiency between the two architectures rather than pure performance where the Xeon largely outperforms ARM processors, although a cluster of ARM servers could be used instead to reach the same processing power. Depending on the application, benchmarks indicate energy efficiency of 3-11 times greater for the ARM Cortex-A9 in comparison to the Intel Xeon. The full thesis (74 pages) is available below. Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software in […]
Linaro Android Tutorial with the Pandaboard
Zach Pfeffer, the tech lead of the Linaro Android working group, gave a tutorial about Linaro Android at Linaro Connect Q4.11. During this tutorial, attendees were shown how to download a recent build for the pandaboard, how to make a bootable SD card image using the linaro-android-media-create command and how to boot the board with it. The full setup was composed of a Pandaboard connected to a HDMI monitor with a keyboard and mouse connected to the board as well as serial to USB cable to connect to the development machine. He also used an SD card reader to generate the bootable Android image. The images are available at Android Linaro Build Service. There are quite a few build named after the supported board (e..g panda for pandaboard, snowball for ST Ericsson Snowball etc..) and the kernel version (tracking = latest linaro kernel, staging = stable linaro kernel). Then an […]
Development Testing with Static Analysis
I’ve recently come across an EE Times article written by Coverity stressing the benefits of static analysis and how it can help finding potential issues in the code early. They mentioned 3 static analysis techniques: Dataflow analysis This technique can find the defect in the listing below during compile time.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
void null_pointer_deref(int x) { char *p; if (x == 0) { p = foo(); } else { p = 0; } if(x != 0) { *p; } else { ... } } |
If value of x passed into the function is not zero, p is assigned a null pointer with p=0. Then, the next conditional check (x!=0) takes a true branch and in the next line p is dereferenced, leading to a null pointer dereference. This type of issue can be detected at compiled time with dataflow analysis. Interprocedural analysis This technique can find defects across function and method boundaries. See listing below:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
void *zero_alloc(size_t size) { void *p = malloc(size); if (!p) return NULL; memset(p,0,size); return p; } struct S *create_S(int initial_value) { struct S *s = (struct S *) zero_alloc(sizeof(*s)); if (!s) return NULL; s->field = initial_value; return s; } int example_leak(struct S *s, int value) { struct S *tmp = s; if(!tmp) { tmp = create_S(value); } if(!tmp) return -1; ... return 0; } |
There are 3 functions: example_leak, create_S and zero_alloc. Interprocedural analysis can go through the code and identify the memory leak. The analysis engine has to trace the […]
Ubuntu Linaro Evaluation Builds (LEB) Tutorial
Ricardo Salveti, tech lead of the Developer Platform working group, gave a tutorial on the Ubuntu Linaro Evaluation Builds (LEBs) during Linaro Connect Q4.11. He first described the list of available images: nano – minimal rootfs (command line) with apt/dkpg support ALIP – nano + X11 + browser Developer – nano + development tools Ubuntu Desktop – clone of Ubuntu with Linaro modifications. and how the builds are made available via nightly builds and hardware packs. Linaro aims at making Ubuntu the reference Linux distribution for ARM. This goal is valid for Cortex A processors, but for older ARM core (ARM9/ARM11) other distributions will have to used such as Debian. For example, Raspberry Pi board (ARM1176) will support Fedora optimized by Redhat. He then gave further details on Offspring the Linaro build system based on live-build scripts used for Debian. The source code is retrieved either via git (http:/git.linaro.org) or launchpad […]
All You Need to Create a Beaglebone Clone
The Beagleboard community has released Beaglebone Rev 3 hardware design files so that other people can now modify the hardware and/or create a clone. Here are the files: Schematics (PDF) Schematics (Orcad) [update] Bill of materials Gerber files Allegro files (PCB layout) System Reference Manual [update] To open Allegro files, you’ll need to download Cadence Allegro FREE Viewer or purchase one of Cadence PCB Design software if you don’t have it yet. The schematics are only provided in PDF format for now, so you would be able to modify them unless you reproduce the PDF one. Since TI has now released the Orcad schematics you’d also be able to make a custom board by modifying the schematics. Please note that those files comes with the following disclaimer: These design materials are *NOT SUPPORTED* and DO NOT constitute a reference design. THERE IS NO WARRANTY FOR THE DESIGN MATERIALS, TO THE […]
Linaro 11.10 Release with Linux Kernel 3.1
Linaro has just released version 11.10 based on Linux Kernel 3.1. Here are the highlights of the release: Android Audio playback and recording works on LEB-panda. TJBench into all Android builds benchmarked against the original Android libjpeg implementation: TomGall/LibJpegTurbo All strict-aliasing violations in 2.3.5 have been fixed and sent to AOSP. (for build optimization) Linaro Gerrit is integrated with Android Build Service for change verification as part of Continuous Integration effort. Tip toolchain tracked and released against all targets for 11.10. iMX53 will now boot with a 3.0 or later Android Kernel. The multimedia test application has been extended to cover encoding and give better benchmark results. Linaro’s Android distribution can now base builds off a tip toolchain build. Linaro’s 11.09 toolchain has been benchmarked. USB camera (UVC) now works on linaro-android builds. Developer Platform The Linux Linaro packages are now generated and validated in a continuous integration loop. New […]
Xibo Digital Signage on ARM (Full Version)
Last month, I wrote a post showing how to run Xibo Open Source Digital Signage in a BeagleBoard/Overo emulator. That version could communicate with Xibo server, download the required files, display pictures and (maybe) play videos with the real hardware. However, it had serious limitation as Text, RSS and web pages could not be displayed. I’ve now fixed those issues and the full Xibo 1.3.1 can run on ARM platform. First, you need to follow the instructions given in Xibo Digital Signage on ARM (Beagleboard / Overo), although we’ll need to modify something with libavg compilation (see below). Then cross-compile berkelium for ARM using Linaro toolchain. Add libbrowser-node to libavg plugin directory and build libavg again. Also copy the Berkelium header files in to src/test/plugin (i.e. src/test/plugin/berkelium) or add the include file path to CFLAGS/CXXFLAGS.
1 2 3 4 5 |
bzr branch lp:~browsernode-team/+junk/berkelium-browsernode cp berkelium-browsernode/plugin/* ~/edev/beagleboard/libavg-1.6.0/src/test/plugin cd ~/edev/beagleboard/libavg-1.6.0 make make install |
Create libberkeliumwrapper.so:
1 2 3 4 |
cd ~/edev/beagleboard/libs/lib touch a.cpp arm-linux-gnueabi-g++ -c a.cpp -o a.o arm-linux-gnueabi-g++ a.o -shared -L/home/jaufranc/edev/beagleboard/berkelium -llibberkelium -o libberkeliumwrapper.so |
Copy the required files to the qemu image: sudo mount -o […]
Pandaboard Cloud Cluster Running Google App Engine
Noritsuna Imamura showed an ARM cloud cluster built with 6 Pandaboards at Linaro Connect Q4.11. Noritsuna is a member of the Open Embedded Software Foundation (OESF), a Japanese organization that support Open Source embedded software. The cluster is made of 6 panda boards with a total 6 GB of RAM (1GB per board) that runs the Google App Engine (http://code.google.com/appengine/) in Ubuntu/Linaro 11.09 release. The middleware used is TyphoonAE, a full-featured and productive serving environment to run Google App Engine (Python) applications. This type of server hosts web applications such as Rietveld (used in the demo below) to be run on (thin) clients. There are also plenty of other software (required by Google App Engine) that runs in this ARM cloud such as MySQL, Apache2, memcached and more. In the video, a power meter shows that the cluster consumes about 35 W in low activity mode. Norisuna had a comparison […]