en
Close Menu
Pong auf dem STM32F7 Mikrocontroller

Pong auf dem STM32F7 Mikrocontroller

Veröffentlicht am 2018-04-13

In den letzten zwei Wochen habe ich an einem Praktikum an der Uni teilgenommen. Wir haben eine Einführung in Rust bekommen und wurden dann in Gruppen aufgeteilt um etwas für den STM32F746G discovery Mikrocontroller zu schreiben. Zusammen mit einem Kommilitonen hab ich mich dafür entschieden einen einfachen Pong-Klon mit Netzwerk-Mehrspieler-Modus zu schreiben.

Für mich war es der erste Kontakt mit der Programmiersprache Rust und auch das erste Mal, dass ich etwas für einen Mikrocontroller programmiert hab. Das hat natürlich schon einige Herausforderungen gestellt. Um das Zeichnen auf den LCD-Bildschirm des Mikrocontrollers maximal zu optimieren, habe ich zwei L8 Framebuffer benutzt (jeweils ein Byte pro Pixel in dem nur die Helligkeit gespeichert wird). Anstatt wie im vorgegebenen Beispielprojekt die Framebuffer im SDRAM zu alloziieren, habe ich sie auf dem Heap im SRAM angelegt, um noch mehr Leistung zu erhalten. Für die Kommunikation zwischen den zwei Geräten, schicken wir den gesamten Spielstatus (19 bytes) in jedem Frame als UDP Packet zum Clienten und der Client schickt einfach die gedrückte y-Position. Wir haben zusätzlich noch einen lokalen Mehrspielermodus hinzugefügt, um das Spiel auch nur mit einem Mikrocontroller testen zu können.

Falls du zufällig Zugriff auf diesen Mikrocontroller hast, könntest du die Rust nightly-2018-04-12 Version installieren und unseren Quelltext von GitHub runterladen. Dann die notwendigen Tools installieren und cargo run --release ausführen.

Obwohl die zwei Wochen echt anstrengend waren, habe ich jede Menge gelernt. Eine neue Programmiersprache zu lernen war wieder herausfordernd, vor allem da ein paar Konzepte komplett anders funktionieren als in Programmiersprachen, die ich bereits gewohnt bin. Trotzdem freue ich mich darauf in nächster Zeit wieder mit höheren Programmiersprachen zu arbeiten.