Device Creation with Qt Enterprise Embedded Andy Nichols Overview - - PowerPoint PPT Presentation

device creation with qt enterprise embedded
SMART_READER_LITE
LIVE PREVIEW

Device Creation with Qt Enterprise Embedded Andy Nichols Overview - - PowerPoint PPT Presentation

Device Creation with Qt Enterprise Embedded Andy Nichols Overview The challenges of device creation What is Qt Enterprise Embedded Prototyping a device Device creation 2 The Challenges of Device Creation 3 The Application is


slide-1
SLIDE 1

Device Creation with Qt Enterprise Embedded

Andy Nichols

slide-2
SLIDE 2

2

Overview

  • The challenges of device creation
  • What is Qt Enterprise Embedded
  • Prototyping a device
  • Device creation
slide-3
SLIDE 3

3

The Challenges of Device Creation

slide-4
SLIDE 4

4

The Application is just one step

  • Qt is used to more easily produce Applications
  • Easy to share code across multiple platforms
slide-5
SLIDE 5

5

The Application dictates the hardware

slide-6
SLIDE 6

6

The Application and Hardware dictate the OS

slide-7
SLIDE 7

7

Provide your own SDK

  • Toolchain to generate binaries for your hardware
  • System image to flash to device
  • Sysroot containing the development files
slide-8
SLIDE 8

8

Device Creation with Qt

  • Qt abstracts away the details of the OS and hardware
  • It is still up to you to provide the platform
slide-9
SLIDE 9

9

What is Qt Enterprise Embedded?

  • Qt
  • Platform
  • Tooling
slide-10
SLIDE 10

10

Qt + Additional tools for Device Creators

  • Latest Qt Release
  • Virtual Keyboard
  • Enterprise Qt Quick Controls
  • Wifi Utilities
  • Charts API
  • 3D Data Visualisation
  • Qt WebEngine
  • Qt Quick Compiler
slide-11
SLIDE 11

11

Virtual Keyboard

slide-12
SLIDE 12

12

Enterprise Qt Quick Controls

slide-13
SLIDE 13

13

Wifi Utilities

slide-14
SLIDE 14

14

Charts and 3D Data Visualisation APIs

slide-15
SLIDE 15

15

Qt WebEngine

slide-16
SLIDE 16

16

What is Qt Enterprise Embedded?

  • Qt
  • Platform
  • Tooling
slide-17
SLIDE 17

17

Qt Enterprise Embedded provides the platform

slide-18
SLIDE 18

18

Embedded Linux Platform

  • Using Yocto Project tools
  • b2qt-meta layer to provide barebones distro for Qt 5
  • Yocto is the industry standard
  • Many meta layers available for you to mix-n-match
slide-19
SLIDE 19

19

Embedded Android

  • Android Injection
  • No need to build the AOSP, use existing device images
  • Android without Java, Using Platform Developers APIs
  • Take advantage of a device that already fits your needs
slide-20
SLIDE 20

20

What is Qt Enterprise Embedded?

  • Qt
  • Platform
  • Tooling
slide-21
SLIDE 21

21

Qt Creator IDE

slide-22
SLIDE 22

22

Pre-configured Kits for your Device

  • Linux: Use the SDK built by Yocto
  • Android: Just select the version of Android that is on your device
slide-23
SLIDE 23

23

One Click Deploy

  • USB
  • Ethernet
slide-24
SLIDE 24

24

Remote Debugging of C++ and QML

slide-25
SLIDE 25

25

Remote Profiling

slide-26
SLIDE 26

26

Device Emulator

slide-27
SLIDE 27

27

Prototyping a Device

slide-28
SLIDE 28

28

Reference Hardware

  • Pre-built Images
  • SDKs
  • Start prototyping on hardware from Day 1
slide-29
SLIDE 29

29

Linux Reference Hardware

  • Beaglebone Black
  • Raspberry Pi
  • Emulator
  • Toradex Apalis iMX6
  • Freescale Sabre
  • Boundary Devices Nitrogen6x
slide-30
SLIDE 30

30

Android Reference Devices

  • Nexus 7 (2012/2013)
  • Beaglebone Black
  • Freescale Sabre
  • Boundary Devices Nitrogen6x
  • Emulator
slide-31
SLIDE 31

31

Getting Started

  • Install the SDK for the device from the Qt Installer
  • Flash the image to the device with our deploy scripts
  • Plug in the USB and launch your App from Qt Creator
slide-32
SLIDE 32

32

Benefits of Prototyping on real hardware

  • Test an SOC to see if its a good fit for your product
  • Have a mock up to show your boss or VC
  • The code can be reused for the actual product
slide-33
SLIDE 33

33

Device Creation

slide-34
SLIDE 34

34

Linux device SDK

  • Use Yocto to generate base system image and SDK
  • Build Qt, Add-ons, and B2Qt Utilities
  • Register new SDK with Qt Creator
slide-35
SLIDE 35

35

Using Yocto

  • Base image and SDK for device
  • Vendor specific meta-layers
  • Define additional features and 3rd party libraries
  • Modify the kernel to meet your needs
slide-36
SLIDE 36

36

Build your own stack

#Setup Yocto tools/repos cd <BuildDir> <INSTALL_DIR>/Boot2Qt-3.x/sources/b2qt-yocto-meta/b2qt-init-build-env . export TEMPLATECONF=meta-b2qt/conf export MACHINE=beaglebone source poky/oe-init-build-env build-beaglebone

  • #build base image

bitbake b2qt-embedded-image

  • #build SDK (toolchain/sysroot)

bitbake meta-toolchain-b2qt-embedded-sdk

slide-37
SLIDE 37

37

Need help with Yocto?

  • Yocto User Manual
  • Yocto eBook
  • The Qt Company and its partners
slide-38
SLIDE 38

38

Building Qt, Add-ons, B2Qt Utils

#Setup Build Environment <INSTALL_DIR>/Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-common/ init_build_env.sh <INSTALL_DIR>/Boot2Qt-3.x/sources/b2qt-build-scripts/embedded- linux/config.beaglebone

  • #Build Qt Libraries

<INSTALL_DIR>/Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_qt.sh

  • #Build Add-ons and Utils

<INSTALL_DIR>/Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_extras.sh

  • #Generate new boot Image

<INSTALL_DIR>/Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-linux/build_image.sh

slide-39
SLIDE 39

39

Building Qt for custom machines

  • config.${MACHINE}
  • appcontroller.conf.${MACHINE}
  • qt.conf.${MACHINE}
slide-40
SLIDE 40

40

config.${MACHINE}

#beaglebone config export PLATFORM="eLinux" export MACHINE="beaglebone" export DEVICE="linux-beaglebone-g++" export ARCH="arm" export SYSROOT="armv7ahf-vfp-neon-poky-linux-gnueabi" export COMPILER="arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-"

slide-41
SLIDE 41

41

appcontroller.conf.${MACHINE}

#beaglebone appcontroller environment env=QML2_IMPORT_PATH=/data/user/qt/qmlplugins env=QT_IM_MODULE=qtvirtualkeyboard env=QT_QPA_EGLFS_FORCE888=0 base=linux platform=beaglebone

slide-42
SLIDE 42

42

qt.conf.${MACHINE}

#beaglebone qt.conf [Paths] Sysroot=../../toolchain/sysroots/armv7ahf-vfp-neon-poky-linux-gnueabi Prefix=/bin/../../../../qt5 HostPrefix=..

slide-43
SLIDE 43

43

Register new SDK with Qt Creator

#Register new Kit in Qt Creator <INSTALL_DIR>/Boot2Qt-3.x/sources/b2qt-build-scripts/embedded-common/ setup_qtcreator.sh

slide-44
SLIDE 44

44

Android Device SDK

  • Android 4.2 or Android 4.4
  • Root access
  • Unlocked bootloader
slide-45
SLIDE 45

45

Android Injection

  • Modify init.rc
  • Deploy payload based on Android version
slide-46
SLIDE 46

46

Android Injection: Nexus 4

#Modify boot image abootimg -x ../boot.img mkdir initrd cd initrd cat ../initrd.img | gunzip | cpio -vid

  • #Modify the init.rc file using the sed file

sed -f <INSTALL_DIR>/Boot2Qt-3.x/generic-4.2-eAndroid/images/generic/modify_init_rc.sed -i init.rc

  • #Repackage the boot.img

find . | cpio --create --format='newc' | gzip > ../myinitrd.img abootimg --create myboot.img -f bootimg.cfg -k zImage -r myinitrd.img

  • #Flash the new boot.img to the device

fastboot flash boot myboot.img fastboot reboot

slide-47
SLIDE 47

47

Android Injection: Nexus 4

#Push Data Payload to the device mkdir data tar xf <INSTALL_DIR>/Qt/Boot2Qt-3.x/generic-4.2-eAndroid/images/data.tar.xz -C data/ find data -type d -exec adb shell mkdir -p /{} \; adb push data/. /data 2>&1 | grep -v '\ ->\ ' #Push System Payload to the device mkdir system tar -xf <INSTALL_DIR>/Boot2Qt-3.x/generic-4.2-eAndroid/images/system.tar.xz -C system/ cp <INSTALL_DIR>/Boot2Qt-3.x/generic-4.2-eAndroid/images/nexus7/appcontroller.conf . cp appcontroller.conf system/bin/ cp <INSTALL_DIR>/Boot2Qt-3.x/generic-4.2-eAndroid/images/common/gdbserver system/bin/ adb remount find system -type d -exec adb shell mkdir -p /{} \; adb push system/. /system 2>&1 | grep -v '\ ->\ '

slide-48
SLIDE 48

48

Demo Time!

slide-49
SLIDE 49

49

Future Research

  • Build Everything in Yocto
  • Low end profile (DirectFB)
  • Multi-process support (Wayland)
slide-50
SLIDE 50

50

Questions?