KR20170126230A - 펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템 - Google Patents

펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템 Download PDF

Info

Publication number
KR20170126230A
KR20170126230A KR1020160056362A KR20160056362A KR20170126230A KR 20170126230 A KR20170126230 A KR 20170126230A KR 1020160056362 A KR1020160056362 A KR 1020160056362A KR 20160056362 A KR20160056362 A KR 20160056362A KR 20170126230 A KR20170126230 A KR 20170126230A
Authority
KR
South Korea
Prior art keywords
firmware
information
update
delta
size
Prior art date
Application number
KR1020160056362A
Other languages
English (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 KR1020160056362A priority Critical patent/KR20170126230A/ko
Priority to US15/365,513 priority patent/US20170322796A1/en
Publication of KR20170126230A publication Critical patent/KR20170126230A/ko

Links

Images

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

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 Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템에 관한 것이다. 본 발명에 따른 장치는, 업데이트 서버로부터 단말장치에 설치된 펌웨어의 버전 정보를 확인하여 최신 버전의 펌웨어에 대한 델타 정보를 수신하고, 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어를 업데이트 하는 업데이트 매니저, 및 업데이트 된 펌웨어가 정상 동작하지 않거나 펌웨어의 업데이트 중 에러가 발생한 경우 미리 저장된 백업 정보를 이용하여 해당 펌웨어를 복구하는 부트 로더를 포함한다.

Description

펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템{Apparatus and method for firmware update, and firmware update system}
본 발명은 펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템에 관한 것이다.
모든 전자기기를 유무선 네트워크로 연결하기 위한 사물인터넷(Internet of Things, IoT) 기술이 주목 받으면서, 사물인터넷을 위한 경량기기(Lightweight Device)의 개발도 활발해지고 있다.
경량기기는 핵심기능만을 동작시키기 위한 최소한의 자원으로 구성되어 있어 자원이 제약적이고 그 기능이 단순하기 때문에, 컴파일 된 하나의 이미지 파일에 운영체제(Operating System, OS) 및 애플리케이션(Application) 등과 같은 기능을 포함하고 있다. 일반적으로 이러한 이미지 파일을 펌웨어(Firmware)라 칭한다.
펌웨어는 부팅 과정에 메모리에서 펌웨어 정보들이 순차적으로 실행된다. 이러한 펌웨어는 기기의 성능 및 기능 향상 등과 같은 다양한 목적으로 업데이트가 이루어진다. 그러나, 펌웨어의 업데이트 과정 중 오류 등으로 인해 업데이트에 실패하는 상황이 발생할 수 있으며, 이 경우 펌웨어의 복구 (Recovery) 기능이 필요하다.
펌웨어 복구는 업데이트에 실패한 현재 펌웨어를 출시 시점의 펌웨어나 정상 동작하던 이전 상태의 펌웨어로 변경하는 것으로 가능하다. 기존의 펌웨어 복구 기술은 정상 펌웨어를 원래 크기 혹은 압축한 형태로 보관하였다가 복구에 활용하기 때문에, 정상 펌웨어를 원래 크기 혹은 압축한 형태 크기 정도로 저장할 수 있는 추가적인 저장공간이 필요하다. 하지만, 추가적인 저장공간은 비용상승의 요인이 되며, 이는 가격에 민감한 경량기기의 개발 및 판매의 부담으로 작용한다.
국내 공개특허공보 제10-2013-0138635호
본 발명의 목적은, 경량기기와 같이 메모리 자원이 제약적인 단말장치의 펌웨어 업데이트 시 각 델타 정보 단위로 업데이트를 진행하고, 단위 델타 정보에 대응하는 펌웨어 정보만을 백업하여 펌웨어 복구에 이용함으로써 메모리 자원을 효율적으로 활용할 수 있는 펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템을 제공함에 있다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재들로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기의 목적을 달성하기 위한 본 발명에 따른 펌웨어 업데이트 장치는, 업데이트 서버로부터 단말장치에 설치된 펌웨어의 버전 정보를 확인하여 최신 버전의 펌웨어에 대한 델타 정보를 수신하고, 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어를 업데이트 하는 업데이트 매니저, 및 업데이트 된 펌웨어가 정상 동작하지 않거나 펌웨어의 업데이트 중 에러가 발생한 경우 미리 저장된 백업 정보를 이용하여 해당 펌웨어를 복구하는 부트 로더를 포함하는 것을 특징으로 한다.
여기서, 상기 업데이트 매니저는, 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 상기 델타 정보에 대응하는 위치의 정보 데이터에 대한 백업 정보를 생성하여 저장하는 것을 특징으로 한다.
상기 업데이트 서버는 펌웨어에 대한 하나 이상의 델타 정보를 저장하고, 상기 업데이트 매니저는 상기 업데이트 서버에 저장된 각각의 델타 정보에 대응하여 순차적으로 업데이트를 수행하는 것을 특징으로 한다.
상기 업데이트 매니저는, 메모리의 여유 공간의 크기를 계산하고, 상기 여유 공간의 크기가 상기 델타 정보에 포함된 정보 데이터의 크기 보다 더 큰 경우에 상기 백업 정보를 상기 여유 공간에 저장하는 것을 특징으로 한다.
상기 업데이트 매니저는, 상기 펌웨어의 업데이트 동작 수행 시, 상기 델타 정보에 기초하여 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 백업할 정보 데이터의 위치 및 크기 정보를 확인하는 것을 특징으로 한다.
상기 업데이트 매니저는, 상기 펌웨어의 업데이트 동작 수행 시, 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 업데이트할 정보 데이터의 위치 및 크기 정보를 확인하여, 확인된 위치 및 크기에 해당하는 정보 데이터를 업데이트하는 것을 특징으로 한다.
상기 업데이트 매니저는 업데이트 된 펌웨어의 정상 또는 비정상 동작 상태를 확인하여 그 결과를 메모리의 부트 로더 환경변수 영역에 저장하고, 상기 부트 로더는 단말장치의 부팅 시 상기 메모리의 부트 로더 환경변수 영역에 저장된 정보를 호출하여 업데이트 된 펌웨어의 복구 여부를 확인하는 것을 특징으로 한다.
상기 부트 로더는, 상기 펌웨어의 복구 동작 수행 시, 상기 여유 공간에 저장된 백업 정보를 로딩하여, 복구할 펌웨어의 정보 데이터들 중 복구할 정보 데이터와, 그의 위치, 크기 및 개수 정보를 확인하여, 확인된 위치, 크기 및 개수의 정보 데이터를 복구하는 것을 특징으로 한다.
상기 델타 정보는, 최신 버전의 펌웨어 중 상기 단말장치에 설치된 버전의 펌웨어와 차이가 있는 정보 데이터, 해당 정보 데이터의 위치 및 크기 정보를 포함하는 것을 특징으로 한다.
상기 델타 정보는, 1 바이트(byte) 크기의 정보 데이터 단위로 생성되는 것을 특징으로 한다.
한편, 상기의 목적을 달성하기 위한 본 발명에 따른 펌웨어 업데이트 방법은, 업데이트 서버로부터 단말장치에 설치된 펌웨어의 버전 정보를 확인하여 최신 버전의 펌웨어에 대한 델타 정보를 수신하는 단계, 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 상기 델타 정보에 대응하는 위치의 정보 데이터에 대한 백업 정보를 생성하여 저장하는 단계, 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어를 업데이트 하는 단계, 및 업데이트 된 펌웨어가 정상 동작하지 않거나 상기 펌웨어의 업데이트 중 에러가 발생한 경우 미리 저장된 백업 정보를 이용하여 해당 펌웨어를 복구하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명에 따른 방법은, 수신된 델타 정보에 기초하여 펌웨어의 업데이트가 완료되면, 상기 업데이트 서버로부터 다음 순서의 델타 정보를 수신하는 단계를 더 포함하는 것을 특징으로 한다.
또한, 본 발명에 따른 방법은, 상기 백업 정보를 생성하여 저장하는 단계 이전에, 메모리의 여유 공간의 크기를 계산하는 단계, 및 상기 여유 공간의 크기 및 상기 델타 정보에 포함된 정보 데이터의 크기를 비교하는 단계를 더 포함하는 것을 특징으로 한다.
상기 백업 정보를 생성하여 저장하는 단계는, 상기 상기 여유 공간의 크기가 상기 델타 정보에 포함된 정보데이터의 크기 보다 더 큰 경우에 수행되는 것을 특징으로 한다.
또한, 본 발명에 따른 방법은, 상기 백업 정보를 생성하여 저장하는 단계 이전에, 상기 델타 정보에 기초하여 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 백업할 정보 데이터의 위치 및 크기 정보를 확인하는 단계를 더 포함하는 것을 특징으로 한다.
상기 펌웨어를 업데이트 하는 단계는, 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 업데이트할 정보 데이터의 위치 및 크기 정보를 확인하는 단계, 및 상기 확인된 위치 및 크기에 해당하는 정보 데이터를 업데이트하는 단계를 포함하는 것을 특징으로 한다.
상기 펌웨어를 복구하는 단계는, 상기 여유 공간에 저장된 백업 정보를 로딩하는 단계, 복구할 펌웨어의 정보 데이터들 중 복구할 정보 데이터와, 그의 위치, 크기 및 개수 정보를 확인하는 단계, 및 상기 확인된 위치, 크기 및 개수의 정보 데이터를 복구하는 단계를 포함하는 것을 특징으로 한다.
한편, 상기의 목적을 달성하기 위한 본 발명에 따른 펌웨어 업데이트 시스템은, 단말장치로 제공할 펌웨어를 각 버전 별로 저장하고 관리하며, 최신 버전의 펌웨어 업데이트 시 최신 버전의 펌웨어에 대한 델타 정보를 생성하여 제공하는 업데이트 서버, 및 상기 업데이트 서버로부터 최신 버전의 펌웨어에 대한 델타 정보를 수신하여 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어를 업데이트 하고, 업데이트 된 펌웨어가 정상 동작하지 않거나 펌웨어의 업데이트 중 에러가 발생한 경우 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 상기 델타 정보에 대응하는 위치의 정보 데이터에 대한 백업 정보를 이용하여 해당 펌웨어를 복구하는 펌웨어 업데이트 장치를 포함하는 것을 특징으로 한다.
상기 펌웨어 업데이트 장치는, 상기 델타 정보에 기초하여 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 백업할 정보 데이터의 위치 및 크기 정보를 확인하고, 메모리의 여유 공간의 크기가 상기 델타 정보에 포함된 정보 데이터의 크기 보다 더 큰 경우에 상기 백업 정보를 상기 여유 공간에 저장하는 것을 특징으로 한다.
상기 펌웨어 업데이트 장치는, 상기 펌웨어의 업데이트 동작 수행 시, 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 업데이트할 정보 데이터의 위치 및 크기 정보를 확인하여, 확인된 위치 및 크기에 해당하는 정보 데이터를 업데이트하는 것을 특징으로 한다.
상기 펌웨어 업데이트 장치는, 상기 펌웨어의 복구 동작 수행 시, 상기 여유 공간에 저장된 백업 정보를 로딩하여, 복구할 펌웨어의 정보 데이터들 중 복구할 정보 데이터와, 그의 위치, 크기 및 개수 정보를 확인하여, 확인된 위치, 크기 및 개수의 정보 데이터를 복구하는 것을 특징으로 한다.
상기 업데이트 서버는, 최신 버전의 펌웨어 중 상기 단말장치에 설치된 버전의 펌웨어와 차이가 있는 정보 데이터, 해당 정보 데이터의 위치 및 크기 정보를 포함하여 델타 정보를 생성하는 것을 특징으로 한다.
본 발명에 따르면, 경량기기와 같이 메모리 자원이 제약적인 단말장치의 펌웨어 업데이트 시 각 델타 정보 단위로 업데이트를 진행하고, 단위 델타 정보에 대응하는 펌웨어 정보만을 백업하여 펌웨어 복구에 이용함으로써 메모리 자원을 효율적으로 활용할 수 있는 이점이 있다.
도 1은 본 발명에 따른 펌웨어 업데이트 시스템의 구성을 도시한 도면이다.
도 2는 본 발명에 따른 펌웨어 업데이트 장치의 구성을 도시한 도면이다.
도 3은 본 발명에 따른 펌웨어 업데이트 동작을 설명하는데 참조되는 실시예를 도시한 도면이다.
도 4는 본 발명에 따른 펌웨어 복구 동작을 설명하는데 참조되는 실시예를 도시한 도면이다.
도 5 및 도 6은 본 발명에 따른 펌웨어 업데이트 방법에 대한 동작 흐름을 도시한 도면이다.
도 7은 본 발명에 따른 장치가 적용된 컴퓨팅 시스템을 도시한 도면이다.
이하, 본 발명의 일부 실시예들을 예시적인 도면을 통해 상세하게 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명의 실시예를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 실시예에 대한 이해를 방해한다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 발명의 실시예의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명에 따른 펌웨어 업데이트 시스템의 구성을 도시한 도면이다.
도 1에 도시된 바와 같이, 본 발명에 따른 펌웨어 업데이트 시스템은 단말장치(100) 및 업데이트 서버(200)를 포함할 수 있다.
단말장치(100)는 업데이트 서버(200)와의 통신이 가능한 경량기기(Lightweight Device)로서, 업데이트 서버(200)로부터 펌웨어(Firmware)를 제공받아 설치하고 실행할 수 있다.
한편, 업데이트 서버(200)는 단말장치(100)로 제공할 펌웨어를 저장하고 관리한다. 이때, 업데이트 서버(200)는 펌웨어를 각 버전 별로 분류하여 관리할 수 있다. 업데이트 서버(200)는 단말장치(100)로부터 펌웨어의 다운로드 요청이 있으면, 해당되는 펌웨어를 추출하여 해당 단말장치(100)로 제공할 수 있다.
또한, 업데이트 서버(200)는 최신 버전의 펌웨어가 저장되는 경우 해당 펌웨어의 업데이트 파일을 생성할 수 있다. 이 경우, 업데이트 서버(200)는 이전 버전의 펌웨어를 설치한 단말장치(100)로 펌웨어의 업데이트 정보를 통지할 수 있다.
한편, 업데이트 서버(200)는 단말장치(100)로부터 요청이 있는 경우에 펌웨어의 업데이트 정보를 생성할 수도 있다. 이 경우, 업데이트 서버(200)는 요청된 펌웨어의 버전 정보를 확인하여 단말장치(100)에 설치된 펌웨어 보다 최신 버전의 펌웨어가 존재하는 경우에 업데이트 정보를 생성할 수 있다.
따라서, 업데이트 서버(200)는 단말장치(100)의 펌웨어 업데이트를 위해 생성한 업데이트 정보를 단말장치(100)로 제공하도록 한다. 여기서, 업데이트 정보는 단말장치(100)에 설치된 버전의 펌웨어와 최신 버전의 펌웨어 간에 차이가 나는 부분만을 추출하여 생성한 델타 정보일 수 있다. 델타 정보는 변경된 데이터, 해당 데이터의 위치 및 크기 정보를 포함할 수 있으며, 각 데이터 단위로 복수 개의 델타 정보가 존재할 수 있다. 이하에서는, 각각의 델타 정보를 단위 델타 정보라 칭하여 설명하도록 한다.
이에, 단말장치(100)는 업데이트 서버(200)로부터 단위 델타 정보를 제공받아 미리 설치된 펌웨어 중 제공된 단위 델타 정보에 대응하는 위치의 정보 데이터를 업데이트 하도록 한다. 업데이트 서버(200)로부터 제공된 단위 델타 정보에 근거하여 펌웨어의 정보 데이터에 대한 업데이트가 완료되면, 업데이트 서버(200)로부터 다음 순서의 단위 델타 정보를 제공받아 펌웨어에서 해당 단위 델타 정보에 대응하는 위치의 정보 데이터에 대해 업데이트를 진행하도록 한다.
이때, 단말장치(100)는 플래시메모리(141)의 여유공간의 크기에 따라 이전 버전의 펌웨어, 구체적으로 펌웨어에서 단위 델타 정보에 대응하는 위치의 정보 데이터를 백업한 상태에서 업데이트를 수행하고, 업데이트 된 펌웨어 실행 시 에러가 발생한 경우에 해당 펌웨어의 백업 정보를 이용하여 복구 동작을 수행할 수 있다.
단말장치(100)의 내부에는 단말장치(100)에 설치된 펌웨어의 업데이트 및 복구 동작을 제어하는 펌웨어 업데이트 장치가 구현될 수 있다. 이때, 펌웨어 업데이트 장치는 단말장치(100)의 내부 제어유닛들과 일체로 형성될 수 있으며, 별도의 장치로 구현되어 연결 수단에 의해 단말장치(100)의 제어유닛들과 연결될 수도 있다.
한편, 펌웨어 업데이트 장치는 단말장치(100)의 외부에 구현되어 별도의 연결수단을 통해 단말장치(100)와 연결될 수도 있다.
이에, 펌웨어 업데이트 장치의 세부 구성에 대해서는 도 2를 참조하여 상세히 설명하도록 한다.
도 2는 본 발명에 따른 펌웨어 업데이트 장치의 구성을 도시한 도면이다.
도 2에 도시된 바와 같이, 펌웨어 업데이트 장치는 제어부(110), 인터페이스부(120), 통신부(130), 저장부(140) 및 신호 처리부(150)를 포함할 수 있다. 여기서, 제어부(110)는 펌웨어 업데이트 장치의 각 부간에 전달되는 신호를 처리할 수 있다.
먼저, 인터페이스부(120)는 사용자로부터 소정의 제어 명령을 입력 받기 위한 입력수단을 포함할 수 있다. 입력수단으로는 키 버튼이 해당 될 수 있으며, 그 외에도 사용자로부터 제어 명령을 입력 받기 위한 수단이라면 어느 것이든 해당될 수 있다.
또한, 인터페이스부(120)는 펌웨어 업데이트 장치(100)의 동작 상태 및 결과 등을 출력하는 출력수단을 포함할 수 있다. 출력수단으로는 펌웨어 업데이트 장치(100)의 동작 상태 및 결과 등의 정보가 표시되는 디스플레이를 포함할 수 있으며, 결과를 음성으로 안내하는 스피커를 포함할 수 있다.
이때, 디스플레이는 액정 디스플레이(Liquid Crystal Display, LCD), 유기 발광 다이오드(Organic Light-Emitting Diode, OLED), 플렉시블 디스플레이(Flexible Display) 등이 포함될 수 있다. 물론, 디스플레이의 종류는 실시 형태에 따라 다양하게 구현될 수 있음은 당연한 것이다.
통신부(130)는 업데이트 서버(200)와의 통신 인터페이스를 지원하는 통신모듈을 포함할 수 있다. 통신모듈은 무선 인터넷 접속을 위한 모듈 또는 근거리 통신(Short Range Communication)을 위한 모듈을 포함할 수 있다.
저장부(140)는 펌웨어 업데이트 장치(100)가 동작하는데 필요한 데이터와 프로그램 등을 저장할 수 있다. 여기서, 저장부(140)는 플래시메모리(Flash Memory)(141) 및 램(Random Access Memory, RAM)(145)과 같은 저장매체를 포함할 수 있다. 플래시메모리(141)는 업데이트 서버(200)로부터 다운로드 된 하나 이상의 펌웨어가 저장될 수 있으며, 단말장치(100)의 부팅 시에 반영되는 부트 로더 환경변수가 저장될 수 있다.
신호 처리부(150)는 업데이트 서버(200)에 펌웨어를 다운로드 하여 설치하고, 설치된 펌웨어의 버전 정보를 확인하여 업데이트를 처리할 수 있다. 또한, 신호 처리부(150)는 펌웨어의 업데이트 시 펌웨어의 복구 여부를 판단하여 펌웨어 복구를 처리할 수도 있다. 이때, 신호 처리부(150)는 업데이트 서버(200)로부터 제공되는 단위 델타 정보별로 업데이트를 수행하도록 한다.
이에, 신호 처리부(150)는 업데이트 매니저(160) 및 부트 로더(170)를 포함할 수 있다. 여기서, 업데이트 매니저(160) 및 부트 로더(170)는 제어부(110)에 의해 램(145) 영역에서 실행될 수 있다.
제어부(110)에 의해 실행된 업데이트 매니저(160)는 통신부(130)를 통해 업데이트 서버(200)에 접근하여 펌웨어의 버전 정보를 확인할 수 있다. 여기서, 업데이트 매니저(160)는 업데이트 서버(200)로부터 최신 버전 업데이트 정보가 통지되면 최신 버전의 펌웨어 버전 정보를 확인할 수 있으며, 별도의 통지 없이 업데이트 매니저(160)가 주기적으로 업데이트 서버(200)에 등록된 펌웨어의 버전 정보를 확인할 수도 있다.
이때, 업데이트 매니저(160)는 펌웨어의 버전 확인 결과 현재 버전 보다 최신 버전의 펌웨어가 업데이트 서버(200)에 존재하는 경우, 업데이트 서버(200)로부터 업데이트 정보로서 델타 정보를 수신할 수 있다.
델타 정보는 현재 버전의 펌웨어와 최신 버전의 펌웨어 간 차이가 있는 데이터에 대한 정보로서, 차이가 있는 데이터, 해당 데이터의 위치 및 크기 정보를 포함할 수 있다. 여기서, 펌웨어는 바이트 단위의 크기를 갖는 정보 데이터들로 구성될 수 있다.
여기서, 업데이트 매니저(160)는 업데이트 서버(200)에 존재하는 단위 델타 정보의 개수를 파악할 수 있으며, 단위 델타 정보마다 순차적으로 펌웨어에 대한 업데이트를 진행할 수 있다.
일 예로, 단말장치(100)에 설치된 제1 버전의 펌웨어 데이터 중 일부 데이터가 'ABCDE'이고, 대응하는 최신 버전의 펌웨어 데이터가 'ABCFG'인 경우, 제1 버전의 펌웨어에 포함된 네 번째 정보 데이터 'D'와, 다섯 번째 정보 데이터 'E'가 최신 버전의 펌웨어에 포함된 네 번째 정보 데이터 'F' 및 다섯 번째 정보 데이터 'G'와 차이가 있다. 따라서, 단위 델타 정보는 최신 버전의 펌웨어에 포함된 네 번째 정보 데이터 'F'에 대응하여 위치 정보 '4' 및 크기 정보 '1 (Byte)'을 포함하고, 다섯 번째 정보 데이터 'G'에 대응하여 위치 정보 '5' 및 크기 정보 '1 (Byte)'을 포함할 수 있다.
먼저, 업데이트 매니저(160)는 업데이트 서버(200)로부터 전체 델타 정보의 크기 정보를 수신할 수 있다. 이때, 업데이트 매니저(160)는 플래시메모리(141)의 여유공간을 계산하도록 한다. 업데이트 매니저(160)는 여유공간의 크기와 전체 델타 정보의 크기를 비교하여, 여유공간의 크기가 큰 경우에 백업 정보 저장 기능을 활성화시킬 수 있다.
이에, 업데이트 매니저(160)는 백업 정보 저장 기능이 활성화되면, 업데이트 서버(200)로부터 단위 델타 정보를 수신하도록 한다. 업데이트 매니저(160)는 단말장치(100)에 미리 설치된 현재 버전의 펌웨어 중 수신된 단위 델타 정보에 포함된 각 정보 데이터 위치에 대응하는 정보 데이터를 플래시메모리(141)의 여유 공간 상에 백업하도록 한다. 이 경우, 업데이트 매니저(160)는 현재 버전의 펌웨어 중 해당되는 정보 데이터의 개수, 위치 및 크기 정보를 함께 저장할 수 있다.
일 예로, 수신된 단위 델타 정보에 펌웨어의 네 번째 정보 데이터 및 다섯 번째 정보 데이터가 포함된 경우, 업데이트 매니저(160)는 현재 버전의 펌웨어 중 네 번째 정보 데이터 및 다섯 번째 정보 데이터와, 그에 대응하는 개수 정보 '2', 위치 정보 '4, 5' 및 크기 정보 '2 (Byte)를 포함하는 백업 정보를 플래시메모리(141)의 여유 공간 상에 저장할 수 있다.
업데이트 매니저(160)는 현재 버전의 펌웨어에 대한 백업 정보를 저장하고 난 후, 수신된 단위 델타 정보를 이용하여 현재 버전의 펌웨어 중 해당 위치의 정보 데이터를 업데이트하도록 한다.
일 예로, 업데이트 매니저(160)는 단위 델타 정보에 포함된 네 번째 정보 데이터 'F' 및 다섯 번째 정보 데이터 'G'를 이용하여 현재 버전의 펌웨어 중 네 번째 정보 데이터와 다섯 번째 정보 데이터를 업데이트하도록 한다.
업데이트 매니저(160)는 수신된 단위 델타 정보를 통해 펌웨어의 일부 정보 데이터에 대한 업데이트가 완료되면, 업데이트 서버(200)로부터 다음 순서의 단위 델타 정보를 수신할 수 있다. 이때, 업데이트 매니저(160)는 순차적으로 단위 델타 정보를 수신하여, 펌웨어 중 수신된 단위 델타 정보에 대응하는 위치의 정보 데이터를 업데이트하도록 한다.
단위 델타 정보 단위로 업데이트를 수행하는 동안, 업데이트 매니저(160)는 대응하는 위치의 정보 데이터에 대한 백업 정보를 플래시메모리(141)의 여유 공간 상에 저장하도록 한다.
만일, 백업 정보 저장 기능이 비활성화 상태라면, 업데이트 매니저(160)는 현재 버전의 펌웨어에 대한 백업 정보를 저장하지 않고, 바로 업데이트 절차를 진행할 수 있다.
전체 델타 정보에 대한 펌웨어의 업데이트가 완료되면 단말장치(100)가 재 부팅되며, 업데이트 매니저(160)는 재 부팅 시에 업데이트 된 펌웨어의 정상 또는 비정상 동작 상태 또는 에러 발생 여부 등을 확인하여 그 결과를 플래시메모리(141)의 부트 로더 환경변수 영역에 저장할 수 있다. 플래시메모리(141)의 부트 로더 환경변수 영역에 저장된 정보는 부팅 시 부트 로더(170)에 의해 호출되어, 해당 펌웨어의 복구 여부를 확인하는데 이용될 수 있다.
만일, 단말장치(100)의 부팅 시 부트 로더 환경변수 영역에 저장된 정보로부터 펌웨어의 복구가 요구되는 경우, 부트 로더(170)는 단말장치(100)에 설치된 펌웨어에서 에러가 발생한 정보 데이터를 다시 이전 버전의 정보 데이터로 복구하도록 한다.
부트 로더(170)는 업데이트 된 펌웨어의 정보 데이터를 이전 버전으로 복구하는 경우, 플래시메모리(141)에 해당 정보 데이터에 대한 백업 정보가 저장되어있는지를 확인하여 백업 정보를 로딩한다. 이때, 부트 로더(170)는 로딩된 백업 정보를 이용하여 업데이트 된 펌웨어를 다시 이전 버전의 펌웨어로 복구하도록 한다.
업데이트 된 펌웨어의 정보 데이터를 이전 버전으로 복구가 완료되면 단말장치(100)가 재 부팅되며, 업데이트 매니저(160)는 재 부팅 시에 업데이트 된 펌웨어의 정상 또는 비정상 동작 상태를 확인하여 그 결과를 플래시메모리(141)의 부트 로더 환경변수 영역에 저장할 수 있다. 플래시메모리(141)의 부트 로더 환경변수 영역에 저장된 정보는 부팅 시 부트 로더(170)에 의해 호출되어, 해당 펌웨어의 재 복구 여부를 확인하는데 이용될 수 있다.
이에, 단말장치(100)에 설치된 펌웨어의 업데이트 및 업데이트 된 펌웨어의 복구 동작에 대한 실시예는 도 3 및 도 4를 참조하여 더욱 상세히 설명하도록 한다.
도 3은 본 발명에 따른 펌웨어 업데이트 동작을 설명하는데 참조되는 실시예를 도시한 도면이다.
도 3을 참조하면, 업데이트 매니저(160) 및 부트 로더(170)는 램(145) 영역에서 실행될 수 있다. 업데이트 매니저(160)는 동작 (a)와 같이 업데이트 서버(200)에 접근하여 펌웨어의 버전 정보를 확인한다. 이때, 업데이트 서버(200)는 단말장치(101)에 등록된 펌웨어의 현재 버전 정보(313) 및 그의 최신버전 정보(311)를 비교하여 현재 단말장치(101)에 설치된 펌웨어가 최신 버전인지를 확인할 수 있다.
일 예로, 업데이트 서버(200)는 단말장치(101)에 설치된 펌웨어의 버전이 1.1 이고, 최신 버전이 2.0인 경우, 각 버전의 펌웨어 파일(315)을 추출하여 비교할 수 있다. 업데이트 서버(200)는 1.1 버전의 펌웨어 파일과 2.0 버전의 펌웨어 파일을 비교하여, 동작 (b)와 같이 두 버전의 펌웨어 파일에 차이가 있는 정보 데이터에 대한 하나 이상의 단위 델타 정보(317)를 생성하여 저장하고, 생성된 단위 델타 정보를 단말장치(101)의 업데이트 매니저(160)에 전송하도록 한다.
여기서, 업데이트 서버(200)는 단위 델타 정보를 송신하기 전, 동작 (c)와 같이 전체 델타 정보의 크기 정보를 단말장치(101)의 업데이트 매니저(160)로 전송하고, 이때 업데이트 매니저(160)는 동작 (d)와 같이 전체 델타 정보의 크기 정보에 대한 플래시 메모리의 여유 공간을 확인하여 여유 공간이 확보된 경우에 백업 기능을 활설화 할 수 있다.
이후, 업데이트 서버(200)는 하나의 단위 델타 정보를 단말장치(101)의 업데이트 매니저(160)에 전송한 이후에 업데이트 완료 정보가 수신되면, 다음 순서의 단위 델타 정보를 단말장치(101)의 업데이트 매니저(160)에 전송할 수 있다. 이와 같은 방식으로, 업데이트 서버(200)는 펌웨어의 전체 델타 정보를 업데이트 매니저(160)에 순차적으로 전송할 수 있다.
동작 (b)에서 생성된 단위 델타 정보(317)는 2.0 버전의 펌웨어 파일 중 1.1 버전의 펌웨어 파일과 차이가 있는 정보 데이터 'Z', 해당 정보 데이터 'Z'의 위치 정보 '2' 및 크기 정보 '1(byte)'을 포함할 수 있다.
업데이트 매니저(160)는 동작 (e)와 같이 업데이트 서버(200)로부터 단위 델타 정보(317)가 수신되면, (f)와 같이 플래시메모리(141)에 저장된 펌웨어에서 수신된 단위 델타 정보(317)에 해당하는 정보 데이터와 동일한 위치 및 크기, 즉, 두 번째 1byte 크기의 정보 데이터 'B'에 대한 백업 및 업데이트 처리를 한다. 이때, 업데이트 매니저(160)는 동작 (g)와 같이, 플래시메모리(141)에 저장된 펌웨어 'ABCDD...'(325)에서 B에 대한 백업 정보(327)를 생성하여 여유 공간 상에 저장하도록 한다. 여기서, 백업 정보(327)는 정보 데이터의 개수, 위치, 크기 및 해당 정보 데이터를 포함할 수 있다.
'B'에 대한 백업 처리가 완료되면, 업데이트 매니저(160)는 동작 (h)와 같이, 수신된 단위 델타 정보(317)에 기초하여 펌웨어(325)를 업데이트 처리 한다. 이 경우, 업데이트 매니저(160)는 플래시메모리(141)에 저장된 펌웨어(325)의 두 번째 1byte를 정보 데이터 'Z'로 업데이트하도록 한다.
업데이트 매니저(160)는 업데이트 된 펌웨어의 정상 또는 비정상 동작 상태를 확인하여 그 결과를 플래시메모리(141)의 부트 로더 환경변수 영역(329)에 저장할 수 있으며, 부트 로더(170)는 동작 (i)와 같이 부팅 시 부트 로더 환경변수 영역(329)에 저장된 정보에 근거하여 업데이트 상태를 확인할 수 있다.
수신된 단위 델타 정보(317)에 대한 업데이트가 완료되면, 업데이트 매니저는 업데이트 서버(200)로부터 다음 순서의 델타 정보를 수신하여 도 3과 동일한 동작을 순차적으로 진행하며 다음 순서의 델타 정보에 대응하는 위치의 정보 데이터에 대한 업데이트를 수행할 수 있다.
도 4는 본 발명에 따른 펌웨어 복구 동작을 설명하는데 참조되는 실시예를 도시한 도면이다.
도 4를 참조하면, 단말장치(101)의 펌웨어 업데이트 시, 업데이트 된 펌웨어가 동작하지 않거나 에러가 발생하여 단말장치가 재 부팅 되어 경우 부트 로더(170)가 램(145) 영역에서 실행되며, 이때 부트 로더(170)는 업데이트 된 펌웨어를 다시 이전 버전의 펌웨어로 복구하도록 한다. 여기서, 단말장치는 사용자의 수동 조작에 의해 재 부팅될 수 있다.
부트 로더(170)는 업데이트 된 펌웨어를 이전 버전의 펌웨어로 복구하는 경우, 동작 (a)와 같이 플래시메모리(141)의 여유공간(411)에 백업 정보(413)가 저장되어있는지를 확인하여 백업 정보(413)를 로딩한다. 이때, 부트 로더(170)는 로딩된 백업 정보(413)를 이용하여 동작 (b) 및 (c)와 같이 업데이트 된 펌웨어를 다시 이전 버전의 펌웨어로 복구 처리하도록 한다.
일 예로, 부트 로더(170)는 업데이트 된 펌웨어 'AZCDD..'(415)에서 두 번째 1byte의 정보 데이터 'Z'를 백업 정보(413)에 근거하여 'B'로 복구 하도록 한다.
업데이트 된 펌웨어 'AZCDD..'(415)를 이전 버전의 펌웨어 'ABCDD...'로 복구가 완료되면 단말장치(101)가 재 부팅되며, 재 부팅 시 부트 로더(170)는 동작 (d)와 같이 플래시메모리(141)의 부트 로더 환경변수 영역에 저장된 정보를 호출하여 해당 펌웨어의 재 복구 여부를 확인할 수 있다.
상기와 같이 구성되는 본 발명에 따른 장치의 동작 흐름을 보다 상세히 설명하면 다음과 같다.
도 5 및 도 6은 본 발명에 따른 펌웨어 업데이트 방법에 대한 동작 흐름을 도시한 도면이다.
도 5에 도시된 바와 같이, 펌웨어 업데이트 장치는 업데이트 서버로부터 펌웨어의 버전 정보를 확인한다(S110). 이때, 펌웨어 업데이트 장치는 단말장치에 설치된 펌웨어 보다 최신 버전의 펌웨어가 존재하는 경우, 업데이트 서버로부터 전체 델타 정보의 크기 정보를 수신하고, 이를 토대로 플래시 메모리의 여유 공간을 계산하도록 한다 (S120).
펌웨어 업데이트 장치는 플래시메모리의 여유공간을 계산하여 여유공간의 크기가 전체 델타 정보의 크기 보다 큰 지를 확인한다. 만일, 여유공간의 크기가 전체 델타 정보의 크기 보다 큰 경우(S130), 펌웨어 업데이트 장치는 플래시메모리의 백업 저장 기능을 활성화하고(S140), 그렇지 않은 경우에는 백업 기능을 비활성화하도록 한다(S145),
이후, 펌웨어 업데이트 장치는 업데이트 서버로부터 단위 델타 정보를 수신할 수 있다(S150). 만일, 'S140' 과정에 의해 백업 기능이 활성화된 경우라면(S160), 펌웨어 업데이트 장치는 플래시메모리에 저장된 현재 버전의 펌웨어 중 수신된 단위 델타 정보의 위치에 대응하는 정보 데이터를 여유 공간에 백업하도록 한다(S170).
'S170' 과정에서, 펌웨어 업데이트 장치는 플래시메모리에 저장된 현재 버전의 펌웨어 중 수신된 단위 델타 정보로부터 확인된 정보 데이터의 위치 및 크기에 대응하는 정보 데이터를 추출하여 백업 정보를 생성하고, 생성한 백업 정보를 플래시메모리의 여유 공간에 저장하도록 한다.
물론, 'S145' 과정에 의해 백업 기능이 비활성화된 경우라면, 'S170' 과정은 생략될 수 있다.
이후, 펌웨어 업데이트 장치는 수신된 단위 델타 정보를 이용하여 플래시메모리에 저장된 펌웨어를 최신 버전으로 업데이트하도록 한다(S180).
'S180' 과정 이후, 펌웨어 업데이트 장치는 업데이트 서버로부터 전체 델타 정보를 수신하였는지를 확인한다. 만일, 전체 델타 정보가 수신되지 않았다면(S190), 펌웨어 업데이트 장치는 업데이트 서버로부터 다음 순서의 단위 델타 정보를 수신하고(S150), 이후 'S160' 내지 'S180' 과정을 수행하도록 한다.
'S150' 내지 'S180' 과정은 업데이트 서버에 저장된 전체 델타 정보를 모두 수신할 때까지 반복하여 수행하도록 한다.
'S190' 과정에서 전체 델타 정보가 수신된 것으로 확인되면, 펌웨어 업데이트 장치는 해당 펌웨어에 대한 업데이트 정보를 저장하고(S200), 펌웨어 업데이트를 종료하도록 한다.
펌웨어 업데이트 완료 시, 단말장치는 재부팅될 수 있다.
도 6에 도시된 바와 같이, 단말장치가 부팅되는 과정에서 업데이트 된 펌웨어에 에러가 발생한 경우(S210, S220), 펌웨어 업데이트 장치는 도 5의 'S170' 과정에서 여유 공간에 백업한 업데이트 이전 버전의 백업 정보를 로딩하도록 한다(S230).
이때, 펌웨어 업데이트 장치는 'S230' 과정에서 로딩한 백업 정보를 이용하여 업데이트 된 펌웨어를 이전 버전으로 복구하도록 한다(S240).
'S240' 과정에서 이전 버전으로의 펌웨어 복구가 완료되면, 펌웨어 업데이트 장치는 단말장치를 재부팅시켜(S250), 이전 버전으로 복구 된 펌웨어가 실행되도록 한다.
한편, 단말장치가 부팅되는 과정에서 업데이트 된 펌웨어에 에러가 발생하지 않았다면, 단말장치는 펌웨어를 실행하도록 한다(S260).
상기에서와 같이 동작하는 본 실시예에 따른 펌웨어 업데이트 장치는 독립적인 하드웨어 장치 형태로 구현될 수 있다. 한편, 본 실시예에 따른 감시 영상 제공 장치는 적어도 하나 이상의 프로세서(processor)로서 마이크로 프로세서나 범용 컴퓨터 시스템과 같은 다른 하드웨어 장치에 포함된 형태로 구동될 수 있다.
도 7은 본 발명에 따른 장치가 적용된 컴퓨팅 시스템을 도시한 도면이다.
도 7을 참조하면, 컴퓨팅 시스템(1000)은 버스(1200)를 통해 연결되는 적어도 하나의 프로세서(1100), 메모리(1300), 사용자 인터페이스 입력 장치(1400), 사용자 인터페이스 출력 장치(1500), 스토리지(1600), 및 네트워크 인터페이스(1700)를 포함할 수 있다.
프로세서(1100)는 중앙 처리 장치(CPU) 또는 메모리(1300) 및/또는 스토리지(1600)에 저장된 명령어들에 대한 처리를 실행하는 반도체 장치일 수 있다. 메모리(1300) 및 스토리지(1600)는 다양한 종류의 휘발성 또는 불휘발성 저장 매체를 포함할 수 있다. 예를 들어, 메모리(1300)는 ROM(Read Only Memory) 및 RAM(Random Access Memory)을 포함할 수 있다.
따라서, 본 명세서에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서(1100)에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM과 같은 저장 매체(즉, 메모리(1300) 및/또는 스토리지(1600))에 상주할 수도 있다. 예시적인 저장 매체는 프로세서(1100)에 커플링되며, 그 프로세서(1100)는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있다. 다른 방법으로, 저장 매체는 프로세서(1100)와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다.
따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 단말장치 110: 제어부
120: 인터페이스부 130: 통신부
140: 저장부 141: 플래시메모리
145: 램(RAM) 150: 신호 처리부
160: 업데이트 매니저 170: 부트 로더
200: 업데이트 서버

Claims (20)

  1. 업데이트 서버로부터 단말장치에 설치된 펌웨어의 버전 정보를 확인하여 최신 버전의 펌웨어에 대한 델타 정보를 수신하고, 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어를 업데이트 하는 업데이트 매니저; 및
    업데이트 된 펌웨어가 정상 동작하지 않거나 에러가 발생한 경우 미리 저장된 백업 정보를 이용하여 해당 펌웨어를 복구하는 부트 로더를 포함하며,
    상기 업데이트 매니저는, 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 상기 델타 정보에 대응하는 위치의 정보 데이터에 대한 백업 정보를 생성하여 저장하는 것을 특징으로 하는 펌웨어 업데이트 장치.
  2. 청구항 1에 있어서,
    상기 업데이트 서버는, 펌웨어에 대한 하나 이상의 델타 정보를 저장하고,
    상기 업데이트 매니저는, 상기 업데이트 서버에 저장된 각각의 델타 정보에 대응하여 순차적으로 업데이트를 수행하는 것을 특징으로 하는 펌웨어 업데이트 장치.
  3. 청구항 1에 있어서,
    상기 업데이트 매니저는,
    메모리의 여유 공간의 크기를 계산하고, 상기 여유 공간의 크기가 전체 델타 정보의 크기 보다 더 큰 경우에 백업 기능을 활성화하는 것을 특징으로 하는 펌웨어 업데이트 장치.
  4. 청구항 1에 있어서,
    상기 업데이트 매니저는,
    상기 펌웨어의 업데이트 동작 수행 시, 상기 델타 정보에 기초하여 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 백업할 정보 데이터의 위치 및 크기 정보를 확인하는 것을 특징으로 하는 펌웨어 업데이트 장치.
  5. 청구항 1에 있어서,
    상기 업데이트 매니저는,
    상기 펌웨어의 업데이트 동작 수행 시, 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 업데이트할 정보 데이터의 위치 및 크기 정보를 확인하여, 확인된 위치 및 크기에 해당하는 정보 데이터를 업데이트하는 것을 특징으로 하는 펌웨어 업데이트 장치.
  6. 청구항 1에 있어서,
    상기 업데이트 매니저는,
    업데이트 된 펌웨어의 정상 또는 비정상 동작 상태를 확인하여 그 결과를 메모리의 부트 로더 환경변수 영역에 저장하고,
    상기 부트 로더는,
    단말장치의 부팅 시 상기 메모리의 부트 로더 환경변수 영역에 저장된 정보를 호출하여 업데이트 된 펌웨어의 복구 여부를 확인하는 것을 특징으로 하는 펌웨어 업데이트 장치.
  7. 청구항 1에 있어서,
    상기 부트 로더는,
    상기 펌웨어의 복구 동작 수행 시, 상기 여유 공간에 저장된 백업 정보를 로딩하여, 복구할 펌웨어의 정보 데이터들 중 복구할 정보 데이터와, 그의 위치, 크기 및 개수 정보를 확인하여, 확인된 위치, 크기 및 개수의 정보 데이터를 복구하는 것을 특징으로 하는 펌웨어 업데이트 장치.
  8. 청구항 1에 있어서,
    상기 델타 정보는,
    최신 버전의 펌웨어 중 상기 단말장치에 설치된 버전의 펌웨어와 차이가 있는 정보 데이터, 해당 정보 데이터의 위치 및 크기 정보를 포함하는 것을 특징으로 하는 펌웨어 업데이트 장치.
  9. 청구항 1에 있어서,
    상기 델타 정보는,
    1 바이트(byte) 크기의 정보 데이터 단위로 생성되는 것을 특징으로 하는 펌웨어 업데이트 장치.
  10. 업데이트 서버로부터 단말장치에 설치된 펌웨어의 버전 정보를 확인하여 최신 버전의 펌웨어에 대한 델타 정보를 수신하는 단계;
    상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 상기 델타 정보에 대응하는 위치의 정보 데이터에 대한 백업 정보를 생성하여 저장하는 단계;
    상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어를 업데이트 하는 단계; 및
    업데이트 된 펌웨어가 정상 동작하지 않거나 에러가 발생한 경우 미리 저장된 백업 정보를 이용하여 해당 펌웨어를 복구하는 단계
    를 포함하는 것을 특징으로 하는 펌웨어 업데이트 방법.
  11. 청구항 10에 있어서,
    수신된 델타 정보에 기초하여 펌웨어의 업데이트가 완료되면, 상기 업데이트 서버로부터 다음 순서의 델타 정보를 수신하는 단계를 더 포함하는 것을 특징으로 하는 펌웨어 업데이트 방법.
  12. 청구항 10에 있어서,
    상기 델타 정보를 수신하는 단계 이전에,
    업데이트 서버로부터 전체 델타 정보의 크기 정보를 수신하는 단계;
    메모리의 여유 공간의 크기를 계산하는 단계; 및
    상기 메모리의 여유 공간의 크기 및 전체 델타 정보의 크기를 비교하는 단계를 더 포함하는 것을 특징으로 하는 펌웨어 업데이트 방법.
  13. 청구항 12에 있어서,
    상기 백업 정보를 생성하여 저장하는 단계는,
    상기 메모리의 여유 공간의 크기가 상기 전체 델타 정보의 크기 보다 더 큰 경우에 수행되는 것을 특징으로 하는 펌웨어 업데이트 방법.
  14. 청구항 10에 있어서,
    상기 백업 정보를 생성하여 저장하는 단계 이전에,
    상기 델타 정보에 기초하여 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 백업할 정보 데이터의 위치 및 크기 정보를 확인하는 단계를 더 포함하는 것을 특징으로 하는 펌웨어 업데이트 방법.
  15. 청구항 10에 있어서,
    상기 펌웨어를 업데이트 하는 단계는,
    상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 업데이트할 정보 데이터의 위치 및 크기 정보를 확인하는 단계; 및
    상기 확인된 위치 및 크기에 해당하는 정보 데이터를 업데이트하는 단계를 포함하는 것을 특징으로 하는 펌웨어 업데이트 방법.
  16. 청구항 10에 있어서,
    상기 펌웨어를 복구하는 단계는,
    상기 여유 공간에 저장된 백업 정보를 로딩하는 단계;
    복구할 펌웨어의 정보 데이터들 중 복구할 정보 데이터와, 그의 위치, 크기 및 개수 정보를 확인하는 단계; 및
    상기 확인된 위치, 크기 및 개수의 정보 데이터를 복구하는 단계를 포함하는 것을 특징으로 하는 펌웨어 업데이트 방법.
  17. 단말장치로 제공할 펌웨어를 각 버전 별로 저장하고 관리하며, 최신 버전의 펌웨어 업데이트 시 최신 버전의 펌웨어에 대한 델타 정보를 생성하여 제공하는 업데이트 서버; 및
    상기 업데이트 서버로부터 최신 버전의 펌웨어에 대한 델타 정보를 수신하여 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어를 업데이트 하고, 업데이트 된 펌웨어가 정상 동작하지 않거나 에러가 발생한 경우 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 상기 델타 정보에 대응하는 위치의 정보 데이터에 대한 백업 정보를 이용하여 해당 펌웨어를 복구하는 펌웨어 업데이트 장치
    를 포함하는 것을 특징으로 하는 펌웨어 업데이트 시스템.
  18. 청구항 17에 있어서,
    상기 업데이트 서버는, 펌웨어에 대한 하나 이상의 델타 정보를 저장하고,
    상기 펌웨어 업데이트 장치는, 상기 업데이트 서버에 저장된 각각의 델타 정보에 대응하여 순차적으로 업데이트를 수행하는 것을 특징으로 하는 펌웨어 업데이트 시스템.
  19. 청구항 17에 있어서,
    상기 펌웨어 업데이트 장치는,
    상기 델타 정보에 기초하여 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 백업할 정보 데이터의 위치 및 크기 정보를 확인하고, 메모리의 여유 공간의 크기가 상기 델타 정보에 포함된 정보 데이터의 크기 보다 더 큰 경우에 상기 백업 정보를 상기 여유 공간에 저장하는 것을 특징으로 하는 펌웨어 업데이트 시스템.
  20. 청구항 17에 있어서,
    상기 펌웨어 업데이트 장치는,
    상기 펌웨어의 업데이트 동작 수행 시, 상기 델타 정보로부터 상기 단말장치에 설치된 펌웨어의 정보 데이터들 중 업데이트할 정보 데이터의 위치 및 크기 정보를 확인하여, 확인된 위치 및 크기에 해당하는 정보 데이터를 업데이트하는 것을 특징으로 하는 펌웨어 업데이트 시스템.
KR1020160056362A 2016-05-09 2016-05-09 펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템 KR20170126230A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160056362A KR20170126230A (ko) 2016-05-09 2016-05-09 펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템
US15/365,513 US20170322796A1 (en) 2016-05-09 2016-11-30 Device and method for updating firmware and firmware update system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160056362A KR20170126230A (ko) 2016-05-09 2016-05-09 펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템

Publications (1)

Publication Number Publication Date
KR20170126230A true KR20170126230A (ko) 2017-11-17

Family

ID=60243934

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160056362A KR20170126230A (ko) 2016-05-09 2016-05-09 펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템

Country Status (2)

Country Link
US (1) US20170322796A1 (ko)
KR (1) KR20170126230A (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110154938A (zh) * 2018-02-16 2019-08-23 丰田自动车株式会社 车辆控制装置、程序更新方法、及存储用于更新的程序的非易失性存储介质
KR20190135313A (ko) * 2018-05-28 2019-12-06 한국전자통신연구원 전자해도 업데이트 장치 및 방법
US11079948B2 (en) 2019-01-18 2021-08-03 SK Hynix Inc. Memory system for updating firmware when SPO occurs and operating method thereof
WO2022177120A1 (ko) * 2021-02-17 2022-08-25 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법
WO2023140636A1 (ko) * 2022-01-21 2023-07-27 엘지전자 주식회사 업그레이드 가능한 전자 기기 및 전자 기기를 업그레이드하는 방법
KR102561155B1 (ko) * 2022-12-30 2023-07-31 예영동 검침용 원격 통신기 펌웨어 업데이트 시스템 및 그를 이용한 검침용 원격 통신기 펌웨어 업데이트 방법
KR102565979B1 (ko) * 2023-04-10 2023-08-11 주식회사 스마트비전 교통정보센터의 교통정보시스템을 위한 l2 스위치 펌웨어 업데이트 시스템 및 방법
KR102602404B1 (ko) * 2023-04-11 2023-11-15 (주)다인시스 스마트 병동을 위한 환자정보 디스플레이 시스템

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107273139A (zh) * 2017-07-05 2017-10-20 努比亚技术有限公司 一种系统更新方法、设备及计算机可读存储介质
US11416236B2 (en) * 2017-07-07 2022-08-16 Qualcomm Incorporated Over-the-air (OTA) updating of partially compressed firmware
EP3590037A4 (en) * 2017-07-25 2020-07-08 Aurora Labs Ltd CONSTRUCTION OF DELTA SOFTWARE UPDATES FOR VEHICLE ECU SOFTWARE AND TOOL CHAIN DETECTION
US10956143B2 (en) * 2017-12-06 2021-03-23 Hewlett Packard Enterprise Development Lp Server updates
CN110083381B (zh) * 2018-01-26 2023-04-28 启碁科技股份有限公司 增量升级的方法及装置
CN108845814A (zh) * 2018-06-14 2018-11-20 郑州云海信息技术有限公司 一种固件更新的保护方法、装置和计算机可读存储介质
US11556326B2 (en) * 2018-09-06 2023-01-17 Arm Limited Methods for performing a rollback-capable software update at a device
KR20200089482A (ko) * 2019-01-17 2020-07-27 주식회사 엘지화학 메모리, 상기 메모리의 에러 복구 방법, 및 상기 메모리를 포함하는 배터리 장치
EP3908947A1 (en) * 2019-03-25 2021-11-17 Aurora Labs Ltd Generating and signing a line-of-code behavior and relation model
CN109976949B (zh) * 2019-03-28 2021-12-17 苏州浪潮智能科技有限公司 一种bmc故障镜像回滚刷新方法、装置、终端及存储介质
WO2021117939A1 (ko) * 2019-12-12 2021-06-17 엘지전자 주식회사 펌웨어 제공 장치 및 그 제공 방법
CN115437670B (zh) * 2022-09-06 2023-11-21 北京斯年智驾科技有限公司 基于tftp的汽车控制器程序升级系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8726259B2 (en) * 2007-04-09 2014-05-13 Kyocera Corporation System and method for preserving device parameters during a FOTA upgrade
US8583602B2 (en) * 2008-06-05 2013-11-12 Palm, Inc. Restoring of data to mobile computing device
JP5113700B2 (ja) * 2008-09-24 2013-01-09 株式会社日立ソリューションズ ファームウェア更新装置及び方法
WO2011075139A1 (en) * 2009-12-18 2011-06-23 Hewlett-Packard Development Company, L.P. Methods and devices for updating firmware of a component using a firmware update application
KR20110104383A (ko) * 2010-03-16 2011-09-22 삼성전자주식회사 펌웨어 업데이트 서비스 장치 및 방법
US8938730B2 (en) * 2012-12-17 2015-01-20 Itron, Inc. Utilizing a multi-system set configuration to update a utility node system set
US20150169310A1 (en) * 2013-12-12 2015-06-18 Lenovo (Singapore) Pte, Ltd. Maintaining firmware
US9588849B2 (en) * 2015-01-20 2017-03-07 Commvault Systems, Inc. Synchronizing selected portions of data in a storage management system
US9787800B2 (en) * 2015-12-30 2017-10-10 Veniam, Inc. Systems and methods for remote software update and distribution in a network of moving things
US10162622B2 (en) * 2016-02-26 2018-12-25 Ayla Networks, Inc. Local over the air update of an embedded system

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110154938A (zh) * 2018-02-16 2019-08-23 丰田自动车株式会社 车辆控制装置、程序更新方法、及存储用于更新的程序的非易失性存储介质
CN110154938B (zh) * 2018-02-16 2022-08-12 丰田自动车株式会社 车辆控制装置、程序更新方法、及存储用于更新的程序的非易失性存储介质
KR20190135313A (ko) * 2018-05-28 2019-12-06 한국전자통신연구원 전자해도 업데이트 장치 및 방법
US11079948B2 (en) 2019-01-18 2021-08-03 SK Hynix Inc. Memory system for updating firmware when SPO occurs and operating method thereof
US11599282B2 (en) 2019-01-18 2023-03-07 SK Hynix Inc. Memory system for updating firmware when SPO occurs and operating method thereof
US11966603B2 (en) 2019-01-18 2024-04-23 SK Hynix Inc. Memory system for updating firmware when SPO occurs and operating method thereof
WO2022177120A1 (ko) * 2021-02-17 2022-08-25 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법
WO2023140636A1 (ko) * 2022-01-21 2023-07-27 엘지전자 주식회사 업그레이드 가능한 전자 기기 및 전자 기기를 업그레이드하는 방법
KR102561155B1 (ko) * 2022-12-30 2023-07-31 예영동 검침용 원격 통신기 펌웨어 업데이트 시스템 및 그를 이용한 검침용 원격 통신기 펌웨어 업데이트 방법
KR102565979B1 (ko) * 2023-04-10 2023-08-11 주식회사 스마트비전 교통정보센터의 교통정보시스템을 위한 l2 스위치 펌웨어 업데이트 시스템 및 방법
KR102602404B1 (ko) * 2023-04-11 2023-11-15 (주)다인시스 스마트 병동을 위한 환자정보 디스플레이 시스템

Also Published As

Publication number Publication date
US20170322796A1 (en) 2017-11-09

Similar Documents

Publication Publication Date Title
KR20170126230A (ko) 펌웨어 업데이트 장치 및 방법, 그리고 펌웨어 업데이트 시스템
US10019253B2 (en) Systems and methods of updating hot-pluggable devices
US9858066B2 (en) Updating firmware of a hardware component
US6836859B2 (en) Method and system for version control in a fault tolerant system
US10437580B2 (en) Software updating methods and systems
US9959125B2 (en) Field update of boot loader using regular device firmware update procedure
CN101815988A (zh) 固件映像更新和管理
US11144328B2 (en) System method to update failover process by running basic input/output (BIOS) system boot code from non-volatile memory express device (NVME)
CN109857423B (zh) 程序版本更新方法、装置、服务器及可读存储介质
US11481278B2 (en) System and method for recovering an operating system after a runtime hang using a dual-flash device
US11243780B2 (en) System and method for operating system installation using a dual-flash device
US11550655B2 (en) System and method for monitoring and upgrading a dual-flash device
US11797389B2 (en) System and method for recovering an operating system after an upgrade hang using a dual-flash device
CN109582372B (zh) 一种系统的启动方法及装置
US11561788B2 (en) Resilient software updates in secure storage devices
US20220197746A1 (en) Combination bios with a/b recovery
US20140156943A1 (en) Information processing apparatus, information processing method, and program
TWI764454B (zh) 韌體損壞恢復技術
KR100860402B1 (ko) 2단계 부트로더를 이용한 시스템 업그레이드 장치 및 방법
US11768669B2 (en) Installing application program code on a vehicle control system
JP5992029B2 (ja) 基本入出力システムプログラムコードの書き込み回路及び書き込み方法
CN113297010A (zh) 基于片上系统的固件恢复方法、装置、系统及存储介质
CN112667444A (zh) 一种系统升级方法、存储介质及终端设备
KR102142905B1 (ko) 통신 단말기의 사용자 파일 시스템 자동 복구 방법
TWI839587B (zh) 用於管理軟體更新之方法及裝置,以及非暫時性電腦可讀儲存媒體