XMI Programmer — программа обновления прошивки микроконтроллераXMI 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 |
Принципы работыПри включении питания управление передается загрузчику, расположенному по адресу 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'. Если в пользовательской программе используется запись в Flash, необходимо подключить к проекту файлы sp_driver.s, sp_driver.h, а в настройках Linker Options пользовательского проекта указать строку "-Wl,--section-start=.BOOT=0x021C00". |