www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Simulink, sample time


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Danke für den Hinweis, was wäre denn der entspr. Parameter den ich beim 
Kernel comp. anpassen müsste?

Grüsse, Peter

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah,

es sollte CONFIG_HZ sein. (Bitte korrigieren falls dies nicht der 
einzige sein sollte)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm. Ich frag hier mal unsere Linux - Gurus ...

more to come ...

Grüße,
Michael

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Benjamin S. (recycler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.