EEPROM 레거시 코드 정리

- EEP_WP, eeprom_control, power_gpio_init 삭제
This commit is contained in:
jhChun
2026-03-26 11:39:12 +09:00
parent dd3bce4f94
commit af7afff117
3 changed files with 38 additions and 59 deletions
@@ -90,7 +90,7 @@
#endif
/* ── 애플리케이션 모듈 헤더 ── */
#include "system_interface.h" /* 시스템 인터페이스 (센서/EEPROM 제어 추상화) */
#include "system_interface.h" /* 시스템 인터페이스 (IMU 센서 I2C 통신) */
#include "main.h" /* 메인 헤더 (전역 구조체, 상수, 외부 함수 선언) */
#include "app_raw_main.h" /* 센서 원시 데이터 처리 모듈 */
#include "main_timer.h" /* 메인 이벤트 루프 타이머 (10ms 주기) */
@@ -342,7 +342,6 @@ 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] OK (BTN=%d)\r\n", nrf_gpio_pin_read(POWER_BUTTON));
}
@@ -1656,6 +1655,13 @@ int main(void)
/*──────────────────────────────────────────────────────────────
* Phase 1: 하드웨어 기본 초기화 (BLE 무관)
*
* - 전원 자가유지 래치 (P0.8 HIGH)
* - RTT 로그 출력
* - GPIO (전원 버튼 입력, 전원 유지 핀)
* - 앱 타이머 (전원 폴링, 배터리, 메인 루프)
* - 기본 설정값 (시리얼 번호, 패스키)
* - 버튼/LED (BSP)
*────────────────────────────────────────────────────────────*/
power_hold_init();
@@ -1681,15 +1687,23 @@ int main(void)
/*──────────────────────────────────────────────────────────────
* Phase 2: BLE 스택 초기화
*
* - 전원 관리 모듈 (idle 시 WFE/슬립)
* - SoftDevice S140 (BLE 5.0 프로토콜 스택)
* - DC-DC 컨버터 활성화 (SoftDevice 이후 필수)
*────────────────────────────────────────────────────────────*/
DBG_PRINTF("[2] BLE Stack\r\n");
power_management_init();
ble_stack_init();
APP_ERROR_CHECK(sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE)); /* DC-DC: SD 이후 필수 */
APP_ERROR_CHECK(sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE));
DBG_PRINTF(" pwr/stack/dcdc OK\r\n");
/*──────────────────────────────────────────────────────────────
* Phase 3: FDS + 설정 로드 (BLE 스택 이후에 초기화해야 함)
* Phase 3: 내장 플래시 설정 (BLE 스택 이후에 초기화해야 함)
*
* - FDS(Flash Data Storage) 초기화
* - 플래시에서 저장된 설정 읽기 (시리얼, 패스키, 피에조 등)
* - 기본값 위에 플래시 값 덮어쓰기
*────────────────────────────────────────────────────────────*/
DBG_PRINTF("[3] FDS\r\n");
fs_storage_init();
@@ -1698,7 +1712,14 @@ int main(void)
DBG_PRINTF(" fds OK\r\n");
/*──────────────────────────────────────────────────────────────
* Phase 4: BLE 프로토콜 (GAP/GATT/NUS/Advertising/보안)
* Phase 4: BLE 프로토콜 설정
*
* - GAP: 디바이스 이름(시리얼 번호), 연결 파라미터, 패스키
* - GATT: MTU 크기 협상
* - 서비스: NUS(Nordic UART Service), QWR, DFU
* - Advertising: 광고 데이터 구성 (이름, UUID)
* - 연결 파라미터 협상 모듈
* - 보안: Peer Manager (본딩/패스키)
*────────────────────────────────────────────────────────────*/
DBG_PRINTF("[4] BLE Protocol\r\n");
gap_params_init();
@@ -1711,7 +1732,6 @@ int main(void)
#endif
DBG_PRINTF(" gap/gatt/svc/adv/conn/sec OK\r\n");
/* FDS 기본값 저장 (advertising 이후) */
if (m_need_save_defaults) {
config_save();
m_need_save_defaults = false;
@@ -1720,6 +1740,11 @@ int main(void)
/*──────────────────────────────────────────────────────────────
* Phase 5: 애플리케이션 초기화
*
* - 명령 파서: BLE 수신 명령 처리 (로그, BLE 전송, CRC)
* - 피에조 드라이버: 초음파 측정용 GPIO/Timer/PPI 설정
* - IMU(ICM42670P)는 여기서 초기화하지 않음
* → msp? 명령 시 imu_read_direct()가 매번 자체 설정/읽기/슬립 처리
*────────────────────────────────────────────────────────────*/
DBG_PRINTF("[5] App\r\n");
g_plat.log = log_printf;
@@ -8,23 +8,17 @@
*
* [ ]
* device_activated()
* p_order=0 , power_loop
* power_loop() 20ms Step 012
* - Step 0: I2C (sw_i2c_init_once)
* - Step 1: ( )
* - Step 2: 퀀
* power_loop ( )
* (IMU) imu_read_direct()
*
* [ ]
* device_sleep_mode()
* EEPROM OFF processing
* processing
*
* []
* device_reactivated()
* I2C 퀀
*
* [EEPROM ]
* EEP_WP = P0.24 (, FDS를 )
*
* []
* app_timer, 20ms power_loop
*
@@ -43,8 +37,6 @@
#include "debug_print.h"
#include "i2c_manager.h"
/* EEPROM 쓰기 보호 핀 (P0.24) - 레거시, 현재는 FDS 사용 */
#define EEP_WP NRF_GPIO_PIN_MAP(0, 24)
/* 전원 시퀀스용 싱글샷 타이머 인스턴스 */
APP_TIMER_DEF(m_power_timer_id);
@@ -53,9 +45,6 @@ APP_TIMER_DEF(m_power_timer_id);
// 2025-12-08 change to #define POWER_LOOP_INTERVAL 30 -> 20
#define POWER_LOOP_INTERVAL 20
/* 전원 시퀀스 현재 단계 (0: I2C 초기화, 1: 예약, 2: 완료) */
static uint8_t p_order;
@@ -65,36 +54,10 @@ extern volatile bool processing;
/* 전원 시퀀스 잠금 플래그 (true = 전원 시퀀스 진행 중) */
bool lock_check = false;
/**
* @brief GPIO
*
* EEP_WP .
*/
void power_gpio_init(void)
{
nrf_gpio_cfg_output(EEP_WP);
}
/**
* @brief EEPROM (ON/OFF)
*
* @param eeprom_st ON: EEP_WP HIGH ( ), OFF: LOW ( )
* , FDS(Flash Data Storage) .
*/
void eeprom_control(on_off_cont_t eeprom_st)
{
if(eeprom_st == OFF) {
nrf_gpio_pin_clear(EEP_WP); /* LOW: EEPROM 쓰기 보호 활성화 */
}else if(eeprom_st == ON){
nrf_gpio_pin_set(EEP_WP); /* HIGH: EEPROM 쓰기 허용 */
}
}
/**
* @brief
*
* EEPROM을 OFF하고, (processing)
* (processing)
* .
*
* @return 0 ( )
@@ -114,7 +77,6 @@ int device_sleep_mode(void){
*
* 퀀 0 ,
* power_loop() .
* EEPROM은 OFF .
*
* @return 0 ( )
*/
@@ -10,11 +10,9 @@
* 퀀 .
*
* [ ]
* power_gpio_init() : GPIO (EEP_WP )
* eeprom_control() : EEPROM ON/OFF ()
* device_activated() : power_loop
* device_sleep_mode() : (EEPROM OFF, )
* device_reactivated() : I2C 퀀
* device_sleep_mode() : ( )
* device_reactivated() : 퀀
* power_loop() : 20ms 퀀
* power_timer_start/stop : 퀀
* power_timer_init() : 퀀 ( 1)
@@ -26,13 +24,7 @@
#include "main.h"
/** @brief 전원 관련 GPIO 핀 초기화 (EEP_WP 출력 설정) */
void power_gpio_init(void);
/** @brief EEPROM 쓰기 보호 제어 (ON=허용, OFF=보호) - 레거시 */
void eeprom_control(on_off_cont_t eeprom_st);
/** @brief 디바이스 슬립 모드 진입 (EEPROM OFF, processing 해제) */
/** @brief 디바이스 슬립 모드 진입 (processing 해제) */
int device_sleep_mode(void);
/** @brief 디바이스 전원 켜기 (전원 시퀀스 상태머신 시작) */