Форматы файлов
Данные проекта — это обычный 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 лежит в папке проекта.
| Поле | Тип | Назначение |
|---|---|---|
title | string | Имя проекта |
file_version | string | Версия формата, сейчас "4" |
dtcinfo | string | Локальная база DTC |
authlib | string | Auth-библиотека проекта |
own_ip | string | IP DoIP |
own_netmask | string | Маска сети DoIP |
dhcp_enabled | bool | DHCP для DoIP |
cover_img | string | Обложка |
features | array | Функции проекта |
mod_params | object | Параметры расширений |
dtcinfo без ведущей точки ищется в <workspace>/data/dtc; путь, начинающийся с точки, задан относительно папки проекта.
.bmecu — определение ECU
Верхний уровень: unit, caption, subsystem, comment, flags, authlib, transport (can или doip), can, doip, parameters, routines, dtc_snapshot_data, auth.
"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 — кэшированные значения
{
"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
{
"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:
{
"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 — текстовый файл, одно событие на строку:
[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 | Логи сессий |
