2015
임베디드월드


글: 스테판 올슨(윈드리버) / 2015-12-02

최태우 기자 desk@ibeddednews.co.kr





임베디드 애플리케이션에서 사용되는 GUI(Graphical User Interface: 그래픽 사용자 인터페이스)에 대한 설계 요구 사항은 매우 다양하다. IoT를 주도하는 스마트 디바이스의 확산과 함께 다양성은 그 어느 때보다 극도로 증가하기 시작했다.


전 세계에서 가장 널리 사용되는 RTOS(Real Time Operating Systi: 실시간 운영 체제)인 VxWorks 등의 입증된 플랫폼의 경우 이러한 복잡성을 폭넓게 수용한다. 적용 사례에 따라, 또는 솔루션 제공업체의 설계 선호도에 따라, 사용자가 시스템과 상호 의사전달 할 수 있는 단순하면서도 강력한 방식을 수립하는데 각각 다른 접근법이 적용될 수 있다. 


일부는 프레임버퍼에 렌더링하는 소프트웨어를 사용해 최소한의 시스템 자원(예: 작은 풋프린트의 SoC)으로 지원 가능한 간단한 GUI로도 충분하다. 다른 일부 애플리케이션은 고급 3D 그래픽, 쉐이딩(Shading), 애니메이션, 이미지 변환 등의 풍부한 기능을 갖춘 GUI가 필요하므로, 이들은 일반적으로 전용 그래픽 프로세서에 하드웨어 가속을 사용한다. 


이 글에서는 IoT를 포함한 임베디드 애플리케이션을 위해 GUI를 렌더링하는 접근법을 소개한다.



UI 복잡성은 상황 맥락과 일치해야

가능한 최대한의 정보를 UI(User Interface: 사용자 인터페이스)에 모두 제공하는 것을 항상 최선으로 볼 순 없다. 제세동기 장치의 HMI(Human Machine Interaction) 연구에 따르면 사용자들은 지나치게 복잡한 인터페이스에 오히려 위축되었다고 설명하기도 했다.


실제로 사용자들은 심지어 긴급 상황에서도 기기 사용을 주저하게 된다. UI가 복잡성을 낮추고 가장 기본적인 요소만 갖출 때 사람들은 기기에 더 쉽게 접근하게 되며 그 과정에서 실제로 생명을 구할 가능성이 높아진다. 



임베디드 애플리케이션의 GUI를 위한 시스템 고려 사항

임베디드 시스템에는 범용 컴퓨팅 환경보다 상대적으로 단순한 GUI를 적용하는 것이 좋다. 이는 프로세싱, 메모리 자원, 에너지 소비, 열, 비용 등의 요인에 있어서 상당한 제약이 있는 사례에 적합하다. 임베디드 시스템과 비교한 범용 플랫폼의 특성을 아래에서 확인할 수 있다.



▲ [표 1] 범용과 임베디드 시스템의 특성 비교

임베디드 시스템이 강력한 자원을 사용할 수는 있지만, 범용 시스템에 비해서는 다소 제한적인 경우가 많다. 예를 들어 일반적으로 범용 시스템은 임베디드 시스템보다 더 많은 CPU 자원을 활용할 수 있을 뿐만 아니라 필요에 따라 컴퓨팅 작업에 적용할 수 있는 코어를 상당 수 보유하고 있다. 그에 비해 임베디드 시스템은 일반적으로 좀 더 낮은 수준의 코어를 가지고 있으며 여러 다른 유형의 코어를 다양하게 활용할 수 있다. 


임베디드 시스템에는 종종 엄격한 메모리 제약 문제가 발생한다. 상응하는 범용 시스템에 비해 임베디드 시스템의 경우 메모리가 몇 배는 작다고 보는 것이 일반적이다. 또한 범용 시스템은 하드 드라이브 스토리지로 롤오버할 수 있어 본질적으로 무제한의 메모리 공간을 제공하지만, 임베디드 시스템은 흔히 로컬 스토리지를 전혀 가지고 있지 않거나 플래시 SD 카드 등의 추가 자원을 통해 제한된 부분만 제공한다.


범용 시스템은 GUI에 대한 정교한 그래픽 요소를 지원하면서 그래픽 오프로드(graphics Offload)에 대한 전문적인 하드웨어를 포함하지만 임베디드 시스템은 보다 단순하고 프레임버퍼를 생성하는 그래픽 경험에 의존하는 경우가 많다.


이 외의 경우에도 임베디드 시스템은 GPU 그래픽 하드웨어를 제공할 수 있다. 임베디드 시스템에 의해 구현된 전용 애플리케이션은 매우 작거나 매우 큰 수준의 자원을 필요로 할 수 있으며 이러한 변화에 따라 해당 애플리케이션의 GUI 복잡성도 크게 달라지게 된다.  



GPU에서 렌더링 되는 고급 GUI

아래 그림에서 설명된 바와 같이 복잡한 GUI는 프레임버퍼와 GUI 렌더링의 조합으로 표현될 수 있다. 그림에서와 같이 소프트웨어 기반의 Tilcon 기능이 하드웨어 지원 그래픽과 결합되어 있다. 더불어 이러한 접근법은 경량 시스템 요구 사항과 고급 사용자 경험 사이에서 균형을 잡아줄 수 있다.



▲ [그림 1] GPU 가속 UI 아키텍처

그림의 오른쪽에 있는 OpenGL/OpenGL ES 드라이버는 3D 그래픽 기능을 추가하는데 이는 특히 하드웨어의 3D 개체 조작에 적합하다. 이는 소프트웨어와 하드웨어 양쪽의 사용자 애플리케이션의 명령을 해석해 GPU를 사용해 GUI 디스프레이의 요소로 2D 및 3D 개체를 렌더링한다.


플랫폼은 GPU와 함께 사용할 다른 쉐이더(shader)를 다운로드할 수 있는 쉐이더 언어를 제공한다. 그러나 이러한 쉐이더는 특정 소프트웨어 드라이버에 맞춰 최적화되어 있기 때문에 GPU에 한정적일 뿐만 아니라 이식성(portability)이 제한된다.
Open GL과 Open GL ES는 오픈 스탠다드로, 사용자가 khronos.org.에서 다운로드할 수 있다. 또한 대규모 유저 커뮤니티에 참여해 혜택을 누릴 수 있다.



VxWorks용 Qt로 GPU에서 UI 가속화 

Qt Company와 윈드리버는 Qt의 UI 프레임워크를 VxWorks에 통합하기 위해 협력하고 있다. 이러한 공동 엔지니어링 노력으로 임베디드 OS에 대해 본질적으로 기본이 되는 강력하고 단순화된 UI 기능 조합을 개발해 냈다. 여러 하드웨어 상에서 실시간 결정성을 요구하는 환경 등의 까다로운 상황에서도 원활한 사용자 경험을 제공하기 위해 하드웨어 가속을 통해 애플리케이션 레벨에서 사용자 인터렉션(User interactions)을 간소화한다. 



▲ [그림 2] GPU-accelerated Uis를 위한 Qt 솔루션

Qt 프레임워크와 VxWorks를 통해 애플리케이션은 입증된 예측 가능성과 신뢰성에 대한 요구를 쉽게 충족시킬 수 있게 되었을 뿐만 아니라 탁월한 그래픽 사용자 경험을 제공할 수 있게 되었다. 


Qt와 윈드리버의 협업은 VxWorks에서 실행되는 애플리케이션에 훨씬 뛰어난 UI 기능을 제공한다. 그림 2에 설명된 바와 같이 Qt 프레임워크는 보다 강력한 환경을 제공할 뿐만 아니라 위에서 언급한 UI에 대한 GPU 가속 아키텍처에서 Tilcon을 대신할 수 있다.


또한 Qt는 evdev 및 OpenGL/OpenGL ES와 직접 인터페이스하고 Linux 등 다양한 플랫폼과 함께 사용할 수 있도록 최적화되어 있다. 이는 향후 요구가 있을 때 타사 도구를 쉽게 이식하고 통합할 수 있는 기초가 된다. Qt 솔루션의 특별한 이점은 이 솔루션이 프레임버퍼와 GPU 하드웨어를 모두 사용하며 렌더링 시 훨씬 높은 정확도를 제공한다는 것이다.


VxWorks용 Qt 5.5 개발을 주도한 윈드리버와 Qt의 공동 개발은 이 두 회사의 개발 툴과 함께 VxWorks용의 최적화된 워크플로우와 원활한 사용자 경험을 제공한다. Qt는 지정 UI와 프로그래밍 UI를 위해 자체 QML 언어로 인해 복잡해진 개발을 간소화하도록 완성도 높은 위젯 세트를 제공한다.


QML은 개발자가 애니메이션 동작을 지정하는 프로세스를 혁신적으로 단순화한다. 이 언어는 런타임시 적용되며 더 많은 CPU 파워를 활용하고 UI의 풍부한 기능들을 극적으로 향상시킬 수 있도록 지원한다. 


Qt와 VxWorks의 통합은 GPU를 사용하여 UI의 그래픽 요소의 하드웨어 가속을 자동으로 실행시킨다.  시각적인 UI는 복잡한 시각화를 처리하는 기능과 보다 매끄러운 전환을 통해 이점을 제공한다. 이와 동시에 CPU로부터의 오프로딩(offloading) 그래픽 프로세싱은 프로세싱 자원이 다른 작업에 사용될 수 있도록 하는데 도움이 된다.



▲ [그림 3] Wind River Systi Viewer

또한 Qt는 보다 제약이 많은 Tilcon 환경에서 실행 가능하며, 풍부한 UI 측면에서도 이점을 제공한다. VxWorks용 Qt는 고객이 사용되지 않는 요소를 제거하여 전체 풋프린트를 낮출 수 있다는 점에서도 유연성을 제공한다. Qt 엔진은 오픈 소스 GPL 라이선스에 따라 일부 도구 없이도 제한된 버전에서 사용할 수 있다. 상용(비GPL) 버전은 VxWorks와 함께 제공된다. 



Wind River Systi Viewer를 통한 소프트웨어 튜닝

Wind River Systi Viewer는 애플리케이션 실행 문제를 식별하고 해결할 뿐만 아니라 시스템의 성능을 향상시키기 위한 런타임 분석 도구이다. 이는 소프트웨어 설계, 개발, 디버깅, 테스트 및 관리를 위한 이클립스 기반의 도구 모음인 Wind River Workbench의 일부로 제공된다. 타깃에서 애플리케이션을 실행하는 동안 작업, 스레드, 인터럽트, 시스템 개체 간의 상호 작용을 표시하기 위해 Systi Viewer는 그림 3에 표시된 것과 같은 그래픽 뷰를 포함해 상세한 분석과 시각화를 제공한다. 


Systi Viewer가 제공한 성능 프로파일을 기반으로, UI의 최적화와 다른 애플리케이션 코드가 급격하게 단순화되고 향상된다. 어떤 루틴이 프로세싱과 메모리 자원을 가장 많이 소모하는지에 대한 도구 지침을 활용해, 개발자들은 비효율성을 정확하게 찾아내고 전반적인 코드 품질을 향상시킬 수 있다. 제약이 있는 임베디드 시스템에서 사용 가능한 자원을 적절히 잘 활용하면 비용 낭비 없이 특성과 기능을 추가할 수 있다.



GPU 렌더링 UI에 대한 대표적 타깃 하드웨어: 프리스케일 i.MX 6 시리즈

임베디드 애플리케이션을 위한 고급 GUI는 더 많은 하드웨어 자원을 필요로 한다. 표 2에 요약된 바와 같이 프리스케일 i.MX 6 시리즈 애플리케이션 프로세서는 Vybrid VF6xx에 비해 CPU 성능뿐만 아니라 정교한 내장형 GPU 측면에서 상당히 향상된 기능을 제공한다.



▲ [표 2] High-Level Specifications of the Freescale i.MX 6 Series

이 플랫폼은 다양한 요구를 충족하기 위해 광범위한 SKU에서 사용할 수 있다. 단일 코어, 듀얼 코어 또는 쿼드 코어 버전은 Cortex A9 또는 A7 코어 기반에서 뿐만 아니라 Cortex A9 및 M4 코어가 결합된 옵션에서도 사용할 수 있다.


i.MX6 제품군의 서비스 대부분은 2D는 물론 3D 그래픽 지원을 특징으로 한다. 특히, 이러한 높은 사양의 제품군과 VxWorks를 통해 고객은 쉐이더, 강력한 애니메이션, 이미지 변환 등의 기능을 활용하는 정교한 UI를 제공할 수 있다. 일반적인 적용 사례에는 자동차 및 기내 인포테인먼트, POS(Point Of Sale) 디바이스, 그리고 태블릿과 스마트북 같은 일반 소비자 디바이스들이 있다.



프레임버퍼의 고급 경량 인터페이스

프레임버퍼는 RAM의 전용 영역에 비트맵을 저장하고 UI 디스플레이를 생성하는데 사용할 수 있는 간단한 그래픽 메커니즘이다. 각 픽셀의 색상 값은 1비트(단색)부터 24비트(트루 컬러) 범위의 스키마, 그리고 투명도 정보에 대해 선택적으로 알파 채널을 사용해 저장할 수 있다. 모든 렌더링은 소프트웨어에서 처리된다.



▲ [그림 4] Tilcon Graphics Suite를 사용해 프레임버퍼에서 생성한 UI의 예

이 모델은 더블 버퍼링이라는 개념을 가진 여러 프레임버퍼를 통해 유용하게 확장할 수 있다. 이 접근법은 페이지가 변경될 때마다 인터럽트를 설정해 새로운 프레임버퍼로 전환하고 초기 프레임이 백그라운드에서 다시 계산될 수 있도록 해준다. 이런 방식으로 계속 전환해(원하는 경우 둘 이상의 프레임을 허용할 수도 있음) 프레임이 재계산되는 시각적 효과는 숨기고 프레임 간의 매끄러운 전환을 제공한다.


또한 최신 하드웨어는 여러 다른 기능을 지원하는 수 많은 프레임버퍼를 지원할 수 있다. 예를 들어, 프리스케일 Vybrid VF6xx 아키텍처는 서로의 위에 겹쳐진 7개의 프레임버퍼를 지원한다. 이는 알림 또는 대화 상자 등의 요소가 디스플레이 창 내에 표시되지만 기본 UI에 대해 독립적일 수 있도록 우수한 지원을 제공한다. 



Wind River Tilcon Graphics Suite을 활용한 소프트웨어 개발

임베디드 하드웨어상에서 단순한 UI부터 복잡한 UI까지 폭넓게 개발할 수 있도록 윈드리버는 VxWorks에 포함된 Tilcon Graphics Suite를 제공한다. 개발자는 스위트의 Wind River Tilcon 인터페이스 개발 도구를 통해 프레임버퍼를 독점적으로 사용하는 고급 UI를 생성할 수 있다. 이러한 UI의 예는 아래 그림 4에 나와 있다.


Tilcon은 다양한 산업 영역에서의 특화된 요구 사항을 충족시키기 위해 VxWorks 사용자가 즉시 적용할 수 있는 형태의 다양한 산업용 프로파일에 포함되어 있다. 


  • Aerospace Profileㅣ항공우주 프로파일: 항공우주 및 방위 산업 업체를 위해 안전, 보안, 연결성, 관리성, 사용자 인터페이스 및 그래픽 성능 강화
  • Industrial Profileㅣ산업 프로파일: 지능형 커넥티드 산업용 디바이스에 대한 보안, 연결성, 관리성, UI와 그래픽, 안전 기능 향상
  • Medical Profileㅣ의료 프로파일: 보안, 연결성, 관리성, UI와 그래픽, 안전성을 위해 의료기기뿐만 아니라 미들웨어의 제작과 인증을 돕는 매핑 가이드 포함
  • Consumer Profileㅣ컨수머 프로파일: 보안, 관리성, UI와 그래픽을 위한 추가 기능과 함께 차별화된 지능형 소비자 디바이스를 위해 특화된 기능 제공

이러한 프로파일 각각에 대해, Tilcon은 외부 위치에서 가져올 수 있는 사용자 지정 아트워크와 함께 필요에 따라 증강되고 UI에 통합될 수 있는 차트, 측정기, 계량기 등의 다양한 맞춤형 내장 위젯을 제공한다.



▲ [그림 5] Tilcon Graphics Suite UI에 대한 최소 그래픽 기준

Tilcon의 낮은 오버헤드 운영에 있어서 중요한 측면은 UI 렌더링 파이프라인이 어떤 코드도 기록할 필요가 없다는 것이다. 대신 Tilcon 인터페이스 개발 도구가 플랫폼 독립 리소스 파일로써 디자인을 캡처한다. 그림 5에 표시된 바와 같이 이 리소스 파일이 Tilcon GUI Engine에 로드되고, 이는 재컴파일이나 트랜스코딩 없이 대상 기기에 UI를 동적으로 렌더링한다.


그림 5에서 왼쪽에 Tilcon 인터페이스 개발 도구가 있는데 이들은 호스트에서 실행되고 개발자가 실제로 UI 자체를 개발할 수 있도록 지원한다. Linux나 Microsoft Windows에서 사용될 수 있는 이 WYSIWYG(What You See Is What You Get) 환경 덕분에 쉐이딩 등의 고급 기능을 사용할 수 있다.


이러한 기능은 미려한 그래픽 UI 요소를 제공하는 자원 효율적인 접근법을 위해 비트맵으로 사전 처리할 수 있게 해준다. 또한 이 도구는 Wind River VxWorks Simulator를 사용해 시뮬레이션된 환경에서 실행할 수 있도록 해주며 개발 프로세스의 유연성을 향상시킨다. 그림 5에서 오른쪽에 있는 것은 모두 타깃에서 실행된다.


이 모델은 그림 4에 표시된 것과 같은 상대적으로 정교한 UI를 렌더링할 수 있는 한편, 2D 그래픽, 글꼴, 스틸 이미지 등을 포함하는 사용 요소의 측면에서 다소 제한적이다. 이 모델을 기반으로 한 UI의 주요 장점은 메모리를 조금만 사용해 작은 풋프린트 디바이스 사용에 적합하면서도 여전히 매우 정교한 UI를 렌더링할 수 있게 해준다는 것이다.



Fbdev Handler를 통한 출력

Tilcon 인터페이스 개발 도구는 GUI에 필요한 모든 그래픽 요소와 명령 요소를 패키징하고 이들을 Tilcon GUI Engine에 공급한다.


그러면 Tilcon GUI Engine에서는 이들을 해당 정보를 디코딩하고 fbdev 핸들러를 거쳐 직접적으로 또는 OpenVG를 통해 그 결과를 프레임버퍼에 제공하게 된다. 또는 사용자 애플리케이션이 OpenVG와 직접적으로 통신할 수 있다. 둘 중 어떤 경우에도 프레임버퍼는 UI의 실제 렌더링을 처리한다.



Evdev Handler를 통한 입력

입력 측에서는 evdev 핸들러가 마우스, 키보드, 터치스크린 및 이와 유사한 디바이스로의 연결을 추출하고 관리하며, 이벤트 응답이 관리되는 Tilcon GUI Engine에 이러한 입력을 전달한다.


필요한 경우 evdev는 멀티터치뿐만 아니라 정전식 터치스크린과 저항접촉식 터치스크린 모두를 처리하는 기능을 가진다. 특정 키를 입력하는 방식에 기반한 이벤트는 필요에 따라 다양한 방식으로 해석될 수 있다.


예를 들어 ‘a’ 키를 누르면 텍스트 필드에 a라는 글자로 해석될 수도 있고 다른 문맥에서 지정된 명령으로 해석될 수도 있다. 이 모델은 버튼 또는 다른 물리적 제어의 비표준 집합을 허용하는 추상화와 함께 확장성이 뛰어나, 필요한 어떤 역할에든 할당될 수 있다. 또한 리눅스 내의 기본 기능과 유사해 타사 UI 사용을 지원하기 위한 작업을 최소화하는데 도움이 된다.



VG lib(OpenVG)을 통한 렌더링

VG lib는 OpenVG 표준에 부합하고 OpenVG API와 호환되는 벡터 그래픽(vector graphics)을 위한 소프트웨어 기반의 2D 렌더링 엔진이다. 벡터 그래픽의 특성 때문에 이 접근법에 기반한 UI에 대해 렌더링된 이미지는 픽실레이션(pixilation)으로 인한 품질 손실 없이 어떤 줌 레벨에서든 볼 수 있다. 이러한 요소는 고해상도 그래픽이 비교적 낮은 메모리 요구 사항을 처리하는 데 효과적이다. 



일반 프레임버퍼 UI 타깃 하드웨어: 프리스케일 Vybrid VF6xx

앞서 언급한 바와 같이 프레임버퍼를 사용해 UI를 렌더링하는 모델은 저가 시스템부터 GPU가 있는 강력한 시스템에 이르기까지 하드웨어 상에서 사용할 때 확장 가능하다. 그러나 프레임버퍼 전용 접근이 적용될 수 있는 하드웨어의 일반적인 사례는 표 3에 설명된 바와 같이 Vybrid VF6xx 제품군이다.


이 기기가 보통 GUI와 함께 사용되는 분야로는 2D 디스플레이가 있는 키오스크, 인퓨전 펌프와 호흡기 등의 휴대용 의료 장비, 산업 시장에서 사용되는 모니터 등이 있다. 


Vybrid VF6xx는 Cortex A5와 Cortex M4라는 2개 다른 유형의 프로세싱 코어를 제공한다. GUI의 프로세싱 집약성 정도에 따라 두 코어 중 하나에서 실행될 수 있다. 2개의 분리된 동일한 LCD 디스플레이 컨트롤러가 포함되어, 원하는 경우 시스템이 Tilcon의 동시 인스턴스를 2개 실행할 수 있게 해준다. 이미지와 영상 캡처를 허용하는 비디오 인터페이스 유닛도 포함된다.



▲ [표 3] High-Level Specifications of the Freescale Vybrid VF6xx

안전성이 우선시되는 시스템을 위한 기능

안전 필수 애플리케이션(Safety Critical Application, 즉 문제가 발생할 경우 사람들에게 직접적으로 해를 입힐 수 있는 애플리케이션으로 정의됨)은 윈드리버가 집중하고 있는 핵심 영역이다. 일반적으로, 시스템 운영이 분할되어 오류가 격리되고 시스템의 주요 부분에 영향을 미치지 않도록 한다.


예를 들어 Wind River VxWorks Cert Platform은 국제 항공우주 산업의 엄격한 요구에 맞춰 애플리케이션 인증을 용이하게 하도록 최적화되어 있다.


UI 관점에서, 안전성이 필수적으로 요구되는 영역을 위한 윈드리버의 기술 지원은 여러 산업에서의 파트너십을 통해 보다 강화된 VxWorks의 핵심적인 신뢰성을 뒷받침하고 있다.


예를 들어 CoreAVI(Core Avionics & Industrial Inc.)는 안전성을 위해 처음부터 여러 다양한 OpenGL 드라이버를 개발했다. 이 코드는 업계의 요구 사항 전체를 아우르는 인증에 유용하다.


이제 ANSYS의 일부가 된 Esterel Technologies 제품의 SCADE Suite는 안전성을 최우선으로 하는 UI를 위한 그래픽과 코드를 생성한다. 윈드리버는 하드웨어 플랫폼에 있어서 업계 파트너와 함께 혁신을 실현해 오면서 여러 범용 임베디드 사용처 외에 안전 필수 분야도 함께 지원하고 있다. 



결론

VxWorks는 단순한 프레임버퍼부터 복잡한 GPU까지 포괄하는 임베디드 시스템상에서 단순한 UI부터 복잡한 UI까지의 요구사항을 만족시키기 위해 최적화된 기술을 제공한다. 이는 가장 기본적인 요구 사항 또는 고급 UI의 요구 사항을 포함하는 경량 시스템부터 3D 애니메이션과 기타 모든 기능을 포함하는 보다 강력한 UI까지 다양한 경우에 적용 가능하다. 


또한 VxWorks는 독보적인 실시간성(Deterministic Performance)을 저해시키지 않고 이러한 요구를 만족시키며 다양한 기능을 동시에 원활하게, 간편하게 사용할 수 있도록 지원한다. 솔루션 제공업체들은 이를 통해 IoT를 포함해 점점 복잡해져 가는 시장에서 차별성을 갖출 수 있다.



/필/자/소/개/

글: 스테판 올슨(Stephen Olsen), VxWorks 제품 매니저, 윈드리버
자료제공: 윈드리버 <www.windriver.com>



※ 본 내용은 (주)테크월드(http://www.ibeddedworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
    Copyright ⓒ Techworld, Inc. 무단전재 및 재배포 금지


[원문출처 : http://www.epnc.co.kr/news/articleView.html?idxno=53259]

맨 위로
맨 위로