I think a good starting point for embedded software would be to develop some test projects within the constraints of easily-accessible hardware. You could buy an inexpensive Arduino microcontroller. Many entry models have around 32KB of flash memory, and to do anything interesting you have to think very economically about your code's footprint. That also has a side benefit of teaching you about basic electronics. The Arduino has its own programming language and editor.You could also purchase a Pebble Smartwatch (or something similar). Apps are limited to 24KB of binary executable code with 96KB of accompanying resources. Pebble apps are written in C.
I think a good starting point for embedded software would be to develop some test projects within the constraints of easily-accessible hardware. You could buy an inexpensive Arduino microcontroller. Many entry models have around 32KB of flash memory, and to do anything interesting you have to think very economically about your code's footprint. That also has a side benefit of teaching you about basic electronics. The Arduino has its own programming language and editor.You could also purchase a Pebble Smartwatch (or something similar). Apps are limited to 24KB of binary executable code with 96KB of accompanying resources. Pebble apps are written in C.