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
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바