XMIP - XMega Instrument Programmer

XMI Programmer — программа обновления прошивки микроконтроллера

XMI ProgrammerXMI Programmer (XMIP) - программа для обновления прошивки устройств на базе микроконтроллера XMEGA (ATxmega128A1-AU) под управлением микропрограммы загрузчика XMI Bootloader (XMIB), размещаемой в секции BOOT по адресу 20000hex. XMIP совместно с XMIB позволяет записывать и считывать Flash-память и EEPROM микроконтроллера, используя один из интерфейсов UART микроконтроллера (USARTD0 порта D или USARTE0 порта E). Используется тот порт, на который первой пришла команда запроса с компьютера. За счет наличия стандартной функции SP_LoadFlashPage (см. sp_driver.s, sp_driver.h), расположенной по фиксированному адресу (21C00hex) в составе микропрограммы загрузчика, имеется возможность перезаписывать Flsh-память в процессе выполнения основной программы.

Программа XMIP и загрузчик XMIB предназначены для использования в оборудовании типа T&M эксплуатируемом в легкодоступном для пользователя месте, поэтому не предусматривает специальные меры защиты. Проверка целостности записанных данных осуществляется повторным считыванием.

Параметр

Значение

 Операционная система

 Windows 2K/XP/S2K3/Win7 (x86/x64)

 Текущая версия

 1.2

 Дата последней модификации

 19 января 2010 г.

 Описание изменений (Release Notes)

 

 Программа/дистрибутив

 XMI Programmer

 Загрузчик (Bootloader) для ATxmega128A1

 XMI Bootloader firmware
Принципы работы

ImageПри включении питания управление передается загрузчику, расположенному по адресу 20000hex (для этого при прошивке загрузчика в микроконтроллер необходимо выставить опцию программатора Boot Reset). Загрузчик конфигурирует порты PD2,3 и PE2,3 в режим UART (115200, 8-bit, parity none, stop bit 1) и ожидает команды запроса от компьютера PC_CONNECT_REQ. Цикл ожидания длится 0.5 сек, если за это время команда не приходит, управление передается по адресу 0 основной (пользовательской) программе. Если команда PC_CONNECT_REQ приходит на один из указанных портов, по тому же порту отправляется ответ MCU_CONNECT_ACK и загрузчик переходит в ожидание команды PC_CONNECT_ACK. Получив ответ, компьютер перестает отправлять запросы PC_CONNECT_REQ, отправляет ответ PC_CONNECT_ACK. Получив этот ответ, микроконтроллер переходит в режим ожидания команд чтения/записи Flash и EEPROM. После выполнения каждой из команд микроконтроллер отправляет подтверждение command_ACK, переходит в ожидание следующей команды и т.д. до тех пор, пока не получит команду EXIT_REQ, после которой передает управление по адресу 0 пользовательской программе.

Команды

1) PC_CONNECT_REQ = ‘A';
2) MCU_CONNECT_ACK = PC_CONNECT_ACK = ‘B'
3) WRITE_FLASH_REQ = ‘0', WRITE_FLASH_ACK = ‘1';
4) READ_FLASH_REQ = ‘2', READ_FLASH_ACK = ‘3';
5) WRITE_EEPROM_REQ = ‘4', WRITE_EEPROM_ACK = ‘5';
6) READ_EEPROM_REQ = ‘6', READ_EEPROM_ACK = ‘7';
7) EXIT_REQ = ‘8', EXIT_ACK = ‘9'.Image

Если в пользовательской программе используется запись в Flash, необходимо подключить к проекту файлы sp_driver.s, sp_driver.h, а в настройках Linker Options пользовательского проекта указать строку "-Wl,--section-start=.BOOT=0x021C00".

Image