임베디드 용어 사전
기초·메모리

CMSIS

ARM이 정한 Cortex-M 공통 소프트웨어 인터페이스. 벤더가 주변장치 레지스터를 구조체로 정의해 제공한다.

Cortex Microcontroller Software Interface Standard. 주소 상수를 손으로 쓰지 않게 해 준다.

/* 손으로 */
#define GPIOA_ODR (*(volatile uint32_t *)0x40020014)

/* CMSIS */
GPIOA->ODR |= (1u << 5);

칩 회사가 제공하는 헤더에 주변장치가 구조체로 선언돼 있고, 레지스터는 그 멤버다. 레지스터가 연속된 주소에 순서대로 배치돼 있기 때문에 구조체 하나로 딱 맞아떨어진다.

얻는 것

  • 오타로 주소를 틀릴 일이 사라진다
  • 비트 위치도 GPIO_ODR_OD5_Msk 같은 매크로로 제공된다
  • 코어 기능(NVIC·SysTick·DWT) 접근이 칩과 무관하게 같아진다

알아 둘 것

CMSIS 는 HAL 이 아니다. 레지스터를 그대로 노출할 뿐 동작을 감싸지 않는다. 그래서 데이터시트를 읽으며 쓰는 층이고, 이 층을 이해하는 것이 임베디드의 기본기다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 메모리 맵 — 주변장치가 주소인 이유