KR100986487B1 - 고장 허용 갱신 에이전트를 구비한 모바일 핸드세트 - Google Patents
고장 허용 갱신 에이전트를 구비한 모바일 핸드세트 Download PDFInfo
- Publication number
- KR100986487B1 KR100986487B1 KR1020057011388A KR20057011388A KR100986487B1 KR 100986487 B1 KR100986487 B1 KR 100986487B1 KR 1020057011388 A KR1020057011388 A KR 1020057011388A KR 20057011388 A KR20057011388 A KR 20057011388A KR 100986487 B1 KR100986487 B1 KR 100986487B1
- Authority
- KR
- South Korea
- Prior art keywords
- bank
- update
- banks
- code version
- working
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W8/00—Network data management
- H04W8/22—Processing or transfer of terminal data, e.g. status or physical capabilities
- H04W8/24—Transfer of terminal data
- H04W8/245—Transfer of terminal data from a network towards a terminal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72403—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
- H04M1/72406—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by software upgrading or downloading
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W88/00—Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
- H04W88/02—Terminal devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Mobile Radio Communication Systems (AREA)
- Medicines Containing Antibodies Or Antigens For Use As Internal Diagnostic Agents (AREA)
- Telephone Set Structure (AREA)
- Telephonic Communication Services (AREA)
- Telephone Function (AREA)
Abstract
비휘발성 메모리를 구비하는 전자 장치를 갱신하는 방법을 개시한다. 본 발명의 일실시예는 고장 허용, 뱅크 단위 방법을 이용하여 제1 코드 버전으로부터 제2 코드 버전으로 전자 장치의 갱신을 허용할 수 있다. 갱신 명령을 포함하는 갱신 패키지는 공중 및/또는 무선 네트워크를 통해 수신될 수 있으며, 갱신 명령을 이용하여 제1 코드 버전을 제2 코드 버전으로 변환할 수 있다. 변환의 뱅크 순서는 갱신 패키지에서 특정될 수 있으며, 비순차 방식일 수 있다.
고장 허용 갱신 에이전트, 순환 잉여 검사, 코드 버전 변환, 순차 뱅크 순서
Description
<관련 출원>
본 출원은, 2002년 12월 18일 출원한 "Mobile Handset With A Fault Tolerant Update Agent"라는 명칭의 미국 특허 가출원번호 제60/434,712호를 참조하고, 그 우선권을 주장하며, 이점을 청구한다.
<참조>
상기한 미국 특허 가출원의 완전한 내용은 모두 본 명세서에 참고로 포함된다. 또한, 본 출원은, 2000년 11월 17일 출원한 "System and Method for Updating and Distributing Information"이라는 명칭의 미국 특허 가출원번호 제60/249,606호, 및 2002년 5월 23일자로 공개된 "System and Method for Updating and Distributing Information"이라는 명칭의 국제특허출원 공개번호 WO 02/41147 A1을 참조하며, 그 내용은 모두 본 명세서에 참고로 포함된다. 또한, 본 출원은, 2003년 4월 8일 출원한 "Electronic Device With An Update Agent That Employs Preprocessing Techniques for Update"라는 명칭의 미국 특허 가출원번호 제60/461,248호를 참조하며, 그 내용은 모두 본 명세서에 참고로 포함된다.
<연방 지원 연구 또는 개발>
이용 불가
<마이크로피시/저작권 참조>
이용 불가
모바일 전화 및 개인 휴대 정보 단말기(PDA)와 같은 전자 장치는, 전자 장치의 제조자, 원격통신 캐리어, 또는 제삼자에 의해 제공되는 펌웨어 및 애플리케이션 소프트웨어를 포함한다. 펌웨어 및 애플리케이션 소프트웨어는 흔히 소프트웨어 에러 즉 "버그"를 포함한다. 또한, 소프트웨어 개발자는 소프트웨어의 수명에 대하여 새로운 피쳐를 추가할 수 있다. 따라서, 새로운 버전의 펌웨어 및 소프트웨어는 주기적으로 배포되어 버그를 수정하고, 새로운 피쳐를 도입하며, 또는 이들 모두를 실행한다.
이러한 장치를 갱신하는 프로세스는 비교적 복잡하고, 갱신 프로세스를 방해하는 많은 잠재적인 요인이 있다. 이것은 배터리 소모, 발신 또는 착신 호에 의한 방해를 포함한다. 모바일 핸드세트의 펌웨어/소프트웨어가 갱신되고 모바일 핸드세트가 동작불능으로 되면, 사용자는 한동안 장치를 사용하지 못할 가능성이 있으며, 장치를 서비스 센터로 리턴할 필요가 있을 수 있고, 관련된 펌웨어/소프트웨어 갱신을 유포한 서비스에 매우 실망할 수 있다. 이러한 이유 때문에, 펌웨어/소프트웨어를 모바일 핸드세트에 제공하는 프로세스는 고장 허용(fault-tolerant)될 필요가 있다. 그러나, 이러한 장치는 많은 면에서 구속을 받으며, 고장 허용 갱신 방식을 획득하는 것이 쉽지 않고, 관련된 액티비티의 설계 및 관리에 많은 주의를 기울어야 한다.
종래의 전형적인 접근 방식의 추가 제한 및 단점은, 이러한 시스템을 첨부 도면을 참조하여 본 출원에서 설명되는 본 발명과 비교함으로써 당업자에게 자명해진다.
발명의 개요
본 발명의 양태는 제1 코드 버전을 갖는 복수의 뱅크를 구비하는 비휘발성 메모리를 포함하는 전자 장치를 갱신하는 방법에서 알 수 있으며, 이 방법은, 복수의 뱅크중 하나를 선택하는 단계와, 선택한 뱅크를 작업 뱅크로 복사하는 단계와, 작업 뱅크의 콘텐츠를 제1 코드 버전으로부터 제2 코드 버전으로 변환하는 단계를 포함한다. 이 방법은 변환된 작업 뱅크를 선택한 뱅크로 이동하는 단계와, 순환 잉여 검사(CRC), 메시지 다이제스트, 디지털 서명, 및 체크섬중 적어도 하나를 이용하여 복제, 복사, 및 변환중 적어도 하나의 성공적인 완료를 검증하는 단계를 더 포함할 수 있다. 이 방법은 복수의 뱅크 각각이 갱신될 때까지 상기한 액션들을 반복할 수 있다. 본 발명의 일실시예에서의 변환은 적어도 하나의 갱신 명령을 이용할 수 있으며, 작업 뱅크는 휘발성 메모리 내에 있을 수 있고, 선택은 적어도 하나의 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 체크섬, 및 특정 뱅크 순서중 적어도 하나를 이용할 수 있다. 선택은, 적어도 하나의 리세트 또는 파워업중 하나에 뒤이어 갱신을 재개할 때 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 및 체크섬중 적어도 하나를 이용할 수 있으며, 선택은 다른 모든 시간에 특정 뱅크 순서를 이용할 수 있다.
본 발명에 따른 일실시예는 패키지를 수신하고 갱신하는 것을 더 포함할 수 있다. 갱신 패키지는 적어도 하나의 갱신 명령을 포함할 수 있고, 갱신 패키지는 뱅크 순서 명세를 포함할 수 있다. 수신은 공중 네트워크를 이용하여 달성될 수 있으며, 무선 네트워크를 이용하여 달성될 수 있다. 본 발명의 일실시예는 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 및 체크섬중 적어도 하나를 이용하여 갱신의 경과를 결정하는 단계를 더 포함할 수 있다. 또한, 변환은 선택한 뱅크가 아닌 복수의 뱅크중 적어도 하나의 적어도 일부를 이용할 수 있다.
본 발명의 다른 양태는 제1 코드 버전으로부터 제2 코드 버전으로 전자 장치를 갱신하는 방법에서 알 수 있으며, 이 전자 장치는 제1 코드 버전을 갖는 복수의 뱅크를 갖는 비휘발성 메모리를 구비하고, 이 방법은, 적어도 하나의 갱신 명령을 포함하는 갱신 패키지를 수신하는 단계와, 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 체크섬, 및 특정 뱅크 순서중 적어도 하나를 이용하여 복수의 뱅크중 하나를 선택하는 단계를 포함한다. 이러한 방법은 적어도 하나의 갱신 명령을 이용하여 선택된 뱅크를 제1 코드 버전으로부터 제2 코드 버전으로 변환하는 단계와, 복수의 뱅크 각각이 갱신될 때까지 뱅크 단위로 수신, 선택, 및 변환을 반복하는 단계를 포함할 수도 있다. 선택은, 리셋 및 파워업중 적어도 하나에 뒤이어 갱신을 재개할 때 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 및 체크섬중 적어도 하나를 이용할 수 있고, 선택은 다른 모든 시간에 특정 뱅크 순서를 이용할 수 있다. 본 발명의 일실시예에서의 변환은 선택된 뱅크를 작업 뱅크로 복제하는 단계와, 선택된 뱅크를 백업 뱅크로 복사하는 단계와, 작업 뱅크의 콘텐츠를 제1 코드 버전으로부터 제2 코드 버전으로 변환하는 단계와, 작업 뱅크의 변환된 콘텐츠 를 선택된 뱅크로 이동하는 단계를 더 포함할 수 있다. 작업 뱅크는 휘발성 메모리에 위치할 수 있으며, 변환은 선택된 뱅크가 아닌 복수의 뱅크중 적어도 하나의 적어도 일부를 이용할 수 있다.
본 발명의 일실시예에 따라, 갱신 패키지는 뱅크 순서 명세를 포함할 수 있고, 뱅크는 비순차(non-sequential) 뱅크 순서로 선택될 수 있다. 수신은 공중 네트워크를 통해 이루어질 수 있으며, 무선 네트워크를 통해 이루어질 수 있다.
본 발명의 또다른 양태는 제1 코드 버전으로부터 제2 코드 버전으로 전자 장치를 갱신하는 방법에서 알 수 있고, 여기서 전자 장치는 제1 코드 버전을 갖는 복수의 뱅크를 구비하는 비휘발성 메모리를 포함한다. 이 방법은, 공중 네트워크를 이용하여 적어도 하나의 갱신 명령을 포함하는 갱신 패키지를 수신하는 단계와, 복수의 뱅크중 하나를 선택하는 단계와, 적어도 하나의 갱신 명령을 이용하여 제1 코드 버전으로부터 제2 코드 버전으로 선택된 뱅크를 변환하는 단계를 포함할 수 있다. 이 방법은 복수의 뱅크 각각이 갱신될 때까지 뱅크 단위로 수신, 선택, 및 변환을 반복하는 단계를 포함할 수 있다.
본 발명의 일실시예에서, 변환은, 선택된 뱅크를 작업 뱅크로 복제하는 단계와, 선택된 뱅크를 백업 뱅크로 복사하는 단계와, 제1 코드 버전으로부터 제2 코드 버전으로 작업 뱅크의 콘텐츠를 변환하는 단계와, 작업 뱅크의 변환된 콘텐츠를 선택된 뱅크로 이동하는 단계를 더 포함할 수 있다. 작업 뱅크는 휘발성 메모리에 위치할 수 있으며, 변환은, 복수의 뱅크중 적어도 다른 하나에 더하여 이전에 갱신된 뱅크의 변환된 콘텐츠 및 원(original) 콘텐츠를 이용할 수 있다. 변환은 선택 된 뱅크가 아닌 복수의 뱅크중 적어도 하나의 적어도 일부를 이용할 수 있다. 선택은, 리셋 및 파워업중 적어도 하나에 뒤이어 갱신을 재개할 때 적어도 하나의 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 및 체크섬중 적어도 하나를 이용할 수 있고, 선택은 다른 모든 시간에 특정 뱅크 순서를 이용할 수 있다. 갱신 패키지는 뱅크 순서 명세를 포함할 수 있고, 복수의 뱅크중 하나는 비순차 뱅크 순서로 선택될 수 있다.
본 발명의 또다른 양태는 전자 장치를 갱신하는 갱신 패키지에서 알 수 있으며, 여기서 전자 장치는 복수의 뱅크를 구비하는 메모리를 포함한다. 갱신 패키지는 차이 정보 및 후갱신(post-update) 서명의 집합을 포함할 수 있으며, 여기서 각 후갱신 서명은 갱신될 복수의 뱅크중 하나에 대응한다. 후갱신 서명의 집합중 적어도 하나는 방해(interruption)에 뒤이어 갱신을 재개하는데 이용될 수 있으며, 적어도 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 및 체크섬중 하나일 수 있다.
본 발명의 이러한 특징 및 이점 그리고 다른 특징 및 이점은, 유사 참조 부호가 유사 부분을 가리키는 첨부 도면을 참조하여 다름에 따르는 본 발명의 상세한 설명에 의해 이해할 수 있다.
도 1은 본 발명에 따라 펌웨어/소프트웨어 갱신을 용이하게 하는 고장 허용 갱신 에이전트를 갖는 예시적인 모바일 핸드세트의 블록도.
도 2는 본 발명에 따라 고장 허용 갱신 에이전트를 이용하여 펌웨어/소포트 웨어 갱신 동작을 수행하는, 도 1의 모바일 핸드세트와 같은 모바일 핸드세트의 기동의 예시적인 방법을 나타내는 흐름도.
도 3은 본 발명에 따라 갱신 프로세스에서 작업 뱅크, 백업 뱅크, 및 복수의 갱신가능 원 뱅크가 이용되는, 도 1의 모바일 핸드세트같은 모바일 핸드세트의 고장 허용 갱신을 수행하는 예시적인 방법을 나타내는 흐름도.
도 4는, 본 발명에 따라 백업 뱅크를 이용하여 현재 뱅크의 원 콘텐츠의 복사본을 보존하는, 도 1의 모바일 핸드세트와 같은 모바일 핸드세트의 고장 허용 갱신을 수행하는 다른 예시적인 방법을 나타내는 흐름도.
도 5는 본 발명에 따라 원 뱅크를 백업 뱅크로 복사하는 동작이 작업 뱅크를 갱신하는 동작에 선행하는, 도 1의 모바일 핸드세트와 같은 모바일 핸드세트의 고장 허용 갱신을 수행하는 또다른 예시적인 방법을 나타내는 흐름도.
도 6은 본 발명에 따라 주어진 뱅크의 갱신 동작이 뱅크 순서에서 선행하는 뱅크의 갱신된 콘텐츠 뿐만 아니라 원본도 이용하는, 도 1의 모바일 핸드세트와 같은 모바일 핸드세트의 고장 허용 갱신을 수행하는 또다른 예시적인 방법을 나타내는 흐름도.
본 발명은 일반적으로 모바일 핸드세트에서의 펌웨어/소프트웨어 갱신에 관한 것으로서, 보다 상세하게는 모바일 핸드세트에서 하나의 버전으로부터 다른 버전으로 펌웨어/소프트웨어의 고장 허용을 갱신하는 것이다.
도 1은 본 발명에 따라 펌웨어/소프트웨어 갱신을 용이하게 하는 고장 허용 갱신 에이전트(117)를 갖는 예시적인 모바일 핸드세트(107)의 블록도를 나타낸다. 도 1에 도시한 바와 같이, 모바일 핸드세트(107)는 통신 링크(143)를 통해 서버(109)로부터 갱신 패키지를 다운로드할 수 있다. 서버(109)는 갱신 패키지 저장소(137)에서 복수의 갱신 패키지를 호스트한다. 모바일 핸드세트(107)는 비휘발성 메모리(111), 휘발성 메모리 영역(135), 및 통신 링크(143)를 통해 서버(109)와 같은 외부 시스템과 상호동작하는 통신 수단(도시하지 않음)을 포함한다. 비휘발성 메모리(111)는, 예를 들어, FLASH 메모리를 포함할 수 있고, 모바일 핸드세트(107)의 펌웨어/소프트웨어를 저장하는데 사용될 수 있다. 휘발성 메모리 영역(135)은, 예를 들어, 랜덤 액세스 메모리(RAM)를 포함할 수 있으며, 여기서 프로그램이 실행될 수 있고, 프로그램 변수가 저장될 수 있으며, 코드 세그먼트 등이 수정될 수 있다. 다음의 설명에서, "원"(original) 및 "구"(old) 라는 용어는 현재 갱신 동작을 수행하기 전에 메모리의 뱅크/블록의 콘텐츠를 참조한다.
본 발명에 따른 일실시예에서, 고장 허용 갱신 에이전트(117)는 휘발성 메모리 영역(135)의 작업 뱅크(125) 및 비휘발성 메모리(111)의 백업 뱅크(127)를 이용하여 고정 허용 갱신 프로세스를 구현할 수 있다. 이러한 고장 허용 갱신 프로세스는, 예를 들어, 전력 실패 및 다른 일시적 에러와 같은 방해에도 불구하고 펌웨어/소프트웨어 갱신 동안 및 후에 안정/복구가능 상태에서 모바일 핸드세트(107)와 같은 모바일 핸드세트의 동작을 보장한다.
본 발명의 일실시예에서, 비휘발성 메모리(111)의 부트스트랩 코드(115)는 모바일 핸드세트(107)의 파워업 또는 리부트때 실행될 수 있다. 모바일 핸드세트(107)에서 펌웨어/소프트웨어를 갱신하는데 갱신 패키지를 이용할 수 있다는 것을 부트스트랩 코드(115)가 결정하면, 제어는 갱신 에이전트(117)로 전달된다. 갱신 에이전트(117)는 모바일 핸드세트(107)에서, 특히, 비휘발성 메모리(111)의 뱅크 1(119) 내지 뱅크 N(131)에서 펌웨어/소프트웨어를 갱신할 수 있다. 부트스트랩 코드(115) 및 갱신 에이전트(117)에 의해 점유되는 메모리 공간은 일반적으로 갱신 액티비티에 대한 경계 밖에 위치한다. 그러나, 본 발명의 일실시예에서, 갱신 에이전트 자체의 서브컴포넌트 자체는 갱신 에이전트(117)에 의해 용이해진 갱신 프로세스를 이용하여 갱신될 수 있다.
본 발명의 일실시예에서, 모바일 핸드세트(107)는 서버(109)로부터 갱신 패키지를 다운로드하여 모바일 핸드세트(107)의 비휘발성 메모리 영역(111)에 저장된 펌웨어 또는 소프트웨어를 갱신할 수 있다. 특정 갱신 패키지의 수신이 완료되면, 모바일 핸드세트(107)는 완전한 갱신 패키지를 비휘발성 메모리 영역(111)으로 전달할 수 있다. 갱신 패키지를 비휘발성 메모리 영역(111)으로 복사함으로써, 고장 허용 레벨을 얻게 되며, 모바일 핸드세트(107)는 서버(109)와의 추가 통신 없이 후속 갱신 동작을 수행할 수 있다. 일단 갱신 패키지가 비휘발성 메모리(111)내로 세이브되면, 상태 테이블 엔트리를 수정하여 모바일 핸드세트(107)에서 갱신 패키지의 안전한 저장 및 완전한 수신을 반영할 수 있다.
본 발명의 일실시예에서 갱신 에이전트(117)는 휘발성 메모리(135) 및 비휘발성 메모리 영역(111)에 작업 뱅크(125) 및 백업 뱅크(127)를 위한 공간을 각각 할당할 수 있다. 갱신 에이전트(117)에 의해 작업 뱅크(125) 및 백업 뱅크(127)를 이용하여, 코드 섹션의 갱신된 콘텐츠가 정확한 것으로 계산 및 검증될 때까지 원 코드가 변경되지 않는 방식으로 비휘발성 메모리 영역(111)에 저장된 현존하는 코드 버전의 컴포넌트 상에서의 동작을 수행할 수 있다. 이것은, 예상하지 못한 처리 에러 또는 전력 방해로 인해 원 코드가 손상되지 않는 것을 보장한다. 본 발명의 일실시예에서, 갱신 에이전트(117)는 작업 뱅크 포인터를 뱅크 갱신 동작이 행해질 휘발성 메모리(135)내의 위치(즉, 작업 뱅크)를 가리키는 포인트로 초기화할 수 있다. 또한, 백업 뱅크 포인터는 갱신되고 있는 뱅크의 복사본이 유지되는 비휘발성 메모리 영역(111)의 위치(즉, 백업 뱅크)를 가리키는 포인트로 초기화될 수 있다. 백업 뱅크의 존재는 전력 방해 및 리부트 또는 리세트 동작의 경우에 고장 허용을 보증하는데 일조한다.
본 발명의 일실시예에서 갱신 에이전트(117)는 뱅크 순서 명세를 이용할 수 있다. 뱅크 순서 명세는 갱신 패키지의 생성동안 결정될 수 있으며, 대응하는 갱신 패키지의 일부로서 갱신 패키지 저장소(137)로부터 수신될 수 있다. 필요시에, 비휘발성 메모리(111)에서 갱신 에이전트(117)에 의해 뱅크 순서 명세를 이용하여 뱅크 1(119) 내지 뱅크 N(131)과 같은 메모리의 다양한 뱅크의 갱신 시퀀스를 지시할 수 있다. 뱅크 순서 명세의 사용은 뱅크 갱신 시퀀스를 제어함으로써 갱신 패키지의 크기를 최적화할 수 있다. 갱신 에이전트(117)는 뱅크 순서 명세에 따라 뱅크 1(119) 내지 뱅크 N(131)의 각각을 복사할 수 있으며, 따라서 이 뱅크들은 비휘발성 메모리 영역(111) 내에 기입되기 전에 수정되거나 갱신될 수 있다.
본 발명에 따른 일실시예에서, 갱신 에이전트(117)는 뱅크 J(123)와 같이 비휘발성 메모리(111)의 선택된 뱅크의 콘텐츠를 작업 뱅크(125)내로 먼저 복사할 수 있다. 이후, 갱신 에이전트는 갱신 패키지에 포함된 갱신 명령에 의해 특정된 바와 같이 작업 뱅크(125)를 갱신할 수 있고, 갱신된 작업 뱅크(125)를 백업 뱅크(127)로 복사할 수 있다. 백업 뱅크(127)로의 갱신된 작업 뱅크(125)의 복사를 행하여 고장 허용을 제공한다. 이후, 갱신 에이전트(117)는 작업 뱅크(125)를 뱅크 J(123)로 복사하여 뱅크 J(123)를 갱신할 수 있다. 또한, 갱신 에이전트(117)는 비휘발성 메모리(111) 및 휘발성 메모리(135) 간에 코드 세그먼트 또는 데이터를 복사한 후 검증 단계를 수행할 수 있다. 이러한 실시예에서의 검증은 MD5 체크섬의 계산, CRC, 또는 유사 계산값을 포함할 수 있다. 이렇게 계산된 검증값은, 갱신되는 뱅크, 즉, 갱신 패키지에 포함되어 있는 뱅크를 위해 소정의 값과 비교될 수 있다.
본 발명의 다른 일실시예에서, 갱신 에이전트(117)는 뱅크 J(123)와 같은 비휘발성 메모리(111)의 선택된 뱅크의 콘텐츠를 작업 뱅크(125) 내로 먼저 복사할 수 있다. 또한, 갱신 에이전트(117)는 뱅크 J(123)의 콘텐츠를 백업 뱅크(127) 내로 복사할 수 있다. 이후, 갱신 에이전트(117)는, 갱신 패키지 저장소(137)로부터 수신한 갱신 패키지에 포함된 갱신 명령의 적절한 부분에 따라 작업 뱅크(125)를 갱신할 수 있고, 작업 뱅크(125)의 갱신된 콘텐츠를 뱅크 J(123) 내로 복사하여 뱅크 J(123)를 갱신할 수 있다. 작업 뱅크(125)의 갱신된 콘텐츠를 뱅크 J(123) 내로 성공적으로 복사하기 전에 프로그램 오류 또는 다른 방해가 발생하면, 갱신 에이전트(117)는 방해받은 갱신 프로세스를 계속하기 위해 백업 뱅크(127)로부터 뱅크 J(123)의 원 콘텐츠를 검색할 수 있다.
본 발명의 또다른 실시예에서, 갱신 에이전트(117)는 뱅크 J(123)와 같은 비휘발성 메모리의 선택된 뱅크의 콘텐츠를 작업 뱅크(125) 내로 먼저 복사할 수 있다. 이후, 갱신 에이전트(117)는 갱신 패키지 저장소(137)로부터 수신한 갱신 패키지의 작업 뱅크(125)를 갱신할 수 있다. 이후, 갱신 에이전트(117)는 뱅크 J(123)의 콘텐츠를 백업 뱅크(127) 내로 복사할 수 있다. 마지막으로, 갱신 에이전트(117)는 작업 뱅크(127)의 갱신된 콘텐츠를 뱅크 J(123) 내로 복사하여 뱅크 J(123)를 갱신할 수 있다. 작업 뱅크(125)의 갱신된 콘텐츠를 뱅크 J(123) 내로 성공적으로 복사하기 전에 프로그램 오류 또는 다른 방해가 발생하면, 갱신 에이전트(117)는 백업 뱅크(127)로부터 원 뱅크 J(123)를 검색하고 방해받은 갱신 프로세스를 계속할 수 있다.
본 발명의 또다른 실시예에서, 갱신 에이전트(117)에 의해 백업 뱅크(127)를 이용하여 이전에 갱신된 뱅크의 원 콘텐츠를 저장할 수 있다. 이것은 이전에 갱신된 뱅크의 원 콘텐츠를 현재 뱅크의 갱신동안 갱신 명령에 의한 사용을 위해 이용가능하게 만들 수 있다. 예를 들어, 갱신되는 현재 뱅크가 뱅크 J(123)이라면, 본 발명의 일실시예에서, 갱신된 뱅크 J-1(121)의 콘텐츠는 뱅크 J(123)를 갱신하는데 사용하도록 이용가능할 수 있다. 또한, 뱅크 J-1(121)의 구 버전(즉, 원 콘텐츠)은 갱신 처리에서의 사용을 위해 백업 뱅크(127)에서 이용가능할 수 있다. 이러한 실시예에서, 갱신 에이전트(117)는 뱅크 J(123)의 콘텐츠를 작업 뱅크(125) 내로 복사할 수 있으며, 갱신 패키지 저장소(137)로부터 수신한 갱신 패키지에 포함되어 있는 갱신 명령의 일부에 의해 특정된 바와 같이 작업 뱅크(125)를 갱신할 수 있다. 갱신 패키지의 갱신 명령은, 뱅크 J-1(121)의 갱신된 콘텐츠 뿐만 아니라 백업 뱅크(127)에서 이용가능한 뱅크 J-1(121)의 원 콘텐츠를 이용할 수 있다. 작업 뱅크(125)의 갱신에 뒤이어, 뱅크 J(123)의 콘텐츠를 백업 뱅크(127)로 복사할 수 있어, 백업 뱅크(127)내의 뱅크 J-1(121)의 원 콘텐츠를 대체할 수 있다. 이후, 뱅크 J(123)의 갱신된 콘텐츠를 작업 뱅크(125)로부터 뱅크 J(123)로 복사할 수 있다. 이러한 방식으로, 임의의 뱅크 J(123)의 갱신동안, 뱅크 J(123)의 원 콘텐츠, 뱅크 1(119) 내지 뱅크 J-1(121)의 갱신된 뱅크의 콘텐츠, (백업 뱅크(127)에 저장된) 뱅크 J-1(121)의 원 콘텐츠, 및 뱅크 J+1 (도시하지 않음) 내지 뱅크 N(131)의 원 콘텐츠를 갱신 처리용으로 이용할 수 있다. 특히, 백업 뱅크(127)의 콘텐츠로서 저장된 뱅크 J-1(121)의 원 콘텐츠의 이용가능성은 갱신 프로세스에서 사용되는 컨텍스트(context) 또는 참조 로컬리티(locality of reference)를 향상시킨다. 본 발명의 이 실시예에 따라, 갱신 에이전트(117)는, 갱신 패키지를 위한 대응하는 감소된 다운로드 시간으로 보다 컴팩트한 갱신 패키지를 생성할 수 있을 뿐만 아니라 갱신 에이전트(117)를 보다 효율적으로 만들 수 있다.
본 발명의 또다른 실시예에서,갱신 에이전트(117)는 상기한 고장 허용 갱신 방법들중 하나를 이용하기 전에 뱅크 1(119) 내지 뱅크 N(131)의 콘텐츠를 선처리할 수 있다. 이러한 선처리는, 갱신 패키지의 크기를 줄이기 위해 갱신 패키지의 생성시에 그리고 갱신 에이전트(117)에서 이용될 수 있다. 선처리 기술은, 예를 들어, 하나 이상의 뱅크의 재배열 또는 재순서화, 원 뱅크 및 갱신된 뱅크에서의 정합 엘리먼트를 정렬하기 위해 하나 이상의 뱅크에서의 엘리먼트의 시프트를 포함한다.
원 뱅크(뱅크 1(119) 내지 뱅크 N(131))와 함께 작업 뱅크(125) 및 백업 뱅크(127)를 이용함으로써, 갱신 에이전트(117)는 뱅크 1(119) 내지 뱅크 N(131)동안 고장 허용을 제공할 수 있다. 본 발명의 실시예는 RAM 및 FLASH 메모리의 사용에 관한여 설명되었지만, 본 발명은 FLASH만을 포함하는 장치에 쉽게 적용될 수 있으며, 여기서 FLASH는 판독가능, 기입가능, 및 실행가능하다. 본 발명에 따른 일실시예 는 다른 유형의 비휘발성 메모리를 이용할 수도 있다.
고장 허용 갱신의 성능이 가능하도록, 갱신 서버(109)에 저장된 각 갱신 패키지는 갱신될 비휘발성 메모리(111)의 각 뱅크를 위한 소정의 검증 정보를 포함할 수 있다. 소정의 검증 정보는 CRC의 예상값, MD5 체크섬, 또는 성공적인 갱신에 뒤이어 대응하는 뱅크들의 각각에 대한 유사 계산값을 포함할 수 있다. 본 발명의 일실시예는, 소정의 검증 정보를 이용하여, 기동에 뒤이어 또는 갱신 프로세스의 방해 발생에 뒤이어 상기한 갱신 방법을 재개하는 포인트를 결정할 수 있다. 예를 들어, 작업 뱅크(125)는, 뱅크 갱신이 계산되는 동안 도 1의 모바일 핸드세트(107)로의 전력이 손실되거나 방해받으면 손상될 가능성이 있다. 갱신 패키지 내에 포함된 검증 정보를 이용하여 이러한 손상이 발생하였는지 여부를 결정할 수 있다. 작업 뱅크의 콘텐츠가 손상된 것으로 발견되면, 관련된 원 뱅크를 이용하여 갱신 프로세스를 재개할 수 있고, 작업 뱅크에서 원 뱅크의 갱신된 복사본의 생성을 완료할 수 있다. 작업 뱅크(125)의 성공적인 갱신 후에, 현재 뱅크의 갱신이 방해받으면, 갱신 패키지 내에 포함된 검증 정보를 이용하여 이러한 손상이 발생하였음을 검출할 수 있다. 현재 뱅크의 콘텐츠가 손상된 것으로 발견되면, 유효하다면 작업 뱅크(125)의 콘텐츠, 또는 백업 뱅크(127)의 콘텐츠를 이용하여 현재 뱅크의 갱신된 콘텐츠를 계산할 수 있다.
도 2는 도 1의 모바일 핸드세트(107)와 같은 모바일 핸드세트 기동의 예시적인 방법을 나타내는 흐름도이며, 여기서 본 발명에 따라 고장 허용 갱신 에이전트를 호출하여 펌웨어/소프트웨어 갱신 동작을 수행한다. 처리는, 모바일 핸드세트가 파워업 또는 리부팅될 때 시작한다(블록 207). 다음으로, 초기화 또는 부트 시퀀스를 실행한다(블록 209). 이후, 모바일 핸드세트의 펌웨어/소프트웨어의 갱신이 수행되어야 하는지 여부를 결정한다(블록 211). 예를 들어, 일실시예에서, 상태 테이블에 액세스하여 모바일 핸드세트에서 이미 다운로드되어 이용가능한 갱신 패키지를 이용하여 상태 테이블 내의 플래그가 펌웨어/소프트웨어를 갱신할 필요가 있음을 가리키는지 여부를 결정할 수 있다.
갱신이 불필요하다고 결정되면, 모바일 핸드세트의 정기적인 기동 프로시저를 실행하고(블록 225) 기동 처리를 종료한다(블록 221). 그러나, 갱신이 필요하다고 결정되면, 고장 허용 갱신 에이전트가 갱신 프로세스를 재개해야 하는 포인트를 결정한다(블록 213). 예를 들어, 그 포인트는, 새롭게 시작된 갱신 동작의 시작, 또는 미리 개시되었지만 갱신 동작이 방해받은 경우 비휘발성 메모리의 특정 뱅크에서일 수 있다. 다음으로, 갱신 에이전트에 의해 고장 허용 갱신 프로세스에 관한 다양한 동작을 수행한다(블록 215). 마지막으로, 갱신 에이전트는 모바일 핸드세트의 리부팅을 개시한다(블록 223).
도 3은 도 1의 모바일 핸드세트(107)와 같은 모바일 핸드세트의 고장 허용 갱신을 수행하는 예시적인 방법을 나타내는 흐름도이며, 여기서 본 발명에 따라 작업 뱅크, 백업 뱅크, 및 복수의 갱신가능 원 뱅크가 갱신 프로세스에서 이용된다. 프로세스는, 펌웨어/소프트웨어의 갱신이 필요한지 여부를 모바일 핸드세트가 검출할 때 시작하고, 메모리에서 갱신이 시작되거나 재개될 필요가 있는 포인트를 결정한다(블록 307). 예를 들어, 본 발명의 일실시예에서, 갱신되는 비휘발성 메모리의 각 뱅크용으로 CRC값이 계산되는 검증 프로세스를 이용하여 갱신 처리를 시작하거나 재개하는 포인트를 결정할 수 있다. 이후, 각 뱅크용으로 계산된 값은, 펌웨어/소프트웨어를 포함하는 갱신 패키지 내에 제공되는 CRC값의 리스트 중 대응하는 기계산값과 비교된다. 이 비교는, 계산된 CRC값이 임의의 뱅크용 리스트에서의 값과 정합되지 않는 비휘발성 메모리의 그 임의의 뱅크가 발생할 때까지 뱅크 단위로 리스트 전체에 걸쳐 계속된다. 비정합(failed match)은 변형(anomaly) 또는 손상을 가리키며, 따라서 갱신 액티비티를 개시 또는 재개해야 하는 포인트를 가리킨다.
다음으로, 작업 뱅크 및 백업 뱅크의 어드레스 또는 위치를 결정한다(블록 309). 일실시예에서, 이러한 뱅크들의 위치 및 길이 정보는, 갱신 에이전트에 의해 유지되거나 액세스가능한 상태 테이블 또는 구성 구조에 저장되어 있는 관련된 포인터에 의해 제공될 수 있다. 이후, 갱신 에이전트는 원 뱅크를 작업 뱅크로 복사할 수 있으며 이에 따라 갱신 패키지에 제공되는 데이터 및 명령을 이용하여 갱신될 수 있다(블록 311). 다음으로, 작업 뱅크를 갱신 에이전트에 의해 갱신하고, CRC값을 선택적으로 계산하여 갱신 프로세스의 성공을 검증한다(블록 313). 이후, 갱신된 콘텐츠를 갖고 있는 작업 뱅크를 백업 뱅크로 복사하여, 갱신된 작업 뱅크의 원 뱅크로의 후속 복사가 전력 손실 또는 다른 이유로 인해 실패하는 경우 데이터 소스를 제공한다(블록 315).
다음으로, 작업 뱅크를 원 뱅크로 복사한다(블록 317). 이 프로세스가 성공적으로 완료되기 전에 방해받으면, 후속 전력 사이클 또는 리부팅은, 백업 뱅크의 콘텐츠가 유효하다고 결정하며 원 뱅크로의 백업 뱅크 복사를 개시하여, 갱신 프로세스를 계속한다.
펌웨어/소프트웨어 갱신에서의 모든 뱅크가 갱신되었는지 여부를 결정한다(블록 319). 갱신 프로세스가 완료되었다면, 갱신 프로세스를 종료한다(블록 323). 갱신 프로세스가 완료되지 않았다면, 다음 블록으로 진행할 준비를 행한다(블록 321). 상기 다음 블록은, 예를 들어, 갱신 패키지의 뱅크 순서 명세에 의해 특정될 수 있다. 이후, 상기 다음 블록의 콘텐츠를 갱신하기 위해 상기 다음 블록의 원 콘텐츠가 작업 뱅크로 복사될 때 처리를 계속한다(블록 311).
도 4는 도 1의 모바일 핸드세트와 같은 모바일 핸드세트의 고장 허용 갱신을 수행하는 또다른 예시적인 방법을 나타내는 흐름도이며, 여기서 본 발명에 따라 백업 뱅크를 이용하여 현재 뱅크의 원 콘텐츠의 복사본을 보존한다. 도 4에 도시한 방법에서, 펌웨어/소프트웨어의 갱신이 필요하다는 것을 모바일 핸드세트가 검출하면 처리를 시작하고, 갱신을 시작 또는 재개할 필요가 있는 포인트를 결정한다(블록 407). 예를 들어, 본 발명의 일실시예에서는, 도 3에 대하여 상기한 검증 프로세스를 이용하여 갱신 처리를 시작 또는 재개해야 하는 포인트를 결정할 수 있다.
다음으로, 작업 뱅크 및 백업 뱅크의 어드레스 또는 위치를 결정한다(블록 409). 본 발명의 일실시예에서, 이러한 뱅크들의 위치 및 길이 정보는, 갱신 에이전트에 의해 유지되거나 액세스가능한 구성 구조 또는 상태 테이블에 저장되어 있는 관련된 포인터에 의해 제공될 수 있다. 이후, 갱신 에이전트는 현재의 원 뱅크를 작업 뱅크로 복사하고 이에 따라 갱신 패키지에 제공된 데이터 및 명령을 이용하여 갱신될 수 있다(블록 411). 다음으로, 작업 뱅크는 갱신 에이전트에 의해 갱신되고, CRC값(또는 MD5 체크섬 등)을 계산하여 갱신 프로세스의 성공을 검증한다(블록 413).
이후, 현재 뱅크(원 뱅크라고도 칭함)의 원 콘텐츠를 백업 뱅크로 복사하여, 갱신된 작업 뱅크의 원 뱅크로의 후속 복사가 전력 손실 또는 다른 이유로 인해 실패하는 경우 데이터 소스를 제공하게 된다(블록 415). 다음으로, 작업 뱅크를 원 뱅크로 복사한다(블록 417). 이 프로세스가 성공적으로 완료되기 전에 방해받으면, 전력 사이클 또는 리부팅은, 백업 뱅크의 콘텐츠가 유효하다고 결정하며 작업 뱅크로의 백업 뱅크 복사를 개시하여, 갱신 프로세스를 계속한다.
이후, 프로세스는 모든 뱅크가 갱신되었는지 여부를 결정한다(블록 419). 갱신 프로세스가 완료되었다면, 갱신 프로세스를 종료한다(블록 423). 갱신 프로세스가 완료되지 않았다면, 다음 블록으로 진행할 준비를 행한다(블록 421). 상기 다음 블록은, 예를 들어, 펌웨어/소프트웨어 갱신을 포함하는 갱신 패키지에서 뱅크 순서 명세에 의해 특정될 수 있다. 이후, 다음 원 뱅크로 처리를 계속하고, 이것은 갱신 처리를 시작하기 위해 복사 뱅크로 복사된다(블록 411).
도 5는 도 1의 모바일 핸드세트(107)와 같은 모바일 핸드세트의 고장 허용 갱신을 수행하는 또다른 예시적인 방법을 나타내는 흐름도이며, 여기서 본 발명에 따라 백업 뱅크로의 원 뱅크의 복사 동작이 작업 뱅크의 갱신보다 선행한다. 이 실시예에서, 도 4의 블록(413, 415)의 동작은 번갈아 발생하며, 즉, 원 뱅크가 백업 뱅크로 복사된 후 작업 뱅크가 갱신되는 방식이다. 갱신 프로세스를 시작한 후(블록 507), 원 뱅크를 작업 뱅크(블록 511)로 복사하고, 또는 백업 뱅크로 복사한다(블록 513). 이후, 작업 뱅크를 갱신하고(블록 515), 갱신된 작업 뱅크를 원 뱅크로 복사한다(블록 517). 그 포인트로부터 진행되는 처리는 도 4의 프로세스에 도시한 것과 유사하다.
도 6은 도 1의 모바일 핸드세트(107)와 같은 모바일 핸드세트의 고장 허용 갱신을 수행하는 또다른 예시적인 방법을 나타내는 흐름도이며, 여기서 본 발명에 따라 주어진 뱅크에 대한 갱신 동작은 뱅크 순서에서 선행하는 뱅크의 갱신된 콘텐츠 뿐만 아니라 원 콘텐츠를 이용할 수 있다. 프로세스는 펌웨어/소프트웨어 갱신이 필요하다는 것을 모바일 핸드세트가 검출하면 시작하고, 갱신이 시작되거나 재개될 필요가 있는 포인트를 결정한다(블록 607). 다음으로, 작업 뱅크 및 백업 뱅크의 어드레스 또는 위치를 결정한다(블록 609). 이후, 갱신 에이전트는 원 뱅크를 작업 뱅크로 복사할 수 있으며, 따라서 갱신될 수 있다(블록 611). 갱신은, 도 1의 뱅크 1(119) 내지 뱅크 J(123)처럼 백업 뱅크 및 다른 뱅크의 콘텐츠와 함께, 갱신 패키지에 제공되는 데이터 및 갱신 명령을 이용할 수 있다. 갱신 패키지에서 특정되는 뱅크 순서에 의존하여, 뱅크 1(119) 내지 뱅크 J(123)와 같은 뱅크는 이미 갱신되었을 수 있으며, 또는 원 콘텐츠를 포함할 수 있다.
다음으로, 갱신 에이전트는 백업 뱅크의 콘텐츠를 이용하여 작업 뱅크를 갱신한다(블록 613). 프로세스에서의 이 포인트에서, 백업 뱅크는 뱅크 순서에서 선행하는 뱅크의 원 콘텐츠의 복사본을 포함하고 있다. 따라서, 백업 뱅크의 콘텐츠는 향상된 참조 로컬리티를 제공하고, 그 이유는 이 콘텐츠가 펌웨어/소프트웨어의 보다 새로운 버전에서 원 뱅크로부터 재위치설정(relocated)되었을 수 있는 코드 세그먼트 또는 데이터를 포함하는 것으로 예상되기 때문이다. 작업 뱅크가 갱신된 후, CRC 값 (또는 MD5 체크섬 등)을 계산하여 그 뱅크 상에서의 갱신 동작의 결과를 검증한다.
이후, (원 뱅크라고도 칭하는) 현재 뱅크의 원 콘텐츠를 백업 뱅크로 복사하여, 원 뱅크로의 갱신된 작업 뱅크의 후속 복사가 전력 손실이나 다른 이유로 인해 실패하는 경우에 데이터 소스를 제공한다(블록 615). 뱅크 순서에서 다음 뱅크의 갱신동안 원 뱅크의 콘텐츠를 이용할 수 있다. 이후, 갱신된 작업 뱅크를 원 뱅크로 복사한다(블록 617). 이 프로세스가 성공적으로 완료되기 전에 방해받으면, 후속 전력 사이클 또는 리부팅은, 갱신이 진행중이라고 결정하며, 백업 뱅크의 콘텐츠가 원 뱅크의 유효한 원 콘텐츠라는 것을 결정한다. 이후, 이것은 백업 뱅크를 작업 뱅크로 복사하고, 갱신 프로세스를 계속한다.
다음으로, 갱신 에이전트는 갱신 프로세스가 완료되었는지 여부 및 모든 뱅크가 갱신되었는지 여부를 결정한다(블록 619). 뱅크 순서에서의 모든 뱅크가 완료되었다면, 갱신 프로세스를 종료한다(블록 623). 갱신 프로세스가 아직 완료되지 않았다고 결정되면, 다음 뱅크로 처리를 진행한다(블록 621). 상기한 바와 같이, 상기 다음 뱅크는 갱신 패키지 내에 포함된 뱅크 순서 명세에 의해 특정될 수 있다. 이후, 뱅크 순서에서의 다음 원 뱅크를 작업 뱅크로 복사하여 그 콘텐츠를 갱신하는 처리를 계속한다(블록 611).
이러한 방식에서, 갱신 에이전트는 작업 뱅크, 백업 뱅크, 및 복수의 원 뱅크중 하나를 이용하여 펌웨어/소프트웨어의 고장 허용 갱신을 용이하게 한다. 일실시예에서, 백업 뱅크는 원 뱅크의 백업 복사본을 저장하는 한편 갱신된 작업 뱅크는 원 뱅크에 기입된다. 다른 실시예에서, 백업 뱅크는 갱신된 작업 뱅크의 콘텐츠의 백업 복사본을 유지한다. 또다른 실시예에서, 백업 뱅크는 갱신된 작업 뱅크의 백업 복사본 뿐만 아니라 원 뱅크의 백업 복사본을 저장한다.
본 발명을 일부 실시예를 참조하여 설명하였지만, 본 발명의 범위를 벗어나지 않고 다양한 변경을 행할 수 있으며 등가물로 대체할 수 있다는 것을 이해할 수 있다. 또한, 많은 수정을 행하여 본 발명의 범위로부터 벗어나지 않고 본 발명의 교시에 특정한 상황 또는 요소를 적용할 수 있다. 따라서, 본 발명은 상기한 특정 실시예에 한정되지 않으며 첨부한 청구범위의 내의 모든 실시예를 포함하는 것이다.
Claims (33)
- 제1 코드 버전을 갖는 복수의 뱅크를 구비하는 비휘발성 메모리를 포함하는 전자 장치를 갱신하는 방법으로서,(a) 상기 복수의 뱅크중 하나를 선택하는 단계와,(b) 선택한 뱅크를 작업 뱅크로 복사하는 단계와,(c) 선택한 뱅크를 백업 뱅크로 복사하는 단계와,(d) 상기 작업 뱅크의 콘텐츠를 상기 제1 코드 버전으로부터 제2 코드 버전으로 변환하는 단계와,(e) 변환된 작업 뱅크를 상기 선택한 뱅크로 이동하는 단계와,(f) 상기 선택한 뱅크의 작업 뱅크로의 복사 단계, 상기 선택한 뱅크의 백업 뱅크로의 복사 단계, 및 상기 변환 단계 중 적어도 하나의 단계의 성공적인 완료를, 순환 잉여 검사(cyclic redundancy check), 메시지 다이제스트(message digest), 디지털 서명(digital signature), 및 체크섬(checksum) 중 적어도 하나를 이용하여 검증하는 단계와,(g) 상기 복수의 뱅크 각각이 갱신될 때까지 상기 (a) 내지 (f) 단계를 반복하는 단계를 포함하는 방법.
- 제1항에 있어서,상기 변환 단계는 적어도 하나의 갱신 명령을 이용하는 방법.
- 제1항에 있어서,상기 작업 뱅크는 휘발성 메모리에 위치하는 방법.
- 제1항에 있어서,상기 선택 단계는, 적어도 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 체크섬, 및 특정 뱅크 순서(specified bank order) 중 적어도 하나를 이용하는 방법.
- 제4항에 있어서,상기 선택 단계는, 리세트(reset) 및 파워업(power up) 중 적어도 하나에 뒤이어 갱신을 재개할 때 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 및 체크섬 중 적어도 하나를 이용하고,상기 선택 단계는 다른 모든 시간에 특정 뱅크 순서를 이용하는 방법.
- 제1항에 있어서,갱신 패키지를 수신하는 단계를 더 포함하는 방법.
- 제6항에 있어서,상기 갱신 패키지는 적어도 하나의 갱신 명령을 포함하는 방법.
- 제6항에 있어서,상기 갱신 패키지는 뱅크 순서 명세(bank order specification)를 포함하는 방법.
- 제6항에 있어서,상기 수신 단계는 공중 네트워크를 이용하여 달성되는 방법.
- 제6항에 있어서,상기 수신 단계는 무선 네트워크를 이용하여 달성되는 방법.
- 제1항에 있어서,적어도 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 및 체크섬 중 적어도 하나를 이용하여 상기 갱신의 진행을 결정하는 단계더 포함하는 방법.
- 제1항에 있어서,상기 변환 단계는 상기 선택한 뱅크가 아닌 상기 복수의 뱅크중 적어도 하나의 적어도 일부를 이용하는 방법.
- 제1 코드 버전을 갖는 복수의 뱅크를 구비하는 비휘발성 메모리를 포함하는 전자 장치를 상기 제1 코드 버전으로부터 제2 코드 버전으로 갱신하는 방법으로서,(a) 적어도 하나의 갱신 명령을 포함하는 갱신 패키지를 수신하는 단계와,(b) 적어도 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 체크섬, 및 특정 뱅크 순서 중 적어도 하나를 이용하여 상기 복수의 뱅크 중 하나를 선택하는 단계와,(c) 선택한 뱅크를, 상기 적어도 하나의 갱신 명령을 이용하여 상기 제1 코드 버전으로부터 상기 제2 코드 버전으로 변환하는 단계와,(d) 상기 복수의 뱅크의 각각이 갱신될 때까지 상기 (b) 및 (c) 단계를 뱅크 단위로 반복하는 단계를 포함하는 방법.
- 제13항에 있어서,상기 선택 단계는, 리세트 및 파워업 중 적어도 하나에 뒤이어 갱신을 재개할 때 적어도 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 및 체크섬 중 적어도 하나를 이용하고,상기 선택 단계는 다른 모든 시간에 특정 뱅크 순서를 이용하는 방법.
- 제13항에 있어서,상기 변환 단계는,상기 선택한 뱅크를 작업 뱅크로 복사하는 단계와,상기 선택한 뱅크를 백업 뱅크로 복사하는 단계와,상기 작업 뱅크의 콘텐츠를 상기 제1 코드 버전으로부터 상기 제2 코드 버전으로 변환하는 단계와,상기 작업 뱅크의 변환된 콘텐츠를 상기 선택한 뱅크로 이동하는 단계를 더 포함하는 방법.
- 제15항에 있어서,상기 작업 뱅크는 휘발성 메모리에 위치하는 방법.
- 제13항에 있어서,상기 변환 단계는, 상기 선택한 뱅크가 아닌 상기 복수의 뱅크중 적어도 하나의 적어도 일부를 이용하는 방법.
- 제13항에 있어서,상기 갱신 패키지는 뱅크 순서 명세를 포함하는 방법.
- 제13항에 있어서,상기 뱅크들은 비순차(non-sequential) 뱅크 순서로 선택되는 방법.
- 제13항에 있어서,상기 수신 단계는 공중 네트워크를 통한 것인 방법.
- 제13항에 있어서,상기 수신 단계는 무선 네트워크를 통한 것인 방법.
- 제1 코드 버전을 갖는 복수의 뱅크를 구비하는 비휘발성 메모리를 포함하는 전자 장치를 상기 제1 코드 버전으로부터 제2 코드 버전으로 갱신하는 방법으로서,(a) 공중 네트워크를 이용하여 적어도 하나의 갱신 명령을 포함하는 갱신 패키지를 수신하는 단계와,(b) 상기 복수의 뱅크중 하나를 선택하는 단계와,(c) 선택한 뱅크를, 상기 적어도 하나의 갱신 명령을 이용하여 상기 제1 코드 버전으로부터 상기 제2 코드 버전으로 변환하는 단계와,(d) 상기 복수의 뱅크의 각각이 갱신될 때까지 상기 (b) 및 (c) 단계를 뱅크 단위로 반복하는 단계를 포함하는 방법.
- 제22항에 있어서,상기 변환 단계는,상기 선택한 뱅크를 작업 뱅크로 복사하는 단계와,상기 선택한 뱅크를 백업 뱅크로 복사하는 단계와,상기 작업 뱅크의 콘텐츠를 상기 제1 코드 버전으로부터 상기 제2 코드 버전으로 변환하는 단계와,상기 작업 뱅크의 변환된 콘텐츠를 상기 선택한 뱅크로 이동하는 단계를 더 포함하는 방법.
- 제23항에 있어서,상기 작업 뱅크는 휘발성 메모리에 위치하는 방법.
- 제23항에 있어서,상기 변환 단계는, 상기 복수의 뱅크중 적어도 다른 하나에 더하여, 이전에 갱신한 뱅크의 변환된 콘텐츠 및 원 콘텐츠를 이용하는 방법.
- 제22항에 있어서,상기 변환 단계는 상기 선택한 뱅크가 아닌 상기 복수의 뱅크중 적어도 하나의 적어도 일부를 이용하는 방법.
- 제22항에 있어서,상기 선택 단계는, 적어도 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 체크섬, 및 특정 뱅크 순서중 적어도 하나를 이용하는 방법.
- 제27항에 있어서,상기 선택 단계는, 리세트 및 파워업 중 적어도 하나에 뒤이어 갱신을 재개할 때 적어도 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 및 체크섬 중 적어도 하나를 이용하고,상기 선택 단계는 다른 모든 시간에 특정 뱅크 순서를 이용하는 방법.
- 제22항에 있어서,상기 갱신 패키지는 뱅크 순서 명세를 포함하는 방법.
- 제22항에 있어서,상기 복수의 뱅크중 하나는 비순차 뱅크 순서로 선택되는 방법.
- 복수의 뱅크를 구비하는 메모리를 포함하는 전자 장치를 갱신하는 갱신 패키지로서,차이 정보 및 후갱신 서명들(post-update signatures)의 집합(collection)을 포함하고,상기 후갱신 서명의 각각은 갱신될 상기 복수의 뱅크 중 하나에 대응하는 갱신 패키지.
- 제31항에 있어서,상기 후갱신 서명들의 집합 중 적어도 하나는, 방해(interruption)에 뒤이어 갱신을 재개하는데 이용되는 갱신 패키지.
- 제31항에 있어서,상기 후갱신 서명의 각각은, 적어도 순환 잉여 검사, 메시지 다이제스트, 디지털 서명, 및 체크섬 중 하나인 갱신 패키지.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US43471202P | 2002-12-18 | 2002-12-18 | |
US60/434,712 | 2002-12-18 | ||
US10/636,864 US7082549B2 (en) | 2000-11-17 | 2003-08-07 | Method for fault tolerant updating of an electronic device |
US10/636,864 | 2003-08-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20050088193A KR20050088193A (ko) | 2005-09-02 |
KR100986487B1 true KR100986487B1 (ko) | 2010-10-08 |
Family
ID=32600201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020057011388A KR100986487B1 (ko) | 2002-12-18 | 2003-09-04 | 고장 허용 갱신 에이전트를 구비한 모바일 핸드세트 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1584005B1 (ko) |
JP (1) | JP2006518059A (ko) |
KR (1) | KR100986487B1 (ko) |
AT (1) | ATE539404T1 (ko) |
AU (1) | AU2003274954A1 (ko) |
WO (1) | WO2004061551A2 (ko) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8468515B2 (en) | 2000-11-17 | 2013-06-18 | Hewlett-Packard Development Company, L.P. | Initialization and update of software and/or firmware in electronic devices |
US8479189B2 (en) | 2000-11-17 | 2013-07-02 | Hewlett-Packard Development Company, L.P. | Pattern detection preprocessor in an electronic device update generation system |
US8526940B1 (en) | 2004-08-17 | 2013-09-03 | Palm, Inc. | Centralized rules repository for smart phone customer care |
US8555273B1 (en) | 2003-09-17 | 2013-10-08 | Palm. Inc. | Network for updating electronic devices |
US8752044B2 (en) | 2006-07-27 | 2014-06-10 | Qualcomm Incorporated | User experience and dependency management in a mobile device |
US8893110B2 (en) | 2006-06-08 | 2014-11-18 | Qualcomm Incorporated | Device management in a network |
KR20190093346A (ko) * | 2018-02-01 | 2019-08-09 | 쿨비트엑스 엘티디 | 폐쇄 저장 디바이스의 펌웨어를 갱신하는 방법 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7904895B1 (en) | 2004-04-21 | 2011-03-08 | Hewlett-Packard Develpment Company, L.P. | Firmware update in electronic devices employing update agent in a flash memory card |
JP4501159B2 (ja) * | 2005-03-30 | 2010-07-14 | 株式会社デンソー | 自動車用制御ユニット |
KR101426710B1 (ko) * | 2006-07-14 | 2014-09-23 | 삼성전자주식회사 | 휴대단말기의 버전정보 갱신 장치 및 방법 |
JP6609199B2 (ja) * | 2016-03-01 | 2019-11-20 | ルネサスエレクトロニクス株式会社 | 組込み機器 |
CN111052075B (zh) * | 2017-08-30 | 2021-10-01 | 华为技术有限公司 | 提高在位固件更新稳健性的方法及装置 |
JP7354631B2 (ja) | 2018-08-10 | 2023-10-03 | 株式会社デンソー | 電子制御装置、車両用電子制御システム、差分データの整合性判定方法及び差分データの整合性判定プログラム |
WO2020032119A1 (ja) * | 2018-08-10 | 2020-02-13 | 株式会社デンソー | 電子制御装置、車両用電子制御システム、差分データの整合性判定方法及び差分データの整合性判定プログラム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020099950A1 (en) | 2001-01-22 | 2002-07-25 | Smith Kenneth K. | Method of maintaining integrity of an instruction or data set |
US20020131404A1 (en) | 2000-11-28 | 2002-09-19 | 4Thpass Inc. | Method and system for maintaining and distributing wireless applications |
US20020188886A1 (en) | 2000-01-07 | 2002-12-12 | Xiaodong Liu | Method and apparatus for backing up application code upon power failure during a code update |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3364356B2 (ja) * | 1995-03-30 | 2003-01-08 | 富士通株式会社 | メモリ書替え装置 |
US5960445A (en) * | 1996-04-24 | 1999-09-28 | Sony Corporation | Information processor, method of updating a program and information processing system |
EP1077407A1 (en) * | 1999-07-29 | 2001-02-21 | International Business Machines Corporation | Method of upgrading a program using associated configuration data |
US6601212B1 (en) * | 2000-03-29 | 2003-07-29 | Hewlett-Packard Development Company, Lp. | Method and apparatus for downloading firmware to a non-volatile memory |
-
2003
- 2003-09-04 KR KR1020057011388A patent/KR100986487B1/ko active IP Right Grant
- 2003-09-04 EP EP03759224A patent/EP1584005B1/en not_active Expired - Lifetime
- 2003-09-04 JP JP2005508521A patent/JP2006518059A/ja active Pending
- 2003-09-04 AT AT03759224T patent/ATE539404T1/de active
- 2003-09-04 AU AU2003274954A patent/AU2003274954A1/en not_active Abandoned
- 2003-09-04 WO PCT/US2003/027727 patent/WO2004061551A2/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188886A1 (en) | 2000-01-07 | 2002-12-12 | Xiaodong Liu | Method and apparatus for backing up application code upon power failure during a code update |
US20020131404A1 (en) | 2000-11-28 | 2002-09-19 | 4Thpass Inc. | Method and system for maintaining and distributing wireless applications |
US20020099950A1 (en) | 2001-01-22 | 2002-07-25 | Smith Kenneth K. | Method of maintaining integrity of an instruction or data set |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8468515B2 (en) | 2000-11-17 | 2013-06-18 | Hewlett-Packard Development Company, L.P. | Initialization and update of software and/or firmware in electronic devices |
US8479189B2 (en) | 2000-11-17 | 2013-07-02 | Hewlett-Packard Development Company, L.P. | Pattern detection preprocessor in an electronic device update generation system |
US8555273B1 (en) | 2003-09-17 | 2013-10-08 | Palm. Inc. | Network for updating electronic devices |
US8526940B1 (en) | 2004-08-17 | 2013-09-03 | Palm, Inc. | Centralized rules repository for smart phone customer care |
US8893110B2 (en) | 2006-06-08 | 2014-11-18 | Qualcomm Incorporated | Device management in a network |
US8752044B2 (en) | 2006-07-27 | 2014-06-10 | Qualcomm Incorporated | User experience and dependency management in a mobile device |
US9081638B2 (en) | 2006-07-27 | 2015-07-14 | Qualcomm Incorporated | User experience and dependency management in a mobile device |
KR20190093346A (ko) * | 2018-02-01 | 2019-08-09 | 쿨비트엑스 엘티디 | 폐쇄 저장 디바이스의 펌웨어를 갱신하는 방법 |
KR102064660B1 (ko) * | 2018-02-01 | 2020-01-08 | 쿨비트엑스 엘티디 | 폐쇄 저장 디바이스의 펌웨어를 갱신하는 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP1584005A4 (en) | 2010-02-24 |
WO2004061551A3 (en) | 2006-08-31 |
EP1584005B1 (en) | 2011-12-28 |
KR20050088193A (ko) | 2005-09-02 |
AU2003274954A1 (en) | 2004-07-29 |
JP2006518059A (ja) | 2006-08-03 |
ATE539404T1 (de) | 2012-01-15 |
EP1584005A2 (en) | 2005-10-12 |
AU2003274954A8 (en) | 2004-07-29 |
WO2004061551A2 (en) | 2004-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7082549B2 (en) | Method for fault tolerant updating of an electronic device | |
US7725889B2 (en) | Mobile handset capable of updating its update agent | |
US7971199B1 (en) | Mobile device with a self-updating update agent in a wireless network | |
US8196130B2 (en) | Tri-phase boot process in electronic devices | |
US8539471B2 (en) | Updating firmware of an electronic device | |
US7797693B1 (en) | NAND mobile devices capable of updating firmware or software in a manner analogous to NOR mobile devices | |
US7698698B2 (en) | Method for over-the-air firmware update of NAND flash memory based mobile devices | |
US7657886B1 (en) | Mobile device with a MMU for faster firmware updates in a wireless network | |
US7210010B2 (en) | Efficient system and method for updating a memory device | |
KR100986487B1 (ko) | 고장 허용 갱신 에이전트를 구비한 모바일 핸드세트 | |
US20050132351A1 (en) | Updating electronic device software employing rollback | |
US20090094450A1 (en) | Firmware image update and management | |
CN109558160A (zh) | 升级方法、嵌入式系统 | |
KR20050061378A (ko) | 페일세이프 방식으로 맞춤 소프트웨어 영상 갱신을불휘발성 저장 장치에 적용하는 시스템 및 방법 | |
US7689981B1 (en) | Mobile handset with efficient interruption point detection during a multiple-pass update process | |
WO2005101200A1 (en) | Method and apparatus for generating and update package | |
GB2466685A (en) | Fault tolerant updating of firmware | |
CN101904105A (zh) | 在更新期间使用高效的块备份和块恢复的移动手持送受话器 | |
JPWO2009078285A1 (ja) | 無線端末、無線端末の不揮発性メモリ、および診断情報のフェイルセーフ保存方法 | |
WO2005088448A1 (en) | Method and apparatus for reliable in-place update | |
EP2329368A2 (en) | Updating content without using a mini operating system | |
CN117008942A (zh) | 一种程序升级方法、装置及电子设备 | |
JP2009123082A (ja) | 情報処理装置、システム再開方法及びシステム再開プログラム | |
KR20010007066A (ko) | 소프트웨어를 내장 시스템으로 다운로드하기 위한 방법 및장치 | |
CN114924774A (zh) | 一种智能卡多操作系统升级切换方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20131001 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20141001 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20181001 Year of fee payment: 9 |