AUTOSAR Memory Stack — AUTOSAR Classic Platform BSW의 Non-Volatile Data 관리 전담 모듈군. Application이 Block 단위로 EEPROM/Flash에 읽고 쓸 수 있도록 Services Layer부터 MCAL까지 수직으로 추상화한 스택이다. 구성은 Memory Services의 NvM 하나와 Memory H/W Abstraction Driver Layer(MemIf + Ea/Fee + Eep/Fls)로 나뉜다.
계층 매핑
| BSW Layer | 모듈 |
|---|---|
| Services (Memory Services) | NvM |
| ECU Abstraction (Memory HW) | MemIf(Memory Abstraction Interface), Ea / Fee |
| MCAL (Memory Drivers) | Eep(External EEPROM Driver) / Fls (Flash Driver) |
6 모듈 개요
| 모듈 | 전체 이름 | 역할 |
|---|---|---|
| NvM | NVRAM Manager | 지원하는 모든 NV device에 대한 데이터 read/write 관리. Memory Services Layer의 유일한 모듈 |
| MemIf | Memory Abstraction Interface | NvM에서 받은 request를 device 종류에 맞게 하위(Ea 또는 Fee)로 전달하는 dispatcher |
| Ea | EEPROM Abstraction | External EEPROM 대응. Ea Block의 유효성 확인 및 주소값 계산 |
| Eep | External EEPROM Driver | External EEPROM 대응. 외부 EEPROM 디바이스에 SPI를 통해 data read/write |
| Fee | Flash EEPROM Emulation | Internal EEPROM 대응. Dflash를 EEPROM처럼 emulation. Fee Block의 유효성 확인 및 주소값 계산 |
| Fls | Flash Driver | Internal EEPROM 대응. Dflash에 실제로 data write/read |
Internal vs External EEPROM 경로
Memory Stack은 물리적 저장 매체의 종류에 따라 두 개의 대칭 경로로 갈라진다.
- External 경로: 보드 위 별도 EEPROM 칩을 SPI로 접근. Ea가 논리 주소를 계산하고 Eep이 SPI 트랜잭션 수행
- Internal 경로: μC 내장 Data Flash(Dflash)를 EEPROM처럼 사용. Fee가 Dflash를 EEPROM 동작으로 emulation하고 Fls가 실제 페이지 write/read
- MemIf가 block별 설정에 따라 어느 경로로 request를 보낼지 선택한다.
Block 추상화 계층
Memory Stack에서 “block”은 논리/물리 두 레벨로 존재하며 둘은 공식으로 연결된다.
- NvM Block — Application이 EEPROM에 읽고 쓰는 논리적 단위 (상위)
- Fee / Ea Block — 물리적으로 EEPROM에 읽고 쓰는 실체 단위 (하위)
- 연결 공식 및 block type별 매핑 관계는 NVRAM Manager 참고
Write/Read Interface 흐름
Application이 NvM API(NvM_WriteBlock / NvM_ReadBlock)를 호출하면, 해당 block의 device 설정에 따라 MemIf → Ea/Fee → Eep/Fls 순으로 request가 forwarding된다. 각 계층은 비동기 콜백(Job finished notification)을 상위로 되돌려준다. 세부 application-NvM 시퀀스 규칙은 NVRAM Manager 참고.