Products > Programming

advice for getting into embedded firmware role

(1/2) > >>

Hi guys

I have been an self taught EE for a number of years. Keen to get into an embedded firmware role in the new year if I can. Anyone done this? Any suggestions??
Thanks team!

Are you looking at moving within the same company you work for or getting hired on somewhere / contracting work? Also, what type of embedded firmware? General purpose stuff on a SBC running Linux, higher power bare metal applications using a M series Cortex, or low power devices on tiny PICs or Atmels, or something totally different?

I did this. Being a software person for decades and having electronics as a hobby. I set a goal to learn everything involved in making a physical products. At every turn chose a job closer to design and actual physical manufacturing. I kept blogging about electronics and eventually got a firmware position.

How much programming experience do you have?  Not that it will matter because embedded is a different animal.  Hopefully you are at least proficient in C.

Then there is the matter of uC hardware and, more to the point, the datasheets.  You will need to truly understand portions of the datasheet and specifically the sections you plan to use.  Serial protocols (I2C, SPI, UART), timers, interrupts, PWM and all the other peripherals.

Yesterday I was commenting on this Instructable and how I thought is was a great tutorial on low level programming.  Forget the 'Arduino' part because that isn't used much.  Everything is done directly to the hardware.  Bit twiddling directly to the registers, that is embedded programming!

So, grab the ATmega 328P datasheet and start working through the project.  There's a lot of embedded education in one small project.  If you don't have an Arduino UNO, you should probably get one.

No, it's not a decent scope except for very limited applications but the relationship between the project goals, the physical hardware, the register settings and the overall program flow are well worth your time.

Next step up:  Get an ARM board, I would choose the mbed LPC1768 (because I have some) but any of the STM32F boards should work as well.  Implement FreeRTOS (it's ok to cheat and use a board that matches one of their examples).  Add in FATfs (FAT FileSystem) and work through file systems.  Given a console, you should be able to implement a workable CP/M like system with real-time capabilities.

Maybe you use DMA for the data transfer to and from an SD card.  Clearly there will be several concurrent tasks and you can add as many as you like.

Now you're starting to catch on to embedded programming.  Twiddle bits, RTOS, File System, Console, interrupts, timers, DMA - all that stuff.


[0] Message Index

[#] Next page

There was an error while thanking
Go to full version