You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Markdown
		
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Markdown
		
	
| # DMM Demo
 | |
| 
 | |
| Beispielprojekt zur Demonstration der wesentlichen Funktionen des DMM-Boards. 
 | |
| Wird auch zur Installation des Bootloaders und Test nach der Inbetriebnahme 
 | |
| eingesetzt.
 | |
| 
 | |
| ## Anleitung 
 | |
| 
 | |
| ### Build-System und Entwicklungsumgebung
 | |
| 
 | |
| Als plattformübergreifendes Build-System Dient das 
 | |
| [PlatformIO](https://platformio.org/). Diese steht sowohl als 
 | |
| Kommandozeilen-Tool, als auch als [Erweiterung](https://marketplace.visualstudio.com/items?itemName=platformio.platformio-ide)
 | |
| zum [Visual Studio Code](https://code.visualstudio.com/). 
 | |
| (auch unter Linux und MacOS verfügbar!)
 | |
| 
 | |
| Nutzt man das VSCode, so können nach der Installation der Erweiterung die unten 
 | |
| aufgeführten Befehle auch *ohne Installation der PIO im Betriebssystem* in den
 | |
| Terminals innerhalb der IDE genutzt werden. Für die Betriebssystemweite Installation 
 | |
| siehe Anleitung unter [PlatformIO Core (CLI)](https://docs.platformio.org/en/latest/core/installation.html).
 | |
| 
 | |
| *Nur Linux:* zur Programmierung des Bootloaders mit JTAGICE muss dieser 
 | |
| für nicht-root Nutzer per udev-Regel freigegeben werden. Erstelle dazu Datei 
 | |
| `/etc/udev/rules.d/99-jtagice3.rules` mit:
 | |
| ```
 | |
| SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2140", MODE="0666"
 | |
| ```
 | |
| 
 | |
| ### Auschecken und bauen
 | |
| Es sollte sichergestellt sein, dass [Git](https://git-scm.com/) installiert und
 | |
| der [eigene SSH-Schlüssel im GitLab-Profil hinterlegt](https://docs.gitlab.com/ee/ssh/) 
 | |
| ist. Für Git-Anfänger finden sich im Internet zahlreiche Anleitungen, zum Beispiel 
 | |
| [diese](https://www.freecodecamp.org/news/learn-the-basics-of-git-in-under-10-minutes-da548267cc91/). 
 | |
| 
 | |
| *GUI:* VSCode unterstützt Git direkt und kann nach der Einrichtung als GUI 
 | |
| genutzt werden.
 | |
| 
 | |
| Auschecken:
 | |
| ```
 | |
| $ git clone git@teach.emg.ing.tu-bs.de:dmm/dmm-demo.git
 | |
| $ cd dmm-demo 
 | |
| ```
 | |
| 
 | |
| Es sind zwei PlatformIO-Environments definiert. `release` wird standardmäßig
 | |
| genutzt und ist auf die Programmierung per Bootloader ausgelegt. `debug` wird
 | |
| für das Aufspielen des Bootloaders oder Debugging mittels JTAGICE3 genutzt.
 | |
| 
 | |
| Bauen von `release`:
 | |
| ```
 | |
| $ pio run
 | |
| ```
 | |
| 
 | |
| Bauen von `debug`:
 | |
| ```
 | |
| $ pio run -e debug
 | |
| 
 | |
| ```
 | |
| 
 | |
| Dabei werden neben der Toolchain automatisch die für DMM-Projekte vorgesehenen
 | |
| [Bibliotheken](https://teach.emg.ing.tu-bs.de/git/dmm/dmm-libs) in den Ordner 
 | |
| `dmm-demo/depends` heruntergeladen.
 | |
| 
 | |
| ### Programmierung & Nutzung
 | |
| 
 | |
| *GUI*: die aufgeführten Befehle können auch aus dem PlatformIO-Toolbar des 
 | |
| VSCode per Mausklick ausgeführt werden.
 | |
| 
 | |
| #### Aufspielen des Bootloaders
 | |
| 
 | |
| Auf einem neuen Board muss zunächst mittels JTAGICE3 ein Bootloader aufgespielt
 | |
| werden. Dazu wird es mit dem JTAG-Header verbunden (Polung beachten!). 
 | |
| ```
 | |
| $ pio run -t bootloader -e debug
 | |
| ```
 | |
| 
 | |
| #### Aufspielen des Programms 
 | |
| 
 | |
| Das Board muss per USB verbunden und Bootloader gestarted werden.
 | |
| *Zum Start des Bootloaders den Joystick in Richtung unten halten, Reset-Taste 
 | |
| drücken und den Joystick loslassen. Die Aktivierung des Bootloaders erkennt man 
 | |
| an zwei leuchtenden roten LEDs auf dem Board*
 | |
| ```
 | |
| $ pio run -t upload
 | |
| ```
 | |
| Anschließend Reset-Taste drücken um das Programm zu starten.
 | |
| 
 | |
| #### UART-Kommunikation
 | |
| 
 | |
| Ein Teil des Demos beschäftigt sich mit Kommunikation über einen virtuellen
 | |
| SerialPort via USB. Der `COMx` (Windows) oder `/dev/ttyUSBx` (Linux) Port wird
 | |
| von PlattformIO automatisch erkannt. Dies geschieht anhand des `hwid` Parameters 
 | |
| unter `boards/emgdmm_v3.json`, der den VID/PID des FTDI-Chips des DMM-Boards 
 | |
| angibt. Ein Terminal kann somit einfach geöffnet werden:
 | |
| ```
 | |
| pio device monitor
 | |
| ```
 | |
| 
 | |
| Beim Drücken des Joystick im entsprechenden Teil des Demos wird nun eine Meldung
 | |
| angezeigt.
 | |
| 
 | |
| ### Unit-Test
 | |
| 
 | |
| Die Demo enthält im Ordner `tests` einen Beispiel zur Ausführung von Unit-Tests 
 | |
| auf dem Mikrocontroller. Dazu muss wie oben beschrieben der Bootloader aktiviert 
 | |
| werden. 
 | |
| ```
 | |
| $ pio test
 | |
| ```
 | |
| Nach dem Befehl wird eine Firmware auf das Board heruntergeladen, die bei der
 | |
| Ausführung per UART (wie auch bei `pio device monitor`) die Ergebnisse der
 | |
| Tests im Terminal ausgibt.
 | |
| 
 |