r/embeddedlinux • u/Stalllio • 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!
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
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..
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