Это практично, чтобы прошивка была однозначно идентифицирована в производстве

12

Существуют ли системы, доступные для крупномасштабного производства, которые позволяют запрограммировать уникальный серийный номер в микропрограммном обеспечении или в некотором свободном пространстве памяти для каждой проходящей платы?

Я обнаружил, что FDA решил начать применять его для устройств медицинского класса, но легко ли это сделать или потребуется разработка собственного производственного процесса?

Lukeyb
источник
7
Какая у вас система? Многие процессоры (и MCU более высокого уровня) уже имеют какой-то регистр идентификатора, предварительно запрограммированный с уникальным значением.
Дмитрий Григорьев
4
Сначала проверьте, что у вашего MCU еще нет уникального идентификатора
Jeroen3

Ответы:

14

Большинство производственных программистов способны вставлять уникальный серийный номер в запрограммированную память, этот процесс обычно называется сериализацией . Это захват экрана сериализации от старого программиста Dataman.

отображение сериализации от программиста Dataman

Стив Г
источник
serializationэто возможно, но требует особой осторожности, особенно если диапазон значений пересекает границу слова. Если вы передаете программирование на аутсорсинг, это становится еще сложнее - если бы известный поставщик ошибался не один, а два раза подряд, прежде чем, наконец, признать, что их программист для рассматриваемой части не мог сериализоваться через несколько байтов. Закончилось отправка им уникального файла для каждого значения старшего байта, для каждого из которых они выполняли уникальное задание по программированию из 256 частей, сериализовавшее младший. Для следующего дизайна мы создали специальный программист.
Крис Страттон
14

Возможно, вы спрашиваете о программном решении, но если вы можете добавить дешевую микросхему на свою плату, вы можете использовать чип «Силиконовый серийный номер».

Это крошечные микросхемы ПЗУ, каждое устройство которых содержит уникальный двоичный номер. Примерами являются Maxim DS2401 (1-проводная шина) и DS28CM00 (I2C), которые имеют 48-битный уникальный номер.

Номер уникален среди всех микросхем, изготовленных из этого номера детали этим производителем. Это не уникально среди всех чипов SSN, сделанных всеми в мире, очевидно. Но они позволяют легко выбрать устройство для вашей платы и знают, что каждая когда-либо созданная плата будет считывать с нее разные и уникальные числа.

TonyM
источник
1
Вполне возможно, это лучший подход к вендору, который я когда-либо видел.
Основное
«Не уникален среди всех чипов SSN, производимых всеми в мире, очевидно». Почему это должно быть «очевидно»? Другие идентификаторы, которые должны быть глобально уникальными, например, MAC-адреса Ethernet, выполняют это с помощью распределения префиксов - поставщик использует свой префикс, а затем выбирает оставшиеся биты / цифры.
Бен Фойгт
1
@BenVoigt MAC-адреса не являются глобально уникальными. Просто регионально уникальный. Можно приехать в Азию и купить устройство с MAC-адресом, которое будет конфликтовать с устройством в Европе. Черт возьми, на многих устройствах вы можете даже изменить свой MAC-адрес, чтобы намеренно конфликтовать с вашим устройством.
Slebetman
Привет @ BenVoigt, существует множество семейств микросхем SSN, многие процессоры / MCU имеют уникальные идентификаторы, они уникальны только для семейства микросхем. Сколько глобально уникальных схем нумерации IC вы можете перечислить? (не нумерация продуктов, как IMEI)
TonyM
5

да, конечно, как уже упоминалось, MAC-адреса очевидны, обычно во flash / eeprom рядом с mac, если это отдельная часть, или во flash / eeprom в другом месте. жизненно важные данные о продукте (серийный номер платы и т. д.) могут быть помещены в отдельный EEPROM или флэш-память или в то же устройство, которое используется для хранения других прошивок.

Например, если у вас есть ситуация, когда возможны полевые обновления прошивки, что является частью конструкции системы, вы не хотите, чтобы данные VPD стирались при стирании и перепрограммировании прошивки прошивки, поэтому вам необходимо решить эту проблему, используя либо функции защиты от записи. устройства флэш-памяти (помещая VPD в банк / область и блокируя эту область), и не обязательно публикуйте / документируйте публично, как освободить вывод защиты от записи, и / или какое-либо другое решение, так что вы можете программировать VPD в mfg и затем оставьте его заблокированным в противном случае (при необходимости, потяните вверх / вверх, а затем запрограммируйте во время / вокруг ИКТ, чтобы устройство могло тянуть его в другую сторону).

Это, вероятно, более распространенный, чем вы думаете, медицинский, но очень маленький набор людей, которые могли бы сделать это. Может быть, не пульт дистанционного управления телевизора, но, вероятно, мышь или клавиатура и, конечно, сотовый телефон, и т. Д.

Если / когда на плате также используется наклейка, вы можете обнаружить, что на ней есть штрих-код, так что во время изготовления прибор или оператор может сканировать штрих-код, номер сборки и т. Д. И добавить его в VPD для этой платы.

Старожил
источник
если вы разработали для полевых обновлений, вы, по крайней мере, хотите знать, какая у вас версия встроенного ПО, которая просто скомпилирована в встроенное ПО, но перед выполнением обновления в полевых условиях вам может понадобиться узнать, какая это конкретная платформа / плата (для проверки / использовать правильное встроенное ПО и / или нюансы полевого программирования и т. д.), поэтому вы не только хотите защитить VPD, но вам НУЖНА информация о VPD как часть проекта, позволяющая выполнить обновление встроенного ПО.
old_timer
3

Наличие уникальных кодов для каждого продукта вполне возможно и выполнимо. Один из способов сделать это - иметь систему программирования, которая последовательно изменяет идентификационный номер прошивки для каждого запрограммированного устройства. С некоторыми системами это легко сделать; например, некоторые микроконтроллеры имеют зарезервированное местоположение eeprom специально для хранения идентификатора.

Другой альтернативой может быть добавление уникального идентификатора оборудования. Примером этого является кремниевая интегральная схема серийного номера Dallas Semi (теперь Maxim Integrated) ( DS2401 ). Это устройство дает вам серийный номер, и вы гарантированно, что оно будет уникальным. Этот серийный номер можно использовать для определения уникального адреса для конкретного продукта.

Адам З
источник
2

Серийно выпускаемые сетевые карты имеют серийные номера в виде аппаратного (MAC) адреса, запрограммированного во флэш-память / EEPROM во время производства.

Хотя серийные номера, нанесенные на корпус изделия в виде наклейки, могут быть удалены или повторно нанесены, серийный номер, записанный на конкретной плате, повышает еще один способ отслеживания использования платы; скорее всего, этот серийный номер будет также напечатан в медицинской документации, чтобы отследить, какое именно устройство использовалось для медицинской диагностики или операции.

анонимное
источник
2

... это легко осуществить или потребуется разработка собственного производственного процесса?

Около 10 лет назад у меня была похожая ситуация с прошивкой медицинского устройства, которую я разработал для одного из моих клиентов. Это было устройство класса 2, которое подняло планку. Объемы производства были в сотнях.

Мы не смогли найти готового программиста, который мог бы писать серийные номера автоматически или полуавтоматически. Мы сделали обходной путь. У нас была заводская прошивка, которая использовалась для калибровки и тестирования. Эта заводская прошивка связывалась с остальным тестовым оборудованием через последовательный порт. В рамках этого тестирования мы загрузили серийный номер, который был сохранен в EEPROM микроконтроллера. (Заводская прошивка была перезаписана полевой прошивкой.)

Ник Алексеев
источник
0

Программисты производства SEGGER поддерживают прошивку уникальных серийных номеров в микроконтроллеры.

фило
источник
0

Если у вас есть много вариантов для этого (некоторые взяты из этого ответа ):

  1. Используйте уникальный идентификатор вашего микроконтроллера, если он доступен.
  2. Выберите уникальный адрес, установив несколько внешних перемычек на выделенные входы / выходы.
  3. Запрограммируйте UID для прошивки или EEPROM во время производства. Сам файл прошивки можно изменить через сериализацию. Если ваша сборочная линия не имеет этой функции, но вы можете настроить ее, это легко сделать, найдя смещение файла прошивки с помощью шестнадцатеричного редактора и используя ваш любимый скрипт / язык для изменения файла. Иногда вы можете «исправить» этот адрес с помощью скрипта компоновщика.
  4. Интерфейс внешнего чипа, который предоставляет UID.
  5. Сконфигурируйте внутреннюю флеш-память / eeprom (если есть) с вашим сервисным интерфейсом или загрузчиком. Это может быть сделано даже во время тестирования (в некоторых случаях это не совсем «производственная линия»). Некоторые устройства имеют такой сервисный интерфейс, где только производитель авторизованных техников может изменять некоторые значения. Поскольку это значение должно быть неизменяемым, убедитесь, что код помечает измененные значения и запрещает дальнейшие изменения. Если у вас есть загрузчик, убедитесь, что этот раздел не переписан в полевых обновлениях.
Ронан Пайшао
источник
0

Если у вас есть доступ к хорошему аппаратному RNG и 16 байтам дополнительного постоянного хранилища, один из способов, который не требует слишком большого изменения производственного процесса, - это сгенерировать GUID v4 при первом запуске и сохранить его. Вы можете сделать сброс прошивки в последовательный во время любых постпрограммных тестов, которые вы запускаете. Это не последовательно, но это не имеет значения для большинства приложений.

Рейд Ранкин
источник
0

Если использование RFID или смарт-тега на каждой печатной плате соответствует требованиям, это будет самый простой способ внедрения - под вашим контролем.

Guill
источник