Apakah mungkin menjalankan perangkat lunak waktu nyata?

60

Saya tahu ini menjalankan Linux dan ada patch waktu nyata yang tersedia untuk Linux. Apakah tambalan itu berfungsi?

Adakah yang mencoba os waktu nyata lain di Raspberry Pi?

Idenya adalah untuk menggunakan papan untuk regulasi dan mengontrol pekerjaan yang waktu kritis.

Lars Pötter
sumber
2
Saya akan memikirkan satu-satunya alasan unik yang muncul di benak Anda mengapa Anda tidak dapat melakukannya jika solusi GPU tertutup itu menghalangi. Asalkan Anda dapat memutuskan untuk mengabaikan GPU sementara dalam tugas realtime Anda, saya akan berpikir ekstensi realtime dapat dibuat berfungsi.
Chris Stratton
7
Seluruh sistem pi raspberry tidak terbuka untuk Anda modifikasi; pertanyaannya adalah apakah bagian yang tidak (GPU) akan bersedia untuk tetap menyingkir saat Anda menjalankan tugas waktu nyata Anda, atau jika hal itu tak terhindarkan akan menuntut siklus bis untuk mengakses ram atau bahkan "perhatian" "Dari inti ARM dengan cara yang akan menggagalkan tujuan pemilihan waktu yang sulit.
Chris Stratton
4
Rupanya RISCOS sangat cocok untuk aplikasi waktu nyata tertentu dan itu port Raspberry Pi berjalan dengan baik. * 8 ')
Mark Booth
4
RISCOS bukan os waktu nyata (sesuai dengan tautan Wikipedia Anda) jadi bagaimana itu bisa membantu?
Lars Pötter
4
Patch CONFIG_PREEMPT_RT telah didemonstrasikan pada beberapa prosesor ARM yang menjalankan Linux. Mungkin ada beberapa masalah latensi, tetapi ini harus diukur berdasarkan urutan mikrodetik.
Terobosan

Jawaban:

16

Anda mungkin tertarik menjalankan Xenomai di RaspberryPi. Di sini Anda dapat menemukan tutorial tentang cara melakukan ini. Singkatnya, Xenomai adalah proyek yang menciptakan kernel Linux kustom (mereka menyediakan tambalan yang harus diterapkan ke sumber kernel) yang memungkinkannya untuk menjalankan kernel lain (inti Xenomai) yang merupakan realtime. Hal ini memungkinkan untuk menjalankan aplikasi Xenomai pada berbagai perangkat keras tanpa perlu menulis driver untuk mereka (karena Linux bekerja pada berbagai perangkat keras yang sangat luas). Hal ini memungkinkan penulisan aplikasi userspace RT menggunakan beberapa API RT berbeda yang tersedia.

Krzysztof Adamski
sumber
1
Frekuensi maksimum manakah yang dapat saya peroleh dengan alat ini? Saya tertarik untuk mengendalikan motor DC pada tingkat pembulatan 1 kHz
Nicolás Arias
19

Di kernel Linux, mengaktifkan PREEMPT_RTakan menyediakan latensi terbatas dan API waktu nyata. Selain mengkonfigurasi PREEMPT_RT, kebijakan SCHED_FIFOdan SCHED_RRjuga perlu dipilih. Dan aplikasi perlu mengatur parameter realtime dengan memanggil API yang sesuai atau dengan menggunakan utilitas yang sesuai.

Menurut pelatihan elektron bebas: Realtime di Linux Tertanam , PREEMPT_RT adalah proyek yang membawa kemampuan realtime ke dalam kernel. Ini telah dilipat sepenuhnya menjadi kernel 2.6.33 dan 3.0 Lihat dokumen Anda akan menemukan segalanya.

Pada dasarnya ada dua pendekatan untuk menghadirkan kemampuan realtime ke kernel Linux:

  • Ubah di dalam kernel, itu adalah PREEMPT_RTproyek.
  • Jalankan realtime bagian sisi-by-side dengan kernel normal dan di bawah kernel normal, ada tiga generasi: RTLinux, RTAI, dan Xenomai. ( Aedosseperti yang Aviodisebutkan di bawah?)

Sunting:

Jinghua
sumber
2
Selamat datang di Raspberry Pi, jawaban yang bagus! The RT PREEMPT patcholeh Ingo Molnar digunakan bersama dengan High Resolution Timers(HRT) dukungan, memungkinkan kernel untuk mencapai kemampuan hard-realtime . Saat ini, dukungannya mencapai 3.4.11 kernel , dan "kabar baik" adalah bahwa patch "menyusut", sehingga tampaknya sebagian besar dimasukkan dalam sumber kernel utama. Anda dapat menemukan tutorial terbaik untuk menerapkan dan menggunakannya di sini .
Avio
1
Eh, dan jangan lupa mengutip Adeos di antara alternatif untuk memberikan dukungan real-time yang sulit di Linux.
Avio
2
Saya harus menyebutkan bahwa membuat PREEMPT_RT bekerja dengan kernel Raspberry Pi bukanlah masalah yang sulit, hanya menerapkan tambalan menghasilkan kernel yang tidak berfungsi. Juga, ada banyak driver baru di kernel Raspberry Pi, dan driver-driver ini belum diuji dengan PREEMPT_RT, juga tidak dibersihkan dari terlalu lama memblokir tidur. Ini sangat banyak pekerjaan yang sedang berlangsung, yaitu.
Nakedible
2
Adakah pembaruan yang satu ini? Apakah driver sekarang cukup stabil untuk menggunakan patch kernel ini? Saya suka tutorial yang berfungsi untuk orang-orang yang belum menyusun kernel.
Fabb
@fabb: Bahkan setelah bertahun-tahun masih akan ada driver yang memiliki gangguan terhadap persyaratan rt. Anda hanya akan mengetahuinya dengan menjalankannya. Ngomong-ngomong, baru-baru ini saya melihat beberapa kesalahan jaringan pernah meningkatkan prioritas beberapa aplikasi ruang pengguna, yang tidak terduga. Padahal semua situasi seperti ini sangat konfigurasi dan spesifik aplikasi.
minghua
6

Wyolum mas aLaMode (saya menyebutnya Almond Pi) agar pas di atas Pi dengan cara yang bisa ditumpuk. Ini memiliki jam waktu nyata, menggunakan aTiny 328, umpan dari GPIO Real UART / power dan dapat di-flash dengan berbagai cara. Ini bagus karena Pi dapat melakukan apa pun yang Anda inginkan, server web / database sementara Arduino berjalan secara real-time interrupt.

masukkan deskripsi gambar di sini

Piotr Kula
sumber
1
Mungkin agak tidak praktis untuk menjalankan 2 mikrokontroler, tetapi di sisi lain hal ini memastikan operasi waktu nyata jika pendekatan lain tidak cukup cepat.
Fabb
1
Adakah petunjuk tentang bagaimana RPi akan berkomunikasi dengan bersih dengan μC lainnya tanpa memperlambat loop kontrolnya?
Fabb
1
Ya, tetapi µC harus melakukan polling terhadap UART. Saya kira, agar tidak membiarkan UART menyela menunda pengatur waktu loop kontrol. Akankah saya melakukan polling pada UART pada awal loop kontrol dan memastikan saya tidak membaca banyak byte sehingga tidak butuh waktu terlalu lama? Atau bisakah buffer UART meluap terlalu mudah seperti itu? Atau apakah frekuensi loop kontrol jauh lebih tinggi daripada kecepatan UART sehingga jika membaca satu byte setiap loop, jika lebih, akan lebih dari cukup?
Fabb
1
Saran yang bagus. BTW Raspberry Pi Alamode sudah menjadi permainan kata-kata. Mode Ala adalah ketika Anda menaruh es krim di atas pai.
Dan
1
Benarkah ? Hehe. Saya bertanya-tanya apa artinya itu. Masuk akal sekarang :)
Piotr Kula
2

Solusi terbaik yang saya lihat adalah X10i - Papan Kontrol Waktu Nyata untuk Raspberry Pi dari Heber.

X10i adalah pengontrol waktu-nyata universal, kuat, dan aman yang memungkinkan kendali atas banyak input / output, melalui USB, dari sistem PC apa pun. Heber sekarang menawarkan dukungan dalam banyak bahasa pemrograman untuk membuatnya lebih mudah bagi programmer, penemu dan pengembang untuk terhubung dengan dunia luar dari PC mereka.

Tautan di atas menyediakan dokumentasi yang sangat baik dan luas dan mereka mencoba dan terus memperbarui driver dengan versi terbaru Debian untuk Pi.

Jivings
sumber
JADI, Anda membutuhkan konektor pita dari Pi untuk ini? Tidak dapat menemukan foto orang yang disewa tetapi terlihat sangat besar. Ada banyak contoh sehingga saya rasa itu bagus. +1
Piotr Kula
Saya tidak bisa mengatakan saya sudah menggunakannya, tapi saya harapkan begitu, meskipun saya ingat orang itu menggunakan antarmuka USB di demo. Tapi ini cukup besar.
Jivings
1

Berikut ini adalah sebuah artikel (diterjemahkan Perancis oleh google translate) tentang Raspberry Pi berjalan dengan Xenomai .

Pierre-Jean Coudert
sumber
5
Hai yang disana. Biasanya kami tidak menyarankan jawaban yang hanya berupa tautan jika halaman yang ditautkan bergerak. Bisakah Anda meringkas informasi pada halaman itu dalam jawaban Anda? Anda kemudian dapat memasukkan tautan sebagai referensi. Terima kasih!
Jivings
1

RODOS adalah pilihan lain. Ini adalah proyek Open Source yang dikembangkan oleh German Aerospace Center dan tim serta mahasiswa Universitas Prof. Montenegro.

Ini menggunakan C ++, sepenuhnya ditulis dengan cara berorientasi objek dan mendukung ARM7, Atmel AVR, STM32 / Cortex-M3, Xilinx, Raspberry Pi :), ...

Saat ini digunakan di TET satelit dan di mesin LoTTo jika saya tidak salah.

Tentu saja saya lebih suka menjalankannya di atas Linux (apa yang mungkin) untuk memiliki yang terbaik dari kedua dunia - tetapi kemudian pertanyaan NYATA WAKTU tetap, karena saya tidak yakin apakah mungkin bahwa Linux dapat menyediakan API yang benar.

Untuk mendapatkan RODOS kita harus menulis pesan kepada Prof. Sergio Montenegro atau DLR (German Aerospace Center).

Radagast
sumber
1

selain linux, ada sistem operasi waktu nyata. cukup populer di antara yang bersumber terbuka adalah ChibiOS / RT:

adalah RTOS yang lengkap, portabel, sumber terbuka, kompak dan sangat cepat (Sistem Operasi Real-Time)

pengantar singkat ada di http://chibios.org/dokuwiki/doku.php?id=chibios:documents:introduction . berbeda dari linux Anda mungkin juga suka bacaan

Nah, ada beberapa pilihan desain yang harus dijelaskan dan berkontribusi untuk membuat ChibiOS / RT desain yang aneh. Tidak ada yang benar-benar baru dalam dirinya tetapi keseluruhannya menarik.

atau tidak. jika Anda menyukainya - bereksperimen dengan pi mungkin sepadan dengan pengalaman di https://github.com/steve-bate/ChibiOS-RPi :

Garpu ChibiOS untuk eksperimen Raspberry PI.

penulis menambahkan panduan yang bagus di

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

secara pribadi, ketika datang ke rtos, bagi saya linux seperti membawa peralatan lintas-alpine untuk kebutuhan negara biasa. Anda mungkin tidak membutuhkannya. bahkan pi mungkin terlalu banyak. lihat http://forum.arduino.cc/index.php?topic=144715.0 untuk bobot lebih rendah :)

naik opelet
sumber