Real-Time Systems Development

Many real-time systems employ microprocessors or microcontrollers intimately bound into dedicated equipment. Such systems are now termed embedded and require a special approach to software development. This is mainly because the target platform is not often capable of supporting the editors, compilers, linkers and code control tools essential for the development task. So a second, larger computer is used for the actual code production. This is the host platform and is commonly a desktop PC running Windows or a version of Unix. In this way all the hardware and software facilities of a larger computer system can be utilized during the development cycle. Only the production code actually executes on the small target processor. If the selected target system has a different CPU to that in the host computer, a very likely circumstance, it can be somewhat confusing to produce and store executable files on the host computer that cannot be executed by the host CPU. Additional problems occur with the need for cross-compilers and associated target libraries. The host file system has to be carefully organized so as to keep the native and cross-compilers and libraries well apart.
The necessary interconnection between the two systems, for downloading executable files and controlling the target system during debugging, can be a slow serial cable, a fast Ethernet channel, or a specialized JTAG or BDM link. These latter two are described in more detail later in this chapter under the section on debugging.