Limbajul de programare C este cel mai potrivit pentru sistemele
embedded. Limbajele de programare precum C, C++, Java trebuie traduse in cod masina ca sa poata fi executate de procesor. Un identificator este o secventa de litere si numere. Primul caracter trebuie sa fie o litera(underscore_ este vazut ca si o litera). Compilatorul alocheaza memorie pentru toti indicatorii. Un identificator nu poate sa fie cuvant cheie din C. Pentru constantele de tip string un array de dimensiune apropriata este automat adaugat la final. O constanta de tip char nu se termina niciodata cu terminatia `\0`. Constantele simbol sunt definite cu directiva pre-procesata #define (ex: #define MAX 350). In momentul in care se declara o variabila, compilatorul verifica daca aceasta a fost sua nu declarata anterior si aloca o anumita memorie pentru aceasta. O variabila declarata in interiorul unei functii se numeste variabila interna, iar variabila declarata inafara unei functii se numeste variabila externa. Structurile sunt un grup d evariabile de tipuri diferite reunite sub aceleasi nume, ce pune la dispozitie utilizatorului un mod convenabil de pastrare a informatiilor legate intre ele. O uniune este o locatie de memorie care poate fi accesata de doua sau mai multe variabile de diferite tipuri in momente diferite. Valorile negative sunt interzise in campurile de biti. Valorile cu mai multi biti decat marimea standard al cuvantului poate sa duca la erori. Operatorii sunt simboluri utilizate pentru precizarea oparatiilor care trebuie executate asupra operanzilor. Un vector este folosit pentru a salva o colectie de variabile de acelasi tip. O variabila contine adresa unui obiect(variabila sau functie). Pointeri catre functie, este adresa functiei care poate fi adresata catre variabila pointerului. Majoritatea sistemelor embedded includ un fisier header care descriu locatia procesorului. Dezvoltarea embedded software: 1. Problem specification 2. Tool/Chip selection 3. Software plan 4. Device plan 5. Code/debug 6. Test 7. Integrate