Mit der AskSinPP Arduino Bibliothek gibt es ja seit langem eine sehr gute Grundlage, um Homematic Geräte selbst zu coden und auf eigene oder aber auch bestehende eQ-3 Hardware zu flashen (z.B. RWE/Innogy/Livisi Geräte).
Das Problem: Für den im HM-Sec-SCo verbauten µC-Typ "EFM32G200F64" gibt gab es keine Arduino IDE Unterstützung.
Zudem fehlte mir auch jegliche Erfahrung in der Programmierung eines EFM32, sowohl was die Hard- als auch die Software betrifft.
Um so mehr waren Hartnäckigkeit und Wille vorhanden, mich in das Thema einzuarbeiten. Und das hieß: Google, Google und noch mal Google...
Für den Upload des Kompilats wird hardwareseitig lediglich ein ST-Link V2 benötigt. Den bekommt man für ca. 5,- EUR beim Chinamann.
Als Software-Tool wird OpenOCD verwendet https://openocd.org
Mac-Nutzer können es z.B. im Terminal schnell mittels brew install openocd installieren.
Also zunächst einmal die Verbindung zwischen EFM32 und OpenOCD herstellen.
Die Pins am HM-Sec-SCo PRG1 waren schnell ermittelt

und 4 Strippen (GND, 3.3V, SWCLK, SWDIO) zum ST-Link V2 dran getüdelt.
Schon beim Starten von OpenOCD war ersichtlich, dass keinerlei Kommunikation mit dem EFM32 möglich war und es lag auf der Hand, dass der Hersteller solche Schnittstellen sperrt, um ein Auslesen der vorhandenen Firmware zu verhindern.
Eine gesperrte SWD Schnittstelle zu entsperren erfolgt mittels OpenOCD und Telnet.
- OpenOCD starten (openocd -f interface/stlink-dap.cfg -f target/efm32.cfg)
- Mit OpenOCD via Telnet auf Port 4444 verbinden (telnet localhost 4444)
Code: Alles auswählen
efm32.dap apreg 0 0x4 0xcfacc118 efm32.dap apreg 0 0x0 1 efm32.dap apreg 0 0x8 sleep 1000 efm32.dap apreg 0 0x0 2 reset_config none reset init
- Die SWD Schnittstelle lässt sich nun verwenden; der Flash Speicher ist gelöscht
- Arduino IDE 1.8.5 oder höher installieren
- zusätzliche Board-URL hinzufügen: https://raw.githubusercontent.com/jp112 ... index.json (>>>Hilfe<<<)
- Im Boardverwalter nach "EFM32" suchen und EFM32(T)Gxxx Boardunterstützung installieren (https://github.com/jp112sdl/ARDUINO_EFM ... rd-support)
- master-Branch https://github.com/pa-pa/AskSinPP Library verwenden
Code: Alles auswählen
openocd -f interface/stlink-dap.cfg -f target/efm32.cfg -c "program /path/to/.elf verify reset exit"
Die alternative Firmware kann auf den HM-Sec-SCo, HmIP-SWDO und HmIP-SWDO-I geflasht werden.
Einige Ziele auf dem Weg zu einer EFM32-kompatiblen HM-Sec-SCo Firmware habe ich bereits erreicht (siehe Checkliste im Github-Repo), jedoch klemmt es noch hier und da.
Momentan baue ich am letzten Puzzleteil, dem Energiespar-/Sleep-Modus.
Ich werde diesen Beitrag nach und nach weiter vervollständigen.