Problema de memoria del cargador de arranque TCP

Estoy tratando de escribir un cargador de arranque TCP simple e independiente para un microcontrolador AVR.

En este momento, tengo una colección de APN que pesa casi 14 KB de memoria. El código de la aplicación establecerá una conexión TCP con el servidor, utilizando el APN de la red que se almacenó en el espacio del programa y verifica con el servidor si hay algún código de aplicación actualizado. Si el servidor responde positivamente, el código reiniciará el controlador para ingresar al programa del cargador de arranque. El cargador de arranque buscará el código de la aplicación y lo almacenará en el espacio del programa.

Mi pregunta es, ¿cómo puedo hacer el cargador de arranque TCP independiente sin depender del código de la aplicación para establecer la conexión TCP? Como el cargador de arranque solo está limitado a 8 KB de memoria flash, ¿cómo puedo almacenar los 14 KB de APN + 4 KB de código del cargador de arranque en esta sección de arranque de 8 KB?

Código de aplicación:

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

Código del cargador de arranque:

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

EDITAR: mi principal preocupación aquí es que, si se supone que algo salió mal al actualizar el nuevo código de la aplicación, entonces el cargador de arranque no puede conectarse al servidor y me temo que no hay otra opción que programarlo con un programador.

Respuestas (1)

¿Cuánta memoria hay en el sistema?

Si tiene suficiente memoria, no debería ser un problema almacenar el código APN en la memoria normal y llamarlo desde el cargador de arranque (esto es lo que hacen los sistemas operativos normales de todos modos). Debe tener cuidado de nunca sobrescribirlo utilizando una buena gestión de la memoria. (Lo pondría en un extremo de la memoria del sistema). El punto es que si desea usar más memoria cuando escribe aplicaciones, debe comenzar a escribir memoria con el cargador de arranque sobre el código APN.

Además, también debería poder usar este código en sus aplicaciones si es lo suficientemente cuidadoso.

Hay algunas referencias a esto aquí que enlazan con este excelente video de Mike.