Скрипт программирования памяти MIK32
Скрипт предназначен для записи программы в ОЗУ, EEPROM и внешнюю flash память, подключенную по интерфейсу SPIFI.
Репозиторий программы: https://github.com/MikronMIK32/mik32-uploader
Для работы скрипта требуется подключение по JTAG и отладчик, поддерживающийся OpenOCD.
Программа принимает образы программы в формате hex и записывает данные в память МК через контроллер SPIFI, путем записи команд и настроек в регистры блока. Тип памяти и способ записи выбирается по адресу байт в hex файле, поэтому требуется правильное расположение секций, заданное в ld скрипте.
Скрипт работает через OpenOCD, подключаясь через tcl сервер к уже запущенному openocd, подключенному к МК. Скрипт может запустить openocd самостоятельно.
Предварительные требования
Поддерживаются ОС Windows 7 и выше.
Требуется Python 3.8 или более новый (https://www.python.org/downloads/)
Требуется OpenOCD 0.11.0, рекомендуется OpenOCD 0.12.0 (https://github.com/xpack-dev-tools/openocd-xpack/releases)
Установка
Необходимо скачать или клонировать репозиторий программы, а также установить Python 3.8 и OpenOCD 0.12.0.
Скрипт по умолчанию ищет исполняемый файл openocd по пути openocd\bin\openocd.exe
относительно папки со скриптом.
Запуск программы
Минимальная команда для запуска:
py mik32_upload.py firmware_name.hex
Команда для запуска openocd при запуске скрипта:
py mik32_upload.py firmware_name.hex --run-openocd --openocd-scripts="путь\к\папке\scripts" --openocd-interface="путь\к\настройкам\отладчика" --openocd-target="путь\к\настройкам\МК"
Описание аргументов
positional arguments:
filepath - Путь к файлу прошивки
options:
-h, --help
- show this help message and exit
--run-openocd
- Запуск openocd при прошивке МК
--use-quad-spi
- Использование режима QuadSPI при программировании внешней флеш памяти
--openocd-host OPENOCD_HOST
- Адрес для подключения к openocd. По умолчанию: 127.0.0.1
--openocd-port OPENOCD_PORT
- Порт tcl сервера openocd. По умолчанию: 6666
--adapter-speed ADAPTER_SPEED
- Скорость отладчика в кГц. По умолчанию: 500
--openocd-exec OPENOCD_EXEC
- Путь к исполняемому файлу openocd. По умолчанию: openocd\bin\openocd.exe
--openocd-scripts OPENOCD_SCRIPTS
- Путь к папке scripts. По умолчанию: openocd\share\openocd\scripts
--openocd-interface OPENOCD_INTERFACE
- Путь к файлу конфигурации отладчика относительно папки scripts или абсолютный путь. По умолчанию: interface\ftdi\m-link.cfg
--openocd-target OPENOCD_TARGET
- Путь к файлу конфигурации целевого контроллера относительно папки scripts. По умолчанию: target\mik32.cfg
--open-console
- Открывать OpenOCD в отдельной консоли
-b {undefined,eeprom,ram,spifi}
, --boot-mode {undefined,eeprom,ram,spifi}
- Выбор типа памяти, который отображается на загрузочную область. Если тип не выбран, данные, находящиеся в загрузочной области в hex файле отбрасываются. По умолчанию: undefined
--log-path LOG_PATH
- Путь к файлу журнала. По умолчанию: nul
--post-action POST_ACTION
- Команды OpenOCD, запускаемые после прошивки. По умолчанию: reset run
--no-color
- Вывод без последовательностей управления терминалом. Временно не используется
Известные проблемы
- Часть ошибок создают Exception, часть возвращают значение, необходима унификация.