arm bootloader

arm - Formato hexadecimal Intel y código independiente de posición usando gcc



bootloader (1)

No estoy seguro de si esto es específico del procesador que estoy usando, así que por lo que sea, estoy usando un Cortex M0 +. Me preguntaba: si genero un archivo hexadecimal a través de gcc usando -fPIC, produzco ... Código independiente de posición. Sin embargo, el formato de archivo hexadecimal intel que obtengo de objcopy siempre tiene información de dirección en el encabezado de cada línea. Si estoy tratando de escribir un gestor de arranque, ¿simplemente ignoro esa información, omito los bytes relacionados con ella y cargo el código actual en la memoria donde quiero, o tengo que hacer un seguimiento de ello de alguna manera?


El formato intel-HEX fue especialmente diseñado para programar PROM, EPROMS o procesadores con una EPROM interna y normalmente se usa con programadores para estos dispositivos. Las direcciones al principio de los registros no tienen mucho que ver directamente con el código del programa. Indican en qué dirección de la PROM se escribirán los datos. Recuerde también que la PROM puede asignarse en cualquier lugar en el espacio de direcciones del procesador, por lo que la dirección final puede cambiar de todos modos.

Siempre que no desee programar una PROM, debe eliminar todo, excepto los datos de los registros. (No olvides la suma de comprobación al final ;-)

Como entiendo el formato intel-HEX, los registros no deben ser contiguos, puede haber agujeros intermedios.

Algunas observaciones:

El parámetro -f PIC no es responsable del formato intel-HEX. Creo que en algún lugar de tus líneas de comando encontrarás -O ihex. Si desea tener un archivo que pueda ejecutarse, objcopy proporciona formatos de salida más adecuados.

Siempre que no escriba las primeras etapas del proceso de arranque usted mismo, no carga su gestor de arranque, se cargará para usted. La dirección en la que esto sucederá normalmente es fija y no modificable. Entonces no hay necesidad de código independiente de posición, pero tampoco duele.