KR20080075110A - 내장형 제어기를 통한 플래시 스토리지의 초기화 - Google Patents
내장형 제어기를 통한 플래시 스토리지의 초기화 Download PDFInfo
- Publication number
- KR20080075110A KR20080075110A KR1020087011343A KR20087011343A KR20080075110A KR 20080075110 A KR20080075110 A KR 20080075110A KR 1020087011343 A KR1020087011343 A KR 1020087011343A KR 20087011343 A KR20087011343 A KR 20087011343A KR 20080075110 A KR20080075110 A KR 20080075110A
- Authority
- KR
- South Korea
- Prior art keywords
- flash memory
- initialization
- instructions
- processing unit
- central processing
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/20—Initialising; Data preset; Chip identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
- Stored Programmes (AREA)
Abstract
플래시 메모리 서브시스템 제어기가 내부에 내장된 시스템-온-칩에 결합된 플래시 메모리를 포함하는 디지털 시스템이 개시된다. 시스템-온-칩은 플래시 메모리 테스트 설비와 같은 호스트 시스템이 접속될 수 있는 범용 시리얼 버스(USB) 또는 IEEE 1394 인터페이스와 같은 표준 외부 인터페이스를 위한 지원부를 포함한다. 플래시 메모리의 초기화는 호스트 시스템과 내장형 플래시 메모리 서브시스템 제어기 사이에 통신 채널을 개방함으로써 수행된다. 그 다음, 호스트 시스템은 플래시 메모리 어레이들의 포맷팅, 애플리케이션 프로그램들의 로딩 등을 포함하는 플래시 메모리 서브시스템의 초기화를 통신 채널상에서 수행할 수 있다.
Description
본 발명은 플래시 메모리 시스템 분야에 관한 것으로서, 보다 구체적으로는 집적된 디지털 시스템들에 사용되는 플래시 메모리의 초기화(initialization)에 관한 것이다.
"플래시" 메모리로서 통상적으로 지칭되는 비휘발성 고상 메모리 기술의 대중성은 최근 몇년간 크게 증가하였다. 플래시 메모리는 칩-폭 베이스라기 보다는, 상대적으로 작은 블럭들로 또는 종래의 EEPROM 소자들에서와 같은 상대적으로 큰 블럭들로 소거 및 재기록될 수 있는 전기적으로-소거가능한 반도체 메모리를 통상적으로 지칭한다. 플래시 메모리는 저장된 데이터의 비휘발성(즉, 전력의 제거 이후 데이터 유지)이 필수적이지만 재기록의 주파수가 상대적으로 낮은 애플리케이션들에 대해 특히 대중적이 되었다. 플래시 메모리의 대중적 애플리케이션들의 예들은 휴대형 오디오 플레이어들, 휴대전화 핸드셋들의 전화 활동(phone activity)과 전화 번호들의 "SIM" 카드 저장, 컴퓨터들과 워크스테이션들을 위한 "thumbkey" 착탈식 저장 장치들, 디지털 카메라를 위한 저장 장치들 등을 포함한다.
통상적인 종래의 플래시 메모리 제품들은 하나 이상의 소자들(또는 "어레이 들")의 형태로 플래시 메모리 저장 리소스를 포함하는 하나 이상의 집적회로들, 및 플래시 메모리 제품을 위한 메모리 제어기로서 제공되는 집적회로로 구성되는 "칩셋"으로서 효과적으로 배열된다. 플래시 메모리 어레이는 개별적인 메모리 셀들이 랜덤하게 액세스될 수 있는 소위 NOR 플래시 메모리로서 배열되거나, 메모리의 페이지 또는 블럭의 순차적인 액세스가 필요한 소위 NAND 플래시 메모리로서 배열될 수 있다. 종래기술에 공지된 것처럼, 각각의 이러한 플래시 메모리 배열들은 장점 및 단점을 갖는다. 예를 들어, NOR 플래시 메모리는 저용량 코드 저장에 대해 특히 장점을 갖는 반면, NAND 플래시 메모리는 오디오 플레이어와 디지털 카메라와 같은 고용량 데이터 저장에 특히 유용하다. 최근 몇년간, 각각의 플래시 메모리 셀이 멀티-비트 데이터 값(4개의 가능한 상태들 중 하나로서 저장되는, 통상 2 비트 값)을 저장할 수 있는 멀티-레벨 셀(MLC) 플래시 메모리의 사용은 특히 NAND 플래시 메모리에서 대중적이 되었다.
하나의 전형적인 배열에 따라, 플래시 메모리는 플래시 메모리 리소스들을 포함하는 플래시 메모리 서브시스템, 및 카드에 장착된 서브시스템 제어기로서 제조 및 판매된다. 그러한 서브시스템들의 예들은 공지된 COMPACT FLASH(CF) 카드들, Secure Digital(SD) 카드들, 및 MULTIMEDIA 카드들을 포함한다. 도 1은 블럭도 형태로 예시적인 종래의 플래시 메모리 시스템(2)을 도시한다. 이러한 배열에서, 다중 플래시 메모리 소자들("어레이들")(12)은 플래시 미디어 인터페이스(FMI)에 의해 서브시스템 제어기(10)에 접속되고, 상기 플래시 미디어 인터페이스(FMI)는 서브시스템 제어기(10)로부터 물리적 어드레스 신호들과 제어 신호들을 통신하 며, 소자들(12)로부터 및 소자들(12)로 데이터를 양방향으로 통신한다. 서브시스템 제어기(10)는 커넥터(C)로의 인터페이스 버스(IF)에 의해 접속된다. 종래기술에 공지된 것처럼, 플래시 메모리 시스템(2)은 커넥터(C)에 의해 카메라, 컴퓨터, 오디오 플레이어 등과 같은 호스트 디바이스에 삽입되거나 접속될 수 있다. 커넥터(C)와 인터페이스 버스(IF)는 플래시 메모리 시스템(2)이 컨피규어(configure)되고 실행되는 특정 표준에 따라 배열된다(예, CF 카드, SD 카드, 또는 MULTIMEDIA 카드).
다른 공지된 장치들(예, 스마트 미디어 카드들)에서, 플래시 메모리 시스템들은 서브시스템 제어기를 포함하지 않는다. 그러한 장치들에서, 도 1을 참조하면, 유사한 방식으로 플래시 미디어 인터페이스(FMI)는 플래시 메모리 시스템으로부터 외부에 위치된 제어기, 예를 들어 플래시 메모리를 이용하는 호스트 디바이스(예, 카메라)에 포함된 제어기에 접속된다.
통상적으로, 종래의 플래시 메모리 어레이들은 카드에 조립될 때까지 포맷팅 또는 초기화되지 않는다(아마도, 칩 테스트 레벨에 형성된 결함 블럭들의 마킹을 제외하고). 플래시 메모리 초기화는 파일 시스템에 따른 어레이들의 포맷팅, 물리적으로 결함있는 메모리 위치들이 사용시 회피되도록 결함 맵의 생성, 메모리 어레이들의 낮은-레벨 사용자 영역 포맷팅, 플래시 메모리 시스템을 이용하는 시스템에 의해 실행될 수 있는 애플리케이션 소프트웨어의 디스크 이미지 로딩, 및 서브시스템 제어기가 구현되는 그러한 시스템들에 대해, 펌웨어 다운로딩 및 파라미터들의 연산, 로컬 오실레이터 주파수들의 트리밍(trimming) 등과 같은 그러한 기능들을 전형적으로 포함한다. 초기화 프로세스의 결과는 호스트 시스템으로부터의 논리 어드레스에 해당하는 물리적 위치들에서 데이터가 기록 및 판독될 수 있는 플래시 메모리 시스템이다. 또한, 물리적 메모리의 일부분이 결함이 있거나 부가적인 디스크 이미지 데이터가 애드-온 애플리케이션들을 위해 저장되어야 하는 경우, 동작 동안 플래시 메모리 시스템의 컨피규레이션(configuration)이 업데이트될 수 있다.
일반적으로, 플래시 메모리 리소스들의 초기화는 통상 플래시 메모리 소자들(12)과 서브시스템 제어기(10)가 종래의 방식으로 최종 시스템 보드에 장착되어 상호접속된 이후, 플래시 메모리 시스템 제조자에 의해 통상적으로 수행된다. 도 2에 도시된 것처럼, 예로서, 그 제조 이후, 플래시 메모리 시스템(2)은 커넥터(C) 및 테스트 케이블(DUT_CBL)을 통해 테스트기(TSTR)에 접속된다. 테스트기(TSTR)은 플래시 메모리 시스템(2)의 전기 접속들의 연속성을 보장하기 위해, 커넥터(C)의 단자들의 적절한 DC 동작을 보장하기 위해, 및 플래시 메모리 소자들(12)의 초기화 이전에 실행될 수 있는 특정한 기본 기능 테스트들을 수행하기 위해, 테스트 케이블(DUT_CBL) 및 커넥터(C)상에서 플래시 메모리 시스템(2)과 통신한다. 또한, 종래기술에 공지된 것처럼, 테스트기(TSTR)는 플래시 메모리 소자들(12)을 포함하는 플래시 메모리 시스템(2)의 기능을 테스트하고 플래시 메모리 시스템(2)을 초기화하기 위해, 전형적으로 플래시 메모리 시스템(2)에, 특히 제어기(10)에 진단 명령들을 제공할 수 있다. 전술한 것처럼, 플래시 메모리 시스템(2)의 종래의 초기화는 플래시 메모리 소자들(12)의 플래시 메모리 리소스들의 포맷팅 및 컨피규어링, 플래시 메모리 소자들(12)의 물리적으로 결함있는 메모리 위치들의 검출 및 로깅, 제어기(10)로(예, 제어기(10)에 내장된 NOR 플래시 메모리로)의 제어 프로그램("펌웨어") 로딩, 및 의도된 애플리케이션에 사용하기에 적합하게 DOS 또는 디스크 이미지들의 형태로 플래시 메모리 소자들(12)로의 애플리케이션 소프트웨어 로딩을 포함한다. 그러한 애플리케이션 소프트웨어의 예들은 제어기(10)에 의해 실행될 수 있는, 데이터 암호화 소프트웨어, 위어 레벨링(wear leveling) 알고리즘 등을 포함한다.
그러나, 최근에, 플래시 메모리 스토리지는 소위 "시스템-온-칩" 또는 "SOC"에 의해 제어되는 것들을 포함하는 많은 새로운 애플리케이션들과 접속에 사용되어 왔다. 이러한 고려되는 SOC 애플리케이션들에서, 단일 집적회로는 중앙 처리 유닛(CPU), 이의 시스템 메모리(RAM 및 ROM), 표준 인터페이스 기능들(예, USB, 시리얼 I/O 등), 및 시스템에 유용한 다른 주변장치들을 집적시킨다. 현재 구성되어 있는 바와 같이, 비휘발성 재기록가능한 스토리지 특징들의 장점을 갖기 위해 플래시 메모리를 사용하는 소비자 디바이스에 대한 SOC 아키텍쳐는 또한 SOC로부터 플래시 메모리 소자들로의 외부 인터페이스를 갖는 SOC에 플래시 메모리 서브시스템 제어기를 집적시킨다. 도 3은 이하에서 기술될 플래시 메모리를 사용하는 SOC-기반 아키텍쳐의 종래의 배열을 도시한다.
도 3에 도시된 것처럼, SOC(20)는 종래의 플래시 메모리 인터페이스(NAND_IF)에 의해 하나 이상의 NAND 플래시 메모리 소자들로서 통상 배열된(물론, NOR 플래시 메모리가 대신 사용될 수 있음), 플래시 메모리(35)와 인터페이싱한다. 이러한 배열에서, 플래시 메모리 서브시스템 제어기(29)는 도 1에서 상술된 것처럼 플래시 메모리 서브시스템의 부분으로서가 아니라, SOC(20)내에서 실행된다. SOC(20)는 시스템-온-칩이므로, 시스템 ROM(24), 시스템 RAM(26), 및 도 3에 도시된 바와 같은 종래의 버스(CPU_BUS)에 의해 CPU(22)가 접속되는 표준 인터페이스들(30)(예, USB, SCSI, RS-232 또는 다른 인터페이스들)과 같은 같은 다양한 시스템 기능부들 및 CPU(22)를 포함한다. 다른 주변장치들은 SOC(20)내에 포함될 수도 있고, 버스 브릿지(28) 및 주변장치 버스(PER_BUS)를 통해 CPU(22)와 통신할 수 있다. 도 3의 예에서, 하나의 그러한 주변장치는 주변장치 버스(PER_BUS)와 서브시스템 제어기(29) 간의 신호들을 중계(translate)하는 표준 인터페이스들(27A, 27B)에 의해 주변장치 버스(PER_BUS)에 결합된 서브시스템 제어기(29)이고; 이러한 중계는 종래의 서브시스템 제어기(29)가 대대적인 재설계를 요구함이 없이 SOC(29)내에서 용이하게 구현될 수 있도록 한다. 따라서, SOC(22)는 디스크 스토리지와 유사한 비휘발성 스토리지로서 플래시 메모리(35)를 사용하는 방식으로 용이하게 동작할 수 있다. 예를 들어, 벌크 데이터 스토리지는 플래시 메모리(35)에서 애플리케이션 프로그램들로서 유지될 수 있다. 예를 들어, 애플리케이션 프로그램이 더 큰 시스템의 디스크 스토리지로부터 호출 및 로딩되는 것과 동일한 방식으로, 플래시 메모리(35)에 저장된 애플리케이션 프로그램들은 CPU(22)에 의한 실행을 위해 서브시스템 제어기(29)(및 버스들(PER_BUS, CPU_BUS)과 다양한 인터페이스들 및 브릿지들)를 통해 시스템 RAM(26)에 로딩될 수 있다. 유사하게, 데이터는 서브시스템 제어기(29)에 의해 플래시 메모리(35)로부터 CPU(22)에 의해 저장 및 액세스될 수 있다.
불행하게도, 종래의 초기화 방법들은 서브시스템 제어기(29)가 플래시 메모리로부터 분리되어 SOC(20)내에 내장되는 그러한 컨피규레이션에서 플래시 메모리(35)를 용이하게 초기화할 수 없다. 특히, 플래시 메모리(35)의 특정 부분들은 대응 서브시스템 제어기(서브시스템 제어기(29)와 같은)에 의한 액세스를 제외하고는 액세스될 수 없고, 이는 초기화 프로세스에 관련된 플래시 메모리(35)의 "시스템" 부분들이다. 그러나, 초기화 이전에, 도 3의 종래의 SOC 배열에서, 서브시스템 제어기(29)는 플래시 메모리(35)의 초기화를 위해 액세스될 수 없다. 도 3은 본 발명과 연계하여 판독(conjectured)되는 바와 같이, 테스트기(TSTR)가 특수 버스(SPC_BUS)를 통해 플래시 메모리(35)의 특별 설계된 인터페이스에 접속되고 초기화를 유도하도록 이러한 인터페이스를 통해 진단 명령들을 실행하는 방식으로, SOC 컨피규레이션에서 플래시 메모리(35)의 초기화에 대한 억지(brute force) 방법을 도시한다. 그러나, 이러한 판독 방법은 플래시 메모리(35)로의 특수 인터페이스의 생성 뿐만 아니라, 특수 테스트 하드웨어(테스트기(TSTR) 및 특수 버스(SPC_BUS))의 생성을 요구하고, 이 둘은 시스템의 제조 및 형성에 실질적인 비용을 부가시키며, 시스템이 컨피규어 및 초기화될 수 있는 유동성을 제한한다.
추가적인 배경기술로서, 미국특허번호 제6,009,496호는 내장형 플래시 메모리를 갖는 마이크로컨트롤러 아키텍쳐를 기술하고 있고, 여기서 온-보드 마이크로프로세스는 내장형 플래시 메모리를 리프로그래밍하기 위해, 온-보드 리드-온리 메모리에 저장된 리프로그래밍 제어 루틴을 실행한다. 이러한 미국특허번호 제6,009,496호는 새롭게 제조될 때 마이크로컨트롤러 시스템이 이러한 리프로그래밍 모드로 수동 설정될 수 있고, 이 경우 마이크로프로세서는 외부 인터페이스상에서 수신된 데이터를 갖는 내장형 플래시 메모리를 프로그래밍하기 위해, 온-보드 ROM으로부터의 리프로그래밍 제어 루틴을 실행시킨다.
따라서, 본 발명의 목적은 집적형 플래시 메모리 서브시스템 제어기들을 갖는 시스템-온-칩(SOC) 타입 시스템들에 대한 플래시 메모리 서브시스템들을 초기화하기 위한 방법 및 시스템을 제공하는 것이다.
본 발명의 추가적인 목적은 그러한 초기화를 위해 종래의 테스트 하드웨어를 사용할 수 있는 그러한 방법 및 시스템을 제공하는 것이다.
본 발명의 추가적인 목적은 SOC 하드웨어가 그러한 초기화를 제공하기 위해 근본적으로 재배열될 필요가 없는 그러한 방법 및 시스템을 제공하는 것이다.
본 발명의 다른 목적들과 장점들은 도면들과 함께 이하의 상세한 설명을 참조로 통상의 당업자에게 명백해질 것이다.
본 발명은 SOC의 외부 표준 인터페이스가 외부 테스트 하드웨어에 액세스될 수 있는 시스템-온-칩(SOC) 아키텍쳐로 구현될 수 있다. 외부 테스트 하드웨어로부터 SOC의 시스템 메모리로 다운로딩되거나 시스템 ROM에 이미 존재하는 실행가능한 초기화 프로그램은 CPU에 의해 실행시, SOC의 플래시 메모리 서브시스템 제어기와 외부 테스트 하드웨어 사이에 통신 채널을 개방한다. 이러한 통신 채널은 외부 테스트 하드웨어가 서브시스템 제어기를 통해 플래시 메모리의 초기화를 달성할 수 있도록 하고, SOC에 의해 사용되기 위한 플래시 메모리를 준비하며, 플래시 메모리에 SOC 애플리케이션 프로그램들을 로딩할 수 있도록 한다.
도 1은 종래의 플래시 메모리 서브시스템의 블럭도 형태의 전기도(electrical diagram)이다.
도 2는 도 1의 플래시 메모리 서브시스템을 초기화하기 위한 종래의 시스템의 블럭도 형태의 전기도이다.
도 3은 플래시 메모리를 초기화하는 종래의 바람직하지 않은 방식을 포함하는 플래시 메모리를 사용하는 판독 시스템-온-칩(SOC)의 블럭도 형태의 전기도이다.
도 4는 시스템-온-칩(SOC) 아키텍쳐에 따라 구성되는 디지털 시스템의 블럭도 형태의 전기도로서, 플래시 메모리의 초기화를 위한 리소스들을 포함하는, 본 발명의 바람직한 실시예에 따른 플래시 메모리를 사용한다.
도 5는 본 발명의 바람직한 실시예에 따른 플래시 메모리 리소스의 초기화를 달성하는데 있어서 도 4의 시스템의 동작을 도시하는 흐름도이다.
도 6은 본 발명의 바람직한 실시예에 따라, 도 4의 시스템의 플래시 메모리 리소스의 사용자 및 예약 메모리 공간을 도시하는 메모리 맵 도면이다.
도 7은 본 발명의 바람직한 실시예에 따라, 호스트 시스템, 플래시 메모리 리소스 및 서브시스템 제어기 간에 시스템-온-칩을 통한 통신 채널의 개방을 도시하는 도 4의 시스템의 블럭도 형태의 전기도이다.
본 발명은 디지털 오디오 플레이어(DAP)와 같은 플래시 메모리 서브시스템 제어기를 포함하는 시스템-온-칩(SOC)에 의한 사용을 위해 플래시 메모리를 초기화하는 테스트 하드웨어를 이용하는 시스템 및 방법으로 구현되는 바와 같은, 바람직한 실시예와 연계하여 기술될 것이다. 본 발명의 이러한 특정 예시적인 구현예는 그러한 배열로 사용될 때 본 발명이 특히 장점을 갖는다고 판단되기 때문에 선택된 것이다. 그러나, 본 발명의 장점들은 플래시 메모리 시스템들의 다른 아키텍쳐들 및 구현예들에 적용될 수 있다는 것을 고려한다. 따라서, 이하의 상세한 설명은 단지 예로서 제공되고, 청구되는 바와 같은 본 발명의 진정한 범주를 제한하려는 의도가 아님을 이해해야 한다.
도 4는 디지털 시스템(60)을 참조로 본 발명의 바람직한 실시예의 예시적인 구현을 도시한다. 본 예의 시스템(60)은 특정한 주변장치들을 포함하는 디지털 오디오 플레이어(DAP)에 해당한다. 물론, 본 명세서를 참조하는 통상의 당업자는 실행되는 시스템 하드웨어 및 그 주변장치들의 배열에 의해 주로 결정되는, 많은 기능들 중 임의의 하나를 위한 시스템(60)으로 의도될 수 있다는 것을 용이하게 인식할 것이다. 그러한 다른 디지털 시스템들의 예들은 무선 전화 핸드셋, 무선 이메일 시스템들(예, BLACKBERRY 디바이스들), 디지털 오디오 레코더들, 전자 계산기들, 재고품 제어 또는 운송 업계 등에서 유용한 휴대형 컴퓨팅 시스템들(즉, "팜탑" 디바이스들) 등과 같은 통신 시스템들을 포함한다. 본 발명의 바람직한 실시예에 따라, 디지털 시스템(60)은 단일 집적회로 내에 실질적으로 모든 기본 시스템 기능들을 내장하는 시스템-온-칩("SOC")(40)을 기반으로 한다. 본 예에서, SOC(40)는 디지털 시스템(60)의 메인 컴퓨팅 컴포넌트인 중앙 처리 유닛(CPU)(42)을 포함한다. CPU(42)는 예를 들어 시스템 ROM(44), 시스템 ROM(46)(SOC(40)가 부팅된 경우), 및 그 초기화 이후 플래시 메모리(55)에 저장되는 바와 같은, 소프트웨어 명령어들을 실행함으로써 동작되는 범용 또는 애플리케이션-특정 마이크로프로세서 또는 마이크로컴퓨터인 것이 바람직하다. 본 발명과 연계하여, CPU(42)에 의해 실행되는 기능들은 SOC(40)내의 다양한 버스들상에서 통신되는 명령들에 의해, 또는 그러한 기능들에 대한 제어 신호 라인들(도 4에 미도시)에 의해, SOC(40)내의 다양한 다른 기능들의 제어를 포함한다는 것을 고려한다.
이러한 예시적인 아키텍쳐에서, CPU(42)는 시스템 버스(CPU_BUS)에 의해 시스템 리드-온리 메모리(ROM)(44) 및 시스템 랜덤 액세스 메모리(RAM)(46)에 접속된다. 시스템 ROM(44) 및 시스템 RAM(46)을 실행하는데 사용되는 특정한 사이즈, 아키텍쳐들 및 기술들은 목표된 성능돠 신뢰성 특징들 뿐만 아니라, SOC(40)를 집적하기 위한 이용가능한 기술에 좌우될 것이다. 본 명세서를 참조하는 통상의 당업자는 각각의 특정 인스톨을 위한 이러한 메모리 기능들을 용이하게 달성할 수 있다는 것을 고려한다. 또한, 다른 기능들은 표준 인터페이스(50) 및 버스 브릿지(48)를 포함하는, 이러한 예시적인 아키텍쳐의 시스템 버스(CPU_BUS)에 상주한다.
표준 인터페이스(50)는 필요한 신호 변환, 버퍼링, 및 일측에서 시스템 버스(CPU_BUS)의 다른 상주 장치들(residents)과 CPU(42) 간에, 타측에서 외부 디바이스들 또는 시스템들과 CPU(42) 간에, 통신을 지원하기 위한 다른 기능을 제공하는 종래의 인터페이스 기능이다. 표준 인터페이스(50)는 산업 표준 인터페이스 프 로토콜에 따라 동작되고 구성되는 것이 바람직하다는 관점에서 "표준"이다. 그러한 인터페이스 프로토콜들의 예들은 범용 시리얼 버스(USB) 1.1 및 2.0 인터페이스들, IEEE 1394(또는 "Firewire") 인터페이스, 공지된 RS-232와 같은 시리얼 인터페이스들 및 SCSI 인터페이스들 등을 포함한다. 시스템(60)의 근래의 구현예들에서, 특히 디지털 오디오 플레이어에 해당할 때, 표준 인터페이스(50)는 전형적으로 USB 또는 IEEE 1394 인터페이스 표준을 따른다. DAP 기술에서 공지된 것처럼, 호스트 컴퓨터와 DAP 사이에서 오디오 파일들(및 보다 최근에는 사진들과 다른 데이터)의 동기화, 및 DAP의 배터리 충전은 전형적으로 USB 2.0 또는 IEEE 1394 인터페이스상에서 수행된다. 도 4의 예에서, 표준 인터페이스(50)는 USB 2.0 인터페이스이므로, USB 접속(USB_2)에 의해 호스트 시스템(HOST)에 접속된다.
또한, 버스 브릿지(48)는 도 4에 도시되고 전술한 것처럼, 시스템 버스(CPU_BUS)상에 위치한다. 버스 브릿지(48)는 본 예에서 시스템 버스(CPU_BUS)를 주변장치 버스(PER_BUS)에 결합시키기 위한 종래의 버스 인터페이스이다. SOC(40) 외부의 다양한 주변장치들은 적절한 외부 커넥터들과 회로보드 컨덕터들에 의해, 주변장치 버스(PER_BUS)에 위치한다. DAP에 해당하는 시스템(60)의 예에서, 주변장치 버스(PER_BUS)의 상주 장치들은 SD 플래시 메모리 인터페이스(51), LCD 디스플레이(53), 키, 버튼, 스위치 등과 같은 다양한 입력 엘리먼트들(55), 및 오디오 출력 인터페이스(57)를 포함한다.
본 발명의 바람직한 실시예에 따라, 표준 인터페이스 기능부(47A)는 주변장치 버스(PER_BUS)에 상주한다. 인터페이스 기능부(47A)는 플래시 메모리 서브시스 템 제어기(49)의 일부로서 또는 플래시 메모리 서브시스템 제어기(49)로 실행되는 인터페이스 기능부(47B)와 통신한다. 본 발명의 이러한 실시예에 따라, 표준 인터페이스 기능부들(47A, 47B)과 서브 시스템 제어기(49)는 모두 SOC(40)에 집적된다. 서브시스템 제어기(49)의 구성 및 설계를 용이하게 하기 위해, 표준 인터페이스(47B)는 종래의 플래시 메모리 시스템들(예, 도 1에 도시된 바와 같은)에 사용되는 종래의 Secure Digital(SD) 인터페이스와 일치할 수 있고, 이 경우 표준 인터페이스 기능부(47A)는 도시된 바와 같이 SD 인터페이스로부터 주변장치 버스(PER_BUS)로 신호들을 중계하는 종래의 중계기 기능부이다. 이러한 배열에서, 서브시스템 제어기(49)와 표준 인터페이스(47B)를 SOC(40)에 집적하기 위해 임의의 부가적인 회로 설계가 요구되는 경우는 거의 없다. 물론, 대안적으로, 서브시스템 제어기(49)는 주변장치 버스(PER_BUS)와 직접 인터페이싱하도록 구성될 수 있거나, 추가적인 대안예에서, 시스템 버스(CPU_BUS)와 직접 인터페이싱하도록 구성될 수 있다(이에 따라 버스 브릿지(48)의 중개 기능을 방지함). 이러한 아키텍쳐 및 다른 아키텍쳐 변형들은 본 명세서를 참조하는 통상의 당업자에게 명백하다는 것을 고려한다.
본 발명의 이러한 실시예에서 SOC(40)내에 집적된 서브시스템 제어기(49)는 플래시 메모리(55)가 접속된(또는 접속가능한) 플래시 메모리 인터페이스(NAND_IF)에 접속된다. 또한, SOC(40)내의 집적된 서브시스템 제어기(49)는 종종 "내장형(embedded)" 제어기로서 지칭된다. 플래시 메모리 인터페이스(NAND_IF)는 종래의 플래시 메모리 인터페이스 버스 또는 구조인 것으로 고려되고, 이에 따라 어드 레스 신호를 플래시 메모리(55)로 전송하기 위한 컨덕터들, 하나 이상의 칩 선택 제어 라인들, 리드 및 라이트 스트로브(strobe) 또는 클럭 라인들, 및 양방향 데이터 버스를 포함한다. 통상적인 플래시 메모리 배열들에서, 어드레스 및 데이터 신호들은 인터페이스 회로 및 시스템 보드 면적을 절약하기 위해, 공통 라인 세트("어드레스/데이터 라인들")상에서 시간-다중화된다.
본 발명의 이러한 실시예의 서브시스템 제어기(49)는 예로서, 인터페이스(NAND_IF)상에서 연동되는 플래시 메모리(55)로부터 데이터 판독 및 연동되는 플래시 메모리(55)로의 데이터 기록 제어, 에러 보정 코딩의 구현, 논리 어드레스들(CPU(42)로부터의)을 물리적 어드레스(플래시 메모리(55)의)에 맵핑, 플래시 메모리(55)에서 결함있는 메모리 셀들의 맵핑 유지 및 초기화, 위어 레벨링 구현 등을 수행한다. 따라서, 서브시스템 제어기(49)는 마이크로컨트롤러 또는 마이크로프로세서와 같은 로직 기능을 포함하고, 종래기술에 공지된 바와 같은 플래시 메모리(55)의 맵핑 및 컨피규레이션에 관한 시스템 정보 뿐만 아니라, 실행가능한 소프트웨어 명령어들을 저장하기 위한 그 자신의 내부 메모리들(휘발성, 비휘발성, 또는 이 둘다)을 포함하는 것으로 간주되는 것이 바람직하다. 종래기술에 공지된 바와 같은 통상적인 서브시스템 제어기들의 구성 및 기능의 일 예는 본 발명과 함께 공동 양도되고 참조로 본 발명에 포함되는 미국특허번호 제6,426,893호에 기재되어 있다. 그러한 종래의 동작 및 구성은 도 4 및 그 상세한 설명에서 입증되는 바와 같이, 서브시스템 제어기(49)가 SOC(40)내에 집적되어 구현된다는 점을 제외하고는, 본 발명의 바람직한 실시예에 따른 서브시스템 제어기(49)와 연계하여 사용될 수 있다. 본 명세서를 참조하는 통상의 당업자는 이러한 예시적인 아키텍쳐에 따라, 및 과도한 실험 없이 특정 시스템 컨피규레이션을 위해 적절한 다른 동등한 아키텍쳐들에 따라, 서브시스템 제어기(49) 및 그 기능을 용이하게 구현할 수 있다는 것을 고려한다.
선택적으로, 서브시스템(49)은 상기 인용된 미국특허번호 제6,426,893호에서 구상된 바와 같은 단일 마이크로프로세서 또는 마이크로컨트롤러를 포함하기 보다는, 멀티프로세서 아키텍쳐에 따라 구현될 수 있다. 예를 들어, 제 1 CPU는 제 1 CPU와 유사한 구성의(즉, 동종의 멀티프로세서 환경) 또는 상이한 아키텍쳐의(즉, 이종의 멀티프로세서 환경) 플래시 프로세서와 함께 구현될 수 있다. 이 경우, 모든 플래시 액세스 동작들의 관리, 및 위어 레벨링, 에러 보정 등과 같은 보조 기능들을 포함하는, 플래시 메모리(55) 관리 전용 시스템 리소스들(메모리 등)이 플래시 프로세서에 제공된다. 호스트 애플리케이션 실행, 호스트와의 통신 관리, 실시간 운영체제 및 파일 시스템과 연계하여 서브시스템 제어기에 대한 지원 환경 관리 등을 위해, 애플리케이션 프로세서로서 작용하는 전용 리소스들이 제 1 CPU에 제공될 수 있다. 부가적인 옵션은 데이터 암호화 및 복호화 등과 같은 계산적으로 복잡한 연산들을 수행하기 위한 슬레이브 DSP로서 작용하기 위해, 애플리케이션 프로세서 및 플래시 프로세서와 결합된 또는 제 1 CPU만을 갖는, 디지털 신호 처리기(DSP)를 제공하는 것이다.
본 발명의 이러한 실시예에 따른 시스템(60)의 플래시 메모리(55)는 종래기술에 공지된 바와 같은 블럭-소거가능하고 이에 따라 시스템을 구현함으로써 목표 된 바와 같이 재기록가능하도록, 각각의 어레이내에 배열된, 플래시 EEPROM(전기적으로 소거가능 및 프로그래밍가능 리드-온리 메모리) 셀들의 하나 이상의 어레이들에 해당한다. 본 발명의 이러한 실시예에서, 플래시 메모리(55)를 구성하는 하나 이상의 어레이들내의 개별 메모리 셀들에 사용되는 특정 메모리 기술은 NAND 또는 NOR 타입 플래시 메모리로서 각각의 어레이내에 구성된, 이진(binary) 또는 멀티-레벨 셀(MLC) 타입일 수 있다. 시스템(60)이 DAP인 이러한 특정한 예시적인 구현예에 대해, MLC NAND 플래시 메모리 기술은 시리얼 방식으로 주로 액세스되는 데이터의 벌크 스토리지에 바람직하다는 것을 고려한다. 데이터 기록, 데이터의 플래시 소거, 논리-물리적 어드레스 맵핑, 및 위어 레벨링 관리를 위한 목적의 블럭들 및 페이지들로서, 본 발명의 이러한 실시예에 따른 플래시 메모리(55)를 구성하는 하나 이상의 플래시 메모리 어레이들의 배열은 다수의 그러한 배열들 중 임의의 하나를 따를 수 있다. 본 발명에 따른 시스템(60)의 플래시 메모리(55)로서 구현하기에 적합한 내부 아키텍쳐 및 지원 회로의 예들은 미국특허번호 제5,172,338호, 제5,602,987호, 제5,315,541호, 제5,200,959호, 제5,270,979호, 제5,428,621호, 제5,663,901호, 제5,532,962호, 제5,430,859호, 제5,712,180호, 제6,151,248호, 제6,222,762호, 및 제6,426,893호에 기재되어 있고, 이들 모두는 본 발명에 공동 양도되고 참조로 본 발명에 포함된다.
전술한 것처럼, 시스템(60)의 제조 동안 몇몇 지점에서, 플래시 메모리(55)가 사용될 수 있도록 플래시 메모리(55)를 초기화하는 것이 필요하다. 플래시 메모리 초기화는 파일 시스템에 따라 플래시 메모리(55)를 포맷팅하고, 사용 동안 맵 핑되지 않도록 결함있는 메모리 지점들을 검출하며, 초기 논리-대-물리적 어드레스 메모리 맵을 생성하고, 위어 레벨링 북키핑(bookkeeping) 및 알고리즘 수행과 같은 기능들을 전형적으로 포함한다. 서브시스템 제어기(49)의 초기화 자체는 예를 들어, 시스템 펌웨어 및 연산 파라미터들, 트리밍 로컬 오실레이터 주파수들 등을 다운로딩하도록 수행될 수 있다. 또한, 플래시 메모리(55)와 시스템(60)에 대한 특정 애플리케이션에 따라, 플래시 메모리(55)의 초기화는 시스템(60)의 CPU(42)에 의한 나중의 실행을 위해, 실행가능한 애플리케이션 소프트웨어를 플래시 메모리(55) 로딩, 및 이러한 실행가능한 애플리케이션 소프트웨어에 대한 애플리케이션 데이터(예, DAP로서의 시스템(60)을 위해 MP3 오디오 파일들)를 플래시 메모리(55)에 사전-로딩(pre-loading)하는 것을 포함할 수도 있다.
본 발명의 바람직한 실시예에 따라, 시스템(60)은 이 경우 USB 2.0 인터페이스인 표준 인터페이스(50)를 통해 호스트 시스템(HOST)이 플래시 메모리(55)의 초기화를 달성하도록 허용한다. 물론, 전술한 것처럼, 이러한 표준 인터페이스는 IEEE 1394(펌웨어) 인터페이스와 같은 상이한 표준을 대안적으로 따를 수 있다. 제조 환경에서, 호스트 시스템(HOST)은 Tanisys Technology로부터 상업적으로 이용가능한 테스트 설비와 같은 제조 테스트 설비, 또는 제조자에 의해 사용되는 바와 같은 대안적인 독점 플래시 메모리 테스트 설비라는 점을 고려한다. 플래시 메모리(55)의 이러한 초기화는 시스템(60)의 완전한 조립 이후(즉, 디스플레이(53), 오디오 출력(57), 및 입력 엘리먼트들(55)과 같은 주변장치들이 포함됨), 또는 단지 최종 조립 이전에 SOC(40)와 플래시 메모리(55)의 접속 이후에, 수행될 수 있다는 점을 고려한다.
대안적으로, 호스트 시스템(HOST)은 종래의 표준 인터페이스(예, USB 2.0)상에서 SOC(40)와 통신한다는 점을 고려하면, 호스트 시스템(HOST)은 플래시 메모리 초기화를 달성하기 위한 적절한 애플리케이션으로 프로그래밍되는 종래의 개인용 컴퓨터 또는 워크스테이션일 수 있다는 것을 고려한다. 추가적인 대안예에서, 호스트 시스템(HOST)에 의해 수행되는 플래시 메모리 초기화는 제조 동안에만 수행될 필요는 없으며, 시스템 사용 및 배치 이후, 예를 들어 플래시 메모리(55)에 "펌웨어"로서 저장되거나 서브시스템 제어기(49)에 의해 실행가능한 펌웨어 시스템 소프트웨어(플래시 메모리(55)에 저장될 수도 있음)로서 저장되는, 시스템(60)에 대한 실행가능 애플리케이션들을 업그레이드하기 위해, 수행될 수도 있다.
도 5를 참조하여, 본 발명의 바람직한 실시예에 따라 플래시 메모리(55)의 초기화를 수행하는데 있어서 호스트 시스템(HOST)과 결합되는 SOC(40)의 동작이 상세히 기술될 것이다. 본 예에서, SOC(40)는 이러한 초기화가 개시됨에 따라 아직 기동(power-up)되지 않는다고 가정한다. 또한 전술한 것처럼, 하나 이상의 주변장치들이 필요하다면 접속될 수 있지만, 제조의 특정 스테이지에 따라, 다양한 주변장치들이 주변장치 버스(PER_BUS)에 아직 접속될 필요는 없다. 또한, 이러한 초기화 프로세스가 개시됨에 따라, 플래시 메모리(55)는 프로세스의 이후 스톨(stall) 또는 대기 상태를 방지하기 위해, 인터페이스(NAND_IF)에 의해 SOC(40)에 접속되는 것이 바람직하다. 프로세스(70)에서, 호스트 시스템(HOST)은 도 4의 예에서 버스(USB_2)를 통해 표준 인터페이스(50)에 접속된다. 물론, 호스트 시스템(HOST)은 이하에서 기술되는 방식으로 초기화를 달성하기 위해 필요한 소프트웨어 명령어들로 프로그래밍되고; 본 명세서를 참조하는 통상의 당업자는 그러한 초기화 프로그램들을 용이하게 안출할 수 있다는 점을 고려하며, 종래의 플래시 메모리 초기화 프로그램들은 이하에서 기술되는 동작들을 달성하기 위한 약간의 변형을 통해 호스트 시스템(HOST)에 상주할 수 있다는 점을 고려한다.
프로세스(72)에서, CPU(42)를 포함하는 SOC(40)는 기동된다. 기동시, SOC(40)와 같은 시스템들에 대해 시스템 ROM(44)에 상주하는 부트 시퀀스는 CPU(42)(도 5의 프로세스(74))에 의해 먼저 실행되고, 여기서 종래의 스타트업 및 리셋 명령어들은 그 동작을 개시하기 위해 CPU(42)에 의해 실행된다. 본 발명의 바람직한 실시예에 따라, 시스템 ROM(44)에 저장된 부트 시퀀스는 CPU(42)가 기동(power-up) 또는 리셋시, 실행가능 애플리케이션을 검색하기 위해 플래시 메모리(55)에 검사(interrogate)하고, 조건 명령어들은 이하에서 기술되는 바와 같은 검사 연산을 수행한다. 따라서, 실행된 부트 시퀀스(프로세스(74))의 부분으로서, CPU(42)는 실행가능 애플리케이션 코드가 플래시 메모리(55)에 상주하는지 여부를 결정하기 위한 결정(75)을 실행한다.
도 6은 본 발명의 바람직한 실시예에 따른 결정(75)과 연계하여 사용되는 바와 같은, 초기화될 때 플래시 메모리(55)의 예시적인 논리 메모리 맵이다. 도시된 것처럼, 플래시 메모리(55)는 0000의 논리 블럭 어드레스(LBA)로부터 최대 LBA 값 maxLBA로 확장되는 논리 메모리 공간에 해당하는 물리적 용량을 포함한다. 이러한 논리 메모리 공간은 0000의 LBA로부터 최대 LBA maxUserLBA로의 메모리 공간에 할 당되는 사용자 데이터로 주로 전용된다. 본 예에서, 플래시 메모리(55)의 메모리 공간의 최상위 1 Mbytes는 maxUserLBA의 LBA로부터 어드레스 maxUserLBA + 1M과 동일한 최대 LBA 값 maxLBA로 확장되는, 애플리케이션 펌웨어 프로그램 스토리지를 위해 예약된다. 바람직하게는, LBA 값 maxUserLBA 상부의 메모리 공간은 서브시스템 제어기(49)에 의해 블럭킹되는 액세스들에 의해 사용자에게 액세스되지 않는다. 도 6에 도시된 것처럼, 본 발명의 바람직한 실시예에 따라, 애플리케이션 펌웨어의 두 카피들은 플래시 메모리(55)의 초기화 이후 플래시 메모리 공간의 최상위 부분에 저장된다. 애플리케이션 펌웨어 카피 A는 LBA 값 maxUserLBA+512k와 LBA 값 maxLBA 사이의 메모리 공간의 플래시 메모리(55)에 상주하고; 애플리케이션 펌웨어 카피 B는 LBA 값 maxUserLBA와 LBA 값 maxUserLBA+512k 사이의 메모리 공간에 상주한다. 본 발명의 이러한 실시예에 따라, 펌웨어 카피 A 및 B는 동일한 것으로서 의도되며, 애플리케이션 펌웨어의 여분의(redundant) 카피들로서 제공된다.
본 발명의 바람직한 실시예에 따라, CPU(42)는 LBA 어드레스들 maxUserLBA 상부의 플래시 메모리(55)를 검사함으로써 시스템 ROM(44)으로부터의 부트 시퀀스를 실행한다. LBA maxUserLBA와 maxLBA 사이의 공간이 카피 A 또는 카피 B 중 하나인 애플리케이션 펌웨어의 유효 카피를 포함하면, 결정(76)은 '예'이고, 애플리케이션 펌웨어는 프로세스(76)에서 실행될 것이다. SOC(40) 및 시스템(60)의 정규 시스템 동작(주변장치들이 존재하는 경우)은 프로세스(74)에서 발견된 애플리케이션 프로그램에 따라 개시된다. 애플리케이션 펌웨어의 유효성은 각각의 카피에 대한 종래의 주기적 리던던시 체크섬(cyclic redundancy checksum: CRC) 값의 평가에 의해 계산되고; 하나의 카피가 유효하고 다른 것이 오류가 있으면, 유효 카피는 리던던시를 위해 플래시 메모리(55)의 다른 카피의 위치에 카피되는 것이 바람직하다.
한편, LBA maxUserLBA와 maxLBA 사이의 메모리 공간이 블랭크이거나, 애플리케이션 펌웨어의 유효 카피를 포함하지 않는 경우(예, 두 카피들에 대해 CRC가 실패하는), 결정(75)은 '아니오'가 되고, 애플리케이션 펌웨어가 존재하지 않음을 나타낸다. 물론, 이는 플래시 메모리(55)의 초기화 이전의 경우일 것이다.
애플리케이션 프로그래들이 플래시 메모리(55)에, 특히 유지보수 또는 펌웨어 업그레이드 동작에 존재하는지 여부를 결정하는 결정(75)에 대안적으로, 결정(75)은 그러한 경우에, 애플리케이션 프로그램이 플래시 메모리(55)에 이미 상주할 것이라는 점을 고려하여 상이한 기준을 기반으로 할 수 있다. 종래기술에 공지된 것처럼, 시스템들의 펌웨어 업그레이드는 스타트업할 때 눌러지는 키들의 특별한 조합에 의해, 또는 일반적으로 시스템의 전력 사이클링과 조합하여 달성될 수 있다.
본 발명의 바람직한 실시예에 따라, 결정(75)으로부터의 '아니오' 결과 또는 충족되는 다른 기준에 응답하여, CPU(42)는 프로세스(80)에 대응하여 시스템 ROM(44)으로부터 명령어들의 시퀀스를 실행하고, 여기서 특정 "패스-스루" 명령 로직이 인에이블되어, 실행을 위해 서브시스템 제어기(49)로 "패스-스루"하는 표준 인터페이스(50)상에서 SOC(40)에 의해 명령들이 수신된다. 이러한 예에서, 이러한 패스-스루 명령들은 로우(low)-레벨 플래시 메모리 디바이스 드라이버에 의해, CPU(42)가 서브시스템 제어기(49)에 의한 실행을 위해 표준 인터페이스(50)상에서 수신되는 요청들을 포맷하도록 지시하는 SCSI(Small Computer Serial Interface) 확장 명령들의 형태이다. 실질적으로, 패스-스루 명령 로직은 SCSI 명령 해석기와 로우-레벨 디바이스 드라이버 사이에 인터페이싱하는 CPU(42)에 의해 실행되는 글루(glue) 로직 코드의 조각이다.
대안적으로, 이러한 초기화 시퀀스는 호스트 시스템(HOST)으로부터 시스템 RAM(46)으로 다운로딩될 수 있고, 그 다음 플래시 메모리(55)를 검사하여 애플리케이션 펌웨어의 존재를 결정한 다음 통신 채널을 형성하도록 CPU(42)에 의해 실행된다. 추가적인 대안예에서, CPU(42)가 그 초기화 상태를 결정하기 위해 플래시 메모리(55)를 검사하기 위한 명령어들이 시스템 ROM에 존재할 수 있고, 초기화 시퀀스의 나머지 부분은 초기화가 필요한 경우, 호스트 시스템(HOST)으로부터 시스템 RAM(46)으로 다운로딩된다. 다운로딩되거나 상주하는 초기화 시퀀스 코드의 이러한 조합 및 다른 조합들은 본 명세서를 참조하는 통상의 당업자에게 명백할 것이며 특정 애플리케이션들에 대해 특정한 적용이 선택된다는 점을 고려한다.
CPU(42)가 SCSI 패스-스루 명령 로직을 인에이블할 때, 통신 채널은 프로세스(82)에서, 호스트 시스템(HOST)과 서브시스템 제어기(49) 사이에 개방된다. 이러한 통신 채널은 DAP로서 배치될 때, 호스트 컴퓨터와 플래시 메모리 사이에 음악 파일들의 "동기화"를 달성하기 위해, 시스템(60)에 의해 사용되는 것과 유사한 것으로 고려된다. 실질적으로, CPU(42)는 프로세스(82)에서 호스트 시스템(HOST)과 서브시스템 제어기(49) 사이에 직접적인 통신 경로를 효과적으로 형성함으로써, 명 령들 및 데이터는 CPU(42)에 의한 실질적인 실행을 요구함이 없이 이러한 경로상에서 포워딩된다는 점을 고려한다. 도 7은 본 발명의 이러한 바람직한 실시예에 따라 프로세스(82)에서 SOC(40)의 CPU(42)에 의해 형성되는 것처럼, 호스트 시스템(HOST)과 플래시 메모리(55) 간에 이러한 통신 채널을 도시한다.
물론, 이러한 동작에서 CPU(42)에 의한 연관성의 정도는 SOC(40)의 특정 아키텍쳐에 좌우될 것이다. 그러나, 이러한 통신 채널은 도 2와 관련하여 전술한 것처럼, 초기화 동안, 종래의 테스트 설비와 종래의 플래시 메모리 시스템들 간의 통신과 유사한 방식으로, 플래시 메모리(55)의 초기화를 위해 호스트 시스템(HOST)과 서브시스템 제어기(49) 사이의 통신을 허용하는 것이 바람직하고; 이러한 배열은 종래의 플래시 메모리 제조 설비 및 처리에서 이미 달성되는 것과 유사하게 호스트 시스템(HOST)의 초기화 하드웨어 및 소프트웨어를 허용한다.
프로세스(82)에서 통신 채널의 개방 이후, 프로세스(84)에서 호스트 시스템(HOST)은 채널(도 7)상에서 초기화 명령들 및 데이터를 서브시스템 제어기(49)로 포워딩한다. 종래기술에 공지된 것처럼, 이러한 초기화 명령들은 정규 동작에서 액세스가능하지 않은 플래시 메모리(55)의 시스템 메모리 지점들에 서브시스템 제어기(49)가 액세스하도록 하는 필요한 진단 명령어들 등을 포함한다.
예를 들어, 전술한 SCSI 패스-스루 명령 확장들에 의해 통신 채널이 달성되는 경우, CPU(42)에 의해 해석될 패스-스루 명령들은 매우 제한된다:
모든 미디어 타입들에 대해:
SD/MMC 미디어에 대해:
CF 미디어에 대해:
Check Media Card Type 명령은 서브시스템 제어기(49)가 플래시 메모리(55)의 미디어 타입을 식별하도록 지시하고, SOC(40)에 의한 패스-스루 명령들의 실행을 인에이블 및 디스에이블한다(즉, 디스에이블될 때, 명령 코드 D1h 등은 패스-스루 명령들로서 해석되지 않음).
인에이블될 때, SD/MMC 미디어의 예에 대해, 호스트 시스템(HOST)이 Media Card SD Execute 명령(D1h)을 발행할 때, CPU(42)는 상응하는 네이티브(native) 명령을 서브시스템 제어기(49)로 발행한다. 호스트 시스템(HOST)으로부터의 Execute 명령은 데이터 전송 방향(플래시 메모리(55)로 또는 플래시 메모리(55)로부터), 명령 타입, 명령들에 자격을 부여하는 아규먼트들(arguments) 등을 포함하는 아규먼트들을 포함할 수 있다. Execute 명령을 수신할 때, CPU(42)는 상응하는 네이티브 명령을 서브시스템 제어기(49)로 전송하고, 호스트 시스템(HOST)과 플래시 메모리 서브시스템 간에 데이터 전송을 위한 버퍼로서 작용한다. Media Card SD Host Control Command는 플래시 메모리 서브시스템에 대한 연산의 빈도와 같은 특정 속성들을 나타내고 대기 상태들, 블럭 길이들, 및 호스트에 대한 다른 제어 속성들을 나타내기 위해 사용될 수 있다. CF 미디어의 예에서, Send Command는 특정 섹터, 실린더, 및 호스트 시스템(HOST)으로부터 플래시 메모리(55)로 데이터를 전송하거나 플래시 메모리(55)로부터 호스트 시스템(HOST)으로 데이터를 전송하기 위한 네이티브 명령으로서 CPU(42)에 의해 서브시스템 제어기(49)로 포워딩되는 순차적인 Data 명령에 의해 액세스될 플래시 메모리(55)의 디바이스 위치들을 나타낸다. CF Status 명령은 단순히, 서브시스템 제어기(49)의 상태 레지스터들로부터의 상태 정보를 검색하기 위해 호스트 시스템(HOST)에 의해 발생된 명령이다.
미국특허번호 제6,009,496호에 대해 본 발명의 배경기술에서 전술한 것처럼, 종래의 마이크로컨트롤러 아키텍쳐들은 프로그래밍 내장형 플래시 메모리의 리프로그래밍 제어 루틴을 실행하기 위한 온-보드 마이크로프로세서와 관련된다. 본 발명의 실시예에 따라 사용되는 패스-스루 명령들 및 명령 로직은 이러한 명령들이 플래시 메모리 서브시스템의 제어를 수행함에 있어서 CPU(42)의 역할을 최소화하고 호스트 시스템(HOST)이 그러한 제어를 대신 수행하도록 하기 때문에, 종래의 방법에 비해 특히 장점을 갖는다. 또한, 상대적으로 적은 명령 세트는 CPU(42)에 대한 오버헤드를 감소시키고, 새로운 메모리 카드 타입들로의 명령들의 확장을 허용한다.
본 발명의 이러한 실시예에 따라, 호스트 시스템(HOST)에 의해 발행되는 바 와 같은 이러한 패스-스루 명령들의 시퀀스는 프로세스(86)에서, 서브시스템 제어기(49)를 통해 플래시 메모리(55)를 초기화한다. 종래기술에 공지되고 전술한 것처럼, 초기화 프로세스(86)는 목표된 파일 시스템 및 구조에 따라 플래시 메모리(55)를 포맷팅하고, 결함있는 메모리 지점들을 검출 및 맵핑하며, 논리-물리적 어드레스 맵핑 구조들과 맵핑 자체를 형성하고, 플래시 메모리(55)의 메모리 셀들의 유용한 최대 수명을 보장하기 위해 적절한 위어-레벨링 알고리즘들을 서브시스템 제어기(49)에 제공하는 그러한 동작들을 포함한다. 시스템 펌웨어, 연산 파라미터들, 로컬 오실레이터 주파수들 등은 이러한 관점에서 서브시스템 제어기(49) 자체내에서 초기화될 수도 있다. 또한, 전술한 것처럼, 플래시 메모리(55)의 초기화는 시스템 동작시 CPU(42)에 의한 사용을 위해 플래시 메모리(55)로의 애플리케이션 소프트웨어 로딩(예, 도 6의 예에서 LBA 어드레스 maxUserLBA 상부의 메모리 공간에 로딩되는 여분의 카피들 A 및 B로서), 및 플래시 메모리(55)로의 애플리케이션 데이터(예, DAP로서 배치된 시스템(60)에 대한 MP3 오디오 파일들, JPEG 사진 파일들 등)의 사전-로딩을 포함할 것이다. 물론, 프로그램 코드와 데이터의 그러한 로딩 및 사전-로딩은 전술한 것처럼, 플래시 메모리(55)의 포맷팅 및 다른 시스템 초기화를 동반할 것이다.
초기화 프로세스(86)와 플래시 메모리(55)의 기능 테스트 및 데이터 검증의 종료 이후, 그러한 초기화에서 호스트 시스템(HOST)의 동작이 종료된다. 그 다음, 호스트 시스템(HOST)은 Check Media Card Type 명령(DOh)을 발행함으로써 피드-스루 명령 기능을 디스에이블시키고, 프로세스(88)에서 시스템 버스(CPU_BUS)를 릴리 스한다. 목표되거나 가능한 정도까지(주변장치 기능들의 존재에 따라) SOC(40) 및 시스템(60)의 동작은 목표된 바와 같이 계속될 수 있다. 초기화 환경에서, 예를 들어 SOC(40) 또는 시스템(60)의 제조 동안, CPU(42)는 간단히 휴지(idle) 또는 오프 상태를 입력할 수 있다. 초기화가 펌웨어 업데이트 또는 다른 유지보수 동작에 해당하면, CPU(42)는 리셋되거나 재부팅될 수 있고, 그 정규 동작에 따라 플래시 메모리(55)로부터 애플리케이션 프로그램들의 실행을 개시한다(즉, 결정(75)에서 '예'). 본 명세서를 참조하는 통상의 당업자는 목표된 바와 같이 동작들의 다음 시퀀스를 용이하게 달성한다는 점을 고려한다.
전술한 것처럼, 전술한 아키텍쳐 및 방법에 대한 다양한 대안들이 본 발명과 연계하여 및 본 발명으로서 사용하기에 적합하다. 예를 들어, 플래시 메모리 제어기 회로를 포함하는 다른 대규모 시스템 통합 또는 시스템-온-칩의 특정 아키텍쳐는 특정 애플리케이션에 따라 광범위하게 변화될 수 있다. 예를 들어, 본 발명의 바람직한 실시예의 버스 구조 및 인터페이스 배열은 시스템 설계자에 의해 목표된 바와 같이, 임의의 수의 대안적 형태들을 가질 수 있다. 유사하게, 그러한 통합 시스템의 특정 애플리케이션은 범용 또는 특화된 용도의 컴퓨팅 시스템들, 휴대형 오디오 및 비디오 플레이어들과 레코더들, 무선(또는 유선) 전화 핸드셋 및 시스템, 재고품이나 운송 제어에 사용되는 바와 같은 휴대형 특수 목적의 시스템들 등과 같은 그러한 시스템들을 포함하는, 전술한 예시적인 DAP 이외의 많은 형태들 중 임의의 하나를 취할 수 있다. 또한, 플래시 메모리 리소스의 초기화에 관련된 특정 작업들은 본 발명의 바람직한 실시예와 연계하여 전술한 것들보다 더 많은 또는 더 적은(또는 사실상, 완전히 상이한) 작업들을 포함할 수 있다. 본 명세서를 참조하는 통상의 당업자는 이러한 대안예들 및 다른 대안예들이 청구되는 바와 같은 본 발명의 범주내에 있다는 것을 용이하게 인식할 것이다.
본 발명의 바람직한 실시예에 따라, 플래시 메모리 리소스들은 플래시 메모리의 초기화를 위한 특수 인터페이스 및 테스트 설비를 제공하는 실질적인 비용 발생 없이, 시스템-온-칩 아키텍쳐를 이용하는 고집적 디지털 시스템들에서 프로그램 및 데이터의 디스크 대체 및 다른 비휘발성 벌크 스토리지로서 유용하게 될 수 있다. 본 발명에 따라, 종래의 호스트 컴퓨터들 또는 테스트 설비는 플래시 메모리 리소스를 효과적이고 용이하게 초기화하기 위해, 시스템-온-칩에 의해 이미 제공된 종래의 표준 인터페이스 기술을 이용하여, 집적형 플래시 메모리 서브시스템 제어기들과 통신할 수 있다. 개발 시간과 제조 비용은 본 발명의 결과로서 최소화되고, 최종 시스템들의 구성, 동작, 및 관리에 큰 유동성을 제공한다.
본 발명은 바람직한 실시예들에 따라 기술되었지만, 이러한 실시예들에 대한 변형들과 대안들, 본 발명의 장점들과 혜택들을 포함하는 변형들 및 대안들은 본 명세서와 도면들을 참조하는 통상의 당업자에게 명백할 것이라는 점 또한 고려한다. 그러한 변형들과 대안들은 본 발명에서 후속하여 청구되는 바와 같은 본 발명의 범주내에 있다는 점을 고려한다.
Claims (25)
- 중앙 처리 유닛, 내장형 비휘발성 메모리 서브시스템 제어기, 및 외부 인터페이스를 포함하는 시스템 집적회로를 포함하고, 상기 내장형 서브시스템 제어기에 결합된 하나 이상의 비휘발성 메모리 어레이들을 추가적으로 포함하는 디지털 시스템에서, 상기 비휘발성 메모리 서브시스템을 초기화하는 방법으로서,상기 외부 인터페이스 및 상기 내장형 서브시스템 제어기 사이에 통신 채널을 개방하기 위한 명령(command)을 포함하는 초기화 명령어들(initialization instructions)을 실행하도록 상기 중앙 처리 유닛을 동작시키는 동작 단계; 및상기 외부 인터페이스에 제공되어 상기 통신 채널상에서 상기 내장형 서브시스템 제어기로 통신되는, 초기화 명령들에 따라 상기 하나 이상의 비휘발성 메모리 어레이들을 초기화하는 초기화 단계를 포함하는 비휘발성 메모리 서브시스템 초기화 방법.
- 제 1 항에 있어서,상기 외부 인터페이스상에서 하나 이상의 초기화 명령어들을 다운로딩하는 단계를 더 포함하고,상기 동작 단계는 상기 다운로딩된 하나 이상의 초기화 명령어들을 실행하도록 상기 중앙 처리 유닛을 동작시키는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방법.
- 제 1 항에 있어서,상기 시스템 집적회로는 하나 이상의 초기화 명령어들을 저장하는 시스템 프로그램 메모리를 더 포함하고,상기 동작 단계는 상기 시스템 프로그램 메모리에 저장된 상기 하나 이상의 초기화 명령어들을 실행하도록 상기 중앙 처리 유닛을 동작시키는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방법.
- 제 1 항에 있어서,상기 초기화 단계는,파일 시스템에 따라 상기 하나 이상의 비휘발성 메모리 어레이들을 포맷팅하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방법.
- 제 4 항에 있어서,상기 초기화 단계는,상기 중앙 처리 유닛에 의해 실행가능한 애플리케이션 소프트웨어 프로그램을 상기 하나 이상의 비휘발성 메모리 어레이들에 로딩하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방법.
- 제 5 항에 있어서,상기 초기화 단계는,애플리케이션 데이터를 상기 하나 이상의 비휘발성 메모리 어레이들에 사전-로딩(pre-loading)하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방법.
- 제 1 항에 있어서,상기 초기화 단계는,상기 내장형 서브시스템 제어기를 위한 시스템 펌웨어를 업데이트하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방법.
- 제 2 항에 있어서,상기 시스템 집적회로는 시스템 랜덤 액세스 메모리를 더 포함하고,상기 다운로딩하는 단계는 상기 시스템 랜덤 액세스 메모리에 상기 하나 이상의 초기화 명령어들을 저장하는 단계를 포함하며,상기 동작 단계는,상기 시스템 랜덤 액세스 메모리로부터 상기 하나 이상의 초기화 명령어들을 검색하는 단계; 및상기 검색된 하나 이상의 초기화 명령어들을 실행하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방법.
- 제 2 항에 있어서,상기 시스템 집적회로는 시스템 리드-온리 메모리를 더 포함하고,상기 중앙 처리 유닛을 기동(power up)하는 단계; 및애플리케이션 프로그램이 상주하는지 여부를 검출하기 위해 상기 하나 이상의 비휘발성 메모리 어레이들을 검사(interrogate)하도록 상기 시스템 리드-온리 메모리에 저장된 적어도 하나의 부트(boot) 시퀀스를 상기 중앙 처리 유닛을 통해 실행시키는 실행 단계를 더 포함하며,상기 다운로딩하는 단계는 애플리케이션 프로그램이 상기 하나 이상의 비휘발성 메모리 어레이들에 상주하지 않는다고 결정하는 상기 실행 단계에 응답하여 수행되는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방법.
- 제 9 항에 있어서,상기 애플리케이션 프로그램이 상기 하나 이상의 비휘발성 메모리 어레이들에 상주한다고 결정하는 상기 실행 단계에 응답하여, 상기 중앙 처리 유닛을 통해 상기 애플리케이션 프로그램을 실행시키는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방법.
- 제 1 항에 있어서,상기 하나 이상의 비휘발성 메모리 어레이들은 하나 이상의 플래시 메모리 어레이들을 포함하는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방 법.
- 제 1 항에 있어서,상기 외부 인터페이스에 호스트 시스템을 접속시키는 단계를 더 포함하고,상기 초기화 단계는 상기 외부 인터페이스상에서 상기 호스트 시스템에 의해 수행되는 것을 특징으로 하는 비휘발성 메모리 서브시스템 초기화 방법.
- 디지털 시스템으로서,중앙 처리 유닛, 메모리 서브시스템 제어기, 및 외부 인터페이스를 포함하는 시스템 집적회로; 및상기 메모리 서브시스템 제어기에 결합된 하나 이상의 비휘발성 메모리 어레이들을 포함하고, 상기 중앙 처리 유닛은 애플리케이션 프로그램이 상기 하나 이상의 비휘발성 메모리 어레이들에 상주하는지 여부를 결정하도록 상기 하나 이상의 비휘발성 메모리 어레이들을 검사하도록 프로그래밍되고, 애플리케이션 프로그램이 상기 하나 이상의 비휘발성 메모리 어레이들에 상주하지 않는다는 결정에 응답하여 초기화 명령어들을 실행하도록 프로그래밍되는, 디지털 시스템.
- 제 13 항에 있어서,상기 중앙 처리 유닛은 상기 애플리케이션 프로그램이 상기 하나 이상의 비 휘발성 메모리 어레이들에 상주하지 않는다는 결정에 응답하여, 상기 외부 인터페이스로부터 상기 초기화 명령어들을 다운로딩하도록 프로그래밍되는 것을 특징으로 하는 디지털 시스템.
- 제 14 항에 있어서,상기 다운로딩되는 실행가능 명령어들을 저장하기 위해 상기 중앙 처리 유닛에 결합된 시스템 랜덤 액세스 메모리를 더 포함하는 것을 특징으로 하는 디지털 시스템.
- 제 15 항에 있어서,상기 다운로딩되는 실행가능 명령어들은 상기 외부 인터페이스와 상기 메모리 서브시스템 제어기 사이의 통신 채널을 개방하기 위해, 상기 중앙 처리 유닛에 의해 실행가능한 하나 이상의 명령어들의 시퀀스를 포함하는 것을 특징으로 하는 디지털 시스템.
- 제 13 항에 있어서,상기 중앙 처리 유닛에 의해 실행가능한 부트 시퀀스 명령어들을 저장하기 위해, 상기 중앙 처리 유닛에 결합된 시스템 리드-온리 메모리를 더 포함하고,상기 부트 시퀀스 명령어들은 애플리케이션 프로그램이 상기 하나 이상의 비휘발성 메모리 어레이들에 상주하는지 여부를 결정하도록 상기 하나 이상의 비휘발 성 메모리 어레이들을 검사하기 위한 명령어들을 포함하는 것을 특징으로 하는 디지털 시스템.
- 제 17 항에 있어서,상기 부트 시퀀스 명령어들은 애플리케이션 프로그램이 상기 하나 이상의 비휘발성 메모리 어레이들에 상주하지 않는다는 결정에 응답하여, 상기 외부 인터페이스로부터 실행가능 명령어들을 다운로딩하기 위한 명령어들을 더 포함하는 것을 특징으로 하는 디지털 시스템.
- 제 17 항에 있어서,상기 중앙 처리 유닛은 애플리케이션 프로그램이 상기 하나 이상의 비휘발성 메모리 어레이들에 상주하지 않는다는 결정에 응답하여, 상기 시스템 리드-온리 메모리로부터 상기 초기화 명령어들을 검색하도록 프로그래밍되는 것을 특징으로 하는 디지털 시스템.
- 제 13 항에 있어서,상기 외부 인터페이스는 산업 표준 인터페이스 프로토콜에 따라 구성되는 것을 특징으로 하는 디지털 시스템.
- 제 13 항에 있어서,상기 하나 이상의 비휘발성 메모리 어레이들은 하나 이상의 플래시 메모리 어레이들을 포함하는 것을 특징으로 하는 디지털 시스템.
- 제 21 항에 있어서,상기 시스템 집적회로는,상기 메모리 서브시스템 제어기를 상기 중앙 처리 유닛에 결합시키는 시스템 버스; 및상기 시스템 버스를 상기 메모리 서브시스템 제어기의 인터페이스에 결합시키기 위한 인터페이스 회로 - 상기 메모리 서브시스템 제어기의 인터페이스는 표준 플래시 메모리 인터페이스에 해당함 -를 더 포함하는 것을 특징으로 하는 디지털 시스템.
- 제 13 항에 있어서,상기 시스템 집적회로에 결합된 적어도 하나의 주변장치 기능부를 더 포함하는 것을 특징으로 하는 디지털 시스템.
- 제 23 항에 있어서,상기 적어도 하나의 주변장치 기능부는 오디오 출력 인터페이스를 포함하는 것을 특징으로 하는 디지털 시스템.
- 제 23 항에 있어서,상기 적어도 하나의 주변장치 기능부는,사용자 입력 엘리먼트; 및디스플레이를 포함하는 것을 특징으로 하는 디지털 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/250,094 US7640424B2 (en) | 2005-10-13 | 2005-10-13 | Initialization of flash storage via an embedded controller |
US11/250,094 | 2005-10-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20080075110A true KR20080075110A (ko) | 2008-08-14 |
Family
ID=37897344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087011343A KR20080075110A (ko) | 2005-10-13 | 2006-10-12 | 내장형 제어기를 통한 플래시 스토리지의 초기화 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7640424B2 (ko) |
EP (2) | EP2053501A3 (ko) |
JP (2) | JP5173818B2 (ko) |
KR (1) | KR20080075110A (ko) |
CN (1) | CN101313287B (ko) |
TW (1) | TWI408597B (ko) |
WO (1) | WO2007044926A2 (ko) |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7702831B2 (en) * | 2000-01-06 | 2010-04-20 | Super Talent Electronics, Inc. | Flash memory controller for electronic data flash card |
US20080071973A1 (en) * | 2000-01-06 | 2008-03-20 | Chow David Q | Electronic data flash card with various flash memory cells |
TWI321279B (en) * | 2005-07-20 | 2010-03-01 | Incomm Technologies Co Ltd | Memory device and associated method |
US7631245B2 (en) * | 2005-09-26 | 2009-12-08 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US8291295B2 (en) * | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US20080046641A1 (en) * | 2006-08-21 | 2008-02-21 | Sandisk Il Ltd. | NAND flash memory controller exporting a logical sector-based interface |
US20080046630A1 (en) * | 2006-08-21 | 2008-02-21 | Sandisk Il Ltd. | NAND flash memory controller exporting a logical sector-based interface |
JP2008204582A (ja) * | 2007-02-22 | 2008-09-04 | Elpida Memory Inc | 不揮発性ram |
US20080294838A1 (en) * | 2007-05-25 | 2008-11-27 | Agere Systems Inc. | Universal boot loader using programmable on-chip non-volatile memory |
US7624211B2 (en) * | 2007-06-27 | 2009-11-24 | Micron Technology, Inc. | Method for bus width negotiation of data storage devices |
JP2009037456A (ja) * | 2007-08-02 | 2009-02-19 | Nec Electronics Corp | マイクロコントローラおよびその制御方法 |
US11237956B2 (en) * | 2007-08-13 | 2022-02-01 | Digital Kiva, Inc. | Apparatus and system for object-based storage solid-state device |
US7970919B1 (en) * | 2007-08-13 | 2011-06-28 | Duran Paul A | Apparatus and system for object-based storage solid-state drive and method for configuring same |
US9824006B2 (en) | 2007-08-13 | 2017-11-21 | Digital Kiva, Inc. | Apparatus and system for object-based storage solid-state device |
US7925877B2 (en) * | 2007-09-27 | 2011-04-12 | Texas Instruments Incorporated | Method, system and apparatus for providing a boot loader of an embedded system |
US20090088876A1 (en) * | 2007-09-28 | 2009-04-02 | Conley Kevin M | Portable, digital media player and associated methods |
US7870446B2 (en) * | 2008-02-29 | 2011-01-11 | Kabushiki Kaisha Toshiba | Information processing apparatus and nonvolatile semiconductor memory drive |
CN101571807A (zh) * | 2008-04-28 | 2009-11-04 | 鸿富锦精密工业(深圳)有限公司 | 具有固件的***及其启动方法 |
US8302182B2 (en) * | 2008-09-01 | 2012-10-30 | Mediatek Inc. | Embedded system with authentication, and associated authentication method |
WO2010059146A1 (en) * | 2008-11-24 | 2010-05-27 | Hewlett-Packard Development Company L.P. | Wear leveling memory cells |
US8316201B2 (en) * | 2008-12-18 | 2012-11-20 | Sandisk Il Ltd. | Methods for executing a command to write data from a source location to a destination location in a memory device |
US8788850B1 (en) * | 2009-01-22 | 2014-07-22 | Marvell International Ltd. | Systems and methods for using a security circuit to monitor a voltage of an integrated circuit to counter security threats to the integrated circuit |
US8176232B2 (en) * | 2009-05-11 | 2012-05-08 | Micron Technology, Inc. | Dedicated interface to factory program phase-change memories |
US20110040924A1 (en) * | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code |
US20110041039A1 (en) * | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
CN101996168B (zh) * | 2009-08-25 | 2013-08-07 | 中兴通讯股份有限公司 | 格式化闪存的方法和装置 |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
US8595411B2 (en) * | 2009-12-30 | 2013-11-26 | Sandisk Technologies Inc. | Method and controller for performing a sequence of commands |
US9239806B2 (en) * | 2011-03-11 | 2016-01-19 | Micron Technology, Inc. | Systems, devices, memory controllers, and methods for controlling memory |
US9082474B2 (en) * | 2011-04-21 | 2015-07-14 | Micron Technology, Inc. | Method and apparatus for providing preloaded non-volatile memory content |
US8706955B2 (en) * | 2011-07-01 | 2014-04-22 | Apple Inc. | Booting a memory device from a host |
CN102622249B (zh) * | 2012-03-05 | 2015-12-02 | 山东华芯半导体有限公司 | 一种防止cpu自锁的安全启动方法 |
CN103376948B (zh) * | 2012-04-30 | 2016-08-31 | 联发科技股份有限公司 | 触控器芯片、电子装置以及控制触摸屏的方法 |
WO2014096970A2 (en) * | 2012-12-20 | 2014-06-26 | Marvell World Trade Ltd. | Memory sharing in a network device |
KR20140083530A (ko) * | 2012-12-26 | 2014-07-04 | 삼성전자주식회사 | 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법 |
US9231921B2 (en) * | 2013-08-20 | 2016-01-05 | Janus Technologies, Inc. | System and architecture for secure computer devices |
US9632702B2 (en) | 2014-10-15 | 2017-04-25 | International Business Machines Corporation | Efficient initialization of a thinly provisioned storage array |
CN104572180B (zh) * | 2014-12-19 | 2018-06-26 | 沈阳东软医疗***有限公司 | 一种嵌入式设备的固件升级方法及嵌入式*** |
US9734117B2 (en) * | 2015-01-26 | 2017-08-15 | Western Digital Technologies, Inc. | Data storage device and method for integrated bridge firmware to be retrieved from a storage system on chip (SOC) |
US10218166B2 (en) | 2015-03-03 | 2019-02-26 | Sandisk Technologies Llc | System and method for dynamic monitoring of controller current consumption |
KR20160109207A (ko) * | 2015-03-10 | 2016-09-21 | 삼성전자주식회사 | 메모리의 초기화 및 펌 웨어의 업데이트를 위한 방법 및 전자 장치 |
KR102298661B1 (ko) | 2015-04-30 | 2021-09-07 | 삼성전자주식회사 | 저장 장치 및 그것의 초기화 방법 |
CN104965660B (zh) * | 2015-06-09 | 2018-05-18 | 山东超越数控电子有限公司 | 一种在平板上实现三态键的方法 |
JP2017138781A (ja) * | 2016-02-03 | 2017-08-10 | Necプラットフォームズ株式会社 | ディスクアレイコントローラ、ストレージシステム、方法、及び、プログラム |
US10585674B2 (en) * | 2016-08-22 | 2020-03-10 | Hewlett-Packard Development Company, L.P. | Connected devices information |
US10223094B2 (en) * | 2016-09-30 | 2019-03-05 | Intel Corporation | Initializing a system on a chip |
WO2018103010A1 (zh) * | 2016-12-07 | 2018-06-14 | 华为技术有限公司 | 一种存储设备管理方法及用户终端 |
CN107678686B (zh) * | 2017-09-19 | 2020-07-14 | 山东存储之翼电子科技有限公司 | 基于硬件实现闪存的ftl功能的方法及其数据存储装置 |
WO2020039298A1 (en) * | 2018-08-11 | 2020-02-27 | Inventrom Private Limited | System and method for updating flash memory of microcontroller |
KR102601143B1 (ko) * | 2018-10-29 | 2023-11-13 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11157624B2 (en) * | 2019-08-14 | 2021-10-26 | Silicon Motion, Inc. | Scheme of using electronic device to activate mass production software tool to initialize memory device including flash memory controller and flash memory |
US11237838B2 (en) | 2020-01-02 | 2022-02-01 | Western Digital Technologies, Inc. | Storage system and method for enabling a direct accessible boot block in a memory die |
US11144223B2 (en) | 2020-01-21 | 2021-10-12 | Silicon Motion, Inc. | Flash memory initialization scheme for writing boot up information into selected storage locations averagely and randomly distributed over more storage locations and correspondingly method for reading boot up information from selected storage locations |
US11483137B2 (en) | 2020-01-22 | 2022-10-25 | Micron Technology, Inc. | Dynamic command extension for a memory sub-system |
CN111782290B (zh) * | 2020-06-02 | 2023-10-27 | 青岛信芯微电子科技股份有限公司 | 一种数据处理方法及设备 |
US11714925B2 (en) * | 2020-12-09 | 2023-08-01 | Micron Technology, Inc. | Assuring integrity and secure erasure of critical security parameters |
KR20220101502A (ko) | 2021-01-11 | 2022-07-19 | 에스케이하이닉스 주식회사 | 메모리 장치, 이를 포함하는 메모리 시스템 및 그것의 동작 방법 |
CN113228189A (zh) * | 2021-03-30 | 2021-08-06 | 长江存储科技有限责任公司 | 具有嵌入式固件修复机制的存储器件 |
US11967391B2 (en) * | 2021-08-06 | 2024-04-23 | SK Hynix Inc. | System and method for testing multicore SSD firmware based on preconditions generation |
US11922049B2 (en) | 2021-08-20 | 2024-03-05 | Micron Technology, Inc. | Trim values for multi-plane operations |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69024086T2 (de) | 1989-04-13 | 1996-06-20 | Sundisk Corp | EEprom-System mit Blocklöschung |
US5172338B1 (en) | 1989-04-13 | 1997-07-08 | Sandisk Corp | Multi-state eeprom read and write circuits and techniques |
US5200959A (en) | 1989-10-17 | 1993-04-06 | Sundisk Corporation | Device and method for defect handling in semi-conductor memory |
US5175831A (en) | 1989-12-05 | 1992-12-29 | Zilog, Inc. | System register initialization technique employing a non-volatile/read only memory |
US5270979A (en) | 1991-03-15 | 1993-12-14 | Sundisk Corporation | Method for optimum erasing of EEPROM |
US5663901A (en) | 1991-04-11 | 1997-09-02 | Sandisk Corporation | Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems |
US5430859A (en) | 1991-07-26 | 1995-07-04 | Sundisk Corporation | Solid state memory system including plural memory chips and a serialized bus |
US5712180A (en) | 1992-01-14 | 1998-01-27 | Sundisk Corporation | EEPROM with split gate source side injection |
US6222762B1 (en) | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US5532962A (en) | 1992-05-20 | 1996-07-02 | Sandisk Corporation | Soft errors handling in EEPROM devices |
US5315541A (en) | 1992-07-24 | 1994-05-24 | Sundisk Corporation | Segmented column memory array |
US5428621A (en) | 1992-09-21 | 1995-06-27 | Sundisk Corporation | Latent defect handling in EEPROM devices |
JPH06139131A (ja) * | 1992-10-30 | 1994-05-20 | Toshiba Corp | メモリカード装置 |
JP3290041B2 (ja) * | 1995-02-17 | 2002-06-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 多層プリント基板、多層プリント基板の製造方法 |
JPH10116187A (ja) * | 1996-10-11 | 1998-05-06 | Mitsubishi Electric Corp | マイクロコンピュータ |
US6247084B1 (en) | 1997-10-08 | 2001-06-12 | Lsi Logic Corporation | Integrated circuit with unified memory system and dual bus architecture |
US6009496A (en) | 1997-10-30 | 1999-12-28 | Winbond Electronics Corp. | Microcontroller with programmable embedded flash memory |
US6286097B1 (en) | 1998-08-06 | 2001-09-04 | Via Technologies, Inc. | Computer chipset for accessing a conventional read only memory (ROM) |
US6401198B1 (en) * | 1999-03-09 | 2002-06-04 | Texas Instruments Incorporated | Storing system-level mass storage configuration data in non-volatile memory on each mass storage device to allow for reboot/power-on reconfiguration of all installed mass storage devices to the same configuration as last use |
JP3727485B2 (ja) * | 1999-04-02 | 2005-12-14 | シャープ株式会社 | 不揮発性メモリ内蔵マイクロコンピュータ |
US6487655B1 (en) | 1999-04-29 | 2002-11-26 | Intel Corporation | Computer system formed with a processor and a system board provided with complementary initialization support |
US6151248A (en) | 1999-06-30 | 2000-11-21 | Sandisk Corporation | Dual floating gate EEPROM cell array with steering gates shared by adjacent cells |
US6434697B1 (en) | 1999-10-06 | 2002-08-13 | Micron Technology, Inc. | Apparatus for savings system configuration information to shorten computer system initialization time |
CN1088218C (zh) | 1999-11-14 | 2002-07-24 | 邓国顺 | 用于数据处理***的快闪电子式外存储方法及其装置 |
TW460786B (en) * | 1999-12-09 | 2001-10-21 | Via Tech Inc | System to reprogram the content value of the flash memory of the peripheral device and the method thereof |
US6426893B1 (en) | 2000-02-17 | 2002-07-30 | Sandisk Corporation | Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks |
US6920553B1 (en) | 2000-04-28 | 2005-07-19 | Intel Corporation | Method and apparatus for reading initial boot instructions from a bootable device connected to the USB port of a computer system |
US6675255B1 (en) * | 2000-06-30 | 2004-01-06 | Micron Technology, Inc. | Device initialize command for a synchronous memory |
US6785765B1 (en) * | 2000-06-30 | 2004-08-31 | Micron Technology, Inc. | Status register to improve initialization of a synchronous memory |
US6820148B1 (en) * | 2000-08-17 | 2004-11-16 | Sandisk Corporation | Multiple removable non-volatile memory cards serially communicating with a host |
WO2002044892A2 (en) | 2000-11-28 | 2002-06-06 | 4Thpass Inc. | Method and system for maintaining and distributing wireless applications |
US6877063B1 (en) | 2000-12-22 | 2005-04-05 | Xilinx, Inc. | Multiple memory aliasing for a configurable system-on-chip |
CN1122281C (zh) | 2001-06-30 | 2003-09-24 | 深圳市朗科科技有限公司 | 一种多功能半导体存储装置 |
US6658633B2 (en) | 2001-10-03 | 2003-12-02 | International Business Machines Corporation | Automated system-on-chip integrated circuit design verification system |
US6859856B2 (en) | 2001-10-23 | 2005-02-22 | Flex P Industries Sdn. Bhd | Method and system for a compact flash memory controller |
US7234052B2 (en) | 2002-03-08 | 2007-06-19 | Samsung Electronics Co., Ltd | System boot using NAND flash memory and method thereof |
US6795872B2 (en) | 2002-05-09 | 2004-09-21 | Renesas Technology America, Inc. | Maintaining at least partial functionality of a device as defined by a hardware configuration at a USB bus enumeration while the device memory is programmed |
US20040139307A1 (en) | 2003-01-09 | 2004-07-15 | Barnett Philip C. | Method and apparatus for initializing a semiconductor circuit from an external interface |
JP2004348677A (ja) | 2003-05-26 | 2004-12-09 | Sony Corp | プログラムおよび情報処理方法 |
JP2005085080A (ja) * | 2003-09-10 | 2005-03-31 | Matsushita Electric Ind Co Ltd | データ記録装置 |
US7631138B2 (en) | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
TWI240203B (en) * | 2004-02-25 | 2005-09-21 | Via Tech Inc | A device which updates firmware by a memory card |
US7406559B2 (en) * | 2004-08-23 | 2008-07-29 | Macronix International Co., Ltd. | In-circuit programming architecture with processor, delegable flash controller, and code generator |
-
2005
- 2005-10-13 US US11/250,094 patent/US7640424B2/en active Active
-
2006
- 2006-10-12 EP EP09001942A patent/EP2053501A3/en not_active Withdrawn
- 2006-10-12 CN CN2006800376668A patent/CN101313287B/zh active Active
- 2006-10-12 KR KR1020087011343A patent/KR20080075110A/ko active IP Right Grant
- 2006-10-12 JP JP2008535749A patent/JP5173818B2/ja active Active
- 2006-10-12 WO PCT/US2006/040239 patent/WO2007044926A2/en active Application Filing
- 2006-10-12 EP EP06816937.4A patent/EP1938200B1/en active Active
- 2006-10-13 TW TW095137807A patent/TWI408597B/zh not_active IP Right Cessation
-
2009
- 2009-11-18 US US12/621,011 patent/US9245634B2/en active Active
-
2012
- 2012-08-09 JP JP2012177054A patent/JP2012234568A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2007044926A2 (en) | 2007-04-19 |
CN101313287A (zh) | 2008-11-26 |
WO2007044926A3 (en) | 2007-05-31 |
US7640424B2 (en) | 2009-12-29 |
EP1938200B1 (en) | 2013-11-20 |
JP5173818B2 (ja) | 2013-04-03 |
US20070088940A1 (en) | 2007-04-19 |
CN101313287B (zh) | 2013-05-08 |
JP2009512076A (ja) | 2009-03-19 |
EP1938200A2 (en) | 2008-07-02 |
US20100070693A1 (en) | 2010-03-18 |
US9245634B2 (en) | 2016-01-26 |
JP2012234568A (ja) | 2012-11-29 |
EP2053501A2 (en) | 2009-04-29 |
EP2053501A3 (en) | 2009-09-16 |
TW200745932A (en) | 2007-12-16 |
TWI408597B (zh) | 2013-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7640424B2 (en) | Initialization of flash storage via an embedded controller | |
US11379139B2 (en) | Multi-partitioning of memories | |
US7676640B2 (en) | Flash memory controller controlling various flash memory cells | |
KR100804647B1 (ko) | 병렬형 플래시 인터페이스를 지원하는 직렬형 플래시메모리 장치를 이용한 시스템 부팅 방법 및 장치 | |
US20060075395A1 (en) | Flash card system | |
US10860247B2 (en) | Data writing method and storage controller | |
KR20070077463A (ko) | 컴퓨터 시스템 초기화 방법과 초기화 코드 로딩 방법 및dram 디바이스와 이를 포함하는 내장형 시스템 | |
KR20080084082A (ko) | 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법 | |
CN106951180B (zh) | 数据存储装置以及包括数据存储装置的数据处理*** | |
JP2000065899A (ja) | 半導体装置およびそのデータ書き換え方法 | |
US20190286351A1 (en) | Method for configuring host memory buffer, memory storage apparatus and memory control circuit unit | |
WO2000067132A1 (en) | Combination ata/linear flash memory device | |
US7099967B2 (en) | System and method for storing an image file in a computer system | |
KR101620349B1 (ko) | 부팅가능한 휘발성 메모리 장치와 그를 구비한 메모리 모듈 및 프로세싱 시스템, 및 그를 이용한 프로세싱 시스템 부팅 방법 | |
JP2009176147A (ja) | 電子機器および電子機器のメモリアクセス許可判別方法 | |
CN110764947A (zh) | 数据写入方法以及存储控制器 | |
KR100705341B1 (ko) | 병렬형 플래시 인터페이스를 갖는 직렬형 플래시 메모리장치를 업데이트하는 방법 | |
US7103687B2 (en) | System and method for providing an image file in a computer system | |
CN112540932A (zh) | 存储控制器以及写入辅助方法 |
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 |