I wonder there are so many things to learn for an embedded systems developer. This field is rapidly changing. What to learn to keep oneself up to date? Generally this industry is segmented into two portions. One the people who which design advanced DLD systems. These usually work on FPGA based SoC designing. Their tools and skills may include learning an IDE like that of Xilinx. The other guys usually used MCUs and microprocessors (like me). They write the firmware for these device and (usually) design the PCB as well. My focus is on the second type of people as this relates to me better.
Here are the things which I think, are necessary to learn:
- Hands on experience of at least two MCU families. One on the higher end and the other on the lower end. The higher end may be the ARM architecture. The low-end party should be the one which has tiny-miny MCUs like PIC or 8051 or may be AVR. There are times when you don’t need to use the horse power of ARM, so you need a small companion for that.
- Good PCB design tool like Diptrace (please forgive if you don’t like it). The Altium designer is a complete design suit not just for a single developer but for a whole team to system design, PCB design, software development and mechanical assembly in a single unified tool. Some people still are in love with older tools like OrCAD. I just prefer Diptrace over OrCAD.
- At least 2 good RTOSs
- Embedded Linux. Well, you at least need to have know-how of Embedded MPUs like Cortex-M8/9. Linux seems to me, the future and it would be norm to use Linux in most of the designs.
The base board if often designed with maximum peripherals and IO options to be used in future applications. The common peripherals like Ethernet, USB, RS485; storage like flash, microSD and other options are populated. A common connector interface through headers is provided where the Processor board seats. 


