Since the VirtuaLab provides remote access to Intel hardware, we decided to continue developing the control system using the Intel Development kit. Of course, the Intel development kit will eventually be replaced with an ATOM hardware design that contains only the necessary functions for the system.
Choosing an embedded software development tool chain may be trivially simple if your company has already standardized on a specific tool chain that supports the ATOM processor. But if the Intel architecture is new to your development team and there is not already a standard embedded development environment chosen, you have several questions to answer:
- Is this design a “one off”
- What is the nature of future developments likely to be (large scale software, small scale software, software based on open source)?
- Does my company have other architectures that would strongly suggest a specific vendor be chosen?
- What is the anticipated lifespan of this software and product?
- Does my company have a specific development methodology as a standard?
The off-grid electric controller is a one-off system and can be developed by a small team of 1-2 programmers in a short period of time. The software complexity is small, consisting of approximately 3,000 lines of C code. Of this C code, about 2,000 lines is preexisting Open Source or Free Software C developments. The projected life is five years and is not expected to be used after that time.
Many software developments start with similar assumptions about the life of the software, only to find that the life is much longer than anticipated and undergoes incremental improvement for the actual life of the software. So, making these decisions based on the specified factors may not be the best business decision. A conservative choice would conclude that the prudent choice was to project a longer software life with significant unplanned feature extensions.
For the Intel ATOM processor there are three major vendors of embedded development tool chains: Intel, Green Hills Software (1) Inc, and Wind River Systems (2) Intel provides a software development toolkit for ATOM that includes a C/C++ compiler for Linux, Intel-specific debugger – optionally including the open-source Eclipse framework, JTAG debugger featuring full access to hardware resources, and VTune performance analyzer. In addition to the compilers, Intel’s development toolkit includes assembly language debug for getting directly at machine capabilities.
The Intel complier provides faster compile and run time - up to 30\% performance gain over GCC. Faster execution means that less power is consumed. For low power applications this means an extend battery life if battery-powered and lower current draw for applications operating in a fixed power application. Faster application completion and faster execution of performance-critical code allows the ATOM-based device to return to idle mode faster, decreasing overall power consumption. The complier also provides an in-order scheduler for the use of Intel Atom processor—a hardware platform-specific optimization technique to obtain an extra performance improvement.
Green Hills Software Inc offers Intel ATOM support via its Multi Integrated Development Environment (IDE). A central focus of the Multi environment is software project management. Project Bulder provides the basis for system-wide static validation of modules and build control. <image>Automatic dependency determination further cuts development time by eliminating the need to write and debug makefiles. Application build time can be minimized with the parallel build setting. This permits defined build processes to run parallel to decrease build times on single- or multiple-processor machines. Based on their long involvement with IDE development for multiple processor families, Green Hills provides a whole suite of tightly integrated tools to aid in debugging code. <image>
Green Hills Softweare’s compiler support for Intel’s ATOM processor includes both C and C++. In addition to C-based languages, Green Hills also offers Fortran and ADA. Where Intel offers its development toolkit under several Linux flavors, Green Hills adds Windows to: Linux, Solaris, and HP-UX to its offering.
Wind River Workbench includes C and C++ compilers have application-specific optimizatipon capabilities built-in. The Compiler uses a wide range of global, local, processor-specific, and application-specific optimization techniques to generate code that runs faster with a smaller footprint. In this case application-specific means that actual run time data from the execution profile. Whole program optimization permits the compiler to inline functions across multiple modules and source files, significantly boosting performance. Profile-driven optimizations employ the compiler’s capability to instrument the code and collect profile information specific for the application being developed. This information is then fed back into the compiler, enabling it to make optimized decisions when performing function inlining, register allocation, branch prediction, and other optimizations. Each of these optimizations improve application performance and footprint.
These optimizations are achieved by including two-staged compilation during the compilation process. During the first stage, the compiler instruments the code. This instrumentation is then executed on the target or in a simulation environment on a preselected dataset. Next the instrumented code collects execution profile information, which is then fed back into the compiler for the second stage of the compilation.<image>
During the second stage, the compiler uses the profile information to further improve optimizations. These optimizations include loop unrolling, inlining, basic block reorganization, register allocation, and branch prediction. Because a typical dataset is supplied during the first phase of the compilation, these optimizations will be highly tuned.
There are three very good selections for C compilers to produce code for the Intel ATOM processor. Each offers distinct advantages in optimization approaches. The differences for your specific application may be significant. The best way to make a determination is to compile your actual application code in final form.
How would you make a compiler selection under these circumstances?
- Green Hills Software is an Affiliate Member of the Intel Embedded Alliance
- Wind River Systems is an Associate Member of the Intel Embedded Alliance
Roving Reporter (Intel Contractor)
Intel(r) Embedded Alliance