Ayuda LPC1313 ISP (In-System Programming)

57 views
Skip to first unread message

Agustin Bassi

unread,
May 12, 2016, 10:19:19 AM5/12/16
to Embebidos32
Estimados,

Estoy desarrollando un sistema embebido que funcionará con el microcontrolador LP1313 de NXP (ARM Cortex M3).

Comencé el proyecto por el software y protoboard, con el kit de desarrollo LPCXpresso LPC1343 + LPC-Link, juntos en un mismo PCB (el micro es de la misma familia que el LPC1313).

El software funciona, y ahora estoy haciendo el hardware.
Con el kit de desarrollo, no debía preocuparme por cómo grabar el ejecutable al micro, estaba resuelto, pero ahora deberé grabar el micro estando ya en mi placa.

No quiero debug sobre mi PCB, solo poder programar el micro, estando ya en la placa. Algunas cuestiones sobre las que necesito ayuda son:
_1) Con el LPC-Link que ya viene con el kit de desarrollo, se puede programar mi placa? Mediante que interface? Es necesario separar el LPC-Link del board del kit de desarrollo para hacer esto?
_2) Lei que la interface JTAG que posee el LPC-Link es unicamente para las familias ARM7/9 y que para las familias Cortex M0, M0+ y M3 se programan (o se realiza el debug mejor dicho) mediante la interface serial wire debug (SWD) que tambien provee el LPC-Link.
_3) En otros post tambien lei, que el micro se puede programar mediante comandos serie a traves la interface SWD y que hay programas para PC en los cuales se carga el ejecutable para el micro y dicho programa se encarga de grabar el micro (algunos de los programas que vi son MagicTool y LPC21ISP, entre otros).
Estos programas se conectan al micro por serie. En una PC sin puerto serie, se necesita un adaptador USB-TTL, saben si cualquiera de los conversores del mercado sirve para dicha funcion?
_4) Es necesario poner algun hardware adicional en mi PCB para poder realizar la programacion in-system ? Leyendo el post de Core Red sobre conexiones de debug, vi que para hacer debug mediante SWD se necesitan unas resistencias de pull up y pull down en las lineas de SWD, y que ademas de estas lineas, el conector de debug necesita conexion con el pin de reset del micro (P0_0).
Esto es asi tal cual?

Cualquier informacion al respecto es mas que bienvenida. Aclaro nuevamente que solo necesito bajar el ejecutable al micro, no hacer debug.
Si alguien tiene un esquematico (o captura de pantalla) de las conexiones que se necesitan para realizar la programacion in system seria genial :)

Algunos links sobre los que me basé son:
De antemano muchas gracias.

Saludos!

Agustin.

martin ribelotta

unread,
May 12, 2016, 11:10:20 AM5/12/16
to embeb...@googlegroups.com
El 12 de mayo de 2016, 11:19, Agustin Bassi <jagust...@gmail.com> escribió:
Estimados,

Estoy desarrollando un sistema embebido que funcionará con el microcontrolador LP1313 de NXP (ARM Cortex M3).

Comencé el proyecto por el software y protoboard, con el kit de desarrollo LPCXpresso LPC1343 + LPC-Link, juntos en un mismo PCB (el micro es de la misma familia que el LPC1313).

El software funciona, y ahora estoy haciendo el hardware.
Con el kit de desarrollo, no debía preocuparme por cómo grabar el ejecutable al micro, estaba resuelto, pero ahora deberé grabar el micro estando ya en mi placa.

No quiero debug sobre mi PCB, solo poder programar el micro, estando ya en la placa. Algunas cuestiones sobre las que necesito ayuda son:
_1) Con el LPC-Link que ya viene con el kit de desarrollo, se puede programar mi placa? Mediante que interface? Es necesario separar el LPC-Link del board del kit de desarrollo para hacer esto?
Los LPC13xx tienen interfaz JTAG, podes usar el LPCLink directamente, o cualquier jtag comunacho, pero el LPCLink tiene la ventaja de estar hermanado con el LPCXpresso.
Y si, tenes que separarlo del kit de desarrollo (o mantener reseteado con un cable a masa el micro del stick -ojo no probe esto fisicamente yo, es por comentarios-)
Sino, un JLink o cualquier JTAG pedorro soportado por openocd anda.
 
_2) Lei que la interface JTAG que posee el LPC-Link es unicamente para las familias ARM7/9 y que para las familias Cortex M0, M0+ y M3 se programan (o se realiza el debug mejor dicho) mediante la interface serial wire debug (SWD) que tambien provee el LPC-Link.
Leiste bien, interpretastes bien (a medias)
Los de NXP decidieron, en los M0 por una cuestion de cantidad de pines usar la interfaz SWD, pero muchos micros como los LPC43xx de la CIAA, los M3 17xx, o 18xx siguen teniendo JTAG full (junto con SWD)
Casualmente, los LPC13 todavia tienen todos los pines del JTAG full para poder usarlo.
De todas formas, LPCLink soprota ambas interfaces, asi que no deberias tener problema con ninguna de las dos.
En particular, siempre que puedo uso JTAG por una cuestión de velocidad de debug
 
_3) En otros post tambien lei, que el micro se puede programar mediante comandos serie a traves la interface SWD y que hay programas para PC en los cuales se carga el ejecutable para el micro y dicho programa se encarga de grabar el micro (algunos de los programas que vi son MagicTool y LPC21ISP, entre otros).
Es asi salvo por el hecho que SWD no pinta nada en esto.
El micro tiene una ROM que se activa con el pin de SPI (GPIO0_algo??? REvisar datasheet!!!) y la UART que usa es la 0.
Eso es asi para todos los micros de LPCxxxx (incluso el de la CIAA)
Adicionalmente, este micro tiene un bootloader USB (fijarse en el datasheet como activarlo!!! Creo que es ISP=0  y VBUS=5v) que emula un MSD y se programa tirandole el *.bin directamente al pendrive de 512K que aparece ahi.
 
Estos programas se conectan al micro por serie. En una PC sin puerto serie, se necesita un adaptador USB-TTL, saben si cualquiera de los conversores del mercado sirve para dicha funcion?
Funciona cualquiera si, pero no TTL sino LVTTL de 3.3V o su correspondiente circuito para bajar el voltahe (divisor de tension en RX del micro, y TX directo sirve)
 
_4) Es necesario poner algun hardware adicional en mi PCB para poder realizar la programacion in-system ? Leyendo el post de Core Red sobre conexiones de debug, vi que para hacer debug mediante SWD se necesitan unas resistencias de pull up y pull down en las lineas de SWD, y que ademas de estas lineas, el conector de debug necesita conexion con el pin de reset del micro (P0_0).
Esto es asi tal cual?

ASi dice el datasheet. Normalmente eso es para tener el coenctor SWD en un estado de tención conocido (que no queden los pines al aire)
Si usas SWD necesitas SWDIO, SWCLK y nRST (añadir SWO si queremos debug) y si usas JTAG: TDI, TDO, TMS, TCK y nRST
El nRST es el del micro y esta compartido con el boton de reset asi que ojo que el JTAG deberia tener la salida en open coletror (todos los JTAG comerciales son así y el del LPCLink tambien, pero por si alguien se quiere hacer uno a mano)
 
Cualquier informacion al respecto es mas que bienvenida. Aclaro nuevamente que solo necesito bajar el ejecutable al micro, no hacer debug.
Si alguien tiene un esquematico (o captura de pantalla) de las conexiones que se necesitan para realizar la programacion in system seria genial :)

Este es el circuito mínimo para usar el bootloader USB (y el serial, ambos se activan al mismo tiempo)

P0.1 en bajo al salir del reset entra en modo bootloader, y P0.3 detecta que hay USB (sino prueba solo por UART)

Si te fijas, P0.3 es VBUS en operación normal así que siempre debería estar conectado a VBUS a través de un divisor resistivo.

En http://www.nxp.com/documents/user_manual/UM10375.pdf sección 21 podes encontrar todo esto (en ingles)

Si te fijas en esta placa: https://www.olimex.com/Products/ARM/NXP/LPC-P1343/resources/LPC-P1343.pdf de olimex, tenes todo lo que digo expresado en un esquematico al que solo habria que sacarle un par de cosas.

Fe de errata: Por lo que veo, LPc13xx NO tiene TJAG completo, podes usar el SWD sin problema ya que el LPCLink lo deberia soportar out-of-box (esta andando en tu stick verdad?)
 
Algunos links sobre los que me basé son:
De antemano muchas gracias.

Saludos!

Agustin.

--
-- Recibiste este mensaje porque estás suscripto al Grupo Google Embebidos32. Para postear en este grupo, escribe un email a embeb...@googlegroups.com. Para des-suscribirte, envía un email a embebidos32...@googlegroups.com. Para más opciones, visita el sitio del grupo en https://groups.google.com/d/forum/embebidos32?hl=es
---
Has recibido este mensaje porque estás suscrito al grupo "Embebidos32" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a embebidos32...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Agustin Bassi

unread,
May 12, 2016, 12:11:38 PM5/12/16
to Embebidos32
Ruso,

Gracias por la pronta respuesta.

El LPC-Link esta funcionando en el stick, y por lo que veo soporta tanto JTAG como SWD, pero no quiero separarlo.

El LPC1313 no tiene USB, por lo que la progrmacion la realizaré mediante la UART.

Optaré por conseguir un programador com JLink, o bien otro similar. Tenes idea de alguno que funcione bien para esto? Y quien lo vende?

Me vino muy bien el esquemático, voy a revisarlo.

Saludos !

Agustin.


Juan Manuel Cruz Beaufrere

unread,
May 12, 2016, 12:26:57 PM5/12/16
to embeb...@googlegroups.com
Agustín, en el LSE tenemos algunos sticks que no se usan, si te animas podemos partir alguno y probar la parte LPC-Link por separado, saludos.    Juan

Ing. Juan Manuel Cruz
Profesor Adjunto - Seminario de Sistemas Embebidos

Laboratorio de Sistemas Embebidos | Facultad de Ingeniería - UBA
Paseo Colón 950
[C1063ACV] Buenos Aires. Argentina
Tel [54 11] 4343 0893 / 0092 | Int
E-mail:
juanmanuelc...@gmail.com
Visítenos en:
http://laboratorios.fi.uba.ar/lse/

Reply all
Reply to author
Forward
0 new messages