Cost Considerations of Development Systems, Evaluation Kits, and SDKs for Embedded Designs
Wednesday, July 2, 2014
Developing an embedded based design system involves the use of numerous tools. Let’s look at generic approach to development tools.
1. Writing Code
Software Code for an embedded design is written in a programming language of choice with a standard ASCII text editor and saved as a text file. Programming in an assembler involves learning a specific instruction set (assembler mnemonics), but results in the most compact and fastest code. A higher level language like C/C++ is mostly independent of the design’s specific architecture, but still requires some controller specific extensions to control all of a chip's peripherals and functionality. The drawback of more portable code and faster development is a larger code size.
2. Translating the Code
Next the source code needs to be translated into instructions the design can actually execute. An instruction set is represented by "op codes". Op codes are a unique sequence of bits that are decoded by the controller's instruction decode logic and then executed. Instead of writing op codes in bits, they are commonly represented as hexadecimal numbers, whereby one hex number represents 4 bits within a byte, so it takes two hex numbers to represent 8 bits or 1 byte. For that reason the firmware in machine readable form is also called Hex-Code and the file that stores that code is a Hex-File.
Assemblers, Compilers, Linkers, and Libraries
Assemblers or (C-) Compilers translate the readable source code into hex code that represents the machine instructions or op codes.
Linkers link modules inserted and stored in different files together for a single final program. They assign each instruction to specific memory addresses so program segments do not overlap.
Libraries help manage and store re-usable modular programs.
Once the ASCII source code text file has been assembled or compiled and the files have been linked, the output results in a number of files that can be used for debugging the software and programming the design’s memory.
3. Debugging the Code (Software Simulator and Debugger)
Simulators try to model the behavior of the complete embedded environment in software. Simulating external events can become a time-consuming exercise, as you have to manually create stimulus files that tell the simulator what external waveforms to expect on which embedded components pin. A simulator does not communicate to your target system, so functions that count on external components are hard to verify. Simulators are the perfect tool to complement costly in-circuit emulators (as much as $5K).
Hardware in-circuit Emulator/Debugger An emulator is a piece of hardware that ideally behaves exactly like the real your designs controller. All its integrated functionality can offer the designer the most powerful development environment. Most emulators/debuggers give you a range of choices of exchangeable pin adapters and emulation devices to your target application.
The other component in debugging is the probe or in circuit emulator. The debugging features include the capability to examine and modify the targets registers, data- and program-memory; pausing or stopping program executing at defined program locations by setting breakpoints; single-stepping (execute one instruction at a time); and looking at the executed code by using trace capability.
Evaluation Kits and Starter Kits
Both tools are similar and most of the time bundle a hardware board and have some software components where you can evaluate end target devices By connecting to a USB or serial port the evaluation board runs some fairly simple routines that “show and tell” the devices capabilities. They can vary in price from $99.00 to much higher. In either case they offer the designer a snapshot of how the device may function in their end application.
Software Development Kits (SDKs)
An SDK is a collection of software used for developing applications or drivers for a host of interfaces such as USB, serial ports, and HID devices. Part of the standalone SDK may include sample code which provides developers with example programs and libraries. These samples help developers learn how to build basic programs with the SDK, which enables them to eventually create more complex applications. SDKs are usually priced lower than a full blown development suite; however, it assumes you have the ability to compile code either with an assembler or compiler. The main difference is that it allows the developer to focus on specific routines designed for the target device to be implemented as part of an embedded system.
So now you're ready to plunge into the world of embedded systems development. A good place to start exploring a large selection of tools, platforms, evaluation boards and starter kits from various manufacturers and for many different embedded applications is at www.semiconductorstore.com.
Stay up to date with industry and supplier news!