Команда `ecc-sign` внезапно завершается с ошибкой `status 0xf3` (Execution Error)

Здравствуйте.

Я разрабатываю агент для контроллера Wiren Board 6.9 (чип ATECC608A на шине I2C-4), который использует заводской приватный ключ в слоте 0 для подписи данных. Агент работает в среде Node.js в двух экземплярах (процессах), каждый из которых по таймерам отправляет heartbeat и другие запросы в облако, подписывая fingerprint командой atecc -b 4 -c 'ecc-sign 0 ...' . Вызовы асинхронные, но в рамках одного процесса они идут последовательно.

Проблема:
После длительной серии успешных подписей (30-40 и более) команда ecc-sign внезапно завершается с ошибкой status 0xf3 (Execution Error). При этом повторный немедленный вызов также падает с той же ошибкой.

Такое поведение я наблюдаю:

  • как при запуске одного процесса агента,
  • так и при двух параллельно работающих процессах (во втором случае ошибки возникают чаще).

Я реализовал повторные попытки с небольшой задержкой, и они решают проблему : после 1-2 ретраев подпись успешно выполняется. Однако я хочу понять первопричину и убедиться, что моё решение корректно и не маскирует аппаратную проблему.

Лог с ошибкой (фрагмент):

text

sign-fingerprint-by-atecc The signature was successfully completed … :white_check_mark: … Failed to execute command: “atecc -b 4 -c ‘ecc-sign 0 …’” code: “2”, message: “… Command atcab_sign is failed with status 0xf3”

Мои вопросы:

  1. Является ли периодическое появление ошибки 0xf3 при активном использовании чипа ожидаемым поведением, или оно свидетельствует о неисправности (например, проблемы с питанием, помехи на I2C)?
  2. Может ли причина быть в том, что два процесса конкурентно обращаются к чипу по I2C без внешней синхронизации? Нужно ли на уровне ОС реализовать мьютекс (например, через flock ) для эксклюзивного доступа?
  3. Правильно ли я понимаю, что механизм retry является штатным способом обработки таких ошибок ?
  4. Есть ли какие-то настройки чипа или драйвера, которые могли бы уменьшить вероятность этой ошибки?

Ранее я спрашивал о том как с завода настроены слоты, и мой чип настроен в точном соответствии с ней.

Буду признателен за любые разъяснения и рекомендации.

Спасибо.

Добрый день. Спросил коллег.

Добрый день.
Пообещали воспроизвести.

Коллеги не смогли воспроизвести подобное поведение.

Решил межпроцессную конкуренцию через файл, а внутри процесса через имитацию mutex, и ошибка ушла.