KR100465610B1 - 온-칩 프로그래밍 능력을 가지는 내장된 플래시 메모리를 구비한 마이크로컴퓨터 및 상기 내장된 플래시 메모리에 데이터를프로그램하는 방법 - Google Patents

온-칩 프로그래밍 능력을 가지는 내장된 플래시 메모리를 구비한 마이크로컴퓨터 및 상기 내장된 플래시 메모리에 데이터를프로그램하는 방법 Download PDF

Info

Publication number
KR100465610B1
KR100465610B1 KR10-1998-0029724A KR19980029724A KR100465610B1 KR 100465610 B1 KR100465610 B1 KR 100465610B1 KR 19980029724 A KR19980029724 A KR 19980029724A KR 100465610 B1 KR100465610 B1 KR 100465610B1
Authority
KR
South Korea
Prior art keywords
flash memory
microprocessor unit
block
memory unit
unit
Prior art date
Application number
KR10-1998-0029724A
Other languages
English (en)
Other versions
KR20000009368A (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 KR10-1998-0029724A priority Critical patent/KR100465610B1/ko
Publication of KR20000009368A publication Critical patent/KR20000009368A/ko
Application granted granted Critical
Publication of KR100465610B1 publication Critical patent/KR100465610B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Stored Programmes (AREA)
  • Microcomputers (AREA)

Abstract

내장된 플래시 메모리를 구비한 마이크로컴퓨터가 제공되며, 외부 재프로그래밍 도구들을 사용할 필요 없이, 새로운 데이터가 상기 마이크로컴퓨터 자체를 통해서 상기 내장된 플래시 메모리에 재프로그램되게 하는 온-칩 프로그래밍 능력을 가진다. 게다가, 상기 마이크로컴퓨터의 상기 내장된 플래시 메모리에 데이터를 프로그래밍하는 방법이 제공된다. 상기 마이크로컴퓨터는 마이크로프로세서 유니트, 내장된 플래시 메모리 유니트, 레지스터 세트, 그리고 버스 멀티플렉서를 포함한다. 상기 내장된 플래시 메모리 유니트는 로더 프로그램을 저장하는 로더 블록과 적어도 하나의 응용 프로그램을 저장하는 유저 블록으로 분할된다. 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 프로그램될 상기 새로운 데이터는 먼저 상기 레지스터 세트에 전달되고 저장된다. 바람직한 플래시 메모리 유니트에서, 상기 로더 블록 및 상기 유저 블록 중 하나만이 액티브 동작 상태에 있고, 상기 마이크로프로세서 유니트에 의해서 제어된다. 상기 마이크로컴퓨터는 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 저장된 구데이터 (old data)를 갱신 또는 바꿀 수 있게 하는 온-칩 프로그래밍을 더 쉽게 그리고 저렴하게, 그리고 외부 재프로그래밍 도구들을 사용할 필요 없이 가능하게 한다.

Description

온-칩 프로그래밍 능력을 가지는 내장된 플래시 메모리를 구비한 마이크로컴퓨터 및 상기 내장된 플래시 메모리에 데이터를 프로그램하는 방법{MICROCOMPUTER WITH EMBEDDED FLASH MEMORY HAVING ON-CHIP PROGRAMMING CAPABILITY AND METHOD OF PROGRAMMING DATA INTO THE EMBEDDED FLASH MEMORY}
본 발명은 내장된 플래시 메모리를 구비한 마이크로컴퓨터들에 관한 것으로서, 구체적으로 외부 프로그래밍 도구들을 사용할 필요 없이 마이크로컴퓨터 자체를 통해서 재프로그램될 수 있는 내장된 플래시 메모리를 구비한 마이크로컴퓨터에 관한 것이다. 더욱이, 본 발명은 상기 마이크로컴퓨터의 내장된 플래시 메모리에 데이터를 프로그램하는 방법에 관한 것이다.
마이크로컴퓨터 (microcomputer)는 완전한 마이크로컴퓨터 유니트 (complete microcomputer unit)와 내장된 플래시 메모리 유니트를 가지는 단일의 집적 회로 (monolithic integrated circuit)이다. 상기 완전한 마이크로컴퓨터는 "칩 상의 컴퓨터" (computer on a chip)로서 여겨질 수 있고, 그것은 크기에 있어서 매우 콤팩트하고 기능 면에서 고집적된다. EEPROM (electrically erasable and programmable read-only memory)와 달리, 마이크로컴퓨터에 내장된 플래시 메모리는 자외선을 사용하지 않고 재프로그램될 수 있다. 플래시 메모리는 그러므로 마이크로프로세서들에 내장된 메모리로서 사용하기 위한 EEPROM보다 더 대중적이다.
일반적으로, 데이터는 외부 프로그래밍 도구들을 사용하여 마이크로컴퓨터의 내장된 플래시 메모리에 프로그램되고 상기 마이크로컴퓨터 자체에 의해서 직접 수행될 수 없다. 그러므로, 버그들이 발견되거나 새로운 기능들이 추가되어야 하는 경우에 있어서, 상기 내장된 플래시 메모리에 이전에 프로그램된 프로그램 코드들을 갱신하거나 바꾸는 것이 매우 불편하다.
종래의 몇몇 설계들에 있어서, 상기 마이크로프로세서 및 상기 마이크로컴퓨터 내에 내장된 플래시 메모리는 상기 마이크로컴퓨터가 온-라인 프로그래밍 능력을 갖도록 동일한 칩에 집적되기보다는 오히려 분리된다. 이 설계 스킴을 구현하기 위해서는, 그러나, 추가적인 제어 회로 및 외부 메모리 유니트가 요구된다. 이는 상기 마이크로컴퓨터의 전반적인 시스템 구조가 더 복잡하게, 크기 면에서 매우 크게, 그리고 집적도 면에서 낮게 한다. 그러한 마이크로컴퓨터는 제조하기에 더 어렵고 그에 따라 매우 비싸다.
도 1은 내장된 플래시 메모리를 구비한 종래의 마이크로컴퓨터의 기본적인 구성을 보여주는 개략적인 블록도이다. 도시된 바와 같이, 마이크로컴퓨터는 마이크로프로세서 유니트 (110)와 버스 (120)를 통해서 상기 마이크로프로세서 유니트 (110)에 연결된 내장된 플래시 메모리 (130)의 뱅크를 포함한다. 상기 내장된 플래시 메모리 (130)는 특정 목적들을 위해서 상기 마이크로프로세서 유니트 (110)에 의해서 수행될 프로그램들을 저장하도록 사용된다. 이 마이크로컴퓨터 구성에서의 한 가지 결점은, 그러나, 상기 마이크로컴퓨터가 단지 하나의 내장된 플래시 메모리 뱅크를 포함한다는 것이며, 이는 만약 마이크로컴퓨터가 온-칩 프로그래밍 처리를 적절하게 수행하기 위한 것이라면 불충분하다. 이는 상기 온-칩 프로그래밍 프로세스 동안에, 상기 마이크로프로세서 유니트 (110)가 상기 내장된 플래시 메모리 (130)의 기입 및 독출 동작들 모두를 수행해야만 하기 때문이며, 단지 하나의 내장된 플래시 메모리 뱅크를 제공함으로 인해서 상기 마이크로컴퓨터는 효율적인 방법으로 이를 수행하지 못한다.
상기 마이크로컴퓨터가 온-칩 프로그래밍 능력을 가지게 하기 위한 종래의 해결책은 상기 내장된 플래시 메모리에 데이터를 로딩하는 것을 제어하기 위해 사용되는 로더 프로그램 (loader program)을 저장하기 위해서 상기 마이크로컴퓨터 내에 추가적인 ROM (read-only memory) 유니트를 제공하는 것이다. 이 설계 스킴은, 그러나, 두 가지의 다른 반도체 메모리 구조들, 즉, 플래시 메모리 구조 및 ROM 구조, 그리고 상기 마이크로컴퓨터의 IC 칩 내에 상기 플래시 메모리 및 상기 ROM을 위한 두 가지의 다른 주변 회로들의 제조를 각각 요구한다. 이는 마이크로컴퓨터의 설계 및 제조 모두를 수행하기에 상당히 더 어렵게 만든다.
결국, 도 1의 종래 기술은 아래의 결점들을 가진다.
(1) 먼저, 종래 기술은 단지 하나의 내장된 플래시 메모리를 포함하기 때문에, 이는 마이크로컴퓨터가 상기 내장된 플래시 메모리에 새로운 데이터를 프로그램하는 온-칩 프로그래밍 능력을 가지지 못하게 한다. 대신에, 온-칩 프로그래밍 프로세스는 외부 프로그래밍 도구의 사용을 요구하며, 이는 마이크로컴퓨터의 사용에 관해서, 불편하고 그리고 비용 면에서 비효율적이다.
(2) 둘째로, 상기 마이크로컴퓨터가 온-칩 프로그래밍 능력을 가지게 하기 위해서, 상기 마이크로컴퓨터 내의 상기 마이크로프로세서 유니트 및 상기 내장된 플래시 메모리가 동일한 칩에 집적되기보다는 오히려 분리되어야 하고 적절한 동작을 위해서 각각의 주변 회로들을 요구한다. 이는 낮은 집적도, 큰 사이즈, 그리고 값비싼 구현의 원인이 된다.
(3) 셋째로, 비록 온-칩 프로그래밍 능력이 상기 마이크로컴퓨터 내에 상기 로더 프로그램을 저장하기 위한 추가적인 ROM 유니트를 구현함으로써 구비될 수 있더라도, 그럼에도 불구하고 이는 낮은 집적도, 큰 사이즈, 그리고 값비싼 구현의 원인이 된다. 더욱이, 개발자들에 의해서 수행되기에는, 설계 및 디버깅 (debugging) 모두가 더욱 어렵다.
따라서 본 발명의 목적은 내장된 플래시 메모리에 새로운 데이터의 재프로그래밍이 마이크로컴퓨터 자체를 통해서 그리고 외부 프로그래밍 도구들을 사용할 필요 없이 수행되도록 하는 온-칩 프로그래밍 능력을 가지는 내장된 플래시 메모리를 구비한 마이크로컴퓨터를 제공하는 것이다.
본 발명의 다른 목적은 로더 프로그램이 내장된 플래시 메모리에의 데이터 프로그램을 제어하도록 마이크로컴퓨터의 마이크로프로세서 유니트에 의해서 수행될 수 있는 응용 프로그램들 및 로더 프로그램을 각각 저장하기 위해서 사용되는 두 개의 플래시 메모리 블록들을 포함하는 상기 내장된 플래시 메모리를 구비한 마이크로컴퓨터를 제공하는 것이다.
본 발명의 또 다른 특징은 외부 프로그래밍 도구를 사용할 필요 없이, 개발자가 개발 동안에 또는 판매 후에 아무 때나 마이크로컴퓨터의 내장된 플래시 메모리에 갱신된 또는 새로운 데이터를 프로그램하게 하는 상기 내장된 플래시 메모리를 구비한 마이크로컴퓨터를 제공하는 것이다.
본 발명의 또 다른 특징은 내장된 플래시 메모리를 구비한 마이크로컴퓨터를 제공하는 것이며, 상기 마이크로컴퓨터의 구성은 상기 마이크로컴퓨터가 더 작은 레이 아웃 면적으로 실현될 수 있도록 함으로써 고집적, 소형, 그리고 저렴한 구현의 이점들이 되며, 이는 또한 상기 마이크로컴퓨터가 설계 및 디버깅하기에 더 쉽게 한다.
(구성)
상술한 바와 같은 목적을 달성하기 위한 본 발명의 일 특징에 의하면, 내장된 플래시 메모리를 구비한 마이크로컴퓨터의 새로운 구조가 제공된다. 본 발명의 상기 마이크로컴퓨터는 마이크로프로세서 유니트, 내장된 플래시 메모리 유니트, 레지스터 세트, 그리고 버스 멀티플렉서를 포함한다. 이러한 구성 요소들은 데이터 버스를 통해서 서로 연결된다.
상기 마이크로컴퓨터는 마이크로프로세서 유니트, 내장된 플래시 메모리 유니트, 레지스터 세트, 그리고 버스 멀티플렉서를 포함한다. 상기 내장된 플래시 메모리 유니트는 로더 프로그램을 저장하는 로더 블록과 적어도 하나의 응용 프로그램을 저장하는 유저 블록으로 분할된다. 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 프로그램될 상기 새로운 데이터는 먼저 상기 레지스터 세트에 전달되고 저장된다. 바람직한 플래시 메모리 유니트에서, 상기 로더 블록 및 상기 유저 블록 중 하나만이 액티브 동작 상태에 있고, 상기 마이크로프로세서 유니트에 의해서 제어된다. 게다가, 상기 버스 멀티플렉서는 상기 마이크로프로세서 유니트로부터의 버스 선택 신호에 의해서 제어되어 상기 메모리 선택 신호에 의해서 결정된 상기 로더 블록 또는 상기 유저 블록 중 어느 하나든지 상기 내장된 플래시 메모리 유니트의 액티브 블록을 상기 마이크로프로세서 유니트와 상기 레지스터 세트 중 어느 하나로 선택적으로 연결한다. 상기 마이크로프로세서 유니트는 프리세트 시간이 경과할 때 인터럽트 신호를 발생하는 타이머를 포함한다. 상기 마이크로프로세서 유니트는 유휴 모드로 동작하며, 상기 유휴 모드에서 상기 마이크프로세서 유니트는 임시적으로 동작을 중지한다.
본 발명에 따르면, 두 개의 바람직한 실시예들이 게재된다.
바람직한 제 1 실시예에 따르면, 본 발명의 마이크로컴퓨터는 다음의 구성 요소들을 포함한다: 내장된 플래시 메모리, 마이크로프로세서 유니트, 레지스터 세트, 그리고 버스 멀티플렉서. 상기 내장된 플래시 메모리 유니트는 로더 프로그램을 저장하는 로더 블록과 상기 로더 블록과 동일한 시작 어드레스를 가지고, 적어도 하나의 응용 프로그램을 저장하는 유저 블록 : 적어도 두 개의 블록들로 분할된다. 상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트에 연결되고, 프리세트 시간이 경과할 때 인터럽트 신호를 발생할 수 있는 타이머를 포함한다. 상기 레지스터 세트는 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 프로그램될 데이터를 임시적으로 저장한다. 상기 버스 멀티플렉서는 상기 마이크로프로세서 유니트, 상기 내장된 플래시 메모리 유니트, 그리고 상기 레지스터 세트 사이에 연결되고, 상기 마이크로프로세서 유니트에 의해서 발생된 버스 선택 신호에 응답해서 상기 마이크로프로세서 유니트와 상기 레지스터 세트 중 어느 하나에 상기 내장된 플래시 메모리 유니트를 선택적으로 연결한다.
데이터 재프로그래밍 프로세스가 전술한 마이크로컴퓨터에서 수행될 때, 상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트의 상기 로더 블록을 액티브 블록으로서 선택한다. 그 동안에, 상기 마이크로프로세서 유니트는 상기 버스 멀티플렉서에 명령하여 상기 내장된 플래시 메모리 유니트의 상기 로더 블록을 상기 마이크로프로세서 유니트에 연결하며, 이는 상기 마이크로프로세서 유니트가 상기 내장된 플래시 메모리 유니트의 로더 블록에 저장된 로더 프로그램을 페치하고 실행하게 한다.
상기 데이터 재프로그래밍 프로세스 동안에, 먼저 상기 입력된 데이터는 상기 레지스터 세트에 전달되고 임시적으로 저장되고 상기 내장된 플래시 메모리 유니트의 유저 블록에 한 블록의 데이터를 기입하기 위해서 요구되는 시간이 상기 마이크로프로세서 유니트의 상기 타이머에 설정되게 사용된다. 계속해서, 상기 마이크로프로세서 유니트는 유휴 모드 (idle mode)로 전환되고 그 다음에 상기 내장된 플래시 메모리 유니트의 상기 유저 블록을 상기 액티브 블록으로서 선택한다. 그 동안에, 상기 마이크로프로세서 유니트는 상기 버스 멀티플렉서에 명령하여 상기 내장된 플래시 메모리 유니트의 상기 유저 블록을 상기 레지스터 세트에 연결하며, 이는 상기 레지스터 세트에 현재 저장된 데이터가 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 전달되고 기입되게 한다. 상기 프리세트 시간이 경과할 때, 상기 타이머는 인터럽트 신호를 발생한다. 상기 인터럽트 신호는 상기 마이크로프로세서 유니트가 상기 유휴 모드로부터 빠져나오게 그리고 동작을 재개하게 한다.
바람직한 제 2 실시예에 따르면, 본 발명의 마이크로컴퓨터는 다음의 구성 요소들을 포함한다: 내장된 플래시 메모리 유니트, 마이크로프로세서 유니트, 레지스터 세트 및 버스 멀티플렉서를 포함한다. 상기 내장된 플래시 메모리 유니트는 적어도 두 개의 블록들 즉, 로더 프로그램을 저장하는 로더 블록과 상기 로더 블록의 마지막 어드레스 후에 즉시 따라오는 시작 어드레스를 가지고, 적어도 하나의 응용 프로그램을 저장하는 유저 블록으로 분할된다. 상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트에 연결되고, 타이머가 가동되고 프리세트 시간이 경과할 때 인터럽트 신호를 발생할 수 있는 상기 타이머를 포함한다. 상기 레지스터 세트는 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 프로그램될 데이터를 임시적으로 저장한다. 상기 버스 멀티플렉서는 상기 마이크로프로세서 유니트, 상기 내장된 플래시 메모리 유니트, 그리고 상기 레지스터 세트 사이에 연결되고, 상기 마이크로프로세서 유니트에 의해서 발생된 버스 선택 신호에 응답해서 상기 마이크로프로세서 유니트와 상기 레지스터 세트 중 어느 하나에 상기 내장된 플래시 메모리 유니트를 선택적으로 연결한다.
상기 바람직한 제 1 실시예에서, 상기 로더 블록 및 상기 유저 블록은 동일한 시작 어드레스를 가지고 상기 액티브 블록으로서 상기 마이크로프로세서 유니트로부터의 상기 메모리 선택 신호에 의해서 선택적으로 전환된다. 상기 바람직한 제 2 실시예에 있어서, 그러나, 상기 로더 블록 및 상기 유저 블록은 어드레스에서 연속적으로 연결 즉, 상기 유저 블록의 시작 어드레스가 상기 로더 블록의 마지막 어드레스 다음에 즉시 온다.
바람직한 실시예들 모두에서, 상기 레지스터 세트는 상기 내장된 플래시 메모리 유니트의 유저 블록에 프로그램될 상기 데이터를 저장하는 데이터 레지스터, 상기 내장된 플래시 메모리 유니트의 유저 블록에 프로그램될 상기 데이터의 관련된 어드레스들을 저장하는 어드레스 레지스터 및 상기 내장된 플래시 메모리 유니트의 유저 블록에 상기 데이터의 프로그래밍에 관련된 상기 제어 명령들을 저장하는 제어 레지스터를 포함한다.
게다가, 본 발명은 마이크로프로세서 유니트 및 내장된 플래시 메모리를 가지며 상기 내장된 플래시 메모리 유니트에 일련의 새로운 데이터를 프로그램하기 위한 데이터 재프로그래밍 프로세서를 수행하는 마이크로컴퓨터에서 사용하기 위한 방법을 제공한다.
본 발명의 상기 방법은:
(1) 상기 내장된 플래시 메모리 유니트를 로더 프로그램을 저장하는 로더 블록과 적어도 하나의 응용 프로그램을 저장하는 유저 블록으로 분할하는 단계와;
(2) 상기 마이크로프로세서 유니트를 프로그래밍 모드로 전환하는 단계와;
(3) 상기 내장된 플래시 메모리 유니트의 상기 로더 블록에 저장된 로더 프로그램을 실행하는 단계와;
(4) 상기 내장된 플래시 메모리 유니트에 새로운 데이터를 프로그래밍하는 것에 관련된 파라미터들을 설정하는 단계와;
(5) 상기 새로운 데이터 중 한 블록을 받아들이는 단계와;
(6) 상기 내장된 플래시 메모리 유니트의 유저 블록에 현재 입력된 블록의 데이터를 기입하는 단계 및;
(7) 상기 새로운 데이터의 모든 블록들이 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 프로그램되었는 지의 여부를 점검하여, 만약 프로그램되지 않았으면, 상기 단계 (5)로 진행하는 단계를 포함한다.
본 발명의 방법은 데이터 재프로그래밍 프로세서의 요구가 입력되었는 지의 여부를 점검하는 단계를 부가적으로 포함하며; 만약 입력되지 않았으면, 상기 마이크로프로세서 유니트에 명령하여 상기 내장된 플래시 메모리 유니트의 유저 블록에 저장된 상기 응용 프로그램을 실행한다.
상기 단계 (5)는 상기 새로운 데이터 및 상기 새로운 데이터와 관련된 어드레스 값들을 레지스터 세트에 기입하는 서브단계를 포함한다. 상기 새로운 데이터는 먼저 상기 마이크로프로세서 유니트의 I/O 포트를 통해서 입력되고 그 다음에 상기 레지스터 세트로 전달된다.
게다가, 본 발명의 방법은 상기 내장된 플래시 메모리 유니트의 유저 블록에 한 블록의 데이터를 프로그램하기 위해서 요구되는 시간을 점검하는 단계 및; 상기 시간으로 상기 마이크로프로세서 유니트 내의 타이머를 설정하고, 상기 타이머가 가동된 후 프리세트 시간이 경과할 때 상기 타이머는 상기 마이크로프로세서 유니트에 인터럽트 신호를 발생할 수 있는 단계를 포함한다.
상기 마이크로프로세서 유니트를 상기 프로그래밍 모드로 전환하는 상기 단계 (2)는,
상기 프로그래밍 모드를 초기화하는 단계와;
상기 내장된 플래시 메모리 유니트의 유저 블록으로 한 블록의 데이터를 프로그램하기 위해서 요구되는 시간으로 상기 타이머를 설정하는 단계와;
상기 타이머는 상기 타이머가 가동된 후 상기 프리세트 시간이 경과할 때 인터럽트 신호를 발생할 수 있으며;
상기 타이머를 가동시키는 단계와;
상기 마이크로프로세서 유니트를 유휴 모드로 전환하는 단계와;
상기 타이머로부터의 상기 인터럽트 신호를 받아들일 때, 상기 마이크로프로세서 유니트를 상기 유휴 모드로부터 빠져나오게 하는 단계와;
상기 타이머를 정지시키는 단계 및;
상기 마이크로프로세서 유니트의 인터럽트 기능을 비활성화시키는 단계의 서브단계들을 포함한다.
게다가, 본 발명의 방법은 파라미터들을 설정하는 단계 (4) 이전에, 상기 프로그래밍 모드가 이미 진입되었는 지의 여부를 점검하는 단계를 부가적으로 포함하며, 만약 진입되지 않았으면, 상기 프로그래밍 모들 재설정한다.
데이터를 기입하는 단계 (6)는,
상기 마이크로프로세서 유니트의 상기 인터럽트 기능을 가능하게 하는 단계와;
상기 타이머를 가동시키는 단계와;
상기 마이크로프로세서 유니트를 유휴 모드로 전환하는 단계와;
상기 레지스터 세트에 현재 저장된 데이터를 상기 내장된 플래시 메모리 유니트의 유저 블록으로 전달하고, 그 다음에 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 상기 데이터를 기입하는 단계와;
상기 타이머로부터의 상기 인터럽트 신호를 받아들일 때, 상기 마이크로프로세서 유니트를 상기 유휴 모드로부터 빠져나오게 하는 단계와;
상기 타이머를 중지시키는 단계 및;
상기 마이크로프로세서 유니트의 상기 인터럽트 기능을 비활성화시키는 단계의 서브단계들을 포함한다.
이후, 절차는 다음 블록의 데이터를 받아들이고 기입하는 메인 프로그램으로 돌아가고, 만약 있다면, 상기 내장된 플래시 메모리 유니트의 유저 블록으로 돌아간다.
(작용)
이와 같은 장치 및 방법에 의해서, 로더 블록과 유저 블록이 동일한 내장된 플래시 메모리 유니트에서 분리되고, 상기 로더 블록은 상기 로더 프로그램을 저장하기 위해서 추가적인 ROM 유니트를 사용할 필요 없이, 상기 로더 프로그램을 저장하기 위해서 사용된다. 상기 로더 블록 및 상기 유저 블록은 I/O 기능들을 위해서 상기 내장된 플래시 메모리의 동일한 I/O 회로를 공유하기 때문에, 전반적인 회로 구조가 상당히 덜 복잡하다. 이는 고집적, 작은 칩 사이즈, 그리고 저렴한 구현을 가능하게 한다. 게다가 설계 및 디버깅들 모두가 개발자에 의해서 쉽게 수행된다.
(실시예)
도 2는 본 발명에 따른 내장된 플래시 메모리를 구비한 마이크로컴퓨터의 기본적인 구성을 보여주는 개략적인 블록도이다. 도시된 바와 같이, 본 발명의 마이크로컴퓨터는 마이크로프로세서 (210)와 데이터 버스 (220)를 통해서 상기 마이크로프로세서 유니트 (210)에 연결된 내장된 플래시 메모리 유니트 (230)를 포함한다. 본 발명에 따르면, 상기 내장된 플래시 메모리 유니트 (230)는 두 개의 블록들 : 로더 블록 (231) 및 유저 블록 (232)으로 나눠진다. 상기 로더 블록 (231)은 데이터 로딩 기능을 수행하도록 사용되는 로더 프로그램을 저장하기 위해서 사용되는 반면에, 상기 유저 블록 (232)은 마이크로컴퓨터에 기능적으로 특정한 여러 가지 응용 프로그램들을 저장하기 위해서 사용된다.
상기 마이크로컴퓨터가 가동될 때, 그것은 상기 마이크로컴퓨터에 연결된 시스템에 특정 기능들을 제공하기 위해서 상기 유저 블록 (232)에 저장된 응용 프로그램들을 실행한다. 상기 마이크로컴퓨터가 상기 내장된 플래시 메모리 유니트 (230)의 유저 블록 (232)에 새로운 데이터를 프로그램하기 위한 데이터 재프로그램 프로세스를 수행하기 위해서 외부로부터 발생된 리퀘스트 (request)를 받을 때, 그것은 먼저 상기 로더 블록 (231)에 저장된 로더 프로그램을 실행하도록 상기 내장된 플래시 메모리 유니트 (230)의 로더 블록 (231)에 상기 데이터 버스 (220)를 연결하고, 그 다음에 상기 유저 블록 (232) 내의 구 데이터 (old data)가 소거되고, 그리고 그 다음에 새로운 데이터가 상기 유저 블록 (232)에 기입된다. 이후에, 상기 마이크로컴퓨터 유니트 (210)는 상기 유저 블록 (232)에 상기 데이터 버스 (220)를 재 연결하며, 이는 상기 마이크로프로세서 유니트 (210)가 상기 유저 블록 (232)에 새롭게 저장된 새로운 프로그램 코드를 실행하도록 한다.
종래의 마이크로컴퓨터들에 있어서, 하나의 기입 명령을 실행하기 위해서 요구되는 시간은 일반적으로 상기 내장된 플래시 메모리에 한 블록의 데이터를 프로그램하기 위해서 요구되는 시간보다 훨씬 더 짧다. 그러므로, 하나의 기입 명령의 실행 사이클 내에 상기 내장된 플래시 메모리에 데이터를 프로그램하는 것을 마치는 것은 불가능하다. 예를 들면, 40 MHz 마이크로프로세서에 있어서, 그것은 다음의 명령을 실행하기 위해서 두 번의 명령 사이클들을 필요로 한다:
MOVX @DPTR, A
한 번의 명령 사이클은 12번의 클럭 주기들과 동일하다. 그러므로, 상기의 명령을 실행하기 위해서 12*2*25=600 ns(nanosecond)가 걸린다. 게다가, 상기 내장된 플래시 메모리에 바이트의 데이터를 각각 프로그램하기 위해서 약 150 ㎲ (microsecond)이 요구되기 때문에, 상기 마이크로컴퓨터는 여전히 하나의 명령 사이클 내에서 데이터 재프로그램 프로세스를 완료할 수 없다. 상기 내장된 플래시 메모리 내에 저장된 프로그램 코드는 상기 데이터 재프로그램 프로세스가 완료될 때까지 액세스될 수 있다. 그러므로, 상기 마이크로프로세서 유니트는 상기 프로그래밍 프로세스가 완료될 때까지 정지한다. 상기 프로그래밍 프로세스가 완료된 후, 상기 마이크로프로세서 유니트는 그 다음에 상기 다음 임무를 수행하기 위해서 상기 내장된 플래시 메모리의 다음 명령을 액세스할 수 있다.
(제 1 실시예)
도 3은 본 발명에 따른 제 1 바람직한 실시예의 마이크로컴퓨터의 상세 구성을 보여주는 개략적인 블록도이다. 도시된 바와 같이, 본 실시예의 마이크로컴퓨터는 마이크로프로세서 유니트 (310) (도 2에 도시된 마이크로프로세서 유니트 210), 데이터 버스 (320), 내장된 플래시 메모리 유니트 (330) (도 2에 도시된 내장된 플래시 메모리 유니트 230), 레지스터 세트 (340), 그리고 버스 멀티플렉서 (350)를 포함한다.
상기 마이크로프로세서 유니트 (310)는 게다가 I/0 포트 (360), 타이머 (370), 메모리 선택 신호 (MSEL)를 출력하는 출력 포트 (MSEL), 그리고 버스 선택 신호 (BSEL)를 출력하는 출력 포트 (BSEL)를 포함한다. 상기 I/O 포트 (360)는 상기 마이크로컴퓨터에 프로그램될 새로운 데이터 (DAT)의 열을 받아들이기 위해서 사용된다. 상기 내장된 플래시 메모리 유니트 (330)는 로더 블록 (loader block) (331)과 유저 블록 (user block) (332)으로 나눠지고, 상기 로더 블록 (331)과 상기 유저 블록 (332)은 I/O 기능들을 위한 공통의 I/O 회로 (333)를 공유한다. 상기 레지스터 세트 (340)는 데이터 레지스터 (341), 어드레스 레지스터 (342), 그리고 제어 레지스터 (343)를 포함한다.
상기 내장된 플래시 메모리 유니트 (330)에서, 상기 I/O 회로 (333)는 어드레스 디코더 (address decoder), 챠지 펌퍼 (charge pumper), 그리고 제어 로직 회로 (control logic circuit) (모두 미도시됨)를 포함하며, 그것들은 상기 IC 칩 레이 아웃에서 상당히 큰 면적을 차지한다. 그러므로, 전반적인 칩 사이즈를 작게 하기 위해서, 상기 I/O 회로 (333)는 상기 로더 블록 (331)과 상기 유저 블록 (332)이 상기 마이크로컴퓨터의 다른 구성 요소들과 함께 I/O 기능들을 위해서 상기 I/O 회로를 공유하도록 하는 그러한 방법으로 설계된다. 이 바람직한 실시예에 있어서, 상기 로더 블록 (331)의 시작 어드레스 (starting address)와 상기 유저 블록 (332)의 시작 어드레스는 동일한 값, 예를 들면, 00h이다. 다시 말해서, 상기 로더 블록 (331)과 상기 유저 블록 (332)은 시간-공유 방법으로 동작하고, 그것들 중 어느 하나가 실질적으로 동작하든지 상기 마이크로프로세서 유니트 (310)로부터 발생된 메모리 선택 신호 (MSEL)에 의해서 제어된다.
데이터 재프로그래밍 프로세스의 성능이 요구될 때, 관련된 명령들이 상기 마이크로프로세서 유니트 (310)로 로드되며, 이는 상기 마이크로프로세서 유니트 (310)가 상기 로더 블록 (331)에 저장된 로더 프로그램을 실행하도록 상기 내장된 플래시 메모리 유니트 (330)의 액티브 블록으로서 상기 로더 블록 (331)을 선택하도록 한다.
상기 로더 프로그램은 상기 마이크로프로세서 유니트 (310)가 상기 I/O 포트 (360)를 통해서 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 재프로그램될 새로운 데이터 (DAT)를 받아들이게 한다. 상기 새로운 데이터 그리고 관련된 어드레스 값들 및 제어 명령들이 먼저 상기 레지스터 세트 (340)에 전달되고, 상기 레지스터 세트 (340)의 상기 데이터 레지스터 (341), 상기 어드레스 레지스터 (342), 그리고 상기 제어 레지스터 (43)에 각각 저장된다.
그 다음에, 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 한 블록의 데이터를 프로그램하기 위해서 요구되는 시간이 점검되고, 이것은 그 다음에 상기 타이머 (370)를 그것에 알맞게 설정하기 위해서 사용된다. 상기 타이머 (370)가 가동된 후 프리세트 시간이 경과할 때 상기 타이머 (370)는 상기 마이크로프로세서 유니트 (310)를 차단할 수 있는 인터럽트 신호를 발생한다. 일단 데이터 재프로그래밍 프로세스가 가동되면, 상기 타이머 (370) 역시 가동되고 상기 마이크로프로세서 유니트 (310)는 유휴 모드 (idle mode)로 전환된다. 게다가, MSEL 및 BSEL의 로직 상태들은 각각 상기 내장된 플래시 메모리 유니트 (332)의 액티브 블록을 상기 유저 블록 (332)으로 전환하고 상기 버스 멀티플렉서 (350)가 상기 내장된 플래시 메모리 유니트 (330)의 상기 I/O 회로 (333)를 상기 레지스터 세트 (340)로 연결하게 하는 방법으로 스위칭된다. 이는 상기 레지스터 세트 (340)에 현재 저장된 데이터가 (즉, 상기 내장된 플래시 메모리 유니트 (330)의 상기 유저 블록 (332)에 재프로그램될 새로운 데이터) 상기 버스 멀티플렉서 (350)를 통해서 상기 유저 블록 (332)으로 전달되도록 하며, 그리고 그것으로 인해서 상기 새로운 데이터가 상기 유저 블록 (332)에 기입된다.
상기 마이크로프로세서 유니트 (310)가 상기 유휴 모드로 동작할 때, 상기 레지스터 세트 (340)에 저장된 데이터는 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 전달되고 기입된다. 상기 타이머 (370)가 상기 프리세트 시간에 도달함에 따라, 그것은 상기 마이크로프로세서 유니트 (310)가 상기 유휴 모드로부터 빠져나오게 하는 인터럽트 신호를 발생하고, 또한 MSEL 및 BSEL의 로직 상태들이 각각 상기 내장된 플래시 메모리 유니트 (330)의 액티브 블록을 상기 로더 블록 (331)으로 재전환하고 상기 버스 멀티플렉서 (335)가 상기 내장된 플래시 메모리 유니트 (330)의 I/O 회로 (333)를 상기 데이터 버스 (320)로 연결되게 하는 방법으로 전환되게 한다. 이는 상기 마이크로프로세서 유니트 (310)가 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)으로 다음 블록의 새로운 데이터를 프로그램하기 위해서 받아들이고 준비하도록 상기 로더 블록 (331)에 저장된 로더 프로그램을 페치하고 실행하게 한다. 전술한 절차가 새로운 데이터의 블록들이 상기 유저 블록 (322)에 프로그램될 때까지 반복된다.
새로운 데이터의 모든 블록들이 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 프로그램될 때, MSEL 및 BSEL의 로직 상태들은 각각 상기 내장된 플래시 메모리 유니트 (330)의 액티브 블록을 상기 유저 블록 (332)으로 전환하고 상기 내장된 플래시 메모리 유니트 (330)의 I/O 회로 (333)를 데이터 버스 (320)에 연결하게 하는 방법으로 전환된다. 이는 상기 마이크로프로세서 유니트 (310)가 전술한 데이터 재프로그래밍 프로세스로부터 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 새롭게 저장된 새로운 프로그램들을 실행하게 한다.
도 4는 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 새로운 데이터를 프로그램하기 위해서 데이터 재프로그래밍 프로세스를 수행할 때 본 발명의 마이크컴퓨터에서의 다양한 동작들 사이의 타이밍 관계들을 보여주는 개략적인 도면이다. 각 데이터 재프로그래밍 프로세스는 두 가지의 단계들 : 준비 단계 및 프로그래밍 단계를 포함한다.
상기 준비 단계에서, 상기 마이크로프로세서 유니트 (310)는 상기 내장된 플래시 메모리 유니트 (330)의 액티브 블록으로서 상기 로더 블록 (331)을 선택하고, 상기 내장된 플래시 메모리 유니트 (330)의 I/O 회로 (333)를 상기 데이터 버스 (320)에 연결하기 위해서 상기 버스 멀티플렉서 (350)에게 동시에 명령한다. 이는 상기 마이크로프로세서 유니트 (310)가 상기 로더 블록 (331)에 저장된 상기 로더 프로그램을 페치하고 실행하게 하며, 그것으로 인해서 새로운 데이터가 상기 I/O 포트 (360)를 통해서 입력되고 상기 레지스터 세트 (340)로 전달된다. 게다가, 상기 프로그래밍 프로세스를 제어하기 위해서 사용된 명령들은 상기 제어 레지스터 (343)에서 설정된다.
상기 프로그래밍 단계는 상기 준비 단계가 수행되고 상기 마이크로프로세서 유니트 (310)가 유휴 모드로 전화된 후 수행된다. 상기 프로그래밍 단계에서, 상기 마이크로프로세서 유니트 (310)는 상기 내장된 플래시 메모리 유니트 (330)의 액티브 블록으로서 상기 유저 블록 (332)을 선택하고, 동시에 상기 내장된 플래시 메모리 유니트 (330)의 I/O 회로 (333)를 상기 레지스터 세트 (340)에 연결하기 위해서 상기 버스 멀티플렉서 (350)에게 명령한다. 이는 상기 레지스터 세트 (340)에 현재 저장된 데이터가 (즉, 상기 내장된 플래시 메모리 유니트 (330)에 프로그램될 새로운 데이터) 상기 버스 멀티플렉서 (350)를 통해서 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)으로 전달되게 한다. 상기 프로그래밍 단계가 완료되는 상기 프리세트 시간 후에, 상기 타이머 (370)는 상기 유휴 모드로부터 상기 마이크로프로세서 유니트 (310)를 빠져나오게 하는 인터럽트 신호를 발생한다. 이는 상기 마이크로프로세서 유니트 (310)가 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)으로 다음 블록의 데이터를 받아들이고 프로그램하도록 준비하게 한다.
도 5 내지 도 7은 상기 내장된 플래시 메모리 유니트 (330)에 데이터를 프로그램하기 위한 데이터 재프로그래밍 프로세스에 관련된 처리 단계들을 보여주는 흐름도들이다. 도 5는 데이터 재프로그래밍 프로세스를 수행하기 위한 본 발명의 마이크로컴퓨터에 의해서 수행되는 메인 프로그램에 관련된 처리 단계들을 보여주는 흐름도이다. 도 6은 도 5의 메인 프로그램에서 스위칭 서브루틴에 관련된 처리 단계들을 보여주는 흐름도이다. 도 7은 도 5의 메인 프로그램에서 기입 서브루틴에 관련된 처리 단계들을 보여주는 흐름도이며, 상기 내장된 플래시 메모리에 새로운 데이터의 블록들을 각각 기입하기 위해서 사용된다.
데이터 재프로그래밍 프로세스가 요구될 때, 본 발명의 상기 마이크로컴퓨터는 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)으로 새로운 데이터를 프로그램하기 위해서 도 5의 메인 프로그램을 수행한다.
제 1 단계 (510)에서, 상기 마이크로프로세서 유니트 (310)는 데이터 재프로그래밍 프로세스의 요구가 외부 회로로부터 또는 세팅들로부터 입력되었는 지의 여부를 점검한다. 만약 없으면, 절차는 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 저장된 응용 프로그램들을 실행하기 위한 단계 (520)로 진행한다. 만약 입력되면, 절차는 단계 (530)로 진행한다.
단계 (530)에서, 상기 마이크로프로세서 유니트 (310)는 상기 프로그래밍 모드로 전환되고, 상기 프로그래밍 모드에서는 상기 내장된 플래시 메모리 유니트 (330)의 액티브 블록이 로더 블록 (331)으로 전환된다. 이 스위칭 프로세스 동안에, 상기 마이크로프로세서 유니트 (310) 내의 몇몇 플래그들이 현 상태를 나타내기 위해서 설정된다. 현 상태를 나타내기 위해서 마이크로프로세서 내의 플래그들을 사용하는 것은 잘 알려진 기술이며, 그래서 이 절차의 설명은 부가적으로 설명되지 않는다.
다음 절차 (530)에서, 상기 메인 프로그램은 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 한 블록의 데이터를 기입하기 위해서 요구되는 시간과 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 프로그램될 새로운 데이터의 전량 (the total amount)을 점검한다. 상기 획득된 시간은 그 다음에 상기 마이크로프로세서 유니트 (310)의 타이머 (370)를 설정하기 위해서 사용된다.
그 다음에 절차는 다음 단계 (532)로 진행하며, 상기 단계 (532)에서 상기 마이크로프로세서 유니트 (310)는 현 블록의 데이터를 받아들이고 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 상기 블록의 데이터를 프로그램한다. 상기 현 블록의 데이터를 프로그램하는 것이 완료될 때, 상기 마이크로프로세서 유니트 (310)는 상기 모든 블록의 새로운 데이터가 끝났는 지의 여부를 점검한다. 만약 끝나지 않았으면, 절차는 단계 (540)로 진행한다. 만약 끝났으면, 절차는 단계 (550)로 진행한다.
단계 (550)에서, 마이크로프로세서 유니트 (310)는 실행 모드로 전환된다. 다음 단계 (551)에서, 상기 내장된 플래시 메모리 유니트 (330)의 액티브 블록은 유저 블록 (332)으로 전환된다. 이는 상기 마이크로그프로세서 유니트 (310)가 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 저장된 응용 프로그램들을 실행하게 한다.
단계 (540)에서, 상기 마이크로프로세서 유니트 (310)는 I/O 포트 (360)를 통해서 다음 블록의 새로운 데이터를 받아들인다. 다음 단계 (541)에서, 이 블록의 데이터는 상기 레지스터 세트 (340)에 전달되고 임시적으로 저장된다. 이후, 절차는 단계 (532)를 다시 반복하기 위해서 단계 (532)로 돌아간다. 단계 (532)에서 단계 (542) 까지의 루프는 모든 블록들의 새로운 데이터가 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)으로 입력되고 프로그램될 때까지 반복된다.
도 5의 흐름도에서, 프로그래밍 모드로 전환하는 단계 (530)는 처리 단계들이 도 6의 흐름도에 도시된 스위칭 서브루틴 (switching subroutine)을 포함한다.
단계 (610)에서, 상기 마이크로프로세서 유니트 (310)는 프로그래밍 모드에 관련된 플래그들 및 제어 명령들을 설정한다.
다음 단계 (611)에서, 상기 스위칭 서브루틴은 상기 마이크로프로세서 유니트 (310)의 인터럽트 기능을 가능하게 하며, 그 결과 상기 마이크로프로세서 유니트 (310)가 상기 타이머 (370)에 의해서 나중에 생성된 인터럽트 신호에 응답하게 한다. 상기 타이머 (370)가 가동된 후 프리세트 시간이 경과할 때 상기 타이머 (370)는 상기 인터럽트 신호를 발생하도록 설정된다. 앞서 언급된 바와 같이, 상기 타이머 (370)를 위한 프리세트 시간은 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 한 블록의 새로운 데이터를 기입하기 위해서 요구되는 시간과 동일하다. 다음 단계 (612)에서, 상기 타이머 (370)가 가동되고, 상기 마이크로프로세서 유니트 (310)는 상기 유휴 모드로 전환된다. 상기 타이머 (370)는 상기 프리세트 시간이 경과할 때 인터럽트 신호를 발생한다.
다음 단계 (620)에서, 상기 타이머 (370)에 의해서 발생된 인터럽트 신호는 상기 마이크로프로세서 유니트 (310)가 상기 유휴 모드로부터 빠져나오게하며, 그 결과 동작을 재개한다.
다음 단계 (621)에서, 상기 스위칭 서브루틴은 상기 타이머 (370)를 정지시키고 상기 마이크로프로세서 유니트 (310)의 인터럽트 기능을 비활성화시키며, 이는 상기 마이크로프로세서 유니트 (310)가 다음의 어떠한 인터럽트 신호들에도 응답하지 않게 한다.
다음 단계 (622)에서, 상기 스위칭 서브루틴은 상기 마이크로프로세서 유니트 (310)가 상기 프로그래밍 모드로 전환되었는 지의 여부를 점검한다. 만약 전환되었으면, 상기 스위칭 서브루틴은 도 5의 상기 메인 프로그램으로 돌아간다; 그렇지 않으면, 상기 스위칭 서브루틴은 단계 (630)로 진행하고, 상기 단계 (630)에서 상기 마이크로프로세서 유니트 (310)는 프로그래밍 모드로 전환된다.
게다가, 도 5의 상기 메인 프로그램에서, 상기 레지스터 세트 (340)에 임시적으로 저장된 데이터를 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)으로 전달하고 기입하는 단계 (542)는 처리 단계들이 도 7의 흐름도에 도시된 기입 서브루틴을 포함한다.
제 1 단계 (710)에서, 기입 서브루틴은 상기 마이크로프로세서 유니트 (310)의 인터럽트 기능을 가능하게 하고 상기 타이머 (370)를 가동시킨다. 이때, 상기 타이머 (370)가 가동된 후 프리세트 시간이 경과할 때 상기 타이머 (370)는 상기 마이크로프로세서 유니트 (310)에 인터럽트 신호를 발생하기 위해서 미리 설정된다 (도 5에 도시된 단계 (531)). 앞서 언급된 바와 같이, 상기 타이머 (370)를 위한 프리세트 시간은 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 한 블록의 데이터를 기입하기 위해서 요구되는 시간과 동일하다.
다음 단계 (711)에서, 상기 기입 서브루틴은 상기 마이크로프로세서 유니트 (310)를 상기 유휴 모드로 전환하고 상기 내장된 플래시 메모리 유니트 (330)의 상기 액티브 블록을 상기 유저 블록 (332)으로 전환하고 상기 버스 멀티플렉서 (350)가 상기 내장된 플래시 메모리 유니트 (330)의 I/O 회로 (333)를 상기 레지스터 세트 (340)로 연결하게 하는 방법으로 MSEL 및 BSEL의 로직 상태들을 각각 전환한다. 이는 상기 레지스터 세트 (330)에 현재 저장된 데이터가 상기 버스 멀티플렉서 (350)를 통해서 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)으로 전달되고 기입되게 한다.
다음 단계 (720)에서, 상기 타이머 (370)에 의해서 생성된 인터럽트 신호는 상기 마이크로프로세서 유니트 (310)가 상기 유휴 모드로부터 빠져나오게 그리고 동작을 재개하게 한다. 이때, 현 블록의 데이터는 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)에 완전히 재기입된다.
다음 단계 (730)에서, 상기 기입 서브루틴은 상기 마이크로프로세서 유니트 (310)의 인터럽트 기능을 불가능하게 하고 상기 타이머 (370)를 정지시킨다. 상기 기입 서브루틴은 그 다음에 상기 내장된 플래시 메모리 유니트 (330)의 유저 블록 (332)으로 다음 블록의 새로운 데이터를 받아들이고 프로그램하기 위해서 도 5의 메인 프로그램으로 돌아간다.
(제 2 실시예)
도 8은 본 발명에 따른 바람직한 제 2 실시예의 마이크로컴퓨터의 상세 구성을 보여주는 개략적인 블록도이다. 이 실시예는 도 3의 이전 실시예의 구성 면에서 실질적으로 동일하고, 구성 요소들은 여기서 3 대신에 8로 시작하는 다른 참조 번호들로 표기된다. 도 3의 이전 실시예에서, 도 3의 이전 실시예의 상기 내장된 플래시 메모리 유니트 (330)의 상기 로더 블록 (331)과 상기 유저 블록 (332)은 동일한 시작 어드레스를, 예를 들면 00h, 갖고 동일한 I/O 회로 (333)를 공유한다. 그것들 중 하나가 활성 상태이고 상기 마이크로프로세서 유니트 (310)에 의해서 발생된 메모리 선택 신호 (MSEL)에 의해서 제어된다.
이 실시예에서, 그러나, 상기 내장된 플래시 메모리 유니트 (여기서 830으로 대신 표기됨)의 상기 로더 블록 (여기서 831로 대신 표기됨) 및 상기 유저 블록 (여기서 832로 대신 표기됨)은 어드레스에서 연속적으로 함께 연결된다. 다시 말해서, 한 블록의 시작 어드레스는 다른 블록의 마지막 어드레스 후에 즉시 따라온다.
예를 들면, 상기 유저 블록 (832)이 00h에서 시작하고 XXh-1에서 끝나는 XXh 바이트들의 메모리 용량을 가진다고 가정한다; 그 다음에 상기 로더 블록 (831)은 XXh 어드레스에서 시작한다. 상기 메모리 선택 신호 (MSEL)를 사용하는 대신에, 여기서 상기 내장된 플래시 메모리 유니트 (330)의 상기 로더 블록 (331)과 상기 유저 블록 (332) 중 어느 하나가 상기 마이크로프로세서 유니트 (810)에 의해서 발생된 어드레스 신호에 의해서 직접 액세스된다. 예를 들면, 상기 마이크로프로세서 유니트 (810)가 상기 로더 블록 (831)에 저장된 로더 프로그램을 실행하게 하는 것이 필요할 때, 상기 마이크로프로세서 유니트 (810)는 상기 로더 블록 (831)의 시작 어드레스를 나타내는 어드레스 신호를 상기 내장된 플래시 메모리 유니트 (830)에 발생한다. 이 방법으로, 마이크로프로세서 (810)는 상기 로더 블록 (831)에 직접 액세스할 수 있다. 한편으로, 상기 유저 블록 (832)으로 데이터를 기입하는 것이 요구될 때, 상기 마이크로프로세서 유니트 (332)는 상기 유저 블록 (332)의 시작 어드레스를 나타내는 어드레스 신호를 상기 내장된 플래시 메모리 유니트 (830)에 발생하고 상기 유저 블록 (332)에 직접 액세스한다. 도 3에 도시된 상기 MSEL 신호 라인과 출력 포트는 여기서 제거되었다. 다른 동작들은 도 3의 이전 실시예와 동일하고, 그래서 그것의 설명은 부가적으로 설명되지 않는다.
예시적인 바람직한 실시예들을 이용하여 본 발명을 설명하였지만, 본 발명의 범위는 개시된 실시예들에 한정되지 않는다는 것이 잘 이해될 것이다. 오히려, 본 발명의 범위에는 다양한 변형예들 및 그 유사한 구성들을 모두 포함될 수 있도록 하려는 것이다. 따라서, 청구 범위는 그러한 변형예들 및 그 유사한 구성들 모두를 포함하는 것으로 가능한 폭넓게 해석되어야 한다.
결국, 본 발명에 따른 내장된 플래시 메모리를 구비한 마이크로컴퓨터는 종래 기술과 관련하여 다음의 이점들을 가진다. (1) 첫째로, 본 발명에 따르면, 상기 마이크로컴퓨터의 내장된 플래시 메모리는 두 개의 블록들 : 로더 블록 및 유저 블록으로 나눠지고, 로더 프로그램과 응용 프로그램을 저장하기 위해서 각각 사용된다. 이는 데이터 재프로그래밍 프로세스가 외부 재프로그래밍 도구들을 사용할 필요 없이 상기 마이크로컴퓨터 자체를 통해서 수행될 수 있게 한다. (2) 둘째로, 본 발명은 상기 마이크로컴퓨터가 전용 제어 회로 (a dedicated control circuit)를 사용할 필요 없이 온-칩 프로그래밍 프로세스 (on-chip programming process)를 수행하게 한다. 이는 상기 마이크로컴퓨터가 고집적되고 칩 사이즈 면에서 작게 한다. (3) 셋째로, 상기 로더 블록과 상기 유저 블록이 동일한 내장된 플래시 메모리 유니트로부터 분리되고, 상기 로더 블록은 상기 로더 프로그램을 저장하기 위해서 추가적인 ROM 유니트를 사용할 필요 없이, 상기 로더 프로그램을 저장하기 위해서 사용된다. 상기 로더 블록 및 상기 유저 블록은 I/O 기능들을 위해서 상기 내장된 플래시 메모리의 동일한 I/O 회로를 공유하기 때문에, 전반적인 회로 구조가 상당히 덜 복잡하다. 이는 고집적, 작은 칩 사이즈, 그리고 저렴한 구현을 가능하게 한다. 게다가 설계 및 디버깅들 모두가 개발자에 의해서 쉽게 수행된다.
도 1은 내장된 플래시 메모리를 구비한 종래의 마이크로컴퓨터의 기본적인 구성을 보여주는 개략적인 블록도;
도 2는 본 발명에 따른 내장된 플래시 메모리를 구비한 마이크로컴퓨터의 기본적인 구성을 보여주는 개략적인 블록도;
도 3은 본 발명의 바람직한 제 1 실시예의 마이크로컴퓨터를 보여주는 개략적인 블록도;
도 4는 내장된 플래시 메모리에 새로운 데이터를 프로그램하는 데이터 재프로그래밍 프로세스를 수행할 때 본 발명의 다양한 동작들 사이의 타이밍 관계를 보여주는 개략적인 도면;
도 5는 데이터 재프로그래밍 프로세스를 수행하기 위한 본 발명의 마이크로컴퓨터에 의해서 수행되는 메인 프로그램에 관련된 처리 단계들을 보여주는 흐름도;
도 6은 도 5의 메인 프로그램에서 스위칭 서브루틴에 관련된 처리 단계들을 보여주는 흐름도;
도 7은 각 블록의 새로운 데이터를 내장된 플래시 메모리에 기입하기 위한 사용되는, 도 5의 메인 프로그램에서 기입 서브루틴에 관련된 처리 단계들을 보여주는 흐름도; 그리고
도 8은 본 발명의 바람직한 제 2 실시예에 따른 내장된 플래시 메모리를 구비한 마이크로컴퓨터를 보여주는 개략적인 블록도이다.
*도면의 주요 부분에 대한 부호 설명
110, 210, 310, 810 : 마이크로프로세서 유니트
120, 220, 320 : 버스 130, 230, 830 : 내장된 플래시 메모리 유니트
231, 331, 831 : 로더 블록 232, 332, 832 : 유저 블록
333, 833 : I/O 회로 340, 840 : 레지스터 세트
341, 841 : 데이터 레지스터 342, 842 : 어드레스 레지스터
343, 843 : 제어 레지스터 350, 850 : 버스 멀티플렉서
360, 860 : I/O 포트 370, 870 : 타이머

Claims (33)

  1. 온-칩 프로그래밍 능력을 가지는 마이크로컴퓨터에 있어서:
    적어도 두 개의 블록들로 분할된 내장된 플래시 메모리 유니트와;
    상기 내장된 플래시 메모리 유니트는,
    로더 프로그램을 저장하는 로더 블록 및;
    상기 로더 블록과 동일한 시작 어드레스를 가지고, 적어도 하나의 응용 프로그램을 저장하는 유저 블록을 포함하며;
    상기 내장된 플래시 메모리 유니트에 연결되고, 프리세트 시간이 경과할 때 인터럽트 신호를 발생할 수 있는 타이머를 포함하는 마이크로프로세서 유니트와;
    상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 프로그램될 데이터를 임시적으로 저장하는 레지스터 세트 및;
    상기 마이크로프로세서 유니트, 상기 내장된 플래시 메모리 유니트, 그리고 상기 레지스터 세트 사이에 연결되고, 상기 마이크로프로세서 유니트에 의해서 발생된 버스 선택 신호에 응답해서 상기 마이크로프로세서 유니트와 상기 레지스터 세트 중 어느 하나에 상기 내장된 플래시 메모리 유니트를 선택적으로 연결하는 버스 멀티플렉서를 포함하고;
    여기서
    데이터 재프로그래밍 프로세스를 수행할 때, 상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트의 상기 로더 블록을 상기 마이크로프로세서 유니트에 연결하도록 상기 버스 멀티플렉서에게 명령하는 동안에 상기 내장된 플래시 메모리 유니트의 상기 로더 블록을 액티브 블록으로서 선택하며, 이는 상기 마이크로프로세서 유니트가 상기 내장된 플래시 메모리 유니트의 로더 블록에 저장된 로더 프로그램을 페치하고 실행하게 하고;
    데이터 재프로그래밍 프로세스 동안에, 먼저 상기 입력된 데이터가 상기 레지스터 세트에 전달되고 임시적으로 저장되고 상기 내장된 플래시 메모리 유니트의 유저 블록에 한 블록의 데이터를 기입하기 위해서 요구되는 시간이 상기 마이크로프로세서 유니트의 상기 타이머에 설정되고; 그리고
    여기서
    계속해서 상기 마이크로프로세서 유니트가 유휴 모드 (idle mode)로 전환되고 상기 내장된 플래시 메모리 유니트의 상기 유저 블록을 상기 액티브 블록으로서 선택할 때, 상기 마이크로프로세서 유니트는 상기 버스 멀티플렉서에 명령하여 상기 내장된 플래시 메모리 유니트의 상기 유저 블록을 상기 레지스터 세트에 연결하며, 이는 상기 레지스터 세트에 현재 저장된 데이터가 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 전달되고 기입되게 하며; 그리고
    상기 프리세트 시간이 경과하고 상기 타이머가 인터럽트 신호를 발생할 때, 상기 인터럽트 신호는 상기 마이크로프로세서 유니트가 상기 유휴 모드로부터 빠져나오게 그리고 동작을 재개하게 하는 것을 특징으로 하는 마이크로컴퓨터.
  2. 제 1 항에 있어서,
    상기 내장된 플래시 메모리 유니트는 I/O 기능들을 위해서 상기 내장된 플래시 메모리 유니트의 상기 로더 블록 및 상기 유저 블록 모두에 의해서 공유되는 I/O 회로를 부가적으로 포함하는 것을 특징으로 하는 마이크로컴퓨터.
  3. 제 2 항에 있어서,
    상기 마이크로프로세서 유니트는 상기 I/O 회로에 연결되는 상기 액티브 블록으로서 상기 내장된 플래시 메모리 유니트의 상기 로더 블록과 상기 유저 블록 중 어느 하나를 선택하기 위해서 상기 내장된 플래시 메모리 유니트에 메모리 선택 신호를 발생하는 것을 특징으로 하는 마이크로컴퓨터.
  4. 제 3 항에 있어서,
    상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트의 유저 블록에 프로그램될 데이터를 받아들이는 I/O 포트를 부가적으로 포함하는 것을 특징으로 하는 마이크로컴퓨터.
  5. 제 4 항에 있어서,
    상기 레지스터 세트는,
    상기 내장된 플래시 메모리 유니트의 유저 블록에 프로그램될 상기 데이터를 저장하는 데이터 레지스터와;
    상기 내장된 플래시 메모리 유니트의 유저 블록에 프로그램될 상기 데이터의 관련된 어드레스들을 저장하는 어드레스 레지스터 및;
    상기 내장된 플래시 메모리 유니트의 유저 블록에 상기 데이터의 프로그래밍에 관련된 상기 제어 명령들을 저장하는 제어 레지스터를 포함하는 것을 특징으로 하는 마이크로컴퓨터.
  6. 제 5 항에 있어서,
    상기 마이크로프로세서 유니트는 프로그래밍 모드 및 실행 모드에서 동작하고, 상기 프로그래밍 모드에서, 상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트의 유저 블록에 저장된 상기 로더 프로그램을 페치하고 실행하며, 그리고 상기 실행 모드에서, 상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트의 유저 블록에에 저장된 상기 응용 프로그램을 페치하고 실행하는 것을 특징으로 하는 마이크로컴퓨터.
  7. 제 6 항에 있어서,
    상기 마이크로프로세서 유니트가 상기 프로그래밍 모드에서 동작할 때, 상기 마이크로프로세서 유니트는 상기 액티브 블록으로서 상기 로더 블록을 선택하기 위해서 상기 내장된 플래시 메모리 유니트에 메모리 선택 신호를 발생하고, 상기 버스 멀티플렉서에 버스 선택 신호를 발생하여 상기 버스 멀티플렉서가 상기 내장된 플래시 메모리 유니트의 액티브 블록을 상기 마이크로프로세서 유니트에 연결하게 하며, 이는 상기 마이크로프로세서 유니트가 상기 내장된 플래시 메모리 유니트의 유저 블록에 저장된 상기 로더 프로그램을 실행하게 하는 것을 특징으로 하는 마이크로컴퓨터.
  8. 제 7 항에 있어서,
    상기 마이크로프로세서 유니트가 상기 실행 모드로 동작할 때, 상기 마이크로프로세서 유니트는 상기 유저 블록을 상기 액티브 블록으로서 선택하기 위해서 상기 내장된 플래시 메모리 유니트에 메모리 선택 신호를 발생하고, 상기 버스 멀티플렉서에 상기 버스 선택 신호를 발생하여 상기 버스 멀티플렉서가 상기 내장된 플래시 메모리 유니트의 액티브 블록을 상기 마이크로프로세서 유니트에 연결하게 하며, 이는 상기 마이크로프로세서 유니트가 상기 내장된 플래시 메모리 유니트의 유저 블록에 저장된 응용 프로그램을 실행하게 하는 것을 특징으로 하는 마이크로컴퓨터.
  9. 제 8 항에 있어서,
    상기 마이크로프로세서 유니트가 상기 유휴 모드로 동작할 때, 상기 제어 레지스터에 저장된 제어 명령이 프로그래밍 모드로 설정되면, 상기 데이터 레지스터에 현재 저장된 상기 데이터는 상기 어드레스 레지스터에 저장된 어드레스 값들에 의해서 지정된 위치들에 상기 내장된 플래시 메모리 유니트의 유저 블록으로 전달되고 기입되는 것을 특징으로 하는 마이크로컴퓨터.
  10. 제 9 항에 있어서,
    상기 마이크로프로세서 유니트는, 상기 유휴 모드로 진입하기 이전에, 상기 마이크로프로세서 유니트가 상기 타이머에 의해서 생성된 상기 인터럽트 신호에 의해서 차단되게 하는 인터럽트 기능을 가능하게 하는 것을 특징으로 하는 마이크로컴퓨터.
  11. 제 10 항에 있어서,
    상기 마이크로프로세서 유니트는, 상기 유휴 모드로 진입하기 이전에, 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 상기 새로운 데이터를 기입하기 위해서 요구되는 시간을 점검하고 그것에 따라서 상기 타이머를 설정하는 것을 특징으로 하는 마이크로컴퓨터.
  12. 제 11 항에 있어서,
    상기 마이크로프로세서 유니트가 상기 실행 모드로 동작할 때, 상기 마이크로프로세서 유니트는 상기 인터럽트 기능이 활성화되고 상기 타이머가 설정된 후 상기 유휴 모드로 진입하고, 상기 타이머가 프리세트 시간에 도달할 때, 상기 타이머는 인터럽트 신호를 발생하여 상기 마이크로프로세서 유니트를 상기 유휴 모드로부터 빠져나오게 그리고 상기 마이크로프로세서 유니트가 상기 프로그래밍 모드로 진입하게 하는 것을 특징으로 하는 마이크로컴퓨터.
  13. 제 12 항에 있어서,
    상기 마이크로프로세서 유니트가 상기 프로그래밍 모드로 동작할 때, 상기 마이크로프로세서 유니트는 상기 실행 모드로 진입하기 위한 명령이 설정되고 상기 마이크로프로세서 유니트가 재개된 후 상기 실행 모드로 전환되는 것을 특징으로 하는 마이크로컴퓨터.
  14. 온-칩 프로그래밍 능력을 가지는 마이크로컴퓨터에 있어서:
    적어도 두 개의 블록들로 분할된 내장된 플래시 메모리 유니트와;
    상기 내장된 플래시 메모리 유니트는,
    로더 프로그램을 저장하는 로더 블록 및;
    상기 로더 블록의 마지막 어드레스 후에 즉시 따라오는 시작 어드레스를 가지고, 적어도 하나의 응용 프로그램을 저장하는 유저 블록을 포함하며;
    상기 내장된 플래시 메모리 유니트에 연결되고, 타이머가 가동되고 프리세트 시간이 경과할 때 인터럽트 신호를 발생할 수 있는 상기 타이머를 포함하는 마이크로프로세서 유니트와;
    상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 프로그램될 데이터를 임시적으로 저장하는 레지스터 세트 및;
    상기 마이크로프로세서 유니트, 상기 내장된 플래시 메모리 유니트, 그리고 상기 레지스터 세트 사이에 연결되고, 상기 마이크로프로세서 유니트에 의해서 발생된 버스 선택 신호에 응답해서 상기 마이크로프로세서 유니트와 상기 레지스터 세트 중 어느 하나에 상기 내장된 플래시 메모리 유니트를 선택적으로 연결하는 버스 멀티플렉서를 포함하고;
    여기서
    데이터 재프로그래밍 프로세스를 수행할 때, 상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트의 상기 로더 블록을 상기 액티브 블록으로서 선택하고 그 동안에 상기 버스 멀티플렉서에게 명령하여 상기 내장된 플래시 메모리 유니트의 상기 로더 블록을 상기 마이크로프로세서 유니트에 연결하며, 이는 상기 마이크로프로세서 유니트가 상기 내장된 플래시 메모리 유니트의 로더 블록에 저장된 로더 프로그램을 페치하고 실행하게 하고;
    데이터 재프로그래밍 프로세스 동안에, 먼저 상기 입력된 데이터가 상기 레지스터 세트에 전달되고 임시적으로 저장되고 상기 내장된 플래시 메모리 유니트의 유저 블록에 한 블록의 데이터를 기입하기 위해서 요구되는 시간이 상기 마이크로프로세서 유니트의 상기 타이머에 설정되고; 그리고
    그 다음에, 상기 마이크로프로세서 유니트는 유휴 모드로 전환되고 상기 내장된 플래시 메모리 유니트의 상기 유저 블록을 상기 액티브 블록으로서 선택하고 그리고 그 동안에 상기 마이크로프로세서 유니트는
    상기 버스 멀티플렉서에게 명령하여 상기 내장된 플래시 메모리 유니트의 상기 유저 블록을 상기 레지스터 세트에 연결하며, 이는 상기 레지스터 세트에 현재 저장된 데이터가 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 전달되고 기입되게 하는 반면에, 상기 프리세트 시간이 경과하고 상기 타이머가 인터럽트 신호를 발생할 때 상기 타이머는 인터럽트 신호를 발생하고, 상기 인터럽트 신호는 상기 마이크로프로세서 유니트가 상기 유휴 모드로부터 빠져나오게 그리고 동작을 재개하게 하는 것을 특징으로 하는 마이크로컴퓨터.
  15. 제 14 항에 있어서,
    상기 내장된 플래시 메모리 유니트는 I/O 기능들을 위해서 상기 내장된 플래시 메모리 유니트의 상기 로더 블록 및 상기 유저 블록 모두에 의해서 공유되는 I/O 회로를 부가적으로 포함하는 것을 특징으로 하는 마이크로컴퓨터.
  16. 제 15 항에 있어서,
    상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트의 유저 블록에 프로그램될 데이터를 받아들이는 I/O 포트를 부가적으로 포함하는 것을 특징으로 하는 마이크로컴퓨터.
  17. 제 16 항에 있어서,
    상기 레지스터 세트는,
    상기 내장된 플래시 메모리 유니트의 유저 블록에 프로그램될 상기 데이터를 저장하는 데이터 레지스터와;
    상기 내장된 플래시 메모리 유니트의 유저 블록에 프로그램될 상기 데이터의 관련된 어드레스들을 저장하는 어드레스 레지스터 및;
    상기 내장된 플래시 메모리 유니트의 유저 블록에 상기 데이터의 프로그래밍에 관련된 상기 제어 명령들을 저장하는 제어 레지스터를 포함하는 것을 특징으로 하는 마이크로컴퓨터.
  18. 제 17 항에 있어서,
    상기 마이크로프로세서 유니트는 프로그래밍 모드 및 실행 모드에서 동작하고, 상기 프로그래밍 모드에서, 상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트의 유저 블록에 저장된 상기 로더 프로그램을 페치하고 실행하며, 그리고 상기 실행 모드에서, 상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트의 유저 블록에에 저장된 상기 응용 프로그램을 페치하고 실행하는 것을 특징으로 하는 마이크로컴퓨터.
  19. 제 18 항에 있어서,
    상기 마이크로프로세서 유니트가 상기 프로그래밍 모드 또는 상기 실행 모드에서 동작할 때, 상기 마이크로프로세서 유니트는 상기 내장된 플래시 메모리 유니트에 메모리 선택 신호를 발생하여 상기 버스 멀티플렉서가 상기 내장된 플래시 메모리 유니트의 현재 어드레싱된 블록을 상기 마이크로프로세서 유니트에 연결하게 하는 것을 특징으로 하는 마이크로컴퓨터.
  20. 제 19 항에 있어서,
    상기 마이크로프로세서 유니트가 상기 유휴 모드로 동작할 때, 상기 제어 레지스터에 저장된 제어 명령이 프로그래밍 모드로 설정되면, 상기 데이터 레지스터에 현재 저장된 상기 데이터는 상기 어드레스 레지스터에 저장된 어드레스 값들에 의해서 지정된 위치들에 상기 내장된 플래시 메모리 유니트의 유저 블록으로 전달되고 기입되는 것을 특징으로 하는 마이크로컴퓨터.
  21. 제 20 항에 있어서,
    상기 마이크로프로세서 유니트는, 상기 유휴 모드로 진입하기 이전에, 상기 마이크로프로세서 유니트가 상기 타이머에 의해서 생성된 상기 인터럽트 신호에 의해서 차단되게 하는 인터럽트 기능을 가능하게 하는 것을 특징으로 하는 마이크로컴퓨터.
  22. 제 21 항에 있어서,
    상기 마이크로프로세서 유니트는, 상기 유휴 모드로 진입하기 이전에, 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 상기 새로운 데이터를 기입하기 위해서 요구되는 시간을 점검하고 그것에 따라서 상기 타이머를 설정하는 것을 특징으로 하는 마이크로컴퓨터.
  23. 제 22 항에 있어서,
    상기 마이크로프로세서 유니트가 상기 실행 모드로 동작할 때, 상기 마이크로프로세서 유니트는 상기 인터럽트 기능이 활성화되고 상기 타이머가 설정된 후 상기 유휴 모드로 진입하고, 상기 타이머가 프리세트 시간에 도달할 때, 상기 타이머는 인터럽트 신호를 발생하여 상기 마이크로프로세서 유니트를 상기 유휴 모드로부터 빠져나오게 그리고 상기 마이크로프로세서 유니트가 상기 프로그래밍 모드로 진입하게 하는 것을 특징으로 하는 마이크로컴퓨터.
  24. 제 23 항에 있어서,
    상기 마이크로프로세서 유니트가 상기 프로그래밍 모드로 동작할 때, 상기 마이크로프로세서 유니트는 상기 실행 모드로 진입하기 위한 명령이 설정되고 상기 마이크로프로세서 유니트가 재개된 후 상기 실행 모드로 전환되는 것을 특징으로 하는 마이크로컴퓨터.
  25. 마이크로프로세서 유니트 및 내장된 플래시 메모리 유니트를 가지며 상기 내장된 플래시 메모리 유니트에 일련의 새로운 데이터를 프로그래밍하기 위한 온-칩 프로그래밍 프로세스를 수행하는 마이크로컴퓨터에서 사용하는 방법에 있어서:
    (1) 상기 내장된 플래시 메모리 유니트를 로더 프로그램을 저장하는 로더 블록과 적어도 하나의 응용 프로그램을 저장하는 유저 블록으로 분할하는 단계와;
    (2) 상기 마이크로프로세서 유니트를 프로그래밍 모드로 전환하는 단계와;
    (3) 상기 내장된 플래시 메모리 유니트의 상기 로더 블록에 저장된 로더 프로그램을 실행하는 단계와;
    (4) 상기 내장된 플래시 메모리 유니트에 새로운 데이터를 프로그래밍하는 것에 관련된 파라미터들을 설정하는 단계와;
    (5) 상기 새로운 데이터 중 한 블록을 받아들이는 단계와;
    (6) 상기 내장된 플래시 메모리 유니트의 유저 블록에 현재 입력된 블록의 데이터를 기입하는 단계 및;
    (7) 상기 새로운 데이터의 모든 블록들이 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 프로그램되었는 지의 여부를 점검하여, 만약 프로그램되지 않았으면, 상기 단계 (5)로 진행하는 단계를 포함하는 것을 특징으로 하는 방법.
  26. 제 25 항에 있어서,
    데이터 재프로그래밍 프로세서의 요구가 입력되었는 지의 여부를 점검하는 단계를 부가적으로 포함하며; 만약 입력되지 않았으면, 상기 마이크로프로세서 유니트에 명령하여 상기 내장된 플래시 메모리 유니트의 유저 블록에 저장된 상기 응용 프로그램을 실행하는 것을 특징으로 하는 방법.
  27. 제 26 항에 있어서,
    상기 단계 (5)는 상기 새로운 데이터 및 상기 새로운 데이터와 관련된 어드레스 값들을 레지스터 세트에 기입하는 서브단계 (substep)를 포함하는 것을 특징으로 하는 방법.
  28. 제 27 항에 있어서,
    상기 새로운 데이터는 먼저 상기마이크로프로세서 유니트의 I/O 포트를 통해서 입력되고 그 다음에 상기 레지스터 세트로 전달되는 것을 특징으로 하는 방법.
  29. 제 28 항에 있어서,
    상기 내장된 플래시 메모리 유니트의 유저 블록에 한 블록의 데이터를 프로그램하기 위해서 요구되는 시간을 점검하는 단계 및;
    상기 시간으로 상기 마이크로프로세서 유니트 내의 타이머를 설정하며; 상기 타이머가 가동된 후 프리세트 시간이 경과할 때 상기 타이머는 상기 마이크로프로세서 유니트에 인터럽트 신호를 발생할 수 있는 것을 특징으로 하는 방법.
  30. 제 29 항에 있어서,
    상기 마이크로프로세서 유니트를 상기 프로그래밍 모드로 전환하는 상기 단계 (2)는,
    상기 프로그래밍 모드를 초기화하는 단계와;
    상기 내장된 플래시 메모리 유니트의 유저 블록으로 한 블록의 데이터를 프로그램하기 위해서 요구되는 시간으로 상기 타이머를 설정하는 단계와;
    상기 타이머는 상기 타이머가 가동된 후 상기 프리세트 시간이 경과할 때 인터럽트 신호를 발생할 수 있으며;
    상기 타이머를 가동시키는 단계와;
    상기 마이크로프로세서 유니트를 유휴 모드 (idle mode)로 전환하는 단계와;
    상기 타이머로부터의 상기 인터럽트 신호를 받아들일 때, 상기 마이크로프로세서 유니트를 상기 유휴 모드로부터 빠져나오게 하는 단계와;
    상기 타이머를 정지시키는 단계 및;
    상기 마이크로프로세서 유니트의 인터럽트 기능을 비활성화시키는 단계의 서브단계들을 포함하는 것을 특징으로 하는 방법.
  31. 제 30 항에 있어서,
    파라미터들을 설정하는 단계 (4) 이전에, 상기 프로그래밍 모드가 이미 진입되었는 지의 여부를 점검하는 단계를 부가적으로 포함하며, 만약 진입되지 않았으면, 상기 프로그래밍 모들 재설정하는 것을 특징으로 하는 방법.
  32. 제 31 항에 있어서,
    데이터를 기입하는 단계 (6)는,
    상기 마이크로프로세서 유니트의 상기 인터럽트 기능을 가능하게 하는 단계와;
    상기 타이머를 가동시키는 단계와;
    상기 마이크로프로세서 유니트를 유휴 모드로 전환하는 단계와;
    상기 레지스터 세트에 현재 저장된 데이터를 상기 내장된 플래시 메모리 유니트의 유저 블록으로 전달하고, 그 다음에 상기 내장된 플래시 메모리 유니트의 상기 유저 블록에 상기 데이터를 기입하는 단계와;
    상기 타이머로부터의 상기 인터럽트 신호를 받아들일 때, 상기 마이크로프로세서 유니트를 상기 유휴 모드로부터 빠져나오게 하는 단계와;
    상기 타이머를 중지시키는 단계 및;
    상기 마이크로프로세서 유니트의 상기 인터럽트 기능을 비활성화시키는 단계의 서브단계들을 포함하는 것을 특징으로 하는 방법.
  33. 제 32 항에 있어서,
    상기 데이터 재프로그래밍 프로세스가 완료되었는 지의 여부를 점검하는 단계를 부가적으로 포함하며, 만약 완료되었으면, 상기 실행 모드로 진입하는 명령을 설정하고, 그 다음에 상기 마이크로프로세서 유니트를 재개시키는 것을 특징으로 하는 방법.
KR10-1998-0029724A 1998-07-23 1998-07-23 온-칩 프로그래밍 능력을 가지는 내장된 플래시 메모리를 구비한 마이크로컴퓨터 및 상기 내장된 플래시 메모리에 데이터를프로그램하는 방법 KR100465610B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-1998-0029724A KR100465610B1 (ko) 1998-07-23 1998-07-23 온-칩 프로그래밍 능력을 가지는 내장된 플래시 메모리를 구비한 마이크로컴퓨터 및 상기 내장된 플래시 메모리에 데이터를프로그램하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-1998-0029724A KR100465610B1 (ko) 1998-07-23 1998-07-23 온-칩 프로그래밍 능력을 가지는 내장된 플래시 메모리를 구비한 마이크로컴퓨터 및 상기 내장된 플래시 메모리에 데이터를프로그램하는 방법

Publications (2)

Publication Number Publication Date
KR20000009368A KR20000009368A (ko) 2000-02-15
KR100465610B1 true KR100465610B1 (ko) 2005-04-06

Family

ID=19545017

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1998-0029724A KR100465610B1 (ko) 1998-07-23 1998-07-23 온-칩 프로그래밍 능력을 가지는 내장된 플래시 메모리를 구비한 마이크로컴퓨터 및 상기 내장된 플래시 메모리에 데이터를프로그램하는 방법

Country Status (1)

Country Link
KR (1) KR100465610B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100518241B1 (ko) * 1999-04-20 2005-10-04 주식회사 하이닉스반도체 플래시 메모리 회로
KR100388219B1 (ko) * 2000-08-29 2003-06-19 주식회사 하이닉스반도체 플래쉬 메모리가 내장된 원칩 마이크로 콘트롤러 유닛
KR100478567B1 (ko) * 2002-08-22 2005-03-22 엠디에스테크놀로지 주식회사 경계주사열을 이용한 플래시롬 프로그래밍 방법

Also Published As

Publication number Publication date
KR20000009368A (ko) 2000-02-15

Similar Documents

Publication Publication Date Title
US5974528A (en) Microcomputer with embedded flash memory having on-chip programming capability and method of programming data into the embedded flash memory
US5327531A (en) Data processing system including corrupt flash ROM recovery
US6115814A (en) Memory paging scheme for 8051 class microcontrollers
JPH11219299A (ja) マイクロコンピュータ
JP4230122B2 (ja) マイクロコンピュータ、書込み方法及び消去方法
US6601131B2 (en) Flash memory access control via clock and interrupt management
JP2000065899A (ja) 半導体装置およびそのデータ書き換え方法
JPH07325711A (ja) Romプログラム変更装置
KR100506031B1 (ko) 마이크로 컴퓨터, 전자 기기 및 에뮬레이션 방법
KR100465610B1 (ko) 온-칩 프로그래밍 능력을 가지는 내장된 플래시 메모리를 구비한 마이크로컴퓨터 및 상기 내장된 플래시 메모리에 데이터를프로그램하는 방법
US7020788B2 (en) Reduced power option
JP4958201B2 (ja) マイクロコンピュータ
JPH11184724A (ja) インサーキットエミュレータ及び半導体集積回路
JPH08305680A (ja) 半導体装置
US20020083283A1 (en) Control of the access to a memory integrated with a microprocessor
JP2002535749A (ja) 複数の命令ソースからの命令を実行するプロセッサおよび方法
JP2004013338A (ja) データ処理装置および方法
JP3097602B2 (ja) データ処理装置
JP3779758B2 (ja) 随時にホストコンピュータと接続してユーザプログラムを変更することができるシングルボードコンピュータ
KR20010052868A (ko) 에뮬레이터 시스템에서 사용자 메모리를 업데이트하기위한 방법 및 시스템
JPH06222917A (ja) 電子装置
KR20000000888A (ko) 메모리의 프로그램 변경 및 독출 방법
JPH11353170A (ja) フラッシュメモリ制御装置およびフラッシュメモリ制御装置のメモリアクセス方法
JP2000105701A (ja) データ処理装置
JPH1050086A (ja) Eepromを有するマイクロコンピュータ及びその書換方法

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

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20130913

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20141016

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150922

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee