Build Community Android Distribution and Ensure the Quality – ELCE 2011

Jim Huang, developer and co-founder of 0xlab, explains how they built an Android distribution with Linaro at Embedded Linux Conference Europe 2011. Abstract: While developing Android distributions, 0xdroid and LEB (Linaro Evaluation Build), we learn much about the development approach to non-traditional open source software model such as Android Open Source Project. This session shares the experience how 0xlab established the community, contributes to upstream (in unusual way), and leveraged the strong efforts from Linaro. Also, 0xlab develops a serial of open source projects to ensure overall performance and quality for better user experience. 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

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.

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:

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

Raspberry Pi Emulator in Ubuntu with Qemu

The Raspberry Pi board is a low cost board based on Broadcom BCM2835 media processor SoC with an ARM1176JZF-S core clocked at 700MHz. This board is currently under development and should be ready by end of November, beginning of December and will be sold for 25 USD (128MB RAM – no Ethernet) and 35 USD (256MB RAM – Ethernet). While we are waiting for the board, we can still test software using qemu to emulate a board based on an ARM1176 core with 128MB or 256 MB memory. I’ve tried to create a rootfs based on Ubuntu with rootstock but this only support processors with ARM cortex A8 and greater, so it would not work with ARM11. I’ll be using Debian Squeeze instead. Prerequisites My host computer is running Ubuntu 10.04.3 LTS, but any recent Ubuntu or Debian installation should work with these instructions. [Update: You won’t be able to […]

How to Transfer files between the Host and Qemu via SSH and NFS

Last week, I wrote a blog post explaining how to copy files to a qemu image by mounting the qemu image in the host. This is only useful if emulated platform does not support networking. If networking is enabled, using SSH (Secure Shell) or NFS (Network File System) is more convenient. Using SSH with Qemu To initiate the SSH connection from qemu, there is actually nothing extra to do as long as you have sshd installed and running on the host. If it is not installed simply run  sudo apt-get install openssh-shell on the host. This will install and automatically sshd. To initiate the SSH connection from the host, you’ll have to redirect the ssh port to an unknown port and start qemu as follow (for overo):

Please refer to Beagleboard Emulator in Ubuntu with Qemu for the detailed instructions on how to setup qemu to emulate beagleboard or […]

Redirect all output to a log file

When you build a program or execute a shell command, the messages are often outputted to both standard output and standard error. If you want to send all ‘printf’ to a log file, use the following command: make > make.log 2>&1 “2>&1”  is the part that redirects standard error to standard out, allowing you to capture all messages. 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

Can You Really Boost your Wifi Router Signal with a Beer Can?

I’ve recently come across an interesting and amusing story entitled “Boost Your WiFi Signal Using Only a Beer Can”  on discovery channel website. I’ve said to myself that I’ve got to try with my WiFi router. The interesting part is that my WiFi router (TP-LINK TL-WR940N) has 3 antennas, so I had to diligently drink three beer cans (LEO brand,  the best local beer in Thailand). Once this was done, I had all that I needed, besides a pair of scissors, a utility knife and some double faced tape. The next step was to clean the beer cans, let them dry and cut the bottom and top of the beer cans as described on discover channel blog post. There is no dotted red line on LEO beer cans, but there are yellow horizontal lines that make this can perfect for the job. After less than 5 minutes of hard work, […]

Best Practices for Writing Safer C Code

Thomas Honold wrote an article published on EETimes giving 17 steps to safer C code. Not only this article provides tips to write safer C code, but I believe those steps are simply best practices when writing C code for embedded systems as they shorten the software life cycle by making it easier for a software team to write, debug and maintain code and by improving the software QA procedure. Here’s a summary of the 17 steps to achieve safer C code: Follow the rules you’ve read a hundred times: Initialize variables before use. Do not ignore compiler warnings. Check return values. Use enums as error types. Define an ENUM_MAX value at the end, so that the code to check the range does not have to be modified each time you add a new error code. Expect to fail Always assume there will be an error and set to default […]

Embedded Linux QA with Wind River Test Management 4.0

Wind River has just announced the release of Winder River Test Management 4.0, a test suite specialized in testing embedded devices and allowing the test teams to optimize the testing effort by focusing resources on high-risk areas and deliver a high-quality embedded software solution on time. New Features and Enhancements New preconfigured test suite generators: The following new test suite generation methods are available: Create a test suite based on coverage and execution time: Selects test case instances that will generate the maximum coverage given a fixed time constraint . Create a test suite based on execution results: Selects test case instances that have run with specific final status values. Create a test suite based on requirements: Selects test case instances that are associated with specific requirement records to ensure that all requirements have a test associated with them and are thoroughly tested. Create a test suite based on defect […]

UP 7000 x86 SBC