Making the most of BusyBox in embedded Linux devices

IBM has just published an online article about BusyBox, the single executable file that implements an extensive set of standard Linux commandline utilities in a highly resource-efficient manner. The article explores the purpose of BusyBox, how it works, how to use it, and how to extend it, among other topics.

BusyBox is one of the most widely used open-source applications. It’s used by almost every embedded Linux developer, and can be found on nearly every Linux-based embedded device, not to mention within “normal” Linux servers and desktops (type “busybox –help” on your Linux desktop’s commandline).

Author M. Tim Jones writes, “BusyBox contains simple utilities, such as cat and echo, as well as larger, more complex tools, such as grep, find, mount, and telnet (albeit, with fewer options than the traditional version); some refer to BusyBox as the Swiss Army knife of utilities.”

Jones notes that BusyBox was initially written in 1996 by Bruce Perens, for use on the Debian GNU/Linux setup disk. “The goal was to create a bootable GNU/Linux system on a single floppy disk that could be used as an install and rescue disk,” Jones writes.

The article covers:

  • The birth of BusyBox
  • How it works
  • Configuring and building BusyBox
  • Shrinking BusyBox
  • Standard commandline options
  • Adding new commands

Recently, the BusyBox and uClibc projects joined a conservancy launched by the Software Free Law Center (SFLC) to provide free software projects with “fiscal and administrative services.”

Links:  http://www.linuxdevices.com/news/NS8858676291.html

BusyBox: the swiss army knife of embedded Linux

BusyBox includes the functions of many common UNIX utilities within a single small executable. It thereby provides a fairly complete command environment for small or embedded systems, allowing embedded system developers to minimize hardware costs while maintaining a reasonable degree of functionality.

BusyBox has been written with size-optimization and limited resources in mind. The utility’s modular architecture also makes it practical to include or exclude specific commands or features at compile time. Systems designers can thereby tune the functionality to the requirements and resources of the specific embedded Linux system. Then, just add a kernel and an editor.

BusyBox is included within Lineo’s Embedix Linux distribution, as well as across a wide array of distributions and products including: MontaVista’s HardHat Linux, Debian boot floppies project, Linux Router Project, Stormix Installer, Trinux, tinynet, and is even included within a growing number of Linux-based consumer devices.

BusyBox is a freely distributed open source project, licensed under the GPL.

Links: 

http://linuxdevices.com/links/LK7081327677.html

http://www.linuxdevices.com/articles/AT4802795572.html

The Software Development Process

We all have used some or the other software while we are using our personal computers….

Ever wonder what are the processes involved in bringing the software to the end user….

This article details the various processes viz…

  • What is Software Engineering?
  • So it’s just programming?
  • The software crisis
  • The software development process
  • Analysis
  • Specification
  • Design
  • Implementation¤
  • Testing and Integration
  • Maintenance
  • Software process models
  • Traditional (waterfall) model
  • Other models
  • Prototyping
  • Fountain model
  • Spiral model
  • The unpleasant truth
  • Reading

Links: http://www.csse.monash.edu.au/~jonmc/CSE2305/Topics/07.13.SWEng1/html/text.html

Fundamentals of Real-time Linux Software Design

A typical real-time application involves a task performing some operation within a deadline. For example: storing some data, or updating a display. The task often is designed to repeat such activities ad infinitum, beginning each iteration at the occurrence of a hardware interrupt. This interrupt may be caused by a human clicking a button, a temperature reading, data from a visual sensor, or innumerable other possibilities.

In this article, we’ll discuss Linux, with respect to aiding such systems. For starters, let’s assume that our real-time system involves the following:

  • One or more user level tasks
  • An interrupt handler
  • A single CPU

If there is only a single task to worry about, lots of issues, such as kernel preemptibility, are no longer pertinent. If you are not dealing with hardware interrupts, then, do you really have a real-time system (we include timers here)? If your target system has multiple CPUs then you may have a means of distributing your tasks and interrupts in such a way that the issues discussed, again, are not important.
Links:  http://www.linuxdevices.com/articles/AT5709748392.html

Real-time Linux Software Quick Reference

You’ve probably realized by now that there are many ways to add real-time capabilities to Linux based systems. Certainly, one method is to throw hardware at the problem, by running faster processors or employing specialized hardware. For example, specialized peripheral controllers and digital signal processors (DSPs) can offload critical real-time tasks from the main system CPU. However, assuming you want to use the main system processor to manage real-time system events, there are a great many options from which to choose.

Given the somewhat bewildering variety of alternatives, we’ve assembled the LinuxDevices.com “Real-time Linux Quick Reference Guide” which we hope will assist you in locating Linux-based solutions that match your system requirements. Included within this guide is information about . . .

  • Real-time Linux Commercial Distributions
  • Open-source real-time Linux implementations
  • Open source real-time performance enhancements & tools
  • Articles and whitepapers about real-time Linux and related topics

Links: http://www.linuxdevices.com/articles/AT8073314981.html

Follow

Get every new post delivered to your Inbox.