webserver auf STM32

Gast #5960196
Lesenswert?

Hi
ich wollte auf ein STM32 + freertos + LWIP ein webserver zum laufen 
kriegen. Ich will lediglich über HTTP die IP Adresse setzen und ein http 
bootloader realisieren.
Wie geht man da am besten vor? Mit den webserver IAP Beispielen von ST?
Der ist recht rudimentär. Gibt es irgendein open source webserver der 
auf LWIP aufsetzt?
#5960240
Lesenswert?

kai schrieb:

> ich wollte auf ein STM32 + freertos + LWIP ein webserver zum laufen
> kriegen. Ich will lediglich über HTTP die IP Adresse setzen und ein http
> bootloader realisieren.

Die Generation vor Dir hat dafür bootp/dhcp und tftp entwickelt. Das ist 
extra leichtgewichtig und kommt ohne TCP aus, damit es damals in den 
80'ern noch in ein 8k Bootrom zusammen mit dem Hardwaretreiber passte.

Das funktioniert heute immer noch.

fchk
Gast #5960251
Lesenswert?

Ein Webserver liefert Dokumente aus.

Ein Bootloader konsumiert eine Firmware, das wäre bei HTTP Protokoll 
also normalerweise der Client.

Was du vielleicht meinst ist ein Formular, welches den Upload einer 
Firmware-Datei ermöglicht. Das ist nach HTTP Standard ziemlich 
kompliziert, weil Datei-Uploads nämlich ursprünglich gar nicht 
vorgesehen waren sondern später oben drauf geflanscht wurden.

Hier ist das beschrieben 
https://stackoverflow.com/questions/8659808/how-does-http-file-upload-work 
(erste Antwort).

Bevor du das implementiert, lerne erstmal die Grundlagen vom HTTP 
Protokoll kennen:
http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%202.pdf 
Kapitel 10
#5960254
Lesenswert?

kai schrieb:
> Ich will lediglich über HTTP die IP Adresse setzen und ein http
> bootloader realisieren.

Ein Bootloader über HTTP? Das überzeugt mich nicht, da viel zu komplex 
und fehlerträchtig. Ein Bootloader solltest Du so konzipieren daß er 
über die gesamte Lebensdauer des Produkts hinweg nicht mehr geändert 
werden muss.

Alternativer Vorschlag:
- Du packst ein SPI-NOR-Flash mit mindestens der doppelten Größe des 
Flashs Deines STM32 auf die Platine. Kostet vielleicht 25 Cent in 
kleinen Stückzahlen.

- Der Webserver läuft in der normalen Firmware (=nicht dem Bootloader) 
und kann per HTTP-Upload neue Firmware entgegennehmen. Diese wird dann 
im SPI-Flash gespeichert.

- Wenn alle Prüfsummen etc. ok sind, wird eine Markierung (z.B. im 
ersten Sektor des SPI-Flash) gesetzt und der Bootloader gestartet

- Der Bootloader prüft den SPI-Flash-Inhalt und wenn er die Markierung 
findet, flasht er den Applikationsbereich des STM32 mit dem Inhalt des 
Flash

- Das SPI-Flash enthält zusätzlich einen 2. Bereich mit einer bekannt 
guten Firmware. Wenn man einen Taster drückt, Magnet gegen Reed-Sensor 
hält oder ähnliches beim Neustart, wird nicht die normale Firmware 
gestartet, sondern diese Basisfirmware geflasht.

Damit kann man das Gerät immer noch "retten" falls die normale Firmware 
irgendeinen Bug enthält oder aus anderem Grund nicht mehr erreichbar 
ist. Mit Hilfe dieser Basisfirmware kann man dann wieder neuere, gefixte 
Versionen der Firmware aufspielen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren