Forum: Mikrocontroller und Digitale Elektronik generic bootloader für ARM cortex


von H. R. (hacker_r)


Lesenswert?

Hi
gibt es eigentlich irgendein open source boot loader für ARM, den ich 
als starting point für mein bootloader verwenden konnte?
ein wo ich zum beispiel ein crc routine kopieren kann, allgemeine sachen 
wie ein struct wo bootloader versions nummer und co sind, ein sicheres 
protokol zur update, evtl nicht nur versions nummer sondern auch compile 
date and time.
es geht darum: ich habe ein dutzend produkte: Lichtsteuerungen, einfache 
Motorsteuerungen auf basis von Stm32 oder Atmel SAMD die über Ethernet 
/CAN/Lin angesprochen werden. Irgendwie sollte ja das ganze einheitlich 
sein.
Vorschläge?

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Gibt es AFAIK nicht, schon weil das Schreiben im Flash hochgradig 
Hersteller spezifisch ist - genauso wie die Peripherie für UART oder 
CAN.

Ich habe hier schon mehrmals 'nen RS485 Bootloader auf verschiedenen 
Cortex-M Familien  portiert, da blieb zwar 75% derselbe Code (Bus 
Protokoll) aber die 25% hatten es in sich.

von Christopher J. (christopher_j23)


Lesenswert?

Du kannst dir mal den Bootloader aus dem PX4-Projekt anschauen: 
https://github.com/PX4/Bootloader

von Jim M. (turboj)


Lesenswert?

Christopher J. schrieb:
> Du kannst dir mal den Bootloader aus dem PX4-Projekt anschauen:

Da sehe ich für jede Variante ein eigenes main .c File. Also IMHO eher 
nicht was der OP haben wollte.

von Bernd K. (prof7bit)


Lesenswert?

Das ist das altbekannte Eierlegende-Wollmilchsau-Problem. Die denkbaren 
Anforderungen sind zu verschieden.

Es ist als ob Du fragst wie der generische Prototyp der optimalen 
Ehefrau beschaffen sein soll, die möglichen Anforderungsprofile wären 
beim besten Willen nicht unter einen Hut zu bekommen, möglicherweise 
wird es noch nicht mal gelingen sich darauf zu einigen welches 
Geschlecht sie überhaupt haben soll!

Also merke: Bootloader sind wie Frauen...

von Programmiersprachentheaterintendant (Gast)


Lesenswert?

Jim M. schrieb:
> Christopher J. schrieb:
>> Du kannst dir mal den Bootloader aus dem PX4-Projekt anschauen:
>
> Da sehe ich für jede Variante ein eigenes main .c File. Also IMHO eher
> nicht was der OP haben wollte.

Hierzu stelle ich folgende Hypothesen:
- C ist nicht so portabel wie von den C-Verfechter zu oft behauptet 
wird;
- C ist keine Hochsprache weil sie nicht für gute Abstraktionen taugt;
- in diesem Projekt war kein guter SW-Architekt dabei, es haben nur 
bit-pfriemelnde HW-Entwickler Code beigesteuert;

Ich habe mir kein Code des Projektes angeschaut, kenne aber ähnliches 
von kommerziellen RTOSe. Sieht das gemeinsame "main.c" dann aber wie ein 
#ifdef-Dschungel aus, gelten obige Hypothesen trotzdem UND zusätzlich 
leidet die Lesbarkeit arg fest...

von Christopher J. (christopher_j23)


Lesenswert?

Jim M. schrieb:
> Christopher J. schrieb:
>> Du kannst dir mal den Bootloader aus dem PX4-Projekt anschauen:
>
> Da sehe ich für jede Variante ein eigenes main .c File. Also IMHO eher
> nicht was der OP haben wollte.

Es ging mir eigentlich mehr um

H. R. schrieb:
> wie ein struct wo bootloader versions nummer und co sind, ein sicheres
> protokol zur update, evtl nicht nur versions nummer sondern auch compile
> date and time

also das was man in der bl.c und bl.h findet, sowie den Python-Skripten 
px_mkfw.py und px_uploader.py. Peripherie und Flash sind natürlich bei 
jedem Controller anders. Der Bootloader ist momentan nur für USB und 
UART ausgelegt und müsste für andere Übertragungsmöglichkeiten (z.B. 
CAN) natürlich angepasst werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.