KR20230133097A - 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법 - Google Patents

웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법 Download PDF

Info

Publication number
KR20230133097A
KR20230133097A KR1020220030197A KR20220030197A KR20230133097A KR 20230133097 A KR20230133097 A KR 20230133097A KR 1020220030197 A KR1020220030197 A KR 1020220030197A KR 20220030197 A KR20220030197 A KR 20220030197A KR 20230133097 A KR20230133097 A KR 20230133097A
Authority
KR
South Korea
Prior art keywords
layer
module
wayland
software architecture
protocol
Prior art date
Application number
KR1020220030197A
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 현대모비스 주식회사
Priority to KR1020220030197A priority Critical patent/KR20230133097A/ko
Priority to US18/147,486 priority patent/US20230289179A1/en
Publication of KR20230133097A publication Critical patent/KR20230133097A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/311Functional or applicative languages; Rewrite languages
    • 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
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법은, 애플리케이션 계층, 애플리케이션 프로그래밍 인터페이스(API) 계층, GDBus 계층, 레이아웃 서비스 계층, 웨이랜드(Waylnad) 프로토콜 계층, 웨스턴(Weston) 계층 및 커널(Kernel) 계층을 포함하는 그래픽 모듈에서 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법으로서, 상기 API 계층과 상기 레이아웃 서비스 계층 사이의 통신을 중개하는 상기 GDBus 계층을 상기 레이아웃 서비스 계층과 상기 웨스턴 계층 사이의 통신을 중개하는 상기 웨이랜드 프로토콜 계층에 통합하는 단계; 및 화면상에 어떠한 애플리케이션을 보여줄지를 결정하고 관리하는 서비스를 제공하는 상기 레이아웃 서비스 계층을 윈도우의 정책에 따라 기능을 수행하는 WindowManagerService 모듈로 변경하여 상기 웨스턴 계층에 통합하는 단계를 포함한다.

Description

웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법{METHOD FOR IMPLEMENTING A SOFTWARE ARCHITECTURE FOR COMMON USE OF WAYLAND PROTOCOL}
본 발명은 차량 내에 구비된 디스플레이용 전자 장치에서 웨이랜드 프로토콜(wayland protocol)의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법에 관한 것이다.
리눅스(Linux) OS에서 지원하는 오픈소스인 웨스턴(Weston)와 웨이랜드(Wayland)와 같은 그래픽 모듈은 모든 자동차업계 및 AP(Application Processor) Vendor에서 일반적으로 가장 많이 사용된다. AP Vendor에서 버전을 배포시에도 이를 기반으로 그래픽 모듈 테스트가 이루어진다.
관련 그래픽 모듈들은 HW 그래픽 라이브러리에 의존성을 가지고 있다. 이는 고객사의 시나리오와 사양 기준에 충돌이 되는 경우들이 많이 있고, 이는 무조건 지켜야 하는 고객과의 약속인데 이를 중간에 컨트롤하는 모듈이 없다. 즉, 그래픽 기능에 대해 공용화 하고, 모듈화를 하는 기능을 갖는 모듈이 존재하지 않음을 의미한다.
이런 모듈이 있다면, HW vendor 쪽을 직접 수정하여 공수 및 리소스가 많이 투입되는 일을 줄일 수 있다. 이는 본 출원인의 경쟁사에서도 실제 양산에 적용한 이력은 없다. 그만큼 어려운 분야이고 양산의 안정성을 확보하는 일이 쉽지 않기 때문이다. 이 모듈 부분은 성능에 직접적으로 영향을 줄 수 있기에 이 부분에 대한 최적화 필요성은 언제나 강조되고 있다.
종래기술의 문제점
Linux OS에서 지원하는 오픈소스인 그래픽 모듈(Weston/Wayland)은 가장 일반적으로 양산차종 별로 HW vendor 업체에서 제공하는 기능별 라이브러리의 디펜던시를 가지고 적용된다.
그래픽 부분의 기능은 Wayland 기반의 IPC 인 Wayland 프로토콜로 정의하여 사용하는데 기존에는 AP 별로 이 부분이 달라 차종별 대응 어려움이 많았다. 그리고 자사에 특화된 시나리오 적용과 버전 업데이트 시에도 AP별로 상이한 부분으로 리소스가 많이 투여되는 문제가 있었고 일반적으로 추가 개발이 무조건 이루어지는 것이 당연시 진행되었다.
상술한 문제점을 해결하기 위한 본 발명은 아래와 같은 목적을 달성하기 위한 장치 및 방법을 제공하는데 그 목적이 있다.
1. AP 의존성을 회피할 수 있는 그래픽 모듈 공용화 개발
1-1. 그래픽 연계 서비스와 App의 기능정의를 위한 공용 그래픽 인터페이스 설계
1-2. 그래픽 모듈과 연계 서비스 및 App간의 통신을 위한 그래픽 프로토콜 공용화 구현
2. Weston 내부 추가 기능 모듈화 개발
2.1 Window의 정책을 관리하고 설정하는 모듈(WindowPolicyManager) 설계 및 구현
2.2 Window의 정책에 따라 기능을 실행하는 모듈 (WindowManagerService) 설계 및 구현
본 발명의 전술한 목적 및 그 이외의 목적과 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부된 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다.
상술한 목적을 달성하기 위한 본 발명의 일면에 따른 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법은, 애플리케이션 계층, 애플리케이션 프로그래밍 인터페이스(API) 계층, GDBus 계층, 레이아웃 서비스 계층, 웨이랜드(Waylnad) 프로토콜 계층, 웨스턴(Weston) 계층 및 커널(Kernel) 계층을 포함하는 그래픽 모듈에서 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법으로서, 상기 API 계층과 상기 레이아웃 서비스 계층 사이의 통신을 중개하는 상기 GDBus 계층을 상기 레이아웃 서비스 계층과 상기 웨스턴 계층 사이의 통신을 중개하는 상기 웨이랜드 프로토콜 계층에 통합하는 단계; 및 화면상에 어떠한 애플리케이션을 보여줄지를 결정하고 관리하는 서비스를 제공하는 상기 레이아웃 서비스 계층을 윈도우의 정책에 따라 기능을 수행하는 WindowManagerService 모듈로 변경하여 상기 웨스턴 계층에 통합하는 단계를 포함한다.
실시 예에서, 상기 GDBus 계층을 상기 웨이랜드 프로토콜 계층에 통합하는 단계는, 상기 GDBus 계층의 GDBus 인터페이스를 상기 웨이랜드 프로토콜 계층에 추가하는 단계일 수 있다.
실시 예에서, GDBus 인터페이스를 상기 웨이랜드 프로토콜 계층에 추가함에 따라 상기 그래픽 모듈에서 상기 GDBus 계층이 제거되는 것을 특징으로 한다.
실시 예에서, 상기 레이아웃 서비스 계층을 윈도우의 정책에 따라 기능을 수행하는 WindowManagerService 모듈로 변경하여 상기 웨스턴 계층에 통합하는 단계는, 상기 레이아웃 서비스 계층에 존재하는 기능별 함수 구조를 갖도록 상기 WindowManagerService 모듈을 구현하는 단계; 및 상기 구현된 상기 WindowManagerService 모듈을 상기 웨스턴 계층에 추가하는 단계를 포함할 수 있다.
실시 예에서, 상기 WindowManagerService 모듈이 상기 레이아웃 서비스 계층에 존재하는 기능별 함수 구조를 갖도록 구현됨에 따라, 상기 그래픽 모듈에서 상기 레이아웃 서비스 계층이 제거되는 것을 특징으로 한다.
실시 예에서, 웨스턴 계층(170')에 제조사별로 상이한 상기 윈도우의 정책을 일반화하여 정의 및 관리하는 WindowPolicyManager 모듈을 추가하는 단계를 더 포함함을 특징으로 한다.
본 발명의 다른 일면에 따른 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐로 구현된 그래픽 모듈은, 애플리케이션 계층 모듈, 애플리케이션 프로그래밍 인터페이스(API) 계층 모듈, 웨이랜드 프로토콜 계층 모듈, 웨스턴 계층 모듈 및 커널 계층 모듈을 포함하는 웨이랜드(wayland) 및 웨스턴(weston) 기반의 그래픽 모듈에서, 상기 웨이랜드 프로토콜 계층 모듈은,
상기 API 계층 모듈과 상기 웨스턴 계층 모듈 사이의 통신 중개를 담당하는 IPC(Inter-Process Communication) 계층으로서, GDBus 인터페이스를 포함하도록 구성되고, 상기 웨스턴 계층 모듈은, 윈도우의 정책에 따라 기능을 실행하는 WindowManagerService 모듈을 포함하도록 구성된 것을 특징으로 한다.
실시 예에서, 상기 WindowManagerService 모듈은, 기존의 웨이랜드(wayland) 및 웨스턴(weston) 기반의 그래픽 모듈에서 설계된 레이아웃 서비스 계층 모듈이 통합된 모듈일 수 있다.
실시 예에서, 상기 WindowManagerService 모듈은, 상기 레이아웃 서비스 계층 모듈에 존재하는 기능별 함수 구조를 갖도록 구현된 것일 수 있다.
실시 예에서, 상기 웨스턴 계층 모듈은, 제조사별로 상이한 상기 윈도우의 정책을 일반화하여 정의 및 관리하는 WindowPolicyManager 모듈을 더 포함하도록 구성될 수 있다.
실시 예에서, 상기 윈도우의 정책은, 제조사별로 상이한 화면 갱신, 터치 인식 및 키이벤트 인식과 관련된 정책들을 포함할 수 있다.
실시 예에서, 상기 웨이랜드 프로토콜 계층 모듈은, 기존의 웨이랜드(wayland) 및 웨스턴(weston) 기반의 그래픽 모듈에서 설계된 API 계층 모듈과 레이아웃 서비스 계층 모듈 사이의 통신 중개를 담당하는 GDBus 계층 모듈과 통합된 모듈일 수 있다.
본 발명에 따르면, 차량 내에 구비된 디스플레이용 전자 장치에 의해 구현되는 그래픽 연계 서비스와 App의 기능정의를 위한 공용 그래픽 인터페이스 설계하고, 그래픽 모듈과 연계 서비스 및 App간의 통신을 위한 그래픽 프로토콜 공용화를 구현한다.
또한, 웨스턴 내부에 Window의 정책을 관리하고 설정하는 모듈(WindowPolicyManager) 설계 및 구현하고, Window의 정책에 따라 기능을 실행하는 모듈(WindowManagerService)을 설계 및 구현한다.
이렇게 함으로써, 그래픽 모듈 공용화 개발을 통한 SW 개발 경쟁력 강화할 수 있고, 웨스턴(Weston) 내부에 추가된 WindowPolicyManager과 WindowManagerService를 통해 자사 솔루션을 확보할 수 있고, AP별로 상이함에 따른 유지 보수에 필요한 대응 시간을 주일 수 있다. 또한, SW 아키텍쳐 재구성을 통해 신규 기능을 추가할 수 있는 유연성을 확보할 수 있고, 양산을 위한 성능 향상 및 설계 구조를 확보할 수 있다.
도 1은 본 발명의 실시 예에 따른 웨이랜드 프로토콜의 공용화를 위해 소프트웨어 아키텍쳐를 구현하기 위한 디스플레이용 전자 장치의 블록도이다.
도 2는 도 1에 도시한 디스플레이용 전자 장치에 의해 구현되는 Linux OS에서 지원하는 오픈소스인 웨이랜드(wayland) 및 웨스턴(weston) 기반의 그래픽 모듈과 관련된 기존 소프트웨어 아키텍쳐를 설명하기 위한 도면이다.
도 3은 본 발명의 실시 예에 따라 도 1에 도시한 기존 소프트웨어 아키텍쳐로부터 변경된 소프트웨어 아키텍쳐를 설명하기 위한 도면이다.
본 발명의 실시예들은 당해 기술 분야에서 통상의 지식을 가진 자에게 본 발명을 더욱 완전하게 설명하기 위하여 제공되는 것이며, 하기 실시예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 하기 실시예에 한정되는 것은 아니다. 오히려, 이들 실시예는 본 개시를 더욱 충실하고 완전하게 하고, 당업자에게 본 발명의 사상을 완전하게 전달하기 위하여 제공되는 것이다. 또한, 이하의 도면에서 각 구성은 설명의 편의 및 명확성을 위하여 과장된 것이며, 도면 상에서 동일 부호는 동일한 요소를 지칭한다. 본 명세서에서 사용된 바와 같이, 용어 "및/또는"는 해당 열거된 항목 중 어느 하나 및 하나 이상의 모든 조합을 포함한다.
[용어의 설명]
웨이랜드(Wayland)
웨이랜드(Wayland)는 그래픽 시스템에 있어서 서버와 클라이언트 또는 그래픽 시스템을 구성하는 소프트웨어 계층들 간의 통신을 나타내는 프로토콜로 정의된다. 본 발명은 제조사별로 다른 웨이랜드(Wayland) 프로토콜을 공용화할 수 있는 방안을 제공하는데 있다.
웨스턴(Weston)
웨스턴(Weston)은 웨이랜드 프로토콜(wayland protocol) 및 웨이랜드 컴포지터(Wayland compositor)를 구현한다.
웨스턴(Weston)은 쉘 플러그인(Shell plugin)을 지원(desktop-shell, xdg-shell...)하는 기능을 제공한다. 여기서, Desktop-shell은 전통적인 데스크탑과 같은 윈도우 매니지와 키보드/마우스 인터페이스를 지원하는 플러그인(plugin)으로 정의되며, 예를 들면, 바탕화면, 패널, 스크린 잠금 지원한다. xdg-shell은 윈도우의 위치를 옮기고 크기를 조절하거나, 전체화면으로 전환하는 등의 기능을 지원하는 플로그인(plugin)으로 정의된다.
또한, 웨스턴(Weston)은 윈도우들을 마우스 커서 뷰, App1 뷰, App2 뷰 등과 같이 여러 계층(레이어)으로 구분해서 관리하는 기능을 제공한다.
또한, 웨스턴(Weston)은 쉘(shell)을 이용하여 출력되는 각 윈도우(뷰)의 순서를 결정하는 기능을 제공한다.
또한, 웨스턴(Weston)은 윈도우를 화면에 나타나게 하거나 위치를 ?ケ璲킬? 크기를 변경하는 기능을 제공한다.
웨이랜드 컴포지터(compositor)
웨이랜드 컴포지터(compositor)는 화면 위에 겹쳐있는 모든 윈도우들을 하나의 스크린 위에 합쳐서 보여주는 기능을 제공한다.
쉘(shell)
쉘(shell)은 윈도우의 출력과 순서를 관리하기 위한 정책(Policy)를 정의하며, 윈도우의 라이프 사이클 및 윈도우 매니징 기능을 포함한다. 또한 쉘(shell)은 윈도우를 옮기거나 크기를 변경하고 패널이나 배경화면을 보여주는 기능을 제공한다. 또한 쉘(shell)은 모든 윈도우 화면상에서의 위치와 크기를 결정(마우스 클릭, 드래그, 최대/최소)한다.
IVI(In-Vehicle Infotainment)-shell
IVI-shell은 웨이랜드(wayland)의 서피스(wl_surface)를 IVI-application 프로토콜에 맵핑하여 서피스(surface), 레이어(layer), 스크린(screen)의 관리 기능을 지원하는 플러그인(plugin)을 의미한다.
IVI-shell에서 IVI는 사용될 수 있는 환경을 의미하고, shell 은 윈도우(window)의 출력과 그 순서를 담당한다. 즉 IVI-shell 은 IVI 환경기반에서 윈도우(window)를 출력하고 순서를 정해주는 역할을 하는 라이브러리이다.
도 1은 본 발명의 실시 예에 따른 웨이랜드(Wayland) 프로토콜의 공용화를 위해 소프트웨어 아키텍쳐를 구현하기 위한 디스플레이용 전자 장치의 블록도이다.
도 1을 참조하면, 웨이랜드(Wayland) 프로토콜의 공용화를 위한 디스플레이용 전자 장치(100, 이하, '전자 장치'라 함)는 차량 내의 운전자에게 정보를 제공하기 위해 차량 내에 위치될 수 있다.
다양한 실시 예들에서, 전자 장치(100)는 차량 내에 임베디드되는 고정된 장치일 수 있다. 예를 들면, 전자 장치(100)는 생산 과정 이후 튜닝(tunig)을 통해 차량 내에 삽입되는 컴퓨팅 장치일 수 있다.
다양한 실시 예들에서, 전자 장치(100)는 IVI(In-Vehicle Infortainment) 서비스를 차량 내에 임베디드된 출력 장치, 예를 들면, 디스플레이, 스피커 등을 통해 제공하는 장치일 수 있다.
다양한 실시 예들에서, 전자 장치(100)는, 예를 들면, 차량의 운행 정보를 표시하는 클러스터 장치, AVN(오디오/비디오/내비게이션) 장치, HUD(헤드업 디스플레이) 장치, 내비게이션 장치 등으로 구현될 수 있다.
또한 전자 장치(100)는 이동성을 가지면서 차량 내에서 임시적으로 고정되는 장치일 수 있다. 이 경우, 전자 장치(100)는, 예를 들면, 차량에 임베디드된 커넥터(connector)를 통해 고정되거나 부착 가능한 스마트폰(smart phone), 태블릿(tablet) PC(personal computer), 랩탑 컴퓨터(laptop computer), USB(universal serial bus) 포트를 가지는 컴퓨터 프로그램 제품(computer program product) 중 어느 하나일 수 있다.
전자 장치(100)는 통신부(10), 프로세서(20), 메모리(30), 입력부(40) 및 영상 처리부(50)를 포함할 수 있다.
도 1의 실시 예에 도시된 구성 요소 이외에도 전자 장치(100)는 디스플레이부(미도시), 오디오 처리부(미도시), 오디오 출력부(미도시), 전원부(미도시) 등 다양한 구성을 더 포함할 수 있다.
또한, 전자 장치(100)가 반드시 도1에 도시된 구성을 모두 포함하여 구현되는 것으로 한정되지 않는다.
통신부(10)는 다양한 소스를 통해 영상 신호를 수신할 수 있다. 예를 들어, 통신부(10)는 외부의 방송국으로부터 방송 데이터를 수신하거나, 외부 서버로부터 스트리밍된 영상 데이터를 수신할 수 있다.
통신부(10)는, 예를 들어, 유선 LAN, 무선 LAN, WiFi, Bluetooth(BT), Near Field Communication(NFC) 방식으로 동작하는 통신용 칩을 포함할 수 있다.
메모리(30)는 전자 장치(100)를 구동하기 위한 다양한 모듈, 소프트웨어, 데이터를 저장할 수 있다. 예를 들어, 메모리(30)는 리눅스 OS(Operating System), 미들웨어, 애플리케이션, API, 그래픽 드라이버, 화면 구성과 관련된 라이브러리 등을 저장할 수 있다.
메모리(30)는 플래시 메모리, 하드디스크 등의 형태로 구현될 수 있다. 예를 들어, 메모리(130)는 전자 장치(100)의 동작 수행을 위한 프로그램을 저장하기 위한 ROM, 전자 장치(100)의 동작 수행에 따른 데이터를 일시적으로 저장하기 위한 RAM 등을 구비할 수 있다. 또한, 각종 참조 데이터를 저장하기 위한 EEPROM(Electrically Erasable and Programmable ROM) 등을 더 구비할 수 있다.
입력부(40)는 전자 장치(100)를 제어하기 위한 다양한 사용자 명령을 수신할 수 있다. 입력부(40)는 버튼, 터치 패드 등으로 구현될 수도 있고, 원격제어장치와 같은 별도의 장치로 구현될 수도 있다.
전자 장치(100)가 디스플레이부(미도시)를 포함하는 것으로 구현될 경우, 입력부(40)는 디스플레이부(미도시)와 결합하여 터치 스크린으로 구현될 수 있다. 터치 스크린은 터치 입력 위치, 면적, 터치 입력의 압력 등을 검출할 수 있다.
영상 처리부(50)는 통신부(10)로부터 수신한 영상 데이터 또는 프로세서(20)에서 처리한 데이터에 대한 영상 처리를 수행한다. 영상 처리부(50)는 영상 데이터에 대한 스케일링, 노이즈 필터링, 프레임 레이트 변환, 해상도 변환과 같은 다양한 이미지 처리를 수행할 수 있다. 영상 처리부(50)는, 예를 들면, 단일의 GPU 또는 복수의 GPU(Graphics Processing Unit)로 구현될 수 있다.
프로세서(20)는 전자 장치(100)의 상술한 구성들을 제어할 수 있다. 프로세서(20)는 단일의 CPU(Central Processing Unit) 또는 복수의 CPU로 구현될 수도 있다.
도 1에서는 프로세서(20)와 영상 처리부(50)가 분리된 형태로 도시되어 있으나, 하나로 통합될 수 있다. 예를 들면, 프로세서(120) 내에 영상 처리부(50)가 통합될 수 있다. 이 경우, 프로세서(20)는 적어도 하나의 CPU 및/또는 적어도 하나의 GPU를 포함하도록 구현될 수 있다.
도 2는 도 1에 도시한 디스플레이용 전자 장치에 탑재된 Linux OS에서 지원하는 오픈소스인 웨이랜드(wayland) 및 웨스턴(weston) 기반의 그래픽 모듈과 관련된 기존 소프트웨어 아키텍쳐를 설명하기 위한 도면이다.
도 2를 참조하면, 기존 소프트웨어 아키텍쳐는 도 1에 도시한 프로세서(120)에 의해 실행 및/또는 구현되는 다수의 소프트웨어 계층을 포함할 수 있다.
구체적으로, 기존 소프트웨어 아키텍쳐는, 도 2에 도시된 바와 같이, 애플리케이션(Application: App) 계층 모듈(110), 애플리케이션 프로그래밍 인터페이스(Application Programming Interface: API) 계층 모듈(120), GDBus 계층 모듈(130), 프레임워크(Framework) 계층 모듈(140), 레이아웃 서비스(Layout Service) 계층 모듈(150), 웨이랜드 프로토콜(Wayland protocol) 계층 모듈(160), 웨스턴(Weston) 계층 모듈(170) 및 커널(Kernel) 계층 모듈(180)을 포함할 수 있다.
이러한 소프트웨어 계층들(110~180)은 도 1에 도시한 프로세서(120)에 의해 실행되는 리눅스 OS 상에서 실행 및 구현되는 소프트웨어 계층들이다.
애플리케이션 계층(110)은 클라이언트에서 실행되는 다수의 애플리케이션들을 포함하도록 구성될 수 있다. 애플리케이션 계층(110)을 구성하는 애플리케이션은, HMI Controller, car navigation, rear view camera, media player 등을 예로 들 수 있다.
애플리케이션 계층(110)은 그 하부 계층을 구성하는 API 계층(120)과 통신하며, 다양한 정보들을 주고받는다. 예를 들면, 애플리케이션 계층(110)은 키 이벤트(key event), 변경된 레이아웃 등과 관련된 정보를 생성하여 API 계층(120)으로 전달한다.
또한, 애플리케이션 계층(110)은 윈도우 서피스(window surface)를 생성하여 그 하부 계층을 구성하는 프레임워크 계층(140)으로 전달한다. 여기서, 윈도우 서피스는 화면에 표시되는 직사각형의 영역을 의미할 수 있다.
이러한 윈도우 서피스와 관련된 정보는, 예를 들면, 위치 정보, 크기 정보 및 픽셀 정보 등을 포함할 수 있다.
API 계층(120)은 GDBus(130)을 통해 레이아웃 서비스 계층(150)으로부터 전달된 레이아웃과 관련된 변경된 이벤트(layout changed event) 및 키 이벤트(key event)와 관련된 정보를 수신하며, 자신의 상위 또는 하위 계층에서 제공되는 기능을 제어하기 위한 인터페이스일 수 있다.
GDBus(130)는 API 계층(120)의 프로세스와 레이아웃 서비스 계층(150)의 프로세스 사이의 통신 중개를 위한 IPC(Inter-Process Communication) 계층일 수 있다.
프레임워크 계층(140)은 윈도우 서피스의 생성, 로딩 및 비저블러티(visibility)를 제어하는 계층일 수 있다.
레이아웃 서비스 계층(150)은 GDBus(130)를 통해 API 계층(120)으로부터 전달된 정보에 따라 화면상에 어떠한 애플리케이션을 보여줄지를 결정하고 관리하는 서비스와 관련된 제어 정보를 생성하고, 생성된 제어 정보를 그 하부 계층을 구성하는 웨이랜드 프로토콜 계층(160)을 통해 웨스턴 계층(170)으로 전달한다.
여기서, 상기 제어 정보는 스크린 정보(screens Info), 레이어 정보(Layer Info), 레이아웃 정보(Layouts Info) 및 윈도우 정보(Windows Infor)를 포함할 수 있다.
상기 스크린 정보는 윈도우 서피스의 색상과 투명도와 관련된 정보, 물리적 화면의 해상도 및 주사율과 관련된 정보를 포함한다.
상기 레이어 정보는 윈도우 서피스의 순서(예, z order)와 관련된 정보를 포함하며, 예를 들면, 겹쳐지는 윈도우 서피스들 중에서 최상위 레이어, 중간 레이어 및 최하위 레이어의 윈도우 서피스를 결정하기 위한 정보들을 포함한다. 또한, 레이아웃 서비스 계층(150)은 웨이랜드 프로토콜 계층(160)을 통해 웨스턴 계층(170)으로부터 전달된 서피스 콜백(surface callback)을 전달받는다.
웨이랜드 프로토콜 계층(160)은 레이아웃 서비스 계층(160)에서 수행되는 프로세스와 웨스턴 계층(170)에서 수행되는 프로세스 사이의 통신 중개를 담당하는 IPC 계층일 수 있다.
이러한 웨이랜드 프로토콜 계층(160)은 칩사별로 다른 웨이랜드 프로토콜을 정의하는 반면, 후술하는 본 발명은 칩사별로 다르게 정의된 웨이랜드 프로토콜을 통합 및 공용화하여 일반화할 수 있는 소프트웨어 계층 구조를 제공하는데 있다.
웨스턴 계층(170)은 웨이랜드 프로토콜 계층(160)을 통해 레이아웃 서비스 계층(150)과 통신하며, IVI-Controller(172) 및 IVI-Shell(174)을 포함할 수 있다.
IVI-Controller(172)는 Wayland IVI Extension 프로젝트에서 제공하는 윈도우 관리(window management)기능을 수행하며, 예를 들면, IVI surfaces properties 매니지, ivi layers 및 ivi screen을 관리한다.
커널 계층(180)은 모니터를 인식할 수 있도록 드라이버를 지원한다. 또한 커널 계층(180)은 상기 계층들(110~170)에서 구현된 동작 또는 기능을 실행하는데 사용되는 시스템 리소스들(예: 프로세서(20), 메모리(30) 등)을 제어 또는 관리할 수 있다.
도 3은 본 발명의 실시 예에 따라 도 1에 도시한 기존 소프트웨어 아키텍쳐로부터 변경된 소프트웨어 아키텍쳐를 설명하기 위한 도면이다.
도 3을 참조하면, 기존 소프트웨어 아키텍쳐로부터 변경된 본 발명의 실시 예에 따른 소프트웨어 아키텍쳐는 애플리케이션 계층(110), API 계층(120), 프레임워크(140), 웨이랜드 프로토콜 계층(160'), 웨스턴 계층(170') 및 커널 계층(180)을 포함한다.
본 발명의 실시 예에 따른 소프트웨어 아키텍쳐는 제조사별로 다른 웨이랜드 프로토콜을 통합하는데 특징이 있다.
구체적으로, 본 발명의 실시 예에 따른 소프트웨어 아키텍쳐와 기존의 소프트웨어 아키텍쳐를 비교하면, 도 1에 도시된 GDBus 계층(130)으로 불리는 IPC 계층이 삭제되고, 삭제된 GDBus 계층(130)이 웨이랜드 프로토콜 계층(160')로 불리는 IPC 계층에 통합된다. 이러한 통합 과정은 GDBus 계층(130)에서 제공하는 GDBus 인터페이스를 삭제하고, 삭제된 GDBus 인터페이스를 웨이랜드 프로토콜에 추가하는 과정일 수 있다.
또한, 본 발명의 실시 예에 따른 소프트웨어 아키텍쳐와 기존의 소프트웨어 아키텍쳐를 비교하면, 도 1에 도시한 레이아웃 서비스 계층(150)이 삭제되고, 삭제된 레이아웃 서비스 계층(150)이 웨스턴 계층(170') 내의 WindowManagerService 모듈(176)로 통합된다.
이러한 WindowManagerService 모듈(176)은 윈도우의 정책에 따라 기능을 수행하는 모듈로서, 레이아웃 서비스 계층(150)이 WindowManagerService 모듈(176)에 통합됨으로써, 레이아웃 서비스 계층(150)에 존재하는 윈도우의 정책에 따른 기능별 함수의 구조가 WindowManagerService 모듈(176)로 이동한다.
또한, 본 발명의 실시 예에 따른 소프트웨어 아키텍쳐와 기존의 소프트웨어 아키텍쳐를 비교하면, 웨스턴 계층(170')에 AP별로 상이한 윈도우의 정책(예, 화면 갱신, 터치 인식 및 키이벤트 인식 등과 관련된 정책)을 일반화하여 정의 및 관리하는 WindowPolicyManager 모듈(178)이 추가된다. 즉, 웨스턴 계층(170')에 WindowPolicyManager 모듈(178)을 별도의 라이브러리로 만들어 추가함으로써, 엔드 유저는 다양한 앱 시나리오(로컬라이제이션(localization) 시나리오)에 유연하게 대응할 수 있고, 버전 변경시에 따른 비용을 줄일 수 있다.
이상 설명한 바와 같이, 본 발명에 따른 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐에서는, 기존 2개의 IPC 계층들(GDBus 계층(130)과 웨이랜드 프로토콜 계층(160))을 하나 IPC 계층(웨이랜드 프로토콜 계층(160'))으로 통합함으로써, 화면 전환시 발생하는 다수의 IPC Call 동작 및 Blocking Call 동작과 관련된 불필요한 이벤트를 줄일 수 있고, Non-Blocking Call 동작에 따른 딜레이 발생을 억제할 수 있다.
또한, AP별로 상이한 Window 정책을 일반화하여 정의 및 관리하는 WindowPolicyManager 모듈(178)과 기능실행을 위한 WindowManagerService 모듈(176)을 구현하여 웨스턴 계층(170')에 추가함으로써, 신규 기능 추가에 유연하게 대응할 수 있고, 버전 변경 시 필요한 비용을 줄일 수 있다.
본 명세서에 개시된 실시 예들은 한정적인 관점이 아니라 설명을 위한 예시적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (12)

  1. 애플리케이션 계층, 애플리케이션 프로그래밍 인터페이스(API) 계층, GDBus 계층, 레이아웃 서비스 계층, 웨이랜드(Waylnad) 프로토콜 계층, 웨스턴(Weston) 계층 및 커널(Kernel) 계층을 포함하는 그래픽 모듈에서 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법에 있어서,
    상기 API 계층과 상기 레이아웃 서비스 계층 사이의 통신을 중개하는 상기 GDBus 계층을 상기 레이아웃 서비스 계층과 상기 웨스턴 계층 사이의 통신을 중개하는 상기 웨이랜드 프로토콜 계층에 통합하는 단계; 및
    화면상에 어떠한 애플리케이션을 보여줄지를 결정하고 관리하는 서비스를 제공하는 상기 레이아웃 서비스 계층을 윈도우의 정책에 따라 기능을 수행하는 WindowManagerService 모듈로 변경하여 상기 웨스턴 계층에 통합하는 단계
    를 포함하는 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법.
  2. 제1항에서,
    상기 GDBus 계층을 상기 웨이랜드 프로토콜 계층에 통합하는 단계는,
    상기 GDBus 계층의 GDBus 인터페이스를 상기 웨이랜드 프로토콜 계층에 추가하는 단계인 것인 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법.
  3. 제2항에서,
    GDBus 인터페이스를 상기 웨이랜드 프로토콜 계층에 추가함에 따라 상기 그래픽 모듈에서 상기 GDBus 계층이 제거되는 것을 특징으로 하는 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법.
  4. 제1항에서,
    상기 레이아웃 서비스 계층을 윈도우의 정책에 따라 기능을 수행하는 WindowManagerService 모듈로 변경하여 상기 웨스턴 계층에 통합하는 단계는,
    상기 레이아웃 서비스 계층에 존재하는 기능별 함수 구조를 갖도록 상기 WindowManagerService 모듈을 구현하는 단계; 및
    상기 구현된 상기 WindowManagerService 모듈을 상기 웨스턴 계층에 추가하는 단계
    를 포함하는 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법.
  5. 제3항에서,
    상기 WindowManagerService 모듈이 상기 레이아웃 서비스 계층에 존재하는 기능별 함수 구조를 갖도록 구현됨에 따라, 상기 그래픽 모듈에서 상기 레이아웃 서비스 계층이 제거되는 것을 특징으로 하는 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법.
  6. 제1항에서,
    웨스턴 계층(170')에 제조사별로 상이한 상기 윈도우의 정책을 일반화하여 정의 및 관리하는 WindowPolicyManager 모듈을 추가하는 단계를 더 포함하는 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법.
  7. 애플리케이션 계층 모듈, 애플리케이션 프로그래밍 인터페이스(API) 계층 모듈, 웨이랜드 프로토콜 계층 모듈, 웨스턴 계층 모듈 및 커널 계층 모듈을 포함하는 웨이랜드(wayland) 및 웨스턴(weston) 기반의 그래픽 모듈에서,
    상기 웨이랜드 프로토콜 계층 모듈은,
    상기 API 계층 모듈과 상기 웨스턴 계층 모듈 사이의 통신 중개를 담당하는 IPC(Inter-Process Communication) 계층으로서, GDBus 인터페이스를 포함하도록 구성되고,
    상기 웨스턴 계층 모듈은,
    윈도우의 정책에 따라 기능을 실행하는 WindowManagerService 모듈을 포함하도록 구성된 것을 특징으로 하는 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐로 구현된 그래픽 모듈.
  8. 제7항에서,
    상기 WindowManagerService 모듈은,
    기존의 웨이랜드(wayland) 및 웨스턴(weston) 기반의 그래픽 모듈에서 설계된 레이아웃 서비스 계층 모듈이 통합된 모듈인 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐로 구현된 그래픽 모듈.
  9. 제8항에서,
    상기 WindowManagerService 모듈은,
    상기 레이아웃 서비스 계층 모듈에 존재하는 기능별 함수 구조를 갖도록 구현된 것을 특징으로 하는 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐로 구현된 그래픽 모듈.
  10. 제7항에서,
    상기 웨스턴 계층 모듈은,
    제조사별로 상이한 상기 윈도우의 정책을 일반화하여 정의 및 관리하는 WindowPolicyManager 모듈을 더 포함하도록 구성된 것인 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐로 구현된 그래픽 모듈.
  11. 제7항에서,
    상기 윈도우의 정책은,
    제조사별로 상이한 화면 갱신, 터치 인식 및 키이벤트 인식과 관련된 정책들을 포함하는 것인 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐로 구현된 그래픽 모듈.
  12. 제7항에서,
    상기 웨이랜드 프로토콜 계층 모듈은,
    기존의 웨이랜드(wayland) 및 웨스턴(weston) 기반의 그래픽 모듈에서 설계된 API 계층 모듈과 레이아웃 서비스 계층 모듈 사이의 통신 중개를 담당하는 GDBus 계층 모듈과 통합된 모듈인 것인 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐로 구현된 그래픽 모듈.
KR1020220030197A 2022-03-10 2022-03-10 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법 KR20230133097A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220030197A KR20230133097A (ko) 2022-03-10 2022-03-10 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법
US18/147,486 US20230289179A1 (en) 2022-03-10 2022-12-28 Method of implementing software architecture for common use of wayland protocol

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220030197A KR20230133097A (ko) 2022-03-10 2022-03-10 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법

Publications (1)

Publication Number Publication Date
KR20230133097A true KR20230133097A (ko) 2023-09-19

Family

ID=87931767

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220030197A KR20230133097A (ko) 2022-03-10 2022-03-10 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법

Country Status (2)

Country Link
US (1) US20230289179A1 (ko)
KR (1) KR20230133097A (ko)

Also Published As

Publication number Publication date
US20230289179A1 (en) 2023-09-14

Similar Documents

Publication Publication Date Title
CN107291456B (zh) 一种多屏显示的控制方法及系统
US9354900B2 (en) Method and apparatus for presenting a window in a system having two operating system environments
US10019298B2 (en) Middleware interface and middleware interface generator
US9530386B2 (en) Methods and apparatus to provide extended graphics processing capabilities
CN105487869A (zh) 一种车载双系统装置及其启动方法
JP7223895B2 (ja) 車両のための拡張可能なコンピューティングアーキテクチャ
KR102631745B1 (ko) 이종 운영체제의 실행을 제어하기 위한 방법, 이를 위한 전자 장치 및 저장 매체
US20100174988A1 (en) System and method for providing virtual interface
CN113051047B (zh) 识别安卓系统绘制线程的方法、装置、移动终端及存储介质
CN115309511B (zh) 基于Xen的数据交互方法、装置、存储介质以及电子设备
KR20200042793A (ko) 복수의 운영체제들을 실행하는 전자장치 및 그 제어 방법
GB2542562A (en) Private access to HID
WO2023087696A1 (zh) 通信模组及其外部接口配置方法、配置装置和存储介质
US10521216B2 (en) Unified extensible firmware interface updates
US10637827B2 (en) Security network system and data processing method therefor
CN104137074A (zh) 多环境计算系统中资源使用的优化
KR20230133097A (ko) 웨이랜드 프로토콜의 공용화를 위한 소프트웨어 아키텍쳐를 구현하기 위한 방법
KR20210046426A (ko) 어플리케이션의 최적화 방법 및 이를 지원하는 전자 장치
US10303462B2 (en) Windows support of a pluggable ecosystem for universal windows application stores
KR20160130785A (ko) 멀티 오퍼레이팅 시스템 환경에서 모바일 장치 상에서 실행되는 호스트 어플리케이션에서 서비스 대체를 위한 인―프로세싱 트랩핑
US20190225082A1 (en) System Having an Infotainment System
US11836503B2 (en) Electronic device for executing heterogeneous operating systems and method therefor
KR20210101075A (ko) 전자 장치 및 전자 장치의 클립 보드 운용 방법
CN116700694B (zh) 小程序引擎
US20230376307A1 (en) Streaming via hardware abstraction layer