As the saying goes: To do a good job, one must first sharpen their tools. As a qualified embedded engineer, you may encounter and handle various strange problems in your daily work, and a highly adaptable tool will greatly improve your work efficiency.
Based on personal experience and objective feedback from fans, the author recommends several commonly used software tools for embedded development, as shown in the figure below:
Part1Visual Studio Code
VS Code is a lightweight code editor developed by Microsoft that is cross-platform. Its full name is Visual Studio Code. It supports syntax highlighting, auto-completion, refactoring, and definition viewing, and it comes with built-in command line tools and Git version control. Users can implement personalized settings by changing themes and keyboard shortcuts, and they can also install extensions from the extension store to expand the software’s functionality.

Visual Studio Code is particularly powerful in its autonomy, as it can combine with various compilers for various embedded development tasks! For example, the author often uses it for Linux drivers, STM32, ESP8266/32 (Espressif has a dedicated plugin platform)! Among them,Visual Studio Code‘s numerous plugins are also one of its major features! Here, the author recommends a few plugins!
Plugin | Function Description |
---|---|
C/C++ | This is a must-have |
C/C++ Snippets | C/C++ reusable code blocks |
C/C++ Advanced Lint | C/C++ static detection |
Code Runner | Code execution |
Include AutoComplete | Automatic header file inclusion |
Rainbow Brackets | Rainbow brackets help read code |
One Dark Pro | VSCode theme |
GBKtoUTF8 | Convert GBK to UTF8 |
ARM | Supports ARM assembly syntax highlighting |
Chinese(Simplified) | Chinese environment |
vscode-icons | VSCode icon plugin, mainly for the icons of various folders in the resource manager |
compareit | Comparison plugin, can be used to compare the differences between two files. |
DeviceTree | Device tree syntax plugin |
TabNine | An AI auto-completion plugin, highly recommended, those who use it know! |

Note: When developing embedded systems in Ubuntu, VSCode should be our first choice.
Part2Notepad–
Notepad– is a free and open-source text editor for Windows. It is powerful, supports syntax highlighting, multi-window synchronized editing, multiple languages, and various programming languages, and it can load a rich set of plugins.Notepad– also has a complete Chinese interface and UTF8 technology, making it suitable for writing computer program code and creating plain text documentation.
Users can expand Notepad–‘s functionality by installing plugins, such as code folding, code hints, document formatting, and document preview. Additionally, Notepad– supports custom macros, which can help users quickly perform repetitive tasks or batch modify text.
In summary, Notepad– is a feature-rich, easy-to-use text editor with good extensibility, suitable for writing various types of text and code.
Part3Visual Studio
Unlike VSCode, Visual Studio is an IDE, which we can install as a backup for when needed, such as verifying C programs or developing C# programs. Some simulators related to embedded systems are also based on Visual Studio; the author’s CUDA code or research-related C++ code is often verified and simulated using Visual Studio!

In addition to standard features, Visual Studio also provides a rich set of extensions and plugins to meet the needs of different fields. For example, users can install C++ extensions to support C++ programming or install Entity Framework extensions to support data access.
Part4Keil uVision
Keil uVision is an integrated development environment (IDE) developed by Keil for the development and debugging of embedded systems. Keil uVision is based on C language and supports various microcontrollers and processors, including STM32, AVR, PIC, etc.

I believe that most embedded engineers are familiar with the above interface; the IDE we use most often for STM32 development is this one. Of course, everyone has always criticized Keil uVision for its ugly UI! MDK6 is about to be released, and according to what the author knows, it seems that the UI design has not improved much, and MDK6 seems more like a collection!

The main functions of Keil uVision include code editing, compilation, debugging, and simulation. Among them, the code editor supports syntax highlighting, code folding, and auto-completion, which can help developers quickly write code. The compilation function can compile the source code into executable files or libraries for running on target devices. The debugging function helps developers debug and test code, including single-step execution, breakpoint setting, variable monitoring, and more. The simulation function can simulate the operating environment of the target device to test the correctness and reliability of the code.
Part5STM32CubeMX
STM32CubeMX is a graphical tool developed by ST Microelectronics for configuring and initializing STM32 microcontrollers and generating C code. It provides an intuitive visual interface to help developers quickly configure and set up various peripherals, pins, and clocks of the microcontroller.

STM32CubeMX can directly generate HAL library configuration programs for STM32, greatly facilitating individual developers’ use of STM32 series development boards. Those familiar with the author should know that many of the author’s projects use the HAL library for teaching. The benefits of learning the HAL library are many; first, ST Microelectronics has stopped maintaining the standard libraries for many development boards. Second, FreeRTOS and other RTOS provide direct API function interfaces for the HAL library, making it easy to develop and port!

The HAL library is the future trend of low code volume and high encapsulation. However, the HAL library also has many drawbacks, such as low code efficiency and redundancy!
Part6VMWare Workstation
VMware Workstation is a powerful virtual machine software that can simulate multiple operating systems and application environments on a single computer.

Embedded engineering often requires cross-compilation work, that is, compiling ARM architecture code on an x86 architecture. This operation often needs to be done in a Linux environment! Considering the office needs, most engineers still use Windows as their daily operating system. Therefore, VMware Workstation greatly facilitates our development in daily life! Of course, tools like ROS also rely on Ubuntu under VMware Workstation.

Part7QT Creator
Qt Creator is a cross-platform integrated development environment (IDE) specifically designed for developing C++ applications based on the Qt framework. It is a free open-source tool provided by Qt Company and is suitable for operating systems such as Windows, Linux, and macOS.

QT can be considered a relatively large branch among embedded engineers, belonging to embedded application layer development. There are many UI development platforms similar to QT, but QT can be said to be one of the most common and mature! Readers with a good foundation in C++ can consider developing in this area, as the salary and benefits are quite good!

Of course, QT can also be used for simple C++ introductory learning and simulation!
Part8MobaXterm
MobaXterm is a powerful remote terminal emulator suitable for Windows and Linux operating systems. It provides an integrated remote terminal and X server that can connect to various types of remote hosts, including SSH, FTP, Telnet, etc. The key point is that it is free. When communicating via serial or SSH protocols, the terminal platform allows copying and pasting, which is really cool!!!! Therefore, I would call MobaXterm the strongest serial debugging assistant!!!

The author currently primarily debugs on the Linux system, using Raspberry Pi 4B, Jetson Nano, and other advanced boards as terminal control and debugging tools, providing an excellent experience!!! Compared to the paid SecureCRT, it is truly a treasure software!

Part9Vofa+
VOFA+ is an intuitive, flexible, and powerful plugin-driven high-freedom upper computer that can be seen in fields dealing with electricity, such as automation, embedded systems, the Internet of Things, and robotics. The name VOFA+ comes from: Volt, Ohm, Farad, Ampere, which are the basic units in the electrical field, named after their inventors—four giants in the field of electronic physics. The initials of their names together form the name VOFA+.

Vofa+ is a supervisory machine that supports digital animation, allowing for an intuitive understanding of real-time data changes. It is also free, and its rich plugins will support embedded engineers’ actual debugging needs!

Part10Arduino IDE
Arduino IDE is an integrated development environment (IDE) that supports Arduino boards. It is a simple and easy-to-use tool that helps developers write, edit, upload, and debug interactive electronic products based on Arduino. Today, Arduino IDE has fully adapted to the development needs of ESP8266/32, providing rich use cases and Arduino library functions!

Some engineers may consider ESP series development boards to be mere toys, or at most, to play with IoT; however, this is not the case! According to the author’s conversations with colleagues from many domestic and international universities such as MIT and NJUST, many universities have shifted traditional STM32 teaching to ESP32 teaching! At the same time, Espressif has excelled in lightweight edge computing!!! The times are flowing, and I believe that Espressif’s ESP32 series will shine brightly in the future!

Part11Logic
Logic is a modeling and analysis tool for digital logic circuits that helps users design and verify various digital circuits, including combinational logic circuits, sequential logic circuits, and state machines.

Logic analyzers are very common testing tools in embedded engineering, and there are many logic analyzers available. However, Logic is a very visually appealing and functional tool!!! Unfortunately, it is quite expensive, but thankfully, there exists a mysterious Eastern power!!!
Part12uniapp
uniapp is a framework for developing cross-platform front-end applications based on Vue.js, allowing developers to publish to multiple platforms such as iOS, Android, and Web (responsive) using a single codebase. It supports various mini-programs and quick applications, enabling developers to flexibly respond to different application scenarios.

The advantage of uniapp lies in: having its own community, rich components, and low development difficulty. This allows non-professional APP developers to quickly get started and develop their own apps!
Part13Beyond Compare
Beyond Compare is a comprehensive comparison tool that can be used to compare text, folders, files, etc., helping users quickly and accurately find differences and similarities. It supports various comparison methods, including text comparison, folder comparison, file comparison, etc., and can be used to manage original documents, keep folders synchronized, compare program output, and check the accuracy of burned CD backups.

Linux driver engineers often need to use Beyond Compare to compare old driver codes when learning new development board drivers. This way, they can quickly identify which areas have changed, and these areas will need to be focused on during future development!

Part14Git
Git is a distributed version control system used to track and manage changes in projects. It was initiated and developed by Linus Torvalds in 2005 and has now become an open-source project widely used. With Git, developers can store the version history of a project locally and synchronize it with a remote repository to share and collaborate with other team members. It also provides many commands and tools, such as **<span>git init</span>
、<span>git add</span>
、<span>git commit</span>
、<span>git push</span>
** and **<span>git pull</span>
**, making it easy for developers to manage their code repositories.

In summary, Git is a powerful tool that helps developers manage and collaborate more efficiently while providing better flexibility and scalability.

Part15Tracealyzer
Tracealyzer is a tool for real-time tracking and analysis of embedded systems. It is developed by MathWorks and aims to help developers better understand and optimize the performance of their embedded systems. Tracealyzer provides in-depth analysis of embedded systems by tracking runtime behaviors and events in real-time. It helps developers identify performance bottlenecks, debug issues, and optimize system performance.

Tracealyzer’s main features include:
-
Real-time tracking: Tracealyzer can track the runtime behavior of the system in real-time, including task execution, interrupts, timers, and events.
-
Performance analysis: Tracealyzer can analyze system performance metrics such as response time, latency, and throughput. It helps developers identify performance bottlenecks and optimization opportunities.
-
Debugging and troubleshooting: Tracealyzer can capture errors and exceptions in the system and provide detailed information and stack traces to help developers debug and resolve issues.
-
Visual reports: Tracealyzer generates detailed visual reports, including timelines of tasks and events, performance metric charts, and stack traces. These reports help developers better understand system behavior and formulate optimization strategies.
-
Cross-platform support: Tracealyzer supports various embedded platforms, including embedded devices based on Windows, Linux, and real-time operating systems.
Part16 PyCharm
PyCharm is an integrated development environment (IDE) specifically designed for developing Python applications. It is a powerful tool that provides many features and functionalities to help developers improve their efficiency and create high-quality Python code.

Today’s popular AI technologies, such as object detection and natural language recognition, often require training Python neural networks. This often requires the use of Python‘s IDE, and PyCharm is currently a very mainstream AI development platform! Embedded AI engineers often need to train network models in PyCharm and then deploy them on AI boards!

Part17Matlab
Matlab is a programming language and interactive environment for mathematical computation and engineering applications. Developed by MathWorks, it is a widely used scientific computing language and tool for various fields such as science, engineering, and finance. Most engineers may think that Matlab is a research tool that can only simulate; in fact, we can convert Matlab’s .m language programs into C language to run some advanced control algorithms on MCUs!

Including image filtering algorithms can also be simulated in Matlab, and then the corresponding C language can be written for migration implementation!

Disclaimer:This article is reprinted from the internet, and the copyright belongs to the original author. If there are any copyright issues, please contact us in time, thank you!