Sunday 26 November 2017

Intel Hex Vs Binary Options


AVR Libc Manual de referencia Un proyecto sencillo Generación de archivos Hex de Intel Tenemos un binario de la aplicación, pero ¿cómo lo conseguimos en el procesador La mayoría (si no todos) los programadores no aceptarán un archivo ejecutable GNU como un archivo de entrada, por lo que necesitamos Hacer un poco más de procesamiento. El siguiente paso es extraer partes del binario y guardar la información en archivos. hex. La utilidad GNU que hace esto se denomina avr-objcopy. El contenido de la ROM puede extraerse de nuestros proyectos binarios y ponerlo en el archivo demo. hex utilizando el siguiente comando: avr-objcopy - j. text - j. data - O ihex demo. elf demo. hex El archivo demo. hex resultante contiene : 1000000020E0A0E6B0E001C01D92A336B207E1F700: 100010001F920F920FB60F9211242F938F939F93DD: 1000200080916200882301F1813081F48091600029: 100030009091610001979093610080936000009718: 1000400049F41092620080E090E004C0809160006A: 10005000909161009BBD8ABD9F918F912F910F90D0: 100060000FBE0F901F9018958091600090916100D5: 10007000019690936100809360008F3F23E0920788: 1000800049F781E0809362008FEF93E0E3CF83E84C: 100090008FBD8EB581608EBD1BBC1ABC82E087BB54: 1000A00084E089BF7894089583E88FBD8EB5816020: 1000B0008EBD1BBC1ABC82E087BB84E089BF7894EC: 1000C00085B7806885BF889585B78F7785BFF8CF5E: 0800D000F89400C0F894FFCF82: 00000001FF la opción - j indica que queremos que la información de la. text y el segmento. data extraído. Si especificamos el segmento EEPROM, podemos generar un archivo. hex que se puede usar para programar la EEPROM: avr-objcopy - j. ext --change-section-lma. extro - O ihex demo. elf demoeeprom. hex Hay No demoeeprom. hex archivo escrito, ya que el archivo estaría vacío. A partir de la versión 2.17 de binutils de GNU, el comando avr-objcopy que se utiliza para generar los archivos EEPROM vacíos ahora se anula debido a la sección de entrada vacía. eeprom, por lo que estos archivos vacíos no se generan. También señala un error al Makefile que será cogido allí, y hace que imprime un mensaje sobre el archivo vacío que no se está generando. Hexadecimal al convertidor decimal son los números con la base 16. Consiste en un sistema de 16 números donde 0- 9 se representan como 0,1,2,3,4,5,6,7,8,9 y 10 - 15 se representan como A, B, C, D, E, F. No tiene símbolos como 10 u 11, así que toma letras como símbolo del alfabeto inglés. Decimal es el sistema de diez números de base 10 y Binario es un sistema de números de base 2 (0s y 1s). Utilice Convertidor hexadecimal a decimal para convertir hexadecimal a binario (números con base 2) y números decimales (números con base 10). Convertir Hexadecimal a código binario para agregar este calci a su sitio web Sólo copie y pegue el código a continuación en su página web donde desea mostrar esta calculadora. Mis publicaciones anteriores estaban alrededor del compilador gcc Kinetis que viene con CodeWarrior para MCU10.3. MCU10.3 viene también con el compilador Freescale Kinetis como en MCU10.2. En 8220S-Record Generation con gcc para ARM / Kinetis 8221 exploré cómo generar S19 u otros archivos de salida con gcc. Sin embargo, sólo puede producir un formato de archivo a la vez. ¿Qué pasa si necesito múltiples formatos o un formato diferente. ¿Qué pasa si necesito hacer lo mismo con las herramientas de compilación que no son de gcc? Los registros S suelen ser fáciles, tal como se apoya en el vinculador. Otros formatos necesitan un poco más de plomería. Así que este post es cómo puedo crear y manipular los diferentes formatos de salida, por lo que puedo utilizarlo con un gestor de arranque. Archivos S19 El formato de S19 (o S-Records) se explica en este artículo de Wikipedia. Para generar registros S (o archivos S19) p. Con el Freescale Kinetis (no-gcc) es fácil: hay una casilla de verificación para ello: Generar opción S-Record Esto pasa la opción - srec al vinculador, y produce algo así: X-Record (o Intel Hex) Otra opción es producir un archivo X-Record con pasar una opción - xrec al vinculador: X-Record o Intel Hex opción En realidad, la opción de nombrar es confuso, ya que el formato de archivo que produce s conocido como Intel Hex. A continuación se muestra el comienzo del archivo producido para la misma aplicación que anteriormente, pero en formato X-Record / Intel Hex: Archivos binarios Ambos formatos anteriores (S-Record e Intel Hex) son formatos de texto. Otro formato común es el formato 8216binary8217. En este formato, la memoria se escribe simplemente byte by byte 8216as is8217. Entonces, ¿cómo puedo generar un formato como Burner La solución es utilizar la utilidad de quemador que es una herramienta integrada para la cadena de herramientas 8 / 16bit (Freescale S08). Para proyectos S08 puedo tener un archivo. bbl (Batch Burner Language) en mi proyecto para generar todo tipo de formatos de salida. La sintaxis del archivo. bbl se explica en la documentación, consulte este enlace. Y la documentación no es muy necesaria, ya que hay una interfaz gráfica de usuario. Sugerencia: la utilidad Burner es realmente potente y puede utilizarse en trabajos por lotes para realizar todo tipo de manipulaciones en los archivos: conversión entre formatos, extracción o fusión de archivos, etc. Burner Executable El ejecutable del quemador se encuentra dentro de la carpeta MCU103 MCUprog junto con las herramientas de construcción S08. Pero se puede utilizar para cualquier cosa que produzca como formato estándar de ELF. Grabador ejecutable dentro de la carpeta MCU prog Interfaz de línea de comandos El quemador tiene una interfaz de línea de comandos / batch. Como Burner. exe es una aplicación Win32, se puede utilizar desde el shell DOS o hacer archivos con el piper. exe en el frente para tenerlo como la aplicación Console32: Interfaz gráfica de la Interfaz de la Línea de Comando del Interruptor Iniciando el Burner. exe en modo gráfico Hacer doble clic con el Explorador de Windows) se abre en un modo de ventana: Quiero utilizar el modo gráfico para configurarlo para producir un archivo de script para mí, que puedo utilizar más adelante para producir un archivo binario (o cualquier cosa que desee). Para esto abro el cuadro de diálogo del quemador: Archivos de entrada y salida del quemador Aquí especifico mis archivos de entrada y salida. En la pestaña 8216Content8217 especifico el formato y el rango de memoria, además de lo que debería suceder para las brechas de memoria (byte undef): Configuración de contenido de quemador La pestaña 8216Command Line8217 muestra la fuente de línea de comandos generada (lenguaje de quemador por lotes) Un paso posterior a la construcción: Archivo de comandos del quemador Puedo ejecutar esto directamente. Para ello, vuelvo a la pestaña 8216Input / Output8217 y presione el botón 8216Execute8217: Botón de ejecución del quemador Reporta el estado y el resultado a la consola: Salida de la consola del quemador La inspección del archivo binario generado con EHEP muestra esto: Archivo binario en EHEP Hex View Automation : Paso de Post-Build Aunque el modo de interfaz de usuario está bien para explorar cosas, quiero usar el quemador como parte de mi compilación. Para ello, utilizo el mismo concepto que usé en mi publicación en el CRC. Construir pasos. Pero primero necesito crear un archivo con mis comandos en él. Para ello, puedo copiar y pegar los comandos de la pestaña Burner 8216Command File8217: Burner. bbl con macros Tenga en cuenta que he reemplazado la ruta absoluta por una macro (ABSFILE). Quiero tener mi script trabajando en relación con mi proyecto. Voy a pasar esa variable en la línea de comandos para el quemador a continuación. A continuación, se debe configurar un paso posterior a la construcción. Para este I8217m con la siguiente línea de comandos: Paso de construcción posterior con el quemador Uso el piper. exe para que el quemador se ejecuta en modo de línea de comandos. La opción - F pasa el archivo de comandos en el idioma del quemador por lotes. Y la opción - Env pasa una variable de entorno que puedo usar como se indica en el archivo de mi hornada por lotes. Con esto, cuando construyo mi aplicación, el binario (o lo que hago con el quemador) se crea al final: Burner Post Build en la vista de la consola Y para mi archivo del quemador tengo la salida (aquí un archivo binario) generado en Mi proyecto: Archivo de quemador y archivo de salida en el proyecto Resumen I8217m usando el enfoque anterior para mis proyectos S08, ColdFire y Kinetis y funciona perfectamente para mí. Especialmente la flexibilidad y la potencia de la utilidad quemador es clave para mí. Y resuelve la limitación usual de la herramienta de compilación, que sólo admite un formato. Con el quemador puedo manipular el formato, producir múltiples formatos o prácticamente hacer lo que quiera. Construcción de la configuración int flash debug para el proyecto mfsusbtwrk20d72m 8220C: FreescaleCW MCU v10.6.4gnubinmingw32-make8221 - j8 pre-build main-build C: /Freescale/FreescaleMQX42/mfs/examples/mfsusb/build/cw10gcc/mfsusbtwrk20d72m/makedir. bat 8220C : / Freescale / FreescaleMQX42 / mfs / examples / mfsusb / build / cw10gcc / mfsusbtwrk20d72m / int flash debug8221 8216 8216 8216Ejecución de destino 8 mfsusbtwrk20d72m. hex8217 8216Invoking: ARM Ltd Windows GNU Crear imagen en Flash 8220C: / Freescale / CW MCU v10.6.4 / CrossTools / Brazo-ninguno-eabi-gcc-473 / bin / brazo-ninguno-eabi-objcopy8221 - O srec mfsusbtwrk20d72m. elf 8220mfsusbtwrk20d72m. hex8221 makefile: 112: advertencia: receta primordial para el objetivo mfsusbtwrk20d72m. elf8217 makefile: 71: Receta para la meta mfsusbtwrk20d72m. elf8217 C: / Freescale / CW MCU v10.6.4 / CrossTools / brazo-ninguno-eabi-gcc-473 / bin / brazo-ninguno-eabi-objcopy: 8216mfsusbtwrk20d72m. elf8217: Ningún archivo mingw32-make: Mfsusbtwrk20d72m. hex Error 1 Hola Marco, el problema es que mfsusbtwrk20d72m. elf no se puede encontrar. ¿Existe ese archivo en su subcarpeta FLASH Y por qué tiene un 8216pre-build8217 y un 8216main-build8217 tal vez debería simplemente eliminar la salida (DEBUG FLASH) carpeta para obtener un estado limpio He intentado eliminar Depurador y Flash Folders y recompilar el Código como usted sugirió, pero didn8217t trabajo. Cada vez que habilito la generación de Flash Image en CodeWarrior para cualquier demo de MQX 4.2 (acabo de probar varias otras demostraciones MQX 4.2), obtengo este error y el archivo. elf simplemente desaparece. ¿Puede reproducir este problema en su lado Hola Marco, I8217m no utilizar MQX en mis proyectos, por lo que no es fácil para mi reproducir su configuración. Pero lo que tenía un problema con el pasado con CodeWarrior es tener opciones especiales por archivo / carpeta como se describe aquí: mcuoneclipse / 2013/06/12 / trampas-y-trampas-no-hexbins19-file-created-with-gnu / Quizás este es su problema. También sé que algunos proyectos MQX usan pasos especiales de pre-compilación con la configuración personalizada del proyecto 8217, por lo que esto puede ser una fuente de problemas también, no estoy seguro.

No comments:

Post a Comment