Не видел, что тема "AVR32" существует...
Наверное, заданный вопрос уже не актуален, но пока он в "подвал" не ушёл, напишу, что знаю...
DFU_BootLoader можно добавить к своей прошивке утилитой "srec_cat.exe" или за-инклудить бинарный образ в своём поекте в "трамплине".
Утилита "srec_cat.exe": из своей прошивки беру адреса "-crop 0x80002000 0x80080000", добавляю DFU_BootLoader " dfu-bl/at32uc3a-isp-1.0.2.hex -intel" в адреса "-crop 0x80000000 0x80002000", к имени выходного файла добавляю "Дату".
Код
: If the input file is in Intel HEX format,
if "%1" == "" (
echo Usage: gen_program_files+dfu+ms.cmd {hexfile}
echo Make program files for:
echo *_dfu.hex - for DFU programming ^(through DFU_BootLoader^)
echo *_jtag.hex - for JTAG programming with "DFU_BootLoader"
pause
exit
)
if "%~x1" neq ".hex" (
echo === Error: Input file "%1" must be ".hex"!!!
pause
exit
)
if NOT EXIST %1 (
echo === Error: Input file "%1" is absent!!!
pause
exit
)
SET FDATE=%~t1
SET FDATE=%FDATE:~8,2%%FDATE:~3,2%%FDATE:~0,2%_%FDATE:~11,2%%FDATE:~14,2%
echo Convert the input Intel HEX file "%~nx1" to:
srec_cat.exe ^
%1 -intel ^
-crop 0x80002000 0x80080000 ^
-o %~n1_dfu_%FDATE%.hex -intel
echo ... "%~n1_dfu_%FDATE%.hex" for DFU_BootLoader
srec_cat.exe ^
dfu-bl/at32uc3a-isp-1.0.2.hex -intel ^
-crop 0x80000000 0x80002000 ^
%1 -intel ^
-crop 0x80002000 0x80080000 ^
-o %~n1_jtag_%FDATE%.hex -intel
echo ... "%~n1_jtag_%FDATE%.hex" for JTAG-Programming ^(with 'DFU_BootLoader'^)
@echo on
rename "%~nx1" "%~nx1.%FDATE%"
@pause
Мой "trampoline_uc3.S":
Код
#define PROGRAM_START_ADDRESS (AVR32_FLASH_ADDRESS + PROGRAM_START_OFFSET)
#define PROGRAM_START_OFFSET 0x00008000
//! @{
//! \verbatim
// This must be linked @ 0x80000000 if it is to be run upon reset.
.section .reset, "ax", @progbits
.global _isp
.type _isp, @function
_isp:
// Include the ISP raw binary image. Точка отсчёта - из каталога "Debug" или "Release".
.incbin "../src/asf/avr32/utils/startup/at32uc3a-isp-1.0.2.bin"
.org 0x00002000
.global _trampoline
.type _trampoline, @function
_trampoline:
// Jump to program start.
rjmp program_start
.org PROGRAM_START_OFFSET
program_start:
// Jump to the C runtime startup routine.
lda.w pc, _stext
// http://sourceware.org/binutils/docs/as/Section.html#Section
.section .prog_version, "axS", @note
//! \endverbatim
//! @}
В файл "трамплина" добавил загрузку битового образа DFU_BootLoader: at32uc3a-isp-1.0.2.bin.
Его получил из "at32uc3a-isp-1.0.2.hex" утилитой "srec_cat.exe":
Код
echo ... convert the input Intel HEX file to %~n1.bin,
srec_cat ^
^( %1 -intel ^
-crop 0x80000000 0x80002000 ^
-fill 0x00 0x80000000 -max %1 -intel -crop 0x80000000 0x80002000 ^) ^
-offset -0x80000000 ^
-o %~n1.bin -binary
В опции линкера добавить: "-Wl,-e,_trampoline" и поставить галку "Do not use standart start files".
Про всякие BootLoader писал здесь:
http://electronix.ru/forum/index.php?showtopic=101718