Forum: Mikrocontroller und Digitale Elektronik webserver auf STM32


von kai (Gast)


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?

von S. R. (svenska)


Lesenswert?

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

Um über HTTP die IP-Adresse zu setzen, musst du bereits eine 
funktionierende IP-Adresse haben. Wie stellst du dir das vor?

von Rath Geber (Gast)


Lesenswert?


von Frank K. (fchk)


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

von Oberlehrer (Gast)


Lesenswert?

HTTP ist doch unsicher!
Wenigstens HTTPS muss es sein.

von Stefan F. (Gast)


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

von Gerd E. (robberknight)


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.

von Stefan F. (Gast)


Lesenswert?

Über HTTP die IP-Adresse konfigurieren setzt natürlich voraus, das das 
Ding schon eine andere IP-Adresse hat.

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.