É prático que o firmware seja identificado exclusivamente na produção

12

Existem sistemas disponíveis na fabricação em larga escala que permitem que um número de série exclusivo seja programado no firmware ou algum espaço de memória livre para cada PCB que é enviada?

Descobri que o FDA decidiu começar a aplicá-lo a dispositivos de nível médico, mas isso é algo fácil de realizar ou exigiria o desenvolvimento de seu próprio processo de fabricação?

Lukeyb
fonte
7
Que tipo de sistema você tem? Muitas CPUs (e MCUs de ponta) já possuem algum tipo de registro de ID pré-programado com um valor único.
Dmitry Grigoryev
4
Primeiro verifique o seu MCU ainda não tem um identificador único
Jeroen3

Respostas:

14

A maioria dos programadores de produção é capaz de inserir um número de série exclusivo na memória programada, normalmente um processo chamado serialização . Esta é uma captura da tela Serialization de um antigo programador Dataman.

exibição de serialização do programador Dataman

Steve G
fonte
serializationé uma possibilidade, mas requer extremo cuidado, especialmente se o intervalo de valores ultrapassar o limite de uma palavra. Se você terceirizar a programação, isso se torna ainda mais complicado - se um fornecedor conhecido entendesse isso errado não uma vez, mas duas vezes seguidas, antes de finalmente admitir que o programador da parte em questão não poderia ser serializado em vários bytes. Acabaram enviando a eles um arquivo exclusivo para cada valor do byte mais significativo, para cada um dos quais eles executaram um trabalho de programação exclusivo de 256 peças serializando o menor. Para o próximo design, criamos um programador personalizado.
Chris Stratton
14

Você pode estar perguntando sobre uma solução apenas de software, mas se conseguir adicionar um IC barato à sua placa, poderá usar um chip 'Silicon Serial Number'.

Estes são pequenos chips ROM que cada dispositivo contém um número binário exclusivo. Exemplos são o DS2401 da Maxim (barramento de 1 fio) e o DS28CM00 (I2C) que possuem um número exclusivo de 48 bits.

O número é único entre todos os ICs feitos desse número de peça pelo fabricante. Não é único entre todos os chips SSN fabricados por todos no mundo, obviamente. Mas eles facilitam a escolha de um dispositivo para sua placa e sabem que cada placa já criada lerá um número diferente e único.

TonyM
fonte
1
Essa é possivelmente a melhor abordagem de bloqueio de fornecedores que eu já vi.
Básico
"não é único entre todos os chips SSN feitos por todos no mundo, obviamente" Por que isso deveria ser "óbvio"? Outros identificadores que pretendem ser globalmente exclusivos, por exemplo, endereços MAC Ethernet, realizam-no usando a alocação de prefixo - o fornecedor usa seu prefixo e depois escolhe os bits / dígitos restantes.
Ben Voigt
1
Os endereços MAC do @BenVoigt não são globalmente exclusivos. Apenas regionalmente único. É possível vir para a Ásia e comprar um dispositivo com um endereço MAC que colidirá com um dispositivo na Europa. Caramba, em muitos dispositivos, você pode até mudar seu endereço MAC para colidir deliberadamente com um dispositivo que você possui.
slebetman
Oi @BenVoigt, existem muitas famílias de SSN IC, muitos processadores / MCUs têm identificações únicas, elas são únicas para a família de IC. Quantos esquemas de numeração de IC globalmente exclusivos você pode listar? (não numeração produto como o IMEI)
TonyM
5

sim, certamente, como os endereços MAC mencionados são óbvios, geralmente em um flash / eeprom próximo ao mac, se for uma parte separada, ou em um flash / eeprom em outro local. dados vitais do produto (número de série da placa, etc.) podem ser colocados em um eeprom ou flash separado ou no mesmo dispositivo usado para armazenar outro firmware.

Quando você tem uma situação, por exemplo, em que as atualizações de campo do firmware são possíveis, parte do design do sistema, você não deseja que os dados do VPD sejam apagados quando o flash do firmware for apagado e reprogramado, portanto, é necessário resolver isso usando os recursos de proteção contra gravação do dispositivo flash (colocando o VPD em seu banco / área e bloqueando essa área) e não necessariamente publicando / documentando publicamente como liberar o pino de proteção contra gravação e / ou alguma outra solução para que você possa programar o VPD em mfg e mantenha-o travado de outra forma (um puxar para baixo / para cima, conforme necessário, quando programado durante / em torno das TIC para que o equipamento possa puxá-lo para o outro lado).

Provavelmente é mais comum do que você pensa, o médico é apenas um subconjunto muito pequeno de pessoas que faria isso. Talvez não seja um controle remoto de televisão, mas provavelmente um mouse ou teclado e certamente um telefone celular, etc.

Se / quando um adesivo também for usado no quadro, você poderá encontrar um código de barras, para que, durante a fabricação, o equipamento ou o operador possa digitalizar o código de barras, a montagem rev, etc. e adicioná-lo ao VPD para esse quadro.

old_timer
fonte
se você projetou para atualizações de campo, pelo menos deseja saber qual versão de firmware possui, que é simplesmente compilada no firmware, mas antes de fazer a atualização em campo, talvez seja necessário saber qual plataforma / placa específica é essa (para verificar se há / use o firmware correto e / ou as nuances da programação de campo, etc.). Para não apenas proteger o VPD, é necessário NECESSIDADE das informações do VPD como parte do design para permitir a atualização do firmware.
21817 Old_timer
3

Ter códigos exclusivos para cada produto é bem possível e factível. Uma maneira de fazer isso seria ter um sistema de programação de software que altere seqüencialmente o número de identificação do firmware para cada dispositivo programado. Com alguns sistemas, isso é fácil de fazer; alguns microcontroladores, por exemplo, têm um local eeprom reservado especificamente para armazenar um ID.

Outra alternativa seria adicionar um ID de hardware exclusivo. Um exemplo disso é um circuito integrado de número de série de silicone Dallas Semi (agora Maxim Integrated) ( DS2401 ). Este dispositivo fornece um número de série e você tem a garantia de que será único. Este número de série pode ser usado para inferir um endereço exclusivo para um produto específico.

Adam Z
fonte
2

As placas de rede produzidas em massa estão tendo seus números de série na forma de endereço de hardware (MAC) programados em seu flash / EEPROM durante a fabricação.

Embora os números de série aplicados na embalagem do produto como adesivo possam ser removidos ou reaplicados, ter o número de série gravado na placa específica gera outra maneira de rastrear o uso da placa; provavelmente esse número de série também será impresso na documentação médica para rastrear qual dispositivo exatamente foi usado para diagnóstico ou operação médica.

Anônimo
fonte
2

... isso é algo fácil de realizar ou exigiria o desenvolvimento de seu próprio processo de fabricação?

Cerca de 10 anos atrás, eu estava em uma situação semelhante com um firmware de dispositivo médico que desenvolvi para um de meus clientes. Este era um dispositivo de classe 2, que elevava a fasquia. As quantidades de produção estavam em centenas.

Não foi possível encontrar um programador de prateleira capaz de escrever números de série automática ou semi-automaticamente. Fizemos uma solução alternativa. Tínhamos um firmware de fábrica que era usado para calibração e teste. Este firmware de fábrica se comunicava com o restante do equipamento de teste através de uma porta serial. Como parte desse teste, faríamos o download do número de série, armazenado na EEPROM do microcontrolador. (O firmware de fábrica foi sobrescrito pelo firmware de campo.)

Nick Alexeev
fonte
0

Os programadores de produção SEGGER suportam a piscada de números de série exclusivos em MCUs.

filo
fonte
0

Se você tem muitas opções para isso (algumas foram extraídas desta resposta ):

  1. Use o ID exclusivo do seu microcontrolador, se disponível.
  2. Selecione um endereço exclusivo, configurando alguns jumpers externos em E / S dedicadas.
  3. Programe um UID para piscar ou EEPROM durante a produção. O próprio arquivo de firmware pode ser alterado através da serialização. Se sua linha de montagem não possui esse recurso, mas você pode personalizá-lo, é fácil localizar o deslocamento do arquivo de firmware com um editor hexadecimal e usar seu script / idioma favorito para modificar o arquivo. Às vezes, você pode "consertar" esse endereço com o script do vinculador.
  4. Coloque um chip externo que fornece um UID.
  5. Configure o flash / eeprom interno (se disponível) com sua interface de serviço ou carregador de inicialização. Isso pode ser feito durante o teste (não exatamente na "linha de produção" em alguns casos). Alguns dispositivos possuem essa interface de serviço, na qual apenas o fabricante dos técnicos autorizados pode alterar alguns valores. Como esse valor não deve ser modificado, verifique se o código sinaliza valores modificados e proíba outras modificações. Se você possui um gerenciador de inicialização, verifique se esta seção não é substituída nas atualizações de campo.
Ronan Paixão
fonte
0

Se você tiver acesso a um bom RNG de hardware e 16 bytes de armazenamento persistente extra, uma maneira que não envolve alterar muito o processo de produção é gerar um GUID v4 na primeira inicialização e armazená-lo. Você pode fazer com que o firmware o despeje em série durante os testes de pós-programação que você executar. Não é seqüencial, mas isso não importa para a maioria dos aplicativos.

Reid Rankin
fonte
0

Se o uso de uma RFID ou etiqueta inteligente em cada PCB atender ao requisito, será o método mais fácil de implementação - sob seu controle.

Guill
fonte