Raspberry SoC 스펙

라즈베리 파이 3(Raspberry Pi 3 모델B) 

  • SoC: BCM2837
    • Silicon die: BCM2710
    • ARM Core
      • CPU Family: ARM Coretex-A53 (64bit ARMv8-A 아키텍처)
      • Quad-core (1.2Ghz)
      • Spupport 40bit physical address
    • GPU Core
      • BCM VideoCore IV @ 300 MHz
    • L1 Cache
      • Instruction Cache
        • 32KB(VIPT, 2 way, 64 bytes per cache line)
      • Data Cache
        • 32KB(PIPT, 4 way, 64 bytes per cache line) with STB(merging STore Buffer)
        • MOESI cache coherent between cores
    • L2 Cache:
      • Unification(I+D) Cache
        • 512KB for ARM(16 way, 64 bytes per cache line)
    •  TLB
      •  micro-TLB
        • micro I-TLB
          • fully-associative 10 entry
        • micro-D-TLB
          • fully-associative 10 entry
      • Unified Main TLB
        • 4-way 512 entry
        • 4-way 64 entry walk cache
        • 4-way 64 entry IPA(Intermediate Physical Address) cache
  •  RAM
    • 1GB LPDDR2 (GPU랑 공유)

 

라즈베리 파이 2(Raspberry Pi 2 모델B) 

(iamroot 12차-A팀 공식 추천 보드)

  • SoC: BCM2836
    • Silicon die: BCM2709
    • ARM Core
      • CPU Family: ARM Coretex-A7 (ARMv7-A 아키텍처)
      • Quad-core (900Mhz)
    • GPU Core
      • BCM VideoCore IV @ 250 MHz
    • L1 Cache
      • Instruction Cache
        • 32KB(TCM, VIPT, 2 way, 32 bytes per cache line)
      • Data Cache
        • 32KB(PIPT, 4 way, 64 bytes per cache line) with STB(merging STore Buffer)
    • L2 Cache:
      • Unification(I+D) Cache
        • 512KB for ARM(2~3 clock, 8 way, 64 bytes per cache line)
        • 128KB for GPU
    •  TLB
      •  micro-TLB
        • micro I-TLB
        • micro-D-TLB
      • Main TLB
    • Branch Prediction:
      • BTIC(Branch Target Instruction Cache): 4 entries(1 entry have 2 instructions)
      • BTAC(Branch Target Address Cache): 8 entries
      • Branch Prediction: 256 entries
      • Return Stack: 8 entries
    • TCM
      • No TCM for 2 DMA channels
  •  RAM
    • 1GB (GPU랑 공유)

 

라즈베리 파이(Raspberry Pi 모델B 또는 B+)

  • SoC: BCM2835
    • Silicon die: BCM2708
    • ARM Core
      • CPU Family: ARM1176JZF-S (ARMv6z 아키텍처)
      • Single-core (700Mhz)
    • GPU Core
      • BCM VideoCore IV @ 250 MHz
    • L1 Cache
      • Instruction Cache
        • 16KB(TCM, VIPT, 4 way, 32 bytes per cache line)
      • Data Cache
        • 16KB(3 cycle, VIPT, 4 way, 32 bytes per cache line)
    • L2 Cache
      • Unification(I+D) Cache
        • Share 128KB for ARM & GPU
    • TLB
      • micro-TLB
        • micro I-TLB(1 cycle, 10 entries),
        • micro-D-TLB(1 cycle, 10 entries)
      • Main TLB
        • 64 low entries 2 way + 8 full entries
    • Brqnch Prediction
      • BTAC: 128 entries
    • TCM
      •  Instruction-TCM
      • Data-TCM
        • 8KB for 2 DMA channels
  • RAM
    • 512MB (GPU랑 공유)

 

참고

Raspberry PI 2 부트 과정

라즈베리파이 2의 부트과정은 단순하지 않다.

SoC내부에 ARM Cortex-A7이 4개가 있고, GPU도 있어서 두 개 다 부팅을 해야 한다.

내부에 부팅용 ROM이 내장되어 있고, RAM을 ARM과 GPU가 share하여 사용하도록 조정하며, ARM쪽에 사용된 RAM을 상부에서 맨 바닥(0x0000_0000)으로 이동시킨다. 이렇게 해서 리눅스 커널에서 사용하는 물리메모리의 위치는 0x0000_0000이 된다.

여러 번의 부트로더가 동작하는데 아래의 그림을 참고하기 바란다.

Raspberry

커널이미지 빌드 – CONFIG_ARM_APPENDED_DTB

Device Tree Blobs를 사용할 때 배치는 아래와 같다.

  • 일반적으로 A와 같이 CONFIG_ARM_APPENDED_DTB 옵션을 사용하는 경우는 zImage(uImage, bzImage 포함)의
    위쪽에 붙여서 위치한다.
  • 그 외에 B와 같이 별도의 공간에 로드하여 사용하기도 한다.
  • 마지막 항목은 A와 같이 DTB를 공급하는 부트로더 또는 ATAG를 공급하는 부트로더(옛날 부트로더)와 연결되어 사용되며 ATAG 구조 몇 개는 DTB로 변환되어 사용된다.
  • 마지막 항목의 형태로 DTB와 ATAG를 같이 사용하는 특수한 경우도 있다. 이 때에는 기존 DTB에 ATAG의 정보가 추가되어 사용한다.

config_arm_append_dtb0a

config_arm_append_dtb