KR101174231B1 - 임베디드 시스템의 마이크로 컨트롤러 및 임베디드 소프트웨어 리프로그래밍 방법 - Google Patents

임베디드 시스템의 마이크로 컨트롤러 및 임베디드 소프트웨어 리프로그래밍 방법 Download PDF

Info

Publication number
KR101174231B1
KR101174231B1 KR1020100116771A KR20100116771A KR101174231B1 KR 101174231 B1 KR101174231 B1 KR 101174231B1 KR 1020100116771 A KR1020100116771 A KR 1020100116771A KR 20100116771 A KR20100116771 A KR 20100116771A KR 101174231 B1 KR101174231 B1 KR 101174231B1
Authority
KR
South Korea
Prior art keywords
software
boot
boot software
reset vector
address
Prior art date
Application number
KR1020100116771A
Other languages
English (en)
Other versions
KR20120055190A (ko
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 KR1020100116771A priority Critical patent/KR101174231B1/ko
Publication of KR20120055190A publication Critical patent/KR20120055190A/ko
Application granted granted Critical
Publication of KR101174231B1 publication Critical patent/KR101174231B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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

Abstract

본 발명은 임베디드 시스템의 마이크로 컨트롤러 및 임베디드 소프트웨어 리프로그래밍 방법을 개시한다. 부트 소프트웨어의 부팅 시작 위치 주소를 저장하는 리셋 벡터 어드레스 레지스터(Reset vector address register); 상기 리셋 벡터 어드레스 레지스터에 로드(load)될 상기 부팅 시작 위치의 주소를 입력할 수 있는 리셋 벡터 어드레스 플래쉬 롬 블록(Reset vector address flash rom Block); 및 상기 부트 소프트웨어(boot software)와 메인 소프트웨어(main software)를 저장하는 메인 플래쉬 롬(Main Flash Rom)을 포함하는 임베디드 시스템의 마이크로 컨트롤러(Micro-Controller)로 있어서, 상기 부트 소프트웨어는 2 개가 존재하며, 제2 부트 소프트웨어는 상기 리셋 벡터가 가리키는 부트 소프트웨어가 아닌 부트 소프트웨어가 저장된 메인 플래쉬 롬의 블록을 삭제하여 리프로그램(reprogram)하고, 상기 리프로그램이 완료되면 상기 리셋 벡터 어드레스 플래쉬 롬 블록의 주소를 제1 부트 소프트웨어가 가리키는 주소로 변경하여 입력함으로써, 임베디드 시스템의 소프트웨어를 업데이트할 수 있다.

Description

임베디드 시스템의 마이크로 컨트롤러 및 임베디드 소프트웨어 리프로그래밍 방법{Micro controller of embedded system and method for reprograming software}
본 발명은 임베디드 시스템의 마이크로 컨트롤러 및 임베디드 소프트웨어 리프로그래밍 방법에 관한 것으로, 특히, 자동차 임베디드 시스템, 산업용 임베디드 시스템, 정보통신 임베디드 시스템 등에서 메인 소프트웨어 및 부트 소프트웨어를 업데이트할 수 있는 마이크로 컨트로러 구조 및 임베디드 소프트웨어 리프로그래밍 방법에 관한 것이다.
일반적으로 임베디드 시스템의 소프트웨어는 부트 소프트웨어 및 메인 소프트웨어로 구분될 수 있으며, 부트 소프트웨어는 부트 소프트웨어 및 메인 소프트웨어를 상위 버전으로 업데이트하는 역할을 한다. 다만, 이 부트 소프트웨어가 부트 소프트웨어 자신을 업데이트 하는 도중 오류가 발생하면, 부트 소프트웨어가 손상되어 임베디드 시스템의 부팅이 불가능해 진다. 이렇게 손상된 임베디드 시스템을 복구하기 위해서는 임베디드 시스템이 내장된 제품이나 장치의 케이스를 제거하고 JTAG(Joint Test Action Group)포트를 사용하여 다시 프로그래밍을 하여야 한다.
차량용 임베디드 시스템이나 산업용 임베디드 시스템의 소프트웨어가 손상된 경우, 장치의 케이스를 제거하고 JTAG(Joint Test Action Group)포트를 사용하여 다시 프로그래밍하는 작업은 많은 시간 및 비용을 소모한다.
한편으로 이러한 부트 소프트웨어 업데이트 과정에서 발생하는 오류에 인한 부트 소프트웨어 손상을 막기 위해 종래에 다음과 같은 방법이 시도되었다. 첫 번째로, 부트 소프트웨어를 고정시키고 업데이트를 하지 않는 방법이다. 두 번째로, 제1 부트 소프트웨어 및 제2 부트 소프트웨어를 미리 정해진 메모리상의 위치(Reset vector)에 고정시켜 둔 다음 제1 부트 소프트웨어가 손상된 경우 제2 부트 소프트웨어를 이용하여 임베디드 시스템을 부트하는 방법이다.
그러나 첫 번째 종래 방법의 경우, 부트 소프트웨어 업데이트를 하지 않으므로 업데이트 때문에 발생하는 문제를 원천적으로 막을 수 있으나 부트 소프트웨어 내 단순한 버그가 존재하는 경우에도 이를 해결할 수 없다. 또한, 두 번째 종래 방법의 경우, 제1 부트 소프트웨어가 업데이트 과정 등에서 손상되더라도 제2 부트 소프트웨어가 존재하므로 임베디드 시스템의 부팅은 가능하나 리셋 벡터가 고정 있기 때문에 제1 및 제2 부트 소프트웨어의 위치나 크기를 조절할 수 없는 문제점이 있다.
본 발명의 목적은 임베디드 시스템의 소프트웨어가 손상된 경우 케이스를 제거하고 JTAG포트를 사용하여 다시 프로그램하는 것을 막기 위한 이원화된 임베디드 시스템의 부트 소프트웨어 구조를 제공함에 있다.
본 발명의 또 다른 목적은 부트 소프트웨어를 업데이트할 수 있는 부트 소프트웨어 구조 및 리프로그래밍 방법을 제공함에 있다.
본 발명의 또 다른 목적은 부트 소프트웨어의 위치나 크기를 조절하여 업데이트할 수 있는 마이크로 컨트롤러 및 리프로그래밍 방법을 제공함에 있다.
상기한 바와 같은 목적을 달성하기 위해 본 발명의 일면에 따라, 부트 소프트웨어의 부팅 시작 위치 주소를 저장하는 리셋 벡터 어드레스 레지스터(Reset vector address register)(110); 상기 리셋 벡터 어드레스 레지스터(110)에 로드(load)될 상기 부팅 시작 위치의 주소를 입력할 수 있는 리셋 벡터 어드레스 플래쉬 롬 블록(Reset vector address flash rom Block)(120); 및 상기 부트 소프트웨어(boot software)(133, 135)와 메인 소프트웨어(main software)(137)를 저장하는 메인 플래쉬 롬(Main Flash Rom)(130)을 포함하며, 상기 부트 소프트웨어는 2 개가 존재하며, 제2 부트 소프트웨어(135)는 상기 리셋 벡터가 가리키는 부트 소프트웨어가 아닌 부트 소프트웨어가 저장된 메인 플래쉬 롬(130)의 블록을 삭제하여 리프로그램(reprogram)하고, 상기 리프로그램이 완료되면 상기 리셋 벡터 어드레스 플래쉬 롬 블록(120)의 주소를 제1 부트 소프트웨어(133)가 가리키는 주소로 변경하여 입력한다.
상기 구성에서, 상기 제2 부트 소프트웨어(135)가, 상기 제1 부트 소프트웨어(133)가 저장된 메인 플래쉬 롬(130)의 블록을 삭제하고 상기 블록 내 상기 제2 부트 소프트웨어(135)로 리프로그램하고, 상기 리셋 벡터 어드레스 플래쉬 롬 블록(120)의 주소를, 상기 제2 부트 소프트웨어(135)를 가리키는 주소에서 상기 제1 부트 소프트웨어(133)를 가리키는 주소로 변경하여 입력한다.
상기 구성에서, 상기 마이크로 컨트롤러(100)에 리셋 입력(Reset input)(170)이 들어온 경우 상기 리셋 벡터 어드레스 플래쉬 롬 블록(120)에 저장된 리셋 벡터가 상기 리셋 벡터 어드레스 레지스터(110)에 로드된다.
상기 구성에서, 상기 메인 플래쉬 롬(130)에 저장된 제1 부트 소프트웨어(133) 및 제2 부트 소프트웨어(135)는, 상기 메인 플래쉬 롬(130)의 서로 다른 블록(Block)에 저장된다. 앞서 밝힌 바와 같이 메인 플래쉬 롬(130)은 블록 단위로 저장 및 삭제되기 때문이다.
상기 구성에서, 상기 마이크로 컨트롤러(100)는 상기 부트 소프트웨어를 임시로 저장하는 저장소(140)를 더 포함한다.
상기 구성에서, 상기 임시저장소(140)는 SRAM(static random access memory)일 수 있다. SRAM을 사용하여 입출력 속도를 높일 수 있다.
상기 구성에서, 상기 마이크로 컨트롤러(100)는 상기 리셋 벡터, 상기 부트 소프트웨어 또는 상기 메인 소프트웨어(137)를 리프로그램하기 위한 포트(Port)를 제공하는 제이텍(Joint Test Action Group) 핀(150)을 더 포함한다. 제이텍핀을 통해 직접 리셋 벡터 어드래스 플래쉬 롬 블록에 리셋 벡터를 입력할 수 있다. 이를 통해 부트 소프트웨어의 크기나 위치가 변경된다 하더라도 제이텍 핀을 통해 리셋 벡터를 리프로그램할 수 있으므로 종래 발명과 같이 부트 소프트웨어의 리셋 벡터를 변경할 수 없는 문제점을 극복할 수 있다.
상기 구성에서, 상기 마이크로 컨트롤러(100)는 상기 부트 소프트웨어 또는 상기 메인 소프트웨어(137)가 상기 마이크로 컨트롤러(100) 외부의 소프트웨어 업데이트 툴(Software update tool)(200)과 통신하기 위한 통신부(160)을 더 포함한다.
본 발명의 다른 면에 따른 임베디드 소프트웨어 리프로그래밍 방법은 부트 소프트웨어 또는 메인 소프트웨어(137)의 리프로그램 필요 여부나 소프트웨어 업데이트 툴(200)과 통신 여부로 임베디드 소프트웨어의 리프로그램 단계 진입 여부를 결정하는 제1 단계(S310); 복사될 부트 소프트웨어를 선택하여 임시저장소(140)에 저장하는 제2 단계(s320); 상기 임시저장소(140)에 저장된 상기 부트 소프트웨어를 이용하여 상기 부트 소프트웨어를 실행하는 제3 단계(S330); 상기 부트 소프트웨어를 리프로그램해야 하는지 결정하는 제4 단계(S340); 및 상기 제4 단계에서 부트 소프트웨어의 리프로그램이 불요한 것으로 결졍된 경우, 메인 소프트웨어(137)를 삭제하고 리프로그램하는 제5 단계(S360);를 포함한다.
상기 단계에서, 상기 제2 단계는 리셋 벡터 어드레스 레지스터(110)를 참조하여 복사될 부트 소프트웨어를 선택한다(S420). 리셋 벡터 어드레스 레지스터(100)는 복사될 부트 소프트웨어를 가리키는 리셋 벡터가 저장되어 있다.
상기 단계에서, 제5 단계는 상기 제4 단계에서 부트 소프트웨어의 리프로그램이 필요한 것으로 결정된 경우, 메인 소프트웨어(137)를 리프로그램하기 전에 부트 소프트웨어를 리프로그램한다(S350 혹은 S460).
상기 단계에서, 제5 단계는 메인 소프트웨어(137)를 리프로그램하기 전에 삭제되어야 할 부트 소프트웨어를 선택하여 삭제한 후 리프로그램하고 리셋 벡터 어드레스 플래쉬 롬 블록(120)에 새로운 리셋 벡터를 입력한다.
상기 단계에서, 상기 새로운 리셋 벡터는 현재 사용되고 있는 부트 소프트웨어의 시작 주소를 참조하여 결정된다.(S561~S567)
상기 단계에서, 제5 단계는 삭제되어야 할 부트 소프트웨어의 선택은 리셋 벡터 어드레스를 참조하여 결정된다. (S561~S567)
상기 단계에서, 상기 제1 단계에서 임베디드 소프트웨어 리프로그램 단계 진입 여부하지 않은 것으로 결정된 경우, 상기 메인 소프트웨어(137)를 실행하는 제6 단계를 더 포함한다.(S370 혹은 S480)
본 발명의 또 다른 면에 따른 임베디드 소프트웨어 리프로그래밍 방법은 부트 소프트웨어의 부팅 시작 위치의 주소를 저장하는 리셋 벡터 어드레스 레지스터(110); 상기 리셋 벡터 어드레스 레지스터(110)에 로드될 상기 부팅 시작 위치의 주소를 입력할 수 있는 리셋 벡터 어드레스 플래쉬 롬 블록(120); 2 개의 부트 소프트웨어; 및 메인 소프트웨어(137);를 포함하는 임베디드 소프트웨어 리프로그래밍 방법에 있어서, 상기 부트 소프트웨어 또는 메인 소프트웨어(137)의 리프로그램 필요 여부나 소프트웨어 업데이트 툴과 통신 여부로 임베디드 소프트웨어의 리프로그램 단계 진입 여부를 결정하는 제1 단계(S610); 복사될 제2 부트 소프트웨어(135)를 선택하여 임시저장소(140)에 저장하는 제2 단계(S630); 상기 임시저장소(140)에 저장된 상기 제2 부트 소프트웨어(135)를 이용하여 상기 제2 부트 소프트웨어(135)를 실행하는 제3 단계(S640); 제1 부트 소프트웨어(133)를 리프로그램해야 하는지 결정하는 제4 단계(S650); 및 상기 제4 단계에서 제1 부트 소프트웨어(133)의 리프로그램이 불요한 것으로 결졍된 경우, 상기 메인 소프트웨어(137)를 삭제하고 리프로그램하는 제5 단계(S670);를 포함한다.
상기 단계에서, 상기 제2 단계는 상기 리셋 벡터 어드레스 레지스터(110)를 참조하여 복사될 제2 부트 소프트웨어(135)를 선택한다.(S620)
상기 단계에서, 제5 단계는 상기 제4 단계에서 상기 제1 부트 소프트웨어(133)의 리프로그램이 필요한 것으로 결정된 경우, 상기 메인 소프트웨어(137)를 리프로그램하기 전에 상기 제1 부트 소프트웨어(133)를 리프로그램한다. (S661)
상기 단계에서, 제5 단계는 상기 메인 소프트웨어(137)를 리프로그램하기 전에 삭제되어야 할 상기 제1 부트 소프트웨어(133)를 선택하여 삭제한 후 리프로그램하고(S665) 상기 리셋 벡터 어드레스 플래쉬 롬 블록(120)에 상기 제1 부트 소프트웨어(133)의 주소를 가리키는 리셋 벡터를 입력한다. (S667)
상기 단계에서, 상기 리셋 벡터는 현재 사용되고 있는 제2 부트 소프트웨어의 시작 주소를 참조하여 결정된다.
상기 단계에서, 제5 단계에서 삭제되어야 할 상기 제1 부트 소프트웨어(133)의 선택은 리셋 벡터 어드레스를 참조하여 결정된다.
상기 단계에서, 상기 제1 단계에서 임베디드 소프트웨어 리프로그램 단계 진입 여부하지 않은 것으로 결정된 경우, 상기 메인 소프트웨어(137)를 실행하는 제6 단계를 더 포함한다. (S680)
본 발명은 임베디드 시스템의 소프트웨어가 손상된 경우 케이스를 제거하고 JTAG포트를 사용하여 다시 프로그램하는 것을 막기 위한 이원화된 임베디드 시스템의 부트 소프트웨어 구조를 제공할 수 있다.
본 발명은 부트 소프트웨어를 업데이트할 수 있는 부트 소프트웨어 구조 및 리프로그래밍 방법을 제공할 수 있다.
본 발명은 부트 소프트웨어의 위치나 크기를 조절하여 업데이트할 수 있는 마이크로 컨트롤러 및 리프로그래밍 방법을 제공할 수 있다.
본 명세서에서 첨부되는 다음의 도면들은 본 발명의 바람직한 실시예를 예시하는 것이며, 후술하는 발명의 상세한 설명과 함께 본 발명의 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 발명은 그러한 도면에 기재된 사항에만 한정되어 해석되어서는 아니 된다.
도 1은 본 발명의 실시예에 따른 임베디드 시스템의 마이크로 컨트롤러 구성도.
도 2는 본 발명의 실시예에 따른 임베디드 시스템의 마이크로 컨트롤러와 소프트웨어 업데이트 툴의 관계도.
도 3 내지 도 6은 본 발명의 실시예에 따른 임베디드 시스템의 부트 소프트웨어 및 메인 소프트웨어를 리프로그램하는 방법을 설명하기 위한 순서도.
이하, 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소에 참조부호를 부가함에 있어서, 동일한 구성요소에 대해서는 비록 다른 도면상에 표시되더라도 가능한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 하기에서 본 발명을 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
도 1에는 본 발명의 실시예에 따른 임베디드 시스템의 컨트롤러(100) 구성도를 나타낸다.
리셋 벡터 어드레스 레지스터(110)는 마이크로 컨트롤로(100)가 리셋되는 경우 부팅에 사용될 부트 소프트웨어의 시작 위치를 저장하고 있다. 이를 리셋 벡터라고 한다. 부트 소프트웨어는 리셋 벡터 어드레스 플래쉬 롬 블록(120)에 새로운 리셋 벡터 값을 입력할 수 있다. 본 발명에서는 제2 부트 소프트웨어(135)를 통해 부트되었다면 제2 부트 소프트웨어(135)는 제2 부트 소프트웨어(135)가 아닌 다른 부트 소프트웨어인 제1 부트 소프트웨어(133)의 리셋 벡터를 벡터 어드레스 플래쉬 롬 블록(120)에 입력한다. 마이크로 컨트롤러(100)에 리셋 신호(170)가 입력되면 리셋 벡터 어드레스 플래쉬 롬 블록(120)에 저장된 제1 부트 소프트웨어(133)의 리셋 벡터가 리셋 벡터 어드레스 레지스터(110)로 로드된다.
메인 플래쉬 롬(130)은 부트 소프트웨어 및 메인 소프트웨어(137)를 포함한다. 메인 플래쉬 롬(130)은 리셋 벡터 어드래스 롬 블록(120)과 별도의 플래쉬 디바이스로 구성된다. 일반적으로 플래쉬 롬은 삭제 단위가 블록 단위이므로 제1 부트 소프트웨어(133) 및 제2 부트 소프트웨어(135)는 서로 다른 단위의 블록에 위치하여야 한다. 예를 들어, 제2 부트 소프트웨어(135)이 실행되는 경우 새로 리프로그램 되거나 업데이트될 부트 소프트웨어는 제1 부트 소프트웨어(133)의 위치에서 리프로그램 되거나 업데이트되어야 한다. 이 경우 리프로그램 되거나 업데이트 되어야 할 제1 부트 소프트웨어(133)의 영역이 제2 부트 소프트웨어(135)가 저장된 위치까지 침범하지 않도록 해야 한다. 실질적으로 메인 플래쉬 롬(130)안에 부트 소프트웨어는 두 개 존재하지만 시스템이 부팅될 때 하나만 실행되므로 논리적으로 하나의 부트 소프트웨어가 존재한다고 볼 수 있다.
임시저장소(140)는 부트 소프트웨어가 메인 플래쉬 롬을 리프로그램하기 위해서 임시로 부트 소프트웨어를 복사하여 저장하는 역할을 하며, 임시저장소(140)로 입출력 속도가 빠른 SRAM(static ramdom access memory)이 사용될 수 있다.
통신부(140)는 부트 소프트웨어가 외부 소프트웨어 업데이트 툴(200)과 통신하기 위해서 사용된다.
JTAG PIN(150)은 일반적으로 임베디드 시스템의 마이크로 컨트롤러에 포함되며, JTAG PIN(150)을 통하여 리프로그램이 수행될 수도 있다. 예를 들어, JTAG PIN을 통해 메인 플래쉬 롬(130)의 부트 소프트웨어, 메인 소프트웨어(137) 및 리셋 벡터 어드레스 플래쉬 롬 블록의 리셋 벡터를 직접 프로그램 할 수 있다. 본 발명에서는 부트 소프트웨어가 손상된 경우에도 JTAG PIN(150)을 사용하지 않고 부팅할 수 있는 방법을 제공하므로, JTAG PIN(150)을 통해 메인 플래쉬 롬(130) 또는 리셋 벡터 어드레서 플래쉬 롬 블록(120)을 직접 리프로그램할 필요는 없으나 필요에 따라 JTAG PIN(150)을 통해 메인 플래쉬 롬(130) 또는 리셋 벡터 어드레스 플래쉬 롬 블록(120)을 리프로그램할 수 있다.
부트 소프트웨어는 시스템의 부팅 또는 임베디드 시스템내의 소프트웨어를 리프로그램하는 역할을 한다. 임베디드 시스템의 리프로그램 전략에 따라 부팅 상태 또는 시스템 워킹 상태에서 리프로그램 모드로 진입할 수 있다. 본 발명에서 부트 소프트웨어는 외부 소프트웨어 업데이트 툴(200)과 통신하거나 메인 소프트웨어(137) 또는 부트 소프트웨어가 손상된 경우 리프로그램 모드로 진입하는 역할을 한다. 부트 소프트웨어는 리셋 벡터 어드레스가 가리키지 않는 부트 소프트웨어를 선택하여 삭제한 후 리프로그램한다. 부트 소프트웨어의 리프로그램이 완료되면 리셋 벡터 어드레스 플래쉬 롬(120)에 새로운 리셋 벡터 어드레스를 입력한다. 제1 부트 소프트웨어(133) 및 제2 부트 소프트웨어(135) 각각은 부트 소프트웨어가 시작하는 어드레스 정보를 저장하고 있다. 이를 통해 각각의 부트 소프트웨어는 리셋 벡터 어드레스 값과 비교하여 삭제하고 리프로그램 할 부트 소프트웨어의 블록을 선택할 수 있는 것이다.
도 3에서 도시한 바와 같이, 부트 소프트웨어가 시작되면 부팅을 위한 초기화를 수행하고, 리프로그램 진입 여부를 판단한다. (S310) 리프로그램 진입 여부는 메인 소프트웨어(137) 또는 부트 소프트웨어의 리프로그램 fail 여부, 손상 여부, 소프트웨어 업데이트 툴과의 연결 여부로 판단된다. 이처럼 JTAG pin(150)이 연결되지 않아도 리프로그램 진입 여부를 판단할 수 있다.
리프로그램 진입으로 결정된 경우 복사해야 할 부트 소프트웨어를 선택하고 임시저장소(140)로 복사한다.(S320) 복사할 부트 소프트웨어를 선택하기 위해 리셋 벡터 어드레스를 참조할 수 있다. 이 경우 현재 리셋 벡터 어드레스에 저장된 리셋 벡터가 가리키는 부트 소프트웨어를 복사하여 임시저장소(140)로 복사하는 것으로 해석할 수 있다.
임시저장소(140)로 복사가 완료되면 임시저장소(140)에서 부트 소프트웨어를 실행하여 임베디드 시스템을 부팅한다.(S330)
부트 소프트웨어를 리프로그램해야 하는지 판단한다.(S340) 이때 부트 소프트웨어를 리프로그램해야 하는지 여부는 외부 소프트웨어 업데이트 툴(200)로부터 업데이트 요청이 있는지 여부로 결정한다. 부트 소프트웨어를 리프로그램 해야 할 필요가 없다면 메인 소프트웨어(137)만 리프로그램하고 종료한다.(S360)
삭제되고 리프로그램 되어야 할 부트 소프트웨어를 선택한다.(S563) 현재 임시저장소(140)에 저장된 부트 소프트웨어로 부팅되었기 때문에 상기 부트 소프트웨어를 제외한 나머지 소프트웨어를 선택하여 삭제한다.(S565) 더욱 자세하게, 메인 플래쉬 롬(130)의 제1 부트 소프트웨어 및 제2 부트 소프트웨어의 영역의 시작 주소 정보를 제1 부트 소프트웨어 및 제2 부트 소프트웨어가 모두 가지고 있다. 부트 소프트웨어는 리셋 벡터 어드레스 레지스터(110)에 포함된 리셋 벡터 어드레스 값을 읽어 자신의 시작 어드레스와 비교하여 다른 주소를 삭제하고 리프로그램 될 주소로 선택한다.
선택된 부트 소프트웨어의 영역을 삭제하고 리프로그래밍한다.(S565)
삭제되고 리프로그램이 완료되면, 삭제되고 리프로그램된 부트 소프트웨어의 시작 주소를 리셋 벡터 어드레스 플래쉬 롬 블록에 입력한다.(S567)
메인 소프트웨어를 삭제하고 리프로그램하고 종료한다.(S570)
이와 같은 단계를 거쳐 제1 부트 소프트웨어 및 제2 부트 소프트웨어의 주소를 리셋 벡터 어드레스 레지스터(110)에 교대로 입력하여, 부트 소프트웨어가 손상된 경우에도 임베디드 시스템을 부팅할 수 있다.
또 다른 실시예로, 제1 부트 소프트웨어(133)로 부팅되어 왔으나 메인 소프트웨어(137)에 오류가 발생하고 소프트웨어 업데이트 툴(200)의 업데이트 요청이 없는 경우에 대해 알아본다.
이 경우 부트 소프트웨어가 실행되면 리프로그램 모드로 진입하고,(S610) 제2 부트 소프트웨어(135)가 임시저장소(140)로 복사되며((S630), 복사된 제2 부트 소프트웨어(135)로 부트가 시작된다.(S640) 이후 소프트웨어 업데이트 툴(200)이 업데이트를 요청하지 않았고 또한 부트 소프트웨어에 오류가 발생하지 않았기 때문에 부트 소프트웨어의 리프로그램은 불요하며, 메인 소프트웨어만을 삭제하고 리프로그램하고 종료된다. (S670) 이를 통해 손상된 메인 소프트웨어(137)를 복원시킬 수 있다.
또 다른 실시예로, 제1 부트 소프트웨어(133)로 부트해 왔으며 제1 부트 소프트웨어(133)에 오류가 발생했으나 소프트웨어 업데이트 툴(200)로부터 업데이트 요청이 없는 경우를 알아본다.
이 경우도 부트 소프트웨어가 실행되면 리프로그램 모드로 진입하고(S610), 제2 부트 소프트웨어(135)가 임시저장소(140)로 복사되며(S630), 복사된 제2 부트 소프트웨어(135)로 부트가 시작된다(S640). 이후 소프트웨어 업데이트 툴(200)이 업데이트를 요청하지 않았기 때문에 부트 소프트웨어의 리프로그램은 불가능하며, 메인 소프트웨어(137)만 삭제하고 리프로그램하고 종료된다.(S670) 차후 이와 동일한 상황에서 마이크로 컨트롤러에 리셋 입력이 들어와 재실행되더라도, 리셋 벡터 어드레스의 주소가 변경되지 않았기 때문에 여전히 리프로그램 모드로 진입하여 상술한 단계를 반복한다. 다만, 부트 소프트웨어가 이원화되어 있기 때문에 제2 부트 소프트웨어를 통해 임베디드 시스템이 제대로 부팅되는 데에는 무리가 없다.
또 다른 실시예로, 제1 부트 소프트웨어(133)로 부트해 왔으나 제1 부트 소프트웨어(133)에 오류가 발생했으며 소프트웨어 업데이트 툴(200)로부터 업데이트 요청이 있는 경우를 알아본다. 이 경우 현재 리셋 벡터 어드레스의 값은 '2'라고 가정한다.(리셋 벡터 어드레스 값이 '1'인 경우 제1 부트 소프트웨어(133)를 리셋 벡터 어드레스 값이 '2'인 경우 제2 부트 소프트웨어(135)를 가리킴)
이 경우도 부트 소프트웨어가 실행되면 리프로그램 모드로 진입하고(S610), 제2 부트 소프트웨어(135)가 임시저장소(140)로 복사되면(S630), 복사된 제2 부트 소프트웨어(135)로 부트가 시작된다(S640). 이후 소프트웨어 업데이트 툴(200)로부터 업데이트 요청이 있기 때문에 부트 소프트웨어의 리프로그램의 리프로그램 모드로 진입한다.(S650) 현재 리셋 벡터 어드레스 값이 '2'이기 때문에 삭제하고 리프로그램될 대상으로 제1 부트 소프트웨어(133)를 선택한다. 제1 부트 소프트웨어(133를 삭제하고 리프로그램하고 리셋 벡터 어드레스 플래쉬 롬 블록(120)을 '1'로 변경한다. 메인 소프트웨어(137)를 삭제하고 리프로그램한다. (S670)
100: 마이크로 컨트롤러
110: 리셋 벡터 어드레스 레지스터
120: 리셋 벡터 어드래스 플래쉬 롬 블록
130: 메인 플래쉬 롬
133: 제1 부트 소프트웨어
135: 제2 부트 소프트웨어
137: 메인 소프트웨어
140: 임시저장소
150: 제이텍포트
160: 통신부
170: 리셋 입력 신호
200: 소프트웨어 업데이트 툴

Claims (22)

  1. 부트 소프트웨어의 부팅 시작 위치 주소를 저장하는 리셋 벡터 어드레스 레지스터(Reset vector address register);
    상기 리셋 벡터 어드레스 레지스터에 로드(load)될 상기 부팅 시작 위치의 주소를 입력할 수 있는 리셋 벡터 어드레스 플래쉬 롬 블록(Reset vector address flash rom Block);
    및 상기 부트 소프트웨어(boot software)와 메인 소프트웨어(main software)를 저장하는 메인 플래쉬 롬(Main Flash Rom)을 포함하는 임베디드 시스템의 마이크로 컨트롤러(Micro-Controller)에 있어서,
    상기 부트 소프트웨어는 2 개가 존재하며, 제2 부트 소프트웨어는 리셋 벡터가 가리키는 부트 소프트웨어가 아닌 부트 소프트웨어가 저장된 메인 플래쉬 롬의 블록을 삭제하여 리프로그램(reprogram)하고, 상기 리프로그램이 완료되면 상기 리셋 벡터 어드레스 플래쉬 롬 블록의 주소를 제1 부트 소프트웨어가 가리키는 주소로 변경하여 입력하는 것을 특징으로 하는 임베디드 시스템의 마이크로 컨트롤러.
  2. 제1 항에 있어서, 상기 제2 부트 소프트웨어가,
    상기 제1 부트 소프트웨어가 저장된 메인 플래쉬 롬의 블록을 삭제하고 상기 블록 내 상기 제2 부트 소프트웨어로 리프로그램하고,
    상기 리셋 벡터 어드레스 플래쉬 롬 블록의 주소를, 상기 제2 부트 소프트웨어를 가리키는 주소에서 상기 제1 부트 소프트웨어를 가리키는 주소로 변경하여 입력하는 것을 특징으로 하는 임베디드 시스템의 마이크로 컨트롤러.
  3. 제1 항에 있어서,
    상기 마이크로 컨트롤러에 리셋 입력(Reset input)이 들어온 경우 상기 리셋 벡터 어드레스 플래쉬 롬 블록에 저장된 리셋 벡터가 상기 리셋 벡터 어드레스 레지스터에 로드되는 것을 특징으로 하는 임베디드 시스템의 마이크로 컨트롤러.
  4. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 메인 플래쉬 롬에 저장된 제1 부트 소프트웨어 및 제2 부트 소프트웨어는,
    상기 메인 플래쉬 롬의 서로 다른 블록(Block)에 저장되는 것을 특징으로 하는 임베디드 시스템의 마이크로 컨트롤러.
  5. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 마이크로 컨트롤러는 상기 부트 소프트웨어를 임시로 저장하는 저장소를 더 포함하는 것을 특징으로 하는 임베디드 시스템의 마이크로 컨트롤러.
  6. 제5 항에 있어서,
    상기 임시로 저장하는 저장소는 SRAM(static random access memory)인 것을 특징으로 하는 임베디드 시스템의 마이크로 컨트롤러.
  7. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 마이크로 컨트롤러는 상기 리셋 벡터, 상기 부트 소프트웨어 또는 상기 메인 소프트웨어를 리프로그램하기 위한 포트(Port)를 제공하는 제이텍(Joint Test Action Group) 핀을 더 포함하는 것을 특징으로 하는 임베디드 시스템의 마이크로 컨트롤러.
  8. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 마이크로 컨트롤러는 상기 부트 소프트웨어 또는 상기 메인 소프트웨어가 상기 마이크로 컨트롤러 외부의 소프트웨어 업데이트 툴(Software update tool)과 통신하기 위한 통신부을 더 포함하는 것을 특징으로 하는 임베디드 시스템의 마이크로 컨트롤러.
  9. 부트 소프트웨어 또는 메인 소프트웨어의 리프로그램 필요 여부나 소프트웨어 업데이트 툴과 통신 여부로 임베디드 소프트웨어의 리프로그램 단계 진입 여부를 결정하는 제1 단계;
    복사될 부트 소프트웨어를 선택하여 임시저장소에 저장하는 제2 단계;
    상기 임시저장소에 저장된 상기 부트 소프트웨어를 이용하여 상기 부트 소프트웨어를 실행하는 제3 단계;
    상기 부트 소프트웨어를 리프로그램해야 하는지 결정하는 제4 단계; 및
    상기 제4 단계에서 부트 소프트웨어의 리프로그램이 불요한 것으로 결졍된 경우, 메인 소프트웨어를 삭제하고 리프로그램하는 제5 단계;를 포함하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  10. 제9 항에 있어서,
    상기 제2 단계는 리셋 벡터 어드레스 레지스터를 참조하여 복사될 부트 소프트웨어를 선택하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  11. 제10 항에 있어서,
    상기 제5 단계는 상기 제4 단계에서 부트 소프트웨어의 리프로그램이 필요한 것으로 결정된 경우, 메인 소프트웨어를 리프로그램하기 전에 부트 소프트웨어를 리프로그램하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  12. 제11 항에 있어서,
    상기 제5 단계는 메인 소프트웨어를 리프로그램하기 전에 삭제되어야 할 부트 소프트웨어를 선택하여 삭제한 후 리프로그램하고 리셋 벡터 어드레스 플래쉬 롬 블록에 새로운 리셋 벡터를 입력하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  13. 제12 항에 있어서,
    상기 새로운 리셋 벡터는 부트 소프트웨어의 시작 주소를 참조하여 결정하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍방법.
  14. 제12 항 또는 제13 항에 있어서,
    상기 제5 단계에서 삭제되어야 할 부트 소프트웨어의 선택은 리셋 벡터 어드레스를 참조하여 결정된 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  15. 제9 항 내지 제13 항 어느 한 항에 있어서,
    상기 제1 단계에서 임베디드 소프트웨어 리프로그램 단계 진입 여부하지 않은 것으로 결정된 경우, 상기 메인 소프트웨어를 실행하는 제6 단계를 더 포함하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  16. 부트 소프트웨어의 부팅 시작 위치의 주소를 저장하는 리셋 벡터 어드레스 레지스터; 상기 리셋 벡터 어드레스 레지스터에 로드될 상기 부팅 시작 위치의 주소를 입력할 수 있는 리셋 벡터 어드레스 플래쉬 롬 블록; 2 개의 부트 소프트웨어; 및 메인 소프트웨어;를 포함하는 임베디드 소프트웨어 리프로그래밍 방법에 있어서,
    상기 부트 소프트웨어 또는 메인 소프트웨어의 리프로그램 필요 여부나 소프트웨어 업데이트 툴과 통신 여부로 임베디드 소프트웨어의 리프로그램 단계 진입 여부를 결정하는 제1 단계;
    복사될 제2 부트 소프트웨어를 선택하여 임시저장소에 저장하는 제2 단계;
    상기 임시저장소에 저장된 상기 제2 부트 소프트웨어를 이용하여 상기 제2 부트 소프트웨어를 실행하는 제3 단계;
    제1 부트 소프트웨어를 리프로그램해야 하는지 결정하는 제4 단계; 및
    상기 제4 단계에서 제1 부트 소프트웨어의 리프로그램이 불요한 것으로 결졍된 경우, 상기 메인 소프트웨어를 삭제하고 리프로그램하는 제5 단계;를 포함하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  17. 제16 항에 있어서,
    상기 제2 단계는 상기 리셋 벡터 어드레스 레지스터를 참조하여 복사될 제2 부트 소프트웨어를 선택하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  18. 제17 항에 있어서,
    상기 제5 단계는 상기 제4 단계에서 상기 제1 부트 소프트웨어의 리프로그램이 필요한 것으로 결정된 경우, 상기 메인 소프트웨어를 리프로그램하기 전에 상기 제1 부트 소프트웨어를 리프로그램하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  19. 제18 항에 있어서,
    상기 제5 단계는 상기 메인 소프트웨어를 리프로그램하기 전에 삭제되어야 할 상기 제1 부트 소프트웨어를 선택하여 삭제한 후 리프로그램하고 상기 리셋 벡터 어드레스 플래쉬 롬 블록에 상기 제1 부트 소프트웨어의 주소를 가리키는 리셋 벡터를 입력하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  20. 제19 항에 있어서,
    상기 리셋 벡터는 제2 부트 소프트웨어의 시작 주소를 참조하여 결정하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍방법.
  21. 제19 항 또는 제20 항에 있어서,
    상기 제5 단계에서 삭제되어야 할 상기 제1 부트 소프트웨어의 선택은 리셋 벡터 어드레스를 참조하여 결정된 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
  22. 제16 항 내지 제19 항 어느 한 항에 있어서,
    상기 제1 단계에서 임베디드 소프트웨어 리프로그램 단계 진입 여부하지 않은 것으로 결정된 경우, 상기 메인 소프트웨어를 실행하는 제6 단계를 더 포함하는 것을 특징으로 하는 임베디드 소프트웨어 리프로그래밍 방법.
KR1020100116771A 2010-11-23 2010-11-23 임베디드 시스템의 마이크로 컨트롤러 및 임베디드 소프트웨어 리프로그래밍 방법 KR101174231B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100116771A KR101174231B1 (ko) 2010-11-23 2010-11-23 임베디드 시스템의 마이크로 컨트롤러 및 임베디드 소프트웨어 리프로그래밍 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100116771A KR101174231B1 (ko) 2010-11-23 2010-11-23 임베디드 시스템의 마이크로 컨트롤러 및 임베디드 소프트웨어 리프로그래밍 방법

Publications (2)

Publication Number Publication Date
KR20120055190A KR20120055190A (ko) 2012-05-31
KR101174231B1 true KR101174231B1 (ko) 2012-08-14

Family

ID=46270804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100116771A KR101174231B1 (ko) 2010-11-23 2010-11-23 임베디드 시스템의 마이크로 컨트롤러 및 임베디드 소프트웨어 리프로그래밍 방법

Country Status (1)

Country Link
KR (1) KR101174231B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003288213A (ja) 2002-03-28 2003-10-10 Toshiba Corp ブートプログラム記憶装置、電子機器のブートプログラム記憶方法
KR100516551B1 (ko) 2000-11-25 2005-09-22 엘지전자 주식회사 원격 소프트웨어 업그레이드 시스템 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100516551B1 (ko) 2000-11-25 2005-09-22 엘지전자 주식회사 원격 소프트웨어 업그레이드 시스템 및 방법
JP2003288213A (ja) 2002-03-28 2003-10-10 Toshiba Corp ブートプログラム記憶装置、電子機器のブートプログラム記憶方法

Also Published As

Publication number Publication date
KR20120055190A (ko) 2012-05-31

Similar Documents

Publication Publication Date Title
CN102033790B (zh) 一种嵌入式系统bootrom的升级方法和装置
TWI515660B (zh) 韌體變量更新方法
JP5575338B2 (ja) 情報処理装置、情報処理方法、およびコンピュータプログラム
US20180329719A1 (en) Network switch recovery after reboot
US7856614B2 (en) Programmable system-on-chip apparatus and method for updating firmware
US7750676B2 (en) Embedded system and control method therefor
JP2010541105A (ja) ファームウェアイメージの更新および管理
US9323933B2 (en) Apparatus and method for selecting and booting an operating system based on path information
TW201510866A (zh) Uefi bios開機及更新之系統及方法、記錄媒體及電腦程式產品
KR20170040734A (ko) 업데이트 제어 방법을 갖는 전자 시스템 및 그것의 동작 방법
CN101667128A (zh) 更新与修复基本输入输出系统的方法
JP2010170197A (ja) ファームウェア管理プログラム、記憶装置およびファームウェア管理方法
JP2013025426A (ja) 画像出力装置及びそのプログラム
CN109375953B (zh) 一种操作系统启动方法及装置
US20130091338A1 (en) Information processing device, information processing method and program product
CN105183580A (zh) 一种引导程序的存储方法、故障恢复方法及设备
KR101174231B1 (ko) 임베디드 시스템의 마이크로 컨트롤러 및 임베디드 소프트웨어 리프로그래밍 방법
CN110196730B (zh) 应用程序的热补丁管理方法、装置和存储介质
US20080091902A1 (en) Memory card and method of updating memory card program
EP2733612B1 (en) Information processing device, method, and program
JP2012118904A (ja) 情報処理装置
JP2011210137A (ja) 電子機器、航法装置、バージョンアッププログラム及びバージョンアップ方法
CN109901117B (zh) 一种雷达重启方法及装置
JP2005128613A (ja) 画像形成装置
JP2005332228A (ja) プログラム切替え制御装置

Legal Events

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

Payment date: 20150217

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180702

Year of fee payment: 9