비트 연산과 시뮬레이션 HAL
하드웨어 의존 부분을 분리하고 가짜 레지스터로 필요한 비트만 변경합니다.
진도 0%
레슨
- CPU·메모리·주변장치의 경계
CPU·RAM·저장장치·GPIO와 HAL 호출 경계를 구성도로 제출합니다.
- 이진수와 비트 마스크
8비트 값과 마스크를 입력받아 지정한 비트만 설정·해제합니다.
- 레지스터 접근 규칙
일반 RW와 W1C 레지스터의 쓰기를 별도 함수로 구현합니다.
- 헤더와 HAL 구현 교체
hal.h 뒤에 RAM 레지스터 구현을 붙이고 기록기에서 직접 주소 접근을 제거합니다.
비트 연산과 시뮬레이션 HAL 미션
m02-memory-records의 산출물을 이어받습니다. 독립 starter에도 직전 모듈의 검증된 산출물을 포함합니다. 센서 기록기와 상태 표시 장치를 PC에서 완성합니다.
요구사항
- 기록기에 hal_gpio_read·hal_gpio_write·hal_now_ms 인터페이스를 붙이고 핀·가짜 레지스터·시간 입력 구성을 문서화합니다.
- C 코드는 gcc -std=c11 -Wall -Wextra -Werror로 빌드하고 Python 보조 코드는 표준 라이브러리만 사용합니다.
- starter의 hal_sim.c에서 입력 bit0 추출·출력 비트 보존·가상 시각 반환을 완성하고 기존 회귀 검사를 유지합니다.
완료 기준
- 미션 압축 해제 디렉터리에서 make test가 종료 코드 0으로 끝나고 기존 모듈의 회귀 검사도 통과합니다.
- RW 값 0xA0의 bit0 설정은 0xA1이고 해제는 0xA0이며 W1C 쓰기는 지정 플래그만 지우고 다른 비트를 보존합니다.
- 핀 0 입력을 0/1로 정규화하고 핀 1 쓰기는 0xA0의 다른 비트를 보존합니다. 잘못된 핀·레벨·NULL을 거부합니다.
- 250ms·300ms fixture가 Sample에 그대로 저장되고 대체 HAL 777ms 및 읽기·쓰기 실패 경로를 같은 recorder.c로 검증합니다.
make test미션 시작 코드
모범 답안
모범 답안 내려받기검토 기준
- 요구사항과 테스트 fixture의 대응이 드러납니다.
- 하드웨어 의존 경계와 실패 처리의 선택 이유를 설명합니다.
- 미션별 측정·관찰 증거를 실제 실행한 결과로 남깁니다.