Go Down

Topic: Flash over IP (Read 2958 times) previous topic - next topic

pylon

Nick Gammon (aktiver Forum-Teilnehmer) hat sowas ähnliches schon mal gemacht, allerdings nicht über die serielle Schnittstelle, sondern als Programmer (ICSP). Aber grundsätzlich sollte das für Dich keinen grossen Unterschied machen.

https://github.com/nickgammon/arduino_sketches/blob/master/Atmega_Hex_Uploader/Atmega_Hex_Uploader.ino

hk007

Hi pylon,

ja, das hatten wir vor kurzem schon mal in einem Thread.
Aber dies beschreibt einen Upload von einer SD-Karte und nicht über Ethernet.
Arduino 1.0.5 | Arduino UNO & MEGA | Arduino 1.54r2 mit DUE

pylon

Quote
Aber dies beschreibt einen Upload von einer SD-Karte und nicht über Ethernet.


Jetzt kombinierst Du das mit einem kleinen Webserver-Upload, wie z.B.

https://github.com/ovidiucp/TinyWebServer

und Du hast die Möglichkeit, Deine Updates einfach per Webformular hochzuladen.

hk007


Jetzt kombinierst Du das mit einem kleinen Webserver-Upload, wie z.B.
https://github.com/ovidiucp/TinyWebServer
und Du hast die Möglichkeit, Deine Updates einfach per Webformular hochzuladen.


Ok, hört sich gut an. Hab mir das ganze mal bei github gezogen.
Aber so ganz ans Ziel komm ich mit dem Upload nicht.
- Ich hab den Sketch FileUpload verwendet.
- Dann noch die Flash4.0-Lib "installiert"
- Den Sketch an mein Netzwerk angepasst, und dann auf nen Uno mit Ethernet-Shield geladen.
- Nach dem Start sieht es eigentlich erfolgreich aus:
Console:
Code: [Select]
Free RAM: 601
Setting up SD card...
Setting up the Ethernet card...
Web server starting...
Ready to accept HTTP requests.


Aber wie soll das mit dem File-Upload jetzt funktionieren?
Da steht zwar, man soll "curl" verwenden
Quote
You can now test uploading a file using curl:
*Note that since the handler in the source looks like this:
{"/upload/" "*", TinyWebServer::PUT, &TinyWebPutHandler::put_handler }
you must ensure that the path '/upload/' is in your submitted URL
curl -0 -T index.htm http://my-arduino-ip-address/upload/

Aber damit hab ich noch nie was gemacht.

Und dann fürchte ich, dass mir wohl bald der Speicher zu klein wird. Das FileUpload hat jetzt 26k. Wenn ich dann noch den Hex-Uploader dazuwerfe, dann wirds wohl eng.
Vllt. kann man das FileUpload ja noch etwas abspecken, aber dazu muss ich es erst mal verstehen. Und da ich nicht so der Profi bin, klappt so was erst, wenn ich es mal am Laufen habe.
Arduino 1.0.5 | Arduino UNO & MEGA | Arduino 1.54r2 mit DUE

hk007

OK. klappt jetzt.
Muss man auch erst mal wissen, dass curl nicht in die Browserzeile eingetippt werden muss, sondern daß es ein Kommandozeilen-Tool ist. :* :* :*

Arduino 1.0.5 | Arduino UNO & MEGA | Arduino 1.54r2 mit DUE

pylon

Quote
Und dann fürchte ich, dass mir wohl bald der Speicher zu klein wird. Das FileUpload hat jetzt 26k. Wenn ich dann noch den Hex-Uploader dazuwerfe, dann wirds wohl eng.
Vllt. kann man das FileUpload ja noch etwas abspecken, aber dazu muss ich es erst mal verstehen. Und da ich nicht so der Profi bin, klappt so was erst, wenn ich es mal am Laufen habe.


Ich glaube, sowohl der FileUpload (bzw. der TinyWebServer) als auch der Hex-Programmer lassen sich noch tüchtig verkleinern, sollte also hinzukriegen sein.

hk007


Ich glaube, sowohl der FileUpload (bzw. der TinyWebServer) als auch der Hex-Programmer lassen sich noch tüchtig verkleinern, sollte also hinzukriegen sein.


Ja, mag sein, aber nicht für mich.  :(
Ich hab schon einiges mit Arduino und Webserver (aus den Arduino-Beispielen)  gemacht, aber diesen Code kann ich einfach nicht nachvollziehen.
Ich hab zwar schemenhaft verstanden, was die einzelnen Teile machen, aber mir kommt es vor, als sei das in einer "anderen" Sprache geschrieben.
Da fehlts mir einfach an C-Kenntnissen.
Arduino 1.0.5 | Arduino UNO & MEGA | Arduino 1.54r2 mit DUE

pylon

Ich habe gestern abend mal den Hex-Uploader soweit zusammengestript, dass er nur noch knapp 14 kB gross ist. Jetzt steht noch der Ersatz der SdFat-Library im Uploader oder der SD-Library im TinyWebServer an und  das Entfernen der unbenötigten Webserver-Teile (GET, POST und DELETE werden nicht benötigt), dann sollte das Ganze in die 32kB des UNO passen. Wäre es vertretbar, den Bootloader wegzulassen, damit mehr Platz für den Sketch übrig bleibt?

mkl0815


Wäre es vertretbar, den Bootloader wegzulassen, damit mehr Platz für den Sketch übrig bleibt?

Müßte denn nicht der Sketch dann der Bootloader werden? Der Sketch muss ja auf dem Arduino bleiben, damit man den erneut flashen kann, wenn mal ein anderes HEX-File übertragen werden kann.
Außer der Sketch ist auch immer Teil des neuen Sketches der übertragen wird.

pylon

Quote
Außer der Sketch ist auch immer Teil des neuen Sketches der übertragen wird.


Nein, dieser Arduino wird immer nur als Programmer für einen anderen Arduino eingesetzt. Siehe weiter oben im Thread.

mkl0815

Ok, das hatte ich übersehen. Ein Arduino ist dann quasi der Service-Prozessor des eigentlichen Projekt-Arduino.

hk007


Ich habe gestern abend mal den Hex-Uploader soweit zusammengestript, dass er nur noch knapp 14 kB gross ist. Jetzt steht noch der Ersatz der SdFat-Library im Uploader oder der SD-Library im TinyWebServer an und  das Entfernen der unbenötigten Webserver-Teile (GET, POST und DELETE werden nicht benötigt), dann sollte das Ganze in die 32kB des UNO passen. Wäre es vertretbar, den Bootloader wegzulassen, damit mehr Platz für den Sketch übrig bleibt?


Hey cool  :D
Bootloader braucht man bei dem "Prorammer-Uno" ja eh nicht.
Arduino 1.0.5 | Arduino UNO & MEGA | Arduino 1.54r2 mit DUE

Go Up