KR20070077463A - 컴퓨터 시스템 초기화 방법과 초기화 코드 로딩 방법 및dram 디바이스와 이를 포함하는 내장형 시스템 - Google Patents
컴퓨터 시스템 초기화 방법과 초기화 코드 로딩 방법 및dram 디바이스와 이를 포함하는 내장형 시스템 Download PDFInfo
- Publication number
- KR20070077463A KR20070077463A KR1020070006722A KR20070006722A KR20070077463A KR 20070077463 A KR20070077463 A KR 20070077463A KR 1020070006722 A KR1020070006722 A KR 1020070006722A KR 20070006722 A KR20070006722 A KR 20070006722A KR 20070077463 A KR20070077463 A KR 20070077463A
- Authority
- KR
- South Korea
- Prior art keywords
- code
- memory
- buffer
- boot
- dram
- Prior art date
Links
Images
Classifications
-
- 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/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- 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/4401—Bootstrapping
-
- 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
-
- 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
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Memory System (AREA)
Abstract
본 발명의 실시예는 프로세서, 휘발성 메모리 및 비휘발성 메모리를 포함하는 컴퓨터 시스템을 초기화하는 방법 및 장치에 관한 것이다. 일 실시예에서, 방법은 컴퓨터가 초기화될 때, 비휘발성 메모리에 저장된 초기화 코드를 휘발성 메모리에 자동으로 복제하는 단계 -휘발성 메모리 내의 회로는 복제를 자동으로 생성함- 와, 프로세서에 의해 휘발성 메모리로부터의 초기화 코드의 복제를 실행하는 단계를 포함한다.
Description
도 1은 본 발명의 일 실시예에 따른 예시적인 시스템을 도시하는 블록도이다.
도 2는 예시적인 DRAM 디바이스 및 NAND 플래시 메모리의 데이터 경로 및 상세한 도면을 도시하는 블록도이다.
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 내장형 시스템에 대한 예시적인 부트 시퀀스를 도시하는 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 내장형 시스템을 부팅하는 예시적인 상태 머신을 도시하는 상태도이다.
도 5는 본 발명의 일 실시예에 따른 예시적인 DMA 엔진/파라미터 설정에 대한 상세한 도면을 도시하는 블록도이다.
도 6은 본 발명의 일 실시예에 따른 센스-온-리셋(sense-on-reset) 방식을 사용하여 DMA 엔진을 초기화하는 회로를 도시하는 블록도이다.
도 7은 본 발명의 일 실시예에 따른 부트 코드 및 OS 코드를 저장하는 조합형 RAM 메모리를 도시한다.
도면의 주요 부분에 대한 부호의 설명
100 : 내장형 시스템 102 : 호스트
104 : DRAM 접속부 106 : 부트 코드/데이터 버퍼
108 : SDRAM 어레이 110 : DRAM 디바이스
112 : NAND 플래시 관리자 114 : DRAM 인터페이스
116 : 제어기 코드 버퍼 118 : 제어기 코어
본 발명은 일반적으로 컴퓨터 시스템의 초기화에 관한 것이다. 구체적으로, 본 발명은 컴퓨터 시스템을 부팅하는 개선된 메모리 아키텍처에 관한 것이다.
셀룰러 전화기, PDA, 휴대용 음악 재생기, 가전제품 등과 같은 다수의 현대의 전자 디바이스는 전형적으로 내장형 컴퓨터 시스템을 통합시킨다. 내장형 컴퓨터 시스템은 전형적으로 컴퓨터 프로세서(호스트로 지칭함), (플래시 메모리 및/또는 ROM 메모리와 같은) 비휘발성 메모리 및 DRAM과 같은 휘발성 메모리를 포함한다. 호스트는 중앙 처리 장치(CPU), 디지털 신호 프로세서(DSP), 마이크로제어기 유닛(MCU) 또는 직접 메모리 액세스(DMA) 데이터 전송 디바이스를 포함할 수 있다.
동작시에, 호스트는 전형적으로 운영 체제 또는 다른 운영 코드를 실행한다. 휘발성 메모리는 전형적으로 비휘발성 메모리보다 빠르게 액세스될 수 있으므로, 운영 코드는 휘발성 메모리에 저장되고 호스트에 의해 그 휘발성 메모리로부터 액세스될 수 있다. 그러나, 휘발성 메모리는 자체 내에 저장된 데이터를 관리하기 위해 전원을 필요로 할 수 있으므로, 내장형 시스템이 전력 강하되는 경우에, 휘발성 메모리는 전형적으로 소거된다. 이에 따라, 내장형 시스템이 전력 상승되는 경우에(예컨대, 내장형 시스템이 리셋 상태를 입력하는 경우), 호스트가 필요로 하는 운영 코드는 전형적으로 휘발성 메모리에 로딩된다. 전형적으로, 운영 코드는 내장형 시스템에 전력이 공급되지 않는 경우에도 저장된 데이터를 수용하는 비휘발성 메모리(예컨대, ROM 및/또는 플래시 메모리)로부터 로딩된다. 비휘발성 메모리에 저장된 코드를 휘발성 메모리로 로딩하고 그 휘발성 메모리로부터의 코드를 실행하는 프로세스는 코드 쉐도잉(code shadowing)으로 지칭될 수 있다.
내장형 시스템이 전력 상승되는 경우에, 내장형 시스템은 전형적으로 부트 시퀀스(boot sequence)를 실행하여, 비휘발성 메모리로부터 휘발성 메모리로 운영 코드를 적절히 로딩하고 그 운영 코드로 호스트를 초기화한다. 부트 시퀀스를 실행하기 위해, 호스트는 전형적으로 비휘발성 메모리의 사전정의된 영역에 저장된 부트 코드에 액세스한다. 부트 코드는 호스트에 의해 실행될 수 있는 간단한 코드로서, 호스트가 운영 코드를 휘발성 메모리로 로딩하고 그 운영 코드의 실행을 시작하는 데 필요한 보다 복잡한 작동을 가능하게 한다.
일부 경우에, 호스트는 직접 메모리 액세스(DMA)를 이용하여 운영 코드를 비휘발성 메모리로부터 휘발성 메모리로 전송할 수 있다. DMA는 메모리의 일부가 한 저장 장소에서 다른 저장 장소로 빠르고 자동으로 이동될 수 있게 한다. DMA 전송 을 실행하기 위해, 호스트는 DMA 엔진을 초기화하는 것을 필요로 할 수 있다. 일부 경우에, DMA 엔진은 호스트 내에 위치할 수 있다. DMA 엔진을 초기화하기 위해, 호스트는 부트 코드에 의해 제공된 정보 및/또는 인스트럭션을 사용할 수 있다. 일단 DMA 엔진이 초기화되면, 호스트는 운용 코드를 비휘발성 메모리로부터 휘발성 메모리로 로딩하라는 명령을 DMA 엔진에 발행할 수 있다. 이어서 호스트는 호스트의 적절한 동작에 필요한 운영 코드 및 기타 코드의 실행을 시작할 수 있다.
상술한 내장형 시스템 부팅에는 다양한 호스트용 특정 구성이 필요할 수 있다. 예컨대, 호스트는 전형적으로 다수의 메모리 유형(플래시, ROM 및 DRAM 메모리 유형)을 연결하도록 구성된 다수의 인터페이스를 필요로 한다. 호스트는 전형적으로 부트 코드를 자동으로 로딩하고, 내장형 마이크로제어기에 대한 제어기 코드를 로딩하며, 비휘발성 메모리로부터 휘발성 메모리로의 DMA 전송을 부트 시퀀스의 일부로서 초기화하고 관리하는 능력을 제공하도록 구성될 수도 있다. 내장형 시스템을 부팅하기 위해 호스트가 필요로 하는 이러한 특정 구성은 전형적으로 융통성을 감소시키고 호스트 및 내장형 시스템의 설계 비용을 증가시킨다.
이에 따라, 내장형 시스템을 부팅하는 개선된 시스템 및 방법이 필요하다.
본 발명의 실시예는 프로세서, 휘발성 메모리 및 비휘발성 메모리를 포함하는 컴퓨터 시스템을 초기화하는 방법 및 장치에 관한 것이다. 일 실시예에서, 방법은 컴퓨터가 초기화될 때, 비휘발성 메모리에 저장된 초기화 코드를 휘발성 메모 리에 자동으로 복제하는 단계 -휘발성 메모리 내의 회로는 복제를 자동으로 생성함- 와, 프로세서에 의해 휘발성 메모리로부터의 초기화 코드의 복제를 실행하는 단계를 포함한다.
상술한 본 발명의 특징이 상세히 이해될 수 있도록, 이상에 간략히 요약된 본 발명의 보다 구체적인 설명은 실시예를 참조할 수 있으며, 이들 중 일부는 첨부되는 도면에 도시된다. 그러나, 첨부되는 도면은 단지 본 발명의 전형적인 실시예를 도시할 뿐이므로, 본 발명이 다른 동일하게 유효한 실시예를 허용할 수 있도록, 본 발명의 범주를 제한하는 것으로 고려되지 않는다는 점에 주목해야 한다.
본 발명의 실시예는 내장형 시스템을 부팅하는 개선된 시스템 및 방법을 제공한다. 본 발명의 일 실시예에서, 비휘발성 메모리에 저장된 부트 코드 및 제어기 코드는 휘발성 메모리 칩에 위치한 DMA 엔진에 의해 부트 코드 버퍼 및 제어기 코드 버퍼로 로딩될 수 있다. 휘발성 메모리 칩에 위치한 DMA 엔진을 이용하여 부트 코드 및 제어기 코드를 로딩함으로써, 내장형 시스템을 부팅하는 데 필요한 프로세싱 작업부하는 호스트 프로세서로부터 휘발성 메모리 칩으로 오프로딩될 수 있고, 이로써, 호스트 프로세서 및 내장형 시스템의 복잡성(및 이에 따른 전체 비용)이 감소한다.
부트 코드가 비휘발성 메모리로부터 휘발성 메모리 내의 부트 코드 버퍼로 로딩된 후에, 호스트 프로세서는 부트 코드 버퍼에 저장된 부트 코드에 액세스할 수 있다. 호스트가 부트 코드 버퍼에 저장된 부트 코드에 액세스할 때, 호스트는 부트 동작을 실행할 수 있다. 일 실시예에서, 부트 동작은 휘발성 메모리 내에 운영 체제 코드를 로딩하라는 명령을 DMA 엔진에 발행하는 것을 포함할 수 있다. 이어서 호스트는 휘발성 메모리에 저장된 운영 체제 코드를 실행할 수 있다. 일 실시예에서, 부트 코드 및 제어기 코드는 DMA 엔진에 의해 호스트와의 상호작용 없이 휘발성 메모리 칩으로 로딩될 수 있다.
호스트 프로세서, 휘발성 메모리 및 비휘발성 메모리를 포함하는 내장형 시스템에 대한 본 발명의 실시예가 이하에 설명된다. 그러나, 일부 경우에, 내장형 시스템은 다수의 호스트 프로세서, 다수의 휘발성 메모리 및 다수의 비휘발성 메모리를 포함할 수 있다. 휘발성 메모리는 임의의 유형의 DRAM, SRAM 또는 기타 유형의 휘발성 메모리를 포함할 수 있다. 비휘발성 메모리는 임의의 유형의 NAND 플래시 메모리, NOR 플래시 메모리, PROM, EE-PROM, ROM 또는 기타 유형의 비휘발성 메모리를 포함할 수 있다. 호스트 프로세서는 중앙 처리 장치(CPU), 디지털 신호 프로세서(DSP), 마이크로제어기 유닛(MCU) 또는 직접 메모리 액세스(DMA) 데이터 전송 디바이스를 포함하는 임의의 유형의 프로세서를 포함할 수 있다. 또한, 일부 경우에, 시스템 내의 각 칩은 다수의 유형의 프로세스 및/또는 메모리를 포함할 수 있다. 예컨대, 호스트는 CPU, DSP 및 SRAM을 포함할 수 있다. 일부 경우에, 비휘발성 메모리는 ROM 및 플래시 메모리를 포함할 수 있다. 본 발명의 실시예와 함께 사용될 수 있는 다른 예시적인 조합은 당업자 중 누구에게도 명백해야 한다.
예시적인 내장형 시스템
도 1은 본 발명의 일 실시예에 따른 내장형 시스템(100)을 도시하는 블록도이다. 도시된 바와 같이, 시스템(100)은 호스트(102), 휘발성 메모리(DRAM 디바이스(110)) 및 비휘발성 메모리(NAND 플래시 메모리(130))를 포함할 수 있다. 호스트는 DRAM 접속부(104)를 통해 DRAM 디바이스(110)에 액세스할 수 있다. DRAM 디바이스(110)는 플래시 인터페이스(122)와 플래시 메모리 접속부(124)를 통해 NAND 플래시 메모리(130)에 액세스할 수 있다. 일부 경우에, 플래시 인터페이스가 DRAM 디바이스(110) 상에 배치되므로, 호스트(102)가 플래시 메모리 인터페이스 또는 접속부를 필요로 하지 않을 수 있음으로써 호스트(102)의 설계 및 선택이 간단해진다. 선택적으로, (원한다면), 호스트(102)는 플래시 메모리 인터페이스 및 접속부를 포함할 수 있다.
본 발명의 일 실시예에서, DRAM 디바이스(110)는 SDRAM 메모리 어레이(108)를 포함할 수 있다. DRAM 디바이스는 부트 코드 및 데이터 버퍼(106), DRAM 인터페이스(114), 플래시 관리자(112), 제어기 코드 버퍼(116), 내장형 마이크로제어기 코어(118) 및 DMA 엔진(120)도 포함할 수 있다. 이하에 설명되는 바와 같이, NAND 플래시 인터페이스(122)는 NAND 플래시 메모리(130)에 저장된 부트 코드(132), 제어기 코드(134), 운영 체제 및 애플리케이션 코드(136), 데이터(138) 및 기타 정보를 포함하는 NAND 플래시 메모리(130)에 저장된 정보에 액세스하는 데 사용될 수 있다.
도 2는 본 발명의 일 실시예에 따른 DRAM 디바이스(110) 및 NAND 플래시 메 모리(130)의 데이터 경로 및 상세한 도면을 도시하는 블록도이다. 일부 경우에, NAND 플래시 메모리(130)는 블록(blk0 내지 blkm)으로 분할되고 분배될 수 있다(예컨대, 중복되지 않은 메모리 영역으로 분할됨). 도 1에 도시된 각각의 코드 유형(132, 134, 136)은 부분 내에 이미지(예컨대, 단일 소스로부터 만들어진 복제물)로서 저장될 수 있다. 도 2에 도시된 바와 같이, NAND 플래시 메모리(130)는 제어기 코드 이미지(234), 부트 이미지(232), 운영 체제, 애플리케이션 및/또는 DSP 코드 이미지(236)를 포함할 수 있다. NAND 플래시 메모리(130)는 다른 데이터(138)도 포함할 수 있다. 또한, 상술한 바와 같이, DRAM 메모리 디바이스(110)는 데이터 및 부트 코드 버퍼(106)도 포함할 수 있다. 일부 경우에는, 도시된 바와 같이, 데이터 버퍼(210) 및 부트 코드 버퍼(212)는 개별 버퍼로서 제공될 수 있다.
부트 시퀀스에 대하여 후술되는 바와 같이, DMA 엔진 회로(120)는 자동으로, 부트 코드(132)를 부트 코드 이미지(232)로부터 부트 코드 버퍼(212)로 로딩하고 제어기 코드 이미지(234)로부터 제어기 코드(134)를 로딩하는 데 사용될 수 있다. 부트 코드(132) 및 제어기 코드(134)가 DRAM 메모리 디바이스(110)로 로딩된 후에, DMA 엔진에 발행된 명령은 OS, 애플리케이션, DSP 코드 이미지(236)로부터의 원하는 코드 및 다른 데이터(138)를 SDRAM 어레이(108)에 저장된 코드 쉐도우(204) 및 다른 데이터(202)로 복제하는 DMA 액세스를 초기화하는 데 사용될 수 있다.
일부 경우에, 작업을 호스트(102)로부터 DRAM 메모리 디바이스(110) 내의 DMA 엔진(120) 및 내장형 마이크로제어기(118)로 오프로딩함으로써, 호스트(102) 및 내장형 시스템(100)의 설계 및 운영은 간단해질 수 있다. 또한, 부트 코드(132), 제어기 코드(134) 및 OS/애플리케이션/DSP 코드(136)를 프로그램가능한 비휘발성 메모리(130)에 저장함으로써, 내장형 시스템(100)의 운영에 필요한 코드는 보다 융통성 있는 방식으로 저장 및 검색될 수 있다. 예컨대, 부트 코드(136), 제어기 코드(134) 및/또는 OS/애플리케이션/DSP 코드(136)를 갱신하기 위해, 단지 프로그램가능한 비휘발성 메모리(130) 내의 구(old) 코드 위에 신(new) 코드가 재기록될 뿐이다. 코드의 저장 및 검색에 대한 정보도 프로그램가능한 비휘발성 메모리에 저장될 수 있으므로, 새로운 저장 및 검색 정보도 코드 중 일부가 갱신될 때 프로그램가능한 비휘발성 메모리(130) 내에 프로그래밍될 수 있다.
예시적인
부트
시퀀스
도 3a 및 도 3b는 본 발명의 일 실시예에 따른 내장형 시스템(100)에 대한 예시적인 부트 시퀀스를 도시하는 흐름도이다. 부트 시퀀스는 NAND 플래시 메모리(130)에 저장된 정보를 이용할 수 있다. 이 정보는 시스템(100)이 예컨대, NAND 프로그래머(302)에 의해 초기에 부팅되기 전에, NAND 플래시 메모리(130)에 저장될 수 있다. NAND 프로그래머(302)는 NAND 플래시 메모리(130) 내에 부트 코드(132)를 버닝(burn)하고(단계 304), 제어기 코드(134)를 버닝하며(단계 306), OS 코드(136)를 버닝할 수 있다(단계 308). 당업자에게 알려져 있는 설계시 고려할 사항은 상대적인 메모리 크기 및 각각의 코드(132, 134, 136)의 배치를 선택하는 것일 수 있다.
단계(310)에서 시스템(100)이 전력 상승되는 경우에, 단계(312)에서 부트 코드(132)를 로딩함으로써 부트 시퀀스가 시작될 수 있다. 일 실시예에서, 부트 코드(132)는 DRAM 메모리 디바이스(110)의 DMA 엔진 회로(120)를 사용하여 NAND 플래시 메모리(130)로부터 부트 코드 버퍼(212)로 로딩될 수 있다. 당업자에게 알려진 바와 같이, DMA 액세스는 예컨대, 호스트(102) 또는 다른 외부 제어기 회로에 의한 외부 제어 또는 입력 없이 NAND 플래시 메모리(130)로부터 부트 코드 버퍼(212)로의 부트 코드(132)의 자동 전송을 포함할 수 있다. 단계 314에서, DMA 액세스는 DMA 로드가 완료될 때까지 계속될 수 있다.
DMA 엔진 회로(120)는 DRAM 메모리 디바이스(110)의 NAND 플래시 메모리 인터페이스(122)를 이용하여 NAND 플래시 메모리(130)에 액세스할 수 있다. 일 실시예에서, DRAM 디바이스 내의 DMA 엔진 회로(120) 또는 다른 적절한 회로는 NAND 플래시 메모리(130)의 사전정의된(예컨대, 블록 0, 메모리 어드레스 0에서 시작하고, 지정된 길이 동안 계속되는) 영역으로부터 부트 코드(134)를 로딩하도록 자동으로 구성될 수 있다. 선택적으로, 이하에 설명되는 바와 같이, 부트 코드의 소스 어드레스 및 크기는 외부 디바이스, 메모리 영역(예컨대, ROM 또는 NAND 플래시 메모리(130)의 사전정의된 영역)에 저장된 데이터에 의해 또는 다른 방식으로 제공될 수 있다.
단계(312,314)에서 부트 코드(132)가 로딩된 후에, 단계(316)에서 내장형 마이크로제어기 코어(118)에 의해 사용된 제어기 코드(116)가 로딩되기 시작할 수 있다. 일부 경우에, 제어기 코드(134)의 로딩은 부트 코드(132)가 로딩을 완료한 이 후에 자동으로 개시될 수 있다. 일 실시예에서, 제어기 코드(134)는 NAND 플래시 메모리(130)로부터 제어기 코드 버퍼(116)로 로딩될 수 있는데, 여기서 제어기 코드(134)는 내장형 마이크로제어기 코어(118)에 의해 액세스될 수 있다. 일부 경우에, DMA 엔진(120)은 예컨대, 부트 코드(132)를 로딩한 후에, 제어기 코드(134)를 자동으로 로딩하도록 구성될 수 있다. 제어기 코드(134)는 부트 코드(132) 내의 인스트럭션을 사용하고, 외부 디바이스로부터 발행된 인스트럭션을 사용하거나, 당업자에게 알려져 있는 기타 방식을 사용하여 NAND 플래시 메모리(130)의 사전정의된 영역으로부터 로딩될 수 있다. 부트 코드(132) 및 제어기 코드(134)를 로딩하는 다른 실시예도 이하에 보다 상세히 설명된다. 단계(318)에서, 제어기 코드(134)를 로딩하는 데 사용되는 DMA 액세스는 로드가 완료될 때까지 계속될 수 있다.
부트 코드(132) 및 제어기 코드(134)가 부트 코드 버퍼(212) 및 제어기 코드 버퍼(116)로 각각 로딩된 후에, 내장형 마이크로제어기(118)가 활성화될 수 있다. 단계(320)에서, NAND 플래시 관리자(112), 에러 정정 코드(ECC) 및 코드 압축해제 유틸리티가 설정될 수 있다. 내장형 마이크로제어기(118)는 NAND 플래시 메모리(130)에 대한 NAND 플래시 관리 기능을 제공하는 데 사용될 수 있다(예컨대, 이로써 호스트(102)로부터 이러한 플래시 메모리 관리를 오프로딩함). NAND 플래시 관리자(112)는 (예컨대, NAND 플래시 메모리(130)에 기록하고, 이로부터 판독하기 위한 지원을 제공함으로써) 내장형 마이크로제어기(118)에 의해 NAND 플래시 메모리(130)에 액세스하는 데에도 이용될 수 있다. ECC 유틸리티는 NAND 플래시 메모 리(130)로부터 수신된 데이터가 정확히 전송되었음을 보장하고, (만일 있다면), 그 전송시에 에러를 정정하는 데 이용될 수 있다. 코드 압축해제 유틸리티는 NAND 플래시 메모리(130)로부터 검색되는 압축 포맷(예컨대, OS/애플리케이션 코드(136))에 저장된 코드를 압축해제하는 데 사용될 수 있다.
내장형 마이크로제어기(118)가 활성화되고, 관련된 지원 회로가 초기화된 후에, 호스트(102)는 부트 버퍼(212)로부터 부팅될 수 있다. 본 발명의 일 실시예에서, 부트 버퍼(212)는 DRAM 접속부(104)를 통해 호스트(102)에 의해 액세스될 수 있다. 부트 버퍼(212)는 예컨대, DRAM 메모리 디바이스(110) 내에 지정된, 사전정의된 메모리 어드레스로부터 데이터를 요청함으로써, 호스트(102)에 의해 액세스될 수 있다. 선택적으로, 메모리 디바이스(110)에 의해 발행된 특정 명령은 부트 버퍼(212)에 액세스하는 데 사용될 수 있다. 호스트(102)는 부트 버퍼(212)에 저장된 부트 코드(132)를 사용하여, 운영 체제 코드(136)를 DRAM 메모리 디바이스(110)로 로딩하고 호스트 시스템 등 내의 운영 체제 코드(136) 및 다른 하드웨어 디바이스의 실행을 시작하는 데 필요한 보다 복잡한 작동을 실행할 수 있다. 예컨대, 부트 코드(132)는 인터럽트를 디스에이블링하고, 호스트(102) 내의 모드 레지스터를 초기화하며, 메모리 디바이스(110)에 운영 체제 코드(136)의 코드 쉐도잉을 시작하라는 명령을 발행할 수 있다. 부트 코드(132)는 메모리 디바이스(110)에 발행되어야 하는 것으로서 코드 쉐도잉 작동을 실행하라는 명령을 나타내는 정보 및 NAND 플래시 메모리(130) 내의 운영 체제 코드(132)의 위치도 제공할 수 있다.
단계(322)에서 호스트(102)가 부팅되고 초기화된 후에, 단계(328)에서 OS/App/DSP 이미지(236)가 로딩될 수 있다. 본 발명의 일 실시예에서, 호스트(102)는 OS/App/DSP 이미지(236)를 DMA 전송을 통해 NAND 플래시 메모리(130)로부터 SDRAM 어레이(108)로 로딩하는 것을 시작하라는 명령을 DMA 엔진(120)에 발행할 수 있다. 일부 경우에, 호스트(102)는 부트 코드(132)를 사용하여 DMA 엔진(120) 및 제어기(118)에 적절한 명령을 발행할 수 있다. 일단 DMA 엔진(120)에 명령이 발행되면, DMA 엔진(120)은 호스트(102)로부터 상호작용 없이 자동 및 자발적으로 DMA 전송을 실행할 수 있다. 한편, 호스트(102)는 메모리 디바이스(110) 및/또는 DMA 엔진(120)이 쉐도잉이 완료되었음(단계 324)을 나타낼 때까지 (대기 상태에서 대기를 포함할 수 있는) 기타 작업과 함께 활성인 채로 남을 수 있다.
단계(330)에서, OS/App/DSP 이미지(236)가 로딩되는 동안, 로딩된 코드는 내장형 ECC를 사용하여 체크되고 (코드(236)가 압축 포맷에 저장되는 경우에는) 압축해제될 수 있다. 일 실시예에서, 내장형 마이크로제어기 코어(118) 및/또는 다른 부품(예컨대, DMA 엔진 회로(120) 및 NAND 플래시 관리자(112))은 ECC를 사용하여 전송된 코드를 체크할 수 있고 압축해제를 실행할 수 있다. DMA 전송은 코드 쉐도우(204)의 DMA 로드가 완료될 때까지 계속될 수 있다(단계 332).
호스트(102)가 쉐도잉이 완료되었다고 판단한 후에(단계 324), 호스트는 SDRAM 어레이(108)에 위치한 코드 쉐도우(204)로부터 운영 체제 코드(136)(및 호스트(102)에 의해 이용되는 기타 코드)를 시작할 수 있다. 일 실시예에서, OS/App/DSP 코드(136)의 DMA 전송이 완료된 후에 DMA 엔진(120)에 의해 발행된 신호 또는 명령은 호스트(102)에게 코드 쉐도잉이 완료되었음을 알리는 데 사용될 수 있다. 호스트(102)가 DRAM 메모리 디바이스(110)로부터의 운영 코드를 시작할 때, 내장형 시스템(100)의 정규 동작이 개시되어, 부트 시퀀스(300)를 성공적으로 완료할 수 있다.
상술한 부트 시퀀스는 다수의 이유로 인해 내장형 시스템의 설계를 개선하는 데 도움이 될 수 있다. 예컨대, 일부 경우에, 호스트(102)는 부트 코드(132) 로딩과 같은 부팅 준비에 사용될 수 없으므로, 부트 코드(132) 로딩 전에 호스트(132)의 사전 초기화를 가능하게 할 필요가 없다. 또한, 호스트(102)는 NAND 플래시 메모리(130)의 초기화에 포함될 수 없으므로, 호스트(102)의 사전 초기화에 대한 필요성을 더 감소시킨다. 또한, DRMA 메모리 디바이스(110)는 DMA 엔진(120) 및 내장형 마이크로제어기 코어(118)를 포함할 수 있으므로, 호스트(102)는 DMA 전송 및 코드 쉐도잉에 대한 광범위한 지원을 제공할 필요가 없다. 대신에, 호스트(102)는 DRAM 메모리 디바이스(110)에 단지 명령을 발행하고 DRAM 메모리 디바이스(110)가 필요한 DMA 전송을 수행하는 것을 허용할 수 있을 뿐이다.
도 4는 본 발명의 일 실시예에 따른 내장형 시스템(100)을 부팅하는 예시적인 상태 머신(400)을 도시하는 상태도이다. 시스템(100)이 초기에 전력 상승되는 경우에, 각각의 시스템 부품은 리셋 상태(402)를 입력할 수 있다. 다음 상태에서(DMA 파라미터 상태(404)), DMA 엔진 회로(120)는 부트 코드(132)를 로딩하는 DMA 파라미터(예컨대, 이동되는 코드의 소스 어드레스, 종착지 어드레스 및 크기)로 초기화될 수 있다. 본 발명의 일 실시예에서, 부트 코드(132)에 대한 DMA 파라미터는 센스-온-리셋 구성(SOR)을 사용하여 DMA 엔진(120) 내의 레지스터(Reg0)에 배치될 수 있다. DMA 엔진 레지스터 및 SOR 구성은 이하에 보다 상세히 설명된다.
부트 코드(132)에 대한 DMA 파라미터가 저장된 후에, DMA 로드는 DMA 로드 상태(406)에서 수행될 수 있다. 일 실시예에서, DMA 엔진(120)은 크기 파라미터에 의해 지정된 부트 코드(132)가 이동될 때까지 자동 카운터를 이용하여 소스 어드레스에서 종착지 어드레스로 부트 코드(132)를 전송할 수 있다. 판독 요청이 NAND 플래시 메모리(130)에 전달되는 시간마다, NAND 플래시 메모리로부터의 신호(NAND 메모리가 준비중일 때 어써트되고 NAND 메모리가 실행중일 때 하강되는 R/B#)는 여전히 로우일 수 있으므로, 페이지가 NAND 플래시 메모리(130)로부터 로딩되는 중임(예컨대, NAND 플래시 메모리(130)가 실행 상태에 있음)을 나타낸다. 페이지가 로딩되었음을 나타내는 R/B# 신호가 어써트될 때, DMA 엔진(120)은 (카운터 값 및 크기 파라미터에 따라) NAND 플래시 메모리(130)로부터 다른 페이지를 로딩함으로써 DMA 전송을 계속하거나 다음 상태로의 로드 및 변환을 완료할 수 있다.
부트 코드(132)가 DMA 엔진(120)을 통해 로딩을 완료한 후에, 자동 트리거는 그 상태가 DMA 파라미터 상태(404)로 역변환하게 할 수 있는데, 여기서 제어기 코드(134)를 전송하는 DMA 파라미터는 초기화된다. 일 실시예에서, DMA 파라미터는 제어기 코드(134)에 대한 소스 어드레스, 종착지 어드레스 및 크기를 DMA 엔진(120)의 레지스터(Reg1)로 로딩함으로써 초기화될 수 있다. 제어기 코드(134)에 대한 DMA 파라미터가 저장된 후에, 상태는 DMA 로드 상태(406)로 변환할 수 있는데, 여기서 제어기 코드(134)의 DMA 로드는 상술한 바와 같이 카운터가 전송되는 코드의 크기를 트래킹하는 동안에 소스 어드레스에서 종착지 어드레스로 코드(134) 를 전송함으로써 수행된다.
제어기 코드(134)가 로딩되고 초기 DMA 전송이 완료된 후에, 상태는 DMA 엔진(120)이 대기 상태(408)에 남아있는 DMA 대기 상태(408)로 변환할 수 있다. 이와 동시에, 내장형 마이크로제어기 코어(118)는 제어기 시작 상태(410)에서 시작할 수 있고, NAND 플래시 관리자(112), ECC 및 코드 압축해제 기능과 같은 NAND 플래시 메모리(130)에 액세스하기 위한 지원을 개시할 수 있다. 상술한 바와 같이, 내장형 마이크로제어기 코어(118)는 제어기 코드 버퍼(116)에 저장된 제어기 코드(134)를 이용하여 초기화를 실행할 수 있다. 내장형 마이크로제어기가 시작하고 NAND 플래시 메모리(130)가 기능을 한 후에, 상태는 예컨대, 부트 코드 버퍼(212)에 저장된 부트 코드(132)를 사용하여, 호스트(102)가 부팅업되는 호스트 부트-업 상태(412)로 변환할 수 있다.
호스트(102)가 부팅업되고 임의의 하드웨어 초기화를 완료하면, 호스트는 (예컨대, 부트 코드(132)에 의해 제공된 명령을 사용하여) DMA 엔진(120)이 DMA 대기 상태(408)에서 DMA 파라미터 상태(404)로 변환하게 하라는 명령을 DMA 엔진(120)에 발행할 수 있는데, 여기서 호스트(102)는 DMA 엔진(120)의 DMA 파라미터를 초기화하여 NAND 플래시 메모리(130)로부터 SDRAM 어레이(108)로 OS/App/DSP 이미지(236)의 코드 쉐도잉을 실행한다. 호스트(102)는 예컨대, OS/App/DSP 이미지(236)의 소스 어드레스, 종착지 어드레스 및 크기에 대한 DMA 파라미터를 제공함으로써 DMA 엔진(120)을 초기화할 수 있다. OS/App/DSP 이미지(236)에 대한 파라미터는 예컨대, DMA 엔진 레지스터(Reg2)에 저장될 수 있다. OS/App/DSP 이미 지(236)에 대한 DMA 파라미터가 저장된 후에, 상태는 DMA 로드 상태(406)로 변환할 수 있는데, 여기서 OS/App/DSP 이미지(236)의 DMA 로드는 상술한 바와 같이 카운터가 전송되는 코드의 크기를 트래킹하는 동안 OS/App/DSP 코드(136)를 소스 어드레스로부터 종착지 어드레스로 전송함으로써 수행된다.
OS/App/DSP 코드(136)가 DMA 전송을 통해 SDRAM(108)으로 로딩된 후에, DMA 엔진(120)은 호스트(102)가 코드 쉐도우(204)을 사용하여 운영 체제를 시작하는 동안 DMA 대기 상태(408)로 리턴할 수 있다(호스트 시작 OS 상태(414)). 호스트(102)가 정규 동작을 시작한 후에, 내장형 시스템(100) 내의 호스트(102) 또는 다른 부품은 데이터 전송 상태(416)에서 다른 DMA 데이터 전송 시작을 초기화할 수 있다.
DMA 엔진 제어
도 5는 본 발명의 일 실시예에 따른 예시적인 DMA 엔진(120) 및 파라미터 설정에 대한 상세한 도면을 도시하는 블록도이다. 도시된 바와 같이, DMA 엔진(120)은 다수의 레지스터(5020, 5021, 5022, 5023), 어드레스 발생기 및 카운터(504), NAND 액세스 제어(506) 및 DMA 유한 상태 머신(FSM)(508)을 포함할 수 있다. DMA 엔진(512)은 Boot/Os/Data 다운로드 제어(510), 제어기 코드 다운로드 제어(512) 및 데이터 업로드 제어(514)도 포함할 수 있다. 각각의 부품은 이하에 보다 상세히 설명된다.
본 발명의 일 실시예에서, DMA 엔진 레지스터(5020, 5021, 5022, 5023)는 데이터가 NAND 플래시 메모리(130)에서 SDRAM(108)으로 로딩되는 것을 제어하는 데 사용될 수 있으며, 반대의 경우도 또한 같다. 도시된 바와 같이, 전송되는 데이터의 소스 어드레스(SA), 종착지 어드레스(DA) 및 크기를 나타내는 값은 레지스터에 저장될 수 있다.
DMA 전송을 수행하기 위해, 레지스터(5020, 5021, 5022, 5023)는 DMA FSM(508)에 의해 제어될 수 있는 어드레스 발생기 및 카운터(504)로 입력될 수 있다. 어드레스 발생기 및 카운터(504)는 각각의 소스 어드레스, 종착지 어드레스 및 크기 엔트리를 사용하여 소스 어드레스와 종착지 어드레스를 생성할 수 있다. 어드레스 발생기 및 카운터(504)는 DMA 전송 과정을 모니터링하는 카운터를 관리할 수도 있다. 예컨대, DMA 전송이 개시되면, 어드레스 발생기 및 카운터(504)는 카운터를 초기화하고 (NAND 플래시 인터페이스(122)를 통해) NAND 플래시 메모리(130) 및 (SDRAM 인터페이스(114) 또는 예컨대, 부트 코드 버퍼(212)에 대한 다른 인터페이스를 통해) SDRAM 어레이(108)에 소스 및 종착지 어드레스를 제공할 수 있다.
어드레스 발생기 및 카운터가 소스 및 종착지 어드레스를 제공한 후에, DMA FSM(508)은 데이터가 소스 어드레스로부터 판독되고 종착지 어드레스에 기록되도록 요청하는 명령을 NAND 액세스 제어(506)에 발행할 수 있다. 데이터가 전송됨에 따라서, DMA 엔진(120)은 Boot/Os/Data 다운로드 제어(510), 제어기 코드 다운로드 제어(512) 또는 데이터 업로드 제어(514)를 이용하여 전송을 수행할 수 있다. 전송이 수행된 후에, 어드레스 발생기 및 카운터(504)는 카운터를 증가시키거나 감소시킬 수 있고, DMA 전송에 대한 다음 소스 및 종착지 어드레스를 계산할 수 있다. DMA 전송은 (예컨대, 어드레스 발생기 및 카운터(504)에서 카운터를 사용하여 트래킹된) 크기 파라미터와 동일한 데이터량이 전송될 때까지 계속될 수 있다.
DMA 엔진의 초기화
상술한 바와 같이, 본 발명의 일 실시예에서, 내장형 시스템에 전력이 공급되고 DMA 엔진(120)이 초기화되면, DMA 엔진(120)은 호스트(102) 및 내장형 마이크로제어기(118)를 초기화하고 운영하는 데 사용하기 위해 NAND 플래시 메모리(130)에서 DRAM 디바이스(110) 내의 버퍼(106,116)로 부트 코드(132) 및 제어기 코드(134)를 자동으로 전송할 수 있다. 이어서 (예컨대, 호스트(102)에 의해) OS/App/DSP 코드(136)가 DMA 전송을 통해 NAND 플래시 메모리(130)에서 SDRAM 어레이(108)로 로딩되게 하라는 명령이 DRAM 디바이스(110)에 발행될 수 있으며, 이어서 일부 경우에 그 코드(136)는 호스트(102)에 의해 액세스될 수 있다.
일 실시예에서, DMA 엔진(120)(예컨대, DMA FSM(508))에 발행된 PowerUp_Trigger 신호 및 Host_Trigger 신호는 DMA FSM을 부트, 제어기 및/또는 OS/App/DSP 코드(132, 134, 136)를 로딩하기에 적절한 상태에 배치하는 데 사용될 수 있다. 예컨대, PowerUp_Trigger 신호가 수신되면, DMA 엔진(120)은 부트 및 제어기 코드(132,134)를 자동으로 로딩할 수 있다. 이후에, Host_Trigger 신호가 수 신되면, DMA 엔진(120)은 OS/App/DSP 코드(136)를 자동으로 로딩할 수 있다.
본 발명의 일 실시예에서, NAND 플래시 메모리(130)에서 부트 코드 버퍼(212)로의 부트 코드(132)의 초기 전송을 수행하기 위해, DMA 엔진(120)의 제 1 레지스터(5020)는 전송되는 중인 부트 코드(132)의 소스 어드레스(SA) 및 종착지 어드레스(DA) 및 크기로 초기화될 수 있다. 일부 경우에, 초기화 정보는 DMA 엔진(120)에서 사전설정될 수 있다(예컨대, ROM에 저장되거나 하드웨어에 내장됨(hard-wired)). 선택적으로, 초기화 정보는 NAND 플래시 메모리(130)의 사전정의된 영역에 저장될 수 있다. 초기화 정보는 임의의 편리한 외부 소스로부터 수신될 수도 있다. 일부 경우에, 조합 소스(사전정의된 ROM, NAND 플래시 메모리(130) 및/또는 외부 소스)가 이용되어 DMA 엔진(120)에 대한 초기화 정보를 획득할 수 있다. 제어 코드 및 OS/App/DSP 코드(136)에 대한 초기화 정보는 이러한 소스 또는 이러한 소스의 조합으로부터도 수신될 수 있다.
도 6은 본 발명의 일 실시예에 따른 센스-온-리셋 방식을 사용하여 DMA 엔진(120)을 초기화하는 회로(600)를 도시하는 블록도이다. 도시된 경우에, 구성 핀(614)은 로딩되는 부트 코드(132)에 대한 소스 어드레스(SA) 및 크기를 선택하는 데 사용될 수 있다. 상술한 바와 같이, 부트 코드(132)는 부트 코드(132)에 대한 종착지 어드레스(DA)가 구성 핀(614)을 통해 제공되거나 이용될 수 없도록 부트 코드 버퍼 내의 사전정의된 위치에 로딩될 수 있다. 일부 경우에, 구성 핀(614)은 DRAM 디바이스(110)와 같은 일부 유형의 디바이스 상에서 비-리셋 모드 동안 정규 동작시에 공유될 수 있으므로(예컨대, 구성 핀(614)은 어드레스 핀 또는 제어 핀으로 사용될 수 있음), DRAM 디바이스(110)에 DMA 엔진(120)에 대한 소스 어드레스 및 크기를 제공하는 추가 핀이 필요하지 않거나 부가되지 않을 수 있다.
본 발명의 일 실시예에서, 구성 핀(614) 상에 배치된 데이터는 예컨대, 센스-온-리셋(SOR) 동작 동안에 래치(604)를 사용하여 래치될 수 있다. SOR 동작 동안에, DRAM 디바이스(110)에 의해 시스템(100)이 리셋 또는 전력 상승되었음을 나타내는 리셋 신호가 내부에서 발생하거나, 리셋 핀(602)(RESET#)을 통해 수신될 수 있다. 예컨대, 시스템(100)이 전력 상승되면, DRAM 디바이스(110)에 의해 PowerUp_Trigger 신호가 발생할 수 있다. 리셋 신호가 검출되면, 래치(604)는 구성 핀(614)을 통해 제공된 데이터를 래치할 수 있다. 본 발명의 일 실시예에서, 구성 핀(614) 상의 초기화 데이터는 호스트(102) 또는 다른 편리한 디바이스와 같은 외부 디바이스에 의해 제공될 수 있다. 선택적으로, 구성 핀(614) 상의 초기화 데이터는 (원한다면) 원하는 전압 레벨로의 배선-접속형(hard-wired) 접속부를 통해(예컨대, 풀-업 또는 풀-다운 저항을 통해) 제공될 수 있다.
리셋 신호가 수신되고 구성 핀(614) 상에 제공된 초기화 데이터가 래치(604)에 의해 래치된 후에, 초기화 데이터는 적절한 레지스터에 배치될 수 있다. 본 발명의 일 실시예에서, 초기화 데이터는 소스 어드레스 표(608)와 크기 표(606)에서 부트 코드(132)에 대한 소스 어드레스 및 크기를 검색하는 데 사용될 수 있다. 도시된 바와 같이, 만일 4개의 리셋 핀이 소스 어드레스용으로 사용된다면, 검색표(608)는 소스 어드레스에 16개의 서로 다른 엔트리를 제공할 수 있다. 예컨대, 소스 어드레스는 NAND 플래시 메모리(130) 내의 블록 번호로서 제공될 수 있다. 선택적으로, 다수의 핀이 제공되고 소스 어드레스 용으로 직접 어드레싱이 이용될 수 있다. 크기 값에 있어서, 만일 크기 값 용으로 4개의 리셋 핀이 사용되면, 크기 표(606)는 부트 코드(132)의 크기가 선택될 수 있는 16개의 가능한 엔트리를 포함할 수 있다. 예컨대, 크기 값은 킬로바이트(KB)의 수로서 제공될 수 있다. 도시된 바와 같이, 각각의 표(606,608)는 구성 핀(614)에 적절한 전압을 인가하거나 구성 핀(614)이 접속해제되게 함으로써 인가될 수 있는 디폴트 값을 가질 수 있다.
소스 어드레스 및 크기가 결정된 후에, 소스 어드레스 및 크기는 예컨대, DMA 엔진(120)의 제 1 레지스터(5020)에 저장될 수 있다. 일단 부트 코드(132)가 DMA 전송을 통해 NAND 플래시 메모리(130) 내의 부트 코드 이미지(232)에서 SDRAM 어레이(108)로 로딩되었으면, DMA 엔진(120)은 제어기 코드(134)를 로딩하는 것으로 진행할 수 있다.
본 발명의 일 실시예에서, 제어기 코드(134)는 부트 코드(132) 내의 인스트럭션을 사용하여 제어기 코드(134)가 로딩되게 하라는 명령을 DRMA 디바이스(110)에 발행하거나 부트 코드(132) 내의 데이터를 DMA 엔진(120) 내의 레지스터로 직접 로딩함으로써, 부트 코드(132)에 저장된 데이터를 사용하여 로딩될 수 있다. 또한, 상술한 바와 같이, 다른 소스를 이용하여 제어기 코드(134)를 로딩하는 데 사용되는 정보를 획득할 수 있다.
일 실시예에서, 도 6에 도시된 바와 같이, 제어기 코드 DMA 레지스터 설정은 부트 코드 DMA 레지스터 설정으로부터의 데이터를 사용하여 획득되고 부트 코드(132) 자체 내의 데이터로부터도 획득될 수 있다. 예컨대, 일부 경우에, 제어기 코드 이미지(234)는 부트 코드 이미지(232)를 갖는 NAND 플래시 메모리(130)에 근접하게(예컨대, 이웃하는 이용가능한 메모리 공간에) 저장될 수 있다. 따라서, 제어기 코드 이미지(234)에 대한 소스 어드레스를 결정하기 위해, 부트 코드 이미지(232)의 크기(610)에 부트 코드 이미지(232)의 소스 어드레스가 추가될 수 있다. 결과 어드레스는 제어기 코드 이미지(134)의 시작을 나타낼 수 있다. 상술한 바와 같이, 제어기 코드(134)에 대한 종착지 어드레스에 있어서, 제어기 코드가 제어 코드 버퍼(116)에 저장될 수 있으므로 이 어드레스는 사전결정될 수 있다.
일 실시예에서, 전송되는 제어기 코드(134)의 크기는 부트 코드 이미지(232)의 종단에 또는 종단 내에 저장된 데이터로부터 획득될 수 있다. 예컨대, 사전정의된 제어기 코드 크기 정보 중 크기는 부트 코드 이미지(232)의 종단에서 제어기 코드 설정용 레지스터(5021)로 로딩될 수 있다. 일단 레지스터가 초기화되었으면, DMA 엔진(120)은 NAND 플래시 메모리(130)에서 제어기 코드 버퍼(116)로의 제어기 코드(134)의 DMA 전송을 수행할 수 있다.
일 실시예에서, DMA 엔진 레지스터(5022, 5023)는 예컨대, OS/App/DSP 코드(136)의 다음 전송 또는 기타 전송에 이용될 수 있다. 선택적으로, 다수의 레지스터를 이용하는 대신에, 부트 코드(132) 및 제어기 코드(134)용 레지스터 전송이 재사용될 수 있다. 일부 경우에, 선택적으로, 각각의 DMA 전송을 초기화하는 데 단일 레지스터가 이용될 수 있다.
OS/App/DSP 코드(136)를 전송하는 DMA 엔진 레지스터(5022,5023)를 초기화하기 위해, 상술한 방법들 중 임의의 방법이 이용될 수 있다. 일 실시예에서, 호스트(102)는 부트 코드 버퍼(212)에 액세스할 수 있고, 부트 코드(132) 내의 인스트럭션을 이용하여 DMA 엔진 레지스터(5022,5023)를 초기화할 수 있다. 이어서 DMA 엔진(120)은 호스트(102)와의 상호작용 없이 OS/App/DSP 코드(136)의 코드 쉐도잉을 자동으로 수행할 수 있다. 코드 쉐도우(204)가 생성된 후에, 호스트(102)는 SDRAM 어레이(108)로부터 OS/App/DSP 코드(136)를 실행하고, 내장형 시스템(100)의 정규 동작을 시작할 수 있다.
DRAM 메모리 디바이스(110)가 SDRAM 어레이(108), 데이터 버퍼(210), 부트 코드 버퍼(212) 및 제어기 코드 버퍼(116)를 구비하는 것으로 상술되었지만, 상술한 동작에 있어서 임의의 편리한 버퍼 및 메모리 어레이 구성이 이용될 수도 있다. 예컨대, 일 실시예에서, 각각의 DMA 전송은 코드를 별도의 특정 용도의 버퍼에 저장하지 않으면서 NAND 플래시 메모리(130)와 SDRAM 어레이(108) 사이에서 발생할 수 있다. 일부 경우에, 선택적으로, 코드는 초기에 SDRAM 어레이(108)로 로딩되고, 이어서 다른 디바이스 및/또는 회로에 의해 액세스되기 전에 버퍼에 전송된다.
다른 예로써, 도 7은 본 발명의 일 실시예에 따라 부트 코드(132) 및 OS 코드(136)를 저장하는 조합형 RAM 메모리(702)(공유형 버퍼(702)로도 지칭될 수 있음)를 도시한다. 도시된 바와 같이, 부트 코드(132), OS/App/DSP 코드(136) 및 다 른 데이터(138)는 상술한 바와 같이 NAND 플래시 메모리(130)에서 공유형 버퍼(702)로 전송될 수 있다. 선택적으로, 다른 데이터는 SDRAM 어레이(108)에 직접 전송될 수 있다. 제어기 코드(134)는 예컨대, 제어기 코드 버퍼(116)에 저장될 수 있다.
일 실시예에서, 조합형 메모리(702)에서 다른 데이터를 덮어쓰는 것을 피하기 위해, 부트 코드(132)는 조합형 메모리(702) 내의 부트 코드 영역(704)에 저장될 수 있고, OS 코드, 다른 코드 및 데이터는 조합형 메모리(702) 내의 OS 코드/데이터 영역(706)에 저장될 수 있다. 데이터를 조합형 메모리(702)에 효율적으로 저장하기 위해, 부트 코드 영역(704)은 조합형 메모리(702)의 처음에 저장되는 한편, OS 코드/데이터 영역(706)은 조합형 메모리(702)의 마지막에 저장될 수 있다. 데이터 및 코드가 조합형 메모리(702)에 전송됨에 따라, 메모리(702)는 낮은 메모리 어드레스에서 높은 쪽으로 및 높은 메모리 어드레스에서 낮은 쪽으로 채워질 수 있다. 일 실시예에서, 제어 회로는 부트 코드 영역(704)과 OS 코드/데이터(706) 영역의 충돌이 발생하지 않음을 보장하는 데 사용될 수 있다. 일부 경우에, 선택적으로, 공유형 메모리(702)에 저장된 부트 코드(132)는 호스트(102)를 초기화하는 데 사용되고, 이어서 호스트(102)가 부팅된 후에 덮어 쓰인다.
상술한 바와 같이, 본 발명의 일 실시예는 부트 코드(132) 및 제어기 코드(134)를 NAND 플래시 메모리(130)에서 DRAM 메모리 디바이스(110)로 자동 전송하는 데 이용될 수 있는 DMA 엔진(120)에 DRAM 디바이스(110)를 제공한다. DMA 엔진(120)은 OS/App/DSP 코드(136)가 DRAM 디바이스(110)에서 쉐도잉되는 것을 허용 하는 외부 디바이스로부터 직접 또는 간접적으로 명령도 수신할 수 있다. 일부 경우에, DMA 엔진(120)은 내장형 마이크로제어기(118) 또는 호스트(102) 입력 없이 초기 부팅을 수행할 수 있고, 재배치가능한 부트/제어기 코드 저장 위치에 적합할 수 있다. 또한, 일부 경우에, 부트 코드(132)와 OS 또는 다른 코드(136)를 저장하는 데 공유형 버퍼(702)를 사용하는 것이 가능할 수 있다.
상술한 내용은 본 발명의 실시예에 관한 것이지만, 본 발명의 기본 범주를 벗어나지 않으면서 본 발명의 다른 및 또 다른 실시예를 발명할 수 있으며, 본 발명의 범주는 후속하는 특허청구범위에 의해 규정된다.
본 발명에 따르면, 프로세서, 휘발성 메모리 및 비휘발성 메모리를 포함하는 컴퓨터 시스템을 초기화하는 컴퓨터 시스템 초기화 방법과 초기화 코드 로딩 방법 및 DRAM 디바이스와 이를 포함하는 내장형 시스템을 제공함으로써, 호스트 프로세서 및 내장형 시스템의 복잡성(및 이에 따른 전체 비용)이 감소할 수 있다.
Claims (29)
- 프로세서, 휘발성 메모리 및 비휘발성 메모리를 포함하는 컴퓨터 시스템을 초기화하는 방법에 있어서,상기 컴퓨터 시스템이 초기화될 때, 상기 비휘발성 메모리에 저장된 초기화 코드를 상기 휘발성 메모리에 자동으로 복제하는 단계 -상기 휘발성 메모리 내의 회로는 상기 복제를 자동으로 생성함- 와,상기 프로세서에 의해 상기 휘발성 메모리로부터의 상기 초기화 코드의 복제를 실행하는 단계를 포함하는컴퓨터 시스템 초기화 방법.
- 제 1 항에 있어서,상기 초기화 코드의 복제를 자동으로 생성하는 단계는,상기 초기화 코드를 상기 비휘발성 메모리에서 상기 휘발성 메모리로 전송하기 위해 직접 메모리 액세스를 수행하는 단계를 포함하되,상기 휘발성 메모리 내의 상기 회로는 상기 직접 메모리 액세스를 수행하는컴퓨터 시스템 초기화 방법.
- 제 2 항에 있어서,상기 초기화 코드를 상기 비휘발성 메모리에서 상기 휘발성 메모리로 전송하기 위해 직접 메모리 액세스를 수행하는 단계는,부트 코드를 부트 코드 버퍼로 자동 전송하는 단계와,제어기 코드를 제어기 코드 버퍼로 자동 전송하는 단계를 포함하는컴퓨터 시스템 초기화 방법.
- 제 3 항에 있어서,상기 부트 코드와 상기 제어기 코드는 상기 부트 코드 버퍼와 상기 제어기 코드 버퍼를 포함하는 공유형 버퍼에 배치되는컴퓨터 시스템 초기화 방법.
- 제 3 항에 있어서,상기 프로세서는 상기 부트 코드 버퍼로부터의 상기 부트 코드를 실행하고, 상기 비휘발성 메모리 디바이스 상의 제어기는 상기 제어기 코드 버퍼로부터의 상기 제어기 코드를 실행하는컴퓨터 시스템 초기화 방법.
- 프로세서, DRAM 및 플래시 메모리를 포함하는 컴퓨터 시스템을 초기화하는 방법에 있어서,상기 컴퓨터 시스템이 초기화될 때, 상기 DRAM 메모리의 부트 코드 버퍼에서 상기 플래시 메모리에 저장된 부트 코드의 복제를 자동으로 생성하는 단계 -상기 DRAM 메모리 내의 직접 메모리 액세스 회로는 상기 복제를 자동으로 생성함- 와,상기 DRAM 메모리에서 상기 부트 코드 버퍼로부터의 상기 부트 코드의 복제를 실행하는 단계를 포함하는컴퓨터 시스템 초기화 방법.
- 제 6 항에 있어서,상기 프로세서는 상기 부트 코드 버퍼로부터의 상기 부트 코드의 복제를 실행하되,상기 부트 코드의 복제 실행에 응답하여, 상기 프로세서로부터 상기 직접 메모리 액세스 회로로 하여금 상기 DRAM 메모리의 메모리 어레이에서 상기 플래시 메모리에 저장된 운영 체제 코드의 복제를 자동으로 생성하게 하라는 명령을 상기 DRAM 메모리에 발행하는 단계와,상기 DRAM 메모리의 상기 메모리 어레이로부터 상기 운영 체제 코드의 복제를 실행하는 단계를 더 포함하는컴퓨터 시스템 초기화 방법.
- 제 6 항에 있어서,상기 플래시 메모리에 저장된 상기 부트 코드의 복제는 직접 메모리 액세스 전송을 통해 생성되는컴퓨터 시스템 초기화 방법.
- 제 8 항에 있어서,상기 직접 메모리 액세스 전송은 상기 프로세서와 상기 DRAM 메모리 사이에서 발행되는 명령 없이 개시되는컴퓨터 시스템 초기화 방법.
- 제 6 항에 있어서,상기 부트 코드의 복제를 생성한 후에, 상기 DRAM 메모리의 제어 코드 버퍼에서 상기 플래시 메모리에 저장된 제어기 코드의 복제를 자동으로 생성하는 단계 -상기 DRAM 메모리 내의 상기 직접 메모리 액세스 회로는 상기 복제를 자동으로 생성함- 와,상기 DRAM 메모리 내의 제어기와 함께 상기 제어기 코드 버퍼에 저장된 상기 제어기 코드의 복제를 실행하는 단계를 더 포함하는컴퓨터 시스템 초기화 방법.
- 내장형 시스템에서 초기화 코드를 비휘발성 메모리에서 휘발성 메모리로 로딩하는 방법에 있어서,상기 내장형 시스템이 전력 상승되었음을 나타내는 전력 상승 신호를 수신하는 단계와,상기 휘발성 메모리의 핀들 상의 상기 초기화 코드에 대한 소스 어드레스 데이터 및 크기 데이터를 판독하는 단계와,상기 비휘발성 메모리에서 상기 휘발성 메모리로 상기 초기화 코드의 직접 메모리 액세스 전송을 수행하는 단계를 포함하는초기화 코드 로딩 방법.
- 제 11 항에 있어서,상기 직접 메모리 액세스 전송은 상기 휘발성 메모리 내의 직접 메모리 액세스 회로에 의해 자동으로 수행되는초기화 코드 로딩 방법.
- 제 12 항에 있어서,상기 휘발성 메모리의 핀들 상의 상기 소스 어드레스 데이터 및 크기 데이터로부터 상기 부트 코드의 소스 어드레스 및 크기를 결정하는 단계 -상기 소스 어드레스 데이터는 상기 소스 어드레스에 대응하는 상기 비휘발성 메모리 내의 블록을 나타내고, 상기 크기 데이터는 상기 부트 코드의 상기 크기에 대응하는 바이트 수를 나타냄- 와,상기 부트 코드의 상기 소스 어드레스 및 상기 크기를 사용하여 상기 직접 메모리 액세스 전송을 수행하는 단계를 더 포함하는초기화 코드 로딩 방법.
- 제 11 항에 있어서,상기 부트 코드의 상기 소스 어드레스 및 상기 크기 데이터로부터 제어기 코드에 대한 소스 어드레스를 계산하는 단계와,상기 비휘발성 메모리 내의 사전정의된 위치로부터 상기 제어기 코드에 대한 크기 데이터를 판독하는 단계와,상기 계산된 제어기 코드에 대한 소스 어드레스 및 상기 크기 데이터를 사용하여 상기 비휘발성 메모리로부터 상기 휘발성 메모리로 상기 제어기 코드의 직접 메모리 액세스 전송을 수행하는 단계를 더 포함하는초기화 코드 로딩 방법.
- 제 11 항에 있어서,상기 내장형 시스템의 프로세서로부터 명령을 수신하는 단계와,상기 프로세서로부터의 상기 명령 수신에 응답하여, 상기 비휘발성 메모리로부터 상기 휘발성 메모리로 운영 체제 코드의 직접 메모리 액세스 전송을 수행하는 단계를 더 포함하는초기화 코드 로딩 방법.
- DRAM 디바이스에 있어서,메모리 어레이와,버퍼와,회로를 포함하되,상기 회로는,초기화 신호를 검출하고,상기 초기화 신호 검출에 응답하여, 외부 비휘발성 메모리로부터 상기 버퍼로 부트 코드의 직접 메모리 액세스 전송을 수행하도록 구성된DRAM 디바이스.
- 제 16 항에 있어서,상기 초기화 신호는 상기 DRAM 디바이스가 전력 상승되는 경우에 상기 DRAM 디바이스에 의해 발생하는DRAM 디바이스.
- 제 16 항에 있어서,상기 DRAM 디바이스는 제 2 버퍼를 더 포함하고,상기 회로는 상기 외부 비휘발성 메모리로부터 상기 제 2 버퍼로 제어기 코드의 전송을 자동으로 수행하도록 추가로 구성되는DRAM 디바이스.
- 제 18 항에 있어서,상기 제 2 버퍼 내의 상기 제어기 코드를 실행하도록 구성된 제어기 회로를 더 포함하는DRAM 디바이스.
- 제 16 항에 있어서,상기 회로는,외부 프로세서로부터 명령을 수신하고,상기 명령 수신에 응답하여, 상기 외부 비휘발성 메모리로부터 상기 메모리 어레이로 운영 체제 코드의 직접 메모리 액세스 전송을 수행하도록 추가로 구성된DRAM 디바이스.
- DRAM 디바이스에 있어서,저장용 휘발성 수단과,버퍼링 수단과,전송 수단을 포함하되,상기 전송 수단은,초기화 신호를 검출하고,상기 초기화 신호의 검출에 응답하여, 저장용 외부 비휘발성 수단으로부터 상기 버퍼링 수단으로 부트 코드의 직접 메모리 액세스 전송을 수행하도록 구성된DRAM 디바이스.
- 제 21 항에 있어서,상기 초기화 신호는 상기 DRAM 디바이스가 전력 상승되는 경우에 상기 DRAM 디바이스에 의해 발생하는DRAM 디바이스.
- 제 21 항에 있어서,상기 DRAM 디바이스는 제 2 버퍼링 수단을 더 포함하고,상기 전송 수단은 상기 전송용 외부 비휘발성 수단으로부터 상기 제 2 버퍼링 수단으로 제어기 코드의 전송을 자동으로 수행하도록 추가로 구성되는DRAM 디바이스.
- 제 23 항에 있어서,상기 제 2 버퍼링 수단에 저장된 상기 제어기 코드를 실행하도록 구성된 제어 수단을 더 포함하는DRAM 디바이스.
- 제 21 항에 있어서,상기 전송 수단은,외부 프로세싱 수단으로부터 명령을 수신하고,상기 명령 수신에 응답하여, 상기 외부 비휘발성 메모리로부터 상기 저장용 휘발성 수단으로 운영 체제 코드의 직접 메모리 액세스 전송을 수행하도록 추가로 구성된DRAM 디바이스.
- 내장형 시스템에 있어서,프로세서와,비휘발성 메모리 디바이스와,휘발성 메모리 디바이스를 포함하되,상기 휘발성 메모리 디바이스는,상기 프로세서와 통신하는 인터페이스와,상기 비휘발성 메모리와 통신하는 인터페이스와,버퍼와,메모리 어레이와,회로를 포함하되,상기 회로는,상기 내장형 시스템의 초기화 검출에 응답하여, 상기 비휘발성 메모리와 통신하는 인터페이스를 통해 상기 비휘발성 메모리로부터 상기 버퍼로 부트 코드의 직접 메모리 액세스 전송을 자동으로 수행하도록 구성된내장형 시스템.
- 제 26 항에 있어서,상기 프로세서는,상기 휘발성 메모리 디바이스로부터 상기 버퍼에 저장된 상기 부트 코드를 판독하고,상기 판독된 부트 코드를 실행하며,상기 부트 코드 실행에 응답하여, 상기 휘발성 메모리 내의 상기 회로에 명령을 발행하도록 구성되되,상기 발행된 명령 수신에 응답하여, 상기 휘발성 메모리 디바이스 내의 상기 회로는 상기 비휘발성 메모리와 통신하는 인터페이스를 통해 상기 비휘발성 메모리로부터 상기 휘발성 메모리 디바이스의 상기 메모리 어레이로 운영 체제 코드를 자동으로 전송하도록 구성된내장형 시스템.
- 제 27 항에 있어서,상기 프로세서는,상기 휘발성 메모리 디바이스로부터 상기 운영 체제 코드의 자동 전송이 완료됨을 나타내는 신호를 검출하고,상기 신호 검출에 응답하여, 상기 휘발성 메모리 디바이스의 상기 메모리 어레이에 저장된 상기 운영 체제 코드의 실행을 시작하도록 구성된내장형 시스템.
- 제 26 항에 있어서,상기 휘발성 메모리 디바이스는 제 2 버퍼를 더 포함하되,상기 휘발성 메모리 디바이스의 상기 회로는,상기 부트 코드의 상기 직접 메모리 액세스 전송이 완료됨을 나타내는 신호 검출에 응답하여, 상기 비휘발성 메모리와 통신하는 인터페이스를 통해 상기 비휘발성 메모리 디바이스로부터 상기 제 2 버퍼로 제어기 코드의 제 2 메모리 액세스 전송을 자동으로 수행하도록 구성된내장형 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/337,754 | 2006-01-23 | ||
US11/337,754 US7490177B2 (en) | 2006-01-23 | 2006-01-23 | System method for performing a direct memory access for automatically copying initialization boot code in a new memory architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20070077463A true KR20070077463A (ko) | 2007-07-26 |
Family
ID=38268363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070006722A KR20070077463A (ko) | 2006-01-23 | 2007-01-22 | 컴퓨터 시스템 초기화 방법과 초기화 코드 로딩 방법 및dram 디바이스와 이를 포함하는 내장형 시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7490177B2 (ko) |
JP (1) | JP2007213571A (ko) |
KR (1) | KR20070077463A (ko) |
CN (1) | CN101051275A (ko) |
DE (1) | DE102007003179A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101249831B1 (ko) * | 2007-08-06 | 2013-04-05 | 삼성전자주식회사 | 컴퓨터 시스템 및 그 부팅 방법 |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4745613B2 (ja) * | 2004-01-20 | 2011-08-10 | キヤノン株式会社 | 情報処理装置及び情報処理方法 |
AU2005249494A1 (en) * | 2004-05-28 | 2005-12-15 | Vertex Pharmaceuticals Incorporated | Modulators of muscarinic receptors |
EP1811395A4 (en) * | 2004-09-28 | 2008-01-02 | Zentek Technology Japan Inc | HOST CONTROLLER |
US7451263B2 (en) * | 2006-02-08 | 2008-11-11 | Infineon Technologies Ag | Shared interface for components in an embedded system |
US7822958B1 (en) * | 2006-03-10 | 2010-10-26 | Altera Corporation | Booting mechanism for FPGA-based embedded system |
US7613913B2 (en) * | 2006-03-21 | 2009-11-03 | Silicon Laboratories Inc. | Digital architecture using one-time programmable (OTP) memory |
TW200741545A (en) * | 2006-04-20 | 2007-11-01 | Altek Corp | Boot system booting by using a NAND flash |
US20080007569A1 (en) * | 2006-07-06 | 2008-01-10 | Rom-Shen Kao | Control protocol and signaling in a new memory architecture |
US20080010420A1 (en) * | 2006-07-06 | 2008-01-10 | Rom-Shen Kao | Method for Accessing Control Registers via a Memory Device |
US7441070B2 (en) * | 2006-07-06 | 2008-10-21 | Qimonda North America Corp. | Method for accessing a non-volatile memory via a volatile memory interface |
US20080010419A1 (en) * | 2006-07-06 | 2008-01-10 | Rom-Shen Kao | System and Method for Issuing Commands |
JP4221423B2 (ja) * | 2006-08-09 | 2009-02-12 | エルピーダメモリ株式会社 | コマンド制御回路 |
JP2008140027A (ja) * | 2006-11-30 | 2008-06-19 | Toshiba Corp | 情報処理装置及び情報処理装置の電源制御方法 |
US20080147940A1 (en) * | 2006-12-18 | 2008-06-19 | Rom-Shen Kao | Method and apparatus for controlling a shared bus |
JP5220747B2 (ja) * | 2007-07-31 | 2013-06-26 | パナソニック株式会社 | 不揮発性記憶装置および不揮発性記憶システム |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
US20090172246A1 (en) * | 2007-12-26 | 2009-07-02 | Sandisk Il Ltd. | Device and method for managing initialization thereof |
CN102160035A (zh) | 2008-09-18 | 2011-08-17 | 马维尔国际贸易有限公司 | 至少部分地在引导期间向存储器预加载应用 |
US8327066B2 (en) * | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
JP2010140266A (ja) * | 2008-12-11 | 2010-06-24 | Toshiba Corp | 電子デバイスシステムと電子デバイス |
CN101751271B (zh) * | 2008-12-16 | 2013-08-21 | 无锡华润矽科微电子有限公司 | 一种基于8位mcu为内核的soc电路及采用该电路的***的控制方法 |
CN102265263A (zh) * | 2008-12-24 | 2011-11-30 | 松下电器产业株式会社 | 总线控制器及初始引导程序的修补方法 |
EP2228718A1 (en) * | 2009-03-11 | 2010-09-15 | Harman Becker Automotive Systems GmbH | Computing device and start-up method therefor |
US8175012B2 (en) * | 2009-03-26 | 2012-05-08 | Mediatek Inc. | Decoding/encoding method for booting from a NAND flash and system thereof |
US9342445B2 (en) | 2009-07-23 | 2016-05-17 | Hgst Technologies Santa Ana, Inc. | System and method for performing a direct memory access at a predetermined address in a flash storage |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
CN102598138B (zh) * | 2009-09-04 | 2014-03-12 | 深圳市永盛世纪科技有限公司 | 一种usb存储器及其操作方法 |
US8560804B2 (en) | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
WO2011133145A1 (en) | 2010-04-21 | 2011-10-27 | Hewlett-Packard Development Company, L.P. | Communicating operating system booting information |
TWI456577B (zh) * | 2010-08-10 | 2014-10-11 | Hon Hai Prec Ind Co Ltd | 反及閘快閃記憶體啓動裝置及使用方法 |
CN102467472B (zh) * | 2010-11-08 | 2015-01-28 | 中兴通讯股份有限公司 | SoC芯片的BOOT启动装置和SoC芯片 |
US10838646B2 (en) | 2011-07-28 | 2020-11-17 | Netlist, Inc. | Method and apparatus for presearching stored data |
US10380022B2 (en) | 2011-07-28 | 2019-08-13 | Netlist, Inc. | Hybrid memory module and system and method of operating the same |
US10198350B2 (en) | 2011-07-28 | 2019-02-05 | Netlist, Inc. | Memory module having volatile and non-volatile memory subsystems and method of operation |
US9141394B2 (en) | 2011-07-29 | 2015-09-22 | Marvell World Trade Ltd. | Switching between processor cache and random-access memory |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
US9436629B2 (en) * | 2011-11-15 | 2016-09-06 | Marvell World Trade Ltd. | Dynamic boot image streaming |
JP5955618B2 (ja) * | 2012-04-18 | 2016-07-20 | アルパイン株式会社 | 電子機器 |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US20130318284A1 (en) * | 2012-05-24 | 2013-11-28 | Silicon Motion, Inc. | Data Storage Device and Flash Memory Control Method |
US9575768B1 (en) * | 2013-01-08 | 2017-02-21 | Marvell International Ltd. | Loading boot code from multiple memories |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9971524B1 (en) | 2013-03-15 | 2018-05-15 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9734067B1 (en) | 2013-03-15 | 2017-08-15 | Bitmicro Networks, Inc. | Write buffering |
US9842024B1 (en) | 2013-03-15 | 2017-12-12 | Bitmicro Networks, Inc. | Flash electronic disk with RAID controller |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9875205B1 (en) | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
US9858084B2 (en) | 2013-03-15 | 2018-01-02 | Bitmicro Networks, Inc. | Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory |
US9916213B1 (en) | 2013-03-15 | 2018-03-13 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9720603B1 (en) | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US9736801B1 (en) | 2013-05-20 | 2017-08-15 | Marvell International Ltd. | Methods and apparatus for synchronizing devices in a wireless data communication system |
US9521635B1 (en) | 2013-05-21 | 2016-12-13 | Marvell International Ltd. | Methods and apparatus for selecting a device to perform shared functionality in a deterministic and fair manner in a wireless data communication system |
WO2014204331A1 (en) * | 2013-06-17 | 2014-12-24 | Llc "Topcon Positioning Systems" | Nand flash memory interface controller with gnss receiver firmware booting capability |
US9477484B2 (en) * | 2013-07-23 | 2016-10-25 | Samsung Electronics Co., Ltd. | System and method for boot acceleration of a data processing system wherein a nonvolatile memory is pre-configured before boot time |
US9329931B2 (en) * | 2013-07-24 | 2016-05-03 | Seagate Technology Llc | Solid state drive emergency pre-boot application providing expanded data recovery function |
US9836306B2 (en) * | 2013-07-31 | 2017-12-05 | Marvell World Trade Ltd. | Parallelizing boot operations |
US10248328B2 (en) * | 2013-11-07 | 2019-04-02 | Netlist, Inc. | Direct data move between DRAM and storage on a memory module |
CN111274063B (zh) | 2013-11-07 | 2024-04-16 | 奈特力斯股份有限公司 | 混合内存模块以及操作混合内存模块的***和方法 |
US11182284B2 (en) | 2013-11-07 | 2021-11-23 | Netlist, Inc. | Memory module having volatile and non-volatile memory subsystems and method of operation |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
US9952991B1 (en) | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
CN109075968A (zh) | 2016-03-08 | 2018-12-21 | 马维尔国际贸易有限公司 | 用于安全设备认证的方法和装置 |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
KR102445674B1 (ko) | 2017-12-18 | 2022-09-22 | 삼성전자주식회사 | 선택적으로 메모리를 부팅시키도록 구성되는 램 컨트롤러 및 그 동작 방법 |
KR20200019513A (ko) * | 2018-08-14 | 2020-02-24 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그 동작 방법 |
KR20200046264A (ko) * | 2018-10-24 | 2020-05-07 | 삼성전자주식회사 | 호스트 메모리 버퍼를 이용하는 데이터 스토리지 장치 및 그 동작 방법 |
KR102648790B1 (ko) * | 2018-12-19 | 2024-03-19 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
US10915329B2 (en) * | 2019-02-24 | 2021-02-09 | Winbond Electronics Corporation | Delayed reset for code execution from memory device |
US11231941B2 (en) * | 2019-06-04 | 2022-01-25 | Microsoft Technology Licensing, Llc | Systems and methods for hardware initialization |
DE102019214835A1 (de) * | 2019-09-27 | 2021-04-01 | Continental Automotive Gmbh | Verfahren zum Inbetriebnehmen einer Vorrichtung mit einer eingebetteten Multimediakarte (eMMC) |
EP3839730B1 (en) * | 2019-12-18 | 2023-11-29 | Ams Ag | Method for starting a system-on-a-chip without read only memory, system-on-a-chip without read only memory and headphone |
CN111459572B (zh) * | 2020-03-31 | 2023-01-31 | 深圳市汇顶科技股份有限公司 | 程序加载方法、控制器、芯片以及电子设备 |
CN111722878A (zh) | 2020-06-19 | 2020-09-29 | 北京集创北方科技股份有限公司 | 芯片启动控制方法、芯片、显示面板及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5535357A (en) * | 1993-03-15 | 1996-07-09 | M-Systems Flash Disk Pioneers Ltd. | Flash memory system providing both BIOS and user storage capability |
KR20010087868A (ko) * | 2000-03-09 | 2001-09-26 | 김광수 | 리눅스 운영 체제 부팅 방법 |
KR20030074106A (ko) * | 2002-03-08 | 2003-09-19 | 삼성전자주식회사 | 낸드 플래시 메모리를 이용한 부트 시스템 및 그 방법 |
JP2003337746A (ja) * | 2002-05-22 | 2003-11-28 | Hitachi Ltd | 情報処理装置の高速起動 |
WO2004107168A1 (en) * | 2003-06-03 | 2004-12-09 | Koninklijke Philips Electronics N.V. | Booting from non-volatile memory |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5359569A (en) * | 1991-10-29 | 1994-10-25 | Hitachi Ltd. | Semiconductor memory |
US5774680A (en) * | 1995-12-11 | 1998-06-30 | Compaq Computer Corporation | Interfacing direct memory access devices to a non-ISA bus |
US6134631A (en) * | 1996-08-19 | 2000-10-17 | Hyundai Electronics America, Inc. | Non-volatile memory with embedded programmable controller |
US6859399B1 (en) * | 2000-05-17 | 2005-02-22 | Marvell International, Ltd. | Memory architecture and system and multiport interface protocol |
TWI240864B (en) * | 2001-06-13 | 2005-10-01 | Hitachi Ltd | Memory device |
US6704840B2 (en) * | 2001-06-19 | 2004-03-09 | Intel Corporation | Computer system and method of computer initialization with caching of option BIOS |
US20030014687A1 (en) * | 2001-07-10 | 2003-01-16 | Grandex International Corporation | Nonvolatile memory unit comprising a control circuit and a plurality of partially defective flash memory devices |
US7752380B2 (en) * | 2003-07-31 | 2010-07-06 | Sandisk Il Ltd | SDRAM memory device with an embedded NAND flash controller |
US7139909B2 (en) * | 2003-10-16 | 2006-11-21 | International Business Machines Corporation | Technique for system initial program load or boot-up of electronic devices and systems |
DE102004004796B4 (de) * | 2004-01-30 | 2007-11-29 | Infineon Technologies Ag | Vorrichtung zur Datenübertragung zwischen Speichern |
CN100363893C (zh) | 2004-03-27 | 2008-01-23 | 鸿富锦精密工业(深圳)有限公司 | 加载***及方法 |
US20060294295A1 (en) * | 2005-06-24 | 2006-12-28 | Yukio Fukuzo | DRAM chip device well-communicated with flash memory chip and multi-chip package comprising such a device |
US7404136B2 (en) * | 2005-07-15 | 2008-07-22 | Infineon Technologies Ag | Semiconductor memory device including a signal control device and method of operating the same |
US7221615B2 (en) * | 2005-10-04 | 2007-05-22 | Infineon Technologies Ag | Semiconductor memory chip |
US7415581B2 (en) * | 2005-10-04 | 2008-08-19 | Infineon Technologies Ag | Semiconductor memory chip |
US7644198B2 (en) * | 2005-10-07 | 2010-01-05 | International Business Machines Corporation | DMAC translation mechanism |
US7451263B2 (en) * | 2006-02-08 | 2008-11-11 | Infineon Technologies Ag | Shared interface for components in an embedded system |
US20080007569A1 (en) * | 2006-07-06 | 2008-01-10 | Rom-Shen Kao | Control protocol and signaling in a new memory architecture |
US20080010419A1 (en) * | 2006-07-06 | 2008-01-10 | Rom-Shen Kao | System and Method for Issuing Commands |
US7441070B2 (en) * | 2006-07-06 | 2008-10-21 | Qimonda North America Corp. | Method for accessing a non-volatile memory via a volatile memory interface |
US20080010420A1 (en) * | 2006-07-06 | 2008-01-10 | Rom-Shen Kao | Method for Accessing Control Registers via a Memory Device |
-
2006
- 2006-01-23 US US11/337,754 patent/US7490177B2/en not_active Expired - Fee Related
-
2007
- 2007-01-22 KR KR1020070006722A patent/KR20070077463A/ko not_active Application Discontinuation
- 2007-01-22 DE DE102007003179A patent/DE102007003179A1/de not_active Withdrawn
- 2007-01-22 JP JP2007011552A patent/JP2007213571A/ja not_active Abandoned
- 2007-01-23 CN CNA2007100040422A patent/CN101051275A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5535357A (en) * | 1993-03-15 | 1996-07-09 | M-Systems Flash Disk Pioneers Ltd. | Flash memory system providing both BIOS and user storage capability |
KR20010087868A (ko) * | 2000-03-09 | 2001-09-26 | 김광수 | 리눅스 운영 체제 부팅 방법 |
KR20030074106A (ko) * | 2002-03-08 | 2003-09-19 | 삼성전자주식회사 | 낸드 플래시 메모리를 이용한 부트 시스템 및 그 방법 |
JP2003337746A (ja) * | 2002-05-22 | 2003-11-28 | Hitachi Ltd | 情報処理装置の高速起動 |
WO2004107168A1 (en) * | 2003-06-03 | 2004-12-09 | Koninklijke Philips Electronics N.V. | Booting from non-volatile memory |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101249831B1 (ko) * | 2007-08-06 | 2013-04-05 | 삼성전자주식회사 | 컴퓨터 시스템 및 그 부팅 방법 |
US8832420B2 (en) | 2007-08-06 | 2014-09-09 | Samsung Electronics Co., Ltd. | Computer system and booting method thereof |
Also Published As
Publication number | Publication date |
---|---|
CN101051275A (zh) | 2007-10-10 |
JP2007213571A (ja) | 2007-08-23 |
US7490177B2 (en) | 2009-02-10 |
DE102007003179A1 (de) | 2007-08-02 |
US20070174602A1 (en) | 2007-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7490177B2 (en) | System method for performing a direct memory access for automatically copying initialization boot code in a new memory architecture | |
US8185728B2 (en) | System boot using NAND flash memory and method thereof | |
KR100804647B1 (ko) | 병렬형 플래시 인터페이스를 지원하는 직렬형 플래시메모리 장치를 이용한 시스템 부팅 방법 및 장치 | |
TWI408597B (zh) | 透過嵌入式控制器之快閃儲存器初始化 | |
US7296143B2 (en) | Method and system for loading processor boot code from serial flash memory | |
US7234049B2 (en) | Computer system with NAND flash memory for booting and storage | |
EP1343082B1 (en) | System boot using nand flash memory and method thereof | |
KR20070060101A (ko) | 무선 단말기에서의 비휘발성 메모리 관리 시스템 및 방법 | |
JP2004220557A (ja) | シリアルフラッシュメモリにおける直接実行のための制御装置及びその方法、これを用いたフラッシュメモリチップ | |
JP2003519870A (ja) | シーケンシャルアクセスメモリにストアされるブートコードを介したコンピュータシステムの初期化 | |
US20100169546A1 (en) | Flash memory access circuit | |
KR20140083530A (ko) | 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법 | |
US20090006835A1 (en) | Electronic device and control method thereof | |
US20070233750A1 (en) | Data control apparatus and method | |
EP4296860A1 (en) | Method for running startup program of electronic device, and electronic device | |
KR100534613B1 (ko) | 플래쉬 메모리를 이용한 시스템 부팅 장치 및 그 방법 | |
US8117427B2 (en) | Motherboard, storage device and controller thereof, and booting method | |
JP2017084001A (ja) | 自動車用電子制御装置 | |
KR100705341B1 (ko) | 병렬형 플래시 인터페이스를 갖는 직렬형 플래시 메모리장치를 업데이트하는 방법 | |
CN113590150A (zh) | 存储体控制方法、程序升级方法及设备 | |
KR20060000494A (ko) | 복수의 dram 버스를 채용한 컴퓨팅 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |