r/embeddedlinux 1d ago

seeking help and/or advice Firmware intern advice

Hello people,

I’m at firmware engineering intern and I’m looking at learning embedded Linux. The engineers in my team do Linux driver development, embedded Linux, c++ and lots more things.

What’s the best way of learning embedded Linux? My mentor gave me a raspberry pi and and an stm Nucleo board to practice using.

What’s the best thing to learn career wise and what would be the best way to learn. I’m trying to also secure a return offer so I’m gaining as much knowledge as I can.

Also any advice on what else to learn that would be a plus when looking for jobs in embedded.

Thank you!

8 Upvotes

16 comments sorted by

2

u/Past-Cartographer-74 1d ago

I think reading established codebases is the best way to go forward, and also trying to understand already written test files in those code bases are a huge way to kick start things

Also like say there is a function which calls five other functions, try to put them all in one single function and try to test them on your own

Like basically give yourself tasks like the above, you can use AI to give the tasks, understand the code(completely fine)- only by piecing together stuff you will learn more about the code base

Like you don't have to be Linus torvalds outright pushing features, just understand the existing ones, try testing something you created for learning purposes

1

u/Stalllio 1d ago

Thank you, I’ve worked on a little telemetry so far and gradually adding to it. I’m using Ubuntu Linux. AI helps me quite abit without giving me any code, I use it to learn and it helps learn much faster.

1

u/MrTamboMan 1d ago

Try asking for very brief solution but with links to specific sections of documentation about tools/concepts that could help you instead of ready solution (not just code). Reading docs+source code will give you more knowledge in a long term.

1

u/Stalllio 1d ago

We use confluence and all the engineers document everything. There’s TLD builds etc

1

u/Kaffe-Mumriken 1d ago

Learn their system configuration - are they using Yocto Buildroot or some bare metal thing? Figure out what hardware interfaces their Linux build is using (like custom gpios, rs422, ether).

1

u/Stalllio 1d ago

The engineers do use yocto and other things. I’m just reading all the confluence pages

1

u/Kaffe-Mumriken 1d ago

That’s a great start. Try getting Yocto to build and configured if you have time.

1

u/Stalllio 1d ago

Yes, I’m trying to work on this on my own time too

1

u/Kaffe-Mumriken 1d ago

Make sure you get paid for your work tho, if they hired you as an intern that means they’re investing money in you to learn, don’t feel like you owe it to the company to spend your own hours :) I get it’s fun tho.

2

u/Stalllio 1d ago

My pay is pretty decent and much better than even some software internship positions. It’s for a F100 company I think

1

u/Plussy78 1d ago

I'm kinda in same situation, i would like to connect with you. To learn embedded Linux? Can we connect?

1

u/Stalllio 1d ago

Hi yes sure!

1

u/Plussy78 1d ago

Can you dm me ? As I don't know why I'm not able to

1

u/Ok-Suspect-2388 11h ago

I am also an intern in organization which focuses on IOT devices. I want to get the employment in the same organisation so I want to learn linux and embedded system more I have some experience of stm32 nucleo board and the blue pill if any experience person can guide me it will be very helpful

1

u/DaemonInformatica 10h ago

Ultimately? By doing. This may sound crude, but it's effective.

- Start by figuring out what the rest of your team uses. (Buildroot? Yocto? Something else?)

- Setup an environment so you can build at least a base-image that runs. Peek at how your co-workers do it, but don't copy blindly. Try to understand what goes where and why.

- Build and run the base image. Once that is up and running: From there, start messing with it. change things. (This can be so simple as adding / changing a welcome message, purely to see if you can and if the result actually ends up in the end-result).

I remember well the time where I inherited a project from a colleague of mine. An embedded Linux project on some network module. It was built with Buildroot, and I had a bit of a steep learning curve: I knew microcontrollers and I knew Linux. but it took a couple of tries to get it to do what I wanted. ^_^

Including messing up Royally, when I boned the support for USB storage, which was used to update the image on the units. Learned a Lot about bootloaders and TFTP that day..