KR102434821B1 - 프로그램을 업데이트하기 위한 방법 및 장치 - Google Patents

프로그램을 업데이트하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR102434821B1
KR102434821B1 KR1020197031220A KR20197031220A KR102434821B1 KR 102434821 B1 KR102434821 B1 KR 102434821B1 KR 1020197031220 A KR1020197031220 A KR 1020197031220A KR 20197031220 A KR20197031220 A KR 20197031220A KR 102434821 B1 KR102434821 B1 KR 102434821B1
Authority
KR
South Korea
Prior art keywords
blocks
program
version
block
pointing
Prior art date
Application number
KR1020197031220A
Other languages
English (en)
Other versions
KR20190131535A (ko
Inventor
한스-발터 슈미트
악셀 아우에
마티아스 슈라이버
Original Assignee
로베르트 보쉬 게엠베하
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 로베르트 보쉬 게엠베하 filed Critical 로베르트 보쉬 게엠베하
Publication of KR20190131535A publication Critical patent/KR20190131535A/ko
Application granted granted Critical
Publication of KR102434821B1 publication Critical patent/KR102434821B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C5/00Registering or indicating the working of vehicles
    • G07C5/008Registering or indicating the working of vehicles communicating information to a remotely located station

Abstract

본 발명은, 프로그램의 제1 이미지가 실행되는 한편(단계 "11"), 프로그램의 어드레스 공간(18)이 블록들 상에 이미지화되고, 이 블록들이 1단의 모드에서 작동되며; 제1 이미지의 일 부분이, 상기 블록들 아래에 있는 특정 블록 상에 이미지화되는 어드레스 공간(18) 내부의 하나의 어드레스 영역으로부터 메모리의 보호 블록(19) 내로 복사되며(단계 "12"); 상기 블록은 다단의 모드로 변경되고, 상기 제1 이미지의 부분에 추가로 프로그램의 제2 이미지(17)의 일 부분에 의해서 프로그래밍 되는 한편(단계 "13"), 상기 어드레스 영역은 일시적으로 보호 블록(19) 상에 이미지화되며; 상기 어드레스 영역은 재차 상기 블록으로 전환되는 한편(단계 "14"), 상기 블록은 다단의 모드에 계속 남아 있으며; 제2 이미지(17)가 불완전한(15, N) 동안에는, 복사 과정(단계 "12"), 프로그래밍 과정(단계 "13"), 및 전환 과정(단계 "14")이 이미지의 또 다른 부분들에 의해서 반복되며; 제2 이미지(17)가 완전(15, Y)하게 되자마자, 제1 이미지 대신 상기 제2 이미지가 실행되는(단계 "16") 것을 특징으로 하는, MLC 기술을 이용하여 플래시 메모리 내에서 프로그램을 업데이트하기 위한 방법(10)에 관한 것이다.

Description

프로그램을 업데이트하기 위한 방법 및 장치
본 발명은, 프로그램을 업데이트하기 위한 방법에 관한 것이다. 본 발명은, 또한 상응하는 장치, 상응하는 컴퓨터 프로그램 및 상응하는 기억 매체에 관한 것이다.
내용이 전기적으로 소거될 수 있는 비휘발성 전자 메모리 모듈은, 전기적으로 소거 가능하고 프로그램 가능한 판독 전용 메모리(electrically erasable programmable read-only memory, EEPROM)로서 당업자에게 공지되어 있다. 이하의 진술의 틀 안에서, "EEPROM"이라는 용어는 넓은 단어 의미로 사용되고, 종래의 EEPROM 외에 마찬가지로 최근의 (블록 방식으로 소거 가능한) 소위 플래시 메모리도 포함한다. 적은 소비 전력으로 비휘발성 기억을 가능하게 하기 위해, 종래 기술에 따른 차량용 전자 장치에서는, 개별 메모리 셀에 저장된 정보가 플로팅 게이트 상에 또는 금속 절연체 반도체 전계 효과 트랜지스터(metal insulator semiconductor field-effect transistor, MISFET)의 전하 트래핑 메모리 소자 내에 전하의 형태로 기억되는 상기와 같은 플래시-EEPROM-메모리가 주로 사용된다. 원칙적으로, 이 경우에 메모리 셀은 소위 셀 어레이(cell array) 내에 매트릭스로서 배열되어 있으며, 이 경우 하나의 좌표를 통해서는 어드레스 라인이 메모리 셀의 열 또는 행을 선택하기 위해서 이용되고, 다른 좌표 내에서는 데이터 라인이 메모리 셀로 가이드 된다.
기억 밀도를 증가시키기 위해, 이 경우에는 셀 당 하나를 초과하는 비트가 기억되는 다단의 셀(multi-level cell, MLC)이 때때로 사용된다. 이와 같은 상황을 가능하게 하기 위하여, 메모리 셀 내에 저장된 전하량이 더 정밀하게 계량되고, 판독 출력의 경우에는 또한 2개를 초과하는 가능한 상태를 구별하기 위하여 그리고 하나를 초과하는 비트를 저장할 수 있기 위하여 더욱 정확하게 평가된다. 이와 같은 조치는, 1단의 셀(single-level cell, SLC)에 비해 판독 속도 및 기록 속도가 느려진다는 단점을 내포한다. MLC는 또한 임의의 충전 손실에 훨씬 민감하게 반응한다.
DE102014223035A1호에서는, 휘발성 메모리의 메모리 인터페이스, 특히 MLC-NAND-메모리의 메모리 인터페이스와, 마이크로 컨트롤러의 인터페이스 사이에서 컴퓨터 시스템 내부의 데이터를 전송하기 위한 방법이 소개되며, 이 방법은 마이크로 컨트롤러의 부팅 과정이 시작될 때에 MLC-NAND-메모리의 메모리 인터페이스로부터 데이터를 판독하는 단계, 및 판독된 데이터를 휘발성 메모리의 메모리 인터페이스로 제공하는 단계를 포함한다.
본 발명은, 독립 청구항들에 따른 프로그램을 업데이트하기 위한 방법, 상응하는 장치, 상응하는 컴퓨터 프로그램, 및 상응하는 기억 매체를 제공한다.
이 경우, 본 발명에 따른 접근 방식은, [차량 전자 시스템의 작업장 기반 소프트웨어(SW) 업데이트의 고비용으로부터 기인하여] 최근의 시스템에서는 점차 공중 인터페이스(over the air, OTA)를 통해, 지시 및 데이터를 포함하는 프로그램 이미지 또는 시스템 이미지(image)가 변경된다는 지식에 기초한다. 이와 같은 업데이트를 실행하기 위해, 다양한 가능성들이 제공된다; 이들은 각각 상이한 장점 및 단점을 갖고 있다.
종래의 방식은, 2개의 시스템 이미지를 지속하는 것을 토대로 한다: 일 시스템 이미지로부터는, 엔진 제어의 경우에 예컨대 엔진 작동이 그대로 유지되는 한편, 새로운 시스템 이미지는 관련 제어 장치(electronic control unit, ECU) 상에서 실행된다. 엔진의 그 다음 시작 때에 제어 장치는 상기 새로운 시스템 이미지를 토대로 해서 작동될 수 있다.
상기와 같은 종래의 방식을 지원하기 위해서는, OTA-불가능한 제어 장치에서보다 2배 많은 기억 장소가 필요한데, 그 이유는 2개의 시스템 이미지들이 동시에 비휘발성 메모리(non-volatile memory, NVM) 내에 배치되어야만 하기 때문이다. 이와 같은 조치는, [제어 장치의 OTA-능력이 차량 제조자 또는 주문 생산자(original equipment manufacturer, OEM)에 의해서 최종적으로 사용되는지의 여부와 무관하게] 상응하는 제어 장치를 제조할 때에 부품 비용이 높다는 단점을 내포한다.
그렇기 때문에, 업데이트의 목적으로 2개의 시스템 이미지들을 기억시키는 시간 간격 동안 메모리 셀을 MLC로서, 다시 말하자면 적어도 2단으로 이용하는 것이 제안된다. 이 방법의 장점은, 종래의 방식에 비해 감소된 메모리 셀 요구에 있다. 오히려, MLC 기술의 이용에 의해서는, 추가 기억 용량의 단 하나의 부분만 필요하다.
종속 청구항들에 열거된 조치들에 의해서, 독립 청구항에 명시된 기본 아이디어의 바람직한 개량 및 개선이 가능하다. 이로써, 마이크로 컨트롤러(μC)를 토대로 하는 차량 제어 장치에서는 OTA-업데이트의 틀 안에서 이 방법을 적용하는 것이 제안될 수 있다. 이와 같은 방식에 의해서는, NVM에서 OTA를 위해 2개의 시스템 이미지들을 지속하기 위하여, (상응하는 비용상 단점을 갖는) 종래의 방식에서, 복수의 플래시 메모리를 갖는 μC가 사용되는지의 여부 또는 감소된 시스템 성능(performance)이 일시적으로 감수되는지의 여부가, 적용 중에 결정될 수 있다.
본 발명의 실시예들이 각각의 도면에 도시되어 있으며, 이하의 명세서에서 더욱 상세하게 설명된다. 도면부에서,
도 1은 제1 실시예에 따른 방법의 흐름도를 도시한다.
도 2는 이 방법의 제1 단계를 도시한다.
도 3은 이 방법의 제2 단계를 도시한다.
도 4는 이 방법의 제3 단계를 도시한다.
도 5는 이 방법의 제4 단계를 도시한다.
도 6은 이 방법의 결과를 도시한다.
도 7은 제2 실시예에 따른 제어 장치를 개략적으로 도시한다.
도 1은, 제안된 방법(10)의 기본적인 기능적 양태들을 도시하며, 이제 이들 양태들은 도 2 내지 도 6 중 각각 하나의 도면과 관련하여 설명될 것이다. 도 2 내지 도 6에서, SLC-모드에서 작동되는 셀은 실선으로 도시되어 있는 반면, MLC-모드에서 작동되는 셀은 파선으로 도시되어 있다.
도 2는, 먼저 정상적인 작동 상태(11)를 보여주는데, 이 작동 상태에서는 프로그램의 제1 이미지가 관련 어드레스 공간(18) 내에서 실시되는 한편, 전체 메모리 블록의 셀은 SLC로서, 다시 말해 1단으로 작동된다. 여기에서, 개별 블록은 각각 1 Mbyte를 포함할 수 있으며, 이 경우 기존의 업데이트를 위해서는, 프로그램의 어드레스 공간(18)에 의해 반드시 둘러싸일 필요가 없는, 처음에 아직 이용되지 않은 동일한 크기의 보호 블록(19)이 준비된다.
도 3은, 새로운 이미지를 요청한 후의 구성을 도시한다. 여기에서는, 일 블록의 내용이 보호 블록(19) 내로 복사되었다(단계 "12"). 원래 최초 블록에 할당 된 어드레스 범위는 이제 하드웨어에 따라 보호 블록(19) 상에 이미지화되고, 이로써 보호 블록은 진행 중인 프로그램의 시야로부터 프로그램의 어드레스 공간(18) 내로 흡사하게 "페이드 인(fade in)" 된다.
이제, 도 4에 도시된 바와 같이, 최초 블록은 MLC-모드로 전환될 수 있고, 제1 이미지에 추가로, 블록 크기에 상응하는 제2 이미지(17)의 일 부분이 프로그래밍될 수 있다(단계 "13"). 프로그램의 어드레스 공간(18) 내에서 프로그래밍 될 블록이 계속해서 흡사하게 보호 블록(19)과 "교환"되기 때문에, 제1 이미지의 기능성은 상기 프로그래밍 과정에 의해서 악영향을 받지 않는다.
그 다음에, MLC-블록은 재차 상기와 같은 의도로 최초 어드레스에서 페이드 인 될 수 있는 한편(단계 "14"), 상기 블록이 다단의 모드에 계속 남아 있음으로써, 결과적으로 제1 이미지는 도 5에서와 마찬가지로 계속해서 실시될 수 있다. 상응하는 방식으로, 모든 블록이 MLC-모드에 있음으로써 2개의 이미지들이 모두 완전히 NVM에 존재하게 될 때까지(결정 단계 "15" - 도 1), 또 다른 블록에 의해서 과정이 진행되며, 이와 같은 상황은 도 6에 따른 상태(16)에 상응한다.
상기 최종 상태(16)에서는, 프로그램의 제1 또는 제2 이미지가 선택적으로 실시될 수 있다. 제2 이미지(17)의 기능성이 (예컨대 상기와 같은 정도로 업데이트된 차량의 상이한 제어 장치들과 연계하여) 보장된 후에는, 연속 작동 중에 프로그램의 신뢰성을 최대화하기 위하여, 블록들이 상기 순서와 반대인 절차에 따라 재차 1단의 모드로 재-전환될 수 있다.
본 방법(10)은, 도 7의 개략도가 명확하게 보여주는 바와 같이, 예를 들어 제어 장치(20) 내에서 예를 들어 소프트웨어 또는 하드웨어로 구현될 수 있거나 소프트웨어와 하드웨어로 구성된 혼합 형태로 구현될 수 있다.

Claims (17)

  1. 메모리 내의 프로그램에 대한 방법으로서, 상기 메모리는 상기 프로그램이 저장된 복수의 블록 및 개별 보호 블록을 포함하고, 상기 방법은:
    (i) 상기 프로그램이 저장된 상기 복수의 블록을 가리키는 어드레스 공간에 따라 상기 프로그램에 액세스함으로써, (ii) 상기 복수의 블록이 싱글 레벨 모드(single level mode)로 작동되는 동안, 상기 프로그램의 제1 버전을 실행하는 단계; 및
    상기 프로그램이 부분적으로는 상기 복수의 블록에서 그리고 부분적으로는 상기 개별 보호 블록에서 실행 가능하도록 남아 있는 동안, 상기 프로그램의 제1 버전을 상기 프로그램의 제2 버전으로 업데이트하는 단계
    를 포함하고, 상기 업데이트하는 단계는:
    (1) 일련의 단계의 복수의 반복을 실행하는 단계 - 상기 반복은 상기 제2 버전의 전체가 상기 복수의 블록상에 전송될 때까지 실행됨 -; 및
    (2) 상기 어드레스 공간 중 어느 것도 상기 개별 보호 블록을 가리키지 않는 시점에서 모든 상기 반복의 실행에 이어서, 상기 복수의 블록을 가리키는 상기 어드레스 공간에 따라 상기 프로그램에 액세스함으로써 상기 프로그램의 상기 제1 버전을 대신하여 상기 프로그램의 상기 제2 버전의 전체를 실행하는 단계에 의해 수행되고,
    상기 반복의 각각은:
    상기 프로그램의 상기 제1 버전의 각 부분을 상기 복수의 블록 중 각각의 블록으로부터 상기 개별 보호 블록으로 복사하는 단계;
    상기 프로그램의 상기 제1 버전의 각 부분에 대응하는 상기 어드레스 공간의 각 부분을, (a) 상기 복수의 블록 중 각각의 블록을 가리키는 것으로부터 (b) 상기 개별 보호 블록을 대신 가리키도록 전환하는 단계;
    상기 복수의 블록 중 각각의 블록을 멀티-레벨 모드(multi-level mode)로 설정하는 단계;
    상기 복수의 블록 중 각각의 블록이 멀티-레벨 모드로 설정되어 있고 상기 어드레스 공간의 각 부분이 상기 개별 보호 블록을 가리키는 동안, 상기 복수의 블록 중 각각의 블록에 상기 프로그램의 상기 제2 버전의 각 부분을 저장함으로써, 상기 복수의 블록 중 각각의 블록이 상기 프로그램의 상기 제1 버전의 각 부분 및 상기 프로그램의 상기 제2 버전의 각 부분을 동시에 저장하도록 하는 단계; 및
    상기 블록 중 하나가 상기 멀티-레벨 모드로 남아 있는 동안, 상기 어드레스 공간의 각 부분을, (a) 상기 개별 보호 블록을 가리키는 것으로부터 (b) 상기 복수의 블록 중 각각의 블록을 대신 가리키도록 전환함으로써, 수행되어야 할 어느 다른 반복이 여전히 있다면 상기 어느 다른 반복을 위해 사용될 수 있도록 상기 개별 보호 블록을 프리(free)하게 하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 복수의 블록이 상기 멀티-레벨 모드에 있는 동안 상기 메모리의 정보의 평가를 가능하게 하기 위하여 상기 메모리가 작동되는 액세스 시간을 증가시키는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서,
    상기 방법은 프로세서에 의해 수행되고,
    상기 프로세서는 상기 복수의 블록이 상기 싱글 레벨 모드에 있을 때 상기 복수의 블록에 액세스하기 위해 정상적인 싱글 레벨 셀(SLC) 모드로 작동할 수 있고,
    상기 프로세서는 상기 복수의 블록이 멀티-레벨 모드에 있을 때 상기 복수의 블록에 액세스하기 위해 멀티-레벨 셀(MLC) 모드로 작동할 수 있고, 이 때 상기 프로세서가 상기 SLC 모드로 작동할 때보다 액세스 타임은 더 길고, 따라서 성능은 더 낮은, 방법.
  4. 제1항에 있어서, 상기 프로그램은, 실행될 때, 차량 내의 필드 디바이스를 제어하는, 방법.
  5. 제4항에 있어서, 상기 프로그램의 상기 제2 버전은 상기 업데이트에 앞서 공중 인터페이스를 통해 상기 차량으로 전송되는, 방법.
  6. 제1항에 있어서, 상기 프로그램은, 실행될 때, 차량 내의 연소 엔진을 제어하는, 방법.
  7. 제1항에 있어서, 상기 메모리는 비휘발성인, 방법.
  8. 제7항에 있어서, 상기 메모리는 플래시 EEPROM인, 방법.
  9. 제8항에 있어서, 상기 메모리는 NAND 플래시인, 방법.
  10. 제8항에 있어서, 상기 메모리는 NOR 플래시인, 방법.
  11. 제1항에 있어서, 다른 복수의 반복을 실행함으로써 모든 상기 복수의 블록을 상기 싱글 레벨 모드로 다시 전환하는 단계로서, 각각의 반복은 상기 복수의 블록 중 각각의 블록을 상기 싱글 레벨 모드로 전환하기 위해 상기 개별 보호 블록을 사용하는, 방법.
  12. 제1항에 있어서, 상기 개별 보호 블록은 상기 복수의 반복의 실행 동안 상기 싱글 레벨 모드로 설정되는, 방법.
  13. 제1항에 있어서, 상기 프로그램의 상기 제1 버전을 대신하는 상기 프로그램의 상기 제2 버전의 실행은, 상기 복수의 반복의 실행을 위해 모든 상기 복수의 블록이 여전히 상기 멀티-레벨 모드에 있는 동안 수행되는, 방법.
  14. 제13항에 있어서,
    상기 프로그램의 상기 제2 버전의 실행 동안 상기 프로그램의 상기 제2 버전의 기능성을 모니터링하는 단계; 및
    상기 프로그램의 상기 제2 버전의 상기 기능성이 보장된다고 결정된 상기 모니터링의 결과에 응답하여 상기 프로그램의 상기 제2 버전만 저장하기 위하여 상기 복수의 블록들을 상기 싱글 레벨 모드로 다시 재설정하는 단계
    를 더 포함하는, 방법.
  15. 프로세서에 의해 실행 가능하고 프로세서에 의해 실행될 때 프로세서로 하여금 메모리 내의 프로그램에 대한 방법을 수행하게 하는 명령어가 저장된 비일시적 컴퓨터 판독 가능한 기록 매체로서, 상기 메모리는 상기 프로그램이 저장된 복수의 블록 및 개별 보호 블록을 포함하고, 상기 방법은:
    (i) 상기 프로그램이 저장된 상기 복수의 블록을 가리키는 어드레스 공간에 따라 상기 프로그램에 액세스함으로써, (ii) 상기 복수의 블록이 싱글 레벨 모드로 작동되는 동안, 상기 프로그램의 제1 버전을 실행하는 단계; 및
    상기 프로그램이 부분적으로는 상기 복수의 블록에서 그리고 부분적으로는 상기 개별 보호 블록에서 실행 가능하도록 남아 있는 동안, 상기 프로그램의 제1 버전을 상기 프로그램의 제2 버전으로 업데이트하는 단계
    를 포함하고, 상기 업데이트하는 단계는:
    (1) 일련의 단계의 복수의 반복을 실행하는 단계 - 상기 반복은 상기 제2 버전의 전체가 상기 복수의 블록상에 전송될 때까지 실행됨 -; 및
    (2) 상기 어드레스 공간 중 어느 것도 상기 개별 보호 블록을 가리키지 않는 시점에서 모든 상기 반복의 실행에 이어서, 상기 복수의 블록을 가리키는 상기 어드레스 공간에 따라 상기 프로그램에 액세스함으로써 상기 프로그램의 상기 제1 버전을 대신하여 상기 프로그램의 상기 제2 버전의 전체를 실행하는 단계에 의해 수행되고,
    상기 반복의 각각은:
    상기 프로그램의 상기 제1 버전의 각 부분을 상기 복수의 블록 중 각각의 블록으로부터 상기 개별 보호 블록으로 복사하는 단계;
    상기 프로그램의 상기 제1 버전의 각 부분에 대응하는 상기 어드레스 공간의 각 부분을, (a) 상기 복수의 블록 중 각각의 블록을 가리키는 것으로부터 (b) 상기 개별 보호 블록을 대신 가리키도록 전환하는 단계;
    상기 복수의 블록 중 각각의 블록을 멀티-레벨 모드로 설정하는 단계;
    상기 복수의 블록 중 각각의 블록이 멀티-레벨 모드로 설정되어 있고 상기 어드레스 공간의 각 부분이 상기 개별 보호 블록을 가리키는 동안, 상기 복수의 블록 중 각각의 블록에 상기 프로그램의 상기 제2 버전의 각 부분을 저장함으로써, 상기 복수의 블록 중 각각의 블록이 상기 프로그램의 상기 제1 버전의 각 부분 및 상기 프로그램의 상기 제2 버전의 각 부분을 동시에 저장하도록 하는 단계; 및
    상기 블록 중 하나가 상기 멀티-레벨 모드로 남아 있는 동안, 상기 어드레스 공간의 각 부분을, (a) 상기 개별 보호 블록을 가리키는 것으로부터 (b) 상기 복수의 블록 중 각각의 블록을 대신 가리키도록 전환함으로써, 수행되어야 할 어느 다른 반복이 여전히 있다면 상기 어느 다른 반복을 위해 사용될 수 있도록 상기 개별 보호 블록을 프리(free)하게 하는 단계
    를 포함하는, 비일시적 컴퓨터 판독 가능한 기록 매체.
  16. 프로세서를 포함하는 장치로서, 상기 프로세서는 메모리 내의 프로그램에 대한 방법을 수행하도록 구성되고, 상기 메모리는 상기 프로그램이 저장된 복수의 블록 및 개별 보호 블록을 포함하고, 상기 방법은:
    (i) 상기 프로그램이 저장된 상기 복수의 블록을 가리키는 어드레스 공간에 따라 상기 프로그램에 액세스함으로써, (ii) 상기 복수의 블록이 싱글 레벨 모드로 작동되는 동안, 상기 프로그램의 제1 버전을 실행하는 단계; 및
    상기 프로그램이 부분적으로는 상기 복수의 블록에서 그리고 부분적으로는 상기 개별 보호 블록에서 실행 가능하도록 남아 있는 동안, 상기 프로그램의 제1 버전을 상기 프로그램의 제2 버전으로 업데이트하는 단계
    를 포함하고, 상기 업데이트하는 단계는:
    (1) 일련의 단계의 복수의 반복을 실행하는 단계 - 상기 반복은 상기 제2 버전의 전체가 상기 복수의 블록상에 전송될 때까지 실행됨 -; 및
    (2) 상기 어드레스 공간 중 어느 것도 상기 개별 보호 블록을 가리키지 않는 시점에서 모든 상기 반복의 실행에 이어서, 상기 복수의 블록을 가리키는 상기 어드레스 공간에 따라 상기 프로그램에 액세스함으로써 상기 프로그램의 상기 제1 버전을 대신하여 상기 프로그램의 상기 제2 버전의 전체를 실행하는 단계에 의해 수행되고,
    상기 반복의 각각은:
    상기 프로그램의 상기 제1 버전의 각 부분을 상기 복수의 블록 중 각각의 블록으로부터 상기 개별 보호 블록으로 복사하는 단계;
    상기 프로그램의 상기 제1 버전의 각 부분에 대응하는 상기 어드레스 공간의 각 부분을, (a) 상기 복수의 블록 중 각각의 블록을 가리키는 것으로부터 (b) 상기 개별 보호 블록을 대신 가리키도록 전환하는 단계;
    상기 복수의 블록 중 각각의 블록을 멀티-레벨 모드로 설정하는 단계;
    상기 복수의 블록 중 각각의 블록이 멀티-레벨 모드로 설정되어 있고 상기 어드레스 공간의 각 부분이 상기 개별 보호 블록을 가리키는 동안, 상기 복수의 블록 중 각각의 블록에 상기 프로그램의 상기 제2 버전의 각 부분을 저장함으로써, 상기 복수의 블록 중 각각의 블록이 상기 프로그램의 상기 제1 버전의 각 부분 및 상기 프로그램의 상기 제2 버전의 각 부분을 동시에 저장하도록 하는 단계; 및
    상기 블록 중 하나가 상기 멀티-레벨 모드로 남아 있는 동안, 상기 어드레스 공간의 각 부분을, (a) 상기 개별 보호 블록을 가리키는 것으로부터 (b) 상기 복수의 블록 중 각각의 블록을 대신 가리키도록 전환함으로써, 수행되어야 할 어느 다른 반복이 여전히 있다면 상기 어느 다른 반복을 위해 사용될 수 있도록 상기 개별 보호 블록을 프리(free)하게 하는 단계
    를 포함하는, 장치.
  17. 제16항에 있어서, 상기 장치는 마이크로 컨트롤러인, 장치.
KR1020197031220A 2017-03-29 2018-03-06 프로그램을 업데이트하기 위한 방법 및 장치 KR102434821B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102017205274.0 2017-03-29
DE102017205274.0A DE102017205274A1 (de) 2017-03-29 2017-03-29 Verfahren und Vorrichtung zum Aktualisieren eines Programmes
PCT/EP2018/055466 WO2018177698A1 (de) 2017-03-29 2018-03-06 Verfahren und vorrichtung zum aktualisieren eines programmes

Publications (2)

Publication Number Publication Date
KR20190131535A KR20190131535A (ko) 2019-11-26
KR102434821B1 true KR102434821B1 (ko) 2022-08-22

Family

ID=61599145

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197031220A KR102434821B1 (ko) 2017-03-29 2018-03-06 프로그램을 업데이트하기 위한 방법 및 장치

Country Status (7)

Country Link
US (1) US10990381B2 (ko)
EP (1) EP3602275A1 (ko)
JP (1) JP6832448B2 (ko)
KR (1) KR102434821B1 (ko)
CN (1) CN110462585B (ko)
DE (1) DE102017205274A1 (ko)
WO (1) WO2018177698A1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070300205A1 (en) * 2006-06-26 2007-12-27 Research In Motion Limited Method and system for generating a reverse binary patch
US20130322169A1 (en) * 2012-05-31 2013-12-05 Seagate Technology Llc Multi-level cell (mlc) update with protected mode capability
US20130345021A1 (en) * 2012-06-26 2013-12-26 Suzuki Motor Corporation Ratio shift control system for an automatic transmission

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US7752617B2 (en) * 2003-11-20 2010-07-06 International Business Machines Corporation Apparatus, system, and method for updating an embedded code image
DE602004013120T2 (de) * 2004-03-10 2009-05-14 Sony Ericsson Mobile Communications Ab Automatisierter Datensicherungsspeicher in Firmware-Aufwertungen
DE102005059593A1 (de) 2005-05-25 2006-11-30 Robert Bosch Gmbh Verfahren und Vorrichtung zur Umschaltung bei einem Speicher für ein Steuergerät
US20080163201A1 (en) * 2006-12-29 2008-07-03 Fabrice Jogand-Coulomb Apparatuses for launching a program application
TWI397071B (zh) * 2008-12-31 2013-05-21 A Data Technology Co Ltd 記憶體儲存裝置及其控制方法
US8886990B2 (en) * 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
TWI459294B (zh) * 2011-03-18 2014-11-01 Phoenix Tech Ltd Bios程式的更新方法與其電腦系統
CN103620567A (zh) * 2011-06-07 2014-03-05 Lsi公司 主机看到的设备固件更新效果的管理
US20150120988A1 (en) * 2013-10-28 2015-04-30 Skymedi Corporation Method of Accessing Data in Multi-Layer Cell Memory and Multi-Layer Cell Storage Device Using the Same
US9043537B1 (en) * 2013-11-21 2015-05-26 Sandisk Technologies Inc. Update block programming order
US9436456B2 (en) * 2014-04-17 2016-09-06 Myine Electronics, Inc. System and method for management of software updates at a vehicle computing system
DE102014223035A1 (de) 2014-11-12 2016-05-12 Robert Bosch Gmbh Verfahren und Speicherverwaltungsvorrichtung zum Übertragen von Daten innerhalb eines Compuer-Systems, Speichersystem und Computer-System
US20170168725A1 (en) * 2015-12-10 2017-06-15 Kabushiki Kaisha Toshiba Memory system that updates firmware in response to predetermined events

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070300205A1 (en) * 2006-06-26 2007-12-27 Research In Motion Limited Method and system for generating a reverse binary patch
US20130322169A1 (en) * 2012-05-31 2013-12-05 Seagate Technology Llc Multi-level cell (mlc) update with protected mode capability
US20130345021A1 (en) * 2012-06-26 2013-12-26 Suzuki Motor Corporation Ratio shift control system for an automatic transmission

Also Published As

Publication number Publication date
CN110462585A (zh) 2019-11-15
KR20190131535A (ko) 2019-11-26
DE102017205274A1 (de) 2018-10-04
EP3602275A1 (de) 2020-02-05
JP6832448B2 (ja) 2021-02-24
WO2018177698A1 (de) 2018-10-04
US20200026509A1 (en) 2020-01-23
JP2020515975A (ja) 2020-05-28
US10990381B2 (en) 2021-04-27
CN110462585B (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
KR100805840B1 (ko) 캐시를 이용한 플래시 메모리 장치 및 그것의 프로그램방법
US20220197504A1 (en) Memory devices and systems for host controlled enablement of automatic background operations in a memory device
JP2008502090A (ja) ユーザにより密度/動作性能を設定可能なメモリデバイス
US20140043901A1 (en) Nonvolatile memory device and operating method with variable memory cell state definitions
CN110751970B (zh) 控制器及操作控制器的方法
US7471535B2 (en) Programable identification circuitry
US9378823B2 (en) Programming a memory cell to a voltage to indicate a data value and after a relaxation time programming the memory cell to a second voltage to indicate the data value
US20170364265A1 (en) Data storage device and data maintenance method thereof
US20090070523A1 (en) Flash memory device storing data with multi-bit and single-bit forms and programming method thereof
US9513912B2 (en) Memory controllers
KR102434821B1 (ko) 프로그램을 업데이트하기 위한 방법 및 장치
US20060168414A1 (en) Memory block locking apparatus and methods
US9996458B1 (en) Memory sector retirement in a non-volatile memory
US10446258B2 (en) Methods and apparatus for providing redundancy in memory
US8225051B2 (en) Access control method for a memory, memory controller for controlling access to the memory, and data processing apparatus
US11868654B2 (en) Semiconductor device
US8037231B2 (en) Memory architecture for separation of code and data in a memory device
WO2022091240A1 (ja) フラッシュメモリ管理装置、及びフラッシュメモリ管理方法
KR100245413B1 (ko) 불 휘발성 반도체 메모리 장치의 기입 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant