Czy praktyczne jest, aby oprogramowanie wewnętrzne było jednoznacznie identyfikowane podczas produkcji

12

Czy są dostępne systemy produkcji na dużą skalę, które pozwalają na zaprogramowanie unikalnego numeru seryjnego w oprogramowaniu wewnętrznym lub wolną przestrzeń pamięci dla każdej przechodzącej płytki drukowanej?

Przekonałem się, że FDA postanowiła rozpocząć egzekwowanie przepisów dotyczących urządzeń klasy medycznej, ale czy jest to coś łatwego do osiągnięcia, czy też wymagałoby opracowania własnego procesu produkcyjnego?

Lukeyb
źródło
7
Jaki masz system? Wiele procesorów (i wyższej klasy MCU) ma już jakiś rejestr ID wstępnie zaprogramowany z unikalną wartością.
Dmitrij Grigoriew
4
Najpierw sprawdź, czy MCU nie ma jeszcze unikalnego identyfikatora
Jeroen3

Odpowiedzi:

14

Większość programistów produkcyjnych jest w stanie wstawić unikalny numer seryjny do zaprogramowanej pamięci, co jest zwykle procesem zwanym serializacją . To jest chwyt ekranu Serializacji od starego programisty Dataman.

wyświetlanie serializacji od programisty Dataman

Steve G.
źródło
serializationjest to możliwe, ale wymaga szczególnej ostrożności, szczególnie jeśli zakres wartości przekracza granicę słowa. Jeśli outsourcingujesz programowanie, staje się to jeszcze trudniejsze - gdyby dobrze znany sprzedawca pomylił się nie raz, ale dwa razy z rzędu, zanim ostatecznie przyzna, że ​​ich programista dla danej części nie mógł serializować na wiele bajtów. Ostatecznie wysłali im unikalny plik dla każdej wartości bardziej znaczącego bajtu, dla którego uruchomili unikalne 256-elementowe zadanie programowe szeregujące niższe. Do następnego projektu zbudowaliśmy programator niestandardowy.
Chris Stratton,
14

Być może pytasz o rozwiązanie tylko programowe, ale jeśli możesz dodać tani układ scalony do swojej płyty, możesz użyć układu „Silicon Serial Number”.

Są to małe układy pamięci ROM, w których każde urządzenie ma unikalny numer binarny. Przykładami są DS2401 Maxima (magistrala 1-wire) i DS28CM00 (I2C), które mają 48-bitowy unikalny numer.

Numer jest unikalny wśród wszystkich układów scalonych wykonanych z tego numeru części przez tego producenta. Oczywiście nie jest wyjątkowy wśród wszystkich chipów SSN wyprodukowanych przez wszystkich na świecie. Ale sprawiają, że bardzo łatwo jest wybrać urządzenie do swojej tablicy i wiedzą, że każda wyprodukowana płyta odczyta z niej inny i niepowtarzalny numer.

TonyM
źródło
1
Jest to prawdopodobnie najlepsze podejście do blokowania dostawcy, jakie kiedykolwiek widziałem.
Podstawowy
„nie jest wyjątkowy wśród wszystkich chipów SSN wykonanych przez wszystkich na świecie, oczywiście” Dlaczego to powinno być „oczywiste”? Inne identyfikatory, które mają być globalnie unikalne, np. Adresy MAC Ethernet, dokonują tego przy użyciu alokacji prefiksów - sprzedawca używa ich prefiksu, a następnie wybiera pozostałe bity / cyfry.
Ben Voigt
1
@BenVoigt Adresy MAC nie są globalnie unikalne. Po prostu wyjątkowy regionalnie. Można przyjechać do Azji i kupić urządzenie z adresem MAC, który będzie kolidował z urządzeniem w Europie. Cholera, na wielu urządzeniach możesz nawet zmienić swój adres MAC, aby celowo kolidować z posiadanym urządzeniem.
slebetman
Cześć @BenVoigt, istnieje wiele rodzin układów scalonych SSN, wiele procesorów / MCU ma unikalne identyfikatory, są one unikalne tylko dla rodziny układów scalonych. Ile unikatowych na świecie schematów numeracji układów scalonych można wymienić? (nie numeracja produktów jak IMEI)
TonyM
5

tak, oczywiście, ponieważ wspomniane adresy mac są oczywiste, zwykle w flash / eeprom obok mac, jeśli jest to osobna część, lub we flashu / eeprom gdzie indziej. istotne dane produktu (numer seryjny płyty itp.) można umieścić w osobnym eepromie lub pamięci flash lub w tym samym urządzeniu, w którym przechowywane jest inne oprogramowanie układowe.

Jeśli masz na przykład sytuację, w której możliwe jest uaktualnienie oprogramowania układowego w terenie, część projektu systemu, nie chcesz, aby dane VPD zostały usunięte po skasowaniu i przeprogramowaniu oprogramowania układowego, więc musisz to rozwiązać za pomocą funkcji ochrony przed zapisem urządzenia flash (umieszczenie VPD na swoim banku / obszarze i zablokowanie tego obszaru) i niekoniecznie publikowanie / dokumentowanie publicznie, jak zwolnić pin ochrony przed zapisem i / lub jakieś inne rozwiązanie, dzięki któremu można zaprogramować VPD w MFG i następnie należy go zablokować w inny sposób (pociągnięcie w dół / w górę, zgodnie z wymaganiami, a następnie zaprogramowane podczas / wokół ICT, które urządzenie może pociągnąć w drugą stronę).

Prawdopodobnie jest to bardziej powszechne niż myślisz, medycyna jest tylko bardzo malutką grupą ludzi, którzy by to zrobili. Może nie pilot do telewizora, ale prawdopodobnie mysz lub klawiatura, a na pewno telefon komórkowy itp.

Jeśli na płycie znajduje się również naklejka, może się okazać, że ma ona kod kreskowy, aby podczas produkcji urządzenie lub operator mógł zeskanować kod kreskowy, wersję montażu itp. I dodać go do VPD dla tej płyty.

old_timer
źródło
jeśli zaprojektowałeś aktualizację w terenie, to przynajmniej chcesz wiedzieć, jaką masz wersję oprogramowania wbudowanego w oprogramowanie, ale przed wykonaniem aktualizacji w terenie możesz potrzebować wiedzieć, jaka to konkretna platforma / płyta (aby sprawdzić / użyj właściwego oprogramowania i / lub niuansów programowania terenowego itp.), więc nie tylko chcesz chronić VPD, ale możesz potrzebować informacji VPD w ramach projektu, aby umożliwić aktualizację oprogramowania.
old_timer
3

Posiadanie unikalnych kodów dla każdego produktu jest możliwe i wykonalne. Jednym ze sposobów na to byłoby posiadanie systemu programowania, który sekwencyjnie zmienia numer identyfikacyjny oprogramowania układowego dla każdego zaprogramowanego urządzenia. W przypadku niektórych systemów jest to łatwe; na przykład niektóre mikrokontrolery mają zarezerwowaną lokalizację eeprom specjalnie do przechowywania identyfikatora.

Inną alternatywą byłoby dodanie unikalnego identyfikatora sprzętowego. Przykładem tego jest krzemowy układ scalony Dallas Semi (obecnie Maxim Integrated) z numerem seryjnym ( DS2401 ). To urządzenie podaje numer seryjny i masz gwarancję, że będzie unikalny. Ten numer seryjny może służyć do ustalenia unikalnego adresu dla konkretnego produktu.

Adam Z
źródło
2

Masowo produkowane karty sieciowe mają swoje numery seryjne w postaci adresu sprzętowego (MAC) zaprogramowanego w pamięci flash / EEPROM podczas produkcji.

Podczas gdy numery seryjne nakładane na obudowę produktu jako naklejka mogą zostać usunięte lub ponownie nałożone, wypalenie numeru seryjnego na konkretnej płycie stwarza inny sposób na śledzenie użycia płyty; najprawdopodobniej ten numer seryjny zostanie również wydrukowany na dokumentacji medycznej, aby sprawdzić, które dokładnie urządzenie zostało użyte do diagnozy medycznej lub operacji.

Anonimowy
źródło
2

... czy jest to coś łatwego do osiągnięcia, czy też wymagałoby opracowania własnego procesu produkcyjnego?

Około 10 lat temu byłem w podobnej sytuacji z oprogramowaniem sprzętowym dla urządzeń medycznych, które opracowałem dla jednego z moich klientów. To było urządzenie klasy 2, które podniosło poprzeczkę. Ilości produkcyjne były w setkach.

Nie mogliśmy znaleźć gotowego programatora, który mógłby zapisywać numery seryjne automatycznie lub półautomatycznie. Zrobiliśmy obejście. Mieliśmy fabryczne oprogramowanie wewnętrzne, które służyło do kalibracji i testowania. To fabryczne oprogramowanie układowe komunikowało się z resztą sprzętu testowego przez port szeregowy. W ramach tych testów pobieramy numer seryjny, który był przechowywany w pamięci EEPROM mikrokontrolera. (Fabryczne oprogramowanie wewnętrzne zostało zastąpione przez oprogramowanie wewnętrzne).

Nick Alexeev
źródło
0

Programiści produkcji SEGGER wspierają flashowanie niepowtarzalnych numerów seryjnych w MCU.

filo
źródło
0

Jeśli masz na to wiele opcji (niektóre z tej odpowiedzi ):

  1. Użyj unikalnego identyfikatora swojego mikrokontrolera, jeśli jest dostępny.
  2. Wybierz unikalny adres, ustawiając niektóre zewnętrzne mostki na dedykowanych I / O.
  3. Zaprogramuj UID do flashowania lub EEPROM podczas produkcji. Sam plik oprogramowania układowego można zmienić poprzez serializację. Jeśli twoja linia montażowa nie ma tej funkcji, ale możesz ją dostosować, łatwo to zrobić, lokalizując przesunięcie pliku oprogramowania układowego za pomocą edytora szesnastkowego i używając swojego ulubionego skryptu / języka do zmodyfikowania pliku. Czasami możesz „naprawić” ten adres za pomocą skryptu linkera.
  4. Pod powierzchnią zewnętrznego układu, który zapewnia UID.
  5. Skonfiguruj wewnętrzną pamięć flash / eeprom (jeśli jest dostępna) za pomocą interfejsu usługi lub programu ładującego. Można to zrobić nawet podczas testowania (w niektórych przypadkach nie do końca na „linii produkcyjnej”). Niektóre urządzenia mają ten interfejs serwisowy, w którym tylko producent autoryzowanych techników może zmienić niektóre wartości. Ponieważ ta wartość powinna być niemodyfikowalna, upewnij się, że kod kodu modyfikuje wartości i zabrania dalszych modyfikacji. Jeśli masz program ładujący, upewnij się, że ta sekcja nie jest nadpisywana podczas aktualizacji w terenie.
Ronan Paixão
źródło
0

Jeśli masz dostęp do dobrego sprzętu RNG i 16 bajtów dodatkowej trwałej pamięci, jednym ze sposobów, który nie wymaga zbytniej zmiany procesu produkcyjnego, jest wygenerowanie identyfikatora GUID v4 przy pierwszym uruchomieniu i zapisanie go. Oprogramowanie układowe można zrzucić do portu szeregowego podczas przeprowadzanych testów postprogramowych. To nie jest sekwencyjne, ale to nie ma znaczenia dla większości aplikacji.

Reid Rankin
źródło
0

Jeśli użycie RFID lub Smart Tag na każdej płytce drukowanej spełnia ten wymóg, będzie to najłatwiejsza metoda wdrożenia - pod Twoją kontrolą.

Guill
źródło