Diseño

Una de las metas que debe perseguir el diseño de un Bootloader y que muchas veces es tema de discusión, es que debe de ocupar el menor espacio posible en la memoria flash del Micro, sin embargo esto es relativo y depende del canal de comunicación que se utilice para cargar la aplicación de usuario en el
Microcontrolador, por ejemplo: si utilizamos un Microcontrolador que implementa el módulo necesario para una conexión USB como el PIC18F4550 y queremos que el bootloader utilice ese canal de comunicación para cargar el programa de usuario, el firmware del Bootloader debe de incluir el «stack» correspondiente a la comunicación USB. Por lo tanto un Bootloader que utilice como canal de comunicación un puerto USB siempre ocupara mas memoria ROM que otro que utilice un puerto COMM serie.

Otro tema que se tiene que tener en cuenta en el diseño del Bootloader es la protección de las direcciones de memoria donde está cargado el BootLoader para evitar su sobre escritura. Esto se puede hacer de dos formas: por software o por hardware. 

Protección por software: cuando la protección es por software es el propio firmware del BootLoader el que se tiene que encargar antes de escribir en la memoria flash un nuevo programa de usuario que las direcciones implicadas en la operación de escritura no pertenezcan a las direcciones donde está guardado el propio BootLoader.

Protección por Hardware: algunos dispositivos pertenecientes a la familia PIC18 como el PIC18F46J11 y otros, permiten la protección contra escritura de un número determinado de registros de la parte baja de la memoria flash a través de los fusibles de configuración del PIC. Sin embargo la mayoría de dispositivos solo permiten la protección de escritura de los registros del principio de la memoria Flash. Si queremos utilizar la protección por hardware para estos dispositivos deberemos ubicar el BootLoader al principio de la flash, por contra si utilizamos la parte alta de la memoria para cargar el bootloader tendremos el inconveniente de tener que re direccionar el vector o vectores de interrupciones, con el incremento en la latencia que ello implica.

Por tanto no existe una solución única para todos los casos, siempre dependerá de las características del PIC a utilizar, del tipo de protección que queramos emplear, de si vamos a utilizar debuggers o no, etc.

No hay comentarios:

Publicar un comentario