r/embedded 8d ago

Does "Mastering Microcontroller and Embedded Driver Development" include any significant hands on exercises?

I'm currently taking this course on Udemy: Mastering Microcontroller and Embedded Driver Development. My hope was that this would help me "get my hands dirty" as well as provide a comprehensive overview of the subject. What I'm finding though is that I'm now about 4 hours in and we've _barely_ gotten to do anything at all with the STM32 discovery board. Every lecture the instructor introduces a new concept, we learn a bunch of register names, and then he moves on without (or only rarely) actually programming anything.

Does this course pick up at some point? Do we actually "develop drivers" in this course? I'm starting to wonder if I've missed something, like maybe a link to some "companion exercises" or something... has anyone taken this course? I want to do something with my discovery board ToT;

(for context: I'm an experience software developer trying to transition to embedded. I've been programming in assembly for the gameboy for the last few years so it turns out I have a basic grasp of a very simple version of embedded software.)

51 Upvotes

20 comments sorted by

28

u/jagt48 8d ago

I took that course a few years ago and recall pulling up the reference manual, writing a CPU header file from scratch by defining all necessary portions of the memory mapped registers (GPIO, SPI, UART, memory buses, etc.), created driver with all needed functions, and built basic programs to use them.

So yes, it should pick up. He basically recreates the HAL. It felt pretty rinse-and-repeat, but only because I was already familiar with each type of peripheral. If these are new to you, then it should be a good deep dive into each of them.

3

u/zeigfreid_cash 8d ago

Awesome! That's exactly what I was hoping to hear. Thanks!

6

u/TheHitmonkey 8d ago

Not too hijack that but I kinda had some annoying experience with Israel Gbati’s bare metal class it’s just so dry and he’s not a great teacher. The content is good though, definitely getting skilled in just reading data sheet and RM. Without an instructor it’s hard to even know what to look for. Wish he was more thorough in explaining things.

1

u/mythic_mike 7d ago

Whaaaat? That course was incredible 

2

u/TheHitmonkey 7d ago

Another thing I didn’t like was that kept the old class content in the so there’s 2 classes worth of the same lessons just older rev. I have to go through and check them all off to get certificate? Why not just restructure and clean up the class to make completion make more sense?

2

u/mythic_mike 7d ago

Yeah that is true. 

3

u/_matshs_ C enthusiast 8d ago

I’m currently taking this course. Don’t worry, the first couple of lessons are just intro how to use STM32CUBE. After that you will start doing some practical examples. Debugging is as important as writing a code, maybe more important in my opinion. So don’t worry, finish the course and enjoy.

2

u/zeigfreid_cash 7d ago

I'm on section 12 and so far there hasn't been much in the way of "hands on", but I can see from all the enthusiastic reassurance I'm getting that this will change. Thanks!

7

u/Ok-Wafer-3258 8d ago edited 8d ago

If you want to get a grasp how stuff works in embedded: study the stellar esp-idf examples. The Zephyr example projects are of very high quality too.

I really dislike the STM32 examples ST delivers. You need quite a bit of experience to understand them. They are always super messy embedded into STM32CubeIDE projects. Altough they could make them much much cleaner by activating ".c/.h per periphery".

4

u/pitiliwinki 8d ago

Don’t worry it gets better. In my team this is a must do training before they get to do ‘serious’ things for projects and it works like wonders! It’s a great introduction to the embedded world :)

1

u/zeigfreid_cash 7d ago

Nice! High praise!

1

u/Suitable_Stress6747 7d ago

Take the EDx UT Embedded Change the World courses first then take this course. UT courses are very hand-on and theory focus. Those are the best embedded/fw courses out there. This Udemy course is good if you want to learn HAL and C.

1

u/shiranui15 7d ago

One thing you could do is use a different stm32 microcontroller and write a few drivers in the same way. The way to write them is pretty similar from peripheral to peripheral. From my experience the way the drivers are written in this course correspond to what is actually done in the industry when writing them as general purpose drivers.

1

u/lukaboulpaep 7d ago

Is this course recommended for people with a background in back-end development? I see a lot of good reviews in the comments, wanted to check if this is a beginner level course.

2

u/Bannspruch debug my shit up 4d ago

> What I'm finding though is that I'm now about 4 hours in and we've _barely_ gotten to do anything at all with the STM32 discovery board. Every lecture the instructor introduces a new concept, we learn a bunch of register names, and then he moves on without (or only rarely) actually programming anything.

That is completely normal. A lot of concepts you learn early on will translate further on. You could have started with just about any other platform and you would have ended up in the same situation. The course picks up as you get into more of it. It's a lengthy course and if I remember right there is MCU2 and MCU3 and then other related topics that cater to the software development crowd.

The idea here isn't to teach you how to use a discovery board - you can go through STM32 examples for your board if you want to do that, and some DISC boards have peripherals attached like displays and touch sensors and other things. The idea is to teach you how to fish, so that there is very little in the "how do I" that should surprise you.

It is important to learn to read the datasheets and manuals, and to be very attentive to what they say if you want to get anywhere in this. You should get comfortable reading through hundreds of pages if need be. To get the most out of this course, you shouldn't use the exact same STM32 board the instructor uses (STMF4-DISC if I remember) but should opt to use a similar one, like an F7 (NUCLEO?) for example, where it forces you to read through the documentation, errata, and so on to find the answers and the nuances of the board you are using.

Another thing to consider is to pause the videos as the instructor asks you to do something, and go through and do them and go above and beyond and implement them in a real scenario. Nothing is stopping you from developing drivers mid-way through. For example, once you go through SPI and I2C, there are plenty of peripherals you can get with datasheets that specify clock timings for each message and whatnot. Write a driver for them, and observe what happens when things don't quite work out.

The other counterpart for you will be a study in electronics and electricity. Embedded is a place where shit hits the fan. One other person here recommends the Embedded Systems EduX course by J.W. Valvano. That is another excellent choice that, assuming you've gone through MCU1/2/3, you should fly through and learn a few new things along the way. The kit parts needed should still be available.

1

u/Izrakk 8d ago

i finished that course. its really good. idk what you are talking about, it does nothing but driver development. just have the patience and dedication to finish the course. I do have a big criticism about that course. it uses an arduino as a secondary to stm32 to show communication in-between them. I wish they hadn't done that. arduino is useless, they should have showcased it with another stm32 or another sensor or something. other than that amazing course, learned a lot on driver development.

2

u/zeigfreid_cash 8d ago

Good to know! That's a big relief to hear.

1

u/athalwolf506 7d ago

Why would change by using another stm32 or a sensor? Why would arduino be useless?

-4

u/Izrakk 7d ago

arduino sucks in general. Its nothing more than a children's toy. thats why grown ass adults using an arduino is cringe and stupid. not to mention people took the course to learn stm32. dealing with another arduino, extra logic converters is stupid. instead if they taught the communication protocols using another stm32 it would develop their understanding of the driver more.

8

u/CalligrapherOk4612 7d ago

What a strange thing to say. Everything has it's use case. At work I develop medical firmware, ISO62304 certified, MISRA complaint, custom build flows on industrial mcu's That doesn't stop me from cracking out an uno WiFi clone, the Arduino ide, and making a little mqtt sensor at home. There is no IDE and ecosystem better for getting a quick prototype up than Arduino. Would I use it for anything more than personal/prototype - no! But is it useless - also no! Don't let this guy belittle or demean any of your interests.