Hallo,
in diesem Thread möchte ich die Entwicklung meiner alternativen C-Bibliothek und Coprozessor-Firmware für NIBO 2 vorstellen und dokumentieren. Alle Komponenten stehen unter der 2-Klausel-BSD-Lizenz und werden u.a. auf GitHub gehostet.
Viele Grüße
Flo
Status
(Stand: 18.01.2012 00:27)
Hier dokumentiere ich für Interessierte den Stand der Dinge und für mich Ideen, Features, etc.
Aktuell UPDATE
Ich arbeite weiterhin an der Kommunikation zwischen den Controllern. Die Implementation des dafür von mir entworfenen NDX-Protokolls (siehe unten) arbeitet momentan noch nicht ganz fehlerfrei.
Nebenher arbeite ich auch an den Sensoren. Die Odometrie funktioniert bereits.
Da ich bald so weit bin zumindest einen Teil aus der Inkubation zu bringen, werden als nächstes wohl meine AVR32-CMake-Skripte AVR-8bit-tauglich gemacht. Dann sollte es auch nicht mehr lange dauern, bis die ersten Freiwilligen damit spielen können.
NDX-Protokoll
Für die zuverlässige Kommunikation kommt das NDX (Nibo Data eXchange) getaufte Protokoll zum Einsatz. Eine genauere Beschreibung spare ich mir vorerst für die Doxygen-Doku auf, aber vertröste schon mal mit den bunten, angehängten Grafiken, die den Ablauf zeigen.
Geplante Projektstruktur nach Inkubation
Die Entwicklung findet zur Zeit noch in einem Inkubationsprojekt statt. Sobald die grundlegende APIs für alle hardwarenahen Funktionen von Haupt- und Coprozessor, als auch die Coprozessor-Firmware "Gears" für die Motorregelung etc., in akzeptablen Zustand sind, wandern die Komponenten in eigenständige Git-Repos.
Die meisten Funktionen des Hauptprozessors lassen sich bereits nutzen. Teils in eingeschränkten Umfang, so ist insbesondere der Text-/Terminalmodus des Displays nur bedingt einsatzbereit.
Gegenwärtig tendiere ich zu folgendem modularen Aufbau:
- libnibo-base: Drei Subbibliotheken für die Kernfunktionen der beiden Mikrocontroller von NIBO2.
- libnibo-base-ccu: Für hardwarenahe Funktionen der Central Control Unit (aka. Hauptprozessor).
- libnibo-base-acu: Für hardwarenahe Funktionen der Auxiliary Control Unit (aka. Coprozessor).
- libnibo-base-common: Gemeinsamer Code für CCU und ACU, etwa die Implementation des NDX-Protokolls.
- nibo-gears: Die "Gears" Coprozessor-Firmware.
- libnibo-gears: API-Funktionen zur Kommunikation des Hauptprozessors mit der Gears-Firmware auf dem Coprozessor und firmwarespezifische Handler für das NDX-SPI-Protokoll.
Eigener Code für den Hauptprozessor wird dann mit libabl, libnibo-base-ccu, und bei Verwendung der Gears-Firmware mit libnibo-base-common und libnibo-gears, gelinkt.
Lesezeichen