Electronic – Unable to get bootloader working on custom PCB with AT32UC3L

atmelavr32bootloader

I have designed a PCB for a client recently, everything is fine with the hardware and software (application is working as it is supposed to). Now we are facing the need to update the program inside the microcontroller, but since these PCBs are installed at different places over the world, it would be perfect to install a bootloader and use the same UART as used by the application.

Board description

  • AT32UC3L032
  • One UART already used to communicate between board and PC
  • Couple of I/Os for the application
  • Couple of state LEDs

Relevant PINS and config

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

Tools used

  • Windows XP
  • Atmel Studio 6.1
  • AVRONE programmer

After many hours searching, I've found the Atmel Software Framework DFU, provided in ASF 3.14.0.834. That was looking promising, I was able to install it on my board using provided tools :

  • AVR32Studio 2.6.0
  • program_at32uc3l-uart-isp-1.0.1.cmd (provided script with ASF)
  • Flip 3.4.7 (batchisp)

At first, I used .bin and .dat provided with ASF, installed using the script. Now trying to upload application using batchisp command :

batchisp.exe -device at32uc3l032 -hardware RS232 -port COM1 -baudrate 115200 -operation erase f memory flash blankcheck loadbuffer myapp.hex program verify

But always getting :

Device selection.................... PASS
Hardware selection.................. PASS
Opening port........................ PASS
Synchronzing target................. FAIL    Timeout error.

I've tested with oscilloscope RX and TX from UART, data is going to board but PC is receiving a 27kHz square wave (can't be data from UART since there is no stop bit or anything, also frequency is probably not the same for 115200bps).

After more research, I've configured Word1 and Word2 in file at32uc3l-uart-isp_cfg-1.0.1.dat to get these values :

  • Word1 : 0xE11E0024
  • Word2 : 0x494F81AA

To use pin PA01 as option to enter in the ISP.

Also, loaded the source of the DFU in Atmel Studio 6.1 and noticed they were not using same serial port configuration, so changed for the same as my application. Also added some LEDs toggle inside the main of the DFU.

After updating the bootloader in the board, no LEDs changes, same timeout, same square wave.

Am I missing something?


Best Answer

Maybe try using a AVR programmer and the Arduino IDE if that is possible. I know it works well with the AT series microcontrollers.