KR20040022451A - 임베디드 소프트웨어 업데이트 시스템 - Google Patents

임베디드 소프트웨어 업데이트 시스템 Download PDF

Info

Publication number
KR20040022451A
KR20040022451A KR10-2004-7000597A KR20047000597A KR20040022451A KR 20040022451 A KR20040022451 A KR 20040022451A KR 20047000597 A KR20047000597 A KR 20047000597A KR 20040022451 A KR20040022451 A KR 20040022451A
Authority
KR
South Korea
Prior art keywords
patch
software
embedded software
embedded
section
Prior art date
Application number
KR10-2004-7000597A
Other languages
English (en)
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 KR20040022451A publication Critical patent/KR20040022451A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Abstract

디지털 제품에 소프트웨어 오류(버그) 또는 하드웨어상의 문제가 있는 경우 해당 제조업체 및 공급업체가 비용이 많이 소요되는 제품 회수 조치를 취하지 않도록 도와주는 임베디드 소프트웨어 업데이트 시스템에 대한 방법 및 해당 시스템. 본 발명의 한 측면은 이러한 소프트웨어 오류를 원격으로 수정하고 하드웨어 문제점의 영향을 최소화하는 오류 수정 시스템에 대한 것입니다. 본 발명의 또 다른 측면은 소프트웨어 패치를 사용하여 디지털 제품의 소프트웨어 모듈을 업데이트할 수 있는 소프트웨어 업데이트 시스템에 대한 것입니다. 본 발명의 소프트웨어 패치 시스템은 소프트웨어 오류를 수정하고 하드웨어 문제점의 영향을 최소화하기 위한 제조업체의 실시간(on-the-fly) 디지털 제품으로의 소프트웨어 패치 전송을 용이하게 합니다. 소프트웨어 패치에는 디지털 제품의 NVM(Non Volatile Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory) 메모리 내 일부 데이터 영역을 업데이트하는 새 매개변수가 포함될 수도 있으며 이는 서비스 제공업체나 제조업체가 일부 서비스 기능 또는 제품 기능을 수정할 때 매우 유용합니다.

Description

임베디드 소프트웨어 업데이트 시스템{EMBEDDED SOFTWARE UPDATE SYSTEM}
디지털 기술의 진보와 혁신은 인간의 삶, 일 또는 여가 방식까지 바꾸어 놓았습니다. 소형 컴퓨터, 셀룰러 전화기, PDA(Personal Digital Assistance), 소형 호출기, PCMCIA 무선 모뎀 카드를 비롯하여 공통 표준 또는 자체 I/O 커넥터를 사용하는 기타 무선 모뎀 카드 등은 기술이 점점 더 중요한 역할을 한다는 것을 보여주는 좋은 예입니다. 이러한 기술을 함께 활용하면 업무 효율성과 생산성이 향상되고 언제 어디서나 원하는 상대방과 연락할 수 있으며 정보 획득은 물론 여가 생활까지도 보다 편리해질 수 있습니다.
셀룰러 전화기, PDA 및 셋톱 박스와 같은 디지털 제품에 사용되는 디지털 기술은 대규모의 임베디드 소프트웨어 시스템을 기반으로 합니다. 이러한 디지털 제품에 내장되는 소프트웨어 시스템은 그 소스 코드의 길이가 몇 만 줄이 넘는 것이 일반적입니다. 또한 이러한 임베디드 소프트웨어 시스템에는 디지털 제품의 오작동을 일으킬 수 있는 소프트웨어 버그가 필연적으로 존재합니다. 일부 버그는 제조업체가 해당 디지털 제품을 회수해야 할 만큼 치명적인 경우도 있습니다. 그러나 제품 회수에 따른 비용 문제로 일부 제조업체는 특정 시장을 모두 포기하거나 생산 품질 및 그 신뢰도가 향상될 때까지 기다리기도 합니다. 물론 기업 이미지의 손상과 잠재적인 소비자 신뢰도의 실추 또한 그러한 회사의 의사 결정에 있어 중요한 요소입니다.
디지털 제품의 여러 개발 및 제조 단계에서의 개선 노력에도 불구하고 현실적으로 결함은 존재할 수 밖에 없습니다. 또한 디지털 제품이 보다 고급화되고 복잡해짐에 따라 소프트웨어, 하드웨어, 재료 또는 제조 공정상의 버그 또는 결함에 더욱 민감해지고 있습니다. 제품이 출시되기 전이라면 결함을 발견하거나 이를 최소화하기 위한 여러 가지 예방 조치를 수행할 수 있지만 일단 디지털 제품이 시장에 출시된 후에 버그 또는 결함이 발견된 경우 이를 수정하기 위해서는 제품을 회수해야 합니다. 제품의 특정 부분에서 결함이 발생하는 경우 일단 제품을 수거하여 수리하거나 교체할 수 있습니다. 이런 경우가 거의 발생하지 않거나 공급업체가 수리 기간 동안 대체품을 제공한다면 일반 사용자가 그에 따른 불편을 감수할 수도 있습니다.
제품의 여러 부분에서 결함이 발생하는 경우에도 역시 제품을 수거하여 수리하거나 교체할 수 있습니다. 그러나 이처럼 여러 가지 결함이 발생하는 경우에는 공급업체의 경제력이 부족하여 결함이 있는 장치를 신속하게 수리하거나 교체하지 못할 수도 있습니다. 공급업체가 수리 또는 교체하는 기간 동안 일반 사용자에게대체품을 제공할 수 있는 경제적 여유가 있는 경우라도 우선 일반 사용자가 임시로 사용할 수 있는 충분한 재고를 확보해야만 합니다. 이처럼 임시로 사용한 제품은 수익을 창출시킬 수 있는 일반 판매용으로 사용할 수 없으므로 공급업체의 경제적 손실로 연결될 수 밖에 없습니다.
또한 디지털 제품은 시장에 출시된 후에도 때때로 제품의 개선, 강화 또는 업그레이드를 수행하게 되며 이런 경우 임베디드 소프트웨어의 변경이 필요합니다. 중요한 변경 사항이 있는 경우 제조업체는 많은 비용이 소요되더라도 반드시 새로운 제품 릴리스를 출시해야 할 수도 있습니다. 그러나 사소한 변경 사항의 경우 완벽하지 않더라도 제품을 먼저 출시할지 또는 해당 변경 사항이 끝날 때까지 출시를 미룰지 선택해야 합니다. 완성되지 않은 제품을 미리 출시하는 것은 일반 사용자의 불만을 야기시킬 수 밖에 없으므로 결국 회사 이익에도 나쁜 영향을 주게 됩니다.
따라서 임베디드 소프트웨어 시스템을 기반으로 하는 디지털 제품에 대한 제품 회수를 최소화하는 것이 바람직합니다.
또한 완성되지 않은 중간 단계의 디지털 제품 출시 또한 최소화해야 합니다.
아울러 제품 릴리스 수를 줄여 해당 디지털 제품을 수정, 수리, 업데이트 또는 강화할 수 있어야 합니다.
본 발명은 소프트웨어 운영 체제가 임베디드 디지털 전자 제품에 관한 것이며, 특히 제품이 시장에 출시되기 전 또는 그 후에 소프트웨어 패치를 사용하여 해당 디지털 제품에 내장되는 소프트웨어를 업데이트, 정정, 수정 또는 업그레이드하는 방법과 그 시스템에 관한 것입니다.
도 1은 종래의 디지털 제품에 사용되는 마이크로프로세서 시스템의 개략도입니다.
도 2는 종래 디지털 제품의 DSP 시스템 개략도입니다.
도 3은 디지털 제품의 패치 시스템 소프트웨어 아키텍처 예입니다.
도 4는 디지털 제품에 원래 내장된 소프트웨어의 업데이트 처리 루틴 할당 및 소프트웨어 섹션 작성 개략도입니다.
도 5는 본 발명의 한 구체화에 따른 소프트웨어 섹션을 기반으로 하는 소프트웨어 업데이트 구현 및 그 설계의 예입니다.
도 6은 본 발명의 다른 구체화에 따라 점프하기를 사용하여 패치 제어 루틴을 통해 프로그램을 패치하는 소프트웨어 업데이트 구현 및 그 설계의 예입니다.
도 7은 본 발명의 또 다른 구체화에 따라 점프하기를 사용하여 패치 제어 블록을 통해 프로그램을 패치하는 소프트웨어 업데이트 구현 및 그 설계의 예입니다.
도 8은 본 발명의 한 구체화에 따른 패치 전송을 위한 통신 레이어의 예입니다.
도 9는 본 발명의 한 구체화에 따른 패치 데이터 및 패치 데이터 패킷 형식의 예입니다.
도 10은 본 발명에 따른 패치 프로그래밍의 상태 도해 예입니다.
도 11은 본 발명에 따른 패치 서버의 아키텍처 예입니다.
도 12는 SMS 메시지를 사용한 패치 전송 설계의 예입니다.
본 발명은 디지털 제품에 소프트웨어 오류(버그) 또는 하드웨어상의 문제가 있는 경우 해당 제조업체 및 공급업체가 비용이 많이 소요되는 제품 회수 조치를 취하지 않도록 도와주는 임베디드 소프트웨어 업데이트 시스템을 위한 방법과 관련한 것입니다. 본 발명의 한 측면은 이러한 소프트웨어 오류를 원격으로 정정하고 하드웨어 문제점의 영향을 최소화하는 오류 정정 시스템에 대한 것입니다. 본 발명의 또 다른 측면은 소프트웨어 패치를 사용하여 디지털 제품의 소프트웨어 모듈을 업데이트할 수 있는 소프트웨어 업데이트 시스템에 대한 것입니다. 본 발명의 소프트웨어 패치 시스템은 소프트웨어 오류를 수정하고 하드웨어 문제점의 영향을 최소화하기 위한 제조업체의 실시간(on-the-fly) 디지털 제품으로의 소프트웨어 패치 전송을 용이하게 합니다. 소프트웨어 패치에는 디지털 제품의 NVM(Non Volatile Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory) 메모리 내 일부 데이터 영역을 업데이트하는 새 매개변수가 포함될 수도 있으며 이는 서비스 제공업체나 제조업체가 일부 서비스 기능 또는 제품 기능을 수정할 때 매우 유용합니다.
본 발명의 소프트웨어 업데이트 시스템은 종래의 소프트웨어 업그레이드/업데이트 시스템보다 우수한 장점을 갖고 있습니다. 소프트웨어 업데이트 시스템에는 버그 수정 또는 핵심 모듈 업데이트를 위한 소프트웨어 패치를 저장할 수 있는 비교적 작은 메모리 공간만 필요합니다. 이는 특히 휴대용 소형 디지털 제품에 유용한 장점으로, 종래의 소프트웨어 업데이트/업그레이드 시스템에서는 업그레이드할 새 소프트웨어 버전의 전체 응용 프로그램 데이터를 보관할 큰 메모리 공간이 필요했습니다.
본 발명에서 제안하는 업데이트 시스템의 경우, 각 패치의 크기가 일반적으로 매우 작기 때문에 패치 데이터 전송을 위한 네트워크 자원이 많이 필요하지 않습니다. 종래의 소프트웨어 업그레이드/업데이트 시스템의 경우 소프트웨어 버전 업데이트를 위한 대용량 응용 프로그램 데이터 블록의 전송을 위해 휠씬 많은 대역폭 또는 네트워크 자원이 필요합니다.
디지털 제품 기술의 발전 속도가 빨라짐에 따라 과거에 비해 새 표준, 사양 및 서비스 기능 또한 과거 어느 때보다도 빨리 업그레이드되고 있습니다. 이러한 업그레이드에는 일반적으로 새 고급 기능을 지원하기 위한 새로운 디지털 하드웨어가 필요합니다. 본 발명에 있어, 소프트웨어 패치 시스템의 또 다른 측면은 소프트웨어를 통해 보다 간편하고 경제적으로 업그레이드함으로써 하드웨어를 자주 변경하지 않도록 하는 것입니다. 또한 Java Virtual Machines 또는 BREW(Binary Runtime Environment for Wirelesss)와 같은 응용 프로그램의 다운로드를 지원하는 본 발명의 소프트웨어 업데이트 시스템을 추가하여 운영 체제에 숨겨져 있는 문제점을 수정할 수 있습니다.
본 발명의 또 다른 측면은 디지털 제품용으로 내장되는 소프트웨어를 여러 섹션으로 분리하여 필요한 섹션만 업데이트하는 것입니다. 이러한 접근 방법은 네트워크 전송에 필요한 자원 사용을 최적화한다는 점에서 종래의 접근 방법보다 이점이 있습니다.
본 발명에 따르면 소프트웨어 섹션을 실행하기 전에 업데이트 소프트웨어를 점검하는 메커니즘이 포함되도록 CPU, MCU 또는 DSP 프로세서의 하드웨어 디자인을 구성할 수도 있습니다. CPU/MCU/DSP는 임베디드 소프트웨어를 실행하면서 동시에 소프트웨어 업데이트 정보를 자동으로 점검하며, 소프트웨어 업데이트를 사용할 수있을 때 업데이트된 코드 주소로 자동으로 점프할 수 있는 방식으로 설계될 수 있습니다.
1.디지털 제품의 임베디드 소프트웨어 업데이트 시스템에 대한 방법과 해당 시스템을 설명합니다. 다음 상세 설명에서는 본 발명에 대한 완전한 이해를 돕기 위한 여러 가지 특정 세부사항에 대한 설명입니다. 그러나 이 분야 종사자라면 이러한 특정 세부사항 중 일부가 없어도 본 발명이 구현될 수 있음을 알 수 있을 것입니다. 본 발명을 이해하는 데 불필요한 장애가 되지 않도록 잘 알려져 있는 구조와 기술에 대해서는 설명하지 않았습니다. 또한 설명 내용을 쉽고 편리하게 참조할 수 있도록 제목을 사용했습니다. 이 문서에서 사용하는 임베디드 소프트웨어는 디지털 제품 운영에 필요한, C/C++/Java/Assembler 또는 기타 소프트웨어 프로그래밍 언어와 CPU/마이크로프로세서 또는 DSP(Digital Signal Processor)의 실행 가능한 기계 코드로 작성된 소프트웨어 프로그램을 의미합니다.
2. 시스템 아키텍처
본 발명의 소프트웨어 업데이트 시스템을 먼저 시스템 아키텍처 측면에서 설명합니다. 도 1은 종래의 간단한 마이크로프로세서 시스템을 보여줍니다. 일반적인 디지털 제품의 마이크로프로세서 시스템은 하나의 CPU(Central Processing Unit)(100), RAM(Random Access Memory)(110), FLASH/ROM 메모리(115) 및 몇몇 주변 장치(120)로 구성될 수 있습니다. FLASH/ROM 메모리(115)에는 하나의 소프트웨어 프로그램이 상주하여 실행 시 CPU(100)가 이 프로그램을 읽습니다. FLASH는 지운 후 블록이라는 메모리 단위로 다시 프로그래밍 할 수 있는, 지속적으로 전원이 공급되는 비휘발성 메모리 유형입니다. ROM은 Read Only Memory의 약어입니다.
도 1의 마이크로프로세서 시스템과 유사하게, 종래의 디지털 제품의 DSP(Digital Signal Processor) 시스템은 도 2와 같이 하나의 DSP 코어(230), RAM(240), FLASH/ROM 메모리(245) 및 몇몇 주변 장치(250)로 구성될 수 있습니다. FLASH/ROM 메모리(45)에는 하나의 소프트웨어 프로그램이 상주하여 실행 시 DSP 코어(30)가 이 프로그램을 읽습니다.
일반 디지털 제품(예: 디지털 셀룰러 전화기)은 일반적으로 하나의 마이크로프로세서 시스템을 포함하며 하나의 DSP 시스템을 포함할 수도 있습니다. 본 발명의 소프트웨어 업데이트 시스템은 디지털 제품의 DSP 시스템 및/또는 마이크로프로세서 시스템의 임베디드 소프트웨어가 상주하도록 구성 또는 조정될 수 있습니다. 본 발명의 한 구체화에 따른 소프트웨어 업데이트 시스템은 디지털 제품에서 구현 시 패치 수신을 위한 하나의 소프트웨어 모듈(302), 패치 프로그래밍을 위한 하나의 소프트웨어 모듈(304), 하나의 패치 데이터베이스(310) 및 패치 정정 핸들러(320)를 포함하도록 구성될 수 있습니다. 도 3은 디지털 제품의 전형적인 소프트웨어 아키텍처의 개략도입니다.
도 3에서 패치 수신 모듈(302)은 소프트웨어 패치 데이터를 수신하기 위한 것입니다. 이 모듈에는 유선 링크 또는 무선 링크에서 데이터를 수신하기 위한 메커니즘, 데이터 오류 감지 메커니즘 및/또는 데이터 보안 점검 메커니즘이 포함될 수 있습니다. 패치 수신 모듈(320)은 패치 데이터를 정확히 수신하여 패치 프로그램밍 모듈(304)로 전달합니다. 패치 프로그래밍 모듈(304)은 패치 데이터베이스(310)에 패치 데이터를 기록합니다. 이 모듈에는 FLASH, NVM, EEPROM 메모리 및/또는 다른 유형의 메모리에 데이터를 기록하기 위한 프로그램이 포함될 수 있습니다. 패치 데이터베이스(310)는 패치 데이터를 보관하기 위한, FLASH 메모리 및/또는 다른 유형의 메모리 내 메모리 영역입니다. 패치 정정 핸들러(320)는 원래 오류 프로그램이 아닌 패치 프로그램을 사용하는 프로세스를 처리합니다. 이 핸들러에는 오류가 있는 원래 소프트웨어 코드 영역에서 패치 프로그램 영역으로 점프하는 메커니즘이 포함될 수 있습니다.
3. 소프트웨어 업데이트 기술
3.1 소프트웨어를 소프트웨어 섹션으로 분리
본 발명의 한 구체화에 따른 소프트웨어 업데이트 시스템을 이용하려면 디지털 제품에 내장된 소프트웨어를 구현하기 전에 임베디드 소프트웨어의 여러 위치를 먼저 결정하여 나중에 이 위치에서 소프트웨어 업데이트를 시작할 수 있도록 해야 합니다. 이 위치는 작은 주소에서 큰 주소의 순서로L1, L2, , Ln으로 표시될 수 있습니다. 여기서n은 총 위치 수입니다.
두 연속 위치 사이의 임베디드 소프트웨어 부분(예:L1L2사이의 부분)은 임베디드 소프트웨어의 소프트웨어 섹션,S1으로 간주됩니다. 임베디드 소프트웨어는 이런 방식으로 작은 주소에서 큰 주소의 순서로 여러 소프트웨어 섹션S1, S2, , Sn으로 효과적으로 분리됩니다. 여기서n은 총 소프트웨어 섹션 수입니다. 마지막 세션SnLn에서 시작하여 임베디드 소프트웨어 끝에서 종료됩니다.
다른 소프트웨어와 마찬가지로 임베디드 소프트웨어 역시 때때로 업데이트 또는 수정해야 합니다. 특정 프로그램 코드를 업데이트해야 하는 경우(예를 들어, 소프트웨어 섹션S2에서), 위치L2에서 시작하는 섹션S2의 임베디드 소프트웨어 실행을 소프트웨어 패치로 지시하여 업데이트할 수 있습니다. 그러면S2의 프로그램 코드를 사용하지 않고 소프트웨어 패치를 사용하여 실행할 수 있습니다. 경우에 따라, 업데이트가 필요한 프로그램 코드가S2에 있더라도L1과 같은 다른 위치에서 업데이트를 시작하여 임베디드 소프트웨어가L1의 소프트웨어 패치로 실행되도록 하는 것이 더 편리할 수도 있습니다. 즉, 특정 상황에서는 임베디드 소프트웨어가 원래 섹션보다 먼저 소프트웨어 패치로 실행되도록 하는 것이 더 바람직할 수 있습니다.
소프트웨어 섹션의 크기는 고정되지 않으며 해당 요구사항에 따라 섹션마다 다를 수 있습니다.L1, L2, , Ln의 위치를 결정하고 임베디드 소프트웨어를 소프트웨어 섹션S1, S2, , Sn으로 나누는 작업은 소프트웨어 기능의 한계, 프로그램 회선 수, CPU/DSP 명령 유형, 소프트웨어 설계 스키마, 하드웨어 설계 스키마, 소프트웨어 수정 요구사항 또는 오류 정정 요구사항을 기반으로 합니다. 이 분야의 종사자들이라면 이 내용을 잘 알고 있을 것입니다.
각 위치L1, L2, , Ln에 업데이트 처리 루틴이 할당되어 소프트웨어 업데이트를 처리합니다. 도 4는 일반적인 소프트웨어 섹션 분리 및 업데이트 처리 루틴 할당 예를 보여주는 개략도입니다. 임베디드 소프트웨어(400)를 준비하기 위해, 소프트웨어(400)의 모든 섹션(401, 402 및 403)의 시작 위치에서 업데이트 처리루틴( 404, 405 및 406)이 섹션에 할당됩니다.
업데이트 처리 루틴은 소프트웨어 업데이트 처리를 수행하는 소프트웨어 루틴입니다. 소프트웨어 섹션(예:S2)에 특정 프로그램 코드를 업데이트하기 위한 소프트웨어 패치가 있는 경우, 위치L2의 업데이트 처리 루틴은 CPU/DSP가 소프트웨어 패치의 시작 주소에서 실행되도록 하고 이 소프트웨어 패치를 실행에 사용합니다. 이 프로세스는 패치의 시작 주소로 점프하기 전에 패치 제어 루틴(도 6에서 자세히 설명함)을 포함할 수도 있습니다. 소프트웨어 섹션S2를 업데이트하기 위한 패치가 없는 경우, 위치L2의 업데이트 처리 루틴이 CPU/DSP가 기존S2프로그램을 사용하여 실행되도록 합니다. 즉, 정상적인 실행에 영향을 주지 않고 이 루틴을 통해 CPU/DSP가 계속 실행됩니다.
업데이트 처리 루틴의 내용은 위치마다 다르거나 동일한 방법으로 설계될 수 있습니다.
3.2 소프트웨어 섹션 기반 소프트웨어 업데이트
소프트웨어 섹션을 기반으로 하는 소프트웨어 업데이트의 구현 및 설계 예가 도 5에 나와 있습니다. 소프트웨어 섹션 K(510)를 업데이트하기 위한 소프트웨어 패치가 있는 경우, 소프트웨어 섹션 K의 업데이트 처리 루틴(505)은 소프트웨어 실행 도중 CPU/DSP 실행이 소프트웨어 섹션 K를 업데이트하기 위한 패치 프로그램(507)의 시작 주소(502)로 506을 점프하도록 지시합니다. 패치 프로그램(507)을 실행하면 CPU/DSP 지시 포인터가 원래 소프트웨어의 예정된 위치로 508을 점프하도록 지시합니다. 이 위치는 일반적으로 소프트웨어 섹션(510)에서업데이트해야 하는 프로그램 코드 바로 뒤입니다. 이런 방식으로 패치 프로그램(507)을 실행하여 소프트웨어 섹션(510)의 모든 버그를 건너뛰게 됩니다.
소프트웨어 섹션을 기반으로 하는 소프트웨어 업데이트 구현 및 설계의 다른 예가 도 6에 나와 있습니다. 소프트웨어 섹션 K(610)를 업데이트하기 위한 소프트웨어 패치가 있는 경우, 소프트웨어 섹션 K의 업데이트 처리 루틴(605)은 CPU/DSP 실행이 패치 제어 루틴(609)으로 606을 점프하도록 지시합니다. 패치 제어 루틴(609)은 패치 프로그램 실행 및/또는 현재 패치 상태와 시스템 매개변수를 기반으로한 패치 프로그램(607)의 시작 주소(602) 판별을 위한 준비 프로세스와 같은 일반 패치 실행 제어를 수행하는 소프트웨어 루틴입니다. 아래에서 설명할 패치 제어 테이블이 한 예입니다. 패치 제어 루틴(609)은 CPU/DSP 실행이 소프트웨어 섹션 K(610)를 업데이트하는 패치 프로그램(607)의 시작 주소(602)로 611을 점프하도록 지시합니다. 이런 방식으로 섹션 K(610)의 원래 프로그램 대신 패치 프로그램(607)이 실행에 사용됩니다. 패치 프로그램을 실행하면 CPU/DSP 지시 포인터가 원래 소프트웨어의 예정된 위치로 608을 점프하도록 지시합니다. 이 위치는 일반적으로 업데이트해야 하는 프로그램 코드 바로 뒤입니다.
앞에서 언급한 패치 제어 테이블은 패치 수신, 패치 프로그래밍 및 패치 신호 프로세스 제어에 사용할 수 있는 정보 목록입니다. 이 정보 목록에는 디지털 제품으로 프로그래밍된 패치의 ID 목록 및/또는 이 패치에 의해 업데이트되는 소프트웨어 섹션의 해당 ID 목록이 포함될 수 있습니다. 이 목록에는 새 패치 저장에 사용할 수 있는 패치 프로그램 영역의 바이트 수와 같은 패치 데이터베이스의 정보나패치 수신, 패치 프로그래밍 및 패치 신호 프로세스를 제어하기 위한 정보가 포함될 수도 있습니다. 패치 제어 테이블은 패치 제어 루틴 또는 디지털 제품 메모리(600) 내 모든 영역에 상주할 수 있습니다.
이 분야 종사자들이 아는 것처럼 도 5와 같이 패치 프로그램(507)의 시작 주소(502)로 직접 점프하는 대신 도 6과 같이 CPU/DSP 지시 포인터가 패치 프로그램(607)의 시작 주소(602)로 점프하도록 지시하기 위한 패치 제어 루틴(608)과 같은 중간 단계를 사용하는 것이 더 유용할 수 있습니다. 이미 업데이트를 위한 패치가 있는 소프트웨어 섹션에 새 패치가 필요한 경우, 기존 패치의 섹션 ID는 패치 제어 루틴(609)이 처리하는 패치 제어 테이블에서 삭제(즉, 0으로 설정)할 수 있으며 다른 패치 ID 및/또는 패치 시작 주소가 아닌 원래 섹션 ID를 사용하여 패치 제어 테이블에 새 패치를 프로그래밍 할 수 있습니다. 이런 방식으로 패치 제어 루틴(609)은 패치 제어 테이블에서 새 패치 프로그램 시작 주소를 판별하고 CPU/DSP 지시 포인터가 새 패치 프로그램으로 점프하도록 지시할 수 있습니다.
패치 프로그램 코드가 상주할 메모리 영역은 임베디드 소프트웨어 코드 영역의 외부에 할당할 수 있으며 임베디드 소프트웨어 코드 영역의 내부에도 이 영역을 할당할 수 있습니다. 예를 들어, FLASH 메모리 내 메모리 영역을 소프트웨어 프로그램의 16진수 0xFF 바이트로 채워지는 데이터 버퍼 또는 데이터 영역으로 예약할 수 있으며, 이 메모리를 임베디드 소프트웨어 코드 영역에 할당하여 16진수 0xFF의 해당 바이트를 패치 프로그램 코드로 변경/대체함으로써 패치 프로그램 코드가 포함되도록 하는 데 사용할 수 있습니다.
3.3 업데이트 처리 루틴 설계
다음 섹션에서는 업데이트 처리 루틴의 구현 및 설계에 사용된 방법론에 대한 설명입니다.
3.3.1 패치 점검 루틴을 사용한 업데이트 처리 루틴 설계
업데이트 처리 루틴의 구현 및 설계의 한 예는 패치 플래그 또는 패치 점검 루틴을 사용하는 것입니다. 이 방식을 사용하면 각 소프트웨어 섹션이 패치 영역에 이 섹션을 업데이트하기 위한 패치가 있는지 여부를 보여주는 패치 점검 루틴 및/또는 해당 패치 플래그를 갖게 됩니다.
패치 영역에 업데이트를 위한 해당 패치가 프로그래밍되어 있지 않은 경우 업데이트 처리 루틴은 다음과 같이 프로그램 설명 언어를 사용하여 표시할 수 있습니다. 이 언어는 C/C++/Java/Assembler 및 기타 소프트웨어 프로그래밍 언어 또는 CPU/마이크로프로세서 및 DSP의 실행 가능 기계 코드로 즉시 변환될 수 있습니다.
______________________________________________
(소프트웨어 섹션의 시작 위치에 있음)
패치 점검 루틴
패치 점검 루틴이 이 섹션의 업데이트를 위한 패치가 있는 것으로 선언하는 경우
{
패치 정정 루틴
}
원래 섹션 코드
______________________________________________
도면에 도시한 바와 같이 위 프로그램에서는 패치 점검 루틴이 사용됩니다. 패치 점검 루틴은 패치 영역에 임베디드 소프트웨어의 이 섹션을 업데이트하기 위한 패치가 있는지 여부를 점검하는 소프트웨어 루틴입니다. 이 루틴은 일부 패치 플래그 또는 시스템 매개변수를 점검하거나 일부 소프트웨어 기능을 사용하여 이 소프트웨어 섹션을 업데이트하기 위한 패치가 있는지 여부를 확인합니다.
패치 정정 루틴은 CPU/마이크로프로세서 또는 DSP가 원래 섹션 코드를 사용하는 대신 패치 프로그램을 사용하도록 지시하는 소프트웨어 루틴입니다. 패치 정정 루틴에는 일부 매개변수 저장 또는 일부 매개변수 및 기능 설정의 수행과 같은 패치 프로그램으로 점프하기 위한 준비 작업에 필요한 사전 프로세스가 포함될 수 있습니다. 패치 정정 루틴에는 CPU/마이크로프로세서 또는 DSP 지시 포인터가 패치 프로그램의 시작 주소를 지시하거나(도 5) 패치 제어 루틴을 지시하도록(도 6) 하는 명령이 포함될 수도 있습니다. 패치 제어 루틴 사용에 따른 이점은 섹션 3.2에서 설명했습니다.
3.3.2 점프하기/분기 명령을 사용한 업데이트 처리 루틴 설계
업데이트 처리 루틴의 구현 및 설계를 위한 다른 예는 점프하기(ARM parlance의 경우 분기) 명령 또는 그와 유사한 CPU/DSP 명령을 사용하는 것입니다. 컴퓨터 프로그래밍에서 잘 알려져 있는 개념인 점프하기는 이 응용 프로그램에서 일반 용어로 사용되며 이는 한 위치에서 다른 위치로의 CPU/DSP 실행 지시를 의미합니다.
패치 영역에 소프트웨어 섹션을 업데이트하기 위한 해당 패치가 프로그래밍되어 있지 않은 경우 업데이트 처리 루틴은 다음과 같이 프로그램 설명 언어를 사용하여 표시할 수 있습니다. 이 언어는 C/C++/Java/Assembler 및 기타 소프트웨어 프로그래밍 언어 또는 CPU/마이크로프로세서 및 DSP의 실행 가능 기계 코드로 즉시 변환될 수 있습니다.
______________________________________________
(프로그래밍된 패치가 없는 경우 소프트웨어 섹션의 시작 위치에 있음)
Lable_O로 점프하기
Label_P: 패치 정정 루틴
Label_O: 원래 섹션 코드
______________________________________________
소프트웨어 섹션을 업데이트하기 위한 해당 패치가 패치 영역에 프로그래밍되어 있지 않은 경우 업데이트 처리 루틴의 첫 번째 명령은 원래 섹션 코드의 시작 주소인 Label_O로 점프하는 것입니다.
소프트웨어 섹션을 업데이트하기 위한 해당 패치가 패치 영역에 프로그래밍되어 있는 경우에는 업데이트 처리 루틴의 첫 번째 명령이 변경되어 CPU/DSP 지시 포인터가 Label_O 대신 Label_P로 점프합니다. 업데이트 처리 루틴은 다음과 같이 프로그램 설명 언어를 사용하여 표시할 수 있습니다. 이 언어는 C/C++/Java/Assembler 및 기타 소프트웨어 프로그래밍 언어 또는 CPU/마이크로프로세서 및 DSP의 실행 가능 기계 코드로 변환될 수 있습니다.
______________________________________________
(이 섹션을 업데이트하기 위한 패치가 있는 경우 소프트웨어 섹션의 시작 위치에 있음)
Label_P로 점프하기
Label_P: 패치 정정 루틴
Label_O: 원래 소프트웨어 코드
______________________________________________
이 경우 CPU/마이크로프로세서 또는 DSP 지시 포인터는 패치 정정 루틴을 지시합니다. 패치 제어 루틴의 설계 스키마는 이전 섹션 3.3.1에서 설명했습니다. FLASH 메모리에서는 “1”을 “0”으로 변경할 수는 있어도 “0”을 “1”로 변경할 수는 없습니다. 따라서 초기 점프 오프셋을 16 진수 0xFFF로 설정하면 패치 프로그래밍 시 오프셋을 줄일 수 있습니다.
3.3.3 직접 점프하기/분기 명령을 사용한 업데이트 처리 루틴 설계
다음은 본 발명의 한 구체화에 따른 업데이트 처리 루틴의 다른 구현 및 설계 예에 대한 설명입니다. 패치 영역에 섹션 업데이트를 위한 해당 패치가 프로그래밍되어 있지 않은 경우 업데이트 처리 루틴은 다음과 같이 프로그램 설명 언어를 사용하여 표시할 수 있습니다. 이 언어는 C/C++/Java/Assembler 및 기타 소프트웨어 프로그래밍 언어 또는 CPU/마이크로프로세서 및 DSP의 실행 가능 기계 코드로 즉시 변환될 수 있습니다.
______________________________________________
(프로그래밍된 패치가 없는 경우 소프트웨어 섹션의 시작 위치에 있음)
Lable_O로 점프하기
Label_O: 원래 섹션 코드
______________________________________________
소프트웨어 섹션을 업데이트하기 위한 해당 패치가 패치 영역에 프로그래밍되어 있지 않은 경우 업데이트 처리 루틴의 첫 번째이자 유일한 명령은 섹션의 원래 코드의 시작 주소인 Label_O로 점프하는 것입니다.
패치 영역에 소프트웨어 섹션의 업데이트를 위한 해당 패치가 프로그래밍되어 있는 경우에는 업데이트 처리 루틴의 첫 번째이자 유일한 명령이 변경되어 CPU/DSP 실행이 패치 정정 루틴의 시작 주소 또는 패치 프로그램의 시작 주소를 지시합니다. 업데이트 처리 루틴은 다음과 같이 프로그램 설명 언어를 사용하여 표시할 수 있습니다. 이 언어는 C/C++/Java/Assembler 및 기타 소프트웨어 프로그래밍 언어 또는 CPU/마이크로프로세서 및 DSP의 실행 가능 기계 코드로 변환될 수 있습니다.
______________________________________________
(이 섹션을 업데이트하기 위한 패치가 있는 경우 소프트웨어 섹션의 시작 위치에 있음)
패치 정정 루틴(또는 패치 시작 주소)으로 점프하기
Label_O: 원래 섹션 코드
______________________________________________
패치 정정 루틴의 설계 스키마에 대해서는 이전 섹션 3.3.1에서 설명했습니다.
다음은 특히 32비트 명령 세트를 사용하는 ARM 모드에서 ARM(Advanced RISC Machines) CPU 어셈블리 언어를 사용하는 예에 대한 설명입니다.
______________________________________________
(프로그래밍된 패치가 없는 경우 소프트웨어 섹션의 시작 위치에 있음)
B Label_O
Label_O: 원래 섹션 코드
______________________________________________
이 예에서는 ARM CPU의 분기 명령 B를 업데이트 처리 루틴으로 사용합니다. 이 명령은 다음 행으로 점프하므로 해당 오프셋은 0xFFFFFF가 됩니다. FLASH 메모리의 한 비트는 FLASH 프로그래밍 시 1에서 0으로 변경될 수 있으므로 이 오프셋 값 0xFFFFFF는 FLASH 프로그래밍 프로세스에서 다른 24비트 값으로 쉽게 변경될 수 있습니다.
이 섹션을 업데이트하기 위한 패치를 수신하면 패치 프로그램이 패치 프로그램 영역에 작성됩니다. B 명령 오프셋은 0xFFFFFF(Label_O으로의 점프하기에 해당)에서 오프셋 값(패치 프로그램 시작 주소로의 점프하기에 해당)으로 변경됩니다.
______________________________________________
(이 섹션을 업데이트하기 위한 패치가 있는 경우 소프트웨어 섹션의 시작 위치에 있음)
B Patch_Start_Address
Label_O: 원래 섹션 코드
______________________________________________
3.4 패치 작업 영역을 기반으로 하는 소프트웨어 업데이트
이 섹션은 소프트웨어 프로그램의 패치 작업을 위한 패치 작업 영역을 할당 또는 예약하는 기술에 대한 설명입니다. 패치 작업 영역은 패치 작업에 사용할 수 있는 데이터 바이트 블록 또는 메모리 영역으로 정의됩니다. 예를 들어, 위 섹션에서 설명한 업데이트 처리 루틴이 상주할 메모리 영역, CPU/DSP 지시 포인터를 패치 프로그램의 시작 주소로 지시하는 점프 명령을 저장하기 위한 메모리 영역, 패치 제어 루틴을 저장하기 위한 메모리 영역 및 패치 프로그램이 상주할 메모리 영역을 의미합니다.
섹션 3.1과 같이 작은 주소에서 큰 주소의 순서로 위치L1, L2, , Ln을 먼저 결정해야 합니다. 이를 통해 임베디드 소프트웨어가 여러 소프트웨어 섹션,S1, S2, , Sn으로 효과적으로 분리됩니다. 패치 작업 영역은 일부 또는 대부분(모두는 아님)의L1, L2, , Ln위치에서 할당 또는 예약됩니다. 일부 패치 작업 영역은 임베디드 소프트웨어의 종료 위치 또는 임베디드 소프트웨어 코드 영역 외부의 메모리 영역 위치에 삽입 또는 예약할 수도 있습니다.
일부 구현에서는 원래의 임베디드 소프트웨어에 직접 메모리 영역을 예약할 수도 있고 이 메모리 영역을 임베디드 소프트웨어를 업데이트하기 위한 패치 작업영역으로 사용할 수도 있습니다. 이 경우, 위에 사용된 할당이라는 용어보다는 임베디드 소프트웨어의 일부 명령에 의한 메모리 영역의 예약이라는 표현이 더 적합합니다.
패치 작업 영역이 업데이트 처리 루틴으로 정의 및 사용되면 위 섹션에서 설명한 대로 임베디드 소프트웨어의 각 소프트웨어 섹션에 배치될 수 있습니다.
다음은 패치 작업 영역을 어셈블러 프로그램에 할당/예약하는 예에 대한 설명입니다. 어셈블러 프로그램에서는 일반적으로 어셈블러 명령에 특정 데이터 영역을 선언하고 이 데이터 영역에 특정 상수 매개변수 또는 데이터 블록이 상주할 수 있습니다. 이 기능을 사용하여 소프트웨어 프로그램에 특정 데이터 영역을 선언하고 특히 소프트웨어 패치 작업에 이 데이터 영역을 사용할 수 있습니다. 디지털 제품에서 FLASH 메모리를 사용하여 소프트웨어 프로그램을 상주시키는 경우 특정 데이터 영역이 0xFF 16진수로 채워지는 것으로 선언할 수도 있습니다. 이 경우 나중에 패치 프로세스를 사용하여 이 0xFF 16진수를 패치 프로그램 코드(예: 패치 정정 루틴의 프로그램 코드, 패치 제어 루틴의 프로그램 코드 또는 소프트웨어 섹션을 업데이트하거나 오류를 수정하기 위한 프로그램 코드)로 쉽게 변경할 수 있습니다. 이는 종래 FLASH 메모리의 컨텐츠를 1에서 0으로는 변경할 수 있어도 0에서 1로는 변경할 수 없다는 사실에 기인한 것입니다. 특히 패치 작업을 위한 패치 작업 영역에 특정 프로그램 코드를 초기에 정의할 수도 있습니다.
CPU가 패치 프로그램 영역에 이 섹션의 업데이트를 위한 패치가 있는 소프트웨어 섹션을 실행하는 경우 CPU 지시 포인터는 패치 프로그램 시작 위치(예: 도 5및 도 6의 각 패치 시작 주소 502 및 602)를 지시해야 합니다. 그러나 점프하기/분기 어셈블러 코드에는 일반적으로 각각 최대 점프하기 범위가 있습니다. 예를 들어, ARM CPU가 THUMB 모드에 있는 경우 분기 어셈블 코드 B의 최대 분기 범위는 2048바이트입니다. 하나의 점프하기/분기 어셈블러 코드로 CPU 지시 포인터를 패치 시작 주소 위치로 이동할 수 없는 경우 긴 점프하기에 여러 점프하기/분기 코드를 사용할 수 있습니다. 예를 들어, ARM CPU가 THUMB 모드에 있는 경우 분기 어셈블 코드 B를 사용할 수 있고 2048바이트보다 긴 점프하기/분기에는 링크를 사용한 긴 분기(Long Branch With Link) 어셈블 코드인 BL을 사용할 수 있습니다. 또한 이러한 여러 점프하기/분기 코드에 대해 패치 작업 영역을 예약해야 합니다. 다음은 이러한 점프하기/분기 코드에 패치 작업 영역을 할당할 때 메모리 공간을 절약할 수 있는 기술에 대한 설명입니다.
먼저 모든 소프트웨어 섹션에 점프하기/분기 명령을 삽입합니다. 예를 들어, ARM CPU가 THUMB 모드에 있는 경우 최대 분기 범위가 2048바이트인 점프하기/분기 어셈블 코드 B를 삽입합니다. 이 점프하기/분기 명령이 다음 명령으로 점프하도록 오프셋을 설정합니다. 이로써 이 점프하기/분기 명령을 사용하지 않아도 CPU 작업의 결과가 원래 코드와 동일해집니다. 이 스키마는 섹션 3.3.3에서 설명했습니다.
패치 작업 영역에는 패치 제어 블록 영역이 포함될 수 있습니다. 패치 제어 블록은 패치 제어 루틴의 기능을 수행하며 보조 점프하기/분기 명령을 포함할 수 있습니다. FLASH 메모리를 사용하는 경우 패치 제어 블록은 0xFF 16진수로 채워지는 것으로 선언될 수 있습니다. 이처럼 패치 프로세스의 FLASH 프로그래밍은 이러한 0xFF 16진수를 프로그램 코드(예: 보조 점프하기/분기 코드)로 쉽게 변경할 수 있습니다. 여러 소프트웨어 섹션에 의한 하나의 패치 제어 블록 공유도 가능합니다.
도 7은 패치 제어 블록이 패치 프로그램 영역으로의 점프하기를 처리하는 방법을 보여줍니다. 짧은 점프하기(706)는 소프트웨어 섹션(710)에서 패치 제어 루틴 기능을 수행하는 패치 제어 블록(709)으로의 실행을 수행합니다. 보조 점프하기(711)는 패치 프로그램(707)의 패치 시작 주소(702)로의 실행을 수행합니다. 패치 프로그램(707)을 실행하면 소프트웨어 섹션(710)의 종료 위치로 다시 점프합니다.
소프트웨어 설명 언어로 작성된 다음 프로그램 예에서는 섹션 A, 섹션 B, 섹션 C 및 섹션 D의 네 소프트웨어 섹션이 하나의 패치 제어 블록을 공유합니다. 이 예에서 섹션 A의 패치 작업 영역은 업데이트 처리 루틴Label_O_A로 점프하기로 정의되고 섹션 B의 패치 작업 영역은 업데이트 처리 루틴Label_O_B로 점프하기로 정의되며 섹션 C의 패치 작업 영역은 패치 작업 블록 및 업데이트 처리 루틴Label_O_C로 점프하기로 사용되는 16진수 0Xff로 채워지는N바이트의 작업 영역으로 정의되고 섹션 C의 패치 작업 영역은 업데이트 처리 루틴Label_O_D로 점프하기로 정의됩니다.
______________________________________________
(섹션 A를 업데이트하기 위한 패치가 없는 경우 섹션 A의 시작 위치에 있음)
Label_O_A로 점프하기
Label_O_A: 원래 섹션 A 코드
(섹션 B를 업데이트하기 위한 패치가 없는 경우 섹션 B의 시작 위치에 있음)
Label_O_B로 점프하기
Label_O_B: 원래 섹션 B 코드
(섹션 C를 업데이트하기 위한 패치가 없는 경우 섹션 C의 시작 위치에 있음)
Label_O_C로 점프하기
패치 제어 블록으로 사용되는, 16진수 0Xff로 채워질 N바이트의 데이터 블록 영역을 선언하십시오.
(0xFF, 0xFF, , 0xFF)
Label_O_C: 원래 섹션 C 코드
(섹션 D를 업데이트하기 위한 패치가 없는 경우 섹션 D의 시작 위치에 있음)
Label_O_D로 점프하기
Label_O_D: 원래 섹션 D 코드
______________________________________________
소프트웨어 패치를 수신하면 패치 프로세스가 해당 소프트웨어 섹션에서 점프하기/분기 명령의 오프셋을 변경하는 FLASH 프로그래밍 프로세스를 시작하고 해당 패치 제어 블록의 일부 바이트를 0xFF에서 보조 점프하기/분기 명령 또는 섹션 3.3.1에서 설명한 패치 제어 루틴 기능을 수행하는 일부 DSP/CPU 명령 코드로 변경합니다. 예를 들어, 섹션 A를 업데이트하기 위한 패치를 수신하면 패치 제어 블록의 처음 몇 바이트가 섹션 A의 패치 정정 루틴의 명령으로 변경됩니다. 또한 섹션D를 업데이트하기 위한 패치를 수신하면 패치 제어 블록의 다음 몇 바이트가 섹션 D의 패치 제어 루틴의 명령으로 변경됩니다. 이러한 패치 정정 루틴은 CPU/DSP 지시 포인터를 패치 프로그램의 시작 주소로 지시합니다.
__________________________________________
(섹션 A를 업데이트하기 위한 패치가 있는 경우 섹션 A의 시작 위치에 있음)
Label_P_A로 점프하기
Label_O_A: 원래 섹션 A 코드
(섹션 B를 업데이트하기 위한 패치가 없는 경우 섹션 B의 시작 위치에 있음)
Label_O_B로 점프하기
Label_O_B: 원래 섹션 B 코드
(섹션 C를 업데이트하기 위한 패치가 없는 경우 섹션 C의 시작 위치에 있음)
Label_O_C로 점프하기
패치 제어 블록으로 사용되는 N바이트의 데이터 블록 영역
(
Label_P_A: 섹션 A의 패치 정정 루틴
Label_P_D: 섹션 D의 패치 정정 루틴
기타 나머지 바이트0xFF, 0xFF, , 0xFF
)
Label_O_C: 원래 섹션 C 코드
(섹션 D에 대한 패치가 있는 경우 섹션 D의 시작 위치에 있음)
Label_P_D로 점프하기
Label_O_D: 원래 섹션 D 코드
__________________________________________
다음은 패치 제어 블록의 크기를 줄이는 기술에 대한 설명입니다. FLASH 메모리를 아껴야 하거나 메모리 공간 사용에 일부 제약이 있는 경우 FLASH 메모리 사용량을 최대한 줄여야 합니다. 패치 작업에 대한 FLASH 메모리 사용량을 줄일 수 있는 한 가지 방법은 패치 제어 블록의 크기를 줄이는 것입니다. 위의 예에서는 섹션 A, 섹션 B, 섹션 C 및 섹션 D의 네 소프트웨어 섹션이 패치 제어 블록을 공유합니다. 그러나 이러한 네 섹션이 해당 패치를 동시에 사용할 가능성이 매우 적은 경우, 패치 제어 블록의 크기를 세 개의 소프트웨어 섹션 또는 두 개의 소프트웨어 섹션만 처리할 수 있는 공간으로 설계할 수 있습니다.
3.5 패치 작업 루틴 할당 시 컴파일
원래의 임베디드 소프트웨어에 업데이트 처리 루틴 또는 패치 작업 영역을 할당한 후 소프트웨어를 컴파일할 때 몇 가지 복잡한 문제가 발생할 수 있습니다.
다음은 컴파일 시 프로그램 단어 정렬 문제가 발생하지 않도록 하는 기술에 대한 설명입니다. 앞에서 설명한 대로 각 소프트웨어 섹션에 대해 패치 영역에 이 섹션을 업데이트하기 위한 패치가 있는지 여부를 점검하기 위한 업데이트 처리 루틴을 할당할 수 있습니다. 어셈블러 코드 사이의 여러 메모리 공간 블록을 보조 점프하기/분기 명령을 포함시키기 위한 패치 작업 영역으로 사용할 수 있는 매개변수 데이터 영역으로 선언하는 방식으로 프로그램 코드에 패치 제어 블록을 할당할 수도 있습니다. 그러나 코드 삽입으로 컴파일 시 몇 가지 복잡한 문제가 발생할 수 있습니다. 예를 들어, 프로그램 컴파일 도중 일부 CPU가 프로그램 단어 정렬을 요청할 수 있습니다. 예를 들어, ARM CPU를 THUMB 모드에서 사용하는 경우 어셈블러 코드 LDR에 4바이트씩 나눌 수 있는 오프셋 주소가 필요할 수 있습니다. 따라서 패치 작업을 위해 패치 제어 블록 및 점프하기/분기 명령을 삽입하는 경우, LDR의 오프셋 주소가 4바이트씩 나뉠 수 있도록 삽입하는 바이트를 조정해야 합니다. 즉, 패치 작업을 위해 삽입된 바이트를 조정함으로써 컴파일 시 프로그램 단어 정렬을 요청하지 않도록 할 수 있습니다.
다음은 컴파일 시 범위 초과 오프셋 문제를 막을 수 있는 기술에 대한 설명입니다. 예를 들어, ARM CPU를 THUMB 모드에서 사용하는 경우 어셈블러 코드 LDR을 사용하여 LDR 코드의 2048바이트 미만인 오프셋에서 일부 데이터를 로드할 수 있습니다. LDR과 오프셋 주소 사이에 패치 작업을 위해 삽입되는 일부 코드에 로드해야 할 데이터가 있는 경우 LDR 코드의 오프셋 값이 2048바이트보다 클 수 있어 이로 인해 컴파일 문제가 발생합니다. 이러한 문제를 피하기 위한 한 가지 기술은 로드해야 하는 데이터를 일부 어셈블리 코드(예: LDR 코드)에 가까운 위치로 이동시켜 오프셋 값이 2048바이트 미만이 되도록 하는 것입니다. 즉, 일부 어셈블러 코드(예: LDR)에 의해 로드되어야 하는 데이터를, 데이터를 로드하는 어셈블러 코드(예: LDR)에 가까운 위치로 이동 또는 복사함으로써 일부 어셈블러 코드에 대한 컴파일 시 범위 초과 문제를 막을 수 있습니다.
이와 유사하게, 일부 패치 프로세스 관련 바이트를 임베디드 소프트웨어에할당하면 몇몇 원래 프로그램 코드(예: ARM 어셈블러 코드의 B 명령)가 범위를 벗어날 수 있습니다. 예를 들어 B가 점프하기에 목적지가 너무 멀어질 수 있습니다. 이 때 B와 목적지 사이에 다른 점프하기/분기 명령을 삽입하면 컴파일 시 범위 초과 문제점를 막을 수 있습니다. 즉, 긴 점프하기를 위해 두 배를 점프할 수 있습니다.
3.6 새 패치를 사용한 패치 프로그램 업데이트
디지털 제품이 수신된 패치를 프로그래밍한 후 디지털 제품은 원래의 코드를 사용해서 실행하지 않고 패치 코드를 사용해서 실행하기 시작합니다. 그러나 프로그래밍된 패치 프로그램에도 여전히 몇 가지 문제점이 있으며 일정 시간이 경과하면 패치 프로그램도 업데이트해야 합니다. 다음은 패치 프로그램을 업데이트하는 기술에 대한 설명입니다.
디지털 제품에 프로그래밍된 패치를 업데이트하려면 패치를 업데이트하기 위한 새 패치를 작성해야 합니다. 이 기능을 지원하려면 패치를 설계할 때 미래 새 패치의 패치 작업을 위한 일부 코드 공간을 예약하거나 이전 섹션에서 설명한 소프트웨어 섹션 업데이트와 유사하게 패치 프로그램에 업데이트 처리 루틴을 삽입해야 합니다. 이 경우 CPU/DSP가 업데이트할 새 패치가 있는 이전 패치의 소프트웨어 섹션을 실행하면 업데이트 처리 루틴에 의해 CPU/DSP 포인터가 이전 패치 프로그램을 사용하지 않고 새 패치 프로그램을 사용하도록 지시합니다.
소프트웨어 프로그램의 소프트웨어 섹션을 업데이트하는 패치를 설계하기 위해 이 출원서에 설명된 모든 기술은 다른 기존 패치를 업데이트하기 위한 패치를설계하는 데 사용할 수 있습니다.
3.7 컴파일러 최적화 프로세스의 영향을 받지 않으려면
임베디드 소프트웨어는 C/C++/Java/Assembler 또는 기타 프로그래밍 언어로 작성할 수 있습니다. 소프트웨어 프로그램이 Assembler 코드가 아닌 C/C++/Java 또는 기타 소프트웨어 프로그래밍 언어로 작성된 경우 해당 프로그램은 소프트웨어 컴파일러 도구를 사용하여 어셈블로 코드로 변환될 수 있습니다. 소프트웨어 컴파일러 도구는 소프트웨어 프로그램에 대한 최적화 프로세스를 수행하고 C/C++/Java 또는 기타 소프트웨어 프로그래밍 언어로 작성된 프로그램을 개체 코드 또는 어셈블러 코드로 변환하는 컴파일 작업 시 원래 프로그램을 변경/최적화할 수 있습니다. 이 최적화로 인해 일부 프로그램 코드가 사라질 수도 있습니다. 따라서 업데이트 처리 루틴을 C/C++/Java 프로그램에 직접 할당하는 경우 컴파일러 최적화 프로세스에서 업데이트 처리 루틴을 변경 또는 제거할 수 있습니다. 그러나 컴파일 후에는 일반적으로 어셈블러 코드를 개체 코드로 변환하는 단계에 코드 최적화 프로세스가 없으며, 소프트웨어 링커 도구를 사용하여 개체 코드를 실행 가능한 최종 기계 코드로 링크하는 단계에도 코드 최적화 프로세스는 없습니다.
C/C++/Java 및 기타 소프트웨어 프로그래밍 언어로 작성된 소프트웨어 프로그램은 다음 두 가지 방법으로 컴파일할 수 있습니다.
컴파일 방법 1 : 소프트웨어 컴파일러 도구를 사용하여 C/C++/Java 언어로 작성된 프로그램 코드를 개체 코드로 변환합니다(최적화 프로세스에서). 그런 다음 소프트웨어 링커 도구를 사용해서, 실행 가능한 기계 코드를 생성하도록 개체 코드를 링크합니다.
컴파일 방법 2 : 소프트웨어 컴파일러 도구를 사용하여 C/C++/Java 언어로 작성된 프로그램 코드를 어셈블러 코드로 변환합니다(최적화 프로세스에서). 이어서 소프트웨어 어셈블러 도구를 사용하여 어셈블러 코드를 개체 코드로 변환합니다. 그런 다음 소프트웨어 링커 도구를 사용해서, 실행 가능한 기계 코드를 생성하도록 개체 코드를 링크합니다.
일반적으로, 컴파일 방법 1에 의해 생성된 최종 실행 가능 기계 코드는 컴파일 방법 2에 의해 생성된 최종 실행 가능 기계 코드와 동일합니다. 소프트웨어 프로그램을 어셈블러 언어로 직접 작성하는 경우 소프트웨어 어셈블러 도구를 사용하여 프로그램을 개체 코드로 변환할 수 있습니다. 그런 다음 소프트웨어 링커 도구를 사용해서, 실행 가능한 기계 코드를 생성하도록 개체 코드를 링크합니다.
업데이트 처리 루틴 및 패치 작업 영역을 소프트웨어 프로그램에 할당하기 위해 여기에서 설명하는 기술은 컴파일 방법 2를 사용하는 것입니다. 컴파일 방법 2에서 소프트웨어 도구를 사용하여 C/C++/Java 언어로 작성된 프로그램 코드를 어셈블러 코드로 변환하면(최적화 프로세스에서) 업데이트 처리 루틴, 패치 제어 루틴 및 패치 작업 영역을 어셈블러 코드에 삽입할 수 있습니다. 어셈블러 코드를 개체 코드로 변환하거나 실행 가능 기계 코드를 생성할 개체 코드를 링크하는 컴파일 프로세스에는 소프트웨어 코드를 변경 또는 최적화할 수 있는 최적화 프로세스가 없으므로, 패치 루틴 및 패치 프로그램 공간은 변경되지 않습니다.
다른 방법은 C/C++/Java 또는 어셈블러 언어로 작성된 프로그램 코드를 개체코드로 변환한 다음 업데이트 처리 루틴, 패치 제어 루틴 또는 패치 작업 영역을 개체 코드에 삽입하는 것입니다. 그런 다음 소프트웨어 링커 도구를 사용하여 실행 가능한 기계 코드를 생성하도록 개체 코드를 링크합니다.
3.8 소프트웨어 도구로 패치 작업 루틴 할당
본 발명의 또 다른 측면은 앞에서 언급한 업데이트 처리 루틴 및 패치 작업 영역을 셀룰러 전화기와 같은 디지털 제품의 임베디드 소프트웨어에 할당 또는 삽입하는 방법론입니다. 디지털 제품은 생산 설비에서 제조되므로 시장에 출시되기 전에 임베디드 소프트웨어로 프로그래밍되어 작동할 수 있어야 합니다. 업데이트 처리 루틴 및/또는 패치 작업 영역은 디지털 제품이 임베디드 소프트웨어를 사용해서 프로그래밍 되기 전에 해당 디지털 제품의 임베디드 소프트웨어에 할당되어야 합니다.
업데이트 처리 루틴 및 패치 작업 영역을 디지털 제품의 임베디드 소프트웨어에 효과적으로 할당하기 위해 본 발명의 다른 측면이 자동 할당을 위한 할당 소프트웨어 도구를 제공합니다.
할당 도구의 한 구체화는 할당 프로세스를 임베디드 소프트웨어의 컴파일 프로세스와 통합합니다. 예를 들어, 소스 코드를 컴파일하기 전에 할당 도구를 자동으로 시작하여 할당을 종료할 수 있습니다. 이를 통해 소프트웨어 개발자가 할당 프로세스에 대해 걱정하지 않고 자신의 고유한 코드 개발 업무에만 집중할 수 있게 됩니다.
예를 들어, C/C++/Java 코드 대신 어셈블러 코드에 대해 할당 프로세스의 한구체화를 수행할 수도 있습니다. 이 경우, C/C++/Java 코드가 먼저 해당 어셈블러 코드로 컴파일된 후 업데이트 처리 루틴 및 패치 작업 영역을 삽입하는 할당 프로세스가 생성된 어셈블러 코드에 대해 수행됩니다. 그런 다음 어셈블러 코드가 개체 코드로 컴파일됩니다. 이런 방식으로 C/C++/Java 코드 컴파일러의 최적화 프로세스가 업데이트 처리 루틴 및 패치 작업 영역에 영향을 주지 않게 됩니다.
다음은 할당 소프트웨어 도구의 두 가지 예에 대한 설명입니다. 이 분야 종사자들은 본 발명에서 설명하는 내용을 기반으로 직접 할당 도구를 개발할 수 있습니다.
[예 A]
소프트웨어 코드의 N개의 행(또는 바이트) 모두에 대해 할당 도구는 업데이트 처리 루틴 및/또는 패치 작업 영역의 블록을 소프트웨어 코드에 삽입합니다. 여기서 N은 사전 정의된 숫자이며, 소프트웨어 코드는 C/C++/Java/Assembler 및 기타 소프트웨어 프로그래밍 언어 또는 CPU/마이크로프로세서 및 DSP의 실행 가능 기계 코드로 작성될 수 있습니다. 할당 도구는 필요 시 해당 섹션 ID에 따라 업데이트 처리 루틴의 매개변수 및 레이블을 변경할 수도 있습니다. 할당은 임베디드 소프트웨어의 소스 코드를 포함하는 원래 파일에서 직접 수행됩니다.
[예 B]
일부 응용 프로그램의 경우 디지털 제품의 임베디드 소프트웨어에는 임베디드 소프트웨어의 소스 코드를 포함하는 파일이 두 개 이상 있습니다. 할당 도구는 각 파일에 대해 원래 파일과 동일한 소프트웨어 코드가 들어 있는 다른 파일을 생성합니다. 즉, 파일 사본을 만듭니다. 그런 다음 할당 도구가 원래 파일을 사용하지 않고 업데이트 처리 루틴 및/또는 패치 작업 영역을 중복 파일에 삽입합니다. 즉, 생성된 파일의 소프트웨어 코드의 N개의 행(또는 바이트) 모두에 대해 할당 도구는 업데이트 처리 루틴 및/또는 패치 작업 영역의 블록을 소프트웨어 코드에 삽입합니다. 여기서 N은 사전 정의된 숫자이며, 소프트웨어 코드는 C/C++/Java/Assembler 및 기타 소프트웨어 프로그래밍 언어 또는 CPU/마이크로프로세서 및 DSP의 실행 가능 기계 코드로 작성될 수 있습니다. 할당 도구는 필요 시 해당 섹션 ID에 따라 업데이트 처리 루틴의 매개변수 및 레이블을 변경할 수도 있습니다.
4. 패치 전송 및 패치 수신
4.1 패치 데이터 전송
먼저 패치 서버(다음에 설명)에서 디지털 제품으로 소프트웨어 패치를 전송하는 방법에 대한 설명입니다. 특정 통신 레이어를 사용하여 패치 데이터를 전송하는 예가 도 8에 설명되어 있습니다. 전송 설계 스키마 및 요구에 따라 패치 데이터 전송을 제어하기 위한 세 개의 레이어 중 하나 또는 두 개만 포함하도록 구현하거나 회로 데이터 전송 또는 패킷 데이터 전송과 같은 데이터 전송 채널 또는 전송 경로를 사용하도록 구현할 수 있습니다. 또한 패치 데이터를 이러한 채널 및 전송 경로에 두어 음성 또는 비디오 전송 채널을 사용하여 패치 데이터를 디지털 제품으로 전송하도록 구현하는 것도 가능합니다.
이 분야의 종사자들이라면 패치 서버가 기존 통신 인프라 또는 채널(예: 무선 링크 또는 유선 연결)을 사용하여 하나 이상의 디지털 제품으로 소프트웨어 패치를 디스패치 또는 전송하는 것이 바람직하다는 것을 알 수 있을 것입니다. 패치 서버는 해당 작업에 대한 임의의 자동화 레벨을 가질 수 있습니다. 전송 시, 디지털 제품은 도 3에 나와 있는 패치 수신 모듈(302)을 사용하여 패치 데이터를 수신합니다.
디지털 제품은 패치 데이터 전송 중 또는 그 후에 인식할 패치 서버로 신호(또는 메시지)를 전송할 수 있습니다. 다른 예는 디지털 제품이 패치 서버가 아닌 패치 응답 메시지 수집기로 신호(메시지)를 전송하는 것입니다. 패치 응답 메시지 수집기는 해당 신호와 데이터를 패치 서버로 전송합니다. 패치 응답 메시지 수집기는 디지털 제품에서 응답 메시지를 수집하는 메시지 수신 프로그램입니다. 이 수집기와 패치 서버의 위치는 서로 다를 수 있습니다.
TIA/EIA-95 및 CDMA2000 표준을 기반으로 한 CDMA 기술을 사용하는 디지털 셀룰러 전화기의 경우,데이터 버스트 메시지를 사용하여 패치 데이터를 전송할 수 있습니다.데이터 버스트 메시지를 사용하는 한 예는 TIA/EIA-637 표준을 기반으로 하는 SMS 메시지 전송을 사용하는 것입니다. 다음은 SMS 메시지를 사용하여 패치 데이터를 전송하는 방법에 대한 예입니다. 데이터 전송 분야 종사자들이라면 다른 신호 메시지를 사용하여 직접 전송 메커니즘을 즉시 고안할 수 있을 것입니다. SMS 메시지 전송의 통신 프로토콜(TIA/EIA-637)에는 이미 SMS를 패치 전송을 위한 하위 레이어로 사용하는 오류 감지 프로세스가 있으므로 디지털 제품은 오류가 거의 없는 패치 데이터 패킷을 수신하게 됩니다.
다음은 도 8을 통해 본 발명의 한 구체화에 따른 패치 전송을 위한 전형적인 링크 레이어(820)에 대한 설명입니다. 링크 레이어(820)는 전송 오류를 감지하고 오류 발생 시 재전송을 수행함으로써 패치 신호 메시지(800)와 패치 데이터(810)를 안전하게 전송합니다. 오류 감지는 CRC(Cyclic Redundancy Codes), 검사 합계 또는 이 분야 종사자들이 쉽게 구현할 수 있는 다른 스키마를 기반으로 할 수 있습니다. 링크 레이어(820)에는 보안 점검 메커니즘이 포함될 수도 있습니다. 예를 들어, 패치 데이터를 전송하기 전에 패치 서버가 일부 암호화 알고리즘을 사용하여 패치 데이터를 암호화한 다음 디지털 제품으로 패치 데이터를 전송할 수 있습니다. 디지털 제품이 패치를 수신하면 패치 데이터에 대한 암호 해제 알고리즘을 수행하여 수신된 패치 데이터의 정확도를 점검합니다.
SMS 메시지 사용 예에서, SMS 메시지에 의해 전송된 패치 데이터 패킷이 수신되면 이 메시지가 패치 데이터 패킷의 정확도를 점검하기 위한 CRC 점검 프로세스 및 메시지 암호 해제 프로세스가 수행되는 암호 해제 모듈로 전달됩니다.
디지털 제품이 패치 데이터를 올바르게 수신하지 못하는 경우 패치 서버는 디지털 제품으로 패치 데이터를 다시 전송합니다. 예를 들어, 패치 재전송은 시간 기준 메커니즘을 기반으로 할 수 있습니다. 패치 서버에는 패치 재전송을 위한 타이머가 있습니다. 패치 서버가 디지털 제품으로 패치를 전송하면 타이머가 시작됩니다. 타이머 시간이 종료될 때 패치 서버가 디지털 제품에서 해당 응답 메시지(예: 패치 상태 보고서)를 수신하지 못하는 경우 패치 서버는 패치 데이터 패킷을 디지털 제품으로 재전송합니다. 패치 서버가 사전 정의된 횟수만큼 패치 재전송을수행한 후 디지털 제품에서 응답 메시지를 수신하지 못하는 경우 패치 서버가 잠시 재전송을 중단할 수 있습니다. 이 분야 종사자들은 본 발명에 대한 설명을 통해 패치 전송 및 재전송 시간 설정을 위한 다른 방법을 쉽게 구현할 수 있을 것입니다.
SMS 메시지를 사용하는 이전 예에서는패치 상태 보고서라는하나의 패치 신호 메시지가 있었습니다. 이 메시지는 디지털 제품에서 패치 서버로 전송되며 디지털 제품의 현재 패치 상태 정보가 들어 있습니다. 디지털 제품이 오류 없이 패치를 수신하고 다음과 같은 경우 리버스 SMS 메시지를 사용하여 패치 서버로패치 상태 보고서를 전송합니다.
(a) 디지털 제품이 수신 패치가 이미 프로그래밍된 것을 발견하는 경우
(b) 디지털 제품이 패치 프로그래밍을 종료하는 경우
4.2 패치 데이터 작성
이제 도 9를 통해 패치 데이터(940)의 작성에 대해 자세하게 설명합니다. 패치 데이터(940)는 여러 패치 데이터 패킷으로 분리되어야 하며 릴레이 레이어의 한 메시지가 하나의 패치 데이터 패킷을 전송할 수 있습니다.
SMS 메시지 사용 예에서 하나의 SMS 메시지가 하나의 패치 데이터 패킷을 전송할 수 있습니다. 다른 일반 SMS 메시지와 패치 SMS 메시지를 식별하기 위해, 패치 전송 전에 패치 서버가 패치 SMS 메시지의 사용자 데이터 중 첫 번째k문자(여기서k는 0에서 임의의 양수로 지정할 수 있는 사전 정의된 숫자)를k문자 Magic-Word로 설정할 수 있습니다. Magic-Word 다음에는 패치 데이터 패킷이 SMS 메시지에 삽입됩니다.
도 9는 패치 데이터와 패치 데이터 패킷 사이의 관계를 보여줍니다. 패치 데이터 패킷(950)은 패킷 오버헤드 필드(945) 및 페이로드 데이터 필드(947)로 분리될 수 있습니다. 패킷 오버헤드(945)의 설계 예에는 다음 정보가 포함될 수 있습니다.
(a) 패치 ID
(b) 현재 패킷 번호
(c) 마지막 패킷 번호
이 분야 종사자들은 본 발명에 대한 설명을 참조로 패치 데이터 패킷의 전송을 위한 다른 설계 패킷 오버헤드 방법을 쉽게 구현할 수 있다는 것을 알 수 있을 것입니다.
패치 데이터 패킷(950)의 페이로드 데이터(947, 955 및 965)는 패치 데이터(940)의 전체 또는 일부를 포함할 수 있습니다.
패치 데이터 패킷(950)은 전송 전에 일부 암호화 알고리즘을 사용하여 패치 서버에 의해 암호화될 수 있습니다. 패치 서버는 다음과 같이 정적 및/또는 동적 키를 사용하여 소프트웨어 패치 데이터를 암호화할 수 있습니다. 전자의 예로는 CPU ID, MAC 레이어 주소 및 기타 무선 통신 서비스 관련 매개변수(예: 디렉토리 번호 ESN 및 TMSI 임시 식별)가 있으며 후자의 예로는 위치 또는 타이머나 사용자의 프로파일을 기반으로 하는 변경 가능한 키가 있습니다.
4.3 패치 데이터 처리
패치 데이터 패킷(950)을 전달할 수 있는 메시지를 수신하면 디지털 제품이메시지에 실제 패치 데이터 패킷이 포함되어 있는지 여부를 확인합니다. 디지털 제품은 수신 메시지에 대한 오류 감지 및/또는 데이터 암호 해제를 수행할 수도 있습니다. 모든 필요한 패치 데이터 패킷을 수신하고 나면 디지털 제품이 패킷의 페이로드 데이터(947, 955 및 965)에서 해당 패치 데이터를 작성합니다.
SMS 메시지의 사용 예에서, 디지털 제품은 SMS 메시지를 수신한 후 메시지에 사전 정의된 첫 번째k문자가 Magic-Word와 일치하는지 여부를 확인합니다. 일치하지 않는 경우, SMS 메시지는 패치 데이터 패킷이 아닌 일반 SMS 메시지로 간주됩니다.
일치하는 경우 디지털 제품은 메시지 데이터의 암호를 해제하여 메시지의 정확도를 확인합니다. 암호 해제 프로세스에서 메시지 데이터가 올바른 것으로 나타나는 경우 메시지 데이터는 패치 데이터 패킷으로 간주되며 이 데이터를 포함시키는 데 버퍼가 사용될 수도 있습니다. 그렇지 않은 경우 SMS 메시지는 일반 SMS 메시지로 간주됩니다.
수신 패치 데이터 패킷의 패치 ID, 현재 패치 번호 및 마지막 패치 번호의 정보 항목을 기반으로 하는 필요한 모든 패치 데이터 패킷이 수신되면 디지털 제품이 이 패킷에서 해당 패치 데이터를 작성합니다.
패치 데이터(940)에는 다음과 같은 항목이 포함될 수 있습니다.
(a) 수신 패치가 디지털 제품용인지 여부를 식별하기 위한 항목
- ESN(Electronically Serial Number)
- MIN(Mobile Identification Number) 또는 IMSI(International MobileStation Identity)
- 제조 ID
- 제품 모델 번호
- 소프트웨어 버전 번호
- CPU ID
- MAC (Medium Access Control) 레이어 주소
- 디지털 제품을 식별하는 데 사용할 수 있는 기타 항목
- 가입자를 식별하는 데 사용할 수 있는 기타 항목.
(b) 다음과 같은 패치 프로그래밍용 항목
- 일부 패치 데이터를 나타내기 위한 제어 정보는 FLASH 메모리에 기록되어야 하며 일부 패치 데이터는 NVM(Non Volatile Memory) 메모리 및/또는 EEPROM(Electrically Erasable Programmable Read-Only Memory) 메모리에 기록되어야 합니다.
- 메모리 주소, 섹터 할당 정보 또는 디지털 제품의 FLASH/NVM/EEROM 메모리의 다른 주소 정보 유형일 수 있는 패치 데이터의 주소 정보
- 소프트웨어 업데이트에 사용할 수 있는 패치 프로그램 코드
- 패치 프로그램 코드 해석 방법에 대한 정보. (예: 패치 프로그램 코드에 사용되는 C/C++/Java/Assembler 및 기타 소프트웨어 프로그래밍 언어 또는 CPU/마이크로프로세서나 DSP의 실행 가능 기계 코드 등의 프로그래밍 언어 정보)
- FLASH 메모리, NVM 및/또는 EEPROM 메모리의 일부 데이터 영역 또는 데이터 테이블을 업데이트하는 데 사용할 수 있는 패치 데이터
- 이 패치로 업데이트되는 소프트웨어 섹션의 소프트웨어 섹션 ID
- 패치 프로그램 및 데이터 영역 업데이트를 설명하기 위한 기타 정보
(c) 다음과 같은 패치 프로그래밍 사후 프로세스를 위한 항목
- 재설정 플래그
- 패치 서버로 응답 메시지를 전송하기 위한 제어 플래그
- 패치 프로그래밍의 사후 프로세스에 대한 기타 제어 신호 및 데이터
수신 패치 데이터를 작성하면 필요 시 디지털 제품이, 작성된 패치 데이터에 대한 암호 해제 프로세스를 수행해야 합니다. 이는 패치 데이터에 대한 보안 점검을 강화하기 위한 것입니다. 패치 서버 측 또한 전송할 패치 데이터 패킷으로 패치 데이터를 분리하기 전에 이 데이터에 대한 암호화를 수행해야 합니다.
패치 프로그램 코드는 C/C++/Java/Assembler 및 기타 소프트웨어 프로그래밍 언어 또는 CPU/마이크로프로세서나 DSP의 실행 가능 기계 코드로 작성할 수 있습니다. 패치 데이터에는 패치 프로그램 코드에 대한 몇 가지 해석 정보가 포함될 수 있습니다. 수신한 패치 프로그램 코드는 몇 가지 해석 정보나 규칙에 따라 다른 형식으로 해석하거나 변환할 수 있습니다. 일부 구현에는 수신 패치 프로그램을 한 형식에서 다른 형식으로 변환하는 해석자의 소프트웨어 모듈이 포함될 수 있습니다. 일부 구현에서는 CPU/DSP가 패치 프로그램을 사용할 때 패치 프로그램이 CPU/DSP 실행 가능 기계 코드로 해석 또는 변환될 수도 있습니다.
패치 프로그램에는 임베디드 소프트웨어의 원래 프로그램 대체로 사용할 소프트웨어 업데이트 정보가 포함됩니다. 패치 시작 주소에서 시작되도록 패치 프로그램을 작성할 수도 있습니다. 패치 프로그램이 끝날 때 CPU/DSP가 패치 코드 영역에서 원래 임베디드 소프트웨어의 사전 정의된 위치로 다시 점프하도록 하는 몇 가지 명령이 있을 수 있습니다. 그러나 이 사전 정의된 위치는 건너뛰어야 하는 오류 코드의 끝 부분이거나 원래 오류 코드를 포함하는 해당 소프트웨어 섹션의 끝부분입니다.
패치 데이터는FLASH 메모리, NVM 및/또는 EEPROM 메모리의 데이터 영역을 업데이트하는 정보를 포함할 수도 있습니다. 예를 들어, 패치 데이터는 디지털 제품의 NVM 메모리에 이전 데이터 테이블을 대체하는 새 데이터 테이블을 포함할 수 있습니다.
디지털 제품은 특정 정보 항목(예: ESN, 제조 ID, 제품 모델 번호 및 소프트웨어 버전)이 디지털 제품에 저장된 항목과 일치하는지 확인할 수 있습니다. 일치하지 않는 경우 디지털 제품은 패치 데이터를 무시하거나 해당 메시지를 SMS 메시지 사용 예의 일반 SMS 메시지로 간주할 수 있습니다. 일치하는 경우 디지털 제품은 수신 패치 데이터가 디지털 제품의 메모리로 프로그래밍 되었는지 여부를 확인할 수 있습니다. 프로그래밍 되지 않은 경우 디지털 제품은 수신 패치 데이터를 프로그래밍 하기 시작합니다. 또는 디지털 제품이 패치 서버로 패치 응답 메시지를 전송하고 패치 프로세스를 종료할 수 있습니다.
5. 패치 프로그래밍
패치 프로그래밍에는 FLASH 메모리의 해당 패치 영역에 패치 데이터를 쓰거나 NVM/EEPROM 메모리에 새 매개변수를 쓰는 작업이 포함됩니다. 패치 프로그래밍은 디지털 제품을 사용하지 않을 때 수행하는 것이 바람직합니다. NVM/EEPROM 메모리로의 새 매개변수 작성은 NVM/EEPROM 메모리에 대한 일부 정규 데이터 대체 프로세스를 사용하여 수행할 수 있습니다. 그러나 특히 디지털 제품이 FLASH 메모리를 읽는 경우 FLASH 메모리에 데이터를 쓰려면 경우에 따라 추가 처리가 필요할 수도 있습니다. 실시간(on-the-fly) 디지털 제품에 대한 패치 프로그램을 수행하기 위해 RAM 메모리에 FLASH를 프로그래밍 하는 기술을 본 발명의 한 구체화를 통해 설명합니다.
5.1 RAM 메모리를 사용한 FLASH 프로그래밍
FLASH 메모리에 데이터를 쓰는 소프트웨어 루틴은 RAM 메모리에 저장할 수 있습니다. 이 분야 종사자들이라면 알 수 있듯이 RAM 메모리에 소프트웨어 루틴을 저장할 수 있는 방법은 여러 가지가 있습니다. 예를 들어, FLASH에 데이터를 쓰는 소프트웨어 루틴은 FLASH 프로그래밍 전에 소프트웨어 루틴에 의해 RAM 메모리로 복사될 수 있습니다. 다른 예는 임베디드 소프트웨어를 컴파일할 때 컴파일러가 FLASH 프로그래밍 루틴을 RAM 메모리로 할당하도록 지시함으로써 컴파일러가 RAM 메모리로 해당 루틴을 자동으로 할당하도록 하는 것입니다. RAM 메모리의 유형은 CPU/DSP 코어를 포함하는 칩 내부의 RAM/SRAM 메모리 또는 CPU/DSP를 포함하는 칩 외부의 RAM 메모리입니다. FLASH 메모리에 패치 관련 데이터를 기록해야 하는 경우 FLASH 프로그래밍을 위한 소프트웨어 루틴은 RAM 메모리에서 실행할 수 있습니다. 이 루틴은 해당 FLASH 주소에 데이터 바이트를 써서 FLASH 상태 값을 읽고 데이터쓰기의 정확도 및 완성 여부를 확인합니다. FLASH 프로그래밍 기능 작업은 최상위 우선순위 레벨에서 설정되는 것이 바람직하며 실행을 시작할 때 먼저 모든 CPU/DSP 인터럽트를 사용할 수 없도록 하여 실행 시 다른 모든 소프트웨어 작업 및 모든 CPU/DSP 인터럽트가 중지되고 대기하도록 하는 것이 바람직합니다.
다른 방법은 인터럽트 핸들러에서 FLASH 프로그래밍 루틴을 실행하는 것으로 루틴 실행이 시작되면 먼저 다른 모든 인터럽트를 사용할 수 없도록 하여 실행 시 모든 소프트웨어 작업 및 CPU/DSP 인터럽트 루틴이 중지되고 대기하도록 하는 것이 바람직합니다.
FLASH 프로그래밍 도중 다른 소프트웨어 작업과 인터럽트 루틴의 영향을 받지 않도록 하기 위한 다른 방법은 FLASH 프로그래밍 루틴을 시작하기 전에 FLASH 프로그래밍 또는 소프트웨어 패치 프로세스와 관련되지 않은 소프트웨어 작업/스레드를 중지하고 소프트웨어 패치 프로세스의 FLASH 프로그래밍과 관련되지 않은 인터럽트 루틴을 사용하지 못하도록 하는 것입니다.
5.2 패치 프로그래밍 프로세스
도 10은 패치 프로그래밍 프로세스를 여러 하위 상태로 분리할 수 있는 예를 보여줍니다. 디지털 제품은 수신 패치 데이터를 디지털 제품의 FLASH 메모리, NVM 및/또는 EEPROM 메모리에 기록합니다.
FLASH 메모리, NVM 및/또는 EEPROM 메모리의 데이터 영역 또는 데이터 테이블을 업데이트하기 위해 패치 데이터를 사용하는 경우 디지털 제품은 FLASH 메모리, NVM 및/또는 EEPROM 메모리의 해당 주소에 데이터를 기록합니다.
일부 소프트웨어 섹션의 프로그램 코드를 업데이트하기 위해 패치 데이터를 사용하는 경우 디지털 제품은 FLASH 메모리의 해당 주소에 패치 프로그램 코드를 기록합니다.
그러면 디지털 제품이 패치 제어 테이블(1020) 또는 몇 가지 종류의 패치 데이터베이스에 패치 식별 정보를 기록할 수 있습니다. 패치 식별 정보에는 패치 주소, 패치 ID 및 소프트웨어 섹션 ID 등에 대한 정보가 포함될 수 있습니다.
그 다음에는 디지털 제품이 섹션 상태 프로그래밍(1030)의 다음 단계로 이동합니다. 앞에서 설명한 대로 소프트웨어 섹션의 업데이트 처리 루틴은 업데이트 처리 루틴을 설계하는 스키마에 따라 한 개 또는 두 개의 점프 명령 또는 패치 플래그를 점검할 수 있는 패치 점검 루틴을 포함할 수 있습니다. 패치 프로그램이 프로그래밍 되고 업데이트 처리 루틴이 패치 플래그를 사용하는 경우 해당 패치 플래그는 패치 존재를 반영하도록 변경됩니다. 업데이트 처리 루틴이 점프 명령을 사용하는 경우 해당 점프 오프셋은 CPU/DSP 지시 포인터가 해당 패치 시작 주소로 점프하도록 변경됩니다. 패치 제어 블록 및/또는 패치 작업 영역의 일부 데이터 바이트는 FLASH 프로그래밍 루틴에 의해 변경되어야 할 수도 있습니다. 프로그래밍된 패치가 없는 상태에서 패치가 프로그래밍된 상태로의 업데이트 처리 루틴에 대한 세부 변경 사항과 패치 제어 블록의 변경 사항은 이전 섹션에서 설명했습니다.
업데이트 처리 루틴에서의 핵심 점프 오프셋 또는 패치 플래그 변경을 위한 프로그래밍은 마지막에 수행하여 패치 프로그램이 중지되더라도 디지털 제품이 오작동하지 않도록 해야 합니다. 예를 들어, 섹션 3.4에서 이전에 설명한 섹션 A의업데이트 처리 루틴을 변경하려면 디지털 제품이 먼저Label_P_A에서섹션 A의 패치 정정 루틴의 명령으로패치 제어 블록의 데이터 바이트를 변경합니다. 그런 다음 점프 명령의 오프셋을 수정하여Label_O_A로의 점프하기Label_P_A로의 점프하기로 변경합니다. 이런 방식으로, 원래 코드가 아닌 패치 프로그램을 사용하도록 전환하는 작업은 모든 프로그래밍 프로세스가 완료된 경우에만 수행됩니다.
패치 프로그래밍이 완료되면 디지털 제품이 일부 사후 프로세스(예: 패치 서버로 패치 상태 메시지 전송 및/또는 필요한 경우 시스템 재설정 수행)를 수행합니다. 일반적인 SMS 메시지 사용 시 디지털 제품은 다음과 같은 사후 프로세스를 수행할 수 있습니다.
디지털 제품은 SMS 메시지를 통해 패치 서버로 패치 상태 보고서를 전송합니다. 패치 상태 보고서에는 터미널 정보 및 현재 패치 상태가 포함됩니다.
그런 다음 패치 데이터의 재설정 플래그가 설정되면 디지털 제품이 시스템 재설정을 수행합니다.
6. 패치 서버
다음은 도 11을 통해 일반적인 패치 서버(1100)에 대한 설명입니다. 패치 서버(1100)는 하나의 패치 데이터베이스(1130), 하나의 패치 생성기(1110) 및 하나의 패치 전송 제어기(1120)로 구성하는 것이 바람직합니다.
패치 데이터베이스(1130)는 각 디지털 제품과 연관된 패치 정보를 저장합니다. 이 데이터베이스에는 또한 다음 항목이 저장됩니다.
(a) 제조 ID, (b) 제품 모델 번호, (c) 소프트웨어 버전 번호, (d) 소프트웨어 섹션 ID, (e) 패치 ID, (f) CPU ID, (g) MAC (Medium Access Control) 레이어 주소, (h) 디지털 제품을 식별하는 데 사용할 수 있는 기타 항목, (i) 가입자 식별에 사용할 수 있는 기타 항목, (j) 패치 주소 정보, (k) 재설정 플래그 정보, (l) 패치 프로그램 코드, (m) 패치 프로그램 코드 해석 방법에 대한 정보 (예: 패치 프로그램 코드에 사용되는 C/C++/Java/Assembler 및 기타 소프트웨어 프로그래밍 언어 또는 CPU/마이크로프로세서나 DSP의 실행 가능 기계 코드 등의 프로그래밍 언어 정보), (n) 디지털 제품의 데이터 메모리 영역(NVM/EEPROM)을 업데이트하기 위한 데이터 매개변수
패치 서버가 디지털 제품으로 패치를 전송하려고 하면 패치 생성기(1110)가 패치 데이터베이스(1130)에 저장된 데이터를 기반으로 해당 패치 데이터를 생성합니다. 패치 생성기(1110)는 패치 데이터를 여러 섹션으로 분리하고 단일 패치 데이터 패킷이 패치 데이터를 전송할 수 없을 때 전송할 수 있도록 패치 데이터 패킷에 각 섹션을 배치합니다.
패치 전송 제어기(1120)는 패치 데이터 패킷을 디지털 제품으로 안전하게 전송합니다. 이와 관련된 일반적인 설계 예에는 패치 재전송을 위한 타이머가 포함되며 해당 설계 세부사항은 다음과 같습니다.
패치 서버가 디지털 제품으로 패치를 전송하면 타이머가 시작됩니다. 타이머 시간이 종료될 때 패치 서버가 디지털 제품에서 해당 응답 메시지(예: 패치 상태 보고서)를 수신하지 못하는 경우 패치 서버는 패치 데이터 패킷을 디지털 제품으로 재전송합니다. 패치 서버가 사전 정의된 횟수만큼 패치 재전송을 수행했을 때 디지털 제품에서 응답 메시지를 수신하지 못하는 경우 패치 서버는 잠시 재전송을 중단하거나 타이머를 완전히 중단시켜 로그 파일에 응답 부족을 기록할 수 있습니다.
디지털 제품에서 응답 메시지(예: 패치 상태 보고서)를 수신하면 패치 서버가 패치 재전송 타이머를 중지하고 패치 데이터베이스에서 디지털 제품의 패치 상태를 업데이트합니다.
다음은 SMS 메시지를 통해 패치 서버에서 디지털 제품으로 소프트웨어 패치가 전송되는 방식을 보여주는 일반적인 설계 예에 대한 설명입니다. 이 설계 예는 도 12를 통해 설명합니다.
이 설계 예에서 소프트웨어가 내장된 디지털 제품은 셀룰러 전화기(1250)입니다. 패치 서버 하드웨어는 컴퓨터(1200) 및 SMS 메시지를 수신할 수 있는 무선 모뎀(1210)에 의해 구현됩니다. 이 컴퓨터는 패치 데이터 및 해당 패치 SMS 메시지를 생성한 다음 인터넷(1205)을 통해 디지털 제품(1250)에 무선 서비스를 제공하는 서비스 제공업체의 메시지 서버(1240)로 메시지를 전송합니다. 메시지 서버로의 메시지 전달은 SMTP(Simple Mail Transfer Protocol)와 TCP/IP를 사용하는 일반 전자 우편 전송 방법을 기반으로 할 수 있습니다. 서비스 제공업체의 메시지 서버(1240)는 패치 SMS 메시지를 일반 SMS 메시지(1225) 형태로 기준 스테이션(1220)에 전송합니다. 그런 다음 마지막으로 기준 스테이션(1220)이 SMS 메시지(1225)를 전송하는 데이터 버스트 메시지와 같은 일부 에어 메시지를 통해 해당 셀룰러 전화기(1250)로 메시지(1225)를 전송합니다.
패치 서버의 무선 모뎀(1210)은 패치 서버의 컴퓨터(1200)에 연결됩니다. 무선 모뎀은 디지털 제품(1250)에서 응답 메시지(1215)를 수신하고 컴퓨터(1200)로 응답 메시지(1215)를 전송합니다. 컴퓨터(1200)는 응답 메시지(1215)에 의해 전송된 정보를 기반으로 패치 상태를 확인합니다.
이 문서에서는 바람직한 구체화를 참조하여 발명 내용을 설명하지만 이 분야의 종사자라면 본 발명의 범위 내에서 이 문서에 설명된 내용을 대체할 수 있는 다른 출원이 제기될 수 있다는 사실을 이해할 것입니다. 따라서 본 발명은 아래 포함된 청구항으로만 제한되어야 합니다.
약어 용어집
ARQ.Automatic Repeat reQuest(자동 반복 요청)
CPU. Central Processing Unit(중앙 처리 장치)
CRC.Cyclic Redundancy Codes(주기적 중복 검사)
DSP.Digital Signal Processor(디지털 신호 프로세서)
EEPROM.Electrically Erasable Programmable Read-Only Memory(전기적으로 삭제할 수 있는 프로그래밍 가능 읽기 전용 메모리)
ESN.Electronic Serial Number(전자 일련 번호).
FLASH.지운 후 블록이라는 메모리 단위로 다시 프로그래밍 할 수 있는, 지속적으로 전원이 공급되는 비휘발성 메모리 유형
MAC.Media Access Control(미디어 액세스 제어)
MCU.Micro Processor Unit(마이크로 프로세서 유닛)
NVM.Non Volatile Memory(비휘발성 메모리)
패치 데이터.패치 서버에서 디지털 제품으로 전송된 전체 패치 데이터
패치 데이터 패킷.패치 데이터 전송 단위. 하나의 패치는 여러 패치 데이터 패킷으로 분리되어 전송될 수 있습니다. 하나의 패치 데이터 패킷이 하나의 메시지에 의해 전달될 수도 있습니다.
패치 프로그램.소프트웨어 업데이트에 사용되는 소프트웨어 프로그램으로, 기존 임베디드 소프트웨어의 하나 또는 여러 프로그램 코드를 업데이트하기 위한 하나 이상의 CPU/DSP 명령으로 구성될 수 있습니다.
패치 프로그래밍.패치 데이터를 메모리에 기록하는 프로세스
패치 서버.패치를 지원하는 디지털 제품으로 패치 데이터를 전송하는 위한 하나 이상의 서버,
PCMCIA.Personal Computer Memory Card International Association(PC용 메모리 카드 국제 협회),PDA.Personal Digital Assistant(휴대용 단말기)
RAM.Random Access Memory(랜덤 액세스 메모리)
ROM.Read-Only Memory(읽기 전용 메모리)
SMS.Short Message Service(휴대폰 문자 서비스)
본 발명의 바람직한 실시례가 특정 용어들을 사용하여 기술되어 왔지만, 그러한 기술은 오로지 설명을 하기 위한 것이며, 다음의 청구범위의 기술적 사상 및 범위로부터 이탈되지 않고서 여러 가지 변경 및 변화가 가해질 수 있는 것으로 이해되어져야 한다.

Claims (57)

  1. 소프트웨어 패치에 의한 현장에서의 수정을 위해 디지털 제품의 임베디드 소프트웨어의 작동을 준비하는 방법. 다음 단계로 구성됩니다.
    a) 사전 정의된 기준을 기반으로 상기 임베디드 소프트웨어에 대한 여러 삽입 위치를 결정하는 단계. 각 삽입 위치는 임베디드 소프트웨어의 한 섹션을 정의함
    b) 상기 여러 삽입 위치에서 여러 업데이트 처리 루틴을 할당하는 단계. 각 업데이트 처리 루틴은 상기 섹션에 대한 소프트웨어 패치가 존재할 때 해당 섹션에서 상기 임베디드 소프트웨어의 실행을 수정하도록 조정됨
    c) 상기 디지털 제품에서 상기 소프트웨어 패치에 사용할 메모리 영역을 결정하는 단계
    d) 상기 여러 업데이트 처리 루틴을 사용하여 임베디드 소프트웨어를 상기 디지털 제품의 임베디드 소프트웨어 코드 영역으로 로드하는 단계.
  2. 제 1항에 있어서,
    상기 메모리 영역이 상기 임베디드 소프트웨어 코드 영역의 내부에 위치하는 방법.
  3. 제 1항에 있어서,
    상기 메모리 영역이 상기 임베디드 소프트웨어 코드 영역의 외부에 위치하는 방법.
  4. 제 1항에 있어서,
    삽입 위치를 결정하는 위의 단계가 다음 중 최소 한 가지 방법을 기반으로 하는 방법
    상기 임베디드 소프트웨어의 프로그램 소프트웨어 라인 수 기반
    상기 임베디드 소프트웨어의 기능 단위 기반
    상기 임베디드 소프트웨어의 명령 유형 기반
    상기 디지털 제품의 소프트웨어 설계 스키마 기반
    상기 디지털 제품의 하드웨어 설계 스키마 기반
    상기 임베디드 소프트웨어의 수정 스키마 기반
    상기 임베디드 소프트웨어의 오류 정정 스키마 기반
  5. 제 1항에 있어서,
    여러 업데이트 처리 루틴을 할당하는 위의 단계가 다음 중 최소 한 가지 방법론을 기반으로 하는 방법
    a) 상기 임베디드 소프트웨어를 실행 가능 기계 코드로 컴파일하기 전에 상기 임베디드 소프트웨어에 상기 업데이트 처리 루틴 할당
    b) 상기 임베디드 소프트웨어를 해당 어셈블리 프로그램 코드로 컴파일하고상기 어셈블리 프로그램 코드에 상기 업데이트 처리 루틴을 할당한 다음 상기 어셈블리 프로그램 코드를 실행 가능 기계 코드로 컴파일
    c) 상기 임베디드 소프트웨어를 해당 개체 코드로 컴파일하고 상기 개체 코드에 상기 업데이트 처리 루틴을 할당한 다음 상기 개체 코드를 실행 가능 기계 코드로 컴파일
    d) 상기 임베디드 소프트웨어를 실행 가능 기계 코드로 컴파일하고 상기 업데이트 처리 루틴을 상기 실행 가능 기계 코드에 할당.
  6. 제 1항에 있어서,
    여러 업데이트 처리 루틴을 할당하는 위의 단계가 상기 임베디드 소프트웨어의 프로그램 명령 중 최소 하나를 수정하는 단계를 더 포함하여 구성되는 방법.
  7. 제 5항에 있어서,
    여러 업데이트 처리 루틴을 할당하는 위의 단계가 상기 임베디드 소프트웨어의 프로그램 명령 중 최소 하나를 수정하는 단계를 더 포함하여 구성되는 방법.
  8. 제 1항에 있어서,
    상기 업데이트 처리 루틴 중 최소 하나가 다음과 같이 조정되는 방법
    상기 임베디드 소프트웨어의 섹션을 업데이트하기 위한 소프트웨어 패치가 있는 경우 실행할 상기 소프트웨어 패치의 위치로 상기 임베디드 소프트웨어의 실행 지시
    해당 소프트웨어 패치가 없는 경우 실행할 상기 임베디드 소프트웨어의 상기 섹션 사용
  9. 제 4항에 있어서,
    상기 업데이트 처리 루틴 중 최소 하나가 다음과 같이 조정되는 방법
    상기 임베디드 소프트웨어의 섹션을 업데이트하기 위한 소프트웨어 패치가 있는 경우 실행할 상기 소프트웨어 패치의 위치로 상기 임베디드 소프트웨어의 실행 지시
    해당 소프트웨어 패치가 없는 경우 실행할 상기 임베디드 소프트웨어의 상기 섹션 사용
  10. 제 1항에 있어서,
    상기 업데이트 처리 루틴 중 최소 하나가 다음과 같이 조정되는 방법
    상기 임베디드 소프트웨어의 섹션을 업데이트하기 위한 소프트웨어 패치가 있는지 여부 확인
    해당 소프트웨어 패치가 있는 경우 실행할 상기 소프트웨어 패치의 위치로 상기 임베디드 소프트웨어의 실행 지시
    해당 소프트웨어 패치가 없는 경우 실행할 상기 임베디드 소프트웨어의 상기 섹션 사용
  11. 제 4항에 있어서,
    상기 업데이트 처리 루틴 중 최소 하나가 다음과 같이 조정되는 방법
    상기 임베디드 소프트웨어의 섹션을 업데이트하기 위한 소프트웨어 패치가 있는지 여부 확인
    해당 소프트웨어 패치가 있는 경우 실행할 상기 소프트웨어 패치의 위치로 상기 임베디드 소프트웨어의 실행 지시
    해당 소프트웨어 패치가 없는 경우 실행할 상기 임베디드 소프트웨어의 상기 섹션 사용
  12. 제 8항에 있어서,
    상기 소프트웨어 패치 위치로의 상기 임베디드 소프트웨어의 실행을 지시하기 위한 위의 단계가 다음 단계를 더 포함하여 구성되는 방법
    패치 제어 루틴의 첫 번째 위치로 상기 임베디드 소프트웨어의 실행을 지시한 다음 상기 패치 제어 루틴을 기반으로 상기 소프트웨어 패치의 두 번째 위치로 상기 임베디드 소프트웨어의 실행을 지시하고, 실행할 상기 소프트웨어 패치 사용
  13. 제 10항에 있어서,
    상기 소프트웨어 패치 위치로의 상기 임베디드 소프트웨어의 실행을 지시하기 위한 위의 단계가 다음 단계를 더 포함하여 구성되는 방법
    패치 제어 루틴의 첫 번째 위치로 상기 임베디드 소프트웨어의 실행을 지시한 다음 상기 패치 제어 루틴을 기반으로 상기 소프트웨어 패치의 두 번째 위치로 상기 임베디드 소프트웨어의 실행을 지시하고, 실행할 상기 소프트웨어 패치 사용
  14. 제 1항에 있어서,
    상기 여러 업데이트 처리 루틴이 다음 중 최소 하나를 포함하여 구성되는 방법
    상기 임베디드 소프트웨어 섹션을 업데이트하기 위한 소프트웨어 패치가 있는 경우 실행할 상기 소프트웨어 패치 위치로 상기 임베디드 소프트웨어의 실행을 지시하고, 소프트웨어 패치가 없는 경우 상기 실행할 임베디드 소프트웨어의 상기 섹션을 사용하도록 조정되는 첫 번째 루틴
    상기 임베디드 소프트웨어 섹션을 업데이트하기 위한 소프트웨어 패치가 있는지 여부를 점검하고 해당 소프트웨어 패치가 있는 경우 실행할 상기 소프트웨어 패치 위치로 상기 임베디드 소프트웨어의 실행을 지시하고, 해당 소프트웨어 패치가 없는 경우 상기 실행할 임베디드 소프트웨어의 상기 섹션을 사용하도록 조정되는 두 번째 루틴
    상기 임베디드 소프트웨어 섹션을 업데이트하기 위한 소프트웨어 패치가 있는지 여부를 점검하고 해당 소프트웨어 패치가 있는 경우 패치 제어 루틴의 첫 번째 위치로 상기 임베디드 소프트웨어의 실행을 지시한 다음 실행할 상기 패치 제어 루틴을 기반으로 상기 소프트웨어 패치의 두 번째 위치로 상기 임베디드 소프트웨어의 실행을 지시하고, 해당 소프트웨어 패치가 없는 경우 상기 실행할 임베디드 소프트웨어의 상기 섹션을 사용하도록 조정되는 세 번째 루틴
    상기 임베디드 소프트웨어 섹션을 업데이트하기 위한 소프트웨어 패치가 있는 경우 실행할 상기 패치 제어 루틴을 기반으로 패치 제어 루틴의 첫 번째 위치로의 상기 임베디드 소프트웨어의 실행을 지시하고 소프트웨어 패치의 두 번째 위치로 상기 임베디드 소프트웨어의 실행을 지시하며, 해당 소프트웨어 패치가 없는 경우 실행할 상기 임베디드 소프트웨어의 상기 섹션을 사용하도록 조정되는 네 번째 루틴
  15. 제 1항에 있어서,
    다음 단계를 더 포함하여 구성되는 방법
    e) 사전 정의된 기능을 제공하도록 조정된 소프트웨어 패치 생성
    f) 통신 링크를 통해 상기 디지털 제품으로 상기 소프트웨어 패치 전송
    g) 상기 디지털 제품에 의해 상기 소프트웨어 패치 수신
    h) 상기 메모리 영역에 상기 소프트웨어 패치 작성
  16. 제 8항에 있어서,
    다음 단계를 더 포함하여 구성되는 방법
    e) 사전 정의된 기능을 제공하도록 조정된 소프트웨어 패치 생성
    f) 통신 링크를 통해 상기 디지털 제품으로 상기 소프트웨어 패치 전송
    g) 상기 디지털 제품에 의해 상기 소프트웨어 패치 수신
    h) 상기 메모리 영역에 상기 소프트웨어 패치 작성
  17. 제 10항에 있어서,
    다음 단계를 더 포함하여 구성되는 방법
    e) 사전 정의된 기능을 제공하도록 조정된 소프트웨어 패치 생성
    f) 통신 링크를 통해 상기 디지털 제품으로 상기 소프트웨어 패치 전송
    g) 상기 디지털 제품에 의해 상기 소프트웨어 패치 수신
    h) 상기 메모리 영역에 상기 소프트웨어 패치 작성
  18. 제 12항에 있어서,
    다음 단계를 더 포함하여 구성되는 방법
    e) 사전 정의된 기능을 제공하도록 조정된 소프트웨어 패치 생성
    f) 통신 링크를 통해 상기 디지털 제품으로 상기 소프트웨어 패치 전송
    g) 상기 디지털 제품에 의해 상기 소프트웨어 패치 수신
    h) 상기 메모리 영역에 상기 소프트웨어 패치 작성
  19. 제 15항에 있어서,
    상기 소프트웨어 패치를 사용하여 상기 임베디드 소프트웨어에서 상기 업데이트 처리 루틴의 최소 한 부분을 대체하는 단계를 더 포함하여 구성되는 방법
  20. 제 19항에 있어서,
    상기 부분이 사전 정의된 점프 오프셋인 방법
  21. 제 15항에 있어서,
    상기 생성 단계가 다음 기능 중 최소 하나를 갖는 패치 서버를 사용하는 단계를 포함하여 구성되는 방법
    상기 소프트웨어 패치 생성 처리
    사전 정의된 암호화 알고리즘으로 상기 소프트웨어 패치 암호화 처리
  22. 제 15항에 있어서,
    상기 전송 단계가 다음 기능 중 최소 하나를 갖는 패치 서버를 사용하는 단계를 포함하여 구성되는 방법
    상기 소프트웨어 패치 전송 처리
    상기 디지털 제품에서 최소 하나의 메시지 수신 처리
    상기 소프트웨어 패치의 재전송 처리
  23. 제 22항에 있어서,
    다음 중 최소 한 가지 경우에 최소 하나의 메시지를 상기 디지털 제품에서 상기 패치 서버로 전송하는 단계를 더 포함하여 구성되는 방법
    상기 디지털 제품으로 상기 소프트웨어 패치를 수신한 후
    상기 소프트웨어 패치를 상기 메모리 영역에 작성한 후
  24. 제 1항에 있어서,
    상기 소프트웨어 패치에 다음 중 최소 하나가 포함되는 방법
    제조 ID
    제품 모델 번호
    소프트웨어 버전 번호
    소프트웨어 섹션 ID
    패치 ID
    CPU ID
    MAC 레이어 주소
    패치 주소 정보
    상기 임베디드 소프트웨어를 업데이트하기 위한 패치 프로그램
    패치 프로그램 해석 방법에 대한 정보
    재설정 플래그 정보
    패치 프로그래밍의 사후 프로세스에 사용할 수 있는 정보 항목
    디지털 제품을 식별하는 데 사용할 수 있는 정보 항목
    가입자를 식별하는 데 사용할 수 있는 정보 항목
    상기 디지털 제품의 데이터 영역을 업데이트하기 위한 데이터 매개변수
  25. 소프트웨어 패치에 의한 수정을 위해 디지털 제품에 임베디드 소프트웨어의 작동을 준비하는 방법으로서 다음 단계를 포함하여 구성됩니다.
    a) 사전 정의된 기준을 기반으로 상기 임베디드 소프트웨어에 대한 여러 삽입 위치를 결정하는 단계. 상기 두 삽입 위치는 상기 임베디드 소프트웨어의 두 섹션을 정의함
    b) 상기 임베디드 소프트웨어에 여러 패치 작업 영역을 할당하는 단계
    c) 선택적으로 두 번째 컨텐츠로 변경할 수 있는 첫 번째 컨텐츠로 상기 패치 작업 영역을 설정하는 단계
    d) 상기 디지털 제품으로 상기 여러 패치 작업 영역이 있는 상기 임베디드 소프트웨어를 로드하는 단계
  26. 제 25항에 있어서,
    상기 할당 단계가 다음 단계를 더 포함하여 구성되는 방법
    상기 임베디드 소프트웨어의 상기 삽입 위치에서 상기 패치 작업 영역을 할당하는 단계
  27. 제 25항에 있어서,
    최소 하나의 패치 작업 영역을 상기 임베디드 소프트웨어 코드 영역 외부의 사전 정의된 메모리 영역에 할당하는 단계를 더 포함하여 구성되는 방법
  28. 제 26항에 있어서,
    최소 하나의 패치 작업 영역을 상기 임베디드 소프트웨어 코드 영역 외부의 사전 정의된 메모리 영역에 할당하는 단계를 더 포함하여 구성되는 방법
  29. 제 25항에 있어서,
    상기 할당 단계가 다음 단계를 더 포함하여 구성되는 방법
    상기 임베디드 소프트웨어의 프로그램 명령을 사용하여 상기 패치 작업 영역으로 사용할 메모리 영역을 상기 임베디드 소프트웨어에 예약하는 단계
  30. 제 26항에 있어서,
    상기 할당 단계가 다음 단계를 더 포함하여 구성되는 방법
    상기 임베디드 소프트웨어의 프로그램 명령을 사용하여 상기 패치 작업 영역으로 사용할 메모리 영역을 상기 임베디드 소프트웨어에 예약하는 단계
  31. 제 27항에 있어서,
    상기 할당 단계가 다음 단계를 더 포함하여 구성되는 방법
    상기 임베디드 소프트웨어의 프로그램 명령을 사용하여 상기 패치 작업 영역으로 사용할 메모리 영역을 상기 임베디드 소프트웨어에 예약하는 단계
  32. 제 25항에 있어서,
    삽입 위치를 결정하는 위의 단계가 다음 중 최소 한 가지 방법을 기반으로 하는 방법
    상기 임베디드 소프트웨어의 프로그램 소프트웨어 라인 수 기반
    상기 임베디드 소프트웨어의 기능 단위 기반
    상기 임베디드 소프트웨어의 명령 유형 기반
    상기 디지털 제품의 사전 정의 소프트웨어 설계 스키마 기반
    상기 디지털 제품의 사전 정의 하드웨어 설계 스키마 기반
    상기 임베디드 소프트웨어의 사전 정의 수정 스키마 기반
    상기 임베디드 소프트웨어의 사전 정의 오류 정정 스키마 기반
  33. 제 25항에 있어서,
    상기 할당 단계가 상기 임베디드 소프트웨어의 프로그램 명령 중 최소 하나를 수정하는 단계를 더 포함하여 구성되는 방법
  34. 제 25항에 있어서,
    상기 패치 작업 영역이 다음 중 최소 하나를 포함하여 구성되는 방법
    상기 임베디드 소프트웨어의 섹션을 업데이트하기 위한 소프트웨어 패치가 있는 경우 실행할 상기 소프트웨어 패치 위치로 상기 임베디드 소프트웨어의 실행을 지시하고, 해당 소프트웨어 패치가 없는 경우 상기 실행할 임베디드 소프트웨어의 상기 섹션을 사용하도록 조정되는 첫 번째 업데이트 처리 루틴
    상기 임베디드 소프트웨어의 섹션을 업데이트하기 위한 소프트웨어 패치가 있는지 여부를 점검하고 해당 소프트웨어 패치가 있는 경우 실행할 상기 소프트웨어 패치 위치로 상기 임베디드 소프트웨어의 실행을 지시하고, 해당 소프트웨어 패치가 없는 경우 상기 실행할 임베디드 소프트웨어의 상기 섹션을 사용하도록 조정되는 두 번째 업데이트 처리 루틴
    상기 임베디드 소프트웨어의 섹션을 업데이트하기 위한 소프트웨어 패치가 있는지 여부를 점검하고 해당 소프트웨어 패치가 있는 경우 패치 제어 루틴의 첫 번째 위치로 상기 임베디드 소프트웨어의 실행을 지시한 다음 실행할 상기 패치 제어 루틴을 기반으로 상기 소프트웨어 패치의 두 번째 위치로 상기 임베디드 소프트웨어의 실행을 지시하고, 해당 소프트웨어 패치가 없는 경우 상기 실행할 임베디드 소프트웨어의 상기 섹션을 사용하도록 조정되는 세 번째 업데이트 처리 루틴
    상기 임베디드 소프트웨어의 섹션을 업데이트하기 위한 소프트웨어 패치가 있는 경우 실행할 상기 패치 제어 루틴을 기반으로 패치 제어 루틴의 첫 번째 위치로의 상기 임베디드 소프트웨어의 실행을 지시하고 소프트웨어 패치의 두 번째 위치로 상기 임베디드 소프트웨어의 실행을 지시하며, 해당 소프트웨어 패치가 없는 경우 실행할 상기 임베디드 소프트웨어의 상기 섹션을 사용하도록 조정되는 네 번째 업데이트 처리 루틴
    소프트웨어 패치 존재 여부를 점검하고 해당 섹션에 대한 상기 임베디드 소프트웨어의 실행을 실행할 상기 소프트웨어 패치로 점프하도록 수정하는 다섯 번째업데이트 처리 루틴
    상기 소프트웨어 패치가 있는 경우 해당 섹션에 대한 상기 임베디드 소프트웨어의 실행을 수정하고, 상기 소프트웨어 패치가 없는 경우 상기 섹션으로 점프하도록 조정되는 점프 명령
    상기 점프 명령에서 사용할 다른 점프 오프셋 값으로 선택적으로 변경할 수 있는 점프 오프셋 값
    상기 소프트웨어 패치로 점프하도록 조정되는 패치 제어 루틴
    상기 임베디드 소프트웨어의 실행을 수정하도록 조정되는 패치 프로그램
    패치 정정 루틴으로 선택적으로 변경할 수 있는 패치 제어 블록
    상기 임베디드 소프트웨어의 실행을 수정하는 데 사용되는 사전 정의 컨텐츠로 설정되는 첫 번째 메모리 영역
    상기 임베디드 소프트웨어의 실행을 수정하는 데 사용되는 매개변수로 변경할 수 있는 사전 정의 컨텐츠로 설정되는 두 번째 메모리 영역
    상기 임베디드 소프트웨어의 실행을 수정하는 데 사용되는 소프트웨어 프로그램으로 변경할 수 있는 사전 정의 컨텐츠로 설정되는 세 번째 메모리 영역
  35. 제 34항에 있어서,
    상기 패치 제어 블록을 상기 임베디드 소프트웨어의 다수 섹션이 공유하는 방법
  36. 제 25항에 있어서,
    여러 패치 제어 작업 영역을 할당하는 위의 단계의 시간 설정이 다음 중 최소 한 가지 방법론을 기반으로 하는 방법
    a) 상기 임베디드 소프트웨어를 실행 가능한 기계 코드로 컴파일하기 전에 상기 임베디드 소프트웨어에 상기 패치 작업 영역 중 최소 하나를 할당
    b) 상기 임베디드 소프트웨어를 해당 어셈블리 프로그램 코드로 컴파일하고 상기 어셈블리 프로그램 코드에 상기 패치 작업 영역 중 최소 하나를 할당한 다음 상기 어셈블리 프로그램 코드를 실행 가능 기계 코드로 컴파일
    c) 상기 임베디드 소프트웨어를 해당 개체 코드로 컴파일하고 상기 개체 코드에 상기 패치 작업 영역 중 최소 하나를 할당한 다음 상기 개체 코드를 실행 가능 기계 코드로 컴파일
    d) 상기 임베디드 소프트웨어를 실행 가능 기계 코드로 컴파일하고 상기 실행 가능 기계 코드에 상기 패치 작업 영역 중 최소 하나를 할당
  37. 제 25항에 있어서,
    다음 단계를 더 포함하여 구성되는 방법
    e) 사전 정의된 기능을 제공하도록 조정된 소프트웨어 패치 생성
    f) 통신 링크를 통해 상기 디지털 제품으로 상기 소프트웨어 패치 전송
    g) 상기 디지털 제품에 의해 상기 소프트웨어 패치 수신
    h) 상기 소프트웨어 패치를 상기 패치 작업 영역 중 최소 하나에 작성
  38. 제 27항에 있어서,
    다음 단계를 더 포함하여 구성되는 방법
    e) 사전 정의된 기능을 제공하도록 조정된 소프트웨어 패치 생성
    f) 통신 링크를 통해 상기 디지털 제품으로 상기 소프트웨어 패치 전송
    g) 상기 디지털 제품에 의해 상기 소프트웨어 패치 수신
    h) 상기 소프트웨어 패치를 상기 패치 작업 영역 중 최소 하나에 작성
  39. 제 28항에 있어서,
    다음 단계를 더 포함하여 구성되는 방법
    e) 사전 정의된 기능을 제공하도록 조정된 소프트웨어 패치 생성
    f) 통신 링크를 통해 상기 디지털 제품으로 상기 소프트웨어 패치 전송
    g) 상기 디지털 제품에 의해 상기 소프트웨어 패치 수신
    h) 상기 소프트웨어 패치를 상기 패치 작업 영역 중 최소 하나에 작성
  40. 제 29항에 있어서,
    다음 단계를 더 포함하여 구성되는 방법
    e) 사전 정의된 기능을 제공하도록 조정된 소프트웨어 패치 생성
    f) 통신 링크를 통해 상기 디지털 제품으로 상기 소프트웨어 패치 전송
    g) 상기 디지털 제품에 의해 상기 소프트웨어 패치 수신
    h) 상기 소프트웨어 패치를 상기 패치 작업 영역 중 최소 하나에 작성
  41. 제 34항에 있어서,
    다음 단계를 더 포함하여 구성되는 방법
    e) 사전 정의된 기능을 제공하도록 조정된 소프트웨어 패치 생성
    f) 통신 링크를 통해 상기 디지털 제품으로 상기 소프트웨어 패치 전송
    g) 상기 디지털 제품에 의해 상기 소프트웨어 패치 수신
    h) 상기 소프트웨어 패치를 상기 패치 작업 영역 중 최소 하나에 작성
  42. 제 37항에 있어서,
    상기 작성 단계가 상기 소프트웨어 패치를 사용하여 최소 하나의 점프 오프셋을 변경하는 단계를 포함하여 구성되는 방법
  43. 제 37항에 있어서,
    상기 생성 단계가 다음 기능 중 최소 하나를 갖는 패치 서버 사용하는 단계를 포함하여 구성되는 방법
    상기 소프트웨어 패치 생성 처리
    사전 정의된 암호화 알고리즘으로 상기 소프트웨어 패치 암호화 처리
  44. 제 37항에 있어서,
    상기 전송 단계가 다음 기능 중 최소 하나를 갖는 패치 서버 사용하는 단계를 포함하여 구성되는 방법
    상기 소프트웨어 패치 전송 처리
    상기 디지털 제품에서 최소 하나의 메시지 수신 처리
    상기 소프트웨어 패치의 재전송 처리
  45. 제 37항에 있어서,
    상기 전송 단계가 CDMA 표준에 정의된 데이터 버스트 메시지를 사용하여 상기 소프트웨어 패치를 전송하는 단계를 포함하여 구성되는 방법
  46. 제 44항에 있어서,
    다음 중 최소 한 가지 경우에 최소 하나의 메시지를 상기 디지털 제품에서 상기 패치 서버로 전송하는 단계를 더 포함하여 구성되는 방법
    상기 디지털 제품으로 상기 소프트웨어 패치를 수신한 후
    상기 패치 작업 영역에 상기 소프트웨어 패치를 작성한 후
  47. 제 37항에 있어서,
    상기 소프트웨어 패치가 다음 중 최소 한 가지 정보를 포함하여 구성되는 방법
    제조 ID
    제품 모델 번호
    소프트웨어 버전 번호
    소프트웨어 섹션 ID
    패치 ID
    CPU ID
    MAC 레이어 주소
    패치 주소 정보
    상기 임베디드 소프트웨어를 업데이트하기 위한 패치 프로그램
    패치 프로그램 해석 방법에 대한 정보
    재설정 플래그 정보
    패치 프로그래밍의 사후 프로세스에 사용할 수 있는 정보 항목
    디지털 제품을 식별하는 데 사용할 수 있는 정보 항목
    가입자를 식별하는 데 사용할 수 있는 정보 항목
    상기 디지털 제품의 데이터 영역을 업데이트하기 위한 데이터 매개변수
  48. 제 37항에 있어서,
    다음 중 최소 한 가지 방법으로 상기 디지털 제품에 의해 상기 소프트웨어 패치의 최소 한 항목을 해석하는 단계를 더 포함하여 구성되는 방법
    상기 소프트웨어 패치를 상기 패치 작업 영역에 작성하기 전에 첫 번째 소프트웨어 언어 형식에서 두 번째 소프트웨어 언어 형식으로 최소 한 항목을 변경하는단계
    실행할 상기 소프트웨어 패치를 사용하기 전에 첫 번째 소프트웨어 언어 형식에서 두 번째 소프트웨어 언어 형식으로 최소 한 항목을 변경하는 단계
    상기 소프트웨어 패치를 상기 패치 작업 영역에 작성하기 전에 첫 번째 데이터 형식에서 두 번째 데이터 형식으로 최소 한 항목을 변경하는 단계
    실행할 상기 소프트웨어 패치를 사용하기 전에 첫 번째 데이터 형식에서 두 번째 데이터 형식으로 최소 한 항목을 변경하는 단계
  49. 제 37항에 있어서,
    상기 패치 작업 영역으로의 상기 소프트웨어 패치 작성이 FLASH 메모리에 데이터를 기록하도록 조정되는 최소 하나의 FLASH 프로그래밍 루틴에 의해 수행되는 방법
  50. 제 49항에 있어서,
    상기 소프트웨어 패치 작성 단계가 FLASH 프로그래밍 전에 RAM 메모리로 FLASH 프로그래밍 루틴을 배치하는 단계를 더 포함하여 구성되는 방법
  51. 임베디드 소프트웨어에 의해 작동되고 FLASH 메모리 및 NVM(Non-Volatile Memory)을 갖는 디지털 제품을 수정하는 단계. 다음 단계로 구성됩니다.
    a) FLASH 메모리의 컨텐츠를 업데이트하기 위한 최소 하나의 패치 프로그램및 NVM 컨텐츠를 업데이트하기 위한 최소 하나의 데이터 매개변수를 포함하여 구성되는 소프트웨어 패치를 생성하는 단계
    b) 무선 통신 링크를 사용하여 상기 디지털 제품으로 상기 소프트웨어 패치를 전송하는 단계
    c) 상기 디지털 제품에 의해 상기 소프트웨어 패치를 수신하는 단계
    d) 상기 디지털 제품에 상기 소프트웨어 패치를 작성하는 단계
  52. 제 51항에 있어서,
    상기 작성 단계가 다음 중 최소 한 가지 단계를 포함하여 구성되는 방법
    상기 NVM에서 기존 데이터를 대체하여 상기 NVM에 최소 하나의 데이터 매개변수를 작성하는 단계
    상기 FLASH 메모리에 최소 하나의 패치 프로그램을 작성하는 단계
  53. 제 52항에 있어서,
    다음 중 최소 한 가지 단계를 더 포함하여 구성되는 방법
    상기 소프트웨어 패치의 식별 정보를 상기 임베디드 소프트웨어의 패치 제어 테이블에 작성하는 단계
    상기 소프트웨어 패치의 패치 제어 정보를 상기 임베디드 소프트웨어의 패치 제어 테이블에 작성하는 단계
  54. 디지털 제품의 임베디드 소프트웨어를 업데이트하기 위한 명령으로 구성되는 컴퓨터 인식 가능 매체. 다음과 같은 명령으로 구성됩니다.
    상기 임베디드 소프트웨어 실행
    상기 임베디드 소프트웨어 섹션에 대해 패치 프로그램을 사용할 수 있는지 여부 판별
    상기 섹션에 상기 패치 프로그램을 사용할 수 있는 경우 상기 섹션의 상기 임베디드 소프트웨어 실행을 상기 패치 프로그램에 지시
    상기 패치 프로그램 실행 후 상기 임베디드 소프트웨어의 예정된 위치로 다시 실행할 것을 지시
  55. 상기 임베디드 소프트웨어가 패치 프로그램의 사용 가능 여부를 판별하도록 조정되는 여러 루틴으로 할당되는 제 54항의 컴퓨터 인식 가능 매체
  56. 상기 예정 위치가 업데이트해야 하는 프로그램 부분의 끝 부분인 제 54항의 컴퓨터 인식 가능 매체
  57. 다음 명령을 더 포함하여 구성되는 제 55항의 컴퓨터 인식 가능 매체
    통신 링크를 통한 패치 프로그램 수신
    상기 디지털 제품으로 상기 패치 프로그램 프로그래밍
KR10-2004-7000597A 2001-07-16 2002-07-15 임베디드 소프트웨어 업데이트 시스템 KR20040022451A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US30570401P 2001-07-16 2001-07-16
US60/305,704 2001-07-16
US35491502P 2002-02-08 2002-02-08
US60/354,915 2002-02-08
PCT/US2002/022412 WO2003009136A1 (en) 2001-07-16 2002-07-15 Embedded software update system

Publications (1)

Publication Number Publication Date
KR20040022451A true KR20040022451A (ko) 2004-03-12

Family

ID=26974732

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7000597A KR20040022451A (ko) 2001-07-16 2002-07-15 임베디드 소프트웨어 업데이트 시스템

Country Status (6)

Country Link
US (3) US6760908B2 (ko)
EP (1) EP1410181A1 (ko)
JP (1) JP2004536405A (ko)
KR (1) KR20040022451A (ko)
CN (1) CN1529847A (ko)
WO (1) WO2003009136A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100620729B1 (ko) * 2004-03-31 2006-09-13 주식회사 팬택앤큐리텔 소프트웨어 이미지 생성 방법
KR100784783B1 (ko) * 2004-12-07 2007-12-14 한국전자통신연구원 정량적인 프로세스 관리를 위한 임베디드 시스템 개발 방법론 지원 시스템
KR101016916B1 (ko) * 2008-10-30 2011-02-22 한국항공우주산업 주식회사 비행 시뮬레이션 및 테스트를 위한 항공기 임베디드 시스템의 데이터 주입 방법

Families Citing this family (251)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321356B2 (en) * 2000-05-18 2012-11-27 United Parcel Service Of America, Inc. System and method for calculating real-time costing information
US8725656B1 (en) 2000-05-18 2014-05-13 United Parcel Service Of America, Inc. Freight rate manager
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
US8196130B2 (en) * 2000-11-17 2012-06-05 Hewlett-Packard Development Company, L.P. Tri-phase boot process in electronic devices
US20030140126A1 (en) * 2001-03-30 2003-07-24 Vitria Technology, Inc. Method of deployment for concurrent execution of multiple versions of an integration model
US7613716B2 (en) * 2001-07-20 2009-11-03 The Mathworks, Inc. Partitioning for model-based design
US7069546B2 (en) * 2001-12-03 2006-06-27 Corrigent Systems Ltd. Generic framework for embedded software development
EP2148334B1 (en) * 2002-01-29 2011-11-09 Agere Systems Inc. Differential flash memory programming technique
US20030191823A1 (en) * 2002-04-03 2003-10-09 Aplion Networks, Inc. System and method for providing customizable device capabilities to network equipment in a non-service affecting manner
US20040015943A1 (en) * 2002-07-17 2004-01-22 Ying-Chou Chen Embedded computer system equipped with an upgradeable software library
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
DE10260103A1 (de) * 2002-12-19 2004-07-01 Robert Bosch Gmbh Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät
US9092286B2 (en) * 2002-12-20 2015-07-28 Qualcomm Incorporated System to automatically process components on a device
US7644406B2 (en) * 2003-01-21 2010-01-05 Hewlett-Packard Development Company, L.P. Update system capable of updating software across multiple FLASH chips
US6941453B2 (en) * 2003-02-11 2005-09-06 Bitfone Corporation System and method for determining if a device needs to be updated and locating and invoking an update agent to update the firmware or software in the device
US6886472B2 (en) * 2003-02-20 2005-05-03 General Electric Company Method and system for autonomously resolving a failure
JP4523991B2 (ja) * 2003-03-25 2010-08-11 株式会社リコー 端末装置、方法、システム、及びプログラム
JP2004312711A (ja) * 2003-03-25 2004-11-04 Ricoh Co Ltd 画像形成装置及び画像形成装置を遠隔のアプリケーションにより操作する方法
GB2403303B (en) * 2003-06-23 2005-08-17 Matsushita Electric Ind Co Ltd Embedded device with software registry
JP2005050073A (ja) * 2003-07-28 2005-02-24 Matsushita Electric Ind Co Ltd データ復旧方法およびデータ記録装置
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
US7673297B1 (en) * 2003-09-03 2010-03-02 The Directv Group, Inc. Automatic software update detection and flexible installer for set-top boxes
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7624393B2 (en) * 2003-09-18 2009-11-24 International Business Machines Corporation Computer application and methods for autonomic upgrade maintenance of computer hardware, operating systems and application software
CN101917242B (zh) * 2003-11-04 2013-02-27 韩国电子通信研究院 接收数据广播服务以支持与移动网络连接的装置和方法
WO2005048604A1 (en) * 2003-11-17 2005-05-26 Samsung Electronics Co., Ltd. Method for updating software of a target device using an extended identifier in digital broadcasting
US7409538B2 (en) * 2003-12-18 2008-08-05 International Business Machines Corporation Update in-use flash memory without external interfaces
ATE466334T1 (de) 2004-02-27 2010-05-15 Ericsson Telefon Ab L M Programmieren eines flash-speichers
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
US7600216B2 (en) * 2004-04-22 2009-10-06 Gteko, Ltd Method for executing software applications using a portable memory device
US20050251798A1 (en) * 2004-05-05 2005-11-10 News, Iq, Inc. System and method for inventory control and management
US8539469B2 (en) * 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
US7559058B2 (en) * 2004-05-11 2009-07-07 Microsoft Corporation Efficient patching
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
CN100370431C (zh) * 2004-08-16 2008-02-20 上海华为技术有限公司 对嵌入式系统进行在线监测的方法及其系统
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7373492B2 (en) * 2004-08-30 2008-05-13 Lehman Brothers Inc. Boot disk management utility
FR2875921B1 (fr) * 2004-09-27 2006-12-01 Gemplus Sa Campagne de telechargement de donnees dans des objets communicants portables
US20060075401A1 (en) * 2004-10-05 2006-04-06 Microsoft Corporation Patch installation control
US8019725B1 (en) 2004-12-15 2011-09-13 Apple Inc. Software update management
US8347285B2 (en) * 2004-12-16 2013-01-01 Intel Corporation Embedded agent for self-healing software
CN100435108C (zh) * 2004-12-22 2008-11-19 迅杰科技股份有限公司 存储装置固件修补方法
US7426571B2 (en) * 2005-01-06 2008-09-16 Dell Products L.P. Providing files to an information handling system using a remote access controller
US7734574B2 (en) * 2005-02-17 2010-06-08 International Business Machines Corporation Intelligent system health indicator
US20060200656A1 (en) * 2005-03-03 2006-09-07 Cardinell Charles S Apparatus and method to capture data from an embedded device
US7757274B2 (en) 2005-04-05 2010-07-13 Mcafee, Inc. Methods and systems for exchanging security information via peer-to-peer wireless networks
US7761710B2 (en) * 2005-04-05 2010-07-20 Mcafee, Inc. Captive portal system and method for use in peer-to-peer networks
US7606370B2 (en) * 2005-04-05 2009-10-20 Mcafee, Inc. System, method and computer program product for updating security criteria in wireless networks
US7822972B2 (en) * 2005-04-05 2010-10-26 Mcafee, Inc. Remotely configurable bridge system and method for use in secure wireless networks
US20060248107A1 (en) * 2005-04-11 2006-11-02 Coronado Juan A Apparatus system and method for updating software while preserving system state
CN100521676C (zh) 2005-04-14 2009-07-29 华为技术有限公司 在机顶盒中单独升级业务软件的实现方法和装置
US20060265692A1 (en) * 2005-05-20 2006-11-23 Mengjin Su Method, apparatus, and computer program product for code patching
US8399390B2 (en) 2005-06-29 2013-03-19 Exxonmobil Chemical Patents Inc. HVI-PAO in industrial lubricant and grease compositions
US7667874B2 (en) * 2005-07-06 2010-02-23 Xerox Corporation Method and system for improving print quality
EP1910431B1 (en) 2005-07-19 2013-11-27 ExxonMobil Chemical Patents Inc. Polyalpha-olefin compositions and processes to produce the same
WO2007011462A1 (en) 2005-07-19 2007-01-25 Exxonmobil Chemical Patents Inc. Lubricants from mixed alpha-olefin feeds
WO2007023497A1 (en) * 2005-08-23 2007-03-01 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
US7577872B2 (en) * 2005-08-26 2009-08-18 Home Box Office Dynamic system diagnosis
US20070074187A1 (en) * 2005-09-29 2007-03-29 O'brien Thomas E Method and apparatus for inserting code fixes into applications at runtime
CN100416503C (zh) * 2005-11-04 2008-09-03 中兴通讯股份有限公司 一种软件版本更新的方法
CN101361385B (zh) * 2005-11-30 2014-10-22 意大利电信股份公司 用于更新在移动通信终端中的应用的方法和系统
US20070132774A1 (en) * 2005-12-01 2007-06-14 Samsung Electronics Co., Ltd. System and method for a patch minimization tool
DE102005059319A1 (de) 2005-12-09 2007-06-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Einrichtung
ATE491988T1 (de) * 2005-12-20 2011-01-15 Ericsson Telefon Ab L M Erstellung inkrementeller programmaktualisierungen
US7603113B2 (en) 2005-12-31 2009-10-13 Adobe Systems Incorporated Using local codecs
US7660558B2 (en) 2005-12-31 2010-02-09 Adobe Systems Incorporated Interrupting and resuming a media player
KR100717110B1 (ko) * 2006-02-21 2007-05-10 삼성전자주식회사 롬 데이터 패치 회로, 이를 포함하는 임베디드 시스템 및롬 데이터 패치 방법
KR100746036B1 (ko) 2006-02-23 2007-08-06 삼성전자주식회사 플래시 메모리를 제어하는 장치 및 방법
US8501675B2 (en) 2006-06-06 2013-08-06 Exxonmobil Research And Engineering Company High viscosity novel base stock lubricant viscosity blends
US8834705B2 (en) 2006-06-06 2014-09-16 Exxonmobil Research And Engineering Company Gear oil compositions
US8535514B2 (en) 2006-06-06 2013-09-17 Exxonmobil Research And Engineering Company High viscosity metallocene catalyst PAO novel base stock lubricant blends
US8921290B2 (en) 2006-06-06 2014-12-30 Exxonmobil Research And Engineering Company Gear oil compositions
US8299007B2 (en) 2006-06-06 2012-10-30 Exxonmobil Research And Engineering Company Base stock lubricant blends
WO2007146710A2 (en) 2006-06-08 2007-12-21 Hewlett-Packard Development Company, L.P. Device management in a network
US8584107B2 (en) * 2006-07-07 2013-11-12 United Parcel Service Of America, Inc. Compiled data for software applications
US8752044B2 (en) 2006-07-27 2014-06-10 Qualcomm Incorporated User experience and dependency management in a mobile device
US8112747B2 (en) * 2006-11-27 2012-02-07 Sap Ag Integrated software support for a distributed business application with seamless backend communications
US20130167024A1 (en) 2006-12-05 2013-06-27 Adobe Systems Incorporated Embedded document within an application
US8533820B2 (en) * 2006-12-12 2013-09-10 International Business Machines Corporation Reserved write positions on install media
FR2911023B1 (fr) * 2006-12-29 2009-04-17 Radiotelephone Sfr Procede de securisation d'un flux de donnees.
DE102007003580A1 (de) * 2007-01-24 2008-07-31 Giesecke & Devrient Gmbh Installieren eines Patch in einem Smartcard-Modul
US7743339B1 (en) * 2007-02-01 2010-06-22 Adobe Systems Incorporated Rendering text in a brew device
US8819668B2 (en) * 2007-02-08 2014-08-26 Microsoft Corporation Accessible limited distribution release software change catalog
ATE521035T1 (de) * 2007-02-09 2011-09-15 Ericsson Telefon Ab L M Erzeugung von delta-aktualisierungen für eine verarbeitungsvorrichtung
US8589779B2 (en) * 2007-03-08 2013-11-19 Adobe Systems Incorporated Event-sensitive content for mobile devices
WO2008147548A1 (en) * 2007-05-24 2008-12-04 Facebook, Inc. Personalized platform for accessing internet applications
US20090019435A1 (en) * 2007-07-12 2009-01-15 Sauer-Danfoss Inc. System and method for over the air programming
DE502007006736D1 (de) * 2007-10-16 2011-04-28 Siemens Ag Verfahren zur automatischen Modifikation eines Programms
US7802129B2 (en) * 2007-10-17 2010-09-21 Hewlett-Packard Development Company, L.P. Mobile handset employing efficient backup and recovery of blocks during update
US8213923B1 (en) * 2007-11-02 2012-07-03 Trend Micro Incorporated Product update via voice call in mobile security
US8009757B2 (en) * 2007-11-12 2011-08-30 Motorola Mobility, Inc. Method and apparatus for encoding a modulated signal in a communication system
WO2009074444A2 (en) 2007-12-13 2009-06-18 Telefonaktiebolaget L M Ericsson (Publ) Updating firmware of an electronic device
US8839225B2 (en) 2008-01-23 2014-09-16 International Business Machines Corporation Generating and applying patches to a computer program code concurrently with its execution
ATE524500T1 (de) 2008-01-31 2011-09-15 Exxonmobil Chem Patents Inc Verbesserte verwendung linearer alpha-olefine bei der herstellung von metallocen-katalysierten poly-alpha-olefinen
FR2928754B1 (fr) * 2008-03-13 2012-05-18 Sagem Securite Carte a circuit integre ayant un programme d'exploitation modifiable et procede de modification correspondant
US8865959B2 (en) 2008-03-18 2014-10-21 Exxonmobil Chemical Patents Inc. Process for synthetic lubricant production
CN101977944A (zh) 2008-03-31 2011-02-16 埃克森美孚化学专利公司 剪切稳定的高粘度pao的制备
US9058230B1 (en) * 2008-05-27 2015-06-16 Symantec Operating Corporation Online expert system guided application installation
WO2009156790A1 (en) * 2008-06-23 2009-12-30 Freescale Semiconductor, Inc. Patching of a read-only memory
US8394746B2 (en) 2008-08-22 2013-03-12 Exxonmobil Research And Engineering Company Low sulfur and low metal additive formulations for high performance industrial oils
US8930930B2 (en) 2008-09-04 2015-01-06 International Business Machines Corporation Updating a computer system
US8312447B2 (en) * 2008-09-25 2012-11-13 Microsoft Corporation Managing updates using compiler and linker information
US8476205B2 (en) 2008-10-03 2013-07-02 Exxonmobil Research And Engineering Company Chromium HVI-PAO bi-modal lubricant compositions
US20100180104A1 (en) * 2009-01-15 2010-07-15 Via Technologies, Inc. Apparatus and method for patching microcode in a microprocessor using private ram of the microprocessor
US9104521B2 (en) * 2009-03-16 2015-08-11 Tyco Electronics Subsea Communications Llc System and method for remote device application upgrades
US10055251B1 (en) * 2009-04-22 2018-08-21 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for injecting code into embedded devices
JP5310324B2 (ja) * 2009-07-07 2013-10-09 株式会社リコー 情報処理装置、情報処理方法、及びプログラム
WO2011006513A2 (en) * 2009-07-13 2011-01-20 Eyad Aii Mohammad Al Qalqili Method and system for advertising on the mobile main screen by cbs technology
US8716201B2 (en) 2009-10-02 2014-05-06 Exxonmobil Research And Engineering Company Alkylated naphtylene base stock lubricant formulations
CN105061644B (zh) 2009-12-24 2017-10-27 埃克森美孚化学专利公司 用于生产新型合成基础油料的方法
US8642523B2 (en) 2010-02-01 2014-02-04 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8748362B2 (en) 2010-02-01 2014-06-10 Exxonmobile Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed gas engines by reducing the traction coefficient
US8759267B2 (en) 2010-02-01 2014-06-24 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8728999B2 (en) 2010-02-01 2014-05-20 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8598103B2 (en) 2010-02-01 2013-12-03 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low, medium and high speed engines by reducing the traction coefficient
CN102156661B (zh) 2010-02-11 2013-06-12 华为技术有限公司 在线补丁的激活方法、装置及系统
WO2013176711A2 (en) 2012-02-15 2013-11-28 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
US9392017B2 (en) 2010-04-22 2016-07-12 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
CN101930375A (zh) * 2010-08-26 2010-12-29 深圳市共进电子有限公司 单用户光网络单元中内存空间自适应的程序数据升级方法
US9815915B2 (en) 2010-09-03 2017-11-14 Exxonmobil Chemical Patents Inc. Production of liquid polyolefins
CN101950254B (zh) * 2010-09-16 2014-07-30 新邮通信设备有限公司 一种软件更新方法和系统
TW201246075A (en) * 2011-05-06 2012-11-16 Asmedia Technology Inc Flash device and associated booting method
DE102012103654A1 (de) 2011-05-17 2012-11-22 International Business Machines Corp. Installieren und Prüfen einer Anwendung auf einer stark genutzten Computerplattform
JP5975408B2 (ja) 2011-10-10 2016-08-23 エクソンモービル ケミカル パテンツ インコーポレイテッド ポリアルファオレフィン組成物及びポリアルファオレフィン組成物の製造方法
JP5886099B2 (ja) * 2012-03-21 2016-03-16 日立オートモティブシステムズ株式会社 自動車用電子制御装置
CN102707978A (zh) * 2012-05-18 2012-10-03 苏州万图明电子软件有限公司 图像设备的更新软件
US9817656B2 (en) 2012-08-24 2017-11-14 Ca, Inc. Hot rollback of updated agent
US9798557B2 (en) * 2012-08-24 2017-10-24 Ca, Inc. Injection of updated classes for a java agent
US9921954B1 (en) * 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
CN102880494B (zh) * 2012-09-26 2016-02-10 浙江大学 一种用于微小卫星系统的局部代码更新方法及其系统
US8930932B2 (en) 2012-10-09 2015-01-06 Futurewei Technologies, Inc. In-service software patch
US10310863B1 (en) * 2013-07-31 2019-06-04 Red Hat, Inc. Patching functions in use on a running computer system
US9547581B2 (en) 2013-10-01 2017-01-17 Wipro Limited Systems and methods for fixing software defects in a binary or executable file
CN103530184B (zh) * 2013-10-24 2017-04-12 华为技术有限公司 一种在线补丁激活的方法及装置
CN103645924A (zh) * 2013-12-27 2014-03-19 金三立视频科技(深圳)有限公司 嵌入式设备程序参数管理方法及装置
US9736098B2 (en) * 2014-02-07 2017-08-15 Lenovo (Singapore) Pte. Ltd. Email-based software delivery
US9547489B2 (en) * 2014-03-31 2017-01-17 Qualcomm Incorporated System and method for modifying a sequence of instructions in a read-only memory of a computing device
EP2955629B1 (en) * 2014-06-11 2021-10-27 Home Control Singapore Pte. Ltd. System for installing new firmware on a small-memory device
US10282187B2 (en) 2014-07-03 2019-05-07 Oracle International Corporation Efficient application patching in heterogeneous computing environments
US10657262B1 (en) 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9715402B2 (en) * 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
KR102261815B1 (ko) * 2014-10-30 2021-06-07 삼성전자주식회사 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US10101987B2 (en) 2015-03-11 2018-10-16 Echelon Corporation Method and system of processing an image upgrade
EP3040858A1 (en) * 2014-12-31 2016-07-06 Echelon Corporation A method and system of processing an image update
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9886263B2 (en) 2015-03-24 2018-02-06 Oracle International Corporation Techniques for efficient application configuration patching
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
WO2016193408A1 (en) 2015-06-04 2016-12-08 Here Global B.V. Incremental update of compressed navigational databases
US10063629B2 (en) 2015-06-23 2018-08-28 Dell Products, L.P. Floating set points to optimize power allocation and use in data center
US10009232B2 (en) 2015-06-23 2018-06-26 Dell Products, L.P. Method and control system providing an interactive interface for device-level monitoring and servicing of distributed, large-scale information handling system (LIHS)
US10754494B2 (en) 2015-06-23 2020-08-25 Dell Products, L.P. Method and control system providing one-click commissioning and push updates to distributed, large-scale information handling system (LIHS)
CN106354524B (zh) 2015-07-17 2021-01-01 恩智浦美国有限公司 实时更新固件的系统和方法
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US10108412B2 (en) 2016-03-30 2018-10-23 Square, Inc. Blocking and non-blocking firmware update
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
JP6677294B2 (ja) * 2016-04-21 2020-04-08 日本電気株式会社 ネットワークシステム、パッチファイル適用方法、及びプログラム
CN110110522B (zh) * 2016-05-24 2021-05-07 百度在线网络技术(北京)有限公司 内核修复方法和装置
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US11010765B2 (en) 2016-06-29 2021-05-18 Square, Inc. Preliminary acquisition of payment information
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10817869B2 (en) 2016-06-29 2020-10-27 Square, Inc. Preliminary enablement of transaction processing circuitry
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
CN110300955B (zh) * 2017-02-28 2024-03-08 日本电信电话株式会社 通信处理装置、信息处理装置和通信处理装置的控制方法
US10496398B2 (en) 2017-07-25 2019-12-03 Aurora Labs Ltd. Hot updates to ECU software using tool chain
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
CN108874438B (zh) * 2018-06-25 2021-09-21 南京中感微电子有限公司 补丁生成方法、装置、电子设备及计算机存储介质
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
DE102018009835A1 (de) * 2018-12-14 2020-06-18 Giesecke+Devrient Mobile Security Gmbh Inkrementelles Aktualisieren einer Firmware
US10762196B2 (en) 2018-12-21 2020-09-01 Square, Inc. Point of sale (POS) systems and methods with dynamic kernel selection
US10990969B2 (en) 2018-12-21 2021-04-27 Square, Inc. Point of sale (POS) systems and methods for dynamically processing payment data based on payment reader capability
US11049095B2 (en) 2018-12-21 2021-06-29 Square, Inc. Point of sale (POS) systems and methods with dynamic kernel selection
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
WO2020194000A1 (en) 2019-03-28 2020-10-01 Validata Holdings Limited Method of detecting and removing defects
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
CN110333890A (zh) * 2019-06-28 2019-10-15 南京兆伏电力科技有限公司 远程烧写固化flash数据的方法
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US10997056B1 (en) * 2019-10-09 2021-05-04 Fujitsu Limited Generation of explanatory and executable repair examples
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11669621B2 (en) * 2020-06-16 2023-06-06 Bank Of America Corporation Custom patching automation with machine learning integration
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
CN114860308A (zh) * 2021-02-04 2022-08-05 北京国基科技股份有限公司 一种嵌入式软件重构方法及装置
CN113076125B (zh) * 2021-04-25 2024-04-12 北京金山云网络技术有限公司 直播业务升级处理方法、装置、介质和服务器
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN113656059B (zh) * 2021-10-21 2022-02-08 北京联盛德微电子有限责任公司 嵌入式软件系统
US11900106B2 (en) 2022-03-02 2024-02-13 International Business Machines Corporation Personalized patch notes based on software usage
CN115469901B (zh) * 2022-08-16 2023-05-12 哈尔滨理工大学 一种双核dsp可拆卸远程升级系统及升级方法

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4954941A (en) 1988-08-31 1990-09-04 Bell Communications Research, Inc. Method and apparatus for program updating
EP0392895B1 (en) * 1989-04-13 1995-12-13 Sundisk Corporation Flash EEprom system
US5481713A (en) * 1993-05-06 1996-01-02 Apple Computer, Inc. Method and apparatus for patching code residing on a read only memory device
US5675803A (en) * 1994-01-28 1997-10-07 Sun Microsystems, Inc. Method and apparatus for a fast debugger fix and continue operation
US5666293A (en) 1994-05-27 1997-09-09 Bell Atlantic Network Services, Inc. Downloading operating system software through a broadcast channel
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
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US5896566A (en) 1995-07-28 1999-04-20 Motorola, Inc. Method for indicating availability of updated software to portable wireless communication units
US5689825A (en) 1995-07-28 1997-11-18 Motorola, Inc. Method and apparatus for downloading updated software to portable wireless communication units
US5802549A (en) * 1995-12-14 1998-09-01 International Business Machines Corporation Method and apparatus for patching pages of ROM
US5907708A (en) * 1996-06-03 1999-05-25 Sun Microsystems, Inc. System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof
EP0825530A3 (en) * 1996-06-20 2004-06-02 Sharp Kabushiki Kaisha Computer apparatus having electrically rewritable nonvolatile memory, and nonvolatile semiconductor memory
US5848064A (en) 1996-08-07 1998-12-08 Telxon Corporation Wireless software upgrades with version control
JP3755204B2 (ja) 1996-09-20 2006-03-15 カシオ計算機株式会社 通信装置、通信制御方法及び通信システム
US5963970A (en) * 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
TW325551B (en) 1997-01-04 1998-01-21 Inventec Corp Auto switching memory space method capable of judging if there is updated version stored in memory circuit to automatically select program stored in ROM or memory circuit as execution stating location
US6266736B1 (en) * 1997-01-31 2001-07-24 Sony Corporation Method and apparatus for efficient software updating
US5936667A (en) 1997-05-13 1999-08-10 Sony Corporation System and method for testing and updating stored content of a remote transmitter for an entertainment system
US6049830A (en) 1997-05-13 2000-04-11 Sony Corporation Peripheral software download of a broadcast receiver
US5974312A (en) * 1997-07-10 1999-10-26 Ericsson Inc. System and method for updating a memory in an electronic device via wireless data transfer
US6002941A (en) 1997-12-17 1999-12-14 Motorola, Inc. Method and apparatus for implementing a service in a wireless communication system
US6167567A (en) * 1998-05-05 2000-12-26 3Com Corporation Technique for automatically updating software stored on a client computer in a networked client-server environment
US6209069B1 (en) * 1998-05-11 2001-03-27 Intel Corporation Method and apparatus using volatile lock architecture for individual block locking on flash memory
US6330715B1 (en) 1998-05-19 2001-12-11 Nortel Networks Limited Method and apparatus for managing software in a network system
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
US6353926B1 (en) 1998-07-15 2002-03-05 Microsoft Corporation Software update notification
US6366898B2 (en) 1998-09-21 2002-04-02 Sun, Microsystems, Inc. Method and apparatus for managing classfiles on devices without a file system
US6202208B1 (en) 1998-09-29 2001-03-13 Nortel Networks Limited Patching environment for modifying a Java virtual machine and method
US6237091B1 (en) 1998-10-29 2001-05-22 Hewlett-Packard Company Method of updating firmware without affecting initialization information
US6378069B1 (en) 1998-11-04 2002-04-23 Nortel Networks Limited Apparatus and methods for providing software updates to devices in a communication network
US6594822B1 (en) * 1999-02-19 2003-07-15 Nortel Networks Limited Method and apparatus for creating a software patch by comparing object files
US6434744B1 (en) * 1999-03-03 2002-08-13 Microsoft Corporation System and method for patching an installed application program
US6223291B1 (en) 1999-03-26 2001-04-24 Motorola, Inc. Secure wireless electronic-commerce system with digital product certificates and digital license certificates
US6357021B1 (en) * 1999-04-14 2002-03-12 Mitsumi Electric Co., Ltd. Method and apparatus for updating firmware
US6507881B1 (en) * 1999-06-10 2003-01-14 Mediatek Inc. Method and system for programming a peripheral flash memory via an IDE bus
US6321380B1 (en) * 1999-06-29 2001-11-20 International Business Machines Corporation Method and apparatus for modifying instruction operations in a processor
US6397385B1 (en) 1999-07-16 2002-05-28 Excel Switching Corporation Method and apparatus for in service software upgrade for expandable telecommunications system
US7032213B1 (en) * 1999-09-01 2006-04-18 Microsoft Corporation Fixing incompatible applications using a light debugger
US6640334B1 (en) * 1999-09-27 2003-10-28 Nortel Networks Limited Method and apparatus of remotely updating firmware of a communication device
US6769059B1 (en) * 1999-12-17 2004-07-27 Intel Corporation System for updating computer's existing video BIOS without updating the whole computer's system BIOS
US20020012329A1 (en) 2000-06-02 2002-01-31 Timothy Atkinson Communications apparatus interface and method for discovery of remote devices
US6256232B1 (en) * 2000-07-07 2001-07-03 Institute For Information Industry Data access method capable of reducing the number of erasing to flash memory and data patch and access device using the same
US20020026474A1 (en) 2000-08-28 2002-02-28 Wang Lawrence C. Thin client for wireless device using java interface
GB2366693B (en) 2000-08-31 2002-08-14 F Secure Oyj Software virus protection
US6529416B2 (en) * 2000-11-30 2003-03-04 Bitmicro Networks, Inc. Parallel erase operations in memory systems
US7055148B2 (en) * 2000-12-07 2006-05-30 Hewlett-Packard Development Company, L.P. System and method for updating firmware
US6813571B2 (en) * 2001-02-23 2004-11-02 Power Measurement, Ltd. Apparatus and method for seamlessly upgrading the firmware of an intelligent electronic device
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US20030079216A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Apparatus and method of using a hybrid of fixed media data and network-based data to provide software changes
JP4279528B2 (ja) * 2002-09-18 2009-06-17 株式会社ミクニ ウォータポンプ
JP2005135187A (ja) * 2003-10-30 2005-05-26 Toshiba Corp 電子機器および組み込みソフトウェア更新方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100620729B1 (ko) * 2004-03-31 2006-09-13 주식회사 팬택앤큐리텔 소프트웨어 이미지 생성 방법
KR100784783B1 (ko) * 2004-12-07 2007-12-14 한국전자통신연구원 정량적인 프로세스 관리를 위한 임베디드 시스템 개발 방법론 지원 시스템
KR101016916B1 (ko) * 2008-10-30 2011-02-22 한국항공우주산업 주식회사 비행 시뮬레이션 및 테스트를 위한 항공기 임베디드 시스템의 데이터 주입 방법

Also Published As

Publication number Publication date
CN1529847A (zh) 2004-09-15
EP1410181A1 (en) 2004-04-21
US6760908B2 (en) 2004-07-06
US20050063242A1 (en) 2005-03-24
WO2003009136A1 (en) 2003-01-30
JP2004536405A (ja) 2004-12-02
US20040237068A1 (en) 2004-11-25
US20030084434A1 (en) 2003-05-01

Similar Documents

Publication Publication Date Title
KR20040022451A (ko) 임베디드 소프트웨어 업데이트 시스템
CN106569847B (zh) 一种用于车载系统基于移动网络实现iap远程升级的方法
US5826017A (en) Apparatus and method for communicating data between elements of a distributed system using a general protocol
US7716414B2 (en) Method for updating a mobile device using an update package obtained from a remote server
US8453138B2 (en) Method and apparatus for generating an update package
US20070294685A1 (en) Program upgrade system and method for ota-capable portable device
CN108804118B (zh) 固件升级方法、设备及存储介质
KR101213275B1 (ko) 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법
CN104007996A (zh) 一种分布式控制系统的可靠固件升级实现方法
US20050204351A1 (en) Dynamic addressing (DA) using a centralized DA Manager
CN112947977A (zh) 一种软件在线升级方法及系统
CN106020882A (zh) 一种应用升级方法、智能终端及升级系统
US20060184924A1 (en) Intelligent platform management interface firmware architecture and method of building the same
CN103077066B (zh) 一种编译时嵌入产品关键信息的方法和系统
US20020138821A1 (en) Method and apparatus for seamless porting of object code between operating system environments
CN102065411A (zh) 无线传感器网络的动态更新方法
CN100375029C (zh) 存储器配置系统与方法
CN101197959B (zh) 一种终端的控制方法、系统和设备
CN109710291A (zh) 一种航空光电载荷软件配置项远程升级方法
CN114546441A (zh) 一种dsp与cpu通信方式的动态设定方法
WO2005048075A2 (en) Embedded software update methods and systems for digital devices
CN107480007B (zh) 一种程序冗余校验与纠错的方法
US6779173B1 (en) Control system with an embedded microcomputer
CN117724875B (zh) 基于Rust语言实现SESC驱动的半导体设备通信方法
CN111198687A (zh) 一种安卓系统应用程序的编译方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application