KR102448590B1 - 메모리 카드로부터 파일을 읽는 방법 - Google Patents

메모리 카드로부터 파일을 읽는 방법 Download PDF

Info

Publication number
KR102448590B1
KR102448590B1 KR1020160032279A KR20160032279A KR102448590B1 KR 102448590 B1 KR102448590 B1 KR 102448590B1 KR 1020160032279 A KR1020160032279 A KR 1020160032279A KR 20160032279 A KR20160032279 A KR 20160032279A KR 102448590 B1 KR102448590 B1 KR 102448590B1
Authority
KR
South Korea
Prior art keywords
read
file
memory card
card
host controller
Prior art date
Application number
KR1020160032279A
Other languages
English (en)
Other versions
KR20170108421A (ko
Inventor
김찬
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020160032279A priority Critical patent/KR102448590B1/ko
Publication of KR20170108421A publication Critical patent/KR20170108421A/ko
Application granted granted Critical
Publication of KR102448590B1 publication Critical patent/KR102448590B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management Or Editing Of Information On Record Carriers (AREA)
  • Navigation (AREA)

Abstract

본 발명은 메모리 카드로부터 파일을 읽는 방법에 관한 것이다. 본 발명의 방법은, 메모리 카드 호스트 제어기에 읽기 대상인 파일의 이름 및 버퍼 정보를 전달하는 단계, 읽기 대상인 파일의 위치를 획득하는 단계, 읽기 대상인 파일을 읽는 단계, 읽혀진 파일을 버퍼 메모리에 저장하는 단계, 그리고 읽기 대상인 파일의 읽기가 완료되었음을 알리는 인터럽트를 중앙 처리 장치로 전달하는 단계를 포함한다. 메모리 카드 호스트 제어기는 읽기 대상인 파일의 위치를 획득하는 단계 및 읽기 대상인 파일을 읽는 단계에서 발생하는 인터럽트들을 중앙 처리 장치로 전달하지 않고 자체적으로 처리한다.

Description

메모리 카드로부터 파일을 읽는 방법{METHOD FOR READING FILE FROM MEMORY CARD}
본 발명은 메모리 카드에 관한 것으로, 더 상세하게는 메모리 카드로부터 파일을 읽는 방법에 관한 것이다.
메모리 카드는 전자 장치들과 착탈 가능하게 제조된 저장 장치이다. 대표적인 메모리 카드의 예로 SD (Secure Digital), 미니 SD 카드, 마이크로 SD 카드 등(이하에서, SD 카드로 통칭됨)이 있다. SD 카드는 디지털 카메라, 스마트폰, 스마트패드 등과 같은 휴대용 전자 기기들에서 확장 또는 메인 저장 장치로 다양하게 사용되고 있다.
SD 카드는 오랜 시간 사용되어 왔으며, 따라서 현 시대의 전자 장치들에는 적합하지 않은 특징들을 갖는다. 예를 들어, SD 카드의 읽기 시에 과도하게 많은 인터럽트들이 발생하며, 따라서 SD 카드는 중앙 처리 장치의 자원을 과도하게 차지하는 단점을 갖는다. 이러한 단점을 개선하기 위하여 SD 카드의 스펙을 변경하면, 변경된 스펙은 기존의 SD 카드 및 기존의 SD 카드 호스트 제어기와 호환되지 않을 수 있다. 따라서, SD 카드 및 SD 카드 호스트 제어기의 스펙을 변경하지 않으면서도, SD 카드의 읽기 시에 과도하게 발생하는 인터럽트들의 수를 줄이는 새로운 장치 및 방법에 대한 연구가 절실하게 요구되고 있다.
본 발명의 목적은, 감소된 인터럽트를 유발하며 메모리 카드로부터 파일을 읽는 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 메모리 카드로부터 파일을 읽는 방법은, 메모리 카드 호스트 제어기에 읽기 대상인 파일의 이름 및 버퍼 정보를 전달하는 단계, 상기 메모리 카드 호스트 제어기가 상기 메모리 카드의 파일 시스템을 읽어 상기 읽기 대상인 파일의 위치를 획득하는 단계, 상기 메모리 카드 호스트 제어기가 상기 획득된 위치를 이용하여 상기 메모리 카드로부터 상기 읽기 대상인 파일을 읽는 단계, 상기 메모리 카드 호스트 제어기가 상기 읽혀진 파일을 상기 버퍼 정보에 따라 버퍼 메모리에 저장하는 단계, 그리고 상기 메모리 카드 호스트 제어기가 상기 읽기 대상인 파일의 읽기가 완료되었음을 알리는 인터럽트를 상기 중앙 처리 장치로 전달하는 단계를 포함한다. 상기 메모리 카드 호스트 제어기는 상기 파일 시스템을 읽어 상기 읽기 대상인 파일의 위치를 획득하는 단계 및 상기 메모리 카드로부터 상기 읽기 대상인 파일을 읽는 단계에서 발생하는 인터럽트들을 상기 중앙 처리 장치로 전달하지 않고 자체적으로 처리하도록 구성된다.
본 발명에 따르면, SD 카드의 읽기 시에 발생하는 인터럽트들은 SD 카드 호스트 제어기에서 자체적으로 처리된다. 따라서, 감소된 인터럽트를 발생하며 중앙 처리의 장치의 더 적은 자원을 차지하는 메모리 카드로부터 파일을 읽는 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 전자 장치를 보여주는 블록도이다.
도 2는 도 1의 SD 카드의 구성을 보여준다.
도 3은 도 1의 호스트 장치의 SD 카드 제어기를 보여주는 블록도이다.
도 4는 호스트 장치에서 운영 체제가 구동되는 예를 보여준다.
도 5는 도 1의 호스트 장치가 SD 카드로부터 파일을 읽는 방법을 보여주는 순서도이다.
도 6은 SD 카드 제어기가 SD 카드에 대해 한 번의 읽기를 수행하는 과정을 보여주는 순서도이다.
도 7은 본 발명의 실시 예에 따른 SD 카드 제어기를 보여주는 블록도이다.
도 8은 본 발명의 실시 예에 따른 SD 카드 제어기를 포함하는 호스트 장치에서 운영 체제가 구동되는 예를 보여준다.
도 9는 도 7의 SD 카드 제어기를 포함하는 호스트 장치의 중앙 처리 장치가 파일 단위의 읽기를 수행하는 과정을 보여주는 순서도이다.
도 10은 SD 카드 제어기가 파일 단위의 읽기 요청에 따라 SD 카드로부터 파일을 읽는 방법을 보여주는 순서도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 전자 장치(100)를 보여주는 블록도이다. 도 1을 참조하면, 전자 장치(100)는 SD 카드(110) 및 호스트 장치(120)를 포함한다. 호스트 장치(120)는 SD 카드(110)를 메인 저장 장치 또는 확장된 저장 장치로 사용할 수 있다. SD 카드(110)는 호스트 장치(120)에 의해 블록 단위로 액세스될 수 있다. 예를 들어, 블록은 512 바이트일 수 있다. 호스트 장치(120)는 SD 카드(110)에 저장되는 파일들을 클러스터 단위로 관리할 수 있다. 예를 들어, 클러스터는 4096 바이트이며, 8 블록들에 해당할 수 있다.
호스트 장치(120)는 중앙 처리 장치(121, Central Processing Unit), 버퍼 메모리(122), 그리고 SD 카드 제어기(123)를 포함한다.
중앙 처리 장치(121)는 호스트 장치의 제반 동작을 제어하고, SD 카드(110)를 액세스할 수 있다. 중앙 처리 장치(121)는 운영 체제(Operating System) 및 운영 체제상에서 다양한 응용들을 구동할 수 있다. 다른 예로서, 중앙 처리 장치(121)는 펌웨어(Firmware)를 구동할 수 있다. 중앙 처리 장치(121)는 SD 카드(110)에 기입할 데이터 또는 SD 카드(110)로부터 읽히는 데이터를 버퍼 메모리(122)에 임시로 저장할 수 있다.
SD 카드 제어기(123)는 중앙 처리 장치(120)의 요청에 따라 SD 카드(110)에 다양한 커맨드들을 전송하고, SD 카드(110)로부터 다양한 응답들을 수신하고, 그리고 SD 카드(110)와 다양한 데이터를 교환할 수 있다. SD 카드 제어기(123)는 SD 카드(110)를 초기화하고, SD 카드(110)에 데이터를 기입하거나 SD 카드(110)로부터 데이터를 읽을 수 있다. 예를 들어, SD 카드(110) 내에 제공될 수 있는 제어기와 구분하기 위하여, SD 카드 제어기(123)는 SD 카드 호스트 제어기라 불릴 수 있다.
예시적으로, 호스트 장치(120)는 디지털 카메라, 스마트폰, 스마트패드 등과 같은 다양한 휴대용 전자 장치들 중 하나일 수 있다. SD 카드(110)는 호스트 장치(120)와 착탈 가능하도록 결합될 수 있다.
도 2는 도 1의 SD 카드(110)의 구성을 보여준다. 도 1 및 도 2를 참조하면, SD 카드(110)에 파티션들(PT)이 형성될 수 있다. 예시적으로, 두 개의 파티션들(PT)이 형성된 것으로 도시되나, SD 카드(110)의 파티션들의 수는 한정되지 않는다. 예를 들어, SD 카드(110)에 하나의 파티션 또는 둘보다 많은 파티션들이 형성될 수 있다.
각 파티션(PT)은 볼륨 부트 섹터(VBS, Volume, Boot Sector), MFT (Master File Table), 그리고 파일들(FILES)를 포함할 수 있다. 예를 들어, 볼륨 부트 섹터(VBS)는 하나의 블록으로 형성될 수 있다. 볼륨 부트 섹터(VBS)의 '0x30' 번지는 MFT가 저장된 시작 클러스터의 번호를 포함할 수 있다. MFT는 파일들이 저장된 위치들에 대한 정보를 포함할 수 있다. 파일들(FILES)은 호스트 장치(120)에 의해 SD 카드(110)에 기입된 파일들일 수 있다.
MFT는 복수의 MFT 엔트리들(ET)을 포함한다. 각 MFT 엔트리(ET)는 헤더(H), 속성 헤어들(AH, Attribute Header) 및 속성들(AT)을 포함한다. 예시적으로, 각 MFT 엔트리(ET)에 두 개의 속성들(AT)이 각각 속성 헤더들(AH)과 함께 포함되는 것으로 도시되어 있으나, 각 MFT 엔트리(ET) 내의 속성들(AT)의 수는 한정되지 않는다. 예를 들어, MFT 엔트리들(ET)의 속성들(AT)의 개수는 서로 다를 수 있다. 또한, 동일한 MFT 엔트리(ET) 내에서 또는 서로 다른 MFT 엔트리들(ET)에서, 속성들(AT)의 길이는 서로 다를 수 있다.
각 MFT 엔트리(ET)는 하나의 디렉토리 또는 하나의 파일을 가리킬 수 있다. 예를 들어, 각 MFT 엔트리(ET)가 디렉토리를 가리킬 때에, '0x30' 타입의 '$FILE_NAME' 속성은 각 MFT 엔트리(ET)가 디렉토리임을 가리키며, 디렉토리 이름을 포함할 수 있다. '0x90' 타입의 '$INDEX_TOOR' 속성 및 '0xA0' 타입의 '$INDEX_ALLOCATION' 속성은 각 MFT 엔트리(ET)에 속한 하위 MFT 엔트리들(ET), 즉 디렉토리의 하위 디렉토리 또는 파일과 연관된 MFT 엔트리들(ET)의 정보를 포함한다.
각 MFT 엔트리(ET)가 파일일 때에, '0x30' 타입의 '$FILE_NAME' 속성은 각 MFT 엔트리(ET)가 파일임을 가리키며, 파일 이름을 포함할 수 있다. '0x80' 타입의 '$DATA' 속성은 파일의 데이터 또는 파일들(FILES) 중에서 각 MFT 엔트리(ET)과 연관된 파일의 위치 정보를 포함할 수 있다.
예시적으로, 각 MFT 엔트리(ET)는 1024 바이트이며, 2 블록들에 해당할 수 있다.
도 3은 도 1의 호스트 장치(120)의 SD 카드 제어기(123)를 보여주는 블록도이다. 도 1 및 도 3을 참조하면, SD 카드 제어기(123)는 레지스터들(RT), DMAC (Direct Memory Access Controller), 커맨드 처리기(CP), 그리고 데이터 처리기(DP)를 포함한다.
레지스터들(RT)은 중앙 처리 장치(121)로부터의 제어 정보들이 저장되는 제어 레지스터들 및 SD 카드(110) 또는 SD 카드 제어기(123)의 동작 결과에 대한 정보가 저장되는 상태 레지스터들을 포함할 수 있다. 예를 들어, 제어 레지스터들은 중앙 처리 장치(121)에 의해 기입되며 SD 카드 제어기(123)에 의해 읽힐 수 있다. 상태 레지스터들은 SD 카드 제어기(123)에 의해 기입되며 중앙 처리 장치(121)에 의해 읽힐 수 있다. 예를 들어, 레지스터들(RT)는 버스 슬레이브 인터페이스(BSI, Bus Slave Interface)를 통해 중앙 처리 장치(121)와 통신할 수 있다.
DMAC는 SD 카드(110)에 대한 쓰기 동작 시에 버퍼 메모리(122)에 저장된 데이터를 읽고, 읽혀진 데이터를 데이터 처리기(DP)로 전달할 수 있다. DMAC는 SD 카드(110)에 대한 읽기 동작 시에 데이터 처리기(DP)로부터 수신되는 데이터를 버퍼 메모리(122)에 기입할 수 있다. 예를 들어, DMAC는 버스 마스터 인터페이스(BMI)를 통해 버퍼 메모리(122)와 통신할 수 있다.
커맨드 처리기(CP)는 레지스터들(RT)에 저장된 제어 정보에 따라 SD 카드(110)로 커맨드(CMD)를 전송할 수 있다. 또한, 커맨드 처리기(CP)는 SD 카드(110)로부터 전달되는 응답에 따라 레지스터들(RT)에 상태 정보를 저장할 수 있다. 커맨드 처리기(CP)는 SD 카드(110)와의 통신 결과 또는 다양한 상황에서 인터럽트(IRQ)를 발생할 수 있다. 발생된 인터럽트(IRQ)는 중앙 처리 장치(121)로 전달될 수 있다.
데이터 처리기(DP)는 DMAC를 통해 수신되는 데이터(DATA)를 SD 카드(110)로 전달하고, SD 카드(110)로부터 전달되는 데이터(DATA)를 DMAC로 전달할 수 있다.
SD 카드 제어기(123)는 호스트 장치(120)에서 생성되는 클럭 신호(CLK)를 SD 카드(110)로 전달할 수 있다.
예시적으로, 중앙 처리 장치(121)가 운영 체제를 구동하지 않고 펌웨어를 구동하는 경우, 중앙 처리 장치(121)는 SD 카드 제어기(123)로 읽기 요청을 직접 전달할 수 있다. 중앙 처리 장치(121)가 운영 체제를 구동하는 경우, 중앙 처리 장치(121)는 운영 체제의 커널을 통해 SD 카드 제어기(123)로 읽기 요청을 전달할 수 있다.
도 4는 호스트 장치(120)에서 운영 체제가 구동되는 예를 보여준다. 도 1 및 도 4를 참조하면, 중앙 처리 장치(121)에 의해 구동되는 응용(APP)은 운영 체제의 커널(KER)을 통해 SD 카드(110)를 액세스할 수 있다. 커널(KER)은 호스트 장치(120)와 연결된 저장 장치들의 저장 공간들을 관리하는 가상 파일 시스템 계층(VFSL, Virtual File System Layer), 호스트 장치(120)에 연결된 저장 장치들의 저장 공간들을 각각 관리하는 개별 파일 시스템들(FS), 버퍼 캐시(BC), 입력 및 출력 시기를 조정하는 입출력 스케줄러(IOS), 호스트 장치(120)와 연관된 각 저장 장치들을 관리하는 블록 드라이버(BD), 그리고 SD 카드 제어기(123)를 포함한다.
응용(APP)에 의해 발생되는 읽기 요청은 커널(KER)의 계층들을 통해 SD 카드(110)로 전달될 수 있다.
도 5는 도 1의 호스트 장치(120)가 SD 카드(110)로부터 파일을 읽는 방법을 보여주는 순서도이다. 도 1 내지 도 5를 참조하면, S110 단계에서, 호스트 장치(120)는 SD 카드(110)의 볼륨 부트 섹터(VBS)의 '0x30' 번지를 참조하여, MFT의 시작 클러스터의 번호를 읽을 수 있다. 예를 들어, 호스트 장치(120)는 볼륨 부트 섹터(VBS)가 속한 블록을 읽고, 읽혀진 볼륨 부트 섹터(VBS)의 '0x30' 번지를 참조할 수 있다.
S120 단계에서, 호스트 장치(120)는 SD 카드(110)의 MFT의 MFT 엔트리(ET) 또는 MFT 엔트리들(ET)을 읽을 수 있다. 예를 들어, 호스트 장치(120)는 단일 블록 읽기 또는 다중 블록 읽기 커맨드를 SD 카드(110)로 전송하여, SD 카드(110)로부터 MFT 엔트리(ET) 또는 MFT 엔트리들(ET)에 해당하는 단일 블록 또는 다중 블록들을 수신할 수 있다. 예를 들어, 호스트 장치(120)는 각 MFT 엔트리(ET)의 '$INDEX_ROOT' 속성 및 '$INDEX_ALLOCATION' 속성을 참조하여 목표 디렉토리의 MFT 엔트리(ET)를 추적하고, 추적된 MFT 엔트리(ET)에 속한 하위 MFT 엔트리들(ET)의 파일 이름들을 목표 파일의 이름과 비교하여 목표 파일의 MFT 엔트리(ET)를 검출할 수 있다.
S130 단계에서, 목표 파일의 MFT 엔트리가 획득되었는지 판별된다. 한 번의 읽기(예를 들어, 단일 블록 읽기 또는 다중 블록 읽기)를 통해 읽혀진 MFT 엔트리(ET) 또는 MFT 엔트리들(ET)에서 목표 파일의 MFT 엔트리가 획득되지 않으면, S120 단계에서 호스트 장치(120)는 MFT 엔트리(ET) 또는 MFT 엔트리들(ET)을 추가적으로 읽을 수 있다.
목표 파일의 MFT 엔트리(ET)가 획득되었으면, S140 단계에서, 호스트 장치(120)는 획득된 MFT 엔트리(ET)의 '$DATA' 속성을 참조하여, 파일들(FILES) 중에서 목표 파일을 읽을 수 있다.
도 6은 호스트 장치(120)가 SD 카드(110)에 대해 한 번의 읽기를 수행하는 과정의 예를 보여주는 순서도이다. 도 1 내지 도 6을 참조하면, S210 단계에서, 중앙 처리 장치(121)는 SD 카드 제어기(123)로 읽기 요청을 전달할 수 있다. 예를 들어, 중앙 처리 장치(121)는 클러스터 단위 또는 SD 카드(110)의 블록 단위의 데이터를 요청하는 읽기 요청을 SD 카드 제어기(123)로 전달할 수 있다.
S220 단계에서, SD 카드 제어기(123)는 읽기 커맨드(S220)를 SD 카드(110)로 전달할 수 있다. 예를 들어, 읽기 커맨드(S220)는 단일 블록 읽기 커맨드 또는 다중 블록 읽기 커맨드일 수 있다.
S220 단계에서 읽기 커맨드를 전송한 후 S230 단계에서, SD 카드 제어기(123)는 읽기 커맨드를 전송하였음을 알리는 제1 인터럽트를 생성할 수 있다. 제1 인터럽트는 중앙 처리 장치(121)로 전달된다.
S240 단계에서, SD 카드(110)는 읽기 커맨드를 수신하였음을 알리는 응답을 SD 카드 제어기(123)로 전달할 수 있다.
응답이 수신됨에 따라, S250 단계에서, SD 카드 제어기(123)는 응답이 수신되었음을 알리는 제2 인터럽트를 생성할 수 있다. 제2 인터럽트는 중앙 처리 장치(121)로 전달된다.
S260 단계에서, SD 카드(110)는 읽기 커맨드에 의해 요청된 데이터를 SD 카드 제어기(123)로 전달할 수 있다.
S270 단계에서, SD 카드 제어기(123)의 DMAC는 SD 카드(110)로부터 전달되는 데이터를 버퍼 메모리(122)에 저장할 수 있다.
DMAC의 데이터 전송이 완료되면, S280 단계에서, SD 카드 제어기(123)는 데이터의 전송이 완료되었음을 알리는 제3 인터럽트를 생성할 수 있다. 제3 인터럽트는 중앙 처리 장치(121)로 전달된다. 도 6을 참조하여 설명된 바와 같이, SD 카드 제어기(123)가 한 번의 읽기를 수행하는 동안에 3번의 인터럽트들이 발생한다. 도 5를 참조하여 설명된 바와 같이, 호스트 장치(120)가 SD 카드(110)로부터 파일을 읽는 데에 복수회의 읽기들이 요구된다. 즉, 호스트 장치(120)가 SD 카드(110)로부터 파일을 읽는 동안 다수의 인터럽트들이 발생하며, 중앙 처리 장치(121)는 인터럽트들을 처리하는 데에 자원을 할당하여야 한다.
도 7은 본 발명의 실시 예에 따른 SD 카드 제어기(223)를 보여주는 블록도이다. 도 3의 SD 카드 제어기(123)와 비교하면, SD 카드 제어기(223)는 멀티플렉서(MUX) 및 읽기 제어기(RC)를 더 포함한다. 간결한 설명을 위하여, 도 3을 참조하여 설명된 동작들 및 구성 요소들에 대한 설명은 생략된다.
멀티플렉서(MUX)는 제1 모드에서 레지스터들(RT)을 버스 슬레이브 인터페이스(BSI)에 연결하고, 인터럽트(IRQ)를 중앙 처리 장치(121)로 출력할 수 있다. 멀티플렉서(MUX)는 제2 모드에서 레지스터들(RT)을 읽기 제어기(RC)에 연결하고, 인터럽트(IRQ)를 읽기 제어기(RC)로 출력할 수 있다.
제2 모드에서, 읽기 제어기(RC)는 레지스터들(RT)을 참조하여 읽기 요청을 식별하고, 읽기 요청에 따라 커맨드 처리기(CP)에서 커맨드들이 생성되도록 레지스터들(RT)을 설정할 수 있다. 예를 들어, 읽기 제어기(RC)는 레지스터들(RT)을 참조하여 파일 단위의 읽기 요청을 식별할 수 있다. 읽기 제어기(RC)는 파일 단위의 읽기 요청일 식별하고, 블록 또는 클러스터 단위의 읽기 요청을 레지스터들(RT)에 설정할 수 있다. 제2 모드에서, 읽기 제어기(RC)는 커맨드 처리기(CP)로부터 발생되는 인터럽트들(IRQ)을 처리할 수 있다.
예시적으로, 제1 모드는 중앙 처리 장치(121)가 SD 카드 제어기(223)에 파일 단위의 읽기 요청을 전달하기 이전 또는 읽기가 완료된 이후일 수 있다. 중앙 처리 장치(121)가 레지스터들(RT)에 파일 단위의 읽기 요청을 저장하면, SD 카드 제어기(223)는 제2 모드로 진입할 수 있다. 제2 모드에서, 읽기 제어기(RC)는 커맨드 처리기(CP)에 의해 발생되는 인터럽트들(IRQ)을 처리하며 읽기를 제어할 수 있다. DMAC가 버퍼 메모리(122)에 데이터의 저장을 완료하면, 읽기 제어기(RC)는 파일 단위의 읽기가 완료되었음을 알리는 인터럽트(IRQ)를 중앙 처리 장치(121)로 전달하고, SD 카드 제어기(223)는 제1 모드로 복귀할 수 있다.
예시적으로, SD 카드 제어기(223)는 도 1의 호스트 장치(120)에서 SD 카드 제어기(123)를 대체하여 호스트 장치(120)에 포함될 수 있다. SD 카드 제어기(223)는 호스트 장치(120)의 중앙 처리 장치(121) 및 버퍼 메모리(122), 그리고 SD 카드(110)와 상호 동작하도록 구성될 수 있다.
도 7을 참조하여 설명된 바와 같이, SD 카드 제어기(223)가 파일 단위의 읽기 요청을 수신하고, 파일 단위의 읽기 요청을 처리하는 동안에 발생하는 인터럽트(IRQ)들을 자체적으로 처리하도록 구성될 수 있다. 도 7의 SD 카드 제어기(223)에 따르면, 중앙 처리 장치(121)로 전달되는 인터럽트들(IRQ)의 수가 감소하고, 중앙 처리 장치(121)의 자원이 SD 카드(110)의 읽기로 인해 소비되는 양이 감소된다.
도 8은 본 발명의 실시 예에 따른 SD 카드 제어기(223)를 포함하는 호스트 장치(120)에서 운영 체제가 구동되는 예를 보여준다. 도 4와 비교하면, 응용(APP)과 SD 카드 제어기(123) 사이에 통신 경로(CP)가 형성될 수 있다. 응용(APP)은 SD 카드 제어기(123)와 직접 연결된 통신 경로(CP)를 통해 SD 카드 제어기(123)로 파일 읽기 요청을 전달할 수 있다. 또한, 응용(APP)은 통신 경로(CP)를 통해 SD 카드(110)로부터 읽힌 데이터를 수신할 수 있다. 예를 들어, SD 카드 제어기(223)는 읽혀진 데이터를 버퍼 메모리(122)에 저장하고, 버퍼 메모리(122)에 데이터의 저장이 완료되었음을 응용(APP)에 알릴 수 있다. 다른 예로서, SD 카드 제어기(223)는 읽혀진 데이터를 버퍼 메모리(122)에 저장하고, 버퍼 메모리(122)에 데이터의 저장이 완료되었음을 버퍼 메모리(122)의 주소와 함께 응용(APP)에 알릴 수 있다.
도 7을 참조하여 설명된 바와 같이 SD 카드 제어기(223)가 파일 단위의 읽기 요청을 처리하도록 구성되고, 그리고 도 8을 참조하여 설명된 바와 같이 응용(APP)과 SD 카드 제어기(223) 사이에 통신 경로(CP)가 제공되면, 응용(APP)에서 발생되는 읽기 요청이 커널(KER)의 일부만을 통하여 처리될 수 있다. 따라서, 응용(APP)을 읽기 요청을 처리하는 데에 소비되는 중앙 처리 장치(121)의 자원의 양이 감소된다.
도 9는 도 7의 SD 카드 제어기(223)를 포함하는 호스트 장치(120)의 중앙 처리 장치(121)가 파일 단위의 읽기를 수행하는 과정을 보여주는 순서도이다. 도 1, 도 7 및 도 9를 참조하면, S310 단계에서, 중앙 처리 장치(121)는 읽힌 파일이 저장될 공간을 버퍼 메모리(122)에 할당할 수 있다. 예를 들어, 중앙 처리 장치(121)는 할당된 공간들이 링크드 리스트(linked list) 형태로 구성된 버퍼 리스트를 생성할 수 있다. 중앙 처리 장치(121)는 생성된 버퍼 리스트를 SD 카드 제어기(223)로 전달할 수 있다. 예를 들어, 중앙 처리 장치(121)는 버퍼 리스트를 SD 카드 제어기(223)의 레지스터들(RT)에 기입하거나 또는 버퍼 리스트의 하나의 저장 공간의 주소를 제어기(223)의 레지스터들(RT)에 기입할 수 있다.
S320 단계에서, 중앙 처리 장치(121)는 목표 파일의 이름 및 목표 파일의 경로를 SD 카드 제어기(223)의 레지스터들(RT)에 기입할 수 있다. 예를 들어, 중앙 처리 장치(121)는 목표 파일 중에서 읽을 목표 부분에 대한 정보를 레지스터들(RT)에 더 기입할 수 있다.
S330 단계에서, 중앙 처리 장치(121)는 SD 카드 제어기(223)에 읽기 요청을 전송할 수 있다.
이후에, 읽기가 완료되었음을 알리는 인터럽트가 발생할 때까지, 중앙 처리 장치(121)는 읽기 요청과 연관된 프로세스를 중지할 수 있다. 읽기가 완료되었음을 알리는 인터럽트가 발생하면, 중앙 처리 장치(121)는 읽기 요청과 연관된 프로세스를 재개하고, 해당 프로세스를 계속 수행할 수 있다.
도 10은 SD 카드 제어기(223)가 파일 단위의 읽기 요청에 따라 SD 카드(110)로부터 파일을 읽는 방법을 보여주는 순서도이다. 도 1, 도 7 및 도 10을 참조하면, S410 단계에서 SD 카드 제어기(223)는 프로세서(121)로부터 파일 읽기 요청을 수신할 수 있다. 예를 들어, SD 카드 제어기(223)는 제1 모드에서 읽기 요청을 수신할 수 있다. 읽기 요청이 수신됨에 따라, SD 카드 제어기(223)는 제2 모드로 진입할 수 있다. 예를 들어, SD 카드 제어기(223)는 레지스터들(223)에 저장된 읽기 요청, 파일 이름 및 파일 경로를 식별할 수 있다.
S420 단계에서, SD 카드 제어기(223)는 SD 카드(110)에 읽기 커맨드를 전송할 수 있다. 예를 들어, 읽기 제어기(RC)는 파일 단위의 읽기 요청에 기반하여 클러스터 또는 블록 단위의 읽기 요청을 레지스터들(RT)에 기입할 수 있다. 커맨드 처리기(CP)는 클러스터 또는 파일 단위의 읽기 요청에 따라 읽기 커맨드를 생성할 수 있다. 읽기 제어기(RC)는 읽기 커맨드를 전송함에 따라 발생하는 인터럽트(IRQ)를 처리할 수 있다.
S430 단계에서, SD 카드 제어기(223)는 SD 카드(110)로부터 응답을 수신할 수 있다. 읽기 제어기(RC)는 응답을 수신함에 따라 발생하는 인터럽트(IRQ)를 처리할 수 있다.
S440 단계에서, SD 카드 제어기(223)는 SD 카드(110)로부터 데이터를 수신할 수 있다. DMAC는 수신된 데이터를 버퍼 메모리(122)에 저장할 수 있다. 읽기 제어기(RC)는 DMAC의 데이터 전송이 완료됨에 따라 발생하는 인터럽트(IRQ)를 처리할 수 있다.
S420 단계 내지 S450 단계는 한 번의 읽기를 형성할 수 있다. SD 카드 제어기(223)는 파일 읽기 요청에 의해 요청된 목표 파일이 버퍼 메모리(122)에 로드될 때까지, 읽기를 반복적으로 수행할 수 있다.
목표 파일이 버퍼 메모리(122)에 로드되면, 읽기 제어기(EC)는 인터럽트를 중앙 처리 장치(121)로 전송할 수 있다. 이후에, SD 카드 제어기(223)는 제1 모드로 복귀할 수 있다.
예를 들어, 첫 번째 읽기 시에, 읽기 제어기(RC)는 SD 카드의 마스터 부트 레코드를 읽어 파티션의 시작 블록을 식별할 수 있다. 두 번째 읽기 시에, 읽기 제어기(RC)는 볼륨 부트 섹터(VBS, 도 2 참조)의 '0x30' 번지를 읽어 MFT의 시작 클러스터를 식별할 수 있다. 다른 예로서, 읽기 제어기(RC)는 호스트 장치(120)가 SD 카드(110)를 초기화하고 마운트하는 동안, 호스트 장치(120)가 파티션의 시작 블록을 읽는 것을 감청하고, 필요한 정보를 저장할 수 있다. 또한, 읽기 제어기(RC)는 호스트 장치(120)가 MFT의 시작 클러스터를 액세스하는 것을 감청하고, 필요한 정보를 저장할 수 있다. 이 경우, 첫 번째 읽기와 두 번째 읽기는 읽기 요청 시에 생략될 수 있다.
세 번째 읽기에서부터, 읽기 제어기(RC)는 MFT의 엔트리들을 순차적으로 읽고, 목표 파일의 이름 및 위치와 비교할 수 있다. 예를 들어, 읽기 제어기(RC)는 MFT 엔트리들을 읽고, 목표 파일의 위치의 디렉토리에 해당하는 MFT 엔트리를 검출할 수 있다. 읽기 제어기(RC)는 검출된 MFT 엔트리의 하위의 MFT 엔트리들에서 목표 파일의 이름에 해당하는 MFT 엔트리를 획득할 수 있다.
목표 파일에 대응하는 MFT 엔트리가 획득되면, 읽기 제어기(RC)는 획득된 MFT 엔트리의 '$DATA' 속성을 참조하여 목표 파일이 저장된 클러스터들의 위치들을 획득할 수 있다. 읽기 제어기(RC)는 목표 파일이 저장된 클러스터들에 대한 읽기들을 발생할 수 있다. DMAC는 SD 카드(110)로부터 전달되는 데이터를 버퍼 메모리(122)에 저장할 수 있다.
상술된 바와 같이, SD 카드 제어기(223)는 파일 읽기 요청에 응답하여 복수의 읽기들을 수행할 수 있다. SD 카드 제어기(223)가 하나의 파일을 SD 카드(110)로부터 읽을 때에, SD 카드 제어기(223)는 하나의 인터럽트(IRQ)만을 생성한다. 따라서, 읽기 시에 중앙 처리 장치(121)에서 소비되는 자원의 양이 감소된다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100; 전자 장치
110; SD 카드
120; 호스트 장치
121; 중앙 처리 장치
122; 버퍼 메모리
123, 223; SD 카드 제어기
CP; 커맨드 처리기
DP; 데이터 처리기
RT; 레지스터들
DMAC; 다이렉트 메모리 액세스 제어기
RC; 읽기 제어기
MUX; 멀티플렉서

Claims (12)

  1. 메모리 카드로부터 파일을 읽는 방법에 있어서:
    메모리 카드 호스트 제어기가 읽기 대상인 파일의 이름 및 버퍼 정보를 수신하는 단계;
    상기 메모리 카드 호스트 제어기가 상기 메모리 카드의 파일 시스템을 읽어 상기 읽기 대상인 파일의 위치를 획득하는 단계;
    상기 메모리 카드 호스트 제어기가 상기 획득된 위치를 이용하여 상기 메모리 카드로부터 상기 읽기 대상인 파일을 읽는 단계;
    상기 메모리 카드 호스트 제어기가 상기 읽혀진 파일을 상기 버퍼 정보에 기반하여 출력하는 단계; 그리고
    상기 메모리 카드 호스트 제어기가 상기 읽기 대상인 파일의 읽기가 완료되었음을 알리는 인터럽트를 출력하는 단계를 포함하고,
    상기 메모리 카드 호스트 제어기는 상기 파일 시스템을 읽어 상기 읽기 대상인 파일의 위치를 획득하는 단계, 상기 메모리 카드로부터 상기 읽기 대상인 파일을 읽는 단계, 그리고 상기 읽혀진 파일을 상기 버퍼 정보에 기반하여 출력하는 단계에서 발생하는 인터럽트들을 출력하지 않고 자체적으로 처리하도록 구성되는 방법.
  2. 제1항에 있어서,
    상기 읽기 대상인 파일의 위치를 획득하는 단계는:
    상기 메모리 카드 호스트 제어기가 상기 메모리 카드의 상기 파일 시스템의 볼륨 부트 섹터를 읽어, 마스터 파일 테이블(MFT)의 시작 클러스터를 식별하는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    상기 메모리 카드 호스트 제어기는 상기 메모리 카드의 상기 파일 시스템의 '0x30' 번지를 읽어, 상기 MFT의 시작 클러스터를 식별하는 방법.
  4. 제2항에 있어서,
    상기 읽기 대상인 파일의 위치를 획득하는 단계는:
    상기 MFT의 상기 시작 클러스터가 식별되는 것에 응답하여, 상기 메모리 카드 호스트 제어기가 상기 MFT로부터 MFT 엔트리를 읽는 단계를 더 포함하는 방법.
  5. 제4항에 있어서,
    상기 MFT 엔트리를 읽는 단계는:
    상기 MFT 엔트리의 속성들 중 적어도 하나를 참조하여 상기 읽기 대상인 파일과 연관된 목표 디렉토리의 MFT 엔트리를 추적하는 단계를 포함하는 방법.
  6. 제5항에 있어서,
    상기 MFT 엔트리를 읽는 단계는:
    상기 목표 디렉토리의 MFT 엔트리에 속한 하위 MFT 엔트리들의 파일 이름들을 상기 읽기 대상인 파일의 이름과 비교하여 상기 읽기 대상인 파일의 MFT 엔트리를 검출하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 메모리 카드 호스트 제어기가 블록 단위의 읽기 요청을 수신하는 단계; 그리고
    상기 블록 단위의 읽기 요청에 응답하여, 상기 메모리 카드 호스트 제어기가 상기 메모리 카드로 읽기 커맨드를 전송하는 단계; 그리고
    상기 읽기 커맨드를 전송하는 것에 응답하여, 상기 메모리 카드 호스트 제어기가 제1 인터럽트를 출력하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 메모리 카드로부터 상기 읽기 커맨드에 대응하는 응답이 수신되는 것에 응답하여, 상기 메모리 카드 호스트 제어기가 제2 인터럽트를 출력하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 메모리 카드로부터 상기 읽기 커맨드에 대응하는 데이터가 수신되는 것에 응답하여, 상기 메모리 카드 호스트 제어기가 상기 데이터를 출력하는 단계; 그리고
    상기 데이터를 출력하는 것에 응답하여, 상기 메모리 카드 호스트 제어기가 제3 인터럽트를 출력하는 단계를 더 포함하는 방법.
  10. 제1항에 있어서,
    상기 읽기 대상인 파일의 이름 및 상기 버퍼 정보를 포함하는 파일 읽기 요청은 응용으로부터 커널의 일부만을 통하는 통신 경로를 통해 수신되는 방법.
  11. 제10항에 있어서,
    상기 메모리 카드 호스트 제어기가 상기 버퍼 정보 및 상기 읽혀진 파일의 출력이 완료되었음을 알리는 정보를 상기 통신 경로를 통해 상기 응용에 전달하는 단계를 더 포함하는 방법.
  12. 제1항에 있어서,
    상기 읽기 대상인 파일의 출력이 완료될 때까지, 상기 읽기 대상인 파일을 읽는 단계 및 상기 읽혀진 파일을 상기 버퍼 정보에 기반하여 출력하는 단계는 반복되는 방법.
KR1020160032279A 2016-03-17 2016-03-17 메모리 카드로부터 파일을 읽는 방법 KR102448590B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160032279A KR102448590B1 (ko) 2016-03-17 2016-03-17 메모리 카드로부터 파일을 읽는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160032279A KR102448590B1 (ko) 2016-03-17 2016-03-17 메모리 카드로부터 파일을 읽는 방법

Publications (2)

Publication Number Publication Date
KR20170108421A KR20170108421A (ko) 2017-09-27
KR102448590B1 true KR102448590B1 (ko) 2022-09-29

Family

ID=60036002

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160032279A KR102448590B1 (ko) 2016-03-17 2016-03-17 메모리 카드로부터 파일을 읽는 방법

Country Status (1)

Country Link
KR (1) KR102448590B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100758301B1 (ko) 2006-08-04 2007-09-12 삼성전자주식회사 메모리 카드 및 그것의 데이터 저장 방법
KR100975178B1 (ko) 2002-04-15 2010-08-10 소니 주식회사 데이터 기억 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101395778B1 (ko) * 2007-03-14 2014-05-19 삼성전자주식회사 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100975178B1 (ko) 2002-04-15 2010-08-10 소니 주식회사 데이터 기억 장치
KR100758301B1 (ko) 2006-08-04 2007-09-12 삼성전자주식회사 메모리 카드 및 그것의 데이터 저장 방법

Also Published As

Publication number Publication date
KR20170108421A (ko) 2017-09-27

Similar Documents

Publication Publication Date Title
EP2849076B1 (en) Dma transmission method and system
US11960749B2 (en) Data migration method, host, and solid state disk
US7970974B2 (en) Method and system for adding or removing a logical unit of a USB mass storage device
EP2557494A1 (en) Storage apparatus and data copy method between thin-provisioning virtual volumes
CN107111452B (zh) 应用于计算机系统的数据迁移方法和装置、计算机系统
US10146475B2 (en) Memory device performing control of discarding packet
US10607714B2 (en) Verification of storage media upon deployment
US10564898B2 (en) System and method for storage device management
CN112835817A (zh) 数据迁移的方法及系统
US11068283B2 (en) Semiconductor apparatus, operation method thereof, and stacked memory apparatus having the same
JP2021515318A (ja) NVMeベースのデータ読み取り方法、装置及びシステム
EP4283472A1 (en) Method for caching data, a host device for caching data, and a storage system for caching data
CN103838746A (zh) 多cpu系统共享存储数据的方法及该系统
US9146693B2 (en) Storage control device, storage system, and storage control method
CN111666224B (zh) 电子装置和用于利用电子装置的存储器空间的方法
US8756356B2 (en) Pipe arbitration using an arbitration circuit to select a control circuit among a plurality of control circuits and by updating state information with a data transfer of a predetermined size
CN115883022B (zh) Dma传输控制方法、装置、电子设备及可读存储介质
KR102448590B1 (ko) 메모리 카드로부터 파일을 읽는 방법
CN116909484A (zh) 数据处理方法、装置、设备及计算机可读存储介质
US10268388B2 (en) Access control method, storage device, and system
US20060277326A1 (en) Data transfer system and method
US20120311236A1 (en) Memory system, data control method, and data controller
US9058113B2 (en) Storage region providing device, storage region providing method, and recording medium
CN111045961A (zh) 数据处理方法及使用所述方法的存储控制器
CN114610661B (zh) 数据处理装置、方法和电子设备

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right