mirror of
https://github.com/MikronMIK32/mik32-uploader.git
synced 2026-01-01 13:37:03 +03:00
122 lines
6.8 KiB
Markdown
122 lines
6.8 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 и OpenOCD 0.12.0.
|
||
|
||
Скрипт по умолчанию ищет исполняемый файл openocd по пути
|
||
openocd\bin\openocd.exe относительно папки со скриптом.
|
||
|
||
### Установка в PlatformIO
|
||
|
||
Клонировать ветку репозитория master в директорию `tool-mik32-uploader` в
|
||
`~/.platformio/packages/`, либо скачать Source Code последнего релиза и
|
||
распаковать содержимое папки `mik32-uploader-{версия}` в директорию
|
||
`tool-mik32-uploader` в `~/.platformio/packages/`
|
||
|
||
## Запуск программы
|
||
|
||
Минимальная команда для запуска:
|
||
|
||
```
|
||
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 в отдельной консоли
|
||
--boot-mode {undefined,eeprom,ram,spifi}
|
||
Выбор типа памяти, который отображается на загрузочную область. Если тип не выбран, данные,
|
||
находящиеся в загрузочной области в hex файле отбрасываются. По умолчанию: undefined
|
||
--log-path LOG_PATH Путь к файлу журнала. По умолчанию: nul
|
||
--post-action POST_ACTION
|
||
Команды OpenOCD, запускаемые после прошивки. По умолчанию: reset run
|
||
-t {MIK32V0,MIK32V2}, --mcu-type {MIK32V0,MIK32V2}
|
||
Выбор микроконтроллера. По умолчанию: MIK32V2
|
||
--no-driver Отключает прошивку с использованием драйвера в ОЗУ
|
||
```
|
||
|
||
## Принцип работы
|
||
|
||
Для работы скрипта требуется подключение по 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`, `openocd-scripts` и
|
||
`upload-drivers`, а также архив с названием `mik32-uploader-{версия}`.
|
||
|
||
Для указания версии программы следует изменить значение переменной
|
||
`applicaton_version` в файле `_version.py`. При редактировании файла следует
|
||
сохранять форматирование! Также потребуется изменить номер версии в файле
|
||
`.piopm` uploader'а и `platform.json` платформы для корректной работы системы
|
||
управления пакетами platformio.
|