Ich bin kein Entwickler, ich spiele nur mit der Programmierung, indem ich versuche, meinen Arbeitsplatz unabhängiger zu machen. Ich versuche derzeit, einen Bereich von 9 Threads mit allen unterschiedlichen Prioritäten zu erhalten (0: höchste 8: niedrigste), um den gleichen UART-Port zu verwenden.Erteilen Sie den Zugriff auf eine Ressource basierend auf Thread Priorität/Privileg
Da ich Notfall Anfrage senden Ich würde eine Sperre zu schaffen, die die höchste Priorität Thread ermöglichen, zuerst auf die Ressource zu gehen.
Ich muss auch den receive_data IRQ-Thread erhalten die Hand auf dem UART-Port, sobald es auftritt (oder so schnell wie möglich, Hardware-UART-Puffer ist 500 Bytes lang).
Ich habe mich umgesehen und die Verwendung von verschachtelten Mutex wird mich daran hindern, den Code weiterzuentwickeln, wenn ich mehr Prioritätsstufen/Thread benötige (oder zumindest eine angemessene Menge an Code benötige).
Ich habe diese Frage gelesen: How to give priority to privileged thread in mutex locking? und die zweite Antwort sieht aus wie ich mir wünsche ... aber ich kann nicht verstehen, wie man den Prozess implementiert.
Da die Frage ein bisschen alt ist, gibt es eine andere Möglichkeit zu tun, was ich will? Wenn nicht, kann ich eine lesbarere Version davon (Holzarbeiter) bekommen?
Frage: Wie schützt man den Zugriff auf den UART-Leser/Schreiber & Prioritätszugriff auf Thread auf der Grundlage ihrer Priorität Ebene?
Hinweis:
Themen gerade lesen ein Fifo jeden und schlafen, während die Fifo leer ist und starten, wenn etwas in ihren jeweiligen Fifo gesetzt wird.
Threads verarbeitet dann den Befehl/Daten in einem Format, das von der Hardware und gesendet über UART interpretiert werden kann.
Ich versuche, das zu tun, als ich erkennen, dass manchmal Notfall Befehle, wo vor ~ 1 s oder mehr warten, verarbeitet zu werden, wenn ich bevölkerungs einen einzigen Thread und die Fifo wurde mit.
Auch, sorry, wenn mein Englisch Ihnen Gänsehaut gibt.
Sie bitte Ihre Frage erneut Rahmen zu geben, bessere Klarheit darüber, was Sie fragen. – Ajay
Dies ist eine ziemlich nicht-triviale Arbeit. Die verknüpfte Frage scheint mehrere Beispiele für Code zu enthalten, die ein guter Ausgangspunkt (oder eine vollständige Lösung) wären. Wenn Sie dies nicht nutzen können, sollten Sie Ihr Design überdenken, um Dinge zu vereinfachen, bis Sie etwas daraus machen können funktioniert und wechselt später zu einem komplexeren System. – Rook