The above are the performance parameters of a basic embedded core board. Compared to the performance parameters of microcontrollers mentioned above, microcontrollers generally have lower processing capabilities, with clock speeds mostly in the tens of MHz range, while embedded systems can easily exceed hundreds or thousands of MHz processing speeds. Additionally, microcontrollers lack the capability to process graphical interfaces, meaning the absence of GPUs makes it nearly impossible for microcontrollers to drive graphical interfaces; the storage space of microcontrollers is not at the same level as that of embedded processors, as microcontrollers typically have only a few kB of on-chip memory, and due to peripheral limitations, it is unlikely to significantly increase external storage. In contrast, embedded processors typically have hundreds of MB of RAM. This huge difference results in microcontrollers being unable to run operating systems, and even TCP/IP and USB protocol stacks cannot run on them. Some high-end microcontrollers, such as ST’s STM32 series, may run lightweight OS and embedded network protocol stacks like lwIP. The rich and powerful performance of embedded processors allows them to accomplish many applications that microcontrollers cannot, such as network communication functions and video transmission processing functions. When external storage increases, embedded processors can easily run various Linux systems and graphical GUI interfaces.
In terms of development methods, there are also significant differences between microcontroller and embedded development, specifically in the compilation process. Microcontroller development primarily occurs in Windows and other graphical interfaces, with many mature IDE tools available, such as Keil, IAR, and TI’s CCS. These toolsets integrate compilation, assembly, linking, and simulation, and since development occurs in Windows, they have user-friendly interfaces, allowing developers to write C code, click compile and link buttons, and debug or simulate errors, making it quite easy to get started. In contrast, embedded development generally occurs in Linux, where C code must be compiled on the host and then burned into the development board via system images or U-Boot. Since the processor architecture of the host is x86 while the written code is meant to run on ARM or SPARC architecture processors, there is an installation of a cross-compilation chain. Furthermore, Linux lacks the IDEs found in Windows, meaning that compilation and linking of source code must be completed by the developer, typically using GNU Make scripts to write Makefiles and configure files. The Makefile specifies how to compile C or H files, including compilation rules and dependency files. All of these must be completed by the developer, and the entire process is done in the Linux terminal, which adds to the difficulty of embedded development.
Which do you think is harder, embedded development or microcontroller development? Feel free to share in the comments below
Disclaimer: The material for this article is sourced from the internet, and the copyright belongs to the original author. If there are any copyright issues, please contact me for removal.
《Technical Sharing | Development of an Automatic Tracking Car Based on STM32》
《Is Embedded Qt Worth Learning? Which Qt Development Method is Easy to Start?》
《Will There Be More or Fewer Embedded Jobs in the Future?》