상기의 목적을 달성하기 위한 본 발명에 따른 컴퓨터 시스템에서의 펌웨어 기록방법은, 펌웨어가 기록되는 롬의 영역을 메인 영역과 보조 영역으로 논리 구분하여, 상기 메인 영역에는, 기록 요구되는 메인 펌웨어를, 상기 보조 영역에는, 상기 메인 펌웨어에 대한 삭제 또는 기록을 제어하기 위한 보조 펌웨어를 기록하는 1단계; 상기 롬에 기록된 펌웨어에 대한 업데이트 명령을 확인하여, 상기 업데이트 명령을 수행하기 위한 제어 프로그램을 램에 로드하는 2단계; 상기 메인 영역과 보조 영역 중에서 새로운 펌웨어를 업데이트할 대상 영역을 확인하는 3단계; 및 상기 확인된 대상 영역의 내용을 삭제한 후 상기 새로운 펌웨어를 업데이트하는 4단계를 포함하여 구성된 것을 특징으로 한다.
삭제
이하, 본 발명에 따른 컴퓨터 시스템에서의 펌웨어 기록방법에 대한 바람직한 실시 예에 대해 첨부된 도면에 의거하여 상세하게 설명한다.
우선, 펌웨어가 기록되는 롬 영역을 두 영역으로 논리 구분하게 되는데, 하나의 영역은 모든 기능을 수행하는 메인 펌웨어가 기록되는 메인 영역이고, 다른 하나의 영역은 포스트 기능 및 상기 메인 펌웨어를 업데이트하기 위한 업데이트용 펌웨어가 기록되는 포스트 프루프 영역으로 구분되어, 각각 해당 펌웨어를 저장하게 된다.
이후, 상기 메인 영역에 저장된 펌웨어에서 오류가 발생하거나 손상되게 되면 마이컴의 동작이 정상적으로 수행되지 않게 되는데, 이때 상기 펌웨어에 대한 업데이트 명령 또는 재기록 명령에 따라 정상적인 또는 업데이트된 펌웨어를 후술하는 바와 같이 롬의 해당 영역에 기록하게 된다.
도 2는 본 발명에 따른 컴퓨터 시스템에서의 펌웨어 기록방법이 적용되는 마이컴의 구성을 도시한 것으로서, 램(20)은 응용 프로그램의 제어하에 새로운 펌웨어를 업데이트 제어하기 위한 제어 소프트웨어나, 상기 제어 소프트웨어의 제어하에 메인 영역(301) 또는 포스트 프루프 영역(302)에 기록 요구되는 새로운 펌웨어가 로드되는 것이고, 롬(30)은 메인 영역(301)과 포스트 프루프 영역(302)으로 논리 구분된 것으로서, 새로운 펌웨어가 기록되는 대상이 되는 것이다.
상기 메인 영역(301)이 망가졌을 때 상기 보조 영역 즉, 포스트 프루프 영역(302)에 저장된 block을 이용하여 전원 온 후, 시스템 바이오스는 POST 진행 후 DOS 모드까지 진행을 한다. 상기 DOS 모드에서 사용자는 응용 프로그램(Flash Utility program)을 이용하여 플래쉬(Flash)를 하여 망가진 상기 메인 영역의 블록을 업데이트한다. 도2에서 응용프로그램은 응용 프로그램이고, 제어 소프트웨어는 업데이트 루틴(Update Routine)이며, 새로운 펌웨어는 망가진 영역을 대체할 복구 파일이다. 상기 응용프로그램, 제어소프트웨어, 새로운 펌웨어는 DOS 모드에서 하나의 저장장치(예, 플로피 디스켓) 내에 저장되어 있는 파일의 형태이다.
즉, 상기 마이컴이 망가졌을 때 이미 독립적으로 저장된 복구 기능 블록을 이용하여 마이컴을 업데이트하는 방법을 도2를 이용해 설명한다.
도 2의 (A)는 두 영역으로 논리 구분되어 각각 해당 펌웨어가 기록되어 있는 롬(30)과, 마이컴(10)의 실행 프로그램이나 이 실행프로그램에 의해 발생되는 각종 처리데이터를 기록하는 램(20)에 대한 구성을 도시한 것으로서, 손상된 펌웨어에 대한 업데이트가 시작되기 전의 상태를 나타낸 것이다. Main Block(301)은 마이컴의 일반적인 기능을 하는 데이터가 저장되어 있고, 포스트 프루프 블록(Post Proof Block)(302)는 POST 과정 중 필요한 데이터가 저장되어 있다. 이것은 만약에 메인 블록(Main Block)(301)이 망가졌을 때는 포스트 프루프 블록(302)을 이용하여 메인 블록(301)을 복구하고, 포스트 프루프 블록(302)이 망가졌을 때는 메인 블록(301)을 이용하여 포스트 프루프 블록(302)을 복구시키기 위해 각각 독립적인 두 영역으로 구분해 놓았다. 예를들어, 메인 블록(301)이 망가졌을 때 본 발명에선 다른 독립적인 영역 즉, 포스트 프루프 블록(302)의 정보를 이용하여 시스템 전원이 온된 후에 시스템 BIOS가 상기 포스트 프루프 블록(302)의 정보를 이용하여 DOS 모드까지 초기 부팅 과정을 수행한다. 그 이후에 망가진 블록을 업데이트하는 과정을 다 음 이후로 설명한다.
도 2의 (B)는 사용자에 의해 업데이트 명령이 입력됨에 따라 응용 프로그램(Flash Utility Program)에 의해 새로운 펌웨어를 업데이트 제어하기 위한 제어 소프트웨어(Update Routine)가 램(20)에 로드되는 것을 도시한 것으로서, 응용 프로그램은 먼저 제어 소프트웨어(Update Routine)를 읽어들여 메인 영역(301) 또는 포스트 프루프 영역(302)에 기록되어 있는 펌웨어의 상태에 따라 제어 소프트웨어가 로드되는 경로를 선택하게 되는데, 제어권이 메인 영역(301)에 있으면 메인 영역(301)에 기록된 펌웨어를 통해 제어 소프트웨어(Update Routine)를 로드하게 되고, 제어권이 포스트 프루프 영역(302)에 있으면 포스트 프루프 영역(302)에 기록된 펌웨어를 통해 제어 소프트웨어를 로드하게 된다.
상기 제어권은 마이컴(10)이 리셋되어 기동되면서 선택되는 것으로서, 리셋 루틴 초기에 마이컴(10)에 입력되는 신호의 조합으로 선택되도록 구성할 수 있다. 즉, 사전에 지정된 조합의 신호가 입력되면 예컨대, 포스트 프루프 영역(302)의 펌웨어가 제어권을 갖도록 하고, 그렇지 않으면 메인 영역(301)의 펌웨어가 제어권을 갖도록 구성하게 되는 것이다. 즉, 메인 영역(301)과 포스트 프루프 영역(302)의 영역 중 망가지지 않은 쪽에서 그 제어권을 가지도록 설정하여 상기 제어 소프트웨어를 RAM(20)에 로드하여 업데이트를 수행하도록 한다.
도 2의 (C)는 제어 소프트웨어가 램(20)에 로드된 후, 응용 프로그램에 의해 새로운 펌웨어를 기록해야 되는 대상 영역이 선택 지정됨에 따라 망가진 그 대상 영역을 복구하기 위해 그 대상 영역에 기록되어 있는 내용을 모두 삭제하는 과정을 도시한 것으로서, 제어 소프트웨어는 사용자에 선택 지정함에 따라 응용 프로그램을 통해 대상 영역이 메인 영역(301)으로 지정되면 메인 영역(301)의 내용을 삭제하고, 응용 프로그램이 대상 영역을 포스트 프루프 영역(302)을 지정하면 포스트 프루프 영역(302)의 내용을 삭제하게 된다.
도 2의 (D)는 제어 소프트웨어에 의해 대상 영역의 내용이 삭제된 후, 응용 프로그램으로부터 제공되는 새로운 펌웨어를 상기 대상 영역에 기록하는 것을 도시한 것으로서, 제어 소프트웨어는 상기 대상 영역에 새로운 펌웨어를 기록하게 된다. 그리하여 망가진 상기 대상 영역을 상기 새로운 펌웨어로 업데이트하여 복구 동작을 완료한다. 망가진 상기 대상 영역이 메인블럭(301)이면 그 메인블럭(301)의 전 영역을 삭제한 후에 상기 그 메인블럭(301)에 대응하는 새로운 펌웨어를 업데이트한다. 만약, 포스트 프루프 영역(302) 영역이 망가졌을 경우엔 상기 메인 영역(301)을 이용하여 그 포스트 프루프 영역(302)을 삭제하고 그 포스트 프루프 영역(302)에 대응하는 상기 새로운 펌웨어를 업데이트한다.
도 3은 본 발명에 따른 컴퓨터 시스템에서의 펌웨어 기록방법에 대한 동작 흐름도를 도시한 것으로서, 우선 사용자에 의하여 마이컴(10)이 구비하는 롬(30)의 펌웨어를 재 기록하거나 업데이트하라는 명령이 입력(S21)되면, 이를 담당하는 응용 프로그램은 현재 펌웨어를 업데이트 제어할 수 있는 제어권을 갖고 있는 제어블록을 확인(S22)하게 된다. 즉, 제어블록이 메인 영역(301)에 있는지 또는 제어블록이 포스트 프루프 영역(302)에 있는지를 판단(S23)하게 된다.
상기 제어권을 갖는 제어블록의 선택 방법은, 리셋 루틴 초기에 하드웨어 입력 신호의 조합에 의하여 이루어지는데, 사전에 지정된 신호의 조합이 입력되면, 포스트 프루프 영역(302)이 제어블록으로 선택되고, 사전에 지정된 신호의 조합이 입력되지 않으면, 메인 영역(301)이 선택되는 것이다. 상기 포스트 프루프 영역(302)과 메인 영역(301) 중 어느 하나의 영역이 망가졌을 경우엔 그 제어권을 망가지지 않은 영역으로 설정하여 업데이트하는 것은 당연하다.
상기한 제어권을 갖는 제어블록을 선택하는 이유는, 제어권이 메인 영역(301)에 있게 되면, 메인 영역(301) 및 포스트 프루프 영역(302)의 기록 내용을 재기록하는 것이 가능하고, 제어권이 포스트 프루프 영역(302)에 있게 되면, 메인 영역(301)의 기록 내용만을 재기록하는 것이 가능하도록 구현하는 것이 바람직하기 때문이다.
상기 판단(S23) 결과, 상기 램(20)에 로드된 제어 소프트웨어는 현재 제어블록이 포스트 프루프 영역(302)에 있게 되면, 포스트 프루프 영역(302)을 통해 펌웨어를 업데이트하기 위한 제어 소프트웨어를 램(20)에 로드(S31)하게 되는데, 이후 응용 프로그램에 의하여 펌웨어를 업데이트하고자 하는 블록이 메인 영역(301)으로 선택 지정(S32)되게 되면, 상기 램(20)에 로드된 제어 소프트웨어가 메인 영역(301)에 기록되어 있는 모든 내용을 삭제(S33)한 다음, 상기 응용 프로그램을 통해 새로운 펌웨어를 롬(30)의 해당 영역, 즉 메인 영역(301)에 업데이트 기록(S34)하게 된다. 이렇게 함으로써, 만약 상기 메인 영역(301)이 망가졌을 경우 마이컴(10)의 전체를 교체하지 않고, 소프트웨어로 업데이트할 수 있다.
한편, 상기 판단(S23) 결과, 현재 제어블록이 메인 영역(301)에 있게 되면, 메인 영역(301)을 통해 제어 소프트웨어를 램(20)에 로드(S41)하게 되는데, 이후 상기 로드된 제어 소프트웨어는 업데이트할 블록인 타겟 블록을 확인(S42)하여, 타겟 블록이 메인 영역(301)인지 또는 포스트 프루프 영역(302)인지의 여부를 판단(S43)하게 된다.
상기 확인(S42) 결과, 상기 램에 로드된 제어 소프트웨어는 타겟 블록이 메인 영역(301)이게 되면, 전술한 단계(S32)로 이행하여 일련의 업데이트 기록 동작을 수행하게 되고, 타겟 블록이 포스트 프루프 영역(302)이게 되면, 응용 프로그램을 통해 펌웨어를 업데이트하고자 하는 블록이 포스트 프루프 영역(302)으로 선택 지정(S44)된 다음, 포스트 프루프 영역(302)에 기록되어 있는 모든 기록 내용을 삭제(S45)한 후, 포스트 프루프 영역(302)에 새로운 펌웨어를 업데이트 기록(S46)하게 된다. 그리하여, 포스트 프루프 영역(302)과 메인 영역(301)의 정보를 새로운 펌웨어로 업데이트할 수 있고, 상기 두 영역 중 어느 하나가 망가졌을 경우에도 그 망가진 영역을 새로운 펌웨어로 복구시킬 수 있어서, 특히 상기 마이컴의 물리적인 교체 없이 소프트웨어로 업데이트할 수 있다. 또한, PC 시스템의 키보드/임베디드 컨트롤러(Keyboard/Embedded Controller)와 같은 마이컴의 펌웨어 내부에 POST를 성공적으로 진행할 수 있는 코드 블록을 따로 두어 어떠한 경우에도 물리적인 마이컴의 교체와 같은 물리적인 작업 없이 펌웨어를 업데이트할 수 있도록 한다. 해당 시스템 POST를 성공적으로 수행할 수 있는 최소 크기의 펌웨어 블록을 만들어 업데이트 과정에서 그 펌웨어 블록은 삭제, 쓰기 등의 작업에서 배제함으로써 항상 POST를 성공적으로 수행할 수 있는 펌웨어가 상기 마이컴에 존재하게 하여,필요한 경우에 수행할 수 있도록 한다. 그리하여 제품 생산 과정에서 물리적인 재 작업 없이 잘못된 펌웨어를 업데이트하고, 개발과정에서 발생할 수 있는 오류로 인한 소요시간을 줄일 수 있고, 사용자 환경의 필드에서도 업데이트 에러에도 바로 대처할 수 있다.
이상 전술한 본 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것으로, 당업자라면 이하 첨부된 특허청구범위에 개시된 본 발명의 기술적 사상과 그 기술적 범위 내에서, 다양한 다른 실시예들을 개량, 변경, 대체 또는 부가하여 실시하는 것이 가능할 것이다.