KNX Bootloader für ARM

Fragen und Diskussionen zur Entwicklung von neuen Geräten. Sowohl Hardware als auch Software. English is welcome.
Darthyson
Beiträge: 70
Registriert: 3. Sep 2020, 14:03

Re: KNX Bootloader für ARM

Beitrag von Darthyson »

Hi gnampf,

danke für deine Recherchen. Jetzt versteh ich zumindest was und wieso da gemacht wird. Werde die RAM/Vectortable Optimierung allerdings erstmal zurückstellen und weiter machen an der Optimierung des Flashvorgangs. Eine der letzten Änderungen am Bootloader (bevor ich den angefasst hatte) war u.a, dass der eigentliche Flashvorgang asynchron zum Bus gemacht wurde. Vermute man hat dadurch versucht die Timeouts in den Griff zu bekommen, hat bei mir aber mehr zum Problem als zur Lösung geführt, insbesondere da dadurch der Flashvorgang auf eine Zeit verschoben werden konnte, zu der sehr viel Traffic auf dem Bus ist. Wie du schon schreibst, die Datenblöcke werden notfalls wiederholt gesendet, der eigentliche Flashbefehl genau einmal. Scheitert der, scheitert der gesamte Vorgang. Da gibt es sicherlich noch Potential.

Viele Grüße
Denis
ETS 5.7.4 (Build 1093), Gira IP-Router 103000, MCUXpresso IDE v11.6.1 [Build 8255], Windows 10 Version 21H2
3x in16-bim112 ARM | 2x rol-jal-bim112 ARM | 8x Kombisensor LPC | 1x out8 LPC | 2x 2in2out LPC | 2x 8IN LPC | 1x raincenter-bim112 ARM

Tags:
Mirko
Beiträge: 135
Registriert: 13. Feb 2015, 15:41

Re: KNX Bootloader für ARM

Beitrag von Mirko »

Ich reaktiviere mal hier das Thema aus unserem Chat:

Gibt da aber, glaube ich, noch ein offenes Risiko in der Implementierung von noInterrupts(). Unser M0 hat eine Pipeline, d.h. auch nach Stopp aller ISR ("cpsid i") können noch Kommandos (einer ISR) ausgeführt werden, die auf den Speicher zugreifen, bis die Pipeline leer ist. Folge -> HardFault, wenn der Flash zum Schreiben geblockt ist.
Da sollten noch ein DSB und ein ISB (nach dem noInterrupts() )folgen. Erst dann kann der Flash sicher beschrieben werden.
https://dzone.com/articles/nvic-disabli ... -m-and-the
Antworten