KR20130104283A - Method of updating firmware - Google Patents
Method of updating firmware Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Abstract
Description
본 발명은 펌웨어 업데이트 방법에 관한 것이다. 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.
본 발명은 펌웨어 업데이트에 필요한 정보량을 최대한 줄여 펌웨어 업데이트의 속도 향상과 함께 안정성을 높일 수 있는 업데이트 시스템을 제공한다. 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
펌웨어 서버(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 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
펌웨어 서버(10)는 업데이트 디바이스(50)의 현재 펌웨어 버전이 구 버전으로 판단되면, 구 버전 펌웨어와 신 버전 펌웨어를 비교하여 에디트 스크립트(Edit Script)를 생성한다(S23). 에디트 스크립트는 구 버전 펌웨어 배열을 신 버전 펌웨어 배열로 변환하기 위해, 구 버전 펌웨어와 신 버전 펌웨어의 차이를 기술한 코드이다. If it is determined that the current firmware version of the
도 3을 참조하면, 펌웨어 서버(10)의 에디트 스크립트 생성부(103)는 구 버전 펌웨어 배열(A)과 신 버전 펌웨어 배열(B)을 정의한다(S231). 그리고, 각 배열(A, B)의 맨 앞에 '0'을 삽입한다. Referring to FIG. 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]으로 가정하였다. 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
도 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
도 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
도 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
[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
업데이트 디바이스(50)는 에디트 스크립트를 수신하면, 메모리(505)에 저장된 구 버전 펌웨어를 버퍼(507)에 복사하여 백업한다(S25). 그리고, 업데이트 디바이스(50)는 메모리(505)의 업데이트할 영역의 데이터를 삭제(플러시)한다. When 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]라고 가정하였다. 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
도 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
도 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
펌웨어 서버(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).After 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. 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
본 실시예는 블록별로 업데이트 연산을 수행함으로써 업데이트에 필요한 공간을 줄일 수 있고, 업데이트의 안전성을 높일 수 있다. 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.
상기 구 버전 펌웨어와 상기 신 버전 펌웨어의 배열을 정의하는 단계;
상기 구 버전 펌웨어와 상기 신 버전 펌웨어를 상기 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.
상기 최단 경로에서, 오른쪽으로 이동하는 경로에 삭제 코드를 삽입하고, 아래쪽으로 이동하는 경로에 삽입 코드를 삽입하는 단계;를 포함하는 펌웨어 서버의 펌웨어 제공 방법.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.
상기 에디트 스크립트의 용량이 기준 용량 이상이면, 상기 신 버전 펌웨어를 직접 상기 디바이스로 전송하는 단계;를 더 포함하는 펌웨어 서버의 펌웨어 제공 방법.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.
상기 디바이스로 현재 펌웨어의 버전 정보를 요청하는 단계; 및
상기 현재 펌웨어의 버전 정보를 수신하는 단계;를 더 포함하고,
상기 현재 펌웨어 버전이 구 버전이면, 상기 에디트 스크립트를 생성하는, 펌웨어 서버의 펌웨어 제공 방법.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.
상기 에디트 스크립트의 삭제 코드와 삽입 코드의 개수 비교 결과와 상기 디바이스의 버퍼 크기를 기초로, 상기 디바이스의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 생성하는 단계; 및
상기 오버플로우 스크립트를 상기 디바이스로 전송하는 단계;를 더 포함하고,
상기 에디트 스크립트 전송 단계는, 상기 오버플로우 스크립트를 기초로 블록화된 상기 구 버전 펌웨어를 블록 단위로 업데이트하기 위해, 상기 에디트 스크립트를 블록 단위로 상기 디바이스로 전송하는 단계;를 포함하는, 펌웨어 서버의 펌웨어 제공 방법.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.
메모리에 저장된 상기 구 버전 펌웨어를 버퍼에 복사하고, 상기 메모리를 플러시하는 단계; 및
상기 구 버전 펌웨어를 상기 메모리에 복사하되, 상기 에디트 스크립트의 삭제 코드와 관련된 값은 상기 메모리에 복사하지 않고, 상기 에디트 스크립트의 삽입 코드와 관련된 값은 상기 메모리의 해당 영역에 삽입하며, 상기 구 버전 펌웨어를 재구성하는 단계;를 포함하는 디바이스의 펌웨어 업데이트 방법. 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.
상기 에디트 스크립트의 삭제 코드와 삽입 코드의 개수 비교 결과 및 상기 디바이스의 버퍼 크기를 기초로, 상기 디바이스의 버퍼가 오버플로우되는 위치를 기록한 오버플로우 스크립트를 수신하는 단계; 및
상기 오버플로우 위치를 기초로, 상기 구 버전 펌웨어를 블록 단위로 나누고, 상기 메모리에 업데이트 공간을 확보하는 단계;를 더 포함하고,
상기 에디트 스크립트를 상기 블록 단위로 수신하여 상기 구 버전 펌웨어를 블록 단위로 재구성하는, 디바이스의 펌웨어 업데이트 방법. 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.
상기 펌웨어 서버로부터 현재 펌웨어의 버전 정보를 요청받는 단계; 및
상기 현재 펌웨어의 버전 정보를 전송하는 단계;를 더 포함하는 디바이스의 펌웨어 업데이트 방법. 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.
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)
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)
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 |
-
2012
- 2012-03-13 KR KR1020120025657A patent/KR101685425B1/en active IP Right Grant
Patent Citations (5)
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 |