cortex-m3 AMBA와 메모리 맵

2025. 7. 14. 15:15·ARM arch/Cortex-M

AMBA

Advanced Microcontroller Bus Architecture

  • ARM에서 제시한 SoC 내부 버스 구조 표준 규약
  • 다양한 IP블록을 어떻게 연결하고 통신할지에 대한 버스 인터페이스 프로토콜
IP : Intellectual Property

AMBA Example Diagram

왜 사용?

만약 각 MCU(SoC)마다 버스 구조가 다르면

  • 유지보수 어려움
  • 성능 편차 발생
  • IP재사용성 떨어짐

그래서 AMBA를 채택

  • ARM기반 SoC간 호환성 확보
  • 버스 통신 효율성 향상
  • 디자인 재사용/모듈화

AHB

Advanced High-performance Bus

고속 메모리 접근

RAM이나 프로세서같은 경우 고속의 장치이고 그에 맞는 고속Bus가 필요

APB

Advanced Peripheral Bus

저속 주변장치 연결

I/O장치같은 것들은 상대적으로 저속이므로 저속 Bus를 사용

그냥 전부 AHB를 사용하면 안됨?

그러면, 그냥 I/O장치 같은 것들도 고속 Bus인 AHB로 연결하면 안되나?

라는 궁금증이 당연하게 생김

 

AHB가 APB보다 고속Bus이기 때문에 전력을 더 많이 소모한다는 것은 확실

I/O장치, UART, Timer같은 저속 장치에 AHB를 사용한다면 속도도 필요 이상이거니와

SoC같은 전력소모량이 중요한 장치에서 비효율적


Memory Map

cortex-m에서 메모리 맵 전체 레이아웃은 고정

따라서 cortex-m기반의 서로 다른 시스템 간에 소프트웨어를 쉽게 이식 가능

Memory Map: CPU가 바라보는 주소공간에서 어떤 주소가 어떤 용도(RAM, Flash, I/O장치..)로 할당되어 있는지를 나타냄

 

memory map, 최대 4GB의 고정 메모리 맵

Memory Mapped I/O

I/O장치의 주소 공간이 메모리와 같은 주소공간을 사용

  • 메모리 주소 공간에 I/O장치 레지스터 배치 → 메모리 접근하듯이 I/O장치 제어
  • 메모리 장치 액세스 방법을 그대로 I/O장치 접근에도 활용 → 하드웨어 구조 간단
  • 메모리 액세스 명령을 I/O에 활용 → 명령어 집합의 단순화

소프트웨어 논리적 메모리 구조

본 그림과는 살짝 차이가 있다

  • RAM
    • Stack: 지역 변수, 컨텍스트, 주소가 감소하는 방향
    • Heap: 동적 메모리(new, malloc), 주소가 증가하는 방향
    • Data: 전역 변수
      • BSS: 초기화X 전역 변수
      • .data: 초기화O 전역 변수
  • Flash(ROM)
    • .data: RAM에 복사될 초기화된 전역/정적 변수들의 초기값
    • .rodata: 전역 상수 값 (const 변수 같은)
    • .text: 머신 코드
    • .isr_vector: 인터럽트 벡터테이블, 항상 0번지 위치

 

'ARM arch > Cortex-M' 카테고리의 다른 글

테일 체이닝  (2) 2025.09.01
NVIC, Exception Vector Table  (0) 2025.07.16
2025.07.09 - ARM assembly 프로그래밍2  (0) 2025.07.09
2025.07.07 - ARM assembly 프로그래밍1  (0) 2025.07.08
빅 엔디언, 리틀 엔디언  (0) 2025.07.02
'ARM arch/Cortex-M' 카테고리의 다른 글
  • 테일 체이닝
  • NVIC, Exception Vector Table
  • 2025.07.09 - ARM assembly 프로그래밍2
  • 2025.07.07 - ARM assembly 프로그래밍1
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux N
        • start_contribute() N
        • start_analyse()
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    커널 기여
    자료구조
    C++
    arm
    토발즈
    포인터
    Qualcomm
    앤드류모튼
    INIT
    파일 입출력
    버퍼
    yolo
    Branch
    파이썬
    피보나치
    이진 트리
    드라이버 분석
    순환
    백준
    커널
    rubik pi
    Git
    시스템콜
    동적메모리
    c언어
    소수
    스택
    commit
    리눅스
    rubikpi3
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jminu
cortex-m3 AMBA와 메모리 맵
상단으로

티스토리툴바