Initial Commit
This commit is contained in:
@@ -1,217 +1,184 @@
|
||||
# VesiScan BASIC - Zephyr (nRF Connect SDK)
|
||||
# VesiScan BASIC - Zephyr
|
||||
|
||||
nRF52840 기반 VesiScan BASIC 펌웨어의 Zephyr 포팅 프로젝트
|
||||
|
||||
## 현재 구현 상태
|
||||
|
||||
| Stage | 내용 | 상태 |
|
||||
|-------|------|------|
|
||||
| 1 | GPIO + 전원 래치 + 버튼 상태머신 | 완료 |
|
||||
| 1 | LED 제어 (green/orange 패턴) | 완료 |
|
||||
| 2 | BLE 스택 + NUS (advertising, 연결, 재연결) | 완료 |
|
||||
| 3 | 배터리 ADC (AIN2, 12bit) | 완료 |
|
||||
| 3 | IMU 내부 온도 센서 | 완료 |
|
||||
| 3 | IMU ICM42670P (I2C0) | 완료 |
|
||||
| 3 | 피에조 TX + mux 제어 | 완료 |
|
||||
| 3 | ADC121S051 echo capture (nrfx SPIM3) | 완료 |
|
||||
| 3 | BLE 커맨드 파서 (TAG+DATA+CRC16) | 진행중 |
|
||||
| 4 | MCUboot + MCUmgr BLE DFU 설정 | 진행중 |
|
||||
| 4 | Flash 저장소 (NVS/settings, piezo config) | 완료 |
|
||||
| - | BLE 보안 (본딩, 패스키) | 미구현 |
|
||||
| - | HW/SN/Passkey 저장/복원 | 미구현 |
|
||||
- nRF52840 기반 VesiScan BASIC 펌웨어의 Zephyr/nRF Connect SDK 포팅 프로젝트
|
||||
- 현재 빌드 대상은 `nrf52840dk_nrf52840` 기준이며, MCUboot + BLE MCUmgr DFU, BLE NUS 명령, 배터리/IMU/피에조/echo ADC 측정 기능 포함
|
||||
|
||||
## 프로젝트 구조
|
||||
|
||||
```
|
||||
blinky/
|
||||
├── CMakeLists.txt # 빌드 설정 (소스 파일 등록)
|
||||
├── prj.conf # Kconfig 설정 (기능 ON/OFF)
|
||||
```text
|
||||
VesiScan-Basic_Zephyr/
|
||||
├── CMakeLists.txt
|
||||
├── prj.conf
|
||||
├── boards/
|
||||
│ └── nrf52840dk_nrf52840.overlay # Devicetree Overlay (핀 매핑)
|
||||
└── src/
|
||||
├── main.c # 메인 진입점 + 부팅 시퀀스 + 버튼 상태머신
|
||||
├── main.h # 전역 상수/변수/타입 정의
|
||||
├── debug_print.h # 디버그 출력 매크로 (RTT)
|
||||
├── parser.c / .h # BLE 커맨드 파서 (TAG+DATA+CRC16)
|
||||
├── power_control.c / .h # 전원 시퀀스 상태머신
|
||||
├── ble/
|
||||
│ └── ble_service.c / .h # BLE NUS 서비스 (advertising, 연결, TX/RX)
|
||||
└── drivers/
|
||||
├── battery/
|
||||
│ └── battery_adc.c / .h # 배터리 전압 ADC (AIN2, 12bit)
|
||||
├── echo_adc/
|
||||
│ └── echo_adc.c / .h # ADC121S051 echo capture (SPIM3)
|
||||
├── imu/
|
||||
│ └── imu_i2c.c / .h # ICM42670P IMU (I2C0)
|
||||
├── led/
|
||||
│ └── led_control.c / .h # LED 패턴 제어 (k_timer 기반)
|
||||
├── piezo/
|
||||
│ └── piezo.c / .h # 피에조 전원, mux, SW burst
|
||||
│ ├── nrf52840dk_nrf52840.overlay
|
||||
│ └── nrf52840dk_nrf52840.conf
|
||||
├── sysbuild/
|
||||
│ ├── mcuboot.conf
|
||||
│ ├── hci_ipc.conf
|
||||
│ └── mcuboot_power_hold_module/
|
||||
├── src/
|
||||
│ ├── main.c / main.h # 전원, 버튼, 부팅, work queue
|
||||
│ ├── app_nvs.c / app_nvs.h # settings/NVS 저장소
|
||||
│ ├── power_control.c / power_control.h
|
||||
│ ├── ble
|
||||
│ │ ├── ble_service.c / ble_service.h # BLE NUS, 광고, 보안, DFU 광고 전환
|
||||
│ ├── command/
|
||||
│ │ ├── handlers
|
||||
│ │ ├── cmd_common.c / cmd_common.h
|
||||
│ │ ├── cmd_table.c / cmd_table.h
|
||||
│ │ └── parser.c / parser.h # BLE 명령 파서와 응답 생성
|
||||
│ ├── drivers/
|
||||
│ │ ├── battery/ # 배터리 ADC
|
||||
│ │ ├── echo_adc/ # ADC121S051 SPIM capture
|
||||
│ │ ├── imu/ # ICM42670P I2C/FIFO
|
||||
│ │ ├── led/ # LED 패턴
|
||||
│ │ └── piezo/ # Piezo TX/MUX 제어
|
||||
│ └── measurement/
|
||||
│ └── piezo_measurement.c / piezo_measurement.h # Piezo burst ~ capture
|
||||
├── tools/
|
||||
├── manual/
|
||||
└── curcuit/
|
||||
```
|
||||
|
||||
## 빌드 방법
|
||||
## 빌드
|
||||
|
||||
### 일반 빌드
|
||||
소스 파일(.c/.h)만 변경한 경우
|
||||
권장 빌드 (nRF Connect SDK / west 사용):
|
||||
|
||||
### Pristine Build
|
||||
아래 파일을 변경한 경우 반드시 Pristine Build:
|
||||
- `prj.conf` (Kconfig 설정)
|
||||
- `boards/*.overlay` (Devicetree 핀 매핑)
|
||||
- `CMakeLists.txt` (소스/include 경로 추가)
|
||||
```powershell
|
||||
west build -b nrf52840dk_nrf52840 -p auto
|
||||
west flash
|
||||
```
|
||||
|
||||
nRF Connect for VS Code → Build 패널 → **Pristine Build** 또는 `build` 폴더 삭제 후 빌드
|
||||
또는 로컬에 맞춘 기존 `tools/` 스크립트 또는 VS Code Task를 사용 (`tools/flash_*.ps1`).
|
||||
|
||||
## 핀 매핑 (Devicetree Overlay)
|
||||
빌드 결과로 `zephyr.elf`, `merged.hex` 및 versioned DFU zip 생성됨
|
||||
|
||||
| 이름 | 핀 | 방향 | 역할 |
|
||||
|------|-----|------|------|
|
||||
| `PWR_HOLD` | P0.08 | Output, Active HIGH | 전원 래치 |
|
||||
| `BUTTON_CHECK` | P1.08 | Input, Pull-up, Active LOW | 전원 버튼 |
|
||||
| `LED_BLE` | P0.12 | Output, Active LOW | 초록 LED |
|
||||
| `FUNCTION_LED` | P0.29 | Output, Active LOW | 주황 LED |
|
||||
| ADC AIN2 | P0.04 | Analog Input | 배터리 전압 분압 |
|
||||
| I2C0 SCL | P1.14 | I2C | ICM42670P SCL |
|
||||
| I2C0 SDA | P1.15 | I2C | ICM42670P SDA |
|
||||
| `PIEZO_PWR` | P1.09 | Output, Active HIGH | 피에조 전원 enable |
|
||||
| `PIEZO_PE` | P0.25 | Output, Active HIGH | 피에조 pulse enable |
|
||||
| `PIEZO_P_OUT` | P1.07 | Output | 피에조 P 출력 |
|
||||
| `PIEZO_N_OUT` | P1.06 | Output | 피에조 N 출력 |
|
||||
| `PIEZO_DMP` | P1.00 | Output | 피에조 dump |
|
||||
| `MUX_EN_A` | P0.21 | Output | 피에조 mux enable A |
|
||||
| `MUX_EN_B` | P0.23 | Output | 피에조 mux enable B |
|
||||
| `MUX_SEL0` | P1.10 | Output | 피에조 mux select 0 |
|
||||
| `MUX_SEL1` | P0.28 | Output | 피에조 mux select 1 |
|
||||
| `ECHO_SCLK` | P0.14 | SPIM/GPIO | ADC121S051 SCLK |
|
||||
| `ECHO_MISO` | P0.15 | SPIM/GPIO | ADC121S051 MISO |
|
||||
| `ECHO_CS` | P0.19 | Output, Active LOW | ADC121S051 CS |
|
||||
아래 파일을 변경한 경우에는 pristine build 필요:
|
||||
|
||||
> UART0은 P0.08 충돌 방지를 위해 비활성화 (`status = "disabled"`)
|
||||
- `prj.conf`
|
||||
- `boards/*.overlay` 또는 보드 설정
|
||||
- `CMakeLists.txt` / sysbuild 설정
|
||||
|
||||
## 전원 버튼 동작
|
||||
## 주요 핀 매핑
|
||||
|
||||
| 이름 | 핀 | 역할 |
|
||||
|---|---|---|
|
||||
| `PWR_HOLD` | P0.08 | 전원 래치, active high |
|
||||
| `BUTTON_CHECK` | P1.08 | 전원 버튼 |
|
||||
| `LED_BLE` | P0.12 | 녹색 LED, active low |
|
||||
| `FUNCTION_LED` | P0.29 | 주황 LED, active low |
|
||||
| Battery ADC | P0.04 / AIN2 | 배터리 전압 측정 |
|
||||
| I2C0 SCL | P1.14 | ICM42670P SCL |
|
||||
| I2C0 SDA | P1.15 | ICM42670P SDA |
|
||||
| `PIEZO_PWR` | P1.09 | 피에조 전원 enable |
|
||||
| `PIEZO_PE` | P0.25 | 피에조 pulse enable |
|
||||
| `PIEZO_P_OUT` | P1.07 | 피에조 P 출력 |
|
||||
| `PIEZO_N_OUT` | P1.06 | 피에조 N 출력 |
|
||||
| `PIEZO_DMP` | P1.00 | 피에조 dump |
|
||||
| `MUX_EN_A` | P0.21 | MUX enable A |
|
||||
| `MUX_EN_B` | P0.23 | MUX enable B |
|
||||
| `MUX_SEL0` | P1.10 | MUX select 0 |
|
||||
| `MUX_SEL1` | P0.28 | MUX select 1 |
|
||||
| `ECHO_SCLK` | P0.14 | ADC121S051 SCLK |
|
||||
| `ECHO_MISO` | P0.15 | ADC121S051 MISO |
|
||||
| `ECHO_CS` | P0.19 | ADC121S051 CS |
|
||||
|
||||
`CONFIG_SERIAL=n`으로 UART0를 비활성화하여 P0.08 충돌 피함
|
||||
|
||||
## 전원 동작
|
||||
|
||||
| 동작 | 조건 | 결과 |
|
||||
|------|------|------|
|
||||
| 부팅 (OFF→ON) | 2초 이상 홀드 | 전원 래치 + LED 깜빡임 + BLE advertising |
|
||||
| 무시 | 부팅 후 2초 미만 릴리스 | 전원 OFF (래치 안 됨) |
|
||||
| 전원 OFF (ON→OFF) | 버튼 놓은 뒤 다시 2초 홀드 | advertising 중지 + LED OFF + 3초 후 전원 차단 |
|
||||
|---|---|---|
|
||||
| 부팅 | 전원 버튼 2초 이상 유지 | P0.08 래치 ON, LED 광고 패턴, BLE 광고 시작 |
|
||||
| 짧은 부팅 시도 | 부팅 중 2초 전 버튼 해제 | 래치 해제, 전원 OFF |
|
||||
| 수동 전원 OFF | ON 상태에서 버튼 재누름 2초 이상 | 광고 중지, LED 표시 후 전원 래치 해제 |
|
||||
| BLE 10분 광고 만료 | 최초 부팅 광고 또는 정상 disconnect 후 광고 | 광고 중지, 전원 OFF 예약 |
|
||||
| DFU/soft reset 복귀 | DFU 확인/리셋 플래그 감지 | 버튼 없이 전원 유지 및 광고 복귀 |
|
||||
|
||||
## BLE 커맨드 프로토콜
|
||||
## BLE 기능
|
||||
|
||||
### 패킷 포맷
|
||||
- Device name: `SERIAL_NO` 기반
|
||||
- Advertising interval: 40ms
|
||||
- Normal advertising timeout: 10분
|
||||
- DFU advertising: SMP UUID, timeout 미적용
|
||||
- NUS UUID 광고 포함
|
||||
- 연결 시 LED 광고 패턴 OFF
|
||||
- 연결 파라미터 선호값: 15ms / latency 0 / supervision timeout 10s
|
||||
- NUS TX는 mutex + completion semaphore로 순차 전송
|
||||
- BLE RX는 별도 work queue에서 명령 처리
|
||||
- 보안 설정: fixed passkey, MITM, Secure Connections only
|
||||
|
||||
## BLE 명령 포맷
|
||||
|
||||
```text
|
||||
[TAG 4 bytes][DATA N bytes][CRC16 2 bytes]
|
||||
```
|
||||
[TAG 4바이트] [DATA N바이트] [CRC16 2바이트]
|
||||
```
|
||||
- TAG: ASCII 4글자 (예: `msn?`, `mfv?`)
|
||||
- DATA: uint16 little-endian 값들
|
||||
- CRC16: CRC-CCITT (초기값 0xFFFF)
|
||||
- 응답 TAG: 첫 글자 `m` → `r` (예: `msn?` → `rsn:`)
|
||||
|
||||
### 구현된 커맨드
|
||||
- TAG: ASCII 4바이트, 예: `msn?`, `mbb?`
|
||||
- DATA: 명령별 payload
|
||||
- CRC16: CRC-CCITT, initial `0xFFFF`
|
||||
- 응답 TAG: 보통 요청의 `m`을 `r`로 바꾼 형태, 예: `msn?` -> `rsn:`
|
||||
- 알 수 없는 명령은 `rxn:` 응답
|
||||
|
||||
| 커맨드 | 응답 | 기능 |
|
||||
|--------|------|------|
|
||||
| `msn?` | `rsn:` + uint16 mV | 배터리 전압 측정 |
|
||||
| `mls?` | `rls:` + state | LED 상태 변경 |
|
||||
| `msp?` | `rsp:` + accel/gyro | IMU 단발 측정 |
|
||||
| `mst?` | `rso:` + int16 cdeg | IMU 내부 온도 측정 |
|
||||
| `mpa?` | `rpa:` + status | 피에조 전원 ON |
|
||||
| `mpb?` | `rpb:` + status | 피에조 전원 OFF |
|
||||
| `mpc?` | `rpc:` + cycles/status | 피에조 burst 테스트 |
|
||||
| `mec?` | `reb:` + `raa:` | 단일 채널 echo capture (`reb:` includes session/ch info) |
|
||||
| `mad?` | `reb:` + `raa:` | burst 없이 ADC capture (`reb:` includes session/ch info) |
|
||||
| `maa?` | `reb:` x6 + `raa:` | 6채널 echo sweep (`reb:` includes session/ch info) |
|
||||
| `mbb?` | `rbb:` + `reb:` x6 + `raa:` | 배터리+IMU+온도+6채널 echo (`reb:` includes session/ch info) |
|
||||
| `mcf?` | `rcf:` | 측정 파라미터 읽기(현재 설정값 반환) |
|
||||
| `mcs?` | `rcs:` + current config | 측정 파라미터 쓰기 + NVS 저장 |
|
||||
| `mfv?` | `rfv:` | FW version 읽기 |
|
||||
| `mrh?` | `rrh:` | HW version 읽기(RAM/default) |
|
||||
| `mwh?` | `rwh:` | HW version 쓰기(RAM only) |
|
||||
| `mrs?` | `rrs:` | Serial number 읽기(RAM/default) |
|
||||
| `mws?` | `rws:` | Serial number 쓰기(RAM only) |
|
||||
| `mqz?` | `rqz:` | Passkey 읽기(RAM/default) |
|
||||
| `mpz?` | `rpz:` | Passkey 쓰기(RAM only) |
|
||||
## 구현된 명령
|
||||
|
||||
### 전체 커맨드 목록
|
||||
| 명령 | 응답 | 기능 | 상태/비고 |
|
||||
|---|---|---|---|
|
||||
| `msq?` | `rsq:` | 전원 OFF | 구현 완료 |
|
||||
| `mss?` | `rss:` | 재부팅 | 구현 완료 |
|
||||
| `msr?` | `rsr:` | 본딩 삭제 후 재부팅 | 구현 완료, SMP enabled 기준 |
|
||||
| `mdf?` | `rdf:` | DFU 광고 모드 진입 | 구현 완료, NUS -> SMP UUID 전환 |
|
||||
| `msn?` | `rsn:` | 배터리 전압 측정 | 구현 완료 |
|
||||
| `mls?` | `rls:` | LED 상태 변경 | 구현 완료 |
|
||||
| `msp?` | `rsp:` | IMU accel/gyro 단발 측정 | 구현 완료 |
|
||||
| `mst?` | `rso:` | IMU internal temperature | 구현 완료 |
|
||||
| `mpa?` | `rpa:` | 피에조 전원 ON | 구현 완료 |
|
||||
| `mpb?` | `rpb:` | 피에조 전원 OFF | 구현 완료 |
|
||||
| `mpc?` | `rpc:` | 피에조 burst 테스트 | 구현 완료, 주파수 옵션은 제한적 |
|
||||
| `mec?` | `reb:` -> `raa:` | 단일 채널 burst + echo capture | 구현 완료 |
|
||||
| `mad?` | `reb:` -> `raa:` | ADC only capture | 구현 완료 |
|
||||
| `maa?` | `reb:` x6 -> `raa:` | 6채널 echo sweep | 구현 완료 |
|
||||
| `mbb?` | `rbb:` -> `reb:` x6 -> `raa:` | 배터리 + IMU + 온도 + 6채널 echo | 구현 완료 |
|
||||
| `mtb?` | `reb:` x6 + `rim:` -> `raa:` | 피에조 sweep + IMU FIFO | 구현 완료, 실측 검증 필요 |
|
||||
| `mcf?` | `rcf:` | 측정 파라미터 읽기 | 구현 완료 |
|
||||
| `mcs?` | `rcs:` | 측정 파라미터 쓰기 | 구현 완료, NVS 저장 |
|
||||
| `mid?` | `rid:` | HW/SN/FW identity 읽기 | 구현 완료 |
|
||||
| `mfv?` | `rfv:` | FW version 읽기 | 구현 완료 |
|
||||
| `mwh?` | `rwh:` | HW version 쓰기 | 구현 완료, NVS 저장 |
|
||||
| `mrh?` | `rrh:` | HW version 읽기 | 구현 완료 |
|
||||
| `mws?` | `rws:` | Serial number 쓰기 | 구현 완료, NVS 저장 |
|
||||
| `mrs?` | `rrs:` | Serial number 읽기 | 구현 완료 |
|
||||
| `mpz?` | `rpz:` | Passkey 쓰기 | 구현 완료, NVS 저장, 최초 1회만 가능 |
|
||||
| `mqz?` | `rqz:` | Passkey 읽기 | 구현 완료 |
|
||||
|
||||
| # | 내용 | 명령 | 응답 | 비고 |
|
||||
|---|------|------|------|------|
|
||||
| 1 | 전원 OFF | `msq?` | `rsq:` | 미구현 |
|
||||
| 2 | 재부팅 | `mss?` | `rss:` | 미구현 |
|
||||
| 3 | 본딩 삭제 + 재부팅 | `msr?` | `rsr:` | 미구현 |
|
||||
| 4 | LED 상태 | `mls?` | `rls:` | 구현 완료 |
|
||||
| 5 | HW Version 읽기 | `mrh?` | `rrh:` | 구현 완료, RAM/default |
|
||||
| 6 | HW Version 쓰기 | `mwh?` | `rwh:` | 구현 완료, RAM only |
|
||||
| 7 | Serial Number 읽기 | `mrs?` | `rrs:` | 구현 완료, RAM/default |
|
||||
| 8 | Serial Number 쓰기 | `mws?` | `rws:` | 구현 완료, RAM only |
|
||||
| 9 | FW Version 읽기 | `mfv?` | `rfv:` | 구현 완료 |
|
||||
| 10 | Passkey 읽기 | `mqz?` | `rqz:` | 구현 완료, RAM/default |
|
||||
| 11 | Passkey 쓰기 | `mpz?` | `rpz:` | 구현 완료, RAM only |
|
||||
| 12 | 배터리 측정 | `msn?` | `rsn:` | 구현 완료 |
|
||||
| 13 | IMU 단발 측정 | `msp?` | `rsp:` | 구현 완료 |
|
||||
| 14 | 온도 측정 | `mst?` | `rso:` | 구현 완료 |
|
||||
| 15 | 피에조 전원 ON | `mpa?` | `rpa:` | 구현 완료 |
|
||||
| 16 | 피에조 전원 OFF | `mpb?` | `rpb:` | 구현 완료 |
|
||||
| 17 | 피에조 burst 테스트 | `mpc?` | `rpc:` | 구현 완료, `freq_option`은 아직 미사용 |
|
||||
| 18 | 단일 채널 측정 | `mec?` | `reb:` → `raa:` | 구현 완료, 테스트용 |
|
||||
| 19 | ADC only 측정 | `mad?` | `reb:` → `raa:` | 구현 완료, burst 없음 |
|
||||
| 20 | 모든 채널(6) 측정 | `maa?` | `reb:`(6개) → `raa:` | 구현 완료 |
|
||||
| 21 | 전체 측정 | `mbb?` | `rbb:` → `reb:`(6개) → `raa:` | 구현 완료 |
|
||||
| 22 | 측정 파라미터 읽기 | `mcf?` | `rcf:` | 구현 완료, 현재 설정값 반환 |
|
||||
| 23 | 측정 파라미터 쓰기 | `mcs?` | `rcs:` | 구현 완료, NVS 저장 |
|
||||
## 저장되는 설정
|
||||
|
||||
## 남은 포팅 작업
|
||||
| 항목 | 저장소 key | 쓰기 명령 | 비고 |
|
||||
|---|---|---|---|
|
||||
| 피에조 측정 파라미터 | `vesiscan/piezo` | `mcs?` | validate 통과 시 복원 |
|
||||
| HW version | `vesiscan/hw` | `mwh?` | 고정 길이 ASCII |
|
||||
| Serial number | `vesiscan/serial` | `mws?` | 광고 name에도 사용 |
|
||||
| Passkey | `vesiscan/passkey` | `mpz?` | 고정 길이 6자리 |
|
||||
| Passkey 변경 플래그 | `vesiscan/passkey_changed` | `mpz?` | 1이면 추가 변경 차단 |
|
||||
| BLE bonding/settings | Zephyr `bt` subtree | BLE stack | `CONFIG_BT_SETTINGS=y` |
|
||||
|
||||
| 항목 | 현재 상태 | 다음 작업 |
|
||||
|------|-----------|-----------|
|
||||
| NVS/settings | piezo config 저장/복원 구현 완료 | HW/SN/Passkey 저장으로 확장 |
|
||||
| 측정 파라미터 | `piezo_config` 구조체 사용 | 실제 하드웨어에서 값별 파형 검증 |
|
||||
| `mcs?` | 구현 완료 | 앱/테스트툴에서 쓰기 후 재부팅 유지 확인 |
|
||||
| HW/SN/Passkey 저장 | RAM only | `mwh?`, `mws?`, `mpz?` 값을 NVS에 저장 |
|
||||
| BLE 보안 | `CONFIG_BT_SMP=n`, dev mode | bonding, fixed passkey, MITM/LESC 적용 |
|
||||
| BLE DFU | MCUboot/mcumgr 설정 있음 | SMP 광고/업로드/리셋 후 confirm 검증 |
|
||||
|
||||
## 디버그 로그 (RTT)
|
||||
|
||||
- **VS Code**: nRF Connect 패널 → Connected Devices → 보드 선택 → 터미널 아이콘
|
||||
- **J-Link RTT Viewer**: Connection: USB, Target Device: NRF52840_XXAA
|
||||
|
||||
### 로그 태그
|
||||
| 태그 | 내용 |
|
||||
|------|------|
|
||||
| `[BTN]` | 버튼 이벤트 (2s 홀드, 릴리스) |
|
||||
| `[PWR]` | 전원 래치 ON/OFF |
|
||||
| `[BOOT]` | 부팅 시퀀스 완료 |
|
||||
| `[BLE]` | BLE 연결/해제/advertising/파라미터 |
|
||||
| `[BLE RX]` | NUS 수신 데이터 (hex dump) |
|
||||
| `[NUS TX]` | NUS 송신 |
|
||||
| `[CMD]` | 커맨드 파서 처리 결과 |
|
||||
| `[BATT]` | 배터리 ADC 측정값 |
|
||||
| `[IMU]` | IMU 초기화/측정 |
|
||||
| `[ECHO]` | ADC121S051 echo capture |
|
||||
| `[PIEZO]` | 피에조 mux/burst/power |
|
||||
| `[MBB]` | 전체 측정 시퀀스 |
|
||||
| `[DFU]` | MCUboot 이미지 상태 |
|
||||
| `[SYS]` | 슬립 진입 |
|
||||
|
||||
## prj.conf 주요 설정
|
||||
## 주요 prj.conf 설정
|
||||
|
||||
| 설정 | 값 | 역할 |
|
||||
|------|-----|------|
|
||||
| `CONFIG_GPIO` | y | GPIO 드라이버 |
|
||||
| `CONFIG_LOG` | y | 로깅 시스템 |
|
||||
| `CONFIG_LOG_BACKEND_RTT` | y | RTT 로그 출력 |
|
||||
| `CONFIG_SERIAL` | n | UART 비활성화 (P0.08 충돌 방지) |
|
||||
| `CONFIG_BT` | y | BLE 스택 |
|
||||
| `CONFIG_BT_NUS` | y | Nordic UART Service |
|
||||
| `CONFIG_BT_L2CAP_TX_MTU` | 247 | MTU 크기 |
|
||||
| `CONFIG_BT_CTLR_TX_PWR_PLUS_8` | y | TX power +8dBm |
|
||||
| `CONFIG_ADC` | y | ADC 드라이버 (배터리) |
|
||||
| `CONFIG_I2C` | y | IMU I2C 드라이버 |
|
||||
| `CONFIG_NRFX_SPIM` | y | ADC121S051용 nrfx SPIM |
|
||||
| `CONFIG_BOOTLOADER_MCUBOOT` | y | MCUboot 사용 |
|
||||
| `CONFIG_MCUMGR_TRANSPORT_BT` | y | BLE mcumgr transport |
|
||||
| `CONFIG_NVS` | y | NVS 플래시 저장소 |
|
||||
| `CONFIG_SETTINGS` | y | Zephyr settings subsystem |
|
||||
| `CONFIG_SETTINGS_NVS` | y | settings NVS backend |
|
||||
| `CONFIG_BT_SMP` | n | BLE 보안 비활성화(개발 모드) |
|
||||
|---|---|---|
|
||||
| `CONFIG_SERIAL` | `n` | UART 비활성화, P0.08 충돌 방지 |
|
||||
| `CONFIG_BT` | `y` | BLE stack |
|
||||
| `CONFIG_BT_NUS` | `y` | Nordic UART Service |
|
||||
| `CONFIG_BT_SMP` | `y` | BLE pairing/security |
|
||||
| `CONFIG_BT_SMP_ENFORCE_MITM` | `y` | MITM 요구 |
|
||||
| `CONFIG_BT_SMP_SC_ONLY` | `y` | LE Secure Connections only |
|
||||
| `CONFIG_BT_SETTINGS` | `y` | BLE bonding/settings 저장 |
|
||||
| `CONFIG_BT_L2CAP_TX_MTU` | `247` | 큰 NUS 패킷 전송 |
|
||||
| `CONFIG_ADC` | `y` | 배터리 ADC |
|
||||
| `CONFIG_I2C` | `y` | IMU I2C |
|
||||
| `CONFIG_NRFX_SPIM` | `y` | ADC121S051 SPIM capture |
|
||||
| `CONFIG_BOOTLOADER_MCUBOOT` | `y` | MCUboot 사용 |
|
||||
| `CONFIG_MCUMGR_TRANSPORT_BT` | `y` | BLE DFU transport |
|
||||
| `CONFIG_NVS` | `y` | NVS 저장소 |
|
||||
| `CONFIG_SETTINGS` | `y` | Zephyr settings subsystem |
|
||||
| `CONFIG_SETTINGS_NVS` | `y` | settings NVS backend |
|
||||
|
||||
Reference in New Issue
Block a user