KR100604877B1 - 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법 - Google Patents

내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법 Download PDF

Info

Publication number
KR100604877B1
KR100604877B1 KR1020040051801A KR20040051801A KR100604877B1 KR 100604877 B1 KR100604877 B1 KR 100604877B1 KR 1020040051801 A KR1020040051801 A KR 1020040051801A KR 20040051801 A KR20040051801 A KR 20040051801A KR 100604877 B1 KR100604877 B1 KR 100604877B1
Authority
KR
South Korea
Prior art keywords
nonvolatile memory
control signal
reset
response
decoder
Prior art date
Application number
KR1020040051801A
Other languages
English (en)
Other versions
KR20060002664A (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 KR1020040051801A priority Critical patent/KR100604877B1/ko
Priority to US11/050,477 priority patent/US7493484B2/en
Priority to FR0506712A priority patent/FR2872603B1/fr
Priority to DE102005031530.5A priority patent/DE102005031530B4/de
Priority to CNB200510082149XA priority patent/CN100517228C/zh
Publication of KR20060002664A publication Critical patent/KR20060002664A/ko
Application granted granted Critical
Publication of KR100604877B1 publication Critical patent/KR100604877B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • 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]

Abstract

내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와 방법이 개시된다. 프로그램을 해독하고 수행하도록 명령하고 관리하는 CPU를 구비하는 내장형 시스템은 전기적으로 프로그램과 소거가 불가능한 제1불휘발성 메모리; 전기적으로 프로그램과 소거가 가능한 제2불휘발성 메모리; 제1제어신호를 발생하는 제어신호 발생회로; 및 상기 제1제어신호, 상기 CPU로부터 출력되는 리셋 어드레스와 적어도 하나의 명령신호에 응답하여 상기 제1불휘발성 메모리와 상기 제2불휘발성 메모리 중에서 어느 하나로 상기 리셋 어드레스를 전송하기 위한 디코더를 구비한다. 사용자는 사용자 고유코드에 따른 리셋 루틴을 수행할 수 있도록 할 수 있다.
플레쉬 메모리

Description

내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와 방법{Apparatus and method for controlling memory address mapping in embedded system}
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도1은 본 발명의 실시예에 따른 프로그램을 해독하고 수행하도록 명령하고 관리하는 CPU를 구비하는 내장형 시스템의 블록도를 나타낸다.
도2는 도1에 도시된 디코더의 회로도를 나타낸다.
도3은 플레쉬 메모리에 필요한 프로그램을 셋-업하기 전의 ROM과 상기 플레쉬 메모리의 메모리 맵을 나타낸다.
도4는 플레쉬 메모리에 필요한 프로그램을 셋-업한 후의 ROM과 상기 플레쉬 메모리의 메모리 맵을 나타낸다.
도5는 도1에 도시된 내장형 시스템의 작동 타이밍도를 나타낸다.
도6은 본 발명의 다른 실시예에 따른 프로그램을 해독하고 수행하도록 명령하고 관리하는 CPU를 구비하는 내장형 시스템의 블록도를 나타낸다.
본 발명은 CPU를 내장한 시스템(embedded system)에 관한 것으로, 보다 상세하게는 상기 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와 방법에 관한 것 것이다.
최근 급격한 발전을 이루고 있는 내장형 시스템은 그 내부에 프로세서와 상기 프로세서의 작동을 정의한 프로그램을 저장할 수 있는 메모리를 구비한다.
일반적으로 내장형 시스템은 일반 컴퓨터와는 다르게 특정한 용도로 한정된 작동을 하므로, 상기 내장형 시스템에 대한 프로그램이 한번 개발되면, 상기 프로그램은 고정되고, 상기 고정된 프로그램은 상기 내장형 시스템에 내장된 ROM에 저장된다. 이러한 프로그램을 펌웨어(firmware)라 한다.
일반적으로 상기 펌웨어는 ROM에 저장된다. 상기 ROM에 상기 펌웨어를 저장하는 과정은 상기 내장형 시스템(상기 내장형 시스템이 하나의 칩으로 제조되는 경우에는 '칩(chip)'이라 한다)을 제조하는 과정에서 이루어지므로, 상기 내장형 시스템(또는 칩)이 제조된 이후에는 상기 펌웨어를 수정할 수 없는 문제점이 있다.
CPU를 내장한 내장형 시스템에서, 상기 내장형 시스템이 파워 업(power up)되거나 또는 리셋(reset)되는 경우, 일반적으로 상기 CPU는 메모리의 가장 첫 번째 어드레스를 지시하는 값 또는 가장 마지막 어드레스를 지시하는 값을 리셋 어드레스(reset address)로서 출력한다.
상기 칩은 상기 리셋 어드레스에서부터 모든 작동을 시작한다. 상기 리셋 어드레스에 의하여 지정된 메모리 영역에는 리셋 루틴(reset routine)을 실행하기 위한 명령어가 저장되어 있으므로, 상기 CPU는 상기 리셋 루틴에 기술된 대로 순차적 으로 작동한다.
당업계에서 잘 알려진 바와 같이 상기 리셋 루틴은 칩을 초기화하고 부트 루틴(boot routine)을 시작시키는 등의 작업을 수행한다.
CPU를 구비하는 내장형 시스템에서 상기 내장형 시스템이 파워 업되거나 리셋되는 경우, 상기 CPU를 작동시키기 위한 시작 어드레스인 리셋 어드레스는 일반적으로 불휘발성 메모리에 저장된다.
상기 부트 루틴을 포함한 리셋 루틴은 상기 내장형 시스템으로 공급되는 전원이 오프(off)된 이후에도 상기 내장형 시스템에 유지되어 있어야만 상기 내장형 시스템에 전원이 다시 공급되는 경우 동일한 작동을 다시 수행할 수 있다. 만일, 상기 리셋 루틴을 ROM에 저장하는 경우, 리셋 루틴이 달라질 때마다 ROM을 바꿔야한다면, 즉 칩을 다시 제조해야 한다면, 시간적으로나 경제적으로나 손실이 크다.
또한, 칩을 제조하는 제조사의 입장에서 보면, 고객마다 서로 다른 리셋 루틴을 사용하고자하는 경우 동일한 제조공정으로 제작된 칩이라고 하더라도 서로 다른 ROM 마스크를 사용하여 마스킹을 해야하는 부담이 있다.
최근에는 펌웨어를 EEPROM 또는 플레쉬 메모리에 저장하는 기술이 개발되고 있다. 시작 어드레스가 플레쉬 메모리에 있을 경우, 고객이 자신이 사용하고자하는 용도에 적합하게 리셋 루틴을 변경할 수 있다. 따라서 칩을 제조하는 제조사는 서로 다른 고객을 위하여 상기 고객이 원하는 칩을 다시 제조할 필요는 없다.
그러나 상기 칩이 고객에게 전달되고, 상기 고객이 자신만의 고유한 리셋 루틴을 상기 플레쉬 메모리에 기입하기 위해서는 상기 칩을 작동시켜야 하는데, CPU 의 시작 어드레스에 의하여 상기 플레쉬 메모리가 선택되는 경우 상기 플레쉬 메모리에는 어떠한 프로그램 코드도 저장되어 있지 않으므로 상기 고객은 상기 칩을 작동시킬 수 없는 문제점이 있다.
일반적으로 CPU의 시작 어드레스는 CPU 제조사에 의해 고유하게 만들어지므로 상기 CPU를 사용한 시스템을 만드는 경우 상기 시작 어드레스를 임의로 변경할 수 없다. 따라서 플레쉬 메모리에 데이터의 기입을 가능하게 해주는 프로그램 코드가 필요한데, 상기 프로그램 코드를 플레쉬 로더(flash loader)라 한다. 상기 플레쉬 로더는 상기 플레쉬 메모리에 데이터를 기입하는 것을 도와주는 코드이므로, 상기 플레쉬 로더는 상기 플레쉬 메모리가 아닌 다른 메모리에 저장되어야 한다.
상기 다른 메모리는 전원의 공급여부에 무관하게 상기 플레쉬 로더를 저장해야 한다. 따라서 상기 플레쉬 로더를 저장하기 위한 메모리로서 ROM이 사용된다.
따라서 본 발명이 이루고자 하는 기술적인 과제는 상기 내장형 시스템(또는 칩)이 제조된 이후에는 상기 펌웨어를 수정할 수 없는 문제점과 리셋 루틴이 달라질 때마다 ROM을 바꿔야하는 문제점, 및 사용자의 요구에 따라 서로 다른 ROM 마스크를 사용하여 마스킹을 해야하는 문제점을 해결하기 위한 시스템과 방법을 제공하는 것이다.
상기 기술적 과제를 수행하기 위한 프로그램을 해독하고 수행하도록 명령하고 관리하는 CPU를 구비하는 내장형 시스템은 전기적으로 프로그램과 소거가 불가 능한 제1불휘발성 메모리; 전기적으로 프로그램과 소거가 가능한 제2불휘발성 메모리; 제1제어신호를 발생하는 제어신호 발생회로; 및 상기 제1제어신호, 상기 CPU로부터 출력되는 리셋 어드레스와 적어도 하나의 명령신호(IST_FET)에 응답하여 상기 제1불휘발성 메모리와 상기 제2불휘발성 메모리 중에서 어느 하나로 상기 리셋 어드레스를 전송하기 위한 디코더를 구비한다.
상기 제어신호 발생회로는 전기적으로 프로그램과 소거가 가능한 제3불휘발성 메모리를 구비하고, 상기 디코더가 상기 제3휘발성 메모리의 초기상태 또는 상기 제3휘발성 메모리 소거에 따라 발생된 상기 제1제어신호에 응답하여 상기 리셋 어드레스를 상기 제1불휘발성 메모리로 전송하면 상기 제1불휘발성 메모리는 상기 리셋 어드레스에 응답하여 자신의 리셋 루틴을 수행하고, 상기 디코더가 상기 제3휘발성 메모리 프로그램에 따라 발생된 상기 제1제어신호에 응답하여 상기 리셋 어드레스를 상기 제2불휘발성 메모리로 전송하면 상기 제2불휘발성 메모리는 자신의 리셋 루틴을 수행한다.
상기 제3불휘발성 메모리는 상기 제1불휘발성 메모리에서의 리셋 루틴이 종료되는 경우 프로그램된다.
상기 디코더는 비활성화된 상기 제1제어신호에 응답하여 상기 리셋 어드레스를 상기 제1불휘발성 메모리로 전송하고, 상기 디코더는 활성화된 상기 제1제어신호에 응답하여 상기 리셋 어드레스를 상기 제2불휘발성 메모리를 전송한다.
상기 제1불휘발성 메모리는 ROM이고, 상기 제2불휘발성 메모리는 플레쉬 메모리이다.
상기 제어신호 발생회로는 제2제어신호를 더 발생하고, 상기 디코더는 활성화된 상기 제2제어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것을 차단한다.
상기 디코더는 활성화된 상기 제2제어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것이 차단됨을 나타내는 신호를 상기 CPU로 출력한다.
상기 제어신호 발생회로는 전기적으로 프로그램과 소거가 가능한 제3불휘발성 메모리를 구비하고, 상기 제3불휘발성 메모리가 프로그램되는 경우 상기 제어신호 발생회로는 활성화된 상기 제2제어신호를 발생하고, 상기 제3불휘발성 메모리가 소거되는 경우 상기 제어신호 발생회로는 비활성화된 상기 제2제어신호를 발생한다.
상기 제어신호 발생회로는 제3제어신호를 더 발생하고, 상기 디코더는 활성화된 상기 제3제어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것을 영구히 차단한다.
상기 제어신호 발생회로는 제2제어신호를 더 발생하고, 상기 디코더는 활성화된 상기 제2제어신호에 응답하여 상기 제2불휘발성 메모리만을 선택하기 위한 상기 선택신호를 발생한다.
상기 제어신호 발생회로는 전기적으로 프로그램만이 가능한 제3불휘발성 메모리를 구비하고, 상기 제3불휘발성 메모리가 프로그램되는 경우 상기 제어신호 발생회로는 활성화된 제2제어신호를 발생한다.
상기 CPU는 리셋신호에 응답하여 상기 리셋 어드레스와 상기 명령신호를 상 기 디코더로 출력한다.
상기 기술적 과제를 달성하기 위한 프로그램을 해독하고 수행하도록 명령하고 관리하는 CPU를 구비하는 내장형 시스템은 전기적으로 프로그램과 소거가 불가능한 제1불휘발성 메모리; 전기적으로 프로그램과 소거가 가능한 제2불휘발성 메모리; 전기적으로 프로그램과 소거가 가능한 제3불휘발성 메모리; 및 상기 제3불휘발성 메모리의 프로그램과 소거 중 어느 하나에 따라 발생된 제1제어신호, 상기 CPU로부터 출력되는 리셋 어드레스와 적어도 하나의 명령신호에 응답하여 상기 리셋 어드레스를 상기 제1불휘발성 메모리와 상기 제2불휘발성 메모리 중에서 어느 하나를 출력하는 디코더를 구비한다.
상기 기술적 과제를 달성하기 위한 프로그램을 해독하고 수행하도록 명령하고 관리하는 CPU, 전기적으로 프로그램과 소거가 불가능한 제1불휘발성 메모리, 전기적으로 프로그램과 소거가 가능한 제2불휘발성 메모리, 전기적으로 프로그램과 소거가 가능한 제3불휘발성 메모리를 구비하는 시스템에서 리셋 루틴을 수행하는 방법은 제1파워 업 또는 제1리셋 시에, 상기 디코더가 상기 제3불휘발성 메모리의 초기상태 또는 상기 메모리가 소거됨에 따라 발생된 제1제어신호, 상기 CPU로부터 출력되는 리셋 어드레스와 적어도 하나의 명령신호에 응답하여 상기 리셋 어드레스를 상기 제1불휘발성 메모리로 전송하는 단계; 상기 제1불휘발성 메모리가 상기 리셋 어드레스에 기초하여 리셋 루틴을 수행하면서 상기 제2불휘발성 메모리가 필요로 하는 프로그램을 상기 제2불휘발성 메모리에 기입하는 단계; 제2파워 업 또는 제2리셋시, 상기 디코더가 상기 제2불휘발성 메모리가 프로그램됨에 따라 발생된 상기 제1제어신호에 응답하여 상기 리셋 어드레스를 상기 제2불휘발성 메모리로 전송하는 단계; 및 상기 제2불휘발성 메모리가 상기 리셋 어드레스에 기초하여 리셋루틴을 수행하는 단계를 구비한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도1은 본 발명의 실시예에 따른 CPU를 구비하는 내장형 시스템의 블록도를 나타낸다. 도1을 참조하면, 본 발명에 따른 내장형 시스템(100)은 CPU(110), 제1불휘발성 메모리(120), 제2불휘발성 메모리(131), 제어신호 발생회로(133), 및 디코더(140)를 구비한다.
상기 CPU(110)는 내장형 시스템에서 사용되는 프로그램을 해독하고 상기 프로그램을 수행하도록 명령하고 상기 내장형 시스템 또는 상기 프로그램을 종합적으로 관리한다.
제1불휘발성 메모리(120)는 전기적으로 프로그램과 소거가 불가능한 메모리이고, ROM으로 구현될 수 있다. 제2불휘발성 메모리(131)는 전기적으로 프로그램과 소거가 가능한 메모리이고, 플레쉬 메모리(flash memory)로 구현될 수 있다.
상기 제어신호 발생회로(133)는 적어도 하나의 불휘발성 메모리(135와 137) 를 구비한다.
상기 제3불휘발성 메모리(135)는 전기적으로 프로그램과 소거가 가능한 메모리이고, 플레쉬 메모리로 구현될 수 있다. 예컨대, 상기 제3불휘발성 메모리(135)는 소정의 데이터를 프로그램하는 과정(이를 '프로그램'이라 한다)을 통하여 특정의 데이터 값(예컨대, 논리 '하이' 또는 '1')을 유지하고, 상기 제3불휘발성 메모리(135)는 소정의 데이터를 소거(erase)하는 과정(이를 '소거'라 한다)을 통하여 특정의 데이터 값(예컨대, 논리 '로우' 또는 '0')을 유지한다. 당업자라면 상기 플레쉬 메모리(셀)의 프로그램 또는 소거과정을 잘 알고 있으므로 이에 대한 상세한 설명은 생략한다.
따라서 상기 제3불휘발성 메모리(135)는 프로그램 또는 소거에 따라 서로 다른 상태(예컨대, 하이 또는 로우)를 갖는 제1제어신호(IniUser)를 발생한다.
그리고 상기 제어신호 발생회로(133)는 제4불휘발성 메모리(137)를 더 구비할 수 있으며, 상기 제4불휘발성 메모리(137)는 상술한 바와 같은 프로그램 또는 소거에 따라 서로 다른 상태를 갖는 제2제어신호(RomHidden)를 발생한다.
도5는 도1에 도시된 내장형 시스템의 작동 타이밍도를 나타낸다. 도 1 및 도 5를 참조하면, 내장형 시스템(또는 칩(100))이 처음으로 고객 또는 사용자에게 전달된 때, 제1제어신호(IniUser)와 제2제어신호(RomHidden)각각은 비활성화 상태(예컨대, 논리 로우)로 설정되어 있다.
사용자에 의하여, 상기 칩(100)에 처음으로 전원이 공급(이를 '파워 업(power up)'이라 한다)되고 외부 리셋 신호(EXT_RST)가 활성화 상태(예컨대, 논리 하이)로 되는 경우, 상기 제어신호 발생회로(133)-더 엄밀하게는 제3불휘발성 메모리(135)는 논리 하이 또는 펄스 형태를 갖는 외부 리셋 신호(EXT_RST)에 응답하여 논리 로우를 갖는 제1제어신호(IniUser)를 디코더(140)로 출력한다.
상기 제어신호 발생회로(137)-더 엄밀하게는 제4불휘발성 메모리(137)는 제2제어신호(RomHidden)를 상기 디코더(140)로 더 출력할 수 있다. 상기 제2제어신호 (RomHidden)의 기능에 대해서는 후술한다.
상기 외부 리셋 신호(EXT_RST)가 논리 하이로 된 후 소정의 시간이 경과된 후 내부 리셋 신호(INT_RST)가 논리 하이로 된다. 따라서 CPU(110)는 논리 하이를 갖는 내부 리셋 신호(INT_RST)에 응답하여 리셋 어드레스(RST_ADD =C_ADD:n:0>=Ox00000)를 디코더(140)로 출력한다.
또한, 상기 CPU(110)는 리셋 어드레스(C_ADD:n:0>=Ox00000)에 상응하는 메모리 영역에 저장된 명령어를 읽어 내기 위한 논리 하이를 갖는 명령신호(IST_FET)를 디코더(140)로 출력한다.
상기 디코더(140)는 논리 로우를 갖는 제1제어신호(IniUser), 상기 리셋 어드레스(C_ADD<n:0>=Ox00000), 및 적어도 하나의 명령신호(IST_FET)에 응답하여 상기 리셋 어드레스(D_ADD<m:0>=Ox00000)를 제1불휘발성 메모리(120)로 전송한다.
즉, 상기 디코더(140)는 논리 로우를 갖는 제1제어신호(IniUser)와 논리 하이로된 명령신호(IST_FET)에 응답하여 논리 하이를 갖는 제1선택신호(ROM_SEL)를 제1불휘발성 메모리(120)로 전송하고, 리셋 어드레스(D_ADD<m:0>=Ox00000)를 상기 제1불휘발성 메모리(120)로 전송한다. 이때 제2선택신호(FM_SEL)는 논리 로우를 유 지하므로, 상기 제2불휘발성 메모리(131)는 디스에이블(disable) 상태를 유지한다.
상기 제1불휘발성 메모리(120)는 논리 하이를 갖는 제1선택신호(ROM_SEL)에 응답하여 인에이블(enable)되고, 어드레스(Ox00000)에 상응하는 상기 제1불휘발성 메모리(120)의 영역에 저장된 명령어는 데이터 버스(150)를 통하여 CPU(110)로 전송된다.
상기 CPU(110)가 상기 리셋 어드레스(Ox00000)에 상응하는 명령어를 해석하고 해석된 명령어에 상응하는 어드레스(C_ADD<n:0>)를 상기 디코더(140)로 전송하면, 상기 디코더(140)는 상기 어드레스(C_ADD<n:0>)에 상응하는 어드레스 (D_ADD<m:0>)를 제1불휘발성 메모리(120)로 전송한다. 상기 제1불휘발성 메모리 (120)는 상기 어드레스(D_ADD<m:0>)에 상응하는 명령어(예컨대, 리셋 핸들러 루틴(reset handler routine))에 따라 초기화를 수행한다.
그 후 상기 제1불휘발성 메모리(120)는 CPU(110)의 제어하에 상기 제1불휘발성 메모리(120)에 저장된 플레쉬 로더(flash loader)에 의하여 제2휘발성 메모리(131)에 필요한 OS(operating system)를 포함하는 프로그램을 상기 제2휘발성 메모리(131)에 기입(또는 저장)한다. 상기의 과정을 '제조사 코드에 따른 리셋 루틴' 또는 '초기화 모드(initialization mode)'라 한다.
도2는 도1에 도시된 디코더의 회로도를 나타낸다. 도2를 참조하면, 디코더(140)는 다수개의 논리 회로들(201 내지 227)을 구비한다. AND게이트(201)는 리셋 어드레스(C_ADD<n:0>)와 명령어 인출을 위한 명령신호(IST_FET)를 논리곱한다. AND게이트(203)는 AND게이트(201)의 출력신호와 제1제어신호(IniUser)를 논리곱 한다.
OR게이트(205)는 AND게이트(203)의 출력신호와 어드레스(C_ADD<n:0> =Ox80000~Ox80FFF)를 논리합 한다. 인버터(207)는 제2제어신호(RomHidden)을 반전시키고, AND게이트(209)는 OR게이트(205)의 출력신호와 인버터(207)의 출력신호를 논리곱하고 제1선택신호(ROM_SEL)를 출력한다.
인버터(211)는 AND게이트(203)의 출력신호를 반전시키고, AND게이트(213)는 인버터(211)의 출력신호와 어드레스(C_ADD<n:0>=Ox00000~OX7FFFFF)를 논리곱하고 제2선택신호(FM_SEL)를 출력한다.
버퍼(217)는 다수개의 인버터들(219와 221)의 체인으로 구성되고 어드레스 (C_ADD<n:0>=Ox90000~OX900FF)를 버퍼링하고 선택신호(FS_SEL)를 출력한다. 버퍼(223)는 다수개의 인버터들(225와 227)의 체인으로 구성되고 어드레스 (C_ADD<m:0>)를 버퍼링하고 어드레스(D_ADD<m:0>)을 출력한다.
도3은 플레쉬 메모리에 필요한 프로그램을 셋-업하기 전의 ROM과 상기 플레쉬 메모리의 메모리 맵을 나타낸다. 도 3을 참조하면, 제1불휘발성 메모리(120)는 다양한 코드, 예컨대 리셋 벡터(reset vector), Vectored Exceptions, 예외 루틴들(Exception routines), 리셋 핸들러 루틴(reset handler routine), 및 플레쉬 로더 등의 코드를 저장한다. 제2불휘발성 메모리(131)는 어떠한 코드도 저장하고 있지 않다.
칩(100)이 처음으로 고객에게 전달된 경우, 제2불휘발성 메모리(131)에는 아무런 프로그램(또는 코드)도 없으므로, 상기 칩(100)에 전원이 공급되어도 상기 제2불휘발성 메모리(131)는 아무런 작동을 수행하지 못한다. 따라서 상기 제2불휘발 성 메모리(131)에 상기 프로그램(또는 코드)이 설정되지 않은 상태에서, 상기 칩(100)을 작동시키기 위해서는 리셋 어드레스(Ox00000)가 제1불휘발성 메모리 (120)로 전송되어야 한다.
그러나, 상기 제1불휘발성 메모리(120)와 상기 제2불휘발성 메모리(131)는 서로 중복된 어드레스(예컨대, Ox00000, Ox0001C)의 영역을 가지고 있다. 따라서 CPU(110)는 상기 제1불휘발성 메모리(120)의 어드레스 영역과 상기 제2불휘발성 메모리(131)의 어드레스 영역을 구분하기 위한 명령신호(IST_FET와 DRW)를 디코더 (140)로 출력한다.
상기 디코더(140)는 명령어 인출을 위한 명령신호(IST_FET)와 논리 로우를 갖는 제1제어신호(IniUser)에 응답하여 논리 하이를 갖는 제1선택신호(ROM_SEL)를 발생하면, 상기 CPU(110)는 상기 제1불휘발성 메모리(120)에 저장되어 있고 상기 CPU(110)로부터 출력된 리셋 어드레스(Ox00000)에 상응하는 메모리 영역에 저장된 명령어를 가져올(fetch) 수 있다.
그러나. 상기 CPU(110)가 데이터를 기입하거나 데이터를 독출하기 위한 명령신호(DRW)를 논리 하이로 만들면, 상기 디코더(140)는 논리 하이를 갖는 명령신호(DRW)와 논리 하이를 갖는 상기 제1제어신호(ROM_SEL)에 응답하여 논리 하이를 갖는 제2선택신호(FM_SEL)를 발생한다. 따라서 상기 CPU(110)는 상기 제2불휘발성 메모리(120)에 저장되어 있고 상기 CPU(110)로부터 출력된 리셋 어드레스 (Ox00000)에 상응하는 메모리 영역에 저장된 명령어를 가져올(fetch) 수 있다.
즉, 제1불휘발성 메모리(120)의 제조사가 그림 3에 도시된 바와 같이 상기 제1불휘발성 메모리(120)에 소정의 코드를 저장해 놓으면, 상기 칩(100)에 최초로 전원이 공급되거나 리셋되는 경우, CPU(110)는 내부 리셋 신호(INT_RST)에 응답하여 명령어를 읽기 위한 리셋 어드레스(Ox00000)와 명령신호(IST_FET)를 디코더(140)로 출력하고, 상기 디코더(140)는 논리 로우를 갖는 제1제어신호 (IniUser)와 논리 하이를 갖는 명령신호(IST_FET)에 응답하여 제1불휘발성 메모리(120)를 인에이블 시키기 위한 제1제어신호(ROM_SEL)를 논리 하이로 만든다.
따라서 상기 제1불휘발성 메모리(120)는 리셋 핸들러 루틴에 의하여 초기화되고, 그 후에 플레쉬 로더는 제2불휘발성 메모리(131)에 사용자 고유의 리셋 핸들러 루틴을 포함한 모든 필요한 프로그램(또는 코드)을 셋업한다. 상기 제2불휘발성 메모리(131)에 상기 프로그램(또는 코드)의 셋업이 완료되면, 상기 제3불휘발성 메모리(133)는 프로그램된다.
즉, 상기 제1불휘발성 메모리(120)는 상기 CPU(110)의 제어하에 제조사 코드에 따라 리셋 루틴을 수행하여 상기 제2불휘발성 메모리(131)에 필요한 소정의 코드를 기입한다. 상기 초기화 모드가 종료된 후, 상기 제3불휘발성 메모리(133)는 프로그램된다.
그 후, 상기 내장형 시스템(또는 칩)이 파워-업 또는 리셋되는 경우, 상기 제어신호 발생회로, 즉 상기 제3불휘발성 메모리(135)는 외부 리셋 신호(EXT_RST)에 응답하여 논리 하이를 갖는 제1제어신호(IniUser)를 디코더(140)로 출력한다.
그리고 상기 CPU(110)의 리셋 신호인 내부 리셋 신호(INT_RST)가 논리 하이로 되는 경우, 상기 CPU(110)는 리셋 어드레스(C_ADD<n:0>=Ox00000)를 디코더(140) 로 출력하고, 상기 리셋 어드레스(C_ADD<n:0>=Ox00000)에 상응하는 명령어를 읽기 위한 명령신호(IST_FET)를 디코더(140)로 출력한다.
상기 디코더(140)는 논리 하이를 갖는 상기 제1제어신호(IniUser)와 논리 하이를 갖는 상기 명령신호(IST_FET)에 응답하여 논리 하이를 갖는 제2선택신호 (FM_SEL)를 발생하고, 상기 리셋 어드레스와 관련된 어드레스(D_ADD<m:0>)를 출력한다. 이때 제1선택신호(ROM_SEL)는 논리 로우를 유지하므로, 상기 제1불휘발성 메모리(120)는 디스에이블 상태를 유지한다.
그러나, 상기 제2불휘발성 메모리(131)는 논리 하이를 갖는 상기 제2선택신호(FM_SEL)에 응답하여 인에이블되고, 상기 제2불휘발성 메모리(131)는 리셋 어드레스(Ox00000)에 상응하는 영역에 저장된 명령어(즉, 사용자가 설정한 명령어)를 버스(150)를 통하여 CPU(110)로 출력한다.
상기 CPU(110)는 사용자가 설정한 명령어를 해석하고 해석된 명령어에 상응하는 어드레스(C_ADD<n:0>)를 상기 디코더(140)로 전송하면, 상기 디코더(140)는 상기 어드레스(C_ADD<n:0>)에 상응하는 어드레스(D_ADD<m:0>)를 제2불휘발성 메모리(131)로 전송한다.
상기 제2불휘발성 메모리(131)는 상기 어드레스(D_ADD<m:0>)에 상응하는 명령어(예컨대, 사용자 특성의 리셋 핸들러 루틴(user specific reset handler routine))에 따라 초기화를 수행한다. 그 후 상기 제2불휘발성 메모리(131)는 CPU(110)의 제어하에 사용자가 설정한 사용자 코드를 수행한다. 이를 '사용자 고유코드에 따른 리셋 루틴' 또는 '사용자 모드'라 한다.
한편, 초기화 모드에서 칩(100)이 작동하다가 여러 가지 예외(exception)가 발생되는 경우 벡터드 인트럽트(vectored interrupt)를 지원하는 CPU에서는 정해진 어드레스로 제어가 옮겨진다. 따라서 이 벡터드 익셉션(vectored exception)영역도 제1불휘발성 메모리(120)에 저장되어 있어야 한다.
따라서 상기 벡터드 익셉션(vectored exception)영역에 대한 어드레스는 초기화 모드에서는 제1불휘발성 메모리(120)에 사상되어 있어야 하고 사용자 모드에서는 제2불휘발성 메모리(131)에 사상되어 있어야 한다.
도4는 플레쉬 메모리에 필요한 프로그램을 셋-업한 후의 ROM과 상기 플레쉬 메모리의 메모리 맵을 나타낸다. 도 4를 참조하면, 사용자 모드에서 상기 칩(100)으로 전원이 공급되거나 리셋되는 경우, 상기 디코더(140)는 논리 하이를 갖는 제1제어신호(IniUser), 리셋 어드레스(Ox00000)와 명령신호(IST_FET)에 응답하여 논리 하이를 갖는 제2선택신호(FM_SEL)를 발생한다. 따라서 상기 칩(100)은 사용자가 셋업한 상기 사용자 고유코드에 따른 리셋 루틴에 따라 작동한다.
스마트 카드와 같이 보안성이 중요시되는 시스템(또는 칩)에서, 고객들은 상기 칩 제조사가 제공하는 부트 루틴 및/또는 플레쉬 로더에 대한 확신을 갖지 못하는 경우가 있다. 왜냐하면, 칩 제조사에서 트로이 목마코드와 같은 백 도어(back door)를 만들어 놓을 것을 우려하기 때문이다.
본 발명에 따른 내장형 시스템(또는 칩)은 고객들은 자신의 고유의 코드를 제2불휘발성 메모리(131)에 저장(또는 설정)한 이 후에 상기 CPU(110)가 상기 제1불휘발성 메모리(120)에 접근하지 못하게 할 수 있다.
즉, 사용자가 칩 제조사에서 제공하는 제1불휘발성 메모리(120)에 저장된 프로그램이 상기 내장형 시스템(또는 칩)의 작동에 관여하는 것을 우려하여 상기 제1불휘발성 메모리(120)를 제거하기를 원하는 경우, 본 발명에 따른 내장형 시스템(100)의 제어신호 발생회로(133)는 제2제어신호(RomHidden)를 발생하기 위한 제4불휘발성 메모리(137)를 더 구비한다.
상기 제어신호 발생회로(133)가 외부 리셋 신호(EXT_RST)에 응답하여 논리 로우를 갖는 제1제어신호(IniUser)와 논리 하이를 갖는 제2제어신호(RomHidden)를 발생하면, 상기 CPU(110)가 제1불휘발성 메모리(120)를 선택하기 위한 어드레스를 출력하는 경우라도 상기 디코더(140)는 논리 하이를 갖는 제2제어신호(RomHidden)에 응답하여 상기 CPU(110)가 상기 제1불휘발성 메모리(120)에 접근하는 것을 차단하고, 접근이 차단됨을 나타내는 신호(IVD)를 상기 CPU(110)로 출력한다.
따라서 상기 CPU(110)는 상기 제1불휘발성 메모리(120)에 저장된 프로그램(또는 코드)를 실행할 수 없고 원하는 데이터를 독출할 수도 없다.
그러나, 상기 제2제어신호(RomHidden)의 발생에 관련된 상기 제4불휘발성 메모리(157)가 소거되는 경우, 상기 제4불휘발성 메모리(137)는 논리 로우를 갖는 상기 제2제어신호(RomHidden)를 발생한다.
따라서 상기 디코더(140)는 논리 로우를 갖는 제1제어신호(IniUser)와 논리 로우를 갖는 상기 제2제어신호(RomHidden)에 응답하여 논리 하이를 갖는 제1선택신호(ROM_SEL)를 발생시킬 수 있다. 즉, 초기화 모드에서는 상기 제1불휘발성 메모리(120)에 저장되어 있는 리셋 핸들러 루틴에서 초기화가 이루어진다.
도6은 본 발명의 다른 실시예에 따른 프로그램을 해독하고 수행하도록 명령하고 관리하는 CPU를 구비하는 내장형 시스템의 블록도를 나타낸다. 도 6을 참조하면, CPU를 구비하는 내장형 시스템(100')는 CPU(110), 제1불휘발성 메모리(120), 제2불휘발성 메모리(131), 제어신호 발생회로(133'), 및 디코더(140')를 구비한다.
상기 제어신호 발생회로(133')는 적어도 두 개의 불휘발성 메모리들(135, 137, 139, 및 141)을 구비한다. 상기 디코더(140')의 상세한 내부블록은 도 2를 참조하여 구현될 수 있다.
불휘발성 메모리(135)는 제1불휘발성 메모리(120)와 제2불휘발성 메모리 (131)중에서 어느 하나를 선택하기 위한 제1제어신호(IniUser)를 발생한다.
불휘발성 메모리(137)는 제2제어신호(RomHidden)를 발생하고, 불휘발성 메모리(139)는 제3제어신호(UserLock)를 발생하고, 불휘발성 메모리(141)는 제4제어신호(RomHiddenLock)를 발생한다. 각 제어신호(IniUser, RomHidden, UserLock, 및 RomHiddenLock)의 번호는 설명의 편의를 위하여 임의적으로 사용된 것이다.
상기 제어신호 발생회로(133)는 제3제어신호(UserLock)를 발생하기 위한 전기적으로 프로그램만이 가능한 불휘발성 메모리(139)를 구비한다.
논리 하이를 갖는 상기 제3제어신호(UserLock)는 칩(100)이 사용자 모드로 설정된 후 상기 칩(100)이 영구히 초기화 모드로 돌아가는 것을 금지한다. 즉, 논리 하이를 갖는 제2제어신호(RomHidden)에 의하여 상기 CPU(110)가 상기 제1불휘발성 메모리(120)에 접근이 금지된 후 예상치 못한 잘못된 조작으로 인하여 사용자 모드가 초기화 모드로 바뀌는 경우 상기 칩(100)은 더 이상 사용될 수 없다.
따라서 이를 방지하기 위하여 논리 하이를 갖는 제3제어신호(UserLock)가 필요하다. 즉, 제1제어신호를 발생하는 불휘발성 메모리(135)를 프로그램하고 제2제어신호를 발생하는 불휘발성 메모리(137)를 프로그램한 후, 제3제어신호를 발생하는 불휘발성 메모리(139)를 프로그램하는 경우 상기 칩(100)은 다시 초기화 모드로 돌아 갈 수 없다.
예컨대. 상기 불휘발성 메모리(139)의 초기상태는 논리 로우이고, 상기 불휘발성 메모리(139)가 프로그램되는 경우, 상기 불휘발성 메모리(139)는 외부 리셋 신호(EXT_RST)에 응답하여 논리 하이를 갖는 제3제어신호(UserLock)를 발생한다.
상기 불휘발성 메모리(139)가 한번 프로그램되면, 상기 칩(100)은 영구히 사용자 모드로만 사용된다. 즉, CPU(100)는 제1불휘발성 메모리(120)를 영구히 억세스 할 수 없다.
또한, 상기 제어신호 발생회로(133)는 제4제어신호(RomHiddenLock)를 발생하기 위한 전기적으로 프로그램만이 가능한 불휘발성 메모리(141)를 구비한다.
상기 제4제어신호(RomHiddenLock)를 발생하기 위한 불휘발성 메모리(141)의 초기상태는 논리 로우이다. 상기 불휘발성 메모리(141)가 한번 프로그램되면, 상기 불휘발성 메모리(141)는 외부 리셋 신호(EXT_RST)에 응답하여 논리 하이를 갖는 제4제어신호(RomHiddenLock)를 발생한다.
상기 불휘발성 메모리(141)가 한번 프로그램되면, 상기 칩(100)은 영구히 사용자 모드로만 사용된다. 즉, CPU(100)는 제1불휘발성 메모리(120)를 영구히 억세스 할 수 없다.
예컨대, 상기 제4제어신호(RomHiddenLock)가 논리 로우인 경우 상기 제2제어신호(RomHidden)를 발생하는 불휘발성 메모리(137)는 프로그램 또는 소거가 가능하다. 그러나 상기 제4제어신호(RomHiddenLock)가 논리 하이로 되면, 상기 제2제어신호(RomHidden)를 발생하는 불휘발성 메모리(137)는 프로그램 또는 소거가 불가능하다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 시스템과 방법은 다음과 같은 이점이 있다.
첫째, 부트 루틴을 포함한 리셋 루틴을 ROM에 저장하는 경우, 상기 리셋 루틴이 달라질 때마다 ROM을 바꾸지 않아도 되는 이점이 있다.
둘째, 칩을 제조하는 제조사의 입장에서 보면, 고객마다 서로 다른 리셋 루틴을 사용하고자하는 경우 동일한 제조공정으로 제작된 칩이라고 하더라도 서로 다른 ROM 마스크를 사용하여 마스킹을 할 필요가 없다.
셋째 시작 어드레스가 플레쉬 메모리에 있을 경우, 고객이 자신이 사용하고자하는 용도에 적합하게 리셋 루틴을 변경할 수 있는 효과가 있다.
넷째, 사용자는 자신의 고유코드에 따른 리셋 루틴을 용이하게 설정할 수 있다.

Claims (23)

  1. 프로그램을 해독하고 수행하도록 명령하고 관리하는 CPU를 구비하는 내장형 시스템에 있어서,
    전기적으로 프로그램과 소거가 불가능한 제1불휘발성 메모리;
    전기적으로 프로그램과 소거가 가능한 제2불휘발성 메모리;
    제1제어신호(Custom)를 발생하는 제어신호 발생회로; 및
    상기 제1제어신호, 상기 CPU로부터 출력되는 리셋 어드레스와 적어도 하나의 명령신호에 응답하여 상기 제1불휘발성 메모리와 상기 제2불휘발성 메모리 중에서 어느 하나로 상기 리셋 어드레스를 전송하기 위한 디코더를 구비하는 것을 특징으로 하는 시스템.
  2. 제1항에 있어서,
    상기 제어신호 발생회로는 전기적으로 프로그램과 소거가 가능한 제3불휘발성 메모리를 구비하고,
    상기 디코더가 상기 제3휘발성 메모리의 초기상태 또는 상기 제3휘발성 메모리 소거에 따라 발생된 상기 제1제어신호에 응답하여 상기 리셋 어드레스를 상기 제1불휘발성 메모리로 전송하면 상기 제1불휘발성 메모리는 상기 리셋 어드레스에 응답하여 자신의 리셋 루틴을 수행하고,
    상기 디코더가 상기 제3휘발성 메모리 프로그램에 따라 발생된 상기 제1제어신호에 응답하여 상기 리셋 어드레스를 상기 제2불휘발성 메모리로 전송하면 상기 제2불휘발성 메모리는 자신의 리셋 루틴을 수행하는 것을 특징으로 하는 시스템.
  3. 제2항에 있어서, 상기 제3불휘발성 메모리는 상기 제1불휘발성 메모리에서의 리셋 루틴이 종료되는 경우 프로그램되는 것을 특징으로 하는 시스템.
  4. 제1항에 있어서,
    상기 디코더는 비활성화된 상기 제1제어신호에 응답하여 상기 리셋 어드레스를 상기 제1불휘발성 메모리로 전송하고,
    상기 디코더는 활성화된 상기 제1제어신호에 응답하여 상기 리셋 어드레스를 상기 제2불휘발성 메모리를 전송하는 것을 특징으로 하는 시스템.
  5. 제1항에 있어서,
    상기 제1불휘발성 메모리는 ROM이고, 상기 제2불휘발성 메모리는 플레쉬 메모리인 것을 특징으로 하는 시스템.
  6. 제1항에 있어서, 상기 제어신호 발생회로는 제2제어신호를 더 발생하고,
    상기 디코더는 활성화된 상기 제2제어신호에 응답하여 상기 CPU가 상기 제1 불휘발성 메모리에 접근하는 것을 차단하는 것을 특징으로 하는 시스템.
  7. 제6항에 있어서, 상기 디코더는 활성화된 상기 제2제어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것이 차단됨을 나타내는 신호를 상기 CPU로 출력하는 것을 특징으로 하는 시스템.
  8. 제6항에 있어서,
    상기 제어신호 발생회로는 전기적으로 프로그램과 소거가 가능한 제3불휘발성 메모리를 구비하고,
    상기 제3불휘발성 메모리가 프로그램되는 경우 상기 제어신호 발생회로는 활성화된 상기 제2제어신호를 발생하고,
    상기 제3불휘발성 메모리가 소거되는 경우 상기 제어신호 발생회로는 비활성화된 상기 제2제어신호를 발생하는 것을 특징으로 하는 시스템.
  9. 제8항에 있어서,
    상기 제어신호 발생회로는 제3제어신호를 더 발생하고,
    상기 디코더는 활성화된 상기 제3제어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것을 영구히 차단하는 것을 특징으로 하는 시스템.
  10. 제1항에 있어서,
    상기 제어신호 발생회로는 제2제어신호를 더 발생하고, 상기 디코더는 활성화된 상기 제2제어신호에 응답하여 상기 제2불휘발성 메모리만을 선택하기 위한 상기 선택신호를 발생하는 것을 특징으로 하는 시스템.
  11. 제10항에 있어서,
    상기 제어신호 발생회로는 전기적으로 프로그램만이 가능한 제3불휘발성 메모리를 구비하고,
    상기 제3불휘발성 메모리가 프로그램되는 경우 상기 제어신호 발생회로는 활성화된 제2제어신호를 발생하는 것을 특징으로 하는 시스템.
  12. 제1항에 있어서, 상기 CPU는 리셋신호에 응답하여 상기 리셋 어드레스와 상기 명령신호를 상기 디코더로 출력하는 것을 특징으로 하는 시스템.
  13. 프로그램을 해독하고 수행하도록 명령하고 관리하는 CPU를 구비하는 내장형 시스템에 있어서,
    전기적으로 프로그램과 소거가 불가능한 제1불휘발성 메모리;
    전기적으로 프로그램과 소거가 가능한 제2불휘발성 메모리;
    전기적으로 프로그램과 소거가 가능한 제3불휘발성 메모리; 및
    상기 제3불휘발성 메모리의 프로그램과 소거 중 어느 하나에 따라 발생된 제1제어신호, 상기 CPU로부터 출력되는 리셋 어드레스와 적어도 하나의 명령신호에 응답하여 상기 리셋 어드레스를 상기 제1불휘발성 메모리와 상기 제2불휘발성 메모리 중에서 어느 하나를 출력하는 디코더를 구비하는 것을 특징으로 하는 시스템.
  14. 제13항에 있어서,
    상기 시스템은 전기적으로 프로그램과 소거가 가능한 제4불휘발성 메모리를 더 구비하고,
    상기 디코더는 상기 제4불휘발성 메모리가 프로그램됨에 따라 발생된 제2제어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것을 차단하는 것을 특징으로 하는 시스템.
  15. 제13항에 있어서,
    상기 시스템은 전기적으로 프로그램과 소거가 가능한 제4불휘발성 메모리를 더 구비하고,
    상기 디코더는 상기 제4불휘발성 메모리가 프로그램됨에 따라 발생된 제2제어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것을 차단하고,
    상기 디코더는 상기 제1제어신호와 상기 제4불휘발성 메모리가 소거됨에 따라 발생된 제2제어신호에 응답하여 상기 리셋 어드레스를 상기 제1불휘발성 메모리와 상기 제2불휘발성 메모리 중에서 어느 하나로 출력하는 것을 특징으로 하는 시스템.
  16. 제15항에 있어서,
    상기 시스템은 전기적으로 프로그램만이 가능한 제5불휘발성 메모리를 더 구비하고,
    상기 디코더는 상기 제5불휘발성 메모리 프로그램됨에 따라 발생된 제3제어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것을 영구히 차단하는 것을 특징으로 하는 시스템.
  17. 제13항에 있어서,
    상기 시스템은 전기적으로 프로그램만이 가능한 제4불휘발성 메모리를 더 구비하고,
    상기 디코더는 상기 제4불휘발성 메모리가 프로그램됨에 따라 발생된 제2제어신호에 응답하여 상기 제3불휘발성 메모리의 프로그램 또는 소거에 무관하게 상기 리셋 어드레스와 관련된 어드레스를 상기 제2불휘발성 메모리로 출력하는 것을 특징으로 하는 시스템.
  18. 제13항에 있어서, 상기 CPU는 리셋신호 또는 파워 업과 관련된 신호에 응답하여 상기 리셋 어드레스와 상기 적어도 하나의 제어신호를 출력하는 것을 특징으로 하는 시스템.
  19. 프로그램을 해독하고 수행하도록 명령하고 관리하는 CPU, 전기적으로 프로그램과 소거가 불가능한 제1불휘발성 메모리, 전기적으로 프로그램과 소거가 가능한 제2불휘발성 메모리, 전기적으로 프로그램과 소거가 가능한 제3불휘발성 메모리를 구비하는 시스템에서 리셋 루틴을 수행하는 방법에 있어서,
    제1파워 업 또는 제1리셋 시에, 상기 디코더가 상기 제3불휘발성 메모리의 초기상태 또는 상기 메모리가 소거됨에 따라 발생된 제1제어신호, 상기 CPU로부터 출력되는 리셋 어드레스와 적어도 하나의 명령신호에 응답하여 상기 리셋 어드레스를 상기 제1불휘발성 메모리로 전송하는 단계;
    상기 제1불휘발성 메모리가 상기 리셋 어드레스에 기초하여 리셋 루틴을 수행하면서 상기 제2불휘발성 메모리가 필요로 하는 프로그램을 상기 제2불휘발성 메모리에 기입하는 단계;
    제2파워 업 또는 제2리셋시, 상기 디코더가 상기 제2불휘발성 메모리가 프로그램됨에 따라 발생된 상기 제1제어신호에 응답하여 상기 리셋 어드레스를 상기 제2불휘발성 메모리로 전송하는 단계; 및
    상기 제2불휘발성 메모리가 상기 리셋 어드레스에 기초하여 리셋루틴을 수행하는 단계를 구비하는 것을 특징으로 하는 리셋 루틴을 수행하는 방법.
  20. 제19항에 있어서, 상기 시스템이 전기적으로 프로그램과 소거가 가능한 제4불휘발성 메모리를 더 구비하는 경우, 상기 리셋 루틴을 수행하는 방법은,
    상기 디코더가 상기 제4불휘발성 메모리가 프로그램됨에 따라 발생된 제2제 어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것을 차단하는 단계를 더 구비하는 것을 특징으로 하는 리셋 루틴을 수행하는 방법.
  21. 제19항에 있어서, 상기 시스템이 전기적으로 프로그램과 소거가 가능한 제4불휘발성 메모리를 더 구비하는 경우, 상기 리셋 루틴을 수행하는 방법은,
    상기 디코더가 상기 제4불휘발성 메모리가 프로그램됨에 따라 발생된 제2제어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것을 차단하고,
    상기 디코더가 상기 제1제어신호와 상기 제4불휘발성 메모리가 소거됨에 따라 발생된 제2제어신호에 응답하여 상기 리셋 어드레스를 상기 제1불휘발성 메모리와 상기 제2불휘발성 메모리 중에서 어느 하나로 전송하는 단계를 더 구비하는 것을 특징으로 하는 리셋 루틴을 수행하는 방법.
  22. 제21항에 있어서, 상기 시스템은 전기적으로 프로그램만이 가능한 제5불휘발성 메모리를 더 구비하는 경우, 상기 리셋 루틴을 수행하는 방법은,
    상기 디코더가 상기 제5불휘발성 메모리 프로그램됨에 따라 발생된 제3제어신호에 응답하여 상기 CPU가 상기 제1불휘발성 메모리에 접근하는 것을 영구히 차단하는 단계를 더 구비하는 것을 특징으로 하는 리셋 루틴을 수행하는 방법.
  23. 제19항에 있어서, 상기 시스템은 전기적으로 프로그램만이 가능한 제4불휘발 성 메모리를 더 구비하는 경우, 상기 리셋 루틴을 수행하는 방법은,
    상기 디코더가 상기 제4불휘발성 메모리가 프로그램됨에 따라 발생된 제2제어신호에 응답하여 상기 제3불휘발성 메모리의 프로그램 또는 소거에 무관하게 상기 리셋 어드레스와 관련된 어드레스를 상기 제2불휘발성 메모리로 출력하는 단계를 더 구비하는 것을 특징으로 하는 리셋 루틴을 수행하는 방법.
KR1020040051801A 2004-07-03 2004-07-03 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법 KR100604877B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020040051801A KR100604877B1 (ko) 2004-07-03 2004-07-03 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법
US11/050,477 US7493484B2 (en) 2004-07-03 2005-02-03 Method and apparatus for executing the boot code of embedded systems
FR0506712A FR2872603B1 (fr) 2004-07-03 2005-06-30 Procede et dispositif pour executer le code d'amorcage de systemes integres
DE102005031530.5A DE102005031530B4 (de) 2004-07-03 2005-07-01 Speichersystem, Einchip-Mikrocontroller und eingebettetes System
CNB200510082149XA CN100517228C (zh) 2004-07-03 2005-07-04 执行嵌入系统的引导程序代码的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040051801A KR100604877B1 (ko) 2004-07-03 2004-07-03 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법

Publications (2)

Publication Number Publication Date
KR20060002664A KR20060002664A (ko) 2006-01-09
KR100604877B1 true KR100604877B1 (ko) 2006-07-31

Family

ID=36076865

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040051801A KR100604877B1 (ko) 2004-07-03 2004-07-03 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법

Country Status (3)

Country Link
US (1) US7493484B2 (ko)
KR (1) KR100604877B1 (ko)
CN (1) CN100517228C (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101094245B1 (ko) * 2010-05-25 2011-12-19 주식회사 씨앤엠마이크로 저전력소비와 pcb기판 단순화를 위한 셋탑박스 메인 디코더칩 구조
US11436461B2 (en) 2005-02-22 2022-09-06 Kepler Computing Inc. Mobile phone with magnetic card emulation

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100784866B1 (ko) 2006-12-13 2007-12-14 삼성전자주식회사 쓰기 시간을 줄일 수 있는 불 휘발성 메모리 장치 및그것을 포함한 메모리 카드
US9741027B2 (en) 2007-12-14 2017-08-22 Tyfone, Inc. Memory card based contactless devices
US20090282419A1 (en) * 2008-05-09 2009-11-12 International Business Machines Corporation Ordered And Unordered Network-Addressed Message Control With Embedded DMA Commands For A Network On Chip
US7961101B2 (en) 2008-08-08 2011-06-14 Tyfone, Inc. Small RFID card with integrated inductive element
US8451122B2 (en) 2008-08-08 2013-05-28 Tyfone, Inc. Smartcard performance enhancement circuits and systems
US20100033310A1 (en) * 2008-08-08 2010-02-11 Narendra Siva G Power negotation for small rfid card
US8231061B2 (en) 2009-02-24 2012-07-31 Tyfone, Inc Contactless device with miniaturized antenna
US10401961B2 (en) * 2009-06-09 2019-09-03 Immersion Corporation Method and apparatus for generating haptic effects using actuators
TWI497414B (zh) * 2009-06-23 2015-08-21 Phison Electronics Corp 檔案執行方法及系統
US8245024B2 (en) 2009-08-21 2012-08-14 Micron Technology, Inc. Booting in systems having devices coupled in a chained configuration
US8429391B2 (en) 2010-04-16 2013-04-23 Micron Technology, Inc. Boot partitions in memory devices and systems
GB2493340A (en) * 2011-07-28 2013-02-06 St Microelectronics Res & Dev Address mapping of boot transactions between dies in a system in package
CN103345456B (zh) * 2013-06-21 2015-12-02 烽火通信科技股份有限公司 调节BootLoader启动地址的电路及方法
US10459735B2 (en) * 2015-11-04 2019-10-29 Texas Instruments Incorporated Scalable boot options for a processor/controller
US10979232B2 (en) * 2018-05-31 2021-04-13 Motorola Solutions, Inc. Method for provisioning device certificates for electronic processors in untrusted environments
US10430181B1 (en) * 2018-08-20 2019-10-01 Quanta Computer Inc. Retrieving updated firmware code
TWI690930B (zh) * 2019-01-09 2020-04-11 力晶積成電子製造股份有限公司 補償非易失性記憶元件在編程時電荷流失與源極線偏置的方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1021085A (ja) 1996-07-05 1998-01-23 Nec Corp コンピュータシステム
JPH10133958A (ja) 1996-10-31 1998-05-22 Nec Corp 通信装置制御回路
JP2000293375A (ja) * 1999-04-05 2000-10-20 Toshiba Information Systems (Japan) Corp オブジェクト指向計算機システム及びプログラムを記憶したコンピュータ読み取り可能な記憶媒体
JP2000293376A (ja) 1999-04-05 2000-10-20 Nec Corp ブートプログラムの切替回路及び切替方法
JP2004013719A (ja) 2002-06-10 2004-01-15 Fujitsu Ltd 多重化された不揮発性メモリの更新回路、及び多重化された不揮発性メモリの更新方法
KR20040017081A (ko) * 2002-08-20 2004-02-26 엘지전자 주식회사 컴퓨터 시스템에서의 펌웨어 기록방법

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5388267A (en) 1991-05-29 1995-02-07 Dell Usa, L.P. Method and apparatus for updating and restoring system BIOS functions while maintaining BIOS integrity
US5634079A (en) 1992-05-15 1997-05-27 Zenith Data Systems Corporation System for providing for a parallel port with standard signals and a flash recovery mode with second predetermined signals redefining parallel port with alternate functions
US6182187B1 (en) * 1993-04-07 2001-01-30 Compaq Computer Corporation System ROM including a flash EPROM and a ROM for storing primary boot code replacing a block flash EPROM
US5805882A (en) * 1996-07-19 1998-09-08 Compaq Computer Corporation Computer system and method for replacing obsolete or corrupt boot code contained within reprogrammable memory with new boot code supplied from an external source through a data port
US5822243A (en) * 1997-09-09 1998-10-13 Macronix International Co., Ltd. Dual mode memory with embedded ROM
US5987605A (en) * 1998-02-28 1999-11-16 Hewlett-Packard Co. Methods and apparatus for dual-boot memory selection, update, and recovery in a programmable device
JP2000148594A (ja) * 1998-11-10 2000-05-30 Mitsubishi Electric Corp Romデータの読み出しプロテクト回路
JP3727485B2 (ja) 1999-04-02 2005-12-14 シャープ株式会社 不揮発性メモリ内蔵マイクロコンピュータ
US6601167B1 (en) * 2000-01-14 2003-07-29 Advanced Micro Devices, Inc. Computer system initialization with boot program stored in sequential access memory, controlled by a boot loader to control and execute the boot program
US6687154B2 (en) * 2002-02-25 2004-02-03 Aplus Flash Technology, Inc. Highly-integrated flash memory and mask ROM array architecture
US7111202B2 (en) * 2002-06-28 2006-09-19 Hewlett-Packard Development Company, L.P. Autonomous boot failure detection and recovery
JP2004038529A (ja) 2002-07-03 2004-02-05 Nec Corp 情報処理装置
CN100337197C (zh) 2002-10-14 2007-09-12 华为技术有限公司 一种引导程序存储装置及其保障在线升级的方法
US7272709B2 (en) * 2002-12-26 2007-09-18 Micron Technology, Inc. Using chip select to specify boot memory
US7206971B2 (en) * 2003-04-07 2007-04-17 Lsi Logic Corporation Selectable and updatable computer boot memory

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1021085A (ja) 1996-07-05 1998-01-23 Nec Corp コンピュータシステム
JPH10133958A (ja) 1996-10-31 1998-05-22 Nec Corp 通信装置制御回路
JP2000293375A (ja) * 1999-04-05 2000-10-20 Toshiba Information Systems (Japan) Corp オブジェクト指向計算機システム及びプログラムを記憶したコンピュータ読み取り可能な記憶媒体
JP2000293376A (ja) 1999-04-05 2000-10-20 Nec Corp ブートプログラムの切替回路及び切替方法
JP2004013719A (ja) 2002-06-10 2004-01-15 Fujitsu Ltd 多重化された不揮発性メモリの更新回路、及び多重化された不揮発性メモリの更新方法
KR20040017081A (ko) * 2002-08-20 2004-02-26 엘지전자 주식회사 컴퓨터 시스템에서의 펌웨어 기록방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
10021085
12293375

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436461B2 (en) 2005-02-22 2022-09-06 Kepler Computing Inc. Mobile phone with magnetic card emulation
US11720777B2 (en) 2005-02-22 2023-08-08 Icashe, Inc. Mobile phone with magnetic card emulation
KR101094245B1 (ko) * 2010-05-25 2011-12-19 주식회사 씨앤엠마이크로 저전력소비와 pcb기판 단순화를 위한 셋탑박스 메인 디코더칩 구조

Also Published As

Publication number Publication date
CN1734420A (zh) 2006-02-15
CN100517228C (zh) 2009-07-22
KR20060002664A (ko) 2006-01-09
US20060005005A1 (en) 2006-01-05
US7493484B2 (en) 2009-02-17

Similar Documents

Publication Publication Date Title
KR100604877B1 (ko) 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법
US5327531A (en) Data processing system including corrupt flash ROM recovery
KR100375217B1 (ko) 전기적으로 재기입 가능한 불휘발성 메모리를 구비하는마이크로컨트롤러
US6505279B1 (en) Microcontroller system having security circuitry to selectively lock portions of a program memory address space
US6339815B1 (en) Microcontroller system having allocation circuitry to selectively allocate and/or hide portions of a program memory address space
KR100508087B1 (ko) 낸드 플래시 메모리를 이용한 부트 시스템 및 그 방법
KR100543442B1 (ko) 불 휘발성 반도체 메모리 장치의 메모리 블록들의 쓰기방지 영역을 설정하는 장치
US6115814A (en) Memory paging scheme for 8051 class microcontrollers
JPH08278895A (ja) データ処理装置
JP2004118826A (ja) フラッシュメモリを用いてブーティングされるシステム装置及びそのブーティング方法
JPH1050078A (ja) 電気的に消去およびプログラムが可能なリード・オンリ・メモリの消去およびプログラミング保護方法および装置
US7613928B2 (en) Flash device security method utilizing a check register
US5950222A (en) Microcomputer using a non-volatile memory
US9542113B2 (en) Apparatuses for securing program code stored in a non-volatile memory
EP0858040B1 (en) Microcomputer containing flash EEPROM therein
CN110968254A (zh) 一种非易失性存储器的分区保护方法及装置
US7310277B2 (en) Non-volatile semiconductor storage device with specific command enable/disable control signal
JP4958201B2 (ja) マイクロコンピュータ
JP3197865B2 (ja) マイクロコンピュータ
JP2005107608A (ja) 電子機器、不揮発性メモリ及び不揮発性メモリのデータ書き換え方法
CN111159071B (zh) eFlash存储器实现OTP的装置、方法及OTP存储器
JP2003044457A (ja) データプロセッサ
JP3866269B2 (ja) マイクロコンピュータ
KR20000033437A (ko) 부트스트랩로더 기능 구현 장치
JP3695931B2 (ja) マイクロコンピュータ

Legal Events

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

Payment date: 20130701

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140630

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150630

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170630

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180629

Year of fee payment: 13