mik32-uploader/README.md
2024-11-14 16:58:27 +03:00

122 lines
6.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Скрипт программирования памяти 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.