Recientemente, he diseñado una PCB para un cliente, todo está bien con el hardware y el software (la aplicación funciona como se supone). Ahora nos enfrentamos a la necesidad de actualizar el programa dentro del microcontrolador, pero como estos PCB se instalan en diferentes lugares del mundo, sería perfecto instalar un cargador de arranque y usar el mismo UART que usa la aplicación.
Descripción del foro
- AT32UC3L032
- Una UART ya utilizada para comunicarse entre la placa y la PC
- Par de I / Os para la aplicación
- Par de LED de estado
PINS relevantes y configuración
PA01 # Used for entering ISP with high level
PA20 # Used for application and ISP UART
PA21 # Used for application and ISP UART
#define COM_USART (&AVR32_USART2)
#define COM_USART_RX_PIN AVR32_USART2_RXD_0_0_PIN
#define COM_USART_RX_FUNCTION AVR32_USART2_RXD_0_0_FUNCTION
#define COM_USART_TX_PIN AVR32_USART2_TXD_0_0_PIN
#define COM_USART_TX_FUNCTION AVR32_USART2_TXD_0_0_FUNCTION
#define COM_USART_IRQ AVR32_USART2_IRQ
#define COM_USART_BAUDRATE 115200
Herramientas utilizadas
- Windows XP
- Atmel Studio 6.1
- programador AVRONE
Después de muchas horas de búsqueda, encontré el DFU de Atmel Software Framework, que se proporciona en ASF 3.14.0.834. Se veía prometedor, pude instalarlo en mi pizarra utilizando las herramientas proporcionadas:
- AVR32Studio 2.6.0
- program_at32uc3l-uart-isp-1.0.1.cmd (script proporcionado con ASF)
- Flip 3.4.7 (batchisp)
Al principio, usé .bin
y .dat
provistos con ASF, instalados usando el script. Ahora intento cargar la aplicación usando el comando batchisp:
batchisp.exe -device at32uc3l032 -hardware RS232 -port COM1 -baudrate 115200 -operation erase f memory flash blankcheck loadbuffer myapp.hex program verify
Pero siempre obteniendo:
Device selection.................... PASS
Hardware selection.................. PASS
Opening port........................ PASS
Synchronzing target................. FAIL Timeout error.
He probado con el osciloscopio RX y TX desde UART, los datos se van a incorporar, pero la PC está recibiendo una onda cuadrada de 27 kHz (no puede haber datos de UART porque no hay bit de parada ni nada, probablemente la frecuencia tampoco) lo mismo para 115200bps).
Después de más investigaciones, he configurado Word1
y Word2
en el archivo at32uc3l-uart-isp_cfg-1.0.1.dat
para obtener estos valores:
- Word1: 0xE11E0024
- Word2: 0x494F81AA
Para usar el pin PA01
como opción para ingresar en el ISP.
También, cargué la fuente del DFU en Atmel Studio 6.1 y noté que no estaban usando la misma configuración de puerto en serie, por lo que se cambió por el mismo que mi aplicación. También se agregaron algunos indicadores LED que se alternan dentro de la parte principal del DFU.
Después de actualizar el gestor de arranque en la placa, no hay cambios en los LED, el mismo tiempo de espera, la misma onda cuadrada.
¿Me estoy perdiendo algo?