KR101685425B1 - Method of supplying firmware by firmware server and method of updating firmware - Google Patents
Method of supplying firmware by firmware server and method of updating firmware Download PDFInfo
- Publication number
- KR101685425B1 KR101685425B1 KR1020120025657A KR20120025657A KR101685425B1 KR 101685425 B1 KR101685425 B1 KR 101685425B1 KR 1020120025657 A KR1020120025657 A KR 1020120025657A KR 20120025657 A KR20120025657 A KR 20120025657A KR 101685425 B1 KR101685425 B1 KR 101685425B1
- Authority
- KR
- South Korea
- Prior art keywords
- firmware
- edit script
- update
- script
- code
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 펌웨어 업데이트 방법을 개시한다.
본 발명의 펌웨어 서버가 디바이스로 펌웨어를 제공하는 방법은, 구 버전 펌웨어와 신 버전 펌웨어를 mxn 매트릭스에 직교 배열하여 비교함으로써, 상기 구 버전 펌웨어와 상기 신 버전 펌웨어 간의 차이를 기술한 에디트 스크립트를 생성하는 단계; 및 상기 에디트 스크립트를 상기 디바이스로 전송하는 단계;를 포함할 수 있다. The present invention discloses a firmware update method.
A method of providing firmware to a device according to the present invention includes generating an edit script describing a difference between the old version firmware and the new version firmware by comparing the old version firmware and the new version firmware orthogonal to the mxn matrix ; And transmitting the edit script to the device.
Description
본 발명은 펌웨어 업데이트 방법에 관한 것이다. The present invention relates to a firmware update method.
현대의 대부분의 산업 장치는 특수한 목적이 있으며, 특수한 목적을 수행하기 위한 소프트웨어(SW)를 내재하고 있다. 이렇게 장치 안에 들어가는 소프트웨어(SW)를 임베디드 소프트웨어(embedded SW) 또는 펌웨어라고 한다. CPU의 급격한 발전에 따라 펌웨어의 역할 역시 다양하게 늘어나고 있다.Most modern industrial devices have a specific purpose, and they have software (SW) for special purposes. The software (SW) in the device is called embedded SW or firmware. With the rapid development of the CPU, the role of the firmware is also increasing.
펌웨어는 보통 고객의 추가 요구사항을 반영하기 위해서, 또는 제품이 하드웨어(HW)나 소프트웨어(SW)에서 갖고 있던 문제를 해결하기 위해 지속적으로 업데이트를 실시하며, 제품의 펌웨어 업데이트는 다양한 방식으로 이루어진다.Firmware usually updates continuously to reflect the additional requirements of the customer, or to solve problems that the product has in the hardware (HW) or software (SW), and the firmware update of the product is done in various ways.
제품에 따라 특수한 장비를 사용해서 업데이트하는 방법도 있는 반면에, LAN선을 연결하면 자동으로 제조사 서버에 접근하여 최신 업데이트를 검색해서 업데이트 하는 장비도 있다. 최근에는 펌웨어 업데이트에 무선을 이용하기도 한다.Depending on the product, there may be a way to update using special equipment, while others connect to a LAN line to automatically access the manufacturer's server to retrieve and update the latest updates. Recently, wireless is used for firmware update.
펌웨어 업데이트를 잘못할 경우, 제품을 제조사에 맡겨야 원상 복구되는 경우도 있기 때문에, 펌웨어 업데이트는 항상 신중하게 제공되어야 한다.Firmware updates should always be provided with caution, because if the firmware update is wrong, the product must be returned to the manufacturer for reinstatement.
한편, 펌웨어 업데이트에 있어 가장 중요한 성능 지표로는 펌웨어 업데이트 속도와 안정성을 들 수 있다. Meanwhile, the most important performance indicator for firmware update is the speed and stability of firmware update.
본 발명은 펌웨어 업데이트에 필요한 정보량을 최대한 줄여 펌웨어 업데이트의 속도 향상과 함께 안정성을 높일 수 있는 업데이트 시스템을 제공한다. The present invention provides an update system capable of increasing the speed of firmware update and increasing the reliability by reducing the amount of information required for firmware update as much as possible.
본 발명의 바람직한 일 실시예에 따른 펌웨어 서버가 디바이스로 펌웨어를 제공하는 방법은, 구 버전 펌웨어와 신 버전 펌웨어를 mxn 매트릭스에 직교 배열하여 비교함으로써, 상기 구 버전 펌웨어와 상기 신 버전 펌웨어 간의 차이를 기술한 에디트 스크립트를 생성하는 단계; 및 상기 에디트 스크립트를 상기 디바이스로 전송하는 단계;를 포함할 수 있다. A method of providing firmware to a device according to a preferred embodiment of the present invention includes comparing old version firmware and new version firmware by orthogonal arranging the mxn matrix to obtain a difference between the old version firmware and the new version firmware Generating an edit script; And transmitting the edit script to the device.
상기 에디트 스크립트 생성 단계는, 상기 구 버전 펌웨어와 상기 신 버전 펌웨어의 배열을 정의하는 단계; 상기 구 버전 펌웨어와 상기 신 버전 펌웨어를 상기 mxn 매트릭스에 배열하는 단계; 상기 mxn 매트릭스에서 신버전 펌웨어와 구버전 펌웨어 값이 동일한 좌표를 찾아 대각선을 생성하는 단계; 상기 mxn 매트릭스의 (0,0) 좌표에서 (m,n) 좌표까지 도달하는 최단 경로를 도출하는 단계; 및 상기 최단 경로를 코드화하는 단계;를 포함할 수 있다 The edit script generation step may include: defining an array 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 in the mxn matrix by searching for coordinates where the new version firmware and old version firmware values are the same; Deriving a shortest path that reaches from the (0, 0) coordinate to the (m, n) coordinate of the mxn matrix; And encoding the shortest path
상기 코드화 단계는, 상기 최단 경로에서, 오른쪽으로 이동하는 경로에 삭제 코드를 삽입하고, 아래쪽으로 이동하는 경로에 삽입 코드를 삽입하는 단계;를 포함할 수 있다. The coding step may include inserting a deletion code in a path that moves rightward in the shortest path and inserting an insertion code into a path that moves downward.
상기 방법은, 상기 에디트 스크립트의 용량이 기준 용량 이상이면, 상기 신 버전 펌웨어를 직접 상기 디바이스로 전송하는 단계;를 더 포함할 수 있다. The method may further include transmitting the new version firmware directly to the device if the capacity of the edit script is equal to or greater than a reference capacity.
상기 방법은, 상기 에디트 스크립트의 삭제 코드와 삽입 코드의 개수 비교 결과와 상기 디바이스의 버퍼 크기를 기초로, 상기 디바이스의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 생성하는 단계; 및 상기 오버플로우 스크립트를 상기 디바이스로 전송하는 단계;를 더 포함하고, 상기 에디트 스크립트 전송 단계는, 상기 오버플로우 스크립트를 기초로 블록화된 상기 구 버전 펌웨어를 블록 단위로 업데이트하기 위해, 상기 에디트 스크립트를 블록 단위로 상기 디바이스로 전송하는 단계;를 포함할 수 있다. The method comprising: generating an overflow script recording a location where a buffer of the device overflows based on a comparison result of the number of deletion codes and embedded codes of the edit script and a buffer size of the device; And transmitting the overflow script to the device, wherein the step of transmitting the edit script further comprises: transmitting the edit script to the device in order to update the old version firmware blocked on the basis of the overflow script, And transmitting the data to the device on a block-by-block basis.
본 발명의 바람직한 일 실시예에 따른 디바이스가 펌웨어를 업데이트하는 방법은, 펌웨어 서버로부터, 구 버전 펌웨어와 신 버전 펌웨어를 mxn 매트릭스에 직교 배열하여 비교함으로써, 상기 구 버전 펌웨어와 상기 신 버전 펌웨어 간의 차이를 기술한 에디트 스크립트를 수신하는 단계; 및 상기 에디트 스크립트를 기초로 상기 구 버전 펌웨어를 재구성하여 상기 신 버전 펌웨어로 업데이트하는 단계;를 포함할 수 있다. A method for updating a firmware of a device according to a preferred embodiment of the present invention includes the steps of orthogonally arranging old version firmware and new version firmware from a firmware server to an mxn matrix to obtain a difference between the old version firmware and the new version firmware Receiving an edit script describing the edit script; And reconfiguring the old version firmware based on the edit script and updating the old version firmware with the new version firmware.
상기 펌웨어 업데이트 단계는, 메모리에 저장된 상기 구 버전 펌웨어를 버퍼에 복사하고, 상기 메모리를 플러시하는 단계; 및 상기 구 버전 펌웨어를 상기 메모리에 복사하되, 상기 에디트 스크립트의 삭제 코드와 관련된 값은 상기 메모리에 복사하지 않고, 상기 에디트 스크립트의 삽입 코드와 관련된 값은 상기 메모리의 해당 영역에 삽입하며, 상기 구 버전 펌웨어를 재구성하는 단계;를 포함할 수 있다. The firmware updating step includes copying the old version firmware stored in the memory to a buffer and flushing the memory; And copying the value associated with the deletion code of the edit script into the memory, inserting a value associated with the insert code of the edit script into the corresponding area of the memory, copying the old version firmware into the memory, And reconstructing the version firmware.
상기 에디트 스크립트 수신 단계 이전에, 상기 에디트 스크립트의 삭제 코드와 삽입 코드의 개수 비교 결과 및 상기 디바이스의 버퍼 크기를 기초로, 상기 디바이스의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 수신하는 단계; 및 상기 오버플로우 위치를 기초로, 상기 구 버전 펌웨어를 블록 단위로 나누고, 상기 메모리에 업데이트 공간을 확보하는 단계;를 더 포함하고, 상기 에디트 스크립트를 상기 블록 단위로 수신하여 상기 구 버전 펌웨어를 블록 단위로 재구성할 수 있다. Receiving an overflow script recording a position where a buffer of the device overflows based on a comparison result of the number of insert codes and a deletion code of the edit script and a buffer size of the device before the edit script receiving step; And dividing the old version firmware into blocks on the basis of the overflow location and securing update space in the memory, receiving the edit script on a block-by-block basis, Can be reconstructed in units.
본 발명은 펌웨어 버전 간의 차이를 간단하고 정확하게 도출하며, 업데이트에 필요한 정보량을 최소화할 수 있다. 또한 본 발명은 블록별로 펌웨어 업데이트 연산을 수행함으로써 업데이트에 필요한 공간을 줄일 수 있고, 펌웨어 업데이트의 안전성을 높일 수 있다. The present invention can easily and accurately derive the difference between firmware versions 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 on a block-by-block basis, thereby enhancing the security 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 diagrams for explaining a method of generating an edit script according to an embodiment of the present invention.
8 is a diagram illustrating 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, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear.
펌웨어 업데이트 시 전송할 파일의 용량을 줄이는 방법은 크게 압축 알고리즘을 이용하는 방법과 파일 비교를 이용하는 방법이 있다. 대부분의 펌웨어 업데이트는 이전 버전의 파일에서 고객의 요구사항이나 버그 패치를 위해 이루어지므로, 파일 중 많은 부분이 바뀌지는 않는다. 따라서, 펌웨어 업데이트시 용량을 줄이는 방법으로 파일 비교 알고리즘을 사용하는 방법이 압축을 사용하는 방법보다는 효율이 좋다고 할 수 있다.There are two methods of reducing the capacity of the file to be transferred when updating the firmware: a method using a compression algorithm and a method using a file comparison. Most of the firmware updates are done for the customer's requirements or bug patches in the previous version of the file, so many of the files will not change. Therefore, it is more efficient to use the file comparison algorithm as a way to reduce the capacity of firmware update than to use compression.
본 발명의 실시예는 2개의 서로 다른 배열 간의 가장 짧은 차이를 찾는 "O(ND) 차분 알고리즘(O(ND) Difference Algorithm)"을 이용한 파일 비교 방법을 이용한다. The embodiment of the present invention uses a file comparison method using an "O (ND) Difference Algorithm" which finds the shortest difference between two different arrangements.
펌웨어의 컴파일은 대부분 1) 전처리기의 처리, 2) 함수를 심볼테이블로 만들어 오브젝트(object) 파일로 변환하며, 이때 심볼테이블에 주소 부여, 3) 라이브러리 파일과 오브젝트 파일을 사용해 심볼테이블 앞에 부여된 주소에 따라 링킹( linking), 즉 주소 매핑(mapping), 4) 실행파일(또는 바이너리 파일) 생성의 순서로 이루어진다. 이때 심볼테이블의 주소는 컴파일러마다 방식이 조금씩 다르지만, 컴파일 할 파일명의 알파벳 순서와 같은 일정 기준을 갖고 책정한다. 따라서, 어떤 특정 함수를 수정할 경우, 그 함수의 주소 부분과 헤더 등의 시스템 정보 부분만 바뀌고 다른 부분의 파일은 대부분 동일하게 컴파일된다. 함수가 생성되면 심볼테이블 주소 생성 방식에 따라 중간에 끼어들어 뒤의 바이너리 정보들이 밀려서 뒤로 이동한다. 보통 펌웨어 업데이트는 많은 부분의 수정보다는 패치의 비중이 높으며, 위의 특성으로 인해 패치는 업데이트할 파일과 이전 파일의 많은 변화를 보이지 않는다. 이런 업데이트 환경을 고려하면, 펌웨어 업데이트를 수행하는데 있어 "O(ND) 차분 알고리즘(O(ND) Difference Algorithm)"이 효율적이다. Most of the compilation of the firmware involves 1) processing of the preprocessor, 2) converting the function into a symbol table and converting it into an object file, addressing the symbol table at this time, 3) Address mapping according to the address, and 4) execution file (or binary file) generation. At this time, the addresses of the symbol table are slightly different for each compiler, but they are set with the same standard as the alphabetical order of file names to be compiled. Therefore, when a specific function is modified, only the system information part such as the address part and the header of the function is changed, and most of the files in other parts are compiled in the same way. When a function is created, it is interrupted according to the symbol table address generation method and the binary information of the latter is pushed backward. Firmware updates usually have a higher proportion of patches than many patches, and due to the above characteristics, the patches do not show many changes to the files to be updated and old files. Considering such an update environment, an "O (ND) Difference Algorithm" is effective in performing 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
펌웨어 서버(10)는 통신부(101), 에디트 스크립트 생성부(103), 및 오버플로우 스크립트 생성부(105)를 포함한다. The
통신부(101)는 디바이스(50)와 유선 또는 무선으로 데이터를 송수신한다. 통신부(101)는 디바이스(50)로 현재 펌웨어의 버전 정보를 요청하고, 현재 펌웨어의 버전 정보를 수신한다. 통신부(101)는 에디트 스크립트 및 오버플로우 스크립트를 디바이스(50)로 전송한다. The
에디트 스크립트 생성부(103)는 디바이스(50)의 현재 펌웨어 버전이 구 버전이면, O(ND) 차분 알고리즘을 이용하여 구 버전 펌웨어와 신 버전 펌웨어 간의 차이를 기술한 에디트 스크립트를 생성한다. 에디트 스크립트 생성부(103)는 구 버전 펌웨어와 신 버전 펌웨어 파일의 Hex Code를 mxn 매트릭스에 직교 배열하고, 이를 비교함으로써, 두 배열 간의 가장 짧은 차이를 찾고, 이를 코드화하여 에디트 스크립트를 생성한다. 에디트 스크립트는 데이터를 삽입하는 삽입 코드와 데이터를 삭제하는 삭제 코드를 포함한다. 에디트 스크립트를 생성하는 구체적인 방법은 후술하겠다. 에디트 스크립트 생성부(103)는 오버플로우 스크립트가 생성되는 경우, 디바이스(50)로부터 블럭 단위의 에디트 스크립트를 요청받고, 에디트 스크립트를 블럭 단위로 나누어, 디바이스(50)로 전송한다. If the current firmware version of the
오버플로우 스크립트 생성부(105)는 에디트 스크립트의 삭제 코드와 삽입 코드의 개수 비교 결과를 기초로 디바이스(50)의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 생성한다. The overflow
디바이스(50)는 노트북, 휴대폰, PDA, 디지털 카메라, MP3 플레이어, 셋톱박스 및 디지털 캠코더를 포함할 수 있다. 디바이스(50)는 통신부(501), 펌웨어 업데이트부(503), 메모리(505), 및 버퍼(507)를 포함한다. The
통신부(501)는 펌웨어 서버(10)와 유선 또는 무선으로 데이터를 송수신한다. 통신부(501)는 펌웨어 서버(10)로부터 현재 펌웨어의 버전 정보를 요청받고, 현재 펌웨어의 버전 정보를 전송한다. 이때 통신부(501)는 버퍼(507)의 크기 정보를 함께 전송할 수 있다. 통신부(501)는 펌웨어 서버(10)로부터 에디트 스크립트 및 오버플로우 스크립트를 수신한다. The
펌웨어 업데이트부(503)는 에디트 스크립트를 기초로 구 버전 펌웨어를 재구성하여 신 버전 펌웨어로 업데이트한다. 펌웨어 업데이트부(503)는 메모리(505)에 저장된 구 버전 펌웨어를 버퍼(507)에 복사하고, 메모리(505)를 플러시(flush)한다. 펌웨어 업데이트부(503)는 버퍼(507)의 구 버전 펌웨어를 메모리(505)에 복사하되, 에디트 스크립트의 삭제 코드와 관련된 데이터는 메모리(505)에 복사하지 않고, 에디트 스크립트의 삽입 코드와 관련된 데이터는 메모리(505)의 해당 영역에 삽입하며, 구 버전 펌웨어를 재구성한다. The
펌웨어 업데이트부(503)는 버퍼(507)의 크기가 충분하지 않은 경우, 구 버전 펌웨어를 블록 단위로 업데이트한다. 펌웨어 업데이트부(503)는 오버플로우 스크립트의 오버플로우 위치를 기초로 구 버전 펌웨어를 블록 단위로 나누고, 업데이트시 데이터 삽입을 위한 공간 확보를 위해 블록 단위로 구 버전 펌웨어를 메모리(505) 내에서 이동시킨다. 그리고, 펌웨어 업데이트부(503)는 메모리(505)에 저장된 구 버전 펌웨어를 블록 단위로 첫번째 블록부터 버퍼(507)에 복사하고, 첫번째 블록은 메모리(505)에서 플러시(flush)한다. 펌웨어 업데이트부(503)는 에디트 스크립트를 블록 단위로 수신하여 구 버전 펌웨어를 블록 단위로 재구성한다. 펌웨어 업데이트의 구체적인 방법은 후술하겠다. If the size of the
메모리(505)는 비휘발성 메모리로서 플래시(flash)로 구현될 수 있으며, 펌웨어를 저장한다. The
버퍼(507)는 휘발성 메모리로서 램(RAM)으로 구현될 수 있으며, 펌웨어 업데이트시 펌웨어를 임시 저장한다. The
도 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 diagrams for explaining a method of generating an edit script according to an embodiment of the present invention. Hereinafter, the array A and the array B are represented by numerals for the sake of convenience of description. However, it is needless to say that this arrangement can be equally applied 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
펌웨어 서버(10)는 업데이트 디바이스(50)의 현재 펌웨어 버전이 구 버전으로 판단되면, 구 버전 펌웨어와 신 버전 펌웨어를 비교하여 에디트 스크립트(Edit Script)를 생성한다(S23). 에디트 스크립트는 구 버전 펌웨어 배열을 신 버전 펌웨어 배열로 변환하기 위해, 구 버전 펌웨어와 신 버전 펌웨어의 차이를 기술한 코드이다. If the current firmware version of the
도 3을 참조하면, 펌웨어 서버(10)의 에디트 스크립트 생성부(103)는 구 버전 펌웨어 배열(A)과 신 버전 펌웨어 배열(B)을 정의한다(S231). 그리고, 각 배열(A, B)의 맨 앞에 '0'을 삽입한다. 3, the edit
에디트 스크립트 생성부(103)는 mxn 매트릭스를 형성하고, 매트릭스 상에 구 버전 펌웨어 배열(A)과 신 버전 펌웨어 배열(B)을 배치한다(S233). 여기서, m은 신 버전 펌웨어 배열(B)의 길이보다 1이 큰 값(Length(B+1))이고, n은 구 버전 펌웨어 배열(A)의 길이보다 1이 큰 값(Length(A + 1))이다. 구 버전 펌웨어 배열(A)은 매트릭스의 가장 위쪽의 왼쪽에서 오른쪽으로 배치하고, 신 버전 펌웨어 배열(B)은 매트릭스 왼쪽의 위에서 아래쪽으로 배치한다. 맨 앞에 있는 0은 매트릭스의 (0,0) 좌표에 위치한다.The edit
도 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]으로 가정하였다. FIG. 4 shows an example in which an old version firmware array (A) and a new version firmware array (B) are arranged on a 10x11 matrix. 4, the old version firmware array A assumes array A = [1, 3, 6, 2, 5, 7, 8, 9, 10] and the new version firmware array B assumes array B = , 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
도 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번째 행 이후에도 마찬가지의 방법에 의해 대각선이 그려진다. FIG. 5 shows an example in which a diagonal line is generated in a matrix. An example will be described with reference to FIG. The value in the first row of array B is 1, and the array A having a code value of 1 is the first column. Therefore, a diagonal line is drawn between the (0,0) coordinate and the (1,1) coordinate. The value in the second row of array B is 3, and the array A having a value of 3 is the second column. Therefore, a diagonal line is drawn between the (1,1) coordinate and the (2,2) coordinate. In the fourth row of the array (B), the value is 2, and the array (A) having the value of 2 is the fourth column. Therefore, a diagonal line is drawn between the (3,3) coordinate and the (4,4) coordinate. The value in the fifth row of array B is six, and the array A having a value of six is the third column. Therefore, a diagonal line is drawn between the (4,2) coordinate and the (5,3) coordinate. After the sixth line, the diagonal line is drawn by the same method.
에디트 스크립트 생성부(103)는 매트릭스의 (0,0) 좌표에서 (m,n) 좌표까지 도달하는 가장 빠른 경로를 도출한다(S237). 이때 이동은 아래 또는 오른쪽 또는 오른쪽 아래 대각선으로만 할 수 있으며, 이 3가지 방향은 모두 같은 거리로 가정한다. 가장 빠른 경로를 이용하여 에디트 스크립트(Edit Script)를 생성할 수 있다. 가장 대각선이 많은 경로가 빠른 경로이며, 가장 긴 대각선을 LCS(Longest Common Sequence)라 한다. LCS로 SES(Shortest Edit Script)를 찾는 것이 궁극적인 목적이며, SES 도출, 즉 가장 빠른 경로를 도출하는 방법은 본 발명에서 특별히 한정되지 않으며 종래의 다양한 알고리즘을 이용할 수 있다. The edit
도 6은 매트릭스의 (0,0) 좌표에서 (m,n) 좌표까지 도달하는 가장 빠른 경로를 도출한 결과를 예시적으로 도시하고 있다. FIG. 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
도 7은 에디트 스크립트를 생성하는 예를 도시하고 있다. 도 7을 참조하면, (0,0) 좌표부터 1번째 대각선 이동, 2번째 대각선 이동, 3번째 아래로 이동, 4번째 아래로 이동, 5번째 대각선 이동, 6번째 아래로 이동, 7번째 오른쪽 이동, 등에 의해 (m,n)좌표까지 최단 경로가 도시되어 있다. FIG. 7 shows an example of generating an edit script. Referring to FIG. 7, the first diagonal movement, the second diagonal movement, the third downward movement, the fourth downward movement, the fifth diagonal movement, the sixth downward movement, the seventh rightward movement from the (0, 0) , And so on, the shortest path is shown from coordinates (m, n).
예를 들어, 3번째 아래로 이동 시 3번째 행의 값은 4이므로, 3I4로 표시된다. 7번째 오른쪽 이동은 7D로 표시된다. 대각선 이동은 코드화되지 않는다. 따라서, 최종 에디트 스크립트는 Edit Script = [3I4, 4I2, 6I3, 7D, 10I6, 11D]이다. D는 삭제(Delete), I는 삽입(Insert)을 의미한다. For example, when moving down the third row, the value of the third row is 4, so it is indicated by 3I4. The 7th right shift is indicated by 7D. Diagonal movement is 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 value as empty. If there is an I in the edit script, insert the value after I in array (A). When this process is completed, the array A changes to the array B as shown below. The
[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]
[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]
[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, , 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] 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, , 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] , 7, 6, (), 9, 10]
다시 도 2를 참조하면, 펌웨어 서버(10)는 업데이트 디바이스(50)로 에디트 스크립트를 전송한다(S24). 이때, 펌웨어 서버(10)는 에디트 스크립트 용량을 신 버전 펌웨어 용량과 비교하여 기준 용량을 초과하면, 예를 들어, 신 버전 펌웨어 용량의 80%를 초과하는 경우, 에디트 스크립트를 전송하지 않고 신 버전 펌웨어를 전송한다. 이는 에디트 스크립트 전송에 의한 데이터 전송 시간을 줄이는 이점보다 신 버전 펌웨어 복구에 소요되는 시간이 더 크기 때문이다. 펌웨어 서버(10)는 에디트 스크립트 용량이 기준 용량 이하이면, 정해진 업데이트 프로토콜(protocol)을 통해 에디트 스크립트를 업데이트 디바이스(50)로 전송한다.Referring again to FIG. 2, the
업데이트 디바이스(50)는 에디트 스크립트를 수신하면, 메모리(505)에 저장된 구 버전 펌웨어를 버퍼(507)에 복사하여 백업한다(S25). 그리고, 업데이트 디바이스(50)는 메모리(505)의 업데이트할 영역의 데이터를 삭제(플러시)한다. Upon receiving the edit script, the
업데이트 디바이스(50)는 에디트 스크립트를 이용하여 구 버전 펌웨어를 신 버전 펌웨어로 업데이트한다(S26). 업데이트 디바이스(50)의 펌웨어 업데이트부(503)는 버퍼(507)에 복사해 둔 구 버전 펌웨어 배열의 처음부터 에디트 스크립트의 첫번째 코드가 가리키는 위치까지의 값을 메모리(505)에 복사한다. 에디트 스크립트가 "D"이면 구 버전 펌웨어의 해당 값은 복사하지 않고, 다음으로 진행한다. 에디트 스크립트가 "I"이면 구 버전 펌웨어의 값을 메모리에 복사하기 전에 I에 해당하는 값을 메모리에 생성한다. 같은 방식으로 에디트 스크립트의 마지막 코드까지 수행되면 신 버전 펌웨어가 생성된다. The
도 7을 참조하면, 에디트 스크립트는 [3I4, 4I2, 6I3, 7D, 10I6, 11D]이고, 구 버전 펌웨어 배열(A)은 [1, 3, 6, 2, 5, 7, 8, 9, 10]라고 가정하였다. 7, 8I, 6I, 7D, 10I6, 11D], and the old version firmware array A is [1, 3, 6, 2, 5, 7, ].
펌웨어 업데이트부(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
도 8은 본 발명의 다른 실시예에 따른 펌웨어 업데이트 방법을 설명하는 도면이다. 하기에서 도 2의 실시예와 동일한 부분의 상세한 설명은 생략하겠다. 8 is a diagram illustrating a firmware update method according to another embodiment of the present invention. Hereinafter, detailed description of the same portions as those of the embodiment of FIG. 2 will be omitted.
도 8을 참조하면, 펌웨어 서버(10)는 업데이트 디바이스(50)로 현재 펌웨어 버전 정보를 요청한다(S31). 업데이트 디바이스(50)는 현재 펌웨어 버전 정보를 전송한다(S32). 이때, 업데이트 디바이스(50)는 현재 펌웨어 버전 정보를 전송하면서, 자신의 버퍼 용량 정보를 함께 전송할 수 있다. Referring to FIG. 8, the
도 2의 실시예는 구 버전 펌웨어 전체를 버퍼(507)에 백업해야 한다. 특정 임베디드 시스템에서는 가격을 줄이기 위해 충분한 메모리를 사용하지 못할 수도 있다. 따라서, 도 8의 실시예에서는 블록 단위로 에디트 스크립트를 전송하고 업데이트를 수행한다. The embodiment of FIG. 2 should back up the old version firmware to the
펌웨어 서버(10)의 에디트 스크립트 생성부(103)는 업데이트 디바이스(50)의 현재 펌웨어 버전이 구 버전으로 판단되면, 구 버전 펌웨어와 신 버전 펌웨어를 비교하여 에디트 스크립트(Edit Script)를 생성한다(S33). 에디트 스크립트 생성은 도 3 내지 도 7을 참조하여 설명하였다. The edit
펌웨어 서버(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
펌웨어 서버(10)는 업데이트 디바이스(50)로 오버플로우 스크립트를 전송한다(S35). The
업데이트 디바이스(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
업데이트 디바이스(50)는 펌웨어 서버(10)로 구 버전 펌웨어의 첫번째 블록(B1)의 에디트 스크립트를 요청한다(S37a).The
펌웨어 서버(10)는 에디트 스크립트를 블록화한 후, 첫번째 블록(B1)의 에디트 스크립트를 정해진 업데이트 프로토콜(protocol)을 통해 업데이트 디바이스(50)로 전송한다(38a).The
업데이트 디바이스(50)의 펌웨어 업데이트부(503)는 메모리(505)에 저장된 구 버전 펌웨어의 첫번째 블록(B1)을 버퍼(507)에 복사하고(S39a), 메모리(505)의 해당 블록(B1)을 제거한다. 업데이트 디바이스(50)는 첫번째 블록(B1)의 에디트 스크립트를 이용하여 구 버전 펌웨어의 첫번째 블록(B1)을 신 버전 펌웨어로 업데이트한다(S40a). 업데이트 방법은 도 2의 실시예에서 설명하였다. The
구 버전 펌웨어의 두번째 블록(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. FIG. 8 shows steps S37k to S40k for updating the last block Bk by omitting the illustration of the updating process of the intermediate blocks.
업데이트 디바이스(50)는 삭제로 인해 생기는 빈 영역을 제거하기 위해, 메모리(505)의 앞쪽에서부터 빈 영역을 제거하도록 뒤쪽의 메모리를 앞쪽으로 복사한다. The
본 실시예는 블록별로 업데이트 연산을 수행함으로써 업데이트에 필요한 공간을 줄일 수 있고, 업데이트의 안전성을 높일 수 있다. The present embodiment performs update operations on a block-by-block basis, thereby reducing the space required for the update and improving the security of the update.
본 발명의 실시예들은 통신이 원활하지 않은 환경(예를 들어, 무선 등)에서의 빠른 펌웨어 업데이트를 위해 적용될 수 있다. 또한, 본 발명의 실시예들은 이전 버전의 펌웨어 파일을 알아야만 복호화가 가능하도록 하여, 펌웨어 업데이트 보안 방법의 하나로서 사용이 가능하다. Embodiments of the present invention may be applied for fast firmware updates in an environment where communication is poor (e.g., wireless, etc.). In addition, embodiments of the present invention can be decrypted only by knowing a firmware file of a previous version, so that it can be used as one of 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 매트릭스의 최상 행(0) 및 최상 열(0) 중 하나에 배열하고, 신 버전 펌웨어 코드를 상기 mxn 매트릭스의 상기 최상 행 및 최상 열 중 나머지 하나에 배열하는 단계;
상기 mxn 매트릭스에서 신버전 펌웨어의 코드와 구버전 펌웨어의 코드가 동일한 행열 좌표를 기초로 상기 mxn 매트릭스의 (0,0) 좌표에서 (m,n) 좌표까지 도달하는 최단 경로를 도출하는 단계;
상기 최단 경로를 코드화한 에디트 스크립트를 생성하는 단계; 및
상기 에디트 스크립트를 상기 디바이스로 전송하는 단계;를 포함하는 펌웨어 서버의 펌웨어 제공 방법.A method for a firmware server to provide firmware to a device,
Arranging the old version firmware code in one of the top row (0) and the top row (0) of the mxn matrix and arranging the new version firmware code in the remaining one of the top row and the top row of the mxn matrix;
Deriving a shortest path in which the code of the new version firmware and the code of the old firmware in the mxn matrix arrive from the (0,0) coordinates to the (m, n) coordinates of the mxn matrix based on the matrix coordinates;
Generating an edit script that encodes the shortest path; And
And transmitting the edit script to the device.
펌웨어 서버로부터, 구 버전 펌웨어 코드를 mxn 매트릭스의 최상 행(0) 및 최상 열(0) 중 하나에 배열하고, 신 버전 펌웨어의 코드를 상기 mxn 매트릭스의 상기 최상 행 및 상기 최상 열 중 나머지 하나에 배열하고, 상기 mxn 매트릭스에서 신버전 펌웨어의 코드와 구버전 펌웨어의 코드가 동일한 행열 좌표를 기초로 상기 mxn 매트릭스의 (0,0) 좌표에서 (m,n) 좌표까지 도달하는 최단 경로를 코드화한 에디트 스크립트를 수신하는 단계; 및
상기 에디트 스크립트를 기초로 상기 구 버전 펌웨어를 재구성하여 상기 신 버전 펌웨어로 업데이트하는 단계;를 포함하는 디바이스의 펌웨어 업데이트 방법. In a method for a device to update firmware,
Order firmware code to one of the top row (0) and the top row (0) of the mxn matrix and to code the new version firmware to the remaining one of the top row and the top row of the mxn matrix (M, n) coordinates of the mxn matrix on the basis of the matrix coordinates of the code of the new version firmware and the code of the old version firmware in the mxn matrix, ; And
And reconfiguring the old version firmware based on the edit script to update the firmware with the new version firmware.
상기 디바이스의 버퍼 크기를 기초로, 상기 디바이스의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 생성하는 단계; 및
상기 오버플로우 스크립트를 상기 디바이스로 전송하는 단계;를 더 포함하고,
상기 에디트 스크립트 전송 단계는, 상기 오버플로우 스크립트를 기초로 상기 에디트 스크립트를 블록 단위로 상기 디바이스로 전송하는 단계;를 포함하는, 펌웨어 서버의 펌웨어 제공 방법. The method according to claim 1,
Generating an overflow script recording a location where a buffer of the device overflows based on a buffer size of the device; And
And transmitting the overflow script to the device,
And the step of transmitting the edit script includes transmitting the edit script on a block-by-block basis to the device based on the overflow script.
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 KR20130104283A (en) | 2013-09-25 |
KR101685425B1 true KR101685425B1 (en) | 2016-12-12 |
Family
ID=49453149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120025657A Active 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341031A (en) * | 2017-06-20 | 2017-11-10 | 广州慧睿思通信息科技有限公司 | A kind of method and device that firmware generation information is added in DSP firmwares |
Citations (4)
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 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101605875B1 (en) | 2009-04-03 | 2016-03-24 | 삼성전자주식회사 | Memory apparatus and method for updating firmware of the memory apparatus |
-
2012
- 2012-03-13 KR KR1020120025657A patent/KR101685425B1/en active Active
Patent Citations (4)
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 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341031A (en) * | 2017-06-20 | 2017-11-10 | 广州慧睿思通信息科技有限公司 | A kind of method and device that firmware generation information is added in DSP firmwares |
CN107341031B (en) * | 2017-06-20 | 2020-12-15 | 广州慧睿思通信息科技有限公司 | Method and device for adding firmware generation information into DSP firmware |
Also Published As
Publication number | Publication date |
---|---|
KR20130104283A (en) | 2013-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102665979B1 (en) | Compressed key-value store tree data blocks leaked | |
US11599552B2 (en) | Counter-based compaction of key-value store tree data block | |
CN107526743B (en) | Method and apparatus for compressing file system metadata | |
US8117377B2 (en) | Flash memory device having secure file deletion function and method for securely deleting flash file | |
US9343153B2 (en) | De-duplication in flash memory module | |
JP4633802B2 (en) | Nonvolatile storage device, data read method, and management table creation method | |
CN102378969B (en) | The deduplication of the data stored in copy volume | |
US20080195833A1 (en) | Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit | |
KR101867282B1 (en) | Garbage collection method for non-volatile memory device | |
US9336095B2 (en) | Computing system and related data management method thereof | |
KR102275431B1 (en) | Managing operations on stored data units | |
KR102275240B1 (en) | Managing operations on stored data units | |
KR20140042522A (en) | Apparatus and method for directory entry look up, and recording medium recording the directory entry look up program thereof | |
CN108228385A (en) | Data storage device and data maintenance method thereof | |
CN105138281B (en) | A kind of sharing method and device of physical disk | |
CN113495852A (en) | Apparatus and method for controlling mapping data in memory system | |
CN118672516B (en) | Data storage method, device, storage medium and computer program product | |
US20130262799A1 (en) | Control method and storage device | |
US11620213B2 (en) | Apparatus and method for handling data stored in a memory system | |
US20080320062A1 (en) | Method of transferring file system, file system transference program, and file system transference device | |
CN111858145B (en) | Method, apparatus and computer program product for data backup and restore | |
KR101685425B1 (en) | Method of supplying firmware by firmware server and method of updating firmware | |
US20160037119A1 (en) | Video recording apparatus, and video recording method when temporary network failure occurs | |
KR101676175B1 (en) | Apparatus and method for memory storage to protect data-loss after power loss | |
US8578359B2 (en) | Method and apparatus for reliable in-place update |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20120313 |
|
PG1501 | Laying open of application | ||
A201 | Request for examination | ||
PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20150908 Comment text: Request for Examination of Application Patent event code: PA02011R01I Patent event date: 20120313 Comment text: Patent Application |
|
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20160608 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20161026 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20161206 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20161207 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
FPAY | Annual fee payment |
Payment date: 20191126 Year of fee payment: 4 |
|
PR1001 | Payment of annual fee |
Payment date: 20191126 Start annual number: 4 End annual number: 4 |
|
PR1001 | Payment of annual fee |
Payment date: 20201201 Start annual number: 5 End annual number: 5 |
|
PR1001 | Payment of annual fee |
Payment date: 20221123 Start annual number: 7 End annual number: 7 |
|
PR1001 | Payment of annual fee |
Payment date: 20231127 Start annual number: 8 End annual number: 8 |