KR100575927B1 - 이동통신 단말기에서 부팅 방법 - Google Patents

이동통신 단말기에서 부팅 방법 Download PDF

Info

Publication number
KR100575927B1
KR100575927B1 KR1020030058684A KR20030058684A KR100575927B1 KR 100575927 B1 KR100575927 B1 KR 100575927B1 KR 1020030058684 A KR1020030058684 A KR 1020030058684A KR 20030058684 A KR20030058684 A KR 20030058684A KR 100575927 B1 KR100575927 B1 KR 100575927B1
Authority
KR
South Korea
Prior art keywords
boot code
flash memory
nand flash
area
sdram
Prior art date
Application number
KR1020030058684A
Other languages
English (en)
Other versions
KR20050021685A (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 KR1020030058684A priority Critical patent/KR100575927B1/ko
Publication of KR20050021685A publication Critical patent/KR20050021685A/ko
Application granted granted Critical
Publication of KR100575927B1 publication Critical patent/KR100575927B1/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
    • G06F9/4406Loading of operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/38Transceivers, i.e. devices in which transmitter and receiver form a structural unit and in which at least one part is used for functions of transmitting and receiving
    • H04B1/40Circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

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 Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 NAND 플래쉬 메모리의 0번째 블록에 2비트 이상의 오류가 발생하는 경우에도 이동통신 단말기를 부팅시킬 수 있도록 하기 위한 방법을 제공함에 있다. 이를 위한 본 발명은 SDRAM과 NAND 플래쉬 메모리를 구비하는 이동통신 단말기의 부팅 방법이, 상기 NAND 플래쉬 메모리의 부트 코드 영역과 백업 영역에 동일하게 부트 코드를 저장하는 과정과, 상기 이동통신 단말기를 부팅 시 상기 부트 코드 영역에서 2비트 이상의 비트 오류가 발생하는 경우 상기 백업 영역에 저장되어 있는 부트 코드를 이용하여 다시 부팅시키는 과정을 포함함을 특징으로 한다.
부트 로더, NAND 플래쉬, 부팅.

Description

이동통신 단말기에서 부팅 방법{METHOD FOR BOOTING THE NAND FLASH MEMORY USING MULTI BOOT LOADER IN MOBILE STATION}
도 1은 일반적인 NAND 플래쉬 메모리 영역의 구조를 나타내는 도면,
도 2는 본 발명의 실시 예에 따른 NAND 플래쉬 메모리를 구비하는 단말기의 메모리 구조를 도시하는 내부 구성도,
도 3은 본 발명의 실시 예에 따른 멀티 부팅 시의 NAND 플래쉬 메모리의 구조를 도시하는 도면,
도 4는 본 발명의 실시 예에 따른 부팅과정을 도시하는 흐름도,
도 5는 본 발명의 실시 예에 따라 NAND 플래쉬 메모리 업데이트를 위한 데이터 삭제(erasing)과정이 중단되는 경우 재부팅하는 과정을 도시하는 흐름도.
본 발명은 부팅 방법에 관한 것으로, 특히 이동통신 단말기에서 부팅 시 발생하는 에러를 방지하기 위한 부팅 방법에 관한 것이다.
일반적으로 이동통신 단말기에서 데이터 저장매체로는 NAND 플래쉬 메모리와 NOR 플래쉬 메모리가 주로 사용되고 있다. 인텔, AMD, 후지쯔, ST 마이크로 등에서 생산되고 있는 NOR 플래쉬 메모리는 오류 발생이 적고, 수명이 반영구적이어서 이동 통신용 저장매체로 많이 쓰이고 있다. 최근들어 이동통신 단말기에 많은 기능이 구비되면서, 많은 데이터를 저장할 수 있는 메모리를 필요로 하게 되었다. 이러한 대용량 데이터를 저장할 수 있는 메모리로는 현재 디지털 카메라에 많이 사용되는 NAND 플래쉬 메모리가 있다. 이에 따라 이동 통신용 단말기에서 많은 데이터 서비스를 제공하기 위해서 NAND 플래쉬 메모리를 구비하여 대용량의 데이터를 저장할 수 있게 되었다. 이러한 NANA 플래쉬 메모리가 최근 2.5세대나 3세대 이동통신 단말기에 적용되는 경우가 많이 증가하였다. 이에 따라 휴대 전화 OS(Operation System)개발자인 MS(Microsoft)사와 심비안도 최근 NAND 플래쉬 메모리를 지원하는 OS를 디자인하는 등 NAND 플래쉬 메모리에 비중을 두고 있는 추세다. NAND 플래쉬 메모리는 NOR 플래쉬 메모리에 비해 가격도 저렴하고, 대용량이고, 응답시간 또한 빠른 많은 장점을 가지고 있다. 구체적으로 살펴보면, NAND 플래쉬 메모리의 가격은 NOR 플래쉬 메모리의 가격에 비해서 약 1/4이다. 그리고 NAND 플래쉬 메모리는 1~2GB 정도의 데이터 용량을 저장할 수 있지만, NOR 플래쉬 메모리는 256MB 정도의 데이터 용량을 저장할 수 있는 것이 최대한도이다. 또한, NAND 플래쉬 메모리는 응답시간이 10ns인 반면에 NOR 플래쉬는 25~35ns로 느리다. 이러한 NAND 플래쉬 메모리는 데이터를 전송하기 위해서 반드시 별도의 SRAM(Synchronous random access memory)이나 SDRAM(Synchronous dynamic random access memory)을 구비하여야 한다. 그러나, 스마트 폰이나 3세대 이동 통신 단말기에서는 코드 실행을 위해서 NOR 플래쉬 메모리를 구비하면서도 저전력의 SDRAM을 추가로 채택하는 경우가 많다. 이는 NOR 플래쉬 메모리에서 코드가 실행되는 속도보다 SDRAM에서 실행되는 것이 코드의 실행속도가 월등히 빠르기 때문이다. 상기와 같이 NAND 플래쉬 메모리가 NOR 플래쉬 메모리에 비해 많은 장점을 가지고 있다. 따라서, 현재 이동통신 단말기에서 NAND 플래쉬 메모리를 코드, 폰트, 컨텐츠 등의 데이터를 저장하기 위한 플래쉬 메모리로 사용 고 있다.
이러한 NAND 플래쉬 영역의 구조를 나타내는 도면인 도 1을 참조하면, NAND 플래쉬 메모리는 도 1에 도시되어 있는 바와 같이 256워드(512바이트)의 메인 영역(Main area)과 8워드(16바이트)의 스페어 영역(Spare area)으로 나뉘어진다. 이와 같이 메인 영역과 스페어 영역으로 구성되어 하나의 구조를 NAND 플래쉬에서는 페이지(Page)라고 하고, NAND 플래쉬에서는 도 1에 도시되어 있는 페이지 단위로 데이터를 쓰거나 읽는다. 이와 같은 NAND 플래쉬를 사용하는 도중에 메인 영역(512 바이트)에서 1비트 오류가 발생하는 경우에는 이러한 비트 오류를 수정해서 사용할 수 있고, 이를 위해서 오류정정정보인 ECC(Error Correcting Code) 발생 및 수정 방법이 사용된다. 그렇지만, 2비트 이상의 오류가 발생하는 경우에는 발생한 블 을 수정할 수 없는 , 즉 사용할 수 없는 블록(이하 'Bad 블록'이라 한다.)이라 인식하고 스페어 영역(Spare are)에 표시한 이후에 다음부터는 사용하지 않는다. NAND 플래쉬에 데이터를 저장할 때 라이트(Write) 동작 완료 상태 레지스터를 살펴보고 이 레지스터가 실패했다고 나타내는 경우에는 이미 라이트(Write)한 데이터를 읽어서 비교를 해 본 이후에 1비트 오류가 발생한 경우에는 수정한다. 또한, 2비트 이상의 오류가 발생한 경우에는 Bad 블록으로 스페어 영역(Spare area)에 표시하고 다음부터 사용하지 않는다. 따라서, 메모리를 사용할 때 이러한 정보를 읽어 이 블록은 제외하고 사용한다.
이러한 특성을 가진 NAND 플래쉬를 이동 통신 단말기에 적용한 경우가 점점 증가하고 있으며, NOR 또는 NAND 플래쉬와 SDRAM(Synchronous Dynamic Random Access Memory)을 단일 패키지에 포함한 MCP(Micro Control Processor)의 사용이 증가하는 추세이다. 이러한 MCP(Micro Control Processor)의 사용 추세는 점점 소형화 경량화 되고 있는 이동 통신 단말기의 요구사항을 만족시키기 위해서 증가하고 있다.
NAND 플래쉬 메모리는 어드레스(Address) 신호 단자와 데이터(Data) 입출력 단자를 공유하기 때문에 NOR 플래쉬 메모리와는 달리 NAND 플래쉬 메모리에 저장되어 있는 코드가 SDRAM 또는 SRAM에 옮겨진 이후에 옮겨진 메모리에서 실행되어야만 한다. 상기와 같이 NAND 플래쉬 메모리에 저장되어 있는 코드를 옮기기 위해 SDRAM 또는 SRAM 모두 사용 가능하지만, 이하 SDRAM이 사용되는 것임을 가정하고 설명한다. 따라서, 제어용 프로세서가 플래쉬 메모리에서 SDRAM으로 옮겨주는 H/W 부트 로더 로직(Logic)을 구비한다. 이러한 부트 로더는 제어용 프로세서와 함께 하나의 칩으로 구성되어 있는 경우도 있고, NAND 플래쉬 메모리와 함께 하나의 칩으로 구성되는 경우도 있다.
이러한 NAND 플래쉬 메모리에 데이터를 저장할 때에는 라이트 동작 완료 상태 레지스터를 살펴보고 이 레지스터가 실패했다고 나타내는 경우에는 이미 라이트한 데이터를 읽어서 비교를 해 본 이후에 1비트 오류가 발생한 경우에는 수정한다. 그러나 2비트 이상의 오류가 발생한 경우에는 Bad 블록이라 스페어 영역에 표시하고 다음부터 사용하지 않는다. 이때 발생한 메인 영역에 대한 ECC 코드는 스페어 영역에 저장한다. 그리고 NAND 플래쉬 메모리를 읽을 때는 다음과 같은 순서를 거친다. 우선 이전에 메인 영역의 ECC를 스페어 영역에 저장한 값을 읽는다. 현재 메인 영역에 대해서 ECC를 발생시키고 이를 읽은 ECC 값과 비교하여 몇 개의 비트오류가 발생한 것인지를 확인한다. 이때 스페어 영역에서 오류가 생기는 경우에도 1비트 오류일 때에는 수정하며, 2비트 이상의 오류일 경우에는 수정하지 못한다. 또한, 스페어 영역의 16바이트 모두에 대해서 이러한 오류 수정이 이루어지는 것이 아니며, 보통 3바이트에 대해서만 이루어진다. 따라서, 나머지 바이트들에 대해서는 어떠한 오류 발생의 경우에 대처하지 못하게 된다. 일반적으로 메인 영역과 스페어 영역에 해당되는 ECC를 저장하는 방법은 도 1과 같다. 이러한 NAND 플래쉬 메모리가 NOR 플래쉬 메모리보다 낮은 가격을 가지는 이유 중 하나가 NAND 플래쉬가 가지고 있는 물리적인 성격 중 하나인 비트 오류가 발생할 수 있기 때문이며, 이러한 비트 오류가 2개 이상인 경우가 공장에서 출하될 때부터 있을 수 있다. 이렇게 비트 오류가 2개 이상인 블록을 Bad 블록이라고 하며, 이 블록은 사용하지 못한다. Bad 블록은 이 블록 내의 각 페이지 스페어 영역에 0xFF가 아닌 값(대체로 0x0)을 써 놓기 때문에 스페어 영역을 읽어보고 그 블록이 Bad 블록인지 아닌지를 판단하고 Bad 블록일 때에는 사용하지 않는다. 이 Bad 블록은 NAND 플래쉬 메모리에서 무작위적인 위치를 가지고 발생할 수 있으며, 만약에 0번째 블록에 발생하는 경우에는 공장에서 출하시키지 않고 버리게 된다. 따라서, NAND 플래쉬 메모리는 0번째 블록이 Bad 블록인 경우는 없지만, 나중에 사용하다가 비트 오류가 2비트 이상 생겨서 Bad 블록이 될 확률은 가지고 있게 된다. 그리고 NAND 플래쉬 메모리에서 SDRAM으로 코드를 올려주는 H/W 부트 로더 로직(Logic) 블록은 0번째 블록의 극히 일부분(수 KByte)만 복사해서 SDRAM으로 옮기기 때문에 0번째 블록의 해당 영역에 2비트 이상의 오류만 발생하여도 부팅이 불가능해진다. 또한, 이동 통신용 단말기가 양산되고, 사용자에게 출시되어 사용자가 사용하는 도중에 A/S를 받게 되는 경우가 발생한다. 이때, 부트 코드에 오류가 발생하여 다시 USB 다운로더를 사용하여 업데이트를 하는 경우가 생기며, 이동 통신용 단말기에 전원공급이 용이하지 아니하여, 부트 코드를 업데이트하는 도중에 0번째 블록을 포함한 부트 코드 영역을 지우기만 하고 단말기가 동작을 멈추는 상황이 발생할 수 있다.
상술한 바와 같이 종래의 NAND 플래쉬 메모리의 0번째 블록에 2비트 이상의 오류가 발생하는 경우에는 이동통신 단말기 자체를 부팅시키지 못하는 경우가 발생하는 문제점이 있었다.
따라서 본 발명의 목적은 NAND 플래쉬 메모리의 0번째 블록에 2비트 이상의 오류가 발생하는 경우에도 이동통신 단말기를 부팅시킬 수 있도록 하기 위한 방법을 제공함에 있다.
본 발명의 다른 목적은 NAND 플래쉬 메모리의 0번째 블록이 지워진 경우에도 이동통신 단말기를 부팅시킬 수 있도록 하기 위한 방법을 제공함에 있다.
상기한 목적들을 달성하기 위한 본 발명은 SDRAM과 NAND 플래쉬 메모리를 구비하는 이동통신 단말기의 부팅 방법이, 상기 NAND 플래쉬 메모리의 부트 코드 영역과 백업 영역에 동일하게 부트 코드를 저장하는 과정과, 상기 이동통신 단말기를 부팅 시 상기 부트 코드 영역에서 2비트 이상의 비트 오류가 발생하는 경우 상기 백업 영역에 저장되어 있는 부트 코드를 이용하여 다시 부팅시키는 과정을 포함함을 특징으로 한다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면의 참조와 함께 상세히 설명한다. 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단된 경우 그 상세한 설명은 생략한다.
먼저, 부트 로더는 제어부 내에 하드웨어로 구성될 수도 있고, 부트 롬(Boot Rom)에 있는 소프트웨어일 수도 있다. 본 발명에서는 제어부가 부트로더를 구비하는 것으로 설명하도록 한다. 본 발명에서 보트 로더는 제어부에 구비되는 하드웨어임을 가정하고 설명한다.
도 2는 본 발명의 실시 예에 따른 NAND 플래쉬 메모리를 구비하는 단말기의 메모리 구조를 도시하는 내부 구성도이다. 본 발명은 부트 코드가 포함되어 있는 0 번째 블록에서 2비트 이상 오류가 발생하면 백업 영역에 미리 저장한 부트 코드를 읽어 이동통신 단말기를 부팅시킬 수 있도록 한다. 그러므로, 먼저 듀얼 부팅을 위해서 롬 라이터(ROM-Writer)를 이용해서 NAND 플래쉬 메모리에 부트 코드(Boot code)를 저장할 때, 부트 코드를 백업으로 같이 저장한다. 이를 도 3을 참조하여 설명한다.
도 3은 본 발명의 실시 예에 따른 멀티 부팅 시의 NAND 플래쉬 메모리의 구조를 도시하는 도면이다. 본 발명에 따른 NAND 플래쉬 메모리는 부트코드(300), 어플리케이션 코드(302), 폰트 바이너리(304), 콘텐츠 바이너리(306), 파일 시스템 영역(308) 및 예비 영역들과 제1 백업 영역(310)과 제2 백업 영역(312)을 구비한다. 종래의 NAND 플래쉬 메모리에는 본 발명의 도 3과 같은 부트 코드를 백업하기 위한 백업 영역(310,312)을 구비하지 않았다. 본 발명에서는 듀얼 부팅을 위해 제1 백업 영역(310)과 제2 백업 영역(312)을 구비한다.
한편, 도 3과 같은 내부 구성을 가진 NAND 플래쉬 메모리(204)에서 부트 로더에 의해 0번째 블록의 극히 일부분(수 KByte)만 복사해서 SDRAM으로 옮길 때 0번째 블록의 해당 영역에 2비트 이상의 오류가 발생하는 경우와 부팅 영역이 지워지고 난 이후에 파워 오프가 발생한 경우에도 부팅이 가능해지도록 하기 위해서는 부트 코드 백업과정이 필요하다. 이와 같이 부트 코드 백업과정은 롬 라이터(ROM-Writer)를 이용해서 NAND 플래쉬 메모리에 부트 코드(Boot code)를 저장할 때, 동일한 부트 코드를 제1 백업 영역(310)과 제2 백업 영역(312)에도 동일하게 저장한다.
상기한 바와 같이 제1 백업 영역(310)과 제2 백업 영역(312)으로 부트 코드 백업과정을 거친 경우 이동통신 단말기를 부팅할 때 부팅과정을 도 4를 참조하여 설명한다. 도 4는 본 발명의 실시 예에 따른 부팅과정을 도시하는 흐름도이다.
먼저, 이동통신 단말기에 파워 온이 되면 400단계에서 부트로더(204)가 NAND 플래쉬 메모리의 0번째 블록의 수 KB의 데이터를 SDRAM(202)로 읽어온다. 이후 402단계로 진행하여 제어부(200)는 0번째 블록이 0xFF인가를 검사한다. 검사결과 0번째 블록이 0xFF가 아니면 422단계로 진행하여 ECC를 검사한다. 이때 0번째 블록은 부트 코드가 저장되어 있는 블록이고, 이 블록이 0xFF라는 것은 베드 블록(Bad Block) 즉, 사용할 수 없는 블록임을 표시하는 것이다. 이 블록이 정상적으로 사용할 수 있는 블록이라면 0xFF가 아닌 0x0가 저장되어 있다. 422단계에서 ECC 에러가 발생하면, 424단계에서 1비트 오류인지를 검사하여 1비트 오류이면 426단계에서 1비트 오류를 정정한다. 424단계에서 2비트 이상의 오류이면 428단계로 진행하여 0번째 블록을 지우고, 0번째 블록을 베드(Bad) 블록으로 처리한다. 여기서 베드 블록으로 처리하는 과정은 지워진 0번째 블록에 0xFF를 라이트(write)하는 것이다. 이후 430단계로 진행하여 재부팅되도록 제어한다. 즉, 하드웨어적으로 ECC를 체크하는데, 만약에 1비트 오류가 발생하면 이를 읽어서 옮겨놓은 SDRAM(202) 상의 부트 코드를 수정하게 되고, 만약 2비트 이상의 비트 오류가 발생하게 되면 0번째 블록을 지우고, 스페어 영역에 0번째 블록을 베드(Bad) 블록으로 처리한다.
한편, 430단계에서 재부팅되면 400단계에서 부트 로더(206)가 읽은 NAND 플래쉬 메모리의 0번째 블록은 0xFF이다. 따라서, 402단계에서 404단계로 진행하여 부트 로더(206)가 NAND 플래쉬 메모리의 제1 백업 영역(310)의 데이터를 SDRAM(202)로 읽어 들인다. 이때 ECC 에러가 발생하는지를 검사하여 발생하는 경우에는 408단계로 진행하여 1비트 오류인지를 검사한다. 1비트 오류이면 1비트 오류 정정을 수행하고, 그렇지 않으면 412단계로 진행한다. 408단계에서 1비트 오류가 아닌 경우에는 412단계로 진행하여 부트 로더(206)는 NAND 플래시 메모리의 제2 백업 영역(312)의 데이터를 SDRAM(202)로 읽어 들이고 414단계로 진행하여 ECC 에러가 발생되는 지를 검사한다. ECC 에러가 발생하면 416단계로 진행하여 1비트 오류인지를 검사하고, 1비트 오류이면 418단계로 진행하여 1비트 오류를 정정한다. 그러나, 416단계에서 만약 2비트 이상의 비트 오류가 발생하게 되면 420단계로 진행하여 0번째 블록을 지우고, 스페어 영역에 0번째 블록을 베드(Bad) 블록으로 처리하여 사용을 중지시킨다. 또한, 422단계, 410단계, 414단계 및 418단계에서와 같이 정상적으로 부팅이 된 경우에는 432단계로 진행하여 PC(Program Counter)를 옮겨진 SDRAM(202) 영역의 제일 처음으로 옮긴다.
즉, 만약에 단말기에 전원이 인가되어 부팅하게 되는 경우에 0번째 블록의 일부 영역을 읽어서 읽은 데이터가 모두 0xFF라면, 제1 백업 영역에 미리 저장되어 있는 부트 코드를 SDRAM(202)으로 읽어 들인다. 또한, 제1 백업 영역에 있는 부트 코드를 읽어 들이면서 동시에 ECC를 체크하고, 만약에 2비트 이상의 비트 오류가 있는 경우에는 제2 백업 영역에 있는 부트 코드를 SDRAM(202)으로 읽어 들인다. 이로써 NAND 플래쉬 메모리 영역의 부트 코드 영역에서 2비트 이상의 비트 오류가 발생하는 경우에도 이를 복구할 수 있다.
또한, 본 발명에서는 부트 코드가 저장되어 있는 NAND 플래쉬 메모리를 업데이트하기 위해서 데이터를 지우는(Erasing)과정을 거치는 도중에 전원의 이상이 발생하여 동작이 중지되어 다시 부팅하게 되는 경우에 대하여도 고려한다. 이를 도 5를 참조하여 설명한다.
도 5는 본 발명의 실시 예에 따라 NAND 플래쉬 메모리 업데이트를 위한 데이터 삭제(erasing)과정이 중단되는 경우 재부팅하는 과정을 도시하는 흐름도이다. 이하, 도 5는 업데이트를 위해 NAND 플래쉬 메모리의 데이터를 삭제하는 과정에서 중단된 경우 재부팅하는 것이므로 도 4의 430단계에서의 재부팅과는 차이가 있다.
먼저, 이동통신 단말기를 재부팅하면 500단계로 진행하여 부트 로더(206)가 NAND 플래쉬 메모리(204)의 0번째 블록을 SDRAM(202)으로 읽는다. 이후 502단계에서 제어부(200)는 0번째 블록이 0xFF임을 인지한다. 이는 이전에 데이터를 지우는(Erasing) 과정이 수행되다가 정지되었으므로 0번째 블록이 모두 0xFF로 채워져 있기 때문에 가능하다. 0번째 블록이 0xFF이면 504단계에서 부트 로더(206)가 NAND 플래쉬 메모리의 제1 백업 영역(310)의 부트 코드를 SDRAM(202)으로 읽어 들인다. 이후 506단계로 진행하여 ECC 에러가 발생하는지를 검사하고 ECC 에러가 발생하지 않으면 504단계에서 읽은 제1 백업 영역(310)의 부트 코드를 NAND 플래쉬 메모리의 원래의 부트 코드가 저장되어 있는 부트 코드 영역(300)으로 복사하고 530단계로 진행하여 PC(Program Counter)를 옮겨진 SDRAM(202) 영역의 제일 처음으로 옮긴다.
한편, 504단계에서 부트 로더(206)가 SDRAM(202)으로 읽어 들인 제1 백업 영역(310)의 부트 코드가 ECC 에러가 있는 경우에는 510단계로 진행하여 1비트 오류인지를 검사하고 1비트 오류이면 512단계로 진행하여 1비트 오류를 정정한 후 514단계로 진행한다. 그러면 514단계에서는 512단계에서 오류가 정정된 SDRAM(202)의 데이터들을 부트 코드 영역(300)으로 복사한 후 530단계로 진행한다. 530단계에서는 PC(Program Counter)를 옮겨진 SDRAM(202) 영역의 제일 처음으로 옮긴다.
또한, 504단계에서 부트 로더(206)가 SDRAM(202)으로 읽어 들인 제1 백업 영역(310)의 부트 코드가 ECC 에러가 있는 경우에는 510단계로 진행하여 1비트 오류인지를 검사하여 2비트 이상의 오류가 발생하면 516단계로 진행한다. 510단계에서 516단계로 진행하면 부트 로더(206)는 NAND 플래쉬 메모리의 제2 백업 영역(312)의 부트 코드를 SDRAM(202)으로 읽어 들인다. 이후 518단계로 진행하여 ECC 에러가 발생하는지를 검사하고 ECC 에러가 발생하지 않으면 520단계에서 제2 백업 영역(312)의 부트 코드를 NAND 플래쉬 메모리의 원래의 부트 코드가 저장되는 부트 코드 영역(300)으로 복사한다. 이후 530단계로 진행하여 PC(Program Counter)를 옮겨진 SDRAM(202) 영역의 제일 처음으로 옮긴다. 한편, 518단계에서 부트 로더(206)가 SDRAM(202)으로 읽어 들인 제2 백업 영역(312)의 부트 코드가 ECC 에러가 있는 경우에는 522단계로 진행하여 1비트 오류인지를 검사하고 1비트 오류이면 524단계로 진행하여 1비트 오류를 정정한 후 526단계로 진행한다. 그러면, 526단계에서는 524단계에서 오류가 정정된 SDRAM(202)의 부트코드를 부트 코드 영역(300)으로 복사한 후 530단계로 진행한다. 530단계에서는 PC(Program Counter)를 옮겨진 SDRAM(202) 영역의 제일 처음으로 옮긴다. 그러나 522단계에서도 2비트 이상의 오류가 발생하면 사용할 수 없게 된다. 즉, 제1 백업 영역(310)에 저장되어 있는 부트 코드를 SDRAM(202)으로 읽어 들이면서 동시에 ECC 코드 체크를 수행하고 비트 오류가 없을 경우에는 그대로 NAND 플래쉬 메모리의 원래의 부트 코드 영역(300)으로 복사한다. 만약에 1비트 오류가 있을 경우에는 SDRAM(202)의 데이터에 대한 오류 수정을 하고, 오류가 수정된 SDRAM(202)의 데이터들을 원래의 부트 코드 영역(300)으로 복사해 넣는다. 그리고 제1 백업 영역(310)에 저장되어 있는 부트 코드에 대한 ECC 체크 결과, 2비트 이상의 비트 오류가 발생한 경우에는 제2 백업 영역(312)에 저장되어 있는 부트 코드를 SDRAM(202)으로 읽어 들인다. 제1 백업 영역(310)에 저장되어 있는 부트 코드를 SDRAM(202)으로 옮길 때와 동일한 방법으로 제2 백업 영역(312)에 저장되어 있는 부트 코드를 원래의 부트 코드 영역(300)으로 복사해 넣고, SDRAM(202)으로 읽어 들인다. 즉, 부트 코드에서 2비트 이상의 오류가 발생하는 경우에 백업 영역에 미리 저장해 두었던 부트 코드를 읽어서 부팅과정이 수행되도록 한다.
상기에서 설명한 바와 같이, 본 발명에서는 제1 백업 영역과 제2 백업 영역에 원래의 부트 코드와 동일한 부트 코드를 미리 저장함으로써 NAND 플래쉬 메모리의 부트 코드 영역에 대해 2비트 이상의 비트 오류가 발생하거나, 지워진 경우에도 이를 복구할 수 있도록 한다.
상술한 바와 같이 본 발명은 제1 백업 영역과 제2 백업 영역에 원래의 부트 코드와 동일한 부트 코드를 미리 저장하고, 부팅 시 원래의 부트 코드 영역을 읽고 그 결과에 따라서 백업 영역에 저장되어 있는 부트 코드를 읽도록 함으로써 NAND 플래쉬 메모리의 부트 코드 영역에 대해 2비트 이상의 비트 오류가 발생하거나, 지워진 경우에도 이를 복구할 수 있도록 한다. 이로 인해 NAND 플래쉬 메모리의 0번째 블록에 오류가 발생하여도 부팅이 가능하도록 하는 이점이 있다.

Claims (4)

  1. SDRAM과 NAND 플래쉬 메모리를 구비하는 이동통신 단말기의 부팅 방법에 있어서,
    상기 NAND 플래쉬 메모리의 부트 코드 영역과 백업 영역에 동일하게 부트 코드를 저장하는 과정과,
    상기 이동통신 단말기를 부팅 시 상기 부트 코드 영역에서 2비트 이상의 비트 오류가 발생하는 경우 상기 백업 영역에 저장되어 있는 부트 코드를 이용하여 다시 부팅시키는 과정을 포함함을 특징으로 하는 방법.
  2. SDRAM과 NAND 플래쉬 메모리를 구비하는 이동통신 단말기의 부팅 방법에 있어서,
    상기 NAND 플래쉬 메모리의 부트 코드 영역, 제 1백업 영역, 제 2백업 영역에 동일하게 부트 코드를 저장하는 과정과,
    부팅 시 상기 부트 코드 영역의 부트 코드를 상기 SDRAM으로 읽어 들이면서 ECC(Error Correcting Code)를 검사하는 과정과,
    상기 ECC 검사 과정 중 2비트 이상의 오류가 발생하면 상기 부트 코드를 지우고, 상기 부트 코드 영역을 사용할 수 없는 블록인 배드(Bad) 블록 처리하고 재부팅하는 과정과,
    상기 재부팅 후 상기 NAND 플래쉬 메모리의 부트 코드가 배드(Bad) 블록임을 인지하고 상기 미리 저장되어 있는 제 1백업 영역의 부트 코드를 상기 SDRAM으로 읽어 들이면서 ECC(Error Correcting Code)를 검사하는 과정과,
    상기 제 1백업 영역의 부트 코드의 ECC 검사 과정 중 2비트 이상의 오류가 발생하면 상기 제 2백업 영역의 부트 코드를 상기 SDRAM으로 읽어 들여 부팅하는 과정을 포함함을 특징으로 하는 방법.
  3. 제 2항에 있어서, 상기 배드(Bad) 블록 처리는 상기 부트 코드의 데이터를 0xFF로 기록하는 것임을 특징으로 하는 방법.
  4. SDRAM과 NAND 플래쉬 메모리를 구비하는 이동통신 단말기의 부팅 방법에 있어서,
    상기 NAND 플래쉬 메모리의 부트 코드 영역, 제 1백업 영역, 제 2백업 영역에 동일하게 부트 코드를 저장하는 과정과,
    상기 부트 코드가 저장되어 있는 NAND 플래쉬 메모리의 업데이트 과정에서 데이터를 지우는 중 전원이 꺼지는 경우 재부팅하는 과정과,
    상기 이동통신 단말기가 재부팅되면 상기 NAND 플래쉬 메모리의 부트 코드 영역이 배드(Bad) 블록임을 인지하고 미리 저장되어 있는 상기 제 1백업 영역의 부트 코드를 상기 SDRAM으로 읽어 들이면서 ECC(Error Correcting Code)를 검사하는 과정과,
    상기 제 1백업 영역의 부트 코드의 ECC 검사 과정 중 2비트 이상의 오류가 발생하면 상기 제 2백업 영역의 부트 코드를 상기 SDRAM으로 읽어 들여 부팅하는 과정과,
    상기 제 1백업 영역의 부트 코드의 ECC 검사 과정 중 에러가 발생하지 않은 경우 제 1백업 영역의 부트 코드를 부트 코드 영역으로 복사하는 과정을 포함함을 특징으로 하는 방법.
KR1020030058684A 2003-08-25 2003-08-25 이동통신 단말기에서 부팅 방법 KR100575927B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030058684A KR100575927B1 (ko) 2003-08-25 2003-08-25 이동통신 단말기에서 부팅 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030058684A KR100575927B1 (ko) 2003-08-25 2003-08-25 이동통신 단말기에서 부팅 방법

Publications (2)

Publication Number Publication Date
KR20050021685A KR20050021685A (ko) 2005-03-07
KR100575927B1 true KR100575927B1 (ko) 2006-05-02

Family

ID=37229878

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030058684A KR100575927B1 (ko) 2003-08-25 2003-08-25 이동통신 단말기에서 부팅 방법

Country Status (1)

Country Link
KR (1) KR100575927B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100625811B1 (ko) * 2005-12-09 2006-09-18 엠텍비젼 주식회사 코드 데이터 에러 정정 방법 및 장치
KR100833627B1 (ko) * 2007-02-08 2008-05-30 삼성전자주식회사 리페어가 가능한 반도체 메모리 장치 및 그 방법
CN103473098A (zh) 2013-09-10 2013-12-25 华为技术有限公司 一种boot程序的启动方法和相关装置

Also Published As

Publication number Publication date
KR20050021685A (ko) 2005-03-07

Similar Documents

Publication Publication Date Title
KR101375992B1 (ko) 불휘발성 메모리로부터의 디바이스 부트업 동안 에러들의 핸들링
US10552311B2 (en) Recovery for non-volatile memory after power loss
JP4129381B2 (ja) 不揮発性半導体記憶装置
US8341386B2 (en) Method for updating basic input/output system and method for repairing thereof
US20070055969A1 (en) System and method for updating firmware
TWI662410B (zh) 資料儲存裝置與記憶體裝置之資料處理方法
JP4373943B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
RU2248627C2 (ru) Способ и устройство для изменения содержимого запоминающих устройств блоков управления
CN109086078B (zh) 安卓***升级方法、装置、服务器及移动终端
TWI633428B (zh) 資料儲存裝置與記憶體裝置之資料處理方法
US20160054935A1 (en) Data storing method and memory controller and memory storage device using the same
US11144299B2 (en) Firmware updating method
US8527733B2 (en) Memory system
JP4158526B2 (ja) メモリカード及びメモリへのデータ書き込み方法
US20070277028A1 (en) Method and system for recovery from reprogramming failures in nonvolatile memory
TWI722938B (zh) 記憶裝置、快閃記憶體控制器及其存取方法
US7257030B2 (en) Operating a storage component
KR100575927B1 (ko) 이동통신 단말기에서 부팅 방법
US11182245B2 (en) Operating method of memory controller, memory controller, and storage device
CN114356653A (zh) 一种工控防火墙掉电保护方法及装置
TWI811130B (zh) 用以存取一快閃記憶體模組的方法、快閃記憶體控制器以及電子裝置
JP4194518B2 (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
CN116880777B (zh) 一种内嵌式存储器及闪存恢复方法
JP2005056144A (ja) フラッシュメモリ搭載電子装置、そのメモリデータ管理方法およびプログラム

Legal Events

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

Payment date: 20160330

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee