Udemy is doing sales and promotions this week celebrating “2,000,000 learners” for their online courses. I am one of them and have actually finished one of my five courses. How much do you want to bet that I am in the minority for finishing even one class? Online learning is the future. Yet, getting the learning done is more than a little difficult. From Jack Ganssle’s Embedded Muse new letter number 254,
Experience is a critical part of the engineering education, one that’s pretty much impossible to impart in the environment of a university. You really don’t know much about programming till you’ve completely hosed a 10,000 line project, and you know little about hardware till you’ve designed, built, and somehow troubleshot a complex board. We’re still much like the blacksmith of old, who started his career as an apprentice, and who ends it working with apprentices, training them over the truth of a hot fire. Book learning is very important, but in the end we’re paid for what we can do.
What do you want to know?
What do you want to know about, and let’s be specific to the world of embedded systems. For now, let’s assume we can agree on the definition of an embedded system, what would be most useful?
Me? I have been looking around the Internet and reading forums, LinkedIn groups, EETimes and Embedded articles for a while. The questions are usually variations on “I am working on X, it is not working, how do I make X work?” Substitute your current project for X. OK, project X let’s call it. Imagine yourself working on project X. I know you have probably been there.
Project X is a small part of the huge project, the deadline is looming, and it is just not working. The time estimates were way off, the damn thing should have been just like last time, but it is not. Management is checking in twice a day. The suggestion of daily status calls has been made, because spending an hour updating status should get it done sooner.
The crazy part is, once you find the magic combination of bits that gets the hardware and software to finally work, project X is done, forgotten and now project Z is the biggest thing in your work life.
How can Embedded Apprentice help?
Working under time pressure, we need deep and on the spot technical information, not infomercials.
Me and the people who work for me need to have a deep dive background on the hardware. That intuitive understanding and a reasonable mental model of how things work.
What knowledge would be timeless and useful for the embedded developer? The things I keep teaching and am always learning about.
It is not one architecture, processor or software stack. After 20 plus years the things that don’t change are the interfaces. The way the pieces talk to each other. Now, I know how abstract all that sounds.
Let’s say project X is an analog to digital converter. There are two common ways to talk to an A/D converter, I2C or SPI.
Is project X the embedded web server? We will talk about Ethernet and networking, oh yes we will.
The parts change, they may be ARM or Intel, or even a MIPS, they all have I2C, UART, SPI and network ports. Sure, every one is different as is the software that runs them. Knowing how the communication works is the first step to mastering them all.
The full stack
What will be in a course?
First is the hardware, we will look at signals on the wire when we can.
Second the hardware that drives those signals. A few examples help us understand.
Third we will look at device drivers. The software that makes the hardware run. We will definitely look at Linux device drivers, and freeRTOS. The more proprietary RTOS are not easy to look at, but if you have a favorite, let me know.
Last we will look at the higher level application software. Project X may use an I2C flash part, but to the OS all those details are hidden. Let’s find out how to hide them.
Post a comment. Would that be interesting and useful?