OMG schrieb:
> Was lernt man daraus?
>
> --> selbst programmieren <--
Da kann ich dir versichern das ich genug selber programmiere und
mittlerweile >40 Jahre Erfahrung mit verschiedensten Sprachen und
Plattformen habe.
In diesem Fall ging es mir nur um Resteverwertung und Weiterbildung in
Mbed. Der Wiznet ist heute eigentlich obsolet, es gibt genügend µC mit
integriertem NIC. Der W5500 kann kein TLS, was heute aber wichtig wäre
wenn ein Device am Internet hängt. Und schnell, naja, ich habe die
gleiche Software auf einem F407 mit 168 MHz und integriertem NIC und der
liefert die gleiche HTML Seite mehr als 10x so schnell, gegenüber W5500
an einem F411 mit 100 MHz. Habe da allerdings noch kein detailiertes
Profiling betrieben, am SPI alleine hängt es in dem Fall aber nicht. Der
HTTP Server Code ist dabei identisch, dank der einheitlichen Ethernet
Treiberschicht.
Den W5500 gibt es jetzt schon viele Jahre und da hatte ich angenommen
das die Software PnP ist. Normalerweise läuft sowas in 1-2 h, je nachdem
wieviel der gcc wieder neu anmeckert und was in Mbed wieder geändert
wurde. Das ist in der Entwicklung sehr dynamisch und das Ethernet
Interface wurde vor einigen Monaten noch überarbeitet. Eine ältere
Version für Mbed2 lief ad hoc, aber das Interface passte nicht zum
neueren Mbed5. Wiznet wirbt mit Mbed Unterstützung und hat einen
offizielen Userspace auf mbed.org und auch auf github. Der neueste
Treiber vom 2019/01 wurde aber definitv richtig geschreddert. An einem
Fork wurde noch 2019/09 gearbeitet.
Ich helfe auch gerne mit sowas zu verbessern, aber wenn es schon keinen
Issue Button auf github gibt dann hat der Hersteller wohl doch kein
richtiges Interesse oder keine Ressourcen für die Wartung. Immerhin
haben die ein auch ein aktives Forum, vielleicht gibts da Antwort.
IRQ Nutzung ist natürlich auch sinnvoll. Dazu habe ich allerdings auch
schon Beiträge gefunden nach denen auch bei IRQ noch einiges gepollt
werden muss. Ob das stimmt weiß ich nicht, habe mich erst zwei Tage mit
dem Chip beschäfftigt und dafür läuft doch schon einiges.
IRQ in Kombi mit dem Mbed Event System wäre eine gute Lösung. Und gleich
einen ganzen HTTP Server Eventbasiert statt mit Threads.
Nachtrag zum eigentlichen Problem:
beim vielen Testen und Probieren hatte ich die HTTP Instanz in einen
else Zweig von einem if (success) verschoben. Das war natürlich ein
Eigentor, weil der Server erzeugt aber beim Verlassen des Blocks gleich
wieder zerstört wurde. Ja, nach vielen Stunden Fehlersuche sollte man
erstmal Pause machen. Eine lange bekannte aber gerne ignorierte
Erkenntniss :)