본문 바로가기

 

1. EEPROM과 Flash EEPROM Emulation의 개념

  • EEPROM
    • 바이트 또는 워드 단위로 개별 쓰기/삭제 가능
    • 자동차 ECU에서 보정값, 학습값, 상태 변수 저장에 주로 사용
    • 단점: 일부 MCU에는 EEPROM HW가 없음
  • Flash EEPROM Emulation (FEE)
    • EEPROM이 없는 디바이스에서 Flash 메모리를 이용해 EEPROM처럼 동작하도록 만든 소프트웨어
    • Flash는 보통 섹터 단위로만 erase 가능 → 이를 소프트웨어적으로 추상화
    • FEE는 상위 계층에:
      • 가상 주소 체계 제공
      • erase/program 횟수가 사실상 무제한인 것처럼 보이게 함
    • AUTOSAR 계층에서 Fee 모듈이 이를 담당

2. FEE 구조 (Block / Cluster / Sector)

2.1 FEE Block

  • 애플리케이션이 사용하는 논리적 EEPROM 블록
  • 각 Block은 설정 시 특정 Cluster Group에 매핑됨

2.2 FEE Cluster Group

  • EEPROM 에뮬레이션을 위한 물리적 저장 단위 묶음
  • 최소 2개 이상의 FEE Cluster로 구성됨
    → 이유: wear leveling, 데이터 이동, garbage collection을 위함

2.3 FEE Cluster

  • 하나 이상의 FLS Logical Sector로 구성됨
  • 실제 Flash 메모리의 물리적 영역

2.4 FLS Logical Sector

  • FLS 드라이버에서 정의한 Flash 섹터
  • FEE에서 사용할 수 있는 섹터는 FLS 설정에 따라 제한됨

요약 구조:

Application
 └─ FEE Block (논리)
     └─ Cluster Group
         ├─ Cluster 0
         │   └─ FLS Logical Sector(s)
         └─ Cluster 1
             └─ FLS Logical Sector(s)

3. 비동기(Asynchronous) 동작 방식

3.1 API 호출 방식

  • Fee_Read, Fee_Write, Fee_Erase 등의 API는:
    • 요청 파라미터를 내부 구조체에 저장
    • 즉시 리턴 (실제 Flash 작업은 수행하지 않음)

3.2 State Machine 기반 처리

  • 실제 Flash 작업은:
    • FEE 내부 상태 머신(State Machine) 에 의해 수행
    • 한 번에 많은 데이터를 처리하지 않고 작은 단위(chunk) 로 나누어 실행

3.3 MainFunction 호출의 중요성

  • 아래 함수들이 주기적으로 호출되어야 함
    • Fee_MainFunction()
    • Fls_MainFunction()
  • 일반적으로:
    • OS Task (예: 1ms / 10ms 주기)
    • 또는 main loop에서 반복 호출

→ 호출하지 않으면 FEE 작업이 진행되지 않음


4. FLS ↔ FEE 연동 (콜백 설정 필수)

FEE는 Flash 작업의 완료/에러를 FLS 콜백을 통해 감지함.

반드시 필요한 FLS 설정

FlsJobEndNotification   = Fee_JobEndNotification;
FlsJobErrorNotification = Fee_JobErrorNotification;

역할

  • Fee_JobEndNotification
    • Flash 작업 정상 완료 통보
    • FEE 상태 머신이 다음 상태로 전이
  • Fee_JobErrorNotification
    • Flash 작업 실패 통보
    • FEE 에러 처리 및 상태 전이

⚠️ 이 콜백이 설정되지 않으면:

  • FEE 상태 머신이 멈추거나
  • Job이 완료되지 않은 상태로 남음

5. 핵심 요약

  • FEE는 Flash를 사용해 EEPROM을 소프트웨어적으로 에뮬레이션
  • 데이터는:
    • FEE Block → Cluster Group → Cluster → FLS Sector 구조로 관리
  • 모든 FEE/FLS 작업은 비동기 + 상태 머신 기반
  • Fee_MainFunction() / Fls_MainFunction() 주기 호출 필수
  • FLS의 Job Notification 콜백을 반드시 FEE로 연결해야 정상 동작

 

'IT > IoT | Hardware' 카테고리의 다른 글

프로비저닝 - 왜 이런 용어를 쓰는 걸까?  (0) 2026.01.15
DDR PHY, 컨트롤러 역할은?  (0) 2024.04.03
DDR 인터리빙?  (0) 2024.04.03
전자전기 - SCR 제어  (1) 2024.01.19
IoT 보안인증 자료  (0) 2023.07.20

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.