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