임베디드는 진법이 일상
임베디드 개발은 하드웨어와 가까이 붙어 있는 영역. 메모리 주소, 레지스터, 비트 마스크가 16진법으로 등장하는 일이 잦다. 진법 변환 도구가 작업 화면 옆에 자리 잡는 이유.
상황 1: 메모리 주소 해석
0x4000_0000 같은 메모리 주소가 코드에 자주 등장. 이 주소가 10진법으로 어디인지, 다른 주소와 얼마나 떨어져 있는지 한 번 변환해 두면 코드 흐름이 잡힌다.
상황 2: 레지스터 비트 분석
레지스터 값이 0x8C로 들어왔을 때 어떤 비트가 1인지 확인. 0x8C → 2진법 1000 1100. 7번 비트와 3·2번 비트가 활성. 진법 변환기로 16진법 → 2진법 즉시 변환하면 비트 분석이 빠르다.
상황 3: 비트 마스크 작성
특정 비트만 켜는 마스크 만들기. 5번 비트만 1인 마스크 = 2진법 0010 0000 = 16진법 0x20. 마스크 작성 시 도구로 검증.
상황 4: 인터럽트 벡터 분석
인터럽트 벡터 테이블이 16진법 주소로 정렬. 각 주소 사이 간격을 10진법으로 환산해 메모리 구조를 파악.
상황 5: 통신 프로토콜 패킷
UART·SPI·I2C 통신에서 송수신 데이터가 16진법으로 표시. 0xAA, 0x55 같은 동기 패턴을 2진법 1010 1010, 0101 0101로 변환해 의미 파악.
상황 6: GPIO 비트 설정
여러 GPIO 핀을 동시에 설정할 때 한 레지스터에 비트로 매핑. 도구로 비트 패턴을 16진법으로 변환해 코드에 적용.
임베디드 자주 쓰는 변환
- 16진법 ↔ 2진법 (비트 분석)
- 16진법 ↔ 10진법 (주소·간격)
- 2진법 ↔ 10진법 (마스크 검증)
진수 변환기를 작업 화면 옆에 두면 임베디드 작업 효율이 분명히 올라간다.
도구 활용 흐름
- 코드 작업 중 16진법 등장 → 도구로 2진법 변환
- 비트 패턴 확인 → 마스크 작성
- 주소 간격 → 10진법으로 환산
- 통신 패킷 → 비트 분석
마무리
임베디드 개발에서 진법 변환은 일상. 도구를 옆에 두면 매번 변환에 들어가는 시간이 분명히 짧아진다.