Essential Tools for Efficient Embedded Development: A Comprehensive Overview

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

Embedded development refers to development under embedded operating systems, commonly used systems include μcos, VxWorks, Linux, Android, etc. Of course, the essential tools for embedded or microcontroller engineers are C, C++, or assembly language. So, what good tools can help make work more efficient?

According to microcontroller engineer Osprey, I first learned Qt, and to learn Qt, I had to learn C++. After learning Qt, I found that the new company used Linux for microcontroller development, which involved Makefile and used GitLab for code management, so I spent some time learning GitLab operations, and then I realized that code management also required Git, so I spent a few days learning how to use Git…

Many microcontroller developers are well-versed in KEIL. In fact, before changing jobs, I was the same; KEIL handled everything—editing, compiling, downloading, and debugging—all relying on KEIL software. This is also why I studied KEIL so deeply, because only by being familiar with the tools can you achieve greater efficiency.

Next, I will introduce several embedded development tools. I believe you should spend some time learning these tools, as they are very useful and convenient.

1. Source Insight

Source Insight is a classic program editor and code browser. It is a project-oriented program editor and code browser with built-in analysis for C/C++, C#, and Java programs.

Source Insight can analyze your source code and dynamically maintain its own symbol database while you work, automatically displaying useful contextual information.

Source Insight is not just a powerful program editor; it can also display reference trees, class inheritance diagrams, and call trees. Source Insight provides the fastest navigation of source code and source information of any program editor. Unlike many other editor products, Source Insight analyzes your source code while you edit, providing practical information and immediate analysis.

Osprey’s evaluation of this tool is: We know that in KEIL, to view a function or definition, we either right-click to find the definition or use the shortcut key F12 to jump. However, without exception, these require extra operations. But with Source Insight, as long as you point the cursor at the function name, a small window will automatically display the function body. It seems to be just one step less than KEIL, but this small difference is enough for Osprey to install it (in fact, it can also compile source code after settings, which I haven’t explored yet). When looking at others’ code, jumping around is normal, but KEIL opens a new window every time you jump, and to come back, you can only switch windows. If the number of jumps is not many, that’s fine, but when viewing unfamiliar code, don’t you need to jump frequently? Therefore, Osprey believes this tool is a must-install, especially when viewing large source codes like the Linux kernel. Moreover, its installation package is small, so you don’t have to worry too much about memory issues; you deserve it.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

2. UltraEdit

UltraEdit is a powerful text editor that can edit text, hexadecimal, and ASCII code, fully capable of replacing Notepad (if the computer configuration is strong enough). It has built-in English spell check, C++, and VB syntax highlighting, and can edit multiple files simultaneously without slowing down even with large files.

UltraEdit is a popular legacy text/HEX editor under Windows (not open-source). UltraEdit is being ported to the Linux platform, named UEX, which means UltraEdit for Linux. UEX has a native Linux appearance, and its interface, configuration, and hotkeys are no different from the Windows version. UltraEdit is a $49.95 shareware that provides a user-friendly programming editor, supports syntax highlighting, code folding, and macros, along with a host of other features, and has built-in support for HTML, PHP, and JavaScript syntax. UltraEdit’s code folding supports 64-bit file processing on all 32-bit Windows platforms (standard), and Unicode support is based on disk text editing and large file processing—supporting files over 4GB, even several megabyte files occupy very little memory.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

3. Git

Git (pronounced /gɪt/) is an open-source distributed version control system that can efficiently and quickly handle version management for projects ranging from small to very large.

Git was developed by Linus Torvalds to help manage Linux kernel development.

Git is currently the most advanced distributed version control system in the world (without exception).

What are the features of Git? Simply put: it is high-end, atmospheric, and top-notch!

Osprey’s evaluation of this tool is as follows: This tool is used for software version control. In fact, the version control tool I used in the first five years of development was copy and paste. You read that right; the year I worked, I also used this method for version control. I believe many friends in the public account are still using this method. This method is indeed simple; you don’t need to learn any commands or know how to use tools because copying, pasting, and renaming is something everyone can do, and the learning cost is very low.

However, when you keep updating and modifying code, you will find that this copy-paste method is very inefficient and hard to control: you will find your folders becoming more numerous, and you will increasingly not know how each file differs from others. Over time, you won’t even know where the changes are.

But Git is different; you can see that there is only one current version of the file, and all historical changes are hidden by Git, so you will see that your source code file is only a few KB, but when you check the file properties in the parent directory, you may find that it has hundreds of MB of content. What are those extra files? They are your historical files, hidden in the .git folder.

To view this history, you only need a few commands, and it is easy to return to the version you need, like taking a time machine, easily traveling between the past and the future.

It also allows you to easily view version differences, so you no longer need to use specialized tools to see the differences between files.

Moreover, Git is managed locally, requiring no network, which is very convenient.

Learning the basic usage of Git only takes a day or two, but it can save you from copy-paste operations for the rest of your development career. Osprey believes this is very worthwhile.

Git tutorial: https://www.liaoxuefeng.com/wiki/896043488029600

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

According to an engineer’s sharing, the Git version management client they use most is msysGit. msysGit provides both GUI and bash views:

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

4. TortoiseSVN

TortoiseSVN is a free open-source client for the Subversion version control system, capable of managing files and directories over time.

It is an open-source visual centralized code version management tool. Compared to Git, its advantages are (1) the commit number is a cumulative value, making it easy to identify; (2) it occupies less local disk space.

Download link: https://tortoisesvn.net/downloads.html

Usage tutorial: https://www.runoob.com/svn/tortoisesvn-intro.html

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

5. GitHub

GitHub is well-known, with its presence in 996, Microsoft open-source, Smartisan open-source, and Xiaomi open-source.

GitHub is a hosting platform for open-source and private software projects, as it only supports Git as the version control format, hence the name GitHub.

Osprey states that GitHub is a website and cannot be considered a tool. This website is well-known; in fact, I don’t know how to use it very well. Currently, I only use it to upload code with Git, so I won’t elaborate further.

So why should I use it? Because many times, your source code may need to be transferred to other platforms, and having it makes it more convenient. For example, code developed on Windows can be uploaded to GitHub and then downloaded on platforms like Ubuntu or Raspberry Pi, facilitating code synchronization. So if you don’t want to spend time learning systematically, using it as a cloud storage is also a good option.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

6. Qt Creator

Qt Creator is a cross-platform Qt IDE, a new lightweight integrated development environment (IDE) launched after Qt was acquired by Nokia. This IDE can run cross-platform, supporting systems including Linux (32-bit and 64-bit), Mac OS X, and Windows. According to the official description, the design goal of Qt Creator is to enable developers to complete development tasks more quickly and easily using the Qt application framework.

Osprey states that he is not sure about the relationship between this software and Qt; he just downloaded an installation package to learn C++ and Qt under Ubuntu. In fact, it can also compile microcontroller code (provided there is a Makefile and cross-compiler).

So why discuss it? Because Qt is widely used in embedded applications. If you want your upper computer to run on both Windows and Linux, Qt is a good choice, as it is said to be “write once, compile everywhere,” so the advantages are significant. Moreover, it uses C++, so if you are good at C, you can quickly get started with C++.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

7. Visual Studio Code

In development, there is a very useful tool, Visual Studio Code, abbreviated as VS Code.

I don’t even need to promote VS Code; everyone will obediently use it. Countless developers have been impressed by VS Code’s powerful features.

VS Code features: open-source, free, customizable configuration, integrated Git, powerful intelligent suggestions, supports various file formats (HTML/Jade/CSS/Less/Sass/XML), strong debugging capabilities, convenient shortcuts, and powerful plugin extensions.

Osprey states that this is said to be a magical tool; I am not sure how magical it is, but I have heard it can replace KEIL. Those interested can research it, and I will also try it when I have time to experience its power.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

8. Beyond Compare

Beyond Compare is software developed by Scooter Software, primarily used to compare two folders or files and highlight differences with colors.

Beyond Compare supports 11 types of file comparisons and functions, including folder comparison, folder merging, folder synchronization, text comparison, text merging, table comparison, hexadecimal comparison, MP3 comparison, image comparison, registry comparison, and version comparison, making it very versatile.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

9. HHD Software Device Monitoring Studio

HHD Software Device Monitoring Studio is a powerful device monitoring software that includes USB monitoring (USB Monitor), serial monitoring (Serial Monitor), and network monitoring (Network Monitor) modules. HHD Software Device Monitoring Studio captures data packets directly at the driver level, providing accurate feedback on the time intervals between data packets. It is an essential tool for developers!

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

10. Multifunctional Debug Assistant

The Multifunctional Debug Assistant integrates various debugging functions, including serial port debugging assistant, camera debugging, linear CCD debugging, virtual oscilloscope, GSM debugging assistant, GPS positioning system, and network debugging assistant (TCP server, TCP client, UDP). With it, we can easily handle various embedded development tasks.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

11. Serial Port Debugging ToolsSome good serial port debugging tools include SSCOM, MyDocklight, and AccessPort; if debugging AT commands, QCOM is still the best serial tool.

Of course, previously, Embedded ARM also reported a very useful serial assistant called “Vodka”—”To Debug Hardware Smoothly, I Confronted the Serial Debug Assistant”.

12. Wireshark

Wireshark (formerly Ethereal) is a network packet analysis software. The function of network packet analysis software is to capture network packets and display the most detailed network packet data possible.

Wireshark uses WinPCAP as an interface to directly exchange data packets with the network card.

In the past, network packet analysis software was very expensive or specifically designed for profit. The emergence of Ethereal changed all of this. Under the protection of the GNUGPL general license, users can obtain the software and its source code for free and have the right to modify and customize its source code. Ethereal is currently one of the most widely used network packet analysis software in the world.

It is a powerful network protocol data packet analysis tool and an essential weapon for deeply learning various network protocols.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

13. Socket ToolsRecommended tools include IPoP and TCPUDPDbg.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

14. SSH Secure Shell ClientPowerful remote secure login tool. If you are developing Android or other Linux systems using a virtual machine, it is recommended to use this tool to avoid operating the Linux system in a graphical interface, reducing the load on the PC. Many engineers also use XShell, but I have not used it.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

15. MQTT Debugging ToolsFor the server side, Mosquitto is recommended, and for the client side, Paho is recommended.

Mosquitto is a broker that implements the MQTT (Message Queueing Telemetry Transport) protocol in C language. EMQ will not elaborate on the MQTT protocol in this article; readers can refer to EMQ’s introduction to the MQTT protocol. This article focuses on the usage of the Mosquitto client.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

Eclipse Paho: is an open-source client library provided by Eclipse for accessing MQTT servers.

Eclipse currently provides client libraries for ten different language platforms. For the Java platform, there are many open-source frameworks for interacting with MQTT servers, such as: Eclipse Paho Java, Xenqtt, MeQanTT, Fusesource mqtt-client, Moquette, etc…

However, based on usage frequency on GitHub, Eclipse Paho is undoubtedly mainstream. Personally, Eclipse Paho is very easy to integrate and use.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

16. MobaXterm

The ultimate remote connection tool, providing mainstream remote tools (SSH, X11, RDP, VNC, FTP, MOSH, …) and Unix commands (bash, ls, cat, sed, grep, awk, rsync, …).

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

17. SecureCRT

SecureCRT is a terminal emulation program that supports SSH (SSH1 and SSH2) and also supports Telnet and rlogin protocols. It is compact and easy to use; I have never switched.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

18. Total Commander File Manager

Total Commander is a file manager for the Windows platform that contains two side-by-side windows, allowing users to easily operate on “files or folders” in different locations, such as copying, moving, deleting, comparing, etc. It is much more convenient than Windows Explorer, greatly improving file operation efficiency, and is affectionately referred to as TC by many software enthusiasts.

It has many practical features, including quick file preview, quick search, multi-tab, file comparison, batch renaming, FTP client, and can be personalized through numerous plugins.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

19. Wireshark Network Packet Capture Software

Wireshark (formerly Ethereal) is a network packet analysis software.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

20. Everything File Search

Everything is the fastest file search software, capable of instantly searching for the files you need.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

21. Notepad++ Text Editor

Notepad++ is a free pure text editor that supports numerous programming languages, such as C++, C#, Java, and other mainstream programming languages; it also supports HTML, XML, ASP, Perl, Python, JavaScript, and other web/script languages.

Essential Tools for Efficient Embedded Development: A Comprehensive Overview

References:

[1] Osprey. “Introducing Several Useful Tools | Essential for Embedded Development”[2] Anonymous. “Common Tools for Embedded Development (Windows)”[3] Anonymous. “Introducing Several Embedded Development Tools, Perhaps They Can Be Useful!”[4] Guiyun Shijiu Shao. “Collection of Embedded Software Development Tools”[5] Baidu Encyclopedia related entries

-END-

Leave a Comment