2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00
2026-04-08 16:59:20 +09:00

VivaMyo - BLE NIRS Firmware

nRF52840 기반 BLE 의료기기 펌웨어. 방광 모니터링을 위한 NIRS(Near-Infrared Spectroscopy) 장치.

주요 사양

항목 사양
MCU Nordic nRF52840
SoftDevice s140 v7.2.0
통신 BLE 5.0 (Nordic UART Service)
보안 LESC 페어링, Static Passkey
센서 LED x48, Photodetector, IMU (ICM42670P), 온도 (TMP235), 압력
저장 내장 Flash (FDS) + 외장 Flash (W25Q32RV)
IDE Keil uVision 5 (ARM Compiler 5)

디렉토리 구조

mt_VivaMayo/
│
├── project/ble_peripheral/ble_app_vivaMayo/    # 메인 펌웨어 소스
│   ├── main.c                                   # 엔트리 포인트
│   ├── main.h
│   ├── main_timer.c/h                           # 타이머 관리
│   ├── fstorage.c/h                             # FDS 내장 Flash 저장
│   ├── cmd_parse.c/h                            # 명령어 파서 래퍼
│   ├── cmd/
│   │   ├── cmd.c                                # BLE 명령어 핸들러 (mr*/mw* 포함)
│   │   └── cmd.h
│   ├── ble/                                     # BLE 코어, 데이터 전송, 보안
│   │   ├── ble_core.c/h
│   │   ├── ble_data_tx.c/h
│   │   ├── ble_security.c/h
│   │   └── ble_services.c/h
│   ├── storage/                                 # 메모리 추상화 API
│   │   ├── dr_mem.c/h                           # 이름 기반 메모리 읽기/쓰기
│   │   └── mem_*.c/h                            # 메모리 HAL
│   ├── config/
│   │   ├── device_config.c/h                    # 부팅 시 디바이스 설정 로드
│   │   └── sdk_config.h                         # (pca10056/s140/config/)
│   ├── drivers/w25q32/                          # W25Q32 외장 Flash SPI 드라이버
│   ├── power/                                   # 전원 제어, 슬립 모드
│   ├── peripheral/                              # UART 핸들러
│   ├── icm42670p/                               # IMU 센서 드라이버 (InvenSense)
│   ├── docs/                                    # 기술 문서
│   │   ├── PROGRAM_ARCHITECTURE.md
│   │   ├── FDS_INTERNAL_FLASH.md
│   │   ├── FDS_MODULE_PORTING_GUIDE.md
│   │   ├── W25Q32RV_FLASH_MEMORY.md
│   │   └── W25Q32RV_INITIALIZATION.md
│   └── pca10056/s140/arm5_no_packs/             # Keil 프로젝트
│       └── ble_app_VivaMayo.uvprojx
│
├── project/dfu/                                 # DFU 부트로더
│   ├── private_key.c
│   └── secure_bootloader/
│
├── lib/pc_firm/                                 # 공용 라이브러리 (pc_firm)
│   ├── parser.c/h                               # 명령어 파서 코어
│   ├── dr_util/                                 # BLE 응답 유틸 (dr_ble_return_*)
│   ├── dr_adc121s051/                           # ADC 드라이버
│   ├── ble_security/                            # BLE 보안 (quick pairing)
│   └── storage/                                 # 메모리 추상화 (EEPROM/Flash HAL)
│
├── components/                                  # Nordic SDK - BLE, 라이브러리
├── modules/                                     # Nordic SDK - nrfx 드라이버
├── external/                                    # Nordic SDK - 외부 라이브러리
├── integration/                                 # Nordic SDK - nrfx 통합
│
├── pads/                                        # PCB 패드 파일
├── sch/                                         # 회로도
└── README.md

빌드 방법

  1. 이 저장소 clone
  2. Keil uVision 5에서 project/ble_peripheral/ble_app_vivaMayo/pca10056/s140/arm5_no_packs/ble_app_VivaMayo.uvprojx 열기
  3. Keil Include Path에서 mt_parser 경로를 lib/pc_firm으로 변경 (필요 시)
  4. Build (F7)

Note

: Nordic SDK (components, modules, external, integration)와 pc_firm 라이브러리가 모두 포함되어 있어 clone만으로 빌드 가능합니다.

부팅 순서

GPIO/Timer 초기화
    → BLE Stack (SoftDevice)
    → FDS 초기화 (fs_storage_init)
    → Config 로드 (config_load + load_device_configuration)
    → GAP/GATT/Services
    → Advertising 시작
    → Main Loop (idle)

BLE 명령어 (메모리 읽기/쓰기)

읽기 쓰기 대상 저장소
mrh? mwh? HW 번호 (12B) FDS
mrs? mws? 시리얼 번호 (12B) FDS
mrp? mwp? 패스키 (6B) FDS
mrb? mwb? 본딩 삭제 플래그 FDS
mrr? mwr? 리셋 상태 FDS
mrc? mwc? ADC 카운트 FDS
mrd? mwd? PD 딜레이 FDS
mrg? mwg? AGC 게인 (48ch) W25Q32
mrl? mwl? 사용 횟수 W25Q32

기술 문서

라이선스

Copyright (c) 2025 Medithings Inc. All rights reserved.

Description
No description provided
Readme 25 MiB
Languages
C 97.1%
Assembly 2.7%
Roff 0.1%