<Tech stack Writeup from @vikgomat for aspiring embedded product developers>
The tools platforms vary wildly on what type of project you're working on, microcontroller platform, what industry/application you're focussed on etc.
A collection of S/W stack/Tools that you need to learn/understand to develop an embedded product.
1. OS
a. (most preferred)FreeRTOS
freertos.org/
b. micrium OS
silabs.com/developers/micriu…
c. (increasingly popular)Embedded Linux (
ubuntu.com/blog/what-is-embe…), buildroot (
buildroot.org/) or Jenkins (
jenkins.io/doc/book/installi…)
2. Languages
a. C/Objective C
b. C
c. RUST
d. Python (for Embedded linux systems w/ python interpreter) or Writing Hardware In The Loop tests
e. shell scripting (auto running scripts in Embedded Linux)
f. some Javascript or Kotlin for supporting app development
3. Middleware
a. (up and coming!) ROS (Robotics Operating system, can be used for non robotic embedded products as well!)
micro.ros.org/
b. Docker
jfrog.com/knowledge-base/a-b…
c. CMake (
cmake.org/) for package management, compiler, debugger management etc.
d. Data Interchange formats
4. Unit Testing Platforms
a. CMocka (SUCKS!)
b. Gtest (Promising!)
c. VectorCAST (only if you need industrial/safety approvals)
d. Pytest
5. Communication Protocols
a. I2C
b. UART
c. SPI
d. I2S
e. Bluetooth/BLE
f. Wifi (vendor dependent)
e. Zigbee (Vendor dependent)
f. LTE (each LTE Vendor might have their own stack)
6. IDEs
a. VSCode
b. Keil Microvision
c. Other Vendor dependent platforms are normally Eclipse derived
d. If you're hardcore you can use VIM
e. Clion
f. QT creator
7. Circuit design
a. Just a general understanding of resistors, capacitors, pullups, pull downs, inductors etc
b. Altium
8. Debugging
a. Be familiar with GDB and how GNU debugging works,
b. Be comfortable with using JTAG or Jlink debugger (you'll get better with practice)
9. Miscellaneous (must read for beginners !)
a. Becoming comfortable working with microcontroller pin tools and clocks -- these are vendor dependent, but will overall have the same patterns (again buy a cheap dev board and start practising!) (Start Here :
www-mdp.eng.cam.ac.uk/web/li…)
b. Familiarity with Arduino and raspberry pi platforms -- Most serious application will likely not use them but its great if you're just starting out!!!
c. buy one of those arduino dev kits, with breadboards, LED's, buttons and sample arduino sketches that you can download and play with. This is MOST CRITICAL for students to get better at embedded development.
d. If you can source this book I'd very highly recommend this.
amazon.com/Design-Patterns-E…. Embedded products will tend to have repeating drivers, devices, and learning to design reusable modules is very very important.