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

비트밴딩

특정 메모리 영역의 비트 하나하나를 별도 주소에 대응시켜, 읽기-수정-쓰기 없이 원자적으로 바꾸게 해 주는 기능.

bit-banding. 비트 하나를 워드 하나처럼 다루게 해 주는 주소 별칭이다.

무엇이 문제였나

GPIOA->ODR |= (1u << 5);     // 읽고 → 고치고 → 쓴다 (3단계)

이 세 단계 사이에 인터럽트가 끼어들어 같은 레지스터를 건드리면 한쪽 수정이 사라진다.

비트밴딩의 해법

SRAM 과 주변장치 영역의 앞 1MB 는 각 비트가 별칭 영역의 워드 하나에 대응한다. 그 주소에 0 또는 1 을 쓰면 해당 비트만 바뀐다.

별칭 주소 = 별칭 베이스 + (바이트 오프셋 × 32) + (비트 번호 × 4)

쓰기 한 번이라 중간에 끼어들 틈이 없다.

주의

  • Cortex-M3/M4 계열의 기능이고 모든 칩에 있는 것은 아니다(M0+ 에는 없다)
  • 요즘은 GPIO 의 전용 set/reset 레지스터(BSRR 등)를 쓰는 쪽이 더 흔하다 — 같은 효과를 더 단순하게 얻는다

함께 보면 좋은 용어

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