From u/CrazyProHacker on Reddit, an ICE student. He has 2 major projects under his hood, 1 currently WIP with the knowledge of Communication protocols (I2C, USART, UART), FreeRTOS, Esp-IDF, Embedded C and Avr Assembly.Â
Here are some suggestions for my circuital guys who want to get into embedded electronics as the pure vastness of this field confuses a lot of people and unfortunately many of them get stuck in their 'arduino' phase.
First of all you can check out this amazing roadmap in github that I stumbled upon in r/embedded:
The ideal way of going into it is Arduinos -> Avr Atmel Mcus (Atmel/Microchip studio) -> Esp32 (Esp IDF)/STM32
Arduino/Arduino IDE as it is, is just meant to be a very short introduction to the world of microcontrollers/microelectronics so don't dwell into it for too long. Arduinos aren't taken seriously anywhere in the industry due to their abstraction of features in Arduino ide and primarily being seen as learning tools rather than professional ones. After that, you can go inside the very heart of the Arduino boards which are the Avr Mcus.
AVR 8-bit Mcus like their Atmel series (Atmega16,32,328p) is a pretty old and underpowered mcu which is still used by many industries to this day. Not as powerful as the newer ones but they do their job perfectly well. Arduino Unos/Nanos are just custom boards running upon an 8-bit AVRAtmega328p wrapped inside Arduino IDE with highly abstracted (easy) functions that don't give you the knowledge and the control to know what's going inside the hood. In a field like this where you should have utmost control over what's actually inside you need to understand the workings of it and for that very reason you should learn the basic architecture of AVR Atmel mcus preferably in Asm/C. This way you manually control what goes in and out of registers, and set the very bits of various registers that control shit like PWM, ADC, DAC, Timers, Interrupts and communication protocols (I2C, SPI, USART, UART). A very good book to learn is The AVR Microcontroller and Embedded Sytems by Muhammad Ali Maizidi. The entirety of my AVR knowledge comes from this book and it does a fantastic job of explaining to you the tidbits of what's actually happening.
After you are done with the 8 bits you should dive slowly into the big boys. That being the Esp32/STM32. These microcontrollers, compared to our bygone AVR brothers, are tremendously powerful, have multiple cores, at times have wireless comms like Bluetooth and WiFi and are practically THE industry standard of current embedded development. It will seem a bit daunting at first but will eventually click together if you did your AVR basics well as the basic knowledge generally carries over from different microcontrollers. There are various resources for learning them but there are some amazing courses for both of these popular mcus. I haven't touched the stm32 till now but as far as I have heard - https://www.udemy.com/course/embedded-systems-bare-metal-programming/ is an amazing course to get the fundamentals of stm32 correct using bare metal programming. The course I used for learning the esp32 was - https://www.udemy.com/course/iot-application-development-with-the-esp32-using-the-esp-idf/ but beware you should have a solid base in C, knowing concepts that range from control structures to various data structures like arrays structs, etc. I also used the esp-idf's API reference from espressif themselves to get a hold of various functions. API Reference - ESP32 - ESP-IDF Programming Guide v5.2.2 documentation (espressif.com) + This is a very good website for idf centric tutorials too - ESP32 ESP-IDF Tutorials and Projects (esp32tutorials.com).
Side by side you should also have a very solid grasp of C (almost 80-90% of embedded development is done in C) and a few platform-specific assembly languages (not important but a lot of people appreciate bare-metal experience).
You should also learn RTOS'es like FreeRTOS and Zephyr after you are done with AVR. And for the love of god, learn to read datasheets. You will encounter them a lot throughout your journey and unfortunately, you cannot escape them. Love them or hate them, they are gonna be there and in a lot of cases will save you out of situations you didn't think were possible with your board as they are a treasure chest of incredibly useful data.
You should also remember that this is a very rewarding field that will reward you for your experience. Yes. Experience is THE king here so please for the love of god WHATEVER you learn make a project on it. The more you have the more you will stand out. Understand what your project does, how it does and why it does a particular thing. Don't just blatantly copy code from the internet without knowing what the code does at all. It would defeat the entire purpose of making the project.
And finally, this is a very vast field. Whatever I have said here only captures the essence of one pretty common faucet of this field. There are various other architectures like PICs and TI's products that I have never even touched and then there are various areas you can explore in here like embedded linux, fpgas, etc. So don't get overwhelmed by the vastness. Embrace it. Learn what you want to learn and what helps you in your use case (projects) because then only then you'll be the best at what you are doing.
Hope it helps you all!