Gömülü Sistem Tasarımında bir İşletim Sistemine ne zaman ihtiyacımız var?


22

PIC ve x86 işlemciler için birçok metal kod yazdım. Birisi bana nasıl ve ne zaman bir işletim sistemine ihtiyacım olduğunu söyleyebilir mi? Tersine, bir işletim sistemi ile veya işletim sistemi olmadan hangi uygulama veya durum ele alınabilir?


2
Çünkü bilmeniz gereken her şey okulda öğretilmez. Bir RTOS öğrenmeniz gerektiğini düşünüyorsanız, bir platform seçin ve öğrenin.
Scott Seidman

3
İşletim sisteminin gömülü kullanımına ilişkin soru geçerlidir. Ancak, EE.SE size "neden bana bunu okulda öğretmediler?" Konusunda size yardımcı olamaz. Bölüm. Bunu düzenlemek için bir özgürlük aldı.
Nick Alexeev


Üniversitede neden öğretilmediğini sormamın tek nedeni, üniversitede yapmış olabileceği hiçbir EE öğrencisiyle hiç karşılaşmamamdır. Bu yüzden bana öyle görünüyor ki, hiçbir üniversitede yapılmadı.
quantum231

@ quantum231 Üniversitemde yapıldı NTNU - Norveç.
CK

Yanıtlar:


23

Temel kural, ürün aşağıdakilerden birini veya birkaçını gerektiriyorsa bir işletim sistemini göz önünde bulundurmanız gerektiğidir: bir TCP / IP yığını (veya başka bir karmaşık ağ yığını), karmaşık bir GUI (belki de pencereler ve olaylar gibi GUI nesnelerine sahip bir tane) ) veya bir dosya sistemi.

Bazı metal kodlamalar yapmışsanız, muhtemelen süper döngü program mimarisine aşina olursunuz . Ürünün donanım yazılımı gereksinimleri, bakımı kolay (ve umarım biraz genişletilebilir) bir süper döngü ile uygulanacak kadar basitse, muhtemelen bir işletim sistemine ihtiyacınız yoktur.

Yazılım gereksinimleri arttıkça, süper döngü daha karmaşık hale gelir. Yazılım gereksinimleri çok fazla olduğunda, süper döngü çok karmaşık hale gelir veya sistemin gerçek zamanlı gereksinimlerini karşılayamazsa, başka bir mimariyi düşünmenin zamanı gelmiştir.

Bir RTOS mimarisi, yazılım gereksinimlerini görevlere bölmenizi sağlar. Düzgün yapılırsa, bu her görevin uygulanmasını kolaylaştırır. Ve görev önceliklendirmesi ile bir RTOS, gerçek zamanlı gereklilikleri yerine getirmeyi kolaylaştırabilir. Ancak bir RTOS her derde deva değil. Bir RTOS, genel sistem karmaşıklığını arttırır ve sizi yeni hata türlerine (kilitlenme gibi) açar. RTOS'a bir alternatif olarak, olay temelli durum makinesi mimarisini ( QP gibi ) düşünebilirsiniz .

Ürününüzde ağ bağlantısı, karmaşık bir GUI ve bir dosya sistemi varsa, VxWorks, Windows veya Linux gibi tam özellikli işletim sistemlerini göz önünde bulundurmanız gereken bir noktada olabilirsiniz. Tam özellikli işletim sistemleri, düşük seviye detaylar için sürücüleri içerecek ve uygulamanıza odaklanmanıza izin verecektir.


8

Bu gerçekten bir 'gömülü sistem' tanımınıza bağlıdır. Çıplak metal programlama olmasaydı, gömülü olmadığını (sorunuzu engeller) iddia edeceğini söyleyenler olabilir, ancak buna katılmıyorum - sadece bir işlevi yerine getirmek üzere tasarlanmış herhangi bir sistemin, yani sadece belirli bir 'uygulamayı' çalıştırmak için gömülü sistem olarak adlandırılabilir.

Bununla birlikte, tam gelişmiş bir işletim sisteminin hizmetlerinden yararlanabilecek durumları hayal etmek oldukça kolay olmalı. Örneğin, çalıştığım yerde, pencerelerin üzerinde çalışan bir enstrümantasyon tasarım takımının üstüne test cihazları yapan insanları bulmak oldukça yaygın. Bu sistemler test istasyonu yapılandırmasına önyüklenecek ve genel kullanımı (istasyonun bozulmasını önlemek için) kilitleyecek şekilde yapılandırılmışlardır ve bu nedenle muhtemelen gömülü sistemlerdir.

Ancak, yalnızca kullanıma hazır G / Ç modüllerini satın almak, rafa monte PC'ye takmak ve bir GUI'de bir konfigürasyon hazırlamak, bazılarına gömülü sistem tasarımı olarak nitelendirilemeyebilir . Biraz daha az kullanıma hazır bir durum için, süslü bir veri kaydı yapmak istediğiniz FPGA özel bir işlem denetleyicisini düşünün. Yumuşak çekirdekli bir işlemci sistemi (mevcut bir BSP ile) gömebilir ve bir ağ yığını çalıştırmak için (günlük kaydı ve NTP vb. İçin) gerçek bir linux çalıştırabilir ve diğer her şeyi mantıkta yapabilirsiniz.


7

(Çok belirsiz) kuralım, eğer birden fazla kontrol iş parçacığına ihtiyacınız varsa (bir protokol veya durum makinesi içeren en az bir cihaz artı yapacak başka bir şey söyleyin), o zaman bazı OSish yazılımı için hayatınızı kolaylaştıracaktır.


Bir RTOS ayarlamak belli miktarda iş gerektirir. switchTabanlı devlet makinelerini kullanma çabası bunu switchaşmadıkça , tabanlı makinelerin daha iyi olması uygundur. Ayrıca, hem 8x51 hem de TMS2000 platformlarında, basit bir yığın tabanlı kooperatif görev değiştirici uyguladım. Ne zaman geçileceğine karar verecek bir işletim sistemi mantığı yok - ne zaman bir "iş parçacığı" bir mola verebileceğini hissettikten sonra diğerine geçerdi. Eğer o diğer iş parçacığı henüz beklemekte olduğu bir şeyin henüz gerçekleşmemiş olduğunu görseydi, normal bir işletim sisteminin değişip değişmeyeceğine karar vermekten daha kısa sürede ilkine geri dönebilirdi .
supercat,

Bir donanım durumuna yanıt veren daha basit bir kesinti ile gerçek bir yazılım çok görevli "thread" (OS'ye yoğun bir şekilde işaret ediyor) arasında bir ayrım yapmaya değer olabilir.
Chris Stratton

1

Eski bir soru ama yine de yorum yapacağım.

Ağ yığınlarınız veya benzerleriniz olmasa bile, gömülü uygulamanızda yeterli işlem olduğu için bir görev zamanlayıcıya ihtiyaç duyduğunuz noktada bir RTOS düşünebilirsiniz. Basit bir zamanlayıcı tabanlı işbirlikçi çoklu görev zamanlayıcı yazmak o kadar da zor değil, ancak sıkışmış bir işlemin uygulamanın geri kalanını engellemeyeceğinden emin olmak ve böyle bir şeyin doğru olması biraz zaman alabilir. İşlemleri tamamlanmamışlarsa sıradaki işlemleri atmak için bir tür öneme sahip bir öncelik sistemi uygulamanız gerekir.

RTOS aynı zamanda size bellek koruması ve C kodundaki bazı genel gaff'ların izlenmesini çok kolaylaştıran benzer şeyler sunar, ancak basit mikrodenetleyiciler karmaşık bellek korumasını kaldıramayabilir. Örneğin MSP430, kod ve verileri yüksek düzeyde ayırmanıza olanak tanır, ancak iyi ayarlanmış bellek erişim kontrolü yoktur.


0

Bir işletim sistemi aslında donanım ile uygulama yazılımı arasındaki boşluğu kapatır (cihaz sürücüsü aracılığıyla). Başka bir deyişle, kodlayıcı karmaşıklığını azaltan programcı için nispeten yüksek seviyeli bir platform sağlar. Ayrıca, işletim sistemi, uygulamanın yürütülmesi için güçlü ve esnek bir platform sağlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.