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

왜 사용?
만약 각 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 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 |