Herramientas de usuario

Herramientas del sitio


desarrollo:firmware:bootloader

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

desarrollo:firmware:bootloader [2014/10/25 23:54]
evolentini Actualización de la arquitectura conforme al desarrollo
desarrollo:firmware:bootloader [2014/11/27 12:36] (actual)
ppezoimburu Formato y correcciones menores.
Línea 15: Línea 15:
 ==== ¿Cómo está formado el bootloader? ==== ==== ¿Cómo está formado el bootloader? ====
 ### ###
-El bootloader está formado por dos partes básicas: un conjunto de aplicaciones que corren en una PC y una conjunto de tareas y rutinas que se ejecutan en la CIAA.+El bootloader está formado por dos partes básicas: un conjunto de aplicaciones que corren en una PCy una conjunto de tareas y rutinas que se ejecutan en la CIAA.
 ### ###
  
Línea 32: Línea 32:
   * Grabación de la imagen en la memoria Flash.   * Grabación de la imagen en la memoria Flash.
  
-La forma en que estas tareas se ensamblan entre si y con el firmware principal de CIAA puede configurarse para obtener distintos modos de operación.+### 
 +La forma en que estas tareas se ensamblan entre sí y con el firmware principal de CIAA puede configurarse para obtener distintos modos de operación. 
 +###
  
 ===== Arquitectura del bootloader ===== ===== Arquitectura del bootloader =====
Línea 38: Línea 40:
 {{ :​desarrollo:​firmware:​arquitectura_booloader.png?​nolink |}} {{ :​desarrollo:​firmware:​arquitectura_booloader.png?​nolink |}}
  
-Para la implementación inicial del bootloader se optó por un proceso de grabacion ​On Fly. Para ello la memoria Flash se divide en tres partes: una parte muy pequeña contiene un Bootmanager,​ una segunda ​fraccion, ​se ubica el programa de Bootloader y el resto de la memoria ​que disponible para el MainFirmware.  +### 
-En el funcionamiento normal de la CIAA el Bootmanager toma el control durante el arranque y lo tranfiere al Main Firmware y este es el que opera el equipo. Cuando se requiere una actualizacion mediante una bandera se indica al Bootmanager que tranfiera el control al Bootloader, quien se encarga únicamente de actualizar la imagen del Main Firmware. Para ello el Bootloader borra el area de memoria ocupada por el Main Firmware y la escribe con la imagen enviada por la PC del cliente. +Para la implementación inicial del bootloader se optó por un proceso de grabación ​On Fly. Para ello la memoria Flash se divide en tres partes: una parte muy pequeña ​que contiene un Bootmanager,​ una segunda ​fracción donde se ubica el programa de Bootloader y el resto de la memoria ​queda disponible para el MainFirmware. 
-Si por algun problema no se puede completar la actualización del Main Firmware, el Bootmanager seguirá transfiriendo el control al Bootloader hasta la actualización pueda completarse. De esta forma no aseguramos que el equipo no quede inoperable. +###
-Para la eventual actualizacion del Bootloader será necesesario un proceso indirecto: en un primer paso se actualizará el Main Firmware por uno especial destinado únicamente a la actualizacion del Bootloader. Con este Main Firmware corriendo se procederá a la actualización del Bootloader y una vez completa la actualización del mismo se volverá al Main Firmware original.+
  
 +###
 +En el funcionamiento normal de la CIAA el Bootmanager toma el control durante el arranque, lo transfiere al Main Firmware y este es el que opera el equipo. Cuando se requiere una actualización,​ mediante una bandera se indica al Bootmanager que transfiera el control al Bootloader, quien se encarga únicamente de actualizar la imagen del Main Firmware. Para ello el Bootloader borra el área de memoria ocupada por el Main Firmware y la escribe con la imagen enviada por la PC del cliente.
 +###
 +
 +###
 +Si por algún problema no se puede completar la actualización del Main Firmware, el Bootmanager seguirá transfiriendo el control al Bootloader hasta que la actualización pueda completarse. De esta forma nos aseguramos de que el equipo no quede inoperable.
 +###
 +
 +###
 +Para la eventual actualización del Bootloader será necesario un proceso indirecto: en un primer paso se actualizará el Main Firmware por uno especial destinado únicamente a la actualización del Bootloader, con este Main Firmware corriendo se procederá a la actualización del Bootloader, y una vez completa la actualización del mismo se volverá al Main Firmware original.
 +###
  
 ==== ¿Qué tareas tiene cada parte del bootloader? ==== ==== ¿Qué tareas tiene cada parte del bootloader? ====
-  * CIAA Firmware Image Preparation Utility (cfip): Es una utilidad que ejecuta en la PC del desarrollador y tiene siguientes funciones básicas: 
-    * La preparación de la imagen indicando a qué hardware corresponde y para qué modo de operación está compilado. 
-    * Encriptar la imagen: existe la opción de encriptar la imagen de firmware que se quiere distribuir para evitar las duplicaciones indebidas. En ese caso esta utilidad es la encargada de encriptar la imagen antes de la distribución. 
-    * Firmar la imagen: para asegurarse que la imagen no es alterada ya sea en forma deliberada o por un error en las comunicaciones la ultima etapa de la preparación consiste en la aplicación de una firma digital por parte del desarrollador. 
  
-  * CIAA Firmware Image Distribution ​Utility (cfid): Es una utilidad que ejecuta en la PC del cliente ​y tiene las siguientes funciones básicas: +  ​* **CIAA Firmware Image Preparation ​Utility (cfip)**: Es una utilidad que se ejecuta en la PC del desarrollador ​y tiene siguientes funciones básicas: 
-    * Verificación ​de la imagen: ​la primera responsabilidad ​de la utilidad ​de la PC es asegurarse ​la proveniencia ​la imagen que se quiere ​grabar, que la misma no fue alterada en ninguna forma  +    * Preparación ​de la imagen: ​indicando a qué hardware corresponde y para qué modo de operación está compilado. 
-    * Verificación del destino : la segunda responsabilidad de la utilidad es recuperar informacion del hardware al que se le enviará ​la imagen ​para ver si la misma puede aplicarse en dicho equipo+    * Encriptación ​de la imagen: existe ​la opción de encriptar ​la imagen ​de firmware ​que se quiere ​distribuir para evitar las duplicaciones indebidas. En ese caso esta utilidad es la encargada de encriptar ​la imagen ​antes de la distribución
-    * Transmisión ​de la imagen: ​una vez que la imagen es aceptada como válida entonces la misma se divide ​en paquetes y envía a la CIAA verificando la correcta recepción ​de la misma.+    * Firma de la imagen: ​para asegurarse de que la imagen ​no es alterada, ya sea en forma deliberada o por un error en las comunicaciones, ​la ultima etapa de la preparación consiste en la aplicación de una firma digital por parte del desarrollador.
  
-  * Bootloader: es un programa completo para la CIAA formado por una version ​reducida del sistema operativo OSEK y del updater, una coleccion ​de rutinas preparadas para la actualizacion ​del firmware principal de la CIAA. En el sistema oprerativo OSEK se requieren, ​ademas ​de los servicios ​basicos, los siguientes controladores:​ +  * **CIAA Firmware Image Distribution utility (cfid)**Es una utilidad que ejecuta en la PC del cliente y tiene las siguientes funciones básicas: 
-    * Serial Driver: ​Controlador ​del puerto serial del equipoes utilizado como capa fisica ​del protocolo ​modbus +    * Verificación de la imagen: la primera responsabilidad de la utilidad de la PC es asegurarse la proveniencia de la imagen que se quiere grabar, comprobando que la misma no fue alterada en ninguna forma. 
-    * ModBus Driver: ​Se utiliza el protocolo ModBus como capa de transporte el intercambio de mensajes entre el Update Protocol y la utilidad de cfid de la PC del cliente. +    * Verificación del destino: la segunda responsabilidad de la utilidad es recuperar información del hardware al que se le enviará la imagen para ver si la misma puede aplicarse en dicho equipo. 
-    * Flash Driver: ​Implementa ​las primitivas para el borrado y la escritura en flash dependientes del procesador utilizado. +    * Transmisión de la imagen: una vez que la imagen es aceptada como válida entonces la misma se divide en paquetes y se envía a la CIAA verificando la correcta recepción de la misma. 
-  * Updater: ​se pueden identificar las siguiente ​funciones:​ + 
-    * Update ​ProtocoloEs el responsable de la recepcion ​de los mensajes de actualizacion ​de flash y tambien ​es el encargado de la generación de los mensajes de respuesta a dicha utilidad. +  * **Bootloader**:​ Es un programa completo para la CIAA formado por una versión ​reducida del sistema operativo OSEK y del updater, ​una colección ​de rutinas preparadas para la actualización ​del firmware principal de la CIAA. En el sistema oprerativo OSEK se requieren, ​además ​de los servicios ​básicos, los siguientes controladores:​ 
-    * Desencription: ​Es la estapa ​encargada de la desencriptacion ​de la imagen, si es que la misma fuera encriptada. +    * Serial Driver: ​controlador ​del puerto serial del equipo ​que es utilizado como capa física ​del protocolo ​ModBus. 
-    * Update Services: ​Es la encargada del proceso general de actualizacion, como asi tambien ​del control de errores en el proceso.+    * ModBus Driver: ​se utiliza el protocolo ModBus como capa de transporte ​para el intercambio de mensajes entre el Update Protocol y la utilidad de cfid de la PC del cliente. 
 +    * Flash Driver: ​implementa ​las primitivas para el borrado y la escritura en flash dependientes del procesador utilizado. 
 + 
 +  ​* **Updater**Se pueden identificar las siguientes ​funciones:​ 
 +    * Update ​Protocoles el responsable de la recepción ​de los mensajes de actualización ​de flash y también ​es el encargado de la generación de los mensajes de respuesta a dicha utilidad. 
 +    * Desencription: ​es la etapa encargada de la desencriptación ​de la imagen, si es que la misma fuera encriptada. 
 +    * Update Services: ​es la encargada del proceso general de actualización, como así también ​del control de errores en el proceso
 + 
 +  * **Bootmanager**:​ Es la rutina que toma el control en el arranque de la CIAA y tiene como función principal determinar si se cede el control al Bootloader o bien al Main Firmware.
  
-  * Bootmanager:​ es la rutina que toma el control en el arranque de la CIAA y tiene como función principal determinar si se cede el control al Bootloader o bien al Main Firmware. 
  
 ===== Comentarios ===== ===== Comentarios =====
 +
   * Para el desarrollo de las herramientas para la PC se plantea el esquema habitual de Linux: desarrollar los programas para que utilicen la línea de comandos y eventualmente en un futuro desarrollar una interface gráfica que simplifique el uso de la misma.   * Para el desarrollo de las herramientas para la PC se plantea el esquema habitual de Linux: desarrollar los programas para que utilicen la línea de comandos y eventualmente en un futuro desarrollar una interface gráfica que simplifique el uso de la misma.
 +
   * El desarrollo de las herramientas para la PC se plantea en C++, dando prioridad a los sistemas POSIX y dejando el sistema Windows para una segunda etapa.   * El desarrollo de las herramientas para la PC se plantea en C++, dando prioridad a los sistemas POSIX y dejando el sistema Windows para una segunda etapa.
-  ​* La secuencia de arranque soportaría varios desencadenadores para determinar a quien debe ceder el control. Los propuestos hasta el momento son: + 
-    * Un condición física como un botón o una llave +  ​* La secuencia de arranque soportaría varios desencadenadores para determinar a quién ​debe ceder el control. Los propuestos hasta el momento son: 
-    * Un paquete especial del protocolo ​modbus +    * Un condición física como un botón o una llave. 
-    * Una verificación CRC de las imágenes en memoria +    * Un paquete especial del protocolo ​ModBus. 
-    * Una tabla con marcas ​especificas ​para esta decisión +    * Una verificación CRC de las imágenes en memoria. 
-  *  Se podrá configurar qué desencadenadores se utilizarán realmente en la secuencia de arranque ​mediantes ​directivas al compilador, para poder por ejemplo desactivar el chequeo de CRC y obtener un arranque mas rápido.+    * Una tabla con marcas ​específicas ​para esta decisión
 + 
 +  *  Se podrá configurar qué desencadenadores se utilizarán realmente en la secuencia de arranque ​mediante ​directivas al compilador, para poder por ejemplo desactivar el chequeo de CRC y obtener un arranque mas rápido. 
   * La secuencia de arranque no podrá actualizarse en sitio, la única posibilidad de actualización será mediante una interface de depuración.   * La secuencia de arranque no podrá actualizarse en sitio, la única posibilidad de actualización será mediante una interface de depuración.
-  ​* Se plantea incluir en el proceso de grabación del bootloader una restricción de las zonas que el mismo esta autorizado a escribir, para de esta forma garantizar la integridad de la secuencia de arranque y del firmware en ejecución, evitando que un error de comunicaciones o una grabación fallida deje al sistema en un estado del cual no pueda recuperarse. + 
-  * Si el procesador incluye máscaras de protección para evitar la grabación de determinadas zonas de Flash se utilizaran las mismas además del mecanismo antes descripto para asegurar la integridad de las zonas criticas de memoria. +  ​* Se plantea incluir en el proceso de grabación del bootloader una restricción de las zonas que el mismo está autorizado a escribir, para de esta forma garantizar la integridad de la secuencia de arranque y del firmware en ejecución, evitando que un error de comunicaciones o una grabación fallida deje al sistema en un estado del cual no pueda recuperarse. 
-  * Se propone desarrollar primero la forma de trabajo ​ON FLY sin características adicionales como la encriptación o compresión. En este modo de trabajo es menor el trabajo compilación y pre procesamiento de la imagen.+ 
 +  * Si el procesador incluye máscaras de protección para evitar la grabación de determinadas zonas de Flashse utilizaran las mismas además del mecanismo antes descripto para asegurar la integridad de las zonas criticas de memoria. 
 + 
 +  * Se propone desarrollar primero la forma de trabajo ​On Fly sin características adicionales como la encriptación o compresión. En este modo de trabajo es menor el trabajo compilación y pre procesamiento de la imagen. 
   * En la primera versión se propone cambiar el proceso de firma de la imagen por un simple CRC para verificar que la imagen no es alterada.   * En la primera versión se propone cambiar el proceso de firma de la imagen por un simple CRC para verificar que la imagen no es alterada.
 +
  
 ===== Operación con doble imagen ===== ===== Operación con doble imagen =====
  
 ==== Arquitectura ==== ==== Arquitectura ====
-Durante la estapa ​de discusión sobre la forma de implementación del bootloader hubo sugerencias respecto a una forma alternativa de trabajo con dos imagenes ​de Main Firmware ​simultaneas ​en memoria. A continuación se encuentra la forma porpuesta ​para la implementacion de este esquema de trabajo utilizando básicamente los mismo módulos de software. +### 
 +Durante la etapa de discusión sobre la forma de implementación del bootloader hubo sugerencias respecto a una forma alternativa de trabajo con dos imágenes ​de Main Firmware ​simultáneas ​en memoria. A continuación se encuentra la forma propuesta ​para la implementacion de este esquema de trabajo utilizando básicamente los mismo módulos de software. 
 +###
 {{ :​desarrollo:​firmware:​bootloader_doble_imagen.png?​nolink |}} {{ :​desarrollo:​firmware:​bootloader_doble_imagen.png?​nolink |}}
  
Línea 97: Línea 123:
  
 ==== Ventajas ==== ==== Ventajas ====
-  * La principal ventaja de este modo de operación es disponibilidad,​ ya que permite una posible vuelta atrás si no puede aplicarse correctamente la nueva imagen o si la misma no responde en la forma esperada. ​+  * La principal ventaja de este modo de operación es la disponibilidad,​ ya que permite una posible vuelta atrás si no puede aplicarse correctamente la nueva imagen o si la misma no responde en la forma esperada. ​
  
 ==== Desventajas ==== ==== Desventajas ====
Línea 104: Línea 130:
  
 ==== Observaciones ==== ==== Observaciones ====
-  * Cabe aclarar que no es de esperar que la imagen presente problemas durante la grabación de la misma ya que es verificada antes del envío por la PC y antes de la grabación de la misma, siendo mas probable que se deba a errores de programación en el firmware en si mismo. +  * Cabe aclarar que no es de esperar que la imagen presente problemas durante la grabación de la misma ya que es verificada antes del envío por la PC y antes de la grabación de la misma, siendo mas probable que se deba a errores de programación en el firmware en sí mismo. 
-  * Podría existir una alternativa ​ para evitar la compilación en las zonas A o B agregando en el procesamiento inicial de la imagen de firmware los marcadores de que cambios realizar en la imagen al instalarla en la zona A o B. +  * Podría existir una alternativa ​ para evitar la compilación en las zonas A o B agregando en el procesamiento inicial de la imagen de firmware los marcadores de qué cambios realizar en la imagen al instalarla en la zona A o B.
- +
desarrollo/firmware/bootloader.txt · Última modificación: 2014/11/27 12:36 por ppezoimburu