KR20130104283A - Method of updating firmware - Google Patents

Method of updating firmware Download PDF

Info

Publication number
KR20130104283A
KR20130104283A KR1020120025657A KR20120025657A KR20130104283A KR 20130104283 A KR20130104283 A KR 20130104283A KR 1020120025657 A KR1020120025657 A KR 1020120025657A KR 20120025657 A KR20120025657 A KR 20120025657A KR 20130104283 A KR20130104283 A KR 20130104283A
Authority
KR
South Korea
Prior art keywords
firmware
edit script
script
update
version
Prior art date
Application number
KR1020120025657A
Other languages
Korean (ko)
Other versions
KR101685425B1 (en
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 KR1020120025657A priority Critical patent/KR101685425B1/en
Publication of KR20130104283A publication Critical patent/KR20130104283A/en
Application granted granted Critical
Publication of KR101685425B1 publication Critical patent/KR101685425B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

PURPOSE: A firmware updating method is provided to reduce a space required for update by calculating firmware update for blocks. CONSTITUTION: A method for providing a firmware from a firmware server to a device is as follows: a step of generating an edit script in which a difference between old and new version firmwares is described by comparing the old and new version firmwares crossed to an mxn matrix (S23); and a step of transferring the edit script to the device (S24). The step of generating the edit script is as follows: a step of defining an arrangement of the old and new version firmwares; a step of arranging the old and new version firmwares in the mxn matrix; a step of finding a coordinate in which the values of the old and new version firmwares are same to generate a diagonal line; a step of deducting a shortest path reaching from a starting point (0,0) of the mxn matrix to (m,n); and a step of coding the shortest path. [Reference numerals] (10) Firmware server; (50) Update device; (S21) Request information about a firmware version; (S22) Transmit the information about a firmware version; (S23) Generate an edit script by comparing firmwares; (S24) Transmit the edit script; (S25) Copy an old version firmware; (S26) Update the old version firmware to a new version firmware by using the edit script

Description

펌웨어 업데이트 방법{Method of updating firmware}How to update firmware {Method of updating firmware}

본 발명은 펌웨어 업데이트 방법에 관한 것이다. The present invention relates to a firmware update method.

현대의 대부분의 산업 장치는 특수한 목적이 있으며, 특수한 목적을 수행하기 위한 소프트웨어(SW)를 내재하고 있다. 이렇게 장치 안에 들어가는 소프트웨어(SW)를 임베디드 소프트웨어(embedded SW) 또는 펌웨어라고 한다. CPU의 급격한 발전에 따라 펌웨어의 역할 역시 다양하게 늘어나고 있다.Most modern industrial devices have a special purpose and have software (SW) to perform them. The software that enters the device is called embedded software or firmware. With the rapid development of the CPU, the role of firmware is also increasing in various ways.

펌웨어는 보통 고객의 추가 요구사항을 반영하기 위해서, 또는 제품이 하드웨어(HW)나 소프트웨어(SW)에서 갖고 있던 문제를 해결하기 위해 지속적으로 업데이트를 실시하며, 제품의 펌웨어 업데이트는 다양한 방식으로 이루어진다.Firmware is usually updated continuously to reflect additional customer requirements, or to solve problems the product has in hardware (HW) or software (SW), and the firmware update of the product is done in various ways.

제품에 따라 특수한 장비를 사용해서 업데이트하는 방법도 있는 반면에, LAN선을 연결하면 자동으로 제조사 서버에 접근하여 최신 업데이트를 검색해서 업데이트 하는 장비도 있다. 최근에는 펌웨어 업데이트에 무선을 이용하기도 한다.Some products use special equipment to update, while others connect to a LAN cable to automatically access the manufacturer's server and retrieve the latest update. Recently, wireless has been used for firmware updates.

펌웨어 업데이트를 잘못할 경우, 제품을 제조사에 맡겨야 원상 복구되는 경우도 있기 때문에, 펌웨어 업데이트는 항상 신중하게 제공되어야 한다.Firmware updates should always be provided with care, because if a firmware update fails, the product may need to be left to the manufacturer to recover.

한편, 펌웨어 업데이트에 있어 가장 중요한 성능 지표로는 펌웨어 업데이트 속도와 안정성을 들 수 있다. Meanwhile, the most important performance indicators for firmware update include firmware update speed and stability.

한국 공개 특허 제2010-0110652호는 이전 버전의 펌웨어와 업데이트 하려는 펌웨어를 비교하여 차이가 있는 부분만을 업데이트한다. 그러나, 상기 특허는 파일 비교 방법, 전송되는 데이터 및 이의 복원 방법을 개시하고 있지 않다.Korean Unexamined Patent Publication No. 2010-0110652 compares the firmware of the previous version with the firmware to be updated and updates only the difference. However, the patent does not disclose a file comparison method, data to be transmitted and a method of restoring the same.

본 발명은 펌웨어 업데이트에 필요한 정보량을 최대한 줄여 펌웨어 업데이트의 속도 향상과 함께 안정성을 높일 수 있는 업데이트 시스템을 제공한다. The present invention provides an update system that can reduce the amount of information required for the firmware update to the maximum and improve the stability and the speed of the firmware update.

본 발명의 바람직한 일 실시예에 따른 펌웨어 서버가 디바이스로 펌웨어를 제공하는 방법은, 구 버전 펌웨어와 신 버전 펌웨어를 mxn 매트릭스에 직교 배열하여 비교함으로써, 상기 구 버전 펌웨어와 상기 신 버전 펌웨어 간의 차이를 기술한 에디트 스크립트를 생성하는 단계; 및 상기 에디트 스크립트를 상기 디바이스로 전송하는 단계;를 포함할 수 있다. In a method of providing firmware to a device by a firmware server according to an exemplary embodiment of the present invention, a difference between the old version firmware and the new version firmware may be compared by orthogonally arranging the old version firmware and the new version firmware in an mxn matrix. Generating the described edit script; And transmitting the edit script to the device.

상기 에디트 스크립트 생성 단계는, 상기 구 버전 펌웨어와 상기 신 버전 펌웨어의 배열을 정의하는 단계; 상기 구 버전 펌웨어와 상기 신 버전 펌웨어를 상기 mxn 매트릭스에 배열하는 단계; 상기 mxn 매트릭스에서 신버전 펌웨어와 구버전 펌웨어 값이 동일한 좌표를 찾아 대각선을 생성하는 단계; 상기 mxn 매트릭스의 (0,0) 좌표에서 (m,n) 좌표까지 도달하는 최단 경로를 도출하는 단계; 및 상기 최단 경로를 코드화하는 단계;를 포함할 수 있다 The editing script generating step may include: defining an arrangement of the old version firmware and the new version firmware; Arranging the old version firmware and the new version firmware in the mxn matrix; Generating diagonal lines by finding coordinates of a new version firmware and an old version firmware value in the mxn matrix; Deriving the shortest path from the (0,0) coordinates of the m-by-n matrix to the (m, n) coordinates; And encoding the shortest path.

상기 코드화 단계는, 상기 최단 경로에서, 오른쪽으로 이동하는 경로에 삭제 코드를 삽입하고, 아래쪽으로 이동하는 경로에 삽입 코드를 삽입하는 단계;를 포함할 수 있다. The encoding may include inserting a deletion code into a path moving to the right and inserting the insertion code into a path moving downward in the shortest path.

상기 방법은, 상기 에디트 스크립트의 용량이 기준 용량 이상이면, 상기 신 버전 펌웨어를 직접 상기 디바이스로 전송하는 단계;를 더 포함할 수 있다. The method may further include directly transmitting the new version firmware to the device if the capacity of the edit script is greater than or equal to a reference capacity.

상기 방법은, 상기 에디트 스크립트의 삭제 코드와 삽입 코드의 개수 비교 결과와 상기 디바이스의 버퍼 크기를 기초로, 상기 디바이스의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 생성하는 단계; 및 상기 오버플로우 스크립트를 상기 디바이스로 전송하는 단계;를 더 포함하고, 상기 에디트 스크립트 전송 단계는, 상기 오버플로우 스크립트를 기초로 블록화된 상기 구 버전 펌웨어를 블록 단위로 업데이트하기 위해, 상기 에디트 스크립트를 블록 단위로 상기 디바이스로 전송하는 단계;를 포함할 수 있다. The method may further include generating an overflow script that records a location at which a buffer of the device overflows based on a result of comparing the number of deletion codes and insertion codes of the edit script and a buffer size of the device; And transmitting the overflow script to the device, wherein the edit script transmitting step includes updating the edit script on a block basis to update the old version firmware blocked on the basis of the overflow script. And transmitting to the device in units of blocks.

본 발명의 바람직한 일 실시예에 따른 디바이스가 펌웨어를 업데이트하는 방법은, 펌웨어 서버로부터, 구 버전 펌웨어와 신 버전 펌웨어를 mxn 매트릭스에 직교 배열하여 비교함으로써, 상기 구 버전 펌웨어와 상기 신 버전 펌웨어 간의 차이를 기술한 에디트 스크립트를 수신하는 단계; 및 상기 에디트 스크립트를 기초로 상기 구 버전 펌웨어를 재구성하여 상기 신 버전 펌웨어로 업데이트하는 단계;를 포함할 수 있다. In a method of updating a firmware by a device according to an exemplary embodiment of the present invention, a difference between the old version firmware and the new version firmware is obtained by comparing orthogonally arranging the old version firmware and the new version firmware in an mxn matrix from a firmware server. Receiving an edit script describing the; And reconfiguring the old version firmware based on the edit script to update the new version firmware.

상기 펌웨어 업데이트 단계는, 메모리에 저장된 상기 구 버전 펌웨어를 버퍼에 복사하고, 상기 메모리를 플러시하는 단계; 및 상기 구 버전 펌웨어를 상기 메모리에 복사하되, 상기 에디트 스크립트의 삭제 코드와 관련된 값은 상기 메모리에 복사하지 않고, 상기 에디트 스크립트의 삽입 코드와 관련된 값은 상기 메모리의 해당 영역에 삽입하며, 상기 구 버전 펌웨어를 재구성하는 단계;를 포함할 수 있다. The firmware updating step may include copying the old version firmware stored in a memory into a buffer and flushing the memory; And copying the old version firmware into the memory, without copying a value associated with the delete code of the edit script into the memory, and inserting a value associated with the insert code of the edit script into the corresponding region of the memory. And reconfiguring the version firmware.

상기 에디트 스크립트 수신 단계 이전에, 상기 에디트 스크립트의 삭제 코드와 삽입 코드의 개수 비교 결과 및 상기 디바이스의 버퍼 크기를 기초로, 상기 디바이스의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 수신하는 단계; 및 상기 오버플로우 위치를 기초로, 상기 구 버전 펌웨어를 블록 단위로 나누고, 상기 메모리에 업데이트 공간을 확보하는 단계;를 더 포함하고, 상기 에디트 스크립트를 상기 블록 단위로 수신하여 상기 구 버전 펌웨어를 블록 단위로 재구성할 수 있다. Receiving an overflow script that records the location of the buffer overflow of the device, based on a comparison result of the number of the deletion code and the insertion code of the edit script and the buffer size of the device before the edit script receiving step; And dividing the old version firmware into block units based on the overflow position, and securing an update space in the memory, and receiving the edit script in the block units to block the old version firmware. Can be reconstructed in units.

본 발명은 펌웨어 버전 간의 차이를 간단하고 정확하게 도출하며, 업데이트에 필요한 정보량을 최소화할 수 있다. 또한 본 발명은 블록별로 펌웨어 업데이트 연산을 수행함으로써 업데이트에 필요한 공간을 줄일 수 있고, 펌웨어 업데이트의 안전성을 높일 수 있다. The present invention can derive the difference between firmware versions simply and accurately, and minimize the amount of information required for updating. In addition, the present invention can reduce the space required for the update by performing the firmware update operation for each block, it is possible to increase the safety of the firmware update.

도 1은 본 발명의 일 실시예에 따른 펌웨어 업데이트 시스템을 개략적으로 도시한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 펌웨어 업데이트 방법을 설명하는 도면이다.
도 3 내지 도 7은 본 발명의 일 실시예에 따른 에디트 스크립트 생성 방법을 설명하는 도면이다.
도 8은 본 발명의 다른 실시예에 따른 펌웨어 업데이트 방법을 설명하는 도면이다.
1 is a block diagram schematically illustrating a firmware update system according to an embodiment of the present invention.
2 is a diagram illustrating a firmware update method according to an embodiment of the present invention.
3 to 7 are views for explaining an edit script generation method according to an embodiment of the present invention.
8 is a view for explaining a firmware update method according to another embodiment of the present invention.

이하 본 발명의 바람직한 실시예가 첨부된 도면들을 참조하여 설명될 것이다. 도면상의 동일한 부호는 동일한 요소를 지칭한다. 하기에서 본 발명을 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, preferred embodiments of the present invention will be described with reference to the accompanying drawings. Like reference numbers in the drawings denote like elements. In the following description of the present invention, if it is determined that a detailed description of a related known function or configuration may unnecessarily obscure the subject matter of the present invention, the detailed description thereof will be omitted.

펌웨어 업데이트 시 전송할 파일의 용량을 줄이는 방법은 크게 압축 알고리즘을 이용하는 방법과 파일 비교를 이용하는 방법이 있다. 대부분의 펌웨어 업데이트는 이전 버전의 파일에서 고객의 요구사항이나 버그 패치를 위해 이루어지므로, 파일 중 많은 부분이 바뀌지는 않는다. 따라서, 펌웨어 업데이트시 용량을 줄이는 방법으로 파일 비교 알고리즘을 사용하는 방법이 압축을 사용하는 방법보다는 효율이 좋다고 할 수 있다.There are two ways to reduce the size of a file to be transferred during firmware update, using a compression algorithm and a file comparison. Most firmware updates are made to customer requirements or bug patches from previous versions of the file, so many of the files do not change. Therefore, the method of using the file comparison algorithm as a method of reducing the capacity during the firmware update is more efficient than the method of using the compression.

본 발명의 실시예는 2개의 서로 다른 배열 간의 가장 짧은 차이를 찾는 "O(ND) 차분 알고리즘(O(ND) Difference Algorithm)"을 이용한 파일 비교 방법을 이용한다. Embodiments of the present invention utilize a file comparison method using an " O (ND) Difference Algorithm " to find the shortest difference between two different arrays.

펌웨어의 컴파일은 대부분 1) 전처리기의 처리, 2) 함수를 심볼테이블로 만들어 오브젝트(object) 파일로 변환하며, 이때 심볼테이블에 주소 부여, 3) 라이브러리 파일과 오브젝트 파일을 사용해 심볼테이블 앞에 부여된 주소에 따라 링킹( linking), 즉 주소 매핑(mapping), 4) 실행파일(또는 바이너리 파일) 생성의 순서로 이루어진다. 이때 심볼테이블의 주소는 컴파일러마다 방식이 조금씩 다르지만, 컴파일 할 파일명의 알파벳 순서와 같은 일정 기준을 갖고 책정한다. 따라서, 어떤 특정 함수를 수정할 경우, 그 함수의 주소 부분과 헤더 등의 시스템 정보 부분만 바뀌고 다른 부분의 파일은 대부분 동일하게 컴파일된다. 함수가 생성되면 심볼테이블 주소 생성 방식에 따라 중간에 끼어들어 뒤의 바이너리 정보들이 밀려서 뒤로 이동한다. 보통 펌웨어 업데이트는 많은 부분의 수정보다는 패치의 비중이 높으며, 위의 특성으로 인해 패치는 업데이트할 파일과 이전 파일의 많은 변화를 보이지 않는다. 이런 업데이트 환경을 고려하면, 펌웨어 업데이트를 수행하는데 있어 "O(ND) 차분 알고리즘(O(ND) Difference Algorithm)"이 효율적이다. In most cases, the compilation of the firmware consists of 1) preprocessor processing, 2) converting functions into symbol files and converting them into object files. 3) addressing the symbol tables, and 3) using library files and object files before the symbol tables. According to the address, linking, that is, address mapping, 4) execution file (or binary file) is created. At this time, the address of symbol table is slightly different for each compiler. However, the address of symbol table should be set based on certain criteria such as alphabetical order of file name to be compiled. Thus, if you modify a particular function, only the system information part, such as the address part and header of that function, is changed, and most other files are compiled the same. When the function is created, it intercepts and moves backward binary information according to the symbol table address generation method. Usually, firmware updates tend to be more patched than a lot of fixes, and due to the above characteristics, patches don't show much change between the file to be updated and the previous file. Considering such an update environment, an "O (ND) Difference Algorithm" is effective in performing a firmware update.

도 1은 본 발명의 일 실시예에 따른 펌웨어 업데이트 시스템을 개략적으로 도시한 블록도이다. 1 is a block diagram schematically illustrating a firmware update system according to an embodiment of the present invention.

도 1을 참조하면, 펌웨어 업데이트 시스템(1)은 펌웨어 서버(10) 및 업데이트 디바이스(이하, "디바이스"라 함)(50)를 포함한다. Referring to FIG. 1, the firmware update system 1 includes a firmware server 10 and an update device (hereinafter referred to as a “device”) 50.

펌웨어 서버(10)는 통신부(101), 에디트 스크립트 생성부(103), 및 오버플로우 스크립트 생성부(105)를 포함한다. The firmware server 10 includes a communication unit 101, an edit script generation unit 103, and an overflow script generation unit 105.

통신부(101)는 디바이스(50)와 유선 또는 무선으로 데이터를 송수신한다. 통신부(101)는 디바이스(50)로 현재 펌웨어의 버전 정보를 요청하고, 현재 펌웨어의 버전 정보를 수신한다. 통신부(101)는 에디트 스크립트 및 오버플로우 스크립트를 디바이스(50)로 전송한다. The communication unit 101 transmits and receives data with the device 50 by wire or wirelessly. The communication unit 101 requests version information of the current firmware from the device 50 and receives version information of the current firmware. The communication unit 101 transmits the edit script and the overflow script to the device 50.

에디트 스크립트 생성부(103)는 디바이스(50)의 현재 펌웨어 버전이 구 버전이면, O(ND) 차분 알고리즘을 이용하여 구 버전 펌웨어와 신 버전 펌웨어 간의 차이를 기술한 에디트 스크립트를 생성한다. 에디트 스크립트 생성부(103)는 구 버전 펌웨어와 신 버전 펌웨어 파일의 Hex Code를 mxn 매트릭스에 직교 배열하고, 이를 비교함으로써, 두 배열 간의 가장 짧은 차이를 찾고, 이를 코드화하여 에디트 스크립트를 생성한다. 에디트 스크립트는 데이터를 삽입하는 삽입 코드와 데이터를 삭제하는 삭제 코드를 포함한다. 에디트 스크립트를 생성하는 구체적인 방법은 후술하겠다. 에디트 스크립트 생성부(103)는 오버플로우 스크립트가 생성되는 경우, 디바이스(50)로부터 블럭 단위의 에디트 스크립트를 요청받고, 에디트 스크립트를 블럭 단위로 나누어, 디바이스(50)로 전송한다. If the current firmware version of the device 50 is an old version, the edit script generation unit 103 generates an edit script describing a difference between the old version firmware and the new version firmware by using an O (ND) difference algorithm. The edit script generation unit 103 orthogonally arranges the Hex Codes of the old version firmware and the new version firmware file in an mxn matrix, compares them, finds the shortest difference between the two arrays, codes them, and generates the edit script. The edit script includes insertion code for inserting data and deletion code for deleting data. A detailed method of generating an edit script will be described later. When the overflow script is generated, the edit script generation unit 103 receives a block edit script from the device 50, divides the edit script into blocks, and transmits the edit script to the device 50.

오버플로우 스크립트 생성부(105)는 에디트 스크립트의 삭제 코드와 삽입 코드의 개수 비교 결과를 기초로 디바이스(50)의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 생성한다. The overflow script generation unit 105 generates an overflow script that records a position at which the buffer of the device 50 overflows based on a result of comparing the number of deletion codes and insertion codes of the edit script.

디바이스(50)는 노트북, 휴대폰, PDA, 디지털 카메라, MP3 플레이어, 셋톱박스 및 디지털 캠코더를 포함할 수 있다. 디바이스(50)는 통신부(501), 펌웨어 업데이트부(503), 메모리(505), 및 버퍼(507)를 포함한다. The device 50 may include a laptop, a mobile phone, a PDA, a digital camera, an MP3 player, a set top box, and a digital camcorder. The device 50 includes a communication unit 501, a firmware update unit 503, a memory 505, and a buffer 507.

통신부(501)는 펌웨어 서버(10)와 유선 또는 무선으로 데이터를 송수신한다. 통신부(501)는 펌웨어 서버(10)로부터 현재 펌웨어의 버전 정보를 요청받고, 현재 펌웨어의 버전 정보를 전송한다. 이때 통신부(501)는 버퍼(507)의 크기 정보를 함께 전송할 수 있다. 통신부(501)는 펌웨어 서버(10)로부터 에디트 스크립트 및 오버플로우 스크립트를 수신한다. The communication unit 501 transmits and receives data to or from the firmware server 10 by wire or wirelessly. The communication unit 501 receives the version information of the current firmware from the firmware server 10 and transmits the version information of the current firmware. In this case, the communication unit 501 may transmit the size information of the buffer 507 together. The communication unit 501 receives an edit script and an overflow script from the firmware server 10.

펌웨어 업데이트부(503)는 에디트 스크립트를 기초로 구 버전 펌웨어를 재구성하여 신 버전 펌웨어로 업데이트한다. 펌웨어 업데이트부(503)는 메모리(505)에 저장된 구 버전 펌웨어를 버퍼(507)에 복사하고, 메모리(505)를 플러시(flush)한다. 펌웨어 업데이트부(503)는 버퍼(507)의 구 버전 펌웨어를 메모리(505)에 복사하되, 에디트 스크립트의 삭제 코드와 관련된 데이터는 메모리(505)에 복사하지 않고, 에디트 스크립트의 삽입 코드와 관련된 데이터는 메모리(505)의 해당 영역에 삽입하며, 구 버전 펌웨어를 재구성한다. The firmware updater 503 reconfigures the old version firmware based on the edit script and updates the new version firmware. The firmware updater 503 copies the old version firmware stored in the memory 505 to the buffer 507 and flushes the memory 505. The firmware updater 503 copies the old version firmware of the buffer 507 to the memory 505, but does not copy the data related to the delete code of the edit script to the memory 505, but the data related to the insert code of the edit script. Inserts into the corresponding area of memory 505 and reconstructs the old version firmware.

펌웨어 업데이트부(503)는 버퍼(507)의 크기가 충분하지 않은 경우, 구 버전 펌웨어를 블록 단위로 업데이트한다. 펌웨어 업데이트부(503)는 오버플로우 스크립트의 오버플로우 위치를 기초로 구 버전 펌웨어를 블록 단위로 나누고, 업데이트시 데이터 삽입을 위한 공간 확보를 위해 블록 단위로 구 버전 펌웨어를 메모리(505) 내에서 이동시킨다. 그리고, 펌웨어 업데이트부(503)는 메모리(505)에 저장된 구 버전 펌웨어를 블록 단위로 첫번째 블록부터 버퍼(507)에 복사하고, 첫번째 블록은 메모리(505)에서 플러시(flush)한다. 펌웨어 업데이트부(503)는 에디트 스크립트를 블록 단위로 수신하여 구 버전 펌웨어를 블록 단위로 재구성한다. 펌웨어 업데이트의 구체적인 방법은 후술하겠다. If the size of the buffer 507 is not sufficient, the firmware updater 503 updates the old version firmware block by block. The firmware updater 503 divides the old version firmware into blocks based on the overflow location of the overflow script, and moves the old version firmware into the memory unit 505 in blocks to secure space for data insertion during the update. Let's do it. The firmware updater 503 copies the old version firmware stored in the memory 505 from the first block to the buffer 507 in block units, and the first block is flushed from the memory 505. The firmware updater 503 receives the edit script in block units and reconstructs the old version firmware in block units. A detailed method of updating the firmware will be described later.

메모리(505)는 비휘발성 메모리로서 플래시(flash)로 구현될 수 있으며, 펌웨어를 저장한다. The memory 505 may be implemented as flash as nonvolatile memory and stores firmware.

버퍼(507)는 휘발성 메모리로서 램(RAM)으로 구현될 수 있으며, 펌웨어 업데이트시 펌웨어를 임시 저장한다. The buffer 507 may be implemented in RAM as volatile memory, and temporarily stores the firmware when updating the firmware.

도 2는 본 발명의 일 실시예에 따른 펌웨어 업데이트 방법을 설명하는 도면이다. 도 3 내지 도 7은 본 발명의 일 실시예에 따른 에디트 스크립트 생성 방법을 설명하는 도면이다. 이하에서는 설명의 편의를 위해 배열(A)와 배열(B)를 숫자로 표시하였으나, 이 배열을 펌웨어 파일의 Hex Code로 바꾸어 동일하게 적용할 수 있음은 물론이다. 2 is a diagram illustrating a firmware update method according to an embodiment of the present invention. 3 to 7 are views for explaining an edit script generation method according to an embodiment of the present invention. Hereinafter, for convenience of description, the array A and the array B are represented by numbers, but the same may be applied to the array by replacing the array with the Hex Code of the firmware file.

도 2를 참조하면, 펌웨어 서버(10)는 업데이트 디바이스(50)로 현재 펌웨어 버전 정보를 요청한다(S21). 업데이트 디바이스(50)는 현재 펌웨어 버전 정보를 전송한다(S22). 펌웨어 서버(10)는 구 버전 펌웨어와 업데이트할 버전의 펌웨어(이하, "신 버전 펌웨어"라 함)를 구비하고 있다. 다른 예로서, 펌웨어 서버(10)는 신 버전의 펌웨어만을 구비하고, 구 버전 펌웨어는 업데이트 디바이스(50)에 요청하여 전송받을 수 있다. Referring to FIG. 2, the firmware server 10 requests the current device firmware version information from the update device 50 (S21). The update device 50 transmits the current firmware version information (S22). The firmware server 10 includes an old version firmware and a firmware version to be updated (hereinafter referred to as "new version firmware"). As another example, the firmware server 10 may include only a new version of firmware, and the old version firmware may be requested by the update device 50 and transmitted.

펌웨어 서버(10)는 업데이트 디바이스(50)의 현재 펌웨어 버전이 구 버전으로 판단되면, 구 버전 펌웨어와 신 버전 펌웨어를 비교하여 에디트 스크립트(Edit Script)를 생성한다(S23). 에디트 스크립트는 구 버전 펌웨어 배열을 신 버전 펌웨어 배열로 변환하기 위해, 구 버전 펌웨어와 신 버전 펌웨어의 차이를 기술한 코드이다. If it is determined that the current firmware version of the update device 50 is an old version, the firmware server 10 compares the old version firmware with the new version firmware and generates an edit script (S23). The edit script is a code that describes the difference between the old version firmware and the new version firmware in order to convert the old version firmware array to the new version firmware array.

도 3을 참조하면, 펌웨어 서버(10)의 에디트 스크립트 생성부(103)는 구 버전 펌웨어 배열(A)과 신 버전 펌웨어 배열(B)을 정의한다(S231). 그리고, 각 배열(A, B)의 맨 앞에 '0'을 삽입한다. Referring to FIG. 3, the edit script generation unit 103 of the firmware server 10 defines an old version firmware array A and a new version firmware array B (S231). Then, '0' is inserted at the beginning of each array (A, B).

에디트 스크립트 생성부(103)는 mxn 매트릭스를 형성하고, 매트릭스 상에 구 버전 펌웨어 배열(A)과 신 버전 펌웨어 배열(B)을 배치한다(S233). 여기서, m은 신 버전 펌웨어 배열(B)의 길이보다 1이 큰 값(Length(B+1))이고, n은 구 버전 펌웨어 배열(A)의 길이보다 1이 큰 값(Length(A + 1))이다. 구 버전 펌웨어 배열(A)은 매트릭스의 가장 위쪽의 왼쪽에서 오른쪽으로 배치하고, 신 버전 펌웨어 배열(B)은 매트릭스 왼쪽의 위에서 아래쪽으로 배치한다. 맨 앞에 있는 0은 매트릭스의 (0,0) 좌표에 위치한다.The edit script generation unit 103 forms an mxn matrix, and arranges the old version firmware array A and the new version firmware array B on the matrix (S233). Where m is 1 greater than the length of the new version firmware array B (Length (B + 1)), and n is 1 greater than the length of the old version firmware array A (Length (A + 1). ))to be. The old version firmware array A is placed from the top left to the right of the matrix, and the new version firmware arrangement B is placed from the top left to the bottom of the matrix. The leading zero is at the (0,0) coordinate of the matrix.

도 4는 10x11 매트릭스 상에 구 버전 펌웨어 배열(A)과 신 버전 펌웨어 배열(B)을 배치한 예를 도시하고 있다. 도 4에서 구 버전 펌웨어 배열(A)은 배열A = [1, 3, 6, 2, 5, 7, 8, 9, 10]으로 가정하고, 신 버전 펌웨어 배열(B)은 배열B = [1, 3, 4, 2, 6, 3, 5, 7, 6, 9, 10]으로 가정하였다. 4 shows an example of arranging an old version firmware array A and a new version firmware array B on a 10x11 matrix. In FIG. 4, it is assumed that the old version firmware array A is array A = [1, 3, 6, 2, 5, 7, 8, 9, 10], and the new version firmware array B is array B = [1. , 3, 4, 2, 6, 3, 5, 7, 6, 9, 10].

에디트 스크립트 생성부(103)는 신 버전 펌웨어 배열(B)을 기준으로, 신 버전 펌웨어 배열(B)의 행과 구 버전 펌웨어 배열(A)의 열에서 값이 같은 좌표를 찾아 대각선을 생성한다(S235). 즉, j번째 행(row)에서, j번째 행(row)의 값과 같은 값을 갖는 열(column)이 k번째 열이라면, 즉, (j,k) 좌표의 행과 열이 같은 값을 갖는다고 할 경우, (j-1,k-1) 좌표와 (j,k) 좌표 사이에 대각선을 긋는다. The edit script generation unit 103 generates diagonal lines by finding coordinates having the same value in the row of the new version firmware array B and the column of the old version firmware array A based on the new version firmware array B ( S235). That is, in the jth row, if the column having the same value as the jth row is the kth column, that is, the row and the column of the (j, k) coordinates have the same value. In this case, draw a diagonal line between the (j-1, k-1) and (j, k) coordinates.

도 5는 매트릭스에 대각선을 생성한 예를 도시하고 있다. 도 5를 참조하여 예를 들어 설명하겠다. 배열(B)의 1번째 행에서 값은 1이고, 1의 코드값을 갖는 배열(A)은 1번째 열이다. 따라서, (0,0) 좌표와 (1,1) 좌표 사이에 대각선이 그려진다. 배열(B)의 2번째 행에서 값은 3이고, 3의 값을 갖는 배열(A)은 2번째 열이다. 따라서, (1,1) 좌표와 (2,2) 좌표 사이에 대각선이 그려진다. 배열(B)의 4번째 행에서 값은 2이고, 2의 값을 갖는 배열(A)은 4번째 열이다. 따라서, (3,3) 좌표와 (4,4) 좌표 사이에 대각선이 그려진다. 배열(B)의 5번째 행에서 값은 6이고, 6의 값을 갖는 배열(A)은 3번째 열이다. 따라서, (4,2) 좌표와 (5,3) 좌표 사이에 대각선이 그려진다. 6번째 행 이후에도 마찬가지의 방법에 의해 대각선이 그려진다. 5 shows an example of generating a diagonal line in the matrix. An example will be described with reference to FIG. 5. In the first row of the array B, the value is 1, and the array A with the code value of 1 is the first column. Thus, a diagonal line is drawn between the (0,0) and (1,1) coordinates. In the second row of the array B, the value is 3 and the array A with the value of 3 is the second column. Thus, a diagonal line is drawn between the (1,1) and (2,2) coordinates. In the fourth row of the array B, the value is 2, and the array A with the value of 2 is the fourth column. Thus, a diagonal line is drawn between the (3,3) and (4,4) coordinates. In the fifth row of array B, the value is 6, and array A with the value of 6 is the third column. Thus, a diagonal line is drawn between the (4,2) and (5,3) coordinates. After the sixth row, diagonal lines are drawn in the same way.

에디트 스크립트 생성부(103)는 매트릭스의 (0,0) 좌표에서 (m,n) 좌표까지 도달하는 가장 빠른 경로를 도출한다(S237). 이때 이동은 아래 또는 오른쪽 또는 오른쪽 아래 대각선으로만 할 수 있으며, 이 3가지 방향은 모두 같은 거리로 가정한다. 가장 빠른 경로를 이용하여 에디트 스크립트(Edit Script)를 생성할 수 있다. 가장 대각선이 많은 경로가 빠른 경로이며, 가장 긴 대각선을 LCS(Longest Common Sequence)라 한다. LCS로 SES(Shortest Edit Script)를 찾는 것이 궁극적인 목적이며, SES 도출, 즉 가장 빠른 경로를 도출하는 방법은 본 발명에서 특별히 한정되지 않으며 종래의 다양한 알고리즘을 이용할 수 있다. The edit script generation unit 103 derives the fastest path from the (0,0) coordinate of the matrix to the (m, n) coordinate (S237). The movement can only be done diagonally down, to the right, or to the bottom right, and all three directions assume the same distance. You can create an edit script using the fastest path. The path with the most diagonal lines is the fast path, and the longest diagonal line is called the longest common sequence (LCS). The ultimate goal is to find Shortest Edit Script (SES) with LCS, and the method of deriving SES, that is, the fastest path, is not particularly limited in the present invention and various conventional algorithms may be used.

도 6은 매트릭스의 (0,0) 좌표에서 (m,n) 좌표까지 도달하는 가장 빠른 경로를 도출한 결과를 예시적으로 도시하고 있다. 6 exemplarily shows the result of deriving the fastest path from the (0,0) coordinate to the (m, n) coordinate of the matrix.

에디트 스크립트 생성부(103)는 도출된 최단 경로를 코드화하여 에디트 스크립트를 생성한다(S239). (0,0) 좌표에서 출발하여, 아래 또는 오른쪽 또는 오른쪽 아래 대각선으로 한 번씩 이동할 때마다 이동 거리는 1씩 더해진다. 대각선 이동 경로는 코드화되지 않는다. 오른쪽 이동 경로는 삭제 코드 D를 이용하여, (현재 이동 거리 + D)로 표시한다. 예를 들어, 3번째 이동이 오른쪽으로 이동이라면 3D가 된다. 아래쪽 이동 경로는 삽입 코드 I를 이용하여, (현재 이동 거리 + I + 이동한 지점이 가리키는 행의 값)으로 표시한다. 예를 들어, 4번째 이동이 아래쪽으로 움직이고, 움직인 위치의 행의 값이 X인 경우, 4IX가 된다. 이런 식으로 (m,n) 좌표까지 코드화가 수행된다. 수행 결과가 에디트 스크립트이다. The edit script generation unit 103 generates the edit script by encoding the derived shortest path (S239). Starting at the (0,0) coordinates, the travel distance is added one by one each time moving diagonally down, to the right, or to the bottom right. Diagonal movement paths are not coded. The right moving path is indicated by (current moving distance + D) using the deletion code D. For example, if the third movement is a movement to the right, it is 3D. The downward movement path is indicated by the insertion code I, as (the current movement distance + I + the value of the row indicated by the moved position). For example, if the fourth movement moves downward, and the value of the row of the moved position is X, the value is 4IX. In this way, the coding is performed up to the (m, n) coordinates. The result is an edit script.

도 7은 에디트 스크립트를 생성하는 예를 도시하고 있다. 도 7을 참조하면, (0,0) 좌표부터 1번째 대각선 이동, 2번째 대각선 이동, 3번째 아래로 이동, 4번째 아래로 이동, 5번째 대각선 이동, 6번째 아래로 이동, 7번째 오른쪽 이동, 등에 의해 (m,n)좌표까지 최단 경로가 도시되어 있다. 7 shows an example of creating an edit script. Referring to FIG. 7, the first diagonal shift, the second diagonal shift, the third downward shift, the fourth downward shift, the fifth diagonal shift, the sixth downward shift, and the seventh right shift from the (0,0) coordinate The shortest path to (m, n) coordinates is shown by, and the like.

예를 들어, 3번째 아래로 이동 시 3번째 행의 값은 4이므로, 3I4로 표시된다. 7번째 오른쪽 이동은 7D로 표시된다. 대각선 이동은 코드화되지 않는다. 따라서, 최종 에디트 스크립트는 Edit Script = [3I4, 4I2, 6I3, 7D, 10I6, 11D]이다. D는 삭제(Delete), I는 삽입(Insert)을 의미한다. For example, when moving to the 3rd down, the value of the 3rd row is 4, so it is displayed as 3I4. The seventh right shift is represented by 7D. Diagonal shifts are not coded. Thus, the final edit script is Edit Script = [3I4, 4I2, 6I3, 7D, 10I6, 11D]. D means Delete and I means Insert.

배열(A)을 기준으로 에디트 스크립트에 D가 있으면, 배열(A)에서 D앞의 숫자 번째의 값을 삭제하고, 그 값의 위치는 empty로 처리한다. 에디트 스크립트에 I가 있으면 배열(A)에서 I 뒤 값을 삽입한다. 이와 같은 과정을 마치면 하기와 같이 배열(A)가 배열(B)와 똑같이 변한다. 디바이스(50)는 에디트 스크립트를 수신하여 배열(A)를 배열(B)로 변경함으로써 펌웨어 업데이트를 수행한다. If there is a D in the edit script based on the array A, delete the value of the number before the D in the array A and treat the position of the value empty. If there is an I in the edit script, insert the value after I in the array (A). After this process, the array A is changed to the same as the array B as follows. The device 50 receives the edit script and performs a firmware update by changing the array A to the array B.

[1, 3, 6, 2, 5, 7, 8, 9, 10] => 3I4 => [1, 3, 4, 6, 2, 5, 7, 8, 9, 10][1, 3, 6, 2, 5, 7, 8, 9, 10] => 3I4 => [1, 3, 4, 6, 2, 5, 7, 8, 9, 10]

[1, 3, 4, 6, 2, 5, 7, 8, 9, 10] => 4I2 => [1, 3, 4, 2, 6, 2, 5, 7, 8, 9, 10][1, 3, 4, 6, 2, 5, 7, 8, 9, 10] => 4I2 => [1, 3, 4, 2, 6, 2, 5, 7, 8, 9, 10]

[1, 3, 4, 2, 6, 2, 5, 7, 8, 9, 10] => 6I3 => [1, 3, 4, 2, 6, 3, 2, 5, 7, 8, 9, 10][1, 3, 4, 2, 6, 2, 5, 7, 8, 9, 10] => 6I3 => [1, 3, 4, 2, 6, 3, 2, 5, 7, 8, 9 , 10]

[1, 3, 4, 2, 6, 3, 2, 5, 7, 8, 9, 10] => 7D => [1, 3, 4, 2, 6, 3, ( ), 5, 7, 8, 9, 10][1, 3, 4, 2, 6, 3, 2, 5, 7, 8, 9, 10] => 7D => [1, 3, 4, 2, 6, 3, (), 5, 7, 8, 9, 10]

[1, 3, 4, 2, 6, 3, ( ), 5, 7, 8, 9, 10] => 10I6 => [1, 3, 4, 2, 6, 3, ( ), 5, 7, 6, 8, 9, 10][1, 3, 4, 2, 6, 3, (), 5, 7, 8, 9, 10] => 10I6 => [1, 3, 4, 2, 6, 3, (), 5, 7 , 6, 8, 9, 10]

[1, 3, 4, 2, 6, 3, ( ), 5, 7, 6, 8, 9, 10] => 11D => [1, 3, 4, 2, 6, 3, ( ), 5, 7, 6, ( ), 9, 10][1, 3, 4, 2, 6, 3, (), 5, 7, 6, 8, 9, 10] => 11D => [1, 3, 4, 2, 6, 3, (), 5 , 7, 6, (), 9, 10]

다시 도 2를 참조하면, 펌웨어 서버(10)는 업데이트 디바이스(50)로 에디트 스크립트를 전송한다(S24). 이때, 펌웨어 서버(10)는 에디트 스크립트 용량을 신 버전 펌웨어 용량과 비교하여 기준 용량을 초과하면, 예를 들어, 신 버전 펌웨어 용량의 80%를 초과하는 경우, 에디트 스크립트를 전송하지 않고 신 버전 펌웨어를 전송한다. 이는 에디트 스크립트 전송에 의한 데이터 전송 시간을 줄이는 이점보다 신 버전 펌웨어 복구에 소요되는 시간이 더 크기 때문이다. 펌웨어 서버(10)는 에디트 스크립트 용량이 기준 용량 이하이면, 정해진 업데이트 프로토콜(protocol)을 통해 에디트 스크립트를 업데이트 디바이스(50)로 전송한다.Referring back to FIG. 2, the firmware server 10 transmits an edit script to the update device 50 (S24). In this case, the firmware server 10 compares the edit script capacity with the new version firmware capacity and exceeds the reference capacity. For example, when the firmware server 10 exceeds 80% of the new version firmware capacity, the firmware server 10 does not transmit the edit script. Send it. This is because the new version firmware recovery takes more time than the benefit of reducing the data transfer time due to the edit script transmission. The firmware server 10 transmits the edit script to the update device 50 through a predetermined update protocol when the edit script capacity is less than or equal to the reference capacity.

업데이트 디바이스(50)는 에디트 스크립트를 수신하면, 메모리(505)에 저장된 구 버전 펌웨어를 버퍼(507)에 복사하여 백업한다(S25). 그리고, 업데이트 디바이스(50)는 메모리(505)의 업데이트할 영역의 데이터를 삭제(플러시)한다. When the update device 50 receives the edit script, the update device 50 copies the old version firmware stored in the memory 505 to the buffer 507 and backs it up (S25). The update device 50 then deletes (flushes) the data of the region to be updated in the memory 505.

업데이트 디바이스(50)는 에디트 스크립트를 이용하여 구 버전 펌웨어를 신 버전 펌웨어로 업데이트한다(S26). 업데이트 디바이스(50)의 펌웨어 업데이트부(503)는 버퍼(507)에 복사해 둔 구 버전 펌웨어 배열의 처음부터 에디트 스크립트의 첫번째 코드가 가리키는 위치까지의 값을 메모리(505)에 복사한다. 에디트 스크립트가 "D"이면 구 버전 펌웨어의 해당 값은 복사하지 않고, 다음으로 진행한다. 에디트 스크립트가 "I"이면 구 버전 펌웨어의 값을 메모리에 복사하기 전에 I에 해당하는 값을 메모리에 생성한다. 같은 방식으로 에디트 스크립트의 마지막 코드까지 수행되면 신 버전 펌웨어가 생성된다. The update device 50 updates the old version firmware to the new version firmware using the edit script (S26). The firmware update unit 503 of the update device 50 copies the value from the beginning of the old version firmware array copied to the buffer 507 to the position indicated by the first code of the edit script, to the memory 505. If the edit script is "D", then the corresponding value of the old firmware is not copied. If the edit script is "I", the value corresponding to I is created in memory before the old version's firmware is copied into memory. In the same way, when the last code of the edit script is executed, a new version firmware is generated.

도 7을 참조하면, 에디트 스크립트는 [3I4, 4I2, 6I3, 7D, 10I6, 11D]이고, 구 버전 펌웨어 배열(A)은 [1, 3, 6, 2, 5, 7, 8, 9, 10]라고 가정하였다. Referring to FIG. 7, the edit script is [3I4, 4I2, 6I3, 7D, 10I6, 11D], and the old version firmware array A is [1, 3, 6, 2, 5, 7, 8, 9, 10. ] Is assumed.

펌웨어 업데이트부(503)는 에디트 스크립트의 첫번째 코드 3I4에 의해, 버퍼(507)의 구 버전 펌웨어의 첫번째와 두번째 값을 메모리(505)에 복사하고, 세번째 값 6을 복사하기 전에 메모리(505)에 4를 생성한다. 즉 메모리(505)에는 [1, 3, 4]가 저장된다. 그리고 6은 배열(A)의 네번째 값이 된다. 다음으로 에디트 스크립트 4I2에 의해, 네번째 값 6을 복사하기 전에 메모리(505)에 2를 생성한다. 즉 메모리(505)에는 [1, 3, 4, 2]가 저장된다. 그리고 6은 배열(A)의 다섯번째 값이 된다. 다음으로 에디트 스크립트 6I3에 의해, 다섯번째 값 6이 메모리(505)에 복사되고, 여섯번째 값 2를 복사하기 전에 메모리(505)에 3을 생성한다. 즉 메모리(505)에는 [1, 3, 4, 2, 6, 3]이 저장된다. 그리고 2는 배열(A)의 일곱번째 값이 된다. 다음으로 에디트 스크립트 7D에 의해, 일곱번째 값 2는 복사되지 않고, 다음 에디트 스크립트 10I6에 의해, 여덟번째 및 아홉번째 값 5, 7이 메모리(505)에 복사되고, 열번째 값 8을 복사하기 전에 메모리(505)에 6을 생성한다. 즉 메모리(505)에는 [1, 3, 4, 2, 6, 3, 5, 7, 6]이 저장된다. 그리고 8은 배열(A)의 열한번째 값이 된다. 다음 에디트 스크립트 11D에 의해, 열한번째 값 8은 복사되지 않고, 열두번째와 열세번째 값 9, 10이 메모리(505)에 복사된다. 즉 메모리(505)에는 [1, 3, 4, 2, 6, 3, 5, 7, 6, 9, 10]이 저장된다. 이로써 신 버전 펌웨어 배열(B)인 [1, 3, 4, 2, 6, 3, 5, 7, 6, 9, 10]가 메모리(505)에 생성된다. The firmware updater 503 copies the first and second values of the old version firmware of the buffer 507 to the memory 505 by the first code 3I4 of the edit script, and before copying the third value 6 to the memory 505. Produces 4 That is, [1, 3, 4] are stored in the memory 505. And 6 is the fourth value of array A. Next, edit script 4I2 generates 2 in memory 505 before copying the fourth value 6. That is, [1, 3, 4, 2] are stored in the memory 505. And 6 is the fifth value of array A. Next, by the edit script 6I3, the fifth value 6 is copied to the memory 505, and 3 is created in the memory 505 before the sixth value 2 is copied. That is, [1, 3, 4, 2, 6, 3] is stored in the memory 505. And 2 is the seventh value of array A. Next, by the edit script 7D, the seventh value 2 is not copied, and by the next edit script 10I6, the eighth and ninth values 5, 7 are copied into the memory 505, before the tenth value 8 is copied. Create 6 in memory 505. That is, [1, 3, 4, 2, 6, 3, 5, 7, 6] are stored in the memory 505. And 8 is the eleventh value of the array A. By the following edit script 11D, the eleventh value 8 is not copied, but the twelfth and thirteenth values 9 and 10 are copied into the memory 505. That is, [1, 3, 4, 2, 6, 3, 5, 7, 6, 9, 10] is stored in the memory 505. As a result, [1, 3, 4, 2, 6, 3, 5, 7, 6, 9, 10], which is the new version firmware array B, is generated in the memory 505.

도 8은 본 발명의 다른 실시예에 따른 펌웨어 업데이트 방법을 설명하는 도면이다. 하기에서 도 2의 실시예와 동일한 부분의 상세한 설명은 생략하겠다. 8 is a view for explaining a firmware update method according to another embodiment of the present invention. Detailed description of the same parts as the embodiment of FIG. 2 will be omitted below.

도 8을 참조하면, 펌웨어 서버(10)는 업데이트 디바이스(50)로 현재 펌웨어 버전 정보를 요청한다(S31). 업데이트 디바이스(50)는 현재 펌웨어 버전 정보를 전송한다(S32). 이때, 업데이트 디바이스(50)는 현재 펌웨어 버전 정보를 전송하면서, 자신의 버퍼 용량 정보를 함께 전송할 수 있다. Referring to FIG. 8, the firmware server 10 requests the current device firmware version information from the update device 50 (S31). The update device 50 transmits the current firmware version information (S32). In this case, the update device 50 may transmit its own buffer capacity information while transmitting the current firmware version information.

도 2의 실시예는 구 버전 펌웨어 전체를 버퍼(507)에 백업해야 한다. 특정 임베디드 시스템에서는 가격을 줄이기 위해 충분한 메모리를 사용하지 못할 수도 있다. 따라서, 도 8의 실시예에서는 블록 단위로 에디트 스크립트를 전송하고 업데이트를 수행한다. The embodiment of FIG. 2 should back up the old version firmware to buffer 507. Certain embedded systems may not use enough memory to reduce costs. Therefore, in the embodiment of FIG. 8, the edit script is transmitted and updated in block units.

펌웨어 서버(10)의 에디트 스크립트 생성부(103)는 업데이트 디바이스(50)의 현재 펌웨어 버전이 구 버전으로 판단되면, 구 버전 펌웨어와 신 버전 펌웨어를 비교하여 에디트 스크립트(Edit Script)를 생성한다(S33). 에디트 스크립트 생성은 도 3 내지 도 7을 참조하여 설명하였다. If it is determined that the current firmware version of the update device 50 is an old version, the edit script generation unit 103 of the firmware server 10 generates an edit script by comparing the old version firmware with the new version firmware ( S33). Edit script generation has been described with reference to FIGS. 3 to 7.

펌웨어 서버(10)의 오버플로우 스크립트 생성부(105)는 오버플로우 스크립트를 생성한다(S34). 오버플로우 스크립트 생성부(105)는 에디트 스크립트의 I의 개수가 업데이트 디바이스(50)의 버퍼 크기(N)와 같아지는 위치, 즉 오버플로우 위치를 기록한 오버플로우 스크립트(Overflow Script)를 생성한다. 버퍼 크기(N)는 펌웨어가 파일일 경우 문자(character) 단위가 될 수 있고, 펌웨어가 바이너리 파일일 경우 바이트(Byte) 단위가 될 수 있다. 오버플로우 스크립트 생성부(105)는 에디트 스크립트의 처음부터 I와 D의 개수를 비교하며 I의 개수에서 D의 개수를 빼고, I의 개수가 N보다 커지는 위치를 찾아, 이 위치를 1번 오버플로우 위치로 기록한다. 오버플로우 스크립트 생성부(105)는 1번 오버플로우 위치에서 다시 I와 D의 개수를 비교하며 I의 개수에서 D의 개수를 빼고, I의 개수가 N보다 커지는 위치를 찾아, 이 위치를 2번 오버플로우 위치로 판단한다. 이러한 과정이 에디트 스크립트의 마지막까지 수행된다. The overflow script generation unit 105 of the firmware server 10 generates an overflow script (S34). The overflow script generator 105 generates an overflow script in which the number of edit scripts I is equal to the buffer size N of the update device 50, that is, the overflow position is recorded. The buffer size N may be a character unit when the firmware is a file, or may be a byte unit when the firmware is a binary file. The overflow script generation unit 105 compares the number of I and D from the beginning of the edit script, subtracts the number of D from the number of I, finds a position where the number of I is larger than N, and overflows this position once. Record as location. The overflow script generation unit 105 compares the number of I and D again in the overflow position 1, subtracts the number of D from the number of I, finds a position where the number of I is larger than N, and finds this position twice. Judging by the overflow position. This is done until the end of the edit script.

펌웨어 서버(10)는 업데이트 디바이스(50)로 오버플로우 스크립트를 전송한다(S35). The firmware server 10 transmits the overflow script to the update device 50 (S35).

업데이트 디바이스(50)의 펌웨어 업데이트부(503)는 오버플로우 스크립트를 기초로 업데이트 공간을 확보한다(S36). 펌웨어 업데이트부(503)는 메모리(505)에 삽입할 데이터의 공간 확보를 버퍼 크기(N) 단위로 수행하며, 공간은 메모리(505)의 읽기/쓰기(read/write)가 한 번의 연산으로 이루어지는 크기(page)로 설정한다. 안정적인 공간 확보를 위해 공간 확보 연산은 메모리(505)의 맨 뒤부터 이루어지며, 오버플로우 위치에 의한 구 버전 펌웨어 블록화는 맨 뒤부터 수행된다. 오버플로우 위치 사이를 블록이라 하면, 구 버전 펌웨어의 마지막 블록을 {오버플로우 횟수 x N} 만큼 메모리(505)의 뒤로 이동한다. 뒤에서 두 번째 블록은 {(오버플로우 횟수 - 1) x N} 만큼 메모리(505)의 뒤로 이동한다. 즉, k번째 블록은 {(오버플로우 횟수 - k) x N} 만큼 메모리(505)의 뒤로 이동한다. 이러한 공간 확보 연산은 k=0부터 k=b(b=블록 개수)까지 모든 블록에 대해 수행된다. 이후, 블록 단위로 에디트 스크립트를 이용하여 구 버전 펌웨어를 재구성함으로써 신 버전 펌웨어로 업데이트한다. The firmware update unit 503 of the update device 50 secures an update space based on the overflow script (S36). The firmware updater 503 secures the space of the data to be inserted into the memory 505 in units of buffer size (N), and the space is read / write of the memory 505 in one operation. Set to page. In order to secure a stable space, a space reclamation operation is performed at the rear of the memory 505, and the old version firmware blocking by the overflow position is performed at the rear. If the block is between the overflow positions, the last block of the old version firmware is moved backward of the memory 505 by {overflow number x N}. The second block behind moves back the memory 505 by {(overflow count-1) x N}. That is, the k th block is moved backward of the memory 505 by {(overflow number-k) x N}. This space saving operation is performed for all blocks from k = 0 to k = b (b = number of blocks). Thereafter, the old version firmware is reconfigured using the edit script in units of blocks to update the new version firmware.

업데이트 디바이스(50)는 펌웨어 서버(10)로 구 버전 펌웨어의 첫번째 블록(B1)의 에디트 스크립트를 요청한다(S37a).The update device 50 requests the edit script of the first block B1 of the old version firmware to the firmware server 10 (S37a).

펌웨어 서버(10)는 에디트 스크립트를 블록화한 후, 첫번째 블록(B1)의 에디트 스크립트를 정해진 업데이트 프로토콜(protocol)을 통해 업데이트 디바이스(50)로 전송한다(38a).After the firmware server 10 blocks the edit script, the firmware server 10 transmits the edit script of the first block B1 to the update device 50 through a predetermined update protocol (38a).

업데이트 디바이스(50)의 펌웨어 업데이트부(503)는 메모리(505)에 저장된 구 버전 펌웨어의 첫번째 블록(B1)을 버퍼(507)에 복사하고(S39a), 메모리(505)의 해당 블록(B1)을 제거한다. 업데이트 디바이스(50)는 첫번째 블록(B1)의 에디트 스크립트를 이용하여 구 버전 펌웨어의 첫번째 블록(B1)을 신 버전 펌웨어로 업데이트한다(S40a). 업데이트 방법은 도 2의 실시예에서 설명하였다. The firmware update unit 503 of the update device 50 copies the first block B1 of the old version firmware stored in the memory 505 into the buffer 507 (S39a), and the corresponding block B1 of the memory 505. Remove it. The update device 50 updates the first block B1 of the old version firmware to the new version firmware by using the edit script of the first block B1 (S40a). The update method has been described in the embodiment of FIG.

구 버전 펌웨어의 두번째 블록(B2)부터 마지막 블록(Bk)까지 단계 S37a 내지 S40a와 동일한 과정이 이루어진다. 도 8에는 중간 블록들의 업데이트 과정의 도시는 생략하고, 마지막 블록(Bk)의 업데이트 과정인 단계 S37k 내지 S40k를 도시하고 있다. The same process as steps S37a to S40a is performed from the second block B2 to the last block Bk of the old version firmware. In FIG. 8, the process of updating the intermediate blocks is omitted, and steps S37k to S40k which are the process of updating the last block Bk are illustrated.

업데이트 디바이스(50)는 삭제로 인해 생기는 빈 영역을 제거하기 위해, 메모리(505)의 앞쪽에서부터 빈 영역을 제거하도록 뒤쪽의 메모리를 앞쪽으로 복사한다. The update device 50 copies the memory at the back to the front to remove the free area from the front of the memory 505 to remove the free area resulting from the deletion.

본 실시예는 블록별로 업데이트 연산을 수행함으로써 업데이트에 필요한 공간을 줄일 수 있고, 업데이트의 안전성을 높일 수 있다. In this embodiment, by performing the update operation for each block, the space required for the update can be reduced, and the safety of the update can be improved.

본 발명의 실시예들은 통신이 원활하지 않은 환경(예를 들어, 무선 등)에서의 빠른 펌웨어 업데이트를 위해 적용될 수 있다. 또한, 본 발명의 실시예들은 이전 버전의 펌웨어 파일을 알아야만 복호화가 가능하도록 하여, 펌웨어 업데이트 보안 방법의 하나로서 사용이 가능하다. Embodiments of the present invention may be applied for fast firmware update in an environment in which communication is not smooth (for example, wireless). In addition, the embodiments of the present invention can be decrypted only by knowing the firmware file of the previous version, so that it can be used as one of the firmware update security methods.

본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다. While the present invention has been described with reference to exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments, but, on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims. Accordingly, the true scope of the present invention should be determined by the technical idea of the appended claims.

Claims (10)

펌웨어 서버가 디바이스로 펌웨어를 제공하는 방법에 있어서,
구 버전 펌웨어와 신 버전 펌웨어를 mxn 매트릭스에 직교 배열하여 비교함으로써, 상기 구 버전 펌웨어와 상기 신 버전 펌웨어 간의 차이를 기술한 에디트 스크립트를 생성하는 단계; 및
상기 에디트 스크립트를 상기 디바이스로 전송하는 단계;를 포함하는 펌웨어 서버의 펌웨어 제공 방법.
A method for providing firmware to a device by a firmware server, the method comprising:
Generating an edit script describing the difference between the old version firmware and the new version firmware by orthogonally arranging the old version firmware and the new version firmware in an mxn matrix; And
And transmitting the edit script to the device.
제1항에 있어서, 상기 에디트 스크립트 생성 단계는,
상기 구 버전 펌웨어와 상기 신 버전 펌웨어의 배열을 정의하는 단계;
상기 구 버전 펌웨어와 상기 신 버전 펌웨어를 상기 mxn 매트릭스에 배열하는 단계;
상기 mxn 매트릭스에서 신버전 펌웨어와 구버전 펌웨어 값이 동일한 좌표를 찾아 대각선을 생성하는 단계;
상기 mxn 매트릭스의 (0,0) 좌표에서 (m,n) 좌표까지 도달하는 최단 경로를 도출하는 단계; 및
상기 최단 경로를 코드화하는 단계;를 포함하는 펌웨어 서버의 펌웨어 제공 방법.
The method of claim 1, wherein the editing script generation step,
Defining an arrangement of the old version firmware and the new version firmware;
Arranging the old version firmware and the new version firmware in the mxn matrix;
Generating diagonal lines by finding coordinates of a new version firmware and an old version firmware value in the mxn matrix;
Deriving the shortest path from the (0,0) coordinates of the m-by-n matrix to the (m, n) coordinates; And
Encoding the shortest path; firmware providing method of a firmware server comprising a.
제2항에 있어서, 상기 코드화 단계는,
상기 최단 경로에서, 오른쪽으로 이동하는 경로에 삭제 코드를 삽입하고, 아래쪽으로 이동하는 경로에 삽입 코드를 삽입하는 단계;를 포함하는 펌웨어 서버의 펌웨어 제공 방법.
The method of claim 2, wherein the encoding step,
And inserting a deletion code into a path moving to the right and inserting the insertion code into a path moving downward in the shortest path.
제1항에 있어서,
상기 에디트 스크립트의 용량이 기준 용량 이상이면, 상기 신 버전 펌웨어를 직접 상기 디바이스로 전송하는 단계;를 더 포함하는 펌웨어 서버의 펌웨어 제공 방법.
The method of claim 1,
If the capacity of the edit script is greater than or equal to a reference capacity, transmitting the new version firmware directly to the device.
제1항에 있어서,
상기 디바이스로 현재 펌웨어의 버전 정보를 요청하는 단계; 및
상기 현재 펌웨어의 버전 정보를 수신하는 단계;를 더 포함하고,
상기 현재 펌웨어 버전이 구 버전이면, 상기 에디트 스크립트를 생성하는, 펌웨어 서버의 펌웨어 제공 방법.
The method of claim 1,
Requesting version information of a current firmware from the device; And
Receiving version information of the current firmware;
Generating the edit script if the current firmware version is an old version.
제3항에 있어서,
상기 에디트 스크립트의 삭제 코드와 삽입 코드의 개수 비교 결과와 상기 디바이스의 버퍼 크기를 기초로, 상기 디바이스의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 생성하는 단계; 및
상기 오버플로우 스크립트를 상기 디바이스로 전송하는 단계;를 더 포함하고,
상기 에디트 스크립트 전송 단계는, 상기 오버플로우 스크립트를 기초로 블록화된 상기 구 버전 펌웨어를 블록 단위로 업데이트하기 위해, 상기 에디트 스크립트를 블록 단위로 상기 디바이스로 전송하는 단계;를 포함하는, 펌웨어 서버의 펌웨어 제공 방법.
The method of claim 3,
Generating an overflow script on which the buffer of the device overflows based on a result of comparing the number of deletion codes and insertion codes of the edit script and a buffer size of the device; And
Transmitting the overflow script to the device;
The sending of the edit script may include transmitting the edit script to the device in units of blocks so as to update the old version firmware blocked on the basis of the overflow script in units of blocks. How to Provide.
디바이스가 펌웨어를 업데이트하는 방법에 있어서,
펌웨어 서버로부터, 구 버전 펌웨어와 신 버전 펌웨어를 mxn 매트릭스에 직교 배열하여 비교함으로써, 상기 구 버전 펌웨어와 상기 신 버전 펌웨어 간의 차이를 기술한 에디트 스크립트를 수신하는 단계; 및
상기 에디트 스크립트를 기초로 상기 구 버전 펌웨어를 재구성하여 상기 신 버전 펌웨어로 업데이트하는 단계;를 포함하는 디바이스의 펌웨어 업데이트 방법.
In the method for the device to update the firmware,
Receiving, from a firmware server, an edit script describing the difference between the old version firmware and the new version firmware by orthogonally arranging the old version firmware and the new version firmware in an mxn matrix; And
Reconfiguring the old version firmware based on the edit script and updating the new version firmware to the new version firmware.
제7항에 있어서, 상기 펌웨어 업데이트 단계는,
메모리에 저장된 상기 구 버전 펌웨어를 버퍼에 복사하고, 상기 메모리를 플러시하는 단계; 및
상기 구 버전 펌웨어를 상기 메모리에 복사하되, 상기 에디트 스크립트의 삭제 코드와 관련된 값은 상기 메모리에 복사하지 않고, 상기 에디트 스크립트의 삽입 코드와 관련된 값은 상기 메모리의 해당 영역에 삽입하며, 상기 구 버전 펌웨어를 재구성하는 단계;를 포함하는 디바이스의 펌웨어 업데이트 방법.
The method of claim 7, wherein the firmware update step,
Copying the old version firmware stored in a memory into a buffer and flushing the memory; And
Copy the old version firmware to the memory, but do not copy the value associated with the delete code of the edit script to the memory, and insert the value associated with the insert code of the edit script into the corresponding region of the memory. Reconfiguring the firmware; firmware update method comprising a device.
제7항에 있어서, 상기 에디트 스크립트 수신 단계 이전에,
상기 에디트 스크립트의 삭제 코드와 삽입 코드의 개수 비교 결과 및 상기 디바이스의 버퍼 크기를 기초로, 상기 디바이스의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 수신하는 단계; 및
상기 오버플로우 위치를 기초로, 상기 구 버전 펌웨어를 블록 단위로 나누고, 상기 메모리에 업데이트 공간을 확보하는 단계;를 더 포함하고,
상기 에디트 스크립트를 상기 블록 단위로 수신하여 상기 구 버전 펌웨어를 블록 단위로 재구성하는, 디바이스의 펌웨어 업데이트 방법.
The method of claim 7, wherein before the step of receiving the edit script,
Receiving an overflow script that records a location at which a buffer of the device overflows based on a result of comparing the number of deletion codes and insertion codes of the edit script and a buffer size of the device; And
Dividing the old version firmware into block units based on the overflow position, and securing an update space in the memory;
And receiving the edit script in the block unit and reconfiguring the old version firmware in the block unit.
제7항에 있어서,
상기 펌웨어 서버로부터 현재 펌웨어의 버전 정보를 요청받는 단계; 및
상기 현재 펌웨어의 버전 정보를 전송하는 단계;를 더 포함하는 디바이스의 펌웨어 업데이트 방법.
The method of claim 7, wherein
Receiving version information of a current firmware from the firmware server; And
And transmitting version information of the current firmware.
KR1020120025657A 2012-03-13 2012-03-13 Method of supplying firmware by firmware server and method of updating firmware KR101685425B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120025657A KR101685425B1 (en) 2012-03-13 2012-03-13 Method of supplying firmware by firmware server and method of updating firmware

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120025657A KR101685425B1 (en) 2012-03-13 2012-03-13 Method of supplying firmware by firmware server and method of updating firmware

Publications (2)

Publication Number Publication Date
KR20130104283A true KR20130104283A (en) 2013-09-25
KR101685425B1 KR101685425B1 (en) 2016-12-12

Family

ID=49453149

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120025657A KR101685425B1 (en) 2012-03-13 2012-03-13 Method of supplying firmware by firmware server and method of updating firmware

Country Status (1)

Country Link
KR (1) KR101685425B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107341031B (en) * 2017-06-20 2020-12-15 广州慧睿思通信息科技有限公司 Method and device for adding firmware generation information into DSP firmware

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080189693A1 (en) * 2007-02-02 2008-08-07 Rabindra Pathak Remote firmware management for electronic devices
US20080243862A1 (en) * 2007-04-02 2008-10-02 Sharp Laboratories Of America, Inc. Firmware repository for mfp devices
US20100083241A1 (en) * 2008-10-01 2010-04-01 Canon Kabushiki Kaisha Image forming apparatus, delivery server, and firmware updating method
US20100173622A1 (en) * 2006-02-27 2010-07-08 Sanjiv Maurya Method and System for Distributing and Updating Software in Wireless Devices
KR20100110652A (en) 2009-04-03 2010-10-13 삼성전자주식회사 Memory apparatus and method for updating firmware of the memory apparatus

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100173622A1 (en) * 2006-02-27 2010-07-08 Sanjiv Maurya Method and System for Distributing and Updating Software in Wireless Devices
US20080189693A1 (en) * 2007-02-02 2008-08-07 Rabindra Pathak Remote firmware management for electronic devices
US20080243862A1 (en) * 2007-04-02 2008-10-02 Sharp Laboratories Of America, Inc. Firmware repository for mfp devices
US20100083241A1 (en) * 2008-10-01 2010-04-01 Canon Kabushiki Kaisha Image forming apparatus, delivery server, and firmware updating method
KR20100110652A (en) 2009-04-03 2010-10-13 삼성전자주식회사 Memory apparatus and method for updating firmware of the memory apparatus

Also Published As

Publication number Publication date
KR101685425B1 (en) 2016-12-12

Similar Documents

Publication Publication Date Title
US10055216B2 (en) Minimizing image copying during partition updates
US8849876B2 (en) Methods and apparatuses to optimize updates in a file system based on birth time
US8117377B2 (en) Flash memory device having secure file deletion function and method for securely deleting flash file
CN103038767B (en) For the method and system of the data sharing of file clone
US10311151B2 (en) Object-level replication of cloned objects in a data storage system
CN107526743B (en) Method and apparatus for compressing file system metadata
KR102007650B1 (en) Segment group considering segment cleaning apparatus and method thereof
US20150149819A1 (en) Parity chunk operating method and data server apparatus for supporting the same in distributed raid system
CN108228646B (en) Method and electronic device for accessing data
US10430281B2 (en) Space efficient cascading point in time copying
KR20140042522A (en) Apparatus and method for directory entry look up, and recording medium recording the directory entry look up program thereof
US8898677B2 (en) Data arrangement calculating system, data arrangement calculating method, master unit and data arranging method
JP4153324B2 (en) DIFFERENTIAL DATA GENERATION DEVICE AND METHOD, UPDATED DATA RESTORE DEVICE AND METHOD, AND PROGRAM
CN103218227B (en) The method of compatible multiple file system and device on a kind of Android device built-in hard disk
US8903804B2 (en) Data existence judging device and data existence judging method
US20130262799A1 (en) Control method and storage device
CN107798063B (en) Snapshot processing method and snapshot processing device
CN109298873B (en) System upgrading method and device
CN114579561A (en) Data processing method and device, and storage medium
US20180137055A1 (en) Log-Structured Storage Method and Server
KR20150117522A (en) Graphics state manage apparatus and method
JP6812826B2 (en) Storage method, storage device and storage program
CN104967856A (en) Coding method and corresponding device
KR20130104283A (en) Method of updating firmware
US11163642B2 (en) Methods, devices and computer readable medium for managing a redundant array of independent disks

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20191126

Year of fee payment: 4