KR100871778B1 - 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치 - Google Patents

중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치 Download PDF

Info

Publication number
KR100871778B1
KR100871778B1 KR1020067007844A KR20067007844A KR100871778B1 KR 100871778 B1 KR100871778 B1 KR 100871778B1 KR 1020067007844 A KR1020067007844 A KR 1020067007844A KR 20067007844 A KR20067007844 A KR 20067007844A KR 100871778 B1 KR100871778 B1 KR 100871778B1
Authority
KR
South Korea
Prior art keywords
component
components
manager
code
upgrade
Prior art date
Application number
KR1020067007844A
Other languages
English (en)
Other versions
KR20060085698A (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 KR20060085698A publication Critical patent/KR20060085698A/ko
Application granted granted Critical
Publication of KR100871778B1 publication Critical patent/KR100871778B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Abstract

소프트웨어 코드의 컴포넌트들 간의 함수 호출, 전역 변수, 그리고 상수 변수 참조(global constant variable reference)들을 관리하기 위해 중앙집중형 동적 어드레싱(DA) 매니저를 이용하는 동적 어드레싱이 제공된다. DA 매니저는 컴포넌트들의 링크 프로세스 중 발생되며, 코드와 함께 클라이언트 장치 메모리로 로딩된다. 한 컴포넌트로부터 또다른 컴포넌트로의 참조는 각 컴포넌트의 어드레스와 함께 DA 매니저에 저장된다. DA 매니저는 소프트웨어 실행 중 컴포넌트들을 링크하는 중앙집중형 라우터로 기능하다. 이에 따라, 한 컴포넌트로부터 또다른 컴포넌트로의 참조는 컴포넌트들 간에 직접적으로 이루어지는 것이 아니라, DA 매니저를 통해 루팅된다. 따라서, 파일 업그레이드 중 한 컴포넌트에 대한 변화는 메모리 내 해당 컴포넌트의 위치 변화를 도출하고, DA 매니저에 의해 레코딩된다. 따라서, 상기 코드에 존재하는 컴포넌트에 대한 참조들의 일체성을 유지관리할 수 있다.

Description

중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱 방법 및 장치{DYNAMIC ADDRESSING (DA) USING A CENTRALIZED DA MANAGER}
[관련출원]
본 출원은 2003년 10월 23일자 미국특허출원 60/513,764 호를 바탕으로 하여 우선권을 주장한다. 이 미국특허출원은 2002년 11월 18일자 미국특허출원 10/298,458 호의 연속분할출원(CIP)에 해당한다.
또한 이 출원은 2002년 5월 13일자 미국특허출원 10/146,545 호, 2002년 9월 30일자 미국특허출원 10/261,153 호, 2002년 11월 12일자 미국특허출원 10/292,245 호, 2002년 11월 18일자 미국특허출원 10/298,393 호, 그리고 2003년 7월 9일자 미국특허출원 10/616,615 호에도 관련된 출원이다. 이 모든 출원들은 본원에서 참고로 인용된다.
본 발명은 전자 파일의 업그레이드 및 유지관리와 동시에 메모리 관리를 수행하기 위한 발명이다.
소프트웨어는 대부분의 전자 장치에서 호스팅되거나 실행되며, 사람이 읽을 수 있는 ASCII 플레인 텍스트 파일이나 이진 코드 형태로 한개 이상의 파일들을 포함한다. 호스팅된 소프트웨어는 프로세서나 CPU에서 실행되는 데, 호스트 장치에 기능을 제공하지만 시간에 따라 자주 변화한다. 이러한 소프트웨어 변화는 소프트웨어 파일의 버그나 오류를 교정하거나, 진화 기술에 대한 적응, 또는 새로운 특징이나 기능을 부가하기 위한 필요성으로부터 나타날 수 있다. 특히, 모바일 무선 장치에 호스팅된 내장된 소프트웨어 컴포넌트들은 교정을 필요로하는 수많은 소프트웨어 버그들을 포함한다.
장치의 소프트웨어나 프로그램들은 모듈이나 컴포넌트라 불리는 작은 유닛으로 나누어진다. 모바일 무선 장치에서, 실시간 운영체제(RTOS)는 장치에 호스팅된 소프트웨어 모듈이나 컴포넌트들이 단일 대형 파일로 링크되도록 사용되는 것이 일반적이다. 이러한 대형 소프트웨어 파일이 장치에 로딩되거나 내장되며, 통상적으로 무선 장치의 ROM이나 플래시 ROM에 저장된다.
무선 장치에 호스팅된 소프트웨어 파일들은 무선 통신 링크나 OTA(over-the -air) 링크(가령, 라디오 링크)를 이용하여 오류를 교정하거나 새 기능을 부가하도록 업데이트될 수 있다. 대역폭, 메모리, 그리고 무선 장치에 관한 그외 다른 제약때문에, 장치가 상용화되어 배포된 후 호스팅된 소프트웨어를 업데이트하는 것은 전용 특허 애플리케이션을 필요로한다. 이러한 전용 특허 애플리케이션의 예로는 DeltaUpdate 및 DeltaRewrite라는 상표의 업그레이드/업데이트 애플리케이션이 있다. 이 업그레이드 애플리케이션들은 관련 출원의 주제이기도 하다.
무선 장치용 프로그램들은 정적 어드레싱이라 불리는 방법을 이용하여 장치 메모리에 저장되는 것이 일반적이다. 프로그램이 수록된 후, 프로그램은 컴퓨터-판독형 코드로 컴파일되고, 그동안 코드의 여러 다른 모듈이나 컴포넌트들이 링크된 다. 그 결과가 우리가 이미지나 메모리 이미지로 알고 있는 것이며, 이때, 이미지는 호스트 장치의 ROM에 저장된 기계어로 된 실행 명령 세트이다. 이 프로그램들은 명령들의 연속 스트림으로 조직되는 것이 일반적이며, 이때, 이 명령들의 일부분은 호스트 장치 ROM의 다른 부분에서의 명령에 대한 참조들을 가진다. 이 순차적인, 그리고 상호연결적인 구조때문에, 호스트 장치 ROM 내 특정 머신 코드의 위치가 크게 조정되며, 따라서, "정적 어드레싱"이라 불린다.
OTA 링크를 통해 수신되는 파일들을 이용하여 호스트 장치의 코드의 한 부분을 업그레이드하는 것은, 비록 그 변화가 작다 할지라도, 코드의 참조들을 재-시퀀싱하고 조정하기 위해, 호스트 장치 ROM의 큰 부분을 재기록하는 과정을 포함한다. 이는 전형적인 업데이트 프로세스로서, 성가시고 오류에 빠지기 쉬우며 시간도 많이 걸린다. 결과적으로, 셀룰러 전화 및 그외 다른 모바일 통신 장치, PDA, 그리고 PC같은 무선 장치에 호스팅되는 소프트웨어를 업그레이드할 때 동적 어드레싱이 필요하다.
무선 핸드셋과 이와 유사한 클라이언트 장치에 호스팅된 소프트웨어의 업데이트에 이용하기 위한 동적 어드레싱이 본원에서 제시된다. 한 실시예의 동적 어드레싱(DA)은 내장형 소프트웨어 컴포넌트(EBSC:Embedded software components)라 불리는 관련 컴포넌트들의 그룹으로 장치 메모리에 저장된 코드를 조직화하는 과정을 포함한다. 한 컴포넌트로부터 또다른 컴포넌트로의 임의의 참조(reference)들이 식별되고, "DA 매니저", "중앙집중형 DA 매니저"라 불리는 중앙집중형 별도의 프로그램에 각 컴포넌트의 위치나 어드레스와 함께 저장된다. DA 매니저는 EBSC를 링크하는 프로세스 중 발생되며, 클라이언트 장치 프로그램과 함께 클라이언트 장치 메모리로 로딩된다.
동작 시에, DA 매니저는 중앙집중형 라우터나 스위치보드로 기능하는 것이 일반적이며, 이 라우터나 스위치보드는 클라이언트 장치의 각 EBSC의 심벌 위치를 알고 있고, 클라이언트 장치 프로그램의 실행 중 요구되는 바와 같이 EBSC를 링크한다. 한 EBSC로부터 또다른 EBSC로의 임의의 참조는 EBSC간 직접 참조 대신에 DA 매니저를 통해 루팅된다. 따라서, 한 컴포넌트가 파일 업그레이드 중 수정되고 이 업그레이드가 클라이언트 장치 메모리에서 EBSC의 위치 변화를 나타낼 경우, 이 변화는 DA 매니저에 의해 레코딩되고, 따라서, 클라이언트 장치 프로그램에 존재하는 EBSC에 대한 참조나 링크의 일체성을 유지관리한다.
결과적으로, DA 매니저는 클라이언트 장치 메모리에 머신 코드를 조직하기 위한 효율적이고 논리적인 방식을 제공한다. 한 실시예의 DA 매니저를 이용하면, 머신 코드의 한개 이상의 부분(EBSC)에 추가, 삭제, 수정을 행할 수 있고, 이때, 클라이언트 장치 메모리에 저장된 나머지 코드에 리플(ripple)을 행하거나 영향을 미치지 않는다. 이와는 대조적으로, 새로운 여러개의 코드 라인들을 추가하는, 메모리에 저장된 프로그램에 변화가 나타나는 정적 어드레싱을 이용할 때, 이 변화된 코드 다음의 모든 코드들은 메모리 레이아웃에서 아래로 시프트된다. 이러한 코드의 시프팅은 변화된 코드에 존재하는 어떤 참조나 링크에 대한 변화를 수반한다. 따라서, 작은 프로그램 변화도 클라이언트 장치 메모리에 저장된 머신 코드만큼 대응하는 그리고 상쇄하는 변화를 야기할 수 있다.
EBSC 어드레스에 대한 변화가 (모든 클라이언트 장치 프로그램들에 대해서가 아니라) DA 매니저에서 한번만 이루어지기 때문에 DA는 정적 어드레싱과 관련된 문제점들을 피할 수 있다. 리-어드레싱(re-addressing)이 더 효율적이기 때문에, 특정 블록에 할당된 클라이언트 장치 메모리의 영역이 역시 감소될 수 있으며, 따라서, 클라이언트 장치의 가용 메모리를 더 잘 활용할 수 있다. 또한, DA 매니저에 대한 어드레스 변화의 재기입을 제한함으로서, 클라이언트 장치 소프트웨어의 디버깅, 수정, 그리고 그외 다른 업그레이드가 훨씬 단기간에 구현된다. 이에 따라 효율이 증가하고, 비용이 절감된다. 전형적인 정적 어드레싱으로 가능한 것에 비해 훨씬 크고 복잡한 소프트웨어 다운로드 및 업데이트를 또한 제공할 수 있다.
동적 어드레싱(DA) 및 DA 매니저의 실시예들을 이해하기 위해 다양한 세부사항들이 제시될 것이다.
도 1은 한 실시예 하에서 동적 어드레싱(DA) 매니저를 구비한 클라이언트 장치를 포함하는 시스템의 블록도표.
도 2는 한 실시예 하에서 일례의 서비스 제공자 인프러스트럭처의 블록도표.
도 3은 한 실시예 하에서 이미지의 소프트웨어 컴포넌트들과 DA 매니저 간의 상호작용을 도시하는 DA의 블록도표.
도 4A와 4B는 한 실시예 하에서 DA 매니저를 포함하는 이미지를 구성하기 위한 순서도.
도 5는 한 실시예 하에서 소프트웨어 이미지, 업그레이드 클라이언트, 그리 고 DMM 클라이언트의 컴포넌트들을 포함하는 메모리의 컴포넌트들 간의 상호작용을 설명하는 장치 메모리의 블록도표.,
도 6은 한 실시예 하에서 DA를 이용하여 EBSC나 EBSC 그룹을 업그레이드하기 위한 순서도.
도 7은 한 실시예 하에서 DA를 이용하는 함수 콜의 순서도.
도 8은 한 실시예 하에서 EBSC의 새 버전을 수용하기 위한 메모리 영역을 예약하는 순서도.
도 9는 한 실시예 하에서 EBSC의 새 버전을 수용하기 위한 메모리 블록들의 위치를 결정하는 순서도.
도 10은 한 실시예 하에서 가비지 컬렉션(garbage collection)의 순서도.
도 11은 한 실시예 하에서 DA를 이용한 내장된 소프트웨어 개발 및 전개의 블록도표.
도 1은 한 실시예 하에서 DA 매니저를 구비한 클라이언트 장치를 포함하는 시스템(100)의 블록도표이다. 한 실시예의 시스템(100)은 파일 업그레이드 시스템(100)이지만, 이에 제한되지는 않는다. 일반적으로, 파일 업그레이드 시스템(100)은 제 1 컴퓨터 시스템, 즉, 호스트 시스템(102)과, 한 개 이상의 제 2 컴퓨터 시스템, 즉, 클라이언트 장치(122)를 포함한다. 호스트 시스템(102)과 클라이언트 장치(122) 각각은 프로그램 제어 하에 동작하는 각각 한개 이상의 프로세서(104, 124)를 포함한다. 호스트 시스템(102)과 클라이언트 장치(122)는 통신 경 로(199)를 통해 통신한다. 이 컴퓨터 시스템(102, 122)들은 당 분야에 잘 알려진 바와 같이, 함께 동작하는 연산 장치들의 컬렉션을 포함한다. 컴퓨터 시스템(102, 122)은 대형 컴퓨터 시스템 내의 컴포넌트들을 또한 포함할 수 있다.
호스트 시스템(102)의 프로세서(104)는 프로그램 제어 하에, 데이터베이스(106)와 파일 차별화 알고리즘(114) 간을 연결하며, 프로그램 제어 하에 파일 업데이트 기능을 제공한다. 한개의 프로세서(104), 한개의 데이터베이스(106), 한개의 파일 차별화 알고리즘(114)이 도시되지만, 다양한 대안의 실시예들에서는 이 성분들 각각이 임의의 숫자, 임의의 종류로, 다양한 구조로 연결될 수 있다. 더우기, 프로세서(104), 데이터베이스(106), 그리고 파일 차별화 알고리즘(114)이 개별적인 블록으로 도시되지만, 이 블록들 일부 또는 전부가 단일 칩에 모놀리식 방식으로 집적될 수 있고, 호스트 시스템의 다수의 칩이나 컴포넌트들 사이에 분포될 수 있으며, 알고리즘들의 임의의 조합에 의해 제공될 수 있다. 파일 차별화 알고리즘(114)은 소프트웨어 알고리즘, 펌웨어, 하드웨어로 구현될 수 있고, 또는 소프트웨어, 펌웨어, 하드웨어의 조합으로 구현될 수 있다. 프로세서라는 용어는 한개 이상의 CPU, 디지털 신호 프로세서(DSP), ASIC같은 임의의 로직 처리 유닛을 의미한다.
마찬가지로, 한 실시예의 클라이언트 장치(122)는 프로그램 제어 하에, 장치 메모리(130) 간에 연결된 프로세서(124)를 포함한다. 장치 메모리(130)는 RTOS(132)(메인 프로그램(132)이라고도 불림), 한개 이상의 이미지(300), 장치 메모리 매니저(DMM) 클라이언트(500)(DMM 클라이언트), 그리고 업그레이드 클라이언 트(126)를 포함한다. 소프트웨어 이미지나 이진 이미지라 불리기도 하는 이미지(30)들은 실행 파일이며, 한개 이상의 내장형 소프트웨어 컴포넌트(EBSC)(EBSC1-EBSCN), 예약된 메모리 영역(320), 그리고 중앙집중형 DA 매니저(310)를 포함한다. 이진 이미지는 여러 다른 컴포넌트들에 의한 링크 시간 동작을 통해 구성될 수 있다. EBSC같은 소프트웨어 컴포넌트는 설계에 의해 함께 그룹형성되는 기능들을 가진 독립 구성형 이진 이미지이다. DA 매니저(310)가 이미지(300)의 한 컴포넌트로 도시되지만, DA 매니저는 DMM 클라이언트(500), 업그레이드 클라이언트(126), 그리고 클라이언트 장치(122)의 그외 다른 컴포넌트 중 한 컴포넌트일 수 있다.
대안으로, 클라이언트 장치(122)의 다양한 기타 컴포넌트들이 프로세서(124)와 장치 메모리(130) 간에 연결될 수 있다. 이 컴포넌트들이 프로그램 제어 하에 파일 업데이트 기능을 제공할 수 있다. 한개의 프로세서(124)와 한개의 장치 메모리(130)만이 도시되지만, 다양한 대안의 실시예들에서는 이 컴포넌트들 각각이 임의의 숫자, 임의의 종류로 다양한 구조로 구성될 수 있다. 더우기, 프로세서(124)와 장치 메모리(130)가 개별적인 블록으로 도시되지만, 이 블록들 일부 또는 전부가 단일 칩에 모놀리식 방식으로 집적될 수 있고, 호스트 시스템의 다수의 칩이나 컴포넌트들 사이에 분포될 수 있으며, 또는, 알고리즘들의 임의의 조합에 의해 제공될 수도 있다. 장치 메모리(130)의 알고리즘이나 애플리케이션들은 소프트웨어 알고리즘, 펌웨어, 하드웨어로 구현될 수 있으며, 이들의 조합으로 구현될 수도 있다. 장치 메모리는 ROM과 RAM을 포함하는 메모리 종류의 임의의 숫자와 임의의 조합을 포함할 수 있다.
통신 경로(199)는 컴퓨터 시스템(102, 122) 간의 통신이나 파일 전달을 위한 임의의 매체를 포함한다. 따라서, 이 경로(199)는 무선 연결, 유선 연결, 하이브리드 유/무선 연결을 포함한다. 통신 경로(199)는 LAN, 대도시 네트워크(MAN), 장거리 네트워크(WAN), 배타적 네트워크, 인터오피스나 백엔드 네트워크, 그리고 인터넷같은 다양한 네트워크들에 대한 연결을 또한 포함한다. 더우기, 통신 경로(199)는 플라피 디스크, 하드 디스크 드라이브, CD-ROM 디스크뿐 아니라, 플래시 메모리, USB 연결, RS-232 연결, 전화선, 버스, 전자메일 메시지 등을 포함한다.
호스트 시스템(102)과 클라이언트 장치(122) 각각은 전자 파일의 원본(110)을 포함한다. 이는 원본 파일(110)이나 올드 파일이라 불린다. 호스트 시스템(102)은 데이터베이스(106)나 그외 다른 메모리 영역에, 또는 메모리 영역이나 장치들의 조합에 원본 파일(110)을 저장한다. 클라이언트 장치(122)는 동작 시에 이용하기 위해 장치 메모리(130)에 원본 파일을 저장한다.
추가적인 기능을 제공하거나 소프트웨어 버그를 교정하기 위해, 그외 기타 이유로, 소프트웨어 제공자가 원본 파일(110)을 업그레이드할 때, 원본 파일(110)의 새 버전이 발생된다. 전자 파일의 새 버전(112)은 새 파일(112)이라 불린다. 새 파일(112)은 일반적으로 원본 파일(110)의 업데이트 버전 또는 개정 버전이다. 소프트웨어 제공자는 새 파일(112)을 호스트 시스템(102)에 전달한다.
전자 파일(110, 112)은 동적 링크 라이브러리 파일, 공유 객체 파일, EBSC, 펌웨어 파일, 실행 파일, 헥스 데이터 파일(hex data file)을 포함한 데이터 파일, 시스템 컨피규레이션 파일, 개인용 데이터를 포함한 파일 등을 포함하는 소프트웨 어를 포함한다. 임의 종류의 파일이 바이트 스트림으로 간주될 수 있기 때문에, 이제부터 파일이 바이트 스트림으로 기술될 수 있다.
한개 이상의 프로세서(104)를 포함하는 호스트 시스템(102)의 컴포넌트들은 클라이언트 장치(122)에 호스팅된 원본 파일의 업그레이드를 위해 업그레이드 정보를 발생시키기 위해 새 파일(112)을 수신하고 처리한다. 한 실시예에서, 프로세서(104)는 클라이언트 장치(122)에 업그레이드 정보 전달을 위해 업그레이드 파일(118)을 발생시킨다. 업그레이드 파일(118)은 새 파일(112)과 원본 파일(110) 간의 차이를 코딩하는 차이 파일을 포함할 수 있다. 또는, 새 파일(112)의 컴포넌트나 모듈들을 임의의 수, 임의의 조합으로 포함할 수 있다. 호스트 시스템(102)은 통신 경로(199)를 통해 업그레이드 파일(118)을 전송함으로서, 업그레이드 정보를 클라이언트 장치(122)에 제공한다.
업그레이드 파일(118)이 차이 파일을 포함하는 실시예에서, 프로세서(104)와 파일 차별화 알고리즘(114)을 포함하는 호스트 시스템(102)의 컴포넌트들은 새 파일(112)과 원본 파일(110) 간의 비교를 처리하여, 새 파일(112)과 원본 파일(110) 간의 차이를 연산한다. 파일 차별화 알고리즘(114)은 이 비교 과정 중 차이 파일을 발생시켜서 이 차이 파일의 정보를 업그레이드 파일(118)에 기입한다.
업그레이드 파일(118)은 통신 경로(199)를 통해 클라이언트 장치(122)에 전달된다. 이 전달 이전에, 업그레이드 파일(118)이 당 분야에 잘 알려진 압축 기술 중 하나를 이용하여 압축될 수 있다.
프로세서(124)와 업그레이드 클라이언트(126)를 포함하는 클라이언트 장 치(122)의 컴포넌트들은 업그레이드 파일(118)을 수신하여, 업그레이드 파일(118)을 이용하여 클라이언트 장치(122)에 대한 원본 파일의 업그레이드를 제어한다. 클라이언트 장치(122)의 업그레이드 클라이언트(126)는 다운로드 서브클라이언트(SC)(다운로드 SC), 업그레이드 서브클라이언트(업그레이드 SC), 자체-업그레이드 SC(도시되지 않음) 중 한가지 이상을 포함한다. 다운로드 SC는 호스트 시스템(102)으로부터 전달된 업그레이드 파일(118)을 다운로드하거나 수신하는 기능을 한다. 업그레이드 SC는 호스트 시스템(102)으로부터 수신한 전달된 파일들의 정보를 이용하여, 클라이언트 장치(122)의 소프트웨어에 대한 업그레이드를 수행한다. 자체-업그레이드 SC는 업그레이드 클라이언트(126)의 소프트웨어를 업그레이드하는 기능을 한다. 한 실시예의 자체-업그레이드 SC는 다운로드 SC나 업그레이드 SC와는 다른 물리적 메모리 블록이나 영역에 저장된다. 업그레이드 클라이언트(126)의 소프트웨어는 다운로드 SC, 업그레이드 SC, 자체-업그레이드 SC의 소프트웨어를 포함한다.
한 실시예에서, 업그레이드 클라이언트(126)는 호스팅된 원본 파일(110)과 함께 업그레이드 파일(118)의 정보를 처리하여, 클라이언트 장치(122)에 새 파일의 사본을 발생시킨다. 새 파일의 이러한 사본은 업그레이드 클라이언트(126)에 의해 차후에 이용되어, 클라이언트 장치(122)에 호스팅된 타겟 원본 파일을 업그레이드시킬 수 있다. 한 실시예의 업그레이드 클라이언트(126)는 업데이트될 파일 타입에 따라, 그리고 이 업데이트 지원을 위해 클라이언트 장치 제작자에 의해 할당된 자원들에 따라, EBSC를 업데이트하는 데 수많은 방법들을 이용한다. 이 업데이트 프 로세스가 완료되면, 클라이언트 장치(122)에 저장된 원본 파일이 호스트 시스템(102)에 수신된 새 파일(112)과 같다.
당 분야의 통상의 지식을 가진 자라면, 업그레이드 시스템(100)에 연계된 기능들 및 업그레이드 시스템(100)과 관련하여 본원에서 소개된 그외 다른 기능 및 방법들이 호스트 시스템(102)의 컴포넌트들, 클라이언트 장치(122)의 컴포넌트들, 그리고 이들간의 임의의 조합에 의해 수행될 수 있음을 이해할 수 있을 것이다. 호스트 시스템(102)과 클라이언트 장치(122)의 컴포넌트들이 ASIC로, DSP 집적 회로에 의해, 또는, 종래의 프로그램 로직 어레이나 회로 소자를 통해 구현될 수 있다. 본원의 실시예는 한개 이상의 프로세서에서 실행되는 소프트웨어와, 하드웨어, 펌웨어의 임의의 조합을 이용하여 구현될 수 있고, 이때, 상기 소프트웨어는 반도체 칩에 저장된 마이크로코드같은 컴퓨터-판독형 매체, 컴퓨터-판독형 디스크에 저장될 수 있고, 서버로부터 다운로드될 수도 있으며, 클라이언트에 로컬하게 저장될 수도 있다.
도 2는 한 실시예의 파일 업그레이드 시스템(100)의 컴포넌트들을 포함하는 일례의 서비스 제공자 인프러스트럭처(200)의 블록도표이다. 본 실시예에서, 서비스 제공자 인프러스트럭처는 셀룰러 전화 네트워크나 인프러스트럭처의 범주에서 기술되지만, 이에 제한되지는 않는다. 서비스 제공자 인프러스트럭처(200)는 소프트웨어 컴포넌트 디스트리뷰터(SCD)(202), 서비스 제공자 업그레이드 컴포넌트(203-205), 그리고 클라이언트 장치(122)에 호스팅된 업그레이드 클라이언트(126)를 포함한다. 서비스 제공자 업그레이드 컴포넌트(203-205)들은 소프트웨어 컴포넌트 증명 서버(203)와 업그레이드 매니저(205) 간에 연결된 업그레이드 서버(204)를 포함한다.
도 1을 참조할 때, 서비스 제공자 인프러스트럭처(200)의 한 실시예의 SCD(202)는 호스트 시스템(102)의 컴포넌트나 함수들을 호스팅한다. 대안의 실시예에서, 서비스 제공자 업그레이드 컴포넌트(203-205)들은 호스트 시스템(102)의 컴포넌트나 함수들을 호스팅한다. 또다른 실시예에서, 호스트 시스템(102)의 컴포넌트나 함수들은 SCD(202)의 컴포넌트들과 서비스 제공자 업그레이드 컴포넌트(203- 사이에 분포된다.
한 실시예의 서비스 제공자 인프러스트럭처(200)는 서비스 제공자의 무선 인프러스트럭처의 다양한 메커니즘이나 업그레이드 시스템 컴포넌트들을 통해, 클라이언트 장치(122)에 대한 다양한 종류의 소프트웨어 파일이나 컴포넌트 업그레이드를 지원한다. 이때, 클라이언트 장치(122)는 모바일 전자 장치, 모바일 통신 장치, 셀룰러폰, PDA, 컴퓨터, 또는 그외 다른 프로세서-기반 장치들을 포함한다. 이 시스템들은 소프트웨어 디스트리뷰터로부터 새 소프트웨어(개정판 소프트웨어)를 수신하는 단계와, 새 소프트웨어로부터 업그레이드 파일을 발생시키는 단계와, 서비스 제공자 인프러스트럭처를 통해 업그레이드 파일을 클라이언트 장치(122)에 전달하는 단계를 통해 기능한다. 클라이언트 장치(122)의 업그레이드 클라이언트(126)는 이 업그레이드 파일을 이용하여, 클라이언트 장치(122)에 호스팅된 타겟 소프트웨어를 업데이트한다.
한 실시예의 SCD(202)는 사용자 인터페이스를 제공하며, 이 사용자 인터페이 스를 이용하여, 소프트웨어 제공자는 새 내장 장치 소프트웨어 컴포넌트들을 패키징하고 배포한다. SCD(202)의 기능으로는 장치 정보를 등록하는 것과, 장치 정보를 소프트웨어 컴포넌트 증명 서버에 제공하는 것이 있다. 또한, SCD(202)는 새 EBSC 및 원본 EBSC를 수신하고, 새 EBSC와 원본 EBSC를 이용하여 파일 차이를 연산하거나 발생시키며, 내장된 소프트웨어 패키지를 소프트웨어 컴포넌트 증명 서버(203)에 제공한다. 새(개정된) 소프트웨어는 배포 이후에, 유선, 무선, 하이브리드 유/무선 네트워크 연결(220)을 통해 서비스 제공자 업그레이드 컴포넌트(203-205)에 제공된다.
한 실시예의 SCD(202)는 클라이언트 장치 제작자의 처리 시스템에 호스팅된다. 대안의 실시예에서, SCD(202)는 애플리케이션 또는 시스템 소프트웨어 제공자의 처리 시스템에 호스팅된다. 또한가지 실시예에서, SCD(202)는 업그레이드 컴포넌트(203-205)에 호스팅되거나 이들 사이에 분포된 서비스 캐리어나 제공자의 처리 시스템에 호스팅된다.
서비스 제공자 업그레이드 컴포넌트(203-205)들은 소프트웨어 컴포넌트 디스트리뷰터(202), 클라이언트 장치(122), 그리고 서비스 제공자의 인프러스트럭처(210-218)의 기존 컴포넌트들 간에 연결된다. 서비스 제공자의 인프러스트럭처(210-218)의 기존 컴포넌트들에는, 기존 게이트웨이(210) 및 통신 인프러스트럭처(212), 빌링 서버(billing server)(214), 로그 서버(216), 인증 서버(218) 등이 있다.
소프트웨어 컴포넌트 증명 서버(203)는 클라이언트 장치의 제작에 대한 인터 페이스를 제공하고, 따라서, 내장된 소프트웨어 패키지에 대한 새 장치 정보를 장치 제작자로부터 수신한다. 소프트웨어 컴포넌트 증명 서버(203)는 승인된 소프트웨어 패키지들을 다시 패키징하여 업그레이드 서버에 분배한다.
업그레이드 매니저(205)는 소프트웨어 컴포넌트 인증 서버(203)와 업그레이드 서버(204) 간의 인터페이스로 기능하면서, 최적 장치 관리를 위한 소프트웨어 및 데이터 패키징을 설정하고, 원격 변화 통지를 스케쥴링하며, 업데이트 정책 모니터 시스템을 제어한다. 더우기, 업그레이드 매니저(205)는 기존 인프러스트럭처의 시스템과의 일체성을 제공한다.
업그레이드 서버(204)는 내장된 소프트웨어 컴포넌트 업그레이드들을 수생하기 위해 모바일 클라이언트 장치에 대한 인증, 연결, 통신을 포함하는 기능들을 제공한다. 클라이언트 장치(122)와의 통신은 클라이언트 장치(122)와의 연결(212)을 통해 구현될 수 있고, 그 예로는 무선 연결, 유선 연결, 하이브리드 유/무선 연결 등이 있으며, 그 외 해당 서비스 제공자에게 적합한 타 네트워크 연결 타입이 있다. 추가적으로, 업그레이드 서버(204)는 서비스 제공자의 기존 빌링, 데이터 연결, 로그 서비스를 지원한다.
업그레이드 서버(204)와 클라이언트 장치(122) 간의 통신의 한 예로서, 업그레이드 서버(204)로부터 클라이언트 장치(122)에 대한 업그레이드 파일이 가용할 경우, 서버(204)는 사용자 통지를 전송하여, 업데이트에 가용한 소프트웨어 컴포넌트들이 존재하고 있음을 클라이언트 장치에 통지한다. 사용자 통지는 단문 메시지 서비스(SMS) 푸시 프로토콜, 하이퍼텍스트 트랜스퍼 프로토콜(HTTP), 또는 무선 애 플리케이션 프로토콜(WAP) 등을 통해 텍스트 메시지 형태를 취할 수 있다. 그러나 이에 제한되지는 않는다. 핸드셋 사용자로부터 수령확인 신호를 수신한 후, 업그레이드 서버(304)는 원본 핸드셋 데이터 통신 프로토콜을 이용하여, 업그레이드 파일을 요청 장치에 전송한다.
해당 장치로부터 수령확인 신호를 수신한 후, 업그레이드 서버(204)는 사용자 및 요청 장치를 인증하고 승인하며, 요청 장치의 선결사항 기능과 제한사항을 확인한다. 인증에 이어 업그레이드 서버(204)는, 클라이언트 장치 설정 데이터의 매니저로서, 요청 장치의 내장 소프트웨어 컴포넌트들의 현 버전을 식별하고, 요청 장치에 적절한 델타 파일을 식별하고 전달하며, 업그레이드 거래의 상태를 로그하고, 그 결과를 업그레이드 매니저(205)에게 보고한다. 추가적으로, 업그레이드 서버(204)는 무선 방식으로 소프트웨어 업그레이드 서비스를 활성화/비활성화시키고, 소프트웨어 변화를 원격 사용자에게 알린다.
도 1을 참조할 때, 업그레이드 클라이언트(126)는 클라이언트 장치(122)에 내장된다. 그러나 이에 제한되지는 않는다. 업그레이드 클라이언트(126)는 클라이언트 장치(122)의 설정 데이터(configuration data)를 저장하고 관리하며, 내장 장치 소프트웨어 컴포넌트들의 관리 및 업그레이드를 제공한다. 업그레이드 클라이언트(16)는 간단한 사용자 인터페이스를 지원하고, 모바일 장치 소프트웨어에 통합된다. 실행시, 업그레이드 클라이언트(126)는 내장된 소프트웨어 컴포넌트들의 원격 변화를 자동적으로 검출하여, 내장된 소프트웨어 컴포넌트 업그레이드를 사용자에게 통지하며, 캐리어/사용자 제어에 기초하여 소프트웨어 컴포넌트들을 업그레이드 한다.
한 실시예의 업그레이드 시스템(100)과 서비스 제공자 인프러스트럭처(200)는 다양한 타입의 소프트웨어 파일이나 컴포넌트 업데이트를 지원하며, 가령, 실행 파일, 바이트 스트림 파일, 데이터 파일 등에 대한 업데이트를 지원한다. 그러나 이에 제한되지는 않는다. 실행 파일이나 이미지 파일은 운영 체제(OS), 하드웨어 장치 드라이버, 그리고 K 가상 머신(KVM) 파일처럼, 작업 수행을 위해 클라이언트 장치에 사용되는 소프트웨어 파일들을 포함한다. 바이트 스트림 파일들은 아이콘 파일, 로고 파일, MP3 파일 등과 같은, 다른 실행 파일들에 의해 이용되는 파일들을 포함한다. 데이터 파일들은 교정 설정 파일(calibration configuration file), 프로토콜 독립 멀티캐스트(PIM) 파일, 시스템 설정 파일 등과 같은 핸드셋 참조 데이터와, 개인용 데이터를 포함한 파일들을 포함한다.
한 실시예의 업그레이드 클라이언트(126)는 업그레이드될 파일 타입에 따라, 그리고 이 업그레이드 지원을 위해 클라이언트 장치 제작자에 의해 할당될 리소스에 따라, 다양한 방법을 이용하여 EBSC를 업그레이드한다. 한 실시예의 업그레이드 방법들은 비핵심적 컴포넌트 업데이트, 핵심적 컴포넌트 업데이트, 그리고 업데이트 클라이언트 컴포넌트 업데이트들을 포함하며, 이러한 카테고리들은 업데이트의 대상인 소프트웨어 컴포넌트들에 의해 제공되는 기능에 기초한다.
소프트웨어 업그레이드는, 새 버전의 프로그램을 원 버전과 비교하여 기계 코드의 변화나 차이만을 격리시키는 기술을 이용함으로서, 호스트 클라이언트 장치의 ROM을 재기입하는 데 필요한 시간을 감소시키는 것이 일반적이다.
클라이언트 장치의 업그레이드 클라이언트는 업그레이드 파일에서 수신한 이 차이들에 대한 정보를 이용하여, 전체 ROM을 재기입하는 대신에, 변경된 이미지나 EBSC 부분, 또는 차이들만을 재기입함으로서, 장치 ROM을 업그레이드한다.
차이 파일들을 포함하는 업그레이드 파일을 이용함에 추가하여, DA 및 DA 매니저를 이용하여 파일 업그레이드를 하면, 클라이언트 장치 프로그램을 업그레이드하는 데 소요되는 시간과, 업그레이드 파일의 크기를 추가적으로 감소시킬 수 있다. 한 실시예의 DA는 장치 ROM에 저장된 코드를 관련 EBSC의 그룹들로 조직하는 과정을 포함한다. 한 컴포넌트로부터 또다른 컴포넌트로의 임의의 참조들이 식별되어, 각 컴포넌트의 위치나 어드레스와 함께 DA 매니저에 저장된다. DA 매니저는 EBSC 링크 프로세스 중 발생되며, 클라이언트 장치 프로그램과 함께 클라이언트 장치 메모리로 로딩된다. 따라서, DA 및 DA 매니저는 이미지의 EBSC를 격리시켜 개별적으로 구성할 수 있다.
DA 매니저는 컴포넌트 함수 호출, 전역 변수 참조, 그리고 상수 변수 참조(constant variable reference)를 관리하여, 클라이언트 장치 프로그램들의 실행 중 요구되는 EBSC들의 링크 기능과 각 EBSC의 심벌 위치 지식을 가진 중앙집중형 라우터/스위치보드로 기능하게 한다. 한 EBSC로부터 또다른 EBSC로의 임의의 참조는 EBSC 사이에서 직접 루팅되는 것이 아니라, DA 매니저를 통해 루팅된다. 한 컴포넌트가 파일 업그레이드 중 수정되고 업그레이드에 따라 ROM 내 EBSC의 위치 변화가 나타날 경우, 이 변화는 DA 매니저에 의해 레코딩되고, 따라서, 장치 프로그램에 존재하는 EBSC에 대한 링크나 참조의 일체성이 유지된다.
본원에서 소개되는 DA 매니저는 Arm Developer Suited(ADS) 버전 1.2 소프트웨어 패키지를 호스팅하는 ARM 프로세서 코어나 프로세서로 실행된다. 그러나 대안의 실시예는 그외 다른 다양한 프로세서로 실행될 수 있다. 한 실시예의 DA 및 DA 매니저는 본원에서 소개한 내장 시스템뿐만이 아니라, 수많은 내장 시스템 플랫폼과도 호환된다.
한 실시예의 DA 및 DA 매니저를 설명함에 있어 수많은 용어들이 사용되며, 이 용어들에 대해 본원에서는 한가지 기술어만이 제공되지만, 본 실시예는 이러한 기술어에 제한되지 않는다. DA 및 DA 매니저를 기술함에 있어서, "이미지"는 프로세서로 로딩되는 실행 파일이며, "이진 이미지" 또는 "소프트웨어 이미지"로 불릴 수 있다. "섹션"(section)은 한 이미지의 소프트웨어 코드나 데이터의 블록이다. "영역"(region)은 세개의 출력 섹션 중 한가지의 연속 시퀀스이다. 세개의 출력 섹션이란, 한 이미지의 읽기 전용 메모리 어드레스("RO"), 읽기/쓰기 메모리 어드레스("RW"), 그리고 제로-초기화 메모리 어드레스("ZI")에 해당한다. 한 영역은 ROM, RAM, 주변 장치같은 물리적 메모리 장치로 매핑된다. "로드 뷰"(load view)는 메모리로 로딩되었으나 아직 실행을 시작하지 않은 이미지의 섹션 및 영역들의 어드레스이다. "실행 뷰"(execute view)는 메모리로 로딩되어 실행 중인 이미지의 섹션 및 영역들의 어드레스이다. "산발 로딩"(scatter loading)은 단일 대형 블록들을 이용하는 것이 아니라 어드레스를 할당하여 코드 및 데이터 섹션들을 개별적으로 그룹화하는 것이다. "RO-CODE"는 읽기 전용 코드 어드레스들을 의미한다. "RO-DATA"는 읽기 전용 데이터 어드레스를 의미한다. "RW-DATA"는 읽기/쓰기 데이터 어 드레스를 의미한다. "ZI-DATA"는 초기값을 가지지 않은 변수들을 홀딩하는 데 사용되는 제로로 초기화된 읽기/쓰기 메모리를 의미한다. "Symdef file"은 전역 심벌 및 관련 최종 런타임 어드레스를 포함하는 심벌 정의 파일이다.
한 실시예의 DA는 이진 이미지의 DA 매니저의 고정 위치에 공통 컴포넌트를 삽입함으로서 함수 콜 종속성을 차단하도록 동작한다. 따라서, 코드 변화로 인해 함수 호출 수신지 어드레스가 변화할 때, 호출 함수는 DA 매니저의 공통 컴포넌트를 계속 호출할 수 있고, DA 매니저는 이 호출을 이미지의 적절한 컴포넌트에게로 넘길 수 있다. DA 매니저의 공통 컴포넌트들의 정보는 따라서, 임의의 함수 호출 수신지 어드레스 변화에 따라 변화하여, 함수 호출을 공통 컴포넌트에게로, 그리고 새 수신지 어드레스에게로 넘길 수 있다.
본원에서 제시되는 컴포넌트-기반 메모리 관리의 한 예로서, 도 3은 한 실시예 하에서, 이미지(300)의 EBSC들(EBSC1, EBSC2, EBSC3)과 DA 매니저(310) 간의 상호작용을 도시하는 DA의 블록도표이다. 상술한 바와 같이, 한 실시예의 이미지들은 소프트웨어 컴포넌트(EBSC)들과, 한개 이상의 DA 매니저를 포함한다. 한개의 이미지는 연결된 컴포넌트들을 포함하는 데, 이때, EBSC같은 컴포넌트들은 설계에 의해 함께 그룹형성되는 함수들을 이용한 독립형 이미지들을 포함한다. 한개의 이미지가 여러개의 컴포넌트들로 나누어짐에 따라, 아래 제시되는 바와 같이, 함수 호출, 전역 변수 참조, 그리고 (한 컴포넌트로부터 다른 컴포넌트로의) 수상 변수(constant variable) 참조들이 존재할 것이다.
한 실시예의 DA는 한 이미지의 컴포넌트들 간의 전역 참조 및 함수 호출들을 식별하고, 개별 컴포넌트들 간의 종속성을 분리시킨다. 따라서, 한 이미지에 대한 소프트웨어 업그레이드나 변경이 이루어질 때, 수정된 DA 매니저 및 관련 컴포넌트들만이 업그레이드된다. 그후, DA 매니저는 상기 함수 호출 및 전역 참조들을 관리 및 리디렉션함으로서 이미지의 실행 중 컴포넌트간 활동을 제어하거나 관리한다.
도 3을 참조할 때, DA 매니저의 한 동작 예로서, EBSC1의 함수 2에 대한 동작을 지시하는 EBSC2의 호출(350)은 DA 매니저(310)의 컴포넌트(370)를 호출한다. DA 매니저(310)의 호출된 컴포넌트(370)는 동작(352)을 EBSC1의 함수2로 넘긴다. DA 매니저의 또다른 동작 예로서, EBSC3의 함수 1에 대한 동작을 지시하는 EBSC1의 호출(360)은 DA 매니저(310)의 컴포넌트(380)를 호출한다. DA 매니저(310)의 호출된 컴포넌트(380)는 동작(362)을 EBSC3의 함수 1로 넘긴다.
위 예에 계속하여, 클라이언트 장치의 소프트웨어 업그레이드가 이미지(300)의 EBSC1의 변화를 필요로할 때, 이에 따라 메모리에 EBSC1의 위치 변화가 나타날 때, 업그레이드는 EBSC1에 대한 업그레이드만을 나타내며, EBSC1에 상관된 링크들을 가지는 DA 매니저(310)의 컴포넌트(37)들에 대한 업그레이드만을 나타낸다. 결과적으로, DA 매니저(310)는 이미지(300)의 EBSC 간의 참조나 링크의 일체성을 유지하는 기능을 하기 때문에, DA 매니저(310)는 EBSC1같은 특정 EBSC에 대한 업그레이드때문에, 이미지(300)의 모든 EBSC를 업그레이드하거나 재기입해야한다는 요건을 완화시킨다.
이미지(300)의 EBSC들 간의 링크를 관리함에 있어, 한 실시예의 DA 매니저는 다수의 기술을 이용하여 여러 다른 타입의 전역 참조들을 관리한다. 특히, DA 매니 저는 함수 호출과 전역 변수들을 포함하는 전역 참조를 관리한다. 그러나 이에 제한되지는 않는다.
한 컴포넌트의 함수 호출은 이미지의 한개 이상의 다른 컴포넌트에 위치하는 수신지 오프셋/어드레스를 가지는 절대적 어드레스 점프/브랜치 명령이나 상대적 오프셋 점프/브랜치 명령의 형태를 취한다. 읽기 전용 코드 어드레스들을 포함하는 RO-CODE/텍스트 섹션에 이진 코드가 위치한다. 실행 뷰 어드레스와 컴포넌트 경계에 기초하여, 함수 호출이 컴포넌트간 함수 호출이나 컴포넌트 내 컴포넌트 함수 호출로 분류된다.
컴포넌트간 함수 호출에 관해, 그리고 점프/브랜치 명령의 내재적 특징의 결과로 인해, 한 실시예의 DA 매니저는 벡터 표(VT)로 불리는 중앙집중형 점프 표를 포함한다. 이 표는 컴포넌트간 함수 호출을 관리하고 상관된 리디렉션을 취급한다. 실행 중, 한 컴포넌트로부터, 또다른 컴포넌트에 위치한 함수로의 함수 호출은 VT의 한 엔트리를 호출하게 된다. VT는 이 호출을, 호출된 컴포넌트/함수에 대응하는 장치 메모리 내 위치로 리디렉션한다. 컴포넌트간 함수 호출을 위해 VT 엔트리의 샘플 ARM 모드 코드가 다음에 제시된다. 그러나 본 실시예가 이러한 샘플 코드에 제한되지는 않는다.
import EBSC2_Fnl
Idr pc,addr_EBSC2_Fnl
addr_EBSC2_Fnl dcd EBSC2_Fnl
import EBSC3_Fn2
Idr pc,addr_EBSC3_Fn2
addr_EBSC3_Fn2 dcd EBSC3_Fn2
컴포넌트간 함수 호출에 반해, 컴포넌트내 함수 호출(컴포넌트내 로컬 함수들에 대한 함수 호출)은 한 컴포넌트에 대한 업그레이드에 의해 영향받지 않는다. 왜냐하면, 컴포넌트내 함수 호출의 경우, 업그레이드가 완전한 컴포넌트의 업그레이드로 나타남에 따라, 컴포넌트 업그레이드는 컴포넌트내 함수 호출에 대한 적절한 업그레이드를 포함하기 때문이다. 따라서, 컴포넌트내 함수 호출은 VT를 통하지 않는다. 더우기, 컴포넌트내 함수 호출의 호출 시퀀스는 VT를 이용하여 영향받지 않으며, 그러나 본 실시예가 이에 제한되지는 않는다.
한 실시예의 DA 및 DA 매니저를 이용하는 전역 변수 및 관련 참조들을 살펴볼 때, 전역 변수에는 세가지 서브타입이 존재한다. 즉, 전역 상수 변수, 전역 RW 변수, 그리고 전역 ZI 변수가 존재한다. 전역 상수 변수는 이미지 코드의 RO-DATA/상수 섹션에 있으며, 변수라고 불리긴 하지만, 장치 ROM으로부터 참조될 수 있으며 런타임시에 수정될 수 없다. 전역 RW 변수들은 런타임 시에 수정될 수 있는 RAM 변수로서, 시스템 초기화 중 그 초기 값으로 설정된다. 전역 ZI 변수들 역시 런타임 시에 수정될 수 있는 RAM 변수로서, RW 변수와는 달리, 시스템 초기화 중 0의 값으로 소거된다.
한 실시예의 DA 및 DA 매니저는 "전역 참조"라 불리는, 컴포넌트간 전역 참조 및 컴포넌트내 전역 참조 중 하나 또는 이둘의 조합을 이용하여 한 컴포넌트의 전역 변수에 대한 참조들을 관리한다. 컴포넌트간 전역 변수 참조에 관하여, 전역 변수 참조는 상술한 함수 호출과는 다르다. 왜냐하면, 전역 변수 참조는 점프/브랜치 명령 대신에 어드레스의 콘텐트를 직접 로딩하기 때문이다.
한 실시예의 DA는 DA 매니저의 중앙집중형 위치들을 이용하여 컴포넌트간 전역 참조들을 관리한다. 중앙집중형 DA 매니저 위치들을 이용할 때, 모든 컴포넌트간 전역 상수 변수, 전역 RW 변수, 전역 ZI 변수들이 새 타입의 섹션에 할당될 수 있다. 한 예로서, 전역 상수 변수(global constant variable)는 "globalConst" 섹션이라 불리는 새 섹션에 할당될 수 있고, 전역 RW 변수는 "globalRW" 섹션이라 불리는 새 섹션에 할당될 수 있으며, 전역 ZI 변수는 "globalZI" 섹션이라 불리는 새 섹션에 할당될 수 있다. 이러한 새 섹션/변수들은 로드 뷰 및 실행 뷰에 대해, 링크 시간에 중앙집중형 섹션으로 산발 로딩된다. 업그레이드 중 변화없는 컴포넌트들의 변수들에 대한 어드레스를 유지관리하는 것이 유용하기 때문에, 중앙집중형 위치들의 경우 변수의 위치를 관리하고 확인하는 것이 용이하며, 따라서 DA 매니저 구축 프로세스를 단순하게 한다.
대안의 실시예의 DA 및 DA 매니저는 액세스 함수들을 이용하여 컴포넌트간 전역 참조들을 관리한다. 소스 코드 레벨에서 발생된 랩 함수(wrap function)인 액세스 함수가 전역 변수들의 참조를 함수 호출로 변환하며, 따라서, 이러한 참조들을 처리하기 위해 VT를 이용할 수 있다. 액세스 함수 이용에 적합한 상황들은 소스 코드가 가용하지 않은 경우, 소스 코드 변화가 매우 불필요한 경우, 컴포넌트간 변수 참조들의 수가 매우 제한됨으로서 어떤 별도 섹션도 필요하지 않은 경우에 해당한다.
파일 foo.c에서 액세스 함수의 한 예는 다음과 같다.
int interCompGlobalVarA ;
파일 foo.c 나 그외 다른 파일에서 액세스 함수의 한 예는 다음과 같다.
interCompGlobalVarA=....
액세스 함수에 대한 VT 엔트리의 샘플 ARM 모드 코드가 아래에 제시되지만, 본 실시예가 이러한 샘플 코드에 제한되지는 않는다.
void setInterCompGlobalVarA(int value)
{
interCompGlobalVarA = value;
}
voidreadInterCompGlobalVarA(int*value)
{
*value = interCompGlobalVarA;
}
액세스 함수를 이용할 때, "intercompGlobalVarA"에 대한 참조는 상기 액세스 함수들 중 한가지를 이용하는 것으로 변경된다.
컴포넌트간 변수와는 달리, 컴포넌트내 변수, 또는 한 컴포넌트 내의 로컬 변수들은 한 컴포넌트에 대한 업그레이드에 의해 영향받지 않는다. 왜냐하면, 컴포넌트 업그레이드는 컴포넌트내 변수들에 대한 적절한 업그레이드를 포함하기 때문이다. 따라서, 컴포넌트내 변수들은 gobalCosnt 변수/섹션, globalRW 변수/섹션, 그리고 globalZI 변수/섹션을 통하지 않는다. 더우기, 컴포넌트내 함수 호출의 참조 시퀀스는 globalCosnt 변수/섹션, globalRW 변수/섹션, 그리고 globalZI 변수/섹션을 이용하여 영향받지 않는다. 그러나 실시예가 이에 제한되지는 않는다.
한 실시예의 DA 매니저는 DA 매니저를 포함하는 이미지를 발생시키는 데 사용하기 위한 이미지 구축 프로세스를 포함한다. 한 예로, 도 4A 및 도 4B는 한 실시예 하에서, DA 매니저를 포함하는 이미지를 구성하기 위한 순서도(400)를 도시한다. DA 이미지 구성 절차는 신뢰도높은, 오류없는 이진 이미지를 발생시키며, 이 절차는 프리컴파일 스테이지(pre-compilation stage), 포스트링커 스테이지(post-linker stage), 그리고 코드 발생 스테이지(code generating stage)로 구분될 수 있다. 그러나 이에 제한되지는 않는다. 이미지 구성 절차의 프리컴파일 스테이지는 DA 프로세스를 위한 원본 구축 환경을 준비한다. 포스트링커 스테이지는 DA 매니저를 포함하는 이미지가 신뢰성있게 발생될 수 있을 때까지 여러번 실행될 수 있다. 코드 발생 스테이지는 이미지의 DA 매니저 컴포넌트에 대한 어셈블리 코드를 발생시킨다.
한 실시예의 구성 프로세서는 크로스 섹션 참조 정보를 구비한 이미지 메모리 맵 파일, 원본 컴포넌트 인식 산발 로딩 파일, 원본 호출 그래프 파일, , 그리고 제 3 자 라이브러리 객체 파일을 구비한 제작자 객체 파일들을 포함하는 리소스를 이용한다. 대안의 실시예는 추가적인 리소스나 다른 타입의 리소스를 이용할 수 있다. DA 매니저를 포함하는 이미지를 구성하기 위해 소스 코드 파일이 요구되지 않는다. 그러나, 소스 코드 파일들은 이진 이미지 성능 및 런타임 리소스 요건을 도울 수 있다.
DA 매니저를 포함하는 이미지 구성을 위한 순서도(400)를 참조할 때, 클라이언트 장치의 컴포넌트들은 VT의 로드 뷰 및 실행 뷰, 그리고 전역 참조를 포함한, DA 매니저를 호스팅하기 위한 장치 메모리의 위치를 명시함으로서 구성 프로세스를 개시한다(블록 402). 클라이언트 장치들의 컴포넌트들은 원본 이미지 맵 파일, 원본 컴포넌트 인식 산발 로딩 파일, 호출 그래프 파일, 그리고 원본 소스 코드 파일(부가적임) 중 한가지 이상의 정보를 이용하여 컴포넌트간 함수 호출과, 컴포넌트내 전역 변수 참조를 식별한다(블록 404). 식별된 컴포넌트간 함수 호출 및 컴포넌트간 전역 변수 참조들의 정보를 이용하여 장치 메모리 내 명시된 위치에 맞추어 넣기에 상기 DA 매니저의 엔트리들이 너무 크지 않은 지를 블록 406에서 결정한다. 상기 DA 매니저는 일반적으로 클라이언트 장치 메모리 내 한 블록의 메모리를 점유하는 독립형 컴포넌트 또는 EBSC이다. 그러나 이에 제한되지는 않는다.
DA 매니저의 엔트리들이 장치 메모리 내 명시 위치에 맞추어 넣기에 너무 클 경우, 컴포넌트들의 재배열이 수행되어 컴포넌트간 참조들을 감소시킨다. 컴포넌트들의 재배열은 모든 컴포넌트간 전역 상수 변수(RO_DATA)들을 새로운 globalCosnt 섹션으로 재그룹형성 또는 재할당하는 과정을 포함한다(블록 450). 그러나 이에 제한되지는 않는다. 원본 소스 코드 파일이 가용한 지를 결정한다(블록 452). 원본 소스 코드 파일이 가용할 경우, 모든 컴포넌트간 전역 RW 변수(RW-DATA)들과 전역 ZI 변수(ZI-DATA)들이 원본 소스 코드에서 외부 참조, "extern"으로 변경되거나 재규정된다(블록 454). 컴포넌트간 전역 RW 변수(RW-DATA)와 전역 ZI 변수(ZI-DATA)의 중앙집중형 선언(centralized declaration)을 가진 새 소스 코드 파일(globalInter.c)이 발생된다(단계 456). 중앙집중형 선언은 전역 RW 변수들을 새 globalRW 섹션에 할당하고, 전역 ZI 변수를 새 globalZI 섹션에 할당한다. 그러나 이에 제한되지는 않는다. 산발 로딩 파일 역시 수정되어, globalRW 및 globalZI 섹션과 함께 재그룹형성된 컴포넌트 간 전역 상수 변수('globalCosnt')들을 포함하게 되며, 그리고 Make 파일이 수정된다(블록 458). 새 소스 코드 파일(globalInter.c)의 발생에 이어, 새 소스 코드 파일이 다시 컴파일되고, 그 객체 파일이 다시 링크된다(블록 470). 이제 동작은 VT의 로드 뷰 및 실행 뷰와, 전역 참조들을 포함하는, DA 매니저를 호스팅하기 위한 장치 메모리 내 위치를 명시하도록 되돌아간다(블록 402).
블록 454, 456, 458의 동작들을 위한 원본 소스 코드 파일이 가용하지 않을 경우(블록 452에서 결정), 컴포넌트간 참조들을 감소시키도록 컴포넌트들의 재배열(블록 450)을 행한 후 액세스 함수가 발생된다(블록 460). 이 액세스 함수는 상술한 바와 같이, 전역 함수의 참조를 함수 호출로 변환한다. 액세스 함수의 발생에 이어, 소스 코드 파일이 다시 컴파일되고, 객체 파일이 다시 링크된다(블록 470). 그후 동작은 VT의 로드 뷰 및 실행 뷰와, 전역 참조들을 포함하는, DA 매니저를 호스팅하기 위한 장치 메모리 내 위치를 명시하도록 되돌아간다(블록 402). DA 매니저 엔트리의 크기가 장치 메모리 내 명시된 위치에 부합(블록 406)할 때까지, 블록 450-470의 동작들이 클라이언트 장치의 컴포넌트들에 의해 반복된다.
DA 매니저의 엔트리들이 장치 메모리 내 명시 위치에 부합될 때(블록 406에 서 결정), 동작은 각 컴포넌트에 대한 컴포넌트간 함수 호출을 위한 VT 소스 코드를 계속하여 발생시킨다(블록 408). 클라이언트 장치는 각각의 컴포넌트에 대해 새 (수정된) 산발 로딩 파일들을 또한 발생시킨다(블록 410). 더우기, 클라이언트 장치는 각각의 컴포넌트에 대한 심벌 정의 파일 symdef를 또한 발생시킨다(블록 412). 이때, 각각의 symdef 파일은 VT 표 엔트리 어드레스를 이용하여 대응하는 컴포넌트들에 대한 외부 참조들을 규정한다. symdef 파일은 VT에 이용되지 않는 컴포넌트들의 경우 불필요하다. 블록 408, 410, 412의 동작들은 원본 이미지 맵 파일과 수정된 산발 로딩 파일 중 한가지 이상의 정보를 이용하지만, 이에 제한되지는 않는다.
클라이언트 장치의 동작들은 이미지의 컴포넌트들을 컴파일/조합 및 재-링크함으로서, 그리고 각 컴포넌트에 대한 이미지 및 메모리 맵을 발생시킴으로서 계속된다(블록 414). 한 실시예의 재-링크 동작들은 DA 매니저 컴포넌트에 대한 링크를 포함하지 않는다. 그러나 이에 제한되는 것은 아니다. 클라이언트 장치는 최종 심벌 위치를 포함하는 DA 매니저 컴포넌트에 대한 symdef 파일을 또한 발생시킨다(단계 416). 그후 클라이언트 장치는 VT 컴포넌트 이미지 발생을 위해 각 컴포넌트의 로컬 심벌을 이용하여 VT 객체파일을 컴파일하고 재-링크한다(블록 418). 클라이언트 장치는 DA 매니저 컴포넌트를 컴파일하고 링크하여 DA 매니저 이미지를 발생시킨다(블록 420). DA 매니저 이미지를 포함하는 이미지들은 클라이언트 장치 메모리로 로딩된다(블록 422).
한 실시에의 클라이언트 장치는, 클라이언트 장치가 제작된 후, 클라이언트 장치의 특정 컴포넌트들에 대한 업그레이드를 포함하는 소프트웨어 업그레이드가 실행될 때, 상술한 DA를 이용한다. 업그레이드되는 컴포넌트들 중 한가지 이상이 컴포넌트간 참조들을 포함할 때, 상술한 구성 프로세서를 이용하여 소프트웨어 업그레이드 중 DA 매니저가 변경되거나 업그레이드된다.
이미지의 새 버전이 발생되는 클라이언트 장치의 소프트웨어 업그레이드 중, 상술한 구성 프로세스는 업그레이드되는 컴포넌트들의 이미지들을 발생시킨다. 수정되지 않는 컴포넌트들은 이전 버전과 동일하여야 하지만, 컴포넌트간 함수 호출에 대응하는 DA 매니저 엔트리들은 확인되어야 한다. 코드 변화로 인해 대응하는 원본 컴포넌트에 부합하지 않는 새 컴포넌트간 함수 호출 및 전역 변수들은 이미지의 최종 버전의 점유 부분 중 끝에 추가될 것이다. 그러나 이에 제한되지는 않는다. 더우기, DA 매니저의 모든 기존 심벌들은 달리 명시되지 않을 경우, 원본 어드레스를 유지한다.
DA 매니저의 구성 이후, DA 매니저는 중앙집중형 라우터나 스위치보드로 기능한다. 이 라우터나 스위치보드는 각 EBSC의 심벌 위치를 알고 있고 EBSC를 링크한다. 이러한 사항은 클라이언트 장치 프로그램의 실행 중 요구되는 것이다. 한 EBSC로부터 또다른 EBSC로의 임의의 참조는 EBSC간의 직접적 방식이 아니라 DA 매니저를 통해 루팅된다. 한 컴포넌트가 파일 업그레이드 중 수정되면, 그리고 업그레이드에 따라 ROM의 EBSC에 위치 변화가 나타나면, 이 변화는 DA 매니저에 의해 레코딩되고, 따라서, 장치 프로그램에 존재하는 EBSC에 대한 참조나 링크의 일체성이 유지된다.
상술한 바와 같이, 파일의 개정(revision)은 호스트 장치의 메모리 위치에 대한 새 (업데이트된) EBSC의 기입을 포함한다. 새 EBSC는 이에 의해 대체되는 원본 EBSC와 동일한 시작 주소를 가지지 않을 것이며 동일한 크기가 아닐 것이다. 한 실시예의 업그레이드 클라이언트는 EBSC 크기나 시작 주소에 상관없이 새 EBSC의 기입을 수용하기 위해 업그레이드가능한 EBSC의 DA를 포함하는 장치 메모리 관리 옵션을 제공한다.
장치 메모리의 컴포넌트들의 업그레이드 중 DA를 이용하는 장치 메모리의 한 예로서, 도 5는 장치 메모리(130)의 블록도표로서, 도 1 및 도 3의 실시예 하에서, 소프트웨어 이미지(300), 업그레이드 클라이언트(126), 그리고 DMM 클라이언트(500)의 컴포넌트들을 포함하는 메모리(130)의 컴포넌트들 간의 상호작용의 예를 도시한다. 한 실시예의 장치 메모리(130)는 플래시 ROM인데, 여러 타입의 메모리, 또는 이들의 조합이 장치 메모리(130)의 본 실시예, 또는 대안의 실시예에 사용될 수 있다.
한 실시예의 DMM 클라이언트(500)는 DMM 라이브러리(510), VT(512), 그리고 가비지 표(514)를 포함한다. 그러나 이에 제한되지는 않는다. VT(512)가 DMM 클라이언트(500)의 한 컴포넌트로 제시되지만, VT(512)가 DA 매니저(310)과 함께 구성될 수도 있고, 이미지(300)나 DMM 클라이언트(500)의 또다른 섹션에 나타날 수도 있다. DMM 라이브러리(510)는 함수 어드레스 변환 애플리케이션 프로그래머 인터페이스("API")(520), 예약 API(522), 그리고 가비지 컬렉션 API(524) 중 한가지 이상을 포함한다. DMM 라이브러리(510)는 함수 어드레스 변환 API(520), 예약 API(522), 그리고 가비지 컬렉션 API(524) 중 한가지 이상의 조합으로 한개 이상의 추가 API를 포함할 수도 있다.
소프트웨어 업그레이드 중 DA는, 좀 더 개선된 메모리 관리를 구현하면서, 각각의 업데이트 중 EBSC 및 EBSC 그룹의 시작 어드레스 및 크기의 수정을 지원하는 것이 일반적이다. 한 실시예의 업그레이드 클라이언트는 DMM 클라이언트(500)의 API와 한개 이상의 데이터 표 간의 상호작용을 이용하여 동적 어드레싱을 지원한다. 이와 같이, DA는 업데이트 실패 확률을 낮추면서도 더 빠른 업데이트 처리를 지원하면서, ROM 이용 및 장치 메모리 맵 설계의 효율을 증가시킨다.
DA를 이용한 메모리 관리를 수행함에 있어, 업그레이드 클라이언트는 제 1, 2 메모리 영역을 포함하는 호스트 장치 메모리 영역들의 순차적 검색을 수행함으로서 새 소프트웨어 컴포넌트들을 수용하기에 충분히 큰 메모리 블록들을 식별하고 예약한다. 새 컴포넌트 크기가 검색된 메모리 영역들의 가용 블록의 크기보다 클 경우, 업그레이드 클라이언트는 사용하지 않는 메모리 블록들을 제거하도록 제 1 메모리 영역을 재기입하고, 제 1, 2 메모리 영역을 재배분하며, 새 컴포넌트를 제 2 메모리 영역에 기입하고, 벡터 표를 업데이트한다.
도 6은 한 실시예 하에서, 동적 어드레싱을 이용하여 EBSC나 EBSC 그룹을 업데이트하기 위한 순서도(600)를 도시한다. 업그레이드 클라이언트는 새 EBSC 버전을 수신한다(블록 602). 원본 EBSC 버전 및 대응하는 업그레이드 파일로부터 새 EBSC 버전이 발생되거나, 소프트웨어 컴포넌트 디스트리뷰터로부터 새 EBSC 버전을 수신한다. 새 EBSC 버전의 저장을 수용하기 위한 메모리 영역이 식별되어 클라이언 트 장치에 예약된다(블록 604). 블록 606에서, 업그레이드 클라이언트의 컴포넌트들이 새 EBSC 버전을 예약된 메모리 영역에 기입한다. 새 EBSC 버전으로부터 발생하는 VT의 정보에 대한 필요한 변경을 행하기 위해, VT에 대한 업데이트가 이루어진다(블록 608). 또한, 새 EBSC 버전의 기입으로부터 발생하는 사용하지 않은 메모리 영역의 변화를 반영하기 위해, 가비지 표에 대한 업데이트가 또한 이루어진다(블록 610).
DA를 이용하여 클라이언트 장치의 소프트웨어 컴포넌트들에 액세스하기 위해, 업그레이드 클라이언트는 대응하는 소프트웨어 컴포넌트들의 식별 정보를 포함하는 클라이언트 장치의 메인 프로그램으로부터 함수 호출을 수신하고, VT로부터 대응하는 소프트웨어 컴포넌트의 시작 어드레스를 판독하며, 대응하는 소프트웨어 컴포넌트에 대한 호출을 발생시킨다. 이와 같이, 제 1 EBSC가 제 2 EBSC를 호출하면, 업그레이드 클라이언트는 함수 호출 시퀀스를 변경시켜서, 정적 어드레스를 이용하여 직접 제 2 EBSC를 호출하는 것이 아니라, 제 1 EBSC가 정적 어드레스를 이용하여 업그레이드 클라이언트의 API를 호출한다. 호출된 API는 수신한 호출을 제 2 EBSC에 대한 호출로 변환한다. 이때, 런타임 VT의 대응하는 정적 어드레스 및 인수를 이용한다.
도 7은 한 실시예 하에서 DA를 이용하는 함수 호출의 순서도(700)이다. 호스트 장치의 메인 프로그램은 장치 메모리에 저장된 EBSC를 이용하여 사용자-요청 함수들을 지원한다. 한 함수가 사용자에 의해 요청될 때, 클라이언트 장치의 메인 프로그램의 EBSC는, 정적 어드레스를 이용하여 업그레이드 클라이언트의 컴포넌트들 을 직접 호출함으로서 특정 함수에 연계된 EBSC들을 호출한다. 이 호출에 따라, 업그레이드 클라이언트는 함수, 또는 이 함수에 대한 EBSC 신원 및 인수를 포함하는 메인 프로그램으로부터 정보를 수신한다(블록 702). 업그레이드 클라이언트는 VT에 액세스하는데(블록 704), 이는 EBSC의 대응하는 시작 어드레스와 함께 메인 프로그램에 가용한 각 EBSC의 엔트리들을 포함한다. 업그레이드 클라이언트는 VT로부터 시작 어드레스 및 관련 인수들을 판독한다(블록 706). 메인 프로그램으로부터 수신한 호출된 EBSC의 정보와 함께 시작 어드레스 정보를 이용하여, 업그레이드 클라이언트는 실제 함수에 대한 호출을 발생시키고, 대응하는 EBSC들을 모든 수신 인수들과 함께 발생시킨다(블록 708).
도 5를 참조할 때, 그리고 메모리(130)의 컴포넌트들 간의 상호작용을 고려할 때, 함수 어드레스 변환 API(520)는 특정 호스트 함수들에 연계된 EBSC에 대한 클라이언트 장치 메인 프로그램(132)으로부터 호출을 발생시킨다. 클라이언트 장치의 메인 프로그램(132)은 함수 어드레스 변환 API(520)를 직접 호출함으로서 특정 함수에 연계된 EBSC를 호출한다. API(520)의 직접 호출은 EBSC의 직접 호출 대신에 구현된다. 호출 시에, 함수 어드레스 변환 API(520)는 함수 식별 정보 및 함수에 대한 인수들을 포함하는 메인 프로그램(132)으로부터 정보를 수신한다.
이 호출에 따라, 함수 어드레스 변환 API(520)는 VT(312)에 액세스한다. VT(512)는 장치 메모리(130)에 가용한 각각의 함수에 대한 엔트리를, 장치 메모리(130) 내 해당 함수의 대응하는 시작 어드레스와 함께 포함한다. 함수 어드레스 변환 API(520)는 VT(512)로부터 메인 프로그램(132)에 의해 요청받은 함수의 시작 어드레스를 판독하고, 메인 프로그램(132)으로부터 수신한 호출된 EBSC의 정보와 함께 시작 어드레스 정보를 이용하여, 모든 수신 인수들과 함께 실제 함수에 대한 호출을 발생시킨다.
한 실시예의 업그레이드 클라이언트(126)는 예약 API(522)라 불리는 EBSC(522)의 새 버전의 예약을 위한 API를 이용하여, EBSC나 EBSC 그룹의 새 버전을 수용하기 위한 메모리의 영역을 위치설정하고 예약한다. 도 5를 참조할 때, 예약 API(522)는, 업그레이드 클라이언트(126)에 의해 호출될 때, 새 EBSC 버전에 대한 식별 정보를 수신하며, 이 정보는 이 새 버전에 대한 파일 크기를 포함한다. 새 EBSC 버전의 파일 크기는 새 EBSC 버전을 저장하기 위해 장치 메모리(130)에 예약해야할 영역의 크기에 해당한다. 예약 API(522)는 메모리(130)에 적절한 영역을 위치시키고, 메모리 영역을 성공적으로 예약함에 따라 요청받은 예약 영역의 시작 어드레스를 리턴시킨다. 도 8은 한 실시예 하에서, 예약 API(522)를이용하여 EBSC의 새 버전을 수용하기 위한 메모리 영역을 예약하는 과정에 관한 순서도(800)이다.
요청받은 크기의 메모리 블록을 할당함에 있어서, 예약 API(522)는 다음과 같은 한 세트의 규정을 적용하지만, 대안의 실시예는 동등한 결과를 얻기 위해 다른 규정을 적용할 수 있다. 도 9는 한 실시예 하에서, 예약 API의 규정들을 이용하여 EBSC의 새 버전을 수용하기 위한 메모리 블록을 위치시키는 과정의 순서도(900)이다. 새 EBSC의 크기에 관한 정보를 수신함에 따라(블록 902), 예약 API는 새 EBSC의 크기가 원본 EBSC의 크기를 넘는 지를 결정한다(블록 904). 새 EBSC의 크기가 원본 EBSC의 크기보다 작거나 같을 경우, 예약 API는 원본 EBSC에 의해 현재 점 유된 메모리 블록을 할당하여, 새 EBSC를 수용한다(블록 906). 그렇지 않을 경우, 예약 API는 예약된 메모리 영역의 가용 메모리로부터 요청받은 크기를 가진 메모리 블록을 위치시키려 시도한다.
검색을 계속함에 있어, 예약 API는 요청받은 크기를 가진 메모리 블록에 대해, 클라이언트 장치의 예약된 메모리 영역을 검색한다(블록 908). 적절한 크기의 블록이 예약된 메모리 영역에 나타날 경우, 예약 API는 새 EBSC를 수용하기 위해 메모리 블록을 할당한다(블록 910). 적절한 크기의 메모리 블록이 예약된 메모리 영역에서 가용하지 않을 경우, 예약 API는 가비지 표에 액세스한다(블록 912). 예약 API는 가비지 표의 정보를 이용하여, 메인 프로그램의 비사용 메모리 영역들을 검색하고(블록 914), 가비지 표의 엔트리들에 대응하는 비사용 영역들 중에서 요청받는 크기의 메모리 블록을 위치시키려 시도한다. 한 실시예의 비사용 영역은 가비지 영역이라 불리며, 메인 프로그램의 비사용 영역들을 포함한다. 그러나 이에 제한되지는 않는다. 적절한 크기의 메모리 블록이 비사용 메모리 영역에서 발견되면, 예약 API는 이 블록을 새 EBSC 수용을 위해 할당한다(블록 916).
한 실시예의 예약 API는, 적절한 크기의 메모리 블록을 위치시킬 수 없을 때, 가비지 컬렉션이라 불리는 프로세스를 개시한다(블록 918). 또한, 예약 API는 가비지 표의 모든 엔트리들이 점유되어 있을 때 가비지 컬렉션을 개시한다. 도 5를 참조할 때, 가비지 컬렉션(524)을 위한 API는 가비지 컬렉션 API(524)로 불리며, 예약 API(522)에 의해 호출된다. 그러나 이에 제한되지는 않는다. 가비지 컬렉션(524)용 API는 어떤 인수도 수신하지 못하는 것이 일반적이며, EBSC 및 EBSC 업 데이트를 위해 예약된 영역 내 모든 가비지들을 소거한다.
상술한 바와 같이, 예약 API(522)는 요청받은 예약 크기를 위한 충분한 메모리를 찾지 못할 경우, 또는, 가비지 엔트리 표가 꽉 차 있을 경우, 가비지 컬렉션을 개시한다. 도 10은 한 실시예 하에서 가비지 컬렉션용 순서도(1000)이다. 가비지 컬렉션을 개시함에 있어, 예약 API는 가비지 컬렉션 API를 호출한다. 호출되면, 가비지 컬렉션 API는 가비지 표 엔트리들을 판독하고(블록 1002), 장치 메모리의 내장 소프트웨어 영역을 재기입한다. 그래서 메모리의 EBSC들을 순차적으로 메모리 위에서 압축(pack)시킨다(블록 1004). 대안의 실시예들은 메인 메모리의 아래에서 EBSC들을 압축(pack)시킨다. 그러나 이에 제한되지는 않는다. 이러한 압축 동작은 내장 소프트웨어 영역의 비사용 영역들을 제거한다.
이 압축 동작 이후, 가비지 컬렉션 API는 예약 메모리 영역에 저장된 각각의 EBSC의 크기를 평가한다(블록 1006). 그리고 재기입 이후 내장 소프트웨어 영역의 메인 프로그램에서 유지되는 비사용 메모리 블록들에 대해 크기를 비교한다. 이 평가는 내장 소프트웨어 영역의 재기입 이후 남아있는 비사용 메모리의 양이 예약 메모리 영역의 임의의 EBSC를 수용할 수 있는 지를 결정하며, 따라서, 가능할 경우, EBSC가 예약 메모리 영역으로부터 장치 메모리의 내장 소프트웨어 영역으로 이동할 수 있다. 예약 메모리 영역의 EBSC들이 순차적으로 평가된다. 하지만 이에 제한되지는 않는다. EBSC들은 예약 메모리 영역으로부터 내장 소프트웨어 영역에 재기입된다(EBSC 크기가 가능할 경우, 블록 1008). EBSC가 한 실시예에서 재기입됨에 따라, EBSC들은 압축된 EBSC에 이어 내장 소프트웨어 영역에 순차적으로 저장된다.
예약 메모리 영역에 저장된 EBSC들의 평가는, 모든 EBSC들이 내장 소프트웨어 영역으로 이동할 때까지, 또는 예약 메모리 영역의 EBSC들을 수용하기에 충분히 큰 내장 소프트웨어 영역에 어떤 나머지 영역도 존재하지 않을 때까지, 계속된다. 내장 소프트웨어 영역에 수용될 수 없는 임의의 EBSC들은 예약 메모리 영역에 남게되고, 하지만 이에 제한되지는 않는다.
압축 및 이동 동작의 완료후, 가비지 컬렉션 API는 장치 메모리의 임의의 비사용 메모리 블록들을 예약 메모리 영역으로 재지정함으로서 호스트 장치 메모리를 재배분한다(블록 1010). 더우기, 예약 메모리 영역 포인터가 재설정되어, 예약 메모리 영역의 가용 메모리의 시작 어드레스를 유지관리한다(블록 1012). 추가적으로, 블록 1014에서, 가비지 표가 재기입되어, 비사용 메모리 영역의 상태를 반영한다. 업그레이드 클라이언트는 동일한 EBSC의 원 버전에 의해 점유되는 메모리 영역과는 다른 임의의 메모리 영역에, 새 버전의 EBSC의 기입을 함으로서, 벡터 표를 또한 업데이트한다.
도 11은 한 실시예 하에서, DA를 이용하는 내장 소프트웨어 발전 및 전개 프로세스의 순서도(1100)이다. 이 다이어그램(1100)은 소프트웨어 컴포넌트 디스트리뷰터(1102)에 의한 EBSC 개발로부터, DA-기반 장치 메모리 관리와 함께 한 실시예의 업그레이드 클라이언트를 이용한 장치 ROM 초기화까지의 프로세스를 도시한다.
소프트웨어 컴포넌트 디스트리뷰터(1102)의 컴포넌트들은 새 EBSC의 소스 코드를 수신하고, 상술한 바와 같이 소스 코드를 클라이언트 장치에 전달한다. 클라이언트 장치는 새 EBSC 소스 코드를 컴파일(1103)한다. 소스 코드의 컴파일(1103) 에 이어, 결과적인 EBSC 객체코드는 제 1 링커(1106)에 전달되며, 제 1 링커(1106)는 새 EBSC의 등록의 일부분으로서, 새 EBSC에 대응하는 맵 파일(1104)을 발생시킨다.
벡터 발생 툴(1105)은 맵 파일(1104)의 정보를 이용하여, EBSC에 대응하는 초기 VT(1108)를 발생시키고, VT(1108)를 제 2 링커(1116)에 전달한다. 제 2 링커(1116)는 VT(1108)를 맵 파일(1104)의 정보와 함께 이용하며, 제 1 링커(1106)로부터의 원본 이미지 맵 파일 정보를 이용하여, 헥스(hex)(텍스트) 또는 이진 파일(1118)을 발생시킨다.
헥스(텍스트) 또는 이진 파일(1118)은 클라이언트 장치(122)의 내장 소프트웨어 영역(1120)에 다운로드된다. 대안의 실시예들은 클라이언트 장치(122)의 다른 메모리 영역에 헥스 파일(1118)을 기입할 수 있다. 클라이언트 장치(122)의 DMM 클라이언트의 컴포넌트들은 클라이언트 장치 소프트웨어의 차후 소프트웨어 업그레이드 중 벡터 표(1108)를 유지관리한다. 그리고 EBSC의 동적 어드레싱을 지원한다.
도 4A 및 도 4B를 참조할 때, 순서도의 동작들은 한개 이상의 프로세서의 제어 하에 있다. 그러나 이에 제한되지는 않는다. 이 순서도에 나타난 각각의 블록은 당 분야에 잘 알려진 타입으로서, 본원에서 설명할 필요가 없는 동작들의 시퀀스도 자체적으로 포함할 수 있다. 당 분야의 통상의 지식을 가진 자라면, 소스 코드, 마이크로코드, 프로그램 로직 어레이를 생성할 수 있을 것이며, 본원에서 제공되는 상세한 설명 및 이 순서도를 기반으로 하여, 블록 함수들을 구현할 수 있을 것이다. 이 순서도에 따라 동작하는 알고리즘이나 루틴은 관련 프로세서들의 일부분을 형성하는 비휘발성 메모리에 저장되며, 관련 메모리 영역에, (디스크같은) 제거가능한 매체에, EEPROM 등의 전기적으로 소거가능한 프로그래머블 반도체 칩같은 하드와이어형/프리프로그래밍형 칩에, 또는 이러한 컴포넌트들의 임의의 조합에 저장된다. 그러나 이에 제한되지는 않는다.
중앙 집중형 DA 매니저의 컴포넌트들은 연산 컴포넌트들 및 이와 함께 동작하는 장치들의 컬렉션을 포함한다. DA 매니저의 컴포넌트들은 대형 컴퓨터 시스템이나 네트워크의 컴포넌트이거나 서브시스템일 수도 있다. DA 매니저 컴포넌트들은 다른 버스, 컨트롤러, 메모리 장치, 그리고 데이터 입/출력 장치 등과 같은 임의의 수의 컴포넌트들 사이에 연결될 수도 있다. DA 매니저 컴포넌트들의 함수들은 다른 프로세서-기반 컴포넌트들의 임의의 수/조합 간에 분포될 수 있다. 상술한 메모리 시스템들은 당 분야에 알려진 다양한 메모리 시스템들을 포함할 수도 있다.
본원의 DA 및 DA 매니저는 프로세서에 연결된 다수의 소프트웨어 컴포넌트들과 동적 어드레싱 매니저를 포함하는 포터블 통신 장치를 포함한다. 이때, 동적 어드레싱 매니저는 한개 이상의 링크를 포함하며, 각각의 링크는 한 컴포넌트에서 각기 식별된 참조 간의 프로그램 링크를 형성한다. 이때, 소프트웨어 컴포넌트들 중 또다른 하나는 식별된 참조에 대응하며, 동적 어드레싱 매니저는 링크를 이용한 코드 실행 중 다수의 소프트웨어 컴포넌트들에 링크된다.
한 실시예의 각각의 링크는 동적 어드레싱 매니저에 고정 어드레스를 가진다.
한 실시예의 참조들은 함수 호출 및 변수 참조들 중 한가지 이상을 포함한 다.
한 실시예의 변수 참조들은 전역 변수 참조 및 상수 변수(constant variable) 참조 들 중 한가지 이상을 포함한다.
한 실시예의 동적 어드레싱 매니저는 함수 호출 및 변수 참조들 중 한가지 이상에 대한 중앙집중형 점프 표인 벡터 표를 포함한다.
한 실시예의 다수의 소프트웨어 컴포넌트들의 링크는 제 1 컴포넌트로부터의 참조를 벡터 표의 엔트리로 향하게 하고, 이 참조를 엔트리 정보를 이용하여 제 2 컴포넌트로 리디렉션시키는 기능을 포함한다.
한 실시예의 동적 어드레싱 매니저는 한개 이상의 중앙집중형 섹션을 포함한다. 한 실시예의 변수 참조는 중앙집중형 섹션에 할당된다. 한 실시예의 다수의 소프트웨어 컴포넌트들의 링크는 변수 참조에 대한 참조를, 변수 참조에 대응하는 중앙집중형 섹션의 어드레스에게로 넘기는 과정을 포함한다.
한 실시예의 장치는 업그레이드 클라이언트를 추가로 포함하며, 이 업그레이드 클라이언트는 다수의 소프트웨어 컴포넌트들을 업그레이드시킨다. 이때, 업그레이드는 무선 연결을 통해 업그레이드 파일을 수신하거나, 업그레이드 파일의 콘텐트에 적합한 것으로 다수의 소프트웨어 컴포넌트들 중 하나를 업그레이드하거나, 동적 어드레싱 매니저의 링크들의 정보를 업그레이드함으로서 다수의 소프트웨어 컴포넌트들 간의 링크를 업그레이드한다.
한 실시예의 장치는 한개 이상의 메모리 영역들을 포함하는 메모리를 추가로 포함하며, 이때 동적 어드레싱 매니저가 메모리에 저장된다. 한 실시예의 메모리는 RAM과 ROM 중 한가지 이상을 포함한다.
한 실시예의 클라이언트 장치는 셀룰러 전화, 포터블 연산 장치, 그리고 PDA 중 한가지 이상이다.
본원에서 개시된 DA 및 DA 매니저는 다음 단계들로 구성되는 방법을 포함한다. 이 방법은, 클라이언트 장치의 장치 메모리에 저장된 코드를 다수의 컴포넌트로 조직하는 단계와, 다수의 컴포넌트들 각각에 포함된 한개 이상의 참조를 식별하는 단계로서, 이때, 각각의 참조는 해당 코드의 한개 이상의 다른 컴포넌트들에 대한 참조인 단계와, 한개 이상의 링크를 포함하는 매니저 컴포넌트를 발생시키는 단계로서, 이때, 각각의 링크는 한 컴포넌트에서의 각각의 식별된 참조와, 식별된 참조에 대응하는 다른 컴포넌트 간의 프로그램 링크를 형성하는 단계와, 코드 실행 중 매니저 컴포넌트의 링크들을 이용하여 다수의 컴포넌트들을 링크하는 단계를 포함한다.
한 실시예의 각각의 링크는 매니저 컴포넌트에 고정 어드레스를 가진다.
한 실시예의 참조들은 함수 호출, 전역 변수 참조, 그리고 상수 변수 참조들 중 한가지 이상을 포함한다.
한 실시예의 참조들은 상대 오프셋 점프/브랜치 명령과 절대 오프셋 점프/브랜치 명령 중 한가지 이상을 포함한다.
한 실시예의 참조들은 전역 상수 변수, 전역 읽기/쓰기 데이터 어드레스, 그리고 전역 제로-초기화 데이터 어드레스들 중 한가지 이상을 포함한다.
한 실시예의 매너지 컴포넌트를 발생시키는 과정은 함수 호출 및 전역 변수 들 중 한가지 이상에 대한 중앙집중형 점프 표인 벡터 표를 발생시키는 단계를 추가로 포함한다. 한 실시예의 다수의 컴포넌트들의 링크는 제 1 컴포넌트로부터의 참조를 벡터 표의 엔트리에 대한 것으로 넘기고, 이 엔트리의 정보를 이용하여 이 참조를 제 2 컴포넌트에게로 리디렉션시키는 단계를 포함한다. 한 실시예의 참조는 함수 호출 및 변수 중 한가지 이상을 포함한다.
매니저 컴포넌트를 발생시키는 상기 단계는, 매니저 컴포넌트의 한개 이상의 중앙집중형 섹션을 발생시키는 단계와, 상기 발생된 중앙집중형 섹션에 전역 상수 변수(global constant variable)들을 할당하는 단계를 포함한다. 다수의 컴포넌트들을 링크하는 단계는, 전역 상수 변수(global constant variable)에 대한 참조를, 전역 상수 변수에 대응하는 중앙집중형 섹션의 어드레스로 디렉팅하는 단계를 포함한다. 매니저 컴포넌트를 발생시키는 단계는, 발생된 중앙집중형 섹션에 전역 읽기/쓰기 데이터 어드레스를 할당하는 단계를 포함한다. 다수의 컴포넌트들을 링크하는 단계는, 전역 읽기/쓰기 데이터 어드레스에 대한 참조를, 상기 전역 읽기/쓰기 데이터 어드레스에 대응하는 중앙집중형 섹션의 어드레스로 디렉팅시키는 단계를 포함한다. 매니저 컴포넌트를 발생시키는 단계는, 상기 발생된 중앙집중형 섹션에 전역 제로-초기화 데이터 어드레스를 할당하는 단계를 포함한다. 다수의 컴포넌트들을 링크하는 단계는, 전역 제로-초기화 데이터 어드레스들에 대한 참조를, 상기 전역 제로-초기화 데이터 어드레스에 대응하는 중앙집중형 섹션의 어드레스로 디렉팅하는 단계를 포함한다.
한 실시예의 방법은 클라이언트 장치의 한개 이상의 메모리 영역에 상기 매니저 컴포넌트를 저장하는 단계를 추가로 포함한다. 상기 메모리 영역은 RAM과 ROM 중 한가지 이상을 포함한다.
상기 방법은 코드를 업그레이드하는 단계를 추가로 포함하고, 상기 업그레이드하는 단계는, 무선 연결을 통해 업그레이드 파일을 수신하는 단계, 다수의 컴포넌트 중 한가지 이상을 업그레이드 파일의 콘텐트로 업그레이드하는 단계, 그리고 상기 매니저 컴포넌트를 업그레이드함으로서 업그레이드된 코드의 다수의 컴포넌트들 간의 링크를 업그레이드하는 단계를 포함한다.
한 실시예의 상기 클라이언트 장치는 셀룰러 폰, 포터블 통신 장치, 그리고 PDA 중 한가지 이상이다.
본원의 DA 및 DA 매니저는 동적 어드레싱 시스템을 포함하는 데, 상기 시스템은 제 1 장치와 모바일 통신 장치를 포함하며, 상기 제 1 장치는 업그레이드 파일을 발생시키는 제 1 업그레이드 컴포넌트를 포함하고, 상기 업그레이드 파일은 전자 파일의 오류를 수리하기 위한 정보와, 상기 전자 파일에 기능을 추가하기 위한 정보를 포함하며, 상기 모바일 통신 장치는 제 2 업그레이드 컴포넌트, 동적 어드레싱 매니저, 그리고 다수의 소프트웨어 컴포넌트들을 포함하고, 이때, 상기 동적 어드레싱 매니저는 한개 이상의 링크를 포함하며, 각각의 링크는 한 컴포넌트 내 각기 식별된 참조와, 상기 식별된 참조에 대응하는 소프트웨어 컴포넌트들 중 또다른 컴포넌트 간에 프로그램 링크를 형성하고, 상기 동적 어드레싱 매니저는 상기 링크를 이용하여 코드의 실행 중 다수의 소프트웨어 컴포넌트들을 링크한다.
상기 시스템은 무선 연결을 추가로 포함하고, 이때, 상기 제 2 업그레이드 컴포넌트는 상기 무선 연결을 통해 업그레이드 파일을 수신하며, 상기 제 2 업그레 이드 컴포넌트는 업그레이드 파일의 정보를 이용하여 다수의 소프트웨어 컴포넌트들을 자동적으로 업그레이드한다. 상기 업그레이드하는 동작은, 다수의 소프트웨어 컴포넌트들 중 한가지 이상을 업그레이드 파일의 콘텐트로 업그레이드하는 동작과, 상기 동적 어드레싱 매니저의 링크들의 정보를 업그레이드함으로서 다수의 소프트웨어 컴포넌트들 간의 링크를 업그레이드하는 동작을 포함한다.
각각의 링크는 동적 어드레싱 매니저에 고정 어드레스를 가진다.
상기 참조들은 함수 호출 및 변수 참조들 중 한가지 이상을 포함한다.
상기 동적 어드레싱 매니저는 함수 호출 및 변수 참조들 중 한가지 이상에 대한 중앙집중형 점프 표인 벡터 표를 포함한다.
상기 동적 어드레싱 매니저는 한개 이상의 중앙집중형 섹션을 포함하고, 이때, 상기 중앙집중형 섹션에 한개 이상의 변수 참조가 할당된다.
상기 제 1 장치는 상기 모바일 통신 장치에 호스팅된 소프트웨어 컴포넌트들의 하나 이상의 제공자에 의해 액세스될 수 있는 프로세서-기반 장치이다.
상기 모바일 통신 장치는 셀룰러 폰, 포터블 통신 장치, 그리고 PDA 중 한가지 이상을 포함한다.
다수의 소프트웨어 컴포넌트들은 소프트웨어 파일들을 포함하고, 상기 소프트웨어 파일들은, 동적 링크 라이브러리 파일, 공유 객체 파일, 내장 소프트웨어 컴포넌트(EBSC), 펌웨어 파일, 실행 파일, 헥스 데이터 파일(hex data file)을 포함하는 데이터 파일, 시스템 컨피규레이션 파일, 그리고 개인용 데이터를 포함하는 파일을 포함한다.
본원의 DA 및 DA 매니저는 모바일 통신 장치를 포함하는데, 상기 장치는, 클라이언트 장치의 장치 메모리에 저장되는 코드를 다수의 컴포넌트들로 조직하는 수단, 상기 다수의 컴포넌트들 각각에 포함된 한개 이상의 참조를 식별하는 수단으로서, 이때, 각각의 참조는 상기 코드의 한개 이상의 다른 컴포넌트에 대한 참조인 특징을 가지는 상기 식별하는 수단, 한개 이상의 링크를 포함하는 매니저 컴포넌트를 발생시키는 수단으로서, 이때, 각각의 링크는 한 컴포넌트 내 각각의 식별된 참조와, 상기 식별된 참조에 대응하는 다른 컴포넌트 간에 프로그램 링크를 형성하는 특징을 가지는 상기 발생시키는 수단, 그리고 상기 코드의 실행 중 매니저 컴포넌트의 링크를 이용하여 다수의 컴포넌트를 링크하는 수단을 포함한다.
매니저 컴포넌트를 발생시키는 상기 수단은, 함수 호출 및 전역 변수들 중 한가지 이상에 대한 중앙집중형 점프 표인 벡터 표를 발생시키는 수단을 포함한다. 다수의 컴포넌트를 링크하는 상기 수단은, 제 1 컴포넌트로부터의 참조를 벡터 표의 엔트리로 디렉팅시키는 수단, 그리고 상기 엔트리의 정보를 이용하여 상기 참조를 제 2 컴포넌트로 리디렉션시키는 수단을 추가로 포함한다.
매니저 컴포넌트를 발생시키는 상기 수단은, 매니저 컴포넌트의 한개 이상의 중앙집중형 섹션을 발생시키는 수단, 그리고 상기 발생된 중앙집중형 섹션에 변수 참조를 할당하는 수단을 추가로 포함한다. 다수의 컴포넌트들을 링크하는 상기 수단은, 상기 변수 참조에 대한 참조를, 상기 변수 참조에 대응하는 중앙집중형 섹션의 어드레스로 디렉팅시키는 수단을 추가로 포함한다.
상기 모바일 통신 장치는 코드를 업그레이드하는 수단을 추가로 포함하고, 상기 코드 업그레이드 수단은, 무선 연결을 통해 업그레이드 파일을 수신하는 수단, 상기 다수의 컴포넌트들 중 한개 이상을 업그레이드 파일의 콘텐트로 업그레이드하는 수단, 그리고 상기 매니저 컴포넌트를 업그레이드함으로서 업그레이드된 코드의 다수의 컴포넌트들 간의 링크를 업그레이드하는 수단을 포함한다.
본원의 DA 및 DA 매니저는 프로세싱 시스템에서 실행될 때, 아래의 단계들을 수행함으로서 포터블 장치의 소프트웨어 컴포넌트들을 링크하는 실행 명령들을 포함하는 컴퓨터 판독형 매체를 포함한다.
- 클라이언트 장치의 장치 메모리에 저장되는 코드를 다수의 컴포넌트들로 조직하는 단계,
- 상기 다수의 컴포넌트들 각각에 포함된 한개 이상의 참조를 식별하는 단계로서, 이때, 각각의 참조는 상기 코드의 한개 이상의 다른 컴포넌트에 대한 참조인 특징의 단계,
- 한개 이상의 링크를 포함하는 매니저 컴포넌트를 발생시키는 단계로서, 이때, 각각의 링크는 한 컴포넌트 내 각각의 식별된 참조와, 상기 식별된 참조에 대응하는 또다른 컴포넌트 간에 프로그램 링크를 형성하는 특징을 가지는 단계, 그리고
- 상기 코드의 실행 중 매니저 컴포넌트의 링크를 이용하여 다수의 컴포넌트를 링크하는 단계.
상기 단계들은 코드를 업그레이드하는 단계를 추가로 포함하고, 상기 코드 업그레이드 단계는,
- 무선 연결을 통해 업그레이드 파일을 수신하는 단계,
- 상기 다수의 컴포넌트들 중 한개 이상을 업그레이드 파일의 콘텐트로 업그레이드하는 단계, 그리고
- 상기 매니저 컴포넌트를 업그레이드함으로서 업그레이드된 코드의 다수의 컴포넌트들 간의 링크를 업그레이드하는 단계
를 포함한다.
본원의 중앙집중형 DA 매니저의 태양들은 다양한 회로 중 하나로 프로그래밍된 기능으로 구현될 수 있다. 상기 다양한 회로에는 필드 프로그래머블 게이트 어레이(FPGA)같은 프로그래머블 로직 어레이 장치(PLD), 프로그래머블 어레이 로직(PAL) 장치, 전기적으로 프로그래밍가능한 로직 및 메모리 장치와 표준 셀-기반 장치, 그리고 ASIC 등이 있다. DA 매니저의 태양들을 구현하기 위한 그외 다른 가능성으로는, 메모리(가령, EEPROM)를 구비한 마이크로콘트롤러, 내장형 마이크로프로세서, 펌웨어, 소프트웨어 등이 있다. 더우기, DA 매니저의 태양은 소프트웨어 기반 회로 에뮬레이션을 가진 마이크로프로세서, 디스크리트 로직(discrete logic)(순차형, 조합형), 커스텀 장치(custom devices), 퍼지(신경) 로직(fuzzy (neural) logic), 퀀텀 장치(quantum devices), 그리고 상기 소자 종류의 하이브리드들로 구현될 수 있다. 물론, 아래의 소자 기술들이 다양한 컴포넌트 종류로 제공될 수 있다. 가령, CMOS같은 MOSFET 기술, ECL(emitter-coupled logic)같은 바이폴러 기술, 폴리머 기술(가령, 실리콘-컨저게이트 폴리머 및 금속-컨저게이트 폴리머-금속 구조), 혼합형 아날로그 및 디지털 기술 등이 다양한 컴포넌트 종류로 제공될 수 있다.
본원에서 제시되는 다양한 함수들은 그 거동, 레지스터 전송, 로직 컴포넌트, 또는 그외 다른 특성 측면에서, 하드웨어, 펌웨어, 컴퓨터 판독형 매체나 기계 판독형 매체에 기록된 데이터나 명령어들의 조합을 이용하여 구현될 수 있다. 이렇게 포맷된 데이터나 명령들이 기록된 컴퓨터-판독형 매체들은 무선, 광학, 유선 신호 매체나 이들의 조합을 통해 이렇게 포맷된 데이터나 명령을 전달하는 데 사용될 수 있는 반송파와, 다양한 형태의 비휘발성 저장 매체(가령, 광학식, 자기식, 반도체 저장식 매체)를 포함한다. 이렇게 포맷된 데이터나 명령의 반송파에 의한 전달의 예로는, 한개 이상의 데이터 전송 프로토콜(가령, HTTP, FTP, SMTP, 등)을 통해 인터넷이나 그외 다른 컴퓨터 네트워크를 이용한 전송(업로드, 다운로드, 이메일 등등)을 포함한다.

Claims (49)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. - 무선 클라이언트 장치의 장치 메모리에 저장된 코드를 다수의 내장형 소프트웨어 컴포넌트들로 조직하는 단계,
    - 다수의 컴포넌트들 각각에 포함된 한개 이상의 참조(reference)를 식별하는 단계로서, 각각의 참조는 상기 코드의 한 개 이상의 다른 컴포넌트들에 대한 참조인 상기 식별 단계,
    - 한개 이상의 링크를 포함하는 매니저 컴포넌트를 발생시키는 단계로서, 이때, 각각의 링크는 하나의 컴포넌트 각각의 식별된 참조와, 상기 식별된 참조에 대응하는 다른 컴포넌트 사이에 프로그램 링크를 형성하고, 상기 코드에 대한 업데이트가 한번만 상기 매니저 컴포넌트에서 수행되는, 상기 매니저 컴포넌트 발생 단계, 그리고
    - 상기 코드의 실행 중 상기 매니저 컴포넌트의 링크를 이용하여 다수의 컴포넌트들을 링크시키는 단계를 포함하되,
    상기 코드에 대한 업데이트가 OTA(Over-the-air) 인터페이스를 통해, 상기 클라이언트 장치로, 그리고 상기 동일한 업데이트를 요청하는 다른 클라이언트 장치로 전송되며, 이로써 상기 코드 내의 참조를 조정하기 위해 상기 클라이언트 장치 메모리에 재기록이 요구되지 않는 것을 특징으로 하는 동적 어드레싱 방법.
  15. 제 14 항에 있어서, 각각의 링크는 매니저 컴포넌트에 고정 어드레스를 가지는 것을 특징으로 하는 동적 어드레싱 방법.
  16. 제 14 항에 있어서, 상기 참조들은 함수 호출, 전역 변수 참조, 그리고 상수 변수 참조(constant variable reference) 중 한가지 이상을 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  17. 제 14 항에 있어서, 상기 참조들은 상대 오프셋 점프/브랜치 명령과 절대 오프셋 점프/브랜치 명령 중 한가지 이상을 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  18. 제 14 항에 있어서, 상기 참조들은 전역 상수 변수(global constant variable), 전역 읽기/쓰기 데이터 어드레스, 그리고 전역 제로-초기화 데이터 어드레스 중 한가지 이상을 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  19. 제 14 항에 있어서, 상기 매니저 컴포넌트 발생 단계는, 함수 호출 및 전역 변수들 중 한가지 이상에 대한 중앙집중형 점프 표(jump table)인 벡터 표를 발생시키는 단계를 포함하되,
    상기 함수 호출은 지정된 함수를 페치(fetch) 및 실행하는 명령이고,
    상기 전역 변수는 값(value)과 식(expression)이 관련된 모든 상황 정보(context)에 접속가능한 변수인 것을 특징으로 하는 동적 어드레싱 방법.
  20. 제 19 항에 있어서, 상기 다수의 컴포넌트들을 링크하는 단계는,
    - 제 1 컴포넌트로부터의 참조를 벡터 표의 엔트리로 디렉팅하는 단계, 그리고
    - 엔트리의 정보를 이용하여 상기 참조를 제 2 컴포넌트로 리디렉션시키는 단계
    를 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  21. 제 19 항에 있어서, 상기 참조는 함수 호출과 변수 중 한가지 이상을 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  22. 제 14 항에 있어서, 상기 매니저 컴포넌트를 발생시키는 단계는,
    - 매니저 컴포넌트의 한개 이상의 중앙집중형 섹션을 발생시키는 단계, 그리고
    - 상기 발생된 중앙집중형 섹션에 전역 상수 변수(global constant variable)들을 할당하는 단계
    를 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  23. 제 22 항에 있어서, 상기 다수의 컴포넌트들을 링크하는 단계는,
    - 전역 상수 변수(global constant variable)에 대한 참조를, 전역 상수 변수(global constant variable)에 대응하는 중앙집중형 섹션의 어드레스로 디렉팅하는 단계
    를 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  24. 제 22 항에 있어서, 상기 매니저 컴포넌트를 발생시키는 단계는, 발생된 중앙집중형 섹션에 전역 읽기/쓰기 데이터 어드레스를 할당하는 단계를 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  25. 제 24 항에 있어서, 상기 다수의 컴포넌트들을 링크하는 단계는, 전역 읽기/쓰기 데이터 어드레스에 대한 참조를, 상기 전역 읽기/쓰기 데이터 어드레스에 대응하는 중앙집중형 섹션의 어드레스로 디렉팅시키는 단계를 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  26. 제 22 항에 있어서, 상기 매니저 컴포넌트를 발생시키는 단계는, 상기 발생된 중앙집중형 섹션에 전역 제로-초기화 데이터 어드레스를 할당하는 단계를 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  27. 제 26 항에 있어서, 상기 다수의 컴포넌트들을 링크하는 단계는,
    - 전역 제로-초기화 데이터 어드레스들에 대한 참조를, 상기 전역 제로-초기화 데이터 어드레스에 대응하는 중앙집중형 섹션의 어드레스로 디렉팅하는 단계
    를 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  28. 제 14 항에 있어서, 클라이언트 장치의 한개 이상의 메모리 영역에 상기 매니저 컴포넌트를 저장하는 단계를 추가로 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  29. 제 28 항에 있어서, 상기 메모리 영역은 RAM과 ROM 중 한가지 이상을 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  30. 제 14 항에 있어서, 상기 동적 어드레싱 방법은 코드를 업그레이드하는 단계를 추가로 포함하고, 상기 업그레이드하는 단계는,
    - 무선 연결을 통해 업그레이드 파일을 수신하는 단계,
    - 다수의 컴포넌트 중 한가지 이상을 업그레이드 파일의 콘텐트로 업그레이드하는 단계, 그리고
    - 상기 매니저 컴포넌트를 업그레이드함으로서 업그레이드된 코드의 다수의 컴포넌트들 간의 링크를 업그레이드하는 단계
    를 포함하는 것을 특징으로 하는 동적 어드레싱 방법.
  31. 제 14 항에 있어서, 상기 클라이언트 장치는 셀룰러 폰, 포터블 통신 장치, 그리고 PDA 중 한가지 이상인 것을 특징으로 하는 동적 어드레싱 방법.
  32. 동적 어드레싱 시스템에 있어서,
    상기 시스템은 제 1 장치와 모바일 통신 장치를 포함하며,
    상기 제 1 장치는 업그레이드 파일을 발생시키는 제 1 업그레이드 컴포넌트를 포함하고, 상기 업그레이드 파일은 전자 파일의 오류를 수정하기 위한 정보와, 상기 전자 파일에 기능을 추가하기 위한 정보를 포함하는 상기 제 1 장치 내의 코드에 대한 업데이트를 포함하며, 그리고
    상기 모바일 통신 장치는 제 2 업그레이드 컴포넌트, 동적 어드레싱 매니저, 그리고 다수의 소프트웨어 컴포넌트들을 포함하고, 상기 코드에 대한 업데이트가 한번만 동적 어드레싱 매니저에서 수행되고, 상기 동적 어드레싱 매니저는 한개 이상의 링크를 포함하며, 각각의 링크는 한 컴포넌트 내 각기 식별된 참조와, 상기 식별된 참조에 대응하는 소프트웨어 컴포넌트들 중 또다른 컴포넌트 간에 프로그램 링크를 형성하고, 상기 동적 어드레싱 매니저는 상기 링크를 이용하여 코드의 실행 중 다수의 소프트웨어 컴포넌트들을 링크하며,
    상기 코드에 대한 업데이트가 OTA(over-the-air) 인터페이스를 통해, 상기 클라이언트 장치로, 그리고 동일한 업데이트를 요청하는 다른 클라이언트 장치로 전송되며, 이로써 상기 코드 내의 참조를 조정하기 위해 상기 클라이언트 장치 메모리에 재기록이 요구되지 않는 것을 특징으로 하는 동적 어드레싱 시스템.
  33. 제 32 항에 있어서, 상기 동적 어드레스 시스템은 무선 연결을 추가로 포함하고, 이때, 상기 제 2 업그레이드 컴포넌트는 상기 무선 연결을 통해 업그레이드 파일을 수신하며, 상기 제 2 업그레이드 컴포넌트는 업그레이드 파일의 정보를 이용하여 다수의 소프트웨어 컴포넌트들을 자동으로 업그레이드하는 것을 특징으로 하는 동적 어드레싱 시스템.
  34. 제 33 항에 있어서, 상기 업그레이드하는 동작은, 다수의 소프트웨어 컴포넌트들 중 한가지 이상을 업그레이드 파일의 콘텐트로 업그레이드하는 동작과, 상기 동적 어드레싱 매니저의 링크들의 정보를 업그레이드함으로서 다수의 소프트웨어 컴포넌트들 간의 링크를 업그레이드하는 동작을 포함하는 것을 특징으로 하는 동적 어드레싱 시스템.
  35. 제 32 항에 있어서, 각각의 링크는 동적 어드레싱 매니저에 고정 어드레스를 가지는 것을 특징으로 하는 동적 어드레싱 시스템.
  36. 제 32 항에 있어서, 상기 참조들은 함수 호출 및 변수 참조들 중 한가지 이상을 포함하는 것을 특징으로 하는 동적 어드레싱 시스템.
  37. 제 32 항에 있어서, 상기 동적 어드레싱 매니저는 함수 호출 및 변수 참조들 중 한가지 이상에 대한 중앙집중형 점프 표인 벡터 표를 포함하되,
    상기 함수 호출은 지정된 함수를 페치 및 수행하는 명령이며,
    상기 전역 변수는 값과 식이 관련된 모든 상황 정보(context)에 접속가능한 변수인 것을 특징으로 하는 동적 어드레싱 시스템.
  38. 제 32 항에 있어서, 상기 동적 어드레싱 매니저는 한개 이상의 중앙집중형 섹션을 포함하고, 이때, 상기 중앙집중형 섹션에 한개 이상의 변수 참조가 할당되며, 변수 참조가 특정 변수를 지정하는 값인 것을 특징으로 하는 동적 어드레싱 시스템.
  39. 제 32 항에 있어서, 상기 제 1 장치는 상기 모바일 통신 장치에 호스팅된 소프트웨어 컴포넌트들의 하나 이상의 제공자에 의해 액세스될 수 있는 프로세서-기반 장치인 것을 특징으로 하는 동적 어드레싱 시스템.
  40. 제 32 항에 있어서, 상기 모바일 통신 장치는 셀룰러 폰, 포터블 통신 장치, 그리고 PDA 중 한가지 이상을 포함하는 것을 특징으로 하는 동적 어드레싱 시스템.
  41. 제 32 항에 있어서, 다수의 소프트웨어 컴포넌트들은 소프트웨어 파일들을 포함하고, 상기 소프트웨어 파일들은, 동적 링크 라이브러리 파일, 공유 객체 파일, 내장형 소프트웨어 컴포넌트(EBSC), 펌웨어 파일, 실행 파일, 헥스 데이터 파일(hex data file)을 포함하는 데이터 파일, 시스템 컨피규레이션 파일, 그리고 개인용 데이터를 포함하는 파일을 포함하는 것을 특징으로 하는 동적 어드레싱 시스템.
  42. 모바일 통신 장치에 있어서, 상기 장치는,
    - 무선 클라이언트 장치의 장치 메모리에 저장되는 코드를 다수의 내장형 소프트웨어 컴포넌트들로 조직하는 수단,
    - 상기 다수의 컴포넌트들 각각에 포함된 한개 이상의 참조를 식별하는 수단으로서, 이때, 각각의 참조는 상기 코드의 한개 이상의 다른 컴포넌트에 대한 참조인 상기 참조 식별 수단,
    - 한개 이상의 링크를 포함하는 매니저 컴포넌트를 발생시키는 수단으로서, 이때, 각각의 링크는 한 컴포넌트 내 각각의 식별된 참조와, 상기 식별된 참조에 대응하는 다른 컴포넌트 간에 프로그램 링크를 형성하고, 상기 코드에 대한 업데이트가 한번만 상기 매니저 컴포넌트에서 수행되는 상기 매니저 컴포넌트 발생 수단, 그리고
    - 상기 코드의 실행 중 매니저 컴포넌트의 링크를 이용하여 다수의 컴포넌트를 링크하는 수단을 포함하되,
    상기 코드에 대한 업데이트가 OTA 인터페이스를 통해, 상기 클라이언트 장치로 그리고 동일한 업데이트를 요청하는 다른 클라이언트 장치로 전송되고, 이로써, 상기 코드 내 참조를 조정하기 위한 클라이언트 장치 메모리의 재기록이 요구되지 않는 것을 특징으로 하는 모바일 통신 장치.
  43. 제 42 항에 있어서, 상기 매니저 컴포넌트 발생 수단은, 함수 호출 및 전역 변수들 중 한가지 이상에 대한 중앙집중형 점프 표인 벡터 표를 발생하는 수단을 포함하되,
    상기 함수 호출은 지정된 함수를 페치 및 수행하는 명령이고,
    상기 전역 변수는, 값과 식이 연관된 모든 상황 정보에 접속 가능한 변수인 것을 특징으로 하는 모바일 통신 장치.
  44. 제 43 항에 있어서, 상기 다수의 컴포넌트를 링크하는 수단은,
    - 제 1 컴포넌트로부터의 참조를 벡터 표의 엔트리로 디렉팅시키는 수단, 그리고
    - 상기 엔트리의 정보를 이용하여 상기 참조를 제 2 컴포넌트로 리디렉션시키는 수단
    을 추가로 포함하는 것을 특징으로 하는 모바일 통신 장치.
  45. 제 42 항에 있어서, 상기 매니저 컴포넌트 발생 수단 수단은,
    - 매니저 컴포넌트의 한개 이상의 중앙집중형 섹션을 발생시키는 수단, 그리고
    - 상기 발생된 중앙집중형 섹션에 변수 참조를 할당하는 수단을 추가로 포함하되,
    상기 변수 참조가 특정 변수를 나타내는 값인 것을 특징으로 하는 것을 특징으로 하는 모바일 통신 장치.
  46. 제 45 항에 있어서, 상기 다수의 컴포넌트들을 링크하는 수단은, 상기 변수 참조에 대한 참조를, 상기 변수 참조에 대응하는 중앙집중형 섹션의 어드레스로 디렉팅시키는 수단을 추가로 포함하는 것을 특징으로 하는 모바일 통신 장치.
  47. 제 42 항에 있어서, 상기 모바일 통신 장치는 코드를 업그레이드하는 수단을 추가로 포함하고, 상기 코드 업그레이드 수단은,
    - 무선 연결을 통해 업그레이드 파일을 수신하는 수단,
    - 상기 다수의 컴포넌트들 중 한개 이상을 업그레이드 파일의 콘텐트로 업그레이드하는 수단, 그리고
    - 상기 매니저 컴포넌트를 업그레이드함으로서 업그레이드된 코드의 다수의 컴포넌트들 간의 링크를 업그레이드하는 수단
    을 포함하는 것을 특징으로 하는 모바일 통신 장치.
  48. 컴퓨터 시스템에서 실행될 때, 포터블 장치의 소프트웨어 컴포넌트들을 링크하는 방법을 수행하는 실행 명령들을 기록한 컴퓨터 판독형 매체에 있어서, 상기 방법은,
    - 무선 클라이언트 장치의 장치 메모리에 저장되는 코드를 다수의 내장형 소프트웨어 컴포넌트들로 조직하는 단계,
    - 상기 다수의 컴포넌트들 각각에 포함된 한개 이상의 참조를 식별하는 단계로서, 이때, 각각의 참조는 상기 코드의 한개 이상의 다른 컴포넌트에 대한 참조인 상기 식별 단계,
    - 한개 이상의 링크를 포함하는 매니저 컴포넌트를 발생시키는 단계로서, 이때, 각각의 링크는 한 컴포넌트 내 각각의 식별된 참조와, 상기 식별된 참조에 대응하는 또 다른 컴포넌트 간에 프로그램 링크를 형성하고, 상기 코드에 대한 업데이트가 한번만 상기 매니저 컴포넌트에서 수행되는 상기 매니저 컴포넌트 발생 단계, 그리고
    - 상기 코드의 실행 중 매니저 컴포넌트의 링크를 이용하여 다수의 컴포넌트를 링크하는 단계를 포함하되,
    상기 코드에 대한 업데이트가 OTA 인터페이스를 통해, 상기 클라이언트 장치로, 그리고 동일한 업데이트를 요청하는 다른 클라이언트 장치로 전송되고, 이로써 상기 코드 내의 참조를 조정하기 위해 클라이언트 장치 메모리의 재기록이 요구되지 않는 것을 특징으로 하는 컴퓨터 판독형 매체.
  49. 제 48 항에 있어서,
    상기 단계들은 코드를 업그레이드하는 단계를 추가로 포함하고, 상기 코드 업그레이드 단계는,
    - 무선 연결을 통해 업그레이드 파일을 수신하는 단계,
    - 상기 다수의 컴포넌트들 중 한개 이상을 업그레이드 파일의 콘텐트로 업그레이드하는 단계, 그리고
    - 상기 매니저 컴포넌트를 업그레이드함으로서 업그레이드된 코드의 다수의 컴포넌트들 간의 링크를 업그레이드하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 판독형 매체.
KR1020067007844A 2003-10-23 2004-10-22 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치 KR100871778B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US51376403P 2003-10-23 2003-10-23
US60/513,764 2003-10-23

Publications (2)

Publication Number Publication Date
KR20060085698A KR20060085698A (ko) 2006-07-27
KR100871778B1 true KR100871778B1 (ko) 2008-12-05

Family

ID=34520133

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067007844A KR100871778B1 (ko) 2003-10-23 2004-10-22 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치

Country Status (6)

Country Link
US (1) US20050204351A1 (ko)
EP (1) EP1676195A4 (ko)
JP (1) JP2007511816A (ko)
KR (1) KR100871778B1 (ko)
CN (1) CN1973262B (ko)
WO (1) WO2005040988A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160003505A (ko) 2014-07-01 2016-01-11 한국전자통신연구원 동적 모듈, 이를 구비한 동적 업그레이드 장치 및 방법

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2408658B (en) * 2003-11-25 2006-07-05 Surfkitchen Inc Communications system
US8347285B2 (en) * 2004-12-16 2013-01-01 Intel Corporation Embedded agent for self-healing software
US7200390B1 (en) * 2004-12-30 2007-04-03 Cellco Partnership Device software update transport and download
US20060184937A1 (en) * 2005-02-11 2006-08-17 Timothy Abels System and method for centralized software management in virtual machines
KR100747901B1 (ko) * 2005-07-18 2007-08-08 주식회사 팬택앤큐리텔 이동통신단말기의 실행 파일 압축 방법
EP1806655A3 (en) * 2005-12-01 2009-02-25 Samsung Electronics Co., Ltd. System and method for providing monolithic image for use in a wireless device
US7735075B2 (en) 2005-12-01 2010-06-08 Samsung Electronics Co., Ltd. System and method for a pseudo dynamic link library (DLL) linker for a monolithic image in a wireless device
KR101273914B1 (ko) * 2006-10-31 2013-06-12 에스케이플래닛 주식회사 플랫폼 라이브러리 다이나믹 링킹기능이구비된 단말장비 및 그 제어방법
US8572598B1 (en) * 2007-04-18 2013-10-29 Nvidia Corporation Method and system for upgrading software in a computing device
US9417851B2 (en) * 2009-05-13 2016-08-16 Adobe Systems Incorporated Location-based application development for runtime environments
US8429395B2 (en) 2009-06-12 2013-04-23 Microsoft Corporation Controlling access to software component state
US9160812B2 (en) * 2009-10-22 2015-10-13 Cellco Partnership Systems and methods for delivering an application over a mobile communications network
CN101916194B (zh) * 2010-06-01 2013-06-12 浙江大学 一种无线传感网节点程序的部署方法
JP5772127B2 (ja) * 2011-03-25 2015-09-02 富士通株式会社 仮想マシン管理方法、情報処理装置および仮想マシン管理プログラム
US8726258B2 (en) * 2011-04-14 2014-05-13 Phoenix Technologies Ltd. Supporting multiple hardware components in UEFI
US9116685B2 (en) * 2011-07-19 2015-08-25 Qualcomm Incorporated Table call instruction for frequently called functions
AU2014209581B2 (en) * 2013-01-25 2019-05-02 Google Llc Systems, methods, and computer program products for managing data re-installation
DE102014117797A1 (de) * 2014-10-10 2016-04-14 Ebm-Papst Mulfingen Gmbh & Co. Kg Dynamisch adressierbares Master-Slave-System sowie Verfahren zum dynamischen Adressieren von Slave-Einheiten
CN105068831A (zh) * 2015-07-30 2015-11-18 深圳市创凯电子有限公司 程序升级方法及装置
WO2018158846A1 (ja) * 2017-02-28 2018-09-07 三菱電機株式会社 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
US11256522B2 (en) * 2019-11-22 2022-02-22 Advanced Micro Devices, Inc. Loader and runtime operations for heterogeneous code objects

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805899A (en) * 1995-07-06 1998-09-08 Sun Microsystems, Inc. Method and apparatus for internal versioning of objects using a mapfile
WO1999032969A1 (en) * 1997-12-19 1999-07-01 Honeywell Inc. Call mechanism for static and dynamic linked functions within an object-oriented controller using heterogeneous development tool sets
US6029000A (en) 1997-12-22 2000-02-22 Texas Instruments Incorporated Mobile communication system with cross compiler and cross linker
US6249818B1 (en) 1993-06-30 2001-06-19 Compaq Computer Corporation Network transport driver interfacing

Family Cites Families (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
DE59005294D1 (de) * 1989-11-29 1994-05-11 Siemens Ag Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems.
JPH03210631A (ja) * 1990-01-16 1991-09-13 Nec Corp モジュール間結合方式
US5479654A (en) * 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
JPH0573292A (ja) * 1991-09-12 1993-03-26 Nec Software Ltd 読込み専用記憶装置のプログラム更新方式およびプログラム実行方式
US5444764A (en) * 1993-07-01 1995-08-22 Motorola, Inc. Method of providing a subscription lock to a radiotelephone system
US5806078A (en) * 1994-06-09 1998-09-08 Softool Corporation Version management system
US5835743A (en) * 1994-06-30 1998-11-10 Sun Microsystems, Inc. Application binary interface and method of interfacing binary application program to digital computer
US5742905A (en) * 1994-09-19 1998-04-21 Bell Communications Research, Inc. Personal communications internetworking
US5634052A (en) * 1994-10-24 1997-05-27 International Business Machines Corporation System for reducing storage requirements and transmission loads in a backup subsystem in client-server environment by transmitting only delta files from client to server
US5574906A (en) * 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
US5729735A (en) * 1995-02-08 1998-03-17 Meyering; Samuel C. Remote database file synchronizer
US5729743A (en) * 1995-11-17 1998-03-17 Deltatech Research, Inc. Computer apparatus and method for merging system deltas
US5864757A (en) * 1995-12-12 1999-01-26 Bellsouth Corporation Methods and apparatus for locking communications devices
US5758062A (en) * 1996-04-30 1998-05-26 Oracle Corporation Method and apparatus for regression testing of application logic
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US6308061B1 (en) * 1996-08-07 2001-10-23 Telxon Corporation Wireless software upgrades with version control
US6374250B2 (en) * 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
US5859565A (en) * 1997-03-10 1999-01-12 Reiffin; Martin Cathode-follower high-fidelity power amplifier
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
US6314565B1 (en) * 1997-05-19 2001-11-06 Intervu, Inc. System and method for automated identification, retrieval, and installation of multimedia software components
EP1005674A4 (en) * 1997-07-15 2002-03-13 Pocket Soft Inc SYSTEM FOR DETECTING DIFFERENCES BETWEEN TWO COMPUTER FILES AND UPDATING OF COMPUTER FILES
WO1999012098A1 (en) * 1997-08-29 1999-03-11 Hewlett-Packard Company Data backup and recovery systems
US6157924A (en) * 1997-11-07 2000-12-05 Bell & Howell Mail Processing Systems Company Systems, methods, and computer program products for delivering information in a preferred medium
US6041333A (en) * 1997-11-14 2000-03-21 Microsoft Corporation Method and apparatus for automatically updating a data file from a network
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6076148A (en) * 1997-12-26 2000-06-13 Emc Corporation Mass storage subsystem and backup arrangement for digital data processing system which permits information to be backed up while host computer(s) continue(s) operating in connection with information stored on mass storage subsystem
US6035423A (en) * 1997-12-31 2000-03-07 Network Associates, Inc. Method and system for providing automated updating and upgrading of antivirus applications using a computer network
US6199202B1 (en) * 1998-01-06 2001-03-06 Hewlett-Packard Company Method and apparatus for the inter-operation of differing architectural and run time conventions
US6078967A (en) * 1998-02-25 2000-06-20 Hewlett-Packard Company System for upgrading functionality of a peripheral device utilizing a removable ROM having relocatable object code
US6052531A (en) * 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US20010049263A1 (en) * 1998-03-26 2001-12-06 Xiang Zhang Automatic station/system configuration monitoring and error tracking system and software upgrade tool kit
US6088694A (en) * 1998-03-31 2000-07-11 International Business Machines Corporation Continuous availability and efficient backup for externally referenced objects
US6216175B1 (en) * 1998-06-08 2001-04-10 Microsoft Corporation Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations
US6212632B1 (en) * 1998-07-31 2001-04-03 Flashpoint Technology, Inc. Method and system for efficiently reducing the RAM footprint of software executing on an embedded computer system
US6233589B1 (en) * 1998-07-31 2001-05-15 Novell, Inc. Method and system for reflecting differences between two files
EP0981099A3 (en) * 1998-08-17 2004-04-21 Connected Place Limited A method of and an apparatus for merging a sequence of delta files
US6167258A (en) * 1998-10-09 2000-12-26 Cleveland Medical Devices Inc. Programmable wireless data acquisition system
US6226784B1 (en) * 1998-10-14 2001-05-01 Mci Communications Corporation Reliable and repeatable process for specifying developing distributing and monitoring a software system in a dynamic environment
US6145012A (en) * 1998-10-14 2000-11-07 Veritas Software Corporation Apparatus and method for efficiently updating files in computer networks
US6163811A (en) * 1998-10-21 2000-12-19 Wildseed, Limited Token based source file compression/decompression and its application
US6457175B1 (en) * 1998-11-09 2002-09-24 Tut Systems, Inc. Method and apparatus for installing a software upgrade within a memory resource associated with a computer system
US6327671B1 (en) * 1998-11-18 2001-12-04 International Business Machines Corporation Delta compressed asynchronous remote copy
US6349311B1 (en) * 1999-02-01 2002-02-19 Symantec Corporation Storage of reverse delta updates
US6594822B1 (en) * 1999-02-19 2003-07-15 Nortel Networks Limited Method and apparatus for creating a software patch by comparing object files
US6401239B1 (en) * 1999-03-22 2002-06-04 B.I.S. Advanced Software Systems Ltd. System and method for quick downloading of electronic files
US6466999B1 (en) * 1999-03-31 2002-10-15 Microsoft Corporation Preprocessing a reference data stream for patch generation and compression
GB2349485B (en) * 1999-04-23 2003-12-10 Ibm Application management
US6574657B1 (en) * 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
IL129947A (en) * 1999-05-13 2003-06-24 Tadiran Telecom Business Syste Method and apparatus for downloading software into an embedded system
JP2001094498A (ja) * 1999-09-17 2001-04-06 Seiko Epson Corp 無線通信機器
US6629110B2 (en) * 2000-01-10 2003-09-30 Connected Corporation Administration of a differential backup system in a client-server environment
US6671757B1 (en) * 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
CA2398838A1 (en) * 2000-03-01 2001-09-07 Computer Associates Think, Inc. Method and system for updating an archive of a computer file
US6651190B1 (en) * 2000-03-14 2003-11-18 A. Worley Independent remote computer maintenance device
US6662163B1 (en) * 2000-03-30 2003-12-09 Voxware, Inc. System and method for programming portable devices from a remote computer system
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US6898564B1 (en) * 2000-05-23 2005-05-24 Microsoft Corporation Load simulation tool for server resource capacity planning
US6535894B1 (en) * 2000-06-01 2003-03-18 Sun Microsystems, Inc. Apparatus and method for incremental updating of archive files
AU2001272970A1 (en) * 2000-06-22 2002-01-02 Synchrologic, Inc. A system and method for file transmission using file differentiation
US6669564B1 (en) * 2000-06-27 2003-12-30 Electronic Arts Inc. Episodic delivery of content
GB2369213B (en) * 2000-07-04 2005-02-23 Honda Motor Co Ltd Electronic file management system
US6470329B1 (en) * 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020120697A1 (en) * 2000-08-14 2002-08-29 Curtis Generous Multi-channel messaging system and method
GB2381358A (en) * 2000-08-15 2003-04-30 Seagate Technology Llc Dual mode data compression for operating code
US7058941B1 (en) * 2000-11-14 2006-06-06 Microsoft Corporation Minimum delta generator for program binaries
KR100520058B1 (ko) * 2000-12-13 2005-10-11 삼성전자주식회사 디바이스드라이버 업그레이드 시스템 및 디바이스드라이버업그레이드 방법
US6954765B2 (en) * 2000-12-30 2005-10-11 Intel Corporation Updating a file in a fragmented file system
US20020099726A1 (en) * 2001-01-23 2002-07-25 International Business Machines Corporation Method and system for distribution of file updates
US20020129107A1 (en) * 2001-03-12 2002-09-12 Loughran Stephen A. Method and apparatus for automatic content handling
US6442660B1 (en) * 2001-03-21 2002-08-27 Sharp Laboratories Of America, Inc. Dynamic system relocation based on availability of system memory
US6912591B2 (en) * 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
EP1445888A4 (en) * 2001-10-12 2010-07-07 Panasonic Corp CONTENT PROCESSING APPARATUS AND CONTENT PROTECTION PROGRAM
US20030074487A1 (en) * 2001-10-17 2003-04-17 Tankut Akgul Dynamic operating system
US7483970B2 (en) * 2001-12-12 2009-01-27 Symantec Corporation Method and apparatus for managing components in an IT system
US7600021B2 (en) * 2002-04-03 2009-10-06 Microsoft Corporation Delta replication of source files and packages across networked resources
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
JP4214712B2 (ja) * 2002-05-16 2009-01-28 株式会社日立製作所 データベースのページ確保処理方法
US6976252B2 (en) * 2002-05-17 2005-12-13 Hewlett-Packard Development Company, L.P. Systems and methods for driver installation
US20040031027A1 (en) * 2002-08-08 2004-02-12 Hiltgen Daniel K. System for updating diverse file versions
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US20040098421A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Scheduling updates of electronic files
US7003534B2 (en) * 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
US7007049B2 (en) * 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7844734B2 (en) * 2002-11-18 2010-11-30 Innopath Software, Inc. Dynamic addressing (DA) using a centralized DA manager
US7320010B2 (en) * 2002-11-18 2008-01-15 Innopath Software, Inc. Controlling updates of electronic files
US20040098361A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Managing electronic file updates on client devices
US7099884B2 (en) * 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US20040193643A1 (en) * 2003-03-27 2004-09-30 O'brien John C. Method and system for tracking contracts
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines
US20050010870A1 (en) * 2003-07-09 2005-01-13 Jinsheng Gu Post-processing algorithm for byte-level file differencing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6249818B1 (en) 1993-06-30 2001-06-19 Compaq Computer Corporation Network transport driver interfacing
US5805899A (en) * 1995-07-06 1998-09-08 Sun Microsystems, Inc. Method and apparatus for internal versioning of objects using a mapfile
WO1999032969A1 (en) * 1997-12-19 1999-07-01 Honeywell Inc. Call mechanism for static and dynamic linked functions within an object-oriented controller using heterogeneous development tool sets
US6029000A (en) 1997-12-22 2000-02-22 Texas Instruments Incorporated Mobile communication system with cross compiler and cross linker

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160003505A (ko) 2014-07-01 2016-01-11 한국전자통신연구원 동적 모듈, 이를 구비한 동적 업그레이드 장치 및 방법

Also Published As

Publication number Publication date
US20050204351A1 (en) 2005-09-15
KR20060085698A (ko) 2006-07-27
WO2005040988A3 (en) 2006-09-14
CN1973262B (zh) 2012-08-22
EP1676195A2 (en) 2006-07-05
EP1676195A4 (en) 2007-08-29
JP2007511816A (ja) 2007-05-10
WO2005040988A2 (en) 2005-05-06
CN1973262A (zh) 2007-05-30

Similar Documents

Publication Publication Date Title
KR100871778B1 (ko) 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치
US7779055B2 (en) Device memory management during electronic file updating
US7844734B2 (en) Dynamic addressing (DA) using a centralized DA manager
US7096311B2 (en) Updating electronic files using byte-level file differencing and updating algorithms
US7716414B2 (en) Method for updating a mobile device using an update package obtained from a remote server
US7313577B2 (en) Generating difference files using module information of embedded software components
CN109614165B (zh) 一种com组件的多版本并行运行方法和装置
KR100883699B1 (ko) 무선 장치 동작 환경에서 비검증된 프로그램들의 실행
CN111399840B (zh) 一种模块开发方法及装置
CN112769706B (zh) 组件化路由方法及系统
JP4724660B2 (ja) 組み込みシステムの中に統合されるソフトウェアコンポーネントを管理する方法
US8719812B1 (en) Methods, systems, and computer readable media for dynamically modifying and utilizing a software package description for software installation
CN112416418A (zh) 应用组件的生成方法、装置、计算机设备和可读存储介质
CN107943504A (zh) 一种嵌入式系统中软件模块的动态升级方法
CN109857374B (zh) 移动应用的开发方法及装置
US20130159122A1 (en) Optimizer as an appstore service
WO2005074621A2 (en) Dynamic addressing (da) using a centralized da manager
CN107667343B (zh) 用于加载按需加载资源的系统和方法
CN112947956B (zh) 一种应用软件升级方法
CN114860202A (zh) 项目运行方法、装置、服务器及存储介质
CN113986207A (zh) 一种软件架构生成、调用方法及装置
CN113535566A (zh) 一种安卓应用校验方法、装置、设备及存储介质
CN113672238A (zh) 基于实时操作系统模块化管理的运行方法、装置及设备
CN117667083A (zh) 一种页面的生成方法、系统及终端设备
CN115756763A (zh) 微服务容器快速编译运行方法、装置、系统及电子设备

Legal Events

Date Code Title Description
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: 20121127

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150521

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151126

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee