Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
CaroloCup
carolocupFirmware
Commits
f4a0092c
Commit
f4a0092c
authored
Feb 24, 2021
by
Jonathan Klamroth
Browse files
add README
parent
92b57fb5
Changes
1
Hide whitespace changes
Inline
Side-by-side
README.md
0 → 100644
View file @
f4a0092c
# Firmware für die IPU im AM57xx
Die Firmware ist allgemein die Schnittstelle zur Hardware und hat dafür folgende
Aufgaben:
*
Befehle (vom Linux) umsetzen -> Motor, Servo
*
Sensordaten messen und (ans Linux) weiterleiten -> Abstände
(vorne/hinten/seitlich), Geschwindigkeit
*
Steuerung über die RC Fernbedienung
Weitere Infos sind im Wiki zu finden:
https://wwwvs.cs.hs-rm.de/vs-wiki/index.php/(WS20-01)_Autonomes_Modellfahrzeug/Firmware
## Bauen
# Config laden, siehe ./configs/
make car2_1_1.5ms_LiPo_defconfig
# Build
make
## "Flashen"
scp carolocupFirmware carolo-car1:/lib/firmware/dra7-ipu1-fw.xem4
Die Firmware wird nicht automatisch neugeladen. Dazu muss die IPU zum Absturz
gebracht werden, was diese neustartet - oder der remoteproc Treiber (lädt den
Code in die IPU und startet diese) neu geladen werden.
## Reset
Der Reset wird durch das Neuladen des remoteproc Treibers ausgelöst, außerdem
ist es während dem Debuggen praktisch, recovery auszuschalten. Damit wird
verhindert, dass die IPU z. B. bei einer mmufault, also wenn man einen
unerlaubten Speicherzugriff macht, neugestartet wird. Damit kann der Fehler mit
gdb untersucht werden.
ssh carolo-car1 '/sbin/rmmod omap_remoteproc ; /sbin/modprobe omap_remoteproc ; sleep 1 ; echo disabled >/sys/kernel/debug/remoteproc/remoteproc0/recovery'
## Debuggen
Zum Debuggen, muss openocd auf dem Rechner, an dem das Auto angeschlossen ist,
gestartet werden. Dadurch steht in GDB Server bereit:
ssh -L 3333:localhost:3333 -L 4444:localhost:4444 carolo-debug /opt/carolo/connect-car1-ipu1.sh
Die Optionen
`-L`
aktivieren Port Forwarding, sodass man GDB lokal starten kann:
gdb-multiarch carolocupFirmware
Dies muss vom Root-Verzeichnis des Repos ausgeführt werden. Zum einen, damit
carocarolocupFirmware gefunden wird und zum anderen, damit die Datei .gdbinit
gefunden wird. Damit wird automatisch ein Breakpoint bei
`main()`
gesetzt und
gewartet, bis dies erreicht wurde. Dazu muss vorher in der Config die Option
"Wait for Debugger" (in "Mach Settings") aktiviert sein. Damit wartet der Code
auf den Debugger, der über die .gdbinit bestätigt wird.
Auf Ausgaben mit
`printf()`
kann über ein entsprechendes File des Treibers
zugegriffen werden:
cat /sys/kernel/debug/remoteproc/remoteproc0/trace0
Es gibt einen Bug, bei dem manchmal keine Ausgaben zu sehen sind. Dann muss die
IPU wie oben beschrieben resettet werden.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment