Gerçek zamanlı yazılım çalıştırmak mümkün mü?


60

Linux çalıştığını ve Linux için gerçek zamanlı yamalar olduğunu biliyorum. Bu yamalar işe yarar mı?

Ahududu Pi ile ilgili başka bir gerçek zamanlı os deneyen var mı?

Buradaki düşünce kurulu, zaman açısından kritik işleri düzenlemek ve kontrol etmek için kullanmaktır.


2
Kapalı GPU çözümü yolunda olsaydı, neden olamayacağınızı aklınıza gelen tek benzersiz nedenin bence olduğunu düşünürdüm. Gerçek zamanlı görevlerinizde GPU'yu görmezden gelmeye karar vermeniz koşuluyla, gerçek zamanlı uzantıların işe yarayabileceğini düşünüyorum.
Chris Stratton

7
Ahududu pi sisteminin tamamı değiştirmenize açık değildir; Asıl mesele, (GPU) olmayan parçanın, gerçek zamanlı görevlerinizi yürütürken yoldan uzak durmaya istekli olup olmadığı ya da bu, kaçınılmaz bir şekilde, ram erişimine ya da hatta "dikkatine erişmek için otobüs çevrimlerini talep edeceği" sorusudur. "ARM çekirdeğinden, zor zamanlama hedeflerini engelleyecek şekilde.
Chris Stratton

4
Görünüşe göre RISCOS belirli gerçek zamanlı uygulamalar için oldukça uygundur ve Raspberry Pi limanı iyi gidiyor. * 8 ')
Mark Booth,

4
RISCOS gerçek zamanlı bir işletim sistemi değildir (Wikipedia bağlantınıza göre) bu nasıl yardımcı olabilir?
Lars Pötter

4
CONFIG_PREEMPT_RT Yaması, Linux çalıştıran birçok ARM işlemcide gösterildi . Bazı gecikme sorunları olabilir, ancak bunlar mikrosaniye sırasına göre ölçülebilir olmalıdır.
Atılım

Yanıtlar:


16

RaspberryPi'de Xenomai'yi çalıştırmak ilginizi çekebilir . Burada bunun nasıl yapılacağı hakkında bir rehber bulabilirsiniz. Kısaca, Xenomai, gerçek bir tane olan başka bir çekirdeği (Xenomai çekirdeği) çalıştırmasını sağlayan özel Linux çekirdeği (çekirdek kaynaklarına uygulanması gereken yamaları sağlar) oluşturan bir projedir. Bu, Xenomai uygulamalarını, onlar için sürücü yazmaya gerek kalmadan geniş bir donanım yelpazesinde çalıştırmayı mümkün kılar (Linux çok geniş bir donanım yelpazesinde çalıştığından beri). Bu, RT kullanıcı alanı uygulamalarını mevcut birkaç farklı RT API kullanarak yazmanıza olanak sağlar.


1
Bu araçla alabileceğim maksimum frekans hangisidir? DC motorun 1 kHz'lik bir yuvarlama hızında kontrol edilmesiyle ilgileniyorum
Nicolás Arias

19

Linux çekirdeğinde, etkinleştirme PREEMPT_RTsınırlı gecikmeler ve gerçek zamanlı API'ler sağlayacaktır. Yapılandırmanın yanı sıra PREEMPT_RT, SCHED_FIFOve SCHED_RRpolitikaların da seçilmesi gerekir. Uygulamaların, uygun API'leri çağırarak veya uygun yardımcı programları kullanarak gerçek zamanlı parametreleri ayarlaması gerekir.

Göre serbest elektronlar eğitimi: Gömülü Linux Gerçek Zamanlı , PREEMPT_RT çekirdeğin içine gerçek zamanlı yeteneği getiren bir projeydi. 2.6.33 ve 3.0 çekirdek akışına tamamen katlandı. Her şeyi bulacağınız belgeye bakın.

Temel olarak Linux çekirdeğine gerçek zamanlı yetenek getirme konusunda iki yaklaşım olmuştur:

  • Çekirdeğin içindeki değiştir, bu PREEMPT_RTproje.
  • Normal bir çekirdek ile gerçek zamanlı parçası yan yana çalıştırın ve normal kernel altında, üç kuşak olmuştur: RTLinux, RTAI, ve Xenomai. ( AedosŞekilde Avioaşağıda söz?)

Düzenle:


2
Ahududu Pi'ye hoş geldiniz, güzel cevap! RT PREEMPT patchTarafından Ingo Molnar ile birlikte kullanılabilir High Resolution Timers(HRT) çekirdek elde edilmesine olanak destek sabit gerçek zamanlı yetenekleri. Şu anda, desteği 3.4.11 çekirdeklere ulaşıyor ve "iyi haber" yamanın "küçülmekte" olduğudur, bu yüzden çoğu ana akım çekirdek kaynaklarına dahil oluyor gibi görünüyor. Burada nasıl uygulanacağı ve kullanılacağı konusunda mükemmel bir rehber bulabilirsiniz .
Avio

1
Adeo'ları Linux'ta gerçek zamanlı destek sağlamak için alternatifler arasında belirtmeyi unutmayın .
Avio

2
Raspberry Pi çekirdeği ile PREEMPT_RT'yi çalıştırmanın başlı başına bir mesele olmadığını belirtmeliyim, sadece yamayı uygulamak çalışmayan bir çekirdek üretir. Ayrıca, Raspberry Pi çekirdeğinde pek çok yeni sürücü var ve bu sürücüler PREEMPT_RT ile test edilmedi ve aşırı uzun bloklama uykularından da kurtuldu. Bu devam eden bir çalışma, yani.
Nakedible

2
Bu konuda herhangi bir güncelleme var mı? Sürücüler şimdi bu çekirdek düzeltme ekini kullanmak için yeterince kararlı mı? Henüz bir çekirdeği derlememiş olan insanlar için çalışan bir ders çalışmayı çok isterim.
fabb,

@fabb: Yıllar sonra bile, rt gereksinimine karşı aksaklıkları olan sürücüler olacaktır. Sadece çalıştırarak öğreneceksiniz. Bu arada, son zamanlarda bazı kullanıcı sorunları uygulamalarının önceliklerini aşmış olan bir ağ arızası görüyorum, bu beklenmeyen bir durum. Tüm bu tür durumlar yüksek konfigürasyon ve uygulamaya özel olmasına rağmen.
minghua

6

Wyolum , Pi'nin üstüne istiflenebilir bir şekilde oturacak şekilde aLaMode'u (Ben Badem Pi olarak adlandırıyorum) mas . Gerçek zamanlı bir saati vardır, aTiny 328 kullanır, GPIO Real UART / güç besler ve çeşitli şekillerde parlatılabilir. Arduino gerçek zamanlı olarak çalışırken, Pi ne yaparsa yapsın, web sunucusu / veritabanını istediğini yapabilir.

görüntü tanımını buraya girin


1
2 mikrodenetleyicinin çalıştırılması biraz pratik görünmeyebilir, ancak öte yandan, eğer diğer yaklaşımlar yeterince hızlı değilse, bu gerçek zamanlı çalışmayı sağlar.
fabb,

1
RPi'nin kontrol döngüsünü yavaşlatmadan diğer µC ile nasıl temiz bir şekilde iletişim kuracağına dair herhangi bir ipucu var mı?
fabb,

1
Evet, fakat µC'nin, UART kesintilerinin kontrol döngüsü zamanlayıcısının kesilmesini ertelemesini engellemek için sanırım UART'ı yoklamak zorunda kalacaktı. Daha sonra kontrol döngüsünün başında UART'ı yoksaydı ve çok fazla bayt okumadığımdan emin olamayacağım mı? Veya UART tamponları bu şekilde kolayca taşabilir mi? Veya kontrol döngüsü frekansı, eğer varsa, her döngü için bir byte okuyacak kadar, UART hızından daha mı yüksek olur?
fabb

1
Güzel öneri. BTW Ahududu Pi Alamode zaten bir pun olduğunu. Ala modu, pastanın üzerine dondurma koymaktır.
Dan

1
Gerçekten mi ? Hehe. Bunun ne anlama geldiğini merak ettim. Şimdi mantıklı :)
Piotr Kula

2

Bunu gördüğüm en iyi çözüm, Heber'den Raspberry Pi'nin X10i - Gerçek Zamanlı Kontrol Kurulu .

X10i, herhangi bir PC sisteminden, USB üzerinden birden fazla giriş / çıkış üzerinde kontrol sağlayan evrensel, güçlü ve güvenli bir gerçek zamanlı kontrol cihazıdır. Heber şimdi programcıların, mucitlerin ve geliştiricilerin bilgisayarlarıyla dış dünyayla bağlantı kurmasını daha da kolaylaştırmak için birçok programlama dilinde destek sunuyor.

Yukarıdaki bağlantı mükemmel ve kapsamlı belgeler sunar ve sürücüleri en son Debian for Pi sürümüyle güncel tutarlar.


Yani Pi'den buna kadar bir şerit konektöre ihtiyacınız var? Bir şey işe fotoğrafını bulamıyorum ama gerçekten hantal görünüyor. Sanırım örneklerin bir kısmı var, sanırım bu iyi. +1
Piotr Kula,

Kullandığımı söyleyemem, ama beklerdim, ancak demoda bir USB arayüzü kullanan adamı hatırlıyor gibiyim. Evet olsa oldukça hantal.
Ocak'ta Jivings


1

RODOS, başka bir seçenektir. Alman Havacılık ve Uzay Merkezi ve Prof. Montenegro’nın Üniversite ekibi ve öğrencileri tarafından geliştirilen bir Açık Kaynak projesi.

C ++ kullanıyor, tamamen nesne yönelimli yazılmış ve ARM7, Atmel AVR, STM32 / Cortex-M3, Xilinx, Ahududu Pi :) destekli ...

Şu anda yanlış anlamadıysam TET uydusunda ve LoTTo makinelerinde kullanılıyor.

Elbette her iki dünyanın da en iyisine sahip olmak için onu Linux üzerinde çalıştırmayı tercih ediyorum (mümkün olan) - ama daha sonra GERÇEK ZAMANLI sorular hala devam ediyor, çünkü Linux'un doğru API'yi sağlamasının mümkün olup olmadığından emin değilim.

RODOS almak için, Prof. Sergio Montenegro ya da DLR'ye (Alman Havacılık ve Uzay Merkezi) bir mesaj yazması gerekiyor.


1

Linux dışında gerçek zamanlı işletim sistemleri var. Açık kaynaklı kaynaklar arasında oldukça popüler olan ChibiOS / RT:

Tamamen taşınabilir, açık kaynaklı, kompakt ve oldukça hızlı bir RTOS'tur (Gerçek Zamanlı İşletim Sistemi)

kısa bir giriş http://chibios.org/dokuwiki/doku.php?id=chibios:documents:introduction adresindedir . linux’dan farklı olmak, okumalarını da beğenebilirsiniz.

Peki, ChibiOS / RT'yi kendine özgü bir tasarım haline getirmek için açıklanması ve katkıda bulunması gereken bazı tasarım seçenekleri var. İçinde gerçekten yeni bir şey yok ama bütün ilginç.

ya da değil. beğenirseniz - pi üzerinde deney yapmak https://github.com/steve-bate/ChibiOS-RPi adresindeki deneyime değer olabilir :

Ahududu PI deneyi için ChibiOS çatal.

yazar, güzel bir rehber ekler

http://www.stevebate.net/chibios-rpi/GettingStarted.html

Şahsen, rtos söz konusu olduğunda, benim için linux sade ülke ihtiyaçları için alpin ekipman taşıma gibi. sadece ihtiyacınız olmayabilir. bir pi bile çok fazla olabilir. http://forum.arduino.cc/index.php?topic=144715.0 daha az ağırlık için göz atın :)


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.