TCP-Bootloader-Speicherproblem

Ich versuche, einen einfachen, eigenständigen TCP-Bootloader für einen AVR-Mikrocontroller zu schreiben.

Im Moment habe ich eine Sammlung von APNs, die fast 14 KB Speicher wiegen. Der Anwendungscode stellt eine TCP-Verbindung mit dem Server her, indem er den APN des Netzwerks verwendet, der im Programmbereich gespeichert wurde, und überprüft den Server auf aktualisierten Anwendungscode. Wenn der Server positiv antwortet, startet der Code den Controller selbst neu, um in das Bootloader-Programm einzutreten. Der Bootloader ruft den Anwendungscode ab und speichert ihn im Programmbereich.

Meine Frage lautet: Wie kann ich den eigenständigen TCP-Bootloader erstellen, ohne vom Anwendungscode zum Herstellen der TCP-Verbindung abhängig zu sein? Da der Bootloader nur auf 8 KB Flash-Speicher beschränkt ist, wie kann ich die 14 KB APN + 4 KB Bootloader-Code in diesem 8-KB-Boot-Abschnitt speichern?

Anwendungscode:

  initiate TCP connection using APN in pgmspace;
  check server for any updates;
  if(yes)
  restart;
  else
  normal function;

Bootloader-Code:

  request server to send the updated application code;
  receive code and flash the application code;
  goto application code address;

BEARBEITEN: Mein Hauptanliegen hier ist, wenn angenommen, dass beim Flashen des neuen Anwendungscodes etwas schief gelaufen ist, der Bootloader keine Verbindung zum Server herstellen kann und ich fürchte, es gibt keine andere Möglichkeit, als ihn mit einem Programmierer zu programmieren

Antworten (1)

Wie viel Speicher ist auf dem System?

Wenn Sie genügend Speicher haben, sollte es kein Problem sein, den APN-Code im normalen Speicher zu speichern und ihn vom Bootloader aufzurufen (das machen normale Betriebssysteme sowieso). Sie sollten darauf achten, es niemals zu überschreiben, indem Sie eine gute Speicherverwaltung verwenden. (Ich würde es an einem Ende des Systemspeichers platzieren.) Der Punkt ist, wenn Sie mehr Speicher verwenden möchten, wenn Sie Anwendungen schreiben, müssen Sie mit dem Schreiben von Speicher mit dem Bootloader über dem APN-Code beginnen.

Außerdem sollten Sie diesen Code auch in Ihren Anwendungen verwenden können, wenn Sie vorsichtig genug sind.

Hier gibt es einige Verweise darauf, die auf dieses hervorragende Video von Mike verweisen .