Hallo, ich habe eine Frage bezüglich des SysTickCounters. Dieser soll der einzigste prozessorunabhängige Zeitstempel im Cortex-Kern sein. Das Wort prozessorunabhängig bringt mich hier etwas durcheinander. Was ist damit genau gemeint ? Ich meine, wenn ich im Code den Counter-Wert auslese, bin ich doch im Prinzip schon wieder prozessorabhängig ? Mike
Das ist halt ein eigener Timer. Egal, was die CPU macht und wie ausgelastet sie ist, der SysTick läuft unabhängig davon konstant weiter, weil komplett in Hardware gegossen.
Mike schrieb: > Das Wort prozessorunabhängig bringt mich hier etwas durcheinander. mich auch, wo hast du das denn gefunden? Sebastian R. schrieb: > Egal, was die CPU macht und wie ausgelastet sie ist, der SysTick läuft > unabhängig davon konstant weiter, weil komplett in Hardware gegossen. Nicht ganz, der systick wird mit dem CPU-Takt getaktet. Wenn du den umschaltest, musst du auch den systick-Teiler anpassen. Alles genau so, wie bei jedem anderen Timer. Mike schrieb: > Ich meine, wenn ich im Code den Counter-Wert auslese, bin ich doch im > Prinzip schon wieder prozessorabhängig ? Jein, die Idee von ARM war, dass du auf jedem Cortex-M von jedem Hersteller die gleichen Maschinenbefehle und Adressen verwenden kannst. Alle anderen Timer "gehören" dem Chip-Hersteller und sind überall verschieden, der systick gehört ARM und sollte immer gleich aussehen. Ein anderer Vorteil: der systick ist extrem einfach aufgebaut und benutzbar.
Hm, da war wahrscheinlich gemeint im Vergleich zu einer for-Schleife im Code, die Zeit vertrödelt. So eine Schleife ist natürlich abhängig, davon, wie gut der Compiler optimiert und welche Interrupts sie unterbrechen. Oder noch heftiger händisch nachgezählten Zyklen zur Abarbeitung eines Stückes Code. Was bei mehreren Verzweigungen des Programmablaufs zu einer echten Aufgabe werden kann. Der einzige Timer ist es auch oft nicht, Aber immerhin der eine, den Arm zusammen mit dem Core liefert, so dass er bei eigentlich allen Chips mit Arm-Core in dieser Form vorhanden ist.
Mike schrieb: > ich habe eine Frage bezüglich des SysTickCounters. > Dieser soll der einzigste prozessorunabhängige Zeitstempel im > Cortex-Kern sein. Dieser Satz ist sehr überspezifisch, wegen "im Cortex-Kern". Denn natürlich sind alle anderen Timer ebenfalls prozessorunabhäng, werden aber als Peripherie angesehen und nicht als Teil des Kerns. Andererseits kann man streiten, ob der systick-Zähler nicht auch Peripherie ist. > Das Wort prozessorunabhängig bringt mich hier etwas durcheinander. > Was ist damit genau gemeint? Daß der Zähler zählt, ganz egal was der Prozessor gerade macht. Auch dann, wenn der Prozessor gerade schläft (wfi und Freunde), zählt der trotzdem weiter. > Ich meine, wenn ich im Code den Counter-Wert auslese, bin ich doch im > Prinzip schon wieder prozessorabhängig ? Das Auslesen ist keine Operation, die den Zähler als solchen irgendwie beeinflußt. Der zählt so oder so weiter.
Vielen Dank für eure Antworten. Ich habe das aus einer Buchvorschau von Seite 115 ziemlich weit unten. https://books.google.de/books?id=8ra8DQAAQBAJ&pg=PA115&lpg=PA115&dq=SysTicktimer+Betriebssystem&source=bl&ots=jCM7QHJs3R&sig=ACfU3U2zMf-XQPalm9QVfIf7MUNv0EKv_g&hl=de&sa=X&ved=2ahUKEwjNir-I44XgAhWK_qQKHQO6CToQ6AEwAHoECAkQAQ#v=onepage&q=SysTicktimer%20Betriebssystem&f=false
Das bedeutet nur, dass diese Systick-Timer bei allen Cortexen (M0-Mx) vorhanden ist. Egal ob ST, NXP, Atmel u.s.w. Alle anderen Timer sind herstellerübergreifend nicht vergleichbar da jeder seine eigene Suppe kocht.
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.