I wouls like to know the difference between Embedded C & conventional C languages.
It's not about the language - it's about how you apply the language!
"Embedded" covers a huge spectrum of systems from the tiniest 4-bitter to "embedded" PCs - so clearly there is no clear-and-simple distinction between "embedded" and "non" embedded!
Typically, when people think of "embedded" systems in a context like this one, they're thinking of (relatively) small, microcontroller systems running on dedicated hardware specifically designed for a single task.
Thus typical distinguishing features of "embedded" systems tend to be:
* (relatively) resource constrained;
* primarily concerned with interacting with hardware, rather than human users;
* because there is no human user, has to be "autonomous"; eg, can't just display an "OK/Retry/Ignore" message if a problem occurs...!
* the application starts when the system starts, and never ends until the system stops - there is no user to "run" the application, it does not "finish", and there is nothing to "return" to if it were to "finish".
A normal PC may often be rebooted every day, or maybe every week.
An embedded system may be rebooted once/power failure if mains-driven. or once/battery replacement (wrist watch). This means that embedded software (and hardware) must be very much more robust than "normal" software/hardware. You nurmally make use of hardware and software watchdog features to constantly monitor the operation.
You have brownout detectors in the hardware (externally or built into the processor) to stop the processor if the voltage drops below a safe level.
You normally try to preallocate memory on program startup, to avoid problems with memory leaks or memory fragmentation.
More time is spent on automatic regression testing or automatic test tools that analyzes the program flow sequences.
You might decide to limit the software constructs allowed in the software - i.e. decide that all code should be MISRA-compliant - since an uncaught bug can cost significantly more to correct than just uploading a new version to a web page and let people download it.
ISO/IEC JTC1 SC22 WG14 N1169
Programming languages - C - Extensions to support embedded processors
www.open-std.org/.../n1169.pdf