KR20070032031A - Safe flashing - Google Patents

Safe flashing Download PDF

Info

Publication number
KR20070032031A
KR20070032031A KR1020077002161A KR20077002161A KR20070032031A KR 20070032031 A KR20070032031 A KR 20070032031A KR 1020077002161 A KR1020077002161 A KR 1020077002161A KR 20077002161 A KR20077002161 A KR 20077002161A KR 20070032031 A KR20070032031 A KR 20070032031A
Authority
KR
South Korea
Prior art keywords
code
flash
code segment
flashing
segment
Prior art date
Application number
KR1020077002161A
Other languages
Korean (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 코닌클리케 필립스 일렉트로닉스 엔.브이.
Priority to KR1020077002161A priority Critical patent/KR20070032031A/en
Publication of KR20070032031A publication Critical patent/KR20070032031A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents

Abstract

본 발명에서는, 플래싱을 개시하는 경우, 플래시코드를 재프로그램 가능형 비휘발성 저장매체의 플래시 전용영역에 업로드(310)할 수 있다. 그리고, 플래시코드를 정확히 플래시 전용영역에 업로드하였는지를 검증한다(320). 그 플래시코드가 정확히 업로드되지 않은 경우, 그 플래시코드는 플래시 전용영역에 다시 업로드된다(310). 그 플래시코드가 정확히 업로드되는 경우, 상기 재프로그램 가능형 비휘발성 저장매체의 코드 세그먼트는 다음 단계에서 새로운 코드로 플래싱된다(330). 그 후, 그 새로운 코드가 정확히 코드 세그먼트에 기록되었는지를 검증한다(340). 그 코드가 만족스럽게 코드 세그먼트에 기록되지 않은 경우, 상기 코드 세그먼트는 다시 플래싱된다(330).In the present invention, when flashing is initiated, the flash code can be uploaded 310 to a flash-only area of a reprogrammable nonvolatile storage medium. In operation 320, the flash code is correctly uploaded to the flash-only area. If the flash code is not uploaded correctly, the flash code is uploaded back to the flash-only area (310). If the flashcode is uploaded correctly, the code segment of the reprogrammable non-volatile storage medium is flashed 330 with new code in the next step. Then verify that the new code was correctly written to the code segment (340). If the code is not satisfactorily written to the code segment, the code segment is flashed again (330).

저장매체, 플래싱, 업로드, 코드 세그먼트, 플래시코드. Storage media, flashing, uploads, code segments, flashcodes.

Description

안전한 플래싱{SAFE FLASHING}Safe flashing {SAFE FLASHING}

본 발명은, 일반적으로 저장 매체 플래싱(flashing) 분야에 관한 것이다. 보다 구체적으로, 본 발명은 안전한 방식으로 재프로그램 가능한 비휘발성 저장매체의 플래싱 분야에 관한 것이다. 또한, 본 발명은, 플래싱 동작이 중단되는 경우, 예를 들면 전원이 플래싱 동작시 꺼지는 경우에 상기 플래싱을 복원하는 분야에 관한 것이다. 본 발명은, 플래시될 수 있는 저장매체를 사용하는 임의의 컴퓨터 시스템에서 이용되도록 구성된다. 특히, 본 발명은, 광 드라이브에서 이용될 수 있다.The present invention generally relates to the field of storage medium flashing. More specifically, the present invention relates to the field of flashing non-volatile storage media that can be reprogrammed in a secure manner. The invention also relates to the field of restoring flashing when the flashing operation is interrupted, for example when the power is turned off during the flashing operation. The present invention is configured for use in any computer system using a storage medium that can be flashed. In particular, the present invention can be used in an optical drive.

주목해야 하는 것은, 본 명세서와 청구범위 전체 걸쳐서 사용된 경우, 컴퓨터란, 데이터를 저장, 검색 및 처리할 수 있는 임의의 전자기기를 규정하는 것으로 한다는 것이다. 그러므로, 컴퓨터 시스템이란 용어를 언급하는 경우, 본 용어는, 처리수단, 저장수단, 입력수단, 출력수단 및 전원을 구비한 임의의 시스템을 규정하는 것으로 한다. 따라서, 컴퓨터 시스템이란, 이들이 처리수단, 저장수단, 입력수단, 출력수단 및 전원을 구비하는 경우, 임의의 형태의 컴퓨터, 개인용 컴퓨터, 이동 셀룰러폰, 스마트폰, 개인 휴대용 정보 단말기(PDA), 전자장비, 스마트 전자기기 및 주방, 청소 및 외출용 장비, 민수용 전자장치, 예를 들면 디지털 카메라 등 등의 촬상장비를 포함하는 것을 의도한다.It should be noted that, as used throughout this specification and claims, a computer is defined as any electronic device capable of storing, retrieving, and processing data. Therefore, when referring to the term computer system, the term is intended to define any system having processing means, storage means, input means, output means and a power source. Thus, a computer system means any type of computer, personal computer, mobile cellular phone, smart phone, personal digital assistant (PDA), electronic, if they have a processing means, a storage means, an input means, an output means and a power source. It is intended to include equipment, smart electronics and imaging equipment, such as kitchens, cleaning and going out equipment, civil electronics, for example digital cameras, and the like.

또한, 주목해야 하는 것은, 본 명세서와 청구범위 전체에 걸쳐서, 저장매체 가 복수의 세그먼트를 구비한다는 것이다. 다음에, 각 세그먼트는 복수의 블록으로 이루어지고, 각 블록의 크기는 8Kbyte, 16Kbyte, 32-Kbyte, 64Kbyte 등이 있다.It should also be noted that throughout this specification and claims, the storage medium comprises a plurality of segments. Next, each segment is composed of a plurality of blocks, and the size of each block is 8Kbyte, 16Kbyte, 32-Kbyte, 64Kbyte and the like.

더욱이, 이하의 명세서와 청구범위에서, 포함한다/포함하는 이란 용어는 "구비하는 것으로서 해석되어야 하지만, ...에 한정되지 않는다. 즉, 본 명세서와 청구범위 전체에 걸쳐서 사용되는 경우, 상기 용어는 언급된 특징, 정수, 구성요소 또는 단계의 존재를 규정하는 것으로 하지만 하나 이상의 특징, 정수, 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다.Moreover, in the following specification and claims, the term comprising / comprising is to be interpreted as "including, but not limited to." That is, when used throughout this specification and claims, the term Refers to the existence of the mentioned feature, integer, component or step but does not exclude the presence or addition of one or more features, integers, components or steps.

기본 컴퓨터 시스템에 있는 하드웨어는, 5개의 구성요소: 주 메모리수단, 처리수단, 보조 메모리수단, 입력수단 및 출력수단을 구비한다고 한다. 상기 주 메모리 수단 및 처리수단은, 함께 종종 CPU(중앙처리장치)라고 언급한 중앙처리수단을 구성한다. 상기 CPU는 컴퓨터 시스템의 가장 중요한 부분이고, 프로그램 및 데이터의 처리는 이 부분에서 수행된다. 컴퓨터 시스템의 부분을 구성하는 다른 하드웨어를, 주변장치라고 언급하기도 한다.The hardware in the basic computer system is said to have five components: main memory means, processing means, auxiliary memory means, input means and output means. The main memory means and the processing means together constitute a central processing means, often referred to as a CPU (central processing apparatus). The CPU is the most important part of a computer system, and the processing of programs and data is performed in this part. Other hardware that forms part of a computer system is sometimes referred to as a peripheral.

컴퓨터 시스템은, 저장매체로서 언급된 다양한 형태의 저장수단을 구비한다. 일부의 저장매체는, 저장매체에 저장된 코드 또는 데이터가 일단 전원이 저장매체에 대해 오프되면 손실되는 것을 의미하는 휘발성이다. 공지의 일 형태의 휘발성 저장매체는, 판독/기록용 메모리(RWM)다. RWM은, 사용자에게 프로그램 및 데이터를 변경하거나 그 메모리의 데이터 영역의 변경을 할 가능성을 제공한다.The computer system comprises various forms of storage means referred to as a storage medium. Some storage media are volatile, meaning that code or data stored on the storage media is lost once power is turned off to the storage media. One known type of volatile storage medium is a read / write memory (RWM). RWM offers the user the possibility to change programs and data or to change the data area of its memory.

다른 저장매체는, 전원이 저장매체에 대해 오프되는 경우에도, 그들의 코드 또는 데이터를 보유한다는 것을 의미하는 비휘발성이다.Other storage media are non-volatile which means that they retain their code or data even when the power source is turned off to the storage media.

저장매체는, 다양한 목적을 위해 사용된다. 이를테면, 비휘발성 저장매체, 예를 들면 동적 랜덤 액세스 메모리(DRAM) 또는 보다 구체적으로 동기적 동적 랜덤 액세스 메모리(SDRAM)는, 전형적으로 컴퓨터의 주 시스템 메모리로서 사용된다. 부팅시에(즉, 기동시에), 컴퓨터의 운용 체계는, 주 시스템 메모리에 복사되어 그 메모리로부터의 프로세서에 의해 실행된다. 사용자가 애플리케이션을 오픈함에 따라, 각 애플리케이션도, 애플리케이션이 영구적으로 저장된 저장 드라이브(예를 들면, 하드 드라이브, CD-ROM 드라이브, DVD 드라이브, 블루레이 디스크 드라이브)로부터 상기 주 시스템 메모리로 복사되어 실행된다. 또한, 주 시스템 메모리를 사용하여 데이터, 콘피규레이션 정보 및 다른 형태의 정보를 일시적으로 저장하여 컴퓨터가 동작시에 사용하여도 된다.Storage media are used for a variety of purposes. For example, nonvolatile storage media, such as dynamic random access memory (DRAM) or more specifically synchronous dynamic random access memory (SDRAM), are typically used as the main system memory of a computer. At boot time (ie at startup), the computer's operating system is copied to main system memory and executed by the processor from that memory. As the user opens the application, each application is also copied and executed from the storage drive where the application is permanently stored (e.g., hard drive, CD-ROM drive, DVD drive, Blu-ray Disc drive) to the main system memory. . The main system memory may also be used to temporarily store data, configuration information, and other types of information for use in operation by the computer.

비휘발성 저장매체는, 컴퓨터가 전원이 투입될 때마다 실행하는 실행 가능형 코드를 저장하는데 유용하다. 이러한 코드를 "펌웨어"라고 한다. 하드웨어와 소프트웨어 사이의 어딘가에 놓이므로, 펌웨어라고 부른다. 펌웨어는, 기록 가능형 저장매체에 저장된 마이크로프로그램, 프로그램 및 루틴을 구비한다. 예시에 의해, 대부분의 컴퓨터는, BIOS(Basic Input/Output System)라고 불리는 실행 가능형 루틴으로 이루어진 세트 일부를 구비하고, 이 BIOS는 예를 들어, CD-ROM 드라이브, 플로피 디스크 드라이브 및 디스플레이 등의 다양한 입/출력수단에 액세스한다. 이 BIOS 코드는, 통상, ROM(판독전용 메모리), EPROM(소거가능 프로그램 가능형 판독전용 메모리), 또는 EEPROM(전기 소거 가능 프로그램 가능형 판독전용 메모리) 등의 비휘발성 저장매체에 영구적으로 저장된다. 명령어는, ROM보다 RAM으로부터 보 다 빨리 검색될 수 있다. 따라서, 컴퓨터의 프로세스 부팅시에, 상기 BIOS 코드는, ROM으로부터 컴퓨터의 주 시스템 메모리에 복사되고, 필요한 경우 그 주 시스템 메모리로부터 실행된다.Nonvolatile storage media are useful for storing executable code that a computer executes each time it is powered on. This code is called "firmware". Since it lies somewhere between hardware and software, it is called firmware. The firmware includes microprograms, programs, and routines stored on a recordable storage medium. By way of example, most computers have a portion of a set of executable routines called Basic Input / Output System (BIOS), which, for example, includes a CD-ROM drive, a floppy disk drive, and a display. Access various input / output means. This BIOS code is typically stored permanently in a nonvolatile storage medium, such as a read only memory (ROM), an erasable programmable read only memory (EPROM), or an EEPROM (electrically erasable programmable read only memory). . Instructions can be retrieved faster from RAM than from ROM. Thus, upon process booting of the computer, the BIOS code is copied from the ROM into the main system memory of the computer and executed from that main system memory if necessary.

또 다른 수정 가능형 저장매체는, 플래시 메모리(예를 들면, 플래시 ROM)가 있다. 이러한 형태의 메모리는, 그 메모리의 시스템 내 재프로그래밍을 가능하게 한다. 컴퓨터 시스템이 EEPROM이나 플래시 메모리 등의 재프로그램 가능형 비휘발성 메모리와 프로세서를 결합하는 경우, 컴퓨터 시스템은, 동작중에 재프로그래밍될 수 있다. 컴퓨터 시스템에의 명령어를 대화식으로 업그레이드 및/또는 갱신(즉, 재프로그램)하는 능력은, 매우 유용하다. 이를테면, 회사는, 펌웨어를 재프로그래밍할 때마다 컴퓨터 시스템을 인증 서비스 센터에 가져오라고 고객에게 요구하지 않고서 그 고객에게 서비스하여도 된다.Another modifiable storage medium is flash memory (e.g. flash ROM). This type of memory allows for in-system reprogramming of the memory. When a computer system combines a processor with a reprogrammable nonvolatile memory such as an EEPROM or flash memory, the computer system may be reprogrammed during operation. The ability to interactively upgrade and / or update (ie, reprogram) instructions to a computer system is very useful. For example, a company may service a customer without requiring the customer to bring the computer system to an authorized service center each time the firmware is reprogrammed.

재프로그램 가능형 비휘발성 메모리의 재프로그래밍은, "플래싱"으로서 공지되어 있다. 메모리의 플래싱은, 새로운 코드나 데이터로 펌웨어가 업그레이드 및/또는 갱신될 수 있도록 펌웨어가 대체되게 한다. 종래에 공지된 것은, 메모리의 플래싱이 먼저 메모리 영역에 포함된 모든 코드나 데이터를 소거하여 수행된다는 것이다. 이것이 의미하는 것은, 그 메모리 영역의 모든 비트가 디지털 "1"로 입력된다는 것이고, 이는 메모리 소거시에 표준 작용이다. 이와는 달리, 모든 비트가 디지털 "0"으로 입력될 수 있다. 모든 비트를 디지털 "1"로 입력시킨 후, 상기 메모리 영역은 비었다고 한다. 그래서, 상기 메모리의 갱신 및/또는 업그레이드는, 연속적으로 새로운 코드나 데이터를 그 메모리 영역에 기록하여 달성된다.Reprogramming of a reprogrammable nonvolatile memory is known as " flashing. &Quot; Flashing the memory allows the firmware to be replaced so that the firmware can be upgraded and / or updated with new code or data. It is known in the art that flashing of the memory is first performed by erasing all code or data contained in the memory area. This means that all the bits of that memory area are input as digital "1", which is the standard action in memory erase. Alternatively, all bits can be input as digital "0". After all bits have been input to digital "1", the memory area is said to be empty. Thus, updating and / or upgrading of the memory is accomplished by continuously writing new codes or data into the memory area.

문제점은 메모리의 플래싱에 관해 관측되었다. 플래싱 동작은, 실행 가능형 코드를 사용하여 상기 소거 및 연속적인 기록을 수행한다. 상기 플래시를 수행하는데 필요한 그 실행 가능형 코드는, 통상 플래시되는 메모리에 포함된 펌웨어의 일부로서 구비된다. 그 펌웨어에 있는 코드는, 재기록되기 전에 소거되어야 한다.Problems have been observed regarding flashing of memory. The flashing operation uses the executable code to perform the erase and successive writes. The executable code required to perform the flash is typically provided as part of the firmware contained in the memory being flashed. The code in that firmware must be erased before it can be rewritten.

따라서, 플래싱 동작시에 전력 손실이나 임의의 다른 형태의 중단은 저장매체를 사용 불가능하게 하여, 컴퓨터 시스템을 사용 불가능하게 할 수도 있다. 예시로서, 전원이 예를 들면, 플래시 ROM의 플래싱 동안에 꺼지면, 상기 플래시 ROM에 처음에 저장되었던 코드는, 그 플래시가 먼저 소거된 플래시 ROM을 처리하기 때문에, 손실된다. 이러한 점에서, 상기 업그레이드나 갱신되는 코드는 펌웨어로부터 없어지고, 그 코드가 상기 플래시를 수행하는데 필요한 명령어를 포함했기 때문에, 그 플래시를 수행하는 메카니즘도 손실된다.Thus, power loss or any other form of interruption in the flashing operation may render the storage medium unusable, rendering the computer system unusable. As an example, if a power supply is turned off, for example, during flashing of a flash ROM, the code that was initially stored in the flash ROM is lost because the flash processes the flash ROM that was first erased. In this regard, the code to be upgraded or updated is removed from the firmware, and the mechanism for performing the flash is also lost because the code contains the instructions needed to perform the flash.

상기 문제를 갖는 플래시 ROM은, 판매자의 공장으로 재선적되어야 하고, 이때 필요한 특정 장비를 사용하여 상기 플래시 ROM을 재프로그램하거나 그 플래시 ROM을 새로운 코드를 포함한 플래시 ROM으로 대체한다. 이러한 시나리오는, 고객에게 아주 바람직하지 않고 불편하다. 더욱이, 그것은, 고객에게 비용을 증가시킨다는 것을 의미한다.The flash ROM having the above problem must be re-loaded to the vendor's factory, where the necessary equipment is used to reprogram the flash ROM or replace the flash ROM with a flash ROM containing new code. This scenario is very undesirable and inconvenient for the customer. Moreover, it means increasing the cost to the customer.

종래에 알려진 것은, 정전된 경우에 복원될 수 있는 플래싱 처리를 확실하게 하는 간단한 방식이 항상 플래시 ROM의 일 부분을 손상되지 않게 하는데 있다, 즉 그 플래시 ROM의 일 부분을 소거 불가능하게 하는데 있다는 것이다. 이러한 구성으로, 소거 불가능한 부분은, 결코 새로운 코드나 데이터로 재기록되지 않는다. 그래 서, 이러한 플래시 ROM의 부분은 보호된다. 상기 소거 불가능 부분은, 실행시에 나머지 메모리를 겹쳐 쓰는 코드를 더 포함한다. 즉, 상기 소거 불가능 블록은, 그 플래시를 수행하는데 필요한 명령어를 포함한다.What is known in the art is that a simple way of ensuring the flashing process, which can be restored in the event of a power failure, is always to keep a part of the flash ROM intact, i.e. to make part of the flash ROM indelible. With this configuration, the non-erasable portion is never rewritten with new code or data. Thus, parts of these flash ROMs are protected. The non-erasable portion further includes code that overwrites the remaining memory at run time. In other words, the non-erasable block contains the instructions needed to perform the flash.

종래의 플래시 부품 또는 메모리는, 크기가 서로 다른 블록으로 설계된다는 점에서 비대칭일 수 있다. 데이터는, 블록단위로 상기 플래시 부품 또는 메모리에 기록된다. 예를 들어, 2개의 8Kbyte 블록, 하나의 16Kbyte 블록, 하나의 32Kbyte 블록 및 복수의 64Kbyte 블록이어도 된다. 상기 8Kbyte 블록 중 하나는 (로고타입, 컴퓨터의 모델 번호 등과 같은) 제조사에 대한 정보를 포함한다. 보통, 상기 16Kbyte는, 실행시에 나머지 메모리를 겹쳐쓰는 코드를 구비한 상기 보호된 부트 코드를 갖는다.Conventional flash components or memories may be asymmetric in that they are designed in blocks of different sizes. Data is recorded in the flash component or the memory in block units. For example, two 8Kbyte blocks, one 16Kbyte block, one 32Kbyte block, and a plurality of 64Kbyte blocks may be used. One of the 8 Kbyte blocks contains information about the manufacturer (such as logotype, model number of the computer, etc.). Typically, the 16 Kbytes have the protected boot code with code that overwrites the remaining memory at run time.

메모리의 임의의 특별한 세그먼트를 액세스하기 위한 수단은, 당업자에게 공지되어 있다. 예를 들면, 재기록하기 위한 특별한 세그먼트를 액세스할 수 있는 일 방식은, 갱신 또는 업그레이드되는, 특별한 세그먼트에서의 임의의 어드레스 위치에 대한 전용 소거 명령어 바이트를 사용자가 개시하도록 한다. 이를테면, 상기 전용 소거 명령어는, 그 메모리의 FLASH ENABLE핀이 특정 전압(예: 4V 등)을 그 핀에 공급하여 인에이블됨과 동시에 개시된다. 그 후, 특별한 세그먼트에 기록할 수 있도록, 즉 전용 기록 명령어 바이트를 상기 FLASH ENABLE 핀을 인에이블하면서 상기 특별한 세그먼트에 개시할 수 있도록 유사한 처리를 수행한다. 플래싱용 메모리의 특별한 세그먼트를 선택할 수 있는 다른 방식은, 종래에 공지되어 있고, 여기서는 더욱 설명하지 않겠다. 상기 접근법이 제조사마다 변할 수도 있다는 것은 언급할 가치가 없다.Means for accessing any particular segment of memory are known to those skilled in the art. For example, one way of accessing a particular segment for rewriting allows the user to initiate a dedicated erase command byte for any address location in the particular segment that is being updated or upgraded. For example, the dedicated erase command is initiated at the same time that the FLASH ENABLE pin of the memory is enabled by supplying a specific voltage (eg 4V, etc.) to that pin. Similar processing is then performed to enable writing to a particular segment, i.e., to initiate a dedicated write command byte to the special segment with the FLASH ENABLE pin enabled. Other ways of selecting a particular segment of flashing memory are known in the art and will not be described further herein. It is not worth mentioning that the approach may vary from manufacturer to manufacturer.

상기 예시에서, 플래싱 동작을 위해 필요한 부트 코드를 포함하는 16Kbyte 블록은, 전형적으로 변하지 않는 부분이다. 달리 말하면, 이러한 블록은, 전형적으로 재프로그램을 하는데 사용 가능하지 않다.In the above example, the 16 Kbyte block containing the boot code needed for the flashing operation is typically the portion that does not change. In other words, such blocks are typically not available for reprogramming.

US-A-6,308,265에 설명된 것처럼, 비대칭 플래시 부품 또는 메모리는, 일반적으로 대칭형보다 제조하는데 보다 비싸다. 즉, 다수의 64Kbyte 블록만을 갖는 플래시 부분은 서로 다른 크기의 블록들을 갖는 플래시 부분보다 제조하는데 보다 싸다. 그러나, "보호되어야" 하는 필요한 부트 코드가 일반적으로 약 16Kbyte이므로, 플래시 부품이나 메모리를 제조하는 경우 고려되어야 하는 매우 중요한 교환조건이 있다. 비대칭 플래시 부품 또는 메모리를 제조할 때, 보호되어야 하는 부트 코드만을 포함한 16Kbyte 블록을 주문 제작하는 것이 가능하다. 그래서, 메모리 공간을 낭비하지 않을 것이다. 그러나, 이전에 설명된 것처럼, 상기 비대칭 플래시 부품 또는 메모리는 값비싸다. 한편, 예를 들면 64Kbyte 크기의 블록과 같은 다수의 블록만을 갖는 보다 싼 대칭형 플래시 부품 또는 메모리를 제조하는 경우, 그 블록들 중 하나는 보호되는 16Kbyte 크기의 부트 코드를 포함해야 한다. 상기 부트 블록 코드가 소거된 후 재기록될 수 없으므로, 상기 부트 블록 코드가 상기 64Kbyte 블록에 구비된 경우, 그 블록은 사용가능한 메모리 영역의 이용도를 최대화하기 위해서 소거된 후 재기록될 수 없는 다른 코드를 포함해야 한다. 이와는 달리, 상기 64Kbyte 블록의 나머지 메모리 영역은, 비어 있어 이용되지 않은 채로 있다. 따라서, 상기 부트 블록 코드의 크기가 16Kbyte인 경우, 상기 64Kbyte 블록의 나머지 영역(즉, 48Kbyte)은 사용되지 않아야 하거나(예를 들면 비어 있어야 하거나), 또는 갱신될 수 없는 코드가 구비되어야 할 것이다.As described in US-A-6,308,265, asymmetric flash components or memories are generally more expensive to manufacture than symmetrical. That is, a flash portion having only a large number of 64 Kbyte blocks is cheaper to manufacture than a flash portion having blocks of different sizes. However, since the required boot code to be "protected" is typically about 16 Kbytes, there is a very important exchange condition that must be considered when manufacturing flash components or memory. When manufacturing asymmetric flash components or memory, it is possible to customize 16Kbyte blocks containing only the boot code that must be protected. So, it will not waste memory space. However, as previously described, the asymmetric flash component or memory is expensive. On the other hand, when manufacturing a cheaper symmetric flash component or memory having only a large number of blocks, such as a 64 Kbyte block, one of the blocks must contain a protected 16 Kbyte boot code. Since the boot block code cannot be rewritten after being erased, when the boot block code is included in the 64 Kbyte block, the block is erased to erase other codes that cannot be rewritten to maximize utilization of the available memory area. It must be included. In contrast, the remaining memory area of the 64 Kbyte block is empty and unused. Thus, if the size of the boot block code is 16Kbytes, the remaining area (ie 48Kbytes) of the 64Kbyte block should not be used (e.g. be empty), or code that cannot be updated should be provided.

이전에 설명된 부트 블록 코드는, BIOS 코드의 갱신 불가능한 부분이라고 하여도 된다. 일반적으로, 갱신 가능한 코드는, 상기 갱신 불가능한 부트 블록 코드에 인접하게 놓인다. 아주 자주 갱신되지 않는 BIOS 코드의 일 부분이 있지만, 때때로 그 코드도 갱신하는 것이 바람직하기도 하다. 따라서, 부트 블록 코드를 보호하고 플래시 BIOS 동작시 BIOS 코드로 갱신할 수 있는 일 접근법이, US-A-6,308,265에 제안되어 있다. 상기 부트 블록 코드는, 플래시 부분의 부트 블록 또는 부트 영역에 저장된다. 그 후, 부트 블록 코드의 복사본은 상기 플래시 부분의 또 다른 영역에 기록된다. 그 후에, 그 또 다른 영역에 있는 부트 블록 코드의 화상은, 부트 블록에 있는 부트 블록 코드와 비교된다. 일치하는 경우, 상기 부트 블록 영역에서 플래시중인 BIOS 화상의 부트 블록 코드는 상기 또 다른 영역에 있는 부트 블록 코드의 복사본과 비교되고, 일치하는 경우, 부트 블록 영역에 있는 코드는 보호된다. 일치하지 않거나 정전인 경우, 상기 시스템은 또 다른 영역에 있는 부트 블록 코드를 사용하여 부팅된다(즉, 재시작된다).The previously described boot block code may be referred to as an non-updatable portion of the BIOS code. In general, updatable code is placed adjacent to the non-updatable boot block code. There are parts of the BIOS code that do not update very often, but sometimes it is desirable to update the code as well. Thus, one approach is proposed in US-A-6,308,265 that protects the boot block code and can be updated with BIOS code during flash BIOS operation. The boot block code is stored in a boot block or a boot area of a flash portion. Thereafter, a copy of the boot block code is written to another area of the flash portion. Thereafter, the image of the boot block code in that other area is compared with the boot block code in the boot block. If there is a match, the boot block code of the BIOS image flashing in the boot block area is compared with a copy of the boot block code in the another area, and if there is a match, the code in the boot block area is protected. If there is a mismatch or a power outage, the system is booted (ie restarted) using boot block code in another region.

그러나, US-A-6,308,265에 설명된 장치에는 소수의 단점이 있다. US-A-6,308,265에서는, 새로운 부트 코드와 예전의 부트 코드를 비교하는데, 이것이 의미하는 것은, 상기 새로운 코드가 예전의 코드와 결코 다를 수 없다는 것이다. 즉, 부트 코드는 완전히 갱신 가능하지 않다. 더욱이, 이 장치에 의해, 플래싱 처리시에 보호할 수 있을 뿐이다. 또한, 플래그가 필요한데, 이는 코드로 이루어진 별도 의 블록(예를 들면, 8Kbyte 이상)이 필요하다는 것을 의미하기도 한다. 따라서, 당신은, 일부의 경우에는 EEPROM과 같은 별도의 저장매체를 요구할 수도 있다. US-A-6,308,265에 기재된 장치의 또 다른 단점은, 플래시 부분의 영역을 플래싱 처리에 이용하는데 항상 필요하다는 것이다. 이러한 이용 영역은, 복사 동작을 이루기 위해서 적어도 상기 부트 블록과 동일한 크기이어야 한다.However, the apparatus described in US-A-6,308,265 has a few disadvantages. In US-A-6,308,265, new boot code is compared with old boot code, which means that the new code can never be different from the old code. In other words, the boot code is not completely updatable. Moreover, this apparatus can only protect during the flashing process. In addition, a flag is required, which means that a separate block of code (for example, 8 Kbytes or more) is required. Thus, you may in some cases require a separate storage medium, such as an EEPROM. Another disadvantage of the device described in US-A-6,308,265 is that it is always necessary to use the area of the flash portion for flashing processing. This usage area must be at least the same size as the boot block to achieve the copy operation.

개선된 플래싱 방법이 필요하다. 바람직하게는, 개선된 플래싱 방법으로, 보다 간단하고, 보다 빠르며, 보다 효율적인 방식으로 재프로그램 가능 메모리에 펌웨어를 갱신 및/또는 업그레이드할 수 있고, 동시에 상기 플래싱이 예를 들면 정전과 같은 중단일 경우에 복원될 수 있다는 점에서 안전한 플래싱을 할 수 있다. 바람직하게는, 개선된 플래싱 방법은, 상기 필요한 부트 코드가 항상 변하지 않을 필요는 없다. 따라서, 개선된 플래싱 방법은, 바람직하게는 부트 코드를 갱신할 수 있다. 또한, 풀(full) 겹쳐 쓰기로 안전한 플래싱을 달성하는 것이 바람직하다. 아울러, 개선된 플래싱 방법은, 바람직하게는, 메모리가 비대칭 또는 대칭 메모리인지의 여부에 상관없이, 임의의 종류의 메모리와 함께 사용된 경우 비용면에서 효율적이다.There is a need for an improved flashing method. Advantageously, with an improved flashing method, it is possible to update and / or upgrade the firmware in the reprogrammable memory in a simpler, faster and more efficient manner, while at the same time the flashing is interrupted, for example in case of a power outage. It can be safely flashed in that it can be restored. Advantageously, the improved flashing method does not have to always change the required boot code. Thus, the improved flashing method can preferably update the boot code. It is also desirable to achieve safe flashing with full overwriting. In addition, the improved flashing method is preferably cost effective when used with any kind of memory, whether the memory is asymmetric or symmetric.

본 발명의 목적은, 재프로그램 가능형 비휘발성 저장매체의 개선된 플래싱을 제공하는데 있다.It is an object of the present invention to provide improved flashing of a reprogrammable nonvolatile storage medium.

상기 목적은, 재프로그램 가능형 비휘발성 저장매체의 개선된 플래싱 방법을 제공하여 달성된다. 상기 방법은, 플래시코드를 상기 저장매체의 플래시 전용영역에 업로드하는 단계와, 상기 플래시코드가 정확히 업로드되었는지를 검증하는 단계 로 이루어진다. 상기 플래시코드가 정확히 업로드된 경우, 상기 저장매체의 코드 세그먼트는 플래싱된다. 그리고, 상기 코드 세그먼트가 정확히 기록되었는지를 검증한다. 상기 코드 세그먼트가 정확히 기록되지 않은 경우, 코드 세그먼트는 다시 플래싱된다.This object is achieved by providing an improved flashing method of a reprogrammable nonvolatile storage medium. The method includes uploading a flash code to a flash dedicated area of the storage medium and verifying that the flash code has been uploaded correctly. If the flashcode is uploaded correctly, the code segment of the storage medium is flashed. Then, verify that the code segment is recorded correctly. If the code segment is not recorded correctly, the code segment is flashed again.

또한, 상기 목적은, 컴퓨터가 상술한 플래싱 방법을 수행하도록 프로그램 명령어로 이루어진 컴퓨터 판독 가능한 프로그램을 제공하여 달성된다. 또한, 상기 목적은, 컴퓨터가 상기 플래싱 방법을 수행하도록 컴퓨터 실행 가능한 명령어를 포함한 컴퓨터 판독 가능한 프로그램을 갖는 매체를 제공하여 달성된다. 끝으로, 상기 목적은, 입력수단, 출력수단, 저장수단 및 처리수단을 구비한 컴퓨터 시스템을 제공하여 달성되고, 이때 처리수단은, 이전에 상술한 컴퓨터 판독 가능한 프로그램에 따라 컴퓨터 판독 가능한 프로그램을 실행하도록 구성된다.The object is also achieved by providing a computer readable program consisting of program instructions for a computer to carry out the flashing method described above. The object is also achieved by providing a medium having a computer readable program including computer executable instructions for a computer to perform the flashing method. Finally, the object is achieved by providing a computer system having an input means, an output means, a storage means and a processing means, wherein the processing means executes a computer readable program according to the computer readable program described above. It is configured to.

본 발명에 의한 이점은, 첨부된 청구항으로부터 명백해질 것이다. 이를테면, 명백한 것은, 본 발명이 갖는 하나의 주요 이점이 중단(interruption)일 경우에 복원될 수 있는 안전한 플래싱을 제공한다는 것이 명백한 것이다. 또한, 명백해지는 것은, 예를 들면 정전 등의 중단이 일어나는 경우와 상관없이 재프로그램 가능형 비휘발성 저장매체를 항상 "재플래시(re-flash)"하는 것이 가능하다는 것이다. 또 다른 이점은, 본 발명이 상기 플래시를 수행하는데 필요한 명령어의 갱신 및/또는 업그레이드를 가능하게 한다는 것이다. 본 발명에 의한 또 다른 이점은, 풀 겹쳐 쓰기, 즉 플래싱되는 풀 비휘발성 저장매체의 겹쳐 쓰기로 안전한 플래싱을 제공한다는 것이다. 아울러 본 발명에 의한 또 다른 이점은, 종래기술과 비교하여 보 다 효율적이고 더욱 더 안전한 플래싱을 할 수 있다는 것이다. 끝으로, 상기 플래싱은, 비대칭 또는 대칭 메모리인지의 여부에 상관없이, 임의의 종류의 메모리와 함께 사용되는 경우 비용면에서 효율적이다.Advantages of the present invention will become apparent from the appended claims. For example, it is clear that one major advantage of the present invention is that it provides safe flashing that can be restored in case of interruption. It is also evident that it is always possible to "re-flash" a reprogrammable nonvolatile storage medium irrespective of when, for example, a power outage or the like occurs. Another advantage is that the present invention enables the updating and / or upgrading of the instructions needed to perform the flash. Another advantage with the present invention is that it provides safe flashing by full overwriting, i.e., overwriting of the flashed non-volatile storage medium. In addition, another advantage of the present invention is that flashing is more efficient and safer than the prior art. Finally, the flashing is cost effective when used with any kind of memory, whether asymmetric or symmetrical.

이하, 본 발명을 바람직한 실시예와 관련지어 또 첨부도면을 참조하여 더욱 상세히 설명하겠다:Hereinafter, the present invention will be described in more detail with reference to the accompanying drawings in connection with a preferred embodiment:

도 1은 기본 컴퓨터 시스템의 구성을 나타내고,1 shows a configuration of a basic computer system,

도 2는 본 발명의 제 1 실시예에 따른 플래시 ROM의 구성을 나타내고,2 shows a configuration of a flash ROM according to the first embodiment of the present invention,

도 3은 본 발명의 제 1 실시예에 따른 플래싱 방법을 설명하는 흐름도,3 is a flowchart illustrating a flashing method according to a first embodiment of the present invention;

도 4는 도 4a 및 도 4b 각각에 본 발명의 제 1 실시예에 따른 서로 다른 중단 시나리오를 나타내고,4 shows a different interruption scenario according to the first embodiment of the present invention in FIGS. 4A and 4B, respectively;

도 5는 본 발명의 제 2 실시예에 따른 플래시 ROM의 구성을 나타내고,5 shows a configuration of a flash ROM according to a second embodiment of the present invention,

도 6은 본 발명의 제 2 실시예에 따른 플래싱 방법을 설명하는 흐름도,6 is a flowchart for explaining a flashing method according to a second embodiment of the present invention;

도 7은 본 발명의 제 2 실시예에 따른 플래싱 방법의 부가 단계를 설명하는 흐름도이고, 이러한 흐름도는 코드 세그먼트가 완전한 코드로 이루어진 경우 적절하다.7 is a flowchart illustrating additional steps of the flashing method according to the second embodiment of the present invention, which is appropriate when the code segment is made up of complete code.

도 1은 기본 컴퓨터 시스템(10)의 개략도이다. 데이터 및 프로그램 정보는, 입력장치(111)로부터 공급되고, 먼저 보조 메모리수단(12,13)에 저장된다. 그후, CPU(14)는 상기 프로그램을 불러오고, 그 프로그램에 따라 정보의 흐름을 관리한 다. 예를 들면, 데이터는, 계산부(14)에 공급되어 처리된 후, 그 결과는 다시 보조 메모리 수단(12,13)에 저장된다. 이러한 순서적 처리가 끝난 경우, 처리 결과는 보조 메모리수단(12,13)으로부터 제어부(14)에 의한 명령어에 의해 출력장치(112)에 보내질 수 있다. 데이터 버스(15), 제어버스(16) 및 어드레스 버스(17)는, 도 1에 도시된 것과 같은 컴퓨터 시스템(10)의 서로 다른 모듈(11,12,13,14)간의 데이터를 상호 연결하고 전송한다. 이들 버스(15,16,17)는 8비트, 16비트, 32비트, 64비트 등의 크기로 구별될 수 있다. 컴퓨터 시스템 구성은, 매우 복잡하고 많은 전자부품과 서브시스템을 구비하기도 한다. 그러나, 이러한 특별한 명세서 및 청구범위는, 주로 어떠한 컴퓨터 시스템에서도 사용될 수 있는 저장 매체의 플래싱에 관한 것이다. 그래서, 컴퓨터 시스템의 구조와 작동원리는, 여기서 더욱 상세히 설명하지 않겠다. 더욱이, 주목하는 것은, 당업자가 상기 컴퓨터 시스템의 기본 구조와 작동 원리를 안다는 것이다.1 is a schematic diagram of a basic computer system 10. Data and program information are supplied from the input device 111, and are first stored in the auxiliary memory means 12,13. Thereafter, the CPU 14 loads the program and manages the flow of information according to the program. For example, after the data is supplied to the calculation unit 14 and processed, the result is stored in the auxiliary memory means 12 and 13 again. When this sequential processing is finished, the processing result can be sent from the auxiliary memory means 12, 13 to the output device 112 by an instruction by the controller 14. The data bus 15, the control bus 16 and the address bus 17 interconnect the data between the different modules 11, 12, 13, 14 of the computer system 10 as shown in FIG. 1. send. These buses 15, 16 and 17 can be distinguished in sizes of 8 bits, 16 bits, 32 bits, 64 bits and the like. Computer system configurations are very complex and often include many electronic components and subsystems. However, these particular specifications and claims relate primarily to flashing storage media that can be used in any computer system. Thus, the structure and operating principle of the computer system will not be described in more detail here. Moreover, it is to be noted that one skilled in the art knows the basic structure and principle of operation of the computer system.

본 발명을 2개의 서로 다른 실시예와 관련짓지만, 이 실시예에 한정되지 않고 설명하겠다. 더욱이, 예시적 목적으로만, 본 발명을 플래시 ROM과 관련지어 설명하겠다. 주목하는 것은, 본 발명이, 예를 들면 EPROM 또는 EEPROM 등의 다른 형태의 재프로그램 가능형 비휘발성 저장매체에 적용되도록 구성될 수 있다.Although the present invention is related to two different embodiments, the present invention is not limited to this embodiment. Moreover, for purposes of illustration only, the present invention will be described in connection with flash ROM. It should be noted that the present invention can be configured to apply to other forms of reprogrammable nonvolatile storage media, such as, for example, EPROM or EEPROM.

본 발명의 제 1의 바람직한 실시예를 설명하겠다. 도 2는 본 발명의 제 1 실시예에 따른 플래시 ROM(20)의 구성을 나타낸다. 상기 플래시 ROM(20)은 코드 세그먼트(201)와 플래시 전용 영역(202)으로 이루어진다. 상기 코드 세그먼트(201)는, 상기 처리수단(14)에 의해 실행 가능한 부트 코드를 갖는 블록과, 정상 동작용 코 드를 갖는 적어도 하나의 블록으로 이루어진다. 또한, 상기 코드 세그먼트는 플래시 ROM의 플래싱을 가능하게 하는 처리수단(14)에 의해 실행되는 제 1 플래시코드를 포함한다. 상기 제 1 실시예에 의하면, 또한 코드 세그먼트(201)는 코드 세그먼트(201)의 완전도를 검사하도록 구성된 완전도 검사코드를 갖는 블록을 포함한다. 부트 코드를 갖는 블록은, 통상 코드 세그먼트(201)의 시작부분에 위치되고, 상기 완전도 검사 코드를 갖는 블록은 코드 세그먼트(201)의 끝부분에 위치되는 것이 바람직하다. 플래시 전용 영역(202)은, 특수한 플래시 전용 펌웨어를 포함하도록 구성된다. 이 펌웨어는, 상기 처리수단(14)에 의해 활성화될 수 있다. 더욱이, 그 펌웨어는, 플래싱 작동의 개시를 가능하게 최소한의 기능성만을 허용하도록 구성된다. 이 때문에, 상기 펌웨어는 플래시 ROM(20)의 플래싱을 가능하게 하는 제 2 플래시코드를 포함하여도 된다. 여기서 알아야 하는 것은, 상기 플래시 전용 영역이, 플래싱 동작이 예를 들면 정전에 의해 중단되는 경우 재시작시에만 사용되도록 구성된다는 것이다. 상기 플래시 전용 영역이 필요하지 않은 경우, 클리어 될 수 있다, 즉 그 영역을 소거하여 비울 수 있다. 이것은, 일반적으로 종래 공지된 임의의 소거 기술에 의해 달성될 수도 있다. 따라서, 상기 플래시 전용 영역의 제공으로, 플래시 ROM의 플래싱이 중단이 일어나는 경우에 상관없이 복원될 수 있다.A first preferred embodiment of the present invention will be described. 2 shows a configuration of a flash ROM 20 according to the first embodiment of the present invention. The flash ROM 20 consists of a code segment 201 and a flash only area 202. The code segment 201 is composed of a block having boot code executable by the processing means 14 and at least one block having a code for normal operation. The code segment also comprises a first flash code executed by the processing means 14 to enable flashing of the flash ROM. According to the first embodiment, the code segment 201 also includes a block having a completeness check code configured to check the completeness of the code segment 201. The block with the boot code is typically located at the beginning of the code segment 201 and the block with the integrity check code is preferably located at the end of the code segment 201. The flash only area 202 is configured to include special flash only firmware. This firmware can be activated by the processing means 14. Moreover, the firmware is configured to allow only minimal functionality to enable initiation of the flashing operation. For this reason, the firmware may include a second flash code that enables flashing of the flash ROM 20. It should be noted here that the flash only area is configured to be used only upon restart if the flashing operation is interrupted by a power failure, for example. If the flash only area is not needed, it can be cleared, that is, it can be erased and emptied. This may generally be accomplished by any erase technique known in the art. Thus, with the provision of the flash only area, flashing of the flash ROM can be restored regardless of the occurrence of interruption.

상기 제 1 실시예에 따라, 처리수단(14)은, 적어도 플래싱 동작을 개시하기 위한 코드 세그먼트에서의 제 1 플래시코드를 실행하도록 구성된다. 또한, 상기 처리수단(14)은, 플래싱 동작시에 중단이 일어난 경우, 또 다른 어드레스로의 점프에 의해 플래시 ROM의 재플래싱을 가능하게 하도록 구성된다. 중단이 끝나고 전원이 공급되는 경우, 상기 처리수단은 제 2 플래시코드를 활성화하도록 구성되어서, 상기 플래시 ROM의 플래싱을 가능하게 한다. 상기 제 1의 바람직한 실시예에 따라, 처리수단(14)은 후술한 워치독(watchdog) 레지스터를 더 구비한다.According to the first embodiment, the processing means 14 is configured to execute the first flash code in at least a code segment for starting a flashing operation. Further, the processing means 14 is configured to enable reflashing of the flash ROM by jumping to another address when an interruption occurs in the flashing operation. When the interruption is over and power is supplied, the processing means is configured to activate the second flash code, thereby enabling flashing of the flash ROM. According to the first preferred embodiment, the processing means 14 further comprises a watchdog register as described below.

도 3은 본 발명의 제 1 실시예에 따른 플래싱 방법을 설명하는 흐름도이다. 통상, 상기 처리수단(14)은, 플래시 ROM(20)의 코드 세그먼트(201)에 위치된 고정 어드레스에서의 부트 코드를 실행하기 시작한다. 상기 플래시 ROM의 펌웨어를 업그레이드 및/또는 갱신하여도 되는 플래시 ROM의 플래싱 동작이 예를 들면, 상기 제 1 플래시코드를 실행하여서 개시되는 경우, 제 2 플래시코드는 제 1 단계(310)에서 상기 플래시 전용 영역(202)에 업로드된다. 상기 제 2 플래시코드를 상기 플래시 전용 영역(202)에 업로딩, 즉 플래싱하는 경우, 제 2 플래시코드는 코드 세그먼트(201)의 플래싱을 고려하는 상기 플래시 전용영역(202)에 기록된다. 단계 320에서는, 제 2 플래시코드를 플래시 전용영역(202)에 정확히 업로드하였는지를 검증한다. 그 제 2 플래시코드가 단계 310에서 정확히 업로드되지 않은 경우, 제 2 플래시코드는 다시 상기 플래시 전용영역(202)에 업로드된다. 다시 말하면, 상기 제 2 플래시코드를 플래시 전용영역(202)에 업로드하는 단계는, 제 2 플래시코드의 업로드가 성공할 때까지 재시도된다. 한편, 제 2 플래시코드가 단계 320에서 정확히 업로드된 경우, 상기 코드 세그먼트(201)는 단계 330에서 새로운 코드로 플래싱될 수 있다. 단계 340에서는, 상기 새로운 코드가 코드 세그먼트(201)에 정확히 기록되었는지를 검증한다. 그 코드가 상기 코드 세그먼트(201)에 만족스럽게 기록되지 않은 경우, 코드 세그먼트(201)는 다시 플래싱된다. 다시 말하면, 상기 코드 세그먼 트(201)를 플래싱하는 단계는, 코드 세그먼트(201)의 플래싱이 성공할 때까지 재시도된다. 그 새로운 코드가 코드 세그먼트(201)에 만족스럽게 기록된 경우, 끝으로 상기 플래시 전용 영역(202)에 포함된 제 2 플래시코드는 단계 350에서 소거된다. 따라서, 본 방법은 플래시 ROM의 모든 코드가 완료 플래싱 후 재기록된다는 점에서 플래싱에 풀 겹쳐 쓰기를 제공한다.3 is a flowchart illustrating a flashing method according to a first embodiment of the present invention. Normally, the processing means 14 starts executing the boot code at a fixed address located in the code segment 201 of the flash ROM 20. If the flashing operation of the flash ROM which may upgrade and / or update the firmware of the flash ROM is initiated, for example, by executing the first flash code, the second flash code is flashed in the first step 310. Uploaded to dedicated area 202. When uploading, i.e., flashing, the second flash code to the flash only area 202, the second flash code is written to the flash only area 202 considering flashing of the code segment 201. In step 320, it is verified whether the second flash code is correctly uploaded to the flash dedicated area 202. If the second flash code is not uploaded correctly in step 310, the second flash code is uploaded back to the flash dedicated area 202 again. In other words, uploading the second flash code to the flash-only area 202 is retried until the upload of the second flash code is successful. On the other hand, if the second flash code is uploaded correctly in step 320, the code segment 201 may be flashed with the new code in step 330. In step 340, it is verified that the new code has been correctly written to the code segment 201. If the code is not satisfactorily recorded in the code segment 201, the code segment 201 is flashed again. In other words, flashing the code segment 201 is retried until the flashing of the code segment 201 is successful. When the new code has been satisfactorily written to the code segment 201, the second flash code included in the flash only area 202 is finally erased in step 350. Thus, the method provides full overwriting for flashing in that all code in the flash ROM is rewritten after completion flashing.

이하에서는 다수의 중단 시나리오를 도 4a 및 도 4b와 관련지어 설명하겠다. 도 4a를 참조하면, 정전 등의 중단이 단계 310 또는 320 동안, 즉 제 2 플래시코드를 플래시 전용영역(202)에 업로딩하는 단계 동안 또는 제 2 플래시코드를 정확히 업로드하였는지 검증하는 단계 동안에 일어나는 경우, 플래싱 동작의 실행은 중단될 것이다. 상기 중단이 끝나고 전원이 공급되는 경우, 상기 코드의 정상적인 실행은 단계 401에서 시작한다. 이것은, 코드 세그먼트(201)가 변경되지 않고 그 코드 세그먼트(201)에 포함된 코드가 정상 동작을 위해 필요한 전용 코드이기 때문이다. 그래서, 상기 플래싱 동작은 단계 310에서 재시작될 수 있다.In the following, a number of interruption scenarios will be described in conjunction with FIGS. 4A and 4B. Referring to FIG. 4A, if an interruption of a power failure or the like occurs during step 310 or 320, that is, during the uploading of the second flash code to the flash-only area 202 or during the step of verifying that the second flash code has been uploaded correctly, Execution of the flashing operation will be stopped. If the interruption ends and power is supplied, normal execution of the code begins at step 401. This is because the code segment 201 is not changed and the code included in the code segment 201 is a dedicated code necessary for normal operation. Thus, the flashing operation may be restarted in step 310.

도 4b를 참조하면, 중단이 단계 330 또는 340에서, 즉 코드 세그먼트(201)의 플래싱 동안에 또는, 코드 세그먼트(201)가 정확히 기록되었는지를 검증하는 단계 동안에 일어나는 경우, 상기 플래싱 동작의 실행은 중단될 것이다. 상기 중단이 끝나고 전원이 공급되는 경우, 상기 코드의 정상 실행은 단계 411에서 시작한다. 단계 412에서는, 코드 세그먼트(201)가 완전한 코드를 포함하는지를 검증한다. 코드 세그먼트(201)가 완전한 코드를 포함하는 경우 그 코드의 정상 실행은 단계 414에서 진행한다. 그래서, 플래싱은, 단계 310에서 재시작될 수 있다. 한편, 코드 세그 먼트(201)가 부정 코드를 포함하는 경우, 코드 세그먼트의 갱신된 플래싱을 위한 제 2 플래시코드가 단계 415에서 활성화된다. 그래서, 플래시 처리는, 단계 310에서 재시작될 수 있다.4B, if the interruption occurs at step 330 or 340, ie during flashing of code segment 201 or during the step of verifying that code segment 201 is correctly recorded, execution of the flashing operation may be stopped. will be. If the interruption ends and power is supplied, normal execution of the code begins at step 411. In step 412, it is verified that the code segment 201 contains complete code. If the code segment 201 contains complete code, normal execution of that code proceeds to step 414. Thus, flashing may be restarted at step 310. On the other hand, if the code segment 201 contains a negative code, the second flash code for updated flashing of the code segment is activated in step 415. Thus, the flash process can be restarted at step 310.

제 1 실시예에 따른 하나의 바람직한 국면에 의하면, 코드 세그먼트(201)가 완전한 코드를 포함하는지를 단계 413에서 검증하는 것은, 상기 완전도 검사코드 자체가 부정하지 않은 경우 코드 세그먼트(201)에 포함된 안전도 검사코드를 실행하는 단계를 포함한다. 코드 세그먼트(201)가 완전한 경우, 즉 거기에 포함된 코드가 부정하지 않은 경우, 상기 워치독 레지스터는 유효 값으로 설정된다. 더욱이, 상기 워치독 레지스터는, 처리수단(14)에 의해 검사될 수 있고, 그 워치독 레지스터가 유효 값으로 설정되지 않은 경우, 상기 코드 세그먼트가 부정하다고 가정한다. 상기 워치독 레지스터의 검사단계는, 소정의 시간 내에서 단계 412 후, 즉 상기 코드의 정상 실행 시작단계 후에 추가로 수행된다. 상기 소정의 시간은, 1초미만으로 선택되는 것이 바람직하다. 물론, 1초 이외의 소정 시간의 값은, 본 발명의 범위 내, 예를 들면, 0.5-2.5초가 가능하다. 따라서, 워치독 레지스터가 처리수단(14)에 의해 검사되기 전에 그 워치독 레지스터가 유효 값으로 설정되지 않은 경우, 코드 세그먼트(201)는 부정 코드를 포함한다. 따라서, 상기 코드의 갱신된 플래싱용 제 2 플래시코드는, 단계 415에서 활성화될 것이다. 한편, 워치독 레지스터가 적절한 때에 상기 유효 값으로 설정되는 경우, 코드 세그먼트(201)가 완전한 코드를 포함하여 그 코드의 정상 실행을 단계 414에서 진행한다고 가정한다.According to one preferred aspect according to the first embodiment, verifying in step 413 that the code segment 201 contains a complete code is included in the code segment 201 if the integrity check code itself is not negative. Executing the safety check code. If the code segment 201 is complete, i.e. the code contained therein is not negative, the watchdog register is set to a valid value. Moreover, the watchdog register can be checked by the processing means 14 and assumes that the code segment is invalid if the watchdog register is not set to a valid value. The checking of the watchdog register is further performed after step 412, i.e. after the start of normal execution of the code, within a predetermined time. It is preferable that the said predetermined time is selected to less than 1 second. Of course, the value of predetermined time other than 1 second can be 0.5-2.5 second in the range of this invention, for example. Thus, if the watchdog register is not set to a valid value before the watchdog register is checked by the processing means 14, the code segment 201 contains a negative code. Thus, the updated flash code for the flashing of the code will be activated in step 415. On the other hand, if the watchdog register is set to the valid value at the appropriate time, it is assumed that the code segment 201 proceeds in step 414, including complete code, to normal execution of that code.

상기 제 1 실시예의 일 국면에 의하면, 상기 코드 세그먼트(201)의 완전도 검사는, 코드 세그먼트(201)에 포함된 코드에 대한 검사 합(checksum)을 먼저 계산한 후 완전한 코드를 나타내는 소정의 값과 상기 검사 합을 비교하여 수행될 수 있다. 상기 검사 합이 소정 값과 동일한 경우, 코드 세그먼트(201)는 완전한 코드를 포함한다고 가정한다. 이와는 달리, 검사 합은, 코드 세그먼트(201)의 일부분에 대해서만 또는 그 코드 세그먼트(201)의 선택된 부분(예를 들면, 마지막 4바이트)에 대해서 계산된 후, 완전한 코드를 나타내는 소정의 값과 상기 계산된 검사 합을 비교할 수 있다.According to one aspect of the first embodiment, the completeness check of the code segment 201 first calculates a checksum for the code contained in the code segment 201 and then a predetermined value representing the complete code. And the check sum may be performed. If the check sum is equal to a predetermined value, it is assumed that code segment 201 contains a complete code. Alternatively, the checksum is calculated for only a portion of code segment 201 or for a selected portion of code segment 201 (e.g., the last 4 bytes), and then a predetermined value representing the complete code and the The calculated check sums can be compared.

예시를 사용하여, 중단이 단계 330에서, 즉 코드 세그먼트(201)를 플래싱하는 단계 동안 일어나는 경우, 더 이상 코드 세그먼트(201)에 완전한 코드가 없다. 그러므로, 상기 워치독 레지스터는, 적절한 때에, 즉 상기 처리수단(14)이 그 워치독 레지스터를 검사하기 전에 유효 값으로 설정되지 않는다. 따라서, 상기 처리수단(14)은, 플래시 전용 영역(202)에서의 제 2 플래시코드를 활성화하고, 따라서 그 플래싱 동작은 재시작될 수 있다. 중단이 단계 340에서, 즉 코드가 코드 세그먼트(201)에 정확히 기록되었는지를 검증하는 단계 동안에 일어나는 경우, 2개의 가능한 시나리오가 있다. 코드 세그먼트가 만족스럽게 플래싱된 경우, 상기 코드의 정상 실행이 시작할 것이다. 그 후, 완전도 검사 코드를 실행한다. 그 코드 세그먼트(201)가 완전한 코드를 포함하므로, 상기 워치독 레지스터는 적절한 때에 유효 값으로 설정된 후 상기 코드의 정상 실행이 처리될 수 있다. 따라서, 상기 플래싱 동작은, 단계 310에서 재시작될 수 있다. 한편, 코드 세그먼트(201)가 부정 코드를 포함하는 경우, 상기 완전도 검사 코드에 도달되지 않을 것이다. 따라서, 상기 워 치독 레지스터는 유효 값으로 설정되지 않아서 상기 제 2 플래시코드는 활성화된다. 소수의 바이트만 부정한 경우, 완전도 검사 코드에 도달된다. 그러나, 코드 세그먼트(201)가 부정 코드를 포함하는 것을 알게 된다. 상기 워치독 레지스터는 상기 유효 값으로 설정되지 않고 상기 제 2 플래시 코드는 활성화된다. 그 결과로, 상기 플래싱 동작을 복원하여서, 상기 코드 세그먼트(201)의 재플래싱을 가능하게 한다. 상술한 시나리오에 의해 밝혀진 것은, 정전 또는 어떠한 다른 중단이 있는 경우에도 상관없이, 항상 플래싱을 복원하는 것이 가능하다.Using an example, if an interruption occurs at step 330, ie during flashing code segment 201, there is no longer complete code in code segment 201. Therefore, the watchdog register is not set to a valid value when appropriate, i.e., before the processing means 14 examines the watchdog register. Thus, the processing means 14 activates the second flash code in the flash only area 202, so that the flashing operation can be restarted. If an interruption occurs at step 340, ie during the step of verifying that the code was correctly written to code segment 201, there are two possible scenarios. If the code segment is flashed satisfactorily, normal execution of the code will begin. After that, the integrity check code is executed. Since the code segment 201 contains complete code, the watchdog register can be set to a valid value in a timely manner before normal execution of the code can be processed. Thus, the flashing operation may be restarted at step 310. On the other hand, if the code segment 201 contains a negative code, the integrity check code will not be reached. Thus, the watchdog register is not set to a valid value so that the second flashcode is activated. If only a few bytes are negated, the completeness check code is reached. However, it is seen that code segment 201 contains a negative code. The watchdog register is not set to the valid value and the second flash code is activated. As a result, the flashing operation is restored to enable reflashing of the code segment 201. It has been found by the above-described scenario that it is possible to always restore flashing, even in the event of a power outage or any other interruption.

이하, 본 발명의 제 2 실시예를 설명하겠다. 도 5는 본 발명의 제 2 실시예에 따른 플래시 ROM(50)의 구성을 나타낸다. 이 플래시 ROM(50)은, 코드 세그먼트(501)와 플래시 전용 영역(502)을 구비한다. 이 코드 세그먼트(501)는, 상기 처리수단(14)에 의해 실행 가능한 부트 코드를 갖는 블록과, 정상 동작용 코드를 갖는 적어도 하나의 블록으로 이루어진다. 또한, 그 코드 세그먼트는, 상기 플래시 ROM의 플래싱을 가능하도록 상기 처리수단(14)에 의해 실행되는 제 1 플래시코드를 포함한다. 그러나, 상기 제 1 실시예와 대조하여, 코드 세그먼트(501)는 완전도 검사 코드를 갖는 블록을 포함하지 않는다. 상기 제 1 실시예의 경우처럼, 상기 플래시 ROM도 플래시 전용 영역을 포함한다. 상기 플래시 전용 영역(502)은, 특수 플래시 전용 펌웨어를 포함하도록 구성된다. 이러한 펌웨어는, 처리수단(14)에 의해 활성화될 수 있다. 더욱이, 상기 펌웨어는, 플래싱 동작의 개시를 가능하도록 최소의 기능만을 허용하도록 구성된다. 그러한 펌웨어의 구성으로서, 상기 펌웨어는 플래시 ROM의 플래싱을 가능하게 하는 제 2 플래시코드를 구비한다. 플래시 전용영역은 플래싱 동작이 예를 들면 정전에 의해 중단된 경우 재시작시에만 사용되도록 구성된다. 이 플래시 전용영역에 대해 필요하지 않은 경우 클리어될 수 있다, 즉 이 전용영역을 소거하여 비워질 수 있다. 이러한 플래시 전용영역(502)의 소거는, 종래에 일반적으로 공지된 임의의 소거기술에 의해 이루어질 수 있다. 상기 플래시 전용 영역의 제공은, 중단이 일어나는 경우와 상관없이, 그 플래시 ROM의 플래싱이 복원될 수 있게 한다.Hereinafter, a second embodiment of the present invention will be described. 5 shows a configuration of a flash ROM 50 according to the second embodiment of the present invention. The flash ROM 50 includes a code segment 501 and a flash dedicated area 502. This code segment 501 consists of a block having boot code executable by the processing means 14 and at least one block having code for normal operation. The code segment also comprises a first flash code executed by the processing means 14 to enable flashing of the flash ROM. However, in contrast to the first embodiment above, the code segment 501 does not include a block having a completeness check code. As in the case of the first embodiment, the flash ROM also includes a flash only area. The flash only area 502 is configured to include special flash only firmware. Such firmware may be activated by the processing means 14. Moreover, the firmware is configured to allow only minimal functionality to enable initiation of the flashing operation. As a configuration of such firmware, the firmware has a second flash code that enables flashing of the flash ROM. The flash dedicated area is configured to be used only at restart if the flashing operation is interrupted by, for example, a power failure. It can be cleared if it is not needed for this flash dedicated area, i.e. it can be emptied by erasing this dedicated area. The erasing of the flash dedicated area 502 can be accomplished by any erasing technique generally known in the art. Provision of the flash only area allows flashing of the flash ROM to be restored, regardless of when an interruption occurs.

제 2 실시예에 따라서, 상기 처리수단(14)은, 코드 세그먼트(501)의 완전도를 검사하도록 구성된다. 이 처리수단은, 예를 들면 코드 세그먼트에 포함된 코드에 대한 검사 합을 계산하고, 이 검사 합을 완전한 코드를 나타내는 소정의 값과 비교하여 검사를 행할 수 있다. 일치하는 경우, 즉 상기 검사 합이 소정의 값인 경우, 그 코드 세그먼트는 완전한 코드를 포함한다고 한다. 이와는 달리, 상기 검사 합은, 코드 세그먼트(501)의 일부분에 대해서만 또는 코드 세그먼트(501)의 선택된 부분(예를 들면, 마지막 4바이트)에 대해서 계산될 수 있다. 상기 처리수단(14)은, 플래싱 동작을 개시하기 위한 코드 세그먼트에서의 제 1 플래시코드를 실행하도록 더 구성된다. 또한, 본 발명의 제 1 실시예의 경우처럼, 상기 처리수단(14)은, 이전의 플래싱 동작시에 중단이 일어난 경우 또 다른 어드레스로 점프함으로써 상기 플래시 ROM의 재플래싱을 가능하도록 구성된다. 중단이 종료하고 전원이 공급된 경우, 상기 처리수단은 제 2 플래시코드를 활성화하도록 구성되어서, 그 플래시 ROM의 플래싱을 가능하게 한다.According to the second embodiment, the processing means 14 is configured to check the completeness of the code segment 501. This processing means can, for example, calculate a checksum for a code included in a code segment, and perform the check by comparing this checksum with a predetermined value representing a complete code. If there is a match, that is, if the check sum is a predetermined value, the code segment is said to contain the complete code. Alternatively, the checksum may be calculated for only a portion of code segment 501 or for a selected portion of code segment 501 (eg, the last 4 bytes). The processing means 14 is further configured to execute the first flash code in the code segment for initiating the flashing operation. Further, as in the case of the first embodiment of the present invention, the processing means 14 is configured to enable reflashing of the flash ROM by jumping to another address when an interruption occurs in the previous flashing operation. When the interruption ends and power is supplied, the processing means is configured to activate the second flash code, thereby enabling flashing of the flash ROM.

도 6 및 도 7은 2개의 흐름도로, 제 2 실시예에 따른 플래싱 방법을 나타낸 다. 통상, 상기 처리수단(14)은, 코드 세그먼트(501)에 위치된 고정 어드레스에서의 부트 코드를 실행 개시한다. 그러나, 제 2 실시예에 따라, 상기 처리수단(14)은, 먼저 단계 610에서 코드 세그먼트(501)가 완전한 코드를 포함하는지를 검증한다.6 and 7 are two flowcharts illustrating a flashing method according to a second embodiment. Normally, the processing means 14 starts executing the boot code at the fixed address located in the code segment 501. However, according to the second embodiment, the processing means 14 first verifies in step 610 that the code segment 501 contains a complete code.

상기 단계 610에서 그 코드 세그먼트(501)가 완전한 코드를 포함한다고 검증된 경우, 상기 코드의 정상 실행은 단계 620에서 진행될 것이다. 도 7을 참조하여, 플래싱은 단계 710부터 개시될 수 있다. 따라서, 플래시 ROM(50)의 펌웨어를 업그레이드 및/또는 갱신할 수도 있는 플래시 ROM(50)의 플래싱이 예를 들면 제 1 플래시코드를 실행함으로써 나중에 개시되는 경우, 제 2 플래시코드는, 단계 710에서 플래시 전용영역(502)에 업로드된다. 제 2 플래시코드를 상기 플래시 전용영역(502)에 업로딩, 즉 플래싱시에, 제 2 플래시코드는 코드 세그먼트(501)의 플래싱을 고려하는 상기 플래시 전용영역(502)에 기록된다. 단계 720에서는, 정확히 플래시 전용영역(502)에 제 2 플래시코드가 업로드되었는지를 검증한다. 상기 제 2 플래시코드가 단계 710에서 정확히 업로드되지 않은 경우, 제 2 플래시코드는 상기 플래시 전용영역(502)에 다시 업로드된다. 달리 말하면, 상기 제 2 플래시코드를 플래시 전용영역(502)에 업로드하는 단계는, 제 2 플래시코드의 업로딩이 성공적일 때까지 재시도된다. 상기 제 2 플래시코드가 정확히 업로드된 경우, 코드 세그먼트(501)는 단계 730에서 새로운 코드로 플래싱될 수 있다. 단계 740에서는, 그 새로운 코드가 코드 세그먼트(501)에 정확히 기록되었는지를 검증한다. 그 코드가 만족스럽게 코드 세그먼트(501)에 기록되지 않은 경우, 코드 세그먼트(501)는 다시 플래싱된다. 달리 말하면, 코드 세그먼트(501)를 플래싱하는 단계는, 상기 코드 세그먼트의 플래싱이 성공적일 때까지 재시도될 것이다. 끝으로, 단계 750에서는, 그 코드가 만족스럽게 코드 세그먼트(501)에 기록되는 경우, 그 플래시 전용영역(502)에 포함된 제 2 플래시코드를 소거한다.If in step 610 the code segment 501 is verified to contain complete code, normal execution of the code will proceed in step 620. With reference to FIG. 7, flashing may begin from step 710. Thus, if the flashing of the flash ROM 50, which may upgrade and / or update the firmware of the flash ROM 50, is initiated later, for example by executing the first flash code, the second flash code may be entered in step 710. Uploaded to the flash dedicated area 502. When uploading, i.e. flashing, a second flash code to the flash only area 502, the second flash code is written to the flash only area 502 taking into account flashing of the code segment 501. In step 720, it is verified whether the second flash code has been uploaded to the flash dedicated area 502 correctly. If the second flash code is not uploaded correctly in step 710, the second flash code is uploaded back to the flash dedicated area 502. In other words, uploading the second flash code to the flash-only area 502 is retried until the upload of the second flash code is successful. If the second flash code is uploaded correctly, the code segment 501 may be flashed with the new code in step 730. In step 740, it is verified that the new code has been correctly written to the code segment 501. If the code is not satisfactorily written to the code segment 501, the code segment 501 is flashed again. In other words, flashing the code segment 501 will be retried until the flashing of the code segment is successful. Finally, in step 750, if the code is satisfactorily recorded in the code segment 501, the second flash code included in the flash dedicated area 502 is erased.

단계 610에서 코드 세그먼트(501)가 불완전 코드, 즉 부정 코드를 포함하는 것이 검증되는 경우, 그 코드의 정상 실행은 진행되지 않는다. 대신에, 제 2 플래시코드는 단계 630에서 활성화되어서 코드 세그먼트(501)는 단계 640에서 플래싱된다. 다음의 단계 650에서는, 그 플래싱이 만족스러운지, 즉 코드가 정확히 코드 세그먼트(501)에 기록되었는지를 검증한다. 그 코드가 정확히 코드 세그먼트(501)에 기록되지 않은 경우, 코드 세그먼트(501)는 다시 플래싱된다. 달리 말하면, 코드 세그먼트(501)를 플래싱하는 단계는, 코드 세그먼트(501)의 플래싱이 성공할 때까지 재시도된다. 끝으로, 그 코드가 만족스럽게 코드 세그먼트(501)에 기록되었다고 검증되는 경우, 플래시 전용영역(502)에 포함된 제 2 플래시코드는 단계 660에서 소거된다.If it is verified in step 610 that the code segment 501 contains incomplete code, i.e., a negative code, normal execution of that code does not proceed. Instead, the second flashcode is activated at step 630 so that the code segment 501 is flashed at step 640. In the next step 650, it is verified whether the flashing is satisfactory, that is, the code is correctly recorded in the code segment 501. If the code is not correctly written to code segment 501, code segment 501 is flashed again. In other words, flashing the code segment 501 is retried until the flashing of the code segment 501 is successful. Finally, if it is verified that the code has been satisfactorily written to the code segment 501, the second flash code included in the flash dedicated area 502 is erased in step 660.

제 2 실시예의 바람직한 국면에 의하면, 상기 단계 650에서 코드 세그먼트(501)가 정확히 기록되었는지를 검증하는 것은, 코드 세그먼트(501)에 기록되어야 하는 코드를 포함한 또 다른 저장매체에 포함된 코드와, 상기 코드 세그먼트(501)에 기록되는 코드를 비교하여 이루어질 수 있다. 이 또 다른 저장매체는, 바람직하게는 RAM일 수 있다. 상기 설명으로부터 명백한 것은, 본 발명의 제 2 실시예도 플래시 ROM(50)의 모든 코드가 완료된 플래싱 후 재기록된다는 점에서 플래 싱에 풀 겹쳐 쓰기를 제공한다는 것이다.According to a preferred aspect of the second embodiment, verifying that the code segment 501 has been recorded correctly in step 650 comprises the code contained in another storage medium including the code to be recorded in the code segment 501, and This can be done by comparing the codes recorded in the code segment 501. This another storage medium may preferably be RAM. It is clear from the above description that the second embodiment of the present invention also provides full overwriting for flashing in that all the codes of the flash ROM 50 are rewritten after completion of flashing.

이하의 설명에서는 다수의 중단 시나리오를 설명하겠다.The following discussion describes a number of abort scenarios.

중단이 단계 630 또는 640에서, 즉 플래시코드의 활성화시 또는 코드 세그먼트(501)의 플래싱시에 일어나는 경우, 플래싱 동작의 실행은 중단된다. 그 중단이 끝나고 전원이 공급되는 경우, 상기 처리수단(14)은 단계 610에서 재시작하여 코드 세그먼트(501)가 부정한 것을 상기 완전도 검사를 통해 검출한다. 그래서, 단계 630에서는 상기 제 2 플래시코드를 활성화하여서, 단계 640에서는 코드 세그먼트(501)를 플래싱하는데 고려한다.If the interruption occurs at step 630 or 640, ie upon activation of the flashcode or flashing the code segment 501, execution of the flashing operation is stopped. When the interruption is over and power is supplied, the processing means 14 restarts at step 610 and detects through the completeness check that the code segment 501 is invalid. Thus, in step 630, the second flash code is activated, and in step 640, the code segment 501 is considered for flashing.

중단이 단계 650에서, 즉 코드 세그먼트(501)가 정확히 기록되었는지를 검증하는 단계에서 일어나는 경우, 상기 플래싱 동작의 실행은 중단된다. 2가지 가능성이 있다. 상기 중단이 끝나고 전원이 공급되는 경우, 단계 610에서의 완전도 검사부터 시작한다. 코드 세그먼트(501)가 만족스럽게 플래싱된 경우, 상기 코드의 정상 실행은 상기 코드 세그먼트가 완전한 코드를 포함하므로 단계 620에서 시작한다. 따라서, 상기 플래싱은 단계 710부터 재시작될 수 있다. 코드 세그먼트(501)가 만족스럽게 플래싱되지 않은 경우, 단계 630에서는 제 2 플래시코드를 활성화하여서 단계 640에서는 그 코드 세그먼트(501)를 플래싱하는데 고려한다.If an interruption occurs in step 650, i.e., verifying that the code segment 501 has been recorded correctly, execution of the flashing operation is stopped. There are two possibilities. When the interruption is over and power is supplied, the completeness check at step 610 begins. If the code segment 501 is satisfactorily flashed, normal execution of the code begins at step 620 since the code segment contains complete code. Thus, the flashing can be restarted from step 710. If the code segment 501 has not been satisfactorily flashed, it is considered to activate the second flash code at step 630 and to flash the code segment 501 at step 640.

중단이 단계 710 또는 720에서, 즉 상기 제 2 플래시코드를 플래시 전용영역(502)에 업로딩할 때 또는 제 2 플래시코드가 정확히 업로드되었는지를 검증할 때 일어나는 경우, 상기 플래싱 동작의 실행은 중단된다. 그 중단이 끝나고 전원이 공급되는 경우, 상기 처리수단(14)은 단계 610의 완전도 검사로 재시작한다. 단계 610에서는, 코드 세그먼트(501)가 완전한 코드를 포함하는지를 판정한다. 이것은, 코드 세그먼트(501)가 변하지 않기 때문이다. 그래서, 상기 코드의 정상 실행은, 단계 620에 따라 진행된다. 그래서, 플래싱은 단계 710로부터 재시작될 수 있다.If an interruption occurs in step 710 or 720, i.e. when uploading the second flashcode to the flash-only area 502 or verifying that the second flashcode has been uploaded correctly, execution of the flashing operation is stopped. When the interruption is over and power is supplied, the processing means 14 restarts with a completeness check of step 610. In step 610, it is determined whether the code segment 501 contains a complete code. This is because the code segment 501 does not change. Thus, normal execution of the code proceeds according to step 620. Thus, flashing can be restarted from step 710.

중단이 단계 730에서, 즉 코드 세그먼트(501)를 플래싱하는 단계에서 일어나는 경우, 상기 플래싱 동작의 실행은 중단된다. 그 중단이 끝나고 전원이 공급되는 경우, 상기 처리는 단계 610의 완전도 검사로 재시작한다. 단계 610에서는, 코드 세그먼트(501)가 부정 코드를 포함하는지를 판정한다. 따라서, 단계 630에서는 제 2 플래시코드를 활성화하여서 단계 640에서는 코드 세그먼트(501)의 플래싱을 고려한다.If the interruption occurs in step 730, i.e., flashing the code segment 501, execution of the flashing operation is stopped. If the interruption ends and power is supplied, the process restarts with a completeness check of step 610. In step 610, it is determined whether the code segment 501 contains a negative code. Accordingly, in step 630, the second flash code is activated, and in step 640, flashing of the code segment 501 is considered.

중단이 단계 740에서, 즉 코드가 코드 세그먼트(501)에 정확히 기록되는지를 검증하는 단계에서 일어나는 경우, 상기 플래싱 동작의 실행은 중단된다. 그 중단이 끝나고 전원이 공급되는 경우, 단계 610에서의 완전도 검사로 시작한다. 2가지 가능성이 있다. 코드 세그먼트(501)가 단계 730에서 만족스럽게 플래싱된 경우, 단계 620에서는, 코드 세그먼트(501)가 완전한 코드를 포함하므로 상기 코드의 정상 실행을 시작한다. 따라서, 단계 710부터 플래싱을 재시작할 수 있다. 코드 세그먼트(501)가 만족스럽게 플래싱되지 않은 경우, 즉 코드 세그먼트(501)가 부정 코드를 포함하는 경우, 단계 610에서는 코드 세그먼트(501)가 부정한 것을 검증한다. 그래서, 단계 630에서는 상기 플래시 전용영역(502)에 포함된 제 2 플래시코드를 활성화하여서 본 발명의 제 2 실시예에 따른 단계 640에서는 코드 세그먼트(501)의 플래싱을 고려한다.If the interruption occurs at step 740, i.e., verifying that the code is correctly written to the code segment 501, execution of the flashing operation is stopped. If the interruption ends and power is supplied, the completeness check in step 610 begins. There are two possibilities. If the code segment 501 has been satisfactorily flashed at step 730, then at step 620, the code segment 501 contains complete code and thus starts normal execution of the code. Thus, flashing can be restarted from step 710. If the code segment 501 has not been satisfactorily flashed, that is, if the code segment 501 contains a negative code, then at step 610 it is verified that the code segment 501 is invalid. Thus, in step 630, the flashing of the code segment 501 is considered in step 640 according to the second embodiment of the present invention by activating the second flash code included in the flash dedicated area 502.

상술한 시나리오에 의해 밝혀진 것은, 정전 또는 임의의 다른 중단이 있는 경우와 상관없이, 제 2 실시예에 따른 플래싱을 복원하는 것이 항상 가능하다는 것이다.It has been found by the above-described scenario that it is always possible to restore flashing according to the second embodiment, regardless of the case of a power outage or any other interruption.

본 발명의 일 국면에 따라, 상기 플래시코드가 정확히 업로드되었는지를 검증하는 단계는, 플래시 전용영역에 업로드되어야 하는 코드를 포함한 예를 들면 RAM과 같은 또 다른 저장매체에 포함된 코드와, 플래시 전용영역에 업로드된 플래시코드를 비교하여 이루어진다.According to one aspect of the invention, the step of verifying that the flash code has been uploaded correctly includes code included in another storage medium, such as, for example, RAM, including code that must be uploaded to a flash only area, and a flash only area. This is done by comparing the Flash code uploaded to.

본 발명의 또 다른 국면에 따라, 상기 코드 세그먼트가 정확히 기록되었는지를 검증하는 단계는, 코드 세그먼트에 기록되는 코드를 포함한 예를 들면 RAM과 같은 또 다른 저장매체에 포함된 코드와, 코드 세그먼트에 기록된 코드를 비교하여 이루어진다.According to another aspect of the invention, verifying that the code segment has been recorded correctly comprises writing the code contained in another storage medium such as, for example, RAM, including the code recorded in the code segment, and the code segment. By comparing the generated code.

상술한 비교단계는, 바람직하게는 바이트 단위의 비교를 수행하여 이루어질 수 있다. 이는, 이진워드를 비교하여 이루어지고 이 비교된 바이트가 서로 동일한지를 판정할 수 있다. 그 바이트가 서로 동일한 경우, 상기또 다른 저장매체에 있는 코드가 비휘발성 저장매체의 코드에 해당한다고 가정한다. 이와는 달리, 상기 또 다른 저장매체의 코드에 대한 제 1 검사 합과, 비휘발성 저장매체의 코드에 대한 제 2 검사 합을 계산하는 것이 가능하다. 그 후, 이들 검사 합을 비교한다. 그 검사 합이 서로 동일한 경우, 상기 또 다른 저장매체의 코드가 상기 비휘발성 저장매체의 코드에 해당한다고 가정한다. 또 다른 대안은, 상기 비휘발성 저장매체의 코드에 대한 검사 합을 계산하고 이 검사 합을 비휘발성 저장매체에 기록되는 코드 를 나타낸 소정의 값과 비교하는데 있다.The above-described comparison step may be preferably performed by performing a byte unit comparison. This can be done by comparing the binary words and determining whether these compared bytes are equal to each other. If the bytes are identical to each other, it is assumed that the code in the another storage medium corresponds to the code of the nonvolatile storage medium. Alternatively, it is possible to calculate a first check sum for the code of the another storage medium and a second check sum for the code of the non-volatile storage medium. Thereafter, these check sums are compared. If the check sums are the same, it is assumed that the code of the another storage medium corresponds to the code of the nonvolatile storage medium. Another alternative is to calculate a checksum for the code of the nonvolatile storage medium and compare this checksum with a predetermined value representing a code written to the nonvolatile storage medium.

상기 설명은 완전한 개시 내용에 대한 본 발명의 2개의 바람직한 실시예에 초점을 맞추었지만, 그래서 첨부된 청구항은 한정되지 않고 여기서 제시한 기본 내용 범위 내에 정당하게 속하는 당업자에게 일어날 수도 있는 모든 변경 및 다른 구성을 이용하는 것으로서 해석되어야 한다. 이를테면, 컴퓨터가 본 명세서에 기재된 방법을 수행하도록 하는 프로그램 명령어를 포함한 컴퓨터 프로그램은, 본 개시내용의 범위 내에 속하는 것으로서 해석되어야 한다. 또한, 컴퓨터가 본 명세서에 기재된 방법을 수행하도록 하는 프로그램 명령어를 포함한 컴퓨터 프로그램을 갖는 서로 다른 종류의 매체도, 본 개시내용의 범위 내에 속하는 것으로서 해석되어야 한다. 그러므로, 예를 들면 펌웨어, 기록매체, 컴퓨터 메모리, 판독전용 메모리 또는 전기 캐리어 신호 등의 임의의 매체도 본 개시내용의 범위 내에 속하는 것으로서 해석되어야 한다. 본 설명은 플래시 ROM에 초점을 맞추었지만, 본 발명도 예를 들면 EPROM 또는 EEPROM과 같은 다른 재프로그램 가능한 비휘발성 저장매체와 함께 사용될 수 있다.While the foregoing description has focused on two preferred embodiments of the invention for the complete disclosure, it is intended that the appended claims not be limited, and all changes and other constructions that would otherwise occur to those skilled in the art that fall within the scope of the basic subject matter presented herein. Should be interpreted as using. For example, a computer program including program instructions that cause a computer to perform the methods described herein should be interpreted as falling within the scope of the present disclosure. In addition, different types of media having computer programs, including program instructions, for causing a computer to perform the methods described herein, should also be construed as falling within the scope of the present disclosure. Therefore, any medium such as, for example, firmware, record carrier, computer memory, read only memory or electric carrier signal should also be construed as falling within the scope of the present disclosure. Although the description focuses on flash ROM, the invention may also be used with other reprogrammable non-volatile storage media such as, for example, EPROM or EEPROM.

특히, 본 발명은 광 드라이버에서 사용될 수 있고/사용되어야 한다. 바람직하게는, PHILIPS SEMICONDUCTORS의 'dataref5' 기준 설계에서 사용될 수 있다. 본 발명이 사용될 수 있고/사용되어야 하는 다수의 가능한 애플리케이션이 있다. 예를 들면, 본 발명은, 퍼스널 컴퓨터, 이동휴대전화, 스마트폰, 개인 휴대용 정보 단말기(PDA), 전자장비, 스마트 전자기기 및 부엌, 청소 및 옥외용 설비, 민수용 전자장치, 예를 들어 디지털 카메라 등 등의 촬상장치 등의 애플리케이션에서 사용될 수 있고/사용되어야 한다, 이때 이들 애플리케이션은 재프로그램 가능한 비휘발성 메모리를 이용한다. 따라서, 입력수단과, 출력수단과, 저장수단과, 상기 애플리케이션이 본 명세서에 기재된 방법을 수행하도록 하는 프로그램 명령어를 포함한 컴퓨터 프로그램을 실행하도록 구성된 처리수단을 구비한 모든 애플리케이션은, 본 개시 내용의 범위 내에 속하는 것으로서 해석되어야 한다. 끝으로, 주목하는 것은, 이하 첨부된 청구항 전체에 걸쳐서 사용된 참조부호가 본 발명의 범위를 한정하는 것으로서 해석되어서는 안 된다는 것이다.In particular, the invention can and / or should be used in optical drivers. Preferably, it can be used in the 'dataref5' reference design of PHILIPS SEMICONDUCTORS. There are a number of possible applications in which the present invention can and should be used. For example, the present invention provides a personal computer, a mobile phone, a smartphone, a personal digital assistant (PDA), electronic equipment, smart electronic devices and a kitchen, cleaning and outdoor equipment, a civil electronic device such as a digital camera, and the like. And / or should be used in applications such as imaging devices, etc., where these applications utilize reprogrammable non-volatile memory. Accordingly, all applications having input means, output means, storage means, and processing means configured to execute computer programs including program instructions for causing the application to perform the methods described herein are intended to be within the scope of the present disclosure. It should be interpreted as belonging within. Finally, it should be noted that reference signs used throughout the appended claims should not be construed as limiting the scope of the invention.

Claims (27)

재프로그램 가능형 비휘발성 저장매체의 플래싱 방법으로서,A flashing method of a reprogrammable nonvolatile storage medium, 플래시코드를 상기 저장매체의 플래시 전용영역에 업로드하는 단계(310)와,Uploading the flash code to a flash dedicated area of the storage medium (310); 상기 플래시코드가 정확히 업로드되었는지를 검증하는 단계(320)와,Verifying 320 that the flash code has been uploaded correctly; 정확히 업로드된 경우, 상기 저장매체의 코드 세그먼트를 플래싱하는 단계(330)와,If correctly uploaded, flashing the code segment of the storage medium (330); 상기 코드 세그먼트가 정확히 기록되었는지를 검증하되, 상기 코드 세그먼트가 정확히 기록되지 않은 경우, 코드 세그먼트를 다시 플래싱하는 단계(340)를 포함한 것을 특징으로 하는 플래싱 방법.Verifying that the code segment was recorded correctly, but if the code segment was not recorded correctly, flashing the code segment again (340). 제 1 항에 있어서,The method of claim 1, 상기 방법은, 상기 플래시코드가 정확히 업로드되지 않은 경우,The method, if the flash code is not uploaded correctly, 상기 플래시코드를 상기 플래시 전용영역에 다시 업로드하는 단계(310)를 더 포함한 것을 특징으로 하는 플래싱 방법.And uploading (310) the flash code back to the flash dedicated area. 제 1 항 또는 제 2 항에 있어서,The method according to claim 1 or 2, 상기 방법은, 상기 코드 세그먼트가 정확히 기록된 경우,The method, if the code segment is recorded correctly, 상기 플래시 전용영역의 플래시코드를 소거하는 단계(350)를 더 포함한 것을 특징으로 하는 플래싱 방법.And erasing (350) the flash code of the flash dedicated area. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 3, 상기 플래시코드를 업로드하는 단계 동안에 또는, 상기 플래시코드가 정확히 업로드되었는지를 검증하는 단계 동안에 중단된 후, 상기 방법은, 상기 코드의 정상 실행을 재시작하는 단계(401)를 더 포함한 것을 특징으로 하는 플래싱 방법.Flashing characterized in that after the step of uploading the flashcode or interrupted during the step of verifying that the flashcode has been uploaded correctly, the method further comprises the step (401) of restarting normal execution of the code. Way. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 4, 상기 코드 세그먼트를 플래싱하는 단계 동안에 또는, 상기 코드 세그먼트가 정확히 기록되었는지를 검증하는 단계 동안에 중단된 후, 상기 방법은,After interrupting during the flashing of the code segment or during the step of verifying that the code segment has been recorded correctly, the method further comprises: 상기 코드의 정상 실행을 재시작하는 단계(411)와,Resuming normal execution of the code (411); 상기 코드 세그먼트가 완전한 코드를 포함하는지를 검증하는 단계(412)를 더 포함하고, 완전한 코드를 포함하지 않는 경우, 코드 세그먼트의 갱신된 플래싱에 대한 상기 플래시코드를 활성화하고(414), 완전한 코드를 포함하는 경우,Verifying (412) if the code segment contains complete code, and if it does not contain complete code, activates (414) the flashcode for updated flashing of the code segment and includes the complete code If you do, 상기 코드의 정상 실행으로 진행하는(413) 것을 특징으로 하는 플래싱 방법.And proceeding (413) to normal execution of the code. 제 5 항에 있어서,The method of claim 5, 상기 코드 세그먼트가 완전한 코드를 포함하는지를 검증하는 단계는,Verifying that the code segment contains complete code, 본 완전도 검사 코드가 부정하지 않은 경우 코드 세그먼트에서의 완전도 검사 코드를 실행하여서, 그 코드 세그먼트에 포함된 코드의 완전도를 검사하는 단계와,If the completeness check code is not negative, executing the completeness check code in the code segment to check the completeness of the code contained in the code segment, 상기 코드 세그먼트가 완전한 경우 워치독 레지스터를 유효 값으로 설정하는 단계와,Setting a watchdog register to a valid value if the code segment is complete; 상기 워치독 레지스터를, 상기 코드의 정상 실행 재시작 단계 후 소정 시간 내에서 검사하는 단계를 포함한 것을 특징으로 하는 플래싱 방법.And checking the watchdog register within a predetermined time after the step of restarting the normal execution of the code. 제 6 항에 있어서,The method of claim 6, 상기 방법은,The method, 상기 워치독 레지스터가 유효할 때 코드의 정상 실행으로 진행하는 단계와, 그렇지 않은 경우Proceeding to normal execution of the code when the watchdog register is valid; otherwise 상기 코드 세그먼트의 갱신된 플래싱용 상기 플래시코드를 활성화하는 단계를 더 포함한 것을 특징으로 하는 플래싱 방법.Activating the flashcode for updated flashing of the code segment. 제 6 항 또는 제 7 항에 있어서,The method according to claim 6 or 7, 상기 코드 세그먼트에 포함된 코드의 완전도를 검사하는 단계는,Examining the completeness of the code included in the code segment, 상기 코드 세그먼트에 포함된 코드에 대한 검사 합을 계산하는 단계와,Calculating a checksum for a code included in the code segment; 완전한 코드를 나타내는 소정 값과 상기 검사 합을 비교하는 단계를 포함한 것을 특징으로 하는 플래싱 방법.Comparing said check sum with a predetermined value representing a complete code. 제 1 항에 있어서,The method of claim 1, 상기 방법은, 플래시코드를 업로드하는 단계 이전에,The method, before uploading the flashcode, 코드 세그먼트가 완전한 코드를 포함하는지를 검증하여(610), 완전하지 않은 경우 상기 플래시코드를 활성화하고(630) 상기 코드 세그먼트를 플래싱하는(640) 단계를 더 포함한 것을 특징으로 하는 플래싱 방법.Verifying (610) if the code segment contains complete code, activating (630) the flashcode if it is not complete, and flashing (640) the code segment. 제 9 항에 있어서,The method of claim 9, 상기 코드 세그먼트가 완전한 코드를 포함하는지를 검증하는 단계는,Verifying that the code segment contains complete code, 상기 코드 세그먼트에 포함된 코드에 대한 검사 합을 계산하는 단계와,Calculating a checksum for a code included in the code segment; 완전한 코드를 나타내는 소정 값과 상기 검사 합을 비교하는 단계를 포함한 것을 특징으로 하는 플래싱 방법.Comparing said check sum with a predetermined value representing a complete code. 제 9 항 또는 제 10 항에 있어서,The method according to claim 9 or 10, 상기 방법은,The method, 코드 세그먼트가 정확히 기록되었는지를 검증하여(650), 정확히 기록되지 않은 경우 그 코드 세그먼트를 다시 플래싱하는(640) 단계를 더 포함한 것을 특징으로 하는 플래싱 방법.Verifying (650) that the code segment was recorded correctly and flashing (640) the code segment if it was not recorded correctly. 제 11 항에 있어서,The method of claim 11, 상기 코드 세그먼트가 정확히 기록되었는지를 검증하는 단계는,Verifying that the code segment is recorded correctly, 상기 코드 세그먼트에 기록되는 코드를 포함한 또 다른 저장매체에 포함된 코드와, 상기 코드 세그먼트에 기록된 코드를 비교하는 단계를 포함한 것을 특징으로 하는 플래싱 방법.And comparing the code recorded in another storage medium including the code recorded in the code segment with the code recorded in the code segment. 제 11 항 또는 제 12 항에 있어서,The method according to claim 11 or 12, 상기 방법은, 코드 세그먼트가 정확히 기록된 경우,The method, if the code segment is recorded correctly, 상기 플래시 전용영역의 플래시코드를 소거하는 단계(660)를 더 포함한 것을 특징으로 하는 플래싱 방법.And erasing (660) the flash code of the flash dedicated area. 제 9 항에 있어서,The method of claim 9, 상기 방법은, 코드 세그먼트가 완전한 코드를 포함하는 경우,If the code segment contains complete code, 상기 코드의 정상 실행으로 진행하는 단계(620)를 포함한 것을 특징으로 하는 플래싱 방법.And proceeding to normal execution of the code (620). 제 9 항 내지 제 14 항 중 어느 한 항에 있어서,The method according to any one of claims 9 to 14, 중단된 후의 상기 방법은,The method after the interruption, 코드 세그먼트가 청구항 9에 따른 완전한 코드를 포함하는지를 검증하는 단계(610)에서 재시작하는 것을 특징으로 하는 플래싱 방법.And restarting at step (610) verifying that the code segment comprises the complete code according to claim 9. 제 1 항 내지 제 15 항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 15, 상기 플래시코드가 정확히 업로드되었는지를 검증하는 단계는,Verifying that the flash code has been uploaded correctly, 상기 플래시 전용영역에 업로드되는 코드를 포함한 또 다른 저장매체에 포함된 코드와, 상기 플래시 전용영역에 업로드된 플래시코드를 비교하는 단계를 포함한 것을 특징으로 하는 플래싱 방법.And comparing the code included in another storage medium including the code uploaded to the flash dedicated area with the flash code uploaded to the flash dedicated area. 제 1 항 내지 제 16 항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 16, 상기 코드 세그먼트가 정확히 기록되었는지를 검증하는 단계는,Verifying that the code segment is recorded correctly, 상기 코드 세그먼트에 기록되는 코드를 포함한 또 다른 저장매체에 포함된 코드와, 상기 코드 세그먼트에 기록된 코드를 비교하는 단계를 포함한 것을 특징으로 하는 플래싱 방법.And comparing the code recorded in another storage medium including the code recorded in the code segment with the code recorded in the code segment. 제 16 항 또는 제 17 항에 있어서,The method according to claim 16 or 17, 상기 비교단계는 바이트 단위의 비교를 수행하여 행해지는 것을 특징으로 하는 플래싱 방법.And the comparing step is performed by performing a byte unit comparison. 제 16 항 또는 제 17 항에 있어서,The method according to claim 16 or 17, 상기 비교단계는,The comparing step, 상기 또 다른 저장매체의 코드에 대한 제 1 검사 합을 계산하고,Calculate a first check sum for the code of the another storage medium, 상기 비휘발성 저장매체의 코드에 대한 제 2 검사 합을 계산하고,Calculate a second check sum for a code of the non-volatile storage medium, 상기 제 1 검사 합과 제 2 검사 합을 비교하여 수행되는 것을 특징으로 하는 플래싱 방법.And performing a comparison by comparing the first and second check sums. 제 16 항 또는 제 17 항에 있어서,The method according to claim 16 or 17, 상기 비교단계는,The comparing step, 상기 비휘발성 저장매체의 코드에 대한 검사 합을 계산하고,Calculate a checksum for a code of the non-volatile storage medium, 상기 비휘발성 저장매체에 기록되는 코드를 나타낸 소정의 값과, 상기 검사 합을 비교하여 수행되는 것을 특징으로 하는 플래싱 방법.And comparing the check sum with a predetermined value representing a code recorded on the nonvolatile storage medium. 제 1 항 내지 제 20 항 중 어느 한 항에 있어서,The method according to any one of claims 1 to 20, 상기 중단은 정전인 것을 특징으로 하는 플래싱 방법.And said interruption is a power failure. 컴퓨터가 청구항 1-21 중 어느 한 항의 방법을 수행하기 위한 프로그램 명령어를 구비한 컴퓨터 판독 가능형 프로그램.A computer readable program having program instructions for a computer to perform the method of any one of claims 1-21. 컴퓨터가 청구항 1-21 중 어느 한 항의 방법을 수행하기 위한 컴퓨터 실행 가능한 명령어를 구비한 컴퓨터 판독 가능형 프로그램을 갖는 매체.A medium having a computer readable program having computer executable instructions for performing a method of any one of claims 1-21. 제 23 항에 있어서,The method of claim 23, 상기 매체는, 펌웨어, 기록매체, 컴퓨터 메모리, 판독전용 메모리 또는 전기 캐리어 신호인 것을 특징으로 하는 매체.The medium is a firmware, a recording medium, a computer memory, a read-only memory or an electric carrier signal. 제 23 항에 있어서,The method of claim 23, 상기 매체는, 재프로그램 가능형 비휘발성 저장매체인 것을 특징으로 하는 매체.And the medium is a reprogrammable nonvolatile storage medium. 제 23 항에 있어서,The method of claim 23, 상기 재프로그램 가능형 비휘발성 저장매체는, EPROM, EEPROM 또는 플래시 ROM인 것을 특징으로 하는 매체.And the reprogrammable nonvolatile storage medium is an EPROM, EEPROM or flash ROM. 입력수단과, 출력수단과, 저장수단과, 청구항 22에 따른 컴퓨터 판독 가능형 프로그램을 실행하도록 구성된 처리수단을 구비한 것을 특징으로 하는 컴퓨터 시스템.A computer system comprising an input means, an output means, a storage means, and processing means configured to execute a computer readable program according to claim 22.
KR1020077002161A 2004-06-29 2005-06-23 Safe flashing KR20070032031A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020077002161A KR20070032031A (en) 2004-06-29 2005-06-23 Safe flashing

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP04103028.9 2004-06-29
KR1020077002161A KR20070032031A (en) 2004-06-29 2005-06-23 Safe flashing

Publications (1)

Publication Number Publication Date
KR20070032031A true KR20070032031A (en) 2007-03-20

Family

ID=43656141

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077002161A KR20070032031A (en) 2004-06-29 2005-06-23 Safe flashing

Country Status (1)

Country Link
KR (1) KR20070032031A (en)

Similar Documents

Publication Publication Date Title
US9164756B2 (en) Software updating process for an embedded device
ES2371995T3 (en) UPDATE OF THE FIRMWARE OF AN ELECTRONIC DEVICE.
KR100506203B1 (en) Booting and boot code update method and system thereof
KR101675196B1 (en) Information processing apparatus, method for controlling the same, and storage medium
JP4668416B2 (en) Protecting boot block code when enabling write access to the boot block
KR100584338B1 (en) Method and system for updating software
JP4031190B2 (en) MEMORY CARD, NONVOLATILE MEMORY, NONVOLATILE MEMORY DATA WRITE METHOD AND DATA WRITE DEVICE
JP2008504628A (en) Safe flushing
US20110004871A1 (en) Embedded electronic device and firmware updating method thereof
KR102107843B1 (en) Firmware updating method and electronic device using the same
WO2020062887A1 (en) Firmware upgrading method and system based on flash micro-controller, and flash micro-controller
US20100058316A1 (en) Updating Firmware with Multiple Processors
CN101807152A (en) Basic output and input system for self verification of selection read only memory and verification method thereof
CN109582332B (en) System upgrading method and device for Internet camera
KR101601751B1 (en) Ecu of vehicle and boot software re-programming method thereof
CN114995852A (en) Equipment upgrading method, equipment and computer readable storage medium
JP6554881B2 (en) Semiconductor device and storage medium control method
KR20070032031A (en) Safe flashing
JP2002175193A (en) Device and method for rewriting program
CN113918199A (en) Method for updating underlying firmware program, storage medium and electronic device
JP4602387B2 (en) MEMORY CARD, NONVOLATILE MEMORY, NONVOLATILE MEMORY DATA WRITE METHOD AND DATA WRITE DEVICE
JP5158883B2 (en) Firmware update method and firmware update apparatus
KR20090021695A (en) System for roll back of flash memory and method there of
JP4910402B2 (en) Nonvolatile memory rewriting device and rewriting method
CN111045709B (en) Firmware upgrading method and firmware upgrading device

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination