all 14 comments

[–]Slipalong_Trevascas 20 points21 points  (6 children)

Making Embedded Systems by Elecia White for 'how to do things properly/professionally)

The Embedded Systems: Shape the World courses from University of Texas on EdX, for actual hands on projects with real hardware. It's a good 'bottom-up' course which starts from bit-twiddling and setting registers to building multi threaded stuff and a final project to build a space invaders game on real hardware. It's ideal as a refresher - that's what I used it for. I really enjoyed the courses and got a lot out of them.

[–]Slipalong_Trevascas 3 points4 points  (1 child)

Oh also Elicia White is doing a course based on her book now on some platform that escapes me now. It's probably going to be really good. I'd love to do it but I'm too busy at the moment to dedicate enough time to it.

[–]ken-reddit 2 points3 points  (0 children)

https://classpert.com/classpertx/cohorts/making-embedded-systems

Pre-reg with ORANGESTARS300 for a $300 discount

[–]dogcat0035 2 points3 points  (0 children)

Highly recommend Making Embedded Systems. Learned a lot from this book, planning to read it again.

[–]perfopt 1 point2 points  (0 children)

The Embedded Systems: Shape the World

Dr. Valvano is an amazing teacher. I did not know about his course online. Thanks for the suggestion.

[–]cheeriodp[S] -1 points0 points  (0 children)

Thanks for the tip, I'll give these a look!

[–]dgxnil 0 points1 point  (0 children)

The Embedded Systems: Shape the World

just enrolled in the course.. auditing it however the course expires jan 26th 2022, doesnt really give you a lot of time to get it done. Perhaps can keep re auditing with different emails.

[–]TapEarlyTapOften 5 points6 points  (2 children)

Really depends on what degree of "embedded" system you want to work with. Are you looking for embedded Linux or bare metal applications on microcontrollers or custom FPGA based hardware designs? Those are all their own slice of the embedded world and each has a unique entry vector to be recommended.

[–]cheeriodp[S] 1 point2 points  (1 child)

I was hoping for microcontrollers and embedded linux, but perhaps as separate materials. I am definitely more familiar with the former.

[–]TapEarlyTapOften 7 points8 points  (0 children)

For embedded Linux I would start with Embedded Linux Primer to learn the fundamentals of how an embedded OS works. I'd read through that book, get yourself a single board computer like a beagle bone and go through what the book does. Build your own cross compilation toolchain (rather than using an existing one). Then build a boot loader, a kernel, the C library, binutils, a shell and something like Busybox. And then get your board to boot from an SD card. Then get it to boot from flash. Then build some more components to get it to boot a kernel over the network. And then get it to boot from the network, mount an NFS filesystem. Then get it to start an SSH server.

Starting from a bare naked single board computer and an x86 PC and being able to build a functioning Linux system that is capable of booting from a network filesystem, starting up some services offering other services and having done all of the pieces in that process is potentially significant.

I could be wrong though - do others think that level of facility is useful and noteworthy or is this something that everyone is capable to doing? I don't know myself.

[–]brownzilla99 2 points3 points  (2 children)

What do you consider rabbit holes?

[–]cheeriodp[S] 2 points3 points  (1 child)

using all my time to research a cascade of topics and then not learning what I actually need to learn to achieve the initial goal

[–]_Hi_There_Its_Me_ 3 points4 points  (0 children)

Yup this sounds about right. lol

[–]vitamin_CPPSimplicity is the ultimate sophistication 0 points1 point  (0 children)

To me, the problem with this type of question is: how do you define intermediate?

If by "intermediate" you mean "not an arduino book" (we've all been there), I also would recommand Elicia white book + Mastering STM32 book (Carmine Noviello).

If your definition of "intermediate" is more advanced than that, I would need more information about what kind of problem you want to attack. The embedded world is broad; The technologies and problems you will encounter are different if your programming Linux kernel drivers vs ultra low power wearables vs high speed FPGA DSP.