Gömülü yazılım çok farklı.
Bir masaüstü uygulamasında, soyutlamalar ve kütüphaneler size çok fazla geliştirme süresi kazandırır. Bir soruna başka bir çift megabayt veya gigabayt RAM veya bazı 2 + GHz 64 bit CPU çekirdeği atma lüksüne sahipsiniz ve başka biri (kullanıcılar) bu donanım için ödeme yapıyor. Uygulamanın hangi sistemlerde çalışacağını bilemeyebilirsiniz.
Gömülü bir projede kaynaklar genellikle çok sınırlıdır. Çalıştığım bir projede (PIC 17X serisi işlemciler) donanımın 2Kwords program belleği, 8 seviye (donanım içi) yığını ve 192 bayt (<0.2kB) RAM vardı. Farklı G / Ç pinleri farklı özelliklere sahipti ve donanımı, donanım kayıtlarına yazarak gerektiği gibi yapılandırdınız. Hata ayıklama bir osiloskop ve mantık analizörü içerir.
Gömülü olarak, soyutlamalar çoğu zaman engel olur ve sahip olmadığınız kaynakları yönetir (ve maliyetlendirir). Örneğin, çoğu gömülü sistemde dosya sistemi yoktur. Mikrodalga fırınlar gömülü sistemlerdir. Araba motor kontrolörleri. Bazı elektrikli diş fırçaları. Bazı gürültü önleyici kulaklıklar.
Gömülü sistemler geliştirmede benim için çok önemli bir faktör, kodun talimatlar, kaynaklar, bellek ve yürütme süresi açısından ne anlama geldiğini bilmek ve kontrol etmektir. Genellikle talimatlar dizisinin tam sırası, örneğin donanım arabirimi dalga formları için zamanlama.
Soyutlamalar ve sahne arkası 'büyü' (örneğin bir çöp toplayıcı) masaüstü uygulamaları için mükemmeldir. Çöp toplayıcılar, bellek dinamik olarak ayrılabiliyorsa, bellek sızıntılarını takip etmek için size çok fazla zaman kazandırır.
Bununla birlikte, gerçek zamanlı gömülü dünyada, şeylerin ne kadar uzun sürdüğünü, bazen nanosaniyeye kadar düştüğünü bilmemiz ve kontrol etmemiz gerekir ve bir başka çift meg RAM veya daha hızlı bir CPU'yu bir soruna atamayız. Basit bir örnek: görev döngüsünü kontrol ederek LED'lerin yazılım karartma yaparken (CPU sadece LED'lerin açma / kapama kontrolüne sahipti), işlemcinin sönmesi ve örneğin 100 ms boyunca çöp toplama işlemi yapması TAMAM değildir. parlak yanıp sönüyor veya dışarı çıkıyor.
Daha varsayımsal bir örnek, bujileri doğrudan ateşleyen bir motor kontrolörüdür. Bu CPU kapanır ve 50ms boyunca çöp toplama yaparsa, motor bir an için keser veya yanlış krank mili konumunda ateş eder, motoru potansiyel olarak durdurur (geçerken?) Veya mekanik olarak zarar verir. Birini öldürebilirsin.