diff options
author | Topi Reinio <topi.reinio@digia.com> | 2013-04-25 11:24:35 +0200 |
---|---|---|
committer | Topi Reiniƶ <topi.reinio@digia.com> | 2013-04-26 14:02:26 +0300 |
commit | 15bb09549f57de1f1dc0dc29104261e82d949c22 (patch) | |
tree | de3924c2cb861ee26ebd58f0a930fad6d6cfa3e1 /src | |
parent | 32e01c765ee47efbaab25e121481dc267c42e78f (diff) |
Doc: Initial documentation set for B2Qt
Contains introduction, getting started, setting up development
hardware, supported platforms and troubleshooting sections.
Task-number: QTRD-1956
Change-Id: Ib14d2314f35ec929b4f62293b5efdb5a9c5ebdb4
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/doc/config/b2qt.qdocconf | 30 | ||||
-rw-r--r-- | src/doc/config/html-offline.qdocconf | 34 | ||||
-rw-r--r-- | src/doc/config/template/style/offline.css | 667 | ||||
-rw-r--r-- | src/doc/doc.pro | 3 | ||||
-rw-r--r-- | src/doc/images/b2qt-vs-qt-for-android.png | bin | 0 -> 24526 bytes | |||
-rw-r--r-- | src/doc/images/qtcreator-run.png | bin | 0 -> 619 bytes | |||
-rw-r--r-- | src/doc/src/b2qt.qdoc | 578 | ||||
-rw-r--r-- | src/src.pro | 3 |
8 files changed, 1314 insertions, 1 deletions
diff --git a/src/doc/config/b2qt.qdocconf b/src/doc/config/b2qt.qdocconf new file mode 100644 index 0000000..d64e3a3 --- /dev/null +++ b/src/doc/config/b2qt.qdocconf @@ -0,0 +1,30 @@ +include(html-offline.qdocconf) + +naturallanguage = en_US +outputencoding = UTF-8 +sourceencoding = UTF-8 + +project = B2Qt +description = Boot to Qt Technology Preview Documentation +version = tp1 + +sourcedirs = ../src +imagedirs = ../images + +sources.fileextensions = "*.qdoc" + +qhp.projects = B2Qt + +qhp.B2Qt.file = b2qt.qhp +qhp.B2Qt.namespace = com.digia.b2qt.tp1 +qhp.B2Qt.virtualFolder = b2qt +qhp.B2Qt.indexTitle = Boot to Qt Technology Preview +qhp.B2Qt.indexRoot = + +qhp.B2Qt.subprojects = manual +qhp.B2Qt.subprojects.manual.title = Boot to Qt Introduction +qhp.B2Qt.subprojects.manual.indexTitle = Boot to Qt Introduction +qhp.B2Qt.subprojects.manual.type = manual + +macro.B2Q = "Boot to Qt" + diff --git a/src/doc/config/html-offline.qdocconf b/src/doc/config/html-offline.qdocconf new file mode 100644 index 0000000..2bbce93 --- /dev/null +++ b/src/doc/config/html-offline.qdocconf @@ -0,0 +1,34 @@ +HTML.nobreadcrumbs = "true" + +HTML.stylesheets = template/style/offline.css + +qhp.extraFiles += style/offline.css + +HTML.headerstyles = \ + " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/offline.css\" />\n" + +HTML.endheader = \ + "</head>\n" \ + "<body>\n" \ + "<div class=\"header\" id=\"qtdocheader\"></div>\n"\ + "<div class=\"content\">\n" \ + "<div class=\"line\">\n" \ + "<div class=\"content mainContent\">\n" \ + +HTML.footer = \ + "</div>\n" \ + "</div>\n" \ + "</div>\n" \ + "<div class=\"footer\">\n" \ + " <p>\n" \ + " <acronym title=\"Copyright\">©</acronym> 2013 Digia Plc and/or its subsidiaries.</p>\n" \ + " <p>\n" \ + " Licensees holding valid Qt Commercial licenses may use this document in accordance\n" \ + " with the Qt Commercial License Agreement provided with the Software or, alternatively,\n" \ + " in accordance with the terms contained in a written agreement between you and Digia.</p>\n" \ + " <p>\n" \ + " Digia, Qt and their respective logos are trademarks of Digia Plc \n" \ + " in Finland and/or other countries worldwide. All other trademarks are property\n" \ + " of their respective owners. <a title=\"Privacy Policy\"\n" \ + " href=\"http://en.gitorious.org/privacy_policy/\">Privacy Policy</a></p>\n" \ + "</div>\n" \ diff --git a/src/doc/config/template/style/offline.css b/src/doc/config/template/style/offline.css new file mode 100644 index 0000000..6753cba --- /dev/null +++ b/src/doc/config/template/style/offline.css @@ -0,0 +1,667 @@ +body{ +font: normal 400 14px/1.2 Arial; +margin-top:85px; +font-family: Arial, Helvetica; +color:#313131; +text-align:justify; +margin-left:5px; +margin-right:5px; +} + +p { +line-height: 20px; +} +img{ +-moz-box-shadow: 3px 3px 3px #ccc; +-webkit-box-shadow: 3px 3px 3px #ccc; +box-shadow: 3px 3px 3px #ccc; +border:#8E8D8D 2px solid; +margin-left:0px; +max-width: 800px; +height: auto +} + +.content{} + +.descr{ +margin-top:35px; +/*max-width: 75%;*/ +margin-left:5px; +text-align:justify; +vertical-align:top; +} + +.name{ +max-width: 75%; +font-weight:100; +} + +tt{ +text-align:left;} + +/* +----------- +links +----------- +*/ + +a:link{ +color: #007330; +text-decoration: none; +text-align:left; +} + +a:hover{ +color: #44a51c; +text-align:left; +} + +a:visited{ +color: #007330; +text-align:left; +} + +a:visited:hover{ +color: #44a51c; +text-align:left; +} + +/* +----------- +offline viewing: HTML links display an icon +----------- +*/ +a[href*="http://"], a[href*="ftp://"],a[href*="https://"] +{ +text-decoration: none; +background-image:url(../images/ico_out.png); +background-repeat:no-repeat; +background-position:left; +padding-left:20px; +text-align:left; +} + +.flags{ +text-decoration:none; +text-height:24px; +} + +/* +------------------------------- +NOTE styles +------------------------------- +*/ +.notetitle, .tiptitle, .fastpathtitle{ +font-weight:bold; +} + +.attentiontitle,.cautiontitle,.dangertitle,.importanttitle,.remembertitle,.restrictiontitle{ +font-weight:bold; +} + +.note,.tip,.fastpath{ +background: #F2F2F2 url(../images/ico_note.png); +background-repeat: no-repeat; +background-position: top left; +padding:5px; +padding-left:40px; +padding-bottom:10px; +border:#999 1px dotted; +color:#666666; +margin:5px; +} + +.attention,.caution,.danger,.important,.remember,.restriction{ +background: #F2F2F2 url(../images/ico_note_attention.png); +background-repeat:no-repeat; +background-position:top left; +padding:5px; +padding-left:40px; +padding-bottom:10px; +border:#999 1px dotted; +color:#666666; +margin:5px; +} + +/* +------------------------------- +Top navigation +------------------------------- +*/ + +.qtref{ +display: block; +position: relative; +height:15px; +z-index: 1; +font-size:11px; +padding-right:10px; +float:right; +} + +.naviNextPrevious{ +clear: both; +display: block; +position: relative; +text-align: right; +top: -47px; +float:right; +height:20px; +z-index:1; +padding-right:10px; +padding-top:2px; +vertical-align:top; +margin:0px; +} + + +.naviNextPrevious > a:first-child{ +background-image:url(../images/btn_prev.png); +background-repeat:no-repeat; +background-position:left; +padding-left:20px; +height:20px; +padding-left:20px; +} + +.naviNextPrevious > a:last-child{ +background-image:url(../images/btn_next.png); +background-repeat:no-repeat; +background-position:right; +padding-right:20px; +height:20px; +margin-left:30px; +} +/* +----------- +footer and license +----------- +*/ +.footer{ +text-align:center +} + +/* table of content +no display +*/ + +/* +----------- +headers +----------- +*/ + + +@media screen{ +.title{ +color:#313131; +font-size: 18px; +font-weight: normal; +left: 0; +padding-bottom: 20px; +padding-left: 10px; +padding-top: 20px; +position: absolute; +right: 0; +top: 0; +background-color:#E6E6E6; +border-bottom: 1px #CCC solid; +border-top: 2px #CCC solid; +font-weight:bold; +margin-left:0px; +margin-right:0px; +} +} + +h1 { +margin: 0; +} + +h2, p.h2 { +font: 500 16px/1.2 Arial; +font-weight:100; +background-color:#F2F3F4; +padding:4px; +margin-bottom:30px; +margin-top:30px; +border-top:#E0E0DE 1px solid; +border-bottom: #E0E0DE 1px solid; +max-width: 99%; +overflow: hidden; +} + +h3{ + +font: 500 14px/1.2 Arial; +font-weight:100; +text-decoration:underline; +margin-bottom:30px; +margin-top:30px; +} + +h3.fn,span.fn{ +border-width: 1px; +border-style: solid; +border-color: #E6E6E6; +-moz-border-radius: 7px 7px 7px 7px; +-webkit-border-radius: 7px 7px 7px 7px; +border-radius: 7px 7px 7px 7px; +background-color: #F6F6F6; +word-spacing: 3px; +padding: 5px 5px; +text-decoration:none; +font-weight:bold; +max-width:75%; +font-size:14px; +margin:0px; +margin-top:45px; + +} + +.name{ +color:#1A1A1A; +} +.type{ +color:#808080; +} + + + +@media print { +.title { +color:#0066CB; +font-family:Arial, Helvetica; +font-size: 32px; +font-weight: normal; +left: 0; +position: absolute; +right: 0; +top: 0; +} +} + + +/* +----------------- +table styles +----------------- +*/ +.table img { +border:none; +margin-left:0px; +-moz-box-shadow:0px 0px 0px #fff; +-webkit-box-shadow: 0px 0px 0px #fff; +box-shadow: 0px 0px 0px #fff; +} + +/* table with border alternative colors*/ + + table,pre{ +-moz-border-radius: 7px 7px 7px 7px; +-webkit-border-radius: 7px 7px 7px 7px; + border-radius: 7px 7px 7px 7px; +background-color: #F6F6F6; +border: 1px solid #E6E6E6; +border-collapse: separate; +margin-bottom: 25px; +margin-left: 15px; +font-size: 12px; +line-height: 1.2; +} + + +table th{ +text-align:left; +padding-left:20px; +} + +table td { +padding: 3px 15px 3px 20px; +border-bottom:#CCC dotted 1px; +} +table p { margin:0px;} + +table tr.even { +background-color: white; +color: #66666E; +} + +table tr.odd { +background-color: #F6F6F6; +color: #66666E; +} + + +table thead { +text-align:left; +padding-left:20px; +background-color:#e1e0e0; +border-left:none; +border-right:none; +} + +table thead th { +padding-top:5px; +padding-left:10px; +padding-bottom:5px; +border-bottom: 2px solid #D1D1D1; +padding-right:10px; +} + + +/* table bodless & white*/ + +.borderless { +border-radius: 0px 0px 0px 0px; +background-color: #fff; +border: 1px solid #fff; +} + +.borderless tr { +background-color: #FFF; +color: #66666E; +} + +.borderless td { +border:none; +border-bottom:#fff dotted 1px; +} + +/* +----------- +List +----------- +*/ + +ul{ +padding-bottom:2px; +} + +li { +margin-bottom: 10px; +padding-left: 8px; +list-style:outside; +list-style-type:square; +text-align:left; +} + + +ol{ +margin:10px; +padding:0; +} + +ol > li{ +margin-left: 30px; +padding-left:8px; +list-style:decimal; +} + +.centerAlign{ +text-align: left; +} + +.cpp{ +display: block; +margin: 10px; +overflow: auto; +padding: 20px 20px 20px 20px; +} + +.js{ +display: block; +margin: 10px; +overflow: auto; +padding: 20px 20px 20px 20px; +} + +.footer{ +margin-top: 50px; +padding-left:5px; +margin-bottom: 10px; +font-size:10px; +border-top: 1px solid #999; +padding-top:11px; +} + +.footerNavi{ +width:auto; +text-align:right; +margin-top:50px; +z-index:1; +} + +.memItemLeft{ +padding-right: 3px; +} + +.memItemRight{ +padding: 3px 15px 3px 0; +} + +.qml{ +display: block; +margin: 10; +overflow: auto; +padding: 20px 20px 20px 20px; +} + +.qmldefault{ +padding-left: 5px; +float: right; +color: red; +} + +.qmlreadonly{ +padding-left: 5px; +float: right; +color: #254117; +} + +.rightAlign{ +padding: 3px 5px 3px 10px; +text-align: right; +} + +.qmldoc { +margin-left: 15px; +} +/* +----------- +Content table +----------- +*/ + +@media print{ +.toc { +float: right; +clear: right; +padding-bottom: 10px; +padding-top: 50px; +width: 100%; +background-image:url(../images/bgrContent.png); +background-position:top; +background-repeat:no-repeat; +} +} + +@media screen{ +.toc{ +float:right; +clear: right; +vertical-align:top; +-moz-border-radius: 7px 7px 7px 7px; +-webkit-border-radius: 7px 7px 7px 7px; +border-radius: 7px 7px 7px 7px; + background:#FFF url(../images/bgrContent.png); +background-position:top; +background-repeat:repeat-x; +border: 1px solid #E6E6E6; +padding-left:5px; +padding-bottom:10px; +height: auto; +width: 200px; +text-align:left; +margin-left:20px; +} +} + +.toc h3{ +text-decoration:none; +} + +.toc h3{font: 500 14px/1.2 Arial; +font-weight:100; +padding:0px; +margin:0px; +padding-top:5px; +padding-left:5px; +} + + +.toc ul{ +padding-left:10px; +padding-right:5px; +} + +.toc ul li{ +margin-left:15px; +list-style-image:url(../images/bullet_dn.png); +marker-offset: 0px; +margin-bottom:8px; +padding-left:0px; +} + +.toc .level1{ +border:none;} + +.toc .level2{ +border:none; +margin-left: 25px; +} + +.level3{ +border:none; +margin-left: 30px; +} + +.clearfix{ +clear:both;} + +/* start index box */ +.indexbox +{ +width: 100%; +display:inline-block; +} + +.indexboxcont +{ +display: block; + +} + +.indexboxcont .section +{ +display: inline-block; +width: 49%; +*width:42%; +_width:42%; +padding:0 2% 0 1%; +vertical-align:top; +} + +.indexboxcont .indexIcon +{ +width: 11%; +*width:18%; +_width:18%; +overflow:hidden; +} + +.indexboxcont .section { + float: left; +} + +.indexboxcont .section p +{ +padding-top: 20px; +padding-bottom: 20px; +} +.indexboxcont .sectionlist +{ +display: inline-block; +vertical-align:top; +width: 32.5%; +padding: 0; +} +.indexboxcont .sectionlist ul +{ +margin-bottom: 20px; +} + +.indexboxcont .sectionlist ul li +{ +line-height: 1.5; +} + +.content .indexboxcont li +{ +font: normal bold 13px/1 Verdana; +} + +.content .normallist li +{ +font: normal 13px/1 Verdana; +} + +.indexbox .indexIcon { +width: 11%; +} + +.indexbox .indexIcon span +{ +display: block; +} + +.indexboxcont:after +{ +content: "."; +display: block; +height: 0; +clear: both; +visibility: hidden; +} + +/* +----------- +Landing page +----------- +*/ +.col-group { + white-space: nowrap; + vertical-align: top; +} + +.col-1 { + display: inline-block; + white-space: normal; + width: 70%; + height: 100%; + float: left; +} + +.col-1 h1 { + margin: 20px 0 0 0; +} + +.col-2 { + display: inline-block; + white-space: normal; + width: 25%; + margin: 0 0 0 50px; +} + +.sectionlist { + width: 100% !important; +} diff --git a/src/doc/doc.pro b/src/doc/doc.pro new file mode 100644 index 0000000..36dc209 --- /dev/null +++ b/src/doc/doc.pro @@ -0,0 +1,3 @@ +TEMPLATE = aux +QMAKE_DOCS = $$PWD/config/b2qt.qdocconf +QMAKE_DOCS_OUTPUTDIR = $$OUT_PWD/b2qt diff --git a/src/doc/images/b2qt-vs-qt-for-android.png b/src/doc/images/b2qt-vs-qt-for-android.png Binary files differnew file mode 100644 index 0000000..60ca0a8 --- /dev/null +++ b/src/doc/images/b2qt-vs-qt-for-android.png diff --git a/src/doc/images/qtcreator-run.png b/src/doc/images/qtcreator-run.png Binary files differnew file mode 100644 index 0000000..a4c2436 --- /dev/null +++ b/src/doc/images/qtcreator-run.png diff --git a/src/doc/src/b2qt.qdoc b/src/doc/src/b2qt.qdoc new file mode 100644 index 0000000..c558e95 --- /dev/null +++ b/src/doc/src/b2qt.qdoc @@ -0,0 +1,578 @@ +/************************************************************************** +** +** Copyright (c) 2013 Digia Plc and/or its subsidiary(-ies). +** +** Licensees holding valid Qt Commercial licenses may use this document in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in a +** written agreement between you and Digia. +** +**************************************************************************/ + +/*! + \contentspage{index.html}{Boot to Qt} + \page index.html + \nextpage b2qt-getting-started.html + \title Boot to Qt Introduction + + + \list + \li \b {\l{Getting Started with Boot to Qt}} + \list + \li \l{Installation} + \li \l{Preparing for Development} + \li \l{Building and Running an Example on Hardware} + \endlist + \li \b {\l{Supported Platforms}} + \li \b {\l{Troubleshooting}} + \endlist + + + \section1 What is \B2Q? + + \b{\B2Q} is a light-weight UI stack for embedded linux, based on the + \l{http://qt.digia.com/}{Qt Framework} by Digia. \B2Q places Qt on top of + an Android kernel/baselayer and offers an elegant means of developing + beautiful and performant embedded devices. + + \B2Q runs on top of Android 4.0/4.1 baselayers and has been tested and + verified on a number of different hardware configurations. + + + \section1 About Qt + + \l{http://qt.digia.com/}{Qt} is a full development framework with tools + designed to streamline the creation of applications and user interfaces + for desktop, embedded and mobile platforms. + + \list + \li \b{Qt Framework} - intuitive APIs for C++ + and CSS/JavaScript-like programming with + \b{Qt Quick} for rapid UI + creation + \li \b{Qt Creator IDE} - powerful cross-platform integrated development + environment, including UI designer tools and on-device debugging + \li \b{Tools and toolchains} - internationalization support, embedded + toolchains and more. + \endlist + + With Qt, you can reuse code efficiently to target multiple platforms + with one code base. The modular C++ class library and developer tools + enables developers to create applications for one platform and easily + build and run to deploy also on other platforms. + + + \section1 \B2Q vs Qt for Android + + \image b2qt-vs-qt-for-android.png + + \b{Qt for Android} is a port of the Qt Framework to be used for application + development on the Android platform. Its purpose is to enable development + of applications that can run on Android devices. For developers writing + applications for the Android ecosystem, Qt for Android is the right choice. + + \b{\B2Q} tries to strip down the Android stack to the bare minimum, relying + only on basic Linux features. The majority of the Android stack, such as + \e{SurfaceFlinger} or \e{DalvikVM} is not running in \B2Q, resulting in + faster startup times, lower memory consumption and overall better + performance. + + + \section1 \B2Q SDK + + \B2Q SDK provides a complete software development package for + creating applications on embedded linux devices. It comes with Qt Creator + IDE with preconfigured build targets for hardware platforms + as well as an \l{Emulator}{emulator}. +*/ + +/*! + \page b2qt-getting-started.html + \title Getting Started with Boot to Qt + \previouspage index.html + \nextpage b2qt-installation.html + + \B2Q SDK provides you all the tools to start developing embedded + linux devices using Qt and Qt Quick. + + \B2Q runs on top of Android 4.0 based kernels. For the technology + preview release, following devices are in focus and tested to + work: + + \list + \li \l{http://www.google.com/nexus/7/specs/}{Google Nexus 7} + \li \l{http://beagleboard.org/hardware-xM}{BeagleBoard-xM} + \li \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/}{Boundary Devices i.MX 6} + \endlist + + In addition, \B2Q comes with an emulator to help you test your + applications without deploying to hardware. + + + \section1 Requirements + + \b {Target Hardware Requirements} + + Rough minimal requirements for running \B2Q are: + \list + \li 256Mb of RAM + \li 500Mhz CPU, 1Ghz preferred for 60 FPS velvet-smooth UI + \li OpenGL ES 2.0 support + \li Android 4.0+ compatible hardware + \endlist + + + \b {\B2Q SDK Requirements} + + A 64-bit Linux system is required for \B2Q development. Instructions + in this documentation assume Ubuntu Linux 64-bit 12.04 LTS or later. + + To install and use \B2Q SDK, the following things are required: + + \list + \li 64-bit Linux system (for example, \l{http://www.ubuntu.com/download}{Ubuntu}). + \li C/C++ build essentials and support for running 32-bit code. + \li \l{https://www.virtualbox.org/}{VirtualBox} virtualization software. + \endlist + + + \section1 Installing 32-bit Support Libraries + + Some of the build tools in \B2Q are 32-bit programs, and they require + that support libraries for running 32-bit code are present in the + system. To install the required packages in Ubuntu, use + + \code + sudo apt-get install g++-multilib:i386 + \endcode + + + \section1 Installing VirtualBox + + Emulator in \B2Q relies on VirtualBox virtualization software. You can + download it from \l{https://www.virtualbox.org/wiki/Linux_Downloads} or + install it from the command line. In Ubuntu: + + \code + sudo apt-get install virtualbox + \endcode + + \b{Configuring VirtualBox} + + Open VirtualBox network settings: Select \b{File > Preferences...} + and click on the \b{Network} tab. Create a new network named + \e{vboxnet0} and edit its properties: + + \list + \li Change IPv4 address to 192.168.56.1 and IPv4 network mask to 255.255.255.0. + \li Check \b{Enable Server} in \b{DCHP Server} tab. + \li Change server address to 192.168.56.1. + \li Change both the lower and upper address bounds to 192.168.56.101. + \endlist +*/ + +/*! + \page b2qt-installation.html + \title Installation + \previouspage b2qt-getting-started.html + \nextpage b2qt-preparing-for-development.html + + Before proceeding to install the \B2Q SDK, make sure that your development + system meets the \l{requirements}. + + After downloading the \B2Q SDK binary installer, make sure it + is executable either by + + \list + \li Using \c{chmod +x <filename>} command, or + \li Right-clicking on the file, selecting \b{Properties}, and checking + \b{Allow executing file as program} on the \b{Permissions} tab. + \endlist + + Run the installer and follow its instructions. + + After the installation has finished, continue with \l{Preparing for Development}. +*/ + +/*! + \page b2qt-preparing-for-development.html + \title Preparing for Development + \previouspage b2qt-installation.html + \nextpage b2qt-preparing-hardware-nexus-7.html + + After installing the \B2Q SDK, the hardware devices need + to be prepared before they can be used for application + deployment from the Qt Creator. + + \section1 Setting up Access to Development Hardware via USB + + On Ubuntu Linux you have to grant your development user access to + plugged in devices. This is done by creating a new \e{udev} rule that + allows access to the device via USB. In order to do that, you need to + find out the USB ID of your device. + + First, power up the device and connect it to your development + machine with a USB cable. Then, look for a line listing your + device in the output generated by the \c{lsusb} command. + + For example: + + \code + $ lsusb + ... + ... + Bus 001 Device 008: ID 18d1:9018 Google Inc. + ... + \endcode + + Take note of the numbers stated after \c{ID}, and replace them in the + following shell command: + + \code + echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="9018", TAG+="udev-acl"' | sudo tee -a /etc/udev/rules.d/70-boot2qt.rules + \endcode + + + \section1 Preparing Hardware for Running \B2Q + + Before deploying and testing your Qt application on hardware, it needs + to be flashed with an image that contains the \B2Q stack. These steps + vary from device to device - follow the instructions specific to + your device: + + \list + \li \l{Preparing Nexus 7 for Development} + \li \l{Preparing BeagleBoard-xM for Development} + \li \l{Preparing i.MX 6 for Development} + \endlist + + + \section1 Configuring a Device Kit in Qt Creator + + After the hardware has been prepared, there is one final step required + to set up the development tools in Qt Creator for your device. + + A separate device \b{Kit} needs to be cloned for each hardware device + you want to develop for. + + To do so, connect your device to your computer via USB and launch + Qt Creator (\B2Q IDE). Then, + + \list 1 + \li Go to \b{Tools > Options > Build & Run > Kits} + \li Select one of the predefined Kits starting with \e{Boot2QtSDK...} + that matches the type of your device. + \li Click \b{Clone}. + \li (Optional) Change the name to a shorter one, for example, \e{MyBeagleBoard}. + \li Select the correct device in the \b{Device} combobox. + \li Click \b{Ok}. + \endlist + + You are now ready to start developing for your device! + + See \l{Building and Running an Example on Hardware} +*/ + +/*! + \page b2qt-preparing-hardware-nexus-7.html + \title Preparing Nexus 7 for Development + \previouspage b2qt-preparing-for-development.html + \nextpage b2qt-preparing-hardware-beagleboard.html + + When using a \l{http://www.google.com/nexus/7/specs/}{Nexus 7} as a + development device, following steps are required to prepare it for + \B2Q. + + \section1 Unlocking Nexus 7 + + The Nexus 7 has to be unlocked to allow custom software to be installed. + This procedure can be done directly from the device UI, and needs to be + done only once. + + First, go to \b{Settings > Developer Options}, tap the \b{Build Number} + entry seven times. You should see a message \e{"You are now a developer!"} + displayed. + + In \b{Developer Options}, also enable \b{USB Debugging}. + + \note When running Android 4.2: If you don't see \b{Developer Options} + directly under \b{Settings}, go to \b{About Tablet}. + + Finally, connect your Nexus 7 to your computer via USB, and run + the following command: + + \code + <SDK_INSTALL_DIR>/targets/android-utils/bin/fastboot oem unlock + \endcode + + + \section1 Updating a Nexus 7 with \B2Q Images + + \note \b{It is important that the steps in this section are repeated + every time after updating the \B2Q SDK.} + + An unlocked Nexus 7 device can now be updated with a \B2Q image. + + To do so, connect your Nexus 7 to your computer via USB, and run the + commands + + \code + cd <SDK_INSTALL_DIR>/targets/ + ./android-utils/bin/adb reboot bootloader + \endcode + + The device will reboot into \e{fastboot} mode. + + To re-flash the \e{boot}, \e{system}, and \e{userdata} partitions on the + device, use the following commands in the order they are listed: + + \code + ./android-utils/bin/fastboot flash boot nexus7/images/boot.img + ./android-utils/bin/fastboot flash system nexus7/images/system.img + ./android-utils/bin/fastboot flash userdata nexus7/images/data.img + \endcode + + Once the flashing is completed successfully, reboot the device: + + \code + ./android-utils/bin/fastboot reboot + \endcode + + + \section1 Installing Proprietary Graphics Drivers + + Download the proprietary graphics drivers for your Nexus 7 + \l{https://developers.google.com/android/nexus/drivers#grouperjzo54k}{here}. + + \note Make sure you have read the license terms at the beginning of the + driver download page. + + Select the link in the \b{Graphics} row from the table + \e{"Nexus 7 (Wi-Fi) binaries for Android 4.1.2"}, download and save the file + to the installation directory of the \B2Q SDK. + + Make sure your Nexus 7 is connected to the computer via USB. + + Then, follow these steps to update the Nexus 7: + + \list 1 + \li Extract the downloaded file, and run the extracted installer. For example, + \code + cd <SDK_INSTALL_DIR> + tar xf nvidia-grouper-jzo54k-56de148f.tgz + ./extract-nvidia-grouper.sh + \endcode + \li Find out the serial number of the connected Nexus 7 device: + \code + <SDK_INSTALL_DIR>/targets/android-utils/bin/adb devices + \endcode + \li Deploy the drivers to your device using the following command: + \code + <SDK_INSTALL_DIR>/targets/android-utils/bin/deploy_tegra_drivers_to_nexus7 <serial_number> + \endcode + \endlist + + Next, see \l{Configuring a Device Kit in Qt Creator} for information on how + to finish the new hardware configuration in \B2Q IDE. +*/ + +/*! + \page b2qt-preparing-hardware-beagleboard.html + \title Preparing BeagleBoard-xM for Development + \previouspage b2qt-preparing-hardware-nexus-7.html + \nextpage b2qt-preparing-hardware-imx6.html + + When using a \l{http://beagleboard.org/hardware-xM}{BeagleBoard-xM} as a + development device, following steps are required to prepare it for + \B2Q. + + \note \b{It is important that the steps in this section are repeated + every time after updating the \B2Q SDK.} + + The image containing \B2Q stack for BeagleBoard-xM is included in the SDK, + ready to be copied to an SD card. + + Write the image to an SD card with at least 2GB capacity. To do so, + plug in the SD card/reader and use the following command to find out + its device name: + + \code + df -h + \endcode + + Next, unmount the SD card. Assuming the device name of the SD card is + \c{/dev/sdb}: + + \code + umount /dev/sdb + \endcode + + Finally, write the image to the SD card: + + \code + cd <SDK_INSTALL_DIR> + sudo dd if=targets/beagleboard/images/sdcard.img of=/dev/sdb bs=1M + \endcode + + \warning \b{Make very sure you select the right device. Selecting the wrong + one can result in a wiped hard drive}. + + Next, see \l{Configuring a Device Kit in Qt Creator} for information on how + to finish the new hardware configuration in \B2Q IDE. +*/ + +/*! + \page b2qt-preparing-hardware-imx6.html + \title Preparing i.MX 6 for Development + \previouspage b2qt-preparing-hardware-beagleboard.html + \nextpage b2qt-building-and-running-on-hw.html + + When using a \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/}{Boundary Devices i.MX 6} + as a development device, following steps are required to prepare it for \B2Q. + + \note \b{It is important that the steps in this section are repeated + every time after updating the \B2Q SDK.} + + Download the package \e{r13.4.1-nitrogen-20130407.tar.gz} from + \l{http://boundarydevices.com/i-mx6-images-for-branch-r13-4-1/}{i.MX6 images for branch r13.4-1} + + Follow the instructions on the Boundary Devices web site to create an SD card containing + the downloaded image. + + Make sure you have the required tools installed in your development machine: + + \code + sudo apt-get install u-boot-tools + \endcode + + Then, upgrade the SD Card with \B2Q: + + \code + <SDK_INSTALL_DIR>/targets/android-utils/deploy_to_iMX6 /dev/XXX + \endcode + + where \c{XXX} is the device for your SD card, typically \c{sdb}. + + \warning \b{Make very sure you select the right device. Selecting the wrong + one can result in a wiped hard drive.} + + Next, see \l{Configuring a Device Kit in Qt Creator} for information on how + to finish the new hardware configuration in \B2Q IDE. +*/ + + +/*! + \page b2qt-building-and-running-on-hw.html + \title Building and Running an Example on Hardware + \previouspage b2qt-preparing-for-development.html + \nextpage b2qt-supported-platforms.html + + Once the installation and configuration steps for all the hardware are + completed, it's time to test the setup. + + First, make sure your device is connected to the computer via USB. + + Then, follow these steps to create and run a simple \l{Qt Quick} + application on the device: + + \list 1 + \li Open \b{File > New File or Project}, select + \b{Qt Quick 2 Application (Built-in Elements)} and click \b{Next}. + \li In \b{Kit Selection} dialog, select all kits you created for your + devices. You can also select the emulator kit to test running the + project in the emulator. + \li Click \b{Next} and finish the wizard. + \li In \b{Projects > Build & Run}, select the correct kit for your + connected device. Also, click on \b{Run} to check if the + \b{Run configuration} of your device kit has a + \b{Custom Executable} setting, and remove it if present. + \li To build and run the project, click \inlineimage qtcreator-run.png + \endlist +*/ + +/*! + \page b2qt-supported-platforms.html + \title Supported Platforms + \previouspage b2qt-building-and-running-on-hw.html + \nextpage b2qt-troubleshooting.html + + \section1 Supported Hardware Platforms + + \B2Q can be made to run on hardware that has support for + Android 4.0+ operating system. Additional requirements + are as follows: + + \list + \li 256Mb of RAM + \li 500Mhz CPU, 1Ghz preferred + \li OpenGL ES 2.0 support + \endlist + + The \B2Q Technology Preview Release focuses on the following + devices: + + \list + \li \l{http://www.google.com/nexus/7/specs/}{Google Nexus 7} (Manufactured by ASUS) + \li \l{http://beagleboard.org/hardware-xM}{BeagleBoard-xM} + \li \l{http://boundarydevices.com/products/sabre-lite-imx6-sbc/}{Boundary Devices i.MX 6} + \endlist + + See also \l{Preparing Hardware for Running Boot to Qt}. + + \section1 Supported Development Environment + + The development environment supported in \B2Q Technology Preview release + is Ubuntu Linux 64-bit (12.04 LTS or 12.10). +*/ + +/*! + \page b2qt-troubleshooting.html + \title Troubleshooting + \previouspage b2qt-supported-platforms.html + + \section1 General Issues + + \b {Problems launching/running applications on hardware after updating \B2Q SDK} + + Remember to repeat the process of updating also your device with the latest + version of \B2Q. See \l{Preparing Hardware for Running Boot to Qt}. + + \b {Problems deploying/launching the application in Qt Creator} + + Check if the device is properly connected to the PC via USB. + See \l{Connectivity Issues}. + + If using the emulator, see \l{Installing VirtualBox}{Configuring VirtualBox}. + + In addition, check if \b{Run configuration} of your device kit has a + \b{Custom Executable} setting, and remove it if present. To see the + run configuration, click on \b{Projects > Build & Run}, and click + \b{Run} on the active device kit. + + \b{How do I restore my Nexus 7 to factory settings?} + + Goto \l{https://developers.google.com/android/nexus/images} and + download the correct file for your device. Unpack it, and then + + \code + <SDK_INSTALL_DIR>/targets/android-utils/bin/adb reboot bootloader + <SDK_INSTALL_DIR>/targets/android-utils/bin/fastboot -w update <image-file>.zip + <SDK_INSTALL_DIR>/targets/android-utils/bin/fastboot reboot + \endcode + + \b{I'm unable to shut down my Nexus 7, what can I do?} + + In case you are not able to shut down or reboot your Nexus 7, press and + hold the power button for 10 seconds. This will force a reboot. + + \b{Trying to build for the emulator target fails with error message \e{make: i686-android-linux-g++: Command not found}} + + You need to install proper libraries in order to run 32-bit programs in 64-bit Linux operating system. + + See \l{Requirements}. + + \section1 Connectivity Issues + \b {I cannot connect to my hardware device via USB} + + See \l{Setting up Access to Development Hardware via USB}. +*/ diff --git a/src/src.pro b/src/src.pro index c9231e6..35b4433 100644 --- a/src/src.pro +++ b/src/src.pro @@ -2,4 +2,5 @@ TEMPLATE = subdirs CONFIG += ordered SUBDIRS += \ utils \ - imports + imports \ + doc |