임베디드 장치를 만들 때 사용자 경험에서 중요한 부분 중 하나는 시스템의 부팅 시간입니다. Automotive 분야 를 포함하여 많은 산업 분야에서 부팅 시간에 대한 까다로운 요구 사항을 가지고 있습니다.

“Qt를 사용하여 구축 한 장치를 얼마나 빨리 구동할 수 있습니까?”, “2 초 이내에 시스템을 Qt 응용 프로그램으로 부팅 할 수 있습니까?”, 또는 “Qt 응용 프로그램을시작하는 데 필요한 시스템의 최소 시간은 얼마입니까? “

불행히도, 질문에 대한 대답은 하나도 없습니다. 따라서 우리는 Qt 기반의 임베디드 시스템을 최적화하는 방법을 조금이나마 안내해 주는 3 개의 블로그 게시물을 작성하기로 결정했습니다. 이 첫 번째 부분에서는 특정 Use Case 로서 자동차 계기판(클러스터)을 살펴보고 일부 벤치 마크 통계로 계기판 쇼케이스를 빠르게 부팅하는 방법을 보여줍니다. 두 번째 부분에서는 Qt, 특히 Qt Quick 응용 프로그램 코드를 최적화하는 실제적인 ‘방법’에 더 중점을 둘 예정입니다. 마지막으로 세 번째 부분에서는 부팅 최적화에서 하드웨어 측면에 대해 자세히 설명하고자 합니다.

 

Qt 자동차 계기판 쇼케이스

자동차 산업에서는 빠른 시동 시간이 필요합니다. 예를 들어, 디지털 계기판이 가능한 한 빠르게 시작되는 것이 중요합니다. 자동차가 시동되면 계기판이 가동되고 거의 즉시 반응해야 합니다. 숙련된 사용자 경험 외에도 이러한 부분은 공식적인 안전 요구 사항에 의해 제어되는 것입니다. 동시에, 클러스터가 예를 들어,  디지털화되고 더 많은 그래픽으로 훨씬 더 장황 해짐에 따라 3D 컨텐츠는 소프트웨어 설계 및 기본 플랫폼 / 프레임 워크에서 중점 사항이 되었습니다. Qt를 사용하여 Fast Booting 계기판을 구현할 수 있음을 증명하기 위해 우리는 Embedded world 2016 계기판 데모 설정을 사용하여이를 최적화 하였습니다.

아래 동영상을 보고 결과를 확인하십시오.

 

데모 설정의 원래 시동 시간은 23 초였습니다. 최적화 후, 필요한 서비스에 따라 첫 화면을 표시하는데 약 1.5 초 이내로 가능해졌습니다.

 

Time Consumption 분석

비디오에서 우리는 Time 진행 방향에 대해서 분석하고 측정하였습니다:

 

전원을 켠 상태에서 첫 번째 프레임이 표시 될 때까지의 전체 부팅 시간은 1 560ms 입니다. 보시다시피, 대부분의 시간은 Qt 응용 프로그램 내용이 아닌 다른 항목에서 실제로 소비됩니다. 이러한 부분에 대해서는 우리는 여전히 전원을 빨리 켤 수있는 다른 하드웨어를 선택함으로써 시간이 더 단축 될 수 있다고 생각합니다. 또한 보드는 더 빠른 메모리와 메모리 버스를 가질 수 있습니다. u-boot는 여전히 더 많이 제거되거나 사용자 정의 부트 로더로 대체 될 수 있습니다. 하지만 전반적으로 많은 개선이 이루어졌습니다. 특히 Qt Quick 응용 프로그램 최적화의 경우 더욱 그렇습니다.

 

보기 우선 순위 지정

우선 최적화를 시작하기 전에 가장 중요한 것은 사용자가 무엇을 먼저보고 싶어하는지 생각하는 것입니다. 그런 다음 그 애플리케이션 UI 만 시작하고 나머지는 동적으로 로드하지 않는 것이 좋습니다. 우리는 사용자가 계기판의 프레임을 보아야 한다고 생각했고, 프레임이 그려진 후에 나머지 구성 요소가 동적으로 로드되도록 하였습니다. 먼저 게이지를 로드 한 다음 3D 자동차 모델을 로드합니다.

 

선로딩(Pre-loading) 에 의한 “Cheating” 기술

사용자 환경을 개선하기 위한 한가지 방법은 만약에 일반적인 부팅이 최적화된 부팅보다 빠를 경우 실제로 로딩이 시작되었을때 “cheat(속이기)” 사용하는 것입니다. 예를 들어 자동차 도어가 열렸거나 열릴 가능성이 있을 때 미리 시동을 거는 것입니다. 그런한 접근법에서 운전자가 차에 들어가는 시간까지 계산하여 시스템이 이미 작동하고 있으며, 운전자가 전원을 켤 때 이러한 시스템이 계기판의 백 라이트를 작동시키게 되는 것입니다.

 

Qt 는 실제로 최적화 된 것인가?

Qt Quick 애플리케이션의 실질적인 최적화 방법를 위해, 2 부에서는 Qt 애플리케이션을 최적화하는 실제적인 요령에 대해 이야기 할 것입니다.

 

본 문서는 qt.io 의 “Fast-Booting Qt Devices, Part 1: Automotive Instrument Cluster” 을 번역한 블로그 입니다.