2019년 3월 27일 수요일

Allwinner H5 Boot Diagrams

Allwinner H5 Boot Diagrams

Allwinner H5 Boot Diagrams

개요

  • The system will boot in different ways based on whether its security features are enabled
  • Supports CPU-0 boot process and CPU-0+ boot process
  • Supports super standby wakeup process
  • USB OTG로 업그레이드 지원
  • Raw NAND, eMMC, SD/TF card ,and SPI NOR Flash에서 fast boot 지원

Normal Mode

아래 그림에서 CPU-0+는 CPU-0를 제외한 나머지 CPU들, 즉 CPU-1, CPU-2, CPU-3를 말한다.

CLUSTER 0 && CPU-0
Others
Hot Plug
Others
SS
Pass
No Pass
Others
unselected
selected
pass
No Pass
Pass
CPU-0 Boot
Read
CLUSTER ID
&& CPU ID
CPU-0+ Boot
Read
Hot Plug
flag
Boot from CPU-0+
Read
SS flag
Check SS
restore code
Run SS Restore
Fast Boot
process
UBOOT_SEL
Mandatory
Upgrade Process
Mandatory
Upgrade finishes
Run Boot0

전체 과정을 설명하면,

  1. Cluster ID와 CPU ID 체크
    • 둘 중 하나라도 0이 아니면 CPU-0+에서 부팅 수행
  2. Hot Plug 플래그 확인
    • Hot Plug이면 CPU-0+에서 부팅 수행
  3. SS 플래그 확인
    • 있으면 SS 복구 코드 확인
      • 통과 시 SS 복구 시작
      • 실패 시 Fastboot
  4. UBOOT_SEL
    • 선택되면 upgrade process
  5. Fastboot
    • 실패 시 upgrade process
  6. BOOT0 시작

Security Mode

전체 과정은 Normal Mode 와 같고, 마지막 6번 과정에서 BOOT0를 실행하는 대신 Security BROM을 실행한다.

CLUSTER 0 && CPU-0
Others
Hot Plug
Others
SS
Pass
No Pass
Others
unselected
selected
pass
No Pass
Pass
CPU-0 Boot
Read
CLUSTER ID
&& CPU ID
CPU-0+ Boot
Read
Hot Plug
flag
Boot from CPU-0+
Read
SS flag
Check SS
restore code
Run SS Restore
Fast Boot
process
UBOOT_SEL
Mandatory
Upgrade Process
Mandatory
Upgrade finishes
Run Security BROM Software

CPU-0+ Boot Process

CPU-0+에서 부팅할 때는 BROM이 CPU-0+ Boot Pointer에 지정된 multi-core system firmware 주소로 JUMP해서 실행시킨다.

yes
no
CPU-0+ Boot starts
Read CPU_ID
CPU_ID > 0?
Read 0x01F0 1C00 + 0x1A4 register
Get soft_entry_address
Run cpu0 code
Jump to the soft_entry_address
Run CPU-0+ code

CPU Hot Plug Process

Hot Plut 비트는 hot plug boot를 할지 결정한다.

yes
no
CPU0 Hot Plug starts
Read 0x01F0 1C00 + 0x1AC register
Get the value
0xFA50 392F ?
Read 0x01F0 1C00 + 0x1A4
Get hot_plug_entry_address
Jump to the hot_plug_entry_address
Run CPU0 code

Super Standby Wakeup Process

SS wakeup은 CPU-S에서 시작되고, CPU-0가 해제되면 CPU-0로 옮겨진다.

CPU-S starts the Super Standby wakeup process
DRAM exit Self refresh - optional
Move the BOOT0 code to SRAM A1 0x00
Release CPU-0 reset
CPU-0 boot

Mandatory Upgrade Process

시스템이 강제 업그레이드 과정으로 진입할지 결정할 때 UBOOT_SEL이 low면 이 프로세스로 진입한다.

Mandatory Upgrade starts
USB FEL
Mandatory Upgrade finish

Fast Boot Normal Process

시스템이 강제 업그레이드 과정으로 진입할지 결정할 때 UBOOT_SEL이 high면 이 프로세스로 진입한다.

pass
not pass
pass
not pass
pass
not pass
pass
not pass
pass
not pass
Fast boot process starts
SDC0 Boot
Operation
EMMC2 Boot
Operation
SDC2 Boot
Operation
NAND Boot
Operation
SPI_NOR Boot
Operation
Run BOOT0 Code
Mandatory Upgrade Process

Fast Boot Security Process

시스템이 강제 MP 프로세스로 진입할지 결정할 때 UBOOT_SEL이 high면 이 프로세스로 진입한다.

pass
not pass
pass
not pass
pass
not pass
pass
not pass
pass
not pass
Right
Wrong
Fast boot process starts
SDC0 Boot
Operation
EMMC2 Boot
Operation
SDC2 Boot
Operation
NAND Boot
Operation
SPI_NOR Boot
Operation
Run the TOC Certification
Read Security BROM Software in TOC
Check
Run Security BROM Software Code
Normal_fel

댓글 없음:

댓글 쓰기