There are various tools in use that are necessary to develop hardware and software solutions involving micro-controller systems. In a practical sense, they are tools that allow a developer to design and develop the code necessary to operate and achieve a specific purpose or function. Either as a free-standing application on a single board computer or as a simple programmable logic controller solution. Application code is normally put together within a developer’s tool chest also sometimes loosely understood as a toolchain.
Wikipedia provides a write up of what a toolchain is from a software development perspective. Outlined as a sequence of utilities that include compilers, libraries, debuggers, and so on to produce an application. While completely accurate, a respective toolchain for embedded systems usually turns out different because associated hardware requirements can vary based on the platform in use. Moreover, a toolchain can look quite a bit different due to separately unique operating systems, programming languages, and development requirements at a device, component, or circuit level. A toolchain set up for an ST Microcontroller could look entirely different from a Texas Instruments or Broadcom architecture.
Outlined here are typical tools that are common at an embedded system project or workstation. For professionals, makers, or hobbyists, these are common setups. Generally, from a system level, there are generally four categories and specific developer tools separated out when bringing together embedded projects of various types.
Integrated Development Environment (IDE)
This is an application that provides the framework by which code is written in a designated language for a specific purpose. Generally for embedded systems, Eclipse is commonly in use because of its support for languages generally more favorable to embedded systems. Visual Studio is also a viable choice, but there is a larger code and configuration and use overhead that accompanies VS IDE.
- Eclipse | Site | Download (Oxygen 64-bit)
An open-source development community with resources and tools to develop a project with a very large support base. - Visual Studio | Download
Microsoft’s developer community provides open-source support through its free Community developer IDE.
Languages
These are merely a few languages that are possible to implement for an embedded project. They are outlined here because they are highly common as tools among thousands of developers.
- Python | Download (Windows) | Download (Mac) | Download (Linux)
“Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high-level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many Unix variants, on the Mac, and on Windows 2000 and later.” Source: General Python FAQ. - C/C++
Compiler language normally installed during IDE set up. For example, when a developer installs Eclipse, or Visual Studio, C/C++ and Python extension support is selected to immediately start programming, test, and debug in the desired syntax or language. - Java
A general-purpose object-oriented programming language. Also normally an extension to an IDE installation. An often popular choice of developers of embedded systems.
Utilities
Single-board computers with firmware code embedded within a micro-controller, flash or memory, are typically supported by a Linux O/S. A Linux distribution is commonly specific for embedded systems such as Debian.
- Linux | Download (Debian)
A free version of Linux that supports application software to accomplish various tasks at a user-level. It comes with about 51,000 packages of free pre-compiled software to run on top of Linux to support what programs a developer might produce within a chosen programming language. The distribution is relatively light with a total size of about 2GB. - Notepad | Download (Notepad++)
A free source code editor and note pad application as a straight-forward text editor. Very useful as a scratchpad, or an easy-to-use program editor that doesn’t operate as an IDE. - PuTTY | Download
An SSH and telnet client developed for Windows. PuTTY is open-source software. A free and open-source terminal emulator, serial console, and network file transfer application. It supports several network protocols, including SCP, SSH, Telnet, rlogin, and raw socket connection to gain access to an SBC or controller device over a network.
Support
- GitHub | Site
Another software development platform, but largely used for source control and code sharing among teams, privately or publicly. Very useful to commit to a repository as code advances and development continues. Multiple concurrent code instances and versions are supported across projects for more organized and effective development.