KR101968272B1 - 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체 - Google Patents

펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR101968272B1
KR101968272B1 KR1020160109132A KR20160109132A KR101968272B1 KR 101968272 B1 KR101968272 B1 KR 101968272B1 KR 1020160109132 A KR1020160109132 A KR 1020160109132A KR 20160109132 A KR20160109132 A KR 20160109132A KR 101968272 B1 KR101968272 B1 KR 101968272B1
Authority
KR
South Korea
Prior art keywords
file
update
firmware
updater
binary files
Prior art date
Application number
KR1020160109132A
Other languages
English (en)
Other versions
KR20180023575A (ko
Inventor
이성호
연준희
Original Assignee
주식회사 지2터치
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 주식회사 지2터치 filed Critical 주식회사 지2터치
Priority to KR1020160109132A priority Critical patent/KR101968272B1/ko
Publication of KR20180023575A publication Critical patent/KR20180023575A/ko
Application granted granted Critical
Publication of KR101968272B1 publication Critical patent/KR101968272B1/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • 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/445Program loading or initiating

Abstract

본원 발명은 종래의 펌웨어 업데이터의 문제점을 해결하기 위한 것으로, 복잡한 펌웨어 업데이트 절차를 자동화하고 필요한 리소스(resource)를 업데이터에 모두 포함하여 사용자가 해당 업데이터를 한번 실행시켜 펌웨어 업데이트를 완료할 수 있도록 하는 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체에 관한 것이다.

Description

펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체{FIRMWARE AUTO UPDATING METHOD AND COMPUTER READABLE RECORDING MEDIUM WRITING FIRMWARE AUTO UPDATING METHOD}
본 발명은 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체에 관한 것으로, 보다 상세하게는 여러 단계를 포함하여 복잡한 펌웨어 업데이트 절차를 한 번의 실행으로 펌웨어 업데이트 절차가 완료되도록 하는 자동 업데이트 방법 및 이 방법을 기록한 컴퓨터 판독 가능한 기록 매체에 관한 것입니다.
컴퓨터라고 한다면 대부분의 사람들은 데스크톱이나 노트북 등의 'PC(Peraonal Computer)를 떠 올린다. 하지만 넓게 보면 프로세서(CPU)를 갖추었으며, 외부로부터 정보를 입력받아 정의된 규칙에 따라 이를 처리, 결과를 생성하는 전자 기기라면 모두 컴퓨터로 정의할 수 있다. 이렇게 본다면 휴대폰이나 MP3 플레이어, PMP, 비디오 게임기, 휴대용 전자 계산기 등도 모두 컴퓨터 시스템에 속한다고 할 수 있다.
소프트웨어를 통해 전달된 정보를 받아들인 하드웨어는 내부의 논리 회로를 거쳐 사용자가 원하는 형태의 결과물을 출력한다. 여기서 말하는 결과물이란 계산 결과의 출력이나 특정 기기의 동작 등을 의미한다. 그런데 컴퓨터 시스템의 활용 범위가 넓어지고, 소프트웨어에서 전달되는 정보 역시 방대해지다 보니 하드웨어 내 제한된 종류의 논리 회로만으로는 이러한 다양한 상황에 모두 대응하기가 어렵게 되었다.
물론, 새로운 소프트웨어가 등장할 때마다 그에 해당하는 기능을 갖춘 논리 회로를 추가한 하드웨어를 새로 만들 수도 있겠지만, 이렇게 하면 비용이나 시간 면에서 큰 낭비가 아닐 수 없다. 그래서 컴퓨터 개발자들은 하드웨어 내부의 제어 부분에 저장공간을 만들어, 그 곳에 논리 회로의 기능을 보강하거나 대신할 수 있는 프로그램을 넣을 수 있게 하였다. 이것이 바로 '펌웨어(Firmware)'이다.
펌웨어는 다른 소프트웨어보다 우선적으로 하드웨어의 기본적인 동작을 제어할 수 있는 기능을 갖고 있다. 예를 들어, PC의 전원을 켜면 운영체제(윈도우 등)의 기동이 시작되기 직전, 검은색 바탕 화면에 PC 제조사의 이름 및 CPU, 메모리 및 하드디스크 용량 등의 하드웨어 정보 목록이 표시되는 것을 볼 수 있다. 이를 바이오스(BIOS : Basic Input/Output System)이라고 하는데, PC의 기본적인 입출력 기능을 담당하는 펌웨어의 일종이다. 만약 PC에 장착된 하드디스크가 손상되어 운영체제의 부팅이 실패한다 해도 바이오스는 정상적으로 작동하며, 운영체제 구동에 필요한 데이터를 찾을 수 없다는 오류메시지를 표시한다.
또한, 디지털카메라나 비디오 게임기의 경우, 메모리카드나 CD와 같이 소프트웨어가 저장된 매체가 삽입되지 않아도 전원을 켜면 초기 화면이 뜨며 저장 매체를 받아들일 준비를 한다. 이 역시 펌웨어의 역할과 형태를 보여주는 대표적인 경우이다.
옛날에 나온 기기들의 펌웨어는 하드웨어 내부의 ROM(Read Only Memory)에 저장되었다. ROM은 저장된 데이터의 수정이 불가능한 메모리이기 때문에 한 번 펌웨어가 탑재되면 내용 변경이 힘들었다. 하지만 저장 데이터의 수정이 가능하며, 전원이 꺼진 후에도 저장 데이터의 내용이 지워지지 않는 EPROM이나 플래시메모리가 개발되면서 비교적 수월하게 펌웨어의 내용을 수정할 수 있게 되었다.
펌웨어가 담긴 칩은 교체가 가능하도록 탈착식으로 되어 있는 경우도 있다.
또한, 최근 출시되는 스마트폰은 펌웨어를 업데이트하여 성능이나 기능을 향상시킬 수 있다.
덕분에 최근 출시되는 PC나 스마트폰, 휴대폰, PMP 등의 기기의 경우 제조사 측에서 성능 및 기능이 향상되었거나 오류가 수정된 새로운 펌웨어를 정기적으로 제공해주는 일이 종종 있다(펌웨어 업그레이드 또는 업데이트라 말한다).
종래의 펌웨어 업데이트에는 여러 문제가 있었다.
프로세서(예를 들어, MCU : Main Controller Unit)의 펌웨어를 업데이트 하려면 여러 번의 업데이트 절차를 거쳐야 하고 업데이트 순서도 상황에 따라 달라져 복잡하다는 것이다.
각 절차에 따라 관련 바이너리 파일(binary file)들도 따로 존재하여 관리하기가 번거롭다.
이런 문제들로 인해 펌웨어 업데이트 과정에서 실수를 유발할 가능성이 높아진다. 그리고 펌웨어가 설치될 컴퓨터의 윈도우 버전에 따라 관련 드라이버가 삭제되는 방식이 달라 수동으로 펌웨어를 업데이트 하기에는 많은 문제가 있다.
펌웨어 업데이트 도중에 기기 전원이 꺼지거나 다른 기기의 펌웨어를 실수로 덮어씌운 경우에는 기기가 오작동을 일으키거나 아예 작동 불능이 될 수 있다.
도 1은 종래의 펌웨어 업데이트를 수행하는 흐름도이다.
도 1에 예시된 흐름도는 MCU의 펌웨어 메모리 구조가 논리적으로 다음과 같은 3개의 블록 구조 : (1) Boot Loader Block, (2) Data Block 및 (3) Main Code Block를 포함한다는 가정하에 도시된다. 펌웨어 메모리 구조는 3개가 아니라 더 많은 블록 구조를 가질 수 있다. (1) Boot Loader Block은 전원 인가 시, MCU 주변 장치들을 구동시키는 부분이다. (2) Data Block은 Main Code Block 동작 시에 참조되는 블록이다. (3)Main Code Block은 Boot Loader Block의 작업들이 모두 완료되고, 수행되는 코드 블록이다.
종래의 펌웨어 업데이트는 도 1에 도시된 바와 같이 MemoryWriter를 이용하여 Boot Loader Block, Data Block, Main Code Block들을 각각 업데이트한다(S110).
그리고 MemoryChecker를 이용하여 각 Block들이 정상적으로 업데이트 되었는지 검증한다(S120).
또한, 만약 HID description이 변경되어 HID 드라이버 삭제가 필요한 경우 RunAsSystem.exe로 devcon.exe를 실행하여 HID드라이버를 삭제한다(S130).
펌웨어 업데이트를 위해서 상기의 3개의 각 메모리 블록을 업데이트하기 위한 바이너리 파일이 필요하다. 즉, (1) Boot Loader Block 업데이트용 바이너리 파일, (2) Data Block 업데이트용 바이너리 파일 및 (3) Main Code Block 업데이트용 바이너리 파일이 필요하다.
또한, (4) 각 바이너리 파일들을 각 메모리 블록에 기록하기 위한 MemoryWriter 및 (5) 각 바이너리 파일들이 정상적으로 메모리에 업데이트 되었는지 확인하기 위한 MemoryChecker가 필요하다.
펌웨어 업데이트를 위해 MCU와 업데이터(updater)간의 통신은 Human Interface Device(HID)를 이용한다. 그런데, HID에 연결되는 HID description이 변경된 경우에는 펌웨어 업데이트 완료 후 HID 드라이버를 제거해야 한다. HID 드라이버 제거에는 Microsoft®에서 제공하는 devcon.exe와 같은 외부도구 또는 삭제 실행파일을 사용할 수 있다. 또한, HID 드라이버 제거와 같은 작업은 관리자 권한을 가져야 한다. 특정 프로그램의 실행시 관리자 권한을 가지고 수행할 수 있게 해주는 기능은 RunAsSystem.exe와 같은 외부도구 또는 삭제 실행파일을 사용할 수 있다.
따라서, 펌웨어 업데이트를 위해서, (6) 시스템 관리자 권한 획득기(RunAsSystem.exe) (7) 윈도우의 각 운영체제 버전 및 시스템 종류(32비트/64비트)에 맞는 HID 드라이버 제거기(devcon.exe)들이 더 필요할 수 있다 (윈도우XP부터 윈도우10까지 종류별로 필요한 파일은 10가지이다).
종래의 펌웨어 업데이트를 위해서는 Block별로 바이너리 파일이 변경될 경우 사용자는 도 1에 도시된 절차를 매번 반복해야 하며, 펌웨어 업데이트를 위하여 15가지가 넘는 파일들을 필요로 한다.
때문에, 펌웨어 업데이트 절차 간소화 및 자동화에 대한 요구가 있다.
본원 발명은 종래의 펌웨어 업데이터의 문제점을 해결하기 위한 것으로, 복잡한 펌웨어 업데이트 절차를 자동화하고 필요한 리소스(resource)를 업데이터에 모두 포함하여 사용자가 해당 업데이터를 한번 실행시켜 펌웨어 업데이트를 완료할 수 있도록 하는 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체를 제공하는 것을 목적으로 한다.
본 발명의 펌웨어 자동 업데이트 방법의 일 측면에 따라,
펌웨어 자동 업데이트 방법에 있어서,
상기 펌웨어 자동 업데이트를 수행하는 업데이터(updater)는 메타 정보(Meta Information)와 업데이트를 위한 적어도 하나 이상의 바이너리 파일들을 포함하고,
상기 메타 정보(meta information)를 이용하여 상기 바이너리 파일들을 추출하는 단계; 및
상기 바이너리 파일들로 업데이트를 수행하는 단계;를 포함하는 것을 특징으로 한다.
바람직하게는,
상기 업데이터는 컴퓨터 프로세서에 의해 실행가능한 업데이트 실행파일을 포함한다.
바람직하게는,
상기 업데이터는 상기 업데이트 실행 파일 영역과 상기 바이너리 파일들이 저장된 영역을 구분하기 위한 식별 코드(Identification code)를 더 포함한다.
바람직하게는,
상기 업데이터와 MCU(Main Controller Unit)간 통신을 위한 HID(Human Interface Device) 드라이버를 삭제하는 단계를 더 포함한다.
바람직하게는,
상기 업데이터는 상기 HID 드라이버 삭제에 필요한 HID드라이버 삭제 실행 파일을 더 포함한다.
바람직하게는,
상기 HID드라이버 삭제 실행 파일은 윈도우버전에 따라 상이한 것을 특징으로 한다.
바람직하게는,
상기 식별 코드는 상기 업데이트 실행 파일의 상태를 검증하기 위해 사용된다.
바람직하게는,
상기 메타 정보는 상기 펌웨어 메모리의 부트 로더(Boot Loader) 블럭의 업데이터 여부에 대한 정보, 상기 펌웨어 업데이트 후 상기 HID 드라이버 삭제 여부에 대한 정보 및 상기 펌웨어 업데이트 후 시스템 재시작 여부에 관한 정보를 포함하는 것을 특징으로 한다.
바람직하게는,
상기 메타 정보는 상기 바이너리 파일들의 경로, 상기 바이너리 파일들의 파일명, 상기 바이너리 파일들의 파일 크기 및 생성일시, 파일 CRC(cyclical redundancy check) 및 파일 버전을 더 포함하는 것을 특징으로 한다.
바람직하게는,
상기 바이너리 파일들은 부트 로더 블럭(Boot Loader Block)의 업데이트 파일, 데이터 블럭(Data Block) 업데이트 파일, 메인 코드 블럭(Main Code Block) 업데이트 파일을 포함하는 것을 특징으로 한다.
본 발명의 펌웨어 자동 업데이트 방법을 기록한 컴퓨터 판독 가능한 기록 매체의 일 측면에 따라,
펌웨어 자동 업데이트를 수행하는 업데이터를 포함하는 컴퓨터 판독 가능한 기록 매체에 있어서,
상기 업데이터(updater)는 적어도 하나 이상의 바이너리 파일들 및 상기 바이너리 파일들의 파일 경로, 파일 크기 및 파일명을 포함하는 메타 정보(Meta Information)를 포함하는 것을 특징으로 한다.
바람직하게는,
상기 업데이터는 컴퓨터 프로세서에 의해 실행가능한 업데이트 실행파일을 포함한다.
바람직하게는,
상기 업데이터는 상기 업데이트 실행 파일 영역과 상기 바이너리 파일들이 저장된 영역을 구분하기 위한 식별 코드(Identification code)를 더 포함한다.
바람직하게는,
상기 업데이터는 상기 업데이터와 MCU(Main Controller Unit)간 통신을 위한 HID(Human Interface Device) 드라이버 삭제에 필요한 HID드라이버 삭제 실행 파일을 더 포함한다.
바람직하게는,
상기 HID드라이버 삭제 실행 파일은 윈도우버전에 따라 상이한 것을 특징으로 한다.
바람직하게는,
상기 식별 코드는 상기 업데이트 실행 파일의 상태를 검증하기 위해 사용된다.
바람직하게는,
상기 메타 정보는 상기 바이너리 파일들의 파일 생성일시, 파일 CRC(cyclical redundancy check), 파일 버전, 상기 펌웨어 메모리의 부트 로더(Boot Loader) 블럭의 업데이터 여부에 대한 정보, 상기 펌웨어 업데이트 후 상기 HID 드라이버 삭제 여부에 대한 정보 및 상기 펌웨어 업데이트 후 시스템 재시작 여부에 관한 정보를 더 포함하는 것을 특징으로 한다.
바람직하게는,
상기 바이너리 파일들은 부트 로더 블럭(Boot Loader Block)의 업데이트 파일, 데이터 블럭(Data Block) 업데이트 파일, 메인 코드 블럭(Main Code Block) 업데이트 파일을 포함하는 것을 특징으로 한다.
본 발명에 따른 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체에 의하면, 업데이터가 펌웨어 업데이트에 필요한 모든 리소스를 포함하고 있기 때문에 업데이트를 보다 빠르고 효율적으로 수행할 수 있다.
본 발명에 따른 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체에 의하면, 업데이터의 한 번의 실행에 의해 복잡한 업데이트 절차가 자동으로 수행되도록 구성되어 펌웨어 업데이트 과정에서 오류가 발생할 여지가 현저히 낮다.
본 발명에 따른 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체에 의하면, 업데이터가 별도의 리저브드 공간(reserved space)을 포함하여 차후 성능 개선에 미리 대비할 수 있다.
도 1은 종래의 펌웨어 업데이트를 수행하는 흐름도이다.
도 2는 본 발명에 따른 펌웨어 업데이트를 수행하는 업데이터의 구조를 개략적으로 도시한 도면이다.
도 3은 본 발명에 따른 업데이터의 메타 정보에 포함된 정보를 보여주는 도면이다.
도 4는 본 발명에 따른 업데이터를 이용하여 업데이트를 수행하는 흐름도를 보여주는 도면이다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면 및 실시예를 참조하여 상세히 설명한다.
도 2는 본 발명에 따른 펌웨어 업데이트를 수행하는 업데이터의 구조를 개략적으로 도시한 도면이다.
펌웨어 자동 업데이트를 수행하는 업데이터(200)는 컴퓨터 판독 가능한 기록 매체에 저장된다.
본 발명에 따른 업데이터(updater)는 적어도 하나 이상의 바이너리 파일들(240) 및 바이너리 파일들의 파일 경로, 파일 크기 및 파일명을 포함하는 메타 정보(Meta Information)(230)를 포함한다.
본원 발명에서의 펌웨어 업데이트를 위한 업데이터(updater)(200)는 컴퓨터와 같은 기계에 의해 판독가능한 업데이트 실행파일(210)을 포함한다.
업데이터(200)는 업데이트 실행 파일 영역(210)과 바이너리 파일들이 저장된 영역(240)을 구분하기 위한 식별 코드(Identification code)(220)를 더 포함한다.
업데이터(200)는 업데이터(200)와 MCU(Main Controller Unit)간 통신을 위한HID(Human Interface Device) 드라이버 삭제에 필요한 HID드라이버 삭제 실행 파일을 포함한다.
메타 정보(230)는 바이너리 파일들의 파일 생성일시, 파일 CRC(cyclical redundancy check), 파일 버전, 펌웨어 메모리의 부트 로더(Boot Loader) 블럭의 업데이터 여부에 대한 정보(도 3의 310), 펌웨어 업데이트 후 HID 드라이버 삭제 여부에 대한 정보(도3의 320) 및 펌웨어 업데이트 후 시스템 재시작 여부에 관한 정보(도 3의 330)를 더 포함한다.
메타 정보(230)의 구체적인 내용에 대하여 도 3과 관련하여 보다 상세하게 설명할 것이다.
업데이터(200)에 포함된 바이너리 파일들(240)은 부트 로더 블럭(Boot Loader Block)의 업데이트 파일, 데이터 블럭(Data Block) 업데이트 파일, 메인 코드 블럭(Main Code Block) 업데이트 파일을 포함한다.
업데이트 실행파일(210)은 업데이터(200)를 실행시키고, 바이너리 파일들을 추출하고 설정된 옵션에 따라 펌웨어 업데이트를 진행한다.
업데이트 실행파일은 HID 드라이버 삭제에 관련된 HID드라이버 삭제 실행 파일(예,devcon.exe, RunAsSystem.exe)를 병합할 수 있다. HID드라이버 삭제 실행 파일은 윈도우버전에 따라 상이하다.
식별 코드(220)는 두 가지 목적으로 사용되며 무작위로 생성된 문자들로 구성되어 있다 : (1) 식별코드의 문자열을 기준으로 업데이터를 구성하는 업데이트 실행파일 영역(210)과 바이너리 파일들이 포함된 영역(240)을 구분하고, (2) 업데이트 실행 파일이 정상 실행파일인지 검증하는데 사용된다. 식별 코드가 업데이트 실행파일 내에 존재하는지 검사하고 존재하지 않는다면 문제가 있는 것으로 판단한다.
바이너리 파일들(240)은 펌웨어 업데이트에 사용될 바이너리 파일들을 포함한다.(예: Boot Loader 블럭 업데이트 파일, Main Code 블럭 업데이트 파일, Data 블럭 업데이트 파일)
도 3은 본 발명에 따른 업데이터의 메타 정보에 포함된 정보를 보여주는 도면이다.
도 3은 고정된 길이의 값을 가지는 메타 정보(300)의 구조의 일 예를 보여준다.
메타 정보(Meta Information)(300)는 아래의 정보를 포함한다:
1) 바이너리 파일정보 명
- 파일 경로 및 파일명
- 파일크기, 생성 일시
- 파일 CRC
2) 각종 설정 값
- 바이너리 파일들의 버전
- Updater 실행파일의 타이틀에 표시되는 제목 및 버전
- Boot Loader Block 업데이트 여부(310)
- Firmware 업데이트 후 HID 드라이버 삭제 여부(320)
- Firmware 업데이트 후 시스템 재 시작 여부(330)
메타 정보(300)의 각 값들은 그 길이가 미리 정의되어 있으므로 지정된 길이씩 값을 읽음으로써 해당 정보를 얻을 수 있다.
리저브드 공간(340)은 성능 개선 등 기타 이유에 의해 새로운 값이 추가될 경우를 대비해 설정 값들이 저장될 영역의 길이를 미리 여유 공간을 잡아놓고 그 영역 안에서 새 값을 추가한다. 이렇게 함으로써 추가된 값에 의해 변경된 구조정보의 영향을 최소화할 수 있다.
도 4는 본 발명에 따른 업데이터를 이용하여 업데이트를 수행하는 흐름도를 보여주는 도면이다.
펌웨어 자동 업데이트 방법은 펌웨어 자동 업데이트를 수행하는 업데이터(updater)에 의해 수행되며, 업데이터는 메타 정보(Meta Information)와 업데이트를 위한 적어도 하나 이상의 바이너리 파일들을 포함한다.
도 4에 도시된 바와 같이 본원 발명의 펌웨어 자동 업데이트 방법은 메타 정보(meta information)를 이용하여 바이너리 파일들을 추출한다(S410).
식별 코드를 기준으로 메타 정보가 시작되는 위치를 알아낸다. 메타 정보를 모두 읽은 후, 다음 위치에 존재하는 펌웨어 바이너리 파일을 추출한다.
각각의 바이너리 파일들에 대한 길이를 메타 정보에서 알 수 있으므로 해당 길이만큼 씩 읽어 추출한다.
바이너리 파일들로 업데이트를 수행한다(S420).
바이너리 파일들은 메모리에 로드하고 CRC를 검사하여 정상 파일인지 확인한다. CRC 값이 일치하지 않은 경우에는 비정상적인 펌웨어가 업데이트될 수 있기 때문에 더 이상 진행하지 않고 종료한다.
펌웨어 업데이트 단계에서는 메타 정보의 설정 값에 의해 각 펌웨어 업데이트 실행여부가 결정된다.
(1) 부트 로드 블럭(Boot Loader Block) 업데이트 여부가 활성화 되어 있는 경우 부트 로드 블럭(Boot Loader Block) 업데이트를 진행한다.
(2) Data Block을 업데이트 한다.
(3) Main Code Block을 업데이트 한다.
각 절차마다 업데이트 후 정상적으로 업데이트 되었는지 메모리 상의 데이터와 바이너리 파일의 내용을 비교 검증한다.
HID 삭제 여부가 활성화 된 경우, devcon.exe를 이용하여 HID드라이버를 삭제한다. 윈도우 버전 별로 해당되는 devcon.exe가 다르므로 현재 윈도우의 버전을 파악하여 자동으로 적절한 devcon.exe를 실행한다.
본원 발명의 펌웨어 업데이트 방법은 S410보다 선행하여 선행 체크(Pre-check) 단계를 더 포함할 수 있다.
선행 체크 단계에서는 업데이터에 포함된 각종 리소스들과 메타 정보를 추출하고 MCU와 HID통신이 정상적으로 작동하는지 검사한다. 업데이트 실행파일로부터 HID 드라이버 삭제 실행파일인 devcon.exe와 RunAsSystem.exe를 추출된다.
추가적으로 마지막단계에서 업데이트의 성공 / 실패 여부를 화면에 출력하는 단계를 포함할 수 있다.
펌웨어 업데이트 과정은 모두 로그 파일로 저장하고, 문제 발생시 저장된 로그 파일을 이용하여 용이하게 문제를 파악할 수 있다.
본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이, 본 발명의 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.

Claims (18)

  1. 펌웨어 자동 업데이트 방법에 있어서,
    컴퓨터 프로세서에 의해 실행가능한 컴퓨터 프로그램인 업데이터(updater)가 상기 펌웨어 자동 업데이트를 수행하되, 상기 업데이터는 메타 정보(Meta Information)와 업데이트를 위한 적어도 하나 이상의 바이너리 파일들을 포함하고,
    상기 메타 정보(meta information)를 이용하여 상기 바이너리 파일들을 추출하는 단계; 및
    상기 바이너리 파일들로 업데이트를 수행하는 단계;를 포함하되,
    상기 업데이터는 상기 컴퓨터 프로세서에 의해 실행가능한 업데이트 실행 파일 영역을 더 포함하고,
    상기 업데이터는 상기 업데이트 실행 파일 영역과 상기 바이너리 파일들이 저장된 영역을 구분하고 그리고 상기 업데이트 실행 파일의 상태를 검증하는 식별 코드(Identification code)를 더 포함하고,
    상기 업데이터와 MCU(Main Controller Unit)간 통신을 위한 HID(Human Interface Device) 드라이버를 삭제하는 단계를 더 포함하고,
    상기 메타 정보는 펌웨어 메모리의 부트 로더(Boot Loader) 블럭의 업데이터 여부에 대한 정보, 상기 펌웨어 업데이트 후 상기 HID 드라이버 삭제 여부에 대한 정보 및 상기 펌웨어 업데이트 후 시스템 재시작 여부에 관한 정보를 포함하는 것을 특징으로 하는, 펌웨어 자동 업데이트 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 청구항 1에 있어서,
    상기 업데이터는 상기 HID 드라이버 삭제에 필요한 HID드라이버 삭제 실행 파일을 더 포함하는, 펌웨어 자동 업데이트 방법.
  6. 청구항 5에 있어서,
    상기 HID드라이버 삭제 실행 파일은 윈도우버전에 따라 상이한 것을 특징으로 하는, 펌웨어 자동 업데이트 방법.
  7. 삭제
  8. 삭제
  9. 청구항 1에 있어서,
    상기 메타 정보는 상기 바이너리 파일들의 경로, 상기 바이너리 파일들의 파일명, 상기 바이너리 파일들의 파일 크기 및 생성일시, 파일 CRC(cyclical redundancy check) 및 파일 버전을 더 포함하는 것을 특징으로 하는, 펌웨어 자동 업데이트 방법.
  10. 청구항 1에 있어서,
    상기 바이너리 파일들은 부트 로더 블럭(Boot Loader Block)의 업데이트 파일, 데이터 블럭(Data Block) 업데이트 파일, 메인 코드 블럭(Main Code Block) 업데이트 파일을 포함하는 것을 특징으로 하는, 펌웨어 자동 업데이트 방법.
  11. 컴퓨터 시스템이 펌웨어 자동 업데이트를 수행하는 컴퓨터 프로그램인 업데이터(updater)를 기록한 컴퓨터 판독 가능한 기록 매체에 있어서,
    상기 업데이터는 적어도 하나 이상의 바이너리 파일들 및 상기 바이너리 파일들의 파일 경로, 파일 크기 및 파일명을 포함하는 메타 정보(Meta Information)를 포함하되,
    상기 업데이터는 상기 컴퓨터 시스템에 의해 실행가능한 업데이트 실행 파일 영역을 더 포함하고,
    상기 업데이터는 상기 업데이트 실행 파일 영역과 상기 바이너리 파일들이 저장된 영역을 구분하고 그리고 상기 업데이트 실행 파일의 상태를 검증하는 식별 코드(Identification code)를 더 포함하되,
    상기 메타 정보는 상기 바이너리 파일들의 파일 생성일시, 파일 CRC(cyclical redundancy check), 파일 버전, 펌웨어 메모리의 부트 로더(Boot Loader) 블럭의 업데이터 여부에 대한 정보, 상기 펌웨어 업데이트 후 HID 드라이버 삭제 여부에 대한 정보 및 상기 펌웨어 업데이트 후 시스템 재시작 여부에 관한 정보를 더 포함하는 것을 특징으로 하는, 컴퓨터 판독 가능한 기록 매체.
  12. 삭제
  13. 삭제
  14. 청구항 11에 있어서,
    상기 업데이터는 상기 업데이터와 MCU(Main Controller Unit)간 통신을 위한 HID(Human Interface Device) 드라이버 삭제에 필요한 HID드라이버 삭제 실행 파일을 더 포함하는, 컴퓨터 판독 가능한 기록 매체.
  15. 청구항 14에 있어서,
    상기 HID드라이버 삭제 실행 파일은 윈도우버전에 따라 상이한 것을 특징으로 하는, 컴퓨터 판독 가능한 기록 매체.
  16. 삭제
  17. 삭제
  18. 청구항 11에 있어서,
    상기 바이너리 파일들은 부트 로더 블럭(Boot Loader Block)의 업데이트 파일, 데이터 블럭(Data Block) 업데이트 파일, 메인 코드 블럭(Main Code Block) 업데이트 파일을 포함하는 것을 특징으로 하는, 컴퓨터 판독 가능한 기록 매체.

KR1020160109132A 2016-08-26 2016-08-26 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체 KR101968272B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160109132A KR101968272B1 (ko) 2016-08-26 2016-08-26 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160109132A KR101968272B1 (ko) 2016-08-26 2016-08-26 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체

Publications (2)

Publication Number Publication Date
KR20180023575A KR20180023575A (ko) 2018-03-07
KR101968272B1 true KR101968272B1 (ko) 2019-08-13

Family

ID=61689036

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160109132A KR101968272B1 (ko) 2016-08-26 2016-08-26 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체

Country Status (1)

Country Link
KR (1) KR101968272B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220015115A (ko) * 2020-07-30 2022-02-08 경북대학교 산학협력단 마이크로컨트롤러 업데이트 관리방법 및 관리시스템
KR102553371B1 (ko) 2023-03-29 2023-07-07 주식회사 하임아이엔씨 사용 환경에 따른 커스터마이징된 mcu 펌웨어 업데이트 자동화 방법 및 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109284118B (zh) * 2018-09-27 2021-08-31 郑州云海信息技术有限公司 一种固件刷新方法、系统、电子设备及计算机可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930504A (en) * 1996-07-22 1999-07-27 Intel Corporation Dynamic nonvolatile memory update in a computer system
US7146609B2 (en) * 2002-05-17 2006-12-05 Sun Microsystems, Inc. Method, system and article of manufacture for a firmware image

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220015115A (ko) * 2020-07-30 2022-02-08 경북대학교 산학협력단 마이크로컨트롤러 업데이트 관리방법 및 관리시스템
KR102397340B1 (ko) * 2020-07-30 2022-05-12 경북대학교 산학협력단 마이크로컨트롤러 업데이트 관리방법 및 관리시스템
KR102553371B1 (ko) 2023-03-29 2023-07-07 주식회사 하임아이엔씨 사용 환경에 따른 커스터마이징된 mcu 펌웨어 업데이트 자동화 방법 및 장치

Also Published As

Publication number Publication date
KR20180023575A (ko) 2018-03-07

Similar Documents

Publication Publication Date Title
US8751783B2 (en) Booting computing devices with EFI aware operating systems
KR101856284B1 (ko) 장치의 초기화 동안 펌웨어의 백업
JP5889933B2 (ja) コンピュータの動作不良を防止する方法、コンピュータ・プログラムおよびコンピュータ
US8069343B2 (en) Computer with bootable restoration
JP6054908B2 (ja) 変数セットを修復する方法、コンピュータ・プログラムおよびコンピュータ
KR101427755B1 (ko) Usb를 이용한 펌웨어 업그레이드 장치 및 방법
US20060150037A1 (en) Methods and systems for operating system recovery
CN111258666B (zh) 计算机文件的读取方法、装置、计算机系统及存储介质
US9519786B1 (en) Firmware integrity ensurance and update
KR101968272B1 (ko) 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체
US8375198B2 (en) Boot system and method having a BIOS that reads an operating system from first storage device via an input/output chip based on detecting a temperature of a second storage device
US20180052679A1 (en) Method of Bootup and Installation, and Computer System thereof
JP2016126746A (ja) 格納媒体消去システム及び方法
CN113297010A (zh) 基于片上系统的固件恢复方法、装置、系统及存储介质
Tyler XDA Developers' Android Hacker's Toolkit: The Complete Guide to Rooting, ROMs and Theming
CN111176735B (zh) 一种心电图机启动加速方法
EP3842932B1 (en) Firmware update method and firmware update system thereof
JP5950290B1 (ja) 不揮発性記憶デバイス及び不揮発性記憶デバイスの処理方法
CN111045709B (zh) 固件升级方法和固件升级装置
JP4968634B1 (ja) コンピュータシステム
TWI448967B (zh) 軟體更新方法與電腦可讀取媒體
JP7087087B2 (ja) オペレーティングシステムをコンピュータ可読媒体上に記憶するためのbiosコード
JP6766669B2 (ja) 情報処理装置,制御プログラムおよび起動プログラム制御方法
CN114265603A (zh) 基于不对称分区的系统升级方法、装置和电子设备
CN116360828A (zh) 程序升级方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right