Скрипт программирования памяти MIK32: различия между версиями
Root (обсуждение | вклад) |
Sh-sergey (обсуждение | вклад) |
||
Строка 24: | Строка 24: | ||
Минимальная команда для запуска: | Минимальная команда для запуска: | ||
<code> | <code>python mik32_upload.py firmware_name.hex</code> | ||
Команда для запуска openocd при запуске скрипта: | Команда для запуска openocd при запуске скрипта: | ||
<code> | <code>python mik32_upload.py firmware_name.hex --run-openocd --openocd-exec="путь\к\openocd.exe" --openocd-scripts="путь\к\папке\scripts" --openocd-interface="путь\к\настройкам\отладчика" --openocd-target="путь\к\настройкам\МК"</code> | ||
===Описание аргументов=== | ===Описание аргументов=== | ||
positional arguments: | positional arguments: | ||
filepath | filepath Путь к файлу прошивки | ||
optional arguments: | |||
<code>-h, --help</code> - | <code>-h, --help</code> - show this help message and exit | ||
<code>--run-openocd</code> - | <code>--run-openocd</code> - Запуск openocd при прошивке МК | ||
<code>--use-quad-spi</code> - Использование режима QuadSPI при программировании внешней флеш памяти | <code>--use-quad-spi</code> - Использование режима QuadSPI при программировании внешней флеш памяти | ||
<code>--openocd-host OPENOCD_HOST</code> - Адрес для подключения к openocd. По умолчанию: 127.0.0.1 | <code>--openocd-host ''OPENOCD_HOST''</code> - Адрес для подключения к openocd. По умолчанию: 127.0.0.1 | ||
<code>--openocd-port OPENOCD_PORT</code> - Порт tcl сервера openocd. По умолчанию: 6666 | <code>--openocd-port ''OPENOCD_PORT''</code> - Порт tcl сервера openocd. По умолчанию: 6666 | ||
<code>--adapter-speed ADAPTER_SPEED</code> - Скорость отладчика в кГц. По умолчанию: 500 | <code>--adapter-speed ''ADAPTER_SPEED''</code> - Скорость отладчика в кГц. По умолчанию: 500 | ||
<code>--openocd-exec OPENOCD_EXEC</code> - Путь к исполняемому файлу openocd. По умолчанию: openocd\bin\openocd.exe | <code>--openocd-exec ''OPENOCD_EXEC''</code> - Путь к исполняемому файлу openocd. По умолчанию: openocd\bin\openocd.exe | ||
<code>--openocd-scripts OPENOCD_SCRIPTS</code> - | <code>--openocd-scripts ''OPENOCD_SCRIPTS''</code> - Путь к папке scripts. По умолчанию: openocd\share\openocd\scripts | ||
<code>--openocd-interface OPENOCD_INTERFACE</code> - | <code>--openocd-interface ''OPENOCD_INTERFACE''</code> - Путь к файлу конфигурации отладчика относительно папки scripts или абсолютный путь. По умолчанию: interface\ftdi\m-link.cfg | ||
<code>--openocd-target OPENOCD_TARGET</code> - | <code>--openocd-target ''OPENOCD_TARGET''</code> - Путь к файлу конфигурации целевого контроллера относительно папки scripts. По умолчанию: target\mik32.cfg | ||
<code>--open-console</code> - Открывать OpenOCD в отдельной консоли | <code>--open-console</code> - Открывать OpenOCD в отдельной консоли | ||
Строка 61: | Строка 61: | ||
<code>-b {undefined,eeprom,ram,spifi}</code>, <code>--boot-mode {undefined,eeprom,ram,spifi}</code> - Выбор типа памяти, который отображается на загрузочную область. Если тип не выбран, данные, находящиеся в загрузочной области в hex файле отбрасываются. По умолчанию: undefined | <code>-b {undefined,eeprom,ram,spifi}</code>, <code>--boot-mode {undefined,eeprom,ram,spifi}</code> - Выбор типа памяти, который отображается на загрузочную область. Если тип не выбран, данные, находящиеся в загрузочной области в hex файле отбрасываются. По умолчанию: undefined | ||
<code>--log-path LOG_PATH</code> - Путь к файлу журнала. По умолчанию: nul | <code>--log-path ''LOG_PATH''</code> - Путь к файлу журнала. По умолчанию: nul | ||
<code>--post-action POST_ACTION</code> - Команды OpenOCD, запускаемые после прошивки. По умолчанию: reset run | <code>--post-action ''POST_ACTION''</code> - Команды OpenOCD, запускаемые после прошивки. По умолчанию: reset run | ||
<code>--no-color</code> - Вывод без последовательностей управления терминалом. Временно не используется | <code>--no-color</code> - Вывод без последовательностей управления терминалом. Временно не используется | ||
<code>-t {MIK32V0,MIK32V2}</code>, <code>--mcu-type {MIK32V0,MIK32V2}</code> - Выбор микроконтроллера. По умолчанию: MIK32V2 | |||
==Известные проблемы == | ==Известные проблемы == | ||
*Часть ошибок создают Exception, часть возвращают значение, необходима унификация. | *Часть ошибок создают Exception, часть возвращают значение, необходима унификация. |
Текущая версия от 12:32, 23 мая 2024
Скрипт предназначен для записи программы в ОЗУ, 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
относительно папки со скриптом.
Запуск программы
Минимальная команда для запуска:
python mik32_upload.py firmware_name.hex
Команда для запуска openocd при запуске скрипта:
python mik32_upload.py firmware_name.hex --run-openocd --openocd-exec="путь\к\openocd.exe" --openocd-scripts="путь\к\папке\scripts" --openocd-interface="путь\к\настройкам\отладчика" --openocd-target="путь\к\настройкам\МК"
Описание аргументов
positional arguments:
filepath Путь к файлу прошивки
optional arguments:
-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
- Вывод без последовательностей управления терминалом. Временно не используется
-t {MIK32V0,MIK32V2}
, --mcu-type {MIK32V0,MIK32V2}
- Выбор микроконтроллера. По умолчанию: MIK32V2
Известные проблемы
- Часть ошибок создают Exception, часть возвращают значение, необходима унификация.