Inicialização e configuração do Microchip UG0881 PolarFire SoC FPGA
Garantia
A Microsemi não oferece nenhuma garantia, representação ou garantia em relação às informações aqui contidas ou à adequação de seus produtos e serviços para qualquer finalidade específica, nem assume qualquer responsabilidade decorrente da aplicação ou uso de qualquer produto ou circuito. Os produtos vendidos aqui e quaisquer outros produtos vendidos pela Microsemi foram sujeitos a testes limitados e não devem ser usados em conjunto com equipamentos ou aplicativos de missão crítica. Todas as especificações de desempenho são consideradas confiáveis, mas não são verificadas, e o Comprador deve realizar e concluir todo o desempenho e outros testes dos produtos, sozinhos e em conjunto com, ou instalados em quaisquer produtos finais. O comprador não deve confiar em quaisquer dados e especificações de desempenho ou parâmetros fornecidos pela Microsemi. É responsabilidade do Comprador determinar independentemente a adequação de quaisquer produtos e testá-los e verificá-los. As informações fornecidas pela Microsemi neste documento são fornecidas “como estão, onde estão” e com todas as falhas, e todo o risco associado a tais informações é inteiramente do Comprador. A Microsemi não concede, explícita ou implicitamente, a nenhuma parte quaisquer direitos de patente, licenças ou quaisquer outros direitos de propriedade intelectual, seja com relação a tais informações em si ou a qualquer coisa descrita por tais informações. As informações fornecidas neste documento são de propriedade da Microsemi, e a Microsemi se reserva o direito de fazer alterações nas informações deste documento ou em quaisquer produtos e serviços a qualquer momento, sem aviso prévio.
Sobre a Microsemi
A Microsemi, uma subsidiária integral da Microchip Technology Inc. (Nasdaq: MCHP), oferece um portfólio abrangente de soluções de semicondutores e sistemas para os mercados aeroespacial e de defesa, comunicações, data center e industrial. Os produtos incluem circuitos integrados de sinais mistos analógicos de alto desempenho e endurecidos contra radiação, FPGAs, SoCs e ASICs; produtos de gestão de energia; dispositivos de temporização e sincronização e soluções de tempo preciso, definindo o padrão mundial de tempo; dispositivos de processamento de voz; soluções de RF; componentes discretos; soluções corporativas de armazenamento e comunicação, tecnologias de segurança e anti-t escalávelamper produtos; soluções Ethernet; CIs e midspans Power-over-Ethernet; bem como recursos e serviços de design personalizado. Saiba mais em www.microsemi.com.
Inicialização e configuração
Os FPGAs PolarFire SoC usam circuitos de inicialização avançados para garantir uma alimentação confiável na inicialização e reinicialização. Na inicialização e reinicialização, a sequência de inicialização do PolarFire SoC FPGA segue a reinicialização da inicialização (POR), inicialização do dispositivo, inicialização do design, pré-inicialização do subsistema do microcontrolador (MSS) e inicialização do usuário do MSS. Este documento descreve a pré-inicialização do MSS e a inicialização do usuário do MSS. Para obter informações sobre POR, inicialização do dispositivo e inicialização do design, consulte UG0890: PolarFire SoC FPGA Power-Up and Resets User Guide.
Para obter mais informações sobre os recursos do MSS, consulte UG0880: PolarFire SoC MSS User Guide.
Sequência de inicialização
A sequência de inicialização começa quando o PolarFire SoC FPGA é ligado ou reiniciado. Termina quando o processador está pronto para executar um programa aplicativo. Essa sequência de inicialização é executada por vários stages antes de iniciar a execução dos programas.
Um conjunto de operações é executado durante o processo de inicialização que inclui reinicialização do hardware, inicialização do periférico, inicialização da memória e carregamento do aplicativo definido pelo usuário da memória não volátil para a memória volátil para execução.
A figura a seguir mostra diferentes fases da sequência de inicialização.
Figura 1 Sequência de inicialização
MSS pré-inicialização
Após a conclusão bem-sucedida da inicialização do design, a pré-inicialização do MSS inicia sua execução. O MSS é liberado de uma reinicialização após a conclusão de todos os procedimentos normais de inicialização. O controlador do sistema gerencia a programação, inicialização e configuração dos dispositivos. A pré-inicialização do MSS não ocorre se o dispositivo programado estiver configurado para o modo de suspensão do controlador do sistema.
A fase de pré-inicialização do MSS da inicialização é coordenada pelo firmware do controlador do sistema, embora possa usar o E51 no MSS Core Complex para executar certas partes da sequência de pré-inicialização.
Os seguintes eventos ocorrem durante a pré-inicialização do MSStage:
- Inicialização da memória não volátil incorporada do MSS (eNVM)
- Inicialização do reparo de redundância associado ao cache MSS Core Complex L2
- Autenticação do código de inicialização do usuário (se a opção de inicialização segura do usuário estiver ativada)
- Transferir o MSS operacional para o código de inicialização do usuário
O MSS Core Complex pode ser inicializado em um dos quatro modos. A tabela a seguir lista as opções de pré-inicialização do MSS, que podem ser configuradas e programadas no sNVM. O modo de inicialização é definido pelo parâmetro do usuário U_MSS_BOOTMODE[1:0]. Dados adicionais de configuração de inicialização dependem do modo e são definidos pelo parâmetro do usuário U_MSS_BOOTCFG (consulte Tabela 3, página 4 e Tabela 5, página 6).
Tabela 1 • Modos de inicialização complexos do MSS Core
U_MSS_BOOTMODE[1:0] | Modo | Descrição |
0 | Inicialização ociosa | O MSS Core Complex inicializa a partir da ROM de inicialização se o MSS não estiver configurado |
1 | Inicialização não segura | O MSS Core Complex inicializa diretamente do endereço definido pelo U_MSS_BOOTADDR |
2 | Inicialização segura do usuário | O MSS Core Complex inicializa a partir do sNVM |
3 | Inicialização segura de fábrica | O MSS Core Complex inicializa usando o protocolo de inicialização seguro de fábrica |
A opção de inicialização é selecionada como parte do fluxo de design do Libero. A alteração do modo só pode ser alcançada por meio da geração de um novo FPGA de programação file.
Figura 2 • Fluxo de pré-inicialização do MSS
Inicialização ociosa
Se o MSS não estiver configurado (por exemploample, dispositivo em branco), então o MSS Core Complex executa um programa ROM de inicialização que mantém todos os processadores em um loop infinito até que um depurador se conecte ao destino. Os registradores do vetor de inicialização mantêm seu valor até que o dispositivo seja reinicializado ou uma nova configuração do modo de inicialização seja programada. Para dispositivos configurados, este modo pode ser implementado usando o
U_MSS_BOOTMODE=0 opção de inicialização no configurador Libero.
Observação: Nesse modo, U_MSS_BOOTCFG não é usado.
A figura a seguir mostra o fluxo de inicialização ociosa.
Figura 3 • Fluxo de inicialização ocioso
Inicialização não segura
Neste modo, o MSS Core Complex é executado a partir de um endereço eNVM especificado sem autenticação. Ele fornece a opção de inicialização mais rápida, mas não há autenticação da imagem do código. O endereço pode ser especificado configurando U_MSS_BOOTADDR no Libero Configurator. Este modo também pode ser usado para inicializar a partir de qualquer recurso de memória FPGA Fabric por meio do FIC. Este modo é implementado usando o
U_MSS_BOOTMODE=1 opção de inicialização.
O MSS Core Complex é liberado da redefinição com vetores de inicialização definidos por U_MSS_BOOTCFG (conforme listado na tabela a seguir).
Tabela 2 • Uso de U_MSS_BOOTCFG no modo de inicialização não segura 1
Deslocamento (bytes) |
Tamanho (bytes) |
Nome |
Descrição |
0 | 4 | BOOTVEC0 | Vetor de inicialização para E51 |
4 | 4 | BOOTVEC1 | Vetor de inicialização para U540 |
8 | 4 | BOOTVEC2 | Vetor de inicialização para U541 |
16 | 4 | BOOTVEC3 | Vetor de inicialização para U542 |
20 | 4 | BOOTVEC4 | Vetor de inicialização para U543 |
A figura a seguir mostra o fluxo de inicialização não segura.
Figura 4 • Fluxo de inicialização não seguro
Inicialização segura do usuário
Este modo permite que o usuário implemente sua própria inicialização segura personalizada e o código de inicialização segura do usuário é colocado no sNVM. O sNVM é uma memória não volátil de 56 KB que pode ser protegida pela função incorporada fisicamente não clonável (PUF). Este método de inicialização é considerado seguro porque as páginas sNVM marcadas como ROM são imutáveis. Ao ligar, o controlador do sistema copia o código de inicialização segura do usuário do sNVM para a Memória Integrada de Dados (DTIM) do núcleo do Monitor E51. E51 começa a executar o código de inicialização segura do usuário.
Se o tamanho do código de inicialização segura do usuário for maior que o tamanho do DTIM, o usuário precisará dividir o código de inicialização em dois stages. O sNVM pode conter os próximos stage da sequência de boot do usuário, que pode realizar a autenticação do próximo boot stage usando o algoritmo de autenticação/descriptografia do usuário.
Se páginas autenticadas ou criptografadas forem usadas, a mesma chave USK (ou seja,
U_MSS_BOOT_SNVM_USK) deve ser usado para todas as páginas autenticadas/criptografadas.
Se a autenticação falhar, o MSS Core Complex pode ser redefinido e o BOOT_FAIL tamper bandeira pode ser levantada. Este modo é implementado usando a opção de inicialização U_MSS_BOOTMODE=2.
Tabela 3 • Uso de U_MSS_BOOTCFG na inicialização segura do usuário
Deslocamento (bytes) | Tamanho (bytes) | Nome | Descrição |
0 | 1 | U_MSS_BOOT_SNVM_PAGE | Página inicial no SNVM |
1 | 3 | RESERVADO | Para alinhamento |
4 | 12 | U_MSS_BOOT_SNVM_USK | Para páginas autenticadas/criptografadas |
A figura a seguir mostra o fluxo de inicialização segura do usuário.
Figura 5 • Fluxo de inicialização segura do usuário
Inicialização segura de fábrica
Nesse modo, o controlador do sistema lê o Secure Boot Image Certificate (SBIC) do eNVM e valida o SBIC. Na validação bem-sucedida, o controlador do sistema copia o código de inicialização seguro de fábrica de sua área de memória privada e segura e o carrega no DTIM do núcleo do monitor E51. A inicialização segura padrão executa uma verificação de assinatura na imagem eNVM usando SBIC que é armazenado no eNVM. Se nenhum erro for relatado, a redefinição será liberada para o MSS Core Complex. Se forem relatados erros, o MSS Core Complex é redefinido e o BOOT_FAIL tamper bandeira é levantada. Em seguida, o controlador do sistema é ativado emampsinalizador er que afirma um sinal para a malha FPGA para ação do usuário. Este modo é implementado usando a opção de inicialização U_MSS_BOOTMODE=3.
O SBIC contém o endereço, tamanho, hash e assinatura Elliptic Curve Digital Signature Algorithm (ECDSA) do blob binário protegido. ECDSA oferece uma variante do Algoritmo de Assinatura Digital que usa criptografia de curva elíptica. Ele também contém o vetor de redefinição para cada Hardware
thread/núcleo/núcleo do processador (Hart) no sistema.
Tabela 4 • Certificado de imagem de inicialização segura (SBIC)
Desvio | Tamanho (bytes) | Valor | Descrição |
0 | 4 | IMAGEADDR | Endereço de UBL no mapa de memória MSS |
4 | 4 | IMAGEM | Tamanho do UBL em bytes |
8 | 4 | BOOTVEC0 | Vetor de inicialização em UBL para E51 |
12 | 4 | BOOTVEC1 | Vetor de inicialização em UBL para U540 |
16 | 4 | BOOTVEC2 | Vetor de inicialização em UBL para U541 |
20 | 4 | BOOTVEC3 | Vetor de inicialização em UBL para U542 |
24 | 4 | BOOTVEC4 | Vetor de inicialização em UBL para U543 |
28 | 1 | OPÇÕES[7:0] | opções SBIC |
28 | 3 | RESERVADO | |
32 | 8 | VERSÃO | SBIC/versão de imagem |
40 | 16 | DSN | Ligação DSN opcional |
56 | 48 | H | hash SHA-384 da imagem UBL |
104 | 104 | CODESIG | Assinatura ECDSA codificada por DER |
Total | 208 | Bytes |
DSN
Se o campo DSN for diferente de zero, ele será comparado com o próprio número de série do dispositivo. Se a comparação falhar, então o boot_fail tampO sinalizador é definido e a autenticação é abortada.
VERSÃO
Se a revogação do SBIC for habilitada por U_MSS_REVOCATION_ENABLE, o SBIC será rejeitado, a menos que o valor de VERSION seja maior ou igual ao limite de revogação.
OPÇÃO DE REVOGAÇÃO SBIC
Se a revogação de SBIC for habilitada por U_MSS_REVOCATION_ENABLE e OPTIONS[0] for '1', todas as versões de SBIC inferiores a VERSION serão revogadas após a autenticação completa do SBIC. O limite de revogação permanece no novo valor até que seja incrementado novamente por um SBIC futuro com OPTIONS[0] = '1' e um campo VERSION superior. O limite de revogação só pode ser incrementado usando este mecanismo e só pode ser redefinido por um fluxo de bits.
Quando o limite de revogação é atualizado dinamicamente, o limite é armazenado usando o esquema de armazenamento redundante usado para senhas, de forma que uma falha de energia durante a inicialização do dispositivo não cause falha na inicialização subsequente do dispositivo. Se a atualização do limite de revogação falhar, é garantido que o valor do limite seja o novo valor ou o anterior.
Tabela 5 • Uso de U_MSS_BOOTCFG no modo de carregador de inicialização de fábrica
Deslocamento (bytes) |
Tamanho (bytes) |
Nome |
Descrição |
0 | 4 | U_MSS_SBIC_ADDR | Endereço do SBIC no espaço de endereço MSS |
4 | 4 | U_MSS_REVOCATION_ENABLE | Habilitar revogação SBIC se diferente de zero |
A figura a seguir mostra o fluxo de inicialização segura de fábrica.
Figura 6 • Fluxo de inicialização segura de fábrica
Inicialização do usuário MSS
A inicialização do usuário do MSS ocorre quando o controle é fornecido do controlador do sistema para o MSS Core Complex. Após a pré-inicialização bem-sucedida do MSS, o controlador do sistema libera a redefinição para o MSS Core Complex. O MSS pode ser inicializado de uma das seguintes maneiras:
- Aplicação Bare Metal
- Aplicativo Linux
- AMP Aplicativo
Aplicação Bare Metal
Os aplicativos bare metal para o PolarFire SoC podem ser desenvolvidos usando a ferramenta SoftConsole. Esta ferramenta fornece a saída files na forma de .hex que pode ser usado no fluxo Libero para incluir no bitstream de programação file. A mesma ferramenta pode ser usada para depurar os aplicativos Bare Metal usando JTAG
interface.
A figura a seguir mostra o aplicativo SoftConsole Bare Metal que possui cinco harts (núcleos), incluindo o núcleo do monitor E51.
Figura 7 • Projeto SoftConsole
Aplicativo Linux
Esta seção descreve a sequência de inicialização do Linux em execução em todos os núcleos U54.
Um processo de inicialização típico consiste em três stages. Os primeirostagO carregador de inicialização (FSBL) é executado a partir do flash de inicialização no chip (eNVM). O FSBL carrega o segundo stage carregador de inicialização (SSBL) de um dispositivo de inicialização para RAM externa ou Cache. O dispositivo de inicialização pode ser eNVM ou microcontrolador de memória incorporada (eMMC) ou SPI Flash externo. O SSBL carrega o sistema operacional Linux do dispositivo de inicialização para a RAM externa. no terceiro stage, o Linux é executado a partir da RAM externa.
A figura a seguir mostra o fluxo do processo de inicialização do Linux.
Figura 8 • Fluxo típico do processo de inicialização do Linux
Detalhes de FSBL, árvore de dispositivos, Linux e construção YOCTO, como construir e configurar o Linux serão fornecidos na versão futura deste documento.
AMP Aplicativo
A descrição detalhada do Libero MSS Configurator e como depurar aplicativos multiprocessadores usando o SoftConsole será fornecida na versão futura deste documento.
Diferentes fontes de inicialização
A ser atualizado em futuras versões deste documento.
Configuração de inicialização
A ser atualizado em futuras versões deste documento.
Siglas
As seguintes siglas são usadas neste documento.
Tabela 1 • Lista de siglas
Acrônimo expandido
- AMP Multiprocessamento assimétrico
- DTIM Memória totalmente integrada de dados (também chamada de SRAM)
- ECDSA Elliptic Curve Digital Signature Algorithm
- eNVM Memória não volátil incorporada
- FSBL Primeiro Stage Carregador de Inicialização
- Cervo Fio de hardware/núcleo/núcleo do processador
- MSS Subsistema do Microprocessador
- POR Reinicialização da ligação
- PUF Função fisicamente não clonável
- ROM Memória somente leitura
- SCB Ponte controladora do sistema
- SNVM Memória não volátil segura
Histórico de revisão
O histórico de revisões descreve as mudanças que foram implementadas no documento. As alterações são listadas por revisão, começando com a publicação atual.
Revisão 2.0
A seguir, um resumo das alterações feitas nesta revisão.
- As informações sobre o Factory Secure Boot foram atualizadas.
- As informações sobre o aplicativo Bare Metal foram atualizadas.
Revisão 1.0
A primeira publicação deste documento.
Sede da Microsemi
Uma Empresa, Aliso Velho,
CA 92656 EUA
Nos EUA: +1 800-713-4113
Fora dos EUA: +1 949-380-6100
Vendas: +1 949-380-6136
Fax: +1 949-215-4996
E-mail: sales.support@microsemi.com
www.microsemi.com
©2020 Microsemi, uma subsidiária integral da Microchip Technology Inc. Todos os direitos reservados. Microsemi e o logotipo da Microsemi são marcas registradas da Microsemi Corporation. Todas as outras marcas comerciais e marcas de serviço são de propriedade de seus respectivos proprietários.
Documentos / Recursos
![]() |
Inicialização e configuração do Microchip UG0881 PolarFire SoC FPGA [pdf] Guia do Usuário UG0881 Inicialização e configuração do PolarFire SoC FPGA, UG0881, inicialização e configuração do PolarFire SoC FPGA, inicialização e configuração |