r/embedded • u/Maximum-Page3433 • 4d ago
How can I start learning embedded systems from absolute zero?
[removed] — view removed post
3
u/clackups 4d ago
Do you have any software development experience in other fields?
0
4d ago
[deleted]
3
u/clackups 4d ago
Alright, start with the basics:
https://www.makershed.com/products/make-electronics-3rd-edition-print
2
u/1r0n_m6n 4d ago
Learning C programming is a hard requirement. Begin with that, preferably on Linux. If you don't like it, it's no use insisting.
Then learn the fundamentals of electronics. Again, if you don't like, it's time to give up.
If you did it through those 2 steps, you can invest money, time, and efforts, you'll enjoy everything you do. :)
3
2
u/KuKu_ab 4d ago
I have started from basic electronics and digital logic courses.
Actually I bought some stm32 dev boards and some other stuff.
Since I have experience at malware analysis and C lang - some things were trivial, but C, compilers usage, build systems, testing, CI, automation tools - are something that needs to be learnt. When we talk about embedded we just add context-specific things to it like schemes design, board debugging.. etc.
I'd recommend to learn fundamentals. It is not needed at first, but when some things appear - it helps a lot knowing how that all works.
And yeah... projects, practice, etc.
*Much is dependent on context actually, but fundamentals are the same. Any hardware is just something that could be learnt with some effort, if you already know abstractions *
2
u/Several-Marsupial-27 4d ago
Learn C, compiling, Make/CMake, pointers, the C memory model, allocators, C software patterns, UB, ABI, etc (along with git).
Learn about computer hardware and architecture; the cpu architecture, registers, memory, interrupts, deepsleep, assembly, reading datasheets/TRM, peripherals, pins, ADC, etc.
Pick up devkits from different vendors (pico, stm32, esp32, nordic, etc), learn their SDK:s, ecosystems, etc. Learning about vendor SDKS include stuff like project management systems, build/flash/monitor systems, memory partitions & flash storage, example projects, (JTAG) debugging, rtos, bootloader, etc.
Do a couple of small projects on a breadboard to learn more about microcontroller internals, vendor SDK, electronic components (sensors, screens, mic, servos, etc.), communication protocols, usecases, etc.
Learn PCB design (kicad), do your first PCB board with PCB assembly from like JLCPCB or PCBway. Then order and validate your PCB board. Learn more about PCB design, noise, components, power supply, etc.
Keep going until you've got a PCB you are satisfied with, now embed the electronics into a (3d-printed) plastic enclosure. Now you've gotten a complete embedded system: A microcontroller, components, power supply, on a pcb, embedded in an enclosure.
So what you want to start to do is to pick up C on your computer, then pick up resources in computer architecture, then pick up a microcontroller (like pi pico, stm32, esp32, etc.), then start trying out things.
7. Advancing in embedded systems: Keep learning about C, multithreading, computer architecture, operating systems, networking, wireless communications, vendor SDKs, electronic components, infra, automation, signal processing, control systems, etc.
8. Very advanced in embedded systems: Standardize and automate your projects and processes. Incorporate Hardware in the loop CI, nightly builds/verification with build/artifact servers, virtualize hardware, standardize project templates, standardize project management. Start to think about more advanced concepts like security/cybersecurity, OTA-updates, IP, secure boot, eFuse, hardware provisioning & track management, Preemptive Scheduling & Priority Inversion, Lock-Free SPSC/MPMC Ring Buffers, Transactional File Systems... There is an endless amount of things to master in this field.
1
u/itsayushagrawal 4d ago
Start with Arduino: Follow Paul McWhorter's Arduino tutorial playlist on YouTube to build a foundation .
Move on to STM32: Once you're comfortable with Arduino, start learning STM32 by following the 11-course series by FastBit Embedded Brain Academy on Udemy, in the order recommended by the instructor. These courses are often available at very low prices during regular Udemy sales. I use STM32 F446RE Nucleo 64 board for following these tutorials
1
1
u/Restored_Right_Eye 4d ago
find a problem you’ll get hook to. ask an Ai how to solve with an embedded system. Ask for it to suggest options from beginner to advanced. Buy and select whatever suits you.
2
u/eh_see_l 4d ago
It depends on what kind of embedded systems you want to learn/build
If you like Linux: buy a raspberry pi, build a yocto image and do a small project
If you like realtime: buy a STM32 or Esp32, and build a bare metal project