Question: How Embedded Systems programming is different from normal programming? What are the technical challenges involved?
Answer: Even though embedded systems vary in various functionalities, the programming fundamentals remain almost the same. The challenges in embedded systems programming is because of the following reasons.
Embedded systems have very limited resources (in terms of memory, storage, processing power) compared to a general purpose computing device like PC.
Because of the less memory availability and requirement of faster response, embedded systems have Real Time Operating Systems (RTOS). These RTOS have flat memory model where all processes in the system run under the same memory space. This will lead to lot of memory corruption and inter process communication errors. Debugging these errors are really challenging.
Embedded systems have a pre-defined performance requirements and response time.
Since the embedded software will be running in a dedicated hardware, troubleshooting them requires strong system level understanding and debugging skills.
more about flat memory model here