Embedded Software Development
We have experience with over a dozen microcontroller platforms and first hand experience with the trend in development tools.
The cost and time required to develop software for embedded
products has been on a continuous downward trend. This favorable trend is credited to improvements in software tools and emulators.
A decade ago, an ICE (In Circuit Emulator) was required for the initial debugging phase. They cost upward of $10,000,
were delicate and problematic, and required modifications to the target in order to connect it. Today, the ICE functionality
has been incorporated into the microcontroller, and a simple connector (JTAG) is provided for the emulator connection. The cost
of the emulators has dropped by 50% and the functionality has been improved in many ways.
The sections below summarize our experience with the design and development process. We are interested and open to other tools
and technologies, as well as success and horror stories. If you're willing to share usefull information, we'd like to hear from you.
|
Real Time Operating System
Embedded products require a Real Time Operating System to determine and switch to software routines as needed to accomplish
the desired functionality of the product. We have a strict rule that it is essential to have the source code for any operating system
being used in an embedded products. We've used:
- Embedded Linux (uCLinux) - the only reliable "real time" implementation of Micro-Linux that we know of, is from MontaVista Software.
Beware of "compatibility hazards" between various versions of Linux and Open Source Software.
- Windows CE / Windows NT - excellent tools, the hazard is that you can't build an operable code from the sources.
- Nucleus Plus - lean mean fully featured operating system. Worked excellently in Process Controllers. The hazard here is that we've heard
rumors that it's being phased out.
- TI's DSP BIOS - an excellently architected operating system for TI's DSP products. The hazard here is the complexity. You need to purchase
a BIOS source license to see the details, then you see source code for a given DSP dynamically generated at the beginning of the build process.
It's difficult the figure out the functionality but once you get past that you see a lean-mean O.S.
- Custom Operating System - for simple devices where the rules to run software routines are simple, and the communications between
software routines is also simple.
|
Host-Target Tool Suites
Software development for an embedded product always involves a Host/Target environment. The software is written on the Host and
executed on the Target. It requires special features from the Tool-Suite (aka ToolChain), and the debugging hardware, in order to accomplish this:
- Network Connection - the Host communicates with the Target Debugger (Emulator) over a Local Area Network. It provides flexibility, allowing multiple
Hosts to communicate (not at the same time) with the Target. A connection from a Windows
machine is used to accomplish some tasks, and a Linux Host for others. EPI offers a large selection of
configurations that work extremely well.
- TI DSP - Spectrum Digital provides emulators that connect to several TI microcontrollers
and DSPs. They work well to connect to TI DSP used as a co-processor in the Target product.
- Multiple Concurrent - where multiple Host machines are used in the same debugging session. We've had 2 emulators active at the same time.
A Windows Host connected to a DSP co-processor in the Target, while a Linux Host is connected to a uCLinux main processor in the Target.
Coordinating the breakpoints is a real challenge.
|