Programe LPC1343 a través del cargador de arranque USB con el formato de ARCHIVO correcto

Me está costando mucho programar mi LPC1343 con el método mencionado en esta pregunta (¿ Puede un LPC1343 aceptar su programa inicial a través de USB? ).

Estoy usando una máquina Linux y arm-none-eabi-gcc. Compilé con éxito mi código para hacer parpadear un LED, y luego obtengo mi archivo .elf y uso arm-none-eabi-objcopy para convertirlo al formato final. Luego obtengo ese archivo en una memoria USB y en una máquina con Windows, y allí lo copio a mi LPC1343 a través de la interfaz USB.

Mi problema es que después de apagar el chip y entrar en el modo de ejecución, vuelve automáticamente al modo de cargador de arranque USB, lo que significa que no reconoció el archivo. He probado los siguientes formatos:

  • elf32-pequeño brazo
  • elf32-bigarm
  • elf32-pequeño
  • elf32-grande
  • enchufar
  • srec
  • simbolosrec
  • Verilog
  • tekhex
  • binario
  • hexadecimal

¿Alguien ha programado con éxito este chip a través de USB? Si es así, ¿qué formato de archivo se utilizó?

No pretende ser una "respuesta" a su pregunta, pero si bien el proceso que describe podría tener sentido para la implementación final, seguramente existe un esquema más eficiente para el desarrollo, como hacerlo de forma nativa desde Linux, usando SWD o un cargador de arranque UART, o incluso ejecutando Windows en una máquina virtual con carpetas compartidas?
Estaba demasiado molesto por ese baile USB (funcionaba, pero no era confiable), así que agregué una interfaz serial a la mía ( olimex.com/Products/ARM/NXP/LPC-P1343 ).
Muito Obrigado @Ricardo.
@Electropper - ¿Para la edición? ¡No es un problema! Veo que obtuviste tu respuesta. ¡Fresco!
@starblue definitivamente necesitamos hablar, pero la interfaz serial no permite programar la ROM del chip de todos modos, ¿o sí?

Respuestas (1)

El archivo es un archivo binario directo. Por lo tanto, los primeros cuatro bytes son el valor inicial del puntero de la pila, los siguientes cuatro bytes son el contador del programa inicial y siguen los vectores de interrupción. Como ejemplo, aquí están los primeros 32 bytes de un archivo en buen estado:

00 08 00 10 99 3c 00 00 21 40 00 00 25 40 00 00
29 40 00 00 2d 40 00 00 31 40 00 00 9a 7a fe ef

La palabra almacenada en la dirección 0x1C (séptima palabra) es una suma de comprobación de las primeras seis palabras. Consulte la sección 21.7 en el Manual del usuario de LPC13xx para obtener más detalles. Para el LPC1343, el archivo tiene exactamente el mismo tamaño que el flash: 32768 bytes.

[Chameless plug] He escrito un programa en C trivial para esto: bitbucket.org/jpc/nxpsum . Lo podrías encontrar útil.
Compré esta placa de olimex, y solo tengo cargador de arranque USB o SWD, pero según he leído, no puedo programarla con SWD. Entonces, ¿cuál es, después de todo, el formato que necesito para convertir el archivo para poder volcarlo en la carpeta USB? ¿Quizás no es el formato sino mi código lo que no funciona? Pd: estoy usando una máquina virtual con carpetas compartidas para mover el archivo al sistema de Windows.
@Electropper No entiendo su pregunta de seguimiento sobre el formato. El formato es binario simple y jpc ha ofrecido un programa para generarlo. No creo que no puedas usar SWD, pero es cierto que no puedes usar JTAG con un LPC1343. Que placa estas usando?
Muchas gracias jpc y Joe Hass, esta suma de verificación era todo lo que me faltaba, ahora finalmente puedo comenzar a trabajar con este dispositivo, aunque sé que entiendo mucho de lo que @starblue estaba hablando sobre el baile USB.