KR101088192B1 - 플래시 메모리 프로그래밍을 위한 시스템 및 방법 - Google Patents

플래시 메모리 프로그래밍을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR101088192B1
KR101088192B1 KR1020067017293A KR20067017293A KR101088192B1 KR 101088192 B1 KR101088192 B1 KR 101088192B1 KR 1020067017293 A KR1020067017293 A KR 1020067017293A KR 20067017293 A KR20067017293 A KR 20067017293A KR 101088192 B1 KR101088192 B1 KR 101088192B1
Authority
KR
South Korea
Prior art keywords
memory
updated
program code
object module
module
Prior art date
Application number
KR1020067017293A
Other languages
English (en)
Other versions
KR20060127161A (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 KR20060127161A publication Critical patent/KR20060127161A/ko
Application granted granted Critical
Publication of KR101088192B1 publication Critical patent/KR101088192B1/ko

Links

Images

Classifications

    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1293Printer information exchange with computer
    • G06F3/1294Status or feedback related to information exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators

Abstract

다수의 메모리 섹터를 포함하는 메모리에 저장된 프로그램 코드를 갱신하는 방법에 게시되어 있다. 상기 방법은 갱신된 입력 코드를 메모리에 저장될 갱신된 프로그램 코드 버전으로 변환하는 단계를 포함하며, 상기 메모리는 자신의 메모리 섹터의 제1 세트를 점유하는 현재의 프로그램 코드 버전을 저장하고, 상기 갱신된 프로그램 코드 버전은 상기 메모리에 저장될 때, 메모리 섹터의 제2 세트를 점유한다. 상기 변환 단계는 현재의 프로그램 코드 버전의 표시를 수신하는 단계; 및 상기 현재의 프로그램 코드 버전에 의해 점유된 메모리 섹터의 제1 세트의 대응하는 메모리 섹터와 상이한 갱신된 코드 버전에 의해 점유된 메모리 섹터의 제2 세트의 메모리 섹터의 수를 감소시키도록 적응된 적어도 하나의 최적화 단계를 수행하는 단계를 더 포함한다.
메모리, 메모리 섹터, 프로그램 코드, 프로그래밍, 갱신된 코드 버전.

Description

플래시 메모리 프로그래밍을 위한 시스템 및 방법{A METHOD AND SYSTEM FOR FLASH MEMORY PROGRAMMING}
본 발명은 다수의 메모리 섹터를 포함하는 메모리에 저장된 프로그램 코드의 갱신에 관한 것이다.
많은 현대의 전자 장치, 예를 들어, 내장된 장치는 플래시 메모리 상에 저장된 소프트웨어에 의해 제어된다. 플래시 메모리는 다수의 재기록을 허용하기 때문에 인기있는 유형의 메모리이다. 그러나, 기록 동작은 한번에 전체 메모리 섹터, 소위 페이지로 국한된다. 현재 플래시 메모리의 전형적인 페이지 크기는 64kbyte이다.
예를 들어, 새로운 특성을 소프트웨어에 부가하고/하거나 소프트웨어의 현재 버전에서 에러를 수정하기 위하여, 전자 장치의 플래시 메모리에 저장된 소프트웨어가 갱신될 때, 플래시 메모리의 메모리 섹터의 일부 또는 모두는 재기록되거나 "리프래시(reflash)된다. 일반적으로, 소프트웨어 갱신을 인스톨하는데 필요로 되는 시간을 최소화하기 위하여 소프트웨어 갱신 동안 재기록되는 플래시 페이지의 수를 최소화하는 것이 바람직하다.
특히, 갱신 시간이 매우 중요한 애플리케이션은 이동 단말기의 오버-디-에어(over-the-air:OTA) 갱신이다. 이와 같은 애플리케이션에서, 전체의 갱신된 이미 지보다는 오히려 현재 이미지에 대한 변경만을 이동 단말기에 분배하는 것이 공지되어 있다. 상기 변경은 일반적으로 델타-파일이라고 칭해진다. 이와 같은 시스템에서, 이동 단말기 상에서 실행되는 갱신 에이전트(update agent)는 수신된 변경을 현재 이미지에 적용하고, 이로써 현재 이미지는 갱신된 버전으로 변환된다. 이와 같은 갱신 시스템의 특정 문제는 단말기가 갱신 공정 동안 기능을 하지 않는다는 것이다. 그러므로, 메모리를 리프래시하는데 필요로 되는 시간을 감소시켜, 시스템의 다운타임을 감소시키는 것이 바람직하다.
그러나, 상술된 플래시 메모리의 제약으로 인하여, 소프트웨어의 소스 코드의 적은 갱신조차도 플래시 페이지의 큰 부분이 갱신되는 것을 초래할 수 있는데, 이는 단일 바이트를 변경시키는 것조차도 전체 페이지가 완전하게 재기록되는 것을 필요로 하기 때문이다.
공개된 미국 특허 제2003/0142556호는 플래시 메모리 프로그래밍 방법을 게시하며, 여기서 휘발성 정보 또는 휘발성 소프트웨어 컴포넌트는 플래시 섹터를 가능한 한 적게 변경시키거나 조정하도록 하기 위하여 적어도 플래시 메모리 장치의 각각의 플래시 메모리 어드레스 공간의 종단 부근에 저장된다.
그러나, 상기 종래 기술의 방법은 각각의 정보 컴포넌트를 변화시키는 예상된 가능도(likelihood)에 관한 정보를 필요로 한다. 그러므로, 상기 종래 기술은 각각의 소프트웨어 컴포넌트에서 미래의 변화의 예상된 가능도에 관한 정보를 필요로 함에 없이, 다수의 메모리 섹터를 갖는 메모리에서 프로그램 코드를 갱신할 때 필요로 되는 재기록의 수를 감소시키는 문제를 처리하지 못한다.
상기 문제 및 다른 문제는 다수의 메모리 섹터를 포함하는 메모리에 저장된 프로그램 코드를 갱신하는 방법에 의해 해결되는데, 상기 방법은
- 갱신된 입력 코드를 메모리에 저장될 갱신된 프로그램 코드 버전으로 변환하는 단계를 포함하며, 상기 메모리는 자신의 메모리 섹터의 제1 세트를 점유하는 현재의 프로그램 코드 버전을 저장하고, 상기 갱신된 프로그램 코드 버전은 상기 메모리에 저장될 때, 메모리 섹터의 제2 세트를 점유하며,
상기 변환 단계는
- 현재의 프로그램 코드 버전의 표시를 수신하는 단계; 및
- 상기 현재의 프로그램 코드 버전에 의해 점유된 메모리 섹터의 제1 세트의 대응하는 메모리 섹터와 상이한 갱신된 코드 버전에 의해 점유된 메모리 섹터의 제2 세트의 메모리 섹터의 수를 감소시키도록 적응된 하나 이상의 최적화 단계를 수행하는 단계를 포함한다.
특히, 현재의 프로그램 코드 버전의 표시를 수신하는 단계; 및 상기 현재의 프로그램 코드 버전에 의해 점유된 메모리 섹터의 제1 세트의 대응하는 메모리 섹터와 상이한 갱신된 코드 버전에 의해 점유된 메모리 섹터의 제2 세트의 메모리 섹터의 수를 감소시키도록 적응된 하나 이상의 최적화 단계를 수행하는 단계에 의하여, 필요로 되는 재기록의 수는 감소된다.
메모리에 저장된 현재의 프로그램 코드 버전이 일반적으로 소프트웨어 갱신을 발생시키는 프로세스에 공지되기 때문에, 상기 최적화는 갱신 프로세스에 실제로 이용 가능한 정보를 토대로 한다. 특히, 상기 프로세스는 현재의 인스톨된 버전 및 현재의 갱신에 관한 정보를 토대로 하는 반면, 임의의 미래의 갱신의 가능도에 관한 정보는 필요로 되지 않는다.
바람직한 실시예에서, 현재의 프로그램 코드 버전의 표시는 메모리 섹터의 제1 세트의 현재 이미지 및 메모리 섹터의 제1 세트의 현재 이미지의 맵 파일 설명을 포함한다. 결과적으로, 상기 표시는 메모리 내의 프로그램 코드 컴포넌트의 레이아웃에 관한 정보를 포함함으로써, 최적화 프로세스가 갱신된 컴포넌트의 레이아웃을 조정하여 양 버전들 간의 차이를 감소시키도록 한다.
전형적으로, 코드 발생 시스템은 소스 코드를 컴파일링하고, 다수의 오브젝트 코드 모듈을 발생시키는 컴파일러, 및 실행 가능한 코드를 발생시키는 링커를 포함한다. 링커는 소프트웨어 개발 프로젝트를 구성하는 오브젝트 코드 모듈의 세트 간의 의존성을 분석한다. 링커의 태스크는 일반적으로 메모리에서 오브젝트 모듈을 레이아웃하는 것, 즉, 대응하는 어드레스 공간에서 상이한 오브젝트 모듈로 상대적인 어드레스를 할당하는 것을 포함한다. 그러므로, 링커 스테이지에서, 메모리 공간에서의 코드의 레이아웃에 관한 필요한 정보가 이용 가능하다. 오브젝트 모듈은 전형적으로 하드웨어 및/또는 플랫폼 특정되는 저-레벨 파일 포맷에서 오브젝트 파일로서 표현된다. 오브젝트 파일은 컴파일러에 의해 발생되며, 링커로의 입력의 역할을 한다. 오브젝트 모듈은 전형적으로 재배치 가능하며, 미분석된 레퍼런스(unresolved reference)을 포함한다.
여기서, 용어 메모리에서의 코드의 레이아웃은 상이한 오브젝트 모듈의 각각의 시작 또는 베이스 어드레스, 즉, 프로그램 코드에 의해 점유된 어드레스 공간 내에서의 그들 각각의 상대적인 어드레스를 포함한다.
결과적으로, 본 발명의 바람직한 실시예에서, 최적화 프로세스는 링커 스테이지에서 수행된다. 그러므로, 입력 코드는 다수의 오브젝트 모듈을 포함하며, 상기 변환 단계는 다수의 오브젝트 모듈을 링크하는 단계를 포함한다. 바람직하게는, 최적화 프로세스는 메모리에서 상기 오브젝트 모듈의 레이아웃을 결정하는 단계를 포함한다.
다른 바람직한 실시예에서, 입력 코드는 하나 이상의 소스 코드 모듈을 포함하며; 상기 변환 단계는
- 하나 이상의 소스 코드 모듈을 컴파일링하여, 다수의 오브젝트 모듈을 발생시키는 단계; 및
- 오브젝트 모듈의 수를 링크하는 단계를 포함하며;
하나 이상의 최적화 단계를 수행하는 상기 단계는
- 상기 링크 단계 동안 피드백 데이터를 발생시키는 단계;
- 상기 피드백 데이터를 토대로 하여 적어도 소스 코드 모듈의 서브셋을 재-컴파일링하여, 다수의 변경된 오브젝트 모듈을 발생시키는 단계; 및
- 변경된 오브젝트 모듈의 수를 토대로 상기 링크 단계를 수행하는 단계를 포함한다.
결과적으로, 이 실시예에 따르면, 링커는 컴파일러가 소스 코드의 적어도 일부를 재-컴파일링하도록 하는 컴파일러 스테이지로의 피드백을 발생시킨다. 이것은 링커가 오브젝트 모듈의 결과적인 세트를 제어함으로써, 링커에 의해 오브젝트 코드 모듈을 재배열하는 자유도를 증가시키는 장점을 갖는다.
또 다른 바람직한 실시예에서, 상기 변환 단계는 하나 이상의 최적화 파라미터에 의해 최적화 프로세스를 제어하는 단계를 더 포함한다. 그러므로, 상기 최적화 프로세스를 제어하는 메커니즘이 제공된다. 일부 실시예에서, 최적화 파라미터는 상기 최적화 프로세스에 대한 하나 이상의 한도를 결정한다. 예를 들어, 하나 이상의 최적화 파라미터는 최적화 프로세스에 의해 부가되도록 허용된 패딩 공간의 최대 크기와 같이 최적화 프로세스에 기인한 최대의 허용된 크기 감소를 결정할 수 있다. 대안적으로, 또는 부가적으로, 하나 이상의 최적화 파라미터는 최적화 프로세스에 의해 도입된 최대의 허용된 릴레이 수를 결정하는 파라미터를 포함할 수 있다.
본 발명의 장점은 최적화 프로세스의 (필요로 되는 재기록의 수 면에서의) 장점 및 (메모리 크기, 실행 시간, 등의 면에서의) 비용 간의 상충관계(trade-off)가 용이하게 제어될 수 있다는 것이다.
따라서, 바람직한 실시예에서, 메모리에서 상기 오브젝트 모듈의 레이아웃을 결정하는 단계는
- 대응하는 제1의 현재 오브젝트 모듈과 상이한 크기를 갖는 갱신된 제1 오브젝트 모듈, 및 대응하는 제2의 현재 오브젝트 모듈과 동일한 갱신된 제2 오브젝트 모듈을 검출하는 단계로서, 상기 갱신된 제2 오브젝트 모듈은 상기 갱신된 제1 오브젝트 모듈의 베이스 어드레스보다 큰 베이스 어드레스를 갖는, 상기 검출 단계; 및
- 소정 패킹 크기의 소정 메모리 콘텐트로 상기 검출되는 갱신된 제1 오브젝트 모듈을 패딩하여, 패딩된 갱신 제1 오브젝트 모듈을 발생시키는 단계를 포함하며; 패킹 크기는 갱신된 제2 오브젝트 모듈의 베이스 어드레스가 대응하는 제2의 현재 오브젝트 모듈의 베이스 어드레스와 동일하게 되도록 선택된다.
다른 바람직한 실시예에서, 메모리에서 상기 오브젝트 모듈의 레이아웃을 결정하는 단계는
- 대응하는 제1의 현재 오브젝트 모듈보다 더 큰 갱신된 제1 오브젝트 모듈을 검출하는 단계;
- 갱신된 제1 오브젝트 모듈의 소정의 부분을 상이한 메모리 섹터로 이동시켜, 감소되는 갱신된 제1 오브젝트 모듈 및 상기 갱신된 제1 오브젝트 모듈의 이동된 부분을 발생시키는 단계;
- 상기 갱신된 제1 오브젝트 모듈의 이동된 부분으로의 릴레이를 상기 감소되는 제1 갱신된 메모리 섹터 내에 삽입하는 단계를 포함한다.
또 다른 바람직한 실시예에서, 상기 방법은 현재 프로그램 코드 버전 및 갱신된 프로그램 코드 버전 간의 차이를 나타내는 델타 파일을 발생시키는 단계를 더 포함한다. 그러므로, 결과적인 델타 파일은 현재 및 갱신된 버전들 간의 차이, 즉, 장치가 델타 파일 및 장치에 저장된 현재 버전으로부터 갱신된 버전을 발생시키는데 필요로 되는 정보를 포함한다. 본 실시예의 장점은 장치로 언로딩될 필요가 있는 파일의 크기가 감소됨으로써, 소프트웨어 갱신을 수행하는데 필요로 되는 시간을 더 감소시킨다는 것이다.
부가적인 바람직한 실시예가 종속 청구항에 게시된다.
상술되고, 이하에 설명된 방법은 특징이 소프트웨어로 구현되고, 데이터 처리 시스템 또는 컴퓨터-실행 가능한 명령과 같은 프로그램 코드 수단의 실행에 기인한 다른 처리 수단 상에서 수행된다는 것이 주의된다. 여기서, 그리고, 다음에서, 용어 처리 수단은 상기 기능을 수행하도록 적절하게 적응된 임의의 회로 및/또는 장치를 포함한다. 특히, 용어 처리 수단은 범용 또는 특수용 프로그램 가능한 마이크로프로세서, 디지털 신호 프로세서(DSP), 주문형 반도체(ASIC), 프로그램 가능한 논리 어레이(PLA), 필드 프로그램 가능한 게이트 어레이(FPGA), 특수용 전자 회로, 등 또는 이들의 조합을 포함한다.
예를 들어, 프로그램 코드 수단은 저장 매체로부터 또는 컴퓨터 네트워크를 통하여 다른 컴퓨터로부터 RAM과 같은 메모리에 로딩될 수 있다. 대안적으로, 설명된 특징은 소프트웨어 대신에 또는 소프트웨어와 함께 하드와이어드 회로에 의해 구현될 수 있다.
본 발명은 상술되고 이하에서 설명된 방법, 데이터 처리 시스템, 및 부가적인 제품 수단을 포함하는 다양한 방식으로 구현될 수 있고, 이들 각각은 가장 먼저-언급된 방법과 관련하여 설명된 하나 이상의 이점 및 장점을 발생시키고, 가장 먼저-언급된 방법과 관련하여 설명된 바람직한 실시예에 대응하는 하나 이상의 바람직한 실시예를 갖는다.
특히, 본 발명은 다수의 메모리 섹터를 포함하는 메모리에 저장된 프로그램 코드를 갱신하는 데이터 처리 시스템에 관한 것이며, 상기 데이터 처리 시스템은 상술되고 이하에 설명된 방법의 단계를 수행하도록 적절하게 프로그래밍된다.
본 발명은 또한 상기 프로그램 코드 수단이 데이터 처리 시스템 상에서 실행될 때, 데이터 처리 시스템이 상술되고 이하에서 설명된 방법을 수행하게 하도록 적응된 프로그램 코드 수단을 포함하는 컴퓨터 프로그램 제품에 관한 것이다. 상기 컴퓨터 프로그램 제품은 상기 프로그램 코드 수단을 저장한 컴퓨터-판독 가능한 매체로서 구현될 수 있다.
본 발명의 목적을 위하여, 용어 전자 장치는 프로그램 코드를 저장하기 위한 플래시 메모리와 같은 메모리를 포함한 임의의 장치를 포함한다. 이와 같은 장치의 예로는 휴대용 무선 통신 장비 및 다른 휴대형 또는 휴대용 장치가 있다. 용어 휴대용 무선 통신 장비는 이동 전화, 페이저, 커뮤니케이터, 즉, 전자 수첩, 스마트 폰, 개인용 디지털 보조장치(PDA), 휴대용 컴퓨터, 등과 같은 모든 장비를 포함한다.
본 발명의 상기 양상 및 다른 양상은 도면과 관련하여 다음에 설명된 실시예로부터 명백해지고 명료해질 것이다.
도1은 이동 단말기에서 소프트웨어를 갱신하는 시스템의 실시예의 블록도를 개략적으로 도시한 도면이다.
도2는 본 발명의 실시예에 따른 이동 단말기의 블록도를 개략적으로 도시한 도면이다.
도3은 소프트웨어 갱신 프로세스의 실시예의 블록도를 도시한 도면이다.
도4는 소프트웨어 갱신 전후의 플래시 메모리의 메모리 레이아웃을 개략적으로 도시한 도면이며, 여기서 상기 레이아웃은 패딩 공간의 도입을 통하여 최적화된다.
도5는 소프트웨어 갱신 전후의 플래시 메모리의 메모리 레이아웃을 개략적으로 도시한 도면이며, 여기서 상기 레이아웃은 릴레이의 도입을 통하여 최적화된다.
도6은 소프트웨어 갱신 프로세스의 다른 실시예의 블록도를 도시한 도면이다.
도1은 이동 단말기와 같은 전자 장치에서 소프트웨어를 갱신하는 시스템의 실시예의 블록도를 개략적으로 도시한다. 상기 시스템은 이동 단말기(101), 예를 들어, 이동 전화 등, 소프트웨어 갱신 시스템(102), 및 통신 인터페이스(103)를 포함한다.
소프트웨어 갱신 시스템(102)은 통신 네트워크로 액세스하는 서버 컴퓨터를 포함할 수 있다. 일부 실시예에서, 서버 컴퓨터의 기능은 다수의 컴퓨터, 예를 들어, 컴퓨터 네트워크, 가령 근거리 네트워크, 광역 네트워크, 인터넷 등을 통하여 접속된 컴퓨터들 사이에서 분산될 수 있다. 소프트웨어 갱신 시스템(102)은 상기 소프트웨어 갱신 시스템이 통신 인터페이스(103)를 통하여 데이터를 통신하도록 하는 인터페이스 회로(104)를 포함한다. 예를 들어, 인터페이스 회로는 직렬 포트, 병렬 포트, 단거리 무선 통신 인터페이스, 예를 들어, 적외선 포트, 블루투스 송수 신기, 등을 포함할 수 있다. 인터페이스 회로의 부가적인 예로는 네트워크 카드, DSL 모뎀, 게이트웨이 컴퓨터 등이 있다.
소프트웨어 갱신 시스템은 본원에 설명된 바와 같은 갱신된 프로그램 코드의 발생을 포함한 갱신 프로세스를 제어하여 수행하도록 적절하게 프로그래밍된 처리 유닛(105), 예를 들어, 서버 컴퓨터의 CPU를 더 포함한다. 처리 유닛은 적어도 베이스 버전 및 갱신될 소프트웨어의 갱신된 버전의 메모리 이미지를 내부에 저장하는 버전 데이터베이스를 더 포함한다. 일부 실시예에서, 버전 데이터베이스는 예를 들면, 상이한 모델의 이동 단말기, 상이한 그룹의 고객, 등을 위한 부가적인 정보, 예를 들어, 다수의 베이스 버전 및/또는 갱신된 버전을 더 포함할 수 있다.
통신 인터페이스(103)는 소프트웨어 갱신 시스템(102) 및 이동 단말기(101) 사이에서 데이터를 통신하기 위한 임의의 적절한 유선 또는 무선 통신 인터페이스일 수 있다. 예를 들어, 셀룰러 통신 네트워크, 가령, GSM 네트워크, UMTS 네트워크, GPRS 네트워크, 등을 통하여 통신하도록 적응된 이동 전화의 경우에, 소프트웨어 갱신 시스템 및 소프트웨어 갱신과 관련된 이동 단말기 사이의 통신은 그 셀룰러 통신 네트워크를 통하여 수행됨으로써, 이동 단말기에서 부가적인 통신 인터페이스가 필요로 되지 않도록 할 수 있다. 이동 단말기 및 소프트웨어 갱신 시스템 간의 통신이 하나 이상의 통신 네트워크와 관련될 수 있다는 것이 또한 이해된다. 예를 들어, 이동 전화는 기지국 및 게이트웨이 시스템을 갖는 셀룰러 전기통신 네트워크를 통하여 통신할 수 있고, 이것은 차례로 인터넷을 통하여 소프트웨어 갱신 시스템과의 통신을 제공한다.
그러므로, 이동 단말기(101) 상의 소프트웨어, 예를 들어, 이동 단말기의 팜웨어 또는 운영 시스템을 갱신하기 위하여, 이동 단말기는 소프트웨어 갱신 시스템(102)에 접속한다. 대안적으로, 소프트웨어 갱신 시스템은 일단 갱신된 소프트웨어 버전이 이용 가능하면 이동 단말기에 접속할 수 있다. 일단 소프트웨어 갱신 시스템에 접속되면, 이동 단말기는 자신의 현재 소프트웨어 버전에 관한 정보를 소프트웨어 갱신 시스템으로 송신한다. 통신은 적절한 갱신 프로토콜, 예를 들어, TCI/IP 프로토콜 위에 구성된 프로토콜을 통하여 수행된다. 이동 단말기로부터 수신된 정보를 토대로 하여, 소프트웨어 갱신 시스템은 이동 단말기로 갱신 명령을 포함한 전용 갱신 메시지를 발생시킨다. 일부 실시예에서, 갱신 명령은 재기록될 메모리 섹터의 이미지를 포함한다. 델타 파일을 사용하는 차분 갱신 시스템에서, 갱신 명령이 발생되어, 이동 단말기가 상기 이동 단말기에 이미 저장된 기존 버전 및 상기 갱신 명령에 포함된 부가적인 정보로부터 갱신된 소프트웨어 버전을 발생시키도록 한다.
하나의 실시예에서, 갱신 프로세스는 이동 단말기 상에서 실행되는 갱신 에이전트에 의해 개시된다. 갱신 에이전트는 델타 파일의 수신 및 확인을 제어한다. 그 후에, 갱신 에이전트는 이동 단말기가 네트워크에서 분리되어, 패치 모드(patch mode)로 재부팅되도록 한다. 패치 모드에서, 델타 파일의 변화는 새로운 메모리 이미지가 완료될 때까지 증분적으로 적용된다.
델타 파일 발생은 다음 연산에 의해 개략적으로 설명될 수 있다.
filenew - filebase → △file
대응적으로, 실제 새로운 버전의 발생은 다음 연산에 따라 이동 단말기에 의해 수행될 수 있다.
filebase + △file → filenew
(상기 식에서 "-"로서 표시된) 델타 파일을 발생시키고 (상기 식에서 "+" 연산으로서 표시된) 이동 단말기에 대한 새로운 버전을 발생시키는 상기 연산이 다소 복잡한 연산을 포함할 수 있다는 것이 이해된다.
델타 파일은 적소에 적용될 수 있는데, 즉, 변화는 이동 단말기에 의하여 기존 이미지에 대해 행해짐으로써 더 적은 부가적인 저장소를 필요로 한다. 더구나, 단지 델타 파일만이 로딩될 필요가 있기 때문에, 그리고, 델타 파일이 전형적으로 새로운 버전보다 상당히 작기 때문에, 로딩 시간은 상기 방법에 의해 감소된다.
코드 발생 프로세스의 실시예가 이하에 보다 상세히 설명될 것이다.
도2는 이동 단말기와 같은 전자 장치의 블록도를 개략적으로 도시한다. 이동 단말기(101)는 통신 블록(210), 처리 유닛(211), 및 메모리 유닛(212)을 포함한다.
통신 블록(210)은 셀룰러 통신 네트워크를 통한 무선-기반 데이터 통신을 허용하는 회로 및/또는 장치를 포함한다. 그러므로, 본 발명의 목적을 위하여, 통신 블록(210)은 데이터 신호를 수신 및 송신하는 수신기 회로 및 송신기 회로를 포함한다. 통신 블록은 신호를 적절하게 처리, 예를 들어, 변조, 코딩, 증폭 등을 수행하는 회로를 더 포함하고, 적절한 기술에 의한 상기 신호는 무선 통신 업계에 널리 공지되어 있다.
이동 단말기는 처리 유닛(211), 예를 들어, 적절하게 프로그래밍된 마이크로프로세서를 더 포함한다. 상기 처리 유닛은 이동 단말기에 저장된 소프트웨어의 버전을 결정하여, 저장된 소프트웨어의 체크섬(checksum)을 계산하고, 대응하는 갱신 명령을 수신시에 소프트웨어의 갱신된 버전을 발생시키도록 적응된다.
메모리 유닛(212)은 소프트웨어 및/또는 다른 데이터를 소정의 버전으로 저장한다. 예를 들어, 메모리(212)는 처리 유닛(210) 내로 로딩되어 상기 처리 유닛에 의해 실행될 때, 이동 단말기의 기본적인 기능을 구현하는 이동 단말기의 팜웨어를 포함할 수 있다. 팜웨어는 애플리케이션 소프트웨어가 실행되도록 하는 운영 시스템을 더 포함할 수 있다. 따라서, 메모리(212)는 부가적인 기능을 제공하는 애플리케이션 소프트웨어를 더 저장할 수 있다. 메모리(212)는 적절한 어드레스 공간을 사용하여 어드레싱됨으로서, 처리 유닛이 메모리의 선택된 부분에 액세스하도록 한다. 일부 실시예에서, 메모리(212)는 다수의 메모리 섹터로 논리적으로 또는 물리적으로 분할될 수 있다. 예를 들어, 메모리(212)는 데이터가 소정 크기의 섹터 내에 기록되도록 하는 플래시 메모리를 포함할 수 있다.
다음에서, 메모리(212)가 P1, P2, P3,...,PN으로 표시된 소정 크기의 다수의 섹터로 분할된다고 가정될 것이다. 그러나, 메모리의 임의의 다른 어드레싱이 그 대신 사용될 수 있다는 것이 이해된다. 본원에 설명된 갱신 프로세스가 예를 들어, 이동 전화의 플래시 메모리의 전체 이미지가 갱신되어야 하는 경우 전체 메모리(212)에, 또는 예를 들어, 하나 이상의 소프트웨어 애플리케이션이 갱신되어야 하는 경우 메모리의 단지 소정 부분에 적용될 수 있다는 것이 또한 이해된다.
도3은 소프트웨어 갱신 프로세스의 실시예의 블록도를 도시한다. 링커 모듈(302)은 다수의 오브젝트 파일(301)을 수신한다. 각각의 오브젝트 파일(301)은 컴파일러(도시되지 않음)에 의해 컴파일링되며, 여기서 상기 오브젝트 파일의 일부 또는 모두는 서로 개별적으로 컴파일링될 수 있다. 링커 모듈(302)은 오브젝트 모듈을 실행 준비가 된 절대 파일(305) 내에 결합한다. 링커 모듈(302)에 의해 수행된 태스크 중 하나는 개별적으로 컴파일링된 오브젝트 모듈 사이의 크로스-레퍼런스를 분석하고, 단일의 실행 가능한 프로그램(305)을 생성하기 위하여 최종 어드레스를 할당하는 것이다. 그러므로, 링커로부터의 출력(305)은 플래시 메모리 내에 직접 로딩될 수 있는 파일이다. 출력(305)은 또한 빌드 파일(build file)이라 칭해질 것이다.
링커 모듈(302)은 또한 예를 들어, 현재 빌드가 저장되는 플래시 메모리에서의 대응하는 어드레스 공간의 이미지의 형태로 이전 빌드 파일에 관한 정보를 수신한다. 다른 실시예에서, 링커(302)는 또한 현재 빌드의 메모리 레이아웃의 텍스트-파일 표시, 소위 맵 파일을 발생시킬 수 있다. 예를 들어, 맵 파일은 기능의 리스트, 이들에 할당된 어드레스, 이들의 입력 파라미터 등을 포함할 수 있다. 이와 같은 실시예에서, 이전 빌드에 관한 정보(303)는 이전 빌드의 대응하는 맵 파일을 포함할 수 있다. 또 다른 실시예에서, 링커 모듈은 이전 빌드의 메모리 이미지 및 맵 파일 둘 모두를 수신한다.
링커 모듈(302)은 새로운 빌드(305)의 메모리 이미지를 발생시켜, 새로운 이 미지가 이전 빌드(303)의 메모리 이미지를 가능한 한 많이 닮도록 적응된다. 그러므로, 링커는 메모리 이미지들 간의 차이를 감소시키기 위하여 다수의 최적화 단계를 수행하도록 적응된다. 이와 같은 최적화 단계의 예는 다음을 포함한다:
- 이전 빌드에서의 자신의 위치와 관련하여 모듈을 이동시킬 필요성을 피하기 위하여 모듈들 사이에 여분의 패딩 공간의 도입. 이것은 도4와 관련하여 설명될 것이다.
- 도5와 관련하여 설명되는 바와 같이, 자신들 사이에 레퍼런스를 갖는 두 개 이상의 서브-모듈 내로 오브젝트 모듈을 분할하는 것, 즉, 소위 릴레이를 도입하는 것.
- 상기의 조합.
링커 모듈(302)은 또한 최적화 단계를 제어하기 위한 하나 이상의 최적화 파라미터(304)를 수신한다. 예를 들어, 최적화 파라미터는 링커가 어느 최적화 단계를 수행해야 하는지를 결정할 수 있다. 더구나, 최적화 파라미터는 하나 이상의 최적화 단계에 대한 다수의 한도 또는 경계 조건을 결정할 수 있다. 그러므로, 링커는 최적화 파라미터에 의해 결정된 다수의 한도 도는 경계 조건 내에서 새로운 빌드 및 이전 빌드 간의 차이를 감소시키도록, 바람직하게는 최소화하도록 구성될 수 있다.
최적화 파라미터의 예로는 다음이 있다.
- 링커가 도입되게 되는 허용된 패딩 공간상의 최대 경계,
- 링크가 도입되게 되는 릴레이의 최대 수.
일부 실시예에서, 상기 최적화 파라미터 중 하나 이상이 소정의 디폴트 값으로 미리-설정될 수 있다는 것이 이해된다. 도4는 소프트웨어 갱신 전후의 플래시 메모리의 메모리 레이아웃을 개략적으로 도시하며, 여기서 상기 레이아웃은 패딩 공간의 도입을 통하여 최적화된다.
도4a는 플래시 메모리의 어드레스 공간의 일부의 구조를 도시한다. 어드레스 공간(401)은 P1, P2, P2, P4, P5, P6, P7 및 P8로 표시된 다수의 페이지로 분할된다. 상기 페이지는 소정의 크기(S)를 갖는다; 전형적인 종래의 플래시 메모리에서 페이지 크기는 64kbyte이다.
도4b는 어드레스 공간(401)에 저장된 일반적으로 참조 번호(402)로 칭해지는 프로그램 코드 버전(V1)의 메모리 레이아웃의 일례를 도시한다. 이 예에서의 프로그램 코드 버전은 A, B, C, D 및 E로 지정된 다섯 개의 오브젝트 모듈을 포함한다. 상기 오브젝트 모듈은 상이한 크기를 가지며, 어드레스 공간(401) 내에 순차적으로 배열된다. 이 레이아웃은 또한 모로리스(monolith)라고 칭해진다.
도4c는 일반적으로 403으로 지정된 프로그램 코드의 갱신된 버전(V2)을 도시한다. 이 예에서, 버전(V1) 및 버전(V2) 간의 유일한 변화는 모듈(A)의 모듈(A')로의 대체이고, 여기서 모듈(A')은 도시된 바와 같이 A'에 대해 필요로 되는 부가적인 메모리 공간(405)만큼 이전 모듈(A)보다 큰 것으로 가정된다. 나머지 모듈(B, C, D 및 E)은 변화되지 않은 것으로, 즉, 버전(V1)의 대응하는 부분과 동일한 것으로 가정된다. 그러나, 도4c에서 참조 번호(406)로 도시된 바와 같이, 갱신된 버전(V2)을 순차적으로 배열할 때, 메모리 페이지(P1 내지 P7)의 전체 콘텐트는 재기 록될 필요가 있다. 페이지(P1, P2 및 P3)는 모듈(A)의 콘텐트가 A'로 변화했기 때문에 재기록될 필요가 있고, 나머지 페이지는 모듈(B, C, D 및 E)의 위치가 V1 및 V2 사이에서 변화되기 때문에 재기록될 필요가 있다.
도4d는 일반적으로 404로 지정되는 갱신된 프로그램 버전(V2)의 최적화된 메모리 레이아웃을 도시한다. 도4d의 예에서, 링커는 모놀리스의 종단으로 모듈(B)을 이동시킨다. 더구나, 링커는 모듈(A' 및 C) 사이에 사용되지 않은 메모리의 패딩 공간(407)을 삽입한다. 패딩 공간(407)의 크기는 버전(V2)에서의 모듈(C)의 시작 어드레스가 이전 버전(V1)에서와 동일하게 되도록 결정된다. 결과적으로, 모듈(C, D 및 E의 메모리 이미지는 이들이 모듈(B)에서 레퍼런스 엔티티가 아니라고 가정하면, 즉, 레퍼런스는 변화되지 않는다고 가정하면 변화되지 않는다. 그러므로, 이전 버전(V1)을 대체하기 위하여, 즉, 플래시 메모리의 관련 페이지를 리프래시함으로써 최적화된 갱신 버전(V2)으로 메모리를 갱신할 때, 참조 번호(408)로 표시된 바와 같이 페이지(P1, P2, P3, P7 및 P8)만이 재기록될 필요가 있다. 나머지 페이지, 즉, 페이지(P4, P5 및 P6)는 재기록될 필요가 없다.
A'가 A보다 더 작은 상황에서, 모듈(B)의 변화되지 않은 베이스 어드레스를 보장하면서, 즉, B를 이동시킴이 없이, 단지 적절한 패딩 공간을 부가함으로써 레이아웃이 최적화될 수 있다는 것이 이해된다.
패딩 공간을 부가하는 것에 의한 메모리 레이아웃의 상기 최적화가 부가적인 패딩 공간의 크기에 대응하는 메모리 이미지의 크기가 증가하는 대가로 필요한 재기록의 수를 감소시킨다는 것이 또한 이해된다. 상술된 바와 같이, 이러한 상충관 계는 링커에 의해 삽입되게 되는 패딩 공간의 최대 크기를 결정하는 최적화 파라미터에 의해 제어될 수 있다.
모듈(C, D 및 E) 중 하나 이상이 모듈(B)에서의 기능에 대한 레퍼런스를 포함하는 경우, 상기 예에서 메모리 모듈(B)의 재할당이 모듈(C, D 및 E) 중 하나 이상에서 변화를 초래할 수 있다는 것이 또한 주의된다. 이와 같은 레퍼런스는 모듈(B)의 재할당에 의해 영향을 받을 것이다. 변화되지 않은 모듈에서의 다른 기능이 관련되지 않는 모듈은 자유롭게 이동될 수 있는 반면, 다르게 변화되지 않은 모듈에 의한 레퍼런스인 모듈의 이동은 필요로 되는 재기록의 수 면에서 비용을 증가시킨다. 결과적으로, 모듈이 이동될지 및 어느 모듈이 이동될지를 결정하기 위하여 링커가 오브젝트 모듈의 이동의 전체 영향/비용을 결정하도록 구성되는 것이 바람직하다.
그러므로, 하나의 실시예에서, 메모리 내의 오브젝트 모듈의 레이아웃의 결정은
- 대응하는 제1의 현재 오브젝트 모듈과 상이한 크기를 갖는 갱신된 제1 오브젝트 모듈, 및 대응하는 제2의 현재 오브젝트 모듈과 동일한 갱신된 제2 오브젝트 모듈을 검출하는 단계로서, 상기 갱신된 제2 오브젝트 모듈은 갱신된 제1 오브젝트 모듈의 베이스 어드레스보다 큰 베이스 어드레스를 갖는, 상기 검출 단계; 및
- 소정 패딩 크기의 소정 메모리 콘텐트로 상기 검출되는 갱신된 제1 오브젝트 모듈을 패딩하여, 패딩된 갱신 제1 오브젝트 모듈을 발생시키는 단계를 포함하며; 패킹 크기는 갱신된 제2 오브젝트 모듈의 베이스 어드레스가 대응하는 제2의 현재 오브젝트 모듈의 베이스 어드레스와 동일하게 되도록 선택된다.
도5는 소프트웨어 갱신 전후의 플래시 메모리의 메모리 레이아웃을 개략적으로 도시하며, 여기서 상기 레이아웃은 릴레이의 도입을 통하여 최적화된다.
도5a는 플래시 메모리의 어드레스 공간의 일부 구조를 도시한다. 어드레스 공간(501)은 P1, P2, P3, P4, P5, P6, P7 및 P8로 지정된 다수의 페이지로 분할된다. 상기 페이지는 소정의 크기(S)를 갖는다.
도5b는 어드레스 공간(501)에 저장된 일반적으로 참조 번호(502)로 참조되는 프로그램 코드 버전(V1)의 메모리 레이아웃의 일례를 도시한다. 이전 예에서와 같이, 프로그램 코드 버전은 A, B, C, D 및 E로 지정된 다섯 개의 모듈을 포함한다. 오브젝트 모듈은 상이한 크기를 가지며, 어드레스 공간(501)에 순차적으로 배열된다.
도5c는 일반적으로 503으로 지정된 프로그램 코드의 갱신된 버전(V2)을 도시한다. 다시, 버전(V1) 및 버전(V2) 간의 유일한 변화는 모듈(A)이 모듈(A')로 대체되는 것이라고 가정되며, 여기서 모듈(A')은 도시된 바와 같이 A'에 대해 필요로 되는 부가적인 메모리 공간(505)만큼 이전 모듈(A)보다 큰 것으로 가정된다. 나머지 모듈(B, C, D 및 E)은 변화되지 않은 것으로, 즉, 버전(V1)의 대응하는 부분과 동일한 것으로 가정된다. 그러나, 도5c에서 참조 번호(506)로 도시된 바와 같이, 갱신된 버전(V2)을 순차적으로 배열할 때, 메모리 페이지(P1 내지 P7)의 전체 콘텐트는 재기록될 필요가 있다. 페이지(P1, P2 및 P3)는 모듈(A)의 콘텐트가 A'로 변화했기 때문에 재기록될 필요가 있고, 나머지 페이지는 모듈(B, C, D 및 E)의 위치 가 V1 및 V2 사이에서 변화되기 때문에 재기록될 필요가 있다.
도5d는 일반적으로 504로 지정되는 갱신된 프로그램 버전(V2)의 최적화된 메모리 레이아웃을 도시한다. 도5의 예에서, 오브젝트 모듈(A')의 일부가 다른 모듈들 중 어느 하나로부터가 아니라, 단지 A'내로부터만 레퍼런스된다고 가정된다. A'의 이 부분은 A2'로 표시된다. A1'로 표시된 A'의 나머지 부분은 하나 이상의 다른 모듈들로부터 레퍼런스된다. 결과적으로, 도5d에 도시된 바와 같이, 링커는 모듈(A')을 A1' 및 A2'로 분할하여, 모듈(A2')을 모노리스의 종단으로 이동시키고, 이에 따라, 즉, 릴레이를 도입함으로써 A1' 내의 내부 레퍼런스 A2'로 변화시킬 수 있다. 더구나, 링커는 패딩 공간(507)을 삽입하여, 모듈(B)의 시작 어드레스가 이전 버전(V1)에 비하여 변화되지 않은 채로 유지되도록 한다. 결과적으로, 모듈(B, C, D 및 E)의 메모리 이미지는 변화되지 않는다. 그러므로, 이전 버전(V1)을 대체하기 위하여 최적화된 갱신 버전(V2)을 업로딩할 때, 참조 번호(508)로 표시된 바와 같이, 단지 페이지(P1, P2, P7 및 P8)만이 재기록될 필요가 있다. 나머지 페이지, 즉, 페이지(P3, P4, P5 및 P6)는 재기록될 필요가 없다.
그러므로, 이 실시예에서, 메모리 내의 오브젝트의 레이아웃의 결정은
- 대응하는 제1의 현재 오브젝트 모듈보다 큰 갱신된 제1 오브젝트 모듈을 검출하는 단계;
- 상기 갱신된 제1 오브젝트 모듈의 소정 부분을 상이한 메모리 섹터로 이동시켜, 감소되는 갱신된 제1 오브젝트 모듈 및 상기 갱신된 제1 오브젝트 모듈의 이 동된 부분을 발생시키는 단계;
- 갱신된 제1 오브젝트 모듈의 이동된 부분으로의 릴레이를 상기 감소되는 제1 갱신된 메모리 섹터 내에 삽입하는 단계를 포함한다.
릴레이에 의한 메모리 레이아웃의 상기 최적화가 릴레이로 인한 실행 시간 패널티의 대가로 필요로 되는 재기록의 수를 감소시킨다는 것이 이해된다. 상술된 바와 같이, 이 상충관계는 링커에 의해 삽입되게 되는 릴레이의 최대 수를 결정하는 최적화 파라미터에 의해 제어될 수 있다.
도5의 예에서, 릴레이의 도입이 패딩 공간의 도입과 결합된다는 것이 또한 주의된다.
다른 실시예에서, 모듈을 두 개의 별도의 모듈로 분할하는 것이 링커 자체보다는 오히려 컴파일러에 의해 수행된다는 것이 또한 이해된다. 링커가 피드백 신호를 컴파일러로 송신하는 이와 같은 실시예가 다음에 설명될 것이다.
도6은 소프트 갱신 프로세스의 다른 실시예의 블록도이다. 이 실시예는 동일한 요소에는 동일한 참조 부호가 병기되어 있는 도3과 관련하여 설명된 실시예와 유사하다. 도6의 실시예에서, 링커(302)는 또한 대응하는 세트의 소스 파일(607)로부터 오브젝트 파일(301)을 발생시키는 컴파일러(606)로 피드백 신호(608)를 발생시킨다. 상기 피드백 신호는 컴파일러가 하나 이상의 소스 파일을 재-컴파일링하도록 하여, 링크에 의한 최적화된 메모리 레이아웃의 생성에 더 적합한 변경된 오브젝트 파일을 발생시킨다. 예를 들어, 도5에 도시된 상황에서, 링커(302)는 A' 대신 에 오브젝트 모듈(A1' 및 A2')을 발생시키도록 컴파일러(606)에 요구할 수 있다. 하나의 실시예에서, 피드백 신호(608)는 각각의 서브모듈에서 포함하도록 기능을 하는 정보도 포함할 수 있다.
그러므로, 상기에서, 플래시 메모리에서 프로그램 코드를 갱신할 때 필요로 되는 재기록의 수를 감소시키도록 구성되는 링커가 게시된다.
본 발명은 여러 상이한 요소를 포함하는 하드웨어, 및 적절하게 프로그래밍된 컴퓨터에 의하여 구현될 수 있다. 여러 수단을 열거하는 장치 청구항에서, 이러한 수단 중 여러 개는 하드웨어의 하나의 동일한 아이템, 예를 들어, 적절하게 프로그래밍된 마이크로프로세서 또는 컴퓨터, 및/또는 본원에 설명된 바와 같은 하나 이상의 통신 인터페이스에 의해 구현될 수 있다. 일정한 수단이 서로 상이한 종속 청구항에서 언급되거나 여러 실시예에서 설명된다는 단순한 사실은 이러한 수단의 조합이 장점에 사용될 수 없다는 것을 나타내지 않는다.
본 명세서에서 사용될 때, 용어 "포함한다/포함하는"은 서술된 특성, 정수, 단P 또는 구성요소의 존재를 규정하기 위해 취해진 것이지만, 하나 이상의 다른 특성, 정수, 단계, 구성요소 또는 이들의 그룹의 존재 또는 부가를 배제하지 않는다는 것이 강조되어야 한다.

Claims (16)

  1. 다수의 메모리 섹터(P1, P2, P3, P4, P5, P6, P7, P8)를 포함하는 메모리(212)에 저장된 프로그램 코드를 갱신하는 방법으로서, 적어도 하나의 갱신된 소스 코드 모듈(607)을 메모리(212)에 저장될 갱신된 프로그램 코드 버전(305)으로 변환하는 단계(606, 302)를 포함하며, 상기 메모리는 자신의 메모리 섹터의 제1 세트를 점유하는 현재의 프로그램 코드 버전을 저장하고, 상기 갱신된 프로그램 코드 버전은 상기 메모리에 저장될 때, 메모리 섹터의 제2 세트를 점유하고;
    상기 변환하는 단계는
    - 하나 이상의 소스 코드 모듈을 컴파일링하여, 다수의 오브젝트 모듈(301)을 발생시키는 단계; (606);
    - 현재의 프로그램 코드 버전의 표시를 수신하는 단계(303); 및
    - 상기 현재의 프로그램 코드 버전에 의해 점유된 메모리 섹터의 제1 세트의 대응하는 메모리 섹터와 상이한 갱신된 코드 버전에 의해 점유된 메모리 섹터의 제2 세트의 메모리 섹터의 수를 감소시키도록 적응된 하나 이상의 최적화 단계를 수행하는 단계(302)를 더 포함하는, 상기 프로그램 코드 갱신 방법에 있어서:
    상기 하나 이상의 최적화 단계를 수행하는 단계는:
    - 오브젝트 모듈의 수를 링크하기 위해 상기 링크 단계(302) 동안 피드백 데이터를 발생시키는 단계(608);
    - 상기 피드백 데이터를 토대로 하여 적어도 소스 코드 모듈의 서브셋을 재-컴파일링하여, 다수의 변경된 오브젝트 모듈을 발생시키는 단계(606); 및
    - 변경된 오브젝트 모듈의 수를 토대로 상기 링크 단계(302)를 수행하는 단계를 포함하는 것을 특징으로 하는 프로그램 코드 갱신 방법.
  2. 제 1 항에 있어서,
    상기 현재의 프로그램 코드 버전의 표시는 메모리 섹터의 제1 세트의 현재 이미지 및 메모리 섹터의 제1 세트의 현재 이미지의 맵 파일 설명 중 하나 이상을 포함하는 것을 특징으로 하는 프로그램 코드 갱신 방법.
  3. 제 1 항 또는 2 항에 있어서,
    상기 최적화 단계는 메모리에서 상기 오브젝트 모듈의 레이아웃을 결정하는 단계를 포함하는 것을 특징으로 하는 프로그램 코드 갱신 방법.
  4. 제 3 항에 있어서,
    메모리에서 상기 오브젝트 모듈의 레이아웃을 결정하는 단계는
    - 대응하는 제1의 현재 오브젝트 모듈과 상이한 크기를 갖는 갱신된 제1 오브젝트 모듈, 및 대응하는 제2의 현재 오브젝트 모듈과 동일한 갱신된 제2 오브젝트 모듈을 검출하는 단계로서, 상기 갱신된 제2 오브젝트 모듈은 상기 갱신된 제1 오브젝트 모듈의 베이스 어드레스보다 큰 베이스 어드레스를 갖는, 상기 검출 단계; 및
    - 소정 패킹 크기의 소정 메모리 콘텐트로 상기 검출되는 갱신된 제1 오브젝트 모듈을 패딩하여, 패딩된 갱신 제1 오브젝트 모듈을 발생시키는 단계를 포함하며; 패킹 크기는 갱신된 제2 오브젝트 모듈의 베이스 어드레스가 대응하는 제2의 현재 오브젝트 모듈의 베이스 어드레스와 동일하게 되도록 선택되는 것을 특징으로 하는 프로그램 코드 갱신 방법.
  5. 제 4 항에 있어서,
    메모리에서 상기 오브젝트 모듈의 레이아웃을 결정하는 단계는
    - 대응하는 제1의 현재 오브젝트 모듈보다 더 큰 갱신된 제1 오브젝트 모듈을 검출하는 단계;
    - 갱신된 제1 오브젝트 모듈의 소정의 부분을 상이한 메모리 섹터로 이동시켜, 감소되는 갱신된 제1 오브젝트 모듈 및 상기 갱신된 제1 오브젝트 모듈의 이동된 부분을 발생시키는 단계;
    - 상기 갱신된 제1 오브젝트 모듈의 이동된 부분으로의 릴레이를 상기 감소되는 제1 갱신된 메모리 섹터 내에 삽입하는 단계를 포함하는 것을 특징으로 하는 프로그램 코드 갱신 방법.
  6. 제 1 항 또는 2 항에 있어서,
    상기 변환 단계는 하나 이상의 최적화 파라미터(304)에 의해 상기 최적화 단계를 제어하는 단계를 더 포함하는 것을 특징으로 하는 프로그램 코드 갱신 방법.
  7. 제 6 항에 있어서,
    상기 하나 이상의 최적화 파라미터는 상기 최적화 단계에 기인한 최대의 허용된 크기 증가를 결정하는 파라미터를 포함하는 것을 특징으로 하는 프로그램 코드 갱신 방법.
  8. 제 6 항에 있어서,
    상기 하나 이상의 최적화 파라미터는 상기 최적화 단계에 의해 도입된 최대의 허용된 릴레이 수를 결정하는 파라미터를 포함하는 것을 특징으로 하는 프로그램 코드 갱신 방법.
  9. 제 1 항 또는 2 항에 있어서,
    상기 현재의 프로그램 코드 버전 및 갱신된 프로그램 코드 버전 간의 차이를 나타내는 델타 파일을 발생시키는 단계를 더 포함하는 것을 특징으로 하는 프로그램 코드 갱신 방법.
  10. 제 1 항 또는 2 항에 있어서,
    상기 메모리는 플래시 메모리인 것을 특징으로 프로그램 코드 갱신 방법.
  11. 제 1 항 또는 2 항에 있어서,
    상기 메모리는 휴대용 무선 통신 장비(101)의 메모리인 것을 특징으로 하는 코드 갱신 방법.
  12. 다수의 메모리 섹터를 포함하는 메모리(212)에 저장된 프로그램 코드를 갱신하는 데이터 처리 시스템(102)에 있어서:
    제 1 항 또는 2 항에 따른 방법의 단계를 수행하도록 적절하게 프로그램되는 프로그램 코드를 갱신하는 데이터 처리 시스템.
  13. 프로그램 코드 수단이 데이터 처리 시스템 상에서 실행될 때, 데이터 처리 시스템이 제 1 항 또는 2 항에 따른 방법을 수행하게 하도록 적응된 프로그램 코드 수단을 포함하는 컴퓨터 프로그램이 기록되어 있는 저장매체.
  14. 제 13 항에 있어서,
    상기 컴퓨터 프로그램은 링커 모듈을 포함하는 것을 특징으로 하는 컴퓨터 프로그램이 기록되어 있는 저장매체.
  15. 삭제
  16. 삭제
KR1020067017293A 2004-02-27 2005-01-07 플래시 메모리 프로그래밍을 위한 시스템 및 방법 KR101088192B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US54884104P 2004-02-27 2004-02-27
US60/548,841 2004-02-27
EP04388033A EP1569102B1 (en) 2004-02-27 2004-05-11 Flash memory programming
EP04388033.5 2004-05-11
US57327504P 2004-05-20 2004-05-20
US60/573,275 2004-05-20
PCT/EP2005/000190 WO2005085996A1 (en) 2004-02-27 2005-01-07 Flash memory programming

Publications (2)

Publication Number Publication Date
KR20060127161A KR20060127161A (ko) 2006-12-11
KR101088192B1 true KR101088192B1 (ko) 2011-11-30

Family

ID=34749073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067017293A KR101088192B1 (ko) 2004-02-27 2005-01-07 플래시 메모리 프로그래밍을 위한 시스템 및 방법

Country Status (9)

Country Link
US (1) US8255892B2 (ko)
EP (1) EP1569102B1 (ko)
JP (1) JP4903686B2 (ko)
KR (1) KR101088192B1 (ko)
CN (1) CN100449486C (ko)
AT (1) ATE466334T1 (ko)
DE (1) DE602004026822D1 (ko)
HK (1) HK1106036A1 (ko)
WO (1) WO2005085996A1 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
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
US7694291B2 (en) * 2004-04-06 2010-04-06 Hewlett-Packard Development Company, L.P. Build optimizer tool for efficient management of software builds for mobile devices
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
JP4505265B2 (ja) * 2004-06-09 2010-07-21 シスメックス株式会社 試料分析装置および試料分析装置に用いる外部記憶媒体
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7716661B2 (en) * 2005-03-16 2010-05-11 Microsoft Corporation Embedded device update service
TWI345175B (en) * 2005-06-08 2011-07-11 Winbond Electronics Corp Method for updating firmware of memory card
DE102005059319A1 (de) * 2005-12-09 2007-06-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Einrichtung
JP2007164242A (ja) * 2005-12-09 2007-06-28 Nec Electronics Corp プログラム書換データ生成装置、プログラム及びプログラム書換データ生成方法
US7660558B2 (en) 2005-12-31 2010-02-09 Adobe Systems Incorporated Interrupting and resuming a media player
US7603113B2 (en) 2005-12-31 2009-10-13 Adobe Systems Incorporated Using local codecs
US20070157194A1 (en) * 2005-12-31 2007-07-05 Govind Balakrishnan Post-deployment user interface update in a mobile device
US20070156841A1 (en) * 2005-12-31 2007-07-05 Govind Balakrishnan Platform independent user interface for a mobile device
US8209676B2 (en) 2006-06-08 2012-06-26 Hewlett-Packard Development Company, L.P. Device management in a network
WO2008014454A2 (en) 2006-07-27 2008-01-31 Hewlett-Packard Development Company, L.P. User experience and dependency management in a mobile device
KR20080025957A (ko) * 2006-09-19 2008-03-24 삼성전자주식회사 휴대용 단말기에서 소프트웨어를 업그레이드하기 위한 장치및 방법
US20080117991A1 (en) * 2006-11-21 2008-05-22 Samsung Electronics Co., Ltd. Partitioning Compression-Based Firmware Over the Air
US20080119178A1 (en) * 2006-11-21 2008-05-22 Samsung Electronics Co., Ltd. Allocating Compression-Based Firmware Over the Air
US20130167024A1 (en) 2006-12-05 2013-06-27 Adobe Systems Incorporated Embedded document within an application
US7681009B2 (en) * 2006-12-28 2010-03-16 Motorola, Inc. Dynamically updateable and moveable memory zones
US7743339B1 (en) 2007-02-01 2010-06-22 Adobe Systems Incorporated Rendering text in a brew device
US8589779B2 (en) 2007-03-08 2013-11-19 Adobe Systems Incorporated Event-sensitive content for mobile devices
US8806439B1 (en) * 2007-04-30 2014-08-12 AT & T Intellectual Property II, LP System and method for program stack security
EP2012230A1 (en) * 2007-07-05 2009-01-07 Samsung Electronics Co., Ltd. Partitioning compression-based firmware over the air
ES2371995T3 (es) 2007-12-13 2012-01-12 Telefonaktiebolaget Lm Ericsson (Publ) Actualización del firmware de un dispositivo electrónico.
US8312447B2 (en) * 2008-09-25 2012-11-13 Microsoft Corporation Managing updates using compiler and linker information
CN101686340A (zh) * 2008-09-26 2010-03-31 深圳市朗科科技股份有限公司 扩展图像通信设备功能的方法及系统
CN103180828A (zh) * 2010-10-28 2013-06-26 汤姆逊许可公司 用于信息存储的非易失性存储器重新分配的方法
JP5660386B2 (ja) * 2011-05-26 2015-01-28 日本電気株式会社 メモリ配置管理装置、メモリ配置管理方法、メモリ配置管理プログラム、およびプログラム作成システム
US9069966B2 (en) 2011-10-11 2015-06-30 International Business Machines Corporation Code updates in processing systems
JP2013218388A (ja) * 2012-04-05 2013-10-24 Sharp Corp プログラム更新装置、方法、プログラム、及び記憶媒体
US20140058532A1 (en) * 2012-08-23 2014-02-27 GM Global Technology Operations LLC Method for partial flashing of ecus
US9268552B1 (en) * 2013-06-18 2016-02-23 Ayla Networks, Inc. Patching improvement for executables in memory constrained devices
US10275154B2 (en) 2014-11-05 2019-04-30 Oracle International Corporation Building memory layouts in software programs
US10353793B2 (en) 2014-11-05 2019-07-16 Oracle International Corporation Identifying improvements to memory usage of software programs
US9552192B2 (en) * 2014-11-05 2017-01-24 Oracle International Corporation Context-based generation of memory layouts in software programs
US11329683B1 (en) * 2015-06-05 2022-05-10 Life365, Inc. Device configured for functional diagnosis and updates
US10162547B1 (en) * 2015-09-16 2018-12-25 Marvell International Ltd. Memory expansion in a linking process
US9946533B2 (en) 2015-09-30 2018-04-17 Apple Inc. Software updating
WO2017158663A1 (ja) * 2016-03-15 2017-09-21 パナソニックIpマネジメント株式会社 データ生成装置、組込端末、ファームウェア更新システム及びデータ生成方法
CN109496301A (zh) * 2017-05-19 2019-03-19 深圳配天智能技术研究院有限公司 嵌入式系统中管理文件的方法、嵌入式设备及其存储介质
KR20210079601A (ko) * 2019-12-20 2021-06-30 주식회사 실리콘웍스 펌웨어를 업데이트하는 터치 시스템 및 방법
FR3139216A1 (fr) * 2022-08-29 2024-03-01 Stmicroelectronics (Rousset) Sas Procédé de génération d’un fichier de mise à jour et dispositif serveur correspondant, procédé de mise à jour et dispositif client correspondant, méthode de mise à jour et système correspondant.

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003009136A1 (en) 2001-07-16 2003-01-30 Yuqing Ren Embedded software update system
US6560703B1 (en) 2000-04-18 2003-05-06 International Business Machines Corporation Redundant updatable self-booting firmware

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH033036A (ja) * 1989-05-31 1991-01-09 Nec Corp ロードモジュール修正方法
DE59108978D1 (de) 1990-08-28 1998-06-10 Landis & Gyr Tech Innovat Verfahren zum Aendern einer in einem Computer eines Gerätes abgespeicherten Maschinensprachenfassung eines ersten Programms in eine Maschinensprachenfassung eines durch mindestens eine Aenderung vom ersten Programm abgeleiteten zweiten Programms
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
US6077315A (en) * 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
US5920723A (en) * 1997-02-05 1999-07-06 Hewlett-Packard Company Compiler with inter-modular procedure optimization
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US6401182B1 (en) * 1999-02-10 2002-06-04 International Business Machines Corporation Method and apparatus for memory management
JP2000293366A (ja) * 1999-04-06 2000-10-20 Mitsubishi Electric Corp セットトップボックス用モジュールのアップデート方法
US20010047512A1 (en) * 2000-03-23 2001-11-29 Leland Szewerenko Method and system for linking multiple processors having shared memory
JP2001344109A (ja) * 2000-05-31 2001-12-14 Sony Corp プログラム生成方法及びプログラム生成装置、並びに、記憶媒体
KR100506785B1 (ko) * 2000-11-17 2005-08-08 비트폰 코포레이션 정보의 업데이트 및 배포 시스템 및 방법
CA2357382A1 (en) * 2001-09-17 2003-03-17 Soma Networks, Inc. Software update method, apparatus and system
JP2003108397A (ja) * 2001-09-27 2003-04-11 Nec Eng Ltd ファームウェア書き換え方法
EP1331643B1 (en) * 2002-01-29 2009-12-16 Agere Systems Inc. Differential flash memory programming technique
JP3801545B2 (ja) * 2002-08-02 2006-07-26 松下電器産業株式会社 コンパイラ用プログラム、コンパイラ装置及びコンパイル方法
US7275242B2 (en) * 2002-10-04 2007-09-25 Hewlett-Packard Development Company, L.P. System and method for optimizing a program
JP4063076B2 (ja) * 2002-12-27 2008-03-19 ソニー株式会社 光記録方法及び光記録装置
WO2004095457A2 (en) * 2003-04-11 2004-11-04 Bitfone Coproration Initialization and update of software and/or firmware in electronic devices
US7089270B2 (en) * 2003-06-20 2006-08-08 Innopath Software Processing software images for use in generating difference files

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560703B1 (en) 2000-04-18 2003-05-06 International Business Machines Corporation Redundant updatable self-booting firmware
WO2003009136A1 (en) 2001-07-16 2003-01-30 Yuqing Ren Embedded software update system

Also Published As

Publication number Publication date
KR20060127161A (ko) 2006-12-11
EP1569102A1 (en) 2005-08-31
JP2007524171A (ja) 2007-08-23
JP4903686B2 (ja) 2012-03-28
ATE466334T1 (de) 2010-05-15
WO2005085996A1 (en) 2005-09-15
HK1106036A1 (en) 2008-02-29
CN1954291A (zh) 2007-04-25
US20070220504A1 (en) 2007-09-20
US8255892B2 (en) 2012-08-28
CN100449486C (zh) 2009-01-07
DE602004026822D1 (de) 2010-06-10
EP1569102B1 (en) 2010-04-28

Similar Documents

Publication Publication Date Title
KR101088192B1 (ko) 플래시 메모리 프로그래밍을 위한 시스템 및 방법
EP1755034B1 (en) Object code generation for increasing the performance of delta files
US8296535B2 (en) Generating incremental program updates
KR101213275B1 (ko) 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법
US7716414B2 (en) Method for updating a mobile device using an update package obtained from a remote server
US20070132774A1 (en) System and method for a patch minimization tool
US20070294685A1 (en) Program upgrade system and method for ota-capable portable device
EP1956482A1 (en) Generating delta updates for a processing device
EP1755039B1 (en) Feedback linker for increased delta performance
KR20200089490A (ko) 펌웨어 업데이트 방법 및 이를 수행하는 장치
CN102722387B (zh) 动态打补丁的方法和装置
CN109144519A (zh) 升级包的生成方法、装置、计算机设备和存储介质
KR20210041972A (ko) 차량 ecu 소프트웨어 업데이트 장치
CN111930412A (zh) 差分文件生成及固件在线升级的方法和装置
KR101670916B1 (ko) 실행 파일 생성 방법 및 그 방법을 이용하는 시스템 장치
CN108268265A (zh) 公共代码库的链接映射方法、软件代码烧录方法及烧录主机
EP1793311A2 (en) System and method for a patch minimization tool
EP1806655A2 (en) System and method for providing monolithic image for use in a wireless device
CN115624757A (zh) 一种游戏引擎热更新方法、装置、设备及介质
CN115840569A (zh) 一种组态增量下装方法、装置、设备及存储介质
KR20080013424A (ko) 임베디드 시스템을 위한 점진적 링킹 방법

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: 20141106

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151106

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161108

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171109

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181108

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20191112

Year of fee payment: 9