4.0 KiB
4.0 KiB
TODO
현재 프로젝트에서 다음에 이어서 작업할 항목들을 정리한다.
현재 상태
- BLE 보안은 아직 개발 모드 기준이다.
CONFIG_BT_SMP=n: prj.confBLE_DEV_MODE = 1: src/ble/ble_service.hDev mode: no security / Production mode: bonding + passkey (TODO): src/ble/ble_service.c
- 플래시 저장소는 아직 미구현이다.
Phase 3: FDS/NVS (TODO): src/main.c
- DFU는 아직 미구현이다.
CONFIG_BOOTLOADER_MCUBOOT미설정: build/blinky/zephyr/.config- 파티션도 앱 단일 영역만 사용 중: build/partitions.yml
mcf?는 현재 고정값 반환만 구현되어 있다.freq=1,cycles=7,avg=10,delay=10,samples=100: src/parser.c
- 실제 측정도 현재 위 고정값을 사용한다.
avg=10: src/parser.ccycles=7,delay=10us: src/drivers/piezo/piezo.hsamples=100: src/drivers/echo_adc/echo_adc.h
1. BLE 보안
목표:
- LESC
- MITM
- Fixed Passkey
- Bonding
해야 할 일:
CONFIG_BT_SMP=yCONFIG_BT_FIXED_PASSKEY=yCONFIG_BT_BONDABLE=yCONFIG_BT_SMP_ENFORCE_MITM=y- 필요 시
CONFIG_BT_SMP_SC_ONLY=y또는CONFIG_BT_SMP_SC_PAIR_ONLY=y bt_conn_auth_cb등록- 고정 패스키를
m_static_passkey와 연결- 기본값 선언: src/main.h
- RAM 보관: src/main.c
- 본딩 키 복원을 위해
BT_SETTINGS + SETTINGS + NVS연동
주의:
- Bonding은 저장소 없이 켜도 부팅 후 유지되지 않는다.
- 보안 설정을 올리면 앱 테스트 절차도 함께 바뀐다.
2. 플래시 저장소 (NVS)
목표:
- 예전 FDS 역할을 Zephyr/NCS 방식으로 대체
- 측정 파라미터, passkey, 필요 시 serial/HW info 저장
권장 방향:
- FDS를 다시 붙이기보다
NVS사용 - Bluetooth bonding 키는
BT_SETTINGS가 저장하고 - 앱 파라미터는 별도
NVS또는settings/NVS backend로 저장
우선 저장할 후보:
- piezo config
freqcyclesavgdelay_ussamples
- passkey
- 필요 시
SERIAL_NO,HW_NO
해야 할 일:
piezo_config구조체 추가- 부팅 시 기본값 로드 후 NVS 값이 있으면 덮어쓰기
mcf?는 구조체 읽기mcs?는 구조체 갱신 + 저장- 유효 범위 체크 추가
현재 메모:
mcf?는 아직 고정 응답만 구현됨: src/parser.cmcs?는 아직 없음: src/parser.c
3. DFU
목표:
- BLE 기반 펌웨어 업데이트 지원
권장 방향:
MCUboot + MCUmgr SMP over BLE
해야 할 일:
CONFIG_BOOTLOADER_MCUBOOT=yCONFIG_MCUMGR=yCONFIG_MCUMGR_TRANSPORT_BT=yCONFIG_IMG_MANAGER=y- 필요 시
CONFIG_MCUMGR_GRP_IMG=y - 파티션 구성 추가
slot0slot1- 필요 시
scratch또는 overwrite-only 전략
- 광고/서비스에 SMP transport가 정상 노출되는지 확인
주의:
- 지금 프로젝트는 NUS만 사용 중이라 일반적인 OTA DFU는 바로 안 된다.
- DFU를 넣으면 파티션 구조와 빌드 방식이 함께 바뀐다.
4. 권장 작업 순서
piezo_config구조체 도입mcf?를 고정값이 아닌 실제 구조체 반환으로 변경mcs?구현NVS저장/복원 구현- BLE 보안 적용
- Bonding 저장 확인
- 마지막에 DFU 적용
5. 체크 포인트
mcf?값과 실제 측정값이 항상 같아야 함mcs?로 바꾼 값이 재부팅 후에도 유지되어야 함- 보안 적용 후 앱에서 pairing/passkey 흐름 확인
- DFU 적용 후 기존 NUS 기능과 충돌 없는지 확인