Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Kerne für Echtzeitberechnungen freigeben (Raspberry Pi)
- Ersteller Hoeze
- Erstellt am
helionaut
Commander
- Registriert
- Jan. 2011
- Beiträge
- 2.416
eremit007 schrieb:
Aber damit kann ich nicht wirklich einen Kern komplett für einen Prozess reservieren, oder?
SparkMonkay
Commander
- Registriert
- Feb. 2013
- Beiträge
- 2.337
Soetwas regelt das Betriebssystem, ich nehme an du benutzt Raspbian, oder?
helionaut
Commander
- Registriert
- Jan. 2011
- Beiträge
- 2.416
Wenn du drei Prozesse hast, die alle auf der höchsten Priorität laufen, wird der Scheduler das schon richtig einreihen. Wenn es mehr um Latenz als um zugewiesene CPU-Zeit geht, wirst du meines Wissens um eine Modifikation am Kernel nicht herum kommen.
G
Green Mamba
Gast
Ich glaube du verwechselt beim Thema "Echtzeit" grundsätzlich was. Erklär doch mal was du eigentlich vor hast.
Ich dachte, ich könnte meinen Pi wie einen (ultra schnellen) Arduino benutzen.
Also bspw. Direkt Servos an die Gpio's hängen, etc.
Soviel ich weiß, würde man dafür normalerweise einen RT-Kernel benutzen. Aberbich dachte mir: Wenn man sowieso schon vier Kerne hat, wieso nicht direkt drei davon reservieren...
Also bspw. Direkt Servos an die Gpio's hängen, etc.
Soviel ich weiß, würde man dafür normalerweise einen RT-Kernel benutzen. Aberbich dachte mir: Wenn man sowieso schon vier Kerne hat, wieso nicht direkt drei davon reservieren...
helionaut
Commander
- Registriert
- Jan. 2011
- Beiträge
- 2.416
Muss da jeder Takt einzeln genehmigt werden, oder warum ist das so kritisch?
Ansonsten: http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/
Ansonsten: http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/
Kanibal
Lt. Commander
- Registriert
- Dez. 2011
- Beiträge
- 1.032
Du kannst die CPU Affinity eines einzelnen Prozesses über taskset setzen. Denkbar wäre es, über CPUSET einen Core auszuschließen und nur deinen GPIO-Prozess darauf manuell laufen zu lassen.
ABER.
Echtzeit-Fähig ist das nicht. Wenn konkurrierende Zugriffe auf den Speicher/die Platte geschehen, blockiert dein Prozess evtl. trotzdem. Ist also nicht wirklich gut, vielleicht aber gut genug?
ABER.
Echtzeit-Fähig ist das nicht. Wenn konkurrierende Zugriffe auf den Speicher/die Platte geschehen, blockiert dein Prozess evtl. trotzdem. Ist also nicht wirklich gut, vielleicht aber gut genug?
Kanibal schrieb:Du kannst die CPU Affinity eines einzelnen Prozesses über taskset setzen. Denkbar wäre es, über CPUSET einen Core auszuschließen und nur deinen GPIO-Prozess darauf manuell laufen zu lassen.
ABER.
Echtzeit-Fähig ist das nicht. Wenn konkurrierende Zugriffe auf den Speicher/die Platte geschehen, blockiert dein Prozess evtl. trotzdem. Ist also nicht wirklich gut, vielleicht aber gut genug?
Es geht mir primär darum, einen Multicopter ausreichend schnell reagieren zu lassen.
Dazu brauche ich einerseits einen extrem schnell reagierenden Prozess, der die grundsätzlichen "Reflexe" (Neigung ausgleichen, etc.) regelt, sowie einen weniger schnell, aber immer noch gut reagierenden Prozess, welcher die grundsätzliche Flugrichtung vorgibt. Das kann natürlich je nach Aufgabe sehr CPU-fordernd sein.
Zuletzt bearbeitet:
Sensei21
Commander
- Registriert
- März 2002
- Beiträge
- 2.680
Ich werfe mal threadirqs in den Raum,
mit chrt kann man die Priorität von, z.B. der Soundkarte erhöhen
ein RT-Kernel ist in den seltensten Fällen notwendig:
http://www.linux-magazin.de/Ausgaben/2014/08/Kern-Technik
https://forums.gentoo.org/viewtopic-p-7153966.html#7153966
Optional noch mit dem BFS (CPU Scheduler) kombinieren
mit chrt kann man die Priorität von, z.B. der Soundkarte erhöhen
ein RT-Kernel ist in den seltensten Fällen notwendig:
http://www.linux-magazin.de/Ausgaben/2014/08/Kern-Technik
https://forums.gentoo.org/viewtopic-p-7153966.html#7153966
Optional noch mit dem BFS (CPU Scheduler) kombinieren
Zuletzt bearbeitet:
Kanibal
Lt. Commander
- Registriert
- Dez. 2011
- Beiträge
- 1.032
Ich denke, dafür ist der Raspberry auch in seiner Grundfunktion schnell genug, sofern Du nicht grad Updates im Flug installierst.
Ansonsten könntest Du noch einen kleinen Arduino(Pro Mini/Nano) dazwischen hängen, der die "Low-Level"-Funktionen (Stabilisierung) erledigt, und eine Trajektorie (Beschleunigungswerte + Quaternionen?) vom Raspberry über UART entgegennimmt.
Ansonsten könntest Du noch einen kleinen Arduino(Pro Mini/Nano) dazwischen hängen, der die "Low-Level"-Funktionen (Stabilisierung) erledigt, und eine Trajektorie (Beschleunigungswerte + Quaternionen?) vom Raspberry über UART entgegennimmt.
Zuletzt bearbeitet:
Sensei21
Commander
- Registriert
- März 2002
- Beiträge
- 2.680
Zwei weitere Stichworte
cgroups & cpuset
Cgroups:
http://en.wikipedia.org/wiki/Cgroups
https://access.redhat.com/documenta...ux/6/html/Resource_Management_Guide/ch01.html
https://wiki.archlinux.org/index.php/Cgroups
http://www.janoszen.com/2013/02/06/limiting-linux-processes-cgroups-explained/
http://www.pro-linux.de/artikel/2/1464/ressourcen-verwaltung-mit-control-groups-cgroups.html
Cpusets:
http://man7.org/linux/man-pages/man7/cpuset.7.html
http://en.wikipedia.org/wiki/Processor_affinity
https://www.suse.com/documentation/slerte_11/slerte_tutorial/data/slerte_tutorial.html
edit:
übersehen, dass cpuset schon oben angesprochen wurde
edit2:
Sollte wohl funktionieren:
http://linuxgizmos.com/quadcopter-drone-packs-first-all-linux-autopilot/
https://www.linux.com/news/embedded...kely-to-include-larger-role-for-linux-in-uavs
https://github.com/Rose-Hulman-ROBO4xx/1314-BeagleBone-Quadcopter/wiki/Building-the-realtime-kernel
http://blog.oscarliang.net/remote-controlled-quadcopter-based-raspberry-pi/
cgroups & cpuset
Cgroups:
http://en.wikipedia.org/wiki/Cgroups
https://access.redhat.com/documenta...ux/6/html/Resource_Management_Guide/ch01.html
https://wiki.archlinux.org/index.php/Cgroups
http://www.janoszen.com/2013/02/06/limiting-linux-processes-cgroups-explained/
http://www.pro-linux.de/artikel/2/1464/ressourcen-verwaltung-mit-control-groups-cgroups.html
Cpusets:
http://man7.org/linux/man-pages/man7/cpuset.7.html
http://en.wikipedia.org/wiki/Processor_affinity
https://www.suse.com/documentation/slerte_11/slerte_tutorial/data/slerte_tutorial.html
edit:
übersehen, dass cpuset schon oben angesprochen wurde
edit2:
Sollte wohl funktionieren:
http://linuxgizmos.com/quadcopter-drone-packs-first-all-linux-autopilot/
https://www.linux.com/news/embedded...kely-to-include-larger-role-for-linux-in-uavs
https://github.com/Rose-Hulman-ROBO4xx/1314-BeagleBone-Quadcopter/wiki/Building-the-realtime-kernel
http://blog.oscarliang.net/remote-controlled-quadcopter-based-raspberry-pi/
Zuletzt bearbeitet:
Ähnliche Themen
- Antworten
- 26
- Aufrufe
- 2.635
- Antworten
- 11
- Aufrufe
- 2.802
- Antworten
- 4
- Aufrufe
- 4.417
Leserartikel
CPU und Bios Guide für Ryzen 3000 (und älter)
- Antworten
- 130
- Aufrufe
- 149.840