Programming for Devices
I'm not sure if this is the right board, but here it goes. I've programming for a while in C++, although i'm no expert, i'm starting to wonder how programs stored in computer chips installed in appliances are created. I would like to start doing this as a career, and I need a preview before I go any further.
"devices" are generally called "Embedded computers", and the storage is generally ROM or FLASH memory (FLASH is the same type of memory that is used for USB sticks and CF/SD memory cards for digital cameras and such).
The actual "stuff" stored in the memory varies - in simple systems (say a washing machine or microwave) the entire code to run the system is stored as one ROM-image that is started when the processor is powered up. If there is any persistent data, such as settings, then it's stored in specific locations in the flash or in battery backed NVRAM.
In advanced systems, such as mobile phones and iPod's, you'd have a file-system, and applications may be stored in the file-system and loaded on demand (e.g. your SMS reader/writer app on the phone is a different executable to the "photo" viewer app). In this case, there isn't that much difference between how a PC works and how the embedded system works - it's just using slightly different (smaller) components.
There are of course "intermediate" systems, such as a Sky+/Tivo box that has a decent amount of software. It is probably one large, albeit multitasking/threading, binary image that knows how to store TV programs on a disk.
That's quite interesting. What language is used mainly for the programs on these chips?