With the development of embedded systems today, the hardware platforms corresponding to various microprocessors are generally generic, fixed, and mature, which greatly reduces the chance of introducing errors from the hardware system. In addition, because the embedded operating system masks the complexity of the underlying hardware, so that developers can do most of the work through the API functions provided by the operating system, it greatly simplifies the development process and improves the stability of the system. The developers of embedded systems are now freed from the repetitive process of hardware platform design, allowing them to focus on meeting specific needs.
Embedded systems are often a resource-constrained system, so it is difficult and sometimes impossible to write software directly on the hardware platform of an embedded system. At present, the solution is to write a program on a general-purpose computer, then build the binary code format that can be run on the target platform by cross-compiling, and then run it to a specific location on the target platform.
Support for cross-development environment is a significant feature of embedded application development, where the cross-development environment refers to the environment for compiling, linking, and debugging embedded application software, which differs from the environment in which embedded applications are run, Host/target mode is usually used.
Host is a general-purpose computer (such as a PC or workstation) that communicates with the target via a serial port or Ethernet interface. The host has a rich hardware and software resources, including powerful operating systems (such as Windows and Linux), and a variety of excellent development tools (such as WindRiver tornado, Microsoft Embedded Visual C + +, etc.). Can greatly improve the development speed and efficiency of embedded application software.
Target is generally used during the development of embedded application software to distinguish the host that communicates with the embedded system, it can be the actual running environment of embedded application software, or it can be an emulation system which can replace the actual operating environment, but the hardware and software resources are usually relatively limited. The cross-development environment of an embedded system typically includes a cross-compiler, cross-debugger, and system emulator, where the cross-compiler is used to generate code on the host that can run on the target machine, while the cross-debugger and system emulator are used to debug the embedded software between the host and the target. When developing embedded application software in host/target mode, the software on the target machine is developed and simulated by using the rich resources and good development environment of the host, and then the target code generated by cross-compiling is transmitted and loaded onto the target machine via serial port or network. And with the support of the monitoring program or operating system, the cross-debugger is used to analyze and debug, and the target machine is run separately from the host under certain environment.
The establishment of cross-development environment is the first step in the development of embedded software, the common cross-development environment is mainly open and commercial two types. The typical representative of an open cross-development environment is the GNU Toolchain, which is now capable of supporting x86, ARM, MIPS, PowerPC and many other processors. The commercial cross-development environment is mainly Metrowerks CodeWarrior, ARM Software development Toolkit, SDS crosses compiler, WindRiver Tornado, Microsoft Embedded Visual C + + and so on.
What is embedded development? Introduction to Embedded software development tutorial