hallo ! meine aufgabe is es ein bootloader zu bauen der über ethernet (TFTP) die flashapplication updaten kann. besser wäre allerdings noch aus sicherheitsgründen das Ur-programm im flash zu behalten und als update die neue version in ein anderen flashbereich zu bringen. Flash ist genug da (256kByte) für sogar weit aus mehr als 2 programme es geht darum möglichst sicher die software zu verändern von einiger entfernung ohne menschen hinschicken zu müssen wenn was schief läuft. habe hier schon einiges gelesen aber nicht herausbekommen ob soetwas praktikabel ist oder eher nicht . ( probleme mit IRQ-vektortabelle, flashen des zweitprogramms, einsprung in dieses) es geht ersteinmal um ein konzept / genaue vorstellungen zu details hab ich noch nicht. ::___offtopic____:: bootloader over Ethernet: lieber ETH-treiber/stack und speicherung der empfangen Programm-daten in applikation machen und dann nur noch im bootloader flashen (aus RAM) oder parallel (page-weise) empfangen anschließend flashen oder alles im bootloader machen ??
Hab das bei einer ähnlichen Applikation mal so gesehen, dass der Bootloader eine rudimentäre TCP/IP Schnittstelle sowie die Flashroutine beinhaltet hat. Der Bootloader war dann auch nicht mehr per Ethernet änderbar. Der Bootloader hat beim Reset 5s gewartet, falls dann keine Anfrage vom Flashtool ankam wurde die Applikation gestartet. Einzige Anforderung an die Applikation war halt, dass man IMMER einen Reset z.b. per Watchdog auslösen können muss. Die IP-Adresse des Boards war solange der Bootloader aktiv war statisch. Wenn du mehrere Boards im gleichen Subnetz betreiben willst, kannst du ja z.B. per DIP-Schalter einige Bits der IP-Adresse konfigurierbar machen.
Redboot kann das und noch einiges mehr... Und von ecoscentric gibt ess auch noch ein explizizes Flashtool was dann aber Geld kostet. Viele Grüße, Martin L.
erstmal danke .. ich werd dann mal anfangen irgendwas in die bootlosderSection zu schreiben und zu testen . muss ich da was beachten, bin ich irgendwie eigschränkt ? also die Interruptvektortabelle verschieben und dann müsste ich ja quasi wie in einer normalen applikation programmieren können, oder? __ und sowas wie springen zwischen bootloadercode und applicationcode ist nicht möglich oder ?? also ich mein wenn dann immer nur zu den startadressen oder ? sonst könnte man ja neue Porgrammdaten empfangen (im RAM puffern) in Bootloader springen und den puffer schreiben ins flash und dann wieder zurück in die applikation weitere daten empfangen usw... geht nicht so , oder ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.