Hallo, ich hab no ein paar Fragen zu FreeRTOS: 1. Die IdleHook Funktion wird doch immer aufgerufen wenn der IDLE-Task "aktiv" wird oder? 2. Wann genau wird die TickHook Funktion aufgerufen? 3. Was ist bei FreeRTOS ein "port"? 4. Was ist ein Interrupt in FreeRTOS? Werden daduch alle anderen Tasks unterbrochen? Bis jetzt hab ich mir das irgentwie immer so zusammen gereimt aber jetzt will ich es genau wissen. Wäre toll wenn jemand dazu was weiß! Moritz
Moritz M. schrieb: > 1. Die IdleHook Funktion wird doch immer aufgerufen wenn der IDLE-Task > "aktiv" wird oder? > > 2. Wann genau wird die TickHook Funktion aufgerufen? http://www.freertos.org/a00016.html > 3. Was ist bei FreeRTOS ein "port"? Ein Port ist eine Portierung des Kernels auf eine andere Architektur. > 4. Was ist ein Interrupt in FreeRTOS? Werden daduch alle anderen Tasks > unterbrochen? Ein Interrupt ist halt ein Interrupt, der von der Hardware ausgelöst wird. Und ja der unterbricht deine Tasks. Gruß Oliver
Während dem schreiben war Oliver schneller ... Ich kenne mich nicht sehr gut mit FreeRTOS aus, aber ein grobes versändnis habe ich: Moritz M. schrieb: > 1. Die IdleHook Funktion wird doch immer aufgerufen wenn der IDLE-Task > "aktiv" wird oder? Ja. Da ein prozessor nicht einfach nichts tun kann muss es eine funktion geben die "nichts tun" implementiert. Das ist die IdleHook Funktion. In der kannst du z.b. eine PWM generieren die ein analoges Messinstrument betreibt. Je größer der ausschlag desto geringer ist die CPU-Last. Prinzipiell könnte der uC an der stelle auch in "Sleep Mode" gehen um wirklich nichts zu tun. Aufgeweckt werden kann er dann wieder durch den Tick-Interrupt. Ob das gemacht wird weiß ich nicht und wenn dann ist es von der verwendeten Hardware abhängig. > 2. Wann genau wird die TickHook Funktion aufgerufen? http://www.freertos.org/a00016.html "The tick interrupt can optionally call an application defined hook (or callback) function - the tick hook. The tick hook provides a convenient place to implement timer functionality." Liest sich so als ob er zu jedem Tick nach der eigentlichen SystemTick-Rouine augerufen wird. > 3. Was ist bei FreeRTOS ein "port"? FreeRTOS versucht möglichst generisch zu bleibem. D.h. so wenig hardwarespezifischen code wie möglich. Ports sind die Codeschnipsel die doch Prozessorabhängig sind. Z.b. ist es klar dass dier SystemTick Interrupt hardwarespezifisch ist (z.b. beim AVR muss ein Timer konfiguriert werden. Der Code ist NUR für den verwendeten AVR gültig). > 4. Was ist ein Interrupt in FreeRTOS? Werden daduch alle anderen Tasks > unterbrochen? Ein interrut bleibt ein Interrupt. Wenn du ein ISR handler schreibst liegt es an dir für eine schnellsmögliche abarbeitung zu sorgen. Je nach verwendetem uC blockierst du in der Zeit alles andere. Ob der SystemTick ggf. eine höhere ISR Priorität hat musst du geziehlt nachschauen. > Bis jetzt hab ich mir das irgentwie immer so zusammen gereimt aber jetzt > will ich es genau wissen. > Wäre toll wenn jemand dazu was weiß! Google mal ... was ist überhaupt ein Betriebsystem, was ist ein Prozess/Task/Thread? Es gibt ein nettes Buch. "Modern Operating Systems". Ist zwar garnicht mehr so modern, aber die prinzipien bleiben gleich. Wenn du das Prinzip verstanden hast wird dir vieles klar.
Hallo, vielen Dank! Die FreeRTOS-Dokumente kenne ich schon des halb habe ich ja hier gefragt. Also es gibt keine Interrupts von FreeRTOS sondern nur die normalen Hardware-Interrupts? D.h wenn jetzt ein USART-Interrupt kommt werden alle Task-Angehalten? Laufen die Task danach automatisch Weiter? Moritz
Moritz M. schrieb: > Also es gibt keine Interrupts von FreeRTOS sondern nur die normalen > Hardware-Interrupts? Auf dem CM3 z.B werden über die SVC-Instruktion Softwareinterrupts vom Freertos-Kernel ausgelöst. Darüber gelangt der Kernel in den privilegierten Modus. Da hatte ich vorhin nicht dran gedacht. > D.h wenn jetzt ein USART-Interrupt kommt werden > alle Task-Angehalten? Im Grunde wird das Programm an der Stelle unterbrochen, an der der Interrupt auftritt, sofern gerade keine ISR eines Interrupts mit höherer Priorität abgearbeitet wird. > Laufen die Task danach automatisch Weiter? Ja. Gruß Oliver
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.