0в. Маршруты по темам: от макета к изделию
Макет работает на столе — и тут выясняется, что до прибора, который можно отдать или продать, ещё полпути. Программа должна пережить помеху и собственную ошибку, образ — дойти до прибора и не быть подменённым, плата — собраться на заводе и пройти тест на линии, а изделие — получить документы и подтверждение соответствия. Всё это в справочнике есть, но разложено по семи частям.
Маршрут Е: от макета к изделию собирает эти разделы в один порядок — четырнадцать шагов от карты этапов до сертификации. Правила те же, что у маршрута новичка (0а.1) и маршрута Д (0б.1): один шаг — один раздел или пара разделов, из каждого выносится столбец «Что вынести».
Опоры: маршрут новичка (0а) или маршрут А (0.3) — прибор, который уже работает; раздел 0 — уровни и платы (0.1, 0.2).
Как это называется в документации
Оригинал Перевод first article первый образец из серии: его проверяют до запуска партии release candidate кандидат в выпуск field failure отказ у пользователя, в поле product lifecycle жизненный цикл изделия
0в.1 Как идти по маршруту Е
Маршрут идёт в том порядке, в каком вопросы встают перед изделием: сначала программа, которая переживает сбой (шаги 2–5), потом путь образа от сборки до прибора (6–9), потом плата на заводе (10–11) и само изделие — стойкость, документы, соответствие (12–14).
Первый шаг — карта: раздел 79 показывает весь путь сразу, остальные шаги — его этапы крупным планом. Уровень маршрута — базовый → продвинутый: шаг 1 базовый, продвинутые — 36в, 48 и 48а, 11в.
0в.2 Маршрут Е: от макета к изделию
Уровень маршрута: базовый → продвинутый. Четырнадцать шагов: программа, которая переживает сбой, путь образа до прибора, плата на заводе и изделие целиком.
| Шаг | Раздел | Что вынести | Что пока пропустить |
|---|---|---|---|
| 1 | 79 | этапы образуют петлю, и ошибка тем дороже, чем позже найдена; требование измеримо; программа с первого дня — как для серии | 79.9 команда |
| 2 | 12 | сторожевые таймеры IWDG и WWDG, как узнать сброс от сторожа; аппаратный CRC | 12.6 RTC |
| 3 | 36в | помеху ловят не саму, а её последствия; ловушка в свободной флеш-памяти, ни одного пустого вектора, контроль хода программы | 36в.5 двойное хранение настроек — к повторному проходу |
| 4 | 35в | запись о сбое в области, которую не обнуляет старт, переживает сброс; разбор на компьютере по ELF | 35в.6 что переживает запись, а что нет |
| 5 | 184 | три уровня тестов и что ловит каждый; модуль, который проверяется без платы; что держать в конвейере | 184.5–184.6: мутации, санитайзеры и случайные входы |
| 6 | 110, 110а | сборка в контейнере, версия из истории, красная сборка останавливает выпуск; дельта размера на каждую правку | 110.5 матрица из двух плат |
| 7 | 48, 48а | свой загрузчик: раскладка, заголовок, проверка образа; подпись защищает от подмены, в приборе — только открытый ключ | 48.10 обновление по воздуху |
| 8 | 11в | что обещает защита чтения и чего она не даёт на F1; что даёт каждый уровень у F1, F4 и U5 | 11в.4 проверка на модели ядра |
| 9 | 201а | версия из метки git, метаданные в фиксированном месте флеш-памяти, CRC считает скрипт выпуска, один файл на линию | 201а.4 воспроизводимая сборка |
| 10 | 199, 200 | что завод хочет от вас: перечень, файл установки, гербер; оживление платы по порядку — осмотр, прозвонка, питание с ограничением тока, SWD | 199.6 панелизация |
| 11 | 201 | тест на линии отвечает «собрана ли плата», а не «правилен ли код»; ложе с иглами, прошивка из скрипта, серийный номер, байты конфигурации | 201.3 расчёт времени прошивки |
| 12 | 203, 204 | ЭМС: сам шумишь — и тебя глушат, проверка в мастерской; надёжность: что стареет первым, запасы, испытания у себя | 204.1 надёжность в числах |
| 13 | 205, 205б | комплект документов, ревизии платы и версия прошивки, журнал изменений; лицензии взятого открытого кода и SBOM | 205.3 обозначения |
| 14 | 206 | продажа прибора — это подтверждение соответствия; радиомодуль или своё радио; отсеять ошибки дома до лаборатории | 206.6 маркировка и документы после испытаний |
Порядок держится на одном: каждый шаг опирается на предыдущий. Слепок сбоя (4) пишет обработчик, до которого программа доходит благодаря ловушкам (3); конвейер (6) гоняет тесты (5); выпуск (9) ставит в образ заголовок, который проверяет загрузчик (7); тест на линии (11) прошивает файл выпуска (9) и выставляет защиту чтения (8).
0в.3 Что нужно на столе
- Шаги 1–9. Плата, на которой уже работает макет, — BluePill или Discovery F407, — и программатор SWD. Машина с Docker нужна для конвейера (110).
- Шаг 10. Лабораторный источник с ограничением тока, мультиметр, лупа (200.1–200.3).
- Шаг 11. Площадки SWD, UART и питания, выведенные на плате при разводке (201.2).
- Шаг 12. Для проверки в мастерской — то, что есть под рукой (203.6).
0в.4 Куда дальше: развилки после маршрута Е
- 36б — самопроверка во время работы: ядро, ОЗУ, флеш, частота.
- 48б — готовый загрузчик с двумя слотами и откатом вместо своего.
- 48г — шифрование образа: когда подписи мало.
- 48д — заводской загрузчик ST: прошивка без своего загрузчика.
- 202 — калибровка на линии.
- 204а — корпус прибора.
- 206а — подтверждение соответствия по шагам.
- 207 — рабочее место сборки: статика, пайка, отмывка.
0в.5 Грабли
Думать о серии после макета. Программа «как для серии» начинается с первого дня, а не после того, как макет заработал (79.5): сторож, проверку образа и версию дороже встраивать в код, который о них не знал.
Подписать образ и не сравнивать версию. Честно подписанный старый образ подпись пропускает; от отката на него спасает только сравнение версии после проверки подписи (48а.2).
Считать защиту чтения F1 защитой прошивки. На F1 первый уровень — защита от случайного копирования, а не от целенаправленной атаки (11в.8).
Собирать выпуск на своей машине. Коммит после метки или правка без коммита — отказ выпуска (201а.6); выпуск собирает конвейер (110).
Включить новую плату без ограничения тока. Первое питание — от источника с пределом тока (200.3): дефект тогда греется милливаттами, а не сгорает.
0в.6 Итоги
- Маршрут Е — четырнадцать шагов: этапы (79), сторож (12), помехи (36в), слепок сбоя (35в), тесты (184), конвейер (110, 110а), загрузчик и подпись (48, 48а), защита чтения (11в), выпуск (201а), завод и первое включение (199, 200), тест на линии (201), ЭМС и надёжность (203, 204), документы (205, 205б), сертификация (206).
- Уровень — базовый → продвинутый; продвинутые шаги — 36в, 48 и 48а, 11в.
- Четыре блока: программа, которая переживает сбой (2–5), путь образа (6–9), плата на заводе (10–11), изделие целиком (12–14).
- После маршрута — восемь развилок: 36б, 48б, 48г, 48д, 202, 204а, 206а, 207.
Дальше: раздел 0г «Маршруты по темам: прибор на RTOS — архитектура и наблюдение» — третий маршрут по теме: как сложить прибор из задач FreeRTOS и как увидеть, что в нём происходит.