Перейти к основному содержимому

Интерфейс MultiProg

Элементы интерфейса

Описание интерфейса

  • menu – основное меню программы.
  • actions toolbar – самые используемые действия, дублируют меню.
  • additional actions – действия применимые к конкретному программатору или контроллеру. Меняются в зависимости от выбранного контроллера-программатора.
  • programmer & target info – короткая выдержка о подключенном программаторе и контроллере.
  • hex buffer – визуализация всех сегментов памяти контроллера в виде hex буфера.
  • log – окошко логирования.
  • memory/address bar – показывает имя выбранного в hex буфере сегмента памяти и выделенный адрес.

Базовые действия по программированию

  • connect – установка соединения с программатором и контроллером.
  • read – чтение каждого сегмента памяти в соответствии с картой памяти, сохранение в буфер дампа каждого сегмента.
  • write – запись каждого сегмента памяти из буфера без предварительного массового стирания.
  • verify – сравнение каждого сегмента памяти на соответствие содержимому буфера.
  • erase – массовое стирание каждого сегмента из буфера, если не предусмотрено иного механизма стирания производителем контроллера.

Горячие клавиши

СочетаниеДействие
Ctrl+TПоиск таргета
Ctrl+HИстория выбранных таргетов
Ctrl+UИзбранное
Ctrl+IОткрыть Connection image
Ctrl+MРежим сравнения HEX-буферов
Ctrl+FContext-aware поиск: по логу, если фокус в логе; иначе — по hex-буферу
Ctrl+GПерейти к адресу в hex-буфере
Ctrl+BSelect Range — выбор диапазона hex-буфера
Ctrl+0VGBN — Select Zero Block (для RL78 / NEC swap-zero)
Ctrl+LОткрыть Script Console

Быстрый старт

Обычный порядок действий:

  1. Откройте Target в меню или в actions toolbar.

  2. Выберите программатор и контроллер, нажмите ОК. Target selector

  3. Убедитесь, что вы изучили руководство по настройке-установке программатора. Например руководство по USBDM.

  4. Посмотрите в меню Info->Connection Image, возможно для вашего контроллера есть картинка подключения.

  5. Подключите программатор к контроллеру и нажмите Connect.

  6. После успешного (SUCCESS) соединения все действия (Read, Write, Erase, Verify) станут активными.

  7. Поздравляю, вы разобрались 🚀

Hex буфер и memory/address bar

Hex буфер является зеркальным представлением памяти контроллера внутри программы.

В hex буфере может быть один или несколько табов с сегментами памяти. Переключение осуществляется нажатием на таб с названием сегмента. Segments

Быстрая навигация

При нажатии на поле адреса можно быстро перейти по заданному смещению. quick addr

Копирование строки в hex/text

При нажатии правой кнопкой мышки можно определить формат копирования. quick addr

Определение сегмента и адреса по memory/address bar

quick addr Почему на этом видео на ячейке 0x00-0x01 адрес всегда 0x00? У данного контроллера (mc56f) 2 байта на 1 ячейку памяти.

Редактирование буфера (Edit / Fill)

Edit / Fill

Правой кнопкой по hex-буферу — контекстное меню Edit / Fill:

  • Undo / Redo — полная история правок буфера, также доступна из меню редактирования.
  • Fill — заливка диапазона константным байтом или шаблоном; диалог проверяет hex на лету и показывает текущий адрес.
  • Изменённые байты подсвечиваются, чтобы видеть все правки до сохранения.
  • При входе в режим редактирования буфер автоматически бэкапится.

Select Range

Select Range (Ctrl+B)

Select Range Select Range (Ctrl+B) — выбор фрагмента hex-буфера по offset (стартовый адрес + длина). Удобно для частичных сохранений и подсчёта контрольной суммы по диапазону.

Сравнение HEX (Ctrl+M)

HEX Compare Открывает диалог HEX Compare с двумя просмотрщиками рядом: подсветка различий, синхронная прокрутка, навигация по различиям вперёд/назад (циклически, с учётом вкладок и регионов). Источники: текущий буфер или импортированный файл (binary / S19). Пока Compare открыт, основной буфер заблокирован от редактирования.

Работа с файлами прошивок

Работа с файлами Меню File содержит 6 пунктов (Open / Open Current Region / Import / Save / Save Current Region / Export).

Если у таргета несколько регионов (multi-region) вам будет предложено импортировать или загрузить один регион. Прошивка с нескольмими регионами

В меню File шесть пунктов:

  • Open — умное открытие. Если у таргета один регион — файл загружается сразу в него. Если несколько — появляется диалог: All Regions (Import) / Current Region Only (Open) / Cancel.
  • Open Current Region — загружает файл прошивки только в текущую активную вкладку (без диалога).
  • Import All Regions — за один раз загружает все регионы из выбранного файла.
  • Save — умное сохранение. Один регион: сохраняет напрямую. Несколько: диалог All Regions (Export) / Current Region Only (Save) / Cancel.
  • Save Current Region — сохраняет только текущий активный регион (без диалога).
  • Export All Regions — сохраняет все регионы в один файл.

Кнопки тулбара Open и Save вызывают умные варианты (то же, что File > Open / File > Save).

Поддерживаемые расширения: .hex, .s19, .s28, .s37, .srec, .mot, .sx, .s2, .s3, .bin. Формат определяется расширением.

к сведению

Для multi-region таргета лучше использовать Import / Export в формате S19 (aka .mot, .srec) — адреса всех регионов сохраняются в одном файле.

Отличие Import/Export от Save/Options

к сведению

Сегменты (регионы, разделы) в данном случае разделы памяти микроконтроллера (см memory map), не все контроллеры имеют несколько сегментов памяти.

  • Export в формате s19, добавляет каждый сегмент в формате srec.

  • Export в формате bin, начиная с 0x00 до начального адреса первого сегмента памяти заполняет файл 0xFF. Далее добавляет в файл первый сегмент, далее добавляет 0xFF размером до начала следующего сегмента, далее добавляет следующий сегмент и так пока не загрузит весь буфер.

warning

Поэтому, Export в формате bin без необходимости не рекомендуется, так как файл прошивки может получится очень большим.

  • Import в формате s19, разбирает файл srec, извлекает и загружает в буфер каждый сегмент.
  • Import в формате bin, отсчитывает начальное смещение по адресу первого сегмента памяти, извлекает из файла данные с (начальное смещение) и размером (размер сегмента) и так по очереди каждый сегмент в буфере.
  • Save - в формате bin просто сохраняет сегмент как есть, где нулевое смещение = начало сегмента. В s19 с адресацией.
  • Open - в формате bin загружает выбранный сегмент памяти с нулевого смещения т.е. как есть в файле. В s19 с адресацией.

Я сохранил считанную USBDM прошивку DSC(MC56f) и она размером больше чем должна быть

У данного контроллера (mc56f - DSC) 2 байта на 1 ячейку памяти. Поэтому если адресов 0x0-0x7FFF байт вдвое больше.

Темы оформления

 Settings > Theme со списком 4 тем Hex Buffer Colors editor с мини-превью Как можно кастомизировать Доступны четыре встроенные темы — Light, Dark, Telegram, Night — переключение на лету через Settings > Theme.

  • Редактор пользовательских тем — настройте цвета всего интерфейса, сохраните свою тему.
  • Hex Buffer Colors editor — отдельный редактор цветов hex-буфера (фон, изменённые байты, mismatch, выделение) с мини-превью и live-предпросмотром темы.
  • Заголовок окна (DWM), иконки, hex-просмотрщик, логгер, диалоги, скроллбары и вкладки корректно отрисовываются во всех темах.

Checksum Settings

Настройки чексум Settings > Checksum Settings открывает новый профильный диалог контрольных сумм:

  • Профили — выберите из набора CRC-алгоритмов или создайте свой.
  • Полный набор пресетов с crccalc.com, включая 16 новых алгоритмов в 2.3.0; KERMIT переименован в CCITT.
  • Пользовательские калькуляторы на Lua — см. Lua-скрипты.
  • Активная контрольная сумма выводится в Checksum info panel в левом сайдбаре (с динамическим размером) и в статус-баре.
  • Ctrl+0 — быстрый пересчёт RL78 / NEC-суммы.

Mismatch navigation

Настройки чексум После операции verify с несовпадениями над hex-видом появляется панель навигации по различиям. По ней можно прыгать вперёд / назад по mismatch'ам циклически, с учётом вкладок и регионов. Панель автоматически прячется при изменении буфера, write, erase и правках.

Избранное и история

  • Ctrl+T — поиск таргета.
  • Ctrl+H — история выбранных таргетов.
  • Ctrl+U — избранное. Добавляйте таргеты звездой; колонка Notes позволяет привязать к каждому запись в свободной форме.
  • При загрузке устаревшие записи (таргеты, которых больше нет в базе) автоматически чистятся.

Lua-скрипты

Консоль скриптов С 2.3.0 в MultiProg встроен Lua-скриптовый движок (Lua 5.5.1) и Script Console.

  • Script Console — отдельное окно с редактором кода, подсветкой синтаксиса, автодополнением, отладчиком (точки останова, пошаговое выполнение) и интерактивной консолью REPL.
  • Полный API — около 235 функций в 12 модулях (mp ядро, mp.backend, mp.config, mp.memory, mp.file, mp.checksum, mp.targets, mp.target_builder, mp.log, mp.ui, mp.utils, mp.app).
  • Пользовательские чексум-скрипты — Lua-скрипты с маркером -- @checksum-script работают как калькулятор контрольных сумм, результат выводится в статус-бар.
  • Готовые примерыscripts/examples/: batch_flash.lua, mass_production.lua, read_and_verify.lua, firmware_analysis.lua, hex_patch.lua, target_search.lua, create_target.lua, create_tgsn_target.lua, renesas_nec_checksum.lua, stm32_g0_g4_export_mot.lua, stm32f7_option_bytes_stvp_convert.lua и другие.
  • Watchdog — зависший скрипт автоматически останавливается через 10 минут.

AI Agent IPC (preview)

Settings > AI Agent Integration Подробно — диалог настроек, CLI-флаги, структура IPC-папки, безопасность — на отдельной странице AI-агент.

Settings > AI Agent Integration включает IPC-мост для управления MultiProg внешними AI-агентами (Claude, Cursor и др.):

  • Аутентификация по токену (agent_token в %APPDATA%/KuragaTech/MultiProg/).
  • Флаг --agent-mode — запуск с включённым IPC из коробки.
  • Кнопка «Copy starter prompt for external agent» — копирует готовый prompt с описанием API для подачи во внешний агент.

Settings - меню настроек

  • License — информация о вашей лицензии и активация.

  • Theme — переключение Light / Dark / Telegram / Night, редактор пользовательских тем, редактор цветов hex-буфера.

  • Checksum Settings — профили контрольных сумм, выбор CRC-алгоритма (см. Checksum Settings выше).

  • AI Agent Integration — вкл./выкл. IPC-моста, просмотр и регенерация agent-токена.

  • Debug mode — runtime-флаг расширенного логирования операций (метки [read-diag] / [trim-diag] в логе) без перезапуска приложения.

  • Download log — сохраняет лог текущей сессии по указанному пути, может пригодиться.

  • Reset default config — удаляет настройки и восстанавливает default.

  • Check updates — проверка и установка обновлений.

Info->Connection image

Версия Версия Connection image (Ctrl+I или Info > Connection Image) показывает схему подключения программатора к целевому МК.

В 2.3.0 схема автогенерируется из JSON-описания пинов целевого устройства:

  • Поддерживаемые корпуса: 4-сторонние QFP / LQFP / TQFP / QFN / PQFP / PLCC, 2-сторонние SOIC / SSOP / LSSOP / TSSOP / DIP, спец. BGA / Connector1Row / Connector2Row / AbstractTable; прямоугольные раскладки (например, PQFP 14×20 мм для M16C). Алиасы в JSON: HWQFN / HVQFNQFN, LFQFPLQFP, PSDIPDIP.
  • Визуальный редактор пиноута (PinoutEditorDialog) с превью — редактирование назначения пинов прямо в GUI.
  • Таблица подключения программатор↔таргет (AbstractTable) — альтернативное табличное представление сопоставления выводов.
  • Поворот корпуса — для ориентации схемы под физическое положение чипа на плате.
  • NC-выводы — визуальные ориентиры для непрограммируемых пинов корпуса (пин обозначен на корпусе, но не идёт к программатору).
  • Pinout Export / Import через configurator — выгрузка и импорт пиноута.
  • Свои схемы: можно создать диаграмму для нового чипа, отредактировав JSON-описание выводов.

Покрытие в 2.3.0: M16C (35 таргетов / 68 диаграмм), R8C (183 / 263), RL78 (139 устройств в 8 семействах), NEC 78K0 / Kx1+, M32C / R32C, ESP, TMPM370 / TMPM470, HART, DSC, HCS08 / HCS12.

Сделать свою

Пошаговая инструкция по созданию своей Connection image (JSON-формат, NC-пины, имена пинов программатора, Pinout Editor, Lua mp.target_builder) — на странице Своя Connection image.

Help-about (версия)

Версия Версию, время сборки и hash программы можно посмотреть в menu->Help->About.

к сведению

Это может пригодиться при обращении в поддержку