Bared metal MCU için, arka plan döngü artı zamanlayıcı kesme mimarisi ile ev yapımı kodla karşılaştırıldığında, önleyici olmayan bir işletim sisteminin faydaları nelerdir? Bu avantajlar arasında, bir projenin arka plan döngü mimarisiyle ev yapımı kod kullanmak yerine önleyici olmayan bir işletim sistemini benimsemesi için yeterince çekici olan nedir?
.
Soruya Açıklama:
Bütün bunların soruma cevap verdiğini gerçekten takdir ediyorum. Cevabın neredeyse orada olduğunu hissediyorum. Bu açıklamayı kendi düşüncemi gösteren ve soruyu daraltmaya veya daha kesin hale getirmeye yardımcı olabilecek soruma buraya ekliyorum.
Yapmaya çalıştığım şey, genel olarak bir proje için en uygun RTOS'un nasıl seçileceğini anlamak.
Bunu başarmak için, temel kavramların daha iyi anlaşılması ve farklı RTOS türlerinden ve ilgili fiyattan en cazip faydalar yardımcı olacaktır, çünkü tüm uygulamalar için en iyi RTOS yoktur.
Birkaç yıl önce işletim sistemi hakkında kitaplar okudum ama artık yanımda değilim. Sorumu buraya göndermeden önce internette arama yaptım ve bu bilginin en yararlı olduğunu gördüm: http://www.ustudy.in/node/5456 .
Farklı RTOS'un web sitesindeki tanıtımlar, önleyici zamanlama ve önleyici olmayan zamanlamayı karşılaştıran makaleler vb.Gibi diğer birçok yararlı bilgi vardır.
Ancak, preemptif olmayan bir RTOS seçildiğinde ve daha iyi olduğunda sadece zamanlayıcı kesme ve arka plan döngüsünü kullanarak kendi kodunuzu yazdığınız herhangi bir konu bulamadım.
Kendi cevaplarımdan eminim ama onlardan yeterince memnun değilim.
Özellikle endüstri pratiğinde olmak üzere, daha deneyimli insanlardan gelen cevabı veya görüşü gerçekten bilmek istiyorum.
Şimdiye kadar anladığım kadarıyla:
bir işletim sistemi kullanın ya da kullanmayın, belirli tür zamanlama kodları her zaman gereklidir, hatta aşağıdaki gibi kod biçimindedir:
in the timer interrupt which occurs every 10ms
if(it's 10ms)
{
call function A / execute task A;
}
if(it's 50ms)
{
call function B / execute task B;
}
Avantaj 1:
Önleyici olmayan bir işletim sistemi, programlama kodu için yolu / programlama stilini belirler, böylece mühendisler daha önce aynı projede olmasalar bile aynı görünümü paylaşabilirler. Daha sonra konsept görevi hakkında aynı görüşle, mühendisler farklı görevler üzerinde çalışabilir ve bunları test edebilir, mümkün olduğunca bağımsız olarak profil oluşturabilir.
Ama bundan gerçekten ne kadar kazanabiliriz? Mühendisler aynı projede çalışıyorsa, önleyici olmayan bir işletim sistemi kullanmadan aynı görüşü paylaşmanın yolunu bulabilirler.
Bir mühendis başka bir projeden veya şirketten geliyorsa, işletim sistemini daha önce biliyorsa fayda elde edecektir. Ama eğer yapmadıysa, o zaman, yeni bir işletim sistemi veya yeni bir kod parçası öğrenmesi için büyük bir fark yaratmıyor gibi görünüyor.
Avantaj 2:
OS kodu iyi test edilmişse, hata ayıklamadan zaman kazandırır. Bu gerçekten iyi bir fayda.
Ancak uygulamanın sadece yaklaşık 5 görevi varsa, zamanlayıcı kesme ve arka plan döngüsünü kullanarak kendi kodunuzu yazmanın gerçekten dağınık olmadığını düşünüyorum.
Burada önleyici olmayan bir işletim sistemi, önleyici olmayan bir zamanlayıcıya sahip ticari / serbest / eski bir işletim sistemine atıfta bulunur.
Bu soruyu gönderdiğimde, esas olarak aşağıdaki gibi bazı işletim sistemlerini düşünüyorum:
(1) KISS Çekirdeği (Küçük Önleyici Olmayan RTOS - web sitesi tarafından talep edildi)
http://www.frontiernet.net/~rhode/kisskern.html
(2) uSmartX (hafif RTOS - web sitesi tarafından talep edildi)
(3) FreeRTOS (Önleyici bir RTOS, ancak anladığım kadarıyla, önleyici olmayan bir RTOS olarak da yapılandırılabilir)
(4) uC / OS (FreeRTOS'a benzer)
(5 ) bazı şirketlerde eski işletim sistemi / zamanlayıcı kodu (genellikle şirket tarafından dahili olarak yapılır ve korunur)
(Yeni StackOverflow hesabındaki sınırlama nedeniyle daha fazla bağlantı eklenemez)
Anladığım kadarıyla, önleyici olmayan bir işletim sistemi bu kodların bir koleksiyonudur:
(1) önleyici olmayan strateji kullanan bir zamanlayıcı.
(2) görevler arası iletişim, muteks, senkronizasyon ve zaman kontrolü için olanaklar.
(3) bellek yönetimi.
(4) diğer yararlı tesisler / Dosya Sistemi, ağ yığını, GUI vb gibi kütüphaneler (freertos ve uC / OS bu sağlar, ama emin zamanlayıcı olmayan önleyici olarak yapılandırılmış hala iş eğer değilim)
Bazı onlar her zaman orada değildir. Ancak zamanlayıcı bir zorunluluktur.