KR20060057512A - 보조 디스플레이에 대한 확장성 시스템 및 방법 - Google Patents

보조 디스플레이에 대한 확장성 시스템 및 방법 Download PDF

Info

Publication number
KR20060057512A
KR20060057512A KR1020050111600A KR20050111600A KR20060057512A KR 20060057512 A KR20060057512 A KR 20060057512A KR 1020050111600 A KR1020050111600 A KR 1020050111600A KR 20050111600 A KR20050111600 A KR 20050111600A KR 20060057512 A KR20060057512 A KR 20060057512A
Authority
KR
South Korea
Prior art keywords
hardware
firmware
computer system
display
code
Prior art date
Application number
KR1020050111600A
Other languages
English (en)
Other versions
KR101201028B1 (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 KR20060057512A publication Critical patent/KR20060057512A/ko
Application granted granted Critical
Publication of KR101201028B1 publication Critical patent/KR101201028B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Digital Computer Display Output (AREA)
  • Stored Programmes (AREA)

Abstract

메인 컴퓨터 시스템상에서 발생한 데이터에 대응하는 정보를 디스플레이하는 보조 디스플레이 플랫폼을 갖는 보조 컴퓨팅 장치가 장치 제조업자에 의해 확장될 수 있는 시스템 및 방법이 기술된다. 확장된 하드웨어가 라디오 수신기 및/또는 오디오 디코더와 같은 장치에 추가된다. 보조 디스플레이 플랫폼은 계층화되고 각 계층에서 확장가능하며, 필요하다면 확장된 하드웨어를 지원하기 위해 확장가능한 확장성 하드웨어 추상화 계층, 및 확장된 하드웨어에 대한 드라이버 코드를 추가함으로써 확장가능한 드라이버 계층을 포함한다. 런타임 계층 또한 확장된 하드웨어를 지원하기 위해 필요한 대로 확장가능하며, 라이브러리, 보조 셸 프로그램 및 기타 관리된 코드 또한 그러하다. 클라이언트 API 또한 메인 컴퓨터 시스템상의 어플리케이션이 장치 런타임 계층을 통해 확장된 하드웨어와 통신하도록 하기 위해 확장가능하다.
보조 장치, 확장, 확장된 하드웨어

Description

보조 디스플레이에 대한 확장성 시스템 및 방법{EXTENSIBLE ARCHITECTURE FOR AUXILIARY DISPLAYS}
도 1은 본 발명이 통합될 수 있는 기존의 개인용 컴퓨터 시스템의 형태로 범용 컴퓨팅 장치를 나타내는 블럭도.
도 2a-2e는 다양한 장치상에서 보조 디스플레이의 배치 위치를 일반적으로 나타내는 예시적인 도면.
도 3은 본 발명의 양상에 따라 메인 컴퓨터 시스템상의 어플리케이션 프로그램이 임의의 보조 디스플레이 장치의 펌웨어와 데이터를 교환할 수 있는 예시적인 구현을 일반적으로 나타내는 블럭도.
도 4는 본 발명의 양상에 따라 구성된 예시적인 계층화 아키텍처를 일반적으로 나타내는 블럭도.
도 5는 본 발명의 양상에 따라 디스플레이 제조업자가 스크린을 어떻게 맞춤화할 수 있는지를 보여주는 디스플레이 스크린을 갖는 하드웨어 디스플레이의 예시적인 표현.
<도면의 주요부분에 대한 부호의 설명>
370: 보조 셸
374: 프레임워크 라이브러리
376: TinyCLR
402: 어플리케이션
403: 사용자 경험 확장
470: 셸 확장
474: 프레임워크 라이브러리 확장
476: CLR 확장
477: 드라이버
479: TinyHAL
480: HAL 확장
490: 디스플레이 패널 및 제어기
491: 보조 프로세서
492: 메모리/저장장치
493: 확장된 하드웨어
본 발명은 일반적으로 컴퓨터 시스템에 관한 것이며, 보다 상세하게는 메인 컴퓨터 시스템에 연결하는 보조 컴퓨팅 장치에 관한 것이다.
미국 특허 출원 번호 10/429,930 및 10/429,932는 일반적으로 소정 보조 컴퓨팅 기능을 제공하는 보조 프로세싱 및 보조 메커니즘을 갖는 컴퓨터 시스템의 개 념에 관한 것이다. 예를 들어, 랩탑 컴퓨터의 덮개 또는 측면의 소형 LCD는 예를 들어, 랩탑 컴퓨터의 덮개가 닫혀있고/거나 메인 컴퓨터 시스템의 전력이 중단되었을 때와 같이 메인 컴퓨터 디스플레이가 쉽게 보이지 않을 때에도, 미팅 위치 및 시각과 같은 유용한 정보를 자신의 소유자에게 제공할 수 있다. 달력 데이터 중의 약속들을 스크롤하고, 이메일 메시지를 읽고, 지시를 읽는 등과 같이 다른 타입의 데이터를 보기 위하여 사용자가 보조 장치와 상호작용하도록 하기 위하여 버튼과 같은 제어가 제공될 수 있다.
모바일 호스트 컴퓨터에 설치된 보조 LCD 스크린과 다소 유사하게, 모바일 전화기, 음악 재생 장치, 포켓-크기의 개인용 컴퓨터, PDA 등은 그 장치의 디스플레이 및/또는 기타 기능이 메인 컴퓨터에 의해 영향받도록 장치가 프로그래밍되는 한, 물리적으로 및/또는 무선(예를 들어, 블루투스 또는 적외선) 링크를 통해 연결될 때 메인 컴퓨터에 보조 장치로서 동작할 수 있다. 일반적으로, 가상적으로 임의의 방식으로 컴퓨터 시스템과 인터페이스할 수 있는 I/O 기능을 갖는 임의의 장치는 잠재적으로 보조 컴퓨팅 장치로서 동작할 수 있다.
그러나, 컴퓨터 시스템에 대한 보조 디스플레이로서 동작할 수 있는 여러 다양한 장치가 존재한다. 결과로서, 그러한 장치를 내부적으로 구성하기 위한 여러 방식이 존재한다. 사용자는 자신의 장치가 보조 디스플레이로서 동작하기를 원할 것이지만 제조업자는 장치가 바람직한 기능을 수행하도록 할 수 있어야 한다는 점에서, 이것은 장치 제조업자(종종 독립적인 하드웨어 벤더 또는 IHV라 불림)에게 어려움을 발생시킨다. 따라서, 장치가 주로 오디오 재생기인지, GPS(Global Positioning System) 수신기인지, 전화기, 디지털 사진 프레임 등인지에 따라 상이하게 장치가 설계될 필요가 있을 것이다. 지금까지는, 장치를 여전히 모든 특성을 갖춘 보조 디스플레이(full-featured auxiliary display)로서 사용하는 시스템에서 하드웨어를 맞춤화할 수 있는 유일한 방식은 제조업자가 보조 디스플레이 기능을 포함하는 다른 기존의 펌웨어를 자신의 하드웨어와 통합하기 위해 매우 많은 코드를 작성하는 것이었다. 적절한 때에 장치가 모든 특성을 갖춘 보조 디스플레이로서 동작하도록 하고, 다른 제조업자의 장치로부터 자신의 장치를 혁신하고 차별화할 수 있도록 뿐 아니라 제조업자가 원하는 기능을 추가할 수 있도록 확장가능한 컴퓨팅 아키텍처가 필요하다.
간략하게, 본 발명은 상이한 계층의 코드를 포함하고, 각 장치 제조업자는 그들의 특정 필요에 따라 원하는 대로 독립적으로 확장할 수 있는 보조 디스플레이에 대한 컴퓨팅 아키텍처를 제공한다. 아키텍처와 함께, 본 발명은 펌웨어 변경의 양을 매우 감소시킬 것(예를 들어, 가능하다면 최소화할 것)만을 필요로 하는 방식으로 장치 제조업자가 하드웨어 컴포넌트를 맞춤화할 수 있도록 한다. 맞춤화의 예는 모바일 통신을 위한 라디오, SPOT 라디오, 블루투스 라디오, 및/또는 GPS 수신기와 같은 라디오 수신기 또는 송수신기의 통합을 포함하며, 기타 하드웨어는 온도 감지기, 오디오 디코더(예를 들어, 디지털 신호 프로세싱을 위한 것), 장치에 대한 부가적인 저장장치 및/또는 표시기와 같은 기타 하드웨어를 포함한다.
하드웨어 컴포넌트 위의 저 레벨에서, HAL(하드웨어 추상화 계층)은 고레벨 코드가 하드웨어-독립적인 방식으로 작성되도록 한다. HAL은 맞춤화된 하드웨어를 지원하기 위해 필요한 것으로서 확장될 수 있다. HAL은 하드웨어 차이를 추상화하기 때문에, 장치 제조업자는 드라이버를 모든 클래스의 장치에 대해 매우 맞춤화해야할 필요없이 여러 타입의 장치들 중 고레벨에서 동작하는 드라이버를 재사용할 수 있다.
드라이버 위에서, 기타 장치 소프트웨어는 .NET 공통 언어 런타임 환경의 비교적 작은 스케일의 구현을 포함하는 TinyCLR과 같은 공통 언어 런타임을 포함한다. 공통 언어 런타임에서 동작하는 관리된 코드는 공통 언어 런타임이 동작하는 플랫폼에 관계없이 동작할 것이며, 그것은 그 플랫폼에 대한 HAL(하드웨어 추상화 계층), 예를 들어, ARM7 칩에 기초한 플랫폼에 대한 HAL에 의해 가능해질 수 있다. 대부분의 펌웨어가 관리된 코드로 작성되기 때문에, 그것이 동작하는 하드웨어의 타입에도 독립적이다. 대부분의 장치 펌웨어를 제어하고, HAL 및 CLR을 아키텍처에 포함함으로써, 장치 제조업자는 어떠한 변경없이도 기존의 소프트웨어를 재사용할 수 있으며, 그것은 보조 디스플레이로서 동작하는 다양한 타입의 장치들 사이에 높은 품질, 일관된 경험을 제공하기 위해 중요하다.
아키텍처를 계층들로 분리함으로써, 장치 제조업자는 아키텍처의 적합한 계층(또는 계층들)의 코드를 확장하기만 하면 된다. 예를 들어, 변화가 새로운 CPU라면, HAL이 적응될 것을 필요로 한다. 그러나, 변화가 HAL이 존재하는 CPU를 변경하지 않고서 하드웨어의 일부를 추가하는 것이라면, 하드웨어, 및 장치에서 동작 하고 그 하드웨어를 제어하기 위한 기타 대응하는 소프트웨어에 대한 적절한 드라이버만이 필요한 것이 가능하다. 예를 들어, 고속 매체 버퍼링을 수반하는 것과 같은 성능상의 이유로, 관리된 코드로 작성될 수 없는 특정 어플리케이션들은 C 또는 C++과 같은 네이티브 코드(native code)로 작성될 수 있고, 본질적으로 CLR을 확장할 수 있다.
보조 디스플레이 플랫폼에 부가적인 기능을 추가하는 것에 관심이 있는 장치 제조업자(하드웨어 제조업자)는 하드웨어를 추가하고, 따라서 기존의 장치 펌웨어 및 임의의 기타 코드를 필요한 대로 확장한다. 기존의(예를 들어, 또다른 벤더에 의해 공급된) 보조 디스플레이 펌웨어에 대한 영향은 최소이다.
부가적으로, 플랫폼은 메인 컴퓨터 시스템에 제공된 클라이언트 보조 장치 API 집합의 관점으로부터 변화하는 하드웨어에 대해 조정하도록 필요한 대로 확장가능하다. 이 때문에, 장치 제조업자에 의해 제공되는 장치 소프트웨어와 메인 컴퓨터 시스템 사이의 통신을 위하여 클라이언트 API를 사용하는 단순하고 확장가능한 메커니즘이 제공된다. 이것은 플랫폼을 사용하는 특수 하드웨어를 필요로 하는 특정 특성의 엔드-투-엔드 구현을 제공하기 위한 기능을 장치 제조업자에게 제공한다. API 확장성은 장치 제조업자 및 독립적인 소프트웨어 벤더가 특수화된 API를 필요로 하지 않고서 장치상의 맞춤화된 하드웨어와 상호동작할 수 있는 메인 컴퓨터 시스템상의 클라이언트 어플리케이션을 개발할 수 있도록 한다.
보다 상세하게는, 확장성 모델은 메인 컴퓨터 시스템 상에서 동작하는 클라이언트 어플리케이션이 데이터를 장치에 전송할 수 있기 전에 "엔드포인트 (endpoint)"가 지정될 것을 필요로 한다. 장치 제조업자가 장치상의 엔드포인트를 광고하기 위해 특수화된 펌웨어를 제공하도록 함으로써, 메인 컴퓨터 시스템상의 소프트웨어는 특수 하드웨어 기능을 갖는 장치를 식별할 수 있고, 그 엔드포인트에 직접 통신 채널을 오픈할 수 있다. 클라이언트 어플리케이션과 장치 사이에 전송된 데이터의 타입이 관련되지 않도록 클라이언트 API가 설계된다. 따라서, 엔드-투-엔드 플랫폼은 장치 제조업자의 입장에서 적은 양의 노력으로 하드웨어 확장성을 제공한다.
기타 이점들은 도면과 함께 취해질 때 후술되는 상세한 설명으로부터 명백해질 것이다.
예시적인 운영 환경
도 1은 본 발명이 통합될 수 있는 메인 개인용 컴퓨터 시스템의 형태로 컴퓨팅 장치(120)를 나타내는 블럭도이다. 본 분야에서 숙련된 기술을 가진 자들은 도 1에 도시된 개인용 컴퓨터 시스템(120)이 단지 예시를 위한 것이며, 본 발명이 포켓형 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그래밍가능한 가전기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 헤드리스 서버 등을 포함하는 기타 컴퓨터 시스템 구성에서도 실행될 수 있음을 잘 알 것이다. 본 발명은 또한 통신 네트워크를 통해 연결되는 원격 프로세싱 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘 모두에 위치될 수 있다.
개인용 컴퓨터 시스템(120)은 프로세싱 유닛(121), 시스템 메모리(122), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(121)에 연결하는 시스템 버스(123)를 포함한다. 시스템 버스(123)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 임의의 다양한 버스 아키텍처를 사용하는 로컬 버스를 포함하는 여러 형태의 버스 구조 중 임의의 것일 수 있다. 시스템 메모리는 ROM(124) 및 RAM(125)을 포함한다. 시작할 때 등에, 개인용 컴퓨터(120) 내의 구성요소들 사이의 정보 전달을 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(126)(BIOS)은 ROM(124)에 저장된다. 개인용 컴퓨터(120)는 또한 하드 디스크(도시되지 않음)에 대한 판독 및 기입을 위한 하드 디스크 드라이브(127), 분리형 자기 디스크(129)에 대한 판독 또는 기입을 위한 자기 디스크 드라이브(128), 및 CD-ROM 또는 기타 광 매체와 같은 분리형 광 디스크(131)에 대한 판독 또는 기입을 위한 광 디스크 드라이브(130)를 포함할 수 있다. 하드 디스크 드라이브(127), 자기 디스크 드라이브(128), 및 광 디스크 드라이브(130)는 각각 하드 디스크 드라이브 인터페이스(132), 자기 디스크 드라이브 인터페이스(133), 및 광 드라이브 인터페이스(134)에 의해 시스템 버스(123)에 연결된다. 드라이브 및 관련 컴퓨터-판독가능 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및, 개인용 컴퓨터(120)를 위한 기타 데이터의 비휘발성 저장을 제공한다. 본 발명에 기술된 예시적인 컴퓨터 시스템은 하드 디스크, 분리형 자기 디스크(129) 및 분리형 광 디스크(131)를 이용하지만, 본 분야에서 숙련된 기술을 가진 자들은 자기 카세트, 플래시 메모리 카드, DVD, 베르누이(Bernoulli) 카트리지, RAM, ROM 등에 의해 액세스가능한 데이터를 저장할 수 있는 기타 유형의 컴퓨터 판독가능 매체 또한 예시적인 컴 퓨터 시스템에서 사용될 수 있다는 점을 잘 알아야 한다.
운영 시스템(135)(예를 들어, 윈도우즈® XP), 하나 이상의 어플리케이션 프로그램(136)(예를 들어, 마이크로소프트® 아웃룩), 기타 프로그램 모듈(137) 및 프로그램 데이터(138)를 포함하는 여러 프로그램 모듈이 하드 디스크, 자기 디스크(129), 광 디스크(131), ROM(124) 또는 RAM(125)에 저장될 수 있다. 사용자는 키보드(140) 및 포인팅 장치(142)와 같은 입력 장치를 통해 개인용 컴퓨터(120)에 명령어 및 정보를 입력할 수 있다. 기타 입력 장치(도시되지 않음)는 마이크, 조이스틱, 게임 패드, 위성 디쉬, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 연결되는 직렬 포트 인터페이스(146)를 통해 프로세싱 유닛(121)에 연결되지만, 병렬 포트, 게임 포트 또는 USB와 같은 기타 인터페이스에 의해 연결될 수 있다. 모니터(147), 또는 기타 유형의 디스플레이 장치 또한 비디오 어댑터(148)와 같은 인터페이스를 통해 시스템 버스(123)에 연결된다. 모니터(147) 이외에, 개인용 컴퓨터는 전형적으로 스피커 및 프린터와 같은 기타 주변 출력 장치(도시되지 않음)를 포함한다. 보조 디스플레이/장치(200)는 부가적인 출력 장치이며, 예를 들어, 보조 디스플레이 인터페이스(155)를 통해 시스템 버스(123)에 연결될 수 있다.
보조 디스플레이는 또한 직렬 인터페이스를 통해, 또는 병렬 포트, 게임 포트, 적외선 또는 무선 연결, USB 또는 기타 주변 장치 연결과 같은 기타 인터페이스에 의해 메인 컴퓨팅 장치(120)에 연결될 수 있다. 도 1의 입력 장치(201)는 보조 디스플레이(200)와 인터페이스하고/거나 제어하기 위해 하나 이상의 작동기를 제공할 수 있으며, 예를 들어, 직렬 인터페이스일 수 있는 입력 장치 인터페이스(156)를 통해, 또는 병렬 포트, 게임 포트, 적외선 또는 무선 연결, USB 또는 기타 주변 장치 연결에 의해 시스템 버스(123)에 연결될 수 있다.
개인용 컴퓨터(120)는 원격 컴퓨터(149)와 같은 하나 이상의 원격 컴퓨터에의 논리적 연결을 사용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(149)는 또다른 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 일반적인 네트워크 노드일 수 있으며, 메모리 저장 장치(150)만이 도 1에 도시되었지만, 전형적으로 개인용 컴퓨터(120)에 관련하여 상기 기술된 구성요소들 중 다수 또는 모두를 포함한다. 도 1에 도시된 논리적 연결은 LAN(151) 및 WAN(152)을 포함한다. 그러한 네트워크 환경은 사무실, 기업-구조 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 개인용 컴퓨터(120)는 네트워크 인터페이스 또는 어댑터(153)를 통해 로컬 네트워크(151)에 연결된다. WAN 네트워크 환경에서 사용되는 경우, 개인용 컴퓨터(120)는 전형적으로 인터넷과 같은 WAN(152)에 대한 통신을 설립하기 위한 모뎀(154) 또는 기타 수단을 포함한다. 내장 또는 외장일 수 있는 모뎀(154)은 직렬 포트 인터페이스(146)를 통해 시스템 버스(123)에 연결된다. 네트워크 환경에서, 개인용 컴퓨터(120)에 관련하여 도시된 프로그램 모듈, 또는 그들의 일부가 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 연결은 예시적이며, 컴퓨터들 사이에 통신 링크를 설립하는 기타 수단이 사용될 수 있음을 잘 알 것이다.
본 발명에 따라 동작하기 위하여 컴퓨터 시스템이 보조 장치에 대해 완전히 동작가능할 필요는 없다는 점을 유의해야 한다. 실제로, 예를 들어, 컴퓨터 시스템이 슬립 상태(sleep state) 또는 휴면 모드(hibernate mode)에 있는 경우, 및/또는 사용자가 아직 로그온하지 않았거나 또는 보안 메커니즘을 통해 시스템으로부터 차단된 경우와 같이 컴퓨터의 전력이 중단된 경우에, 적어도 디폴트 정도 또는 사용자에 의해 구성된 정도로는 보조 장치가 여전히 동작할 수 있다.
보조 디스플레이/장치(200)는 메인 디스플레이를 보충할 수 있으며, 또한 메인 디스플레이가 셧다운되거나 그렇지 않으면 동작가능하지 않은 경우(예를 들어, 연결되지 않은 경우), 사용자에게 소정 정보를 제공하기 위하여 대리 디스플레이(surrogate display)로서도 동작할 수 있다. 예를 들어, 메인 디스플레이의 전원을 켜는 방법과 같은 정보가 유용할 수 있으며, 메인 디스플레이가 꺼져있는 경우 및/또는 쉽게 볼 수 없는 경우(예를 들어, 랩탑의 덮개가 닫혀 있는 경우) 사용자가 볼 수 있는 모바일 컴퓨터에 연결된 보조 디스플레이 장치상에 회의실의 방 번호 및/또는 방향 또한 유용할 것이다. 보조 장치는 오디오 및/또는 비디오를 재생할 수 있고, 이미지, 달력 정보, 이메일 등을 보여줄 수 있다.
이러한 전력 중단 모드에서 통신을 가능하게 하고 제어하기 위하여, 비휘발성 메모리에 저장될 수 있는 펌웨어가 존재할 수 있고, 그것은 보조 프로세서에 의해 로드 및 동작될 때 소정 전력이 이용가능한 한 사용될 기타 보조 컴포넌트와 함께 보조 디스플레이를 가동한다. 본 발명에서 사용될 때, "펌웨어" 및 "장치 하드웨어"라는 용어는 본질적으로 동일하고, 일반적으로 보조 메모리, 그 내부의 코드 및/또는 그것이 동작하는 보조 프로세서를 나타내는 것으로서 여겨질 수 있다는 점을 유의해야 한다.
도 2a-2e는 보조 디스플레이 스크린(200a-200e) 각각의 배치에 대해 컴퓨팅 장치상의 예시적인 위치 또는 그에 관련된 예시적인 위치를 도시한다. 도 2a 및 2b에 나타난 바와 같이, 보조 디스플레이 스크린(200a)은 독립형(유선 또는 모바일) 전화기(202)의 전면, 후면 또는 기타 표면에 배치될 수 있고/거나, (블루투스 기술을 통해서와 같이 다른 방법으로 링크되는 경우 물리적으로 연결될 필요는 없음) 또다른 보조 디스플레이 스크린(200b)이 모바일 컴퓨터(204) 또는 태블릿 컴퓨팅 장치(도시되지 않음)의 가장자리 또는 덮개에 배치될 수 있다. 보조 디스플레이 스크린(200c)(도 2c)을 위한 또다른 장소는 모니터(206) 또는 키보드(도시되지 않음)와 같이 컴퓨터에 부착된 컴퓨터 또는 주변 장치에 탑재된 전화기상일 수 있다. 도 2d 및 2e는 각각 컴퓨터 또는 소정 기타 하우징(housing)(210)(예를 들어, 마더보드를 위한 보관소)에 연결된 독립형 컨솔(208)의 전면 패널 상의 보조 디스플레이 스크린(200d 및 200e)의 부가적인 배치를 도시한다. 본 분야에서 숙련된 기술을 가진 자들은 보조 디스플레이 스크린이 예를 들어 컴퓨터에의 무선 또는 기타 연결을 갖는 시계, 원격 제어 장치, 원격 벽걸이형 유닛 등에 배치되는 것과 같이 디스플레이 기능을 갖는 임의의 컴퓨팅 장치 또는 기타 장치의 임의의 표면 상에 배치될 수 있음을 잘 알 것이다. 실제로, LAN 또는 WAN, 또는 인터넷을 통한 연결이 존재할 수 있기 때문에, 보조 디스플레이가 메인 컴퓨터 시스템에 물리적으로 가까울 필요는 없다.
도 2a-2e로부터 명백해지는 바와 같이, 보조 디스플레이는 하나 이상의 LED, 2-라인 알파벳 숫자 디스플레이, 흑백 디스플레이, 또는 컬러 디스플레이와 같이 임의의 수의 알려진 유형의 디스플레이의 형태를 가질 수 있다. 본 분야에서 숙련된 기술을 가진 자들은 본 발명이 또한 기타 컴퓨팅 또는 통신 장치의 디스플레이를 보조 디스플레이(200)로서 사용할 수 있다는 것을 잘 알 것이다. 이들 기타 컴퓨팅 또는 통신 장치는 범용 컴퓨터, 휴대폰, 및 호출기 또는 PDA와 같은 포켓형 장치를 포함한다. 부가적으로, 본 발명은 사용자가 로그인하기 전을 포함하여 컴퓨팅 장치(120)의 온스크린 디스플레이의 영역(예를 들어, 스크린세이버 또는 그래픽 사용자 인터페이스의 컴포넌트) 내에 구현된 가상 보조 디스플레이를 보조 디스플레이(200)로서 사용할 수 있다. 보조 디스플레이(200)는 상기 기술된 형태 중 임의의 것의 조합을 포함할 수 있고, 또한 물리적으로 또는 논리적으로 하나 이상의 LED와 같은 표시기와 결합될 수 있고/거나 가상 보조 디스플레이와 함께 사용될 수 있다.
보조 장치는 스크린이 없을 때에도, 또는 스크린의 전력이 중단된 때에도 기능을 제공할 수 있다. 예를 들어, 보조 장치는 오디오를 재생하고, 데이터를 수집하며(예를 들어, 나중에 메인 컴퓨터 시스템에 다시 다운로드하기 위해), 계산을 수행하는 등을 할 수 있다. 또한, 디스플레이는 전체 스크린이 아니라 하나 이상의 LED 등을 포함할 수 있다. 따라서, 보조 디스플레이 스크린을 갖는 것으로부터 여러 이점 및 장점이 발생하고, 따라서 보조 장치가 본 발명에서 보조 디스플레이라고 불릴 수 있지만, 디스플레이가 필요한 것은 아니다. 일반적으로, 본 발명에서 불리는 보조 디스플레이는 본질적으로 임의의 시각적, 청각적, 및/또는 촉각적 표현을 포함하여 감지될 수 있는 어떠한 것으로도 구성될 수 있다. 보조 디스플레이 장치로서 동작할 수 있는 장치의 유형에 대한 예는 개별 컴퓨터 시스템, 랩탑 덮개 상의 디스플레이, 휴대폰, 포켓-크기의 개인용 컴퓨터, 디지털 이미지-기반 사진 프레임, 주방 디스플레이, 텔레비전, 미디어 재생기, 알람 시계를 포함하는 시계, 손목시계 등을 포함한다. 기타 유형의 장치는 가전기기 장치의 메인 디스플레이 내에 임베딩되거나 이를 사용하는 보조 장치(예를 들어, 냉장고, 홈시어터 수신기, DVD 플레이어 등), 벽걸이 디스플레이, 자동차, 트랜스포트 또는 기타 운송기관 유닛(예를 들어, 차량/기차/비행기에서 이미 디스플레이를 보조 디스플레이로서 사용함), 메인 컴퓨터 시스템의 키보드 또는 기타 입력 장치, PDA(셀룰러 방식이 아닌 전화기 PDA를 포함함) 등을 포함한다.
보조 디스플레이에 대해 확장가능한 아키텍처
도면 중 도 3을 참조하면, 보조 장치(300 및/또는 301)를 보조 디스플레이 API 집합(304)을 통해 어플리케이션 프로그램(302) 및 기타 프로그램(예를 들어, 운영 시스템 컴포넌트)을 포함하는 클라이언트에 드러내는 예시적인 구현이 도시된다. API 집합(304)은 클라이언트 어플리케이션(306)(프로그램의 컴포넌트, 또는 프로그램 자체도 가능함)을 시스템에 등록하는 것, 부착된 장치에 컨텐츠를 전송하는 것, 통지를 부착된 장치에 전송하는 것, 및 부착된 장치로부터 이벤트를 수신하 는 것을 포함하는 여러 기능을 API에 제공한다. 이벤트는 네비게이션 이벤트, 컨텐츠 요청 이벤트, 컨텐츠 변경 이벤트 등을 포함할 수 있다.
API 계층(304)은 휴대용 장치 API 집합(310)에 작성되며, 그것은 사용자-모드 드라이버 프레임워크(312)를 통해 장치의 드라이버 프로세스와 통신한다. 휴대용 장치 API 집합(310)은 보조 디스플레이를 휴대용 장치의 카테고리에 매핑하고, 장치의 기능 열거를 허용한다. 이것은 사용자-모드 드라이버 내에서 캡슐화되지만, 클라이언트 어플리케이션(306)에 드러나지 않는다. 도 3에 도시된 기타(선택적) 컴포넌트는 보조 디스플레이에 통지를 제공할 수 있는 통지 클라이언트(316)를 포함한다. 예를 들어, 달력 프로그램과 같은 어플리케이션 프로그램이 동작하고 있지 않은 때에도, 그 프로그램에 대응하는 스케쥴링된 통지를 제공하는 것이 바람직할 수 있으며, 통지 클라이언트(316)는 그러한 시나리오를 가능하게 한다.
하드웨어 제조업자의 관점으로 돌아가면, 일반적으로, 보조 디스플레이 플랫폼의 공급자에 의해 장치 드라이버가 공급될 수 있지만, 각 보조 장치 벤더는 대응하는 보조 장치 드라이버(324)를 제공한다. 특정 타입의 보조 장치는 그것들이 다른 것들 중에서 일반적으로 API 집합(304)을 통해 수신될 수 있는 임의의 정보와 호환가능한 특정 펌웨어와 함께 구성되기 때문에 "강화된" 장치로 여겨진다. 따라서, 하기에 기술된 바와 같이, 이러한 드라이버가 확장될 수 있고/거나 기타 드라이버가 추가될 수 있지만, 일반적인 드라이버가 그러한 장치에 제공될 수 있다.
임의의 경우에, 사용자 모드 드라이버 프레임워크는 장치 드라이버(예를 들어, 324 및 325)를 보조 디스플레이 플랫폼에 결합하기 위하여 장치 드라이버 인터 페이스(DDI)를 제공한다. 그 후 드라이버는 API-수신된 정보에 대응하는 데이터를 보조 디스플레이 장치에의 통신을 위한 적절한 하드웨어 인터페이스(트랜스포트)에 포워딩(및 리턴)한다. 예를 들어, 도 3에서, TCP/IP-기반 트랜스포트와 같은 네트워크 트랜스포트를 포함하는 기타 타입의 트랜스포트도 가능하지만, 장치 드라이버(324)는 장치(300)에의 무선(예를 들어, 블루투스, Wi-FI, AM/FM 적외선 등) 통신을 위한 원격 스택 및 드라이버(327)에 데이터를 포워딩하는 것(미리 정의된 프로토콜을 통해)으로서 도시되고, 반면 장치 드라이버(325)는 USB-기반 하드웨어(328)에 데이터를 포워딩하는 것으로서 도시된다. 연결 타입에 관계없이 사용자-모드 드라이버가 모든 강화된 디스플레이에 대해 동작할 수 있지만, 연결 타입별로 장치당 하나의 드라이버를 사용하는 것이 더욱 수월할 것이라는 점을 유의해야 한다. 도 3에 나타난 바와 같이, 동시에 다수의 장치가 보조 디스플레이로서 동작하도록 컴퓨터에 연결될 수 있다는 점 또한 유의해야 한다. 사용자는 (예를 들어, 시스템 데이터 공급자(308)의 제어 패널 등을 통해) 어떤 클라이언트 어플리케이션의 데이터가 어떤 장치에 디스플레이되는지를 구성할 수 있다. 시스템 데이터 공급자(308)는 또한 시간 데이터, 무선 신호 강도 데이터 및/또는 배터리 레벨 데이터와 같은 시스템 정보를 보조 디스플레이에 공급한다.
도 3에도 도시된 바와 같이, "강화된" 디스플레이(301)는 본 발명에서 보조 디스플레이 플랫폼이라 불리는 특정 펌웨어 스택을 실행하는 것이다. 예를 들어, 한 구현에서, 그러한 펌웨어 스택은 TinyCLR 컴포넌트를 포함하고, TinyCLR 객체 직렬화를 지원한다.
도 3에 나타난 예시적인 구현에서, 캐싱된 컨텐츠를 네비게이팅 및 디스플레이하기 위하여, 장치 어플리케이션(369) 및 셸 프로그램(370)은 TinyCLR 프레임워크(374) 및 런타임 컴포넌트(376)에서 동작하고, 그것은 데이터를 해석, 네비게이팅, 및 디스플레이한다. TinyCLR 런타임 컴포넌트(376)는 도 4를 참조하여 하기에 기술된 바와 같이 적어도 하나의 드라이버(377) 및 TinyHAL 상위에 도시된다.
일반적으로, 셸 프로그램(370)은 홈 페이지, 클라이언트가 아닌 영역, 메뉴, 및 보조 디스플레이 장치의 일반적인 외형 및 느낌을 제공한다. 제공된 데이터는 스크린에 대한 방향 그래프의 형태이거나, 그것으로 수정될 수 있으며, 그 각각이 TinyCLR Form 객체에 의해 시작된 TinyCLR View 객체의 시각적 트리이다. 셸 계층은 펌웨어의 낮은 계층으로부터 버튼 이벤트를 수신하고, 그것들을 해석하며, 적절한 데이터 내를 네비게이팅한다. 셀 프로그램(370)은 또한 상기 기술된 바와 같이 보조 디스플레이 플랫폼을 통해 메인 컴퓨터 시스템으로부터 통지 요청을 수락하고, 컨텐츠가 필요하다는 것(예를 들어, 잃어버린 경우)을 캐싱 관리자(372)로부터 알게 되면 새로운 컨텐츠를 제공하기 위하여 메인 컴퓨터 시스템에 요청을 발행한다. 셸 프로그램(370)은 또한 시간적 통지(timed notification)를 디스플레이하며, 그것은 메인 컴퓨터 시스템이 연결되지 않은 때에 발생할 수 있다. 어플리케이션이 그 어플리케이션의 데이터를 렌더링할 수 있는 커스텀 코드를 제공할 수 있도록 렌더링 엔진(370) 또한 확장될 수 있다는 점을 유의해야 한다.
오프라인 캐싱 관리자(372)는 TinyCLR(376)의 맨 위에 작성된 어셈블리를 포함하여, 이것은 장치에 저장된 데이터 항목의 캐시를 관리한다. 이 컴포넌트는 또 한 장치가 저장할 수 있는 것보다 더 많은 데이터를 시스템 어플리케이션 프로그램이 제공할 수 있다는 사실을 다루면서 소정의 메모리 관리를 수행한다. 펌웨어가 데이터 캐시를 수정하면, 이 컴포넌트는 그 정보를 추적하고, 기계가 다시 온라인이 될 때 메인 컴퓨터 시스템이 온라인인지 또는 온라인이 아닌지를 즉시 알도록 하기 위하여 시스템상의 어플리케이션 프로그램에 이벤트를 포스팅한다. 캐싱 관리자는 인터페이스를 통해 드라이버(360)에 드러날 수 있다.
본 발명의 양상에 따라, (도 4에 일반적으로 표현된 바와 같이) 다양한 계층이 개별적이며, 확장된 하드웨어를 지원하기 위하여 장치 제조업자에 의해 요구되는 대로 각각 개별적으로 확장될 수 있다. 도 4 중 다수가 일반적으로 도 3의 펌웨어 스택에 대응한다는 점을 유의해야 한다. 아키텍처를 계층으로 분리함으로써, 장치 제조업자는 확장된 하드웨어에 대해 요구되는 대로 아키텍처에서 적당한 계층(또는 계층들)의 코드를 확장할 것만을 필요로 한다.
보다 상세하게는, 디스플레이 패널 및 제어기(490), 보조 프로세서(491) 및 메모리(492) 이외에, 장치를 맞춤화하기 위하여 확장된 하드웨어(493)가 장치 제조업자에 의해 추가된다. 맞춤화의 예는 예를 들어 SPOT 라디오, 블루투스 라디오, GPS 수신기, 온도 감지기, 오디오 디코더, 오디오 인코더, 부가적인 저장장치, 지문 판독기와 같은 생물측정 감지기, 가속도계, RFID 태그/판독기, 존재 검출, 저장장치 어레이/시스템 관리에 대한 인터페이스(예를 들어, 시스템 정보를 제공할 수 있는 SMbus와 같은 시스템 버스에 대한 액세스, 또는 저장장치의 대형 어레이에 대한 액세스), 배터리(예를 들어, 메인 컴퓨터 시스템과 공유되는 전력이 아니라, 장 치 자체의 전력 공급), 적외선 송수신기, RF 송신기(예를 들어, RF 원격 제어), 마이크, 및/또는 장치에 대한 표시기와 같은 기타 하드웨어 중 하나 이상의 통합을 포함한다. 이해될 것이지만, 제조업자는 보조 장치 펌웨어 스택에 상당히 감소된(예를 들어, 가능하다면 최소) 양의 변경만을 필요로 하는 방식으로 하드웨어 컴포넌트를 맞춤화할 수 있다.
하드웨어 컴포넌트 위에서, HAL(예를 들어, 하드웨어 추상화 계층)은 고레벨 코드가 하드웨어에 독립적인 방식으로 작성되도록 한다. 본 발명에서 사용되는 경우, 코드 스택을 언급할 때 "고레벨" 및 "저레벨", "상위" 및 "하위" 등의 용어는 다른 컴퓨팅 시나리오들에서 사용되는 것과 유사하며, 일반적으로 소프트웨어 컴포넌트가 보다 상위의 컴포넌트에 비해 하위일수록, 그 하위 컴포넌트는 하드웨어에 가까운 것이다. 도 4에 나타난 바와 같이, 기본 HAL은 맞춤화된 하드웨어를 지원하기 위해 필요한 대로 HAL 확장 코드(480)에 의해 확장될 수 있다. 예를 들어, 사용되지 않는 범용 I/O 포트 등이 기존의 HAL(479)을 통해 장치 운영에 이용할 수 있을 때, HAL을 확장하는 것이 항상 필수적인 것은 아니라는 점을 유의해야 한다. 그렇지 않으면, 포트는 확장된 HAL을 통해 관리될 수 있다.
HAL 상위는 확장된 하드웨어(4773)를 위해 추가된 커스텀 드라이버를 포함하는 드라이버(4771-4773)이다. 도 4는 하나의 드라이버(4773) 및 하나의 확장된 하드웨어 블럭(493)만을 도시하지만, 더 많은 드라이버 및/또는 하드웨어가 추가될 수 있다는 점을 유의해야 한다. 또한, 또다른 드라이버를 추가하는 대신, 원하는 추가된 기능을 수행하기 위해 기존의 드라이버 코드를 수정하는 것이 등가라는 점을 유의해야 한다. 일반적으로 알려진 바와 같이, HAL(479)은 하드웨어 차이를 추상화하기 때문에, 장치 제조업자는 모든 상이한 클래스의 장치에 대해 드라이버(4773)를 맞춤화해야할 필요없이 여러 타입의 물리적 장치 사이에서 동작하는 커스텀 드라이버(4773)(또는 수정된 드라이버)를 재사용할 수 있다.
드라이버 위에서, 기타 장치 소프트웨어는 TinyCLR(376)와 같은 공통 언어 런타임(CLR)을 포함하며, 그것은 .NET 공통 언어 런타임 환경의 비교적 소형 스케일의 구현을 포함한다. 공통 언어 런타임에서 동작하는 관리된 코드는 공통 언어 런타임이 동작하는 어떠한 플랫폼에서도 동작할 것이며, 그것은 그 플랫폼에 대한 HAL(하드웨어 추상화 계층)에 의해, 예를 들어, ARM7 칩에 기초하는 플랫폼에 대한 HAL에 의해 가능해진다. 대부분의 펌웨어가 관리된 코드로 작성되기 때문에, 그것은 또한 자신이 동작하는 하드웨어의 타입에 독립적이다. 대부분의 장치 펌웨어를 제어하고 아키텍처에 HAL 및 CLR을 포함함으로써, 장치 제조업자는 어떠한 변경도 행하지 않고서 기존의 소프트웨어를 재사용할 수 있으며, 그것은 보조 디스플레이로서 동작하는 다양한 유형의 장치들 사이에 높은 품질의 일관된 경험을 제공하기 위해 중요하다.
어플리케이션 프로그램(402)은 확장된 하드웨어(493)와 함께 동작하는 커스텀 어플리케이션일 수 있다. 그러나, 사용자 경험 확장에 의해 도 4에 나타난 바와 같이, 미리 작성된 어플리케이션 프로그램을 확장함으로써 사용자 경험을 확장 하는 것 또한 가능하다. 예로서, 확장된 하드웨어가 통지 수신 시 빛나는 단순한 표시기를 포함한다고 고려한다. 통지를 수신하는 프로그램(402)은 통지가 수신되면 표시기를 발광시키고, 통지가 처리되면 표시기를 끄도록 확장될 수 있다.
예를 들어 성능상의 이유로 관리된 코드로 작성될 수 없는 특정 어플리케이션은 C 또는 C++과 같은 네이티브 코드로 작성될 수 있고, CLR 확장(476)에 의해 도 4에 나타난 바와 같이, 본질적으로 CLR을 확장할 수 있다. CLR이 판독, 기입, 오픈, 클로즈, I/O 제어 등과 같은 프레임워크 확장(474)에 의한 사용을 위한 API를 제공할 수 있지만, 이것은 특정 어플리케이션에 대해 충분하지 않을 수 있다. 예를 들어, 고속 미디어 버퍼링은 CLR을 통해 어플리케이션 프로그램-레벨 버퍼로부터 저레벨 디지털 신호 프로세싱 버퍼에 복사되는 경우 충분히 신속하게 수행될 수 없을지도 모른다. 그러한 복사 손실을 방지하기 위하여, CLR 확장(476)의 네이티브 코드가 단일 집합의 버퍼를 채울 수 있다.
메인 컴퓨터 시스템의 API를 사용하여 코드를 장치에 다운로드함으로써, 보조 셸 프로그램(370) 또한 확장될 수 있다. 그렇게 하는 전형적인 이유는 아이콘, 요약 텍스트, 문맥-민감성 텍스트, 및 메뉴 항목과 같은 맞춤화된 기능에 대한 참조를 추가하기 위해서이다. 예를 들어, 오디오 재생기로도 구성되는 보조 디스플레이 장치는 또한 기타 데이터가 기록되고, 게임이 실행되며, 약속 달력이 유지되도록 할 수 있다. 이러한 상이한 어플리케이션 프로그램들이 쉽게 동작되도록 하기 위하여, 아이콘 및 메뉴 항목이 셸 확장(470)을 통해 추가될 수 있다. 프레임워크 라이브러리(374) 또한 대응하는 확장(474)을 통해 확장될 수 있다.
도 5에 나타난 바와 같이, 보조 디스플레이 스크린이 충분한 공간을 갖는 한 구현에서, 보조 디스플레이 장치의 스크린(506)의 영역(504)은 장치 제조업자가 회사 로고와 같은 소정의 정보를 표시하기 위하여 확보된다. 확장된 하드웨어에 대응하는 정보를 보여주기 위해 영역이 사용될 수 있으며, 예를 들어, GPS 수신기가 소정 GPS 데이터를 그 영역에 보여줄 있고, 또는 선택되면 GPS 데이터를 메인 스크린에 신속하게 불러올 수 있는 아이콘을 보여줄 수 있다.
도 3으로 돌아가면, 메인 컴퓨터 시스템의 클라이언트 보조 디스플레이 API 집합(304 및/또는 310)에서도 플랫폼이 확장가능하다. 이 때문에, 클라이언트 API를 사용하는 단순하고 확장가능한 메커니즘이 장치 제조업자에 의해 제공되는 장치 소프트웨어와 메인 컴퓨터 시스템 사이의 통신을 위해 제공된다. 이것은 플랫폼을 사용하는 특수 하드웨어를 필요로 하는 특정 특성의 엔드-투-엔드 구현을 제공하기 위한 능력을 장치 제조업자에게 제공한다. API 확장가능성은 장치 제조업자 및 독립적인 소프트웨어 벤더가 특수화된 API를 필요로 하지 않고서 장치상의 맞춤화된 하드웨어와 상호작용할 수 있는 메인 컴퓨터 시스템상의 클라이언트 어플리케이션(306) 및 기타 프로그램(302)을 개발할 수 있게 한다.
보다 상세하게는, 확장가능성 모델은 클라이언트 어플리케이션(302)이 장치에 데이터를 전송할 수 있기 전에 "엔드포인트"가 지정될 것을 필요로 한다. 장치의 엔드포인트를 광고하기 위해 보조 장치 펌웨어의 코드를 장치 제조업자가 확장하게 함으로써, 메인 컴퓨터 시스템상의 소프트웨어는 특수 하드웨어 기능을 갖는 장치를 식별할 수 있고, 직접 그 엔드포인트에 통신 채널을 오픈할 수 있다. 클라 이언트 API는 클라이언트 어플리케이션과 장치 사이에 전송된 데이터의 타입이 관련되지 않도록, 예를 들어, 텍스트, 이진 데이터, 미디어, 객체 등이 통신될 수 있도록 설계된다. 따라서, 엔드-투-엔드 플랫폼은 장치 제조업자의 입장에서 적은 양의 노력으로 하드웨어 확장가능성을 제공한다.
강화된 장치에 대해, 본질적으로 유일한 요구사항은 엔드포인트들 사이에 데이터 파이프를 설립하고, 직렬화된 방식으로 객체 등을 전달하는 것이다. 이것을 수행하기 위한 한가지 방식은 .NET 리모팅(.NET remoting)이라 불리는 기술을 사용하는 것이며, 그것은 메인 컴퓨터 시스템상의 코드가 보조 장치상의 클래스에 메소드를 호출하도록 허용한다. 따라서, 예를 들어, 메인 컴퓨터 시스템상의 어플리케이션은 메인 컴퓨터 시스템상의 GPS 정보를 획득하기 위하여 GPS 기능과 함께 구성된 보조 장치로 호출할 수 있다.
상기에 기술된 바와 같이, 강화된 장치상의 캐시에 컨텐츠가 다운로드될 수 있고, 그 후 장치 자체가 원하는 대로 컨텐츠를 핸들링할 것이다. 이것은 시스템상에서 동작하는 다수의 어플리케이션이 일반적으로 보조 디스플레이상의 캐싱된 컨텐츠를 한번에 액세스하도록 동작하는 하나의 어플리케이션을 이용하여 컨텐츠를 제공하도록 할 뿐 아니라 연결되지 않은 사용을 허용함을 유의해야 한다.
본 발명은 다양한 수정 및 대안적인 구성의 여지가 있지만, 도시된 특정 실시예들이 도면에 도시되고, 상기에 상세히 기술된다. 그러나, 개시된 특정 형태 또는 형태들에 본 발명을 제한하고자 하는 것이 아니며, 반대로, 본 발명은 본 발명의 취지 및 범위 내에 속하는 모든 변경, 대안적인 구성, 및 등가물을 포함하도 록 의도된다.
전술한 설명으로부터 알 수 있는 바와 같이, 본 발명은 부가적인 하드웨어를 지원하기 위하여 필요한 대로 확장될 수 있는 계층을 갖는 보조 디스플레이 플랫폼을 제공한다. 동시에, 보조 디스플레이 플랫폼은 하드웨어 장치의 제조업자가 그 장치들을 모든 특성을 갖춘 보조 디스플레이로서 사용하도록 할 수 있지만, 다른 제조업자의 장치들로부터 혁신하고 자신의 장치들을 차별화하기 위해서 뿐 아니라 제조업자가 원하는 기능을 쉽게 추가할 수 있도록, 펌웨어에 어떠한 변경도 거의 하지 않고서 확장될 수 있다. 따라서 본 발명은 현대의 컴퓨팅에 필요한 다양한 이점 및 장점을 제공한다.

Claims (22)

  1. 보조 장치가 연결될 수 있는 메인 컴퓨터 시스템으로서,
    상기 메인 컴퓨터 시스템상의 보조 플랫폼을 포함하며,
    상기 보조 플랫폼은,
    고레벨 소프트웨어와의 하드웨어 차이를 추상화하고, 확장된 하드웨어를 지원하기 위해 필요한 대로 확장가능한 하드웨어 추상화 계층(hardware abstraction layer),
    상기 확장된 하드웨어에 대한 드라이버 코드를 포함함으로써 확장가능한 드라이버 계층,
    확장된 하드웨어를 지원하기 위해 필요한 대로 확장가능한 런타임 계층, 및
    상기 메인 컴퓨터 시스템 또는 상기 확장된 하드웨어에서 발생한 데이터에 대응하는 정보를 디스플레이하는 보조 장치 프로그램 코드
    를 포함하는 시스템.
  2. 제1항에 있어서,
    상기 보조 장치는 모바일 통신 장치를 포함하는 시스템.
  3. 제1항에 있어서,
    상기 보조 장치는 개별적인 컴퓨터, 모바일 통신 장치, 버튼 작동기를 갖는 보조 디스플레이 스크린, 시계, 벽걸이형 디스플레이, 디스플레이 스크린, 디지털 사진 프레임, 알람 시계, 텔레비전, 라디오, 시계, 미디어 재생기, 소비자 가전 기기 장치의 메인 디스플레이 내에 내장되거나 소비자 가전기기 장치의 메인 디스플레이를 사용하는 장치, 자동차, 트랜스포트 또는 기타 운송 유닛, 상기 메인 컴퓨터 시스템의 키보드 또는 기타 입력 장치, 호출기, 및 PDA를 포함하는 장치 타입들의 집합 중에서 하나의 장치를 포함하는 시스템.
  4. 제1항에 있어서,
    상기 확장된 하드웨어에 대응하는 상기 보조 장치상의 커스텀 소프트웨어 코드를 더 포함하는 시스템.
  5. 제4항에 있어서,
    상기 메인 컴퓨터 시스템상에서 동작하는 소프트웨어 코드와, 상기 보조 장치상의 커스텀 소프트웨어 코드 사이에 데이터를 전달하기 위해 확장가능한 메인 컴퓨터 시스템상의 어플리케이션 프로그램 인터페이스를 더 포함하는 시스템.
  6. 제4항에 있어서,
    상기 런타임은 공통 언어 런타임을 포함하고, 상기 커스텀 소프트웨어 코드는 관리된 코드를 포함하는 시스템.
  7. 제1항에 있어서,
    상기 확장된 하드웨어를 지원하기 위해 확장가능한 보조 셸 프로그램을 더 포함하는 시스템.
  8. 제1항에 있어서,
    상기 보조 장치는 상기 메인 컴퓨터 시스템상에서 발생한 데이터에 대응하는 보조 정보를 포함하는 정보를 디스플레이하기 위한 디스플레이를 포함하고, 상기 디스플레이는 맞춤화된 출력을 디스플레이하기 위해 확보된 영역을 포함하는 시스템.
  9. 제1항에 있어서,
    상기 확장된 하드웨어는, SPOT 라디오, 블루투스 라디오, GPS 수신기, 온도 감지기, 오디오 디코더, 오디오 인코더, 부가적인 저장장치, 생물측정 감지기, 가속도계, RFID 태그/판독기, 존재 검출, 저장 어레이/시스템 관리에 대한 인터페이스, 배터리, RF 송신기, 마이크, 라디오 수신기, 모바일 전화 컴포넌트, 무선 통신 컴포넌트, 무선 네트워크 컴포넌트, 및 표시기를 포함하는 컴포넌트들의 집합 중 적어도 하나의 하드웨어 컴포넌트에 대응하는 시스템.
  10. 컴퓨팅 장치에서,
    보조 장치 펌웨어 스택을 포함하는 펌웨어를 상기 컴퓨팅 장치에 설치하는 단계 - 상기 펌웨어 스택은 메인 컴퓨터 시스템상에서 발생한 데이터에 대응하는 보조 정보를 상기 컴퓨팅 장치의 디스플레이상에 디스플레이하는 코드를 포함함 - ,
    확장된 하드웨어를 상기 컴퓨팅 장치에 추가하는 단계, 및
    상기 확장된 하드웨어를 지원하기 위해 상기 펌웨어 스택을 확장하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 펌웨어 스택은 하드웨어 추상화 계층을 포함하며, 상기 펌웨어 스택을 확장하는 단계는 상기 하드웨어 추상화 계층을 확장하는 단계를 포함하는 방법.
  12. 제10항에 있어서,
    상기 펌웨어 스택은 드라이버 계층을 포함하며, 상기 펌웨어 스택을 확장하는 단계는 드라이버 코드를 확장하는 단계를 포함하는 방법.
  13. 제10항에 있어서,
    상기 펌웨어 스택은 런타임을 포함하며, 상기 펌웨어 스택을 확장하는 단계는 상기 런타임을 확장하는 단계를 포함하는 방법.
  14. 제10항에 있어서,
    상기 펌웨어 스택은 셸 프로그램을 포함하며, 상기 펌웨어 스택을 확장하는 단계는 상기 셸 프로그램을 확장하는 단계를 포함하는 방법.
  15. 제10항에 있어서,
    상기 펌웨어 스택은 프레임워크 라이브러리를 포함하며, 상기 펌웨어 스택을 확장하는 단계는 상기 프레임워크 라이브러리를 확장하는 단계를 포함하는 방법.
  16. 제10항에 있어서,
    상기 확장된 하드웨어를 상기 컴퓨팅 장치에 추가하는 단계는 모바일 통신을 위해 상기 컴퓨터 장치를 구성하는 단계를 포함하는 방법.
  17. 제10항에 있어서,
    상기 확장된 하드웨어를 추가하는 단계는, SPOT 라디오, 블루투스 라디오, GPS 수신기, 온도 감지기, 오디오 디코더, 오디오 인코더, 부가적인 저장장치, 생물측정 감지기, 가속도계, RFID 태그/판독기, 존재 검출, 저장 배열/시스템 관리에 대한 인터페이스, 배터리, RF 송신기, 마이크, 라디오 수신기, 모바일 전화 컴포넌트, 무선 통신 컴포넌트, 무선 네트워크 컴포넌트, 및 표시기를 포함하는 컴포넌트들의 집합 중 적어도 하나의 하드웨어 컴포넌트를 추가하는 단계를 포함하는 방법.
  18. 제10항에 있어서,
    상기 메인 컴퓨터 시스템상에서 동작하는 프로그램과, 상기 확장된 하드웨어에 대응하는 보조 장치상에서 동작하는 커스텀 소프트웨어 코드 사이에 데이터를 통신하는 단계를 더 포함하는 방법.
  19. 제10항에 있어서,
    맞춤화된 출력을 디스플레이하기 위해 확보된 상기 디스플레이의 영역에 커스텀 정보를 디스플레이하는 단계를 더 포함하는 방법.
  20. 실행될 때, 제10항의 방법을 수행하는 컴퓨터-실행가능 명령어들을 갖는 하나 이상의 컴퓨터-판독가능 매체.
  21. 실행될 때,
    보조 장치 펌웨어 스택을 포함하는 펌웨어를 컴퓨팅 장치에 설치하는 단계 - 상기 펌웨어 스택은 메인 컴퓨터 시스템상에서 발생한 데이터에 대응하는 보조 정보를 상기 컴퓨팅 장치의 디스플레이상에 디스플레이하는 코드를 포함함 - , 및
    상기 컴퓨팅 장치에 추가된 확장된 하드웨어를 지원하기 위하여 상기 펌웨어 스택을 확장하는 커스텀 소프트웨어에 상기 펌웨어 스택의 적어도 일부를 통해 통신 경로를 설립하는 단계
    를 포함하는 단계들을 수행하는 컴퓨터-실행가능 명령어들을 갖는 적어도 하나의 컴퓨터-판독가능 매체.
  22. 제21항에 있어서,
    상기 펌웨어 스택을 확장하는 커스텀 소프트웨어는 드라이버 계층에 추가된 드라이버 코드를 포함하는 컴퓨터-판독가능 매체.
KR1020050111600A 2004-11-23 2005-11-22 보조 디스플레이에 대한 확장성 시스템 및 방법 KR101201028B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/996,643 2004-11-23
US10/996,634 US7549154B2 (en) 2004-11-23 2004-11-23 Extensible architecture for auxiliary displays
US10/996,634 2004-11-23

Publications (2)

Publication Number Publication Date
KR20060057512A true KR20060057512A (ko) 2006-05-26
KR101201028B1 KR101201028B1 (ko) 2012-11-14

Family

ID=36204306

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050111600A KR101201028B1 (ko) 2004-11-23 2005-11-22 보조 디스플레이에 대한 확장성 시스템 및 방법

Country Status (10)

Country Link
US (1) US7549154B2 (ko)
EP (1) EP1659484A3 (ko)
JP (1) JP4907964B2 (ko)
KR (1) KR101201028B1 (ko)
CN (1) CN1782996B (ko)
AU (1) AU2005232323B2 (ko)
BR (1) BRPI0504860A (ko)
CA (1) CA2527481A1 (ko)
MX (1) MXPA05012648A (ko)
RU (1) RU2406119C2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150017205A (ko) * 2013-08-06 2015-02-16 삼성전자주식회사 기능 확장장치, 디스플레이 장치 및 이의 제어 방법

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7221331B2 (en) * 2003-05-05 2007-05-22 Microsoft Corporation Method and system for auxiliary display of information for a computing device
US7827232B2 (en) * 2003-05-05 2010-11-02 Microsoft Corporation Record button on a computer system
US20040235520A1 (en) 2003-05-20 2004-11-25 Cadiz Jonathan Jay Enhanced telephony computer user interface allowing user interaction and control of a telephone using a personal computer
US7216221B2 (en) 2003-09-30 2007-05-08 Microsoft Corporation Method and system for unified audio control on a personal computer
US7581034B2 (en) * 2004-11-23 2009-08-25 Microsoft Corporation Sending notifications to auxiliary displays
US7711868B2 (en) * 2004-11-23 2010-05-04 Microsoft Corporation Waking a main computer system to pre-fetch data for an auxiliary computing device
US7784065B2 (en) 2005-02-07 2010-08-24 Microsoft Corporation Interface for consistent program interaction with auxiliary computing devices
EP1851664A4 (en) * 2005-02-08 2008-11-12 Eliezer Kantorowitz AMBIENTOUS SOFTWARE
US20060242590A1 (en) * 2005-04-21 2006-10-26 Microsoft Corporation Simple content format for auxiliary display devices
US20070079030A1 (en) * 2005-09-30 2007-04-05 Intel Corporation Auxiliary display and storage unit
US8972532B2 (en) * 2006-06-30 2015-03-03 Ca, Inc. Providing hardware configuration management for heterogeneous computers
KR20080047811A (ko) * 2006-11-27 2008-05-30 삼성전자주식회사 영상처리장치를 포함하는 디스플레이시스템과,영상처리장치와 연결되는 디스플레이장치 및 그디스플레이방법
US8528825B2 (en) 2007-01-03 2013-09-10 Intelleflex Corporation Long range RFID device as modem and systems implementing same
US8941496B2 (en) * 2007-01-03 2015-01-27 Intelleflex Corporation Long range RFID device for battery monitoring and systems implementing same
TWI329265B (en) * 2007-01-16 2010-08-21 Asustek Comp Inc Portable computer
US8127310B1 (en) * 2007-03-26 2012-02-28 Celio Corporation Method and apparatus for dynamically switching display drivers in mobile device operating system
US8042122B2 (en) * 2007-06-27 2011-10-18 Microsoft Corporation Hybrid resource manager
US20090021486A1 (en) * 2007-07-19 2009-01-22 Apple Inc. Dashboard Surfaces
CN101499113B (zh) * 2008-01-28 2011-03-30 联想(北京)有限公司 安全调度显示的系统、方法及辅助显示装置
US8375402B2 (en) * 2009-03-25 2013-02-12 Honeywell International Inc. Mechanism for interfacing a display screen of another technology with a computing platform
US8019903B2 (en) * 2009-03-27 2011-09-13 Microsoft Corporation Removable accessory for a computing device
US8245243B1 (en) * 2009-07-06 2012-08-14 Xilinx, Inc. Transforming device drivers to improve efficiency
US9268367B2 (en) 2010-10-13 2016-02-23 Microsoft Technology Licensing, Llc Use of low-power display on device
US9015576B2 (en) * 2011-05-16 2015-04-21 Microsoft Technology Licensing, Llc Informed partitioning of data in a markup-based document
US9843665B2 (en) 2011-05-27 2017-12-12 Microsoft Technology Licensing, Llc Display of immersive and desktop shells
JP6058643B2 (ja) 2011-05-27 2017-01-11 トムソン ライセンシングThomson Licensing 複数のスクリーンによるメディア体験を提供する方法、装置およびシステム
US8924885B2 (en) 2011-05-27 2014-12-30 Microsoft Corporation Desktop as immersive application
US10417018B2 (en) 2011-05-27 2019-09-17 Microsoft Technology Licensing, Llc Navigation of immersive and desktop shells
WO2014071367A2 (en) * 2012-11-05 2014-05-08 Rodney Aiglstorfer Systems and methods for providing financial service extensions
CN105320500B (zh) * 2014-06-11 2018-08-03 先智云端数据股份有限公司 在云端环境中为应用程序编程接口封装功能的方法
US10191738B1 (en) * 2015-07-27 2019-01-29 Invensense, Inc. Systems and methods for interfacing a sensor and a processor
CN105633960A (zh) * 2016-03-09 2016-06-01 东南大学 多适应性黑启动装置
CN109672884B (zh) * 2017-10-13 2022-05-10 斑马智行网络(香港)有限公司 图像硬件编码处理方法和装置
US11153631B2 (en) * 2017-11-10 2021-10-19 Huawei Technologies Co., Ltd. Method and apparatus for playing television program
JP7412235B2 (ja) * 2020-03-17 2024-01-12 本田技研工業株式会社 情報処理装置
CN113868165A (zh) * 2021-09-28 2021-12-31 许昌许继软件技术有限公司 一种基于辅助设备就地模块的通信装置及方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860342A (en) 1987-04-09 1989-08-22 Danner David L Computer-telephone interface method and apparatus
AU2957895A (en) 1994-07-08 1996-02-09 Algorhythms, Inc. Computer on-screen telephone having a telephone construction kit and method of operation
US5831606A (en) * 1994-12-13 1998-11-03 Microsoft Corporation Shell extensions for an operating system
US5745761A (en) * 1994-12-15 1998-04-28 International Business Machines Corporation Advanced graphics driver architecture with extension capability
JP3459149B2 (ja) 1995-11-06 2003-10-20 シャープ株式会社 電子メール転送システム
EP0777394A1 (en) 1995-12-01 1997-06-04 ALCATEL BELL Naamloze Vennootschap Method and apparatus for electronic mail transmission as short messages towards a mobile radio terminal
WO1997034405A1 (fr) 1996-03-13 1997-09-18 Ntt Mobile Communications Network Inc. Systeme et procede de notification de reception de courrier
US5991822A (en) * 1997-03-17 1999-11-23 International Business Machines Corporation System for modifying functions of static device driver using a registered driver extension extended dynamically by providing an entry point for the driver extension
US6240168B1 (en) 1998-10-29 2001-05-29 Picazo Communications Method and apparatus for controlling a computer to implement telephone functions with a displayed telephone of variable size
MXPA01011902A (es) * 1999-05-21 2002-06-21 Gen Instrument Corp Arquitectura de software para una terminal descodificadora de television que proporciona compatibilidad con entornos de operacion multiple.
GB2353184A (en) 1999-08-13 2001-02-14 Nokia Mobile Phones Ltd Disabling a touch sensitive display screen when a call is established
US6603855B1 (en) 1999-10-21 2003-08-05 Agere Systems Inc. Cordless phone notification of extended off-hook using parallel set detection
US20030023700A1 (en) * 2001-07-27 2003-01-30 Lightsurf Technologies, Inc. System and methodology providing on-board user interface
US6907482B2 (en) * 2001-12-13 2005-06-14 Microsoft Corporation Universal graphic adapter for interfacing with hardware and means for encapsulating and abstracting details of the hardware
CN1647500A (zh) * 2002-04-04 2005-07-27 通用仪表公司 用低级图形驱动器在辅助显示装置上显示图形的方法和设备
US7106472B2 (en) * 2002-10-31 2006-09-12 Hewlett-Packard Development Company, L.P. Print driver for an extended printing device
US7146488B2 (en) * 2003-04-16 2006-12-05 Hewlett-Packard Development Company, L.P. System and method for expanding processor functionality
US7221331B2 (en) * 2003-05-05 2007-05-22 Microsoft Corporation Method and system for auxiliary display of information for a computing device
US7240228B2 (en) * 2003-05-05 2007-07-03 Microsoft Corporation Method and system for standby auxiliary processing of information for a computing device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150017205A (ko) * 2013-08-06 2015-02-16 삼성전자주식회사 기능 확장장치, 디스플레이 장치 및 이의 제어 방법

Also Published As

Publication number Publication date
US20060130072A1 (en) 2006-06-15
EP1659484A3 (en) 2008-12-17
JP4907964B2 (ja) 2012-04-04
RU2406119C2 (ru) 2010-12-10
US7549154B2 (en) 2009-06-16
AU2005232323A1 (en) 2006-06-08
CN1782996A (zh) 2006-06-07
EP1659484A2 (en) 2006-05-24
MXPA05012648A (es) 2006-05-25
KR101201028B1 (ko) 2012-11-14
CN1782996B (zh) 2010-06-16
AU2005232323B2 (en) 2010-10-21
CA2527481A1 (en) 2006-05-23
BRPI0504860A (pt) 2006-07-11
JP2006209738A (ja) 2006-08-10
RU2005136309A (ru) 2007-05-27

Similar Documents

Publication Publication Date Title
KR101201028B1 (ko) 보조 디스플레이에 대한 확장성 시스템 및 방법
JP5323304B2 (ja) コンピュータシステムと補助ディスプレイの間でデータを交換するための方法およびシステム
KR101120845B1 (ko) 문맥?인식 보조 디스플레이 플랫폼 및 애플리케이션
US7581034B2 (en) Sending notifications to auxiliary displays
US7711868B2 (en) Waking a main computer system to pre-fetch data for an auxiliary computing device
US7660914B2 (en) Auxiliary display system architecture
KR20060047711A (ko) 보조 정보의 오프라인 디스플레이 및 네비게이션을 위하여데이터를 캐싱하는 방법 및 시스템

Legal Events

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

Payment date: 20151016

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 7