Hallo zusammen, für ein embedded Linux (emdebian) verwende ich Simulink zur Codegenerierung. Verwende ich bspw. einen integrator, benötigt dieser eine feste Zeitbasis, also bspw. Aufruf alle 10ms (rtOneStep()). Diese Samplezeit lässt sich in Simulink variieren. Gibt es eine Möglichkeit, dies dann unter einem normalen Linux halbwegs vernünftig zu verwenden? Ein Echtzeitbetriebssystem mit z.B. zeitscheibenbasis würde es ja schaffen, alle 10ms die Simulink-Funktion aufzurufen. Geht dies auch unter einem normalen Linux? verwende ich einen normalen timer ist die Zeit relativ grob aufgelöst, vor allem bei Prozessorlast. Kann man hier vielleicht mit variable step-time arbeiten? Für tips bedanke ich mich schonmal im Voraus! Danke und Grüsse, Peter
Das geht. Wenn Du den Kernel neu kompilierst kannst Du die Scheduler Frequenz hochsetzten (von 200, 250Hz auf 1000Hz). Damit ist das System dann schnell genug. Grüße, Michael
Hallo, Danke für den Hinweis, was wäre denn der entspr. Parameter den ich beim Kernel comp. anpassen müsste? Grüsse, Peter
Ah, es sollte CONFIG_HZ sein. (Bitte korrigieren falls dies nicht der einzige sein sollte)
Hallo nochmal, leider behält er die 1000Hz nicht bei, d.h. bei jedem make ersetzt er die 1000Hz wieder durch 200Hz. Gibt es hier ggf. noch andere Stellen, wo eingegriffen werden muss? Danke, Peter
Hallo Peter, welche Distribution/Kernelversion setzt Du denn ein? Normalerweile muss man anfangs die Konfiguration machen (mittels "make menuconfig"). Hier kannst Du dann u.A. die Frequenz einstellen (CONFIG_HZ=1000). Danach "make all" und make bzImage. Sollte eigentlich so funktionieren .... Grüße, Michael
Hallo, ich crosscompiliere unter lenny für arm (kernel 2.6.29). Habe schon einige Male Kernel compiliert, jedoch via make menuconfig finde ich die CONFIG_HZ in keiner Weise; nur im .config File. Dieses erstelle ich also (mit make menuconfig bspw.) und ändere danch CONFIG_HZ in der .config manuell auf 1000. Starte dann den make (make uImage), das erste was er (trotzdem) macht, ist die config "neu zu erstellen" (er überschreibt die config_hz mit 200). Ansonsten bleibt das .config-File nach meinem (menuconfig)-Wunsch. Bin mir sicher, dass ich was übersehe (habe zwischenzeitl. auch schon die "config-template"-Files unter arch/arm/config modifiziert (so gut wie alle auf 1000hz gesetzt), kein Erfolg). Bin sogar soweit gegeangen, dass ein grep CONFIG_HZ=200 keine Ergebnisse im Kernel-build-verzeichnis liefert. Hast Du noch einen Tip parat? ;) Danke, Gruss, Peter
hm. Ich frag hier mal unsere Linux - Gurus ... more to come ... Grüße, Michael
Hallo Peter, also die Jungs in der Arbeit hatten auch keine groß anderen Ideen ... hier sind die Einstellungen von meinem System: Processor type and features --> Timer frequency --> 1000 Hz Processor type and features --> Preemption model --> Preemptible kernel (Low Latency Desktop) Processor type and features --> Preempt the Big Kernel Lock --> (enable) in der Konfiguration muss folgendes stehen: CONFIG_HZ_1000=y hoffe jetzt klappts .... Grüße, Michael
Ein Bekannter hat dazu eine Realtimeerweiterung im laufenden Betrieb eingeschaltet. Wie genau das ging, weiß ich nicht, aber ich kann fragen. Sein Roboter lief damit einwandfrei.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.