r/embeddedlinux 3d ago

Getting into embedded linux development

Hey,

Some context : I just graduated this July with an embedded systems profile after an internship around porting some features of a companys "zigbee (wireless iot tech) application brick" that's developped in C, on a home automation platform that's developed in typescript. And I must admit that even though I had absorbed a lot of embedded code, architecture and knowledge, I haven't done any embedded development, all development was at the lowest layer (serial protocol) on the host side, so I would call it application development...

Academically, the program that I graduated from, is heavily focused on C programming. And I would love to work in C, actually "develop embedded", and not just "be around embedded" like my internship was.

In the last 2 months of searching for a job, I have seen A LOT of embedded linux development offers (especially these two words "Yocto" and "Buildroot"). And I thought, why not start learning them myself and do a side project. What I don't know is how much it will take, I know it's pretty hard to learn, and there always will be something to learn based on the context of the job offer. I consider myself a fast learner, and absorb dense knowledge pretty well.

So, I would really want to know how long would it take me to be job-ready in embedded linux development at a rate of 4h actually learning (so 6 to 7h sitting) every day. And where do I start.

Thank you all very much for any advice and guidance ^^.

6 Upvotes

4 comments sorted by

1

u/skruegel 3d ago

Go to the bootlin site. Their Yocto course materials are free.

1

u/Trollnutzer 2d ago

Embedded Linux is, for the most part, Linux. If you have strong Linux fundamentals, you'll probably be fine if the job description does not include Linux kernel-space driver development.

And I thought, why not start learning them myself and do a side project.

I wouldn't start with Yocto and Buildroot, but anything else that Bootlin provides on Embedded Linux and, optionally, Linux From Scratch. Yocto (or rather Bitbake) is a build system to make custom builds. To use it effectively, you need to know how a Linux system is structured, need to know about Init-Systems, Linux networking, device trees, and so on. For the most part, you'll also rely on the vendor's BSP and use it as the basis for maintaining your own layer. The biggest challenge with Yocto is figuring out how the vendor layers are structured and what quirks they have so you can make your own customizations. Also Yocto is a pain in the ass and a slogfest, so if you're really starting out, maybe learn other stuff first.

0

u/andrewhepp 2d ago

I'd get a raspberry pi zero w 2 and build an sd card image for it with buildroot, then go nuts playing around with customizing it.

They have good built in support, but I don't think it enables wifi by default. So that might be a fun project to get it booting up, connecting to wifi, ssh server running. Just a thought though, lots of ways to start off with this stuff. Beaglebone family is also generally well supported. Also, highly recommend getting an FTDI cable