From 22f56ec593d4953f9b08180b2aa478352850dc1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Tue, 5 May 2015 13:55:47 +0300 Subject: Doc: Add VxWorks 7 specific documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I0fd2d14d2340352fef16580e8223ea9c120befff Reviewed-by: Topi Reiniö --- doc/src/platforms/platform-notes-rtos.qdoc | 13 - doc/src/platforms/supported-platforms.qdoc | 2 +- doc/src/platforms/vxworks.qdoc | 383 +++++++++++++++++++++++++++++ 3 files changed, 384 insertions(+), 14 deletions(-) create mode 100644 doc/src/platforms/vxworks.qdoc diff --git a/doc/src/platforms/platform-notes-rtos.qdoc b/doc/src/platforms/platform-notes-rtos.qdoc index ac0e821c5..1a177c0ca 100644 --- a/doc/src/platforms/platform-notes-rtos.qdoc +++ b/doc/src/platforms/platform-notes-rtos.qdoc @@ -25,19 +25,6 @@ ** ****************************************************************************/ -/*! - \page platform-notes-vxworks.html - \title Platform and Compiler Notes - VxWorks - \contentspage Platform and Compiler Notes - \target VxWorks - - Qt for VxWorks is available only under a commercial license. - - Please contact Qt sales at Digia to find out more: - http://info.qt.digia.com/contact-qt - -*/ - /*! \page platform-notes-qnx.html \title Platform and Compiler Notes - QNX diff --git a/doc/src/platforms/supported-platforms.qdoc b/doc/src/platforms/supported-platforms.qdoc index 84f3379ae..e0071cbf5 100644 --- a/doc/src/platforms/supported-platforms.qdoc +++ b/doc/src/platforms/supported-platforms.qdoc @@ -76,7 +76,7 @@ \li \l{Qt Enterprise Embedded}{Embedded Android} \li \l{Qt for Embedded Linux}{Embedded Linux} \li \l{Windows CE - Introduction to using Qt}{Windows Embedded (Compact and Standard)} - \li Real-Time Operating Systems, such as \l{QNX}, VxWorks and INTEGRITY + \li Real-Time Operating Systems, such as \l{QNX}, \l{Qt for VxWorks}{VxWorks} and INTEGRITY \endlist \section1 Mobile Platforms diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc new file mode 100644 index 000000000..c2fa38785 --- /dev/null +++ b/doc/src/platforms/vxworks.qdoc @@ -0,0 +1,383 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: http://www.gnu.org/copyleft/fdl.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page vxworks.html + \title Qt for VxWorks + + Qt for VxWorks is available only under a commercial license. + + Contact The Qt Company for more information: + http://www.qt.io/contact-us + + With the release of Qt 5.0, Qt no longer contains its own window system + implementation: QWS is no longer a supported platform. For single-process use + cases, the \l{Qt Platform Abstraction} is a superior solution. + + There are two platform plugins that are usable on VxWorks: EGLFS and VxWorksFB. + The availability of these plugins depends on the configuration of Qt. The default + platform plugin is also device specific. For instance, on many boards eglfs will be + chosen as the default one. If the default is not suitable, the \c QT_QPA_PLATFORM + environment variable parameter can be used to request another plugin. + Alternatively, for quick tests, the \c -platform command-line option can be used + with the same syntax. + + \section1 Requirements for VxWorks 7 + + \section2 QtWidget Applications + + \list + \li Framebuffer device (FBDEV) + \li Evdev support (for input handling: mouse, keyboard and touch) + \li POSIX support + \li C++11 support + \endlist + + \section2 Qt Quick 2 Applications + + All features which are required for QtWidget applications, and in addition the following: + + \list + \li GPU device (GPUDEV) for OpenGL ES 2.0 + \endlist + + \section1 Configuring for a Specific Device + + Building Qt for a given device requires a toolchain and a + sysroot. Additionally, some devices require vendor specific adaptation code + for EGL and OpenGL ES 2.0 support. This is not relevant for non-accelerated + platforms, for example the ones using the VxWorksFB plugin, however neither + OpenGL nor Qt Quick 2 will be functional in such a setup. + + The directory \e qtbase/mkspecs/devices contains configuration and graphics + adaptation code for a number of devices. For example, \c vxworks-imx6 + contains build settings, such as the optimal compiler and linker flags, for + the \l {http://en.wikipedia.org/wiki/I.MX#i.MX6x_series}{Freescale iMX6 series}, + and either an implementation of the eglfs hooks (vendor-specific adaptation code), + or a reference to a suitable eglfs device integration plugin. The device is + selected through the \l{Qt Configure Options}{configure} tool's \c -device + parameter. The name that follows after this argument must, at least partially, + match one of the subdirectories under \e devices. + + Below is an example configuration for the BD-SL-i.MX6. For most VxWorks boards + the configure command will look very similar. + + \badcode + ./configure -commercial -confirm-license -device vxworks-imx6 -device-option CROSS_COMPILE=arm -prefix /sd0:1/qt5rtp -sysroot /fsl_imx6_1_1_4_1_VSB -no-gcc-sysroot -extprefix /qt5rtp -hostprefix /qt5rtp -no-openssl -static + \endcode + + The most important parameters are \c -device, \c -device-option CROSS_COMPILE=, + \c -sysroot and \c -no-gcc-sysroot. By specifying \c -sysroot, the include + files and libraries used by \c {configure}'s feature detection tests, as well + as Qt itself, will be taken from the specified location, instead of the host + PC's standard locations. This means that installing development packages on the + host machine has no relevance. Instead, the headers and the libraries for the + target architecture (e.g. ARM) have to be present in the sysroot. + + See \l {Qt Configure Options} for more information. + + \section1 Platform Plugins for VxWorks Devices + + \section2 EGLFS + + \l {http://www.khronos.org/egl}{EGL} is an interface between OpenGL and the + native windowing system. Qt can use EGL for context and surface management, + however the API contains no platform specifics: The creation of a \e {native + window} (which will not necessarily be an actual window on the screen) must + still be done by platform-specific means. Hence the need for the board or GPU + specific adaptation code. Such adaptations are provided either as \e {eglfs + hooks}, a single source file compiled in to the platform plugin, or as + dynamically loaded \e {EGL device integration} plugins. + + EGLFS is a platform plugin for running Qt5 applications on top of EGL and + OpenGL ES 2.0 without an actual windowing system (like X11 or Wayland). In + addition to Qt Quick 2 and native OpenGL applications it supports + software-rendered windows (for example QWidget) too. In the latter case the + widgets' contents are rendered using the CPU into images which are then + uploaded into textures and composited by the plugin. + + This is the recommended plugin for modern VxWorks devices that include + a GPU. + + EGLFS forces the first top-level window (be it either a QWidget or a + QQuickView) to become fullscreen. This window is also chosen to be the \e root + widget window into which all other top-level widgets (for example dialogs, + popup menus or combobox dropdowns) are composited. This is necessary because + with EGLFS there is always exactly one native window and EGL window surface, + and these belong to the widget or window that is created first. This approach + works well when there is a main window that exists for the entire lifetime of + the application and all other widgets are either non top-levels or are created + afterwards, once the main window is shown. + + There are further restrictions for OpenGL-based windows. As of Qt 5.3, eglfs + supports a single, fullscreen GL window (for example, an OpenGL-based QWindow, + a QQuickView or a QGLWidget). Opening additional OpenGL windows or mixing such + windows with QWidget-based content is not supported and will terminate the + application with an error message. + + If necessary, eglfs can be configured via environment variables: + + \list + + \li \c {QT_QPA_EGLFS_FB} - Overrides the framebuffer device. The default is + \c /dev/fb0. On most embedded platforms this is not very relevant because the + framebuffer is used only for querying settings like the display dimensions. + On certain devices however this parameter provides the ability to specify + which display to use in multiple display setups, similarly to the \c fb + parameter in VxWorksFB. + + \li \c {QT_QPA_EGLFS_WIDTH} and \c {QT_QPA_EGLFS_HEIGHT} - Contain the screen + width and height in pixels. While eglfs will try to determine the dimensions + from the framebuffer device \e{/dev/fb0}, this will not always work and + manually specifying the sizes may become necessary. + + \li \c {QT_QPA_EGLFS_PHYSICAL_WIDTH} and \c {QT_QPA_EGLFS_PHYSICAL_HEIGHT} - + Physical screen width and height in millimeters. On platforms where the + framebuffer device \e{/dev/fb0} is not available or the query is not + successful, the values are calculated based on a default DPI of 100. This + variable can be used to override any such defaults. + + \li \c {QT_QPA_EGLFS_DEPTH} - Overrides the color depth for the screen. On + platforms where the framebuffer device \e{/dev/fb0} is not available or the + query is not successful, the default of 32 is used. This variable can be used + to override any such defaults. Note that this affects only the color depth + value reported by QScreen. It has no connection to EGL configurations and the + color depth used for OpenGL rendering. + + \li \c {QT_QPA_EGLFS_SWAPINTERVAL} - By default a swap interval of \c 1 will + be requested. This enables synchronizing to the displays vertical refresh. The + value can be overridden with this environment variable. For instance, passing + 0 will disable blocking on swap, resulting in running as fast as possible + without any synchronization. + + \li \c {QT_QPA_EGLFS_FORCE888} - When set, the red, green and blue color + channel sizes are ignored whenever creating a new context, window or offscreen + surface. Instead, the plugin will request a configuration with 8 bits per + channel. This can be helpful on devices where configurations with less than 32 + or 24 bits per pixel are chosen by default but are known not to be suitable, + for example, due to banding effects. Instead of changing all the applications, + this variable provides an easier shortcut to force 24/32 bpp configurations + for a given device. + + \li \c {QT_QPA_EGLFS_DEBUG} - When set, some debugging information is printed + on the debug output. For example, the input QSurfaceFormat and the properties + of the chosen EGL configuration are printed whenever creating a new + context. Together with Qt Quick's \c {QSG_INFO} variable, this can provide + useful information for troubleshooting issues related to the EGL + configuration. + + \li \c {QT_QPA_EGLFS_INTEGRATION} - In addition to the compiled-in \e hooks, + it is also possible to provide device or vendor-specific adaptation in the + form of dynamically loaded plugins. This environment variable enforces a + specific plugin. For example, setting it to \e{eglfs_kms} will use the KMS/DRM + backend. This is only an option when no static, compiled-in hooks were + specified in the device makespecs. In practice the traditional compiled-in + hooks are rarely used, almost all backends are now migrated to plugins. The + device makespecs still contain a relevant \c EGLFS_DEVICE_INTEGRATION entry: + the name of the preferred backend for that particular device. This is + optional, but very useful to avoid the need to set this environment variable + in case there are more than one plugins present in the target system. In a + desktop environment the KMS or the X11 backends are prioritized, depending on + the presence of the \c DISPLAY environment variable. + + \endlist + + In addition to \c {QT_QPA_EGLFS_DEBUG}, eglfs also supports the more modern + categorized logging system of Qt. The following logging categories are + available: + + \list + + \li \c qt.qpa.egldeviceintegration – Enables logging for dynamically loaded + backends. Very useful to check what backend is in use. + + \li \c qt.qpa.input – Enables debug output both from the evdev and libinput + input handlers. Very useful to check if a given input device was correctly + recognized and opened. + + \endlist + + \section2 Qt Quick Scene Graph Rendering Thread + + The scene graph is a graphical representation of the Item scene. It + can be thought of as a graphical deep copy, an independent structure + that contains enough information to render all the items. + + On many platforms, the \l{Qt Quick Scene Graph}{scene graph} will even be + rendered on a dedicated render thread while the GUI thread is preparing the + next frame's state. + + In some cases when application is complex e.g. it's scene graph contains + lot's of Items, scene graph can consume more stack memory than what is + available by default for the render thread. Default stack memory size is + 64KB. Using environment varialbe QSG_RENDERTHREAD_STACK_SIZE, it is possible + to increase availabe stack memory for the scene graph render thread. + + \section2 VxWorksFB + + This plugin writes directly to the framebuffer. Only software-rendered content + is supported. Note that on some setups the display performance is expected to + be limited. + + The \c vxworksfb plugin allows specifying additional settings by passing them + in the \c QT_QPA_PLATFORM environment variable or \c -platform command-line + option. For example, \c {QT_QPA_PLATFORM=vxworksfb:fb=/dev/fb1} specifies that + the framebuffer device \c /dev/fb1 should be used instead of the default + \c fb0. Multiple settings can be specfified by separating them with a colon. + + \list + + \li \c {fb=/dev/fbN} - Specifies the framebuffer devices. On multiple display + setups this will typically allow running the application on different + displays. For the time being there is no way to use multiple framebuffers from + one Qt application. + + \li \c{size=}\e{}\c{x}\e{} - Specifies the screen size in + pixels. The plugin will try to query the display dimensions, both physical and + logical, from the framebuffer device. This may not always lead to proper + results however, and therefore it may become necessary to explicitly specify + the values. + + \li \c{mmSize=}\e{}\c{x}\e{} - Physical width and height in + millimeters. + + \li \c{offset=}\e{}\c{x}\e{} - Offset in pixels specifying the + top-left corner of the screen. The default position is at \c{(0, 0)}. + + \endlist + + \section1 Input + + When no windowing system is present, the mouse, keyboard and touch input are + read directly via \c evdev. Note that this requires that devices nodes + \c {/dev/input/event*} are readable by the user. eglfs and vxworksfb has all + the evdev input handling code built-in. + + \section2 Input on eglfs and vxworksfb + + Parameters like the device node name can be set in the environment variables + \c QT_QPA_EVDEV_MOUSE_PARAMETERS, \c QT_QPA_EVDEV_KEYBOARD_PARAMETERS and + \c QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS. Additionally, the built-in input handlers + can be disabled by setting \c QT_QPA_EGLFS_DISABLE_INPUT or + \c QT_QPA_FB_DISABLE_INPUT to \c 1. On some touch screens the coordinates will + need to be rotated. This can be enabled by setting + \c QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS to \c {rotate=180}. + + \section2 Mouse + + The mouse cursor will show up whenever \c QT_QPA_EGLFS_HIDECURSOR (for eglfs) + or \c QT_QPA_FB_HIDECURSOR (for vxworksfb) is not set, the mouse cursor will + always show up unless explicitly disabled via the environment variable. + + Hot plugging is not supported. + + \section2 Keyboard + + The evdev keyboard handler supports the following extra parameters: + + \list + + \li \c {/dev/input/...} - Specifies the name of the input device. When not + given, Qt will look for a suitable device either via \e libudev or by walking + through the available nodes. + \li \c {repeat-delay} - Sets a custom key repeat delay. + \li \c {repeat-rate} - Sets a custom key repeat rate. + \endlist + + If the default, built-in keymap is not sufficient, a different one can be + specified either via the \c keymap parameter or by using the eglfs-specific + \l{QEglFSFunctions::loadKeymap()}{loadKeymap()} function. The latter allows + switching the keymap at runtime. Note however that this requires using eglfs' + built-in keyboard handler; it is not supported when the keyboard handler is + loaded via the \c -plugin command-line parameter. + + \section2 Touch + + Using touch enabled display (either single or multitouch) requires setting + touchscreen (or touch device) resolution set to environment variable \c + QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS to \c size=x. + + Multitouch support can be enabled by setting setting argument \c multitouch + to the environment variable \c QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS. + + \section2 Debugging Input Devices + + It is possible to print some information to the debug output by enabling + the \c qt.qpa.input logging rule, for example by setting the \c QT_LOGGING_RULES + environment variable to \c{qt.qpa.input=true}. This is useful for detecting + which device is being used, or to troubleshoot device discovery issues. + + \section2 Using Custom Mouse Cursor Images + + eglfs comes with its own set of 32x32 sized mouse cursor images. If these are + not sufficient, a custom cursor atlas can be provided by setting the \c + QT_QPA_EGLFS_CURSOR environment variable to the name of a JSON file. The file + can also be embedded into the application via Qt's resource system. + + For example, an embedded cursor atlas with 8 cursor images per row can be + specified like the following: + + \badcode + { + "image": ":/cursor-atlas.png", + "cursorsPerRow": 8, + "hotSpots": [ + [7, 2], + [12, 3], + [12, 12], + ... + ] + } + \endcode + + Note that the images are expected to be tightly packed in the atlas: the + width and height of the cursors are decided based on the total image size and + the \c cursorsPerRow setting. Atlases have to provide an image for all the + supported cursors. + + \section1 Limitations + + \section2 OpenSSl Support + Qt5 does not support OpenSSL for VxWorks as it does not support using OpenSSL + in RTP mode. + + \section2 Video Memory + + Systems with a fixed amount of dedicated video memory may need extra care + before running Qt application based on Qt Quick or classes like + QOpenGLWidget. The default setting may be insufficient for such applications, + especially when they are displayed on a high resolution (for example, full HD) + screen. In this case they may start failing in unexpected ways. It is + therefore recommended to ensure that there is at least 128 MB of GPU memory + available. For systems that do not have a fixed amount of memory reserved for + the GPU this is not an issue. + + \section2 vxworksfb + + Use the \c fb plugin parameter to specify the framebuffer device to use. + +*/ -- cgit v1.2.3 From 284a1d8a7c1a5c7d8a4ff5e58676a4f5e96a8c14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Fri, 22 May 2015 13:31:40 +0300 Subject: VxWorks: Update documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add supported architecture * Add supported Qt modules and add-ons Change-Id: I6954c8d9128965a52c3fa39aafc3038ace20d919 Reviewed-by: Topi Reiniö --- doc/src/platforms/vxworks.qdoc | 103 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 91 insertions(+), 12 deletions(-) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index c2fa38785..5f1f5b2a5 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -34,25 +34,19 @@ Contact The Qt Company for more information: http://www.qt.io/contact-us - With the release of Qt 5.0, Qt no longer contains its own window system - implementation: QWS is no longer a supported platform. For single-process use - cases, the \l{Qt Platform Abstraction} is a superior solution. + \section1 Supported Architectures and VxWorks Releases - There are two platform plugins that are usable on VxWorks: EGLFS and VxWorksFB. - The availability of these plugins depends on the configuration of Qt. The default - platform plugin is also device specific. For instance, on many boards eglfs will be - chosen as the default one. If the default is not suitable, the \c QT_QPA_PLATFORM - environment variable parameter can be used to request another plugin. - Alternatively, for quick tests, the \c -platform command-line option can be used - with the same syntax. + Qt5 is currently tested and supported on VxWorks 7. As VxWorks 7 does + not have released versions, current minimum required release is the one dated May 8th, 2015. + Supported architecture is ARM-v7. - \section1 Requirements for VxWorks 7 + \section1 Requirements for VxWorks \section2 QtWidget Applications \list \li Framebuffer device (FBDEV) - \li Evdev support (for input handling: mouse, keyboard and touch) + \li Evdev support (compatibility mode) \li POSIX support \li C++11 support \endlist @@ -65,6 +59,91 @@ \li GPU device (GPUDEV) for OpenGL ES 2.0 \endlist + \section1 Supported Modules + + Almost all essential \l{All Modules}{Qt modules} and some add-on modules supported. + + \section2 Limitations for Essential modules + + \table 80% + \header + \li Qt Module + \li Supported features + \li Notes + + \row + \li Qt Multimedia + \li Audio + \li \l [QML] {QtMultimedia::SoundEffect}{SoundEffect}, + \li \l [CPP] {QtMultimedia::QSoundEffect}{QSoundEffect} and + \li \l [CPP] {QtMultimedia::QAudioOutput}{QAudioOutput} + + \row + \li Qt Multimedia Widgets + \li Not supported + \li + + \row + \li Qt Webkit + \li Not supported + \li + + \row + \li Qt Webkit Widgets + \li Not supported + \li + + \endtable + + \section2 Supported Add-ons + + \table 80% + \header + \li Qt Add-on + \li Notes + + \row + \li Qt Concurrent + \li + \row + \li Qt Graphical Effects + \li + \row + \li Qt Image Formats + \li + \row + \li Qt OpenGL + \li Only OpenGL ES 2 \note Provided to ease porting from Qt 4.x. + Use the QOpenGL classes in \l{Qt GUI} for new code + \row + \li Qt Platform Headers + \li + \row + \li Qt SVG + \li + \row + \li Qt XML Patterns + \li + + \endtable + + \note You can explicitly exclude unsupported or unused modules from the + build via the -skip option when running the configure tool. + + \section1 Platform Notes + + With the release of Qt 5.0, Qt no longer contains its own window system + implementation: QWS is no longer a supported platform. For single-process use + cases, the \l{Qt Platform Abstraction} is a superior solution. + + There are two platform plugins that are usable on VxWorks: EGLFS and VxWorksFB. + The availability of these plugins depends on the configuration of Qt. The default + platform plugin is also device-specific. For instance, on many boards \c eglfs will be + chosen as the default one. If the default is not suitable, the \c QT_QPA_PLATFORM + environment variable parameter can be used to request another plugin. + Alternatively, for quick tests, the \c -platform command-line option can be used + with the same syntax. + \section1 Configuring for a Specific Device Building Qt for a given device requires a toolchain and a -- cgit v1.2.3 From de125aea3c94490eca22ad2694390aec6edc0467 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Mon, 8 Jun 2015 13:41:02 +0300 Subject: VxWorks: Update documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add instructions howto start Qt5 application on VxWorks * More documentation about shared/static build of Qt5 Change-Id: I7844bdecad06a16e870e742a374cc7c80c0a53e2 Reviewed-by: Topi Reiniö --- doc/src/platforms/vxworks.qdoc | 54 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index 5f1f5b2a5..9026462af 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -36,7 +36,7 @@ \section1 Supported Architectures and VxWorks Releases - Qt5 is currently tested and supported on VxWorks 7. As VxWorks 7 does + Qt 5 is currently tested and supported on VxWorks 7. As VxWorks 7 does not have released versions, current minimum required release is the one dated May 8th, 2015. Supported architecture is ARM-v7. @@ -162,11 +162,29 @@ parameter. The name that follows after this argument must, at least partially, match one of the subdirectories under \e devices. + Before running configure and building Qt 5 it is required to open \e {VxWorks 7 + Development Shell} in command prompt. + + \list + \li Linux: + \badcode + cd + ./wrenv.sh -p vxworks-7 + \endcode + + \li Windows: + \badcode + cd + wrenv -p vxworks-7 + \endcode + \endlist + Below is an example configuration for the BD-SL-i.MX6. For most VxWorks boards - the configure command will look very similar. + the configure command will look very similar. By default, Qt 5 is configured to + use shared libraries. To build Qt 5 statically, add \c -static option for configure. \badcode - ./configure -commercial -confirm-license -device vxworks-imx6 -device-option CROSS_COMPILE=arm -prefix /sd0:1/qt5rtp -sysroot /fsl_imx6_1_1_4_1_VSB -no-gcc-sysroot -extprefix /qt5rtp -hostprefix /qt5rtp -no-openssl -static + ./configure -commercial -confirm-license -device vxworks-imx6 -device-option CROSS_COMPILE=arm -prefix /sd0:1/qt5rtp -sysroot /fsl_imx6_1_1_4_1_VSB -no-gcc-sysroot -extprefix /qt5rtp -hostprefix /qt5rtp -no-openssl \endcode The most important parameters are \c -device, \c -device-option CROSS_COMPILE=, @@ -177,7 +195,15 @@ host machine has no relevance. Instead, the headers and the libraries for the target architecture (e.g. ARM) have to be present in the sysroot. - See \l {Qt Configure Options} for more information. + It is recommended to build Qt 5 using a \e{shadow build}. See \l {Qt Configure Options} + for more information. + + \section1 Building and Installing Qt 5 + + \badcode + make -j + make install + \endcode \section1 Platform Plugins for VxWorks Devices @@ -192,7 +218,7 @@ hooks}, a single source file compiled in to the platform plugin, or as dynamically loaded \e {EGL device integration} plugins. - EGLFS is a platform plugin for running Qt5 applications on top of EGL and + EGLFS is a platform plugin for running Qt 5 applications on top of EGL and OpenGL ES 2.0 without an actual windowing system (like X11 or Wayland). In addition to Qt Quick 2 and native OpenGL applications it supports software-rendered windows (for example QWidget) too. In the latter case the @@ -438,10 +464,24 @@ the \c cursorsPerRow setting. Atlases have to provide an image for all the supported cursors. + \section1 Running Qt Applications + + Following example shows how to start an application when Qt 5 is built using + shared libraries. With a statically build Qt 5, there is no need to use the + LD_LIBRARY_PATH environment variable. This variable is only needed to point + the location of VxWorks shared libraries (for example libc and OpenGL ES 2.0). + It is not needed for Qt 5 shared libraries. + + \badcode + putenv "LD_LIBRARY_PATH=/sd0:1/lib" + cd "/sd0:1" + rtpSp("", 200, 0x100000, 0, 0x01000000) + \endcode + \section1 Limitations - \section2 OpenSSl Support - Qt5 does not support OpenSSL for VxWorks as it does not support using OpenSSL + \section2 OpenSSL Support + Qt 5 does not support OpenSSL for VxWorks as it does not support using OpenSSL in RTP mode. \section2 Video Memory -- cgit v1.2.3 From 1f82b18e1d63496aaccdfdcde97f7695b61b5639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Mon, 4 Jan 2016 10:45:29 +0200 Subject: VxWorks: Update documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add QML loader thread section Change-Id: Ib475c80b69a13817e291775fa2e2a0c84d6c05fb Reviewed-by: Topi Reiniö --- doc/src/platforms/vxworks.qdoc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index 9026462af..a872cd5a7 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -464,6 +464,14 @@ the \c cursorsPerRow setting. Atlases have to provide an image for all the supported cursors. + \section1 QML Component loader thread + + In some cases, a complex application (for example, using a lot of custom + QML components) may cause the QML loader thread to consume stack memory + more than the 32 KB available by default. Using the environment variable + \c QML_LOADERTHREAD_STACK_SIZE, it is possible to increase the stack + size available for the QML loader thread. + \section1 Running Qt Applications Following example shows how to start an application when Qt 5 is built using -- cgit v1.2.3 From 350ea2e0dcad3bb77cbbd38bff854452e1aa6411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Thu, 10 Dec 2015 13:39:33 +0200 Subject: VxWorks: Update documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Updated minimum supported VxWorks 7 release * Updated touch support section Change-Id: Iee84f3081eeaec14269854b5dbf64daf49183ec2 Reviewed-by: Topi Reiniö --- doc/src/platforms/vxworks.qdoc | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index a872cd5a7..899f4600d 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -37,7 +37,7 @@ \section1 Supported Architectures and VxWorks Releases Qt 5 is currently tested and supported on VxWorks 7. As VxWorks 7 does - not have released versions, current minimum required release is the one dated May 8th, 2015. + not have released versions, current minimum required release is the one dated December 15th, 2015. Supported architecture is ARM-v7. \section1 Requirements for VxWorks @@ -422,12 +422,8 @@ \section2 Touch - Using touch enabled display (either single or multitouch) requires setting - touchscreen (or touch device) resolution set to environment variable \c - QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS to \c size=x. - - Multitouch support can be enabled by setting setting argument \c multitouch - to the environment variable \c QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS. + Both single and multitouch devices are supported and require that VxWorks + has been properly configured to support touch devices. \section2 Debugging Input Devices -- cgit v1.2.3 From ec2e07b8d2b4d9f32da70601d723bbc88b0d4a10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Mon, 4 Jan 2016 10:47:59 +0200 Subject: VxWorks: Update documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix typo in Scene Graph Rendering Thread section Change-Id: Ifcb54285e9be64988b91e32a15dca1f60610ade0 Reviewed-by: Topi Reiniö --- doc/src/platforms/vxworks.qdoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index 899f4600d..faad6f6e9 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -339,8 +339,8 @@ In some cases when application is complex e.g. it's scene graph contains lot's of Items, scene graph can consume more stack memory than what is available by default for the render thread. Default stack memory size is - 64KB. Using environment varialbe QSG_RENDERTHREAD_STACK_SIZE, it is possible - to increase availabe stack memory for the scene graph render thread. + 64KB. Using the environment variable QSG_RENDERTHREAD_STACK_SIZE, it is possible + to increase the stack size available for the scene graph render thread. \section2 VxWorksFB -- cgit v1.2.3 From 07ff654da9c9b2da0900a6185970c1087a5ee577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Mon, 11 Jan 2016 16:14:20 +0200 Subject: VxWorks: Update documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add QSound as supported c++ class Change-Id: Iaa6fe6855470cbb65f0fd9dcc9ecc4ee1bb87530 Reviewed-by: Topi Reiniö --- doc/src/platforms/vxworks.qdoc | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index faad6f6e9..40c5ae18f 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -75,6 +75,7 @@ \li Qt Multimedia \li Audio \li \l [QML] {QtMultimedia::SoundEffect}{SoundEffect}, + \li \l [CPP] {QtMultimedia::QSound}{QSound}, \li \l [CPP] {QtMultimedia::QSoundEffect}{QSoundEffect} and \li \l [CPP] {QtMultimedia::QAudioOutput}{QAudioOutput} -- cgit v1.2.3 From ae3a57759d98e1b42b3af1d4830e53ecf590d2a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Thu, 28 Jan 2016 10:16:55 +0200 Subject: VxWorks: Update documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix input device format * Remove unsupported features for keyboard Change-Id: I097c7c5e7fffa012ffbedc73acf465b0f8152baa Reviewed-by: Topi Reiniö --- doc/src/platforms/vxworks.qdoc | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index 40c5ae18f..e85f0463e 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -321,9 +321,9 @@ \li \c qt.qpa.egldeviceintegration – Enables logging for dynamically loaded backends. Very useful to check what backend is in use. - \li \c qt.qpa.input – Enables debug output both from the evdev and libinput - input handlers. Very useful to check if a given input device was correctly - recognized and opened. + \li \c qt.qpa.input – Enables debug output from the evdev input handler. + Very useful to check if a given input device was correctly recognized and + opened. \endlist @@ -380,7 +380,7 @@ When no windowing system is present, the mouse, keyboard and touch input are read directly via \c evdev. Note that this requires that devices nodes - \c {/dev/input/event*} are readable by the user. eglfs and vxworksfb has all + \c {/input/event*} are readable by the user. eglfs and vxworksfb has all the evdev input handling code built-in. \section2 Input on eglfs and vxworksfb @@ -407,11 +407,9 @@ \list - \li \c {/dev/input/...} - Specifies the name of the input device. When not - given, Qt will look for a suitable device either via \e libudev or by walking - through the available nodes. - \li \c {repeat-delay} - Sets a custom key repeat delay. - \li \c {repeat-rate} - Sets a custom key repeat rate. + \li \c {/input/...} - Specifies the name of the input device. When not + given, Qt will look for a suitable device by walking through the available + nodes. \endlist If the default, built-in keymap is not sufficient, a different one can be -- cgit v1.2.3 From 10768631f581d38f0ef9b1903629f2d8a7632cca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Thu, 28 Jan 2016 10:53:17 +0200 Subject: VxWorks: Update documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add chapter for env variable QT_FORCE_SELECT_NOTIMEOUT Change-Id: Id71397e1f28d883fc4aa82a67caa296f60c3c258 Reviewed-by: Topi Reiniö --- doc/src/platforms/vxworks.qdoc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index e85f0463e..848c0a79d 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -467,6 +467,16 @@ \c QML_LOADERTHREAD_STACK_SIZE, it is possible to increase the stack size available for the QML loader thread. + \section1 Preventing Timeouts in QEventDispatcher + + Default system clock rate (SYS_CLK_RATE) for VxWorks 7 is 1/60s or ~16,67ms. + In some cases this may cause a drop in the application frame rate; + in QEventDispatcher, the select function is blocking for the entire system + clock interval because a timeout is used. By defining an environment variable + \c QT_FORCE_SELECT_NOTIMEOUT=1, the select function returns immediately + if no new events are available and the resolution of the system clock is higher + than 10ms, which is true with default value. + \section1 Running Qt Applications Following example shows how to start an application when Qt 5 is built using -- cgit v1.2.3 From 0bc749aa73de9c3b7b0ca8d3a9fa5fde40c01561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pasi=20Pet=C3=A4j=C3=A4j=C3=A4rvi?= Date: Fri, 29 Jan 2016 15:14:39 +0200 Subject: VxWorks: Updated documentation * Update configure example Change-Id: I6a53c2c030487bc340be315be5a7af4ea413b56c Reviewed-by: Tuomas Heimonen --- doc/src/platforms/vxworks.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index 848c0a79d..f5e4b8dfd 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -185,7 +185,7 @@ use shared libraries. To build Qt 5 statically, add \c -static option for configure. \badcode - ./configure -commercial -confirm-license -device vxworks-imx6 -device-option CROSS_COMPILE=arm -prefix /sd0:1/qt5rtp -sysroot /fsl_imx6_1_1_4_1_VSB -no-gcc-sysroot -extprefix /qt5rtp -hostprefix /qt5rtp -no-openssl + ./configure -commercial -confirm-license -device vxworks-imx6 -device-option CROSS_COMPILE=arm -prefix /sd0:1/qt5rtp -sysroot /fsl_imx6_1_1_6_0_VSB -no-gcc-sysroot -extprefix /qt5rtp -hostprefix /qt5rtp -no-openssl -nomake tools -nomake examples \endcode The most important parameters are \c -device, \c -device-option CROSS_COMPILE=, -- cgit v1.2.3 From d5ecae1ebf50308fecee4fd73132ad5e64e90260 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Mon, 1 Feb 2016 10:01:40 +0100 Subject: VwWorks: Doc: Fix minor issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix a link to contact-us page and some minor formatting issues. Change-Id: I56c81bac7c8da4952208e75b3ff99d456bd4598f Reviewed-by: Pasi Petäjäjärvi --- doc/src/platforms/vxworks.qdoc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index f5e4b8dfd..512da401b 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -32,7 +32,7 @@ Qt for VxWorks is available only under a commercial license. Contact The Qt Company for more information: - http://www.qt.io/contact-us + \l {https://www.qt.io/contact-us/} \section1 Supported Architectures and VxWorks Releases @@ -68,16 +68,16 @@ \table 80% \header \li Qt Module - \li Supported features + \li Supported Features \li Notes \row \li Qt Multimedia \li Audio \li \l [QML] {QtMultimedia::SoundEffect}{SoundEffect}, - \li \l [CPP] {QtMultimedia::QSound}{QSound}, - \li \l [CPP] {QtMultimedia::QSoundEffect}{QSoundEffect} and - \li \l [CPP] {QtMultimedia::QAudioOutput}{QAudioOutput} + \l [QtMultimedia] {QSound}, + \l [QtMultimedia] {QSoundEffect} and + \l [QtMultimedia] {QAudioOutput} \row \li Qt Multimedia Widgets @@ -459,7 +459,7 @@ the \c cursorsPerRow setting. Atlases have to provide an image for all the supported cursors. - \section1 QML Component loader thread + \section1 QML Component Loader Thread In some cases, a complex application (for example, using a lot of custom QML components) may cause the QML loader thread to consume stack memory -- cgit v1.2.3 From f3cd9c72beaa79a2762cf2ea661398216fdd21d6 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Thu, 4 Feb 2016 08:35:51 +0100 Subject: VxWorks: Doc: List all supported add-on modules And link to the module landing pages. Change-Id: Ia8ddc90e37d0d135e4ce2edfc82d93ee8f12df2f Reviewed-by: Marko Kangas --- doc/src/platforms/vxworks.qdoc | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index 512da401b..22bb564dd 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -72,7 +72,7 @@ \li Notes \row - \li Qt Multimedia + \li \l {Qt Multimedia} \li Audio \li \l [QML] {QtMultimedia::SoundEffect}{SoundEffect}, \l [QtMultimedia] {QSound}, @@ -80,17 +80,17 @@ \l [QtMultimedia] {QAudioOutput} \row - \li Qt Multimedia Widgets + \li \l {Qt Multimedia Widgets} \li Not supported \li \row - \li Qt Webkit + \li Qt WebKit \li Not supported \li \row - \li Qt Webkit Widgets + \li Qt WebKit Widgets \li Not supported \li @@ -102,30 +102,40 @@ \header \li Qt Add-on \li Notes - \row - \li Qt Concurrent + \li \l {Qt Charts} + \li Version 2.0.1 + \row + \li \l {Qt Data Visualization} + \li Version 1.2.1 + \row + \li \l {Qt Virtual Keyboard} + \li Version 2.0 + \row + \li \l {Qt Quick Compiler} + \li Version 3.0 + \row + \li \l {Qt Concurrent} \li \row - \li Qt Graphical Effects + \li \l {Qt Graphical Effects} \li \row - \li Qt Image Formats + \li \l {Qt Image Formats} \li \row - \li Qt OpenGL + \li \l {Qt OpenGL} \li Only OpenGL ES 2 \note Provided to ease porting from Qt 4.x. Use the QOpenGL classes in \l{Qt GUI} for new code \row - \li Qt Platform Headers + \li \l {Qt Platform Headers} \li \row - \li Qt SVG + \li \l {Qt SVG} \li \row - \li Qt XML Patterns + \li \l {Qt XML Patterns} \li - \endtable \note You can explicitly exclude unsupported or unused modules from the -- cgit v1.2.3 From b3869a0e4736523dc4b552cc90d060ef614cc43e Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Tue, 10 May 2016 10:02:28 +0200 Subject: Doc: Clarify how Qt for VxWorks source package is delivered Change-Id: Iced2554b8225da929d3c805f277bea9c028708c8 Reviewed-by: Nico Vertriest Reviewed-by: Marko Kangas --- doc/src/platforms/vxworks.qdoc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index 22bb564dd..a7023f5ab 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -36,10 +36,15 @@ \section1 Supported Architectures and VxWorks Releases - Qt 5 is currently tested and supported on VxWorks 7. As VxWorks 7 does + Qt 5.5 is currently tested and supported on VxWorks 7. As VxWorks 7 does not have released versions, current minimum required release is the one dated December 15th, 2015. Supported architecture is ARM-v7. + \section1 Qt for VxWorks Source Package + + Qt for VxWorks is delivered via the \l {Qt Account}, under the name + \b {Qt 5.5.1} > \b {Qt VxWorks Platform Source Package}. + \section1 Requirements for VxWorks \section2 QtWidget Applications -- cgit v1.2.3 From 28db33b9bc5b9438410ecbb312cab7bf6accfff7 Mon Sep 17 00:00:00 2001 From: Tuomas Heimonen Date: Thu, 15 Dec 2016 17:01:03 +0200 Subject: VxWorks: Update VxWorks version to SR0480 2016-09-16 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I97c4b431b5f0bb1a0753cbefcf7724dcb6dab34b Reviewed-by: Topi Reiniö --- doc/src/platforms/vxworks.qdoc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/src/platforms/vxworks.qdoc b/doc/src/platforms/vxworks.qdoc index a7023f5ab..7bc891f27 100644 --- a/doc/src/platforms/vxworks.qdoc +++ b/doc/src/platforms/vxworks.qdoc @@ -36,8 +36,7 @@ \section1 Supported Architectures and VxWorks Releases - Qt 5.5 is currently tested and supported on VxWorks 7. As VxWorks 7 does - not have released versions, current minimum required release is the one dated December 15th, 2015. + Qt 5.5 is currently tested and supported on VxWorks 7 release SR0480 2016-09-16. Supported architecture is ARM-v7. \section1 Qt for VxWorks Source Package -- cgit v1.2.3