KR100911604B1 - 무선 통신 장치의 시스템 소프트웨어 다운로드 관리시스템 및 방법 - Google Patents

무선 통신 장치의 시스템 소프트웨어 다운로드 관리시스템 및 방법 Download PDF

Info

Publication number
KR100911604B1
KR100911604B1 KR1020047000723A KR20047000723A KR100911604B1 KR 100911604 B1 KR100911604 B1 KR 100911604B1 KR 1020047000723 A KR1020047000723 A KR 1020047000723A KR 20047000723 A KR20047000723 A KR 20047000723A KR 100911604 B1 KR100911604 B1 KR 100911604B1
Authority
KR
South Korea
Prior art keywords
code section
code
section
new
software update
Prior art date
Application number
KR1020047000723A
Other languages
English (en)
Other versions
KR20040022463A (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
Priority claimed from US09/916,460 external-priority patent/US7159214B2/en
Priority claimed from US09/917,026 external-priority patent/US7328007B2/en
Priority claimed from US09/916,900 external-priority patent/US7027806B2/en
Priority claimed from US09/927,131 external-priority patent/US7143407B2/en
Priority claimed from US09/969,305 external-priority patent/US7386846B2/en
Application filed by 키오세라 와이어리스 코포레이션 filed Critical 키오세라 와이어리스 코포레이션
Publication of KR20040022463A publication Critical patent/KR20040022463A/ko
Application granted granted Critical
Publication of KR100911604B1 publication Critical patent/KR100911604B1/ko

Links

Images

Classifications

    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • 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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/35Protecting application or service provisioning, e.g. securing SIM application provisioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/22Processing or transfer of terminal data, e.g. status or physical capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/22Processing or transfer of terminal data, e.g. status or physical capabilities
    • H04W8/24Transfer of terminal data
    • H04W8/245Transfer of terminal data from a network towards a terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/18Processing of user or subscriber data, e.g. subscribed services, user preferences or user profiles; Transfer of user or subscriber data
    • H04W8/20Transfer of user or subscriber data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/02Terminal devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Stored Programmes (AREA)
  • Transceivers (AREA)
  • Telephonic Communication Services (AREA)
  • Communication Control (AREA)
  • Sub-Exchange Stations And Push- Button Telephones (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Information Transfer Between Computers (AREA)
  • Circuits Of Receivers In General (AREA)
  • Debugging And Monitoring (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Selective Calling Equipment (AREA)

Abstract

무선 통신 장치의 시스템 소프트웨어 다운로드 동작을 관리하기 위한 시스템 및 방법이 제공된다. 이 방법은, 시스템 소프트웨어를 실행하고, 런-타임 엔진을 발진시키며, 동적 명령 세트를 처리하고, 그리고 동적 명령 세트 처리에 따라, 복구 상태 모니터링, 백업, 치밀화, 그리고 업데이트 순서지정을 포함한 그룹으로부터 선택된 관리 기능들을 이용하여, 에어 링크 인터페이스를 통해 수신한 시스템 소프트웨어 업데이트의 다운로드를 관리하는 단계들을 포함한다.

Description

무선 통신 장치의 시스템 소프트웨어 다운로드 관리 시스템 및 방법{SYSTEM AND METHOD FOR THE MANAGEMENT OF WIRELESS COMMUNICATIONS DEVICE SYSTEM SOFTWARE DOWNLOADS IN THE FIELD}
본 발명은 무선 통신 장치에 관한 것으로서, 특히, 복구 상태 모니터링, 백업, 치밀화, 그리고 업데이트 순서지정같은 다양한 시스템 소프트웨어 현장 다운로드 관리 기능들을 관리하기 위해 동적 명령 세트를 이용하는 시스템 및 방법에 관한 것이다.
당 분야에 이미 존재하는 전화에 대한 소프트웨어 업데이트를 배포하는 것은 아주 흔한 일이다. 이 업데이트들은 전화가 제작되어 공공에게 배포된 후 소프트웨어적으로 발견되는 문제점에 관한 것들일 수 있다. 일부 업데이트는 전화에 새로운 특징의 이용을 포함할 수 있고, 서비스 제공자에 의해 제공되는 서비스의 이용을 포함할 수도 있다. 또다른 업데이트는 지역적 문제를 포함할 수 있고, 캐리어에 관련된 문제일 수도 있다. 예를 들어, 어떤 영역에서, 캐리어의 네트워크 배치는 핸드셋 상에 에어 링크 인터페이스 조건을 부과할 수 있어서, 부적절한 채널 검색, 부적절한 통화 종료, 부적절한 오디오, 등처럼 예기치 않은 거동을 핸드셋이 나타낼 수 있다.
이러한 업데이트에 대한 전통적인 접근법은 무선 장치, 전화, 핸드셋 등으로 불리는 무선 통신 장치를 가장 가까운 캐리어 소매점/서비스센터에 리콜시키거나 이러한 변화 처리를 위해 제작자에게 리콜시키는 것이다. 이러한 업데이트에 관련된 비용은 비싸고 순이익을 잠식할 수 있다. 더욱이, 고객이 불편하고 짜증내기 쉽다. 가끔씩 실용적 해법은 고객에게 새 전화를 발급해주는 것이다.
무선 통신 장치는 여러 다른 고객 응용분야에 대해 여러 다른 가입자 서비스로 다수의 환경에서 사용된다. 따라서, 무선 장치의 소프트웨어가 서비스 개선을 위해 업그레이드될 수 있다하더라도, 업그레이드가 모든 사용자에 대해 균일한 개선을 제공하지는 않을 것이다.
무선 통신 장치 소프트웨어가 저렴하면서도 고객측면에서 편리하게 업그레이드될 수 있다면 바람직할 것이다.
상당한 시간동안 고객이 전화를 사용할 수 없는 불편함없이 무선 통신 장치 소프트웨어가 업그레이드될 수 있다면 바람직할 것이다.
무선 통신 장치 소프트웨어가 최소한의 기술 서비스 시간만으로, 서비스 센터에 통신 장치를 보낼 필요없이 업그레이드될 수 있다면 바람직할 것이다.
시스템 소프트웨어를 업데이트할 때 시스템 소프트웨어의 특정 코드 섹션만이 교체될 필요가 있도록, 무선 장치 시스템 소프트웨어가 코드 섹션들로 구분될 수 있다면 바람직할 것이다. 이 코드 섹션들이 에어 링크를 통해 무선 장치에 전달될 수 있다면 또한 바람직할 것이다.
시스템 소프트웨어의 현장 업데이트를 도울 수 있는 동적으로 로딩되는 명령 세트로 무선 장치가 동작될 수 있다면 바람직할 것이다.
업데이트 상태 모니터링, 키 코드 섹션 백업, 메모리 치밀화 실행, 그리고 업데이트 저장 과정 순서지정을 통해 이 동적 명령 세트가 업데이트 오류로부터 무선 장치를 보호할 수 있다면 바람직할 것이다.
무선 통신 장치 소프트웨어 업데이트는 가장 좋은 제품과 사용자 경험을 고객에게 제공한다. 사업상의 고비용 요인은 소프트웨어 업데이트를 위한 핸드셋 리콜을 포함한다. 이 업데이트는 사용자에게 추가적 서비스를 제공하기 위해 필요할 수도 있고, 제작 후 전화 사용시 발견되는 문제점을 해결하기 위해 필요할 수도 있다. 본 발명은 핸드셋 소프트웨어를 에어 링크 인터페이스를 통해 실용적으로 업그레이드할 수 있게 한다. 특히, 본 발명은 무선 통신 장치로 하여금 동적 명령 세트를 실행하게 한다. 이 동적 명령 세트는 무선 장치의 시스템 소프트웨어와 시스템 데이터를 "지능형으로" 또는 "조건부로" 업그레이드시킨다. 더욱이, 동적 명령 세트는 업데이트 처리가 성공적으로 완료되었는 지를 무선 장치가 결정할 수 있게 한다. 업그레이드 섹션이 비동작중임을 발견할 경우에 대비하여 동적 명령 세트로 인해 키 코드 섹션을 저장할 수 있다. 동적 명령 세트는 메모리 치밀화와 저장 순서지정을 또한 실행한다.
따라서, 무선 통신 장치에서 시스템 소프트웨어 다운로드 동작을 관리하기 위한 방법이 제공된다. 이 방법은, 시스템 소프트웨어를 실행하고, 런-타임 엔진을 발진시키며, 동적 명령 세트를 처리하고, 그리고 동적 명령 세트 처리에 따라, 복구 상태 모니터링, 백업, 치밀화, 그리고 업데이트 순서지정 중에서 선택된 관리 기능들을 이용하여 에어 링크 인터페이스를 통해 수신된 시스템 소프트웨어의 다운로드를 관리하는 단계들로 구성된다.
상술한 복구 상태 모니터링, 백업, 치밀화, 그리고 업데이트 순서지정 관리 기능들의 세부사항과, 무선 통신 장치에서 시스템 소프트웨어 다운로드 동작을 관리하기 위한 시스템의 세부사항이 아래에 제시된다.
도 1은 전체 무선 장치 소프트웨어 관리 시스템의 블록도표.
도 2는 에어 링크 인터페이스를 통해 명령 세트의 설치를 강조한, 소프트웨어 관리 시스템의 블록도표.
도 3은 무선 통신 장치에서 동적 명령 세트를 실행하기 위한 본 발명의 시스템을 도시하는 블록도표.
도 4는 무선 장치 메모리의 블록도표.
도 5는 도 3의 코드 섹션 어드레스 테이블을 보여주는 표.
도 6은 도 3의 심벌 라이브러리의 상세한 도면.
도 7은 도 3의 심벌 오프셋 어드레스 테이블을 보여주는 표.
도 8a와 8b는 런-타임 엔진에 의해 액세스된 동작 코드(op-code)의 도면.
도 9는 무선 통신 장치의 시스템 소프트웨어 다운로드 동작을 관리하기 위한 본 발명에 따른 시스템을 설명하기 위해 제시되는 도 1-8b의 특징들을 포함한 블록도표.
도 10은 동적 명령 세트의 동적 명령 세트 복구 상태 모니터링 매니저 태양을 특징으로 하는 도 9의 시스템에 대한 블록도표.
도 11은 도 9의 일례의 복구 상태 테이블을 설명하는 도면.
도 12는 동적 명령 세트의 동적 명령 세트 백업 매니저 태양을 특징으로 하는 도 9의 시스템에 대한 블록도표.
도 13은 동적 명령 세트의 동적 명령 세트 치밀화 매니저 태양을 특징으로 하는 도 9의 시스템에 대한 블록도표.
도 14는 동적 명령 세트의 동적 명령 세트 업데이트 순서지정 매니저 태양을 특징으로 하는 도 9의 시스템에 대한 블록도표.
도 15 a와 15b는 무선 통신 장치의 동적 명령 세트를 실행하기 위한 본 발명의 방법을 도시하는 순서도.
도 16은 일례의 동적 명령 세트 동작의 순서도.
도 17은 일례의 동적 명령 세트 동작의 순서도.
도 18은 일례의 동적 명령 세트 동작의 순서도.
도 19는 일례의 동적 명령 세트 동작의 순서도.
도 20은 일례의 동적 명령 세트 동작의 순서도.
도 21은 무선 통신 장치 내 시스템 소프트웨어 다운로드 동작을 관리하기 위한 본 발명에 따른 방법을 설명하는 순서도.
도 22는 발명에 따른 복구 상태 모니터링 태양을 강조한 도 21의 세부사항 순서도.
도 23은 발명에 따른 백업 태양을 강조한 도 21의 세부사항 순서도.
도 24는 발명의 치밀화 태양을 강조한 도 21의 세부사항 순서도.
도 25는 발명의 업데이트 순서지정 태양을 강조한 도 21의 세부사항 순서도.
* 본원 기재내용 중 "현장"이라는 표현은 영문의 "field"를 번역한 용어로서, 제작 후 사용자에게 이미 배포된 상태를 의미하는 용어이다. *
아래에 이어지는 실시예의 일부분이 과정, 단계, 로직 블록, 코드, 처리공정, 그리고 무선 장치 마이크로프로세서나 메모리 내 데이터 비트의 동작을 표현하는 다른 심벌을 들어 설명된다. 이 표현들은 데이터 처리 분야에 통상의 지식을 가진 자들에 의해 사용되는 수단이다. 과정, 마이크로프로세서 실행 단계, 데이터 아이템, 애플리케이션, 로직 블록, 처리공정 등은 요망 결과를 이끄는 단계들이나 명령들의 사리에 맞는 시퀀스로 간주된다. 이 단계들은 물리적 양의 물리적 조작을 필요로하는 단계들이다. 일반적으로, 반드시 그러한 것은 아니지만, 이 양들은 저장, 전송, 조합, 비교, 마이크로프로세서 기반 무선 장치의 조작이 가능한 전기/자기 신호의 형태를 취한다. 비트, 값, 요소, 심벌, 캐릭터, 데이터 아이템, 수치 등으로 이 신호들을 명명하는 것은 대중적으로 널리 사용되기 때문에 편리한 것으로 인식되고 있다. 메모리같은 물리적 소자들이 언급되는 데, 이들은 버스나 다른 전기적 연결을 통해 다른 물리적 소자들에 연결된다. 이 물리적 소자들은 로직 처리공정이나 애플리케이션과 상호작용할 수 있다고 간주될 수 있고, 따라서, 로직 동작에 "연결"된다. 예를 들어, 메모리는 추가적인 로직 동작에 코드를 저장허간 액 세스할 수 있고, 애플리케이션은 실행을 위해 메모리로부터 코드 섹션을 호출할 수 있다. 더욱이, 소프트웨어 애플리케이션은 데이터 아이템을 이용하여 명령을 실행할 수 있다.
그러나, 이 용어들이 적절한 물리적 양에 관련된 것으로서, 이 양들에 적용된 편리한 라벨에 지나지 않음을 명심하여야 한다. 다음의 설명으로부터 명백하겠지만, 본 발명을 통해, "처리", "연결", "변환", "디스플레이", 또는 "프람프트", "결정", "디스플레이", "인식", "비교", "대체(교체)", "어드레스(해결처리)", "불러오기", 등같은 용어들을 이용한 설명은 컴퓨터 시스템의 레지스터와 메모리 내의 물리적 양으로 표현되는 데이터를 무선 장치 메모리나 레지스터, 또는 그 외 다른 이러한 정보 저장, 전송, 또는 디스플레이 장치 내의 물리적 양으로 표현되는 다른 데이터로 조작하고 변환하는 무선 장치 마이크로프로세서 시스템의 동작들을 의미한다.
도 1은 전체 무선 장치 소프트웨어 관리 시스템(100)의 블록도표이다. 본 발명의 시스템 소프트웨어 조직은 아래에 상세하게 제시되며, 소프트웨어 관리 시스템(100)의 일반적 개관을 따른다. 일반 시스템(100)은 시스템 소프트웨어 업데이트 및 명령 세트(프로그램)의 전달 과정과, 무선 장치에서 전달된 소프트웨어의 설치 과정을 소개한다. 시스템 소프트웨어 업데이트와 패치 매니저 런-타임 명령(PMRTI)(명령 세트나 동적 명령 세트로 알려짐)은 핸드셋 제작자에 의해 생성된다. 시스템 소프트웨어는 심벌 라이브러리로 조직된다. 심벌 라이브러리는 코드섹션들로 배열된다. 심벌 라이브러리가 업데이트되어야 할 때, 소프트웨어 업데이트(102)가 한개 이상의 코드 섹션으로 전달된다. 소프트웨어 업데이트는 이미 배포된 무선 장치에 송출되며, 그 무선 통신 장치(104)의 소프트웨어 업데이트(102)는 잘 알려진 기존의 에어, 데이터, 또는 메시지 전송 프로토콜을 이용하여 기지국(106)으로부터 별도의 통신들로 전송된다. 발명은 어떤 특정 전송 포맷에 국한되지 않는다. 왜냐하면, 무선 통신 장치가 시스템 소프트웨어 및 PMRTI 업데이트를 수신하기 위해 어떤 가용한 에어 전송 프로토콜을 처리하도록 용이하게 수정될 수 있기 때문이다.
이 시스템 소프트웨어는 여러 다른 서브시스템들의 집합체로 보일 수 있다. 코드 객체들은 이 추상적 서브시스템들 중 하나에 강력하게 연결될 수 있고, 결과적인 집합체가 심벌 라이브러리의 라벨을 달 수 있다. 이는 코드 베이스의 로직 파괴를 제공하고, 소프트웨어 패치와 처방(fixes)이 심벌 라이브러리 중 하나에 관련될 수 있다. 대부분의 경우에, 단일 업데이트가 한개나 두개의 심벌 라이브러리에 관련된다. 나머지 코드 베이스, 나머지 심벌 라이브러리는 불변으로 유지된다.
심벌 라이브러리의 표현은 코드와 상수를 취급하기 위한 메커니즘을 제공한다. 다른 한편, 판독-기록(Read-Write) 데이터는 모든 라이브러리에 대해 RAM 기반 데이터를 내포한 독자적이고 개별적인 판독-기록 라이브러리에 부합한다.
무선 장치(104)에 의해 수신되었을 때, 전송된 코드 섹션이 반드시 처리되어야 한다. 무선 장치는 비휘발성 메모리의 특정 코드 섹션을 덮어쓴다. 비휘발성 메모리(108)는 파일 시스템 섹션(FSS)(110)과 코드 저장 섹션(112)을 포함한다. 코드 섹션은 FSS(110)의 점유를 최소화시키기 위해 전송 전에 일반적으로 압축된다. 업데이트된 코드 섹션이 판독-기록 데이터를 동반하는 경우가 자주 있으며, 이는 각각의 심벌 라이브러리에 대해 모든 판독-기록 데이터를 내포한 또다른 종류의 심벌 라이브버리다. 시스템 소프트웨어가 실행 중일 때 휘발성 판독-기록 RAM(114)에 로딩되지만, 판독-기록 데이터는 비휘발성 메모리(108)에 저장될 필요가 항상 있으며, 따라서, 무선 장치가 리셋될 때마다 판독-기록 데이터가 휘발성 판독-기록 RAM(114)에 로딩될 수 있다. 이는 판독-기록 데이터가 휘발성 판독-기록 RAM으로 로딩되는 첫 번째를 포함한다. 아래에 상세하게 설명되겠으나, 판독-기록 데이터는 패치 매니저 코드 섹션으로 배열되는 것이 일반적이다.
시스템(100)은 가상 테이블의 개념을 포함한다. 이러한 테이블을 이용하여, 한 코드 섹션의 심벌 라이브러리들이 시스템 소프트웨어의 다른 부분(다른 코드 섹션)을 파괴(교체)하지 않으면서 패치(교체)될 수 있다. 가상 테이블은 효율성을 위해 휘발성 판독-기록 RAM(114)으로부터 실행된다. 코드 섹션 어드레스 테이블과 심벌 오프셋 어드레스 테이블은 가상 테이블이다.
업데이트된 코드 섹션들이 무선 장치(104)에 의해 수신되어 FSS(110)에 저장된다. 무선 장치 사용자 인터페이스(UI)는 통상적으로 새 소프트웨어가 가용함을 사용자에게 알릴 것이다. 사용자 인터페이스 프람프트에 따라 사용자는 이 통지를 확인하고 패치나 업데이트 동작을 신호한다. 대안으로, 업데이트 동작이 자동적으로 시행된다. 업데이트 처리가 실행됨에 따라 무선 장치가 표준 통신 작업을 수행하지 못할 수가 있다. 패치 매니저 코드 섹션은 휘발성 판독-기록 RAM(114)에 또한 로딩되는 비휘발성 판독-기록 드라이버 심벌 라이브러리를 포함한다. 비휘발성 판독-기록 드라이버 심벌 라이브러리는 코드 섹션들을 업데이트된 코드 섹션으로 덮어쓴다. 패치 매니저 코드 섹션은 판독-기록 데이터, 코드 섹션 어드레스 테이블, 그리고 심벌 오프셋 어드레스 테이블을 포함하고, 또한, 심벌 액세서 코드와 심벌 액세서 코드 어드레스도 포함한다. 업데이트된 코드 섹션들이 도입되면 이 데이터의 일부분들이 유효하지 않으며, 업데이트된 패치 매니저 코드 섹션들은 업데이트된 코드 섹션에 대해 유효한 판독-기록 데이터, 코드 섹션 어드레스 테이블, 그리고 심벌 오프셋 어드레스 테이블을 포함한다. 업데이트된 코드 섹션이 코드 저장 섹션(112)으로 로딩되면, 무선 장치가 리셋된다. 리셋 동작에 이어, 무선 장치는 업데이트된 시스템 소프트웨어를 실행할 수 있다. 패치 매니저 코드 섹션이 상술하지 않은 다른 심벌 라이브러리를 포함할 수도 있다. 이러한 다른 심벌 라이브러리들은 휘발성 판독-기록 메모리(114)로 로딩될 필요가 없다.
도 2는 에어 링크 인터페이스를 통해 명령 세트의 설치를 강조한, 소프트웨어 관리 시스템(100)의 블록도표이다. 시스템 소프트웨어 코드 섹션의 업데이트에 추가하여, 관리 시스템(100)은 패치 매니저 런-타임 명령(PMRTI)이라 불리는 동적 명령 세트, 프로그램, 또는 패치 매니저 명령 세트(PMIS)를 다운로드하고 설치할 수 있다. PMRTI 코드 섹션(200)은 상술한 시스템 소프트웨어 코드 섹션과 같은 방식으로 무선 장치(104)에 전달된다. PMRTI 코드 섹션은 핸드셋에 컴파일된 명령으로 나타날 수 있는 이진(binary) 파일이다. PMRTI 코드 섹션은 조건부 실행 동작의 성능과 기본 수학적 동작의 성능을 제공할 만큼 충분히 포괄적이다. 예를 들어, RF 조정 PMRTI는 다음의 동작을 수행할 수 있다.
IF RF CAL ITEM IS LESS THAN X
EXECUTE INSTRUCTION
ELSE
EXECUTE INSTRUCTION
PMRTI는 덧셈, 뺄셈, 곱셈, 나눗셈같은 기본적 수학 연산을 지원할 수 있다. 시스템 소프트웨어 코드 섹션에 대하여, PMRTI 코드 섹션은 UI 프람프트에 따라 로딩될 수 있고, 무선 장치는 PMRTI가 코드 저장 섹션(112)으로 로딩된 후 리셋되어야 한다. PMRTI 코드 섹션이 어떤 가상 테이블이나 판독-기록 데이터에 연계될 경우, 업데이트된 패치 매니저 코드 섹션이 코드 저장 섹션(112)에서의 설치를 위해 PMRTI로 전송될 것이다. 대안으로, PMRTI가 유지되어 FSS(110)로부터 처리될 수 있다. 핸드셋(104)이 PMRTI 섹션의 모든 명령을 수행한 후, PMRTI 섹션이 FSS(110)로부터 삭제될 수 있다. 대안으로, PMRTI가 차후 동작을 위해 유지된다. 예를 들어, 무선 장치가 에너지를 공급받을 때마다 PMRTI가 실행될 수 있다.
PMRTI는 매우 강력한 런-타임 명령 엔진이다. 핸드셋이 PMRTI 환경을 통해 전달되는 어떤 명령도 실행할 수 있다. 이 메커니즘은 RF 조정을 지원하는 데 사용될 수 있다. 보다 일반적으로, PMRTI는 제작자나 서비스 제공자에 의해 소프트웨어 문제가 인지되었을 때 무선 장치 소프트웨어를 원격 디버깅(remote debug)하는 데 사용될 수 있다. PMRTI는 데이터 분석, 디버그, 처방을 위해 새로이 다운로드받은 시스템 애플리케이션을 발진시킬 수 있다. PMRTI는 업데이트된 시스템 소프트웨어 코드 대신에 문제점에 대한 단기 처방과 분석에 대한 판독-기록 데이터 기반 업데이트를 제공할 수 있다. PMRTI는 무선 장치에 의한 이용을 위해 메모리 치밀화 알고리즘을 제공할 수 있다.
발명의 일부 태양에서, 시스템 소프트웨어를 심벌 라이브러리로 조직하는 것은 실행에 필요한 휘발성 메모리(114)와 비휘발성 메모리(108)의 크기에 영향을 미칠 수 있다. 이는 코드 섹션이 코드 섹션에 배열되는 심벌 라이브러리들보다 크기 때문이다. 이같이 큰 코드 섹션은 업데이트된 코드 섹션을 수용하기 위해 존재한다. 라이브러리의 집합체로 시스템 소프트웨어를 조직하는 것은 비휘발성 메모리 크기 요건에 영향을 미친다. 동일한 코드 크기에 대하여, 사용되는 비휘발성 메모리의 양은 코드 섹션의 크기가 그 안에 배열된 심벌 라이브러리보다 크기 때문에 높을 것이다.
소프트웨어 업데이트가 무선 장치에 전달되면, 소프트웨어 관리 시스템(100)은 메모리 치밀화를 지원한다. 메모리 치밀화는 데스크탑 컴퓨터의 디스크 디프래그먼트 애플리케이션(disk defragmentation application)과 유사하다. 치밀화 메커니즘은 메모리가 최적으로 사용되고 차후 코드 섹션 업데이트에 대해 우수한 균형을 유지함을 보장한다. 이때, 업데이트된 코드 섹션의 크기는 예측불가능하다. 시스템(100)은 패치(업데이트) 실행 중에 코드 저장 섹션을 분석한다. 시스템(100)은 교체되는 코드 섹션에 의해 점유되는 메모리 공간에 업데이트된 코드 섹션을 맞추려고 시도한다. 업데이트된 코드 섹션이 교체되는 코드 섹션보다 클 경우, 시스템(100)은 메모리(112)의 코드 섹션을 치밀화한다. 대안으로, 제작자나 서비스 제공자에 의해 치밀화가 연산될 수 있고, 치밀화 명령이 무선 장치(104)에 전달될 수 있다.
치밀화는 알고리즘의 복잡도와 방대한 분량의 데이터 이동 때문에 시간이 소요되는 공정일 수 있다. 치밀화 알고리즘은 어떤 공정을 시작하기 전에 가능성을 예측한다. UI 프람프트는 치밀화가 시도되기 전에 사용자로부터의 허가를 얻는 데 사용될 수 있다.
일부 발명의 태양에서, 모든 시스템 소프트웨어 코드 섹션들이 동시에 업데이트될 수 있다. 완전한 시스템 소프트웨어 업그레이드는 더 큰 FSS(110)를 필요로 할 것이다.
도 3은 무선 통신 장치의 발명에 따른 동적 명령 세트 실행을 도시하는 블록도표이다. 시스템(300)은 다수의 현 코드 섹션으로 구분되는 실행형 무선 장치 시스템 소프트웨어를 포함하는 메모리(108)의 코드 저장 섹션(112)을 포함한다. 코드 섹션 1(302), 코드 섹션 2(304), 코드 섹션 n(306), 그리고 패치 매니저 코드 섹션(308)이 도시된다. 그러나, 발명이 어떤 특정 수치의 코드 섹션에 제한되지는 않는다. 더욱이, 시스템(300)은 다수의 리소스 섹션들로 배열되는 다수의 제 1 심벌 라이브러리들을 추가로 포함한다. 심벌 라이브러리 1(310)이 코드 섹션 1(302)에, 심벌 라이브러리 2(312)와 3(314)이 코드 섹션 2(304)에 배열되며, 심벌 라이브러리 m(316)은 코드 섹션 n(306)에 배열된다. 각각의 라이브러리는 관련 기능을 가진 심벌들을 포함한다. 예를 들어, 심벌 라이브러리 1(310)은 무선 장치 LCD의 동작에 관련될 수 있다. 그후, 심벌은 디스플레이 기능에 관련될 수 있다. 아래 설명되는 바와 같이, 추가적인 심벌 라이브러리들이 패치 매니저 코드 섹션(308)에 배열된다.
도 4는 무선 장치 메모리의 블록도표이다. 도시되는 바와 같이, 메모리는 도 1의 코드 저장 섹션(112)이다. 메모리는 쓰기가능한 비휘발성 메모리이다(가령, 플래시 메모리). 코드 섹션이 반드시 FSS(110)와 같은 메모리에 저장될 필요는 없다. 본 발명의 시스템 소프트웨어 구조가 다수의 협력 메모리에 저장된 코드 섹션들로 구현될 수 있다. 코드 저장 섹션(112)은 다수의 제 2 연속 어드레싱 메모리 블록을 포함하며, 이때, 각각의 메모리 블록은 다수의 리소스 섹션들로부터 해당 코드 섹션을 저장한다. 따라서, 코드 섹션 1(302)이 제 1 메모리 블록(400)에 저장되고, 코드 섹션 2(304)가 제 2 메모리 블록(402)에 저장되며, 코드 섹션 n(306)이 제 n 메모리 블록(404)에 저장되고, 패치 매니저 코드 섹션(308)이 제 p 메모리 블록(406)에 저장된다.
도 3과 4를 대조해보면, 각각의 코드 섹션의 시작점이 메모리의 해당 시작 어드레스에 저장되고, 심벌 라이브러리들이 코드 섹션의 시작점에서 시작되도록 배열된다. 즉, 각각의 심벌 라이브러리는 제 1 어드레스에서 시작하여 제 1 어드레스로부터 순서대로 어드레스 범위를 따라 진행된다. 예를 들어, 코드 섹션 1(302)은 코드 저장 섹션 메모리(112)의 제 1 시작 어드레스(408)("S"로 표시)에서 시작된다. 도 3에서, 심벌 라이브러리 1(310)은 제 1 코드 섹션의 시작점(318)에서 시작된다. 마찬가지로 코드 섹션 2(304)는 제 2 시작 어드레스(410)(도 4)에서 시작되고, 심벌 라이브러리 2는 코드 섹션 2의 시작점(320)(도 3)에서 시작된다. 코드 섹션 n(306)은 코드 저장 섹션 메모리(112)의 제 3 시작 어드레스(412)에서 시작되고(도 4), 심벌 라이브러리 m(316)은 코드 섹션 n(322)의 시점에서 시작된다(도 3). 패치 매니저 코드 섹션은 코드 저장 섹션 메모리(112)의 제 p 시작 어드레스(414)에서 시작하고, 패치 매니저 코드 섹션(310)의 제 1 심벌 라이브러리는 제 1 메모리 블록(400)에 궁극적으로 저장된다. 한 코드 섹션이 다수의 심벌 라이브러리를 포함할 경우(가령, 코드 섹션 2(304)), 다수의 심벌 라이브러리는 제 2 메모리 블록(402)의 경우에, 해당 메모리 블록에 저장된다.
도 3에서, 시스템(300)은 패치 매니저 코드 섹션(308)에 배열되는 심벌 라이브러리에 포함된 심벌 종류로 코드 섹션 어드레스 테이블(326)을 추가로 포함한다. 코드 섹션 어드레스 테이블은 코드 섹션 식별자를 메모리의 해당 코드 섹션 시점 어드레스와 상호참조(cross-reference)한다.
도 5는 도 3의 코드 섹션 어드레스 테이블(326)을 나타내는 테이블이다. 코드 섹션 어드레스 테이블(326)은 심벌 라이브러리에 대한 코드 섹션 시작 어드레스를 찾기 위해 참고된다. 예를 들어, 심벌 라이브러리 1의 한 심벌이 실행에 필요할 경우 시스템(300)이 코드 섹션 1을 찾는다. 코드 섹션 1의 시작 어드레스를 찾기 위해, 그래서 심벌 라이브러리 1의 심벌을 위치시키기 위해, 코드 섹션 어드레스 테이블(326)이 참고된다. 코드 섹션들에서 심벌 라이브러리들의 배열과, 코드 섹션을 테이블로 찾아가는 것은 코드 섹션을 이동시키거나 확장시킬 수 있다. 확장이나 이동 동작은 업그레이드된 코드 섹션을 설치하는 데 필요할 수 있다.
도 3으로 돌아가서, 모든 심벌 라이브러리들이 반드시 코드 섹션의 시점에서 시작되는 것은 아니다. 도시되는 바와 같이, 심벌 라이브러리 3(314)은 코드 섹션 2(304)에 베열되지만, 코드 섹션 시작 어드레스(320)의 시작점은 아니다. 따라서, 심벌 라이브러리 3(314)의 한 심벌이 실행에 필요할 경우, 시스템(300)은 코드 섹션 2(304)의 시작 어드레스에 대한 코드 섹션 어드레스 테이블(326)을 참조한다. 아래 설명되는 바와 같이, 심벌 오프셋 어드레스 테이블이 심벌 라이브러리 3(314)의 심벌들을 위치시킨다. 심벌들이 동일한 코드 섹션으로 유지되기 때문에 심벌들이 다중 라이브러리 사이에 퍼지는 것은 문제가 되지 않는다.
상술한 바와 같이, 각각의 심벌 라이브러리는 기능적으로 관련된 심벌들을 포함한다. 심벌은 루틴 바디(routine body), 변수, 또는 데이터 구조를 위치시키고 이용하기 위한 프로그래머-지정 명칭이다. 따라서, 심벌이 한개의 어드레스거나 한개의 값(value)일 수 있다. 심벌들은 내부적일 수도 있고 외부적일 수도 있다. 내부적 심벌은 현 코드 섹션의 범위를 넘으면 보이지 않는다. 보다 구체적으로, 내부적 심벌들은 다른 코드 섹션의 다른 심벌 라이브러리로 찾을 수 없다. 외부적 심벌은 코드 섹션 사이에서 사용되고 호출되며, 여러 다른 코드 섹션의 라이브러리로 찾을 수 있다. 심벌 오프셋 어드레스 테이블은 모든 외부적 심벌들의 리스트를 포함하는 것이 일반적이다.
예를 들어, 심벌 라이브러리 1(310)은 무선 장치 디스플레이 상에 문자들을 발생시킨다. 이 라이브러리의 심벌들은 전화 번호, 성명, 시간, 또는 그 외 다른 디스플레이 특징들을 발생시킨다. 각각의 특징은 심벌이라고 불리는 루틴으로 발생된다. 가령, 심벌 라이브러리 1(310)의 한개의 심벌이 디스플레이 장치에 전화번호를 발생시킨다. 이 심벌은 X로 표시되며 외부적이다. 무선 장치가 전화통화를 수신하고 호출자 ID 서브시가 활성화되면, 시스템은 디스플레이 장치 상에 번호를 발생 시키도록 "x" 심벌을 실행하여야 한다. 따라서 시스템은 X 심벌을 위치시켜야 한다.
도 6은 심벌들로 구성된 도 3의 심벌 라이브러리 1(310)의 상세한 도면이다. 심벌들은 각각 코드 섹션 시작 어드레스로부터 이격되어 배치된다. 여러 상황에서, 심벌 라이브러리의 시작점은 코드 섹션의 시작점이지만, 이는 코드 섹션이 두개 이상의 심벌 라이브러리를 포함할 경우 사실이 아니다. 심벌 라이브러리 1(310)은 코드 섹션 1의 시작점에서 시작된다(도 3 참조). 도 6에 도시되는 바와 같이, "X"심벌은 심벌 라이브러리의 시작점으로부터 (03)만큼 이격되어 위치하고, "Y"심벌은 (15)만큼 이격되어 위치한다. 심벌 오프셋 어드레스들은 패치 매니저 코드 섹션의 심벌 오프셋 어드레스 테이블(328)에 저장된다(도 3 참조).
도 7은 도 3의 심벌 오프셋 어드레스 테이블(328)을 도시하는 표이다. 심벌 오프셋 어드레스 테이블(328)은 심벌 식별자를 해당 오프셋 어드레스와, 메모리의 해당 코드 섹션 식별자와 상호참고(cross-reference)시킨다. 따라서, 시스템이 심벌 라이브러리 1의 "X"심벌을 실행하려할 경우, 심벌 오프셋 어드레스 테이블(328)이 코드 섹션에 대해 심벌의 정확한 어드레스를 위치시키기 위해 참고된다.
도 3으로 되돌아가서, 다수의 제 1 심벌 라이브러리들은 이 심벌 라이브러리들의 실행시 설정되거나 참고되어야 하는 모든 판독-기록(read-write; RW) 데이터를 포함하는 것이 일반적이다. 예를 들어, 심벌 라이브러리가 조건부 문장에 따라 좌우되는 동작을 포함할 수 있다. 판독-기록 데이터 섹션은 조건부 문장(conditional statement)을 완성시키는 데 필요한 상태(status)를 결정하기 위해 참고된다. 본 발명은 모든 심벌 라이브러리로부터의 판독-기록 데이터를 공유 판독-기록 섹션으로 묶는다. 발명의 일부 태양에서, 판독-기록 데이터(330)는 패치 매니저 코드 섹션(308)에 배열된다. 대안으로(도시되지 않음), 판독-기록 데이터가 앞서와 다른 코드 섹션, 가령, 코드 섹션 n(306)으로 배열될 수 있다.
다수의 제 1 심벌 라이브러리들은 찾는 심벌의 어드레스를 계산하기 위해 코드 섹션에 배열되는 심벌 액세서 코드를 또한 포함한다. 심벌 액세서 코드는 별도의 코드 섹션, 가령, 코드 섹션 2(304)의 어드레스에 배열되고 저장될 수 있다. 그러나 도시되는 바와 같이, 심벌 액세서 코드(332)는 패치 매니저 코드 섹션(308)의 어드레스에 배열되고 저장된다. 시스템(300)은 심벌 액세서 코드 어드레스의 저장을 위한 제 1 위치를 추가로 포함한다. 제 1 위치는 코드 저장 섹션(112)의 코드섹션일 수도 있고, 무선 장치의 별도 메모리 섹션의 코드 섹션일 수도 있다. 제 1 위치는 판독-기록 데이터와 동일한 코드 섹션에 배열될 수도 있다. 도시되는 바와 같이, 제 1 위치(334)는 판독-기록 데이터(330), 심벌 오프셋 어드레스 테이블(328), 코드 섹션 어드레스 테이블(326), 그리고 심벌 액세서 코드(332), 그리고 패치 라이브러리(패치 심벌 라이브러리)(336)로 패치 매니저 코드 섹션(308)에 저장된다.
심벌 액세서 코드는 메모리에서 찾는 심벌의 어드레스를 연산하거나 발견하기 위해 코드 섹션 어드레스 테이블과 심벌 오프셋 어드레스 테이블에 액세스한다. 즉, 심벌 액세서 코드는 해당 심벌 식별자와 해당 코드 섹션 식별자를 이용하여 찾는 심벌의 어드레스를 연산한다. 예를 들어, 심벌 라이브러리 1의 "X"심벌을 찾을 경우, "X"심벌에 해당하는 심벌 식별자(심벌 ID) "X_1"를 찾기 위해 심벌 액세스가 호출된다(도 7 참조). 심벌 액세서 코드는 "X_1"심벌 식별자가 코드 섹션 1의 시작점으로부터 (03)만큼 이격되는 지를 결정하기 위해 심벌 오프셋 어드레스 테이블을 참고한다. 심벌 액세서 코드는 코드 섹션 식별자(코드 섹션 ID) "CS_1"에 관련된 시작 어드레스를 결정하기 위해 코드 섹션 어드레스 테이블을 참고한다. 이 방식으로, 심벌 식별자 "X_1"이 (00100)의 어드레스로부터 (03)만큼 이격되거나 (00103)에 위치함을 심벌 액세서 코드가 결정한다.
심벌 "X"는 실제 코드의 일부분이기 때문에 예약된 명칭이다. 다시 말해서, 이와 관련된 절대적 데이터를 가진다. 이 데이터는 하나의 어드레스일 수도 있고 하나의 값(value)일 수도 있다. 심벌 식별자는 심벌 추적을 위해 생성되는 별칭이다. 심벌 오프셋 어드레스 테이블과 코드 섹션 어드레스 테이블은 예약된 심벌과 코드 섹션 명칭과의 혼동을 피하기 위해 식별자와 함께 기능한다. 동일한 심벌 명칭이 여러 심벌 라이브러리 사이에서 사용되는 것도 또한 가능하다. 식별자 사용은 이 심벌들간 혼동을 방지한다.
도 1로 되돌아가서, 시스템(300)은 판독-기록 휘발성 메모리(114), 통상적으로 RAM을 추가로 포함한다. 판독-기록 데이터(330), 코드 섹션 어드레스 테이블(326), 심벌 오프셋 어드레스 테이블(328), 심벌 액세서 코드(332), 그리고 심벌 액세서 코드 어드레스(334)가 시스템 소프트웨어 실행 중 액세스를 위한 패치 매니저 코드 섹션으로부터 판독-기록 휘발성 메모리(114)로 로딩된다.
당 분야에 잘 알려진 바와 같이, RAM 에 저장되는 코드에 대한 액세스 시간은 플래시같은 비휘발성 메모리에 대한 액세스보다 상당히 작다.
도 3으로 되돌아가서, 메모리 블록이 그 안에 저장되는 해당 코드 섹션을 정확하게 수용할 수 있는 크기를 가지지만, 심벌 라이브러리들이 배열될 코드 섹션들을 반드시 채울 필요는 없다. 달리 말하자면, 다수의 리소스 섹션들 각각은 배열되는 심벌 라이브러리들을 수용하는 바이트 크기를 가지며, 연속적으로 어드레싱되는 메모리 블록들 각각은 해당 코드 섹션들을 수용하는 바이트 크기를 가진다. 가령, 코드 섹션 1(302)은 100 바이트의 길이를 가진 심벌 라이브러리를 수용하기 위해 100 바이트 섹션일 수 있다. 제 1 메모리 블록은 코드 섹션 1의 바이트 크기와 일치하기 위해 100바이트일 것이다. 그러나, 코드 섹션 1에 로딩되는 심벌 라이브러리가 100바이트보다 작을 수 있다. 도 3에 도시되는 바와 같이, 심벌 라이브러리 1(310)이 100바이트보다 작기 때문에 코드 섹션 1(302)은 사용하지 않은 섹션(340)을 가진다. 따라서, 다수의 리소스 섹션들 각각은 배열된 심벌 라이브러리들을 수용하는 데 필요한 크기보다 더 큰 크기를 가질 수 있다. 코드 섹션 크기를 과설정함(oversizing)으로서, 업데이트된 더 큰 심벌 라이브러리들을 수용할 수 있다.
연속적으로 어드레싱되는 메모리 블록들은 물리적 메모리 공간을 가변 크기의 로직 블록으로 분할하는 것에 관련된다. 코드 섹션과 메모리 블록들은 코드 섹션이 메모리에 저장될 때 실질적으로 교환가능한 항목들이다. 코드 섹션의 개념은 심벌 라이브러리보다 큰 코드 섹션을 식별하는 데 사용되고, 이동하거나 조작될 때 코드 섹션의 심벌 라이브러리들의 집합체를 식별하는 데 사용된다.
도 3에 도시되는 바와 같이, 시스템(300)은 패치 라이브러리(336)라 불리는 패치 심벌 라이브러리를 포함하여, 코드 저장 섹션의 새 코드 섹션을 현 코드 섹션 과 함께 배열한다. 코드 저장 섹션에서 새 코드 섹션을 현 코드 섹션과 함께 배열하는 것은 업데이트된 실행형 시스템 소프트웨어를 형성한다. 패치 매니저(336)는 새 코드 섹션을 현 코드 섹션과 함께 배열할 뿐 아니라, 코드 섹션들을 업데이트된 코드 섹션으로 대체한다.
도 4를 참고해보면, 메모리(108)의 파일 시스템 섹션(110)이 새 코드 섹션(450)과 업데이트된 패치 매니저 코드 섹션(452)처럼 새 코드 섹션을 수신한다. 파일 시스템 섹션은 현 코드 섹션과 함께 새 코드 섹션을 배열하기 위한 명령을 포함하는 제 1 패치 매니저 런-타임 명령(PMRTI)(454)을 또한 수신한다. 도 1에 도시되는 바와 같이, 에어 링크 인터페이스(150)는 새 코드 섹션이나 업데이트된 코드 섹션을 수신하고 또한 제 1 PMRTI를 수신한다. 에어 링크 인터페이스(150)가 안테나로 나타나지만, 에어 링크 인터페이스가 RF 송수신기, 기지대역 회로, 그리고 복조 회로(도시되지 않음)을 포함한다는 것을 이해하여야 할 것이다. 파일 시스템 섹션(110)은 에어 링크 인터페이스(150)를 통해 수신한 새 코드 섹션을 저장한다. 판독-기록 휘발성 메모리(114)로부터 실행되는 패치 라이브러리(336)는 코드 저장 섹션의 제 1 코드 섹션, 가령, 코드 섹션 n(306)을, 제 1 PMRTI(454)에 따라 새(또는 업데이트된) 코드 섹션으로 대체한다. 통상적으로, 패치 매니저 코드 섹션(308)은 업데이트된 패치 매니저 코드 섹션(452)으로 대체된다. 코드 섹션들이 대체되면, 패치 라이브러리(336)는 코드 저장 섹션(112)의 제 1 코드 섹션, 가령, 코드 섹션 n(306)을 파일 시스템 섹션(110)의 업데이트된 코드 섹션, 가령, 코드 섹션(450)으로 덮어쓴다. 극단적인 경우에, 코드 저장 섹션(112)의 모든 코드 섹션들이 업데이트된 코드 섹션들로 대체된다. 즉, FSS(110)는 다수의 제 2 업데이트 코드 섹션을 수신하며, 패치 라이브러리(336)는 코드 저장 섹션(112)의 다수의 리소스 섹션을 다수의 제 2 업데이트 코드 섹션으로 대체한다. 물론, FSS(110)는 에어 링크 인터페이스를 통해 수신한 다수의 제 2 업데이트 코드 섹션을 수용할만큼 충분히 크다.
상술한 바와 같이, 업데이트된 코드 섹션들은 판독-기록 데이터 코드 섹션, 코드 섹션 어드레스 테이블 코드 섹션, 심벌 라이브러리, 심벌 오프셋 어드레스 테이블 코드 섹션, 심벌 액세서 코드 섹션, 또는 새 패치 라이브러리를 가진 코드 섹션을 포함할 수 있다. 이러한 모든 코드 섹션들은 관련 심벌 라이브러리 및 심벌을 가지면서, 구분된 독립적 코드 섹션으로 저장될 수 있다. 이 코드 섹션들 각각은 독자적인 업데이트 코드 섹션으로 대체될 것이다. 즉, 업데이트된 판독-기록 코드 섹션이 수신되어, 코드 저장 섹션의 판독-기록 코드 섹션을 대체할 것이다. 업데이트 코드 섹션 어드레스 테이블 코드 섹션이 수신될 것이고 코드 저장 섹션의 코드 섹션 어드레스 테이블 코드 섹션을 대체할 것이다. 업데이트 심벌 오프셋 어드레스 테이블 코드 섹션이 수신될 것이고 코드 저장 섹션의 심벌 오프셋 어드레스 테이블 코드 섹션을 대체할 것이다. 업데이트된 심벌 액세서 코드 섹션이 수신될 것이고 코드 저장 섹션의 심벌 액세서 코드 섹션을 대체할 것이다. 마찬가지로, 업데이트된 패치 매니저 코드 섹션이 수신될 것이고 코드 저장 섹션의 패치 매니저 코드 섹션을 대체할 것이다.
그러나, 상술한 코드 섹션들이 패치 매니저 코드 섹션에서 함께 묶이는(bundled) 것이 통상적이다. 따라서 패치 매니저 코드 섹션(308)이 업데이트된 패치 매니저 코드 섹션(450)으로 대체될 때, 코드 저장 섹션의 판독-기록 코드 섹션이 시스템 섹션(110)으로부터 업데이트된 판독-기록 코드 섹션으로 대체된다. 마찬가지로, 업데이트된 패치 매니저 코드 섹션(450)이 설치될 때 코드 섹션 어드레스 테이블, 심벌 오프셋 어드레스 테이블, 심벌 액세서 코드 섹션, 그리고 패치 라이브러리가 대체된다. 새 판독-기록 데이터, 새 코드 섹션 어드레스 테이블, 새 심벌 오프셋 어드레스 테이블, 새 심벌 액세서 코드, 그리고 새 패치 라이브러리를 업데이트된 패치 매니저 코드 섹션(450)으로, 코드 저장 섹션의 현 코드 섹션과 함께 배열하는 것은 업데이트된 실행형 시스템 소프트웨어를 형성한다.
파일 시스템 섹션(110)이 업데이트된 심벌 액세스 코드 어드레스를 수신할 때, 패치 매니저는 메모리 내 제 1 위치의 심벌 액세서 코드 어드레스를 업데이트된 심벌 액세서 코드 어드레스로 대체한다. 상술한 바와 같이, 메모리(334) 내 제 1 위ㅊ는 패치 매니저 코드 섹션 내에 놓인다(도 3 참조).
도 3에 도시되는 바와 같이, 패치 라이브러리(308)는 컴팩터(compactor), 또는 컴팩터 심벌 라이브러리(342)를 또한 포함한다. 컴팩터(342)는 구분된 독립적 코드 섹션으로 구현될 수도 있지만, 시스템 소프트웨어 업그레이드에 관련된 기능들을 단일 패치 매니저 코드 섹션으로 묶는 것이 효율적이고 유용하다. 일반적으로, 컴팩터(342)는 코드 섹션들의 크기를 재설정한다고 말하여지며, 따라서 새 섹션들이 코드 저장 섹션(112)의 현 코드 섹션과 함께 배열될 수 있다.
본 발명의 조직화, 다운로딩, 치밀화 태양이 구축되어, 다음의 설명은 무선 통신 장치 동적 명령 세트 실행 시스템(300)에 집중될 것이다. 시스템(300)은 코드 섹션들로 구분되는 실행형 시스템 소프트웨어 및 시스템 데이터를 포함한다. 더욱이, 시스템(300)은 시스템 데이터 및 시스템 소프트웨어에 대해 동작하고 시스템 소프트웨어 실행을 제어하기 위한 동적 명령 세트를 포함한다. 도 4에 도시되는 바와 같이, 동적 명령 세트(470)는 제 1 PMRTI(454)로 조직된다. 도 3에 도시되는 바와 같이, 시스템은 런-타임 라이브러리(370)로 구현되는 동적 명령 세트를 처리하기 위한 런-타임 엔진을 추가로 포함한다. 컴팩터 라이브러리(342)와 패치 라이브러리(336)에서처럼, 런-타임 라이브러리(370)는 패치 매니저 코드 섹션(308)에 위치하는 것이 일반적이다. 그러나, 런-타임 라이브러리(370)가 제 1 코드 섹션(304)같은 또다른 코드 섹션에 위치할 수도 있다.
동적 명령 세트는 조건부 동작 코드와 데이터 아이템을 포함하는 단일 명령 세트일 수도 있고 다중 명령 세트일 수도 있다. 런-타임 엔진은 동작 코드를 읽어 어떤 동작을 실행해야 하는 지를 결정한다. 동작 코드는 조건부, 수학적, 과정식, 또는 로직형일 수 있다. 런-타임 엔진, 또는 런-타임 라이브러리(370)가 수학적 또는 논리적 연산같은 연산을 실행하기 위해 동적 명령 세트를 처리한다. 즉, 런-타임 엔진은 동적 명령 세트(470)를 읽어들여 동작 코드에 따라 동작 시퀀스를 실행한다. 동적 명령 세트가 특정 언어에 제한되지 않지만, 동작 코드는 일반적으로 기계어 코드 형태를 취한다. 왜냐하면 무선 장치 메모리가 제한되고 실행 속도가 중요하기 때문이다. 동작 코드가 데이터 아이템을 분석하여 분설 결과로 결정을 이행하는 측면에서 동작 코드는 조건부라고 간주된다. 런-타임 엔진은 분석되기 전에 데이터 상에서 동작이 실행되어야 함을 또한 결정할 수 있다.
예를 들어, 무선 장치 메모리로부터의 데이터 아이템이 지정값에 비교되어야 함을 동작 코드가 명시할 수 있다. 데이터 아이템이 지정값보다 작을 경우, 데이터 아이템이 홀로 남고, 데이터 아이템이 지정 값보다 클 경우, 데이터 아이템이 지정 값으로 대체된다. 대안으로, 동작 코드는 상술한 비교 방법이 실행되기 전에 무선 장치 메모리로부터 데이터 아이템에 제 2 지정값을 보탤 수 있다.
상술한 바와 같이, 파일 시스템 섹션 비휘발성 메모리(110)는 에어 링크(150)같은 인터페이스를 통해 동적 명령 세트를 수신한다. 도 1에 도시되는 바와 같이, 인터페이스가 RF 하드라인(160)일 수도 있다. 그후, 공장 조정 환경에서처럼 시스템 소프트웨어가 동작중이 아닐 때, PMRTI를 FSS(110)에서 수신할 수 있다. PMRTI가 로직 포트 인터페이스(162)나 설치형 메모리 모듈(164)을 통해 수신될 수도 있다. 메모리 모듈(164)은 초기 조정시, 배포된 상태에서, 또는 공장 재조정 중에 무선 장치에 설치될 수 있다. 구체적으로 도시되지 않았으나, PMRTI를 적외선이나 블루투스 인터페이스를 통해 수신할 수도 있다.
도 8a와 8b는 런-타임 엔진(370)에 의해 액세스되는 명령들을 도시한다. 도 8a에는 제 1 명령(800), 제 2 명령(802), 그리고 제 j 명령(804)이 도시되지만, 동적 명령 세트는 특정 수치의 명령에 제한되지 않는다. 각 명령에서 동작 코드 길이는 고정된다. 런-타임 엔진(370)은 명령이 데이터 아이템을 포함하는 지를 결정하기 위해 바이트나 비트의 척도로 명령 길이를 캡쳐한다. 동작 코드를 뺀 후 나머지 명령 길이는 데이터 아이템을 포함한다. 런-타임 엔진은 이 명령으로부터 데이터 아이템을 추출한다. 도시되는 바와 같이, 제 1 명령(800)의 길이(806)가 측정되고 데이터 아이템(808)이 추출된다. 모든 명령이 추출될 데이터 아이템을 포함할 필요는 없다. 런-타임 엔진(370)은 추출된 데이터(808)를 이용하여, 명령(800)의 동작 코드(810)에 따라 동작 시퀀스를 실행한다.
도 8b는 도 8a의 제 1 명령(800)의 상세한 도면이다. 제 1 명령(800)을 한 예로 이용하면, 이 명령은 동작 코드(810)와 데이터(808)를 포함한다. 이 명령과 데이터 아이템 섹션(808)은 심벌 식별자를 포함하며, 상기 식별자는 무선 장치 코드 섹션들의 심벌들에 대한 링크로 기능한다. 상술한 바와 같이, 심벌 식별자들은 코드 섹션 어드레스 테이블(326)(도 5)과 심벌 오프셋 어드레스 테이블(328)(도 7)로 사용되어, 심벌 식별자에 해당하는 심벌을 위치시킨다. 도시되는 바와 같이, 심벌 식별자 "X_1"이 제 1 명령(800)에 도시된다. 심벌 오프셋 어드레스 테이블(328)은 코드 섹션의 해당 심벌을 "CS_1"식별자와 "3"의 오프셋으로 위치시킨다. 코드 섹션 어드레스 테이블(326)은 코드 섹션 1(302)의 시작 어드레스를 부여한다. 이 방식으로, 심벌 "X"가 발견된다(도 6 참조).
런-타임 엔진이 코드 섹션 어드레스 테이블과 심벌 오프셋 어드레스 테이블을 이용하여 수신 심벌 식별자에 해당하는 심벌을 위치시킨 후, 위치한 심벌들이 데이터 아이템일 때 데이터를 추출한다. 예를 들어, 심벌 "X"가 심벌 라이브러리 1(310)의 데이터 아이템일 때 런-타임 엔진이 이를 추출한다. 대안으로, "X"심벌이 동작 코드일 수 있고, 이 심벌이 위치할 때 런-타임 엔진이 심벌 "X"를 실행한다.
PMRTI는 시스템 데이터나 시스템 데이터 아이템을 업데이트하는 데 사용될 수 있다. 발명의 일부 태양에서, 시스템 데이터가 파일 시스템 섹션(110)의 한 코드 섹션, 가령, 코드 섹션(472)에 저장된다(도 4 참조). 런-타임 엔진은 코드 섹션(472)으로부터 시스템 데이터에 액세스하고 시스템 데이터를 분석한다. 런-타임 엔진은 동적 명령 세트의 동작 코드를 처리하여 데이터 아이템에 대한 수학적, 또는 논리적 연산을 실행할 수 있다. 이 연산 후, 런-타임 엔진은 업데이트된 시스템 데이터를 생성하기 위한 명령을 처리한다. 업데이트된 시스템 데이터가 일부 상황에서 불변의 데이터 아이템을 포함할 수 있다. 리소스 섹션(472)의 시스템 데이터가 동작 코드에 따라 업데이트된 시스템 데이터로 대체된다. 따라서, 런-타임 엔진에 의해 명령을 처리함으로서, 시스템 소프트웨어는 코드 섹션(472)의 업데이트된 시스템 데이터를 이용하여 실행되도록 제어된다. 이 방식으로, 시스템 소프트웨어의 특별히 고안된 심벌들이 전체 코드 섹션들을 대체하지 않으면서도 업데이트될 수 있다. 동일한 과정에 의해, 시스템 데이터가 코드 저장 섹션(112)의 코드 섹션에서 대체될 수 있다. 예를 들어, 시스템 데이터가 제 3 코드 섹션(344)에 저장될 수 있고, 런-타임 엔진이 제 3 코드 섹션의 시스템 데이터를 동작 코드에 따라 업데이트된 시스템 데이터로 대체할 수 있다.
PMRTI가 휘발성 메모리(114)의 데이터 아이템을 업데이트시키는 데 또한 사용될 수 있다. 한 예로서, 휘발성 메모리(114)가 도 1에서처럼 판독-기록 데이터(330)를 수용한다. 판독-기록 데이터는 FSS(110)나 코드 저장 섹션(112)의 다수의 코드 섹션들로부터 얻을 수 있다. 런-타임 엔진은 판독-기록 데이터에 액세스하여, 판독-기록 데이터(330)를 분석하고, 업데이트된 판독-기록 데이터를 생성하여, 휘발성 메모리(114)의 판독-기록 데이터(330)를 동작 코드에 따라 업데이트된 판독-기록 데이터로 대체한다. 그후, 시스템 소프트웨어는 휘발성 메모리(114)의 업데이트된 판독-기록 데이터를 이용하여 실행되도록 제어된다.
발명의 일부 태양에서, 런-타임 엔진은 시스템 소프트웨어의 실행을 모니터한다. 성능 모니터링은 다수의 무선 장치 활동을 포함하도록 폭넓게 규정된다. 예를 들어, 구체적 고장 조건이나 성능 저하 조건을 이끄는 동작 시퀀스를 통하여 채널 매개변수, 채널 특성, 시스템 스택, 에러 조건, 또는 RAM의 데이터 아이템의 레코드같은 데이터들이 수집될 수 있다. 또한 동적 명령 세트를 이용하여, 수집된 성능 데이터를 분석하고, 업데이트된 데이터 변형을 제공하며, 이 문제에 대한 해법을 연구하기 위해 데이터를 리캡처할 수 있다.
보다 구체적으로, 런-타임 엔진은 성능 데이터를 수집하고, 동작 코드에 따라 파일 시스템 섹션에 성능 데이터를 저장한다. 그후, 시스템 소프트웨어가 시스템 소프트웨어의 평가를 위해 성능 데이터를 수집함으로서 실행되도록 제어된다. 평가는 동적 명령 세트 동작 코드에 의해 실행되는 분석의 형태로 발생될 수 있고, 또는, 무선 장치 바깥에서 실행될 수도 있다. 발명의 일부 태양에서, 런-타임 엔진은 파일 시스템 섹션으로부터 수집한 성능 데이터에 액세스하여, 동작 코드에 따라 에어 링크 인터페이스를 통해 성능 데이터를 송신한다. 배포된 무선 장치로부터 성능 데이터를 수집함으로서, 제작자가 무선 장치의 리콜없이 문제점을 완전하게 분석할 수 있다.
발명의 일부 태양에서, 파일 시스템 섹션(110)은 새 코드 섹션을 포함한 패치 매니저 런-타임 명령을 수신한다. 예를 들어, 새 코드 섹션(474)이 도 4에 도시된다. 대안으로, 새 코드 섹션은 새 코드 섹션 n(450)같이 PMRTI에 독립적일 수 있다. 예를 들어, 새 코드 섹션 n(450)은 앞선 에어 링크 통신으로 수신되었을 수도 있고, 또는 공장 조정 중 설치되었을 수도 있다. 런-타임 엔진은 동작 코드에 따라 코드 저장 섹션에 새 코드 섹션 474(450)를 더한다. 발명의 일부 태양에서, 새 코드 섹션은 코드 저장 섹션(112)의 사용되지 않은 블록에 추가된다. 대안으로, 치밀화 과정이 필요하다. 그후, 시스템 소프트웨어가 새 코드 섹션 474(450)를 이용하여 실행되도록 제어된다. 발명의 다른 태양에서, PMRTI(454)는 업데이트된 코드 섹션(474)을 포함한다. 대안으로, 새 코드 섹션(450)이 PMRTI에 독립적으로 업데이트된 코드 섹션이다. 런-타임 엔진은 코드 저장 섹션의 한 코드 섹션, 가령, 코드 섹션 2(304)를, 동작 코드에 따라 업데이트된 코드 섹션 474(450)로 대체한다. 시스템 소프트웨어는 업데이트된 코드 섹션 474(450)를 이용하여 실행되도록 제어된다. 발명의 일부 태양에서, 업데이트된 코드 섹션을 수용하기 위해 치밀화 동작이 필요하다. 대안으로, 업데이트된 코드 섹션이 코드 저장 섹션의 사용되지 않은 섹션에 추가된다.
상술한 바와 같이, 새 코드 섹션을 더하거나 코드 섹션을 업데이트하는 것은 새 코드 섹션 어드레스 테이블의 발생을 통상적으로 필요로하며, 이는 이 동작들이 새로운(또는 변경된) 코드 섹션 시작 어드레스를 포함하기 때문이다. 더욱이, 치밀화 동작은 새 코드 섹션 어드레스 테이블을 또한 필요로한다. 치밀화 동작은 상술한 컴팩터(342)의 동작 결과일 수 있고, 또는, 치밀화가 어떻게 실현되는 지에 관한 세부사항을 제공하는 PMRTI 명령의 결과일 수도 있다. PMRTI가 다운로드 및 치밀화 명령을 포함할 경우, PMRTI는 다운로드 및 치밀화 동작이 완료된 후 유효해지는 새 코드 섹션 어드레스 테이블을 또한 포함한다.
도 9는 무선 통신 장치의 시스템 소프트웨어 다운로드 동작을 관리하기 위한 본 발명에 따른 시스템을 설명하기 위해 제시되는 도 1-8b의 특징들을 포함한 블록도표이다. 시스템(900)은 도 1의 에어 링크 인터페이스(150)와 대등한 에어 링크 인터페이스(902)와, 도 1의 메모리(108)와 대등한 비휘발성 메모리 영구 기억 장치(904)에 저장되는 코드 섹션들로 나뉘어진 실행형 시스템 소프트웨어 및 시스템 데이터를 포함한다. 비휘발성 영구 기억 장치(904)는 파일 시스템 섹션(906)과 코드 저장 섹션(908)을 포함한다.
시스템 소프트웨어 업데이트의 다운로드를 관리하기 위한 동적 명령 세트(910)가 에어 링크 인터페이스(902)를 통해 수신된다. 동적 명령 세트(910)와 새 코드 섹션(912)은 패치 매니저 런-타임 명령(914)의 일부분이다. 통상적으로 동적 명령 세트(910)는 파일 시스템 섹션(906)에 저장된다. 런-타임 엔진이나 런-타임 라이브러리(916)가 동적 명령 세트(910)를 처리한다. 상술한 바와 같이, 런-타임 라이브러리(916)는 패치 매니저 코드 섹션(918)의 일부분이다. 동적 명령 세트(910) 처리에 따라 실행형 시스템 소프트웨어 및 시스템 데이터(영구 메모리(904)의 코드 섹션들)가 업데이트된다. 동적 명령 세트(910)는 복구 상태 모니터링, 백업, 치밀화, 그리고 업데이트 순서지정 중에서 선택된 기능 매니저들을 포함한다.
시스템(900)은 새 코드 섹션 식별자를 그 업데이트 상태와 상호참조시키기 위한 복구 상태 테이블(920)을 추가로 포함한다. 복구 상태 테이블(920)은 파일 시스템 섹션(910)에 별도의 코드 섹션으로 도시된다. 발명의 일부 태양에 따르면, 시스템(900)이 켜질 때 복구 상태 테이블(920)이 휘발성 메모리(922)로 로딩된다. 테이블(920)이 휘발성 메모리(922)에서 업데이트되어 시스템이 꺼질 때 영구 메모리(904)로 되돌아간다.
도 10은 동적 명령 세트의 동적 명령 세트 복구 상태 모니터링 매니저(1000) 태양을 특징으로 하는 도 9의 시스템(900)에 대한 블록도표이다. 동적 명령 세트 복구 상태 모니터링 매니저는 복구 상태 모니터링 매니저(1000)라 불리며, 새 코드 섹션이 영구 기억 장치에 저장되었는 지를 결정하기 위해, 무선 통신 장치를 리부팅함에 따라 복구 상태 테이블(920)을 읽어들인다.
도 11은 도 9의 일례의 복구 상태 테이블(920)을 설명하는 도면이다. 이 테이블(920)은 CS_1과 CS_2으로 식별되는 코드 섹션들이 파일 시스템 섹션(906)으로부터 코드 저장 섹션(908)으로 성공적으로 이동하였음을 보여준다. 그러나, 이 테이블은 CS_n으로 식별된 코드 섹션이 성공적으로 저장되었는 지를 알 수 없음을 표시한다. 예를 들어, 저장 동작이 완료되기 전에 사용자가 무선 장치를 끌 수 있고, 또는 배터리가 완전히 방전될 수 있다.
도 10으로 되돌아가서, 복구 상태 모니터링 매니저(1000)는 새 코드 섹션이 저장되지 않았을 경우 새 코드 섹션을 영구 기억 장치에 저장하고, 새 코드 섹션이 저장되었을 때 복구 상태 테이블을 업데이트한다. 예를 들어, 복구 상태 모니터링 매니저(1000)는 코드 저장 섹션(908)에 CS_n(1002)을 저장하고, 그후, CS_n이 "로딩된" 상태로 변하도록 복구 상태 테이블을 업데이트한다. 상술한 패치 매니저 기능들은 파일 시스템 섹션(906)으로부터 코드 저장 섹션(908)에게로 코드 섹션을 이동시키는 데 통상적으로 사용된다.
발명의 일부 태양에 따르면, 복구 상태 모니터링 매니저(1000)가 각각의 새 코드 섹션을 저장함에 있어 관련된 위험을 추가적으로 결정하고, 그 위험부담이 클 경우, 안전 예방책을 취한다. 예를 들어, 복구 상태 모니터링 매니저(1000)는 새 코드 저장 처리를 완료할만큼 충분한 배터리 용량을 확인하고, 고위험 코드 저장 동작을 사용자에게 경고하며, 사용자에 의해 개시되는 전력 오프를 확인하기 위해 프람프트를 이용하고, 그리고 사용자에 의해 개시되는 전력 오프를 차단하는 등의 안전 예방책을 취한다. 도 11로 되돌아가서, 위험 요인은 복구 상태 테이블의 한 열(column)로 표현된다.
일부 코드 섹션들의 저장은 시스템 소프트웨어의 키 코드 섹션을 업데이트된 코드 섹션으로 대체하는 과정을 포함한다. 예를 들어, 파일 시스템 섹션(906)이 부트 코드 섹션, 패치 매니저 코드 섹션, 코드 섹션 어드레스 테이블, 심벌 오프셋 어드레스 테이블, 판독-기록 데이터, 그리고 심벌 액세서 코드 어드레스처럼 새 코드 섹션들을 수신할 수 있다. 이러한 코드 섹션 중 어떤 것을 제대로 저장하지 못하면 무선 장치를 켰을 때 무선 장치가 완전히 동작불능일 수 있다. 즉, 재프로그래밍을 위해 무선 장치를 서비스센터로 반납해야할 것이다. 따라서, 복구 상태 모니터링 매니저(1000)는 파일 시스템 섹션의 이 새 코드 섹션들 각각을 저장함에 관련된 위험을 결정하고, 이에 따라 안전 예방책을 취한다.
파일 시스템 섹션은 새 패치 매니저 코드 섹션, 가령, CS_n(1002)를 포함하는 패치 매니저 런-타임 명령을 잠정적으로 수신할 수 있다. 상술한 바와 같이, 패치 매니저 코드 섹션은 파일 시스템 섹션(906)의 코드 섹션들을 영구 기억 장치(통상적으로 코드 저장 섹션(908))로 옮기기 위한 패치 라이브러리를 포함한다. 발명의 일부 태양에 따르면, 복구 상태 모니터링 매니저(1000)는 파일 시스템 섹션(906)의 스패어 패치 라이브러리(1004)를 관리한다. 복구 상태 모니터링 매니저(1000)는 무선 통신 장치의 리부팅에 따라 새 패치 매니저 코드 섹션이 코드 저장 섹션에 성공적으로 저장되었는 지를 결정하기 위해 복구 상태 테이블(920)을 읽어들인다. 새 패치 매니저 코드 섹션(1002)이 코드 저장 섹션에 성공적으로 저장되지 않을 경우, 스패어 패치 라이브러리(1004)가 새 패키 매니저 코드 섹션(1002)을 파일 시스템 섹션(906)으로부터 코드 저장 섹션(908)에게로 이동시키는 데 사용된다. 그후, 시스템 소프트웨어 동작에 새 패치 매니저 코드 섹션(1002)이 사용될 수 있다. 스패어 패치 라이브러리(1004)가 없으면, 무선 장치가 새 패치 매니저 코드 섹션의 불완전한 저장으로부터 복구될 수가 없다.
도 12는 동적 명령 세트의 동적 명령 세트 백업 매니저(1200) 태양을 특징으로 하는 도 9의 시스템(900)에 대한 블록도표이다. 동적 명령 세트 백업 매니저는 백업 매니저(1200)라고 추후 호칭할 것이다. 명칭이 제시하는 바와 같이, 백업 매니저는 시스템 소프트웨어로 동작하지 않는 코드 섹션들로 대체된 시스템 데이터나 코드 섹션들을 복구하기 위한 시스템을 제공한다. 예를 들어, 파일 시스템 섹션(906)은 코드 저장 섹션(908)의 제 1 코드 섹션(1204)을 대체하기 위해 업데이트된 제 1 코드 섹션(1202)을 수신한다. 백업 매니저(1200)는 통상적으로 패치 매 니저 코드 섹션(1206)으로부터의 라이브러리를 이용하여, 코드 저장 섹션(908)으로부터 파일 시스템 섹션(906)에게로 제 1 코드 섹션(1204)을 이동시킨다. 패치 매니저 코드 섹션(1206)으로부터의 라이브러리를 이용함으로서, 업데이트된 코드 섹션(1202)이 파일 시스템 섹션(906)으로부터 코드 저장 섹션(908)에게로 이동한다. 백업 매니저(1200)는 코드 저장 섹션(908)의 업데이트된 제 1 코드 섹션(1202)이 지정 제약 내에서 시스템 소프트웨어로 동작하는 지를 결정한다. 업데이트된 제 1 코드 섹션(1202)이 지정 제약 내에서 시스템 소프트웨어와 함께 동작하지 않는다고 결정될 경우, 백업 매니저(1200)는 코드 저장 섹션(908)의 업데이트된 제 1 코드 섹션(1202)을 파일 시스템 섹션(906)으로부터의 제 1 코드 섹션(1204)으로 대체한다.
발명의 일부 태양에 따르면, 파일 시스템 섹션(906)은 지정 제약을 가진 테스트 코드 섹션(1208)을 수신한다. 코드 저장 섹션(908)의 업데이트된 제 1 코드 섹션(1202)이 업데이트된 코드 섹션을 가진 테스트 코드 섹션을 실행함으로서 지정 제약 내에서 시스템 소프트웨어로 동작하는 지를 백업 매니저(1200)가 결정한다. 백업 매니저는 테스트 코드 섹션(1208)의 실행 결과를 레코딩하여, 레코딩된 결과를 지정 제약과 비교한다. 발명의 또다른 태양에 따르면, 파일 시스템 섹션(906)이 업데이트된 코드 섹션으로부터 테스트 코드 라이브러리를 실행한다. 즉, 패치 매니저 런-타임 명령의 일부분으로 별도의 테스트 코드 섹션이 필요하지 않다.
파일 시스템 섹션(906)은 에어 링크 인터페이스(902, 도 9 참조), 사용자-조작형 키보드 인터페이스(도시되지 않음), 테스트 포트 인터페이스(가령, 로직 포 트, 시리얼 포트, 또는 RF 포트), 그리고 메모리 모듈같은 다양한 소스로부터 테스트 코드 섹션을 수신할 수 있다.
도 13은 동적 명령 세트의 동적 명령 세트 치밀화 매니저(1300) 태양을 특징으로 하는 도 9의 시스템(900)에 대한 블록도표이다. 상술한 바와 같이, 치밀화 매니저는 새 코드 섹션에 맞도록, 또는, 대체될 코드 섹션보다 큰 업데이트된 코드 섹션을 수용하도록, 코드 저장 섹션 내 코드 섹션을 조작할 책임이 있다. 예를 들어, 파일 시스템 섹션(906)은 업데이트된 코드 섹션 크기를 가진 업데이트된 제 1 코드 섹션(1302)을 수신하여, 업데이트된 제 1 코드 섹션 크기보다 작은 제 1 크기를 가진 제 1 코드 섹션(1304)을 대체한다. 치밀화 매니저(1300)는 패치 매니저 코드 섹션(1308)의 치밀화 라이브러리(1306)에 액세스하여, 업데이트된 제 1 코드 섹션(1302)을 수용하도록 코드 저장 섹션(908)의 코드 섹션 크기를 조정한다.
복구 상태 모니터링 매니저에서처럼, 치밀화 매니저(1300)도 코드 저장 섹션의 코드 섹션 치밀화에 관련된 위험도를 결정하여, 코드 섹션 치밀화의 위험도가 높을 경우 안전 예방책을 취한다. 예를 들어, 패치 매니저 코드 섹션이나 그 외 다른 시스템 소프트웨어 중요 부분의 치밀화가 위험하다. 왜냐하면, 무선 장치가 부적절한, 또는 완료되지 않은 치밀화 동작으로부터 복구될 수 없을 수가 있기 때문이다. 치밀화 매니저(1300)는 다음과 같은 안전 예방책을 취한다. 가령, 새 코드 저장 처리를 완료하기에 충분한 배터리 전력이 가용한 지를 확인하고, 사용자에게 코드 저장 동작의 위험도가 높음을 경고하며, 프람프트를 이용하여 사용자에 의해 개시되는 전력 오프를 확인하고, 그리고 사용자에 의해 개시되는 전력 오프를 방지 한다.
도 14는 동적 명령 세트의 동적 명령 세트 업데이트 순서지정 매니저(1400) 태양을 특징으로 하는 도 9의 시스템(900)에 대한 블록도표이다. 새롭거나 업데이트된 여러 코드 섹션들이 저장될 때, 업데이트 순서지정 매니저(1400)가 저장 순서를 결정한다. 예를 들어, 파일 시스템 섹션(906)은 제 1 새 코드 섹션(1402), 제 2 새 코드 섹션(1404), 그리고 제 3 새 코드 섹션(1406)처럼 다수의 새 코드 섹션을 가진 업데이트 순서지정 동적 명령 세트나 업데이트 순서지정 매니저(140)를 수신한다. 업데이트 순서지정 매니저(1400)는 순서지정 명령(1400)에 의해 지정되는 순서로 파일 시스템 섹션(906)으로부터 코드 저장 섹션(908)에게로 새 코드 섹션(1402-1406)을 이동시킨다.
도시되는 바와 같이, 제 2 새 코드 섹션(1404)이 먼저 이동하고(점선 1 참조), 제 1 새 코드 섹션(1402)이 두 번째로 이동하고(점선 2 참조), 제 3 새 코드 섹션이 세 번째로 이동한다(점선 3 참조). 이동 및 저장 동작은 패치 매니저 코드 섹션(1408)으로부터의 라이브러리의 도움으로 달성된다. 발명의 일부 태양에 따르면, 순서지정 매니저(1400)가 각각의 새 코드 섹션(1402-1406)을 저장함에 관련된 위험도를 결정하여, 위험도가 낮은 저장 섹션 다음에 위험도가 높은 코드 섹션을 이동하도록 정렬시킨다. 본 예에서, 업데이트 순서지정 매니저(1400)는 제 3 새 코드 섹션(1406)이 저장에 있어 가장 위험도가 높다고 결정하였다.
도 15a와 15b는 무선 통신 장치의 동적 명령 세트를 실행하기 위한 본 발명에 따른 방법을 설명하는 순서도이다. 이 방법은 단계 1500에서 시작한다. 단계1501A는 시스템 소프트웨어를 심벌 라이브러리로 형성하고, 이때, 각각의 심벌 라이브러리는 관련 기능을 가진 심벌들로 구성된다. 단계 1501b는 심벌 라이브러리들을 코드 섹션들로 배열한다. 단계1502는 시스템 소프트웨어를 실행한다. 단계 1503은 런-타임 엔진을 발진시킨다. 일반적으로, 런-타임 엔진 발진은 제 1 코드 섹션으로부터 런-타임 라이브러리를 불러들이는 과정을 포함한다. 런-타임 엔진은 휘발성 메모리로부터 발진될 수도 있고 비휘발성 메모리로부터 발진될 수도 있다. 단계 1503에 이어 단계 1504는 동적 명령 세트를 수신한다. 단계 1504에서 동적 명령 세트를 수신하는 단계는 에어 링크, RF 하드라인, 설치형 메모리 모듈, 적외선, 그리고 로직 포트 인터페이스 중에서 선택된 인터페이스를 통해 동적 명령 세트를 수신하는 단계를 포함한다. 발명의 일부 태양에 따르면, 단계 1504에서 동적 명령 세트를 수신하는 것은 파일 시스템 섹션 비휘발성 메모리의 패치 매니저 런-타임 명령(PMRTI)을 수신하는 과정을 포함한다.
단계 1506은 동적 명령 세트를 처리한다. 동적 명령 세트 처리는 수학적 및 논리적 연산에 따른 처리 명령을 포함한다. 발명의 일부 태양에서, 동적 명령 세트 처리에 이어지는 단계 1507(도시되지 않음)은 동적 명령 세트를 삭제한다. 단계 1508은 시스템 데이터 및 시스템 소프트웨어 상에서 동작한다. 단계 1510은 시스템 데이터 및 시스템 소프트웨어 상에서 동작한 결과에 따라, 시스템 소프트웨어 실행을 제어한다.
일반적으로, 단계 1504에서 패치 매니저 런-타임 명령을 수신하는 단계는 조건부 동작 코드 및 데이터 아이템들을 수신하는 과정을 포함한다. 그후, 단계 1506에서 동적 명령 세트 처리는 서브단계들을 포함한다. 단계1506a1은 패치 매니저 런-타임 명령 동작 코드를 읽어들이기 위해 런-타임 엔진을 이용한다. 단계 1506b는 동작 코드에 따라 동작들의 시퀀스를 실행한다.
발명의 일부 태양에서, 단계 1501b에서 심벌 라이브러리들을 코드 섹션들로 배열하는 것은 코드 섹션들의 시작점에서 심벌 라이브러리들을 시작하게 하고, 그리고 심벌들을 각 코드 섹션 시작 어드레스로부터 오프셋시키도록 배열한다. 이 방법은 추가 단계들을 포함한다. 단계 1501c는 해당 시작 어드레스에서 코드 섹션들의 시작점을 저장한다. 단계 1501d는 코드 섹션 식별자를 해당 시작 어드레스와 상호참조하는 코드 섹션 어드레스 테이블(CSAT)을 관리한다. 단계 1501e는 심벌 식별자들을 해당 오프셋 어드레스와, 그리고 해당 코드 섹션 식별자와 상호참조시키는 심벌 오프셋 어드레스 테이블(SOAT)을 관리한다.
발명의 일부 태양에 따르면, 단계 1504에서 패치 매니저 런-타임 명령을 수신하는 단계는 심벌 식별자들을 수신하는 단계를 포함한다. 그후, 이 방법은 추가적 단계를 포함한다. 단계 1506a2는 코드 섹션 어드레스 테이블과 심벌 오프셋 어드레스 테이블을 이용함으로서 수신 심벌 식별자에 해당하는 심벌을 위치시킨다. 단계 1506b에서의 동작 코드에 따라 동작 시퀀스를 실행하는 것은 서브단계들을 포함한다. 단계 1506b1은 위치한 심벌들이 데이터 아이템일 때 상기 데이터를 추출한다. 단계 1506b2는 위치한 심벌들이 명령들일 때 심벌들을 실행한다.
발명의 일부 태양에서, 단계 1506b1에서의 동적 명령 세트 처리는 추가 서브단계들을 포함한다. 단계 1506b1a는 런-타임 엔진을 이용하여 패치 매니저 런-타임 명령의 길이를 캡처할 수 있다. 단계 1506b1b는 동작 코드에 따라, 패치 매니저 런-타임 명령으로부터 데이터 아이템들을 추출한다. 단계 1506b1c는 동작 코드에 따라 동작 시퀀스를 실행함에 있어 추출된 데이터를 이용한다.
도 16은 일례의 동적 명령 세트 동작을 설명하는 순서도이다. 도 16의 단계들 중 여러 가지가 도 15에서와 동일하며, 따라서 여기서 반복설명하지 않는다. 단계 1606에서의 동적 명령 세트 처리는 서브단계들을 포함한다. 단계 1606a는 파일 시스템 섹션의 제 2 코드 섹션에 저장된 시스템 데이터에 액세스한다. 단계1606b는 시스템 데이터를 분석한다. 단계 1606c는 업데이트된 시스템 데이터를 생성한다. 그후, 단계 1608에서의 시스템 데이터 및 시스템 소프트웨어 상에서 동작하는 것은 제 2 섹션의 시스템 데이터를 업데이트된 시스템 데이터로 대체하는 과정을 포함하고, 단계1610에서의 시스템 소프트웨어 실행을 제어하는 것은 시스템 소프트웨어의 실행시 업데이트된 시스템 데이터를 이용하는 과정을 포함한다.
도 17은 일례의 동적 명령 세트 동작을 설명하는 순서도이다. 도 17의 여러 단계들이 도 15에서와 동일하여, 반복설명하지 않는다. 단계 1701c는 다수의 코드 섹션들을 코드 저장 섹션 비휘발성 메모리에 저장한다. 단계1706에서서의 동적 명령 세트 처리는 서브단계들을 포함한다. 단계 1706a는 코드 저장 섹션(CSS)의 제 3 코드 섹션에 저장된 시스템 데이터에 액세스한다. 단계 1706b는 시스템 데이터를 분석한다. 단계 1706c는 업데이트된 시스템 데이터를 생성한다. 단계 1708에서 시스템 데이터와 시스템 소프트웨어 상에서 동작하는 것은 제 3 코드 섹션의 시스템 데이터를 업데이트된 시스템 데이터로 대체하는 과정을 포함한다. 단계 1710에서 시스템 소프트웨어 실행을 제어하는 것은 시스템 소프트웨어의 실행에 업데이트된 시스템 데이터를 이용하는 과정을 포함한다.
도 18은 세 번째 예의 동적 명령 세트 동작을 설명하는 순서도이다. 이중 여러 단계가 도 15와 동일하여, 반복설명하지 않는다. 단계 1801c는 코드 저장 섹션 비휘발성 메모리에 다수의 코드 섹션들을 저장한다. 섹션 1801d는 판독-기록 데이터를 비휘발성 메모리로 로딩한다. 단계 1806에서의 동적 명령 세트 처리는 서브단계들을 포함한다. 단계 1806a는 휘발성 메모리 내의 판독-기록 데이터에 액세스한다. 단계 1806b는 판독-기록 데이터를 분석한다. 단계 1806c는 업데이트된 판독-기록 데이터를 생성한다. 단계1808에서 시스템 데이터 및 시스템 소프트웨어 상에서의 동작은 휘발성 메모리의 판독-기록 데이터를 업데이트된 판독-기록 데이터로 대체하는 과정을 포함한다. 단계 1810에서 시스템 소프트웨어 실행 제어는 시스템 소프트웨어 실행에 업데이트된 판독-기록 데이터를 이용하는 단계를 포함한다.
도 19는 네 번째 예의 동적 명령 세트 동작을 설명하는 순서도이다. 도 19 단계 중 여러개가 도 15와 동일하다. 따라서 반복설명하지 않는다. 동적 명령 세트 처리는 서브단계들을 포함한다. 단계 1906a는 동작 코드에 따라 시스템 소프트웨어 실행을 모니터링한다. 단계 1906b는 성능 데이터를 수집한다. 단계 1906c는 성능 데이터를 저장한다. 단계 1906d는 에어 링크 인터페이스를 통해 저장된 데이터를 전송한다. 단계 1908에서 시스템 데이터 및 시스템 소프트웨어 상의 동작은 시스템 소프트웨어 평가에 성능 데이터를 이용하는 과정을 포함한다. 단계 1910은 시스템 소프트웨어 실행을 제어한다.
도 20은 5번째 예의 동적 명령 세트 동작을 설명하는 순서도이다. 도 20의 단계들 중 여러개가 도 15에서와 동일하다. 따라서 반복설명하지 않는다. 단계 2001c는 코드 저장 섹션 비휘발성 메모리에 다수의 코드 섹션들을 저장한다. 단계 2003에서 패치 매니저 런-타임 명령을 수신하는 것은 새 코드 섹션을 수신하는 과정을 포함한다. 단계 2008에서 시스템 데이터 및 시스템 소프트웨어에 대한 동작은 코드 저장 섹션에 새 코드 섹션을 더하는 과정을 포함하고, 단계 2010에서 시스템 소프트웨어의 실행을 제어하는 것은 시스템 소프트웨어의 실행에 새 코드 섹션을 이용하는 과정을 포함한다.
대안으로, 단계 2003에서 새 코드 섹션을 수신하는 것은 업데이트된 코드 섹션을 수신하는 과정을 포함한다. 그후, 단계 2008에서의 시스템 데이터 및 시스템 소프트웨어에 대한 동작은 코드 저장 섹션의 제 4 코드 섹션을 업데이트된 코드 섹션으로 대체하는 과정을 포함한다.
도 21은 무선 통신 장치의 시스템 소프트웨어 다운로드 동작을 관리하기 위한 본 발명의 방법을 설명하는 순서도이다. 이 방법은 단계 2100에서 시작된다. 단계 2102는 시스템 소프트웨어를 심벌 라이브러리들로 형성한다. 이때, 각각의 심벌 라이브러리는 관련 기능을 가진 심벌들로 구성된다. 단계 2104는 비휘발성 메모링의 코드 저장 섹션에 저장된 코드 섹션들로 심벌 라이브러리들을 배열한다. 단계2106은 시스템 소프트웨어를 실행한다. 단계 2108은 런-타임 엔진을 발진시킨다. 단계 2110은 비휘발성 메모리의 파일 시스템 섹션에서, 패치 매니저 런-타임 명령(PMRTI)을 수신하며, 이때, 패치 매니저 런-타임 명령은 동적 명령 세트와 새 코드 섹션을 포함한다. 단계 2112는 동적 명령 세트를 처리한다. 단계 2114는 동적 명령 세트 처리에 따라, 에어 링크 인터페이스를 통해 수신되는 시스템 소프트웨어 업데이트의 다운로드를 관리한다. 단계 2116은 업데이트된 시스템 소프트웨어를 실행한다.
단계 2114에서 에어 링크 인터페이스를 통해 수신되는 시스템 소프트웨어 업데이트의 다운로드 관리는 복구 상태 모니터링, 백업, 치밀화, 그리고 업데이트 순서지정 중에서 선택된 동적 명령 세트 관리 기능들을 처리하는 과정을 포함한다.
도 22는 발명에 따른 복구 상태 모니터링 태양을 강조한 도 21의 세부사항 순서도이다. 단계 2112에서 복구 상태 모니터링 동적 명령 세트를 처리하는 것은 서브단계들을 포함한다. 단계 2200은 새 코드 섹션 식별자들을 그 업데이트 상태와 상호참조시키는 복구 상태 테이블을 관리한다. 단계 2202는, 무선 통신 장치 리부팅에 따라, 새 코드 섹션이 영구 기억 장치에 저장되었는 지를 결정하기 위해 복구 상태 테이블을 읽어들인다. 단계 2204는 새 코드 섹션이 저장되지 않았을 경우, 영구 기억 장치에 새 코드 섹션을 저장한다. 단계 2206은 새 코드 섹션이 저장되었을 때 복구 상태 테이블을 업데이트한다.
발명의 일부 태양은 추가적인 단계들을 포함한다. 단계 2202a는 각각의 새 코드 섹션을 저장함에 관련된 위험도를 결정한다. 단계 2202b는 새 코드 섹션 저장의 위험도가 높을 경우 안전 예방책을 취한다. 단계 2202b에서 안전 예방책을 취하는 것은 1) 새 코드 저장 처리를 완료하기에 충분한 배터리 전력이 있는 지를 확인하고, 2) 위험도가 높은 코드 저장 동작을 사용자에게 경고하며, 3) 프람프트를 이 용하여 사용자에 의해 개시되는 전력 오프를 확인하고, 그리고 4) 사용자에 의해 개시되는 전력 오프를 방지하는 이들 그룹 중에서 선택된 안전 예방책을 취하는 과정을 포함한다.
단계 2202a에서 각각의 새 코드 섹션을 저장함에 관련된 위험도 결정은 부트 코드 섹션, 패치 매니저 코드 섹션, 코드 섹션 어드레스 테이블, 심벌 오프셋 어드레스 테이블, 판독-기록 데이터, 심벌 액세서 코드 어드레스를 포함한 그룹 중에서 선택된 새 코드 섹션들에 관련된 위험도를 결정하는 과정을 포함한다.
발명의 일부 태양에 따르면, 도 21의 단계 2102에서 시스템 소프트웨어를 심벌 라이브러리로 형성하는 것은, 파일 시스템 섹션의 코드 섹션들을 영구 기억 장치로 이동시키기 위해 패치 라이브러리를 가진 패치 매니저 코드 섹션을 형성하는 과정을 포함한다. 파일 시스템 섹션 비휘발성 메모리에서 패치 매니저 런-타임 명령을 수신하는 것(도 21의 단계 2110)은 새 패치 매니저 코드 섹션을 수신하는 과정을 포함한다. 그후, 복구 상태 모니터링 동적 명령 세트를 처리하는 것은 추가적인 서브단계들을 포함한다. 단계 2202c는 파일 시스템 섹션에 스패어 패치 라이브러리를 관리한다. 단계 2202는 무선 통신 장치 리부팅에 따라 새 패치 매니저 코드 섹션이 코드 저장 섹션에 성공적으로 저장되었는 지를 결정하기 위해 복구 상태 테이블을 읽어들인다. 단계 2202d는 새 패치 매니저 코드 섹션이 코드 저장 섹션에 정상적으로 저장되지 않았을 경우, 파일 시스템 섹션으로부터 코드 저장 섹션에게로 새 패치 매니저 코드 섹션을 이동시키기 위해 스패어 패치 라이브러리를 이용한다.
도 23은 발명에 따른 백업 태양을 강조한 도 21의 세부사항 순서도이다. 새 코드 섹션을 수신하는 것(도 21의 단계 2110)은 코드 저장 섹션의 제 1 코드 섹션을 대체하기 위해 업데이트된 제 1 코드 섹션을 수신하는 과정을 포함한다. 그후, 단계 2112에서 백업 관리 동적 명령 세트를 처리하는 것은 서브단계들을 포함한다. 단계 2300은 제 1 코드 섹션을 코드 저장 섹션으로부터 파일 시스템 섹션에게로 이동시킨다. 단계 2302는 코드 저장 섹션의 업데이트된 제 1 코드 섹션이 지정 제약 내에서 시스템 소프트웨어로 동작하는 지를 결정한다. 단계2304는, 업데이트된 제 1 코드 섹션이 지정 제약 내에서 시스템 소프트웨어로 동작하지 않는다고 결정될 경우, 코드 저장 섹션의 업데이트된 제 1 코드 섹션을 파일 시스템 섹션으로부터의 제 1 코드 섹션으로 대체한다.
발명의 일부 태양에 따르면, 새 코드 섹션을 수신하는 것(단계 2110, 도 21)은 지정 제약을 가진 테스트 코드 섹션을 수신하는 과정을 포함한다. 그후, 코드 저장 섹션의 업데이트된 제 1 코드 섹션이 단계 2302에서 지정 제약 내에서 시스템 소프트웨어로 동작하는 지를 결정하는 것은(단계 2302), 서브단계들을 포함한다. 단계 2302a는 업데이트된 코드 섹션을 가진 테스트 코드 섹션을 실행한다. 단계 2302b는 테스트 코드 섹션을 실행한 결과를 레코딩한다. 단계2302c는 레코딩된 결과를 지정 제약과 비교한다.
발명의 일부 태양에 따르면, 새 코드 섹션을 수신하는 것(단계 2110, 도 21)은 테스트 코드 라이브러리를 가진 업데이트된 코드 섹션을 수신하는 과정을 포함한다. 그후, 코드 저장 섹션의 업데이트된 제 1 코드 섹션이 지정 제약 내에서 시스템 소프트웨어로 동작하는 지를 결정하는 것(단계 2302)은 업데이트된 코드 섹션 으로부터 테스트 코드 라이브러리를 실행하는 과정을 포함한다. 새 코드 섹션을 수신하는 것(단계 2110, 도 21)은 에어 링크 인터페이스, 사용자-조작형 키보드 인터페이스, 그리고 테스트 포트 인터페이스를 포함한 그룹 중에서 선택된 소스로부터 지정 제약을 가진 테스트 코드 섹션을 수신하는 과정을 포함한다.
도 24는 발명의 치밀화 태양을 강조한 도 21의 세부사항 순서도이다. 새 코드 섹션을 수신하는 것(도 21, 단계 2110)은 업데이트된 코드 섹션 크기를 가진 업데이트된 제 1 코드 섹션을 수신하여, 업데이트된 제 1 코드 섹션 크기보다 작은 제 1 크기의 제 1 코드 섹션을 대체하게 한다. 치밀화 관리 동적 명령 세트를 처리하는 것(단계 2112)은 서브단계들을 포함한다. 단계 2400은 패치 매니저 코드 섹션의 치밀화 라이브러리에 액세스한다. 단계 2402는 업데이트된 제 1 코드 섹션을 수용하도록 코드 저장 섹션의 코드 섹션 크기를 조정(resizing)한다.
발명의 일부 태양에 따르면, 추가적인 단계 2400a가 코드 저장 섹션의 코드 섹션 치밀화에 관련된 위험도를 결정한다. 단계 2400b는 코드 섹션 치밀화의 위험도가 높을 경우 안전 예방책을 취한다. 단계 2400b에서 안전 예방책을 취하는 것은 1) 새 코드 저장 처리를 완료하기에 충분한 배터리 전력이 있는 지를 확인하고, 2) 위험도가 높은 코드 저장 동작을 사용자에게 경고하며, 3) 프람프트를 이용하여 사용자에 의해 개시되는 전력 오프를 확인하고, 그리고 4) 사용자에 의해 개시되는 전력 오프를 방지하는 이들 그룹 중에서 선택된 안전 예방책을 취하는 과정을 포함한다.
도 25는 발명의 업데이트 순서지정 태양을 강조한 도 21의 세부사항 순서도 이다. 동적 명령 세트를 수신하는 것(단계2110, 도 21)은 업데이트 순서지정 명령을 수신하는 과정을 포함하고, 새 코드 섹션을 수신하는 것은 다수의 새 코드 섹션을 수신하는 과정을 포함한다. 업데이트 순서지정 관리 동적 명령 세트를 처리하는 것(단계 2112)은 순서지정 명령에 의해 지정된 순서로 새 코드 섹션을 파일 시스템 섹션으로부터 코드 저장 섹션으로 이동시키는 과정을 포함한다.
발명의 일부 태양에 따르면, 업데이트 순서지정 동적 명령 세트를 처리하는 것(단계 2112)은 서브단계들을 포함한다. 단계 2500은 각각의 새 코드 섹션을 저장함에 관련된 위험도를 결정한다. 단계 2502는 위험도가 낮은 저장 섹션을 이동시킨 후 위험도가 높은 코드 섹션을 이동시키도록 순서를 지정한다.
소프트웨어 업그레이드의 다운로드를 관리하기 위한 처리과정을 돕도록, 무선 통신 장치의 동적 명령 세트를 실행하기 위한 시스템 및 방법이 위와같이 제시되었다. 이 시스템은, 심벌 라이브러리들 내 심벌들의 오프셋 어드레스와 메모리 내 코드섹션의 시작 어드레스에 액세스하기 위한 테이블을 이용하여, 코드 섹션의 심벌 라이브러리들 배열 때문에 쉽게 업데이트될 수 있다. 동적 명령 세트 이용은 상기 장치의 구체적 특성을 바탕으로 각각의 무선 장치마다 개별적인 수정을 가능하게 한다.

Claims (38)

  1. 무선 통신 장치 상의 오버-더-에어(over-the-air) 소프트웨어 업데이트 동작을 관리하기 위한 방법에 있어서, 상기 방법은
    에어 링크 인터페이스(air link interface)를 통해 소프트웨어 업데이트를 수신하는 단계로서, 상기 소프트웨어 업데이트는 새로운 코드 섹션(new code section)과 명령 세트(instruction set)를 포함하는 단계,
    상기 명령 세트를 획득하기 위해 소프트웨어 업데이트를 파싱(parsing)하는 단계,
    상기 명령 세트를 처리하도록 구성되는 런-타임 명령 엔진을 발진시키는 단계,
    상기 명령 세트를 기반으로 하여, 대체될 현재 코드 섹션을 식별하는 단계, 그리고
    상기 현재 코드 섹션을 상기 새로운 코드 섹션으로 대체하는 단계
    를 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  2. 제 1 항에 있어서, 상기 대체하는 단계는
    비휘발성 메모리의 파일 시스템 섹션에 새로운 코드 섹션을 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  3. 제 1 항에 있어서, 상기 명령 세트는 복구 상태(recovery status) 명령 세트를 포함하며, 상기 방법은,
    새로운 코드 섹션을 식별하기 위한 식별자 필드와, 상기 새로운 코드 섹션의 소프트웨어 업데이트 상태를 식별하기 위한 관련 상태 필드를 갖는 복구 상태 테이블(recovery status table)을 휘발성 메모리로 로딩하는 단계,
    현재의 코드 섹션을 새로운 코드 섹션으로 성공적으로 대체한 후에, 상기 새로운 코드 섹션을 위한 복구 상태 테이블을 업데이트하는 단계, 그리고
    상기 복구 상태 테이블을 비휘발성 메모리에 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  4. 제 3 항에 있어서, 상기 복구 상태 테이블은, 상기 현재 코드 섹션을 새로운 코드 섹션과 대체하는 것에 관련한 위험도를 식별하기 위한 위험도 필드를 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  5. 제 4 항에 있어서,
    상기 무선 통신 장치가 온 상태로 켜질 때 상기 비휘발성 메모리로부터 복구 상태 테이블을 판독하는 단계,
    제 2 새로운 코드 섹션에 의해 대체되지 않은 제 2 현재 코드 섹션을 식별하는 단계, 그리고
    상기 제 2 현재 코드를 상기 제 2 새로운 코드 섹션으로 대체하는 단계
    를 더 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  6. 제 5 항에 있어서, 상기 제 2 현재 코드 섹션을 상기 제 2 새로운 코드 섹션으로 대체하는 것에 대한 위험도를 판단하는 단계를 더 포함하며, 이때 상기 제 2 새로운 섹션이,
    새로운 부트 코드 섹션(new boot code section),
    새로운 패치 매니저 코드 섹션(new patch manager code section),
    새로운 코드 섹션 어드레스 테이블,
    새로운 심벌 오프셋 어드레스 테이블,
    새로운 심벌 보조 코드 어드레스(symbol accessory code address)
    중 하나 이상을 포함하는 경우, 상기 위험도는 높으며, 이때 새로운 코드 섹션이 새로운 판독-기록 데이터를 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  7. 제 6 항에 있어서, 상기 현재 코드 섹션을 대체하기 위해 충분한 배터리 파워가 유효한지를 판단하기 위해, 지정된 배터리 파워 레벨에 배터리 파워 레벨을 비교하는 단계를 더 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  8. 제 5 항에 있어서, 상기 대체되는 단계 동안, 무선 통신 장치의 사용자 초기화된 파워의 하강을 방지하는 단계를 더 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  9. 제 1 항에 있어서, 상기 명령 세트는 데이터 백업 명령을 포함하며, 상기 대체 단계는
    비휘발성 메모리의 코드 섹션 저장소로부터 상기 비휘발성 메모리의 파일 시스템 저장소로 현재 코드 섹션을 복사하는 단계, 그리고
    코드 섹션 저장소로 상기 새로운 코드 섹션을 설치하는 단계
    를 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  10. 제 9 항에 있어서,
    상기 새로운 코드 섹션에 대한 코드 섹션 테스트를 실행하는 단계,
    상기 코드 섹션 테스트의 결과를 기록하는 단계, 그리고
    상기 새로운 코드 섹션이 동작되는지의 여부를 판단하기 위해, 상기 코드 섹션 테스트의 결과를 지정된 값과 비교하는 단계
    를 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  11. 제 10 항에 있어서, 에어 링크 인터페이스를 통해 수신되는 소프트웨어 업데이트가 코드 섹션 테스트를 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  12. 제 10 항에 있어서, 상기 코드 섹션 테스트는
    명령 세트, 그리고
    새로운 코드 섹션
    중 하나의 일부분임을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  13. 제 9 항에 있어서, 상기 비휘발성 메모리의 코드 섹션 저장소의 새로운 코드 섹션을, 상기 비휘발성 메모리의 파일 시스템 저장소의 현재 코드 섹션과 대체하는 단계
    를 더 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  14. 제 1 항에 있어서, 상기 소프트웨어 업데이트는 다수의 새로운 코드 섹션을 포함하며, 상기 명령 세트는 업데이트 순서 명령 세트를 포함하며, 상기 방법은
    다수의 현재 코드 섹션을 다수의 새로운 코드 섹션으로 대체함에 따른 다수의 위험도를 판단하는 단계, 그리고
    상기 다수의 위험도를 바탕으로 상기 다수의 새로운 코드 섹션에 대한 설치 순서의 우선순위를 정하는 단계
    를 더 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  15. 제 14 항에 있어서, 상기 설치 순서는 가장 낮은 위험도에서 가장 높은 위험도 순으로 진행되는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 방법.
  16. 무선 통신 장치 상의 오버-더-에어(over-the-air) 소프트웨어 업데이트 동작을 관리하기 위한 시스템에 있어서, 상기 시스템은
    무선 장치를 무선 통신 네트워크로 통신가능하도록 연결시키는 에어 링크 인터페이스(air link interface)로서, 새로운 코드 섹션(new code section)과 명령의 세트를 포함하는 소프트웨어 업데이트를 수신하도록 구성되는 상기 에어 링크 인터페이스(air link interface),
    상기 에어 링크 인터페이스로부터 소프트웨어 업데이트를 수신하도록 구성되는 런-타임 엔진으로서, 상기 새로운 코드 섹션으로 대체될 현재의 코드 섹션을 식별하고, 상기 새로운 코드 섹션으로 현재의 코드 섹션을 대체하는 상기 런-타임 엔진
    을 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  17. 제 16 항에 있어서,
    비휘발성 메모리,
    상기 비휘발성 메모리에 저장된 복구 상태 테이블(recovery status table)
    을 더 포함하며, 상기 복구 상태 테이블은
    상기 새로운 코드 섹션을 식별하기 위한 식별자 필드, 그리고
    상기 새로운 코드 섹션의 소프트웨어 업데이트 상태를 식별하기 위한 관련 상태 필드
    를 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  18. 제 17 항에 있어서, 상기 복구 상태 테이블은,
    소프트웨어 업데이트와 관련하여, 상기 새로운 코드 섹션을 설치하는 것에 연관된 위험도를 식별하기 위한 위험도 필드
    를 더 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  19. 제 18 항에 있어서, 무선 통신 장치의 파워 상승에 응답하여 복구 상태 테이블을 판독하고, 불완전한 상태를 갖는 제 2 새로운 코드 세션을 비휘발성 메모리의 코드 섹션 저장소로 설치하도록 구성된 복구 상태 매니저
    를 더 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  20. 제 19 항에 있어서, 상기 복구 상태 매니저는 불완전한 상태를 갖는 각각의 새로운 코드 섹션과 연계된 위험도를 판단하도록 더 구성되는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  21. 제 20 항에 있어서, 상기 소프트웨어 업데이트가
    새로운 부트 코드 섹션(new boot code section),
    새로운 패치 매니저 코드 섹션(new patch manager code section),
    새로운 코드 섹션 어드레스 테이블,
    새로운 심벌 오프셋 어드레스 테이블,
    새로운 심벌 보조 코드 어드레스(new symbol accessory code address)
    중 하나 이상을 포함하는 경우, 상기 위험도는 높으며, 이때 상기 새로운 코드 섹션은 새로운 판독-기록 데이터를 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  22. 제 20 항에 있어서, 상기 새로운 코드 섹션으로 상기 현재 코드 섹션을 대체하기 위해 충분한 배터리 파워가 유효한지를 판단하기 위해, 지정된 배터리 파워 레벨에 배터리 파워 레벨을 비교하도록 더 구성되는 것을 더 포함하는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  23. 제 20 항에 있어서, 상기 런-타임 엔진은, 소프트웨어 업데이트 동작 동안, 무선 통신 장치의 사용자 초기화된 파워의 하강을 방지하도록 더 구성되는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  24. 제 20 항에 있어서, 상기 소프트웨어 업데이트는 코드 섹션 테스트를 더 포함하며, 이때 상기 런-타임 엔진은 상기 코드 섹션 테스트를 실행하고, 상기 새로운 코드 섹션이 동작되는지의 여부를 판단하기 위해, 상기 코드 섹션 테스트의 결과를 지정된 테스트 결과와 비교하도록 더 구성되는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  25. 제 24 항에 있어서, 상기 코드 섹션 테스트는
    새로운 코드 섹션의 일부,
    명령 세트의 일부, 그리고
    별도의 코드 섹션
    중 하나인 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  26. 제 24 항에 있어서, 파일 시스템 저장소에서 예비 패치 라이브러리(spare patch library)를 더 포함하며, 상기 예비 패치 라이브러리는 파일 시스템 저장소로부터 코드 섹션 저장소로 상기 새로운 코드 섹션을 설치하기 위해 런-타임 엔진에 의해 실행가능한 명령을 갖는 것을 특징으로 하는 무선 통신 장치 상의 오버-더-에어 소프트웨어 업데이트 동작을 관리하기 위한 시스템.
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
KR1020047000723A 2001-07-26 2002-07-22 무선 통신 장치의 시스템 소프트웨어 다운로드 관리시스템 및 방법 KR100911604B1 (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US09/916,460 US7159214B2 (en) 2001-07-26 2001-07-26 System and method for compacting field upgradeable wireless communication device software code sections
US09/917,026 US7328007B2 (en) 2001-07-26 2001-07-26 System and method for organizing wireless communication device system software
US09/916,460 2001-07-26
US09/916,900 2001-07-26
US09/916,900 US7027806B2 (en) 2001-07-26 2001-07-26 System and method for field downloading a wireless communications device software code section
US09/917,026 2001-07-26
US09/927,131 2001-08-10
US09/927,131 US7143407B2 (en) 2001-07-26 2001-08-10 System and method for executing wireless communications device dynamic instruction sets
US09/969,305 US7386846B2 (en) 2001-07-26 2001-10-02 System and method for the management of wireless communications device system software downloads in the field
US09/969,305 2001-10-02
PCT/IB2002/002875 WO2003010663A2 (en) 2001-07-26 2002-07-22 System and method for the management of wireless communications device system software downloads in the field

Publications (2)

Publication Number Publication Date
KR20040022463A KR20040022463A (ko) 2004-03-12
KR100911604B1 true KR100911604B1 (ko) 2009-08-07

Family

ID=27542295

Family Applications (10)

Application Number Title Priority Date Filing Date
KR1020047000719A KR100940178B1 (ko) 2001-07-26 2002-07-22 무선 통신 장치의 현장 업그레이드형 소프트웨어 조직시스템 및 방법
KR1020047000721A KR100940180B1 (ko) 2001-07-26 2002-07-22 무선 통신 장치의 업데이트 명령 실행 방법 및 시스템
KR1020047000723A KR100911604B1 (ko) 2001-07-26 2002-07-22 무선 통신 장치의 시스템 소프트웨어 다운로드 관리시스템 및 방법
KR1020047000718A KR100913658B1 (ko) 2001-07-26 2002-07-23 현장 업그레이드형 무선 통신 장치 소프트웨어 코드 섹션치밀화 시스템 및 방법
KR1020047000725A KR100918162B1 (ko) 2001-07-26 2002-07-23 무선 통신 장치 시스템 소프트웨어의 현장 진단 시스템 및방법
KR1020047000726A KR100913659B1 (ko) 2001-07-26 2002-07-23 무선 통신 장치의 지속성 데이터 업데이트 방법 및 시스템
KR1020047000716A KR100940179B1 (ko) 2001-07-26 2002-07-23 무선 통신 장치 소프트웨어 코드 섹션의 현장 다운로드시스템 및 방법
KR1020047001087A KR100932058B1 (ko) 2001-07-26 2002-07-25 피어 투 피어 핸드셋 통신 시스템 및 방법
KR1020047001088A KR100984895B1 (ko) 2001-07-26 2002-07-25 핸드셋 리프로그래밍의 보안성 개선 시스템 및 방법
KR1020047001086A KR100817387B1 (ko) 2001-07-26 2002-07-25 양방향 통신 및 동적 명령 세트 실행 시스템 및 방법

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020047000719A KR100940178B1 (ko) 2001-07-26 2002-07-22 무선 통신 장치의 현장 업그레이드형 소프트웨어 조직시스템 및 방법
KR1020047000721A KR100940180B1 (ko) 2001-07-26 2002-07-22 무선 통신 장치의 업데이트 명령 실행 방법 및 시스템

Family Applications After (7)

Application Number Title Priority Date Filing Date
KR1020047000718A KR100913658B1 (ko) 2001-07-26 2002-07-23 현장 업그레이드형 무선 통신 장치 소프트웨어 코드 섹션치밀화 시스템 및 방법
KR1020047000725A KR100918162B1 (ko) 2001-07-26 2002-07-23 무선 통신 장치 시스템 소프트웨어의 현장 진단 시스템 및방법
KR1020047000726A KR100913659B1 (ko) 2001-07-26 2002-07-23 무선 통신 장치의 지속성 데이터 업데이트 방법 및 시스템
KR1020047000716A KR100940179B1 (ko) 2001-07-26 2002-07-23 무선 통신 장치 소프트웨어 코드 섹션의 현장 다운로드시스템 및 방법
KR1020047001087A KR100932058B1 (ko) 2001-07-26 2002-07-25 피어 투 피어 핸드셋 통신 시스템 및 방법
KR1020047001088A KR100984895B1 (ko) 2001-07-26 2002-07-25 핸드셋 리프로그래밍의 보안성 개선 시스템 및 방법
KR1020047001086A KR100817387B1 (ko) 2001-07-26 2002-07-25 양방향 통신 및 동적 명령 세트 실행 시스템 및 방법

Country Status (9)

Country Link
EP (12) EP1410191A2 (ko)
JP (11) JP4104546B2 (ko)
KR (10) KR100940178B1 (ko)
CN (10) CN1288553C (ko)
AT (9) ATE387658T1 (ko)
AU (9) AU2002319572A1 (ko)
DE (7) DE60205755T2 (ko)
ES (9) ES2300454T3 (ko)
WO (10) WO2003010663A2 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143407B2 (en) * 2001-07-26 2006-11-28 Kyocera Wireless Corp. System and method for executing wireless communications device dynamic instruction sets
JP4417123B2 (ja) 2003-02-19 2010-02-17 パナソニック株式会社 ソフトウェア更新方法及び無線通信装置
US7644404B2 (en) 2003-06-04 2010-01-05 Hewlett-Packard Development Company, L.P. Network having customizable generators and electronic device having customizable updating software
US7873956B2 (en) 2003-09-25 2011-01-18 Pantech & Curitel Communications, Inc. Communication terminal and communication network for partially updating software, software update method, and software creation device and method therefor
US7257583B2 (en) 2004-01-09 2007-08-14 Microsoft Corporation System and method for updating an on-device application catalog in a mobile device receiving a push message from a catalog server indicating availability of an application for download
KR100620729B1 (ko) * 2004-03-31 2006-09-13 주식회사 팬택앤큐리텔 소프트웨어 이미지 생성 방법
KR100841510B1 (ko) * 2004-05-18 2008-06-25 키오세라 와이어리스 코포레이션 무선 통신 장치를 위한 모듈식 데이터 구성요소
GB2416876B (en) * 2004-08-03 2007-01-10 Nec Technologies Export file processing within a mobile radio communications device
US7512939B2 (en) * 2004-10-05 2009-03-31 Neopost Technologies System and method of secure updating of remote device software
EP1659810B1 (en) * 2004-11-17 2013-04-10 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Updating configuration parameters in a mobile terminal
US9148409B2 (en) 2005-06-30 2015-09-29 The Chamberlain Group, Inc. Method and apparatus to facilitate message transmission and reception using different transmission characteristics
US8422667B2 (en) 2005-01-27 2013-04-16 The Chamberlain Group, Inc. Method and apparatus to facilitate transmission of an encrypted rolling code
USRE48433E1 (en) 2005-01-27 2021-02-09 The Chamberlain Group, Inc. Method and apparatus to facilitate transmission of an encrypted rolling code
CA2577244A1 (en) * 2005-04-18 2006-10-26 Research In Motion Limited Method and system for controlling software version updates
CN100442708C (zh) * 2005-06-17 2008-12-10 上海华为技术有限公司 一种主备备份的方法及系统
CN100476728C (zh) * 2005-08-19 2009-04-08 光宝科技股份有限公司 应用程序更新方法及使用上述方法的移动通讯装置
CN100410893C (zh) * 2005-09-28 2008-08-13 联想(北京)有限公司 自行修复嵌入式设备的主控应用程序的方法及设备
CN1980447B (zh) * 2005-12-06 2010-06-16 中兴通讯股份有限公司 一种通信系统软件版本的平滑升级方法
CN101401072B (zh) * 2006-03-10 2010-12-15 富士通株式会社 应用补丁筛选装置以及应用补丁筛选方法
US8209676B2 (en) 2006-06-08 2012-06-26 Hewlett-Packard Development Company, L.P. Device management in a network
EP2047420A4 (en) 2006-07-27 2009-11-18 Hewlett Packard Development Co USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE
CN100403263C (zh) * 2006-08-16 2008-07-16 华为技术有限公司 按配置下载设备软件的方法
KR100924647B1 (ko) * 2008-08-07 2009-11-02 주식회사 케이티 모바일 플랫폼 런타임 다이나믹 링킹 라이브러리 관리 방법및 시스템
KR20110135989A (ko) 2009-04-07 2011-12-20 센션트 컬러스 엘엘씨 자가-분산 입자 및 그의 제조 및 사용 방법
CN101539885B (zh) * 2009-04-23 2011-06-08 大唐微电子技术有限公司 一种无线通信模块软件自主空中升级的方法、装置及系统
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
CN102253847A (zh) * 2010-05-19 2011-11-23 宏碁股份有限公司 制作系统软件的系统及系统软件的部署方法
US8756256B2 (en) * 2010-05-26 2014-06-17 Qualcomm Incorporated Method and systems for the management of non volatile items and provisioning files for a communication device with multiple service accounts
EP2917837B1 (en) * 2012-11-09 2019-01-02 Coherent Logix Incorporated Real time analysis and control for a multiprocessor system
US10064251B2 (en) * 2013-03-15 2018-08-28 Cree, Inc. Updatable lighting fixtures and related components
CN103345412B (zh) * 2013-07-10 2016-08-24 华为技术有限公司 打补丁的方法及装置
US10652743B2 (en) 2017-12-21 2020-05-12 The Chamberlain Group, Inc. Security system for a moveable barrier operator
CA3139264A1 (en) * 2018-05-04 2019-11-07 Herdx, Inc. Food supply tracking, verification, and feedback system
US11074773B1 (en) 2018-06-27 2021-07-27 The Chamberlain Group, Inc. Network-based control of movable barrier operators for autonomous vehicles
WO2020028502A1 (en) 2018-08-01 2020-02-06 The Chamberlain Group, Inc. Movable barrier operator and transmitter pairing over a network
KR102176204B1 (ko) 2018-10-15 2020-11-09 김용대 유명인 사용물품 기부 중개 서비스 방법
US10997810B2 (en) 2019-05-16 2021-05-04 The Chamberlain Group, Inc. In-vehicle transmitter training
JP7461755B2 (ja) * 2020-02-21 2024-04-04 日立Astemo株式会社 情報処理装置、プログラム更新システム、及びプログラム更新方法
US11588924B2 (en) * 2020-10-29 2023-02-21 Hewlett Packard Enterprise Development Lp Storage interface command packets over fibre channel with transport and network headers as payloads

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715462A (en) 1994-04-12 1998-02-03 Ntt Data Communications Systems Corporation Updating and restoration method of system file
DE19850133A1 (de) * 1997-11-07 1999-05-27 Nissan Motor System zum Neuprogrammieren eines Steuerspeichers
EP1014263A2 (en) * 1998-12-14 2000-06-28 Applied Microsystems Corporation Method and system for modifying executable code to add additional functionality
GB2349485A (en) 1999-04-23 2000-11-01 Ibm Applying software patches across multi-platform systems

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8901932D0 (en) * 1989-01-28 1989-03-15 Int Computers Ltd Data processing system
FR2662891A1 (fr) * 1990-05-30 1991-12-06 Cit Alcatel Dispositif de telechargement de logiciel pour un terminal de telecommunication.
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
JPH07182178A (ja) * 1993-02-19 1995-07-21 Nec Corp プリロードモジュール修正システム
US5488648A (en) * 1993-08-17 1996-01-30 Telefonaktiebolaget L M Ericsson Behavior monitoring and analyzing system for stored program controlled switching system
US5845090A (en) * 1994-02-14 1998-12-01 Platinium Technology, Inc. System for software distribution in a digital computer network
US5734904A (en) * 1994-11-14 1998-03-31 Microsoft Corporation Method and system for calling one of a set of routines designed for direct invocation by programs of a second type when invoked by a program of the first type
JPH08166877A (ja) * 1994-12-13 1996-06-25 Olympus Optical Co Ltd 修正プログラムの実行可能なワンチップマイクロコンピュータ及びrom修正可能なマイクロコンピュータ
DE19502728A1 (de) * 1995-01-28 1996-08-01 Philips Patentverwaltung Telekommunikationsvorrichtung
US5673317A (en) * 1995-03-22 1997-09-30 Ora Electronics, Inc. System and method for preventing unauthorized programming of wireless network access devices
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
DE19527808C2 (de) * 1995-07-28 1999-04-01 Siemens Ag Verfahren zum Modifizieren der Softwareprozeduren eines Kommunikationssystems
DE19543843C2 (de) * 1995-11-24 2001-02-08 Acer Peripherals Inc Verfahren zur Aktualisierung der Software in einem mikrocomputergestützten Telefon
WO1998009208A2 (en) * 1996-08-28 1998-03-05 Wind River Systems, Inc. A tool for software diagnosis divided across multiple processors
US6247065B1 (en) * 1996-12-26 2001-06-12 At&T Corp. Messaging platform process
US6023620A (en) * 1997-02-26 2000-02-08 Telefonaktiebolaget Lm Ecrisson Method for downloading control software to a cellular telephone
US5938766A (en) * 1997-03-21 1999-08-17 Apple Computer, Inc. System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables
SE512110C2 (sv) * 1997-06-17 2000-01-24 Ericsson Telefon Ab L M System och förfarande för att kundanpassa trådlösa kommunikationsenheter
JPH1115689A (ja) * 1997-06-19 1999-01-22 Nec Corp ソフトウェアのデバッグ方法及びデバッグ・プログラムを記録した記録媒体
US5974312A (en) * 1997-07-10 1999-10-26 Ericsson Inc. System and method for updating a memory in an electronic device via wireless data transfer
US6496979B1 (en) * 1997-10-24 2002-12-17 Microsoft Corporation System and method for managing application installation for a mobile device
JPH11146011A (ja) * 1997-11-11 1999-05-28 Nec Corp 電子メールシステム及び電子メールサーバ及び通信端末
JP3337062B2 (ja) * 1997-11-21 2002-10-21 日本電気株式会社 無線データ転送方法及びそのシステム
US6275694B1 (en) * 1997-12-19 2001-08-14 Vlsi Technology, Inc. Method for remotely updating software code for personal handy phone system equipment
US6438711B2 (en) * 1998-07-15 2002-08-20 Intel Corporation Method and apparatus for performing field diagnostics on a computer system
SE516806C2 (sv) * 1999-05-26 2002-03-05 Ericsson Telefon Ab L M Sätt för inladdning av programvara i en radioterminal, såsom en mobiltelefon, och tillhörande radioterminal
US6282647B1 (en) * 1999-06-02 2001-08-28 Adaptec, Inc. Method for flashing a read only memory (ROM) chip of a host adapter with updated option ROM bios code
FR2800963B1 (fr) * 1999-11-09 2001-12-07 Wavecom Sa Procede de mise a jour d'un programme principal execute par un module de radiocommunication et/ou de donnees associees a ce programme principal, et module de radiocommunication correspondant
US7264532B2 (en) * 2004-12-27 2007-09-04 Tsan-Yao Chen Cup structure

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715462A (en) 1994-04-12 1998-02-03 Ntt Data Communications Systems Corporation Updating and restoration method of system file
DE19850133A1 (de) * 1997-11-07 1999-05-27 Nissan Motor System zum Neuprogrammieren eines Steuerspeichers
EP1014263A2 (en) * 1998-12-14 2000-06-28 Applied Microsystems Corporation Method and system for modifying executable code to add additional functionality
GB2349485A (en) 1999-04-23 2000-11-01 Ibm Applying software patches across multi-platform systems

Also Published As

Publication number Publication date
CN1235138C (zh) 2006-01-04
WO2003010942A2 (en) 2003-02-06
JP4104546B2 (ja) 2008-06-18
AU2002319570A1 (en) 2003-02-17
ES2247355T3 (es) 2006-03-01
WO2003012639A3 (en) 2003-12-24
CN1275150C (zh) 2006-09-13
DE60206389T2 (de) 2006-07-13
JP4101752B2 (ja) 2008-06-18
ES2263796T3 (es) 2006-12-16
WO2003010662A2 (en) 2003-02-06
EP1423959A2 (en) 2004-06-02
WO2003010664A3 (en) 2003-12-24
KR20040022460A (ko) 2004-03-12
KR20040022461A (ko) 2004-03-12
DE60211704T2 (de) 2007-05-10
DE60211704D1 (de) 2006-06-29
CN1288554C (zh) 2006-12-06
EP1601217B1 (en) 2007-04-11
CN1279447C (zh) 2006-10-11
DE60205755T2 (de) 2006-06-29
WO2003010932A3 (en) 2004-04-08
CN1535420A (zh) 2004-10-06
WO2003010932A2 (en) 2003-02-06
EP1425894B1 (en) 2005-11-16
CN1288553C (zh) 2006-12-06
WO2003012639A2 (en) 2003-02-13
WO2003010664A2 (en) 2003-02-06
ATE359681T1 (de) 2007-05-15
DE60219536D1 (de) 2007-05-24
EP1410190B1 (en) 2005-08-24
JP4073399B2 (ja) 2008-04-09
CN1535529A (zh) 2004-10-06
AU2002319577A1 (en) 2003-02-17
WO2003010658A3 (en) 2003-12-24
JP2004537121A (ja) 2004-12-09
JP4310186B2 (ja) 2009-08-05
EP1410189B1 (en) 2008-02-27
WO2003010663A3 (en) 2003-12-24
ATE387658T1 (de) 2008-03-15
WO2003010656A2 (en) 2003-02-06
DE60206055D1 (de) 2005-10-13
EP1601217A3 (en) 2006-05-10
ES2299587T3 (es) 2008-06-01
ATE305632T1 (de) 2005-10-15
JP2004538693A (ja) 2004-12-24
DE60206055T2 (de) 2006-06-29
EP1610222A2 (en) 2005-12-28
DE60211719T2 (de) 2007-01-11
ATE304272T1 (de) 2005-09-15
CN1535419A (zh) 2004-10-06
JP2004537899A (ja) 2004-12-16
EP1610222A3 (en) 2007-01-31
JP2005505813A (ja) 2005-02-24
EP1423959B1 (en) 2006-05-24
EP1410188A2 (en) 2004-04-21
ATE310354T1 (de) 2005-12-15
JP4106020B2 (ja) 2008-06-25
EP1410189A2 (en) 2004-04-21
CN100378661C (zh) 2008-04-02
JP2004537120A (ja) 2004-12-09
EP1610222B1 (en) 2011-03-02
ATE382159T1 (de) 2008-01-15
AU2002328167A1 (en) 2003-02-17
KR20040017352A (ko) 2004-02-26
CN1537276A (zh) 2004-10-13
JP4077408B2 (ja) 2008-04-16
DE60211719D1 (de) 2006-06-29
JP2004537209A (ja) 2004-12-09
WO2003013103A3 (en) 2004-04-08
CN1235137C (zh) 2006-01-04
KR100913659B1 (ko) 2009-08-24
WO2003013103A2 (en) 2003-02-13
EP1410209A2 (en) 2004-04-21
WO2003010942A3 (en) 2003-05-15
EP1410665B1 (en) 2005-09-07
KR20040022459A (ko) 2004-03-12
ES2284112T3 (es) 2007-11-01
JP4278513B2 (ja) 2009-06-17
EP1410193A2 (en) 2004-04-21
KR100932058B1 (ko) 2009-12-15
ES2300454T3 (es) 2008-06-16
CN1250035C (zh) 2006-04-05
EP1601217A2 (en) 2005-11-30
KR100913658B1 (ko) 2009-08-24
KR20040022463A (ko) 2004-03-12
EP1410209B1 (en) 2006-05-24
CN1310488C (zh) 2007-04-11
DE60207429D1 (de) 2005-12-22
ES2248568T3 (es) 2006-03-16
KR100940180B1 (ko) 2010-02-04
CN1275149C (zh) 2006-09-13
DE60205755D1 (de) 2005-09-29
DE60207429T2 (de) 2006-07-27
EP1410191A2 (en) 2004-04-21
KR100918162B1 (ko) 2009-09-17
EP1410190A2 (en) 2004-04-21
JP2008108268A (ja) 2008-05-08
ES2263799T3 (es) 2006-12-16
JP4176634B2 (ja) 2008-11-05
AU2002319568A1 (en) 2003-02-17
ES2253553T3 (es) 2006-06-01
EP1410192B1 (en) 2007-12-26
CN1535421A (zh) 2004-10-06
CN1535423A (zh) 2004-10-06
WO2003010663A2 (en) 2003-02-06
EP1410665A2 (en) 2004-04-21
ATE327536T1 (de) 2006-06-15
AU2002319572A1 (en) 2003-02-17
EP1410193B1 (en) 2005-09-28
EP1425894A2 (en) 2004-06-09
WO2003010668A3 (en) 2003-09-25
KR100940178B1 (ko) 2010-02-03
JP2004537123A (ja) 2004-12-09
KR20040017351A (ko) 2004-02-26
KR20040015823A (ko) 2004-02-19
ATE327628T1 (de) 2006-06-15
WO2003010668A2 (en) 2003-02-06
CN1537272A (zh) 2004-10-13
KR100817387B1 (ko) 2008-03-27
EP1410192A2 (en) 2004-04-21
KR20040019334A (ko) 2004-03-05
WO2003010662A3 (en) 2003-12-24
KR100940179B1 (ko) 2010-02-03
KR20040022462A (ko) 2004-03-12
DE60206389D1 (de) 2006-02-09
WO2003010658A2 (en) 2003-02-06
CN1535422A (zh) 2004-10-06
ES2249602T3 (es) 2006-04-01
ATE302972T1 (de) 2005-09-15
AU2002319569A1 (en) 2003-02-17
AU2002355308A1 (en) 2003-02-17
JP2004537895A (ja) 2004-12-16
JP2005502105A (ja) 2005-01-20
AU2002319573A1 (en) 2003-02-17
WO2003010656A3 (en) 2003-11-13
CN1537397A (zh) 2004-10-13
KR100984895B1 (ko) 2010-10-01
CN1535418A (zh) 2004-10-06
AU2002319576A1 (en) 2003-02-17
DE60219536T2 (de) 2008-01-03
JP2004537925A (ja) 2004-12-16
KR20040022464A (ko) 2004-03-12

Similar Documents

Publication Publication Date Title
KR100911604B1 (ko) 무선 통신 장치의 시스템 소프트웨어 다운로드 관리시스템 및 방법
EP1973035B1 (en) System and method for the management of wireless communications device system software downloads in the field
US7386846B2 (en) System and method for the management of wireless communications device system software downloads in the field
US7542758B2 (en) Field downloading of wireless device software
US7328007B2 (en) System and method for organizing wireless communication device system software
US9554268B2 (en) System and method for updating persistent data in a wireless communications device

Legal Events

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

Payment date: 20130724

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140716

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee