KR20010056103A - 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시메모리 및 그 메모리 갱신 방법 - Google Patents

시스템에서 부팅 및 수행 프로그램을 공유하는 플래시메모리 및 그 메모리 갱신 방법 Download PDF

Info

Publication number
KR20010056103A
KR20010056103A KR1019990057536A KR19990057536A KR20010056103A KR 20010056103 A KR20010056103 A KR 20010056103A KR 1019990057536 A KR1019990057536 A KR 1019990057536A KR 19990057536 A KR19990057536 A KR 19990057536A KR 20010056103 A KR20010056103 A KR 20010056103A
Authority
KR
South Korea
Prior art keywords
flash memory
execution program
program
dram
booting
Prior art date
Application number
KR1019990057536A
Other languages
English (en)
Other versions
KR100316584B1 (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 KR1019990057536A priority Critical patent/KR100316584B1/ko
Publication of KR20010056103A publication Critical patent/KR20010056103A/ko
Application granted granted Critical
Publication of KR100316584B1 publication Critical patent/KR100316584B1/ko

Links

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

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)
  • Stored Programmes (AREA)

Abstract

본 발명은 하나의 플래시 메모리를 부팅 프로그램 영역과 갱신 가능한 수행 프로그램 영역으로 분할하여 사용함으로써, 해당 시스템 크기를 줄임과 동시에 시스템 가격을 인하할 수 있도록 한 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 및 그 메모리 갱신 방법에 관한 것으로, 종래의 시스템에서는 부트 메모리와 플래시 메모리를 별도로 구현하여 해당되는 프로그램을 각각 저장하고 있으므로, 별도의 부트 메모리 및 플래시 메모리 구현으로 인해 시스템 가격이 상승하고, 해당 시스템의 크기가 큰 단점이 있었다.
따라서, 본 발명은 부팅 프로그램을 저장하기 위한 별도의 부트 메모리를 사용하지 않고, 해당 부팅 프로그램을 수행 프로그램이 저장되는 플래시 메모리에 공유하도록 해당 플래시 메모리를 분할 사용함으로써, 메모리 칩 숫자를 줄여 시스템의 크기를 줄일 수 있게 됨과 동시에 시스템 가격을 인하할 수 있게 되고, 이로 인해 해당 시스템의 외형도 수려하게 설계할 수 있게 된다.
또한, 본 발명은 부팅 프로그램과 수행 프로그램을 공유하는 플래시 메모리의 수행 프로그램 갱신시 부팅 프로그램 영역에 존재하는 플래시 메모리 삭제 및 기록 루틴을 DRAM(Dynamic Random Access Memory)으로 이동시켜 수행함으로써, 해당 부팅 프로그램을 보호한 상태에서 수행 프로그램만을 갱신할 수 있게 된다.

Description

시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 및 그 메모리 갱신 방법{Flash Memory To Share With Booting And Main Operation Program In System And Upgrade Method In That Memory}
본 발명은 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 및 그 메모리 갱신 방법에 관한 것으로, 특히 하나의 플래시 메모리를 부팅 프로그램 영역과 갱신 가능한 수행 프로그램 영역으로 분할하여 사용함으로써, 해당 시스템 크기를 줄임과 동시에 시스템 가격을 인하할 수 있도록 한 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 및 그 메모리 갱신 방법에 관한 것이다.
일반적으로, 전자적인 제어에 따라 소정 기능을 수행하는 각종 시스템은 모든 동작을 제어 및 처리하여 소정 기능을 수행하기 위한 수행 프로그램(Main Operating Program)과, 초기 부팅과 수행 프로그램의 갱신 및 갱신에 따른 재부팅을 위한 부팅 프로그램(Booting Program)이 필요하며, 이러한 수행 프로그램과 부팅 프로그램은 각각 별도의 메모리에 저장된다.
이를 첨부된 도면 도 1을 참조하여 상세하게 설명하면, 해당 시스템은 모든 동작을 제어 및 처리하는 중앙처리장치(11)와, 부팅 프로그램을 저장하기 위한 부트 메모리(12)와, 수행 프로그램을 저장하기 위한 플래시 메모리(Flash Memory, 13) 및 해당 플래시 메모리(13)에 저장된 수행 프로그램을 실행하기 위해 필요한 DRAM(Dynamic Random Access Memory, 14)을 구비하여 이루어지는데, 해당 부트 메모리(12)와 플래시 메모리(13)는 비휘발성 메모리로 구현되고, 해당 DRAM(14)은 휘발성 메모리로 구현된다.
여기서, 해당 부트 메모리(12)는 시스템이 양산된 이후에 갱신(Upgrade)되는 경우가 거의 없으므로, 재기록이 불가능한 PROM(Programmable Read Only Memory)이나 전기적으로 삭제하고 다시 기록할 수 있는 EPROM(Erasable and PROM)을 주로 사용하며, 초기 전원 공급시의 부팅 기능과 플래시 메모리(13)의 수행 프로그램 갱신을 위한 플래시 메모리 액세스 기능 및 수행 프로그램 갱신에 따른 재부팅 기능을 수행하는 부팅 프로그램 외에 시스템의 고장 진단을 위한 진단 프로그램을 포함한다.
그리고, 해당 플래시 메모리(13)는 DRAM(14)에서 실행되는 수행 프로그램을 저장하되, 해당 수행 프로그램의 갱신이 가능하도록 명령에 의한 삭제(Erase) 및 프로그램이 가능한 메모리로 구현된다.
이와 같이 구성된 시스템에서 초기 전원이 공급되면, 중앙처리장치(11)는 최초 동작으로 부트 메모리(12)에 저장된 부팅 프로그램을 판독하여 부팅을 수행하게 되는데, 이때, 해당 부트 메모리(12)에 저장된 부팅 프로그램과 진단 프로그램을 DRAM(14)으로 이동시킴과 동시에 플래시 메모리(13)에 저장된 수행 프로그램을 DRAM(14)으로 이동시킨 후, 링크 포인터를 DRAM(14)으로 이동시켜 수행 프로그램이실행될 수 있도록 함으로써, 해당 시스템이 정상적으로 동작하는 상태로 부팅이 완료된다.
이때, 해당 시스템에서 부트 메모리의 부팅 프로그램에 의한 플래시 메모리 액세스 절차를 첨부된 도면 도 2에 도시된 부트 메모리 및 플래시 메모리 구조를 참조하여 살펴보면, 시스템 양산시에 롬 라이터(ROM Writer)에 의해 부트 메모리(12)에만 부팅 프로그램이 퓨징되고, 해당 플래시 메모리(13)는 비어있는 상태이므로, 해당 시스템에 대한 하드웨어 테스트가 완료되면 플래시 메모리(13)에 저장될 수행 프로그램을 외부 시스템으로부터 소정의 인터페이스를 통해 다운로드 받게 된다.
이때, 다운로드 받은 수행 프로그램은 중앙처리장치(11)에 의해 임시로 DRAM(14)에 저장되고, 해당 중앙처리장치(11)는 부트 메모리(12)의 부팅 프로그램을 실행시켜 플래시 메모리(13)를 삭제한 후, DRAM(14)에 저장되어 있는 수행 프로그램을 해당 플래시 메모리(13)에 바이트(Byte) 또는 워드(Word) 단위로 기록하고, 기록이 완료되면 해당 시스템을 재부팅하여 다운로드 받은 수행 프로그램으로 정상 동작시키게 된다.
그리고, 해당 시스템을 실제 필드(Field)에 설치한 이후, 수행 프로그램의 갱신 필요성이 있는 경우 전술한 동작과 동일한 방법으로 부팅 프로그램을 이용하여 갱신될 수행 프로그램을 다운로드 받아 현재 플래시 메모리(13)의 수행 프로그램을 삭제하고, 갱신될 수행 프로그램을 해당 플래시 메모리(13)에 기록한 후, 해당 시스템을 재부팅하여 갱신된 수행 프로그램으로 정상 동작하게 된다.
한편, 전술한 바와 같이 수행 프로그램에 대한 갱신이 가능한 종래의 시스템에서는 부트 메모리와 플래시 메모리를 별도로 구현하여 해당되는 프로그램을 각각 저장하고 있으므로, 별도의 부트 메모리 및 플래시 메모리 구현으로 인해 시스템 가격이 상승하고, 해당 시스템의 크기가 큰 단점이 있었다.
본 발명은 전술한 바와 같은 문제점을 해결하기 위한 것으로 그 목적은, 부팅 프로그램을 저장하기 위한 별도의 부트 메모리를 사용하지 않고, 해당 부팅 프로그램을 수행 프로그램이 저장되는 플래시 메모리에 공유하도록 해당 플래시 메모리를 분할 사용함으로써, 메모리 칩 숫자를 줄여 시스템의 크기를 줄임과 동시에 시스템 가격을 인하할 수 있도록 하고, 이로 인해 해당 시스템의 외형도 수려하게 설계할 수 있도록 하는데 있다.
본 발명의 다른 목적은, 부팅 프로그램과 수행 프로그램을 공유하는 플래시 메모리의 수행 프로그램 갱신시 부팅 프로그램 영역에 존재하는 플래시 메모리 삭제 및 기록 루틴을 DRAM으로 이동시켜 수행함으로써, 해당 부팅 프로그램을 보호한 상태에서 수행 프로그램만을 갱신할 수 있도록 하는데 있다.
도 1은 부팅 프로그램과 수행 프로그램을 각각 별도의 메모리에 저장하는 시스템의 개략적인 구성 블록도.
도 2는 도 1에 있어, 부트 메모리의 부팅 프로그램에 의한 플래시 메모리 액세스 절차를 설명하기 위한 메모리 구조를 도시한 도면.
도 3은 본 발명에 따른 부팅 프로그램과 갱신 가능한 수행 프로그램을 공유하는 플래시 메모리를 갖는 시스템의 개략적인 구성 블록도.
도 4는 도 3에 있어, 플래시 메모리의 상세한 구조를 도시한 도면.
도 5는 본 발명에 따른 시스템에서 플래시 메모리의 수행 프로그램 삭제 동작 순서도.
도 6은 본 발명에 따른 시스템에서 플래시 메모리의 수행 프로그램 기록 동작 순서도.
도 7은 본 발명에 따른 부팅 프로그램과 갱신 가능한 수행 프로그램을 공유하는 플래시 메모리를 갖는 라우터의 개략적인 구성 블록도.
* 도면의 주요 부분에 대한 부호의 설명 *
31 : 중앙처리장치 32 : 플래시 메모리
33 : DRAM
상술한 바와 같은 목적을 해결하기 위한 본 발명의 특징은, 소정 갯수의 섹터를 기준으로 부팅 및 진단 프로그램을 저장하기 위한 부팅 프로그램 영역과 갱신가능한 수행 프로그램 영역으로 구분하되, 상기 부팅 프로그램 영역은 갱신될 수행 프로그램을 다운로드 받는 부분과, 다운로드 받은 수행 프로그램을 기록하는 플래시 액세스 함수를 호출하는 부분과, 어셈블리 코드로 프로그램된 플래시 액세스 함수와, DRAM으로 이동되어 플래시 메모리 삭제 및 기록 루틴을 수행하는 부분을 포함하는 것을 특징으로 하는 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리를 구현하는데 있다.
본 발명의 다른 특징은, 외부 시스템으로부터 갱신될 수행 프로그램을 다운로드 받는 과정과; 어셈블리 코드를 이용하여 플래시 메모리의 부팅 프로그램 영역에 존재하는 플래시 메모리 삭제 및 기록 루틴을 DRAM으로 이동시키는 과정과; 상기 DRAM으로 이동된 플래시 메모리 삭제 및 기록 루틴에 따라 상기 플래시 메모리의 수행 프로그램 영역에 대한 삭제 및 기록을 수행하여 해당되는 수행 프로그램을 갱신하는 과정을 포함하는 것을 특징으로 하는 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 갱신 방법을 제공하는데 있다.
그리고, 상기 플래시 메모리 삭제 및 기록 루틴을 DRAM으로 이동시키기 전에 수행 프로그램 삭제 및 기록후에 링크 포인터가 부팅 프로그램 영역으로 복귀될 주소를 저장하는 과정을 더 포함하는 것을 특징으로 한다.
나아가, 상기 DRAM으로 이동된 플래시 메모리 삭제 및 기록 루틴에 따라 해당되는 수행 프로그램을 갱신하기 위해 링크 포인터를 상기 DRAM으로 이동된 플래시 메모리 삭제 및 기록 루틴의 시작번지로 이동시키는 과정과; 상기 수행 프로그램을 갱신한 후에 상기 부팅 프로그램 영역으로 링크 포인터를 복귀시키는 과정을더 포함하는 것을 특징으로 한다.
또한, 상기 플래시 메모리의 수행 프로그램을 갱신하는 과정은, 상기 DRAM으로 이동된 플래시 메모리 삭제 루틴에 따라 상기 수행 프로그램 영역을 섹터 단위로 삭제하는 단계와; 상기 DRAM으로 이동된 플래시 메모리 기록 루틴에 따라 상기 수행 프로그램 영역에 다운로드 받은 수행 프로그램을 바이트 단위로 기록하는 단계를 더 포함하는 것을 특징으로 한다.
여기서, 상기 수행 프로그램 영역을 섹터 단위로 삭제하는 단계는, 상기 플래시 메모리 삭제 루틴에 따라 수행 프로그램 영역의 섹터 삭제 명령을 내리는 단계와; 데이터 폴링 방법을 이용하여 상기 섹터 삭제가 완료되었는지를 확인하는 단계와; 섹터 삭제가 완료된 경우 다음 섹터를 선택하여 상기 수행 프로그램 영역의 마지막 섹터가 삭제되기까지 섹터 삭제를 반복하는 단계를 더 포함하는 것을 특징으로 하며, 상기 수행 프로그램 영역에 다운로드 받은 수행 프로그램을 바이트 단위로 기록하는 단계는, 상기 플래시 메모리 기록 루틴에 따라 수행 프로그램의 바이트 기록 명령을 내리는 단계와; 데이터 폴링 방법을 이용하여 상기 바이트 기록이 완료되었는지를 확인하는 단계와; 바이트 기록이 완료된 경우 바이트 단위의 다음 주소 영역을 선택하여 상기 수행 프로그램 영역의 마지막 주소가 기록되기까지 상기 수행 프로그램의 바이트 기록을 반복하는 단계를 더 포함하는 것을 특징으로 한다.
이하, 본 발명에 따른 실시예를 첨부한 도면을 참조하여 상세하게 설명하면다음과 같다.
본 발명에 따른 시스템 즉, 부팅 프로그램과 갱신 가능한 수행 프로그램을 공유하는 플래시 메모리를 갖는 시스템은 첨부한 도면 도 3에 도시한 바와 같이, 모든 동작을 제어 및 처리하는 중앙처리장치(31)와, 부팅 프로그램과 수행 프로그램을 공유하기 위한 플래시 메모리(32) 및 해당 플래시 메모리(32)에 저장된 수행 프로그램을 실행하거나 해당 수행 프로그램에 대한 갱신 기능을 수행하기 위해 필요한 DRAM(33)을 구비하여 이루어진다. 즉, 별도의 부트 메모리를 사용하지 않고, 해당 플래시 메모리(32)의 일부 영역을 부팅 프로그램 영역으로 사용하게 된다.
이때, 해당 부팅 프로그램과 수행 프로그램을 공유하는 플래시 메모리(32)는 첨부한 도면 도 4에 도시한 바와 같이, 소정 갯수의 섹터(Sector)를 기준으로 부팅 프로그램 영역과 수행 프로그램 영역으로 구분된다.
예를 들어, 2Mbyte의 크기를 갖는 플래시 메모리(32)의 경우 각 섹터가 64Kbyte의 크기를 갖는 총 32개의 섹터를 포함하며, 해당 섹터 '0~7'까지의 8개 섹터는 부팅 프로그램 영역으로 사용되고, 해당 섹터 '8~31'까지의 24개 섹터는 수행 프로그램 영역으로 사용된다.
이때, 해당 플래시 메모리에 대한 어드레스 맵(Address Map)은 16진수 '0x20000000'으로 시작하는 번지를 갖게 된다.
한편, 해당 부팅 프로그램 영역은 부팅 및 진단 프로그램을 포함하되, 갱신될 수행 프로그램을 다운로드 받는 부분과, 다운로드 받은 수행 프로그램을 플래시 메모리(32)에 기록하는 플래시 액세스 함수를 호출(Function Call)하는 부분과, 어셈블리 코드로 프로그램된 플래시 액세스 함수(Flash Access Function)와, 실제 DRAM(33)으로 이동되어 플래시 메모리 삭제 및 기록 루틴을 수행하는 부분으로 구성된다.
이와 같이 구성된 본 발명에 따른 시스템에서 플래시 메모리 갱신 방법 즉, 부팅 프로그램 영역과 갱신 가능한 수행 프로그램 영역으로 분할하여 사용하는 방법을 설명하면 다음과 같은데, 본 발명에서는 부팅 프로그램과 수행 프로그램을 하나의 플래시 메모리(32)에 공유할 때 발생될 수 있는 문제점의 해결 방안과, 해당 부팅 프로그램을 저장하기 위한 별도의 부트 메모리를 사용하지 않음에 따라 PCB(Printed Circuit Board)의 크기를 줄여서 시스템 가격을 낮춤과 동시에 시스템 크기를 줄이는 부분에 중점을 두고 설명하기로 한다.
해당 시스템의 양산 시점이나 그 이후에 수행 프로그램 갱신시 외부 시스템으로부터 다운로드 받은 수행 프로그램을 플래시 메모리(32)에 직접 기록할 수 없고, 해당 플래시 메모리(32)에 기저장된 수행 프로그램에 대한 삭제를 선행해야 하는데, 이는 해당 플래시 메모리(32)를 삭제 및 기록하는 루틴이 플래시 메모리(32)의 부팅 프로그램 영역에 존재하기 때문에 중앙처리장치(31)에서 삭제 명령을 플래시 메모리(32)에 내린 이후에는 해당 플래시 메모리(32)의 부팅 프로그램 영역에서 다음 명령을 수행하기 위한 코드를 판독할 수 없기 때문이다.
또한, 플래시 메모리(32)에 기저장된 수행 프로그램 삭제를 수행한 이후에 다운로드 받은 수행 프로그램을 해당 플래시 메모리(32)에 실제로 기록하는 경우에도 상술한 이유 때문에 명령을 수행할 수 없게 된다.
따라서, 본 발명에 따른 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리(32)의 수행 프로그램을 갱신하기 위해서는 해당 플래시 메모리(32)의 부팅 프로그램에 존재하는 플래시 메모리 삭제 및 기록 루틴을 DRAM(33)으로 이동시켜 해당되는 플래시 메모리(32)의 수행 프로그램 삭제 및 기록 동작을 수행하게 되는데, 먼저, 해당 시스템에서 플래시 메모리(32)에 저장된 수행 프로그램 삭제 동작을 첨부한 도면 도 5를 참조하여 설명하면 다음과 같다.
해당 시스템의 중앙처리장치(31)는 외부 시스템으로부터 갱신될 수행 프로그램을 다운로드 받게 되면(스텝 S51), 이를 플래시 메모리(32)에 기록하기 위해 기저장된 수행 프로그램을 삭제하게 되는데, 이를 위해 먼저, 플래시 메모리(32)의 수행 프로그램 삭제가 종료되는 경우에 해당 중앙처리장치(31)의 링크 포인터가 본래의 부팅 프로그램 영역으로 복귀(Return)될 주소를 스택에 저장한 후(스텝 S52), 해당 플래시 메모리(32)의 부팅 프로그램 영역에 존재하는 플래시 메모리 삭제 루틴을 DRAM(33)으로 이동시키게 된다(스텝 S53).
그리고, 다음 명령을 DRAM(33)에서 판독하여 수행할 수 있도록 해당 중앙처리장치(31)의 링크 포인터를 현재의 플래시 메모리(32)에서 DRAM(33)의 플래시 메모리 삭제 루틴의 시작번지로 이동시키게 된다(스텝 S54).
이때, 해당 중앙처리장치(31)의 링크 포인터를 이동시키기 위해서는 해당 링크 포인터를 일시 저장하는 스택을 제어해야 하므로, C 언어에서는 구현이 어려워 어셈블리 코드를 이용해서 코딩한다.
그리고, 해당 플래시 메모리 삭제를 수행하기 전에 중앙처리장치(31)의 모든인터럽트를 디스에이블(Disable)시키게 되는데, 그 이유는 해당 플래시 메모리 삭제 명령이 내려진 이후에 중앙처리장치(31)로 인터럽트가 발생하게 되면, 해당 중앙처리장치(31)는 인터럽트에 대한 서비스를 수행하기 위해 부팅 프로그램 영역의 인터럽트 벡터 테이블(Interrupt Vector Table)을 판독하려고 잘못된 명령을 수행하기 때문이다. 즉, 해당 플래시 메모리 삭제 명령이 내려진 이후에는 데이터 폴링(Data Polling) 이외에는 판독 명령을 수행할 수 없기 때문이다.
여기서, 데이터 폴링이란 플래시 메모리 삭제 또는 기록 명령 이후에 해당되는 삭제 또는 기록의 완료 여부를 나타내는 특정 데이터 비트를 판독하여 해당 플래시 메모리 삭제 또는 기록의 완료 여부를 판단하는 방법을 의미한다.
한편, 스텝 S54에서 해당 중앙처리장치(31)의 링크 포인터를 DRAM(33)으로 이동된 플래시 메모리 삭제 루틴의 시작번지로 이동시킴에 따라 해당 플래시 메모리 삭제 루틴은 DRAM(33)에서 수행하게 된다.
따라서, 해당 플래시 메모리(32)의 부팅 프로그램 영역을 보호한 상태에서 해당 중앙처리장치(31)는 플래시 메모리 삭제 루틴에 따라 수행 프로그램 영역의 섹터 삭제 명령을 내린 후(스텝 S55), 데이터 폴링 방법을 이용하여 해당 섹터 삭제가 완료되었는지를 주기적으로 확인하게 된다(스텝 S56, S57).
이때, 해당 섹터 삭제가 완료된 경우 해당 중앙처리장치(31)는 플래시 메모리(32)의 수행 프로그램 영역에 포함되는 모든 섹터에 대한 삭제가 완료되었는지 즉, 현재 삭제된 섹터가 수행 프로그램 영역의 마지막 섹터인지를 확인하게 되는데(스텝 S58), 만약, 현재 삭제된 섹터가 수행 프로그램 영역의 마지막 섹터가아닌 경우 해당 섹터 번호를 '1'증가시켜 다음 섹터를 선택한 후(스텝 S59), 해당되는 섹터 삭제 명령을 내리는 스텝 S55로 귀환하여 반복 동작을 수행함으로써, 해당 플래시 메모리(32)의 수행 프로그램 영역에 포함되는 모든 섹터를 차례로 삭제할 수 있게 된다.
한편, 스텝 S58에서 현재 삭제된 섹터가 수행 프로그램 영역의 마지막 섹터인 경우 즉, 해당 플래시 메모리(32)의 수행 프로그램 영역에 포함되는 모든 섹터를 삭제한 경우 해당 DRAM(33)에서의 플래시 메모리 삭제 루틴이 종료되고, 해당 중앙처리장치(31)의 링크 포인터는 본래의 부팅 프로그램 영역으로 복귀하게 된다(스텝 S60).
상술한 동작에 의해 플래시 메모리(32)의 수행 프로그램 삭제 동작이 완료되면, 해당 중앙처리장치(31)는 다운로드 받은 수행 프로그램을 해당 플래시 메모리(32)에 바이트 단위로 기록하게 되는데, 해당 플래시 메모리(32)의 수행 프로그램 기록 동작을 첨부한 도면 도 6을 참조하여 상세하게 설명하면 다음과 같다.
해당 시스템의 중앙처리장치(31)는 플래시 메모리(32)의 수행 프로그램 삭제가 완료된 후, 먼저, 외부 시스템으로부터 다운로드 받은 수행 프로그램을 플래시 메모리(32)에 바이트 단위로 기록하는 플래시 메모리 기록 루틴이 종료되는 경우에 해당 중앙처리장치(31)의 링크 포인터가 본래의 부팅 프로그램 영역으로 복귀(Return)될 주소를 스택에 저장한 후(스텝 S61), 해당 플래시 메모리(32)의 부팅 프로그램 영역에 존재하는 플래시 메모리 기록 루틴을 DRAM(33)으로 이동시키게 된다(스텝 S62).
그리고, 다음 명령을 DRAM(33)에서 판독하여 수행할 수 있도록 해당 중앙처리장치(31)의 링크 포인터를 현재의 플래시 메모리(32)에서 DRAM(33)의 플래시 메모리 기록 루틴의 시작번지로 이동시키게 된다(스텝 S63).
이후, 해당 플래시 메모리 기록을 수행하기 전에 중앙처리장치(31)의 모든 인터럽트를 디스에이블시켜 해당 플래시 메모리 기록 명령이 내려진 이후에는 데이터 폴링 이외에는 판독 명령을 수행할 수 없도록 한다.
한편, 스텝 S63에서 해당 중앙처리장치(31)의 링크 포인터를 DRAM(33)으로 이동된 플래시 메모리 기록 루틴의 시작번지로 이동시킴에 따라 해당 플래시 메모리 기록 루틴은 DRAM(33)에서 수행하게 된다.
따라서, 해당 플래시 메모리(32)의 부팅 프로그램 영역을 보호한 상태에서 해당 중앙처리장치(31)는 플래시 메모리 기록 루틴에 따라 다운로드 받은 수행 프로그램을 바이트 단위로 기록하기 위해 바이트 기록 명령을 내린 후(스텝 S64), 데이터 폴링 방법을 이용하여 해당 바이트 기록이 완료되었는지를 주기적으로 확인하게 된다(스텝 S65, S66).
이때, 해당 바이트 기록이 완료된 경우 해당 중앙처리장치(31)는 플래시 메모리(32)의 수행 프로그램 영역 크기에 해당되는 모든 바이트 기록이 완료되었는지, 즉, 현재 바이트 기록된 주소가 수행 프로그램 영역의 마지막 주소인지를 확인하게 되는데(스텝 S67), 만약, 현재 바이트 기록된 주소가 수행 프로그램 영역의 마지막 주소가 아닌 경우 해당 바이트 단위의 주소값을 '1'증가시켜 다음 주소 영역을 선택한 후(스텝 S68), 해당되는 바이트 기록 명령을 내리는 스텝 S64로 귀환하여 반복 동작을 수행함으로써, 해당 플래시 메모리(32)에 다운로드 받은 수행 프로그램을 바이트 단위로 차례로 기록하여 갱신할 수 있게 된다.
한편, 스텝 S67에서 현재 바이트 기록된 주소가 수행 프로그램 영역의 마지막 주소인 경우 즉, 해당 플래시 메모리(32)의 수행 프로그램 영역 크기에 해당되는 모든 바이트 기록이 완료된 경우 해당 DRAM(33)에서의 플래시 메모리 기록 루틴이 종료되고, 해당 중앙처리장치(31)의 링크 포인터는 본래의 부팅 프로그램 영역으로 복귀됨으로써(스텝 S69), 해당 시스템을 재부팅시켜 갱신된 수행 프로그램을 실행할 수 있게 된다.
본 발명의 다른 실시예에 따른 라우터는 첨부한 도면 도 7에 도시한 바와 같이, 모든 동작을 제어 및 처리하는 중앙처리장치(71)와, 부팅 및 수행 프로그램을 공유하는 플래시 메모리(72)와, 중앙처리장치(71)에서 각종 프로토콜을 수행하기 위한 셋업 정보와 통계 정보 및 라우터 대한 구성 정보를 저장하는 구성 메모리(73)와, 구동 전원을 공급하는 전원 공급부(74)와, PC(Personal Computer) 등의 모니터에 연결되어 사용자나 관리자에게 필요한 메시지 및 관리 정보를 표시해 주는 콘솔부(75)와, LAN(Local Area Network)에 접속되어 데이터를 송수신하는 LAN 인터페이스부(76)와, 외부 통신망과 접속되어 데이터를 송수신하는 WAN(Wide Area Network) 인터페이스부(77)와, 기타 필요한 입력 및 출력 기능이 필요한 경우에 사용되는 입출력 인터페이스부(78)와, 플래시 메모리(72)에 저장된 수행 프로그램을 실행하고, 각 인터페이스부(76~78)를 통해 수신되는 데이터를 임시 저장하기 위한 DRAM(79)을 구비하여 이루어진다.
여기서, 해당 플래시 메모리(72)가 2Mbyte의 크기를 갖는 경우 해당 플래시 메모리(72)에 대한 어드레스 맵(Address Map)은 아래 표 1에 설명한 디바이스(Device)와 메모리 액세스를 위한 어드레스 맵과 같이, 16진수 '0x20000000'으로 시작하는 번지를 갖게 되고, 각각 64Kbyte의 크기를 갖는 총 32개의 섹터를 포함하며, 해당 섹터 '0~7'까지의 8개 섹터는 부팅 프로그램 영역으로 사용되고, 해당 섹터 '8~31'까지의 24개 섹터는 수행 프로그램 영역으로 사용된다.
시작 번지 디바이스 설 명
0x00000000 DRAM 수행 프로그램 실행용
0x10000000 구성 메모리 구성 및 통계 정보 저장용
0x20000000 플래시 메모리 부팅 프로그램 및 수행 프로그램 저장용
0x90000000 시스템 식별자 시스템 및 보드에 대한 정보 저장용
예약(Reserved) 예약(Reserved) 예약(Reserved)
또한, 해당 플래시 메모리(72)의 부팅 프로그램 영역 내부에는 부팅 및 진단 프로그램과, 각 인터페이스부를 활성화시켜 수행 프로그램을 다운로드 받는 부분과, 다운로드 이후에 플래시 메모리에 기록하기 위한 플래시 액세스 함수를 호출하는 부분과, 어셈블리 코드로 프로그램된 플래시 액세스 함수와, 실제 DRAM으로 이동되어 플래시 메모리 삭제 및 기록 루틴을 수행하는 부분으로 구성된다.
한편, 해당 라우터는 수행 프로그램 갱신시 LAN 인터페이스부(76)나 WAN 인터페이스부(77)를 통해 해당 수행 프로그램을 다운로드 받게 되고, 이후에 해당 수행 프로그램을 갱신하기 위한 플래시 메모리(72)의 수행 프로그램 삭제 및 기록 동작은 상술한 동작과 동일한 방법으로 수행된다.
여기서, 해당 플래시 메모리(72)의 수행 프로그램 삭제시 해당 플래시 메모리(72)의 부팅 프로그램이 저장된 섹터 '0~7'까지는 보호한 상태에서 섹터 '8~31'까지 삭제하고, 다운로드 받은 수행 프로그램을 바이트 단위로 해당 플래시 메모리(72)에 기록하기 위해 해당 플래시 메모리 삭제 및 기록 동작은 DRAM(79)에서 수행하게 된다.
또한, 본 발명에 따른 실시예는 상술한 것으로 한정되지 않고, 본 발명과 관련하여 통상의 지식을 가진자에게 자명한 범위내에서 여러 가지의 대안, 수정 및 변경하여 실시할 수 있다.
이상과 같이, 본 발명은 부팅 프로그램을 저장하기 위한 별도의 부트 메모리를 사용하지 않고, 해당 부팅 프로그램을 수행 프로그램이 저장되는 플래시 메모리에 공유하도록 해당 플래시 메모리를 분할 사용함으로써, 메모리 칩 숫자를 줄여 시스템의 크기를 줄일 수 있게 됨과 동시에 시스템 가격을 인하할 수 있게 되고, 이로 인해 해당 시스템의 외형도 수려하게 설계할 수 있게 된다.
또한, 본 발명은 부팅 프로그램과 수행 프로그램을 공유하는 플래시 메모리의 수행 프로그램 갱신시 부팅 프로그램 영역에 존재하는 플래시 메모리 삭제 및 기록 루틴을 DRAM으로 이동시켜 수행함으로써, 해당 부팅 프로그램을 보호한 상태에서 수행 프로그램만을 갱신할 수 있게 된다.

Claims (7)

  1. 소정 갯수의 섹터를 기준으로 부팅 및 진단 프로그램을 저장하기 위한 부팅 프로그램 영역과 갱신 가능한 수행 프로그램 영역으로 구분하되, 상기 부팅 프로그램 영역은 갱신될 수행 프로그램을 다운로드 받는 부분과, 다운로드 받은 수행 프로그램을 기록하는 플래시 액세스 함수를 호출하는 부분과, 어셈블리 코드로 프로그램된 플래시 액세스 함수와, DRAM으로 이동되어 플래시 메모리 삭제 및 기록 루틴을 수행하는 부분을 포함하는 것을 특징으로 하는 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리.
  2. 외부 시스템으로부터 갱신될 수행 프로그램을 다운로드 받는 과정과; 어셈블리 코드를 이용하여 플래시 메모리의 부팅 프로그램 영역에 존재하는 플래시 메모리 삭제 및 기록 루틴을 DRAM으로 이동시키는 과정과; 상기 DRAM으로 이동된 플래시 메모리 삭제 및 기록 루틴에 따라 상기 플래시 메모리의 수행 프로그램 영역에 대한 삭제 및 기록을 수행하여 해당되는 수행 프로그램을 갱신하는 과정을 포함하는 것을 특징으로 하는 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 갱신 방법.
  3. 제 2항에 있어서,
    상기 플래시 메모리 삭제 및 기록 루틴을 DRAM으로 이동시키기 전에 수행 프로그램 삭제 및 기록후에 링크 포인터가 부팅 프로그램 영역으로 복귀될 주소를 저장하는 과정을 더 포함하는 것을 특징으로 하는 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 갱신 방법.
  4. 제 2항에 있어서,
    상기 DRAM으로 이동된 플래시 메모리 삭제 및 기록 루틴에 따라 해당되는 수행 프로그램을 갱신하기 위해 링크 포인터를 상기 DRAM으로 이동된 플래시 메모리 삭제 및 기록 루틴의 시작번지로 이동시키는 과정과; 상기 수행 프로그램을 갱신한 후에 상기 부팅 프로그램 영역으로 링크 포인터를 복귀시키는 과정을 더 포함하는 것을 특징으로 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 갱신 방법.
  5. 제 2항에 있어서,
    상기 플래시 메모리의 수행 프로그램을 갱신하는 과정은, 상기 DRAM으로 이동된 플래시 메모리 삭제 루틴에 따라 상기 수행 프로그램 영역을 섹터 단위로 삭제하는 단계와; 상기 DRAM으로 이동된 플래시 메모리 기록 루틴에 따라 상기 수행프로그램 영역에 다운로드 받은 수행 프로그램을 바이트 단위로 기록하는 단계를 더 포함하는 것을 특징으로 하는 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 갱신 방법.
  6. 제 5항에 있어서,
    상기 수행 프로그램 영역을 섹터 단위로 삭제하는 단계는, 상기 플래시 메모리 삭제 루틴에 따라 수행 프로그램 영역의 섹터 삭제 명령을 내리는 단계와; 데이터 폴링 방법을 이용하여 상기 섹터 삭제가 완료되었는지를 확인하는 단계와; 섹터 삭제가 완료된 경우 다음 섹터를 선택하여 상기 수행 프로그램 영역의 마지막 섹터가 삭제되기까지 섹터 삭제를 반복하는 단계를 더 포함하는 것을 특징으로 하는 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 갱신 방법.
  7. 제 5항에 있어서,
    상기 수행 프로그램 영역에 다운로드 받은 수행 프로그램을 바이트 단위로 기록하는 단계는, 상기 플래시 메모리 기록 루틴에 따라 수행 프로그램의 바이트 기록 명령을 내리는 단계와; 데이터 폴링 방법을 이용하여 상기 바이트 기록이 완료되었는지를 확인하는 단계와; 바이트 기록이 완료된 경우 바이트 단위의 다음 주소 영역을 선택하여 상기 수행 프로그램 영역의 마지막 주소가 기록되기까지 상기수행 프로그램의 바이트 기록을 반복하는 단계를 더 포함하는 것을 특징으로 하는 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시 메모리 갱신 방법.
KR1019990057536A 1999-12-14 1999-12-14 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시메모리 및 그 메모리 갱신 방법 KR100316584B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019990057536A KR100316584B1 (ko) 1999-12-14 1999-12-14 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시메모리 및 그 메모리 갱신 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990057536A KR100316584B1 (ko) 1999-12-14 1999-12-14 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시메모리 및 그 메모리 갱신 방법

Publications (2)

Publication Number Publication Date
KR20010056103A true KR20010056103A (ko) 2001-07-04
KR100316584B1 KR100316584B1 (ko) 2001-12-12

Family

ID=19625708

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990057536A KR100316584B1 (ko) 1999-12-14 1999-12-14 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시메모리 및 그 메모리 갱신 방법

Country Status (1)

Country Link
KR (1) KR100316584B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100572668B1 (ko) * 2004-06-11 2006-04-24 에스케이 텔레콤주식회사 모바일 상거래 어플리케이션의 단말 메모리 분할 탑재 방법
US7533253B2 (en) 2004-09-23 2009-05-12 Samsung Electronics Co., Ltd. System and method for fetching a boot code
US9025366B2 (en) 2012-10-10 2015-05-05 Samsung Electronics Co., Ltd. Main memory system storing operating system program and computer system including the same
CN117170753A (zh) * 2023-08-18 2023-12-05 新汽有限公司 程序处理方法、程序处理装置、车辆和存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100572668B1 (ko) * 2004-06-11 2006-04-24 에스케이 텔레콤주식회사 모바일 상거래 어플리케이션의 단말 메모리 분할 탑재 방법
US7533253B2 (en) 2004-09-23 2009-05-12 Samsung Electronics Co., Ltd. System and method for fetching a boot code
US9025366B2 (en) 2012-10-10 2015-05-05 Samsung Electronics Co., Ltd. Main memory system storing operating system program and computer system including the same
CN117170753A (zh) * 2023-08-18 2023-12-05 新汽有限公司 程序处理方法、程序处理装置、车辆和存储介质
CN117170753B (zh) * 2023-08-18 2024-04-09 新汽有限公司 程序处理方法、程序处理装置、车辆和存储介质

Also Published As

Publication number Publication date
KR100316584B1 (ko) 2001-12-12

Similar Documents

Publication Publication Date Title
US6148441A (en) Method for reprogramming flash ROM in a personal computer implementing an EISA bus system
US5933846A (en) Rewritable ROM file device having read/write buffer access control via copy of rewritable area
US5802549A (en) Method and apparatus for patching pages of ROM
JP4668416B2 (ja) ブート・ブロックへの書き込みアクセスを可能にする時のブート・ブロック・コードの保護
US7089549B2 (en) Updating flash memory
KR100388949B1 (ko) 기록 시 판독 동작을 위한 플래시 메모리 분할
US6745278B2 (en) Computer capable of rewriting an area of a non-volatile memory with a boot program during self mode operation of the computer
US7383431B2 (en) Control system and method for rewriting data in a flash memory and a data storage medium in which a program is stored for rewriting data in a flash memory
EP0402683A2 (en) Method and apparatus for updating firmware resident in an electrically erasable programmable read-only memory
KR101555210B1 (ko) 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치
JP2002099441A (ja) 通信端末装置及び通信端末装置の動作方法
US5940627A (en) User selectable feature set for a flash ROM based peripheral
JP2000293367A (ja) 不揮発性メモリ内蔵マイクロコンピュータ
KR100316584B1 (ko) 시스템에서 부팅 및 수행 프로그램을 공유하는 플래시메모리 및 그 메모리 갱신 방법
JPH113287A (ja) 記憶装置およびそれに用いられる記憶領域管理方法
US6301709B1 (en) Circuit pack system with semi-or fully-automatic upgrade capability
KR19980054349A (ko) 옵션 자동 설정 회로
KR20000033437A (ko) 부트스트랩로더 기능 구현 장치
US6314482B1 (en) Method and system for indexing adapters within a data processing system
KR100622816B1 (ko) 이동 단말장치의 시스템 소프트웨어 업데이트 방법 및시스템
KR100308251B1 (ko) 실행시간백업정보의통합관리방법및그시스템
CN113495746A (zh) 一种程序升级方法、装置、介质和电子设备
KR19990077915A (ko) 이중 운영 시스템을 가지는 컴퓨터 시스템
CN113448644A (zh) 操作系统ring3模式OC硬盘配置方法、装置、终端及存储介质
CN117687667A (zh) 固件更新方法、装置、终端设备及存储介质

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: 20081031

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee