Skip to content

Форматы файлов ​

Данные проекта — это обычный JSON и обычный текст. Ничего не хранится в проприетарной базе данных, поэтому workspace можно просматривать, копировать и сравнивать через diff.

Общие правила JSON ​

  • .bmprj, .bmecu, .bmdump, .bmdid, файлы DTC и кнопок действий — это JSON.
  • Для did, txid, адресов и размеров используйте десятичные числа.
  • Неизвестные поля в файлах проекта и ECU сохраняются при редактировании и сохранении файла.
  • Файлы в UTF-8; в DTC JSON допускается BOM.

Файлы workspace и проекта ​

ПутьСодержимое
project.bmprjДокумент проекта
*.bmecuОдно определение ECU на файл
*.bmdumpКэшированные значения, сохраняются и загружаются из ECU List
*.bmdidСписок DID для Incubator
*.bmrcpРецепт прошивки рядом с образом
notes.mdЗаметки проекта, UTF-8, до 64 KiB
chat_history.jsonИстория AI-чата проекта
config_global.jsonГлобальные настройки в %APPDATA%\BlackMagic
config.jsonЛокальные настройки workspace в <workspace>/data

.bmprj — проект ​

project.bmprj лежит в папке проекта.

ПолеТипНазначение
titlestringИмя проекта
file_versionstringВерсия формата, сейчас "4"
dtcinfostringЛокальная база DTC
authlibstringAuth-библиотека проекта
own_ipstringIP DoIP
own_netmaskstringМаска сети DoIP
dhcp_enabledboolDHCP для DoIP
cover_imgstringОбложка
featuresarrayФункции проекта
mod_paramsobjectПараметры расширений

dtcinfo без ведущей точки ищется в <workspace>/data/dtc; путь, начинающийся с точки, задан относительно папки проекта.

.bmecu — определение ECU ​

Верхний уровень: unit, caption, subsystem, comment, flags, authlib, transport (can или doip), can, doip, parameters, routines, dtc_snapshot_data, auth.

json
"can":  { "channel": 1, "txid": 2016, "rxid": 2024, "id29bit": false, "baudrate": 500000 }
"doip": { "ip": "127.0.0.1", "port": 13400, "tls_port": 3496, "ecu_address": 4098, "tst_address": 3712 }

Поля параметра: type (обычно ID), did, comment, writeable, auth, write_auth, groups (info, temp, measure, ioctl), views.

Поля View: format (uint, int, ascii, hex, enum, combined), name, offset, size, необязательные bit_offset / bit_size, unit. Для uint/int: scale (по умолчанию 1.0) и value_offset (по умолчанию 0). enum использует values ({ "val": …, "text": "…" }); combined использует sub_views. Для type="ID" полезная нагрузка начинается после заголовка 62 DID_H DID_L, то есть data_start=3.

Routine: rid, name, comment, auth, could_start, could_stop, could_request_result, options (View с data_start=4). Snapshot DTC: did, size, view.

.bmdump — кэшированные значения ​

json
{
  "prj_title": "MyProject",
  "ecus": {
    "7E0": {
      "DTCi": 1234,
      "DTC": [ 12345678 ],
      "61840": "62F19057424D..."
    }
  }
}

Ключ ECU — txid в шестнадцатеричном виде. DTCi — это (format id << 8) | supported mask; записи DTC — (dtcid << 8) | status; ключи DID десятичные, а значения — полный hex-буфер, включая заголовок 62 DID_H DID_L.

.bmdid — список DID ​

json
{
  "title": "DID",
  "comment": "Data Identifier list",
  "file_version": 1,
  "idparams": [
    { "name": "VIN", "comment": "Vehicle Identification Number", "type": "ascii", "did": 61840 }
  ]
}

idparams[] использует name, comment, type, did; Incubator сканирует этот список.

Базы DTC ​

JSON:

json
{
  "file_version": "1.0",
  "codes": { "P0001": "Fuel Volume Regulator Control Circuit/Open" }
}

TXT использует одну строку CODE description на код; строки, начинающиеся с # или ;, игнорируются. Коды — P, C, B или U, за которыми следуют 5 или 7 шестнадцатеричных символов. Глобальная база — data/dtc/codes.json или .txt; локальная выбирается в Project Properties.

CSV ​

  • ECU List: разделитель ;, строка заголовка с именами столбцов и завершающая ; в каждой строке.
  • Measurement Values: "Name","DID","Value Unit" на строку, без заголовка.

CSV предназначен для обмена, а не для восстановления состояния проекта.

Логи ​

.log — текстовый файл, одно событие на строку:

text
[17:24:36.123] UDS: 7A0 >> 22 F1 90
[17:24:36.145] UDS: 7A8 << 62 F1 90 ...

Первая строка сохранённого лога — [build] ... с версией, конфигурацией и датой сборки.

Скрипты, прошивка и служебные пути ​

ПутьНазначение
<workspace>/scripts/*.luaОбщие Lua-скрипты
<project>/scripts/*.luaСкрипты проекта (приоритет)
<workspace>/firmware, <project>/firmwareОбразы прошивки
.binНеобработанный образ; требуется базовый адрес
.hex, .ihex, .srecОбразы с адресами
%APPDATA%\BlackMagic\config_global.jsonГлобальные настройки
%APPDATA%\BlackMagic\imgui.iniРаскладка окон
%LOCALAPPDATA%\BlackMagic\chat.jsonНастройки AI-чата
%LOCALAPPDATA%\BlackMagic\mcp.jsonТокен локального MCP-сервера
<workspace>/data/config.jsonЛокальные настройки workspace
<workspace>/logs/*.logЛоги сессий

Связанное ​

Бесплатное ядро. Локальный workspace. Без облака.