|
|
|
Ask HN: How to start learning embedded systems?
|
|
13 points
by adipandas
1802 days ago
|
|
I am interested to dive into embedded systems. I am proficient in C++ and python. I am seeking some advice for best path to take for learning embedded systems.
Thank you for any advice (in advance). |
|
Arduino with C++ appears compatible with your experience. But you might find the edit, compile, download, debug cycle rather tedious.
ESP8266/ESP32 with microPython provides REPL so is faster for experimentation and learning. For many projects it might sufficient.
RaspberryPi uses the SDcard like a "traditional" file system. Repeatedly losing / switching-off power without doing a shutdown has destroyed several cards for me. Besides, Real-time control is simply not really feasible. I agree with @bigiain, using Arduino with RaspberryPi is often a better approach. But it does require more development and debugging.
MCP23008 I/O expanders are VERY useful. Seriously recommended with ESP32 and RaspberryPi when you run out of pins.
All of the above are good for learning and small volume products.
Industrial systems tend to use ruggedized SBCs and RTOS. Linux is too bloated and non-deterministic for most real-time applications.
Large volume products are more likely to be designed from the ground-up using individual microcontrollers and support ICs. At this level you will need experience with assembly language, etc. The development cycles also often use the silicon vendor's tools.
IMHO RISC-V is going to become widely used. It is already available as a microcontroller ISA and some low-end Linux boards. If you are focused on learning, then I wouldn't invest too much effort into low-level architecture issues with ARM based SoCs. Of course, if you get to work with them professionally, then that is a very different proposition.