Jonathan Page, Atmel Applications Engineer, MSC Gleichmann
Today the ability to directly program a microcontroller using machine code is an almost obsolete skill. Instead the use of higher-level languages, which are compiled or assembled into machine code, is the norm. And for years now, virtually every microcontroller manufacturer has offered the relevant software tools to allow developers to create, edit and assemble or compile their application programs. This was rapidly followed by tools, both hardware and software, to enable testing and debugging of the application code.
While frequently billed as a “software suite” these early development tools and utilities were typically little more than a collection of rather fragmented offerings, each targeting a different stage in the development cycle with minimal, if any, interaction between one tool and the next. Fortunately leading MCU vendors recognised these limitations and now provide integrated design environments (IDEs) within which engineers can write and debug code and deploy it to the target device or system. Key to the success of these environments has been the tight integration between the various tools vital for achieving the productivity gains needed to speed the development of embedded MCU applications.
For example, intelligent editors provide context sensitive visual assistance with auto-complete and tool-tip features while also analysing the code before compilation to highlight syntax and other coding errors. Simulation tools also allow cycle-accurate simulation of the MCU and its peripherals and IDEs also provide comprehensive debugging capabilities that typically operate across a range of industry standard in-system debuggers. Development cycle times are further reduced by the availability of code libraries for commonly used functions.
Nevertheless, one of the biggest productivity issues faced by engineering teams developing embedded applications, and certainly when upgrading or enhancing existing designs, is moving to a new microcontroller (MCU). One solution that is starting to gain traction among embedded developers is the use of software frameworks. These have been an established practice in enterprise environments for a number of years, where they allow the reuse of common algorithms and functions across multiple projects and hardware platforms.
Atmel Software Framework (ASF) is one such solution that can be used in conjunction with Atmel’s Studio 6 IDE to facilitate a top-down design approach to embedded systems development. ASF uses a layered architecture with functions implemented using a common API that abstracts device-specific features to maximise portability of application-level code so that code developed for one target MCU and be readily recompiled for a new target device. In this way an organisation can truly benefit from its combined expertise and accumulated intellectual property (IP) with shorter development timescales and quicker time to market.