Hablando con el Cortex M3 (Stellaris EKS-LM3S1968) bajo linux

He buscado bastante, pero no he encontrado una manera fácil (más o menos) de cargar programas en el Cortex M3 usando Linux.

Intenté usar la cadena de herramientas de brazo de convocatoria https://github.com/esden/summon-arm-toolchain/ pero tenía problemas para descargar una de sus dependencias.

¿Alguien sabe de alguna otra opción?

¿Qué necesitas? ¿ Un Ccompilador, una herramienta flash o un depurador?
Supongo que un compilador c y una herramienta flash, no tan preocupado por un depurador.

Respuestas (2)

El Ccompilador que uso para mi Cortex M3 es Soucery Codebench Lite Edition . Hay algunas alternativas como YAGARTO . Debe escribir (o encontrar) un script de enlace que se ajuste a su MCU.

También desea el paquete CMSIS para su MCU. Que contiene todas las definiciones de registro.

Para flashear y depurar uso OpenOCD , esto permite usar GDB como interfaz para ambas tareas. La placa EKS-LM3S1968 se envía con un chip JTAG a USB compatible con OpenOCD .

OK, finalmente lo hice funcionar, así que para cualquier otra persona que vea esto, aquí están los pasos para trabajar con OpenOCD en Ubuntu Linux (suponiendo que tenga compilado su microprograma). 1) sudo apt-get install openocd

ARM JTAG es semiestándar y tiene muchas implementaciones abiertas de hardware y software.

Pero, como en muchos dispositivos comparables, también tiene una opción de menor costo:

El cargador flash serie Stellaris ® es una utilidad residente en flash preprogramada que se utiliza para descargar código a la memoria flash de un dispositivo sin el uso de una interfaz de depuración. El cargador flash en serie utiliza una interfaz de paquetes simple para proporcionar una comunicación síncrona con el dispositivo. El cargador flash se sale del cristal y no habilita el PLL, por lo que su velocidad está determinada por el cristal utilizado. Las dos interfaces seriales que se pueden usar son las interfaces UART0 y SSI0. Para simplificar, tanto el formato de datos como el protocolo de comunicación son idénticos para ambas interfaces seriales.

En otras palabras, todo lo que realmente necesita es un puerto serie de velocidad de transmisión configurable y algún software que implemente la transferencia de datos descrita en la siguiente parte de la hoja de datos (que se encuentra actualmente en http://www.ti.com/lit/ ds/symlink/lm3s1968.pdf ) Valdría la pena realizar una búsqueda en la web para ver si ya existe una implementación de código abierto de una utilidad de cargador compatible.

Para su problema de cadena de herramientas, el paquete de descarga GCC de Code Sourcery probablemente debería funcionar, solo necesitará un script de enlace adecuado para el diseño de memoria de la parte, que probablemente pueda encontrar con una búsqueda en la web de proyectos dirigidos a esa parte realizada por otros entusiastas de herramientas abiertas .

Creo que veo lo que estás diciendo, así que visto que no estoy interesado en la capacidad de depuración, ¿podría usar el cargador flash en serie y omitir el JTAG por completo? ¿Todavía sería posible hacerlo usando el puerto USB de la placa?
Probablemente cambiaría algunos pines del modo de arranque e ignoraría el puerto USB, a menos que vaya a un chip serie USB. Si la placa ya tiene un depurador USB integrado, entonces su problema podría ser la necesidad de un software compatible; a veces, los protocolos de depuración integrados se someten a ingeniería inversa y se vuelven a implementar en herramientas de código abierto si hay suficiente interés en la placa de evaluación (por ejemplo, si se vende como un líder de pérdidas para aumentar el interés en el chip)