mirror of
https://github.com/MikronMIK32/mik32-uploader.git
synced 2026-01-01 21:37:05 +03:00
100 lines
6.3 KiB
Markdown
100 lines
6.3 KiB
Markdown
# Скрипт программирования памяти MIK32
|
||
|
||
Скрипт предназначен для записи программы в ОЗУ, EEPROM и внешнюю flash память, подключенную по интерфейсу SPIFI.
|
||
|
||
## Предварительные требования
|
||
|
||
Требуется операционная система Windows версии >= 7 или macOS версии >= 10.9 или Linux.
|
||
|
||
Требуется версия Python >= 3.8 (https://www.python.org/downloads/).
|
||
|
||
Требуется версия OpenOCD >= 0.11.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
|
||
```
|
||
|
||
## Принцип работы
|
||
|
||
Для работы скрипта требуется подключение по JTAG и отладчик, поддерживающийся OpenOCD.
|
||
|
||
Программа принимает образы программы в формате hex и записывает данные в память МК через контроллер SPIFI, путем записи команд и настроек в регистры блока. Тип памяти и способ записи выбирается по адресу байт в hex файле, поэтому требуется правильное расположение секций, заданное в ld скрипте.
|
||
|
||
Скрипт работает через OpenOCD, подключаясь через tcl сервер к уже запущенному openocd, подключенному к МК. Скрипт может запустить openocd самостоятельно.
|
||
|
||
## Сборка в исполняемый файл
|
||
|
||
Для сборки в исполняемый файл и подготовки релиза используется модуль PyInstaller.
|
||
Для его установки выполните команду:
|
||
|
||
```
|
||
pip install -U pyinstaller
|
||
```
|
||
|
||
Затем соберите программу с использованием файла с настройками mik32_upload.spec:
|
||
|
||
```
|
||
pyinstaller mik32_upload.spec
|
||
```
|
||
|
||
В папке `./dist` будет создана папка `mik32_upload`, содержащая исполняемый файл `mik32_upload`
|
||
и папка со служебными файлами `_internal`, а также архив с названием `mik32-uploader-{версия}.zip`
|
||
или `mik32-uploader-{версия}.tar.gz`.
|
||
|
||
Для указания версии программы следует изменить значение переменной `applicaton_version` в файле
|
||
`_version.py`. При редактировании файла следует сохранять форматирование!
|