Gömülü sistem programlama (30 yılı aşkın bir süredir meşgul olduğum), diğer tüm yazılım geliştirme türlerinden oldukça farklı bir zihniyet gerektirir. Hesaplama gücü aralığı, 30 kuruşa mal olan 8 bitlik mikrodenetleyicilerden Linux veya başka bir ortak işletim sistemi çalıştıran 32 bitlik mikroişlemcilere kadar geniş bir yelpazede değişir. Şu anda bu ölçeğin iki ucunda da projeler yapıyorum. En küçük mikrolar üzerindeki kod belleği, sadece birkaç yüz bayt RAM ile sadece birkaç KB olabilir. Miktarı 3 dolar olan orta menzilli 16 bitlik bir mikro 256KB program depolama alanına ve 16KB RAM'e sahip olabilir.
Sınırlı bellek kaynaklarının yanı sıra, gömülü programlamanın diğer yazılım geliştirme alanlarından farklı olan yönlerinden biri, programlayıcının genellikle donanımla doğrudan kayıt düzeyinde - mikro kendisinde veya bağlı bir çevre biriminde - uğraşmasıdır. mikro, UART, SPI veya I2C gibi seri veriyolları aracılığıyla. Bu nedenle, düşük uçlu gömülü mikrolar genellikle C veya montaj dilinde programlanır.
Gömülü sistemler genellikle gerçek zamanlı olaylarla ilgilenir, bu nedenle gömülü ürün yazılımı programı genellikle birçok kesme rutine ve küçük bir RTOS'a (gerçek zamanlı işletim sistemi) sahiptir. Bu tür sistemlerde hata ayıklamak için genellikle mikroya birkaç ayrı hat kullanarak donanım yardımı gerekir, böylece kesme noktaları bir bilgisayardan uzaktan ayarlanabilir. Mantık analizörleri, veriyolu analizörleri ve osiloskoplar bu sistemlerde hata ayıklamak için kullanılan ek araçlardır.
Gömülü geliştirmenin donanım yönleri nedeniyle, geliştiriciler genellikle bazı elektronik arka plana sahiptir. (EE ve CS'de derecelerim var).