diff options
author | Tatiana Borisova <tatiana.borisova@qt.io> | 2021-08-03 18:08:01 +0300 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-08-25 06:33:54 +0000 |
commit | 2c60bfa80fbaf8b64cdc318f0b5989195214d167 (patch) | |
tree | 13009050410ba5532081310aded98a91e623b7dd | |
parent | 9ca70bcceaa9b3b931539a38cfc8f5a14bbf8185 (diff) |
Create Integrity specific documentation for Qt6.2
-Add integrity as a supported platform in the supported platform page
Task-number: QTBUG-95422
Change-Id: I45c1cf06847ca9aaf85cb7621fd53767cdf37ee8
Reviewed-by: Nicholas Bennett <nicholas.bennett@qt.io>
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
(cherry picked from commit be4dc615ea3f8ace045d9b543da0f54c0075a36c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | doc/snippets/platforms/cmake/toolchain_integrity.cmake | 69 | ||||
-rw-r--r-- | doc/src/images/fastboot-mode.png | bin | 0 -> 14923 bytes | |||
-rw-r--r-- | doc/src/images/open-project.png | bin | 31906 -> 13275 bytes | |||
-rw-r--r-- | doc/src/images/project-structure.png | bin | 0 -> 38866 bytes | |||
-rw-r--r-- | doc/src/images/qml-application.png | bin | 0 -> 140868 bytes | |||
-rw-r--r-- | doc/src/images/sa8155p.png | bin | 0 -> 159215 bytes | |||
-rw-r--r-- | doc/src/images/wiring1.png | bin | 0 -> 143532 bytes | |||
-rw-r--r-- | doc/src/images/wiring2.png | bin | 0 -> 222607 bytes | |||
-rw-r--r-- | doc/src/platforms/installing-platform-dependencies.qdocinc | 75 | ||||
-rw-r--r-- | doc/src/platforms/integrity-build-monolith-app-tutorial.qdoc | 91 | ||||
-rw-r--r-- | doc/src/platforms/integrity-building-monolith.qdocinc | 112 | ||||
-rw-r--r-- | doc/src/platforms/integrity-building-qt-8155P.qdocinc | 187 | ||||
-rw-r--r-- | doc/src/platforms/integrity-flash-and-run.qdocinc | 140 | ||||
-rw-r--r-- | doc/src/platforms/integrity.qdoc | 88 | ||||
-rw-r--r-- | doc/src/platforms/supported-platforms.qdocinc | 10 |
15 files changed, 772 insertions, 0 deletions
diff --git a/doc/snippets/platforms/cmake/toolchain_integrity.cmake b/doc/snippets/platforms/cmake/toolchain_integrity.cmake new file mode 100644 index 000000000..4f4ed6a5b --- /dev/null +++ b/doc/snippets/platforms/cmake/toolchain_integrity.cmake @@ -0,0 +1,69 @@ +set(TARGET_ROOT_PATH "/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot") +set(CMAKE_BUILD_TYPE "Release") + +set(CMAKE_C_COMPILER cxintarm64) +set(CMAKE_CXX_COMPILER cxintarm64) +set(CMAKE_ASM_COMPILER cxintarm64) + +#generic +set(CMAKE_SYSTEM_NAME Integrity) +set(CMAKE_SYSTEM_PROCESSOR arm) +set(CMAKE_CROSSCOMPILING True) + +set(EGL_FOUND True) +set(UNIX True) + +set (CMAKE_C_COMPILE_FEATURES c_std_99) +set (CMAKE_CXX_COMPILE_FEATURES +cxx_alias_templates +cxx_alignas +cxx_alignof +cxx_attributes +cxx_auto_type +cxx_constexp +cxx_decltype +cxx_delegating_constructors +cxx_explicit_conversions +cxx_extern_templates +cxx_inheriting_constructors +cxx_lambdas +cxx_noexcept +cxx_nonstatic_member_init +cxx_nullptr +cxx_override +cxx_range_for +cxx_raw_string_literals +cxx_reference_qualified_functions +cxx_rvalue_references +cxx_static_assert +cxx_std_17 +cxx_thread_local +cxx_unicode_literals +cxx_uniform_initialization +cxx_unrestricted_unions +cxx_variadic_macros +cxx_variadic_templates) + +#base +set(CMAKE_C_FLAGS "-bsp $ENV{INTEGRITY_BSP} -os_dir $ENV{INTEGRITY_DIR} -non_shared -startfile_dir=$ENV{INTEGRITY_DIR}/libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/$ENV{INTEGRITY_BSP}/$ENV{INTEGRITY_BUILD_TARGET} --rtos_library_directory=libs/arm64/$ENV{INTEGRITY_BUILD_TARGET} -bigswitch -DINTEGRITY -llibivfs.a -llibposix.a -llibpaged_alloc.a -llibnet.a -llibsocket.a") +set(CMAKE_C_FLAGS_DEBUG "-g -Omaxdebug") +set(CMAKE_C_FLAGS_RELEASE "-Ospeed -Olink -Omax") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --signed_fields --diag_suppress=1,82,228,236,381,611,961,997,1795,1931,1974,3148 --c++17 --thread_local_storage --exceptions --defer_parse_function_templates") +set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} --signed_fields --no_implicit_include --link_once_templates -non_shared --new_outside_of_constructor -I $ENV{QC_MULTIMEDIA_INC_DIR}") +set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${TARGET_ROOT_PATH} -L${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/graphics -L${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/base -L${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt -L${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/platform -L${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/display/ --commons") +set(CMAKE_FIND_LIBRARY_PREFIXES "lib") +set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") +set(BUILD_SHARED_LIBS OFF) +set(CMAKE_EXE_LINKER_FLAGS "") +set(QT_CFLAGS_OPTIMIZE_FULL "-Ospeed -Olink -Omax") +set(GLSLANG_OSDEP_PATH ../3rdparty/glslang/glslang/OSDependent/Unix) +set(GL_INC_DIR ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public) +set(EGL_INCLUDE_DIR ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public) +set(PKG_EGL_LIBRARY_DIRS ${TARGET_ROOT_PATH}) +set(EGL_LIBRARY ${TARGET_ROOT_PATH}/libeglmegapack.a) +set(GLESv2_LIBRARY ${TARGET_ROOT_PATH}/libeglmegapack.a) +set(GLESv2_INCLUDE_DIR ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public) +set(OPENGL_INCLUDE_DIR ${TARGET_ROOT_PATH}/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public) +set(OPENGL_opengl_LIBRARY ${TARGET_ROOT_PATH}/libeglmegapack.a) diff --git a/doc/src/images/fastboot-mode.png b/doc/src/images/fastboot-mode.png Binary files differnew file mode 100644 index 000000000..c65a3eec8 --- /dev/null +++ b/doc/src/images/fastboot-mode.png diff --git a/doc/src/images/open-project.png b/doc/src/images/open-project.png Binary files differindex 18a1af52b..e246122ee 100644 --- a/doc/src/images/open-project.png +++ b/doc/src/images/open-project.png diff --git a/doc/src/images/project-structure.png b/doc/src/images/project-structure.png Binary files differnew file mode 100644 index 000000000..2eb8b2b3b --- /dev/null +++ b/doc/src/images/project-structure.png diff --git a/doc/src/images/qml-application.png b/doc/src/images/qml-application.png Binary files differnew file mode 100644 index 000000000..b07e39ffe --- /dev/null +++ b/doc/src/images/qml-application.png diff --git a/doc/src/images/sa8155p.png b/doc/src/images/sa8155p.png Binary files differnew file mode 100644 index 000000000..494fa91ff --- /dev/null +++ b/doc/src/images/sa8155p.png diff --git a/doc/src/images/wiring1.png b/doc/src/images/wiring1.png Binary files differnew file mode 100644 index 000000000..7dc43ef71 --- /dev/null +++ b/doc/src/images/wiring1.png diff --git a/doc/src/images/wiring2.png b/doc/src/images/wiring2.png Binary files differnew file mode 100644 index 000000000..4386850a7 --- /dev/null +++ b/doc/src/images/wiring2.png diff --git a/doc/src/platforms/installing-platform-dependencies.qdocinc b/doc/src/platforms/installing-platform-dependencies.qdocinc new file mode 100644 index 000000000..929f428e0 --- /dev/null +++ b/doc/src/platforms/installing-platform-dependencies.qdocinc @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://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: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +//! [installing platform dependencies] + +Before building applications with Qt for INTEGRITY, +install the correct build tools and other dependencies required +in the 64-bit Linux development host: + +\table 80% +\header \li Requirement \li Description +\row \li INTEGRITY 19.0.13 installation + \li The installation must contain the patches for C++17 support. + Contact \l {https://support.ghs.com/contact/request-support/} + {Green Hills Software}. + \note GHS patches \e 14695, \e 16456, \e 16761, \e 16762 and \e 16917. + +\row \li MULTI IDE and Green Hills Software Compiler (version 2020.1.4 or newer) + \li The Green Hills Software development tools. See + \l {http://www.ghs.com/products/MULTI_IDE.html} {MULTI IDE}. + For licenses, contact \l {https://support.ghs.com/licensing/request-license/} + {Green Hills Software}. + \note GHS patches \e 16398 and \e 17423. + +\row \li QC BSP [ES7] for GHS Integrity 19.0.13-QC + \li The development Qualcomm Board Support Package for Integrity and Snapdragon 8155P Board. + Contact \l {https://support.ghs.com/contact/request-support/} + {Green Hills Software}. + +\row \li QC [ES7] Customer package + \li Additional patches and instructions from Qualcomm. + Contact \l {https://www.qualcomm.com/support} {Qualcomm Support}. +\row + \li CMake 3.18.4 or higher + \li CMake build system is now the default one for Qt 6 building. + See \l {https://cmake.org/documentation/} {CMake Documentation}. +\row + \li Ninja + \li Ninja is a build system with a focus on speed. It is used to build Google + Chrome, parts of Android, LLVM, and can be used in many other projects due to CMake's Ninja backend. + See \l {https://cmake.org/cmake/help/latest/generator/Ninja.html} {Ninja}. +\row + \li Other extra packages (perl, python, etc) required to be installed Host OS + \li See \l {https://wiki.qt.io/Building_Qt_5_from_Git} {Building Requirements}. + \note Perl is not required if you download the Qt sources via + your Qt Account. +\endtable + +//! [installing platform dependencies] +*/ diff --git a/doc/src/platforms/integrity-build-monolith-app-tutorial.qdoc b/doc/src/platforms/integrity-build-monolith-app-tutorial.qdoc new file mode 100644 index 000000000..b3b9d7128 --- /dev/null +++ b/doc/src/platforms/integrity-build-monolith-app-tutorial.qdoc @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://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: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page integrity-monolith-project-tutorial.html + \title Monolith Project Tutorial + \previouspage integrity.html + \nextpage integrity-installing-dependencies.html + + The INTEGRITY applications can be monolith application projects, + dynamic download application projects, or kernelspace projects. The monolith + application is a stand-alone executable that you can run directly on a + target device. + + In this tutorial, we build an INTEGRITY monolith project for + a Qt application. After following the steps in this + tutorial, you will have the Qt for INTEGRITY development environment up and running. + + The tutorial assumes you have the + \l {https://www.lantronix.com/products/sa8155p-automotive-development-platform} + {Qualcomm Snapdragon 8155P}. + + Tutorial content: + \list 1 + \li \l {Installing Platform Dependencies} + \li \l {Building Qt for Qualcomm Snapdragon 8155P Board} + \li \l {Building a monolith project} + \li \l {Flashing a monolith image and running Qt application on the board} + \endlist + +*/ + +/*! + \page integrity-installing-dependencies.html + \title Installing Platform Dependencies + \previouspage integrity-monolith-project-tutorial.html + \nextpage integrity-building-qt-for-8155P-board.html + + \include installing-platform-dependencies.qdocinc installing platform dependencies +*/ + +/*! + \page integrity-building-qt-for-8155P-board.html + \title Building Qt for Qualcomm Snapdragon 8155P Board + \previouspage integrity-installing-dependencies.html + \nextpage integrity-building-monolith.html + + \include integrity-building-qt-8155P.qdocinc building qt for Qualcomm Snapdragon 8155P +*/ + +/*! + \page integrity-building-monolith.html + \title Building a monolith project + \previouspage integrity-building-qt-for-8155P-board.html + \nextpage integrity-flash-image-and-run.html + + \include integrity-building-monolith.qdocinc building monolith +*/ + +/*! + \page integrity-flash-image-and-run.html + \title Flashing a monolith image and running Qt application on the board + \previouspage integrity-building-monolith.html + \nextpage integrity-monolith-project-tutorial.html + + \include integrity-flash-and-run.qdocinc flash and run application +*/ diff --git a/doc/src/platforms/integrity-building-monolith.qdocinc b/doc/src/platforms/integrity-building-monolith.qdocinc new file mode 100644 index 000000000..f1f3314c8 --- /dev/null +++ b/doc/src/platforms/integrity-building-monolith.qdocinc @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://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: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +//! [building monolith] + +This tutorial will guide you through building a monolith INTEGRITY project for a Qt example +application. You can select any Qt example application that uses the +\l {Supported Qt Modules} {Supported Qt modules}. + +Before building the monolith INTEGRITY project, prepare your build environment +by running the \c setEnvironment.sh script. For more information about the script, see +\l {Creating Script for Running Exports}. + +\badcode + source ~/setEnvironment.sh +\endcode + +\section1 Building the Qt application +For building a Qt6 based application using the CMake tool, run the following commands in a terminal: + +\badcode + <Qt installation path>/qtbase/bin/qt-cmake <Qt example application path>/CMakeLists.txt + cmake --build . +\endcode + +Where, \c qt-cmake is the wrapper script that calls CMake to configure your project with appropriate include paths. + +\section1 Building a monolith project + +The board support package (BSP) for the Qualcomm Snapdragon 8155P board provides +a build script to create a set of images for board partitions: +\badcode + /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/build_ghs.sh +\endcode + +Add a Qt application to a build by adding it into the \e {monolith-service.int} file: + +\list 1 + \li Start MULTI Launcher. + \li Select \uicontrol {Components} > \uicontrol {Open Project Manager}. + \li Select the project file \e {default.gpj} + under the \e {/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp} directory: + \image open-project "Select a project" + MULTI application shows a window with a list of project files from the chosen folder. + \li Select \uicontrol {Open}. +\endlist + +In the MULTI Project Manager view, you should see a tree structure of the opened +project. + +Go through the \c default.gpj sub projects: +\list 1 + \li Select \e {target.auto} \e {vmm-adp-no-gvm-sa8155.gpj} > \e {vvm-adp-gvm-ref.gpj} > \e {monolith-service.gpj}. + You can observe the project structure and edit a project's files. + + \li Select \e {monolith-service.int} + \image project-structure "Project tree" + Selected \e {monolith-service.int} file is highlited in the project tree. + + \li Right-click on the file, then select \uicontrol {Edit} from the context menu. + \li Add the following lines at the end of the file. + \badcode + AddressSpace + Name myappname + Filename /path/to/your/app/executable + MemoryPoolSize 0x2700000 + Language C++ + HeapSize 0x90000 + + Task Initial + StackSize 0x80000 + StartIt false + EndTask + Extendedmemorypoolsize 0x300000 + EndAddressSpace + \endcode + \note Replace </path/to/your/app/executable> with a path to your application executable. + + \li Run the build script. + \badcode + bash /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/build_ghs.sh + \endcode +\endlist + +Your monolith project is now ready to be flashed on to the board. +//! [building monolith] +*/ diff --git a/doc/src/platforms/integrity-building-qt-8155P.qdocinc b/doc/src/platforms/integrity-building-qt-8155P.qdocinc new file mode 100644 index 000000000..2a257f507 --- /dev/null +++ b/doc/src/platforms/integrity-building-qt-8155P.qdocinc @@ -0,0 +1,187 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://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: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +//! [building qt for Qualcomm Snapdragon 8155P] + Install INTEGRITY and Qualcomm environment according to the provided + instructions from Green Hills and Qualcomm. + + To set up the development environment for Qt for INTEGRITY, + build Qt from the sources for the Qualcomm Snapdragon 8155P board. Before building Qt, + create a shell script that will set up the build environment. + + \section1 Creating a shell script + + Create a new shell script \e{setEnvironment.sh}, and save it under + your home folder. Add the following export commands to the script: + + \badcode + export PATH=$PATH:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/comp + export INTEGRITY_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/integrity + export INTEGRITY_BSP=platform-sa8155 + export INTEGRITY_BUILD_TARGET=chk + export QC_MULTIMEDIA_INC_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/include/amss/multimedia + export GL_INC_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public + export GL_LIB_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/base:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/display:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/multimedia/graphics:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/rel/libs/platform/:/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt/ + \endcode + + These exports assume you have used the \c /work/ghs/* installation directories + while installing MULTI IDE and INTEGRITY (see + \l {Installing Platform Dependencies}). If you have not used the default + directories, adjust the exported paths accordingly. + + To initialize your build environment, run the following command in a terminal: + + \badcode + source ~/setEnvironment.sh + \endcode + + \note Run this command in your terminal every time you build Qt, + or use the \c qmake or CMake build systems. + + \section1 Getting Qt sources + + You can download the Qt source code from your + \l {https://login.qt.io/login} {Qt Account}. + + You can also get the Qt sources from the Git repo. Qt Wiki has + instructions for getting Qt sources from Git, see + \l {https://wiki.qt.io/Building_Qt_5_from_Git#Getting_the_source_code} {Getting source code}. + + \note Qt sources version must be 6.2 or laler. + \note The init-repository script initializes the Qt 6 repository + and clones various Qt 6 sub-modules (see + \l {https://wiki.qt.io/Building_Qt_5_from_Git#Getting_the_submodule_source_code} + {Getting the submodule source code}). + Qt modules supported by Qt for INTEGRITY are listed in \l {Supported Qt Modules}. + + \section1 Building Qt Desktop for cross-compiling tools usage + + The cross-compiling Qt requires a host build of Qt being available. + During the build, tools such as moc, rcc, qmlcachegen, qsb, + and others, are invoked from there. + For more detailed information please read + \l {https://www.qt.io/blog/qt-6-build-system} {Cross-compiling Qt}. + + Run the following commands for Linux Host build: + \badcode + mkdir hostbuild + cd hostbuild/ + ../qt5/configure -nomake tests -nomake examples -release -developer-build + cmake --build . --parallel 6 + \endcode + + \section1 Creating a toolchain file for INTEGRITY + + To cross-compile a project with CMake, one must specify a toolchain file. + This CMake-language file sets the right values for the platform name, + used compiler/linker, and a whole bunch of other toolchain-specific things. + For Integrity build create toolchain.cmake with follow content: + + \quotefromfile platforms/cmake/toolchain_integrity.cmake + + \printuntil set(OPENGL_opengl_LIBRARY ${TARGET_ROOT_PATH}/libeglmegapack.a) + + \section1 Creating EGL pack + + For CMake find EGL module to properly detect EGL, repack the needed egl libraries into one archive called libeglmegapack: + + \badcode + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libESXEGL_Adreno.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libadreno_utils.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libESXGLESv2_Adreno.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libadreno_utils.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libGSLUser.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libOSUser.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/graphics/libpanel.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/integrity/libs/arm64/chk/libivfs.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/platform/libpmem.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/platform/libtzbsp.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/integrity/libs/arm64/chk/libpaged_alloc.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/opengl/esx/build/integrity/prebuilt/libglnext-llvm.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/multimedia/display/libopenwfd.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libplanedef.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/platform/liblogger.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/librfs_client.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/integrity/libs/arm64/chk/libshm_client.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libmmosalrfs.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libmmosalfile.a + ar -x ../hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/libs/base/libOSAbstraction.a + ar r libeglmegapack.a *.o + rm *.o + \endcode + + Copy the resulting \c libeglmegapack.a to your installation directory \c hlos_dev_boot. + + \section1 Configuring Qt for INTEGRITY + + Configure Qt for the Qualcomm Snapdragon 8155P board using these following commands: + + \badcode + cd <Qt installation directory> + cmake ../qt5/ -DQT_HOST_PATH=/work/ghs/hostbuild/qtbase + -DCMAKE_TOOLCHAIN_FILE=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/toolchain_integrity.cmake + -DQT_QMAKE_TARGET_MKSPEC=devices/integrity-armv8-SA8155P -DBUILD_qtdoc=OFF + -DBUILD_qttranslations=OFF -DFEATURE_printdialog=OFF --debug-trycompile -DFEATURE_dbus=OFF + -GNinja -DUNIX=ON + -DEGL_LIBRARY=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/libeglmegapack.a + -DEGL_INCLUDE_DIR=/work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/AMSS/multimedia/graphics/include/public + -DFEATURE_dnslookup=OFF -DFEATURE_glib=OFF -DFEATURE_libudev=OFF -DFEATURE_system_pcre2=OFF -DFEATURE_sql_mysql=OFF + \endcode + + \note INTEGRITY supports only static Qt builds. + \note \c QT_HOST_PATH variable introduced in Qt 6. + When cross-compiling, this must be set to the install location of Qt for the host platform. + It is used to locate tools to be run on the host (moc, rcc, androiddeployqt, and so on). + + \section1 Building Qt for INTEGRITY + + Build Qt by calling \c cmake in the terminal. You can run \c cmake with as + many cores on your host machine as you desire. In our example we use six cores: + + \badcode + cmake --build . --parallel 6 + \endcode + + \target installing-qt-for-sa8155 + \section1 Installing Qt + + If you have not used the configure option \c {-prefix $PWD/qtbase} in \l {Configuring Qt}, + run the following commands in a terminal: + + \badcode + cd <Qt installation directory> + cmake --install . + \endcode + + If you have used the configure option \c {-prefix $PWD/qtbase}, + you can use Qt from the build directory, without running the + \c {cmake install} command. + + Qt is now configured and built for the sa8155 board. +//! [building qt for Qualcomm Snapdragon 8155P] +*/ diff --git a/doc/src/platforms/integrity-flash-and-run.qdocinc b/doc/src/platforms/integrity-flash-and-run.qdocinc new file mode 100644 index 000000000..775312354 --- /dev/null +++ b/doc/src/platforms/integrity-flash-and-run.qdocinc @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://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: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +//! [flash and run application] +\section1 Qualcomm Snapdragon 8155P Board + There is Qualcomm Snapdragon 8155P Board top view. +\image sa8155p + +\section1 Setup the wiring + There are several connectors are needed to be connected to the PC + for flashing and running applications on the board: + + \list 1 + \li Power connector + \li Micro USB is the FT serial console output + \li Normal (male male USB-A - USB A/USB C cable) USB is the QFIL/Fastboot port + \li DisplayPort cable is for Graphical output + \endlist + \image wiring1 + \caption There is a wiring configuration example: power is ON, + normal male USB-A is connected for flashing images, + DisplayPort cable is conected for Graphical output. + \image wiring2 + \caption Micro USB is connected for using the FT serial console. + +\section1 Switch to Fastboot Mode + To flash images on Qualcomm Snapdragon 8155P board install + Fastboot Tool on Host OS. + See, \l {https://developer.android.com/studio/releases/platform-tools} {Fastboot Tool} + + Before flashing switch the board to the Fastboot Mode: + \list 1 + \li Open serial connection with the board: + \badcode + putty /dev/ttyUSB0 -serial -sercfg 115200,8,1 + \endcode + \li There are 2 options: + + - On the device, hold the volume key and power cycle the device. + + - Or press down arrow on the UART shell and power cycle the device. + + \li If the board switches to Fastboot Mode successfully, + it prints following console output: + \image fastboot-mode + + Another way to check the board is in Fastboot Mode is to run the command: + \badcode + fastboot devices + \endcode + + \endlist + +\section1 Flash images + The build script produces set of images for board partitions. + \badcode + boot.img, perf_dyn.img, misc_dyn.img, abl.elf, etc + \endcode + + After switching to Fastboot Mode images can be flashed to the board. + + \list 1 + \li When setting up for the first time, follow the images flashing procedure from GHS + \e ES7_FinalCopy/ES7_customer_package_readme.docx: + + \badcode + cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/bin/target + fastboot flash abl abl.elf + fastboot flash boot vmm-adp-gvm-sa8155/boot.img + fastboot flash perf_dyn_a vmm-adp-gvm-sa8155/perf_dyn.img + fastboot flash misc_dyn_a vmm-adp-gvm-sa8155/misc_dyn.img + + cd /work/ghs/sa8155/es7/es7_dev_env/ES7_FinalCopy/Images/sa8155_hyp + fastboot flash hyp_a hyp.mbn + fastboot flash tz tz.mbn + fastboot flash apdp apdp.mbn + + cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/bin/target/fs + fastboot flash gh_sys sys.img + fastboot flash gh_persist ghs_persist.img + fastboot flash gh_test ghs_test.img.sparse + + cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/prebuilt_NHLOS/adsp/asic_8150 + fastboot flash adsp adsp.img + + cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/lagvm/LINUX/android/out/target/product/msmnile_gvmgh + fastboot flash vendor vendor.img + \endcode + \note \e ES7_FinalCopy/ES7_customer_package_readme.docx is a part of QC [ES7] Customer package. + Contact \l {https://www.qualcomm.com/support} {Qualcomm Support} for more information. + + \li If this is not the first time flashing, then the monolith part should be flashed: + \badcode + cd /work/ghs/sa8155/es7/es7_dev_env/hlos_dev_boot/apps/ghs_apps_proc/qc_bsp/out/chk/bin/target + fastboot flash boot vmm-adp-gvm-sa8155/boot.img + \endcode + \li Restart the board. + \endlist + +\section1 Run Qt application on the board + \list 1 + \li Open serial console: + \badcode + putty /dev/ttyUSB0 -serial -sercfg 115200,8,1 + \endcode + \li Execute the command: + \badcode + rt <application name> Initial + \endcode + \li Run Qt application example: + \image qml-application "QML application" + Qt application is running on Qualcomm Snapdragon 8155P Board and displayed on the connected screen. + \endlist +//! [flash and run application] +*/ diff --git a/doc/src/platforms/integrity.qdoc b/doc/src/platforms/integrity.qdoc new file mode 100644 index 000000000..e08344850 --- /dev/null +++ b/doc/src/platforms/integrity.qdoc @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://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 https://www.qt.io/terms-conditions. For further +** information use the contact form at https://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: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \page integrity.html + \title Qt for INTEGRITY + \keyword INTEGRITY + \ingroup supportedplatform + \brief Platform support for INTEGRITY. + + From Qt 5.9 onwards, the Green Hills Software + \l {http://www.ghs.com/products/rtos/integrity.html} {INTEGRITY} + Real-Time Operating System (RTOS) is a supported platform. + + The INTEGRITY RTOS is widely used in systems where safety and security are critical. + Especially in the automotive industry, both Qt and the INTEGRITY RTOS can be + used in conjunction with the instrument clusters and infotainment systems. + + With Qt for INTEGRITY you can build and develop applications for the + INTEGRITY RTOS. The development environment includes your target device and Qt sources + that you need to build for your target device. + See \l {Supported Development Hosts and Boards} for detailed information + about the supported development environment. + + Qt for INTEGRITY has a tutorial that helps you learn how to: + \list + \li Set up a development environment for the Qualcomm Snapdragon 8155P board + \li Build an application + \li Prepare the Qualcomm Snapdragon 8155P board to run your application + \endlist + + See \l {Monolith Project Tutorial}. + + \section1 Supported Qt Modules + + Qt for INTEGRITY has been tested to support the following Qt modules: + \list + \li Qt Core + \li Qt Network + \li Qt GUI + \li Qt Quick + \li Qt QML + \li Qt Image Formats + \li Qt Widgets + \li Qt SVG + \li Qt Remote Objects + \endlist + + \note Other Qt modules may work with Qt for INTEGRITY, but we cannot guarantee that. + + \section1 Supported Development Hosts and Boards + + Qt for INTEGRITY can be built on the following hosts: + \list + \li 64-bit Linux distributions + \endlist + + Qt 6 for INTEGRITY supports building and developing applications for the + following development board: + \list + \li \l {https://www.lantronix.com/products/sa8155p-automotive-development-platform} + {Qualcomm Snapdragon 8155P} + \endlist +*/ diff --git a/doc/src/platforms/supported-platforms.qdocinc b/doc/src/platforms/supported-platforms.qdocinc index dc8fa23a6..a89761527 100644 --- a/doc/src/platforms/supported-platforms.qdocinc +++ b/doc/src/platforms/supported-platforms.qdocinc @@ -121,6 +121,16 @@ cross-compilation of Qt for Embedded Linux devices. For further embedded platform support, please consult the \l{http://doc.qt.io/QtForDeviceCreation}{Qt for Device Creation} documentation. +\section2 \l{Qt for Integrity}{RTOS} + +\table 80% + \header \li Operating System \li Architecture \li Compiler \li Notes + \row \li INTEGRITY 19.0.13 + \li \c arm64 + \li GHS compiler version 2020.1.4 or newer + \li +\endtable + //! [embedded] //! [all] |