KR20230071621A - 메모리 관리를 위한 아키텍처 - Google Patents
메모리 관리를 위한 아키텍처 Download PDFInfo
- Publication number
- KR20230071621A KR20230071621A KR1020210158024A KR20210158024A KR20230071621A KR 20230071621 A KR20230071621 A KR 20230071621A KR 1020210158024 A KR1020210158024 A KR 1020210158024A KR 20210158024 A KR20210158024 A KR 20210158024A KR 20230071621 A KR20230071621 A KR 20230071621A
- Authority
- KR
- South Korea
- Prior art keywords
- software component
- architecture
- read
- memory management
- data
- Prior art date
Links
- 230000006870 function Effects 0.000 claims abstract description 60
- 238000004891 communication Methods 0.000 claims abstract description 31
- 238000000034 method Methods 0.000 claims description 29
- 238000007726 management method Methods 0.000 description 58
- 238000010586 diagram Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 239000002131 composite material Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000003745 diagnosis Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/173—Vehicle or other transportation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명의 메모리 관리를 위한 아키텍처는, 적어도 하나의 기능에 대한 알고리즘을 수행하고, 상기 알고리즘 내의 데이터를 송수신하는 애플리케이션 소프트웨어 컴포넌트(ASW); 비휘발성 메모리를 관리하기 위한 비휘발성 메모리 관리 모듈(VnM)을 포함하는 베이직 소프트웨어(BSW); 상기 비휘발성 메모리 관리 모듈을 관리하는 상태 관리 소프트웨어 컴포넌트; 및 상기 애플리케이션 소프트웨어 컴포넌트(ASW)와 상기 상태 관리 소프트웨어 컴포넌트 사이에서 통신이 수행되도록 하고, 상기 베이직 소프트웨어(BSW)와 상기 상태 관리 소프트웨어 컴포넌트 사이에서 통신이 수행되도록 하는 런타임 환경(RTE)을 포함한다. 상기 상태 관리 소프트웨어 컴포넌트는, 상기 비휘발성 메모리에 데이터를 쓰거나 상기 비휘발성 메모리에서 데이터를 읽을 때, 읽은 횟수가 미리 설정된 횟수 이상이거나, 쓴 횟수가 미리 설정된 횟수 이상이면 읽기 동작 또는 쓰기 동작을 종료하도록 한다.
Description
본 발명은 오토사(AUTOSAR) 기반의 메모리 관리를 위한 아키텍처에 관한 것으로, 차량 제어 로직이 포함된 소프트웨어 컴포넌트(SWC)와 비휘발성 메모리(NVM: Non-Volatile Memory) 사이에서 비휘발성 메모리를 관리하기 위한 아키텍처에 관한 것이다.
오토사(AUTomotive Open System Architecture: AUTOSAR)는 여러 완성 차량 제조사, 차량 부품 제조사, 개발 도구 생산자 및 반도체 제조사가 참여하고 있는 차량 전장부품용 임베디드 소프트웨어 사용 급증에 대응하기 위한 표준화 플랫폼이다.
오토사 표준을 따르는 애플리케이션 소프트웨어는 소프트웨어 컴포넌트(SoftWare Component: SwC, 이하, 'SwC'라고도 함)로 모듈화 된다.
공통 기능을 갖는 소프트웨어 컴포넌트는 오픈 소스(open source)를 사용하여 애플리케이션 소프트웨어를 재사용하는 개념이나, 이는 플랫폼 소프트웨어에 한정된다.
기존 AUTOSAR 플랫폼(Platform)은, 베이직 소프트웨어(Basic SoftWare: BSW)에 해당하는 서비스레이어(Service Layer), 전자 제어 유닛 추상화 레이어(ECU Abstraction Layer) 및 마이크로컨트롤러 추상화 레이어(Microcontroller Abstraction Layer)에 대한 표준 모듈을 제공하며, 애플리케이션 레이어(Application Layer)에 대해서는 개발자 혹은 소프트웨어 아키텍처에 따라서 애플리케이션 소프트웨어 컴포넌트(Application Software Component)의 구성이 다양하게 이루어지고 있다.
현재, AUTOSAR 플랫폼(Platform)은 소프트웨어 컴포넌트(SWC)와 비휘발성 메모리(NVM: Non-Volatile Memory) 사이에서 비휘발성 메모리를 신뢰성 있고 효율적으로 관리하기 위한 소프트웨어 컴포넌트(SWC)의 알고리즘을 필요로 한다.
좀 더 구체적으로, 차량에서는 시동 오프(Key Off) 이후에도 지워지지 않고 유지되어야 할 데이터들이 있는데, 이런 데이터들을 비휘발성 메모리(NVM)에 저장한다. 예를 들어, 시동 오프(Key Off) 이후에도 지워지지 않고 유지되어야 할 데이터는, 주행거리 데이터 및 고장진단 데이터가 있다.
비휘발성 메모리(NVM)의 하드웨어(HW) 특성상 읽기/쓰기(Read/Write)의 횟수가 제한되어 있어 불필요하게 읽기/쓰기(Read/Write)를 많이 할 경우 비휘발성 메모리의 수명이 단축되어 차량의 생애 주기 동안 비휘발성 메모리(NVM)가 고장 날 수 있는 문제가 있었다. 이때 비휘발성 메모리(NVM)의 읽기/쓰기(Read/Write)의 데이터에 대한 신뢰성이 저하되고, 이로 인해 차량에서 치명적 결함이 발생할 수 있는 문제가 있었다.
비휘발성 메모리(NVM)의 읽기/쓰기(Read/Write) 처리에는 오토사(AUTOSAR) 소프트웨어(SW)의 여러 모듈들 간의 함수 호출을 통해 정보 전달이 이루어지는 만큼 각 과정에서 무결성 확보를 위한 보완 기술이 필요하다.
일 측면은 비휘발성 메모리의 수명을 고려하여 읽기/쓰기 커맨드를 최소화하고 신뢰성 있는 데이터 교환을 위한 보완 로직을 포함하고, 데이터 송수신을 매개하도록 하는 메모리 관리를 위한 아키텍처를 제공한다.
일 측면에 따른 메모리 관리를 위한 아키텍처는, 적어도 하나의 기능에 대한 알고리즘을 수행하고, 상기 알고리즘 내의 데이터를 송수신하는 애플리케이션 소프트웨어 컴포넌트(ASW); 비휘발성 메모리를 관리하기 위한 비휘발성 메모리 관리 모듈(VnM)을 포함하는 베이직 소프트웨어(BSW); 상기 비휘발성 메모리 관리 모듈을 관리하는 상태 관리 소프트웨어 컴포넌트; 및 상기 애플리케이션 소프트웨어 컴포넌트(ASW)와 상기 상태 관리 소프트웨어 컴포넌트 사이에서 통신이 수행되도록 하고, 상기 베이직 소프트웨어(BSW)와 상기 상태 관리 소프트웨어 컴포넌트 사이에서 통신이 수행되도록 하는 런타임 환경(RTE)을 포함한다. 상기 상태 관리 소프트웨어 컴포넌트는, 상기 비휘발성 메모리에 데이터를 쓰거나 상기 비휘발성 메모리에서 데이터를 읽을 때, 읽은 횟수가 미리 설정된 횟수 이상이거나, 쓴 횟수가 미리 설정된 횟수 이상이면 읽기 동작 또는 쓰기 동작을 종료하도록 한다.
상기 애플리케이션 소프트웨어 컴포넌트(ASW)와 상기 상태 관리 소프트웨어 컴포넌트는, 오토사 기반의 플랫폼의 애플리케이션 레이어에 마련된다.
상태 관리 소프트웨어 컴포넌트는, 차량의 시동 온 시에, 상기 비휘발성 메모리에 저장된 데이터를 읽는 동작을 제어하고, 차량의 시동 오프 시에, 상기 비휘발성 메모리에 데이터를 쓰는 동작을 제어한다.
상태 관리 소프트웨어 컴포넌트는, 쓰기 온 커맨드가 수신되면 미리 지정된 읽기 함수(Rte_Read)를 호출하여 상기 애플리케이션 소프트웨어(ASW)로부터 상기 비휘발성 메모리에 쓰기(Write)할 데이터를 읽고, 읽기한 데이터를 상기 비휘발성 메모리에 쓰도록 한다.
상태 관리 소프트웨어 컴포넌트는, 상기 런타임 환경을 통해 상기 데이터를 읽을 때 런타임 환경 에러의 발생 여부를 판단하고, 상기 런타임 환경 에러가 발생하였다고 판단되면 상기 쓰기 동작을 종료한다.
상태 관리 소프트웨어 컴포넌트는, 상기 쓰기 동작을 제어할 때, 상기 베이직 소프트웨어(BSW)의 비휘발성 메모리 관리 모듈(311)에 개별 블록에 대한 에러 상태 확인 서비스(Get Error Status)를 요청한다.
상태 관리 소프트웨어 컴포넌트는, 상기 에러 상태 확인 서비스(Get Error Status)를 요청할 때, 상기 런타임 환경 에러의 발생 여부를 판단하고, 상기 런타임 환경 에러가 발생하였다고 판단되면 상기 쓰기 동작을 종료한다.
상태 관리 소프트웨어 컴포넌트는, 상기 쓰기 동작을 제어할 때, 상기 에러 상태 확인 서비스(Get Error Status)의 결과가 펜딩 상태인지를 판단하고, 펜딩 상태가 아니라고 판단되면 상기 읽기(Read)한 데이터를 인자로 쓰기 블록 서비스(Write Block Service)를 상기 비휘발성 메모리 관리 모듈에 요청한다.
상태 관리 소프트웨어 컴포넌트는, 상기 쓰기 블록 서비스(Write Block Service)를 요청할 때, 상기 런타임 환경 에러의 발생 여부를 판단하고, 상기 런타임 환경 에러가 발생하였다고 판단되면 상기 쓰기 동작을 종료하고, 펜딩 상태라고 판단되면 상기 쓰기 동작을 종료한다.
상태 관리 소프트웨어 컴포넌트는, 상기 읽기한 데이터에 대한 쓰기가 완료된 블록에 대해 플래그(flag)를 온(On)으로 설정하고, 상기 비휘발성 메모리 관리 모듈의 모든 블록에 대한 데이터 쓰기가 완료되면, 플래그를 초기화한다.
상태 관리 소프트웨어 컴포넌트는, 읽기 온 커맨드가 수신되면, 상기 비휘발성 메모리 관리 모듈의 개별 블록의 상태를 확인하기 위해 상기 비휘발성 메모리 관리 모듈에 에러 상태 확인 서비스(Get Error Status)를 요청한다.
상태 관리 소프트웨어 컴포넌트는, 상기 에러 상태 확인 서비스(Get Error Status)를 요청할 때, 상기 런타임 환경 에러의 발생 여부를 판단하고, 상기 런타임 환경 에러가 발생하였다고 판단되면 상기 읽기 동작을 종료한다.
상태 관리 소프트웨어 컴포넌트는, 읽기 동작을 제어할 때, 상기 에러 상태 확인 서비스(Get Error Status)의 결과가 펜딩 상태인지를 판단하고, 상기 펜딩 상태가 아니라고 판단되면 읽기 블록 서비스(Write Block Service)를 상기 비휘발성 메모리 관리 모듈에 요청하고, 상기 펜딩 상태라고 판단되면 상기 읽기 동작을 종료한다.
상태 관리 소프트웨어 컴포넌트는, 읽기 블록 서비스(Write Block Service)를 요청할 때, 상기 런타임 환경 에러의 발생 여부를 판단하고, 상기 런타임 환경 에러가 발생하였다고 판단되면 상기 읽기 동작을 종료한다.
상태 관리 소프트웨어 컴포넌트는, 데이터 읽기가 완료된 블록에 대해 플래그(flag)를 온(On)으로 설정(set)하고, 상기 비휘발성 메모리 관리 모듈의 모든 블록에 대한 데이터 읽기가 완료되면, 플래그를 초기화한다.
애플리케이션 소프트웨어 컴포넌트는, 상기 읽기 온 커맨드가 수신되면 미리 지정된 읽기 함수(Rte_Read)를 호출하여 상기 애플리케이션 소프트웨어(ASW)에 읽은 데이터를 전송한다.
애플리케이션 소프트웨어 컴포넌트는, 미리 정해진 쓰기함수(Rte_Write)를 통해 데이터를 수신하고 수신한 데이터에 대한 쓰기를 수행한다.
본 발명은 비휘발성 메모리와 관련된 베이직 소프트웨어 함수, 런타임 환경 함수 사용 시 데이터 이동 간에 모든 부분에서 에러를 체크함으로써 데이터의 신뢰성을 확보할 수 있다.
본 발명은 쓰기 블록(WriteBlock)과 읽기 블록(ReadBlock) 서비스의 호출을 최소화함으로써 비휘발성 메모리의 수명을 연장할 수 있다.
본 발명은 쓰기 블록(WriteBlock)과 읽기 블록(ReadBlock), 런타임 환경 함수 사용 중 에러가 발생되면 미리 설정된 보완 코드를 이용함으로써 차량의 심각한 오작동을 방지하고 오작동에 대한 복구를 수행할 수 있다.
본 발명은 비휘발성 메모리의 관리 품질을 향상시킬 수 있고, 차량의 품질 및 상품성을 향상시킬 수 있으며 나아가 차량의 안전성을 향상시킬 수 있으며 차량의 경쟁력을 확보할 수 있다.
도 1은 실시 예에 따른 메모리 관리를 위한 아키텍처를 가지는 오토사 플랫폼의 아키텍처의 예시도이다.
도 2는 실시 예에 따른 메모리 관리를 위한 아키텍처의 예시도이다.
도 3은 실시 예에 따른 아키텍처 내 블록들의 예시도이다.
도 4a, 4b, 4c는 실시 예에 따른 메모리 관리를 위한 아키텍처의 쓰기 동작의 순서도이다.
도 5a, 5b는 실시 예에 따른 메모리 관리를 위한 아키텍처의 읽기 동작의 순서도이다.
도 2는 실시 예에 따른 메모리 관리를 위한 아키텍처의 예시도이다.
도 3은 실시 예에 따른 아키텍처 내 블록들의 예시도이다.
도 4a, 4b, 4c는 실시 예에 따른 메모리 관리를 위한 아키텍처의 쓰기 동작의 순서도이다.
도 5a, 5b는 실시 예에 따른 메모리 관리를 위한 아키텍처의 읽기 동작의 순서도이다.
명세서 전체에 걸쳐 동일 참조 부호는 동일 구성요소를 지칭한다. 본 명세서가 실시 예들의 모든 요소들을 설명하는 것은 아니며, 본 발명이 속하는 기술분야에서 일반적인 내용 또는 실시 예들 간에 중복되는 내용은 생략한다. 명세서에서 사용되는 '부, 모듈, 부재, 장치'라는 용어는 소프트웨어 또는 하드웨어로 구현될 수 있으며, 실시 예들에 따라 복수의 '부, 모듈, 부재, 장치'가 하나의 구성요소로 구현되거나, 하나의 '부, 모듈, 부재, 장치'가 복수의 구성요소들을 포함하는 것도 가능하다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 간접적으로 연결되어 있는 경우를 포함하고, 간접적인 연결은 무선 통신망을 통해 연결되는 것을 포함한다.
또한 어떤 부분이 어떤 구성요소를"포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
제 1, 제 2 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위해 사용되는 것으로, 구성요소가 전술된 용어들에 의해 제한되는 것은 아니다.
단수의 표현은 문맥상 명백하게 예외가 있지 않는 한, 복수의 표현을 포함한다.
각 단계들에 있어 식별부호는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 실시될 수 있다.
이하 첨부된 도면들을 참고하여 본 발명의 작용 원리 및 실시 예들에 대해 설명한다.
도 1은 실시 예에 따른 메모리 관리를 위한 아키텍처를 가지는 오토사 플랫폼의 아키텍처의 예시도이다.
오토사(AUTOSAR: AUTomotive Open System Architecture)는 표준화된 개방형 플랫폼이다. 여기서 표준은, 함수의 이름, 기능, 반환값 등을 미리 정의하고 있음을 의미한다. 그리고 개방형은 누구나 사용할 수 있다는 것을 의미한다.
도 1에 도시된 바와 같이, 오토사의 플랫폼 구조는 계층화된 아키텍처(Layered Architecture) 구조로, 계층(Layer)이 분리되어 있어서 시스템의 유지 관리가 쉽다.
오토사의 플랫폼은 계층화된 구조로 하드웨어에 독립적인 소프트웨어를 개발할 수 있으며 재사용성과 확장성을 향상시킬 수 있다.
오토사의 플랫폼은 애플리케이션 레이어(100), 런타임 환경 레이어(200), 베이직 소프트웨어 레이어(300)를 포함한다.
소프트웨어 레이어(100)는 차량용 전자 제어 유닛(ECU)의 구동에 필요한 베이직 소프트웨어(BSW)와 하드웨어에서 독립적으로 작동할 수 있는 애플리케이션 소프트웨어(ASW)를 통합한 플랫폼이다
애플리케이션 레이어(100)는 차량 제어 로직이 각각 포함된 복수 개의 소프트웨어 컴포넌트(SWC)를 포함할 수 있다.
소프트웨어 컴포넌트(SWC)는 독립된 실행 단위이며, 제어 대상에 따라 모터 컨트롤 소프트웨어 컴포넌트, 배터리 컨트롤 소프트웨어 컴포넌트, 모드 컨트롤 소프트웨어 컴포넌트, 사용자 인터페이스 소프트웨어 컴포넌트로 구별될 수 있다.
소프트웨어 컴포넌트(SWC)는 기능에 따라 액추에이터 소프트웨어 컴포넌트, 센서 소프트웨어 컴포넌트, 애플리케이션 소프트웨어 컴포넌트(110)로 구별될 수 있고, Io 컨버터 소프트웨어 컴포넌트, 리소스 모니터 소프트웨어 컴포넌트, 진단 소프트웨어 컴포넌트, 테스트 소프트웨어 컴포넌트, 상태 관리 소프트웨어 컴포넌트(120)로 구별될 수 있다.
애플리케이션 소프트웨어 컴포넌트(ASW, 110)는 차량에서 수행되는 적어도 하나의 기능에 대한 알고리즘을 수행하는 컴포넌트로, 차량의 실제 기능을 담당한다.
애플리케이션 소프트웨어 컴포넌트(110)는 클라이언트/서버 방식, 송신자/수신자 방식을 나뉜다.
클라이언트/서버 방식은 원격 프로시저 호출 방식으로, 분산 시스템에서 널리 사용되는 통신 방식이다.
클라이언트/서버 방식에서, 원격 서비스의 제공자가 서버가 되며, 이 서비스의 사용자가 클라이언트가 된다. 클라이언트가 통신을 초기화한 후 서버로 특정 서비스 제공을 요청하면 서버가 필요한 매개변수를 클라이언트에게 전달하는 역할을 한다.
예를 들어, 클라이언트 서버는 기능을 요청하고 수행하는 관점으로 액추에이터에서 사용된다.
송신자/수신자 방식은 메시지 전송 방식으로, 송신자가 단일 또는 복수의 수신자에게 정보를 보내는 비동기적 통신 방식이다.
예를 들어, 송신자/수신자는 데이터를 송신하고 수신하는 관점으로 센서에서 사용될 수 있다.
애플리케이션 소프트웨어 컴포넌트(ASW, 110)는 러너블(Runnable)이라 하고, 이렇게 정의된 러너블은 운영체제에 의해 스케줄링된다.
각각의 소프트웨어 컴포넌트(SWC)는 하드웨어나 운영체제(OS)에 직접적으로 연결할 수 없어서, 스레드나 프로세스를 구현할 수 없다. 대신 런타임 동안 실행되는 소프트웨어 컴포넌트의 개별 기능들은 러너블에 의해 실행될 수 있다.
VFB(Virtual Functional Bus)의 스펙에 따르면, 러너블은 런타임 환경(200)을 통해 시작될 수 있는 명령의 순서로 정의된다.
소프트웨어 컴포넌트는 여러 개의 러너블을 가질 수 있다.
적어도 하나의 전자 제어 유닛(ECU)을 설정하면서 운영체제(OS)와 소프트웨어 컴포넌트 내의 러너블 간의 매핑이 생성되며, 이 매핑은 런타임 환경(RTE)에 의해 호출되고, 스케줄링 시 활용될 수 있다.
상태 관리(state manager) 소프트웨어 컴포넌트(120)는 비활성 메모리 관리 모듈(311)을 관리하고, 고장 진단 이벤트를 관리하며, 스타트업/셧다운 시퀀스 관리를 위한 인터페이스의 기능을 수행하는 소프트웨어 컴포넌트이다.
애플리케이션 레이어(100) 내의 애플리케이션 소프트웨어 컴포넌트(ASW, 110)와 상태 관리(state manager) 소프트웨어 컴포넌트(120)는 비휘발성 메모리의 관리에 이용될 수 있다.
런타임 환경(RTE: RunTime Environment, 200)는 애플리케이션 레이어(100) 내의 적어도 하나의 소프트웨어 컴포넌트를 적어도 하나의 하드웨어와 전자 제어 유닛(ECU)에 독립적으로 매핑한다.
런타임 환경(200)을 사용하면, 다른 제어기에 연결된 센서와 액추에이터에서 신호를 리드하고 제어 신호를 출력할 수 있다.
이것이 가능한 이유는, 런타임 환경(200)이 CAN, FlexRay, LIN, MOST와 같은 네트워크를 사용하는 전자 제어 유닛(ECU) 외부 통신의 방법이나 전자 제어 유닛(ECU) 내부 통신 방법을 모두 추상화하여 공통의 애플리케이션 프로그램 인터페이스(API)를 어플리케이션에 제공하기 때문이다.
런타임 환경(200)은 애플리케이션 레이어(100) 내의 소프트웨어 컴포넌트들 간 통신과, 소프트웨어 컴포넌트(SWC)와 베이직 소프트웨(BSW)어 사이의 통신 인터페이스 맵핑을 전자 제어 유닛(ECU)에 독립적으로 제공할 수 있다.
즉 런타임 환경(200)은 데이터를 교환하고 상호작용을 하면서 애플리케이션 소프트웨어 컴포넌트(110)와 베이직 소프트웨어(BSW, 300)를 연결한다.
런타임 환경(200)은 애플리케이션 소프트웨어 컴포넌트(SWC)와 하드웨어를 분리할 수 있다.
런타임 환경(200)은 VFB(Virtual Functional Bus) 통신 구조를 구현한 환경이다.
런타임 환경(200)의 상위에서 실행되는 어플리케이션 소프트웨어 컴포넌트에 따라 런타임 환경(RTE)의 요구사양이 달라지기 때문에, 런타임 환경(RTE, 200)은 테일러링 되어야 한다.
설정 작업에 의해서 테일러링 된 최종 런타임 환경(RTE)은 전자 제어 유닛(ECU)마다 달라질 수 있다.
베이직 소프트웨어(BSW: Basic Software, 300)는 전자 제어 유닛(ECU) 및 하드웨어(HW)를 추상화하여 상위 계층에 서비스를 제공한다.
베이직 소프트웨어(300)는 서비스 레이어(310), 전자 제어 유닛 추상화 레이어(320), 마이크로 컨트롤러 추상화 레이어(330) 및 복합 디바이스 드라이버 레이어(340)을 포함한다.
서비스 레이어(310)는 베이직 소프트웨어(BSW, 300)에서 가장 위에 있는 레이어로, 애플리케이션 레이어(100)에서 마이크로 컨트롤러 자원을 활용하기 위한 서비스를 제공한다.
서비스 레이어(310)는, IO하드웨어로의 접근이 전자제어유닛(ECU) 추상화 레이어(320)에 의해 관리되는 동안, 시스템 구동 및 베이직 소프트웨어(BSW) 내 모듈들의 전반적인 제어를 위한 다양한 백그라운드 기능(통신, 메모리, OS)을 제공한다.
이러한 서비스 레이어(310)는 오퍼레이팅 시스템(OS: Operating system), 스케줄 관리, 네트워크 통신 관리, 메모리 관리, 진단 서비스, 전자제어유닛(ECU) 상태 관리, 워치독을 수행할 수 있다.
즉 서비스 레이어(310)는 오퍼레이션 시스템, 시스템 서비스, 메모리 서비스, 통신 서비스를 포함할 수 있다.
오퍼레이션 시스템(OS)은 직접 하드웨어를 제어해야 효율적이기 때문에 서비스 레이어가 마이크로컨트롤러 추상화 레이어(MCAL, 320)까지 내려와 있다.
시스템 서비스는, 타이머 서비스를 포함한 RTOS 서비스, CRC와 같은 오류 관리 라이브러리처럼 공통적으로 사용할 수 있는 함수와 관련 모듈의 집합이며, 애플리케이션 소프트웨어 컴포넌트(ASW) 및 베이직 소프트웨어(BSW) 모듈의 마이크로 컨트롤러의 기본 서비스를 제공한다
메모리 서비스는, 비휘발성 메모리 관리 모듈(311)을 포함할 수 있고, 메모리 위치와 메모리 속성에 대한 추상화를 제공한다.
또한 메모리 서비스는 비휘발성 메모리의 데이터에 대한 저장, 로딩, 체크섬을 사용한 데이터 검증, 안정적인 데이터 저장에 대한 것을 관리한다.
메모리 서비스는 플래시 또는 EEPROM과 같은 비휘발성 메모리의 데이터를 읽고 쓰기 위해 메모리 클러스터, 디바이스 또는 소프트웨어 기능에 대한 액세스를 수행한다.
비휘발성 메모리 관리 모듈(NvM: Non-Volatile Memory Manager, 311)은 차량 환경의 개별 요구 사항에 따라 비휘발성 메모리의 데이터의 데이터 저장 및 유지 관리를 수행한다.
즉 비휘발성 메모리 관리 모듈(NvM, 311)은 EEPROM 및/또는 FLASH EEPROM 에뮬레이션의 비휘발성 데이터를 관리한다.
통신 서비스는, CAN, LIN, FlexRay, MOST와 같은 차량 네트워크 통신을 위한 모듈을 포함할 수 있다.
통신 서비스는 통신 하드웨어 추상화를 통하여 애플리케이션 레이어(100)에서 통신 드라이버로 인터페이스한다. 즉, 통신 서비스는 애플리케이션 레이어(100)가 차량 네트워크의 종류와 관계없이 동일한 인터페이스로 차량 네트워크와 인터페이스하고 네트워크를 관리한다.
전자 제어 유닛 추상화 레이어(EAL: Ecu Abstraction Layer, 320)는 마이크로컨트롤러 추상화 레이어(MCAL)의 드라이버들을 상위계층에 인터페이스한다.
전자 제어 유닛 추상화 레이어(320)는 전자 제어 유닛(ECU)에 센서나 액추에이터 등 외부 장치들이 연결될 때 하드웨어 회로의 재배치 없이도 애플리케이션 소프트웨어(ASW) 컴포넌트에 동일한 인터페이스를 제공하는 역할을 한다.
전자 제어 유닛 추상화 레이어(320)는 전자제어유닛(ECU)의 모든 기본 컴포넌트들을 추상화한다. 아울러, 마이크로 컨트롤 유닛(MCU)보다 전자 제어 유닛(ECU)의 범위가 더 큰 개념일 수 있다.
전자 제어 유닛 추상화 레이어(320)는 하드웨어의 독립적인 애플리케이션 프로그램 인터페이스(API: Application Programming interface)을 제공한다.
여기서의 하드웨어는 마이컴 내부와 외부의 모두를 포함할 수 있다.
즉 전자 제어 유닛 추상화 레이어(320)는 주변장치가 마이크로 컨트롤러 내부/외부의 각종 주변장치에 접근하기 위한 애플리케이션 프로그램 인터페이스(API)를 제공하며, 마이크로 컨트롤러의 특정 포트 또는 인터페이스와의 연결을 담당한다.
전자 제어 유닛 추상화 레이어(320)는 외부 장치를 위한 드라이버와 내부와 외부 주변장치(IO, 메모리, 워치독, 통신)를 위한 인터페이스를 제공할 수 있다.
전자 제어 유닛 추상화 레이어(320)는 I/O 하드웨어 추상화와, 통신 하드웨어 추상화, 메모리 하드웨어 추상화 온보드 장치 추상화를 포함한다.
I/O 하드웨어 추상화는 주변 I/O 디바이스의 위치와 ECU 하드웨어 레이아웃에 대한 추상화와 상위 소프트웨어 계층으로부터 ECU의 하드웨어 레이아웃을 감추는 역할을 한다.
통신 하드웨어 추상화는 통신 컨트롤러와 관련 전자제어유닛(ECU) 하드웨어 레이아웃에 대한 추상화를 수행한다.
메모리 하드웨어 추상화는 메모리와 관련된 하드웨어를 추상화 한다.
메모리 하드웨어 추상화는 비휘발성 메모리의 관리에 이용될 수 있다.
메모리 하드웨어 추상화는 메모리 추상화 인터페이스 모듈(Memlf, 321)과 플래시 이이피롬 에뮬레이션 모듈(flash EEPROM Emulation: Fee, 322)을 포함할 수 있다.
메모리 추상화 인터페이스 모듈(Memlf, 321)은 플래시 이이피롬 에뮬레이션모듈(flash EEPROM Emulation: Fee, 322)에서 추상화를 용이하게 한다.
메모리 추상화 인터페이스 모듈(Memlf, 321)은 EA(EEPROM Abstraction) 모듈(미도시)에서 추상화를 용이하게 하는 것도 가능하다.
EA 모듈은 EEPROM에서 데이터 읽기, 쓰기, 지우기를 위한 서비스를 제공하고 EEPROM의 데이터 블록을 메모리(예: RAM)의 데이터 블록과 비교하는 서비스를 제공한다.
메모리 추상화 인터페이스 모듈(Memlf, 321)은 균일한 선형 주소 공간에서 가상 분할을 비휘발성 메모리 관리 모듈(311)에 제공한다.
플래시 이이피롬 에뮬레이션 모듈(FEE, 322)은 디바이스, 특정 주소 지정 체계 및 분할을 추상화한다.
플래시 이이피롬 에뮬레이션 모듈(FEE, 322)은 비휘발성 메모리 관리 모듈(311)에 가상 주소 지정 체계, 분할 및 가상 무제한의 지우기 주기를 제공한다.
온보드 장치 추상화는 온보드와 관련된 하드웨어를 추상화 한다.
마이크로컨트롤러 추상화 레이어(MCAL: Microcontroller Abstraction Layer, 330)는 오토사 플랫폼에서 가장 낮은 레이어이며, 아래에 하드웨어 레이어(미도시)가 마련될 수 있다.
마이크로컨트롤러 추상화 레이어(MCAL, 330)는 상위 레이어의 마이크로 컨트롤 유닛(MCU) 자원 또는 기능을 활용하기 위한 디바이스 드라이버 애플리케이션 프로그램 인터페이스(API)를 제공한다.
마이크로컨트롤러 추상화 레이어(MCAL, 330)는 마이크로컨트롤러 드라이버, 메모리 드라이버, 통신 드라이버, 및 IO 드라이버를 포함한다.
마이크로컨트롤러 드라이버는 주변 장치 인터페이스와 마이크로 컨트롤러에 직접 액세스하기 위한 기능을 제공한다,
메모리 드라이버는 마이크로 컨트롤러 내부의 온칩 메모리와 외부 메모리 장치의 메모리 맵에 대한 드라이버이다.
플래시 드라이버 모듈(331)은 플래시를 초기화하고 플래시 메모리에 읽기 쓰기를 수행한다.
플래시 드라이버 모듈(331)은 데이터 블록을 메모리의 데이터 블록과 비교하는 서비스를 수행할 수 있다.
통신 드라이버는 SPI, I2C, CAN, OSI의 데이터 링크 계층 등 온보드 통신과 차량 통신 드라이버이다.
IO 드라이버는 ADC, PW, DIO 등 아날로그 디지털 I/O를 위한 드라이버이다.
복합 디바이스 드라이버(CDD: Complex Device Driver, 340)는 동작 중 외부 장치와 플랫폼간 호환성을 지원한다.
복합 디바이스 드라이버(CDD, 340)는 특별한 타이밍 조건을 가지거나 오토사에 정의된 모듈이 없는 센서나 액추에이터를 제어할 때 사용된다. 즉 복합 디바이스 드라이버(CDD, 340)는 직접 마이컴에 접근하여 센서나 액추에이터를 제어할 수 있다.
도 2는 실시 예에 따른 메모리 관리를 위한 아키텍처의 예시도이고, 도 3은 비휘발성 메모리 관리 모듈 내의 블록들의 예시도이다.
메모리 관리를 위한 아키텍처는, 도 1에 도시된 오토사 플랫폼 내 애플리케이션 레이어(100) 내의 애플리케이션 소프트웨어 컴포넌트(ASW, 110), 상태 관리(state manager) 소프트웨어 컴포넌트(120)와, 런타임 환경(200), 베이직 소프트웨어(300) 내의 비휘발성 메모리 관리 모듈(NvM, 311), 메모리 추상화 인터페이스 모듈(Memlf, 321)과 플래시 이이피롬 에뮬레이션 모듈(Fee, 322) 및 플래시 드라이버 모듈(Fls, 331)을 포함한다.
애플리케이션 소프트웨어 컴포넌트(ASW, 110)는 상태 관리 소프트웨어 컴포넌트(120)의 요청에 대응하여 상태 관리 소프트웨어 컴포넌트(120)에서 쓰기(Write)를 수행할 데이터를 확인하고 확인한 데이터를 전달한다.
즉 애플리케이션 소프트웨어 컴포넌트(ASW, 110)는 미리 정해진 읽기 함수(Rte_Read)를 통해 읽은 데이터를 상태 관리 소프트웨어 컴포넌트(120)에 전달할 수 있다.
애플리케이션 소프트웨어 컴포넌트(ASW, 110)는 상태 관리 소프트웨어 컴포넌트(120)로부터 수신된 데이터를 저장할 수 있다.
애플리케이션 소프트웨어 컴포넌트(ASW, 110)는 미리 정해진 쓰기함수(Rte_Write)를 통해 데이터를 수신하고 수신한 데이터에 대한 쓰기를 수행할 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는 시동 온오프 시에, 비휘발성 메모리에 저장된 데이터를 읽거나, 비휘발성 메모리에 데이터를 쓰는 동작을 제어할 수 있다.
좀 더 구체적으로, 상태 관리 소프트웨어 컴포넌트(120)는 비휘발성 메모리 관리 모듈(311)에 쓰기(Write)할 데이터를 애플리케이션 소프트웨어 컴포넌트(ASW, 110)로부터 리드(Read)한다.
상태 관리 소프트웨어 컴포넌트(120)는, 쓰기 동작을 제어할 때, 도 3에 도시된 베이직 소프트웨어(BSW)의 비휘발성 메모리 관리 모듈(311)에 에러 상태 확인 서비스를 요청할 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는, 쓰기 동작을 제어할 때 개별 블록의 상태를 확인한 결과가 펜딩 상태가 아니라고 판단되면 읽은 데이터를 인자로 쓰기 블록 서비스(Write Block service)를 비휘발성 메모리 관리 모듈(311)에 요청할 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는, 데이터 쓰기가 완료된 블록에 대해 플래그(flag)를 온(On)으로 설정(set)하고, 모든 블록에 대한 데이터 쓰기 제어가 완료되면, 플래그를 초기화하고, 다른 데이터에 대한 쓰기 제어를 수행할 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는, 모든 데이터에 대한 쓰기가 완료되었을 때 완료 함수(NvM JobFinished)가 베이직 소프트웨어(BSW)로부터 호출될 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는, 읽기(Read) 동작을 제어할 때 개별 블록의 상태를 확인하기 위해 베이직 소프트웨어(BSW)의 비휘발성 메모리 관리 모듈(311)에 에러 상태 확인 서비스를 요청할 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는, 읽기(Read) 동작을 제어할 때 펜딩 상태가 아니라고 판단되면 리드 블록 서비스(Read Block service)를 비휘발성 메모리 관리 모듈(311)에 요청할 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는, 데이터 읽기가 완료된 블록에 대해 플래그(flag)를 온(On)으로 설정(set)하고, 모든 블록에 대한 데이터 읽기 제어가 완료되면, 플래그를 초기화하고, 다른 데이터에 대한 읽기 제어를 수행할 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는, 리드 블록 서비스(ReadBlock service)에 대응하여 하드웨어적으로 읽기 동작을 수행한다.
상태 관리 소프트웨어 컴포넌트(120)는, 모든 데이터에 대한 읽기 동작이 완료되었을 때 완료 함수(NvM JobFinished)가 베이직 소프트웨어(BSW)로부터 호출될 수 있디.
상태 관리 소프트웨어 컴포넌트(120)는 데이터의 읽기(Read) 또는 쓰기(Write) 동작을 수행할 때, 런타임 환경으로부터의 Rte 함수의 리턴값을 이용하여 Rte 에러를 체크할 수 있다.
예를 들어, 상태 관리 소프트웨어 컴포넌트(120)는 애플리케이션 소프트웨어 컴포넌트(ASW, 110)로부터 데이터의 읽기 동작을 수행할 때 Rte 함수의 리턴값을 이용하여 Rte 에러를 체크할 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는 쓰기 동작 중 비휘발성 메모리 관리 모듈(311)에 에러 상태 확인 서비스(Get Error Status) 및 쓰기 블록 서비스(Write Block Service)를 요청할 때, 런타임 환경으로부터의Rte 함수의 리턴값을 이용하여 Rte 에러를 체크할 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는 읽기 동작 중 비휘발성 메모리 관리 모듈(311)에 에러 상태 확인 서비스(Get Error Status) 및 읽기 블록 서비스(Read Block Service)를 요청할 때, 런타임 환경으로부터의Rte 함수의 리턴값을 이용하여 Rte 에러를 체크할 수 있다.
상태 관리 소프트웨어 컴포넌트(120)는 데이터의 읽기 동작을 완료하였을 때 런타임 환경으로부터의 Rte 함수의 리턴값을 이용하여 Rte 에러를 체크할 수 있다.
런타임 환경(200)는 애플리케이션 소프트웨어 컴포넌트(ASW, 110)와 상태 관리 소프트웨어 컴포넌트(120) 간의 맵핑을 수행하고, 애플리케이션 소프트웨어 컴포넌트(ASW, 110)와 상태 관리 소프트웨어 컴포넌트(120) 사이에서 데이터를 전달하거나, 함수 호출 정보를 전달할 수 있다.
런타임 환경(200)는 상태 관리 소프트웨어 컴포넌트(120)와 비휘발성 메모리 관리 모듈(311) 간의 맵핑을 수행하고, 상태 관리 소프트웨어 컴포넌트(120)와 비휘발성 메모리 관리 모듈(311) 사이에서 데이터를 송수신하도록 하거나,
베이직 소프트웨어(300) 내의 비휘발성 메모리 관리 모듈(NvM, 311)은 쓰기 동작 또는 읽기 동장 중에 개별 블록에 대한 에러 상태 확인 서비스 요청이 수신되면 개별 블록에 대한 에러 상태를 확인하고, 개별 블록에 대한 에러 상태에 대한 정보를 상태 관리 소프트웨어 컴포넌트(120)에 전송할 수 있다.
비휘발성 메모리 관리 모듈(NvM, 311)은 쓰기 블록 서비스 요청이 수신되면 블록별로 데이터의 쓰기 동작을 수행하고, 모든 블록에 대한 쓰기 동작이 완료되면 완료 함수(NvM JobFinished)를 상태 관리 소프트웨어 컴포넌트(120)에 전송할 수 있다.
비휘발성 메모리 관리 모듈(NvM, 311)은 읽기 블록 서비스 요청이 수신되면 블록별로 데이터의 읽기 동작을 수행하고, 모든 블록에 대한 읽기 동작이 완료되면 완료 함수(NvM JobFinished)를 상태 관리 소프트웨어 컴포넌트(120)에 전송할 수 있다.
메모리 추상화 인터페이스 모듈(Memlf, 321)과 플래시 이이피롬 에뮬레이션 모듈(Fee, 322) 및 플래시 드라이버 모듈(Fls, 331)은, 비휘발성 메모리 관리 서비스를 위한 표준 모듈들이다.
도 4a, 4b, 4c는 실시 예에 따른 메모리 관리를 위한 아키텍처의 쓰기 동작의 순서도이다.
아키텍처는 비휘발성 메모리 관리 모듈(311)의 쓰기 온 커맨드(Write On Command)가 수신(501)되면 쓰기(Write) 사이클을 시작한다.
여기서 쓰기 온 커맨드는 차량의 각종 상황을 종합적으로 판단하여 필요할 경우 요청되며 주로 차량 시동 오프(Key Off) 시에 요청될 수 있다.
아키텍처는 개별 블록들이 이번 사이클(또는 현재 사이클)에서 쓰기 블록 서비스(Write Block service)를 베이직 소프트웨어(BSW)에 요청한 적이 있는지 판단(502)한다.
쓰기 블록 서비스가 요청된 적이 있는지 판단하는 것은, 쓰기 블록 수행 체크 플래그가 온 상태인지 판단하는 것을 포함한다.
쓰기 동작은 비휘발성 메모리 관리 모듈(311)의 수명과 관련이 있기 때문에, 쓰기 온 커맨드의 수신 시 쓰기 블록 서비스의 횟수가 1회만 수행되었는지를 확인하는 것이다. 쓰기 블록 서비스의 횟수는 미리 설정된 횟수일 수 있다.
아키텍처는 이번 사이클에서 쓰기 블록 서비스를 요청한 적이 있다면 해당 블록은 이번 사이클을 종료한다.
반면, 아키텍처는 이번 사이클에서 쓰기 블록 서비스를 요청한 적이 없다면 애플리케이션 소프트웨어(ASW)로부터 비휘발성 메모리에 쓰기(Write)할 데이터를 미리 지정된 읽기 함수(Rte_Read)를 호출하여 읽고(Read, 503), 런타임 환경함수(Rte 함수)의 리턴값을 이용하여 런타임 환경 에러(Rte Error)의 발생 여부를 판단(504)한다.
이와 같이, 런타임 환경을 통해 데이터 교환 시 에러 발생 여부를 단계적으로 확인함으로써 데이터의 신뢰성을 향상시킬 수 있다.
아키텍처는 런타임 환경 에러(Rte Error)가 발생하였다고 판단되면 해당 블록에 대한 쓰기 동작을 종료한다.
반면 아키텍처는 런타임 환경 에러(Rte Error)가 발생하지 않았다고 판단되면 개별 블록의 상태를 확인하기 위하여 베이직 소프트웨어(BSW)에 에러 상태 확인 서비스(GetErrorStatus)를 요청하고 에러 상태 확인 서비스(GetErrorStatus)의 결과가 펜딩(Pending) 상태인지를 판단(505)한다.
이를 통해 비활성 메모리 관리 모듈의 현재상태를 체크하여 문제가 없을 때에만 비활성 메모리 관리 모듈에 서비스를 요청하도록 함으로써 신뢰성을 향상시키고 수명을 연장할 수 있다.
아키텍처는 베이직 소프트웨어(BSW)에 에러 상태 확인 서비스(GetErrorStatus)를 요청할 때 런타임 환경함수(Rte 함수)의 리턴값을 이용하여 런타임 환경 에러(Rte Error)의 발생 여부를 판단(506)한다.
아키텍처는 런타임 환경 에러(Rte Error)가 발생하였다고 판단되면 해당 블록에 대한 쓰기 동작을 종료한다.
또한 아키텍처는 에러 상태 확인 서비스(GetErrorStatus)의 결과가 펜딩(Pending) 상태가 펜딩(Pending) 상태라고 판단되면 해당 블록에 대한 쓰기 동작을 종료한다.
아키텍처는 에러 상태 확인 서비스(GetErrorStatus)의 결과가 펜딩(Pending) 상태가 아니라고 판단되고 런타임 환경 에러(Rte Error)가 발생하지 않았다고 판단되면 읽기(Read)한 데이터를 인자로 쓰기 블록 서비스를 베이직 소프트웨어(BSW)에 요청(507)하고, 런타임 환경함수(Rte 함수)의 리턴값을 이용하여 런타임 환경 에러(Rte Error)의 발생 여부를 판단(508)한다.
다음 아키텍처는 런타임 환경 에러(Rte Error)가 발생하였다고 판단되면 해당 블록에 대한 쓰기 동작을 종료한다.
반면 아키텍처는 런타임 환경 에러(Rte Error)가 발생하지 않았다고 판단되면 개별 블록의 쓰기 수행 체크 플래그(Flag)를 온(On)으로 설정(Set)(509)한다.
아키텍처는 모든 개별 블록들의 쓰기 수행 체크 플래그가 온되었는지를 판단(510)하고 모든 개별 블록들의 쓰기 수행 체크 플래그가 온되었다고 판단되면, 다음 쓰기 커맨드(NvM Write)에 의해 사이클을 처음부터 수행할 수 있도록 플래그(Flag)들을 초기화 한다.
여기서 초기화가 필요한 플래그는 쓰기 커맨드에 대한 플래그와 개별 블록의 쓰기 수행 체크 플래그를 포함할 수 있다. 즉 아키텍처는 쓰기 커맨드(NvM Write)에 대한 플래그를 오프로 설정하고, 개별 블록의 쓰기 수행 체크 플래그를 오프로 설정(511)할 수 있다.
아키텍처는 쓰기 블록 서비스 요청 후 하드웨어적으로 비휘발성 메모리에 쓰기 동작을 수행하고, 쓰기 동작이 완료되면 완료 함수(NvM JobFinished)가 베이직 소프트웨어(BSW)로부터 호출될 수 있다.
아키텍처는 완료 함수(NvM JobFinished)에 의해 호출이 온(512)되면 데이터 쓰기 동작의 성공 여부를 판단(513)한다.
아키텍처는 데이터 쓰기에 실패하면 쓰기 블록 서비스를 베이직 소프트웨어(BSW)에 다시 요청하고 개별 블록의 쓰기 완료 플래그를 오프로 설정(514)할 수 있다.
아키텍처는 데이터 쓰기에 성공하면 개별 블록의 최종 쓰기 작업이 완료하였음을 표시하는 쓰기 완료 플래그(WriteComplete Flag)를 온으로 설정(515)할 수 있다.
이후 아키텍처는 쓰기 동작을 재수행할 수 있다.
아키텍처는 모든 개별 블록의 쓰기 완료 플래그를 확인하고, 모든 개별 블록의 쓰기 완료 플래그가 모드 온(516)이면 전체 쓰기 완료 플래그(All NvM WriteComplete Flag)를 온으로 설정(517)할 수 있다.
이는 차량의 시동 오프(Key Off)시 쓰기 커맨드가 요청되는데, 모든 개별 블록 들의 쓰기 동작이 정상적으로 완료되었음을 확인한 다음 전자제어유닛(ECU) 전원을 오프하기 위함이다.
이와 같이 쓰기 서비스 요청 후의 결과를 피드백 받아 실패시의 보완로직을 추가하고 모든 블록들의 쓰기 서비스의 정상수행 여부를 체크한 이후에 시동을 오프(Off) 하게 함으로써 신뢰성을 향상시킬 수 있다.
비 휘발성 메모리에 데이터 쓰기를 제어함으로써 비휘발성 메모리 관리 모듈에서의 쓰기 블록의 신뢰성 및 보완성을 향상시킬 수 있다.
도 5a 및 도 5b는 실시 예에 따른 메모리 관리를 위한 아키텍처에서의 읽기 동작의 순서도이다.
아키텍처는 리드 커맨드(NvM Read)의 온(On) 여부를 판단(601)하고, 리드 커맨드(NvM Read)가 수신되었다고 판단되면 읽기 사이클을 수행한다.
리드 커맨드(NvM Read)의 온(On) 여부를 판단하는 것은, 리드 커맨드(NvM Read)가 수신되었는지를 판단하는 것을 포함한다.
리드 커맨드(NvM Read)는 차량의 각종 상황을 종합적으로 판단하여 필요할 경우 요청되며 주로 차량의 시동 온( Key On) 시 수신될 수 있다.
다음 아키텍처는 읽기 블록 수행 체크 플래그가 온 상태인지를 판단(602)한다.
아키텍처는 개별 블록들이 이번 사이클에서 읽기 블록 서비스(ReadBlock service)를 베이직 소프트웨어(BSW)에 요청한 적이 있는지 확인하고, 읽기 블록 서비스(ReadBlock service)를 요청한 적이 있다고 판단되면 해당 블록은 이번 사이클(즉 현재 사이클)을 종료한다.
읽기와 쓰기는 비휘발성 메모리 관리 모듈 및 비휘발성 메모리의 수명과 관련이 있기 때문에, 리드 커맨드(NvM Read) 수신 시 읽기 블록 서비스(ReadBlock service)가 1회만 수행되었는지를 판단하는 것이다.
아키텍처는 읽기 블록 서비스(ReadBlock service)를 요청한 적이 없다고 판단되면 개별 블록의 상태 확인을 위하여 베이직 소프트웨어(BSW)에 에러 상태 확인 서비스(GetErrorStatus)를 요청하고, 에러 상태 확인 서비스(GetErrorStatus)의 결과가 펜딩 상태인지를 판단(603)한다.
비휘발성 메모리 관리 모듈의 현재상태를 체크하여 문제가 없을 때에만 비휘발성 메모리 관리 모듈에 서비스를 요청하도록 함으로써 신뢰성을 향상시키고 수명을 연장시킬 수 있다.
그리고 아키텍처는 에러 상태 확인 서비스(GetErrorStatus)를 요청할 때 런타임 환경함수(Rte 함수)의 리턴값을 이용하여 런타임 환경 에러(Rte Error)의 발생 여부를 판단(604)한다
아키텍처는 런타임 환경 에러(Rte Error)가 발생하였다고 판단되면 해당 블록에 대한 읽기 동작을 종료한다.
아키텍처는 에러 상태 확인 서비스(GetErrorStatus)의 결과가 펜딩 상태라고 판단되면 런타임 환경 에러(Rte Error)가 발생하였다고 판단되면 해당 블록에 대한 읽기 동작을 종료한다.
아키텍처는 에러 상태 확인 서비스(GetErrorStatus)의 결과가 펜딩 상태가 아니고, 런타임 환경 에러(Rte Error)가 발생하지 않았다고 판단되면 리드 블록 서비스(ReadBlock service)를 베이직 소프트웨어(BSW)에 요청(605)하고 런타임 환경함수(Rte 함수)의 리턴값을 이용하여 런타임 환경 에러(Rte Error)의 발생 여부를 판단(606)한다.
아키텍처는 런타임 환경 에러(Rte Error)가 발생하였다고 판단되면 해당 블록에 대한 읽기 동작을 종료한다.
아키텍처는 런타임 환경 에러(Rte Error)가 발생하지 않았다고 판단되면 개별 블록에 대한 읽기 블록 수행 체크 플래그를 온으로 설정(607)한다.
아키텍처는 모든 개별 블록들에 대한 읽기 블록 수행 체크 플래그가 온인지를 판단(608)하고, 모든 개별 블록들에 대한 읽기 블록 수행 체크 플래그가 온이라고 판단되면 다음의 읽기 커맨드에 의해 사이클을 수행할 수 있도록 플래그들을 초기화 한다.
여기서 초기화하는 플래그는 읽기 커맨드에 대한 플래그와 개별 블록의 읽기 블록 수행 체크 플래그를 포함할 수 있다.
즉 아키텍처는 읽기 커맨드에 대한 플래그를 오프로 설정하고 개별 블록의 읽기 블록 수행 체크 플래그를 오프로 설정(609)할 수 있다.
아키텍처는 읽기 블록 서비스 요청 후 하드웨어적으로 비휘발성 메모리에 읽기 동작을 수행하고, 읽기 동작이 완료되면 완료 함수(NvM JobFinished)가 베이직 소프트웨어(BSW)로부터 호출될 수 있다.
이때 아키텍처는 완료 함수(NvM JobFinished)에 의해 호출이 온(610)되면 데이터 읽기의 동작이 완료되었다고 판단하고 데이터 읽기의 결과가 성공인지를 판단(611)한다.
아키텍처는 데이터 읽기에 실패하였다고 판단되면 해당 개별 블록의 초기값으로 쓰기 블록 서비스를 베이직 소프트웨어에 요청하고, 쓰기 함수(Rte_Write)를 호출하여 애플리케이션 소프트웨어(ASW)에 초기값을 전송한다.
아키텍처는 데이터 읽기에 성공하였다고 판단되면 읽기 함수(Rte_Write)를 호출하여 읽기(Read)한 결과값을 획득하고 획득한 결과값을 애플리케이션 소프트웨어(ASW, 110)에 전송(613)하며 런타임 환경함수(Rte 함수)의 리턴값을 이용하여 런타임 환경 에러(Rte Error)의 발생 여부를 판단(614)한다.
아키텍처는 런타임 환경에서 데이터 교환 시 에러 발생 여부를 단계적으로 확인함으로써 데이터의 신뢰성을 향상시킬 수 있다.
아키텍처는 런타임 환경 에러(Rte Error)가 발생하였다고 판단되면 쓰기 함수(Rte_Write)를 다시 호출한다.
아키텍처는 런타임 환경 에러(Rte Error)가 발생하지 않았다고 판단되면 개별 블록의 쓰기 완료 플래그(WriteComplete Flag)를 오프(Off)로 초기화(615)한다.
읽기 동작의 완료 시점에 해당 플래그를 초기화 해주는 이유는 2회 이상의 쓰기 블록(WriteBlock) 동작이 수행될 경우 두번 째 쓰기 블록 서비스에 대한 동작 완료 결과를 구분할 수 없기 때문이다.
다음 아키텍처는 모든 개별 블록의 읽기 완료 플래그(ReadComplete Flag)를 확인하고 모든 개별 블록의 읽기 완료 플래그(ReadComplete Flag)가 모두 온인지를 판단(616))하며 모든 개별 블록의 읽기 완료 플래그(ReadComplete Flag)가 모두 온이라고 판단되면 모든 읽기 완료 플래그(All NvM ReadComplete Flag)를 온(On)으로 설정(Set, 61)한다.
비휘발성 메모리 모듈에 서비스 요청 후의 결과를 피드백 받아 실패시의 보완로직을 추가하고 모든 블록들의 비휘발성 메모리 모듈에서의 서비스 정상수행 여부를 체크할 수 있어 신뢰성이 확보된 데이터를 애플리케이션 소프트웨어(ASW)에 전달할 수 있다.
아키텍처는 읽기 실패 시에 읽기 동작을 재수행하는 것도 가능하다.
또한 런타임 환경에서 에러가 발생하였다고 판단되면 Rte함수를 재호출하여 에러의 발생 여부를 다시 판단하는 것도 가능하다.
아울러 아키텍처는 에러 발생 여부의 판단의 횟수를 미리 설정된 횟수만큼 실행하는 것도 가능하다.
한편, 개시된 실시 예들은 컴퓨터에 의해 실행 가능한 명령어를 저장하는 기록매체의 형태로 구현될 수 있다. 명령어는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 프로그램 모듈을 생성하여 개시된 실시 예들의 동작을 수행할 수 있다. 기록매체는 컴퓨터로 읽을 수 있는 기록매체로 구현될 수 있다.
컴퓨터가 읽을 수 있는 기록매체로는 컴퓨터에 의하여 해독될 수 있는 명령어가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래쉬 메모리, 광 데이터 저장장치 등이 있을 수 있다.
이상에서와 같이 첨부된 도면을 참조하여 개시된 실시 예들을 설명하였다.본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고도, 개시된 실시 예들과 다른 형태로 본 발명이 실시될 수 있음을 이해할 것이다. 개시된 실시 예들은 예시적인 것이며, 한정적으로 해석되어서는 안 된다.
100: 애플리케이션 레이어
200: 런타임 환경
300: 베이직 소프트웨어
200: 런타임 환경
300: 베이직 소프트웨어
Claims (17)
- 적어도 하나의 기능에 대한 알고리즘을 수행하고, 상기 알고리즘 내의 데이터를 송수신하는 애플리케이션 소프트웨어 컴포넌트(ASW);
비휘발성 메모리를 관리하기 위한 비휘발성 메모리 관리 모듈(VnM)을 포함하는 베이직 소프트웨어(BSW);
상기 비휘발성 메모리 관리 모듈을 관리하는 상태 관리 소프트웨어 컴포넌트; 및
상기 애플리케이션 소프트웨어 컴포넌트(ASW)와 상기 상태 관리 소프트웨어 컴포넌트 사이에서 통신이 수행되도록 하고, 상기 베이직 소프트웨어(BSW)와 상기 상태 관리 소프트웨어 컴포넌트 사이에서 통신이 수행되도록 하는 런타임 환경(RTE)을 포함하고,
상기 상태 관리 소프트웨어 컴포넌트는, 상기 비휘발성 메모리에 데이터를 쓰거나 상기 비휘발성 메모리에서 데이터를 읽을 때, 읽은 횟수가 미리 설정된 횟수 이상이거나, 쓴 횟수가 미리 설정된 횟수 이상이면 읽기 동작 또는 쓰기 동작을 종료하도록 하는, 메모리 관리를 위한 아키텍처. - 제 1 항에 있어서,
상기 애플리케이션 소프트웨어 컴포넌트(ASW)와 상기 상태 관리 소프트웨어 컴포넌트는, 오토사 기반의 플랫폼의 애플리케이션 레이어에 마련되는, 메모리 관리를 위한 아키텍처. - 제 1 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
차량의 시동 온 시에, 상기 비휘발성 메모리에 저장된 데이터를 읽는 동작을 제어하고,
상기 차량의 시동 오프 시에, 상기 비휘발성 메모리에 데이터를 쓰는 동작을 제어하는, 메모리 관리를 위한 아키텍처. - 제 1 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
쓰기 온 커맨드가 수신되면 미리 지정된 읽기 함수(Rte_Read)를 호출하여 상기 애플리케이션 소프트웨어(ASW)로부터 상기 비휘발성 메모리에 쓰기(Write)할 데이터를 읽고, 읽기한 데이터를 상기 비휘발성 메모리에 쓰도록 하는, 메모리 관리를 위한 아키텍처. - 제 4 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
상기 런타임 환경을 통해 상기 데이터를 읽을 때 런타임 환경 에러의 발생 여부를 판단하고, 상기 런타임 환경 에러가 발생하였다고 판단되면 상기 쓰기 동작을 종료하는, 메모리 관리를 위한 아키텍처. - 제 4 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
상기 쓰기 동작을 제어할 때, 상기 베이직 소프트웨어(BSW)의 비휘발성 메모리 관리 모듈(311)에 개별 블록에 대한 에러 상태 확인 서비스(Get Error Status)를 요청하는, 메모리 관리를 위한 아키텍처. - 제 6 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
상기 에러 상태 확인 서비스(Get Error Status)를 요청할 때, 상기 런타임 환경 에러의 발생 여부를 판단하고, 상기 런타임 환경 에러가 발생하였다고 판단되면 상기 쓰기 동작을 종료하는, 메모리 관리를 위한 아키텍처. - 제 6 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
상기 쓰기 동작을 제어할 때, 상기 에러 상태 확인 서비스(Get Error Status)의 결과가 펜딩 상태인지를 판단하고, 펜딩 상태가 아니라고 판단되면 상기 읽기(Read)한 데이터를 인자로 쓰기 블록 서비스(Write Block Service)를 상기 비휘발성 메모리 관리 모듈에 요청하는, 메모리 관리를 위한 아키텍처. - 제 8 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
상기 쓰기 블록 서비스(Write Block Service)를 요청할 때, 상기 런타임 환경 에러의 발생 여부를 판단하고, 상기 런타임 환경 에러가 발생하였다고 판단되면 상기 쓰기 동작을 종료하고,
상기 펜딩 상태라고 판단되면 상기 쓰기 동작을 종료하는, 메모리 관리를 위한 아키텍처. - 제 4 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
상기 읽기한 데이터에 대한 쓰기가 완료된 블록에 대해 플래그(flag)를 온(On)으로 설정하고, 상기 비휘발성 메모리 관리 모듈의 모든 블록에 대한 데이터 쓰기가 완료되면, 플래그를 초기화하는, 메모리 관리를 위한 아키텍처. - 제 1 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
읽기 온 커맨드가 수신되면, 상기 비휘발성 메모리 관리 모듈의 개별 블록의 상태를 확인하기 위해 상기 비휘발성 메모리 관리 모듈에 에러 상태 확인 서비스(Get Error Status)를 요청하는, 메모리 관리를 위한 아키텍처. - 제 11 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
상기 에러 상태 확인 서비스(Get Error Status)를 요청할 때, 상기 런타임 환경 에러의 발생 여부를 판단하고, 상기 런타임 환경 에러가 발생하였다고 판단되면 상기 읽기 동작을 종료하는, 메모리 관리를 위한 아키텍처. - 제 12 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
상기 읽기 동작을 제어할 때, 상기 에러 상태 확인 서비스(Get Error Status)의 결과가 펜딩 상태인지를 판단하고, 상기 펜딩 상태가 아니라고 판단되면 읽기 블록 서비스(Write Block Service)를 상기 비휘발성 메모리 관리 모듈에 요청하고, 상기 펜딩 상태라고 판단되면 상기 읽기 동작을 종료하는, 메모리 관리를 위한 아키텍처. - 제 12 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
읽기 블록 서비스(Write Block Service)를 요청할 때, 상기 런타임 환경 에러의 발생 여부를 판단하고, 상기 런타임 환경 에러가 발생하였다고 판단되면 상기 읽기 동작을 종료하는, 메모리 관리를 위한 아키텍처. - 제 11 항에 있어서, 상기 상태 관리 소프트웨어 컴포넌트는,
데이터 읽기가 완료된 블록에 대해 플래그(flag)를 온(On)으로 설정(set)하고, 상기 비휘발성 메모리 관리 모듈의 모든 블록에 대한 데이터 읽기가 완료되면, 플래그를 초기화하는, 메모리 관리를 위한 아키텍처. - 제 11 항에 있어서,
상기 읽기 온 커맨드가 수신되면 미리 지정된 읽기 함수(Rte_Read)를 호출하여 상기 애플리케이션 소프트웨어(ASW)에 읽은 데이터를 전송하는, 메모리 관리를 위한 아키텍처. - 제 16 항에 있어서, 상기 애플리케이션 소프트웨어 컴포넌트는,
미리 정해진 쓰기함수(Rte_Write)를 통해 데이터를 수신하고 수신한 데이터에 대한 쓰기를 수행하는, 메모리 관리를 위한 아키텍처.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210158024A KR20230071621A (ko) | 2021-11-16 | 2021-11-16 | 메모리 관리를 위한 아키텍처 |
US17/806,533 US20230153029A1 (en) | 2021-11-16 | 2022-06-13 | Architecture for Memory Management |
DE102022206097.0A DE102022206097A1 (de) | 2021-11-16 | 2022-06-17 | Speicherverwaltungsarchitektur |
CN202210801104.7A CN116136740A (zh) | 2021-11-16 | 2022-07-08 | 用于存储器管理的架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210158024A KR20230071621A (ko) | 2021-11-16 | 2021-11-16 | 메모리 관리를 위한 아키텍처 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230071621A true KR20230071621A (ko) | 2023-05-23 |
Family
ID=86144235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210158024A KR20230071621A (ko) | 2021-11-16 | 2021-11-16 | 메모리 관리를 위한 아키텍처 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230153029A1 (ko) |
KR (1) | KR20230071621A (ko) |
CN (1) | CN116136740A (ko) |
DE (1) | DE102022206097A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102586821B1 (ko) * | 2023-07-04 | 2023-10-11 | 주식회사 드림에이스 | 가상 ecu 환경에서의 오토사 플랫폼 입출력에 따른 동작 검증 시스템 및 방법 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8195909B2 (en) * | 2009-10-05 | 2012-06-05 | Seagate Technology Llc | Data management in a data storage system |
US9146855B2 (en) * | 2012-01-09 | 2015-09-29 | Dell Products Lp | Systems and methods for tracking and managing non-volatile memory wear |
JP6798413B2 (ja) * | 2017-05-09 | 2020-12-09 | 株式会社オートネットワーク技術研究所 | 車載中継装置、制御プログラム及びメモリ共有方法 |
-
2021
- 2021-11-16 KR KR1020210158024A patent/KR20230071621A/ko unknown
-
2022
- 2022-06-13 US US17/806,533 patent/US20230153029A1/en active Pending
- 2022-06-17 DE DE102022206097.0A patent/DE102022206097A1/de active Pending
- 2022-07-08 CN CN202210801104.7A patent/CN116136740A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102586821B1 (ko) * | 2023-07-04 | 2023-10-11 | 주식회사 드림에이스 | 가상 ecu 환경에서의 오토사 플랫폼 입출력에 따른 동작 검증 시스템 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
CN116136740A (zh) | 2023-05-19 |
DE102022206097A1 (de) | 2023-05-17 |
US20230153029A1 (en) | 2023-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8452465B1 (en) | Systems and methods for ECU task reconfiguration | |
US9880927B2 (en) | Functionally expandable vehicle control device and method for supplementing the functionality of a vehicle control device | |
US8539472B2 (en) | Method and system of updating shared memory | |
US20140136826A1 (en) | Method and apparatus for updating boot loader | |
US12026549B2 (en) | Control unit for a vehicle and an operating system scheduling method thereof | |
CN108415718B (zh) | 一种应用于星载软件在线更新的BootLoader设计方法 | |
US20230153029A1 (en) | Architecture for Memory Management | |
JP7232062B2 (ja) | 電子制御装置及びプログラム更新方法 | |
CN117632570B (zh) | 基于多核异构soc的多操作系统诊断方法、装置和系统 | |
JP2019109745A (ja) | 自動車用電子制御装置 | |
US8601215B2 (en) | Processor, server system, and method for adding a processor | |
CN114895947A (zh) | 车载控制器的软件升级方法、装置、设备和存储介质 | |
CN114637619A (zh) | 车辆控制器及其错误管理方法 | |
CN116775085B (zh) | 多核异构片上系统更新方法、装置、芯片及交通设备 | |
JP3296043B2 (ja) | 車両用電子制御装置 | |
CN114633705A (zh) | 带有同步驱动程序的车辆控制装置 | |
KR101382109B1 (ko) | 미들웨어 장치 및 방법 | |
US11422878B2 (en) | Control unit and method for operating a control unit | |
CN117908937A (zh) | 固件更新方法、单元、设备及存储介质 | |
US20240036941A1 (en) | Vehicle-mounted computer, computer execution method, and computer program | |
US12050903B2 (en) | OTA master, system, method, non-transitory storage medium, and vehicle | |
CN118092989B (zh) | 一种存储器的固件升级方法、系统、设备及介质 | |
US20220391193A1 (en) | Ota master, system, method, non-transitory storage medium, and vehicle | |
WO2023123037A1 (zh) | 电子设备及其启动方法、装置、存储介质、车辆 | |
US20230281117A1 (en) | Data processing device |