Devin.KR

비트 연산과 시뮬레이션 HAL

하드웨어 의존 부분을 분리하고 가짜 레지스터로 필요한 비트만 변경합니다.

진도 0%

레슨

  1. CPU·메모리·주변장치의 경계

    CPU·RAM·저장장치·GPIO와 HAL 호출 경계를 구성도로 제출합니다.

  2. 이진수와 비트 마스크

    8비트 값과 마스크를 입력받아 지정한 비트만 설정·해제합니다.

  3. 레지스터 접근 규칙

    일반 RW와 W1C 레지스터의 쓰기를 별도 함수로 구현합니다.

  4. 헤더와 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의 대응이 드러납니다.
  • 하드웨어 의존 경계와 실패 처리의 선택 이유를 설명합니다.
  • 미션별 측정·관찰 증거를 실제 실행한 결과로 남깁니다.