KR20140083530A - 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법 - Google Patents

하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법 Download PDF

Info

Publication number
KR20140083530A
KR20140083530A KR1020120153407A KR20120153407A KR20140083530A KR 20140083530 A KR20140083530 A KR 20140083530A KR 1020120153407 A KR1020120153407 A KR 1020120153407A KR 20120153407 A KR20120153407 A KR 20120153407A KR 20140083530 A KR20140083530 A KR 20140083530A
Authority
KR
South Korea
Prior art keywords
boot
hardware
soc
shell
dram
Prior art date
Application number
KR1020120153407A
Other languages
English (en)
Inventor
장영근
고광설
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020120153407A priority Critical patent/KR20140083530A/ko
Priority to US14/098,846 priority patent/US20140181495A1/en
Publication of KR20140083530A publication Critical patent/KR20140083530A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2284Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by power-on test, e.g. power-on self test [POST]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 하나의 실시형태에 따른 SOC(System on Chip)는 부트 쉘의 실행 환경을 제공하기 위한 프라이머리 부트로더를 저장하는 인터널 롬 및 상기 프라이머리 부트로더를 실행하여 하드웨어를 초기화하는 프로세서를 포함하고, 상기 부트 쉘은 상기 하드웨어를 디버그(debug)하기 위한 명령어를 포함하고, 플랫폼이 로딩되기 전, 상기 프로세서는 상기 부트 쉘을 실행하고, 상기 하드웨어를 디버그한다. 따라서, 상기 SOC는 하드웨어를 검증하거나 멀티 부팅을 지원할 수 있다.

Description

하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법{SYSTEM ON CHIP INCLUDING BOOT SHELL DEBUGGING HARDWARE AND DRIVING METHOD THEREOF}
본 발명은 SOC(System on Chip)에 관한 것으로, 좀더 구체적으로는 하드웨어를 디버깅할 수 있고, 멀티 부팅을 지원하는 SOC 및 이의 구동 방법에 관한 것이다.
다양한 모바일 시스템(mobile system)을 지원하기 위하여 다양한 플랫폼(platform) 즉, 운영체제(operating system)가 존재한다. 또한, 다양한 플랫폼을 지원하는 부트로더 역시 다양하게 존재한다. 이러한 다양한 부트로더를 지원하기 위해서 부트로더가 로딩되기 전, 일련의 작업이 필요하다.
또한, 새로운 모바일 시스템이 계속적으로 출시됨에 따라 새로운 모바일 시스템의 하드웨어를 검증할 필요가 있다. 그러나, 모바일 시스템에 운영체제가 로딩된 이후, 모바일 시스템의 하드웨어를 직접적으로 제어하는 것은 어려운 문제이다. 따라서, 모바일 시스템에 운영체제가 로딩되기 전, 모바일 시스템의 하드웨어를 직접적으로 제어할 필요가 있다.
본 발명의 목적은 운영체제가 부팅되기 전, 하드웨어를 디버깅할 수 있고, 멀티 부팅을 지원하는 SOC를 제공하는 것이다.
본 발명의 또 다른 목적은 상기 SOC의 구동 방법을 제공하는 것이다.
상기 목적을 달성하기 위하여 본 발명의 하나의 실시형태에 따른 SOC(System on Chip)는 부트 쉘의 실행 환경을 제공하기 위한 프라이머리 부트로더를 저장하는 인터널 롬 및 상기 프라이머리 부트로더를 실행하여 하드웨어를 초기화하는 프로세서를 포함하고, 상기 부트 쉘은 상기 하드웨어를 디버그(debug)하기 위한 명령어를 포함하고, 플랫폼이 로딩되기 전, 상기 프로세서는 상기 부트 쉘을 실행하고, 상기 하드웨어를 디버그한다.
하나의 실시 예에 의하면, DRAM을 제어하는 DRAM 컨트롤러 및 프리 세컨더리 부트로더, 복수의 세컨더리 부트로더들, 상기 복수의 세컨더리 부트로더들 각각에 대응하는 복수의 플랫폼들 및 애플리케이션을 저장하는 비휘발성 메모리 장치를 제어하는 비휘발성 메모리 컨트롤러를 더 포함하고, 상기 부트 쉘은 상기 인터널 롬 또는 상기 비휘발성 메모리 장치 중 어느 하나에 저장된다.
하나의 실시 예에 의하면, 상기 부트 쉘이 상기 인터널 롬에 저장되면, 상기 부트 쉘은 상기 인터널 롬에서 실행되고, 상기 부트 쉘이 상기 비휘발성 메모리 장치에 저장되면, 상기 부트 쉘은 인터널 램으로 전송되고, 상기 인터널 램에서 실행된다.
하나의 실시 예에 의하면, 상기 하드웨어를 디버그하기 위한 명령어는 상기 DRAM의 데이터를 변환하는 명령어 및 상기 하드웨어를 제어하는 명령어로 구성된다.
하나의 실시 예에 의하면, 상기 비휘발성 메모리 장치는 하드 디스크 드라이브(Hard Disk Drive), 광디스크 드라이브(Optical Disk Drive), 솔리드 스테이트 드라이브(Solid State Drive), MMC(Multi-Media Card), eMMC(embedded Multi-Media Card), SD(Secure Digital) 카드 중 어느 하나를 포함한다.
하나의 실시 예에 의하면, 상기 프리 세컨더리 부트로더는 상기 DRAM을 초기화시키고, 상기 세컨더리 부트로더를 상기 DRAM에 로딩하도록 제어한다.
하나의 실시 예에 의하면, 상기 세컨더리 부트로더는 상기 플랫폼을 상기 DRAM에 로딩되도록 제어한다.
하나의 실시 예에 의하면, 상기 부트 쉘은 멀티 부팅을 지원하기 위한 명령어를 더 포함하고, 상기 멀티 부팅을 지원하기 위한 명령어는 상기 세컨더리 부트로더, 상기 플랫폼, 상기 애플리케이션 중 어느 하나를 리드(read) 또는 라이트(write)하는 로드/스토어 명령어 및 상기 멀티 부팅을 설정하는 환경 변수를 로드하거나 셋팅하는 겟/셋 명령어로 구성된다.
하나의 실시 예에 의하면, 상기 하드웨어는 상기 DRAM, 상기 비휘발성 메모리 장치, LCD(liquid crystal display), 사운드(sound) 장치 등 SoC에 포함된 모든 하드웨어 장치 중 어느 하나를 포함한다.
하나의 실시 예에 의하면, 상기 플랫폼은 WindowsTM, Linux, AndroidTM, iOSTM , RealTime OS중 어느 하나를 포함한다.
본 발명의 다른 하나의 실시형태에 따른 구동 방법은 하드웨어를 디버그하는 명령어를 저장하는 부트 쉘을 포함하는 SOC의 구동 방법에 있어서, 프라이머리 부트로더를 실행하여 상기 하드웨어를 초기화하는 단계, 상기 부트 쉘을 실행하는 단계, 디버그 모드인지를 판단하는 단계 및 상기 디버그 모드이면, 상기 하드웨어를 디버깅하는 단계를 포함한다.
하나의 실시 예에 의하면, 상기 프라이머리 부트로더의 제어에 응답하여 상기 부트 쉘의 권한을 설정하고, 부팅 디바이스를 검색하는 단계를 더 포함한다.
하나의 실시 예에 의하면, 상기 하드웨어를 디버깅하는 단계는 상기 하드웨어의 동작을 제어할 수 있는 설정값을 변경하는 명령어를 실행하는 단계를 포함한다.
하나의 실시 예에 의하면, 상기 디버거 모드가 아니면, 상기 멀티 부팅을 실행하는 단계를 더 포함한다.
하나의 실시 예에 의하면, 멀티 부팅을 실행하는 단계는 세컨더리 부트로더, 플랫폼, 애플리케이션 중 어느 하나를 리드(read) 또는 라이트(write)하는 로드/스토어 명령어 및 상기 멀티 부팅을 설정하는 환경 변수를 로드하거나 셋팅하는 겟/셋 명령어를 실행하는 단계를 포함한다.
본 발명의 실시 예에 따른 SOC는 운영체제가 로딩되기 전, 하드웨어를 디버깅할 수 있다.
또한, 본 발명의 실시 예에 따른 SOC는 멀티 부팅을 지원할 수 있다.
도 1은 본 발명의 제1 실시 예에 따른 SOC(100)를 도시한 블록도이다.
도 2는 도 1에 도시된 인터널 롬(110)을 도시한 블록도이다.
도 3a는 도 1에 도시된 비휘발성 메모리 장치(170)를 도시한 블록도이다.
도 3b는 다른 실시 예에 따른 비휘발성 메모리 장치(170)를 도시한 블록도이다.
도 4는 도 1에 도시된 부트 쉘(10)을 도시한 블록도이다.
도 5는 도 4에 도시된 디버그 모듈(11)이 제어하는 가상 메모리(20)를 도시한다.
도 6a 내지 도 6g는 도 1에 도시된 SOC(100)의 구동 방법을 도시한 블록도이다.
도 7는 도 1에 도시된 SOC(100)의 구동 방법을 도시한 순서도이다.
도 8은 본 발명의 제2 실시 예에 따른 SOC(200)를 도시한 블록도이다.
도 9는 도 8에 도시된 인터널 롬(210)을 도시한 블록도이다.
도 10a는 도 8에 도시된 비휘발성 메모리 장치(270)를 도시한 블록도이다.
도 10b는 다른 실시 예에 따른 비휘발성 메모리 장치(270)를 도시한 블록도이다.
도 11a 내지 도 11g는 도 8에 도시된 SOC(200)의 구동 방법을 도시한 블록도이다.
도 12는 도 8에 도시된 SOC(200)의 구동 방법을 도시한 순서도이다.
도 13은 도 1에 도시된 SOC(100)을 포함하는 메인 보드(main board; 3100)를 도시한다.
도 14는 도 1에 도시된 SOC(100)를 포함하는 컴퓨터 시스템(4100)의 일 실시 예를 도시한다.
도 15는 도 1에 도시된 SOC(100)를 포함하는 컴퓨터 시스템(4200)의 다른 실시 예를 도시한다.
도 16은 도 1에 도시된 SOC(100)를 포함하는 컴퓨터 시스템(4300)의 또 다른 실시 예를 도시한다.
본문에 개시되어 있는 본 발명의 실시 예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시 예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시 예들에 한정되는 것으로 해석되어서는 안 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 개시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시 예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 설명한다.
제1 실시 예는 부트 쉘이 인터널 롬에 저장된 경우이다. 제1 실시 예는 도 1 내지 도 7을 통하여 상세히 설명된다. 제2 실시 예는 부트 쉘이 비휘발성 메모리 장치에 저장된 경우이다. 제2 실시 예는 도 8 내지 도 12를 통하여 상세히 설명된다.
도 1은 본 발명의 제1 실시 예에 따른 SOC(100)를 도시한 블록도이다.
도 1을 참조하면, SOC(100)는 인터널 롬(internal ROM; 110), 인터널 램(internal RAM; 120) 및 프로세서(130)를 포함한다.
인터널 롬(110)은 하드웨어(예를 들면, LCD(liquid crystal display) 디스플레이 장치, 사운드(sound) 장치, 외부 대용량 메모리 장치 등)를 디버깅하거나 멀티 부팅을 지원하는 부트 쉘(boot shell; 10)을 저장한다. 부트 쉘(10)은 제조과정에서 프로그래밍되거나 SOC(100)가 제조된 이후에 사용자(user)에 의하여 프로그램(program)될 수 있을 것이다. 인터널 롬(110)은 비휘발성 메모리 장치로서 일명 매스크 롬(mask rom)이라고도 한다. 부트 쉘(10)은 도 4를 통하여 상세히 설명될 것이다.
인터널 램(120)은 프로세서(130)를 위한 운영 데이터(operating data)를 임시적으로 저장한다. 일반적으로 인터널 램(120)은 SRAM(static random access memory)으로 구현될 것이다.
프로세서(130)는 인터널 롬(110)에 저장된 부트 쉘(10)을 실행할 것이다. 또한, 프로세서(130)는 인터널 램(120)에 저장된 데이터를 억세스할 것이다. 일반적으로, SOC(100)가 모바일 디바이스에 적용된다면, 프로세서(130)는 ARMTM 코어로 구현될 것이다.
SOC(100)는 DRAM 컨트롤러(140) 및 비휘발성 메모리 컨트롤러(160)를 더 포함한다. 또한, SOC(100)는 인터널 롬(110), 인터널 램(120) 및 프로세서(130), DRAM 컨트롤러(140) 및 비휘발성 메모리 컨트롤러(160)를 서로 연결하는 시스템 버스(180)을 더 포함할 것이다.
DRAM 컨트롤러(140)는 DRAM(dynamic random access memory; 150)을 제어한다. 만약 프로세서(130)가 32-bit 명령어로 동작한다면, DRAM 컨트롤러(140)는 최대 4Gbyte의 용량을 갖는 DRAM(150)을 제어할 것이다.
비휘발성 메모리 컨트롤러(160)는 비휘발성 메모리 장치(170)를 제어한다. 비휘발성 메모리 장치(170)는 하드 디스크 드라이브(Hard Disk Drive), 광디스크 드라이브(Optical Disk Drive), 솔리드 스테이트 드라이브(Solid State Drive), MMC(Multi-Media Card), eMMC(embedded Multi-Media Card), SD(Secure Digital) 카드 등을 포함할 것이다.
SOC(100)는 멀티 부팅을 지원하기 위해서, 비휘발성 메모리 컨트롤러(160)는 적어도 두 개의 세컨더리 부트로더들와 이에 대응하는 플랫폼들(즉, 운영체제 이미지) 각각을 저장할 것이다.
도 2는 도 1에 도시된 인터널 롬(110)을 도시한 블록도이다.
도 1 및 도 2를 참조하면, 인터널 롬(110)은 프라이머리 부트로더(primary bootloader; 111) 및 부트 쉘(10)을 저장한다.
프라이머리 부트로더(111)는 부트 쉘을 구동할 수 있도록 SOC(100)의 내부 및 외부에 장착된 하드웨어를 초기화하도록 제어할 것이다. 부트 쉘(10)은 초기화된 하드웨어를 디버그하여 검증하거나 멀티 부팅이 되도록 제어할 것이다.
프로세서(130)는 인터널 롬(110)에 저장된 프라이머리 부트로더(111)를 실행할것이다. 프라이머리 부트로더(111)는 하드웨어가 초기화되도록 제어할 것이다. 프로세서(130)는 인터널 롬(110)에 저장된 부트 쉘(10)을 실행할 것이다.
부트 쉘(10)이 인터널 롬(110)에 저장된 경우, SOC(100) 외부의 비휘발성 메모리 장치(170) 또는 DRAM(150)의 하드웨어에 문제가 발생해도 부트 쉘(10)은 실행될 수 있다. 즉, 부트 쉘(10)은 SOC(100) 내부에 저장되므로, SOC(100)의 외부 장치에 문제가 발생해도 영향을 받지 않는다. 따라서, SOC(100)의 하드웨어 내부에 문제가 없는 한 부팅은 성공적으로 실행될 수 있다.
또한, 비휘발성 메모리 장치(170) 또는 DRAM(150)의 하드웨어에 문제가 발생하는 경우, 부트 쉘(10)이 실행되면, 부트 쉘(10)의 디버그 기능을 이용하여 비휘발성 메모리 장치(170) 또는 DRAM(150)의 문제가 파악하거나 해결할 수 있을 것이다.
도 3a는 도 1에 도시된 비휘발성 메모리 장치(170)를 도시한 블록도이다.
도 1 및 도 3a를 참조하면, 비휘발성 메모리 장치(170)는 프리 세컨더리 부트로더(pre secondary bootloader; 171), 세컨더리 부트로더(secondary bootloader; 172), 플랫폼(platform; 173) 및 애플리케이션(174)을 저장한다.
프리 세컨더리 부트로더(171)는 DRAM(150)을 초기화시키고, 초기화된 DRAM(150)에 세컨더리 부트로더(172)가 로딩되도록 프로세서(130)를 제어한다.
세컨더리 부트로더(172)는 플랫폼(173) 즉, 운영체제(operating system)를 로딩하도록 프로세서(130)를 제어한다. 예들 들면, 운영체제를 로딩하기 위한 부트로더로는 안드로이드(android)TM OS(operating system)에서 사용되는 U-boot, 윈도우(windowsTM), 리눅스(linux)에서 사용되는 BIOS/UEFI 등이 있다.
플랫폼(173)은 시스템(예를 들면, 컴퓨터 시스템, 모바일 시스템 등)을 구성하는 하드웨어를 효율적으로 운영하기 위한 소프트웨어이다. 예들 들면, 플랫폼(173)으로는 원도우, 리눅스, 리얼타임(real-time) OS 등이 있다. 애플리케이션(174)은 부트 쉘(10) 상에서 구동되는 소프트웨어(software)이다.
또한, 비휘발성 메모리 장치(170)는 멀티 부팅을 지원하기 위하여 복수의 운영체제들과 이를 각각 로딩하기 위한 복수의 세컨더리 부트로더들을 더 포함할 수 있다. 자세한 내용은 도 3b를 통하여 상세히 설명된다.
도 3b는 다른 실시 예에 따른 비휘발성 메모리 장치(170)를 도시한 블록도이다.
도 1 및 도 3b를 참조하면, 비휘발성 메모리 장치(170a)는 프리 세컨더리 부트로더(171a), 제1 및 제2 세컨더리 부트로더(172a-172b), 제1 및 제2 플랫폼(173a-173b), 세컨더리 부트로더를 필요하지 않는 플랫폼(173n) 및 애플리케이션(174a)을 저장한다. 세컨더리 부트로더를 필요하지 않는 플랫폼(173n)으로는 리얼타임 OS가 있다.
또한, 비휘발성 메모리 장치(170)는 멀티 부팅을 지원하기 위하여 적어도 두 개 이상의 세컨더리 부트로더들과 이들 각각에 대응하는 복수의 플랫폼들 각각을 더 포함할 수 있다.
새로운 모바일 시스템이 개발되면, 새로운 모바일 시스템을 구성하는 하드웨어를 검증할 필요가 있다. 그러나, 모바일 시스템에 운영체제가 로딩된 이후, 모바일 시스템의 하드웨어를 직접적으로 제어하는 것은 어렵다. 왜냐하면, 운영체제가 로딩되면, 운영체제의 시스템 매니저(system manger)가 하드웨어에 대한 모든 권한을 가지며 만일 운영체제가 로딩되지 못하는 상황이 되었을 시에 하드웨어의 제어를 통해 문제점을 파악하거나 해결할 수 있다.
따라서, 모바일 시스템에 운영체제가 로딩되기 전, 모바일 시스템의 하드웨어를 디버깅할 수 있는 방법이 필요하다. 시스템에 운영체제가 로딩되기 전, 부트 쉘을 이용하여 하드웨어를 디버깅하는 방법은 도 4 및 도 5를 통하여 상세히 설명된다.
도 4는 도 1에 도시된 부트 쉘(10)을 도시한 블록도이다.
도 1 및 도 4를 참조하면, 부트 쉘(10)은 하드웨어를 검증하는 명령어를 제공하는 디버그 모듈(11)과 멀티 부팅을 지원하는 명령어를 제공하는 부트 모듈(12)을 포함한다.
구체적으로, 디버그 모듈(11)은 DRAM(150)의 데이터를 변경하는 메모리 변경 명령어(13) 및 하드웨어를 제어하는 하드웨어 제어 명령어(14)를 포함한다. 부트 모듈(12)은 바이너리 데이터(예를 들면, 세컨더리 부트로더(172), 플랫폼(173), 애플리케이션(174))를 리드(read) 또는 라이트(write)하는 로드(load)/스토어(store) 명령어(14) 및 멀티 부팅의 부팅 순서를 설정하는 환경 변수를 가져오거나 설정하는 겟(get)/셋(set) 명령어(15)를 포함한다. 환경 변수는 멀티 부팅에서 디폴트 운영체제를 설정하거나 복수의 플랫폼들 중 어느 하나를 선택하도록 할 수 있다.
도 5는 도 4에 도시된 디버그 모듈(11)이 제어하는 가상 메모리(20)를 도시한다.
도 1, 도 4 및 도 5를 참조하면, 가상 메모리(20)는 하드웨어를 제어하는 레지스터(register; 21)와 데이터를 저장하는 램(ram; 22)으로 구성된다. 레지스터(21)는 하드웨어(internal hardware)(예를 들면, DRAM(150) 또는 비휘발성 메모리 장치(170))를 제어할 수 있는 레지스터와 맵핑(mapping)되고, 램(22)은 DRAM(150)과 맵핑된다.
레지스터(21)는 복수의 설정값을 저장한다. 복수의 설정값들 각각은 각각의 하드웨어(예를 들면, DRAM(150) 또는 비휘발성 메모리 장치(170))를 제어할 수 있다.
예를 들면, 레지스터(21)에 저장된 설정값을 변경하면, 변경된 설정값에 대응하는 하드웨어가 변경된 설정값에 따라 동작하도록 제어된다. 하드웨어 제어 명령어(14)는 레지스터(21)에 저장된 복수의 설정값들 각각을 세팅(setting)할 수 있다. 즉, 하드웨어는 레지스터(21)에 저장된 설정값을 통하여 제어될 것이다. 또한, 메모리 변경 명령어(13)는 DRAM(170)에 저장된 데이터를 변경할 수 있다.
따라서, 사용자는 부트 쉘(10)의 하드웨어 제어 명령어(14) 및 메모리 변경 명령어(13)를 통해서 하드웨어를 디버깅할 수 있다.
도 6a 내지 도 6g는 도 1에 도시된 SOC(100)의 구동 방법을 도시한 블록도이다.
도 6a를 참조하면, 인터널 롬(110)은 프라이머리 부트로더(111) 및 부트 쉘(10)을 저장한다. 프로세서(130)는 인터널 롬(110)에 저장된 프라이머리 부트로더(111)를 실행한다. 프라이머리 부트로더(111)는 하드웨어가 초기화되도록 제어한다.
도 6b를 참조하면, 프로세서(130)는 인터널 롬(110)에 저장된 부트 쉘(10)를 실행한다. 부트 쉘(10)이 실행되면, 하드웨어를 검증하기 위한 디버그 모드 또는 멀티 부팅을 위한 부팅 모드가 선택될 수 있다.
예를 들면, 사용자는 파워-온이 되면, SOC(100)는 디폴트(default) 플랫폼으로 부팅이 되도록 설정할 수 있을 것이다. 이 때, 파워-온 동작 동안, 사용자에 의하여 인터럽트(interrupt)가 발생되면, 사용자는 SOC(100)에 대하여 디버그 모드 또는 복수의 플랫폼들 중 어느 하나를 선택할 수 있는 부팅 모드를 선택할 수 있을 것이다.
도 6c를 참조하면, 비휘발성 메모리 장치(170)는 프리 세컨더리 부트로더(171), 세컨더리 부트로더(172), 플랫폼(173) 및 애플리케이션(174)를 저장한다. DRAM(150)을 초기화하기 위하여, 프리 세컨더리 부트로더(171)는 비휘발성 메모리 장치(170)에 저장된 프리 세컨더리 부트로더(171)를 인터널 램(120)으로 전송하도록 제어한다.
도 6d를 참조하면, 파워-온 시에, DRAM(150)에는 DRAM(150)을 동작시키기 위한 파워 또는 클럭 등이 설정되어 있지 않다. 따라서, DRAM(150)에 세컨더리 부트로더(172) 및 플랫폼(173)을 로딩하기 위해서, 먼저, DRAM(150)을 초기화할 필요가 있다. 프리 세컨더리 부트로더(171)는 DRAM(150)을 초기화하도록 제어한다.
도 6e 및 6f를 참조하면, 프로세스(130)는 플랫폼(17)으로 부팅하기 위한 세컨더리 부트로더(172)를 DRAM(150)로 전송한다. 세컨더리 부트로더(172)는 플랫폼(173)을 DRAM( 150)으로 로딩하도록 제어한다.
도 6g를 참조하면, 프로세서(130)는 부트 쉘(10) 상에서 구동되는 애플리케이션(174)을 인터널 램(120)으로 전송할 수 있다.
예를 들면, SOC(100)가 디버그 모드이면, 사용자는 하드웨어를 검증하기 위하여 애플리케이션(174)을 사용할 수 있고, SOC(100)가 부팅 모드이면, 사용자는 복수의 플랫폼들중 어느 하나를 선택하기 위하여 애플리케이션(174)을 사용할 수 있다.
도 7는 도 1에 도시된 SOC(100)의 구동 방법을 도시한 순서도이다.
도 1 내지 도 7을 참조하면, S01 단계에서, SOC(100)가 파워-온(power-on) 또는 리셋(reset)이 되면, 프로세서(130)는 인터널 롬(110)에 저장된 프라이머리 부트로더(111)를 실행한다.
S02 단계에서, 프라이머리 부트로더(111)는 하드웨어를 초기화하도록 제어한다. 하드웨어로는 DRAM(150), 비휘발성 메모리 장치(170)뿐만 아니라 LCD 장치, 사운드(sound) 장치 등이 포함될 수 있다.
S03 단계에서, 프라이머리 부트로더(111)는 부트 쉘(10)의 권한을 설정하거나 부팅 디바이스(booting device)를 검색하도록 제어한다.
S04 단계에서, 하드웨어를 디버그하거나 멀티 부팅을 지원하기 위하여, 프로세서(130)는 부트 쉘(10)을 실행한다.
S05 단계에서, 프로세서(130)는 현재 상태가 디버그 모드(debug mode)인지를 판단한다. 현재 상태가 디버그 모드이면, S06 단계를 실행한다. 부팅 모드이면, S07 단계를 실행한다.
예를 들면, SOC(100)가 디버그 모드이면, 사용자는 하드웨어를 디버그하는 명령어를 실행할 수 있으며, 멀티 부팅을 지원하는 명령어를 실행할 수 있다. SOC(100)가 부팅 모드이면, SOC(100)를 포함하는 시스템은 설정된 환경설정 값에 의하여 멀티부팅이 수행될 수 있으며 사용자가 멀티 부팅을 위한 명령을 수행할 수 있다.
또한, SOC(100)가 파워-온 되면, 디폴트(default) 운영체제로 부팅이 되도록 설정할 수 있다. 이 때, 인터럽트(interrupt)가 발생되면, SOC(100)는 디버깅 모드가 되거나 다른 운영체제를 선택할 수 있도록 설정될 수 있다.
S06 단계에서, 디버그 모드이면, 하드웨어를 디버깅하기 위하여 사용자는 부트 쉘(10)의 디버그 모듈(11)의 명령어를 쉘 모드(shell mode)로 사용할 수 있다. 즉, 사용자는 인터액티브(interactive)하게 명령어를 입력하고, 그 명령어에 대한 응답을 확인할 수 있다. 디버깅 동작이 종료하면, S07 단계를 실행한다.
S07 단계에서, 현재 SOC(100)의 상태가 디버그 모드가 아니거나 디버깅 동작이 종료되면, 프로세서(130)는 부트 쉘(10)의 부팅 모듈(12)을 실행한다. 즉, 프로세서(130)는 운영체제를 선택하거나 디폴트 운영체제를 부팅하기 위한 세컨더리 부트로더(172)를 DRAM(150)으로 전송한다.
또한, 프로세서(130)는 세컨더리 부트로더(172)에 대응하는 플랫폼(173)을 로딩한다. 부팅과정은 종료된다.
따라서, 본 발명의 실시 예에 따른 SOC(100)는 운영체제가 로딩되기 전 단일화된 플랫폼에서 부트 쉘을 통하여 하드웨어를 검증하므로, 검증의 편의성을 확보할 수 있고, 검증 기간을 단축할 수 있다.
도 8은 본 발명의 제2 실시 예에 따른 SOC(200)를 도시한 블록도이다.
도 8을 참조하면, SOC(200)는 인터널 롬(210), 인터널 램(220) 및 프로세서(230), DRAM 컨트롤러(240) 및 비휘발성 메모리 컨트롤러(260)를 포함한다. 또한, SOC(200)는 이들을 상호간에 연결하는 시스템 버스(280)을 더 포함할 것이다.
DRAM 컨트롤러(240)는 DRAM(250)을 제어하고, 비휘발성 메모리 컨트롤러(260)는 비휘발성 메모리 장치(270)를 제어한다. 비휘발성 메모리 장치(270)는 하드웨어를 디버깅하거나 멀티 부팅을 지원하는 부트 쉘(10)을 포함한다.
도 9는 도 8에 도시된 인터널 롬(210)을 도시한 블록도이다.
도 8 및 도 9를 참조하면, 인터널 롬(210)은 프라이머리 부트로더(211)를 저장한다. 프라이머리 부트로더(211)는 SOC(200)의 안과 밖에 장착된 하드웨어를 초기화하고, 부트 쉘(10)을 로딩하도록 제어할 것이다.
프로세서(230)는 인터널 롬(210)에 저장된 프라이머리 부트로더(211)를 실행한다. 프라이머리 부트로더(211)는 부트 쉘(10)을 실행하기 위한 환경을 제공하기 위하여 하드웨어를 초기화할 것이다. 프라이머리 부트로더(211)는 비휘발성 메모리 장치(270)으로부터 부트 쉘(10)를 인터널 램(220)로 로딩할 것이다. 프로세서(230)은 부트 쉘(10)을 실행할 것이다.
부트 쉘(10)은 도 4에 도시된 바와 같이, 부트 쉘(10)은 동일한 구조로 구성될 것이다.
부트 쉘(10)이 비휘발성 메모리 장치(270)에 저장된 경우, DRAM(250)의 하드웨어에 문제가 발생해도 부트 쉘(10)은 실행될 수 있다. 또한, DRAM(250)의 하드웨어에 문제가 발생하는 경우, 부트 쉘(10)이 실행되면, 부트 쉘(10)의 디버그 기능을 이용하여 DRAM(250)의 문제가 파악하거나 해결할 수 있을 것이다.
도 10a는 도 8에 도시된 비휘발성 메모리 장치(270)를 도시한 블록도이다.
도 8 및 도 10a를 참조하면, 비휘발성 메모리 장치(270)는 본 발명의 실시 예에 따른 부트 쉘(10)을 저장한다. 또한, 비휘발성 메모리 장치(270)는 프리 세컨더리 부트로더(pre secondary bootloader; 271), 세컨더리 부트로더(secondary bootloader; 272), 플랫폼(platform; 273) 및 애플리케이션(274)을 저장한다.
프리 세컨더리 부트로더(271)는 DRAM(250)을 초기화시키고, 초기화된 DRAM(250)에 세컨더리 부트로더(272)가 로딩되도록 프로세서(230)를 제어한다. 세컨더리 부트로더(272)는 플랫폼(273) 즉, 운영체제(operating system)를 로딩하도록 프로세서(230)를 제어한다. 플랫폼(273)은 시스템(예를 들면, 컴퓨터 시스템, 모바일 시스템 등)을 구성하는 하드웨어를 효율적으로 운영하기 위한 소프트웨어이다. 애플리케이션(274)은 부트 쉘(10) 상에서 구동되는 소프트웨어(software)이다.
또한, 비휘발성 메모리 장치(270)는 멀티 부팅을 지원하기 위하여 복수의 운영체제들과 이를 각각 로딩하기 위한 복수의 세컨더리 부트로더들을 더 포함할 수 있다. 자세한 내용은 도 10b를 통하여 상세히 설명된다.
도 10b는 다른 실시 예에 따른 비휘발성 메모리 장치(270)를 도시한 블록도이다.
도 8 및 도 10b를 참조하면, 비휘발성 메모리 장치(270a)는 프리 세컨더리 부트로더(271a), 제1 및 제2 세컨더리 부트로더(272a-272b), 제1 및 제2 플랫폼(273a-273b), 세컨더리 부트로더를 필요하지 않는 플랫폼(273n) 및 애플리케이션(274a)을 저장한다. 세컨더리 부트로더를 필요하지 않는 플랫폼(273n)으로는 리얼타임 OS가 있다.
또한, 비휘발성 메모리 장치(270)는 멀티 부팅을 지원하기 위하여 적어도 두 개 이상의 세컨더리 부트로더들과 이들 각각에 대응하는 복수의 플랫폼들 각각을 더 포함할 수 있다.
도 11a 내지 도 11g는 도 8에 도시된 SOC(200)의 구동 방법을 도시한 블록도이다.
도 11a를 참조하면, 인터널 롬(210)은 프라이머리 부트로더(211)를 저장한다. 프로세서(230)는 인터널 롬(210)에 저장된 프라이머리 부트로더(211)를 실행한다. 프라이머리 부트로더(211)는 하드웨어가 초기화되도록 제어한다.
도 11b를 참조하면, 프라이머리 부트로더(211)는 비휘발성 메모리 장치(270)에 저장된 부트 쉘(10)을 인터널 램(220)으로 전송하도록 제어할 것이다. 프로세서(230)는 인터널 램(220)에 저장된 부트 쉘(10)를 실행할 것이다. 부트 쉘(10)이 실행되면, 하드웨어를 검증하기 위한 디버그 모드 또는 멀티 부팅을 위한 부팅 모드가 선택될 수 있다.
예를 들면, 사용자는 파워-온이 되면, SOC(200)는 디폴트(default) 플랫폼으로 부팅이 되도록 설정할 수 있을 것이다. 이 때, 파워-온 동작 동안, 사용자에 의하여 인터럽트(interrupt)가 발생되면, 사용자는 SOC(200)에 대하여 디버그 모드 또는 복수의 플랫폼들 중 어느 하나를 선택할 수 있는 부팅 모드를 선택할 수 있을 것이다.
도 11c를 참조하면, 비휘발성 메모리 장치(270)는 부트 쉘(10), 프리 세컨더리 부트로더(271), 세컨더리 부트로더(272), 플랫폼(273) 및 애플리케이션(274)를 저장한다.
DRAM(250)을 초기화하기 위하여, 프리 세컨더리 부트로더(271)는 비휘발성 메모리 장치(270)에 저장된 프리 세컨더리 부트로더(271)를 인터널 램(220)으로 전송하도록 제어한다.
도 11d를 참조하면, 파워-온 시에, DRAM(250)에는 DRAM(250)을 동작시키기 위한 파워 또는 클럭 등이 설정되어 있지 않다. 따라서, DRAM(250)에 세컨더리 부트로더(272) 및 플랫폼(273)을 로딩하기 위해서, 먼저, DRAM(250)을 초기화할 필요가 있다. 프리 세컨더리 부트로더(271)는 DRAM(150)을 초기화하도록 제어한다.
도 11e 및 11f를 참조하면, 프로세스(230)는 플랫폼(273)으로 부팅하기 위한 세컨더리 부트로더(272)를 DRAM(250)로 전송한다. 세컨더리 부트로더(272)는 플랫폼(273)을 DRAM( 250)으로 로딩하도록 제어한다.
도 11g를 참조하면, 프로세서(230)는 부트 쉘(10) 상에서 구동되는 애플리케이션(274)을 인터널 램(220)으로 전송할 수 있다.
예를 들면, SOC(200)가 디버그 모드이면, 사용자는 하드웨어를 검증하기 위하여 애플리케이션(274)을 사용할 수 있고, SOC(200)가 부팅 모드이면, 사용자는 복수의 플랫폼들중 어느 하나를 선택하여 애플리케이션(274)을 사용할 수 있다.
도 12는 도 8에 도시된 SOC(200)의 구동 방법을 도시한 순서도이다.
도 8 내지 도 12을 참조하면, S11 단계에서, SOC(200)가 파워-온(power-on) 또는 리셋(reset)이 되면, 프로세서(230)는 인터널 롬(210)에 저장된 프라이머리 부트로더(211)를 실행한다.
S12 단계에서, 프라이머리 부트로더(211)는 하드웨어를 초기화한다. 하드웨어로는 DRAM(250), 비휘발성 메모리 장치(270)뿐만 아니라 LCD 장치, 사운드 장치 등이 포함될 수 있다.
S13 단계에서, 부트 쉘(10)이 구동될 것을 대비하여, 프라이머리 부트로더(211)는 부트 쉘(10)의 권한을 설정하거나 부팅 디바이스(booting device)를 검색한다.
S14 단계에서, 프라이머리 부트로더(211)는 인터널 롬(210)으로부터 부트 쉘(10)을 인터널 램(220)으로 전송하도록 제어한다.
S15 단계에서, 하드웨어를 디버그하거나 멀티 부팅을 지원하기 위하여, 프로세서(230)는 부트 쉘(10)을 실행한다.
S16 단계에서, 프로세서(230)는 현재 상태가 디버그 모드(debug mode)인지를 판단한다. 현재 상태가 디버그 모드이면, S17 단계를 실행한다. 부팅 모드이면, S18 단계를 실행한다.
예를 들면, SOC(200)가 파워-온 되면, 디폴트(default) 운영체제로 부팅이 되도록 설정할 수 있다. 이 때, 인터럽트(interrupt)가 발생되면, SOC(100)은 디버깅 모드가 되거나 다른 운영체제를 선택할 수 있도록 설정될 수 있다.
S17 단계에서, 만약 현재 상태가 디버그 모드이면, 하드웨어를 디버깅하기 위하여 사용자(user)는 부트 쉘(10)의 명령어를 인터액티브(interactive)하게 실행할 수 있다. 디버깅 동작이 종료하면, S18 단계를 실행한다.
S18 단계에서, 현재 상태가 디버그 모드가 아니거나 디버깅 동작이 종료되면, 부팅 모드가 된다. 프로세서(230)는 세컨더리 부트로더(272) 및 세컨더리 부트로더(272)에 대응하는 플랫폼(273)을 로딩한다. 부팅과정은 종료된다.
도 13은 도 1에 도시된 SOC(100)을 포함하는 메인 보드(main board; 3100)를 도시한다.
도 13을 참조하면, 메인 보드(3100)는 다수의 메모리 장치들 각각이 장착된 슬롯(3110), 중앙 처리 장치(Central Processing Unit; 3120) 및 중앙 처리 장치(3120)를 장착하는 소켓(socket; 3130)을 포함한다.
메인 보드(3100)는 컴퓨터 내에서 기본 회로와 부품들을 담고 있는 가장 기본적이고 물리적인 하드웨어(hardware)로서, 일명 마더 보드(mother board)라고도 한다.
실시 예에 따라, 중앙 처리 장치(3120)는 도 1에 도시된 SOC(100)로 구현될 수 있을 것이다.
도 14는 도 1에 도시된 SOC(100)를 포함하는 컴퓨터 시스템(4100)의 일 실시 예를 도시한다.
도 14를 참조하면, 컴퓨터 시스템(4100)은 메모리 장치(4110), 메모리 장치(4110)을 제어하는 메모리 컨트롤러(4120), 무선 송수신기(4130), 안테나(4140), 어플리케이션 프로세서(application processor; 4150), 입력 장치(4160), 및 디스플레이(4170)를 포함한다.
무선 송수신기(4130)는 안테나(4140)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(4130)는 안테나(4140)를 통하여 수신된 무선 신호를 어플리케이션 프로세서(4150)에서 처리될 수 있는 신호로 변경할 수 있다.
따라서, 어플리케이션 프로세서(4150)는 무선 송수신기(4130)로부터 출력된 신호를 처리하고 처리된 신호를 디스플레이(4170)로 전송할 수 있다. 또한, 무선 송수신기(4130)는 어플리케이션 프로세서(4150)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(4140)를 통하여 외부 장치로 출력할 수 있다.
실시 예에 따라, 어플리케이션 프로세서(4150)는 도 1에 도시된 SOC(100)로 구현될 수 있을 것이다.
입력 장치(4160)는 어플리케이션 프로세서(4150)의 동작을 제어하기 위한 제어 신호 또는 어플리케이션 프로세서(4150)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
실시 예에 따라 메모리 장치(4110)의 동작을 제어할 수 있는 메모리 컨트롤러(4120)는 어플리케이션 프로세서(4150)의 일부로서 구현될 수 있고 또한 어플리케이션 프로세서(4150)와 별도의 칩으로 구현될 수 있다.
도 15는 도 1에 도시된 SOC(100)를 포함하는 컴퓨터 시스템(4200)의 다른 실시 예를 도시한다.
도 15를 참조하면, 컴퓨터 시스템(4200)은 PC(personal computer), 네트워크 서버(Network Server), 태블릿(tablet) PC, 넷-북(net-book), e-리더(e-reader), PDA (personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
컴퓨터 시스템(4200)은 메모리 장치(4210)와 메모리 장치(4210)의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(4220), 어플리케이션 프로세서(4230), 입력 장치(4240) 및 디스플레이(4250)를 포함한다.
어플리케이션 프로세서(4220)는 입력 장치(4240)를 통하여 입력된 데이터에 따라 메모리 장치(4210)에 저장된 데이터를 디스플레이(4250)를 통하여 디스플레이 할 수 있다.
예컨대, 입력 장치(4240)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다. 어플리케이션 프로세서(4230)는 컴퓨터 시스템(4200)의 전반적인 동작을 제어할 수 있고 메모리 컨트롤러(4220)의 동작을 제어할 수 있다.
실시 예에 따라, 어플리케이션 프로세서(4230)는 도 1에 도시된 SOC(100)로 구현될 수 있을 것이다.
실시 예에 따라 메모리 장치(4210)의 동작을 제어할 수 있는 메모리 컨트롤러(4220)는 어플리케이션 프로세서(4230)의 일부로서 구현될 수 있고 또한 어플리케이션 프로세서(4230)와 별도의 칩으로 구현될 수 있다.
도 16은 도 1에 도시된 SOC(100)를 포함하는 컴퓨터 시스템(4300)의 또 다른 실시 예를 도시한다.
도 16을 참조하면, 컴퓨터 시스템(4300)은 이미지 처리 장치(Image Process Device), 예컨대 디지털 카메라 또는 디지털 카메라가 부착된 이동 전화기, 스마트 폰(smart phone) 또는 테블릿(tablet)으로 구현될 수 있다.
컴퓨터 시스템(4300)은 메모리 장치(4310)와 메모리 장치(4310)의 데이터 처리 동작, 예컨대 라이트(write) 동작 또는 리드(read) 동작을 제어할 수 있는 메모리 컨트롤러(4320)를 포함한다. 또한, 컴퓨터 시스템(4300)은 중앙처리장치(4330), 이미지 센서(4340) 및 디스플레이(4350)을 더 포함한다.
이미지 센서(4340)는 광학 이미지를 디지털 신호들로 변환하고, 변환된 디지털 신호들은 중앙처리장치(4330) 또는 메모리 컨트롤러(4320)로 전송된다. 중앙처리장치(4330)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이(4350)를 통하여 디스플레이되거나 또는 메모리 컨트롤러(4320)를 통하여 메모리 장치(4310)에 저장될 수 있다.
또한, 메모리 장치(4310)에 저장된 데이터는 중앙처리장치(4330) 또는 메모리 컨트롤러(4320)의 제어에 따라 디스플레이(4350)를 통하여 디스플레이된다.
실시 예에 따라, 중앙처리장치(4330)는 도 1에 도시된 SOC(100)로 구현될 수 있을 것이다.
실시 예에 따라 메모리 장치(4310)의 동작을 제어할 수 있는 메모리 컨트롤러(4320)는 중앙처리장치(4330)의 일부로서 구현될 수 있고 또한 중앙처리장치(4330)와 별개의 칩으로 구현될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명은 하드웨어를 디버깅할 수 있고, 멀티 부팅을 지원하는 SOC 및 이의 구동 방법에 적용할 수 있다.
상기에서는 본 발명의 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
10 : Boot Shell
11 : 디버그 모듈
12 : 부트 모듈
100 : 본 발명의 제1 실시 예에 따른 SOC.
110 : 인터널 롬
120 : 인터널 램
130 : 프로세서
140 : DRAM 컨트롤러
150 : DRAM
160 : 비휘발성 메모리 컨트롤러
170 : 비휘발성 메모리 장치
200 : 본 발명의 제2 실시 예에 따른 SOC.
210 : 인터널 롬
220 : 인터널 램
230 : 프로세서
240 : DRAM 컨트롤러
250 : DRAM
260 : 비휘발성 메모리 컨트롤러
270 : 비휘발성 메모리 장치
3100 : 메인 보드
4100 : 본 발명의 제1 실시 예에 따른 컴퓨터 시스템.
4200 : 본 발명의 제2 실시 예에 따른 컴퓨터 시스템.
4300 : 본 발명의 제3 실시 예에 따른 컴퓨터 시스템.

Claims (10)

  1. 부트 쉘의 실행 환경을 제공하기 위한 프라이머리 부트로더를 저장하는 인터널 롬; 및
    상기 프라이머리 부트로더를 실행하여 하드웨어를 초기화하는 프로세서를 포함하고,
    상기 부트 쉘은 상기 하드웨어를 디버그(debug)하기 위한 명령어를 포함하고,
    플랫폼이 로딩되기 전, 상기 프로세서는 상기 부트 쉘을 실행하고, 상기 하드웨어를 디버그하는 SOC(System on Chip).
  2. 제 1 항에 있어서,
    DRAM을 제어하는 DRAM 컨트롤러; 및
    프리 세컨더리 부트로더, 복수의 세컨더리 부트로더들, 상기 복수의 세컨더리 부트로더들 각각에 대응하는 복수의 플랫폼들 및 애플리케이션을 저장하는 비휘발성 메모리 장치를 제어하는 비휘발성 메모리 컨트롤러를 더 포함하고,
    상기 부트 쉘은 상기 인터널 롬 또는 상기 비휘발성 메모리 장치 중 어느 하나에 저장되는 SOC.
  3. 제 2 항에 있어서,
    상기 부트 쉘이 상기 인터널 롬에 저장되면, 상기 부트 쉘은 상기 인터널 롬에서 실행되고,
    상기 부트 쉘이 상기 비휘발성 메모리 장치에 저장되면, 상기 부트 쉘은 인터널 램으로 전송되고, 상기 인터널 램에서 실행되는 SOC.
  4. 제 2 항에 있어서,
    상기 하드웨어를 디버그하기 위한 명령어는,
    상기 DRAM의 데이터를 변환하는 명령어; 및
    상기 하드웨어를 제어하는 명령어로 구성되는 SOC.
  5. 제 2 항에 있어서,
    상기 프리 세컨더리 부트로더는 상기 DRAM을 초기화시키고, 상기 세컨더리 부트로더를 상기 DRAM에 로딩하도록 제어하는 SOC.
  6. 제 5 항에 있어서,
    상기 세컨더리 부트로더는 상기 플랫폼을 상기 DRAM에 로딩되도록 제어하는 SOC.
  7. 제 2 항에 있어서,
    상기 부트 쉘은 멀티 부팅을 지원하기 위한 명령어를 더 포함하고,
    상기 멀티 부팅을 지원하기 위한 명령어는,
    상기 세컨더리 부트로더, 상기 플랫폼, 상기 애플리케이션 중 어느 하나를 리드(read) 또는 라이트(write)하는 로드/스토어 명령어; 및
    상기 멀티 부팅을 설정하는 환경 변수를 로드하거나 셋팅하는 겟/셋 명령어로 구성되는 SOC.
  8. 하드웨어를 디버그하는 명령어를 저장하는 부트 쉘을 포함하는 SOC의 구동 방법에 있어서,
    프라이머리 부트로더를 실행하여 상기 하드웨어를 초기화하는 단계;
    상기 부트 쉘을 실행하는 단계;
    디버그 모드인지를 판단하는 단계; 및
    상기 디버그 모드이면, 상기 하드웨어를 디버깅하는 단계를 포함하는 구동 방법.
  9. 제 8 항에 있어서,
    상기 부트 쉘의 권한을 설정하고, 부팅 디바이스를 검색하는 단계를 더 포함하는 구동 방법.
  10. 제 8 항에 있어서,
    상기 하드웨어를 디버깅하는 단계는,
    상기 하드웨어의 동작을 제어할 수 있는 설정값을 변경하는 명령어를 실행하는 단계를 포함하는 구동 방법.
KR1020120153407A 2012-12-26 2012-12-26 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법 KR20140083530A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120153407A KR20140083530A (ko) 2012-12-26 2012-12-26 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법
US14/098,846 US20140181495A1 (en) 2012-12-26 2013-12-06 System on chip including boot shell debugging hardware and driving method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120153407A KR20140083530A (ko) 2012-12-26 2012-12-26 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법

Publications (1)

Publication Number Publication Date
KR20140083530A true KR20140083530A (ko) 2014-07-04

Family

ID=50976116

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120153407A KR20140083530A (ko) 2012-12-26 2012-12-26 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법

Country Status (2)

Country Link
US (1) US20140181495A1 (ko)
KR (1) KR20140083530A (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077167A (zh) * 2014-07-11 2014-10-01 杭州华三通信技术有限公司 基于nand flash的启动加载方法和装置
WO2016122518A1 (en) * 2015-01-29 2016-08-04 Hewlett-Packard Development Company, L.P. Booting a system-on-a-chip device
WO2016122520A1 (en) 2015-01-29 2016-08-04 Hewlett-Packard Development Company, L.P. Resuming a system-on-a-chip device
US20170180796A1 (en) * 2015-12-21 2017-06-22 Le Holdings (Beijing) Co., Ltd. Method for improving compatibility between smart television and embedded multi media card, and electronic device
US20180365425A1 (en) * 2017-06-15 2018-12-20 Qualcomm Incorporated Systems and methods for securely booting a system on chip via a virtual collated internal memory pool
US10817363B2 (en) 2018-03-19 2020-10-27 Micron Technology, Inc. Health characteristics of a memory device
US10754743B2 (en) * 2018-12-17 2020-08-25 Arm Limited Apparatus and method using debug status storage element

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7047458B2 (en) * 2002-12-16 2006-05-16 Intel Corporation Testing methodology and apparatus for interconnects
US7269768B2 (en) * 2004-03-18 2007-09-11 Intel Corporation Method and system to provide debugging of a computer system from firmware
KR100634436B1 (ko) * 2004-09-23 2006-10-16 삼성전자주식회사 멀티 칩 시스템 및 그것의 부트코드 페치 방법
EP1742152B1 (en) * 2005-07-07 2012-09-12 Texas Instruments Inc. Method and system for a multi-sharing memory access control
US7640424B2 (en) * 2005-10-13 2009-12-29 Sandisk Corporation Initialization of flash storage via an embedded controller
KR100804647B1 (ko) * 2005-11-15 2008-02-20 삼성전자주식회사 병렬형 플래시 인터페이스를 지원하는 직렬형 플래시메모리 장치를 이용한 시스템 부팅 방법 및 장치
TW200722990A (en) * 2005-12-14 2007-06-16 Inventec Corp Power-on self test debugging system and method
US20070162964A1 (en) * 2006-01-12 2007-07-12 Wang Liang-Yun Embedded system insuring security and integrity, and method of increasing security thereof
US7849315B2 (en) * 2006-05-22 2010-12-07 General Dynamics C4 Systems, Inc. Method for managing operability of on-chip debug capability
US8046571B1 (en) * 2006-12-18 2011-10-25 Marvell International Ltd. System-on-a-chip (SoC) security using one-time programmable memories
US8234624B2 (en) * 2007-01-25 2012-07-31 International Business Machines Corporation System and method for developing embedded software in-situ
KR20090037712A (ko) * 2007-10-12 2009-04-16 삼성전자주식회사 보안 부트-업되는 전자 장치, 그것의 해쉬값 계산 방법 및부트-업 방법
US8200954B2 (en) * 2008-07-08 2012-06-12 Texas Instruments Incorporated Multi-stage boot pin sampling
TWI386852B (zh) * 2008-10-24 2013-02-21 Wistron Corp 基本輸出入系統之切換系統及其切換方法
US8386738B1 (en) * 2008-11-06 2013-02-26 Marvell International Ltd. Off-chip non-volatile memory access
CN101930373B (zh) * 2009-06-19 2013-08-07 中兴通讯股份有限公司 一种片上***启动的方法和装置
KR20110013867A (ko) * 2009-08-04 2011-02-10 삼성전자주식회사 메모리 링크 아키텍쳐에서 플래시 레스 부팅 기능을 갖는 멀티 프로세서 시스템
US8555050B2 (en) * 2010-07-15 2013-10-08 Broadcom Corporation Apparatus and method thereof for reliable booting from NAND flash memory
GB2483906C (en) * 2010-09-24 2019-10-09 Advanced Risc Mach Ltd Selection of debug instruction set for debugging of a data processing apparatus
US8566645B2 (en) * 2010-12-02 2013-10-22 Advanced Micro Devices, Inc. Debug state machine and processor including the same
US8713379B2 (en) * 2011-02-08 2014-04-29 Diablo Technologies Inc. System and method of interfacing co-processors and input/output devices via a main memory system
US9141394B2 (en) * 2011-07-29 2015-09-22 Marvell World Trade Ltd. Switching between processor cache and random-access memory
US9367107B2 (en) * 2011-10-19 2016-06-14 Psion Inc. Method and system for controlling reset state change in a system-on-a-chip device
US20130198566A1 (en) * 2012-01-27 2013-08-01 Lsi Corporation Method and Apparatus for Debugging System-on-Chip Devices
US8812915B2 (en) * 2012-09-27 2014-08-19 Hewlett-Packard Development Company, L.P. Determining whether a right to use memory modules in a reliability mode has been acquired

Also Published As

Publication number Publication date
US20140181495A1 (en) 2014-06-26

Similar Documents

Publication Publication Date Title
US7500095B2 (en) Chipset-independent method for locally and remotely updating and configuring system BIOS
US10936327B2 (en) Method of implementing magnetic random access memory (MRAM) for mobile system-on-chip boot
EP2329365B1 (en) Turbo boot systems and methods
KR20140083530A (ko) 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법
US20030233534A1 (en) Enhanced computer start-up methods
US9098305B2 (en) Computer system and bootup and shutdown method thereof
US9563439B2 (en) Caching unified extensible firmware interface (UEFI) and/or other firmware instructions in a non-volatile memory of an information handling system (IHS)
US9395919B1 (en) Memory configuration operations for a computing device
US20030110369A1 (en) Firmware extensions
KR20070077463A (ko) 컴퓨터 시스템 초기화 방법과 초기화 코드 로딩 방법 및dram 디바이스와 이를 포함하는 내장형 시스템
US7581037B2 (en) Effecting a processor operating mode change to execute device code
US7908417B2 (en) Motherboard system, storage device for booting up thereof and connector
KR20110130435A (ko) 메모리 세그먼테이션 및 acpi 기반 컨텍스트 전환을 사용하는 운영 시스템 로딩
US20080288766A1 (en) Information processing apparatus and method for abortting legacy emulation process
WO2016074127A1 (zh) 计算机设备及计算机设备内存启动的方法
EP3063621A1 (en) Flexible bootstrap code architecture
EP2951705A1 (en) Assigning processors to memory mapped configuration
US20190065300A1 (en) Method of retrieving debugging data in uefi and computer system thereof
US9003174B2 (en) Method for boosting an electronic device with multiple processing units, and electronic device for implementing the same
US6961848B2 (en) System and method for supporting legacy operating system booting in a legacy-free system
US7334120B2 (en) Firmware emulation environment for developing, debugging, and testing firmware components including option ROMs
US20090327681A1 (en) Self test initialization
US7010723B2 (en) Method to couple integrated circuit packages to bonding pads having vias
US8117427B2 (en) Motherboard, storage device and controller thereof, and booting method
US11023217B2 (en) Systems and methods for support of selective processor microcode updates

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid