1. AES / RSA KEY
- Nagra에 RSA Public key 요청
- ALi DDK의 FPK, AES0, AES1, RSA0, RSA1 KEY 변경
- key_transfer.sh 스크립트 내용 참고
2. MarkID / Version Mask
- BL_MERGE.cmd 파일의 MKT_ID & VER_ID 데이터를 아래와 같이 변경하도록 한다.
- 이 데이터는 부트 각각의 영역에 정확히 삽입되었는지 확인하도록 한다.
3. Bootloader option check
- DTS 최종 버전 확인 (MTD / Memory Map / etc)
- ALi 1st bootloader에 DTB 포함되어 때문에 DTS 최종 버전인지 확인이 필요
- ALi 1st bootloader debug 옵션 비활성화
- ALi Starter / ALi Starter-Standalone 클린 빌드
- bootloader 각 영역을 encrypt하기 위해 ABL_AES_FPK 설정
- SE Lab에 Signing 요청한 bootcode.bin 파일을 제출해야 하기 때문에 원본 백업 (output/images)
- Bootloader re-sign과 관련된 ALi Patch 적용 여부 확인
4. Bootloader Build
- Bootloader binary 생성
make post-build
- Signing 파일 생성
make post-build CA_SIGN=1
- boot_code_area.bin / boot_param_area.bin / ext_rsa_pubkey_area.bin 파일이 생성
- 생성된 위 3개의 파일을 Narga에 Signing 요청
- postbuild/c3507/c0100a/signed_by_ca/to_ca_signed 생성된 파일을 Nagra에 전달
- boot_param_area.bin 파일에서 [0x24:0x28] 구간의 데이터가 0x00 값인 것을 확인 후, Signing 요청할 것
- 특정 값으로 설정되어 있을 경우 BL_ENCRYPT_EN 퓨징 상관없이 Encrypted boot 로딩 가능 (검증용)
- Encrypted bootloader 검증을 위한 flag 값으로 Signing 요청시 0x00000000으로 설정되어 있어야 함
- 특정 값으로 설정되어 있을 경우 BL_ENCRYPT_EN 퓨징 상관없이 Encrypted boot 로딩 가능 (검증용)
5. Signed bootloader 생성
- ABL_AES_FPK 설정된 상태에서 Nagra Signature 파일 병합해야 Encrypted bootloader가 생성 됨
make post-build CA_SIGN=2
- 최종 bootloader 파일인 boot_total_area.abs 생성
- boot_total_area.bin 파일의 0x150, 0x700, 0x7FF00 offset에 Signature가 정상적으로 삽입되었는지 확인
6. Signed bootloader 동작 확인
- Signed bootloader 동작하려면 아래의 OTP Fusing이 필요하다.
- eOTP_BL_ENCRYPT_FLOW
- eOTP_CUSTOMER_ID
- eOTP_BOOTROM_SIG_EN
- eOTP_VER_REF 확인
- 버전 확인 과정에서 stb가 벽돌되기 때문에 맨 UART / JTAG 퓨징처럼 맨 마지막에 할 것
- eOTP_UBOOT_VERSION 확인