KR20080008425A - 전자 장치에서의 3-단계 부팅 프로세스 - Google Patents

전자 장치에서의 3-단계 부팅 프로세스 Download PDF

Info

Publication number
KR20080008425A
KR20080008425A KR1020077029993A KR20077029993A KR20080008425A KR 20080008425 A KR20080008425 A KR 20080008425A KR 1020077029993 A KR1020077029993 A KR 1020077029993A KR 20077029993 A KR20077029993 A KR 20077029993A KR 20080008425 A KR20080008425 A KR 20080008425A
Authority
KR
South Korea
Prior art keywords
update
software
electronic device
firmware
memory
Prior art date
Application number
KR1020077029993A
Other languages
English (en)
Other versions
KR101003888B1 (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 비트폰 코포레이션
Publication of KR20080008425A publication Critical patent/KR20080008425A/ko
Application granted granted Critical
Publication of KR101003888B1 publication Critical patent/KR101003888B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/123Software or firmware update, e.g. device firmware management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

복수의 전자 장치를 포함하는 전자 장치 네트워크가 본 명세서에 개시되어 있다. 전자 장치 각각은 전자 장치에 존재하는 펌웨어/소프트웨어를 업데이트하도록 구성된 업데이트 소프트웨어를 가질 수 있다. 전자 장치는 또한 전자 장치 내의 업데이트 소프트웨어를 업데이트하기 위한 부가의 소프트웨어를 이용할 수 있다. 전자 장치는 또한 현재 버전의 업데이트 소프트웨어가 호출되어야 하는지 또는 이전의 백업 버전의 업데이트 소프트웨어가 호출되어야 하는지를 판정하도록 구성되어 있는 소프트웨어를 가질 수 있다. 이 판정은 업데이트 상태 표시자에 존재하는 상태 정보에 기초하여 행해질 수 있다. 상태 정보는 어떤 업데이트도 수행하지 않는 통상의 시동 동작보다는, 업데이트 소프트웨어에 대한 업데이트가 행해져야 함을 나타낼 수 있다. 네트워크는 또한 전자 장치에서의 업데이트 소프트웨어를 업데이트하는 데 사용하기 위한 업데이트를 생성하도록 구성되어 있는 업데이트 생성자를 포함할 수 있다.
전자 장치 네트워크, 펌웨어 업데이트, 메모리 구성, 업데이트 에이전트

Description

전자 장치에서의 3-단계 부팅 프로세스{TRI-PHASE BOOT PROCESS IN ELECTRONIC DEVICES}
이동 전화 및 개인 휴대 단말기(PDA) 등의 전자 장치는 종종 전자 장치의 제조업자에 의해, 전기 통신 사업자에 의해, 또는 제3자에 의해 제공되는 펌웨어 및/또는 소프트웨어 애플리케이션을 포함한다. 이들 펌웨어 및 소프트웨어 애플리케이션은 종종 버그(bug)를 포함하고 있다. 버그를 수정하기 위해 및/또는 새로운 특징을 도입하기 위해 새로운 버전의 펌웨어 및 소프트웨어가 주기적으로 발표된다.
전자 장치에서의 펌웨어 및/또는 소프트웨어 컴포넌트를 업데이트하는 데 이용되는 업데이트 프로그램, 코드, 또는 함수도 또한 변경, 수정 및/또는 업데이트될 필요가 있을 수 있다. 프로그램은 업데이트 에이전트(update agent)를 이용하여 업데이트될 수 있다. 업데이트 에이전트는 펌웨어 및/또는 소프트웨어 중 하나를 업데이트하기 위한 소프트웨어를 포함할 수 있다. 전자 장치, 예를 들어 모바일 핸드셋에서의 업데이트 에이전트를 업데이트하는 것은 아주 어려운 일일 수 있다. 업데이트가 적절히 실행되지 않는 경우, 업데이트 에이전트는 동작 불능 상태가 될 수 있고 및/또는 손상될 수 있다.
종래의 전통적인 방법의 다른 제한 및 단점은 이러한 시스템을, 도면을 참조하여 본 출원 명세서의 나머지에 기술되어 있는 본 발명과 비교해보면 당업자에게는 명백하게 될 것이다.
전자 장치에서의 3-단계 부팅 프로세스를 제공하고자 한다.
본 발명의 측면들은 모바일 전자 장치에서의 펌웨어 및 소프트웨어 중 하나를 업데이트하는 데 사용하기 위한 업데이트 상태 표시자에서 찾아볼 수 있다. 업데이트 상태 표시자는 업데이트 주소 메모리 블록을 포함한다. 이 업데이트 주소는 업데이트 소프트웨어가 전자 장치에서 어디에 저장되어 있는지를 식별해줄 수 있다. 업데이트 상태 표시자는 또한 전자 장치의 업데이트가 완료되었을 때 반환될 값을 포함하는 반환 메모리 블록, 및 복수의 상태 표시자를 포함하는 표시자 메모리 블록을 포함할 수 있다.
본 발명에 따른 실시예에서, 복수의 상태 표시자는 제1 버전의 소프트웨어를 제2 버전의 소프트웨어로 변환시키는 복수의 실행가능 명령어를 포함하는 업데이트 소프트웨어에 의해 이용될 수 있다.
본 발명에 따른 실시예에서, 복수의 상태 표시자 중 적어도 하나는 전자 장치에 업데이트가 존재하고 또 업데이트가 수행되어야 함을 나타내기 위해 이용될 수 있다.
본 발명에 따른 실시예에서, 복수의 상태 표시자 중 적어도 하나는 업데이트될 소프트웨어가 유효하고 업데이트될 수 있는지 여부를 나타내기 위해 이용될 수 있다.
본 발명에 따른 실시예에서, 복수의 상태 표시자 중 적어도 하나는 업데이트가 현재 업데이트될 소프트웨어 전체에 걸쳐 어느 패스(pass)를 수행하고 있는지를 나타내기 위해 이용될 수 있다.
본 발명에 따른 실시예에서, 복수의 상태 표시자 중 적어도 하나는 업데이트될 소프트웨어의 업데이트가 완료되었음을 나타내기 위해 이용될 수 있다.
본 발명의 측면들은, 제1 메모리 부분에 위치하는, 전자 장치를 부팅시키는 소프트웨어, 제2 메모리 부분에 위치하는, 전자 장치에서의 펌웨어 및 소프트웨어 중 하나를 업데이트시키는 업데이트 소프트웨어, 업데이트 이벤트 동안에 코드 및 정보 중 하나를 백업하는 데 사용가능한 예비 메모리 부분, 및 업데이트 이벤트 동안에 업데이트 소프트웨어에 의해 사용가능한 업데이트를 저장하는 적어도 하나의 부가 메모리 부분을 포함하는 모바일 전자 장치의 메모리 구성에서 찾아볼 수 있다. 전자 장치에서의 소프트웨어 및 펌웨어 중 하나를 업데이트하는 단계는 소프트웨어 및 펌웨어 중 하나의 제1 버전을 소프트웨어 및 펌웨어 중 하나의 제2 버전으로 변환시키는 복수의 실행가능 명령어를 실행하는 단계를 포함할 수 있다.
본 발명에 따른 실시예에서, 업데이트 소프트웨어는 장애 허용(fault tolerant) 방식으로 업데이트가능할 수 있다.
본 발명에 따른 실시예에서, 메모리 구성은 비휘발성 메모리를 포함할 수 있다.
본 발명에 따른 실시예에서, 소프트웨어 및 펌웨어는 메모리 구성에 압축된 형태로 저장되고 프로세싱 및 업데이트 중 하나를 위해 메모리 구성으로부터 랜덤 액세스 메모리로 압축 해제될 수 있다.
본 발명의 측면들은 모바일 전자 장치에서의 소프트웨어 및 펌웨어 중 하나를 업데이트하는 데 이용가능한 업데이트 소프트웨어에서 찾아볼 수 있다. 업데이트 소프트웨어는 소프트웨어 컴포넌트를 포함할 수 있다. 이 소프트웨어 컴포넌트는 전자 장치에서의 업데이트될 소프트웨어 및 펌웨어 중 하나가 업데이트될 수 있는지를 판정하기 위해 소프트웨어 및 펌웨어 중 하나를 검사(survey) 및 검증(validate)하도록 구성될 수 있다. 이 소프트웨어 컴포넌트는 또한 업데이트 중단(update interruption)을 식별하도록 구성될 수 있다.
본 발명에 따른 실시예에서, 업데이트 중단을 식별하는 단계는 장애 허용 업데이트를 제공하고 또 중단된 업데이트가 그 중단이 일어난 곳에서 재개(re-initiate)될 수 있게 해줄 수 있다.
본 발명의 측면들은 모바일 전자 장치에서의 소프트웨어 및 펌웨어 중 하나를 업데이트하기 위해 업데이트 소프트웨어와 연계하여 이용가능한 업데이트 소프트웨어 래퍼(update software wrapper)에서 찾아볼 수 있다. 이 업데이트 소프트웨어 래퍼는 전자 장치 특정 소프트웨어와 애플리케이션 특정 소프트웨어 간의 상호작용을 용이하게 해주도록 구성될 수 있다.
본 발명에 따른 실시예에서, 전자 장치 특정 소프트웨어는 특정한 제조업자의 전자 장치 모델에서 동작하도록 구성된 소프트웨어를 포함할 수 있다.
본 발명에 따른 실시예에서, 애플리케이션 특정 소프트웨어는 특정한 제조업자의 전자 장치 모델과 무관한 특정 기능을 수행하도록 구성된 소프트웨어를 포함 할 수 있다.
본 발명에 따른 실시예에서, 업데이트 소프트웨어 래퍼는 생성된 업데이트와 특정한 제조업자 전자 장치 모델의 펌웨어 및 소프트웨어 중 하나의 상호작용 및 인터페이싱을 가능하게 해주기 위해 제조업자 특정 전자 장치 모델 루트 코드(root code)와 제조업자 전자 장치 모델과 무관한 애플리케이션 특정 업데이트를 수행하도록 구성된 업데이트 정보를 결합시키는 소프트웨어를 더 포함할 수 있다.
본 발명에 따른 실시예에서, 이 업데이트 소프트웨어 래퍼는 메모리 모듈의 적어도 하나의 컴포넌트의 플래쉬 기입 함수(flash write function) 이전에 플래쉬 소거 함수(flash erase function)를 호출하도록 구성될 수 있다.
본 발명에 따른 실시예에서, 이 업데이트 소프트웨어 래퍼는 평가 설정(evaluation setting), 업데이트 변수 및 업데이트 함수(update function) 중 적어도 하나를 관리 및 조정하도록 구성될 수 있다.
본 발명의 측면들은 비 장애 허용(non-fault-tolerant) 방식 및 장애 허용(fault-tolerant) 방식으로 모바일 전자 장치에 존재하는 업데이트 소프트웨어를 업데이트하도록 구성되어 있는 소프트웨어를 포함하는 모바일 전자 장치에서 찾아볼 수 있다.
본 발명에 따른 실시예에서, 업데이트 소프트웨어를 장애 허용 방식으로 업데이트하는 단계는 업데이트 이벤트의 개시 이전에 업데이트 소프트웨어의 백업 복사본을 비휘발성 메모리에 저장하는 단계를 포함할 수 있다.
본 발명의 측면들은 비휘발성 메모리 구성에 저장된 적어도 2개의 프로그램 파일을 포함하는 모바일 전자 장치에서 찾아볼 수 있다. 적어도 2개의 프로그램 파일은 전자 장치를 부팅시키는 데 사용가능한 코드 및 데이터 중 적어도 하나를 포함할 수 있다. 적어도 2개의 프로그램 파일은 업데이트될 소프트웨어의 상태에 따라 메모리 내의 서로 다른 장소로부터 관련 부팅 명령어를 호출하도록 구성될 수 있다.
본 발명에 따른 실시예에서, 적어도 2개의 프로그램 파일은 바이너리 파일일 수 있다.
본 발명에 따른 실시예에서, 적어도 2개의 프로그램 파일은 서로 다른 때에 부팅 동작을 수행하도록 구성될 수 있다.
본 발명에 따른 실시예에서, 적어도 2개의 프로그램 파일 중 하나는 비휘발성 메모리 내의 디폴트 시작 장소로부터 업데이트 소프트웨어를 부팅시키도록 구성될 수 있고, 적어도 2개의 프로그램 파일 중 다른 하나는 비휘발성 메모리 내의 예비 백업 장소로부터 업데이트 소프트웨어를 부팅시키도록 구성될 수 있다.
본 발명에 따른 실시예에서, 적어도 2개의 프로그램 파일 각각은 전자 장치에 존재하는 업데이트 소프트웨어의 장애 허용 업데이트의 개시 이전에 장애 허용을 제공하기 위해 디폴트 장소로부터 예비 백업 장소로 복사되는 부가의 재배치가능 코드 블록과 연관될 수 있다.
본 발명에 따른 실시예에서, 모바일 전자 장치는 전자 장치를 부팅시키는 소프트웨어를 더 포함할 수 있다. 이 부팅시키는 소프트웨어는 부팅, 프로세싱 및 업데이트 중 하나를 위해 업데이트될 업데이트 소프트웨어 및 관련 재배치가능 코 드 블록을 초기화하고 비휘발성 메모리 내의 스토리지로부터 랜덤 액세스 메모리로 재배치하기 위해 적어도 2개의 프로그램 파일 중 적어도 하나를 호출하도록 구성될 수 있다.
본 발명의 이들 및 다른 이점, 측면 및 신규한 특징은 물론 본 발명의 예시적인 실시예의 상세는 이하의 설명 및 도면으로부터 보다 충분히 이해될 것이다.
모바일 전자 장치에서의 소프트웨어 및 펌웨어 중 하나를 업데이트하는 데 이용가능한 업데이트 소프트웨어, 업데이트 소프트웨어와 연계하여 이용가능한 업데이트 소프트웨어 래퍼 등이 제공될 수 있다.
전자 장치는 전자 장치를 업데이트하기 위한 업데이트 정보를 검색하기 위해 서버에 액세스하도록 구성될 수 있다. 전자 장치는 예를 들어 모바일 셀룰러 전화 핸드셋, 개인 휴대 단말기(PDA), 페이저, MP3 플레이어, 디지털 카메라, 기타 등등의 소프트웨어/펌웨어를 갖는 모바일 전자 장치일 수 있다.
업데이트 정보는 모바일 전자 장치에 설치된 펌웨어 및/또는 소프트웨어 컴포넌트를 수정, 변환 또는 변경하는 정보를 포함할 수 있다. 업데이트 정보는 또한 서비스 제공업자, 장치 제조업자 또는 최종-사용자가 원하는 바에 따라, 모바일 전자 장치에 새로운 서비스를 부가할 수 있다. 업데이트 정보는 또한 모바일 전자 장치에 설치된 다른 펌웨어 및/또는 소프트웨어 컴포넌트에 대한 업데이트를 수행할 수 있는 소프트웨어를 수정, 변환 또는 변경하는 정보를 포함할 수 있다.
본 발명의 측면들은 소프트웨어 및/또는 펌웨어의 장애 허용 업데이트 방법에서 찾아볼 수 있다. 소프트웨어 및/또는 펌웨어는 비휘발성 메모리 장치, 예를 들어 플래쉬 메모리 장치에 압축된 형태로 저장될 수 있다. 소프트웨어 및/또는 펌웨어는 프로그램 명령어, 코드, 정보 및/또는 데이터를 포함할 수 있다. 비휘발성 메모리는 재프로그래밍 이전에 소거될 수 있다. 본 발명에 따른 다른 실시예에서, 비휘발성 메모리는 업데이트 및/또는 재프로그래밍 동안에 소거되거나 소거되지 않은 상태에서 덮어쓰기될 수 있다.
본 발명에 따른 실시예에서, 소프트웨어 및/또는 펌웨어의 장애 허용 업데이트 방법은 업데이트 및/또는 재프로그래밍 이벤트 동안에 정전 사고(power failure)가 발생하는 경우에 정보의 손실을 방지하는 단계를 포함할 수 있다. 본 발명에 따른 실시예에서, 소프트웨어 및/또는 펌웨어의 장애 허용 업데이트 방법은 업데이트 및/또는 재프로그래밍 절차 동안에 정전 사고(power failure)가 발생하는 경우에 업데이트 및/또는 재프로그래밍 절차의 연속성을 보장하는 단계를 포함할 수 있다. 본 발명에 따른 실시예에서, 소프트웨어 및/또는 펌웨어의 장애 허용 업데이트 방법은 업데이트 및/또는 재프로그래밍 이벤트 동안에 정전 사고(power failure)가 발생하는 경우에 소프트웨어 및/또는 펌웨어의 손상 및/또는 무효화를 방지하는 단계를 포함할 수 있다.
본 발명에 따른 실시예에서, 전자 장치에서의 업데이트될 소프트웨어 및/또는 펌웨어는 프로그램 코드 및/또는 데이터를 포함할 수 있다. 프로그램 코드 및/또는 데이터는 유닛 또는 블록으로 구성/배열될 수 있다. 블록은 또한 본 명세서 에서 뱅크, 압축된 유닛/블록, 및 압축 해제된 유닛/블록이라고도 칭해질 수 있다.
본 발명에 따른 실시예에서, 업데이트 패키지 생성자(update package generator)는 전자 장치에서의 펌웨어 및/또는 소프트웨어 중 하나를 업데이트하는 데 사용하기 위한 복수의 업데이트 유닛/블록을 포함하는 업데이트 패키지를 생성하도록 구성될 수 있다. 업데이트 블록/유닛은 정보 및/또는 업데이트될 정보의 블록을 업데이트하는 데 사용가능한 실행가능 프로그램 명령어를 포함하는 블록으로서 정의될 수 있다.
업데이트(업데이트 패키지)는 특정한 펌웨어/소프트웨어 버전을 수정 또는 변경하는 데, 예를 들어 보다 새로운 버전으로 업그레이드하는 데 사용될 수 있는 펌웨어/소프트웨어 업데이트를 포함할 수 있다. 펌웨어 및/또는 소프트웨어를 업데이트하는 데 사용되는 업데이트 소프트웨어(업데이트 에이전트)는 전자 장치에 저장되어 있을 수 있다. 업데이트 소프트웨어는 본 명세서에서 업데이트 에이전트라고도 칭해질 수 있다. 업데이트 에이전트는 또한 업데이트 패키지 생성자에서 생성된 업데이트(업데이트 패키지)에 의해서도 업데이트될 수 있다.
본 발명에 따른 실시예에서, 업데이트 패키지는 예를 들어 제1 버전의 펌웨어/소프트웨어("코드")를 제2 버전의 코드로 변환하기 위한 일련의 실행가능 명령어를 포함할 수 있다. 본 발명에 따른 실시예에서, 업데이트 패키지는 또한 서비스 제공업자 또는 최종 사용자가 원하는 바에 따라, 새로운 서비스를 전자 장치에 부가하거나 서비스를 삭제할 수 있다. 업데이트 패키지는 또한 본 명세서에서 축약된 형태로 업데이트라고도 칭해질 수 있다. 모바일 전자 장치에서의 펌웨어/소 프트웨어 중 하나를 업데이트하는 것은 일련의 실행가능 명령어를 수행하여 제1 버전의 펌웨어/소프트웨어("코드")를 제2 버전의 코드로 변환하는 단계를 포함할 수 있다.
본 발명에 따른 실시예에서, 복수의 전자 장치를 지원하도록 구성된 전자 장치 네트워크는 업데이트 패키지 생성자를 포함할 수 있다. 업데이트 패키지 생성자는 복수의 업데이트 유닛/블록을 포함하는 업데이트(업데이트 패키지)를 생성하도록 구성되어 있을 수 있다. 업데이트 유닛/블록은 제1 버전의 펌웨어/소프트웨어("코드")를 제2 버전의 코드로 변환하기 위한 일련의 실행가능 명령어를 포함할 수 있다.
본 발명에 따른 실시예에서, 업데이트 패키지를 생성하는 단계는 기존의/이전의 업데이트 패키지에 존재하는 정보/코드를 새로운 또는 다른(업데이트된) 정보로 덮어쓰기하는 단계를 포함할 수 있다. 예를 들어, 복수의 실행가능 프로그램 명령어를 포함하는 업데이트 패키지는 모바일 전자 장치에서의 펌웨어를, 예를 들어 펌웨어 버전 2에서 펌웨어 버전 3으로 업데이트하기 위해 이전에 생성(및 이용)되었을 수 있다. 이 업데이트는 예를 들어 업데이트 2-3이라고 부를 수 있다. 예를 들어, 전자 장치에서의 펌웨어를 펌웨어 버전 3에서 펌웨어 버전 4로 업데이트(업데이트 3-4)하기 위한 업데이트 패키지를 생성하기 위해서는, 이전의 업데이트 패키지(업데이트 2-3)는 전자 장치에서의 펌웨어를 펌웨어 버전 3에서 펌웨어 버전 4로 업데이트(업데이트 3-4)하기 위한 업데이트 패키지를 경제적으로 생성하기 위해 수정될 수 있다(실행가능 명령어/코드/데이터가 부가, 삭제 및/또는 덮어쓰기될 수 있다). 이와 같이, 업데이트 패키지 생성자는 완전히 새로운 업데이트 패키지를 생성할 필요가 없을 수 있으며, 오히려 업데이트 생성자는 적어도 어떤 새로운/다른 실행가능 명령어를 사용하여 이전의 업데이트 패키지를 재활용하도록 구성될 수 있다.
본 발명에 따른 실시예에서, 업데이트를 생성하는 단계는 새로운 업데이트 패키지를 생성하는 정보/코드를 메모리에 기입 및 구성하는 단계를 포함할 수 있다. 업데이트 패키지는 복수의 업데이트 정보 블록을 사용하여 작성될 수 있다.
본 발명에 따른 실시예에서, 전자 장치 네트워크에서의 업데이트 패키지 생성자에 의해 생성된 업데이트(업데이트 패키지)는 업데이트될 펌웨어/소프트웨어를 갖는 복수의 전자 장치로 전송하기 위해 압축될 수 있다. 압축된 업데이트 패키지는 또한 전자 장치에서 수신된 후에 압축 해제될 수 있다.
도 1은 본 발명의 실시예에 따른 전자 장치, 예를 들어 모바일 핸드셋(107)을 포함하는 예시적인 프로비저닝 시스템(provisioning system)(105)을 나타낸 블록도이다. 전자 장치, 예를 들어 모바일 핸드셋(107)은 통신 링크(177)를 통해 전자 장치 네트워크 내의 전달 서버(delivery server)(127)에 통신 연결될 수 있다. 통신 링크(177)는 유선 또는 무선 통신 링크 중 하나일 수 있다.
본 발명에 따른 실시예에서, 전달 서버(127)는 전자 장치로부터 원격지에 있는 무선/캐리어 전자 장치 네트워크에 배치되어 있을 수 있다. 전달 서버(127)는 또한 통신 링크(167)를 통해 업데이트 스토어(update store)(129)에 통신 연결되어 있을 수 있다. 통신 링크(167)는 유선 또는 무선 통신 링크 중 하나일 수 있다. 업데이트 스토어(129)는 업데이트 패키지 생성자(131)에 의해 생성된 업데이트 패키지의 저장소일 수 있다. 업데이트 스토어(129)는 또한 통신 링크(169)를 통해 업데이트 패키지 생성자(131)에 통신 연결되어 있을 수 있다. 통신 링크(169)는 유선 또는 무선 통신 링크 중 하나일 수 있다.
본 발명에 따른 실시예에서, 전자 장치, 예를 들어 모바일 핸드셋(107)은 비휘발성 메모리(NVM)(109) 및 펌웨어 관리자(159)를 포함할 수 있다. NVM(109)는 예를 들어, 부트 로더(boot loader)(111), 업데이트 에이전트(113), 펌웨어(117), 오퍼레이팅 시스템(OS)(119), 전자 장치 애플리케이션(121) 및 업데이트 패키지(123)를 포함할 수 있다. 업데이트 에이전트(113)는 업데이트 패키지(123)를 이용함으로써 예를 들어, 전자 장치, 예를 들어 모바일 핸드셋(117)의 펌웨어(117), 오퍼레이팅 시스템(119), 및/또는 전자 장치 애플리케이션(121) 중 적어도 하나를 업데이트하기 위한 소프트웨어를 포함할 수 있다. 본 발명에 따른 실시예에서, 업데이트 에이전트(113)도 역시 업데이트될 수 있다. 전자 장치 네트워크에서의 업데이트 패키지 생성자(131)는 또한 업데이트 에이전트(113)를 업데이트하는 데 사용하기 위한 업데이트 패키지, 예를 들어 업데이트 패키지(123)를 생성하도록 구성되어 있을 수 있다.
본 발명에 따른 실시예에서, 업데이트 에이전트(113)는 펌웨어(117), 오퍼레이팅 시스템(119) 및/또는 전자 장치 애플리케이션(121)을 업데이트하기 위해 랜덤 액세스 메모리(RAM) 장치(125)를 임시 업데이트 스토리지/프로세싱 메모리로서 이용하도록 구성되어 있을 수 있다. RAM(125)은 또한 업데이트 에이전트(113)의 업 데이트 동안에 임시 업데이트 스토리지/프로세싱 메모리로서 사용될 수 있다. 업데이트 에이전트(113)는 펌웨어(117), 오퍼레이팅 시스템(119) 및/또는 전자 장치 애플리케이션(121)을 장애-허용(fault-tolerant) 방식으로 업데이트하도록 구성되어 있을 수 있다. 본 발명에 따른 실시예에서, 업데이트 에이전트(113)도 역시 장애 허용 방식으로 업데이트될 수 있다.
본 발명에 따른 실시예에서, 부트 로더(111)는 예를 들어, 시동 또는 재부팅 동안에 실행될 수 있다. 부트 로더(111)는 업데이트 에이전트(113)를 실행할지 여부를 판정할 수 있다. 부트 로더(111)는 또한 업데이트 패키지, 예를 들어 업데이트 패키지(123)가 존재하는지 여부 및 펌웨어(117), OS(119), 전자 장치 애플리케이션(121), 및/또는 업데이트 에이전트(113) 중 하나의 업데이트가 수행되어야 하는지 여부를 판정할 수 있다.
본 발명에 따른 실시예에서, 업데이트 에이전트(113)를 실행할지 여부를 판정하는 일은 예를 들어 부트 로더(111)가 생성된 업데이트 패키지, 예를 들어 업데이트 패키지(123)와 연관된 적어도 하나의 상태 플래그/표시자에 액세스하여 이를 평가함으로써 용이하게 될 수 있다. 본 발명에 따른 실시예에서, 상태 플래그/표시자는 또한 업데이트 에이전트(113)가 업데이트되어야 하는지 여부를 판정하기 위해 부트 로더(111)에 의해 평가될 수 있다. 업데이트가 행해져야 하는 경우, 부트 로더(111)는 예를 들어 업데이트 에이전트(113)가 유효하고 업데이트를 수행하기 위해 사용가능한지 또는 손상되고 업데이트를 수행할 수 없는지를 판정하기 위해 업데이트 에이전트(113)를 평가할 수 있다.
본 발명에 따른 실시예에서, 업데이트 에이전트(113)를 실행해야 하는지 여부는 예를 들어 순환 중복 검사(CRC) 및/또는 체크섬(checksum)을 계산하고 평가함으로써 부트 로더(111)에 의해 판정될 수 있다. CRC 및/또는 체크섬은 부트 로더(111)에 의해 이전에 계산된 기준값과 비교될 수 있다.
본 발명에 따른 실시예에서, 업데이트 에이전트, 예를 들어 업데이트 에이전트(113)의 업데이트 동안에, 업데이트 절차가 중단된 경우, 업데이트 에이전트(113)는 부분적인 업데이트의 상태에 남겨져 있을 수 있다. 부분적으로 업데이트된 업데이트 에이전트는 사용가능하지 않고, 동작 불능이며, 및/또는 손상되어 있을 수 있다. 업데이트 에이전트, 예를 들어 업데이트 에이전트(113)를 동작불능 상태가 되게 하는 것 및/또는 손상시키는 것을 피하기 위해, 업데이트 절차의 개시/수행 이전에 업데이트될 업데이트 에이전트(113)의 백업 복사본이 생성되어, NVM(109)에 저장 및 유지될 수 있다. 상태 플래그/표시자는 또한 업데이트 에이전트의 업데이트가 부분적으로 완료되었음을 부트 로더(111)에 경보/통지하는 데 사용될 수 있고 또한 예를 들어 업데이트가 어디에서 중단되었는지를 나타낼 수 있다.
본 발명에 따른 실시예에서는, 따라서 업데이트 에이전트의 장애 허용(복구가능) 업데이트가 보장될 수 있다. 업데이트 중인 업데이트 에이전트, 예를 들어 업데이트 에이전트(113)가 업데이트 절차 동안에 장애로 인해 동작불능 상태로 되거나 손상된 경우, 업데이트 에이전트의 수정되지 않은(원래의) 백업 복사본이 메모리, 예를 들어 NVM(109)으로부터 복원될 수 있으며, 여기서 업데이트는 예를 들 어 업데이트가 중단된 곳에서 차후에 재개될 수 있다. 재부팅 또는 시동 동안에 부분적으로 업데이트된 또는 부적절하게 업데이트된 업데이트 에이전트가 손상되어 있음 및/또는 동작 불능인 경우, NVM(109)에 저장되어 있는 업데이트 에이전트의 백업 복사본이 부트 로더(111)에 의해 호출될 수 있고, 업데이트 절차가 재개/재실행될 수 있다. 상태 플래그/표시자는 또한 업데이트 에이전트, 예를 들어 업데이트 에이전트(113)가 손상되어 있음 및/또는 동작 불능 상태임을 부트 로더(111)에 경보/통지하는 데 사용될 수 있다.
본 발명에 따른 실시예에서, 부트 로더(111)는 현재의 업데이트 에이전트(113)가 호출되어야 하는지 여부(디폴트 부트스트래핑(default bootstrapping)), 업데이트 에이전트가 업데이트되어야 하는지 여부, 또는 NVM(109) 내의 업데이트 에이전트(113)의 백업 버전이 호출되어야 하는지 여부를 판정하도록 구성되어 있을 수 있다. 이 판정은 상태 정보(상태 플래그/표시자), 예를 들어 업데이트가 수행해져야 하는지 여부 및/또는 업데이트 없는 통상의 시동 동작이 수행되어야 하는지 여부에 기초하여 행해질 수 있다.
본 발명에 따른 실시예에서, 전자 장치는 또한 업데이트 패키지, 예를 들어 업데이트 패키지(123)가 전달 서버(127)로부터 전자 장치로 다운로드된 후의 상태 정보(상태 플래그/표시자) 및 메모리 장소 주소의 설정을 용이하게 해줄 수 있는 핸드오프 에이전트(166)를 포함할 수 있다. 본 발명에 따른 실시예에서, 전자 장치는 또한 다운로드 에이전트(196)를 포함할 수 있다. 다운로드 에이전트(196)는 업데이트 패키지, 예를 들어 업데이트 패키지(123)의 다운로드를 용이하게 해줄 수 있다.
도 2는 예시적인 업데이트 상태 표시자(205)를 나타낸 블록도이다. 업데이트 상태 표시자(205)는 예를 들어 도 1에 도시한 NVM(109) 등의 비휘발성 메모리에 저장될 수 있다. 업데이트 상태 표시자는 업데이트 패키지에 부속되어 있고 및/또는 전자 장치로 다운로드되는 생성된 업데이트 패키지의 일부일 수 있다. 업데이트 상태 표시자(205)는 예를 들어 32 바이트 길이일 수 있다. 업데이트 상태 표시자(205)는 업데이트 패키지 주소(209), 표시자 블록(215), 반환 코드(213), 및 미사용/미지정 부분(211)을 적어도 포함할 수 있다. 업데이트 패키지 주소(209)는 예를 들어 4 바이트 길이일 수 있다. 표시자 블록(215)은 예를 들어 4 바이트 길이일 수 있다. 반환 코드도 역시 예를 들어 4 바이트 길이일 수 있다. 업데이트 상태 표시자(205)의 표시자 블록(215)은 업데이트가 수행되어야 하는지 여부, 업데이트가 부분적으로 완료되어 있는지 여부, 업데이트 에이전트가 손상되어 있는지 여부, 기타 등등을 판정하기 위해 부트 로더(111)에 의해 평가될 수 있는 복수의 상태 플래그/표시자를 포함할 수 있다.
본 발명에 따른 실시예에서, 업데이트 에이전트, 예를 들어 도 1에 도시된 업데이트 에이전트(113)는 업데이트 패키지, 예를 들어 업데이트 패키지(123)를 검색하기 위해 업데이트 패키지 주소(209)를 이용할 수 있다. 검색된 업데이트 패키지(123)는 펌웨어(117), 오퍼레이팅 시스템(119) 및/또는 애플리케이션(121)을 업데이트하는 데 이용될 수 있다. 검색된 업데이트 패키지(123)는 또한 도 1에 도시한 업데이트 에이전트(113)를 업데이트하는 데 이용될 수 있다.
본 발명에 따른 실시예에서, 표시자 블록(215)은 복수의 상태 플래그/표시자, 예를 들어 b0, b1, b2, 및 b3를 포함할 수 있다. 표시자 블록(215)에서의 예시적인 표시자(b0, b1, b2, 및 b3)는 예를 들어 업데이트 에이전트(113)의 호출을 제어하기 위해 부트 로더에 의해 이용될 수 있다. 플래그, 주소, 표시자, 보안 정보, 및 부가의 장치 상태 정보는 또한 대응하는 펌웨어, 소프트웨어, 하드웨어, 및 다른 코드/데이터/정보와 연관된 기능의 상태를 표시하기 위해 업데이트 상태 표시자(205)에서 이용될 수 있다.
본 발명에 따른 예시적인 실시예에서, 예시적인 표시자(b0, b1, b2, 및 b3)는 예를 들어 이하의 예시적인 정의를 제공받을 수 있다.
본 발명에 따른 실시예에서, 표시자 b0는 예를 들어 업데이트 표시자를 포함할 수 있다. 표시자 b0는 핸드오프 에이전트, 예를 들어 도 1에 도시된 핸드오프 에이전트(166)에 의해 설정될 수 있다. 표시자 b0는 업데이트 패키지(123)가 존재하고 또 업데이트가 수행되어야 함을 나타내기 위해 0으로 설정될 수 있다. 표시자 b0에 대한 디폴트/초기 값은 예를 들어 1일 수 있다.
본 발명에 따른 실시예에서, 표시자 b1은 예를 들어 검증 단계 표시자(validation phase indicator)를 포함할 수 있다. 검증 단계가 완료된 경우, 표시자 b1의 값은 복수의 장치 래퍼(device wrapper)에서 0으로 설정될 수 있다. 표 시자 b1에 대한 디폴트/초기 값은 예를 들어 1일 수 있다. 장치 래퍼는 일반 소프트웨어가 특정한 버전의 소프트웨어와 상호작용할 수 있게 해주도록 구성되어 있는 소프트웨어 인터페이스를 포함할 수 있다. 예를 들어, 전자 장치 제조업자 각각은 대응하는 전자 장치 모델 내에 독자적인 특정한 펌웨어를 제공할 수 있다. 전자 장치 업데이트 생성 회사는 제조업자의 전자 장치 내에 제공되어 있는 독점적 또는 루트 코드(proprietary or root code)를 제공받지 않을 수 있다. 전자 장치 업데이트 생성 회사는 제조업자, 예를 들어 업데이트 에이전트에 상관없이 임의의 전자 장치에 대한 특정 업데이트를 수행하도록 구성되어 있는 일반 업데이트 패키지를 생성할 수 있다. 따라서, 장치 래퍼는 일반 업데이트 소프트웨어 및 특정한 전자 장치 펌웨어/소프트웨어의 상호작용/인터페이싱을 가능하게 해주도록 개발된다. 래퍼는 업데이트 에이전트의 맞춤화(customization) 없이 업데이트 에이전트 코드의 재사용을 용이하게 해준다.
본 발명에 따른 실시예에서, 표시자 b2는 예를 들어 변환 1 단계(transform 1 phase)를 나타낼 수 있다. 펌웨어/소프트웨어를 업데이트하는 단계는 업데이트가 완료되기 전에 소프트웨어 전체에 걸쳐 다수의 패스(pass)(업데이트 패스)를 포함할 수 있다. 변환 단계 표시자(transform phase indicator)는 예를 들어 업데이트가 중단되었을 때 또는 전자 장치가 업데이트의 일부로서 재부팅되었을 때 업데이트가 어느 패스 또는 단계를 수행하고 있었는지를 부트 로더(111)에 경보/통지하는 표시자를 포함할 수 있다. 변환 1 단계 표시자, 예를 들어 b2는 장치가 재부팅 되었을 때 또는 업데이트가 중단되었을 때 업데이트가 완료되었거나 소프트웨어 전체에 걸쳐 제1 단계 패스에 관여되어 있었음을 나타낼 수 있다. 변환 1 단계가 완료되었을 때, 표시자 b2의 값은 복수의 장치 래퍼에서 0으로 설정될 수 있다. 표시자 b2에 대한 디폴트/초기 값은 예를 들어 1일 수 있다. 복수의 변환 표시자가 표시자 블록(215)에 존재할 수 있고 또 업데이트를 수행함에 있어서 업데이트가 해야 할 것으로 생각될 수 있는 패스 또는 단계의 수에 따라 표시자 블록(215)에서 평가될 수 있다. 본 발명에 따른 예시적인 실시예에서, 3개의 변환 단계, 예를 들어 사전-프로세싱 단계(예를 들어, 변환 1), 업데이트 단계(예를 들어, 변환 2), 및 사후-프로세싱 단계(예를 들어, 변환 3)이 이용될 수 있다.
본 발명에 따른 실시예에서, 표시자 b3는 예를 들어 업데이트 완료 표시자를 포함할 수 있다. 업데이트가 완료되었을 때, 표시자 b3의 값은 0으로 설정될 수 있다. 표시자 b3에 대한 디폴트/초기 값은 예를 들어 1일 수 있다.
본 발명에 따른 실시예에서, 표시자 b0가 0으로 설정되고 표시자 b3가 1로 설정되어 있을 때, 예를 들어 업데이트가 개시될 수 있다.
본 발명에 따른 실시예에서, 업데이트 절차가 완료될 때, 도 2에 도시한 반환 코드(213)는 부트 로더(111), 업데이트 패키지(123), 업데이트 에이전트(113), 및/또는 업데이트 에이전트(UA) 소프트웨어 개발 킷(SDK)에 의해 제공되는 반환 값으로 설정될 수 있다. UASDK는 장치 래퍼, 즉 업데이트 에이전트(113), 업데이트 패키지(123), 및 부트 로더(111)와 연관된 복수의 함수를 포함하는 라이브러리를 포함할 수 있다. 본 발명에 따른 다른 실시예에서, 복수의 함수는 임의의 특정 소프트웨어와 직접 관련이 없는 잡다한 함수일 수 있지만 예를 들어 잡다한 함수를 수행하는 데 사용되는 정보 및/또는 데이터를 포함할 수 있다.
본 발명에 따른 실시예에서, 도 2에 도시된 업데이트 패키지 주소(209)는 예를 들어 4 바이트(4B)를 포함할 수 있다. 4 바이트의 업데이트 주소 블록(209)은 업데이트 패키지, 예를 들어 업데이트 패키지(123)의 도 1에 도시된 NVM(109)에서의 주소를 저장하는 데 사용될 수 있다.
본 발명의 측면들은 전자 장치를 부팅 및 업데이트하는 3-단계 방법에서 찾아볼 수 있다. 제1 단계 부팅/재부팅(디폴트 부팅/재부팅이라고도 함)에서, 전자 장치는 예를 들어 전자 장치에서의 펌웨어/소프트웨어를 부팅/재부팅하고 통상적인 동작을 개시할 수 있다.
제2 단계 업데이트 부팅/재부팅에서, 전자 장치는 전자 장치에서의 임의의 및/또는 모든 펌웨어/소프트웨어를 부팅/재부팅 및 업데이트할 수 있다. 그렇지만, 업데이트 에이전트(113)가 업데이트 중에 있는 경우, 업데이트 에이전트(113)의 백업 복사본은 업데이트 에이전트를 업데이트하기 전에 예를 들어 NVM(109)에 저장될 수 있다. 제2 업데이트 부팅/재부팅 방법은 장애 허용 방식인데, 그 이유는 업데이트 에이전트(113)의 업데이트 동안에 장애가 발생하는 경우 원래의 업데이트 에이전트(113)의 백업 복사본이 호출될 수 있으므로 파국적인 고장이 회피될 수 있기 때문이다.
제3 단계 업데이트 부팅/재부팅에서, 전자 장치는 전자 장치에서의 임의의 및/또는 모든 펌웨어/소프트웨어를 부팅/재부팅 및 업데이트할 수 있다. 그렇지만, 이 방법에서, 부트 로더(111)는 업데이트 에이전트(113)가 부적절하게 업데이트되었는지를 판정할 수 있다. 따라서, 부팅/재부팅 동안에, 업데이트 에이전트(113)의 백업 복사본이 호출되고 NVM(109)으로부터 RAM(125)으로 압축 해제되며, 파국적인 고장이 회피된다. 제3 업데이트 부팅/재부팅 방법은 장애 허용 방식인데 그 이유는 업데이트 에이전트(113)의 업데이트 동안에 고장이 검출되는 경우, 원래의 업데이트 에이전트(113)의 백업 복사본이 재사용가능 상태로 있으므로 파국적인 고장이 회피되기 때문이다.
본 발명의 측면들은 또한 업데이트 소프트웨어를 포함하는 업데이트 에이전트, 예를 들어 도 1에 도시된 업데이트 에이전트(113)를, 예를 들면 역시 도 1에 도시된 모바일 핸드셋(107) 등의 전자 장치 내에 통합(integrate)시키는 것에서도 찾아볼 수 있다.
본 발명의 측면들은 또한 도 1에 도시된 업데이트 패키지 생성자(131) 등의 업데이트 패키지 생성자에서도 찾아볼 수 있다. 업데이트 패키지 생성자(131)는, 전자 장치 이미지들을 위한 커맨드 라인(command line)을 이용함으로써, 예를 들어 모바일 핸드셋(107) 등의 전자 장치에서의 펌웨어(117), OS(119), 전자 장치 애플리케이션(121), 및 업데이트 에이전트(113)(이 모두는 도 1에 도시되어 있음) 중 적어도 하나를 업데이트시키는 업데이트 패키지를 생성할 수 있다. 커맨드 라인은, 명령을 입력하기 위한 그래픽 인터페이스와는 달리, 프로세싱 장치에 명령을 입력하기 위한 텍스트 인터페이스를 포함할 수 있다. 본 발명은 커맨드 라인 인터페이스에 한정되지 않으며 본 발명에 따른 다른 실시예에서는 그래픽 인터페이스도 포함할 수 있다.
본 발명에 따른 실시예에서, 업데이트 에이전트 소프트웨어 개발 킷(UASDK)은 UASDK 엔진을 포함할 수 있다. UASDK 엔진은 업데이트를 수행하기 위한 최소한의 기능을 포함할 수 있다.
본 발명에 따른 실시예에서, 예를 들어 모바일 핸드셋(107) 등의 예시적인 전자 장치는 이하의 구성 및/또는 사양을 포함할 수 있다. 전자 장치는 예를 들어 NVM(109) 등의 플래쉬 유형 비휘발성 메모리를 포함할 수 있다. 플래쉬 유형 비휘발성 메모리(109)는 예를 들어 Advanced Micro Devices, Inc.에 의해 설계된 AMD DS42585일 수 있다. AMD DS42585는 32 메가비트(4M x 8-비트/2M x 16-비트) 상위 부트 플래쉬(top boot flash) 및 64 KB의 뱅크 크기, 8 KB * 8의 부트 블록 크기, 7 MB(0x0 - 0x700000)의 코드 크기, 및 1 MB(0x1200000 - 0x1300000)의 RAM을 갖는 8 메가비트(1M x 8-비트/512K x 16-비트) 정적 RAM 장치이다.
도 3은 본 발명의 실시예에 따른, 예를 들어 도 1에 도시된 모바일 핸드셋(107) 등의 예시적인 전자 장치에 대한 플래쉬 메모리의 예시적인 메모리 구성(305)을 나타낸 블록도이다.
도 3에 도시된 예시적인 플래쉬 메모리(305)는 전자 장치 부트 코드를 저장하는 메모리 블록(338) 및 미지정 메모리 블록(337)을 포함할 수 있다. 예시적인 플래쉬 메모리(305)는 또한 업데이트 에이전트 실행파일을 저장하기 위한 메모리 블록(336)을 포함할 수 있다. 업데이트 에이전트 실행파일을 저장하기 위한 메모리 블록(336)은 예비 블록(350)과 체크섬 블록(340)으로 더 세분될 수 있다. 예비 블록(350)은 예를 들어 32 바이트 길이일 수 있다. 체크섬 블록(340)은 예를 들어 4 바이트 길이일 수 있다.
예시적인 플래쉬 메모리(305)는 또한 전자 장치 애플리케이션을 저장하기 위한 메모리 블록(335) 및 예비 메모리 뱅크(334)를 포함할 수 있다. 예비 메모리 뱅크(334)는 또한 또하나의 예비 메모리 블록(360)으로 세분될 수 있다. 예비 메모리 블록(360)은 예를 들어 도 2에 도시한 업데이트 상태 표시자(205) 등의 업데이트 상태 표시자를 저장하는 데 사용될 수 있다. 예비 메모리 블록(360)은 예를 들어 32 바이트 길이일 수 있다.
예시적인 플래쉬 메모리(305)는 또한 미지정 메모리 블록(333)을 포함할 수 있다. 미지정 메모리 블록(333)은 또한 업데이트 상태 블록(370)으로 세분될 수 있다. 업데이트 상태 블록(370)은 예를 들어 도 2에 도시한 업데이트 상태 표시자(205) 등의 업데이트 상태 표시자를 저장하는 데 사용될 수 있다. 업데이트 상태 표시자(370)는 예를 들어 32 바이트 길이일 수 있다.
도 3에 도시한 예시적인 플래쉬 메모리(305)는 또한 예를 들어 업데이트 패키지를 수신 및 저장하기 위해 예비된 메모리 블록(332)을 포함할 수 있다. 예시적인 플래쉬 메모리(305)는 또한 또하나의 미지정 메모리 블록(331)을 포함할 수 있다.
본 발명에 따른 실시예에서, 3-단계 부팅 테스트를 명백하게 설명하기 위해, 2개의 업데이트 패키지가 예를 들어 도 3에 도시된 메모리 블록(332)에 플래쉬/저장될 수 있다. 업데이트 패키지는 예를 들어 기본 버전(base version) 및 새 버전으로 변환된 기본 버전을 포함할 수 있다.
본 발명에 따른 실시예에서, 업데이트 상태 블록(360, 370)은 각각 예비 메모리 뱅크(334) 및 미지정 메모리 블록(333)의 마지막 및 처음의 32 바이트를 포함할 수 있다. 그렇지만, 초기화/부팅/재부팅 동안에 데이터/정보에 액세스할 시에 문제가 발생하는 경우, 업데이트 상태 블록(360, 370)은 또하나의 다른 이용가능한 장소로 변경/이동될 수 있다.
본 발명에 따른 실시예에서, 예비 메모리 블록(360) 및 업데이트 상태 블록(370)은 둘다 예를 들어 32 바이트 길이일 수 있다. 이들 블록은 업데이트 에이전트(113)의 상태를 검출하고 그의 초기화를 용이하게 해주는 데 사용되며 또 예를 들어 업데이트 에이전트(113)의 상태를 UASDK, 부트 로더(111) 및/또는 핸드오프 에이전트(166)에 경보/통지하는 데 사용될 수 있다.
본 발명에 따른 실시예에서, 핸드오프 에이전트(166), 펌웨어 관리자(158), 다운로드 에이전트(196), 기타 등등은 처음부터 전자 장치 이미지로 통합되지 않을 수 있으며 그에 따라 예를 들어 JTAG 플래쉬 프로그래밍을 사용하여 업데이트 패키지(123)의 수동 다운로드 동안에 업데이트 패키지(113)가 테스트될 수 있게 해준다. JTAG은 집적 회로를 테스트하는 인터페이스의 표준 사양을 포함한다. JTAG은 집적 회로 기능의 상태의 검출 및 그의 제어를 가능하게 해준다.
본 발명에 따른 실시예에서, 전자 장치 메뉴는 업데이트 상태 표시자 블 록(205) 내의 예시적인 업데이트 표시자 비트(예를 들어, b0, b1, b2 및 b3)를 설정할 수 있게 되어 있을 수 있다. 본 발명에 따른 다른 실시예에서, 핸드오프 에이전트(166)는 업데이트 상태 표시자 블록(205) 내의 예시적인 업데이트 표시자 비트(예를 들어, b0, b1, b2 및 b3)를 설정할 수 있게 되어 있을 수 있다.
본 발명에 따른 실시예에서, 예를 들어 보안 및 인증 구현 등을 위한 베이스라인 구현(baseline implementation)이 업데이트 에이전트(113)를 이용하여 업데이트가능한 유효한 전자 장치 이미지를 생성하는 데 사용될 수 있다. 예를 들면, 베이스라인 구현은 예를 들어 순환 중복 검사(CRC32) 등의 체크섬 구현, 예를 들어 bfzlib 압축 등의 압축 구현, 예를 들어 RSA를 갖는 MD5 등의 보안 구현, 예를 들어 Bitfone Corp.에 의해 개발된 (ARM의) 썸 프로세서(thumb processor)에 대한 예측자(predictor) 등의 예측자 구현, 검사자(surveyor) 구현(업데이트 에이전트 검증 및 업데이트 중단/고장 식별), 힙 모듈(heap module) 구현, 및 유틸리티 인터페이스 구현을 포함할 수 있다.
본 발명에 따른 실시예에서, 업데이트 에이전트(113)의 기능을 테스트하기 위해, 전자 장치는 또한 모든 가능한 전자 장치 특징이 전자 장치에 통합되고 존재하도록 프로그램될 수 있다. 전자 장치 테스트 특징은 펌웨어/소프트웨어의 장애 허용 업데이트의 테스트, 업데이트 에이전트(113)의 장애 허용 업데이트의 테스트, 3-단계 부팅 방법의 테스트 및 썸 예측(thumb prediction) 방법의 테스트를 포함할 수 있다.
본 발명에 따른 실시예에서, 핸드오프 에이전트(166)는 테스트에 이용가능하지 않을 수 있지만, 핸드오프 에이전트 인터페이스 및 장치 래퍼는 이용될 수 있다.
본 발명에 따른 실시예에서, UASDK 라이브러리는 업데이트 에이전트(113)의 기능의 구현을 위해 제공되는 단일의 라이브러리를 포함할 수 있다. 본 발명에 따른 다른 실시예에서, UASDK 라이브러리는 업데이트 에이전트(113)의 기능을 구현하기 위해 제공되는 복수의 애플리케이션-특정 라이브러리를 포함할 수 있다. 베이스라인 업데이트 에이전트 기능 모두는 라이브러리/라이브러리들에는 물론 현재 이용가능한 모든 업데이트 에이전트 플러그-인에도 포함될 수 있다. 기능은 특정한 목표 전자 장치 환경을 위해 컴파일될 수 있다.
본 발명에 따른 실시예에서, UASDK 라이브러리/라이브러리들은 소스 디렉토리 세트(세트들)를 포함할 수 있다. 통합 시에, 업데이트 에이전트(113)를 링크 및 컴파일하도록 구성된 파일들은 전자 장치 인터페이스 및 장치 래퍼를 조정함으로써 선택될 수 있다.
도 4는 본 발명의 실시예에 따른 예시적인 전자 장치에서의 펌웨어(117), 소프트웨어 애플리케이션(121), 오퍼레이팅 시스템(OS)(119) 및 업데이트 에이전트(113) 중 임의의 것의 예시적인 장애 허용 업데이트 방법을 나타낸 흐름도(405)이다.
도 4에 도시된 예시적인 방법은 베이스라인 라이브러리/라이브러리들에 존재하는 UASDK 엔진, 전자 장치 인터페이스 및 장치 래퍼를 사용하여 펌웨어/소프트웨 어를 업데이트하는 데 사용될 수 있다. 이하의 구현/방법은 업데이트 동안에 엔진 프로토타입(engine prototype), 인터페이스 함수, 및 래퍼/드라이브 함수를 어떻게 사용하는지를 나타낸 것이다. 본 발명에 따른 실시예에서, ua_Main_Start() 함수는 목표 펌웨어의 업데이트를 개시하는 예시적인 모듈이다.
본 방법은 시작(블록 401)에서 시작할 수 있다. 본 방법은 펌웨어(117), 하드웨어 컴포넌트, 오퍼레이팅 시스템(OS)(119), 소프트웨어 애플리케이션(121), 및/또는 업데이트 에이전트(113) 중 하나에의 액세스를 초기화하는 단계(블록 440)를 포함할 수 있다. 소프트웨어/펌웨어에의 액세스를 초기화하는 단계는 또한 데이터를 비휘발성 플래쉬 메모리(109)로부터 예를 들어 RAM(125)으로 노출/압축 해제시키는 장치 래퍼 함수에의 액세스를 초기화하는 단계를 포함할 수 있다.
본 방법은 또한 암호화에 액세스하는 단계(블록 441)를 포함할 수 있다. 암호화(암호화 엔진/소프트웨어)에 액세스하는 단계(블록 441)는 예를 들어 261-바이트 공개키, 1024-바이트 공개키, 기타 등등의 공개키에 액세스하는 단계를 포함할 수 있다.
본 방법은 또한 전자 장치의 업데이트를 용이하게 해주는 변수에 액세스하는 단계(블록 442)를 포함할 수 있다. 전자 장치의 업데이트를 용이하게 해주는 데 사용되는 변수에 액세스하는 단계는 예를 들어 UASDK에 의해 사용되는 복수의 전역 변수를 동적으로 할당하는 단계를 포함할 수 있다. void 포인터도 또한 초기화를 위해 UASDK 엔진에 전송될 수 있다. void 포인터는 전체 업데이트에 걸쳐 존속될 수 있다.
본 방법은 또한 장애 허용 업데이트 복원을 용이하게 해주기 위해 인덱스를 계산하는 단계(블록 443)를 포함할 수 있다. 본 방법은 또한 압축된 업데이트 패키지를 비휘발성 메모리(109)로부터 예를 들어 RAM(125)으로 압축 해제하는 단계(블록 444)를 포함할 수 있다. 본 방법은 또한 예를 들어 zlib 압축 플러그-인 등의 압축 구현을 이용하여, 압축된 업데이트 패키지로부터 압축 해제된 업데이트 패키지를 획득하는 단계를 포함할 수 있다. 본 방법은 또한 업데이트가 완료될 때까지 이 구현 내에서 반복될 수 있는 명령어들의 루프(루프 단계에 대해서는 도 5를 참조)를 포함할 수 있다(블록 445). 도 5에 도시된 명령어들의 루프를 완료한 후에, 본 방법은 다음과 같이 계속될 수 있다.
본 방법은 업데이트 동안에 사용하기 위해 할당된 메모리를 해제(free)시키는 단계(블록 446)를 포함할 수 있다. 할당된 메모리를 해제시키는 단계는 또한 예를 들어 순환 중복 검사(CRC) 테이블 또는 체크섬 테이블로부터 메모리를 해제시키는 단계를 포함할 수 있다.
본 방법은 또한 업데이트 동안에 예비해둔(set-aside), 할당된 및/또는 사용된 모든 임시 기입 유닛/블록/뱅크를 플래쉬 소거(flash erase)하는 단계(블록 447)를 포함할 수 있다. 임시 기입 유닛을 플래쉬 소거하는 단계는 또한 플래쉬-소거 명령(flash-erase command)을 발행하는 단계를 포함할 수 있다. 본 방법은 또한 복수의 전역 변수를 위해 할당된 메모리를 해제시키는 단계를 포함할 수 있다. 본 방법은 또한 핸드오프 에이전트(166)에 대한 업데이트 상태 표시자(205)에서의 업데이트 상태 플래그/표시자를 설정하는 단계(블록 448)를 포함할 수 있다.
본 방법은 또한 업데이트 패키지, 예를 들어 도 1에 도시한 업데이트 패키지(123)를 삭제(clean up)하는 단계(블록 449)를 포함할 수 있다. 업데이트 패키지(123)를 삭제하는 단계는 업데이트 동안에 이용된 장치 래퍼 함수들을 프로세싱하는 단계를 포함할 수 있다. 본 방법은 또한 전자 장치를 리셋(reset)시키는 단계(블록 451)를 포함할 수 있다. 전자 장치를 리셋시키는 단계는 또한 전자 장치를 재부팅시키는 단계를 포함할 수 있다. 도 4에 도시된 방법은 블록(402)에서 종료될 수 있다.
도 5는 본 발명의 실시예에 따른 도 4(블록 445)에 도시된 예시적인 전자 장치(도 1에 도시된 모바일 핸드셋(107) 등)의 예시적인 고장 허용 업데이트 방법과 연관된 명령어들의 루프에 대한 부가적인 상세를 나타낸 흐름도(505)이다.
본 방법은 사용자 인터페이스 메시지를 디스플레이하는 단계(블록 540)를 포함할 수 있다. 사용자 인터페이스 메시지를 디스플레이하는 단계는 업데이트를 시작하기 위해 고객-구성 구현(customer-configured implementation)을 사용하는 단계를 포함할 수 있다. 본 방법은 또한 메모리 관리 시스템이 초기화되고 동작 상태에 있는지를 판정하는 단계(블록 541)를 포함할 수 있다.
본 방법은 또한 힙 라이브러리(heap library)를 여는 단계(블록 542)를 포함할 수 있으며, 여기서 업데이트를 실행하기 위한 메모리 환경이 구축될 수 있다. 본 방법은 또한 업데이트 패키지(123)를 압축 해제시켜 원래의 업데이트 패키지(raw update package)에 대한 포인터를 생성하는 단계(블록 543)를 포함할 수 있다. 압축 해제는 Bitfone Corp.의 zlib 압축 해제 구현을 이용하는 단계를 포함할 수 있다. 압축 해제는 또한 RAM(125)에 위치할 수 있는, 업데이트를 위해 이용되는 압축 해제된 업데이트 패키지를 가리키기 위해 생성된 포인터를 이용하는 단계를 포함할 수 있다.
본 방법은 또한 업데이트 패키지(123) 데이터/코드에 대해 RSA 검사를 갖는 MD5 등의 보안 검사를 수행하는 단계(블록 544)를 포함할 수 있다. 본 방법은 또한 체크섬 라이브러리 및/또는 CRC 라이브러리를 초기화하는 단계(블록 545) 및 업데이트 에이전트 엔진을 초기화하는 단계(블록 546)를 포함할 수 있다. 전역 void 포인터 및 할당된 체크섬 포인터는 초기화 동안에 초기화 루틴으로 전달될 수 있다. 전체적인 업데이트 구조(global update structure)도 또한 초기화될 수 있다. 본 발명에 따른 실시예에서, 체크섬 포인터는 전역 void 포인터에 의해 참조될 수 있으며 다른 함수로 전달되지 않을 수 있다.
본 방법은 또한 업데이트된 펌웨어/소프트웨어 이미지를 구축(build)하기 위해 업데이트 에이전트 엔진이 이용할 수 있는 업데이트 패키지(123)를 로드하는 단계(블록 547)를 포함할 수 있다. 업데이트 패키지(123)를 로드하는 단계는 또한 업데이트 패키지 크기를 평가하는 것 및 계산된 체크섬을 평가하는 것 둘다에 의해 업데이트 패키지(123)의 유효성을 검사하는 단계를 포함할 수 있다. 검사자(surveyor)는 예를 들어 최초의 펌웨어 검증 및 업데이트 절차 중단의 식별 둘다를 지원할 수 있다. 검사자는 예를 들어 업데이트 에이전트(113) 또는 부트 로더(111)의 컴포넌트일 수 있다. 비 장애 허용 방식으로 수행되는 통합(integration)의 경우, 최초의 펌웨어 검증은 실행될 수 있지만 업데이트 절차 중단의 식별은 건너뛸 수 있다. 업데이트 절차 중단의 식별을 건너뛰는 것은 검사자와 관련이 있는 장치 래퍼/드라이버 함수를 설정함으로써 달성될 수 있다. 검사자 함수는 나중에 사용될 복원의 인덱스를 반환할 수 있다.
본 방법은 또한 최초의 펌웨어(117)를 검증하고 업데이트를 모니터링하는 단계(블록 548)를 포함할 수 있다. 본 방법은 또한 업데이트 변환(변환 단계 표시자)을 호출하고 포인터 및 복원 인덱스를 전송하는 단계(블록 549)를 포함할 수 있다. 앞서 기술한 명령어들의 루프는 업데이트가 완료될 때까지 필요에 따라 여러번 반복될 수 있다. 도 5에 도시한 방법은 블록(502)에서 종료되고, 여기서 본 방법은 도 4의 블록(446)에서 계속될 수 있다.
본 발명에 따른 실시예에서, 인터페이스 함수는 예를 들어 UASDK에서의 모듈들 간의 지시(direction)를 조정하기 위해 C 파일로 제공될 수 있다. 본 발명에 따른 실시예에서, 전자 장치 통합은 베이스라인 구현, 라이브러리/라이브러리들 및/또는 복수의 프로그램 호출을 이용할 수 있다. 한 구현은 예를 들어 CRC32 등의 베이스라인 순환 중복 검사에 대한 프로그램 호출을 구현하는 것을 포함할 수 있다. 다른 구현은 예를 들어 썸 예측자(thumb predictor)를 링크시키는 것을 포함할 수 있다. 다른 구현은 예를 들어 베이스라인 메모리 유틸리티를 구현하는 것을 포함할 수 있다.
본 발명에 따른 실시예에서, 헤더 파일은 업데이트 동안 차후의 사용을 위해 또 예를 들어 업데이트 패키지 내에 포함시키기 위해 UASDK 라이브러리/라이브러리들로 구현되어야 하는 모든 프로토타입을 포함할 수 있다. UASDK는 기입-플래 쉬(write-flash) 함수 이전에 플래쉬 소거(flash erase) 함수를 호출할 수 있다.
업데이트 에이전트(113)의 비 장애 허용 업데이트를 용이하게 해주기 위해, UASDK 라이브러리/라이브러리들은 컴파일되어 인터페이스 파일 및 장치 래퍼 파일에 링크될 수 있다. 출력은 16 진수 및/또는 평이한 이전 형태일 수 있다. 사용될 진입점은 0x10000일 수 있다. 예를 들어 이하에 나타낸 파일 등의 분산 로드 파일(scatter load file)이 사용될 수 있다.
Figure 112007092126911-PAT00001
업데이트 에이전트(113)의 장애 허용 업데이트의 경우, UASDK 라이브러리/라이브러리들은 컴파일되어 인터페이스 파일 및 장치 래퍼 파일에 링크될 수 있다.
예를 들어 업데이트 에이전트(113) 등의 업데이트 에이전트의 장애 허용 업데이트를 지원하기 위해, 전술한 3-단계 부팅이 이하에서 도 6을 참조하여 기술하는 바와 같이 통합될 수 있다.
도 6은 본 발명의 실시예에 따른 예시적인 전자 장치에서의 업데이트 에이전 트(113)의 예시적인 초기화, 검증 및 장애 허용 업데이트 방법을 나타낸 흐름도(605)이다. 도 6에서, 본 방법은 블록 601에서 시작할 수 있다. 전자 장치, 예를 들어 도 1에 도시된 모바일 핸드셋(107)은 시동, 부팅 또는 재부팅될 수 있다(블록 606). 본 방법은 또한 전자 장치를 초기화하고, 업데이트 상태 표시자, 예를 들어 도 2에 도시한 업데이트 상태 표시자(205)를 평가하며, 예를 들어 도 1에 도시한 업데이트 패키지(123) 등의 업데이트 패키지가 존재하는지 여부를 검출/판정하는 단계(블록 616)를 포함할 수 있다. 업데이트 패키지(123)가 존재하지 않고 및/또는 업데이트가 현재 수행되지 않는 경우, 전자 장치는 통상적인 동작을 개시할 수 있고(블록 676) 절차는 종료 블록(602)에서 종료될 수 있다.
본 발명에 따른 실시예에서, 업데이트 패키지(123)가 업데이트 상태 표시자, 예를 들어 도 2에 도시한 업데이트 상태 표시자(205)의 평가에 기초하여 검출되는 경우, 업데이트 에이전트, 예를 들어 도 1에 도시한 업데이트 에이전트(113)는 검증될 수 있다(블록 626). 업데이트 에이전트(113)가 유효한 것으로, 즉 동작 가능하고 및/또는 손상이 없는 것으로 판정되는 경우, 업데이트는 업데이트 에이전트(113)로의 분기로 진행할 수 있으며(블록 636), 여기서 업데이트가 수행될 수 있다(블록 686). 업데이트의 완료 시에, 전자 장치는 다시 시동 또는 재부팅될 수 있다(블록 606). 전자 장치는 또다시 업데이트 상태 표시자(205)를 평가하고 또다른 업데이트 패키지(123)가 존재하는지 여부를 판정하거나(블록 616) 업데이트가 완료되었는지 여부를 판정할 수 있다. 업데이트 패키지(123)가 존재하지 않는 경우, 업데이트가 완료되어 있는 경우, 및/또는 업데이트가 현재 수행되지 않은 경 우, 전자 장치는 통상적인 동작을 개시할 수 있고(블록 676), 절차는 종료 블록(602)에서 종료할 수 있다.
본 발명에 따른 실시예에서, 업데이트 패키지(123)가 업데이트 상태 표시자, 예를 들어 도 2에 도시된 업데이트 상태 표시자(205)의 평가에 기초하여 검출되는 경우, 업데이트 에이전트, 예를 들어 도 1에 도시한 업데이트 에이전트(113)는 검증될 수 있다(블록 626). 업데이트 에이전트(113)가 유효하지 않은 것으로, 동작 불능 상태인 것으로, 및/또는 손상되어 있는 것으로 판정되는 경우, 이전에 비휘발성 메모리에 저장된 업데이트 에이전트(113)의 백업 복사본 또는 예비 복사본이 액세스되어 호출되고 검증될 수 있다(블록 646). 업데이트 에이전트(113)의 백업 복사본 또는 예비 복사본도 또한 유효하지 않은 것으로, 동작 불능 상태인 것으로, 및/또는 손상되어 있는 것으로 판정되는 경우, 비복원가능 고장이 일어날 수 있고(블록 666) 및/또는 업데이트가 종료 블록(602)에서 종료될 수 있다.
그렇지만, 업데이트 에이전트(113)의 백업 복사본 또는 예비 복사본이 유효한 것으로, 동작 가능한 것으로 및/또는 손상되지 않은 것으로 판정되는 경우, 업데이트는 예비 메모리 유닛/뱅크 내의 업데이트 에이전트(113)의 예비 복사본으로의 분기(블록 656)로 진행할 수 있으며, 여기서 업데이트가 수행될 수 있다(블록 686). 업데이트의 완료 시에, 전자 장치는 또다시 시동 또는 재부팅될 수 있다(블록 666). 전자 장치는 업데이트 상태 표시자(205)를 평가하고 또다른 업데이트 패키지(123)가 존재하는지 여부를 판정할 수 있다(블록 616). 업데이트 패키지(123)가 존재하지 않는 경우, 및/또는 업데이트가 현재 수행되지 않은 경우, 전자 장치 는 통상적인 동작을 개시할 수 있고(블록 676), 절차는 종료 블록(602)에서 종료할 수 있다.
도 7은 본 발명의 실시예에 따른 예시적인 전자 장치, 예를 들어 도 1에 도시된 모바일 핸드셋(107)에 대한 플래쉬 메모리의 예시적인 메모리 구성(705)을 나타낸 블록도이다. 플래쉬 메모리 구성(705)은 전자 장치 부트 코드를 저장하는 메모리 블록(781) 및 미지정 메모리 블록(779)을 포함할 수 있다. 플래쉬 메모리 구성(705)은 또한 업데이트 에이전트(UA) 부트 1을 저장하는 메모리 블록(778) 및 업데이트 에이전트(UA) 부트 2를 저장하는 또하나의 메모리 블록(777)을 포함할 수 있다. 플래쉬 메모리 구성(705)은 또한 UA1 재배치가능 코드를 저장하는 메모리 블록(776)을 포함할 수 있다. UA1 재배치가능 코드를 저장하는 메모리 블록(776)은 또한 서브블록 체크섬(740)을 포함할 수 있다. 체크섬(740)은 예를 들어 4 바이트 길이일 수 있다.
본 발명에 따른 실시예에서, 플래쉬 메모리 구성(705)은 또한 예를 들어 전자 장치 애플리케이션(들)을 저장하는 메모리 블록(775)을 포함할 수 있다. 플래쉬 메모리 구성(705)은 또한 또하나의 UA 부트 1을 저장하는 메모리 블록(774) 및 또하나의 UA 부트 2를 저장하는 메모리 블록(773)을 포함할 수 있다. 플래쉬 메모리 구성(705)은 또한 또하나의 UA1 재배치가능 코드를 저장하는 메모리 블록(772)을 포함할 수 있다.
본 발명에 따른 실시예에서, 메모리 블록(778)에 저장된 UA 부트 1은 예를 들어 메모리 블록(774)에 저장된 UA 부트 1과 동일할 수 있다. 메모리 블록(777) 에 저장된 UA 부트 2는 메모리 블록(773)에 저장된 UA 부트 2와 동일할 수 있다. 메모리 블록(776)에 저장된 UA1 재배치가능 코드는 예를 들어 메모리 블록(772)에 저장된 UA1 재배치가능 코드와 동일할 수 있다.
UA1 재배치가능 코드를 저장하는 메모리 블록(772)은 또한 체크섬(740)을 저장하는 서브블록을 포함할 수 있다. 체크섬(740)은 예를 들어 4 바이트 길이일 수 있다. 플래쉬 메모리 구성(705)은 또한 또하나의 미지정 메모리 블록(771)을 포함할 수 있다.
본 발명에 따른 실시예에서, 메모리 블록(778, 777)에 각각 저장된 및/또는 메모리 블록(774, 773)에 각각 저장된 부트 바이너리 파일 UA 부트 1 및 UA 부트 2는 기능상 유사할 수 있으며 서로 다른 때에 업데이트 에이전트 부트 동작에 관여될 수 있다. 예를 들어, 하나의 바이너리 UA 부트 파일은 업데이트 에이전트 디폴트 시작 장소(예를 들어, 0x100000 등)로부터의 업데이트 에이전트(113)의 부트스트래핑을 수행하도록 구성될 수 있고, 다른 하나의 바이너리 UA 부트 파일은 예비 유닛 장소(예를 들어, 0x670800 등)로부터의 업데이트 에이전트(113)의 부트스트래핑을 수행하도록 구성될 수 있다. 따라서, UA 부트 1 및 UA 부트 2 바이너리 파일은 서로 다른 메모리 주소를 갖는 서로 다른 메모리 장소에 저장되어 있고 그곳으로부터 호출되는 업데이트 에이전트에 대해서만 동일한 기능을 수행할 수 있다.
본 발명에 따른 실시예에서, UA 부트 1은 업데이트 에이전트 재배치가능 코드를 초기화하고 이를 업데이트 에이전트 기입 유닛으로부터 RAM, 예를 들어 도 1에 도시된 RAM(125)으로 재배치하도록 구성될 수 있다.
본 발명에 따른 실시예에서, UA 부트 2는 업데이트 에이전트 재배치가능 코드를 초기화하고 이를 업데이트 에이전트 예비 기입 유닛으로부터 RAM, 예를 들어 도 1에 도시된 RAM(125)으로 재배치하도록 구성될 수 있다.
본 발명에 따른 실시예에서, 업데이트 에이전트 재배치가능 코드는, 부트스트랩 코드, 예를 들어 UA 부트 1 및/또는 UA 부트 2와 함께, 전자 장치에서의 업데이트 에이전트(113)의 장애 허용 업데이트를 개시하기 바로 전에 장애 허용 업데이트를 보장하기 위해 0x100000 근방의 디폴트 장소로부터 예비 유닛(예비 메모리 장소)로 복사될 수 있다.
도 8은 본 발명의 실시예에 따른 예시적인 전자 장치에 대한 업데이트 에이전트(113)의 업데이트 동안의 플래쉬 메모리의 예시적인 메모리 구성(805)을 나타낸 블록도이다. 플래쉬 메모리 구성(805)은 전자 장치 부트 코드를 저장하는 메모리 블록(888) 및 미지정 메모리 블록(887)을 포함할 수 있다. 플래쉬 메모리 구성(805)은 또한 소거된(erased) 메모리 블록(886)을 포함할 수 있다. 플래쉬 메모리 구성(805)은 또한 전자 장치 애플리케이션(들)을 저장하는 메모리 블록(885)을 포함할 수 있다. 플래쉬 메모리 구성(805)은 또한 UA 부트 1을 저장하는 메모리 블록(884) 및 또하나의 UA 부트 2를 저장하는 메모리 블록(883)을 포함할 수 있다. 플래쉬 메모리 구성(805)은 또한 UA1 재배치가능 코드를 저장하는 메모리 블록(882)을 포함할 수 있다. UA1 재배치가능 코드를 저장하는 메모리 블록(882)은 또한 체크섬(840)을 저장하는 서브블록을 포함할 수 있다. 체크섬(840)은 예를 들어 4 바이트 길이일 수 있다. 플래쉬 메모리 구성(805)은 또한 또하나의 미지정 메모리 블록(881)을 포함할 수 있다.
도 9는 본 발명의 실시예에 따른 예시적인 전자 장치에 대한 업데이트 에이전트(113)의 업데이트 절차의 완료 이후의 플래쉬 메모리의 예시적인 메모리 구성(905)을 나타낸 블록도이다. 플래쉬 메모리 구성(905)은 전자 장치 부트 코드를 저장하는 메모리 블록(996) 및 미지정 메모리 블록(995)을 포함할 수 있다. 플래쉬 메모리 구성(905)은 업데이트된 업데이트 에이전트를 저장하는 메모리 블록(994)을 포함할 수 있다. 플래쉬 메모리 구성(905)은 또한 전자 장치 애플리케이션(들)을 저장하는 메모리 블록(993)을 포함할 수 있다. 플래쉬 메모리 구성(905)은 또한 예비 유닛 메모리 블록(992)을 포함할 수 있다. 플래쉬 메모리 구성(905)은 또한 또하나의 미지정 메모리 블록(991)을 포함할 수 있다.
본 발명에 따른 실시예에서, 갱신된 업데이트 에이전트(113)는 업데이트된 업데이트 에이전트(113)에 대한 추가의 업데이트를 지원하기 위해 UA 부트 1 및 UA 부트 2와 연관되어 있는 채로 있을 수 있다.
본 발명에 따른 실시예에서, 3-단계 부팅 방법에 대한 변동을 통합시키기 위해, 이하에 설명하는 바와 같이 한 쌍의 업데이트 에이전트 분산 로드 파일을 수정함으로써 전자 장치 이미지가 구축될 수 있다.
이하의 예시적인 제1 분산 로드 파일은 출력으로서 이용될 수 있는 2개의 바이너리 파일을 참조할 수 있다. 링크 시에, 사용되는 진입점은 0x10000일 수 있다. 출력 파일은 예를 들어 배치 파일을 실행시킬 시에 사용될 수 있다. 디버깅을 위해, ELF(executable and linking format) 파일도 또한 이용될 수 있다.
Figure 112007092126911-PAT00002
이하의 예시적인 제2 분산 로드 파일은 또한 출력으로서 이용될 수 있는 2개의 바이너리 파일을 참조할 수 있다. 링크 시에, 사용되는 진입점은 0x670800일 수 있다. 출력 파일은 예를 들어 배치 파일을 실행시킬 시에 사용될 수 있다. 디버깅을 위해, ELF(executable and linking format) 파일도 또한 이용될 수 있다.
Figure 112007092126911-PAT00003
3개의 바이너리 파일을 하나의 업데이트 에이전트 실행가능 바이너리 파일로 만들기 위해, 3개의 바이너리 파일이 병합될 수 있다. 본 발명에 따른 실시예에서, 다수의 바이너리 파일을 병합시키기 위해 예시적인 유틸리티 도구(tool)가 이용될 수 있다. 이하는 본 발명에 따른 실시예에서 병합을 달성하기 위해 사용될 수 있는 예시적인 명령이다.
Figure 112007092126911-PAT00004
본 발명에 따른 실시예에서, 업데이트 에이전트의 유효성은 업데이트 에이전트를 호출하기 전에 검사될 수 있다. 업데이트 에이전트의 유효성 검사를 지원하기 위해, 체크섬 계산이 업데이트 에이전트 바이너리 이미지에서의 체크섬 장소에 부가될 수 있다. 본 발명에 따른 실시예에서, 체크섬을 이미지 파일에 포함시키기 위해 예시적인 유틸리티 도구가 이용될 수 있다. 이하의 예시적인 명령(들)이 이용될 수 있다.
Figure 112007092126911-PAT00005
본 발명에 따른 실시예에서, 예시적인 유틸리티 도구가 전술한 바와 같이 바이너리 파일들을 병합시키고 또 업데이트 에이전트 바이너리 코드에 대한 체크섬을 포함시키기 위해 배치 파일로서 이용될 수 있다. 배치 파일을 실행시키기 위해, 업데이트 에이전트 바이너리 파일에 대한 체크섬을 포함하는 첨부 파일이 적절한 디렉토리로 복사될 수 있다.
본 발명에 따른 실시예에서, 부트 로더(111)는 업데이트 에이전트의 업데이트 상태를 검출할 수 있고 또한 업데이트 에이전트(113)를 검증할 수 있다. 이와 유사하게, 순환 중복 검사(예를 들어, CRC32) 기반 체크섬 계산 코드도 또한 그 계산을 수행하기 위해 전자 장치 이미지 구축 환경에 포함될 수 있다.
전자 장치 이미지에 대한 부가의 구축(build) 명령은 또한 현재의 전자 장치 이미지를 생성한 후에 이용될 수 있다. 구축 명령은 업데이트 에이전트(113)와 예를 들어 전자 장치 이미지의 병합을 용이하게 해줄 수 있다.
본 발명이 어떤 실시예들을 참조하여 기술되어 있지만, 당업자라면 본 발명의 범위를 벗어나지 않고 여러가지 변경이 행해질 수 있고 또 균등물이 대용될 수 있음을 잘 알 것이다. 게다가, 본 발명의 범위를 벗어나지 않고 특정한 상황 또는 자료를 본 발명의 개시 내용에 적합하게 하기 위해 많은 수정이 행해질 수 있다. 따라서, 본 발명이 개시된 특정한 실시예에 한정되지 않고 또 본 발명이 첨부된 청구항들의 범위 내에 속하는 모든 실시예들을 포함하는 것으로 보아야 한다.
도 1은 본 발명의 실시예에 따라 전달 서버(delivery server)에 연결되어 통신하는 전자 장치를 포함하는 예시적인 프로비저닝 시스템(provisioning system)을 나타낸 블록도.
도 2는 본 발명의 실시예에 따라 업데이트 패키지 주소, 표시자 블록, 반환 코드, 및 미사용/미지정 부분을 적어도 포함하는 예시적인 업데이트 상태 컴포넌트를 나타낸 블록도.
도 3은 본 발명의 실시예에 따른 예시적인 전자 장치의 예시적인 메모리 구성을 나타낸 블록도.
도 4는 본 발명의 실시예에 따른 예시적인 전자 장치에서의 업데이트 에이전트의 예시적인 장애 허용(fault tolerant) 업데이트 방법을 나타낸 흐름도.
도 5는 본 발명의 실시예에 따른 도 4에 도시된 예시적인 전자 장치에서의 업데이트 에이전트의 예시적인 장애 허용 업데이트 방법의 일부분을 나타낸 흐름도.
도 6은 본 발명의 실시예에 따른 예시적인 전자 장치에서의 업데이트 에이전트의 예시적인 3-단계 업데이트 방법을 나타낸 흐름도.
도 7은 본 발명의 실시예에 따른 예시적인 전자 장치에 대한 예시적인 메모리 구성을 나타낸 블록도.
도 8은 본 발명의 실시예에 따른 예시적인 전자 장치에 대한 예시적인 메모리 구성을 나타낸 블록도.
도 9는 본 발명의 실시예에 따른 예시적인 전자 장치에 대한 예시적인 메모리 구성을 나타낸 블록도.

Claims (14)

  1. 모바일 전자 장치에서의 소프트웨어 및 펌웨어 중 하나를 업데이트하는 데 이용가능한 업데이트 소프트웨어를 저장하는 기록 매체로서,
    상기 전자 장치에서의 업데이트될 소프트웨어 및 펌웨어 중 하나가 업데이트될 수 있는지를 판정하기 위해 소프트웨어 및 펌웨어 중 상기 하나를 검사(survey) 및 검증(validate)하도록 구성되어 있는 소프트웨어 컴포넌트
    를 포함하며,
    상기 소프트웨어 컴포넌트는 또한 업데이트 중단(update interruption)을 식별하도록 구성되어 있는 것인 업데이트 소프트웨어를 저장하는 기록 매체.
  2. 제1항에 있어서, 업데이트 중단을 식별하는 것은 장애 허용 업데이트를 제공하고 또 중단된 업데이트가 그 중단이 일어난 곳에서 재개(re-initiate)될 수 있게 해주는 것인 업데이트 소프트웨어를 저장하는 기록 매체.
  3. 모바일 전자 장치에서의 소프트웨어 및 펌웨어 중 하나를 업데이트하기 위해 업데이트 소프트웨어와 연계하여 이용가능한 업데이트 소프트웨어 래퍼(update software wrapper)를 저장하는 기록 매체로서,
    상기 업데이트 소프트웨어 래퍼는 전자 장치 특정 소프트웨어와 애플리케이션 특정 소프트웨어 간의 상호작용을 용이하게 해주도록 구성되어 있는 것인 업데 이트 소프트웨어 래퍼를 저장하는 기록 매체.
  4. 제3항에 있어서, 전자 장치 특정 소프트웨어는 사전 결정된 제조업자의 전자 장치에서 동작하도록 구성된 소프트웨어를 포함하는 것인 업데이트 소프트웨어 래퍼를 저장하는 기록 매체.
  5. 제3항에 있어서, 애플리케이션 특정 소프트웨어는 전자 장치와 무관한 특정 기능을 수행하도록 구성된 소프트웨어를 포함하는 것인 업데이트 소프트웨어 래퍼를 저장하는 기록 매체.
  6. 제3항에 있어서, 전자 장치 전용 펌웨어 및 소프트웨어 및 특정한 제조업자의 전자 장치와 무관한 애플리케이션 특정 전용 업데이트 소프트웨어 중 하나와 인터페이스하는 소프트웨어를 더 포함하는 업데이트 소프트웨어 래퍼를 저장하는 기록 매체.
  7. 제3항에 있어서, 상기 업데이트 소프트웨어 래퍼는 메모리 모듈의 적어도 하나의 컴포넌트에 대해 메모리 기입 함수 이전에 메모리 소거 함수를 수행하도록 구성되어 있는 것인 업데이트 소프트웨어 래퍼를 저장하는 기록 매체.
  8. 제3항에 있어서, 상기 업데이트 소프트웨어 래퍼는 상태 정보, 업데이트 변 수 및 업데이트 함수(update function) 중 적어도 하나를 관리 및 조정하도록 구성되어 있는 것인 업데이트 소프트웨어 래퍼를 저장하는 기록 매체.
  9. 비휘발성 메모리 구성에 저장된 적어도 2개의 프로그램 파일을 포함하는 모바일 전자 장치로서,
    상기 적어도 2개의 프로그램 파일은 상기 모바일 전자 장치를 부팅시키는 데 사용가능한 코드 및 데이터 중 적어도 하나를 포함하며,
    상기 적어도 2개의 프로그램 파일은 업데이트될 소프트웨어의 상태에 따라 메모리 내의 서로 다른 장소로부터 관련 부팅 명령어를 호출하도록 구성되어 있는 것인 모바일 전자 장치.
  10. 제9항에 있어서, 상기 적어도 2개의 프로그램 파일은 바이너리 파일인 것인 모바일 전자 장치.
  11. 제9항에 있어서, 상기 적어도 2개의 프로그램 파일은 서로 다른 때에 부팅 동작을 수행하도록 구성되어 있는 것인 모바일 전자 장치.
  12. 제9항에 있어서, 상기 적어도 2개의 프로그램 파일 중 하나는 비휘발성 메모리 내의 디폴트 시작 장소로부터 업데이트 소프트웨어를 부팅시키도록 구성되어 있고,
    상기 적어도 2개의 프로그램 파일 중 다른 하나는 비휘발성 메모리 내의 예비 백업 장소로부터 업데이트 소프트웨어를 부팅시키도록 구성되어 있는 것인 모바일 전자 장치.
  13. 제9항에 있어서, 상기 적어도 2개의 프로그램 파일 각각은 상기 모바일 전자 장치에 존재하는 업데이트 소프트웨어의 장애 허용 업데이트의 개시 이전에 장애 허용을 제공하기 위해 디폴트 장소로부터 예비 백업 장소로 복사되는 부가의 재배치가능 코드 블록과 연관되어 있는 것인 모바일 전자 장치.
  14. 제9항에 있어서, 상기 모바일 전자 장치를 부팅시키는 소프트웨어를 더 포함하고,
    상기 부팅시키는 소프트웨어는 부팅, 프로세싱 및 업데이트 중 하나를 위해 업데이트될 업데이트 소프트웨어 및 관련 재배치가능 코드 블록을 초기화하고 비휘발성 메모리 내의 스토리지로부터 랜덤 액세스 메모리로 재배치하기 위해 상기 적어도 2개의 프로그램 파일 중 적어도 하나를 호출하도록 구성되어 있는 것인 모바일 전자 장치.
KR1020077029993A 2003-09-03 2004-09-01 전자 장치에서의 3-단계 부팅 프로세스 KR101003888B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US50036403P 2003-09-03 2003-09-03
US60/500,364 2003-09-03

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020067004343A Division KR100880783B1 (ko) 2003-09-03 2004-09-01 전자 장치에서의 3-단계 부팅 프로세스

Publications (2)

Publication Number Publication Date
KR20080008425A true KR20080008425A (ko) 2008-01-23
KR101003888B1 KR101003888B1 (ko) 2010-12-30

Family

ID=34272945

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020067004343A KR100880783B1 (ko) 2003-09-03 2004-09-01 전자 장치에서의 3-단계 부팅 프로세스
KR1020077029993A KR101003888B1 (ko) 2003-09-03 2004-09-01 전자 장치에서의 3-단계 부팅 프로세스

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020067004343A KR100880783B1 (ko) 2003-09-03 2004-09-01 전자 장치에서의 3-단계 부팅 프로세스

Country Status (4)

Country Link
US (1) US8196130B2 (ko)
EP (1) EP1660996A2 (ko)
KR (2) KR100880783B1 (ko)
WO (1) WO2005024628A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8893110B2 (en) 2006-06-08 2014-11-18 Qualcomm Incorporated Device management in a network
US9081638B2 (en) 2006-07-27 2015-07-14 Qualcomm Incorporated User experience and dependency management in a mobile device
KR20160100391A (ko) * 2013-12-20 2016-08-23 노르딕 세미컨덕터 에이에스에이 업데이트가능한 집적 회로 무선장치

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263503B1 (en) 1999-05-26 2001-07-17 Neal Margulis Method for effectively implementing a wireless television system
US8266657B2 (en) 2001-03-15 2012-09-11 Sling Media Inc. Method for effectively implementing a multi-room television system
US7409685B2 (en) 2002-04-12 2008-08-05 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
EP1584016A4 (en) * 2003-01-13 2009-03-11 Hewlett Packard Development Co MOBILE COMBINER HAVING THE CAPACITY TO UPDATE ITS UPDATE AGENT
US20050010811A1 (en) * 2003-06-16 2005-01-13 Zimmer Vincent J. Method and system to support network port authentication from out-of-band firmware
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7392420B2 (en) * 2003-09-29 2008-06-24 International Business Machines Corporation Automated error recovery of a licensed internal code update on a storage controller
US20050124332A1 (en) * 2003-12-08 2005-06-09 Clark David R. Mobile device programming system and method
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
US9998802B2 (en) 2004-06-07 2018-06-12 Sling Media LLC Systems and methods for creating variable length clips from a media stream
US7769756B2 (en) 2004-06-07 2010-08-03 Sling Media, Inc. Selection and presentation of context-relevant supplemental content and advertising
US8099755B2 (en) 2004-06-07 2012-01-17 Sling Media Pvt. Ltd. Systems and methods for controlling the encoding of a media stream
US7975062B2 (en) 2004-06-07 2011-07-05 Sling Media, Inc. Capturing and sharing media content
US7917932B2 (en) 2005-06-07 2011-03-29 Sling Media, Inc. Personal video recorder functionality for placeshifting systems
WO2005122025A2 (en) 2004-06-07 2005-12-22 Sling Media, Inc. Personal media broadcasting system
US8346605B2 (en) 2004-06-07 2013-01-01 Sling Media, Inc. Management of shared media content
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
KR101075676B1 (ko) * 2004-11-20 2011-10-21 삼성전자주식회사 이동통신 단말기에 소프트웨어를 설치하는 장치 및 방법
TW200622873A (en) * 2004-12-30 2006-07-01 Benq Corp Firmware updating methods and apparatuses
US7930693B2 (en) * 2005-04-04 2011-04-19 Cisco Technology, Inc. Method and system for accessing and launching a java based applet as a locally installed application
JP4764056B2 (ja) * 2005-04-14 2011-08-31 キヤノン株式会社 画像処理装置、制御プログラムの更新方法、およびプログラム
WO2007005790A2 (en) * 2005-06-30 2007-01-11 Sling Media, Inc. Firmware update for consumer electronic device
KR100747901B1 (ko) * 2005-07-18 2007-08-08 주식회사 팬택앤큐리텔 이동통신단말기의 실행 파일 압축 방법
US7958502B2 (en) * 2005-08-05 2011-06-07 Hewlett-Packard Development Company, L.P. Efficient generator of update packages for mobile devices that uses non-ELF preprocessing
JP4810172B2 (ja) * 2005-09-29 2011-11-09 日本電気株式会社 制御装置及びバージョンアップ方法並びにプログラム
CN101326492B (zh) * 2005-10-06 2013-07-17 雷德本德有限公司 用于更新包括压缩版本的内容的方法和系统
EP1860514B1 (de) 2006-05-26 2009-12-23 Siemens Aktiengesellschaft Anordnung mit mindestens zwei über Kommunikationsmittel verbundenen Automatisierungsgeräten
US9696980B2 (en) * 2006-10-24 2017-07-04 Medapps, Inc. Method for remote provisioning of electronic devices by overlaying an initial application image with a retrieved application image
US8966235B2 (en) * 2006-10-24 2015-02-24 Kent E. Dicks System for remote provisioning of electronic devices by overlaying an initial image with an updated image
KR100860753B1 (ko) * 2007-01-03 2008-09-29 삼성전자주식회사 펌웨어 업그레이드를 위한 장치 및 방법
US8726259B2 (en) * 2007-04-09 2014-05-13 Kyocera Corporation System and method for preserving device parameters during a FOTA upgrade
US8477793B2 (en) 2007-09-26 2013-07-02 Sling Media, Inc. Media streaming device with gateway functionality
EP2195737B1 (en) * 2007-10-03 2018-07-11 ABB Schweiz AG Method for reprogramming applications in embedded devices and related device
US20110090086A1 (en) * 2007-10-22 2011-04-21 Kent Dicks Systems for personal emergency intervention
US8350971B2 (en) 2007-10-23 2013-01-08 Sling Media, Inc. Systems and methods for controlling media devices
US8332838B2 (en) * 2007-11-14 2012-12-11 Continental Automotive Systems, Inc. Systems and methods for updating device software
KR100927446B1 (ko) * 2007-11-28 2009-11-19 웹싱크 주식회사 이동통신단말기의 트랜잭션 단위 펌웨어 업그레이드 방법및 이를 이용한 펌웨어 업그레이드 시스템
EP2229625B1 (en) * 2007-12-13 2011-08-31 Telefonaktiebolaget LM Ericsson (publ) Updating firmware of an electronic device
US8060609B2 (en) 2008-01-04 2011-11-15 Sling Media Inc. Systems and methods for determining attributes of media items accessed via a personal media broadcaster
CN101571807A (zh) * 2008-04-28 2009-11-04 鸿富锦精密工业(深圳)有限公司 具有固件的系统及其启动方法
US20090320012A1 (en) * 2008-06-04 2009-12-24 Mediatek Inc. Secure booting for updating firmware over the air
US8667279B2 (en) 2008-07-01 2014-03-04 Sling Media, Inc. Systems and methods for securely place shifting media content
US20100001960A1 (en) * 2008-07-02 2010-01-07 Sling Media, Inc. Systems and methods for gestural interaction with user interface objects
JP2010039512A (ja) * 2008-07-31 2010-02-18 Fujitsu Ltd ソフトウェア更新装置、およびソフトウェア更新プログラム
US8689209B2 (en) * 2008-08-04 2014-04-01 Red Bend Ltd. Updating content without using a mini operating system
US8381310B2 (en) 2009-08-13 2013-02-19 Sling Media Pvt. Ltd. Systems, methods, and program applications for selectively restricting the placeshifting of copy protected digital media content
US20100064332A1 (en) * 2008-09-08 2010-03-11 Sling Media Inc. Systems and methods for presenting media content obtained from multiple sources
US8667163B2 (en) 2008-09-08 2014-03-04 Sling Media Inc. Systems and methods for projecting images from a computer system
US9191610B2 (en) 2008-11-26 2015-11-17 Sling Media Pvt Ltd. Systems and methods for creating logical media streams for media storage and playback
US8438602B2 (en) 2009-01-26 2013-05-07 Sling Media Inc. Systems and methods for linking media content
US9104521B2 (en) * 2009-03-16 2015-08-11 Tyco Electronics Subsea Communications Llc System and method for remote device application upgrades
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
US8171148B2 (en) 2009-04-17 2012-05-01 Sling Media, Inc. Systems and methods for establishing connections between devices communicating over a network
US8406431B2 (en) 2009-07-23 2013-03-26 Sling Media Pvt. Ltd. Adaptive gain control for digital audio samples in a media stream
US9479737B2 (en) 2009-08-06 2016-10-25 Echostar Technologies L.L.C. Systems and methods for event programming via a remote media player
US8799408B2 (en) 2009-08-10 2014-08-05 Sling Media Pvt Ltd Localization systems and methods
US9525838B2 (en) 2009-08-10 2016-12-20 Sling Media Pvt. Ltd. Systems and methods for virtual remote control of streamed media
US8532472B2 (en) 2009-08-10 2013-09-10 Sling Media Pvt Ltd Methods and apparatus for fast seeking within a media stream buffer
US9565479B2 (en) * 2009-08-10 2017-02-07 Sling Media Pvt Ltd. Methods and apparatus for seeking within a media stream using scene detection
US8966101B2 (en) * 2009-08-10 2015-02-24 Sling Media Pvt Ltd Systems and methods for updating firmware over a network
US9160974B2 (en) 2009-08-26 2015-10-13 Sling Media, Inc. Systems and methods for transcoding and place shifting media content
US8314893B2 (en) * 2009-08-28 2012-11-20 Sling Media Pvt. Ltd. Remote control and method for automatically adjusting the volume output of an audio device
US9015225B2 (en) 2009-11-16 2015-04-21 Echostar Technologies L.L.C. Systems and methods for delivering messages over a network
US8799485B2 (en) 2009-12-18 2014-08-05 Sling Media, Inc. Methods and apparatus for establishing network connections using an inter-mediating device
US8626879B2 (en) * 2009-12-22 2014-01-07 Sling Media, Inc. Systems and methods for establishing network connections using local mediation services
US9178923B2 (en) 2009-12-23 2015-11-03 Echostar Technologies L.L.C. Systems and methods for remotely controlling a media server via a network
US9275054B2 (en) 2009-12-28 2016-03-01 Sling Media, Inc. Systems and methods for searching media content
US8856349B2 (en) 2010-02-05 2014-10-07 Sling Media Inc. Connection priority services for data communication between two devices
US8869138B2 (en) 2011-11-11 2014-10-21 Wyse Technology L.L.C. Robust firmware update with recovery logic
CN101924607B (zh) * 2010-08-27 2013-01-23 华为终端有限公司 基于固件空中传输技术的固件处理方法、装置及系统
US8650439B2 (en) * 2010-12-07 2014-02-11 Samsung Electronics Co., Ltd. Apparatus and method for fault tolerant FOTA update
US20120173713A1 (en) * 2010-12-30 2012-07-05 Brocade Communication Systems, Inc. Resources monitoring and recovery
US8595716B2 (en) * 2011-04-06 2013-11-26 Robert Bosch Gmbh Failsafe firmware updates
CN103761122A (zh) * 2013-12-31 2014-04-30 青岛歌尔声学科技有限公司 一种芯片固件的升级方法和系统
EP2916227A1 (en) * 2014-03-04 2015-09-09 Agco Corporation Machine error and failure mitigation
US9575741B2 (en) * 2014-03-20 2017-02-21 Google Technology Holdings LLC Methods and devices for wireless device-to-device software upgrades
US20160085513A1 (en) * 2014-09-19 2016-03-24 Microsoft Corporation Loading Code in Self-Contained Applications
DE102014116321A1 (de) * 2014-11-10 2016-05-12 Harting Electric Gmbh & Co. Kg Update einer Firmware
CN104750531A (zh) * 2015-04-15 2015-07-01 安徽师范大学 一种嵌入式系统在线刷新程序的方法
CN105005717A (zh) * 2015-07-04 2015-10-28 深圳市乐迪电子有限公司 Usbs固件升级及加密的方法
US10846099B2 (en) * 2016-10-07 2020-11-24 Blackberry Limited Selecting a boot loader on an electronic device
US10635428B2 (en) * 2018-03-30 2020-04-28 Arista Networks, Inc. System and method for in-service update of software
US10678535B2 (en) 2018-05-23 2020-06-09 Dell Products L.P. Method for updating firmware of unassigned drives
US10846179B2 (en) 2018-11-05 2020-11-24 Arista Networks, Inc. Hitless repair for network device components
US11301231B2 (en) 2019-04-05 2022-04-12 Arista Networks, Inc. Dynamic run time programming of hardware tables
JP7395962B2 (ja) * 2019-10-31 2023-12-12 株式会社リコー 情報処理装置、更新制御方法、更新制御プログラム、及び情報処理システム
US11231878B2 (en) * 2019-10-31 2022-01-25 Arm Ip Limited Content modification control
US11645086B2 (en) * 2019-11-20 2023-05-09 Jpmorgan Chase Bank, N.A. System and method for implementing a filesystem agent management solution

Family Cites Families (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1341310C (en) 1988-07-15 2001-10-23 Robert Filepp Interactive computer network and method of operation
EP0449530A3 (en) 1990-03-23 1993-09-01 Canon Kabushiki Kaisha A memory medium having a control program memorized therein and an information processing method and an information processing apparatus using the same medium
FR2666425A1 (fr) 1990-08-31 1992-03-06 Gemplus Card Int Procede et dispositif de mise a jour d'informations dans une memoire et leur utilisation dans les cartes a memoire.
IT1254937B (it) 1991-05-06 1995-10-11 Aggiornamento dinamico di memoria non volatile in un sistema informatico
US5878256A (en) 1991-10-16 1999-03-02 International Business Machine Corp. Method and apparatus for providing updated firmware in a data processing system
US5596738A (en) 1992-01-31 1997-01-21 Teac Corporation Peripheral device control system using changeable firmware in a single flash memory
US5261055A (en) 1992-02-19 1993-11-09 Milsys, Ltd. Externally updatable ROM (EUROM)
US5623604A (en) 1992-11-18 1997-04-22 Canon Information Systems, Inc. Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral
US5835933A (en) 1993-02-19 1998-11-10 Intel Corporation Method and apparatus for updating flash memory resident firmware through a standard disk drive interface
JPH06274384A (ja) 1993-03-22 1994-09-30 N T T Data Tsushin Kk 実行ファイル差分抽出/更新装置及び実行ファイル差分抽出方法
US5418837A (en) * 1993-07-30 1995-05-23 Ericsson-Ge Mobile Communications Inc. Method and apparatus for upgrading cellular mobile telephones
US5666293A (en) 1994-05-27 1997-09-09 Bell Atlantic Network Services, Inc. Downloading operating system software through a broadcast channel
US5598534A (en) 1994-09-21 1997-01-28 Lucent Technologies Inc. Simultaneous verify local database and using wireless communication to verify remote database
US5778440A (en) 1994-10-26 1998-07-07 Macronix International Co., Ltd. Floating gate memory device and method for terminating a program load cycle upon detecting a predetermined address/data pattern
JPH08202626A (ja) 1995-01-31 1996-08-09 Isuzu Motors Ltd メモリ制御装置
US5699275A (en) 1995-04-12 1997-12-16 Highwaymaster Communications, Inc. System and method for remote patching of operating code located in a mobile unit
US5838614A (en) 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6126327A (en) 1995-10-16 2000-10-03 Packard Bell Nec Radio flash update
US6279153B1 (en) 1995-10-16 2001-08-21 Nec Corporation Multi-user flash ROM update
US5845077A (en) 1995-11-27 1998-12-01 Microsoft Corporation Method and system for identifying and obtaining computer software from a remote computer
US5960445A (en) 1996-04-24 1999-09-28 Sony Corporation Information processor, method of updating a program and information processing system
US5790974A (en) 1996-04-29 1998-08-04 Sun Microsystems, Inc. Portable calendaring device having perceptual agent managing calendar entries
US6308061B1 (en) 1996-08-07 2001-10-23 Telxon Corporation Wireless software upgrades with version control
US6112024A (en) 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US6088759A (en) 1997-04-06 2000-07-11 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US6163274A (en) 1997-09-04 2000-12-19 Ncr Corporation Remotely updatable PDA
KR100448932B1 (ko) 1997-09-23 2004-12-17 삼성전자주식회사 플래시 롬 라이터 장치 및 그 제어 방법
US6064814A (en) 1997-11-13 2000-05-16 Allen-Bradley Company, Llc Automatically updated cross reference system having increased flexibility
KR100258969B1 (ko) 1997-11-20 2000-06-15 윤종용 무선 통신기기의 펌웨어 업그레이드 방법 및 기지국에서의펌웨어 업그레이드 지원방법
US6311322B1 (en) 1998-03-09 2001-10-30 Nikon Corporation Program rewriting apparatus
US6038636A (en) 1998-04-27 2000-03-14 Lexmark International, Inc. Method and apparatus for reclaiming and defragmenting a flash memory device
US6073206A (en) 1998-04-30 2000-06-06 Compaq Computer Corporation Method for flashing ESCD and variables into a ROM
US6105063A (en) 1998-05-05 2000-08-15 International Business Machines Corp. Client-server system for maintaining application preferences in a hierarchical data structure according to user and user group or terminal and terminal group contexts
US6438585B2 (en) 1998-05-29 2002-08-20 Research In Motion Limited System and method for redirecting message attachments between a host system and a mobile data communication device
US6112197A (en) 1998-05-29 2000-08-29 Oracle Corporation Method and apparatus for transmission of row differences
IL125846A0 (en) 1998-08-19 1999-04-11 Emony Incremental program update
US6512919B2 (en) * 1998-12-14 2003-01-28 Fujitsu Limited Electronic shopping system utilizing a program downloadable wireless videophone
IL129947A (en) 1999-05-13 2003-06-24 Tadiran Telecom Business Syste Method and apparatus for downloading software into an embedded system
US7502759B2 (en) 1999-08-30 2009-03-10 Digimarc Corporation Digital watermarking methods and related toy and game applications
US6671818B1 (en) * 1999-11-22 2003-12-30 Accenture Llp Problem isolation through translating and filtering events into a standard object format in a network based supply chain
US7130807B1 (en) * 1999-11-22 2006-10-31 Accenture Llp Technology sharing during demand and supply planning in a network-based supply chain environment
KR100658865B1 (ko) * 2000-01-26 2006-12-15 엘지전자 주식회사 수신기의 프로그램 업그레이드 장치 및 방법
US20010042099A1 (en) 2000-02-02 2001-11-15 Doongo Technologies, Inc. Apparatus and methods for optimizing traffic volume in wireless email communications
KR20010100328A (ko) 2000-04-22 2001-11-14 강원희 통신망을 이용한 휴대폰 소프트웨어 업그레이드 방법
KR20020034228A (ko) 2000-10-31 2002-05-09 구자홍 Ota 서비스 제공자를 이용한 이동 단말기의 소프트웨어업그레이드 방법 및 시스템
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US7082549B2 (en) * 2000-11-17 2006-07-25 Bitfone Corporation Method for fault tolerant updating of an electronic device
WO2002044892A2 (en) 2000-11-28 2002-06-06 4Thpass Inc. Method and system for maintaining and distributing wireless applications
US6959436B2 (en) 2000-12-15 2005-10-25 Innopath Software, Inc. Apparatus and methods for intelligently providing applications and data on a mobile device system
US8176137B2 (en) * 2001-01-31 2012-05-08 Accenture Global Services Limited Remotely managing a data processing system via a communications network
US20020116261A1 (en) 2001-02-20 2002-08-22 Moskowitz Paul A. Systems and methods that facilitate an exchange of supplemental information in association with a dispensing of fuel
US6594548B2 (en) 2001-04-12 2003-07-15 Hani Bagnordi Portable digital assistant
US20020157090A1 (en) 2001-04-20 2002-10-24 Anton, Jr. Francis M. Automated updating of access points in a distributed network
US20020156863A1 (en) 2001-04-23 2002-10-24 Luosheng Peng Apparatus and methods for managing caches on a gateway
US6760908B2 (en) 2001-07-16 2004-07-06 Namodigit Corporation Embedded software update system
US7143407B2 (en) 2001-07-26 2006-11-28 Kyocera Wireless Corp. System and method for executing wireless communications device dynamic instruction sets
US20030061384A1 (en) 2001-09-25 2003-03-27 Bryce Nakatani System and method of addressing and configuring a remote device
US6892316B2 (en) * 2001-11-02 2005-05-10 International Business Machines Corporation Switchable resource management in clustered computer system
US7409435B1 (en) * 2002-02-28 2008-08-05 Sprint Communications Company L.P. Integrated services hub binary file trial run process
JP3928852B2 (ja) * 2002-04-08 2007-06-13 ソニー・エリクソン・モバイルコミュニケーションズ株式会社 移動体通信端末
US7340736B2 (en) * 2002-08-22 2008-03-04 Hewlett-Packard Development Company, L.P. Electronic device with an update agent that employs preprocessing techniques for update
US7367027B1 (en) * 2002-08-22 2008-04-29 Hewlett-Packard Development Company, L.P. System for generating efficient and compact update packages
US20040093597A1 (en) * 2002-11-05 2004-05-13 Rao Bindu Rama Firmware update system for facilitating firmware update in mobile handset related applications
US7984435B2 (en) * 2002-11-13 2011-07-19 Hewlett-Packard Development Company, L.P. Update system employing reference software to reduce number of update packages
US7480907B1 (en) * 2003-01-09 2009-01-20 Hewlett-Packard Development Company, L.P. Mobile services network for update of firmware/software in mobile handsets
EP1584016A4 (en) * 2003-01-13 2009-03-11 Hewlett Packard Development Co MOBILE COMBINER HAVING THE CAPACITY TO UPDATE ITS UPDATE AGENT
US7254811B2 (en) * 2003-04-17 2007-08-07 Ntt Docomo, Inc. Update system and method for updating a scanning subsystem in a mobile communication framework
KR100606757B1 (ko) * 2003-05-30 2006-07-31 엘지전자 주식회사 무선망을 이용한 단말기의 실행코드 업데이트 방법
WO2004109510A2 (en) * 2003-06-04 2004-12-16 Bitfone Corporation Network having customizable generators of software updates and mobile electronic devices having customizable updating software
US7134050B2 (en) * 2003-08-15 2006-11-07 Hewlett-Packard Development Company, L.P. Method and system for containing software faults

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8893110B2 (en) 2006-06-08 2014-11-18 Qualcomm Incorporated Device management in a network
US9081638B2 (en) 2006-07-27 2015-07-14 Qualcomm Incorporated User experience and dependency management in a mobile device
KR20160100391A (ko) * 2013-12-20 2016-08-23 노르딕 세미컨덕터 에이에스에이 업데이트가능한 집적 회로 무선장치

Also Published As

Publication number Publication date
US8196130B2 (en) 2012-06-05
EP1660996A2 (en) 2006-05-31
WO2005024628A2 (en) 2005-03-17
KR100880783B1 (ko) 2009-02-02
KR20060064660A (ko) 2006-06-13
KR101003888B1 (ko) 2010-12-30
WO2005024628A3 (en) 2005-05-26
US20050114852A1 (en) 2005-05-26

Similar Documents

Publication Publication Date Title
KR100880783B1 (ko) 전자 장치에서의 3-단계 부팅 프로세스
US7971199B1 (en) Mobile device with a self-updating update agent in a wireless network
US8539471B2 (en) Updating firmware of an electronic device
KR101143112B1 (ko) 페일세이프 방식으로 맞춤 소프트웨어 영상 갱신을불휘발성 저장 장치에 적용하는 시스템 및 방법
US8719810B2 (en) Program upgrade system and method for over the air-capable mobile terminal
KR100750132B1 (ko) 부팅, 소프트웨어 자동 업데이트 및 에러 복원 방법과 그시스템, 그 방법을 기록한 컴퓨터 판독 가능한 기록매체
US20110004871A1 (en) Embedded electronic device and firmware updating method thereof
US20070226334A1 (en) Mobile terminal and software update method
CN112416406B (zh) 终端设备升级方法、装置、终端设备和介质
CN112463191A (zh) 一种文件更新方法及装置、设备、存储介质
CN107797818A (zh) 应用程序升级方法及装置
KR100986487B1 (ko) 고장 허용 갱신 에이전트를 구비한 모바일 핸드세트
CN110806884A (zh) 一种操作系统故障的修复方法和装置
CN110007935B (zh) 一种程序升级的处理方法、装置及设备
CN113867768A (zh) 操作系统处理方法、装置、电子设备及存储介质
KR20070038681A (ko) 펌웨어 업데이트 방법 및 시스템
CN113326078A (zh) 一种动态更新软件开发工具包的方法、设备及存储介质
US20070079279A1 (en) Embedded device with software registry
CN113535468B (zh) Dsp芯片的启动方法和启动装置
CN113766554A (zh) 获取WiFi校准数据的方法、装置及WiFi设备校准测试系统
CN117608619A (zh) Uefi bios固件的更新方法、更新系统、电子设备及存储介质
KR100321999B1 (ko) 스크립트를이용한프로그램패치방법
CN114296770A (zh) 差分升级方法、装置、设备及可读存储介质
CN117492794A (zh) 固件更新方法和装置
CN114090028A (zh) 系统升级方法、电子设备及存储介质

Legal Events

Date Code Title Description
A107 Divisional application of patent
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
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: 20131209

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee