Companies like ADI Engineering (1) offer a service to create customized Single Chip solutions for customers. But once you have a custom version of an Intel® Atom™ E6xx board, without an Input/Output Hub IOH chip, how do you develop software?
According to Steve Yates, President of ADI Engineering, using their management chip design means that both hardware and software developers can continue with their design with minimal disruption. Previous generations of Intel® Atom™ processors relied on a proprietary, closed interface between the CPU functions and the System Control Hub (SCH). The SCH provided essential functions for CPU functionality including the system memory controller and boot flash controller. By moving the Atom E6xx’s IOH from the Front Side Bus (FSB) to the open PCIe bus, Intel effectively opened access for engineers to implement functions of the IOH in different ways and chips – eliminating the IOH from end-product design.
For the remainder of this discussion we’ll divide the systems software into software that relies on APIs at or above the BIOS services level, and directly BIOS/BIOS-dependent software. Applications code that operates with at most calls to BIOS services via the standard APIs may be developed independent of the underlying BIOS.
Software development for the embedded application will be done via cross-platform techniques. This means that the editors, compilers, and debuggers will operate on the development machine, usually a desktop computer. For most embedded applications, the target hardware and software is not fully compatible with the development hardware. Intel offers a complete tool suite for Atom™ embedded software development. The “Embedded Tool Suite for Intel Atom Processor” and “Intel Application Software Development Tool Suite for Intel Atom Processor” are fully capable tools that address software development and performance requirements of Atom-powered Embedded and Consumer Electronic products. The Tool Suites cover the entire cycle of software development: coding, compiling, debugging, and performance analysis. Both of these tool suites are Linux-hosted and are compatible with GNU tools. Thus, there are a great many third party software tools of all types available to supplement the Intel offerings. These Linux-based tools then interface to a target platform via a serial communications port such as USB, RS-232, or JTAG.
Green Hills Software (2) and Wind River Systems (3) both offer cross-platform development tools. The Green Hills Software offering includes the INTEGRITY® real-time operating system, http://www.ghs.com/isv INTEGRITY Secure Virtualization technology, http://www.ghs.com/products/MULTI_IDE.htmlMULTI® Integrated Development Environment (IDE), optimizing C/C++ compilers, and DoubleCheck™ static analyzer. Wind River provides an embedded development kit that includes a hardware board as part of the kit. Developers can begin application development immediately using the kit. Each embedded development kit includes a bootable USB flash drive that turns any host computer into an integrated development environment. Each board also comes with a pre-flashed, 30-day run-time trial version of Wind River's VxWorks real-time operating system or Wind River Linux. Wind River offers C/C++ compilers and a full suite of development software tools.
Both Wind River and Green Hills’ general development tools are the subject of my blog on development tools. <url>
Software development at the BIOS level is where complications may arise. Compared to applications software developers, engineers who are conversant with BIOS are a select group. Taking on a full BIOS development may be more than what your development team is organized to implement. It may also be more capability that your application requires. Fortunately there are members of the Intel Embedded Alliance who offer alternatives.
Insyde® Software (4) (figure below) provides system firmware and software engineering consulting services for companies in the embedded systems and other businesses. InsydeH2O provides a firmware product designed to replace the traditional PC BIOS. It is an implementation of the Intel Platform Innovation Framework for Unified Extensible Firmware Interface (UEFI). Unlike traditional 16-bit real mode BIOS technology, InsydeH2O BIOS Replacement Drivers run in 32-bit mode. The InsydeH2O Compatibility Support Module (CSM) provides backwards compatibility - including the run-time BIOS interface. InsydeH2O's CSM supports continued use of standard legacy operating systems and tools. As with all implementations of the Intel UEFI, InsydeH2O is intended to simplify a gradual transition from legacy software to UEFI.
American Megatrends, Inc.(5) Aptio is a next-generation BIOS firmware based on the UEFI Specifications and the Intel Platform Innovation Framework for EFI. With the availability of UEFI, the days of hand editing and modifying BIOS by hex editors are gone. Aptio can be expanded using drivers, development tools, support utilities and pre-boot application solutions, including:
- Visual eBIOS (VeB)
- AMI Debug for UEFI
- AMI Flash Utility (AFU) Suite
- Change Logo Utility - OEM splash logo management
- AMI BIOS Configuration Program (AMIBCP) - Change setup paramaters and strings in Aptio ROM images
- MMTool - manage modules, drivers and Option ROMs in Aptio ROM images
- DMIEdit - SMBIOS data management
In a very real sense, tools for American Megatrends’ UEFI take the previously ad hoc development methodology used when modifying previous generations of BIOS and brings UEFI to new levels of software and configuration management. Nanjing Bysoft Co., Ltd (6) and Phoenix Technologies, Ltd (7) also offer BIOS replacement firmware for Atom E6xx-based systems based on the Intel Platform Innovation Framework for Unified Extensible Firmware Interface.
From the applications developer’s viewpoint for systems using a BIOS compatible solution, software development may use standard available development tools providing lower level access is maintained using standard BIOS APIs. Systems that do not include a BIOS rely on a bootloader mechanism to load the system code onto the hardware. This is one area that is different for a customized E6xx design. Since the Atom bootloader process on earlier generation processors was built into the SCH, there was a standard mechanism defined to load the execution image. With the E6xx single-chip approach to systems hardware development, there are a number of ways that an execution image could be loaded. Perhaps the easiest way to implement the loading process is through the use of Intel’s Boot Loader Development Kit (BLDK). For these “naked board” approaches to the low level software, all services are up to the developers to implement for their specific system. All JTAG–based development tools used to control the E6xx processor and interrogate its states will continue to work for these systems.
Supporting standard operating systems with a customized E6xx design is really a matter of electing to implement standard BIOS, or a UEFI replacement. Regardless of which approach is selected, developers must implement the essential services expected by the OS of choice. For the most part, this can be accomplished by using the Intel BLDK to create a loader to work with the customized loading mechanism. UEFI vendors can provide a near off-the-shelf solution for BIOS replacement for systems using a custom management chip.
Testing and validating software is best and most cost-effectively achieved using the cross development paradigm. For example, Wind River Systems employs Eclipse-based JTAG support for Atom processors. By using Eclipse based services, Wind River improves user functionality and indirectly supports third party additions to the Eclipse environment. For software developers using the Wind River tools, Eclipse can become an entire project by itself. According to current large scale users of Eclipse, the Eclipse API can overwhelm developers new to the technology. But with that complexity comes the ability to make the system do anything that you can imagine. The issue is the amount of effort required to extend Eclipse in your own unique direction. Fortunately Wind River has already provided toolset extensions to permit scripting of JTAG functions for test and validation purposes.
The range of options available to developers of embedded Atom-based products is greater than ever before. Through the use of Intel’s BLDK, developers can create just the right low levels services for their application. Or, choosing to employ an UEFI alternative is always an option.
What path will you take for your next single-chip E6xx-based design?
- ADI Engineering is an Associate member of the Intel Embedded Alliance
- Green Hills Software is an Affiliate member of the Intel Embedded Alliance
- Wind River Systems is an Associate member of the Intel Embedded Alliance
- Insyde Software is an Affiliate member of the Intel Embedded Alliance
- American Megatrends, Inc. is an Affiliate member of the Intel Embedded Alliance
- Nanjing Bysoft Co., Ltd is a General member of the Intel Embedded Alliance
- Phoenix Technologies, Ltd is an Affiliate member of the Intel Embedded Alliance
Roving Reporter (Intel Contractor)
Intel® Embedded Alliance