KR20160061306A - 펌웨어 가상화를 위한 방법 및 장치 - Google Patents

펌웨어 가상화를 위한 방법 및 장치 Download PDF

Info

Publication number
KR20160061306A
KR20160061306A KR1020167000659A KR20167000659A KR20160061306A KR 20160061306 A KR20160061306 A KR 20160061306A KR 1020167000659 A KR1020167000659 A KR 1020167000659A KR 20167000659 A KR20167000659 A KR 20167000659A KR 20160061306 A KR20160061306 A KR 20160061306A
Authority
KR
South Korea
Prior art keywords
firmware
virtualization
user device
data
remote
Prior art date
Application number
KR1020167000659A
Other languages
English (en)
Other versions
KR102073678B1 (ko
Inventor
트리사라 찬다리아
장 밥티스트 레오넬리
Original Assignee
시암벨라 리미티드
장 밥티스트 레오넬리
트리사라 찬다리아
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 시암벨라 리미티드, 장 밥티스트 레오넬리, 트리사라 찬다리아 filed Critical 시암벨라 리미티드
Publication of KR20160061306A publication Critical patent/KR20160061306A/ko
Application granted granted Critical
Publication of KR102073678B1 publication Critical patent/KR102073678B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/665
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

사용자 장치에 대한 가상화 펌웨어를 원격 서버에 저장하고, 사용자 장치로부터의 펌웨어 데이터를 네트워크를 통해 수신하는 사용자 장치의 펌웨어를 가상화하도록 동작되는 시스템 및 방법이 개시된다. 이 방법은, 펌웨어 데이터를 파싱하고, 파싱된 펌웨어 데이터를 원격 서버에 저장된 대응하는 가상화 펌웨어에 할당하고, 파싱된 펌웨어 데이터를 대응하는 가상화 펌웨어에 삽입하는 것을 포함한다. 이 방법은, 파싱된 펌웨어 데이터를 갖는 대응하는 가상화 펌웨어에 의거하여, 원격 서버에 의해 제공되는 원격 서비스에 액세스하도록 적어도 하나의 원격 프로세스를 전개하는 것을 포함한다.

Description

펌웨어 가상화를 위한 방법 및 장치{METHOD AND APPARATUS FOR FIRMWARE VIRTUALIZATION}
본 발명의 실시예는 일반적으로 펌웨어 가상화를 위한 방법 및 장치에 관한 것이다.
전자 시스템들 및 컴퓨팅에서, 펌웨어는 영속성 메모리와, 그 메모리에 저장된 프로그램 코드 및 데이터의 조합이다. 펌웨어를 포함하는 장치들의 전형적인 예는 임베디드 펌웨어 시스템(예를 들면, 신호등, 가전 기기, 및 디지털 시계, 컴퓨터, 컴퓨터 주변기기들, 디지털 카메라 등)이다. 이러한 장치들에 포함된 펌웨어는 장치에 대한 제어 프로그램을 제공한다. 펌웨어는 일반적으로 종종 장치에 임베드되는 ROM, EEPROM, 또는 플래시 메모리 등의 비휘발성 메모리 장치에 유지된다. 장치의 펌웨어를 변경하는 것은 그 경제 수명 중에 드물게 또는 결코 이루어지지 않을 수 있다. 일부 펌웨어 메모리 장치들은 영구적으로 설치되며, 제조 후에 변경될 수 없다. 펌웨어를 업데이트하는 일반적인 이유는, 장치가 사용자에게 시판된 후, 버그들을 수정하거나 장치에 기능을 추가하는 것을 들 수 있다. 이것은, 펌웨어에 저장되어 있는 모든 명령어들을 삭제 및 대체하는 것을 요하는 특별한 절차와 함께, 물리적으로 ROM 집적 회로를 변경하거나 플래시 메모리를 다시 프로그래밍하는 것을 요할 수 있다. 개인용 컴퓨터의 ROM BIOS 등의 펌웨어는 장치의 기초적인 기본 펑션만을 포함할 수 있고, 단지 보다 고(高)수준의 소프트웨어에 서비스들을 제공하기만 할 수도 있다. 임베디드 시스템 메모리의 프로그램 등의 펌웨어는, 시스템에서 실행되며 그 모든 펑션을 제공하는 유일한 프로그램이어도 된다.
그러나, 네트워크 연결 및 클라우드 기반 전개(deployment)의 확산으로 인해 애플리케이션/소프트웨어가 가상화되는 방식이 변경되었다. 네트워크 연결 장치가 인터넷을 통해 펌웨어 업데이트를 플래싱 또는 설치할 수 있다. 그러나, 업데이트는 임베디드 메모리의 크기에 제약되며, 종종 수동 사용자 개시, 장치 재시작, 펌웨어 ROM 플래싱, 및 전자 장치의 동작을 중단시키는 다른 불편한 단계들을 요할 필요가 있다.
따라서, 본 기술분야에서는 새로운 펌웨어의 빠른 전개 및 펌웨어 능력의 확장을 위한 펌웨어 가상화에 대한 필요성이 있다.
본 발명의 실시예는 일반적으로, 원격으로 저장된 펌웨어에 대한 호출을 이용하여 원격 프로세스를 실행하고 프로세스의 결과를 사용자 장치 펌웨어에 반환하는 사용자 장치의 펌웨어 가상화를 위한 방법 및 장치에 관한 것이며, 이는 적어도 하나의 도면과 함께 실질적으로 도시 및/또는 설명되며 청구범위에서 보다 완전히 제시된다.
본 발명의 이들 및 다른 특징과 이점은, 전반에 걸쳐 동일한 참조 부호가 동일한 부분을 가리키는 첨부 도면과 함께 본 발명의 다음의 상세한 설명의 검토로부터 이해될 수 있다.
도 1은 본 발명의 하나 이상의 실시예에 따른 펌웨어 가상화 시스템을 나타내는 도면.
도 2는 본 발명의 하나 이상의 실시예에 따른 펌웨어 가상화 시스템을 나타내는 도면.
도 3은 본 발명의 하나 이상의 실시예에 따른 사용자 장치의 임베디드 펌웨어와 인터페이싱하는 도 2에 개시된 가상화 펌웨어 프로바이더를 사용하는 개략적 방법의 플로도.
도 4는 본 발명의 하나 이상의 실시예에 따른 플랫폼의 가상화 펌웨어를 생성하는 방법의 플로도.
도 5는 본 발명의 하나 이상의 실시예에 따른 가상화 펌웨어 플랫폼을 사용하는 사용자 장치의 독립형 동작을 위한 방법의 플로도.
도 6은 본 발명의 하나 이상의 실시예에 따른 예시적인 컴퓨팅 서버의 모듈의 블록도.
본 발명의 상술한 특징을 구체적으로 이해할 수 있도록, 상기 간략화되어 있는 본 발명의 보다 특정된 설명이 실시예를 참조하여 이루어지며, 그 일부는 첨부 도면에 나타나 있다. 그러나, 첨부 도면은 본 발명의 전형적인 실시예를 나타내는 것일 뿐이며, 이에 따라 발명의 범주를 한정하는 것으로 간주되어서는 아니되며, 본 발명에 대해 다른 동등하게 유효한 실시예도 가능함을 유념해야 한다.
다음에 설명하는 실시예에서, "프로세스"는, 실행 컴퓨터(예를 들면, 서버, PC, 모바일 기기 등)에 저장되는 펑션에 대한 레디-투-런(ready-to-run) 코드 베이스 또는 미리 생성된 프로세스 코드를 말하는 것이다. 각 프로세스는, 통합 개발 환경(integrated development environment; IDE)의 사용자에 대해, 이름, 프로세스 ID, 아이콘, 또는 프로세스의 기능을 나타내는 다른 식별자에 의해 고유하게 식별된다. 프로세스는, 사용자 장치들의 임베디드 펌웨어 간에 통신되는 펌웨어 데이터를 포함한다. "실행"은 컴퓨터(로컬 또는 원격, 또는 클라우드 기반)에서의 프로세스의 개시를 말하는 것이다. 전개는 추후에 실행되게 되는 최종 코드를 보내거나 저장하는 것이다. "번들"은, 공통의 속성(API 이름, 공통의 파라미터들, SDK, 파라미터 이름들, 원격 서비스 등)에 의해 조직화되는 프로세스들의 모음을 말한다. 펑션들(예를 들면, 프로세스들)은 프로세스와 연관된 코드의 동작을 설명하는, 사용자에게 제시하기 위한 설명적 용어들 및/또는 이미지들이다. 일부 실시예에서, 펑션들은 프로세스 코드를 포함할 수 있다.
"펌웨어"는 고수준의 소프트웨어에 서비스들을 제공하는 기본적인 펑션에 대한 코드를 포함하여 사용자 장치에 임베드된 비휘발성 메모리에 저장된 코드를 말한다. 후술하는 바와 같이, 사용자 장치는 가상화 펌웨어에 액세스하기 위해 원격 서버에 연결될 수 있는 전자 장치이다. 사용자 장치의 비제한적인 예로는 랩톱, 태블릿, 휴대 전화, 컴퓨터, 가전 기기, 게임 시스템, 프린터, 스캐너, 주변기기, 자동차, 프로세서, 마이크로컨트롤러, 및 펌웨어가 저장된 다른 전자 장치를 포함한다.
본원에 개시된 실시예는 원격 서버 또는 서버들의 그룹(즉, "클라우드")의 펌웨어 라이브러리에 관련되며, 여기에서 사용자 장치는, 사용자 장치의 펌웨어로부터 프로세스에 액세스하도록, 원격 서버를 원격으로 선택하거나 자동으로 연결될 수 있다. 일부 실시예에서, 사용자 장치로부터 원격 서버의 프로세스를 직접 호출하기 위해, 사용자 장치의 펌웨어에 원격 프로세스 호출이 다운로드 및 설치된다. 컴퓨팅 플랫폼은 하드웨어 아키텍처 및 소프트웨어 프레임워크(애플리케이션 프레임워크를 포함)를 포함하며, 이 조합으로 소프트웨어의 실행을 가능하게 한다. 전형적인 플랫폼은 컴퓨터 아키텍처, 운영 체제 및 런타임 라이브러리를 포함한다.
도 1은 본 발명의 하나 이상의 실시예에 따른 펌웨어 가상화 시스템(100)을 나타내는 도면이다. 시스템(100)은 적어도 하나의 사용자 장치(102a...102n), 네트워크(110), 및 적어도 하나의 원격 서버(104a...104n)를 포함한다. 적어도 하나의 사용자 장치(102a...102n)는 총칭해서 사용자 장치(102)라 하고, 개인용 컴퓨터, 주변기기, 가전 기기, 게임 시스템, 서버, 가상 서버, 마이크로컨트롤러(MCU) 및 컨트롤러, 센서, 액추에이터, 게이트웨이에 연결된 에지 장치(edge device), ASIC, 마이크로프로세서 및 프로세서, 휴대폰, 스마트폰, 태블릿, 랩톱 등 프로그램을 저장 및 실행할 수 있는 전자 장치를 포함한다.
각 사용자 장치(102a...102n)는, 적어도 하나의 원격 서버(104a...104n)에 연결하기 위해, 네트워크(110)에 대해 연결 및 인증하는 데 필요한 코드 및 임베디드 펌웨어(103a...103n)를 저장하는 대응하는 메모리(112a...112n)를 포함한다. 펌웨어는 네트워크(110) 및 원격 서버(104)와의 연결을 용이하게 하기 위해 연결 에이전트를 이용한다.
네트워크(110)는, LAN(local area network), WAN(wide area network), WLAN(wireless local area network), 셀룰러 네트워크, Wi-Fi, 인터넷, 또는 인트라넷 네트워크 등의 유선 및/또는 무선 네트워크 중 적어도 하나 또는 그 조합을 포함할 수 있다. 적어도 하나의 원격 서버(104a...104n)는 원격 애플리케이션 서버, 웹 서버, 메일 서버, 호스트 서버, 데이터베이스 서버, 스토리지 서버 등을 포함할 수 있다.
적어도 하나의 원격 서버(104a...104n)는, 펌웨어 집합(120), 장치 프로파일(122), 및 실행 엔진(124)을 이용하여 가상화 펌웨어에 대한 특정 프로세스 호출들을 저장 및 실행하기 위한 메모리(114a...114n) 및 원격 펌웨어 가상화 플랫폼(이하 "플랫폼")(108)을 포함한다. 장치 프로파일(122)은 사용자 장치(102a)에 관한 추가적인 정보(예를 들면, 펌웨어 업데이트 히스토리, 알려진 에러, 확장, 라이브러리 등)를 포함할 수 있다.
또한, 메모리(114a...114n)는 사용자 인터페이스 모듈, 사용자 프로파일/계정의 데이터베이스, 프로세스들의 집합(즉, 프로세스 라이브러리), SDK, 및 네트워크(110)에서의 다른 서버(104n)들에 걸친 프로세스들의 링크 및 실행을 위한 연관 파라미터들을 저장할 수 있다.
또한, 후술하는 바와 같이, 실행 엔진(124)은, 가상화 펌웨어 및 사용자 장치(102)로부터 수신한 펌웨어 데이터에 의거하여 원격 프로세스를 전개한다. 사용자 장치(102)의 펌웨어에 원격 프로세스 호출이 저장되는 실시예에서, 실행 엔진(124)은, 펌웨어 파라미터들 및 호출 파라미터들을 이용하여, 호출되는 식별된 루틴을 상관시키고 프로세스를 동작/실행시킴으로써, 프로세스 라이브러리의 루틴에 대한 호출을 처리한다. 호출 파라미터들은 사용자 장치(102a) 또는 원격 서버(104a)에 저장되며, 일부 실시예에서 그래픽 사용자 인터페이스 또는 버튼 누름 등을 통한 사용자 장치(102a)의 펌웨어와의 상호 작용에 의해 사용자에 의해 직접 지정된다. 프로세스 호출 파라미터들은 사용자 장치(102a)로부터의 펌웨어 데이터 통신으로부터 파싱된다. 일부 실시예에서, 실행 엔진(126)은 프로세스의 결과를 사용자 장치(102a)의 펌웨어에 반환하기에 앞서, 원격 서버(104)에 저장된 다른 프로세스 호출 또는 본래의 프로세스 호출에 아웃풋을 보낼 수 있다.
도 2는 본 발명의 하나 이상의 실시예에 따른 펌웨어 가상화 시스템(200)을 나타내는 도면이다. 시스템(200)은 사용자 장치(102n), 펌웨어 가상화 펌웨어 플랫폼(108), 및 가상화 펌웨어 서비스(2021...202N)를 포함한다. 사용자 장치(102n)는 적어도 CPU(203N), 지원 회로(204N), 및 명령어 및 알고리즘을 포함하는 메모리(112n)를 포함한다. CPU(203N)는 사용자 장치(102n)에 대한 입력 및 출력을 처리한다. CPU(203N)는 임의의 시판 중인 프로세서, 마이크로프로세서, 마이크로컨트롤러 등일 수 있다. 다른 실시예에서, CPU(203N)는 PIC 등의 마이크로컨트롤러이다. 지원 회로(204N)는 클록 회로, 네트워크 통신, 캐시, 전원, I/O 회로 등과 같이 CPU(203N)에 기능을 제공하는 주지의 회로를 포함한다. 다른 실시예는 커스텀 ASIC(Application Specific Integrated Circuit)의 제어 알고리즘을 사용할 수 있다.
메모리(112n)는 데이터 및 실행 가능한 소프트웨어를 저장하는 데 사용되는 디지털 스토리지의 어떤 형태일 수 있다. 이러한 메모리는 제한이 아닌 예시로서 랜덤 액세스 메모리, 리드 온리 메모리, 디스크 스토리지, 광학 스토리지 등을 포함한다. 메모리(112n)는, 사용자 인터페이스(211N), 임베디드 펌웨어(215N), 및 네트워크 연결 매니저(220N)에 대응하는 컴퓨터 판독 가능한 명령어를 저장한다.
일부 실시예에서, 사용자 인터페이스(211N)는 키패드, 전자 버튼, 스피커, 터치스크린, 디스플레이, 또는 다른 사용자 상호 작용 메커니즘을 포함한다. 일부 실시예에서, 사용자 인터페이스(211N)는 사용자가 사용자 장치(102n)와 상호 작용할 수 있도록, 임베디드 펌웨어(215N)와 통신할 수 있다.
임베디드 펌웨어(215N)는 사용자 장치(102n)의 동작을 위한 명령어를 포함한다. 일부 실시예에서, 임베디드 펌웨어(215N)는 고수준의 언어로 작성된 프로그램을 실행하는 데 사용되는 기본 명령어 세트일 수 있다. 다른 실시예에서, 임베디드 펌웨어(215N)는 실행 가능한 프로그램일 수 있다. 임베디드 펌웨어(215N)는, 네트워크 연결 매니저(220N)에 의해 사용자 장치(102n)의 거의 모든 기본적인 입력 신호 및 출력 신호가 통신에 이용 가능하게 하는 코드를 더 포함한다. 사용자 장치(102n)가 프린터인 예에서, 임베디드 펌웨어(215N)는 선택적으로, 버튼, 표시기(예를 들면, LED), 디스플레이 화면에 대한 펌웨어 데이터, 또는 캐시된 프린트 파일 데이터가 네트워크 연결 매니저(220)에게 송신 가능하게 한다.
네트워크 연결 매니저(220N)는 사용자 장치(102n)로부터의 통신을 위한 펌웨어 데이터를 준비할 뿐만 아니라, 가상화 펌웨어 플랫폼(108)으로부터 펌웨어 데이터를 수신한다. 네트워크 연결 매니저(220N)는 유선 또는 무선 네트워킹을 통해 연결될 수 있고, 네트워크(110) 및 플랫폼(108)에 액세스하기 위한 브리지로서 동작한다.
가상화 펌웨어 플랫폼(108)은 네트워크 연결 매니저(220N)로부터의 또는 네트워크 연결 매니저(220N)로의 신호를 인코딩한다. 가상화 펌웨어 플랫폼(108)은 적어도 하나의 가상화 펌웨어 프로바이더(VFP)(202N)(총칭해서 VFP(202)라 함)를 포함한다. VFP(202)는 가상화 펌웨어 라이브러리(120N), 실행 엔진(124N), 장치 인증 모듈(228N), 펌웨어 가상화 모듈(230N), 프로세스 확장 모듈(235N), 및 장치 프로파일(122N)의 데이터베이스를 포함한다. 일부 실시예에서, 가상화 펌웨어 플랫폼(108)은 전형의 서비스 구성 요소(CSC)(2101...210N)에 의해 제공되는 원격 서비스의 호출 및 인터페이싱을 위한 코드뿐만 아니라, 다른 VFP(202)로 프로세스를 실행하는 코드를 포함한다.
장치 인증 모듈(228N)은, 펌웨어를, 가상화 펌웨어 라이브러리(120N) 및/또는 장치 프로파일(122N)에 저장된 가상화 펌웨어와 비교함으로써, 사용자 장치(102n)의 임베디드 펌웨어를 판정한다. 일부 실시예에서, 장치 프로파일(122N)은 또한, 사용자 계정 정보 및 가상화 펌웨어의 커스터마이징에 대한 프리퍼런스(preference) 및 사용자 프리퍼런스에 의거한 가상화 펌웨어의 실행을 포함한다. 예를 들면, 사용자 계정 프리퍼런스는, 사용자의 소유 및 펌웨어에 매칭되는 프린터가 가상화 펌웨어 플랫폼(108)에 연결될 경우, PDF 문서가 생성되며 인쇄되는 모든 문서의 지정된 사용자 이메일 계정으로 보내는 것을 지정할 수 있다. 이메일 계정의 이메일 주소 등의 계정 정보는 사용자 계정 부분으로서 저장될 수 있다.
일부 실시예에서, 장치 인증 모듈(228N)은, 특정 CSC(210)에 대응하는 특정 사용자 계정에 대해 가상화 펌웨어 서비스(2021...202N)와 연관된 토큰 및 크리덴셜(credential)을 확인한다. 예를 들면, 장치 인증 모듈(228N)은 또한, 프로세스 확장 모듈(235N)로부터의 프로세스에 의거하여 송신 이메일 프로세스를 실행하는 POP3 이메일 서버인 CSC(210)에 로그인하기 위해 저장된 이메일 크리덴셜을 검색할 수 있다.
펌웨어 가상화 모듈(230N)은 가상화 펌웨어를 생성할뿐만 아니라, 사용자 장치(102n)로부터의 펌웨어 데이터를 처리한다. 가상화 펌웨어를 생성하기 위해, 펌웨어 가상화 모듈(230N)은 (예를 들면, 사용자 장치(102n)의 소프트웨어 개발자 및 제조업체로부터) 펌웨어를 수신한다. 펌웨어 명령어 및 파라미터(예를 들면, 변수)가 파싱된다. 파라미터 값의 소스는, 그 값이 사용자 장치(102n), VFP(202)로부터의 프로세스, 또는 CSC(210)에 의해 제공되는 서비스로부터 비롯되었는지에 의거하여 판정된다. 또한 파라미터가 검사되어 펌웨어의 다른 파라미터와의 상대적인 연관이 판정된다. 이어서, 파라미터는 각각의 데이터 소스에 할당 및 링크된다. 펌웨어의 링크된 및 연관된 포맷은 가상화 펌웨어 명령어 세트로서 가상화 펌웨어 라이브러리(120N)에 저장된다.
일부 실시예에서, 가상화 펌웨어 라이브러리(120N)는 사용자 장치(102n)에 대한 업데이트된 펌웨어 명령어를 포함한다. 최신 펌웨어 버전을 포함함으로써, 개발자는, 사용자 장치(102n)에 새로운 펌웨어를 설치할 필요 없이, 신속하게 사용자 장치(들)(102)에 전개되는 펌웨어 버전을 배포 및 판정할 수 있다. 즉, 사용자 장치(102n)는, 임베디드 펌웨어(215N)의 기능을 확장하는 네트워크(110)의 가상화 펌웨어로 작동할 수 있다. 더 상세하게는 후술하는 바와 같이, 네트워크(110)를 사용할 수 없는 인스턴스들 중에, 사용자 장치(102)는 네트워크(110) 및 가상화 펌웨어를 다시 사용할 수 있는 시간까지 팩토리 설치 펌웨어로 동작한다.
프로세스 확장 모듈(235N)은 펌웨어 가상화 모듈(230N)과 연계하여, CSC(210)에 전개되는 플랫폼(108)에 의해 제공되는 가상화 펌웨어와 서비스들 간의 프로세스들을 실행한다. 프로세스 확장 모듈(235N)은 가상화 펌웨어 파라미터와 파라미터 값 소스의 링크를 조정(coordination)해, 장치 프로파일(122N)의 사용자 또는 개발자에 의해 지정된 프로세스를 실행한다. 또한, 프로세스 확장 모듈(235N)은, CSC(210)에 필요한 특정 프로세스를 실시하기 위해 가상화 펌웨어를 대응하는 API 및 SDK와 링크시키는 코드를 생성한다. 예를 들면, 프린터(즉, 사용자 장치(102n))는 현재 문서의 프린터 캐시를 취소 및 제거하도록 제조업체에 의해 프로그래밍되는 "인쇄 취소" 버튼을 가질 수 있다. 플랫폼(108)에서의 프로세스에 의해 지정되는 바와 같이 해서, 가상화 펌웨어를 사용하여, 그 동일한 버튼의 두 번 누름은 프린터가 프린터 캐시 데이터를 VFP(202)에 송신하고, 후속으로 캐시 데이터를 추출하여 파일의 디지털 PDF 이미지를 생성하도록 트리거할 수 있다. 이어서, PDF 이미지는 장치 프로파일(122N)에 저장된 이메일 주소로 보내진다. 따라서, 임베디드 펌웨어(215N)에 의한 추가적인 처리를 변경 또는 요하지 않고 프린터의 펌웨어 능력을 확장한다.
CSC(210)는 클라우드 클라이언트(205N)에 의해 가상화되며 플랫폼(108)과 인터페이싱되어, 프로세스가 CSC(210)에 전개된다. 일부 실시예에서, CSC(210)는 네트워크(110)를 통해 플랫폼(108)에 통신 가능하게 연결된다. CSC(210N)는 원격 인터페이스(206N), 애플리케이션 계층(208N), 가상화 계층(212N), 및 물리적 장치(214N)를 포함한다. 각 CSC(210)는 플랫폼(200)에 의해 제공되는 특정 원격 서비스를 대표한다. 예를 들면, CSC(210N)는 인터넷 서비스 및 대응하는 서버(예를 들면, FACEBOOK, EBAY, POP3 이메일, TWITTER, AMAZON, SMS, FTP, HTTP 등)일 수 있고, CSC(2102)는 종래의 로컬 데이터 정보 처리(예를 들면, 이미지 렌더링, 코드 컴파일링, 데이터 분석, 데이터 저장 등)를 제공하는 컴퓨터일 수 있다.
물리적 장치(214N) 또는 머신(CPU, 메모리, 네트워크 라우터 등)은, 애플리케이션 계층(208N)이 이용 가능한 처리 및 저장 리소스를 만들도록, 가상화 계층(212N)에서 가상화된다. 가상화는, 단일 컴퓨터에서, 더욱이는 다수의 머신이 가상화되는 실시예에서, 리던던시(redundancy) 및 증가된 동작 대역을 만든다. 또한, 이러한 실시예에서, 처리 작업 부하는, 물리적 위치에 관계없이 우선순위에 의거하여 다양한 장치에 할당될 수 있다.
애플리케이션 계층(208N)은, 가상화 머신에서 데이터베이스 동작(예를 들면, 계정 프로파일, 웨어하우징(warehousing) 데이터 등을 저장하는 것) 등의 프로그램 및 기능의 실행 런타임을 가능하게 한다. 원격 인터페이스 계층(206N)은, 웹 서버에 액세스하고 API를 이용하기 위한 코드를 포함한다. 원격 인터페이스(206N)는 클라우드 클라이언트(들)(205N)(예를 들면, 씬 클라이언트, Web 브라우저, 모바일 애플리케이션, 터미널 에뮬레이터 프로그램 등)와 통신한다.
클라우드 클라이언트(205N)는 애플리케이션 계층(2081)과 VCP(245)의 데이터 통신을 용이하게 한다. 클라우드 클라이언트(205)는 Web 브라우저, 터미널 에뮬레이터 또는 다른 클라이언트 인터페이스를 제시함으로써, 계층 인터페이스(2061, 2081, 2121, 및 2151)를 단순화한다. 본 발명의 전술한 실시예는, 가상화 펌웨어를 사용하여 사용자 장치(102n)로부터의 펌웨어 데이터에 의거한 원격 프로세스 호출 코드 생성을 용이하게 하도록, 클라우드 클라이언트(205)를 사용할 수 있다. 가상화 펌웨어는 VFP(202)에 의해 생성 및 제공되는 프로세스 호출을 애플리케이션 계층(208N)에 링크시킨다.
일부 실시예에서, 가상화 펌웨어 플랫폼(108)은 임베디드 펌웨어(215)의 능력을 확장하기 위한 추가적인 코드 라이브러리를 포함할 수 있다. 예를 들면, 사용자 장치(102n)가 DVR(digital video recorder)일 경우, DVR 임베디드 펌웨어는 녹화되는 TV 프로그램의 원격 네트워크 스토리지를 위해 네트워크 연결 매니저(220N)를 포함한다. 이러한 예에서, 임베디드 펌웨어(215N)는 원격 플랫폼(108)과 단지 통신하기 위한 명령어를 포함한다. 이어서, 원격 플랫폼(108)의 VFP(202)는 비디오를 수신하기 위해 펌웨어 데이터를 처리하고 가상화 펌웨어 플랫폼(108)을 이용하여 네트워크의 추가적인 및/또는 리던던트의 스토리지와의 조정으로 임베디드 펌웨어(215N)로부터의 녹화를 리디렉션(redirection)한다. 다른 실시예에서, VFP(202)는, 셋톱 박스에 의한 트리거 시에, 녹화 채널을 저장하도록 독립적으로 채널로 맞추는 가상화 펌웨어를 포함할 수 있다. 이러한 예에서, 셋톱 박스 임베디드 펌웨어(215N)는 트리거 파라미터를 전송하고 녹화 프로세스가 VFP(202)에 시프트되어, 셋톱 박스 펌웨어는 DVR로서 확장된 능력을 갖는다.
도 3은 본 발명의 하나 이상의 실시예에 따른 사용자 장치(102n)의 임베디드 펌웨어(215N)와 인터페이싱하는 도 2에 개시된 가상화 펌웨어 프로바이더(202)를 사용하는 개략적인 방법(300)의 플로도이다.
방법(300)은 단계 305에서 개시하여 단계 310으로 계속된다. 단계 310에서, 사용자 장치(102N)는 입력 펌웨어 데이터를 수신한다. 펌웨어 데이터는 사용자에 의해 입력된 데이터뿐만 아니라 원격 서버(104n)에 의해 제공되는 프로세스에 대한 파라미터를 포함한다. 또한, 펌웨어 데이터는 장치 동작 데이터, 프로세서 명령어, 및 외부 주변 장치로부터의 디지털 신호(예를 들면, 센서 데이터, 스위치, 푸시 버튼 등)로 변환되는 아날로그 신호를 포함한다.
다음으로, 단계 315에서, 방법(300)은 펌웨어 데이터를 플랫폼(108)에 통신하도록 임베디드 펌웨어(215N)와 연결 에이전트(예를 들면, 네트워크 연결 매니저(220))를 조정한다. 이어서 방법은 단계 320으로 계속된다. 단계 320에서, 사용자 장치(102N)는 원격 서버(104N)의 플랫폼(108)에 의해 인증된다. 인증은 사용자 장치(102N)에서 작동하는 펌웨어뿐만 아니라 사용자 장치(102N)와 연관된 미리 정해진 사용자 프로파일을 확인하는 것을 포함한다.
단계 325에서, 방법(300)은 임베디드 펌웨어(215N)를 가상화 펌웨어 라이브러리(120N)에 저장된 대응하는 가상화 펌웨어에 매칭시킨다. 각각의 사용자 장치(102)에 대한 펌웨어의 가상화를 도 4에서 더 기술한다. 선택적인 실시예에서, 방법(300)은 단계 335로 계속될 수 있으며, 여기에서 웹 링크 또는 원격 프로세스 호출이 전송되고 임베디드 펌웨어(215N)에 저장된다. 이러한 실시예에서, 사용자 장치(102N)는, 직접적으로 조정 단계 315 없이, 원격 서버(104)의 프로세스의 원격 프로세스 호출을 트리거하는 명령어를 저장한다. 저장할 원격 프로세스의 형태는 원격 서버(104)의 가상화 펌웨어의 사용자 또는 소프트웨어 개발자에 의해 지정된다.
단계 330에서, 사용자 장치(102N)로부터의 펌웨어 데이터는 각 파라미터로 파싱되며 문맥적으로 가상화 펌웨어에 매핑된다. 따라서, 사용자 장치에서의 특정 입력 또는 출력으로부터 비롯되는 파라미터는 대응하는 가상화 펌웨어에 할당된다. 이에 따라, 예를 들면, 전원 표시가 TV에서 ON인 임베디드 펌웨어 파라미터는 가상화 펌웨어에서 동등한 파라미터에 연관된다.
다른 실시예는, 펌웨어 데이터가 미리 파싱되고, 이러한 부분(즉, 파라미터)만이 원격 서버(104N)에 통신되는 것을 포함한다. 이러한 실시예에서, 미리 분석된 펌웨어 데이터는 단계 325에서의 매핑에 의거하여 그에 상당하는 가상화 펌웨어에 할당된다.
단계 340에서, 파싱된 펌웨어 데이터는 단계 325 및 단계 330에서의 매칭 및 매핑에 의거하여 가상화 펌웨어에 삽입된다. 다음으로, 단계 345에서, 원격 프로세스가 가상화 펌웨어 및 사용자 장치(102n)로부터 수신한 펌웨어 데이터에 의거하여 플랫폼(108)에 의해 실행된다.
단계 350에서, 프로세스가 플랫폼에 의해 대응하는 CSC(210)에 전개된다. 예를 계속 들면, 사용자는, 자신의 집에서의 TV 시청을 감시하기 위해, TV 전원 표시가 ON일 경우, 그들의 휴대 전화에 SMS 텍스트 메시지를 보내도록 플랫폼(108)에서의 프로세스를 지정할 수 있다. 이러한 예에서, 펌웨어 데이터는 가상화 펌웨어에 의해 해석되는 TV의 전원 표시이고, 이어서 SMS 서버(즉, CSC(210))에서 SMS 메시지를 보내는 코드를 실행하는 프로세스를 트리거한다. 사용자 계정과 연관된 데이터에 의거하여 원격 서버(104)에 저장되거나 프로세스에서 정의된 바와 같이 텍스트 메시지는 TV 사용의 통지를 포함하고, 사용자 휴대폰의 지정된 휴대폰 번호로 보내진다.
단계 355에서, CSC(210)로부터의 처리된 결과 데이터가 플랫폼(108)에 반환된다. 결과 데이터는 프로세스가 성공적으로 전개되었다는 확인 신호를 포함한다. 또한, 결과 데이터는 CSC(210)로부터의 추가적인 응답의 동적인 접수 및 수신을 포함한다. 예를 계속 들면, 플랫폼(108)은 사용자의 휴대 전화의 번호로부터의 SMS 텍스트 메시지뿐만 아니라 텍스트 메시지의 내용을 접수한다. 따라서, 사용자는 전원 온, 전원 오프, 재설정 시청 타이머 등과 같은 TV 감시를 제어하도록, 원격 서버(104n)의 사용자 프로파일로 저장된 미리 정해진 프로세스 커맨드를 텍스팅할 수 있다.
단계 360에서, CSC로부터 수신된 데이터는 가상화 펌웨어 라이브러리 및 원격 프로세스 파라미터에 의거하여 변환된다. 또한, VFP(202)는 대응하는 API 및 SDK를 이용하여, 사용자 장치(102)의 임베디드 펌웨어(215N)에 네이티브인 코드 또는 신호를 생성한다.
단계 365에서, 결과 데이터는 연결 에이전트에 의해 수신되고 임베디드 펌웨어(215N)에 통신되어 원격 프로세스의 실행이 완료된다. 따라서, 수신된 데이터가 임베디드 펌웨어(215N)의 네이티브 언어여서, 사용자 장치(102N)는, 원격 프로세스 데이터가 임베디드 펌웨어(215N)에 의해 비롯되고 생성된 것처럼 작동한다. 이어서, 방법(300)은 단계 370에서 종료된다.
도 4는 본 발명의 하나 이상의 실시예에 따른 플랫폼(108)에 가상화 펌웨어를 생성하는 방법(400)의 플로도이다. 사용자 장치들에 대한 각 펌웨어 버전은 개별적으로 원격 서버(104)에 저장된다. 또한, 펌웨어 버전은, 다양한 제공 서비스에 대한 원격 프로세스의 실행을 용이하게 하기 위해 변경된 파라미터를 갖는 다수의 하위-반복(sub-iteration)을 포함할 수 있다.
이 방법은 단계 405에서 개시되어 단계 410으로 계속된다. 단계 410에서, 펌웨어 세트가 소프트웨어 개발자 또는 사용자로부터 수신된다. 다음으로, 단계 415에서, 펌웨어는 VFP(202)에 의해 이전에 수신 및 저장된 펌웨어와 비교된다. 이 비교는 원격 서버(104)에 저장된 동일한 펌웨어의 불필요한 카피 횟수를 줄인다. 단계 420에서, 방법(400)은 펌웨어가 이미 가상화되어 있다고 판정할 경우, 방법(400)은 단계 445에서 종료된다. 그러나, 펌웨어가 상이하거나 다른 방식으로 기존 가상화 펌웨어의 변경일 경우, 방법(400)은 단계 425로 진행된다.
단계 425에서, 펌웨어 명령어들은 각각의 변수 파라미터로 파싱된다. 파싱은 파라미터의 문맥 매핑(즉, 하나의 파라미터 값이 다른 파라미터에 어떻게 관련되는지)에 의거한다. 또한, 파라미터는, 주어진 파라미터의 문맥이 나타내는 바에 대해 파싱된다. 예를 들면, 스캐너의 펌웨어에 대해서는, 특정 핀(pin)으로부터의 신호가 개시 버튼의 물리적 버튼 누름을 나타내고 있는지의 여부의 파라미터 값이 파싱되어 원격 프로세스에 대해 인식된다.
단계 430에서, 방법(400)은 특정 파라미터의 값이 비롯된 곳을 판정한다. 파라미터 값은 사용자에 의해 입력되거나, 사용자 장치(102)의 작동 중에 생성되거나, 원격 서버(104)에 장치에 대한 사용자 프로파일로 저장되거나, 원격 소스(예를 들면, CSC(210))로부터 수신될 수 있다.
단계 435에서, 파라미터는 대응하는 값 소스에 할당된다. 할당은, 펌웨어가 펌웨어에의 삽입을 위해 프로세스로부터의 펌웨어 데이터 또는 라우팅 데이터를 접수하도록, 파라미터를 네트워크 파라미터에 링크하는 것을 포함한다.
단계 440에서, 펌웨어는 가상화 펌웨어 명령어 세트로서 가상화 펌웨어 라이브러리(120N)에 저장된다. 전술한 바와 같이, 라이브러리는, 플랫폼(108)이 원격 프로세스를 실행하는 것뿐만 아니라 주어진 사용자 디바이스에서 업데이트된 펌웨어가 동작하는 것을 보장하는 데 이용 가능하다. 이어서, 방법(400)은 단계 445에서 종료된다.
일부 실시예에서, 가상화 펌웨어는 호출되어 실시간 실행으로 작동되고 임베디드 펌웨어 커맨드는 원격 펌웨어와 통합되어 사용자 인터페이스(211)를 통해 가상화 펌웨어의 실시간 실행을 제공한다. 실시간 실행은 원격 프로세스 호출, 커맨드의 디코딩 또는 원격 서버(104a)에서 업데이트되는 서비스들에 대한 문의를 포함해서, 사용자 장치(102n)가 개발되었을 때에 제공되는 것 이외에도 사용자 장치(102n) 다음으로 개발된 서비스들이 호출될 수 있다. 예를 들면, 사용자에게는, 어떤 쇼가 현재 사용자에 의해 사용자에 의해 시청되고 있는지의 TWEET을 포스팅하기 위해 원격인 TV에 키를 할당하는 옵션이 제시될 수 있다. 가상화 펌웨어 플랫폼(108)은, TWITTER 소셜 서비스가 원격 제어 후 개발되었음에 상관없이 TWEET이 송신되게 할 수 있다. 따라서, 펌웨어 능력은 가상화 펌웨어 플랫폼(108)에 의해 제공되는 것, 및 순전히 사용자 장치(102n)의 임베디드 펌웨어(215)의 능력으로만 한정되는 것은 아니다.
도 5는 본 발명의 하나 이상의 실시예에 따라 가상화 펌웨어 플랫폼(108)을 사용하는 사용자 장치(102N)의 독립형 작업에 대한 방법(500)의 플로도이다. 방법(500)은, 사용자 장치가 가상화 펌웨어 플랫폼(108)에 액세스하지 않을 수 있는 경우를 다루는 예시적인 방법이다. 방법(500)은 단계 505에서 개시되고 단계 510으로 계속되어, 연결 매니저(220)는 네트워크 연결이 끊어지거나 사용 불가임을 판정한다. 선택적으로, 단계 515에서, 방법(500)은 사용자에게, 드롭된 연결 및 축소된 펌웨어 능력을 통지할 수 있다. 다음으로, 단계 520에서, 사용자 장치(102N)는 축소 임베디드 명령어 세트로 작동한다. 일부 실시예에서, 축소 임베디드 명령어 세트는 사용자 장치(102N)의 디폴트 펌웨어 명령어 세트이다. 단계 520에서, 임베디드 펌웨어를 갖는 사용자 장치(102N)는, 임베디드 펌웨어에 의해 가상화 펌웨어가 실행되는 것을 요하지 않는 능력으로 작동한다.
단계 525에서, 사용자 장치(102N)는 가상화 펌웨어 펑션 및 쿼리를 요청하는 능력의 큐를 생성 및 저장한다. 방법(500)은 단계 530으로 계속되어, 원격 서버(104N)에의 연결이 이용 가능한지의 여부를 판정하고, 연결이 있을 때까지 단계 단계 525에서의 큐 리스트의 구축으로 되돌아간다. 연결이 이용 가능할 경우, 방법(500)은 단계 535로 계속되어, 저장된 쿼리들을 원격 서버(104N)에 전송하여 가상화 펌웨어 플랫폼(108)에 액세스한다.
다음으로 단계 540에서, 전송된 쿼리들은 복호되어 원격 서버(104n)에서의 원격 프로세스에 대해 파싱된다. 단계 545에서, 방법이 실행 및 전개되어 방법(300)에서 상술한 바와 같이, 원격 서비스로부터의 결과 데이터를 반환한다. 방법(500)은 단계 550에서 종료된다.
여기에 개시된 방법은 범주의 제한이 아닌 도 1의 시스템(100)을 구현하는 예시적인 방법의 예이다. 추가적인 실시예는 다양한 개시 방법의 단계들의 다른 순서 또는 조합으로 행해지는 방법 단계를 포함할 수 있다.
도 6은 본 발명의 하나 이상의 실시예에 따른 예시적인 컴퓨팅 서버 내의 모듈들의 블록도이다. 컴퓨터 시스템(600)은 상술한 실시예에서의 서버 또는 전자 장치를 포함한 실질적으로 유사한 구조를 포함한다.
가상화 펌웨어에 대한 방법 및 장치의 다양한 실시예들. 이러한 컴퓨터 시스템의 하나는 도 6에 나타낸 컴퓨터 시스템(600)이며, 다양한 실시예에서 도 1 내지 도 5에 나타난 요소 또는 기능의 어느 것을 실현할 수 있다. 다양한 실시예에서, 컴퓨터 시스템(600)은 상술한 방법을 구현하도록 구성될 수 있다. 컴퓨터 시스템(600)은 상술한 실시예의 임의의 다른 시스템, 장치, 요소, 기능 또는 방법을 실현하는 데 사용될 수 있다. 예시된 실시예에서, 컴퓨터 시스템(600)은 다양한 실시예에서 프로세서-실행 가능한 실행 프로그램 명령어(622)(예를 들면, 프로세서(들)(610)에 의해 실행 가능한 프로그램 명령어)들로서 방법(300, 400, 및 500)을 구현하도록 구성될 수 있다.
예시된 실시예에서, 컴퓨터 시스템(600)은 입력/출력(I/O) 인터페이스(630)를 통해 시스템 메모리(620)에 결합된 하나 이상의 프로세서(610a-610n)를 포함한다. 컴퓨터 시스템(600)은 I/O 인터페이스(630)에 결합된 네트워크 인터페이스(640)와, 커서 제어 장치(660), 키보드(670), 및 디스플레이(들)(680) 등의 하나 이상의 입력/출력 장치(660)를 더 포함한다. 일부 실시예에서, 키보드(670)는 터치스크린 입력 장치여도 된다.
다양한 실시예에서, 임의의 구성 요소는 시스템에 의해 상술한 펌웨어를 가상화하는 데 사용될 수 있다. 다양한 실시예에서, 사용자 인터페이스는 디스플레이(680)에 생성 및 표시될 수 있다. 일부 경우에, 실시예가 컴퓨터 시스템(600)의 단일 인스턴스를 사용하여 구현될 수 있지만, 다른 실시예에서 다수의 이러한 시스템, 또는 컴퓨터 시스템(600)을 구성하는 다수의 노드가 다양한 실시예의 다른 부분 또는 인스턴스를 호스팅하도록 구성될 수 있음을 고려한다. 예를 들면, 일 실시예에서, 일부 요소는, 다른 요소를 구현하는 노드와는 구별되는 컴퓨터 시스템(600)의 하나 이상의 노드를 통해 구현될 수 있다. 다른 예에서는, 다수의 노드가 분산 방식으로 컴퓨터 시스템(600)을 구현할 수 있다.
다른 실시예에서, 컴퓨터 시스템(600)은, 제한이 아닌 예시로서 개인용 컴퓨터 시스템, 메인프레임 컴퓨터 시스템, 휴대용 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 애플리케이션 서버, 스토리지 장치, 스위치, 모뎀, 라우터 등의 주변기기, 또는 일반적으로 임의의 타입의 컴퓨팅 또는 전자 장치를 포함하는 다양한 타입의 장치 중 어느 것일 수 있다.
다양한 실시예에서, 컴퓨터 시스템(600)은 하나의 프로세서(610)를 포함하는 유니프로세서 시스템, 또는 복수(예를 들면, 2개, 4개, 8개 또는 다른 적절한 수)의 프로세서(610)를 포함하는 멀티프로세서 시스템일 수 있다. 하나의 프로세서(610)를 포함하는 유니프로세서 시스템은 단일 프로세서의 기능을 나눠, 프로그램의 동시 데이터 처리 및 실행을 위한 다수의 프로세서로서 보일 수 있다. 프로세서(610)는 명령어를 실행할 수 있는 임의의 적절한 프로세서일 수 있다. 예를 들면, 다양한 실시예에서, 프로세서(610)는 다양한 ISA(instruction set architecture)의 어느 것을 구현하는 범용 또는 임베디드 프로세서일 수 있다. 멀티프로세서 시스템에서, 프로세서(610) 각각은 일반적으로, 반드시 그러한 것은 아니지만, 동일한 ISA를 구현할 수 있다.
시스템 메모리(620)는 프로세서(610)에 의해 액세스 가능한 프로그램 명령어(622), 펌웨어(633), 및/또는 데이터(632)를 저장하도록 구성될 수 있다. 다양한 실시예에서, 시스템 메모리(620)는, SRAM(static random access memory), SDRAM(synchronous dynamic RAM), 비휘발성/플래시 타입 메모리, 또는 임의의 다른 타입의 메모리 등의 임의의 적절한 메모리 기술을 사용하여 구현될 수 있다. 상술한 실시예에서, 상술한 실시예의 요소의 어느 것을 구현하는 프로그램 명령어 및 데이터는 시스템 메모리(620) 내에 저장될 수 있다. 다른 실시예에서, 프로그램 명령어 및/또는 데이터는 시스템 메모리(620) 또는 컴퓨터 시스템(600)과는 별개인 다른 타입의 컴퓨터-액세스 가능한 매체 또는 유사한 매체에 수신, 송신 또는 저장될 수 있다.
일 실시예에서, I/O 인터페이스(630)는 네트워크 인터페이스(640) 또는 입력/출력 장치(650) 등의 다른 주변 인터페이스를 포함하여, 프로세서(610), 시스템 메모리(620), 장치 내의 임의의 주변 장치 간의 I/O 트래픽을 조정하도록 구성될 수 있다. 일부 실시예에서, I/O 인터페이스(630)는, 하나의 구성 요소(예를 들면, 시스템 메모리(620))로부터의 데이터 신호를 다른 구성 요소(예를 들면, 프로세서(610))에 의한 사용에 적합한 포맷으로 변환하도록, 임의의 필요한 프로토콜, 타이밍 또는 다른 데이터 변환을 행할 수 있다. 일부 실시예에서, I/O 인터페이스(630)는, 예를 들면 PCI(Peripheral Component Interconnect) 버스 규격 또는 USB(Universal Serial Bus) 규격의 이형 등의 다양한 타입의 주변 버스를 통해 연결된 장치에 대한 지원을 포함할 수 있다. 일부 실시예에서, I/O 인터페이스(630)의 펑션은, 예를 들면 노스 브리지 및 사우스 브리지 등의 2개 이상의 별개의 구성 요소로 분할될 수 있다. 또한, 일부 실시예에서, 시스템 메모리(620)에의 인터페이스 등의 I/O 인터페이스(630)의 기능의 일부 또는 전부가 직접 프로세서(610)에 통합될 수 있다.
네트워크 인터페이스(640)는, 컴퓨터 시스템(600)과 하나 이상의 외부 시스템 등의 네트워크(예를 들면, 네트워크(690))에 연결된 다른 장치 사이, 또는 컴퓨터 시스템(600)의 노드들 사이에서 데이터가 교환 가능하게 구성될 수 있다. 다양한 실시예에서, 네트워크(690)는, 제한이 아닌 예시로서 LAN(Local Area Network)(예를 들면, Ethernet 또는 기업 네트워크), WAN(Wide Area Network)(예를 들면, 인터넷), 무선 데이터 네트워크, 셀룰러 네트워크, Wi-Fi, 일부 다른 전자 데이터 네트워크, 또는 그 일부 조합을 포함하는 하나 이상의 네트워크를 포함할 수 있다. 다양한 실시예에서, 네트워크 인터페이스(640)는, 예를 들면, 임의의 적절한 유형의 이더넷 네트워크 등의 유선 또는 무선의 일반적인 데이터 네트워크를 통해, 아날로그 음성 네트워크 또는 디지털 파이버 통신 네트워크 등의 통신/전화 네트워크를 통해, Fibre Channel SAN 등의 스토리지 에어리어 네트워크를 통해, 또는 임의의 다른 적절한 유형의 네트워크 및/또는 프로토콜을 통해 통신을 지원할 수 있다.
입력/출력 장치(650)는 일부 실시예에서, 디스플레이 단말기, 키보드, 키패드, 터치패드, 터치스크린, 스캐닝 장치, 음성 또는 광학 인식 장치, 또는 하나 이상의 컴퓨터 시스템(600)에 의한 데이터의 입력 및 액세스에 적절한 임의의 다른 장치를 하나 이상 포함할 수 있다. 다수의 입력/출력 장치(650)가 컴퓨터 시스템(600)에 존재해도 되고, 또는 컴퓨터 시스템(600)의 다양한 노드에 분산되어도 된다. 일부 실시예에서, 유사한 입력/출력 장치가 컴퓨터 시스템(600)과 별개로 있을 수 있고, 네트워크 인터페이스(640) 등의 유선 또는 무선 연결을 통해 컴퓨터 시스템(600)의 하나 이상의 노드와 상호 작용할 수 있다.
일부 실시예에서, 예시된 컴퓨터 시스템은 도 3 내지 도 5의 플로우도에 의해 예시된 방법 등 상술한 방법의 어느 것을 구현할 수 있다. 다른 실시예에서, 다른 요소 및 데이터가 포함될 있다.
통상의 기술자는, 컴퓨터 시스템(600)이 단순한 예시이며 실시예의 범위를 한정하는 것이 아님을 이해할 것이다. 특히, 컴퓨터 시스템 및 장치는, 컴퓨터, 네트워크 장치, 인터넷 기기, 스마트폰, 태블릿, PDA, 무선 전화, 호출기 등을 포함하는 다양한 실시예의 예시 펑션을 수행할 수 있는 하드웨어 또는 소프트웨어의 임의의 조합을 포함할 수 있다. 컴퓨터 시스템(600)은 또한, 도시되어 있지 않은 다른 장치에 연결되거나, 대신 독립형 시스템으로서 작동할 수도 있다. 또한, 일부 실시예에서, 예시된 구성 요소에 의해 제공되는 기능은 몇몇 구성 요소로 조합되거나, 추가적인 구성 요소에 분산될 수 있다. 마찬가지로, 일부 실시예에서, 도시된 구성 요소의 일부의 기능은 제공되지 않거나, 및/또는 다른 추가적인 기능이 이용 가능할 수 있다.
다양한 아이템이 사용과 함께 메모리 또는 스토리지에 저장되는 것으로 나타나 있지만, 이들 아이템 또는 그 일부가 메모리 관리 및 데이터 무결성을 목적으로 메모리와 다른 저장 장치 간에 전송될 수 있음을, 통상의 기술자는 또한 이해할 것이다. 또는, 다른 실시예에서, 소프트웨어 구성 요소의 일부 또는 전부는 다른 장치의 메모리에서 실행되어도 되고, 컴퓨터 간 통신을 통해 예시된 컴퓨터 시스템과 통신할 수 있다. 시스템 구성 요소 또는 데이터 구조의 일부 또는 전부는 컴퓨터 액세스 가능한 매체 또는 휴대용 제품에 (예를 들면, 명령어 또는 구조화된 데이터로서) 저장되어, 상술한 다양한 예의 적절한 드라이브에 의해 판독될 수 있다. 일부 실시예에서, 컴퓨터 시스템(600)과는 별개인 컴퓨터 액세스 가능한 매체에 저장된 명령어는, 네트워크 및/또는 무선 링크 등의 통신 매체를 통해 전송되는 전기, 전자기, 또는 디지털 신호 등의 전송 매체 또는 신호를 통해 컴퓨터 시스템(600)에 전송될 수 있다. 다양한 실시예는, 컴퓨터 액세스 가능한 매체에서 또는 통신 매체를 통해 전술한 설명에 따라 실시되는 명령어 및/또는 데이터를 수신, 송신 또는 저장하는 것을 더 포함할 수 있다. 일반적으로, 컴퓨터 액세스 가능한 매체는, 예를 들면, 디스크 또는 DVD/CD-ROM 등의 자기 또는 광학 매체, RAM(예를 들면, SDRAM, DDR, RDRAM, SRAM 등), ROM 등의 휘발성 또는 비휘발성 매체 등의 스토리지 매체 또는 메모리 매체를 포함할 수 있다.
본원에서 기술하는 방법은 다른 실시예에서, 소프트웨어, 하드웨어, 또는 그 조합으로 구현되어도 된다. 또한, 방법의 순서는 변경될 수 있으며, 다양한 요소가 추가, 재정렬, 조합, 생략 또는 다른 방식으로 변경될 수 있다. 본원에서 기술하는 모든 예는 제한이 아니게 제시되는 것이다. 다양한 변형 및 변경이 본 발명의 이점을 갖는 본 기술 분야의 통상의 기술자에게 명확하도록 이루어질 수 있다. 실시예에 따른 실현이 특정 실시예의 맥락에서 설명되어 있다. 이러한 실시예는 예시이며 제한이 아님을 의도하고 있다. 많은 변형, 변경, 추가 및 개선이 가능하다. 따라서, 본원에서 단일 인스턴스로서 설명되는 구성 요소들에 대해 복수의 인스턴스가 마련될 수도 있다. 다양한 구성 요소, 동작 및 데이터 스토어 사이의 경계는 다소 임의적이며, 특정 작업이 특정 예시적인 구성의 맥락에서 예시된다. 다른 기능의 할당이 고려되며 다음의 청구범위에 포함될 수 있다. 마지막으로, 예시적인 구성에서 이산된 구성 요소로 제시된 구조 및 기능은 결합 구조 또는 구성 요소로서 구현될 수 있다. 이들 및 다른 변형, 변경, 추가 및 개선은 다음의 청구범위에서 정의되는 바와 같이 실시예의 범위 내에 포함될 수 있다.
전술한 것은 본 발명의 실시예에 대한 것이며, 본 발명의 다른 및 추가적인 실시예가 그 기본적인 범주에서 벗어나지 않고 고안될 수 있으며, 그 범주는 다음의 청구범위에 의해 결정된다.

Claims (15)

  1. 사용자 장치의 펌웨어를 가상화하도록 동작되는 방법으로서,
    상기 사용자 장치에 대한 가상화 펌웨어를 원격 서버에 저장하는 단계,
    상기 사용자 장치로부터의 펌웨어 데이터를 네트워크를 통해 수신하는 단계,
    상기 펌웨어 데이터의 부분을 상기 원격 서버에 저장된 대응하는 가상화 펌웨어에 할당하는 단계,
    상기 펌웨어 데이터의 부분을 상기 대응하는 가상화 펌웨어에 삽입하는 단계, 및
    상기 펌웨어 데이터의 부분을 포함하는 대응하는 가상화 펌웨어에 의거하여, 상기 원격 서버에 의해 제공되는 원격 서비스에 액세스하도록, 적어도 하나의 원격 프로세스를 전개하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 펌웨어 데이터는 상기 사용자 장치의 임베디드(embedded) 펌웨어로부터의 커맨드를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 펌웨어 데이터를 파싱(parsing)하는 단계는, 상기 커맨드의 트리거 파라미터 및 타겟 파라미터를 식별하는 단계를 더 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 식별된 트리거 파라미터 및 타겟 파라미터의 파라미터 값에 대한 대응하는 소스를 판정하는 단계를 더 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 적어도 하나의 원격 프로세스는, 상기 원격 서버의 플랫폼에 의해 가상화되는 전형의 서비스 구성 요소(classic services component; CSC)에의 전개를 위한 프로세스에 대응하는 방법.
  6. 제 5 항에 있어서,
    상기 적어도 하나의 원격 프로세스를 전개하는 단계는, 상기 CSC에 대응하는 네이티브(native) 언어로 프로세스 코드를 생성하는 단계, 및 상기 생성된 프로세스 코드를 상기 CSC에 실행하는 단계를 더 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 사용자 장치에 저장된 펌웨어는 상기 원격 서버에 저장된 가상화 펌웨어와 상이한 방법.
  8. 제 1 항에 있어서,
    상기 가상화 펌웨어에 삽입하기 위해 상기 사용자 장치에 대응하여 상기 원격 서버에 저장된 사용자 데이터를 검색하는 단계를 더 포함하는 방법.
  9. 사용자 장치로부터 원격 서버의 펌웨어 가상화 시스템에 액세스하는 방법으로서,
    상기 사용자 장치의 연결 매니저(connection manager)를 사용하여, 네트워크를 통해 상기 원격 서버의 원격 가상화 펌웨어 플랫폼에 연결하는 단계,
    상기 사용자 장치에 저장된 임베디드 펌웨어로부터의 펌웨어 데이터를, 상기 펌웨어 데이터에 의거한 원격 프로세스의 전개를 위해 상기 가상화 펌웨어 플랫폼에 전송하는 단계,
    상기 가상화 펌웨어 플랫폼에 의해 실행된 원격 프로세스로부터의 처리 데이터를 수신하는 단계로서, 상기 처리 데이터는 상기 임베디드 펌웨어의 네이티브 언어인 상기 수신하는 단계, 및
    상기 처리 데이터에 의거하여 상기 사용자 장치 및 임베디드 펌웨어를 동작시키는 단계를 포함하는 방법.
  10. 제 9 항에 있어서,
    상기 연결하는 단계는 상기 사용자 장치를 상기 원격 서버에서의 대응하는 사용자 계정으로 인증하는 단계를 더 포함하는 방법.
  11. 제 9 항에 있어서,
    상기 펌웨어 데이터는 상기 사용자 장치의 임베디드 펌웨어로부터의 커맨드를 더 포함하는 방법.
  12. 제 11 항에 있어서,
    상기 펌웨어 데이터는 상기 커맨드의 트리거 파라미터 및 타겟 파라미터를 더 포함하는 방법.
  13. 제 9 항에 있어서,
    상기 임베디드 펌웨어를 이용하여 상기 가상화 펌웨어 플랫폼에 의해 원격 프로세스의 전개를 개시하는 원격 프로세스 호출을, 상기 사용자 장치의 임베디드 펌웨어에 설치하는 단계를 더 포함하는 방법.
  14. 사용자 장치의 펌웨어를 가상화하도록 동작되는 시스템으로서,
    a) 적어도 하나의 프로세서,
    b) 적어도 하나의 네트워크에 연결된 적어도 하나의 입력 장치, 및
    c) 적어도 하나의 프로세서에 의한 실행 시,
    i. 상기 사용자 장치에 대한 가상화 펌웨어를 원격 서버에 저장하는 단계,
    ii. 상기 사용자 장치로부터의 펌웨어 데이터를 네트워크를 통해 수신하는 단계,
    iii. 상기 펌웨어 데이터의 부분을 상기 원격 서버에 저장된 대응하는 가상화 펌웨어에 할당하는 단계,
    iv. 상기 펌웨어 데이터의 부분을 상기 대응하는 가상화 펌웨어에 삽입하는 단계, 및
    v. 상기 펌웨어 데이터의 부분을 포함하는 대응하는 가상화 펌웨어에 의거하여, 상기 원격 서버에 의해 제공되는 원격 서비스에 액세스하도록, 적어도 하나의 원격 프로세스를 전개하는 단계를 포함하는 방법을 실행하는 프로세서 실행 가능한 명령어를 저장하는 적어도 하나의 스토리지 장치를 포함하는
    시스템.
  15. 제 14 항에 있어서,
    상기 펌웨어 데이터는 상기 사용자 장치의 임베디드 펌웨어로부터의 커맨드를 더 포함하는 시스템.
KR1020167000659A 2013-07-12 2014-07-10 펌웨어 가상화를 위한 방법 및 장치 KR102073678B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361845395P 2013-07-12 2013-07-12
US61/845,395 2013-07-12
PCT/US2014/046215 WO2015006599A1 (en) 2013-07-12 2014-07-10 Method and apparatus for firmware virtualization

Publications (2)

Publication Number Publication Date
KR20160061306A true KR20160061306A (ko) 2016-05-31
KR102073678B1 KR102073678B1 (ko) 2020-02-06

Family

ID=52278052

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167000659A KR102073678B1 (ko) 2013-07-12 2014-07-10 펌웨어 가상화를 위한 방법 및 장치

Country Status (9)

Country Link
US (2) US9830136B2 (ko)
EP (1) EP3019956A4 (ko)
JP (1) JP6464162B2 (ko)
KR (1) KR102073678B1 (ko)
CN (1) CN105765533B (ko)
CA (1) CA2915695C (ko)
HK (1) HK1225471A1 (ko)
SG (1) SG11201600194SA (ko)
WO (1) WO2015006599A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3054763B1 (fr) * 2016-07-29 2019-08-30 Dover Europe Sarl Systeme de protection avancee d'elements consommables ou detachables d'imprimante industrielle
CN106301914B (zh) * 2016-08-16 2019-10-25 上海斐讯数据通信技术有限公司 一种配置数据方法
CN106897027B (zh) * 2017-01-18 2020-03-24 成都电科致远网络科技有限公司 一种基于桌面虚拟化的分布式存储服务系统及方法
JP2018120422A (ja) * 2017-01-25 2018-08-02 ルネサスエレクトロニクス株式会社 車載通信システム、ドメインマスタ、及びファームウェア更新方法
US20190030544A1 (en) * 2017-07-25 2019-01-31 BioHiTech America, LLC Systems and methods of intelligently controlling equipment such as food waste machines
US11269308B2 (en) 2017-12-01 2022-03-08 Ciambella Ltd. Method and apparatus for creating and managing smart programmable logic controller (PLC) solutions
US10802821B2 (en) * 2018-07-24 2020-10-13 Vmware, Inc. Firmware management
US11789748B2 (en) 2020-10-05 2023-10-17 SK Hynix Inc. Firmware parameters optimizing systems and methods
KR102553371B1 (ko) 2023-03-29 2023-07-07 주식회사 하임아이엔씨 사용 환경에 따른 커스터마이징된 mcu 펌웨어 업데이트 자동화 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US562360A (en) * 1896-06-16 Drawing-press
US20020194313A1 (en) * 2001-06-18 2002-12-19 Brannock Kirk D. Method and apparatus for distributing computer platform firmware across a network
US20040267926A1 (en) * 2003-06-26 2004-12-30 Rothman Michael A. Accessing firmware of a remote computer system using a remote firmware interface
US20070234341A1 (en) * 2001-11-06 2007-10-04 Sandisk Corporation Implementation of In-System Programming to Update Firmware 0n Memory Cards

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623604A (en) * 1992-11-18 1997-04-22 Canon Information Systems, Inc. Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral
US6108715A (en) 1994-12-13 2000-08-22 Microsoft Corporation Method and system for invoking remote procedure calls
US6266809B1 (en) * 1997-08-15 2001-07-24 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
US6158031A (en) 1998-09-08 2000-12-05 Lucent Technologies, Inc. Automated code generating translator for testing telecommunication system devices and method
US7376904B2 (en) 2000-06-13 2008-05-20 National Instruments Corporation Automatic generation of programs with GUI controls for interactively setting or viewing values
US6907446B1 (en) 2000-10-16 2005-06-14 Implicit Networks, Inc. Method and system for dynamic delivery of beads
US20020111995A1 (en) * 2001-02-14 2002-08-15 Mansour Peter M. Platform-independent distributed user interface system architecture
US20020194608A1 (en) 2001-04-26 2002-12-19 Goldhor Richard S. Method and apparatus for a playback enhancement system implementing a "Say Again" feature
CA2460208A1 (en) 2001-09-28 2003-04-10 British Telecommunications Public Limited Company An integrity manager for delaying client service requests
US6895573B2 (en) 2001-10-26 2005-05-17 Resultmaker A/S Method for generating a workflow on a computer, and a computer system adapted for performing the method
US7346672B2 (en) 2002-03-12 2008-03-18 Hewlett-Packard Development Company, L.P. Automatic TFTP firmware download
US8074201B2 (en) 2002-07-10 2011-12-06 National Instruments Corporation Deployment and execution of a program on an embedded device
AU2003251542A1 (en) 2002-07-03 2004-01-23 Tokyo Electron Limited Method for dynamic sensor configuration and runtime execution
SE524627C2 (sv) 2002-10-07 2004-09-07 Abb Research Ltd Trådlös regulator och förfarande för styrning av en anordning anordnad relativt en robot
WO2005020021A2 (en) 2003-08-22 2005-03-03 Idx Systems Corporation Information system supporting customizable user interfaces and process flows
US8104043B2 (en) 2003-11-24 2012-01-24 Microsoft Corporation System and method for dynamic cooperative distributed execution of computer tasks without a centralized controller
US20060036755A1 (en) 2004-05-07 2006-02-16 Abdullah Ibrahim S Meta-protocol
US7810099B2 (en) 2004-06-17 2010-10-05 International Business Machines Corporation Optimizing workflow execution against a heterogeneous grid computing topology
US7603562B2 (en) * 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
US7530059B2 (en) 2005-02-18 2009-05-05 International Business Machines Corporation Method for inlining native functions into compiled java code
US9317259B2 (en) 2005-05-12 2016-04-19 International Business Machines Corporation Apparatus, system, and method for automatically generating a reusable software component for interfacing with a web service
US7558915B2 (en) * 2005-06-06 2009-07-07 Dell Products L.P. System and method for updating the firmware of a device in a storage network
US20070056024A1 (en) * 2005-09-05 2007-03-08 Ho-Hsiung Hsu Method for remote server login
US7481361B2 (en) 2005-09-29 2009-01-27 International Business Machines Corporation Method and system for identifying unsafe synthetic transactions and modifying parameters for automated playback
KR100687762B1 (ko) 2006-03-07 2007-02-27 한국전자통신연구원 코드 해석 장치, 코드정보 제공 장치 및 이를 이용한 방법
JP4808558B2 (ja) 2006-07-12 2011-11-02 日本電信電話株式会社 連携シナリオ作成支援システム及びその方法並びにプログラム
US7886234B2 (en) 2006-10-13 2011-02-08 Mediatek Inc. Systems and methods for creating embedded target images
KR20080044576A (ko) 2006-11-17 2008-05-21 오종택 애드혹 통신 네트워크를 이용한 전력분산 장치 및 시스템과그 방법
US10997531B2 (en) 2007-09-11 2021-05-04 Ciambella Ltd. System, method and graphical user interface for workflow generation, deployment and/or execution
US20090198770A1 (en) 2008-02-04 2009-08-06 Universal Scientific Industrial Co., Ltd. System and method of updating codes in controller
US9311115B2 (en) 2008-05-13 2016-04-12 Apple Inc. Pushing a graphical user interface to a remote device with display rules provided by the remote device
US8249950B2 (en) 2008-07-11 2012-08-21 Ebay Inc. Payment mechanism integration wizard
US8793678B2 (en) * 2008-08-25 2014-07-29 Power-One Italy S.P.A. Hardware virtualization system
CN101373441B (zh) * 2008-09-19 2012-04-18 苏州壹世通科技有限公司 一种基于固件的虚拟化平台系统
DE102009011679A1 (de) 2009-02-23 2010-08-26 Pilz Gmbh & Co. Kg Verfahren und Vorrichtung zum Erstellen eines Anwenderprogrammes für eine Sicherheitssteuerung
US8948067B2 (en) 2009-04-23 2015-02-03 Honeywell International Inc. Wireless controller grids for process control and other systems and related apparatus and method
WO2010135359A2 (en) * 2009-05-19 2010-11-25 Smx Inet Global Services Sa Providing a local device with computing services from a remote host
US8214653B1 (en) * 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
JP2011150430A (ja) 2010-01-19 2011-08-04 Kyocera Mita Corp Sdk配布パッケージ生成装置、sdk配布パッケージ生成方法、およびsdk配布パッケージ生成プログラム
US8869138B2 (en) * 2011-11-11 2014-10-21 Wyse Technology L.L.C. Robust firmware update with recovery logic
US8775781B2 (en) * 2010-03-25 2014-07-08 Microsoft Corporation Intelligent boot device selection and recovery
US8655461B2 (en) 2010-05-25 2014-02-18 Siemens Product Lifecycle Management Software Inc. Method, system, and non-transitory computer readable storage medium for generating code for a closed-loop controller
CN102262557B (zh) 2010-05-25 2015-01-21 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
US8959363B2 (en) * 2010-06-03 2015-02-17 Intel Corporation Systems, methods, and apparatus to virtualize TPM accesses
US8479154B1 (en) 2010-08-20 2013-07-02 Google Inc. Interaction with partially constructed mobile device applications
CN102479079B (zh) 2010-11-29 2015-04-01 中兴通讯股份有限公司 应用生成方法和装置
US20120198434A1 (en) * 2011-01-31 2012-08-02 Digi International Inc. Virtual bundling of remote device firmware upgrade
US20120233588A1 (en) 2011-03-10 2012-09-13 Infosys Technologies Ltd. Blended service creation, test, and deployment environment for multiple service endpoints
US9250883B2 (en) 2011-06-02 2016-02-02 Open Invention Network, Llc System and method for pervasive software platform-based model driven architecture application generator
JP5881835B2 (ja) * 2011-10-21 2016-03-09 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 基本入出力システム(bios)の機能にアクセスするウェブベースのインターフェース
US20130201316A1 (en) 2012-01-09 2013-08-08 May Patents Ltd. System and method for server based control
US20150045960A1 (en) 2012-01-23 2015-02-12 Scl Elements Inc. Programmable peripheral unit
AU2013247347B2 (en) 2012-04-12 2018-02-15 Ivanti, Inc. Configuration of third party applications in a sandboxed environment
US9015694B2 (en) * 2012-10-31 2015-04-21 Aruba Networks, Inc Cloud-based firmware distribution service
CA2915619C (en) 2013-06-18 2021-11-23 Ciambella Ltd. Method and apparatus for customized software development kit (sdk) generation
KR102243793B1 (ko) 2013-06-18 2021-04-26 시암벨라 리미티드 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치
US20150127192A1 (en) 2013-11-06 2015-05-07 Hitachi, Ltd Wireless vehicle control system
US9619122B2 (en) 2014-01-10 2017-04-11 Ciambella Ltd. Method and apparatus for automatic device program generation
JP6441061B2 (ja) 2014-12-16 2018-12-19 株式会社ダイヘン 機械制御システム及び機械制御システムのユーザインタフェース設定方法
US9547482B2 (en) 2015-06-02 2017-01-17 Sap Portals Israel Ltd. Declarative design-time experience platform for code generation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US562360A (en) * 1896-06-16 Drawing-press
US20020194313A1 (en) * 2001-06-18 2002-12-19 Brannock Kirk D. Method and apparatus for distributing computer platform firmware across a network
US20070234341A1 (en) * 2001-11-06 2007-10-04 Sandisk Corporation Implementation of In-System Programming to Update Firmware 0n Memory Cards
US20040267926A1 (en) * 2003-06-26 2004-12-30 Rothman Michael A. Accessing firmware of a remote computer system using a remote firmware interface

Also Published As

Publication number Publication date
KR102073678B1 (ko) 2020-02-06
SG11201600194SA (en) 2016-02-26
US20150019692A1 (en) 2015-01-15
CN105765533B (zh) 2019-03-01
CN105765533A (zh) 2016-07-13
EP3019956A4 (en) 2017-03-15
JP2016529602A (ja) 2016-09-23
US10282185B2 (en) 2019-05-07
JP6464162B2 (ja) 2019-02-06
US9830136B2 (en) 2017-11-28
WO2015006599A1 (en) 2015-01-15
CA2915695C (en) 2022-03-29
EP3019956A1 (en) 2016-05-18
US20180081658A1 (en) 2018-03-22
CA2915695A1 (en) 2015-01-15
HK1225471A1 (zh) 2017-09-08

Similar Documents

Publication Publication Date Title
KR102073678B1 (ko) 펌웨어 가상화를 위한 방법 및 장치
US20210168209A1 (en) Platform for Controlling and Operating Network Connected Devices
KR101661784B1 (ko) 웹 브라우저를 통한 애플리케이션으로의 컨텐츠 입력 메소드
CN111930521A (zh) 用于部署应用的方法、装置、电子设备及可读存储介质
US10574724B2 (en) Automatic discovery of management nodes and generation of CLI using HA module
CN113748685A (zh) 基于网络的媒体处理控制
US20190171443A1 (en) Method of Updating Application and Recording Medium
US10404568B2 (en) Agent manager for distributed transaction monitoring system
EP4095678A1 (en) Method and apparatus of deploying a cluster, device and storage medium
CN111316230B (zh) 一种补丁包生成方法及设备
CN112860282B (zh) 集群插件的升级方法、装置和服务器
CN114968406B (zh) 一种插件管理方法、装置、电子设备及存储介质
US10520929B2 (en) Techniques for implementing universal commands in a welding or cutting system
WO2023169193A1 (zh) 用于生成智能合约的方法和装置
KR102506155B1 (ko) 전자장치, 어플리케이션 실행 시스템 및 그 제어방법
KR102368826B1 (ko) 클라우드 서버 및 클라우드 서버의 동작
EP3872630B1 (en) Request processing method and apparatus, electronic device, and computer storage medium
US11017032B1 (en) Document recovery utilizing serialized data
KR101771438B1 (ko) 이동통신 단말기 및 이의 어플리케이션 설치 방법
TWI581185B (zh) 應用程式安裝方法及系統
CN116501319A (zh) 网页的生成方法、网站的编辑方法及电子设备
TWI634481B (zh) 應用程式拼裝方法和系統
JP2014102604A (ja) 機器管理装置、機器管理システム、及びプログラム
CN112596812A (zh) 一种操作请求的响应方法、装置、设备及存储介质
EP2448293A1 (en) Platform system with provider controlling mechanism and method of operation thereof

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right