Скрипт программирования памяти MIK32: различия между версиями
Sh-sergey (обсуждение | вклад) Нет описания правки |
Sh-sergey (обсуждение | вклад) Нет описания правки |
||
Строка 41: | Строка 41: | ||
<code>--openocd-port=6666</code> - порт tcl сервера openocd; | <code>--openocd-port=6666</code> - порт tcl сервера openocd; | ||
<code>-- | <code>--adapter-speed=500</code> - скорость отладчика в кГц; | ||
<code>--keep-halt</code> - не запускать команду resume 0 после прошивки, ядро контроллера после прошивки будет остановлено; | <code>--keep-halt</code> - не запускать команду resume 0 после прошивки, ядро контроллера после прошивки будет остановлено; | ||
Строка 55: | Строка 55: | ||
== Известные проблемы == | == Известные проблемы == | ||
* Данные, попавшие в загрузочную область (со смещением 0x0) отбрасываются - не реализован выбор типа памяти для этой области памяти (режима загрузки); | * Данные, попавшие в загрузочную область (со смещением 0x0) отбрасываются - не реализован выбор типа памяти для этой области памяти (режима загрузки); | ||
* Часть кода при ошибке создает Exception, которые не обрабатываются; | * Часть кода при ошибке создает Exception, которые не обрабатываются; | ||
* Часть ошибок создают Exception, часть возвращают значение, необходима унификация. | * Часть ошибок создают Exception, часть возвращают значение, необходима унификация. |
Версия от 09:57, 19 июня 2023
Репозиторий программы: https://github.com/MikronMIK32/mik32-uploader
Скрипт предназначен для записи программы в ОЗУ, EEPROM и внешнюю flash память, подключенную по интерфейсу SPIFI.
Для работы скрипта требуется подключение по 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="путь\к\настройкам\МК"
Описание аргументов
Текстом после знака "=" указаны значения по умолчанию.
--run-openocd
- запуск openocd при прошивке МК;
--use-quad-spi
- использование режима QuadSPI при программировании внешней флеш памяти. Использовать не рекомендуется, не дает заметного уменьшения времени прошивки;
--openocd-host="127.0.0.1"
- адрес для подключения к openocd;
--openocd-port=6666
- порт tcl сервера openocd;
--adapter-speed=500
- скорость отладчика в кГц;
--keep-halt
- не запускать команду resume 0 после прошивки, ядро контроллера после прошивки будет остановлено;
--openocd-exec="openocd\bin\openocd.exe"
- путь к исполняемому файлу openocd;
--openocd-scripts="openocd\share\openocd\scripts"
- путь к папке scripts;
--openocd-interface="interface\ftdi\m-link.cfg"
- путь к файлу конфигурации отладчика относительно папки scripts;
--openocd-target="target\mik32.cfg"
- путь к файлу конфигурации целевого контроллера относительно папки scripts.
Известные проблемы
- Данные, попавшие в загрузочную область (со смещением 0x0) отбрасываются - не реализован выбор типа памяти для этой области памяти (режима загрузки);
- Часть кода при ошибке создает Exception, которые не обрабатываются;
- Часть ошибок создают Exception, часть возвращают значение, необходима унификация.