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