From 4378fd7ef2e11f9d69a7f2f14dc60d12f61bdb7b Mon Sep 17 00:00:00 2001 From: jhChun Date: Thu, 26 Mar 2026 11:12:26 +0900 Subject: [PATCH] =?UTF-8?q?DEBUG=5FMINIMAL=5FBOOT=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - main.c: DEBUG_MINIMAL_BOOT 삭제 및 분기문 정리 - main.c: minimal_gpio_init() + full_gpio_init() → gpio_init() 하나로 통합 - main.c: icm42670_init() 분기 제거, advertising_start()만 남김 - power_control.c: SW I2C/센서 전원 시퀀스 제거, p_order = 2로 즉시 완료 --- .../ble_app_bladder_patch/main.c | 59 +++---------------- .../ble_app_bladder_patch/power_control.c | 41 ++----------- 2 files changed, 11 insertions(+), 89 deletions(-) diff --git a/project/ble_peripheral/ble_app_bladder_patch/main.c b/project/ble_peripheral/ble_app_bladder_patch/main.c index 0a9aceb..d0bfa52 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/main.c +++ b/project/ble_peripheral/ble_app_bladder_patch/main.c @@ -19,7 +19,7 @@ * [소프트웨어 부트 시퀀스 — main() 함수] * Phase 0: 전원 유지 (power_hold_init → P0.8 HIGH) * Phase 1: UART 초기화 (1Mbps), 로그 초기화 - * Phase 2: GPIO 초기화 (DEBUG_MINIMAL_BOOT에 따라 분기) + * Phase 2: GPIO 초기화 * Phase 3: 타이머 초기화 (app_timer, 배터리, 전원 시퀀스) * Phase 4: 설정 로드 (기본값 → FDS에서 덮어쓰기) * Phase 5: 버튼/LED BSP 초기화 @@ -42,8 +42,6 @@ * 5. dr_binary_tx_safe()로 CRC16 추가 후 BLE 전송 (최대 100회 재시도) * * [빌드 모드] - * DEBUG_MINIMAL_BOOT = 1 : 전원+BLE만 (센서/EEPROM 초기화 생략, 개발용) - * DEBUG_MINIMAL_BOOT = 0 : 전체 초기화 (양산용) * BLE_DEV_MODE = 1 : 보안 없음 (빠른 페어링, 개발용) * BLE_DEV_MODE = 0 : 정적 패스키 + MITM 보호 (양산용) ******************************************************************************/ @@ -130,9 +128,9 @@ /*============================================================================== * 빌드 설정 + * DEBUG_MINIMAL_BOOT 삭제 26.03.26 jhChun *============================================================================*/ #define BLE_DEV_MODE 1 /* 1: 개발 모드 (보안 없음), 0: 양산 모드 (패스키 필수) */ -#define DEBUG_MINIMAL_BOOT 1 /* 1: 최소 부팅 (전원+BLE만), 0: 전체 부팅 (센서 포함) */ /*============================================================================== * 하드웨어 핀 정의 @@ -340,38 +338,20 @@ static void power_control_handler(on_off_cont_t device_power_st) *============================================================================*/ /** - * @brief 최소 GPIO 초기화 (DEBUG_MINIMAL_BOOT 모드용) + * @brief GPIO 초기화 * * 전원 버튼 입력과 전원 유지 핀만 설정 - * 센서 관련 GPIO는 초기화하지 않음 */ -static void minimal_gpio_init(void) +static void gpio_init(void) { nrf_gpio_cfg_input(POWER_BUTTON, NRF_GPIO_PIN_NOPULL); nrf_gpio_cfg_output(POWER_HOLD); nrf_gpio_pin_set(POWER_HOLD); power_gpio_init(); - DBG_PRINTF("[GPIO] Minimal OK (BTN=%d)\r\n", nrf_gpio_pin_read(POWER_BUTTON)); + DBG_PRINTF("[GPIO] OK (BTN=%d)\r\n", nrf_gpio_pin_read(POWER_BUTTON)); } -#if !DEBUG_MINIMAL_BOOT -/** - * @brief 전체 GPIO 초기화 (양산 모드, DEBUG_MINIMAL_BOOT=0) - * - * minimal_gpio_init()를 먼저 호출한 뒤, EEPROM 전원을 OFF하여 - * 불필요한 전력 소모를 방지한다. - */ -static void full_gpio_init(void) -{ - minimal_gpio_init(); - - eeprom_control(OFF); - - DBG_PRINTF("[GPIO] Full OK\r\n"); -} -#endif - /*============================================================================== * 설정 로드 * FDS(Flash Data Storage)에서 설정을 읽기 전에 기본값을 먼저 로드 @@ -1085,9 +1065,6 @@ static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context) err_code = bsp_indication_set(BSP_INDICATE_CONNECTED); APP_ERROR_CHECK(err_code); -#if DEBUG_MINIMAL_BOOT - DBG_PRINTF("[BLE] Minimal mode\r\n"); -#endif break; case BLE_GAP_EVT_PHY_UPDATE_REQUEST: @@ -1647,30 +1624,12 @@ static void main_s(void * p_context) power_control_handler(ON); battery_timer_start(); -#if DEBUG_MINIMAL_BOOT - DBG_PRINTF("[BOOT] Minimal\r\n"); #if FEATURE_SECURE_CONNECTION advertising_start(erase_bonds); #else advertising_start(); #endif DBG_PRINTF("[BOOT] ADV started\r\n"); -#else - DBG_PRINTF("[BOOT] Full\r\n"); - icm42670_init(); - nrf_delay_ms(2); - -#if FEATURE_SECURE_CONNECTION - advertising_start(erase_bonds); -#else - advertising_start(); -#endif - - - m_reset_status = 1; - m_config.reset_status = m_reset_status; - config_save(); -#endif m_reset_status = 1; DBG_PRINTF("[BOOT] Ready\r\n"); } @@ -1711,17 +1670,13 @@ int main(void) log_init(); DBG_PRINTF("\r\n========================================\r\n"); - DBG_PRINTF(" Medithings v1.17 [%s]\r\n", DEBUG_MINIMAL_BOOT ? "MIN" : "FULL"); + DBG_PRINTF(" Medithings v1.17\r\n"); DBG_PRINTF("========================================\r\n"); DBG_PRINTF("[0] PWR_HOLD\r\n"); // PHASE 2: GPIO DBG_PRINTF("[1] GPIO\r\n"); -#if DEBUG_MINIMAL_BOOT - minimal_gpio_init(); -#else - full_gpio_init(); -#endif + gpio_init(); info4 = false; diff --git a/project/ble_peripheral/ble_app_bladder_patch/power_control.c b/project/ble_peripheral/ble_app_bladder_patch/power_control.c index acf4162..3cde82a 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/power_control.c +++ b/project/ble_peripheral/ble_app_bladder_patch/power_control.c @@ -101,7 +101,6 @@ void eeprom_control(on_off_cont_t eeprom_st) */ int device_sleep_mode(void){ int rc = 0; - eeprom_control(OFF); /* EEPROM 쓰기 보호 활성화 */ nrf_delay_ms(2); DBG_PRINTF("Device_Sleep_Mode OK!\r\n"); nrf_delay_ms(10); @@ -124,7 +123,6 @@ int device_activated(void){ p_order = 0; /* 상태머신 시작 단계 (Step 0: I2C 초기화) */ lock_check =true; /* 전원 시퀀스 진행 중 잠금 */ power_timer_start(); /* 20ms 후 power_loop() 첫 호출 */ - eeprom_control(OFF); /* EEPROM OFF 상태로 시작 */ return rc; } @@ -149,8 +147,7 @@ int device_activated(void){ * 3) p_order < 2이면 다음 단계로 진행하고 타이머 재시작 * 4) p_order == 2이면 전원 시퀀스 완료 * - * [DEBUG_MINIMAL_BOOT 모드] - * 센서 초기화를 건너뛰고 즉시 완료 단계(Step 2)로 점프 + * 센서 초기화 불필요 — imu_read_direct()가 매 측정 시 자체 처리 */ void power_loop(void *p_context) { @@ -158,39 +155,9 @@ void power_loop(void *p_context) power_timer_stop(); /* 현재 타이머 정지 (싱글샷 → 수동 재시작 필요) */ -#if DEBUG_MINIMAL_BOOT - /* Minimal Boot: Skip sensor initialization */ - /* 미니멀 부트 모드: 센서 초기화 생략하고 바로 완료 */ - DBG_PRINTF("[PWR] Minimal mode - skipping sensor init\r\n"); - p_order = 2; // Jump to complete -#else - /* Full Boot: Execute power sequence */ - /* 풀 부트 모드: 전원 시퀀스 단계별 실행 */ - switch (p_order) { - /* Step 0: I2C Initialize */ - /* 단계 0: I2C 버스를 SW 모드로 초기화 (레거시 흐름) */ - case 0: - sw_i2c_init_once(); /* SW I2C 초기화 (TWI 해제 → 비트뱅 모드) */ - nrf_delay_ms(10); /* I2C 버스 안정화 대기 */ - DBG_PRINTF("[PWR] Step %d: I2C Init\r\n", p_order); - break; - - /* Step 1: Reserved */ - /* 단계 1: 예약 (추후 센서 초기화 등 추가 가능) */ - case 1: - DBG_PRINTF("[PWR] Step %d: (reserved)\r\n", p_order); - break; - - /* Step 2: Complete */ - /* 단계 2: 전원 시퀀스 완료 → 디바이스 사용 준비 완료 */ - case 2: - DBG_PRINTF("[PWR] Step %d: Sequence Complete\r\n", p_order); - break; - - default: - break; - } -#endif + /* 센서 초기화 불필요 — imu_read_direct()가 매 측정 시 자체 처리 */ + /* 추후 전원 시퀀스 단계가 필요하면 여기에 switch(p_order) 추가 */ + p_order = 2; /* Advance to next step or finish */ /* 다음 단계로 진행하거나, 시퀀스 완료 처리 */