Скрипт программирования памяти MIK32: различия между версиями

Материал из MIK32 микроконтроллер
Нет описания правки
 
(не показано 6 промежуточных версий 3 участников)
Строка 1: Строка 1:
'''Скрипт предназначен для записи программы в ОЗУ, EEPROM и внешнюю flash память, подключенную по интерфейсу SPIFI.'''
Репозиторий программы: https://github.com/MikronMIK32/mik32-uploader  
Репозиторий программы: https://github.com/MikronMIK32/mik32-uploader  
Скрипт предназначен для записи программы в ОЗУ, EEPROM и внешнюю flash память, подключенную по интерфейсу SPIFI.


Для работы скрипта требуется подключение по JTAG и отладчик, поддерживающийся OpenOCD.  
Для работы скрипта требуется подключение по JTAG и отладчик, поддерживающийся OpenOCD.  
Строка 9: Строка 9:
Скрипт работает через OpenOCD, подключаясь через tcl сервер к уже запущенному openocd, подключенному к МК. Скрипт может запустить openocd самостоятельно.  
Скрипт работает через OpenOCD, подключаясь через tcl сервер к уже запущенному openocd, подключенному к МК. Скрипт может запустить openocd самостоятельно.  


== Предварительные требования ==
==Предварительные требования==
Поддерживаются ОС Windows 7 и выше.
Поддерживаются ОС Windows 7 и выше.


Строка 16: Строка 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> относительно папки со скриптом.


== Запуск программы ==
==Запуск программы==
Минимальная команда для запуска:
Минимальная команда для запуска:


<code>py mik32_upload.py firmware_name.hex</code>
<code>python mik32_upload.py firmware_name.hex</code>


Команда для запуска openocd при запуске скрипта:
Команда для запуска openocd при запуске скрипта:


<code>py mik32_upload.py firmware_name.hex --run-openocd --openocd-scripts="путь\к\папке\scripts" --openocd-interface="путь\к\настройкам\отладчика" --openocd-target="путь\к\настройкам\МК"</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:
 
  filepath              Путь к файлу прошивки
 
optional arguments:
 
  <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>--run-openocd</code> - запуск openocd при прошивке МК;
  <code>--openocd-exec ''OPENOCD_EXEC''</code> - Путь к исполняемому файлу openocd. По умолчанию: openocd\bin\openocd.exe


<code>--use-quad-spi</code> - использование режима QuadSPI при программировании внешней флеш памяти. Использовать не рекомендуется, не дает заметного уменьшения времени прошивки;
  <code>--openocd-scripts ''OPENOCD_SCRIPTS''</code> - Путь к папке scripts. По умолчанию: openocd\share\openocd\scripts


<code>--openocd-host="127.0.0.1"</code> - адрес для подключения к openocd;
  <code>--openocd-interface ''OPENOCD_INTERFACE''</code> - Путь к файлу конфигурации отладчика относительно папки scripts или абсолютный путь. По умолчанию: interface\ftdi\m-link.cfg     


<code>--openocd-port=6666</code> - порт tcl сервера openocd;
  <code>--openocd-target ''OPENOCD_TARGET''</code> - Путь к файлу конфигурации целевого контроллера относительно папки scripts. По умолчанию: target\mik32.cfg


<code>--openocd-speed=500</code> - скорость отладчика в кГц, в текущей реализации не используется;
  <code>--open-console</code> - Открывать OpenOCD в отдельной консоли


<code>--keep-halt</code> - не запускать команду resume 0 после прошивки, ядро контроллера после прошивки будет остановлено;
  <code>-b {undefined,eeprom,ram,spifi}</code>, <code>--boot-mode {undefined,eeprom,ram,spifi}</code> - Выбор типа памяти, который отображается на загрузочную область. Если тип не выбран, данные, находящиеся в загрузочной области в hex файле отбрасываются. По умолчанию: undefined


<code>--openocd-exec="openocd\bin\openocd.exe"</code> - путь к исполняемому файлу openocd;
  <code>--log-path ''LOG_PATH''</code> - Путь к файлу журнала. По умолчанию: nul


<code>--openocd-scripts="openocd\share\openocd\scripts"</code> - путь к папке scripts;
  <code>--post-action ''POST_ACTION''</code> - Команды OpenOCD, запускаемые после прошивки. По умолчанию: reset run


<code>--openocd-interface="interface\ftdi\m-link.cfg"</code> - путь к файлу конфигурации отладчика относительно папки scripts;
  <code>--no-color</code> - Вывод без последовательностей управления терминалом. Временно не используется


<code>--openocd-target="target\mik32.cfg"</code> - путь к файлу конфигурации целевого контроллера относительно папки scripts.
  <code>-t {MIK32V0,MIK32V2}</code>, <code>--mcu-type {MIK32V0,MIK32V2}</code> - Выбор микроконтроллера. По умолчанию: MIK32V2


== Известные проблемы ==
==Известные проблемы ==


* OpenOCD запускается в отдельном окне - поскольку при работе с сервером tcl ответ переданной команды печатается в консоли openocd, перенаправлять вывод в ту же консоль, в которую пишет скрипт не получится;
*Часть ошибок создают Exception, часть возвращают значение, необходима унификация.
* Данные, попавшие в загрузочную область (со смещением 0x0) отбрасываются - не реализован выбор типа памяти для этой области памяти (режима загрузки);
* Выбор скорости загрузки не реализована;
* Часть кода при ошибке создает 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, часть возвращают значение, необходима унификация.