마이크로세미 LGOO

Microchip UG0881 PolarFire SoC FPGA 부팅 및 구성

Microchip-UG0881-PolarFire-SoC-FPGA-부팅 및 구성-제품

보증

Microsemi는 여기에 포함된 정보 또는 특정 목적을 위한 제품 및 서비스의 적합성과 관련하여 어떠한 보증, 진술 또는 보장도 하지 않으며 제품 또는 회로의 응용 프로그램 또는 사용으로 인해 발생하는 어떠한 책임도 지지 않습니다. 본 계약에 따라 판매되는 제품 및 Microsemi에서 판매하는 기타 모든 제품은 제한된 테스트를 거쳤으며 미션 크리티컬 장비 또는 응용 프로그램과 함께 사용해서는 안 됩니다. 모든 성능 사양은 신뢰할 수 있는 것으로 여겨지지만 검증되지는 않았으며 구매자는 제품의 모든 성능 및 기타 테스트를 단독으로, 최종 제품과 함께 또는 제품에 설치하여 수행하고 완료해야 합니다. 구매자는 Microsemi에서 제공하는 데이터 및 성능 사양 또는 매개변수에 의존해서는 안 됩니다. 제품의 적합성을 독립적으로 결정하고 이를 테스트하고 확인하는 것은 구매자의 책임입니다. 본 계약에 따라 Microsemi가 제공하는 정보는 모든 오류와 함께 "있는 그대로, 있는 그대로" 제공되며, 이러한 정보와 관련된 모든 위험은 전적으로 구매자에게 있습니다. Microsemi는 그러한 정보 자체 또는 그러한 정보에 의해 설명된 어떤 것과 관련하여 어떤 특허권, 라이선스 또는 기타 IP 권한도 명시적 또는 묵시적으로 어떤 당사자에게도 부여하지 않습니다. 이 문서에 제공된 정보는 Microsemi의 소유이며 Microsemi는 이 문서의 정보 또는 제품 및 서비스를 사전 통지 없이 언제든지 변경할 수 있는 권리를 보유합니다.

마이크로세미 소개

Microchip Technology Inc.(Nasdaq: MCHP)의 전액 출자 자회사인 Microsemi는 항공우주 및 방위, 통신, 데이터 센터 및 산업 시장을 위한 포괄적인 반도체 및 시스템 솔루션 포트폴리오를 제공합니다. 제품에는 고성능 및 방사선 강화 아날로그 혼합 신호 집적 회로, FPGA, SoC 및 ASIC이 포함됩니다. 전원 관리 제품; 시간에 대한 세계 표준을 설정하는 타이밍 및 동기화 장치 및 정확한 시간 솔루션; 음성 처리 장치; RF 솔루션; 개별 구성 요소; 엔터프라이즈 스토리지 및 통신 솔루션, 보안 기술 및 확장 가능한 Anti-tamp어 제품; 이더넷 솔루션; PoE(Power-over-Ethernet) IC 및 미드스팬 맞춤형 디자인 기능과 서비스를 제공합니다. 자세히 알아보기 www.microsemi.com.

부팅 및 구성

PolarFire SoC FPGA는 고급 전원 켜기 회로를 사용하여 전원 켜기 및 재설정 시 안정적인 전원 켜기를 보장합니다. 전원 켜기 및 재설정 시 PolarFire SoC FPGA 부팅 시퀀스는 전원 켜기 재설정(POR), 장치 부팅, 설계 초기화, MSS(Microcontroller Subsystem) 사전 부팅 및 MSS 사용자 부팅을 따릅니다. 이 문서는 MSS 사전 부팅 및 MSS 사용자 부팅에 대해 설명합니다. POR, 장치 부팅 및 설계 초기화에 대한 자세한 내용은 UG0890: PolarFire SoC FPGA 전원 공급 및 재설정 사용 설명서를 참조하십시오.
MSS 기능에 대한 자세한 내용은 UG0880: PolarFire SoC MSS 사용 설명서를 참조하십시오.

부팅 순서
부팅 시퀀스는 PolarFire SoC FPGA의 전원이 켜지거나 재설정될 때 시작됩니다. 프로세서가 응용 프로그램을 실행할 준비가 되면 종료됩니다. 이 부팅 시퀀스는 여러 s를 통해 실행됩니다.tages 프로그램 실행을 시작하기 전에.
일련의 작업은 하드웨어의 전원 켜기 재설정, 주변 장치 초기화, 메모리 초기화 및 실행을 위해 비휘발성 메모리에서 휘발성 메모리로 사용자 정의 응용 프로그램 로드를 포함하는 부팅 프로세스 중에 수행됩니다.

다음 그림은 부팅 시퀀스의 여러 단계를 보여줍니다.

그림 1  부팅 순서Microchip-UG0881-PolarFire-SoC-FPGA-부팅 및 구성-그림 1

MSS 사전 부팅

Design Initialization이 성공적으로 완료되면 MSS Pre-boot가 실행을 시작합니다. MSS는 모든 정상 시작 절차가 완료된 후 재설정에서 해제됩니다. 시스템 컨트롤러는 장치의 프로그래밍, 초기화 및 구성을 관리합니다. 프로그래밍된 장치가 시스템 컨트롤러 일시 중단 모드로 구성된 경우 MSS 사전 부팅이 발생하지 않습니다.
MSS 부팅 전 초기화 단계는 시스템 컨트롤러 펌웨어에 의해 조정되지만 MSS Core Complex의 E51을 사용하여 부팅 전 시퀀스의 특정 부분을 수행할 수 있습니다.
MSS 사전 부팅 중에 다음 이벤트가 발생합니다.tage:

  • MSS eNVM(embedded Non-Volatile Memory) 전원 켜기
  • MSS Core Complex L2 캐시와 관련된 중복 복구 초기화
  • 사용자 부팅 코드 인증(사용자 보안 부팅 옵션이 활성화된 경우)
  • 운영 MSS를 사용자 부트 코드로 인계

MSS Core Complex는 네 가지 모드 중 하나로 부팅할 수 있습니다. 다음 표에는 sNVM에서 구성하고 프로그래밍할 수 있는 MSS 사전 부팅 옵션이 나열되어 있습니다. 부트 모드는 사용자 매개변수 U_MSS_BOOTMODE[1:0]에 의해 정의됩니다. 추가 부팅 구성 데이터는 모드에 따라 다르며 사용자 매개변수 U_MSS_BOOTCFG에 의해 정의됩니다(3페이지 표 4 및 5페이지 표 6 참조).

표 1 • MSS 코어 복합 부트 모드

U_MSS_BOOTMODE[1:0] 방법 설명
0 유휴 부팅 MSS가 구성되지 않은 경우 MSS Core Complex는 부팅 ROM에서 부팅됩니다.
1 비보안 부팅 MSS Core Complex는 U_MSS_BOOTADDR에 의해 정의된 주소에서 직접 부팅됩니다.
2 사용자 보안 부팅 sNVM에서 MSS Core Complex 부팅
3 공장 보안 부팅 공장 보안 부팅 프로토콜을 사용하여 MSS Core Complex 부팅

부팅 옵션은 Libero 설계 흐름의 일부로 선택됩니다. 모드 변경은 새로운 FPGA 프로그래밍 생성을 통해서만 가능합니다. file.

그림 2 • MSS 부팅 전 흐름 Microchip-UG0881-PolarFire-SoC-FPGA-부팅 및 구성-그림 2

유휴 부팅

MSS가 구성되지 않은 경우(예:amp파일, 빈 장치) 그런 다음 MSS Core Complex는 디버거가 대상에 연결할 때까지 모든 프로세서를 무한 루프에 유지하는 부팅 ROM 프로그램을 실행합니다. 부트 벡터 레지스터는 장치가 재설정되거나 새 부트 모드 구성이 프로그래밍될 때까지 해당 값을 유지합니다. 구성된 장치의 경우 이 모드는 다음을 사용하여 구현할 수 있습니다.
U_MSS_BOOTMODE=0 Libero 구성기의 부팅 옵션입니다.

메모: 이 모드에서는 U_MSS_BOOTCFG가 사용되지 않습니다.

다음 그림은 유휴 부팅 흐름을 보여줍니다.
그림 3 • 유휴 부팅 흐름Microchip-UG0881-PolarFire-SoC-FPGA-부팅 및 구성-그림 3

비보안 부팅

이 모드에서 MSS Core Complex는 인증 없이 지정된 eNVM 주소에서 실행됩니다. 가장 빠른 부팅 옵션을 제공하지만 코드 이미지의 인증은 없습니다. 주소는 Libero Configurator에서 U_MSS_BOOTADDR을 설정하여 지정할 수 있습니다. 이 모드는 FIC를 통해 FPGA 패브릭 메모리 리소스에서 부팅하는 데에도 사용할 수 있습니다. 이 모드는 다음을 사용하여 구현됩니다.
U_MSS_BOOTMODE=1 부팅 옵션.
MSS 코어 컴플렉스는 U_MSS_BOOTCFG(다음 표에 나열됨)에 의해 정의된 부팅 벡터를 사용하여 재설정에서 해제됩니다.

표 2 • 비보안 부팅 모드 1에서 U_MSS_BOOTCFG 사용

오프셋(바이트)  

크기 (바이트)

 

이름

 

설명

0 4 BOOTVEC0 E51용 부트 벡터
4 4 BOOTVEC1 U540용 부트 벡터
8 4 BOOTVEC2 U541용 부트 벡터
16 4 BOOTVEC3 U542용 부트 벡터
20 4 BOOTVEC4 U543용 부트 벡터

다음 그림은 비보안 부팅 흐름을 보여줍니다.
그림 4 • 비보안 부팅 흐름Microchip-UG0881-PolarFire-SoC-FPGA-부팅 및 구성-그림 4

사용자 보안 부팅
이 모드에서는 사용자가 자신의 맞춤형 보안 부팅을 구현할 수 있으며 사용자 보안 부팅 코드는 sNVM에 배치됩니다. sNVM은 내장 PUF(Physically Unclonable Function)로 보호할 수 있는 56KB 비휘발성 메모리입니다. ROM으로 표시된 sNVM 페이지는 변경할 수 없기 때문에 이 부팅 방법은 안전한 것으로 간주됩니다. 전원을 켜면 시스템 컨트롤러가 사용자 보안 부팅 코드를 sNVM에서 E51 모니터 코어의 DTIM(Data Tightly Integrated Memory)으로 복사합니다. E51은 사용자 보안 부팅 코드 실행을 시작합니다.
사용자 보안 부팅 코드의 크기가 DTIM 크기보다 크면 사용자는 부팅 코드를 두 개로 분할해야 합니다.tag예. sNVM은 다음 s를 포함할 수 있습니다.tag다음 부팅의 인증을 수행할 수 있는 사용자 부팅 시퀀스의 etage 사용자 인증/복호화 알고리즘 사용.
인증되거나 암호화된 페이지가 사용되면 동일한 USK 키(즉,
U_MSS_BOOT_SNVM_USK)는 모든 인증/암호화 페이지에 사용해야 합니다.
인증에 실패하면 MSS Core Complex가 재설정될 수 있으며 BOOT_FAIL tamper 플래그를 올릴 수 있습니다. 이 모드는 U_MSS_BOOTMODE=2 부팅 옵션을 사용하여 구현됩니다.

표 3 •  사용자 보안 부팅에서 U_MSS_BOOTCFG 사용

오프셋(바이트) 크기 (바이트) 이름 설명
0 1 U_MSS_BOOT_SNVM_PAGE SNVM의 시작 페이지
1 3 예약된 정렬용
4 12 U_MSS_BOOT_SNVM_USK 인증/암호화된 페이지의 경우

다음 그림은 사용자 보안 부팅 흐름을 보여줍니다.
그림 5 • 사용자 보안 부팅 흐름Microchip-UG0881-PolarFire-SoC-FPGA-부팅 및 구성-그림 5

공장 보안 부팅
이 모드에서 시스템 컨트롤러는 eNVM에서 SBIC(Secure Boot Image Certificate)를 읽고 SBIC의 유효성을 검사합니다. 검증에 성공하면 시스템 컨트롤러는 개인 보안 메모리 영역에서 공장 보안 부팅 코드를 복사하여 E51 모니터 코어의 DTIM에 로드합니다. 기본 보안 부팅은 eNVM에 저장된 SBIC를 사용하여 eNVM 이미지에 대한 서명 확인을 수행합니다. 오류가 보고되지 않으면 MSS Core Complex로 재설정이 해제됩니다. 오류가 보고되면 MSS Core Complex가 재설정되고 BOOT_FAIL tamp어 플래그가 올라갑니다. 그런 다음 시스템 컨트롤러는 다음과 같이 활성화됩니다.amp사용자 작업을 위해 FPGA 패브릭에 신호를 보내는 er 플래그입니다. 이 모드는 U_MSS_BOOTMODE=3 부팅 옵션을 사용하여 구현됩니다.

SBIC에는 보호된 이진 Blob의 주소, 크기, 해시 및 ECDSA(Elliptic Curve Digital Signature Algorithm) 서명이 포함되어 있습니다. ECDSA는 타원 곡선 암호화를 사용하는 디지털 서명 알고리즘의 변형을 제공합니다. 또한 각 하드웨어에 대한 재설정 벡터를 포함합니다.
시스템의 스레드/코어/프로세서 코어(Hart).

표 4 •  보안 부팅 이미지 인증서(SBIC)

오프셋 크기 (바이트) 설명
0 4 이미지 주소 MSS 메모리 맵의 UBL 주소
4 4 이미지렌 UBL의 크기(바이트)
8 4 BOOTVEC0 E51용 UBL의 부트 벡터
12 4 BOOTVEC1 U540용 UBL의 부트 벡터
16 4 BOOTVEC2 U541용 UBL의 부트 벡터
20 4 BOOTVEC3 U542용 UBL의 부트 벡터
24 4 BOOTVEC4 U543용 UBL의 부트 벡터
28 1 옵션[7:0] SBIC 옵션
28 3 예약된  
32 8 버전 SBIC/이미지 버전
40 16 디에스엔 선택적 DSN 바인딩
56 48 H UBL 이미지 SHA-384 해시
104 104 코드식 DER 인코딩 ECDSA 서명
208 바이트  

디에스엔
DSN 필드가 XNUMX이 아닌 경우 장치 고유의 일련 번호와 비교됩니다. 비교에 실패하면 boot_fail tamper 플래그가 설정되고 인증이 중단됩니다.

버전
U_MSS_REVOCATION_ENABLE에 의해 SBIC 철회가 활성화된 경우 VERSION 값이 철회 임계값보다 크거나 같지 않으면 SBIC가 거부됩니다.

SBIC 해지 옵션
U_MSS_REVOCATION_ENABLE에 의해 SBIC 폐기가 활성화되고 OPTIONS[0]이 '1'인 경우 SBIC 인증이 완료되면 VERSION 미만의 모든 SBIC 버전이 폐기됩니다. 해지 임계값은 OPTIONS[0] = '1' 및 더 높은 VERSION 필드가 있는 향후 SBIC에 의해 다시 증가할 때까지 새 값으로 유지됩니다. 해지 임계값은 이 메커니즘을 사용해야만 증가할 수 있으며 비트스트림에 의해서만 재설정될 수 있습니다.
해지 임계값이 동적으로 업데이트되면 장치 부팅 중 정전으로 인해 후속 장치 부팅이 실패하지 않도록 암호에 사용되는 중복 저장 체계를 사용하여 임계값이 저장됩니다. 해지 임계값 업데이트에 실패하면 임계값이 새 값이거나 이전 값임을 보장합니다.

표 5 • 공장 부팅 로더 모드에서 U_MSS_BOOTCFG 사용

오프셋(바이트)  

크기 (바이트)

 

이름

 

설명

0 4 U_MSS_SBIC_ADDR MSS 주소 공간에서 SBIC의 주소
4 4 U_MSS_REVOCATION_ENABLE XNUMX이 아닌 경우 SBIC 해지 활성화

다음 그림은 공장 보안 부팅 흐름을 보여줍니다.
그림 6 • 공장 보안 부팅 흐름Microchip-UG0881-PolarFire-SoC-FPGA-부팅 및 구성-그림 6 Microchip-UG0881-PolarFire-SoC-FPGA-부팅 및 구성-그림 7

MSS 사용자 부팅 

MSS 사용자 부팅은 시스템 컨트롤러에서 MSS 코어 컴플렉스로 ​​제어가 제공될 때 발생합니다. 성공적인 MSS 사전 부팅 시 시스템 컨트롤러는 MSS 코어 컴플렉스에 대한 재설정을 해제합니다. MSS는 다음 방법 중 하나로 부팅할 수 있습니다.

  • 베어 메탈 애플리케이션
  • 리눅스 애플리케이션
  • AMP 애플리케이션

베어 메탈 애플리케이션

SoftConsole 도구를 사용하여 PolarFire SoC용 베어 메탈 애플리케이션을 개발할 수 있습니다. 이 도구는 출력을 제공합니다 file프로그래밍 비트스트림에 포함하기 위해 Libero 흐름에서 사용할 수 있는 .hex 형식의 s file. 동일한 도구를 사용하여 J를 사용하여 Bare Metal 애플리케이션을 디버깅할 수 있습니다.TAG
인터페이스.
다음 그림은 E51 모니터 코어를 포함하여 XNUMX개의 하트(코어)가 있는 SoftConsole Bare Metal 애플리케이션을 보여줍니다.

그림 7 • 소프트콘솔 프로젝트 Microchip-UG0881-PolarFire-SoC-FPGA-부팅 및 구성-그림 8

리눅스 애플리케이션

이 섹션에서는 모든 U54 코어에서 실행되는 Linux의 부팅 순서를 설명합니다.
일반적인 부팅 프로세스는 XNUMX개의 s로 구성됩니다.tag에스. 첫 번째 stage 부트 로더(FSBL)는 온칩 부트 플래시(eNVM)에서 실행됩니다. FSBL은 두 번째 s를 로드합니다.tage 부팅 장치에서 외부 RAM 또는 캐시로 부트 로더(SSBL). 부트 장치는 eNVM 또는 eMMC(embedded memory microcontroller) 또는 외부 SPI 플래시일 수 있습니다. SSBL은 부팅 장치에서 외부 RAM으로 Linux 운영 체제를 로드합니다. 세 번째에tage, Linux는 외부 RAM에서 실행됩니다.

다음 그림은 Linux 부트 프로세스 흐름을 보여줍니다.
그림 8 • 일반적인 Linux 부트 프로세스 흐름Microchip-UG0881-PolarFire-SoC-FPGA-부팅 및 구성-그림 9

FSBL, 장치 트리, Linux 및 YOCTO 빌드, Linux 빌드 및 구성 방법에 대한 자세한 내용은 이 문서의 향후 릴리스에서 제공됩니다.

AMP 애플리케이션
Libero MSS Configurator에 대한 자세한 설명과 SoftConsole을 사용하여 다중 프로세서 응용 프로그램을 디버깅하는 방법은 이 문서의 향후 릴리스에서 제공됩니다.

다양한 부팅 소스
이 문서의 향후 버전에서 업데이트될 예정입니다.

부팅 구성
이 문서의 향후 버전에서 업데이트될 예정입니다.

약어

이 문서에서는 다음 약어를 사용합니다.

표 1 •  약어 목록

약어 확장

  • AMP 비대칭 다중 처리
  • DTIM 데이터 긴밀하게 통합된 메모리(SRAM이라고도 함)
  • 영어: 타원 곡선 디지털 서명 알고리즘
  • eNVM 임베디드 비휘발성 메모리
  • FSBL 첫 번째 Stage 부트로더
  • 수사슴 하드웨어 스레드/코어/프로세서 코어
  • 한국어: 마이크로프로세서 서브시스템
  • 전원 켜기 재설정
  • PUF 물리적으로 복제 불가능한 기능
  • 집시 남자 읽기 전용 메모리
  • SCB 시스템 컨트롤러 브리지
  • sNVM 안전한 비휘발성 메모리

개정 내역

개정 기록은 문서에 구현된 변경 사항을 설명합니다. 변경 사항은 현재 발행물부터 시작하여 개정판별로 나열됩니다.

개정판 2.0
다음은 이번 개정판에서 변경된 내용을 요약한 것입니다.

  • Factory Secure Boot에 대한 정보가 업데이트되었습니다.
  • Bare Metal Application에 대한 정보가 업데이트되었습니다.

개정판 1.0
이 문서의 첫 번째 출판물.

마이크로세미 본사
원 엔터프라이즈, 알리소 비에호,
CA 92656 미국
미국 내에서: +1 800-713-4113
미국 외 지역: +1 949-380-6100
매상: +1 949-380-6136
팩스: +1 949-215-4996
이메일: sales.support@microsemi.com
www.microsemi.com

©2020 Microsemi, Microchip Technology Inc.의 전액 출자 자회사. 판권 소유. Microsemi 및 Microsemi 로고는 Microsemi Corporation의 등록 상표입니다. 기타 모든 상표 및 서비스 마크는 해당 소유자의 자산입니다.

문서 / 리소스

Microchip UG0881 PolarFire SoC FPGA 부팅 및 구성 [PDF 파일] 사용자 가이드
UG0881 PolarFire SoC FPGA 부팅 및 구성, UG0881, PolarFire SoC FPGA 부팅 및 구성, 부팅 및 구성

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *