Automated firmware assembly system

Automated firmware assembly system

October 14, 2009

German networking equipment manufacturer

Developing a Debian Linux automated assembly system for i386 and ARM. This application, which may be used by a wide range of internet users, provides an opportunity to create firmware for devices that use OS Linux (routers, access points, add-ins, servers, etc). i386 and ARM architectures are supported. In the near future we plan to port it to MacOS. The website has been created with help of AJAX technology and represents a simple interface for 3-step firmware creation.

We were approached by a German producer of network hardware. In almost every networked device, be it a router, access point, firewall, network file server or media server, there is firmware which contains a range of software:

  • Operating system
  • Device drivers
  • TCP/IP protocol stack
  • System and application network software
  • Remote administration tools

For the device to be operational it is necessary to download ready-to-use firmware, which consists of an assembly of many different components taken from different manufacturers, along with administrative tools designed for that particular device model. We swiftly dealt with the core of the issue which lay in creating a service that downloads the Linux packages to the repository as source code, where it is hen necessary to update to the latest version from the manufacturer, providing a baseline package assembly and implementing it into the firmware. Specific programme packages are added to the firmware of the device (a router or server) and then it is ready to record data via flash memory. Which the firmware set up, the device comes alive, turning from a ‘brick’ into a useful part of a household or office infrastructure.

The presence of a code cross-compilation feature in the system should be noted, as it allows for the compiling of an executable file for an ARM processor when the assembly has been produced using i386 PC. ARM-based code cannot be run on an i386 processor of course, but cross-compilation allows for all firmware to be compiled. In order for the firmware to be compiled correctly it was necessary to monitor different package versions and their relations to each other. For example, if a specific kernel version is required for TCP/IP component assembly, then TCP/IP will be necessary for assembly of the router code, hence the fact that before we began to assemble the router code, we needed to download and compile the kernel and internet protocol, and in a specific sequence. Furthermore, each package comes in many versions, and the latest version is not always used in the assembly of dependent packages. There is a process whereby after the end of a working day the source code is updated, the repository's status is declared active, modified packets are rebuilt on a selective basis and engineers acquire the latest version of the firmware for the client automatically and every day, covering all network hardware lines based on i386 and ARM.

Automated firmware assembly system