Interfaz hecha a mano a SWD para escribir flash de chip ARM

2

Estoy interesado en crear una interfaz simple para SWD para poder escribir memorias flash de chips ARM. Es decir. para crear un dispositivo de programación impecable, más por ejercicio.

Empecé a leer la documentación y buscar ejemplos (porque creo que la gente ya lo ha intentado). Actualmente tengo algunas preguntas, por lo que agradecería la orientación:

  • Voy a configurar SWDCLK como salida normal y SWDIO como drenaje abierto (que actúa como entrada cuando está en alto-Z, ver más abajo). Sospecho que también está abierto en el lado El dispositivo de destino, por lo que con la ayuda de pull-up nunca tendré un cortocircuito por error, ¿es correcto?
  • ¿hay un período de reloj mínimo permitido? ¿O algo hará, incluso unos pocos Hertz? ¿O quizás esto depende del dispositivo de destino?
  • ¿es correcto que en el modo de espera ambas líneas se muevan ALTA en el lado del host, y cuando comienza la comunicación, se está cayendo la primera ventaja en SWDCLK?
  • HOST debería cambiar SWDIO en el flanco descendente de SWCLK, y muestra datos del objetivo (cuando sea necesario) en el flanco descendente de SWCLK, ¿no?

Creo que actualmente es suficiente (aunque también estaría agradecido por una breve muestra de la secuencia de comandos para leer / escribir el flash, pero creo que pronto lo descubriré) - ¡gracias de antemano!

Actualmente estoy tratando de usar Arduino para crear un prototipo básico, aunque puedo cambiar a un simple Atmega o LPC111x con el cable FTDI en cualquier momento ... Aunque creo que esto no es importante.

P.S. Para explicar mejor sobre SWDIO, por ejemplo, con AVR, puse el pin en estado BAJO y luego, si se cambia a salida, produce 0. Sin embargo, si se cambia a entrada, se encuentra en estado de alta Z y realmente funciona como entrada . Es decir. No manipulo el bit PORTx, sino DDRx (mientras que PORTx es 0 permanente y PINx se usa para leer).

    
pregunta Alumashka

1 respuesta

4
  

Voy a configurar SWDCLK como salida normal, y SWDIO como un drenaje abierto

SWDCLK está bien, pero SWDIO es bidireccional y no de drenaje abierto. Eso significa que debe poder cambiar de salida a modo de entrada y viceversa.

  

¿hay un período de reloj mínimo permitido?

Por lo general, no, pero algunos dispositivos tienen velocidades de reloj mínimas para funciones especiales como el desbloqueo.

  

También agradecería la muestra corta de la secuencia de comandos para leer / escribir el flash

Eso es específico para cada dispositivo. OpenOCD es compatible con muchos tipos diferentes (tanto microcontroladores como programadores) y tiene un código fuente disponible.

Ya porté Versaloon a la MCU de LPC1343 en la CCC R0ket , este podría ser un punto de partida más simple.

    
respondido por el Turbo J

Lea otras preguntas en las etiquetas