CINXE.COM
QNX Training | Custom Embedded Development and Product Training Modules| BlackBerry QNX
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"/> <link rel="preconnect" href="https://cdn.cookielaw.org" crossorigin/> <link rel="dns-prefetch" href="https://cdn.cookielaw.org"/> <link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"/> <link rel="dns-prefetch" href="https://images.blackberry.com"/> <link rel="dns-prefetch" href="https://s7d2.scene7.com"/> <link rel="dns-prefetch" href="https://unpkg.com"/> <!-- OneTrust Cookies Consent Notice Start --> <script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-document-language="true" type="text/javascript" charset="UTF-8" data-domain-script="636f02f7-59ef-4e29-b5fe-e00be564a8ae"></script> <script type="text/javascript"> function OptanonWrapper() { } </script> <!-- OneTrust Cookies Consent Notice End --> <title>QNX Training | Custom Embedded Development and Product Training Modules| BlackBerry QNX</title> <meta name="description" content="BlackBerry QNX offers a variety of valuable training modules for embedded software developers. Learn more."/> <meta name="template" content="content-page-template"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta property="og:title" content="QNX Training | Custom Embedded Development and Product Training Modules| BlackBerry QNX"/> <meta property="og:description" content="BlackBerry QNX offers a variety of valuable training modules for embedded software developers. Learn more."/> <meta property="og:image" content="/etc.clientlibs/bbcom/clientlibs/clientlib-etc-legacy/resources/cylance-web/global/bb-default-thumbnail-social.png"/> <meta property="og:image:secure_url" content="https://www.blackberry.com/etc.clientlibs/bbcom/clientlibs/clientlib-etc-legacy/resources/cylance-web/global/bb-default-thumbnail-social.png"/> <meta property="og:image:width" content="1200"/> <meta property="og:image:height" content="629"/> <meta name="twitter:title" content="QNX Training | Custom Embedded Development and Product Training Modules| BlackBerry QNX"/> <meta name="twitter:domain" content="QNX Training | Custom Embedded Development and Product Training Modules| BlackBerry QNX"/> <meta name="twitter:card" content="summary"/> <meta name="twitter:image" content="https://www.blackberry.com/etc.clientlibs/bbcom/clientlibs/clientlib-etc-legacy/resources/cylance-web/global/bb-default-thumbnail-social.png"/> <meta name="twitter:description" content="BlackBerry QNX offers a variety of valuable training modules for embedded software developers. Learn more."/> <meta name="twitter:image:alt" content="BlackBerry QNX offers a variety of valuable training modules for embedded software developers. Learn more."/> <link rel="canonical" href="https://blackberry.qnx.com/en/services/training/modules"/> <script src="https://unpkg.com/@lottiefiles/lottie-interactivity@latest/dist/lottie-interactivity.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/lottie-player/1.4.3/lottie-player.js"></script> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PZ49QQGN'); </script> <link rel="stylesheet" href="/etc.clientlibs/cylance-web/clientlibs/clientlib-all.min.css" type="text/css"> <script> var BlackBerryWeb = window.BlackBerryWeb || {}; BlackBerryWeb.isPageRenderedByWeglot = document.documentElement.getAttribute('data-wg-translated') !== null; </script> </head> <body class="page-content page basicpage page " id="page-content-923e725916"> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PZ49QQGN" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <div class="page__main"> <header class="page__position page__header"> <div class="header"> <a href="#" class="skipNav" tabindex="0">Skip Navigation</a> <div class="qnxv2-nav-container" data-nosnippet> <nav class="navbar navbar-expand-lg navbar-light qnxv2-navigation" aria-label="Main Navigation"> <a class="nav-brand" href="https://blackberry.qnx.com"> <img src="/etc.clientlibs/bbcom/clientlibs/clientlib-etc-legacy/resources/bbcom-aem-project/images/BlackBerry-QNX-logo-white.png" alt="BlackBerry QNX"/> </a> <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navigationv2"> <span></span> <span></span> <span></span> </button> <div class="collapse navbar-collapse" id="navigationv2"> <ul class="navbar-nav"> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" data-toggle="dropdown">PRODUCTS</a> <div class="container dropdown-menu py-1 twocolumn-layout " style="left:;" data-two-column-layout="true"> <!--%complex dropdown%--> <div class="row px-1"> <div class="col-md-6 "> <h6>Foundational Software</h6> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/products/foundation-software/qnx-software-development-platform" role="menuitem" class="dropdown-item ">QNX Software Development Platform 8.0</a> </li> <li role="none"> <a href="/en/products/foundation-software/qnx-software-development-platform/sdp-7-1" role="menuitem" class="dropdown-item ">QNX Software Development Platform 7.1</a> </li> <li role="none"> <a href="/en/products/foundation-software/qnx-hypervisor" role="menuitem" class="dropdown-item ">QNX Hypervisor</a> </li> <li role="none"> <a href="/en/products/foundation-software/qnx-containers" role="menuitem" class="dropdown-item ">QNX Containers</a> </li> </ul> </div> <div class="col-md-6 "> <h6>Security Solutions</h6> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/products/security/qnx-security" role="menuitem" class="dropdown-item ">QNX Cybersecurity</a> </li> </ul> </div> <div class="col-md-6 "> <h6>Safety-Certified Software</h6> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/products/safety-certified/qnx-os-for-safety" role="menuitem" class="dropdown-item ">QNX OS for Safety</a> </li> <li role="none"> <a href="/en/products/safety-certified/qnx-hypervisor-for-safety" role="menuitem" class="dropdown-item ">QNX Hypervisor for Safety</a> </li> <li role="none"> <a href="/en/developers/certifications" role="menuitem" class="dropdown-item ">Safety Certifications</a> </li> </ul> </div> <div class="col-md-6 "> <h6>Automotive Solutions</h6> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/products/automotive/blackberry-ivy" role="menuitem" class="dropdown-item ">IVY</a> </li> <li role="none"> <a href="/en/products/automotive/qnx-sound" role="menuitem" class="dropdown-item ">QNX Sound</a> </li> <li role="none"> <a href="/en/products/automotive/qnx-adas" role="menuitem" class="dropdown-item ">QNX Platform for ADAS</a> </li> <li role="none"> <a href="/en/products/automotive/multimedia" role="menuitem" class="dropdown-item ">QNX Multimedia Suite</a> </li> </ul> </div> </div> </div> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" data-toggle="dropdown">SERVICES</a> <div class="container dropdown-menu py-1 twocolumn-layout " style="left:-187px;" data-two-column-layout="true"> <!--%complex dropdown%--> <div class="row px-1"> <div class="col-md-6 "> <h6>Services</h6> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/services" role="menuitem" class="dropdown-item ">Services Overview</a> </li> <li role="none"> <a href="/en/services/safety-services" role="menuitem" class="dropdown-item ">Safety Services</a> </li> </ul> </div> <div class="col-md-6 "> <h6>Training</h6> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/services/training" role="menuitem" class="dropdown-item ">Training Overview</a> </li> <li role="none"> <a href="/en/services/training/modules" role="menuitem" class="dropdown-item ">Training Modules</a> </li> </ul> </div> <div class="col-md-6 "> </div> <div class="col-md-6 "> </div> </div> </div> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" data-toggle="dropdown">INDUSTRIES</a> <div class="dropdown-menu py-1 " data-two-column-layout="false" style="left:;"> <!--%simple dropdown%--> <div class="col-md-12 px-1"> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/industries/aerospace-and-defense" role="menuitem" class="dropdown-item ">Aerospace & Defense</a> </li> <li role="none"> <a href="/en/industries/connected-autonomous-vehicles" role="menuitem" class="dropdown-item ">Automotive</a> </li> <li role="none"> <a href="/en/industries/commercial-vehicles" role="menuitem" class="dropdown-item ">Commercial Vehicles</a> </li> <li role="none"> <a href="/en/industries/heavy-machinery" role="menuitem" class="dropdown-item ">Heavy Machinery</a> </li> <li role="none"> <a href="/en/industries/industrial-control" role="menuitem" class="dropdown-item ">Industrial Controls</a> </li> <li role="none"> <a href="/en/industries/medical" role="menuitem" class="dropdown-item ">Medical Devices</a> </li> <li role="none"> <a href="/en/industries/rail" role="menuitem" class="dropdown-item ">Rail</a> </li> <li role="none"> <a href="/en/industries/robotics" role="menuitem" class="dropdown-item ">Robotics & Automation</a> </li> </ul> </div> </div> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" data-toggle="dropdown">PARTNERS</a> <div class="dropdown-menu py-1 " data-two-column-layout="false" style="left:;"> <!--%simple dropdown%--> <div class="col-md-12 px-1"> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/partners/qnx-partner-directory" role="menuitem" class="dropdown-item ">Partner Directory</a> </li> <li role="none"> <a href="/en/partners/qnx-partners-program" role="menuitem" class="dropdown-item ">Partner Program</a> </li> <li role="none"> <a href="/en/products/automotive/blackberry-ivy" role="menuitem" class="dropdown-item ">BlackBerry IVY</a> </li> <li role="none"> <a href="/en/developers/blackberry-qnx-ti-academy" role="menuitem" class="dropdown-item ">BlackBerry QNX Academy for Functional Safety - Texas Instruments</a> </li> </ul> </div> </div> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" data-toggle="dropdown">DEVELOPERS</a> <div class="container dropdown-menu py-1 twocolumn-layout dropdown-menu-right" style="left:-483px;" data-two-column-layout="true"> <!--%complex dropdown%--> <div class="row px-1"> <div class="col-md-6 "> <h6>Technical Resources (requires login)</h6> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/products/qnx-everywhere" role="menuitem" class="dropdown-item blue">QNX Everywhere</a> </li> <li role="none"> <a href="https://www.qnx.com/account/login.html" rel="noopener" role="menuitem" class="dropdown-item " target="_blank">Client Login (MyQNX Login)</a> </li> <li role="none"> <a href="https://www.qnx.com/download/group.html?programid=29178" rel="noopener" role="menuitem" class="dropdown-item " target="_blank">QNX Software Center</a> </li> <li role="none"> <a href="https://www.qnx.com/developers/docs/index.html" rel="noopener" role="menuitem" class="dropdown-item " target="_blank">Product Documentation</a> </li> <li role="none"> <a href="https://www.qnx.com/products/evaluation/" rel="noopener" role="menuitem" class="dropdown-item ">Request QNX Evaluation License</a> </li> </ul> </div> <div class="col-md-6 "> <h6>Support</h6> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/support" role="menuitem" class="dropdown-item ">Support Overview</a> </li> <li role="none"> <a href="https://www.qnx.com/account/tslogin.html" rel="noopener" role="menuitem" class="dropdown-item " target="_blank">Technical Support Portal</a> </li> <li role="none"> <a href="https://community.qnx.com/sf/sfmain/do/home" rel="noopener" role="menuitem" class="dropdown-item " target="_blank">Community (Foundry27)</a> </li> <li role="none"> <a href="https://www.qnx.com/support/knowledgebase.html" rel="noopener" role="menuitem" class="dropdown-item " target="_blank">Knowledge Base</a> </li> <li role="none"> <a href="https://www.blackberry.com/us/en/support/software-support-life-cycle" rel="noopener" role="menuitem" class="dropdown-item " target="_blank">Product Lifecycle</a> </li> </ul> </div> <div class="col-md-6 "> <h6>Certifications & Board Support</h6> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/developers/certifications" role="menuitem" class="dropdown-item ">Software Certifications</a> </li> <li role="none"> <a href="/en/developers/board-support-packages" role="menuitem" class="dropdown-item ">Board Support Packages</a> </li> </ul> </div> <div class="col-md-6 "> <h6>Cloud-Enabled Software</h6> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/products/accelerate" role="menuitem" class="dropdown-item ">QNX Accelerate</a> </li> </ul> </div> </div> </div> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" data-toggle="dropdown">RESOURCES</a> <div class="dropdown-menu py-1 dropdown-menu-right" data-two-column-layout="false" style="left:;"> <!--%simple dropdown%--> <div class="col-md-12 px-1"> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="/en/resource-center/events-and-webinars" role="menuitem" class="dropdown-item ">Events & Webinars</a> </li> <li role="none"> <a href="/en/resource-center/resources" role="menuitem" class="dropdown-item ">Resource Center</a> </li> <li role="none"> <a href="https://www.blackberry.com/us/en/company/newsroom" rel="noopener" role="menuitem" class="dropdown-item " target="_blank">News</a> </li> <li role="none"> <a href="/en/resource-center/qnx-autonomous-vehicle-innovation-centre" role="menuitem" class="dropdown-item ">Autonomous Vehicle Innovation Center</a> </li> </ul> </div> </div> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" data-toggle="dropdown">BLOG</a> <div class="dropdown-menu py-1 dropdown-menu-right" data-two-column-layout="false" style="left:;"> <!--%simple dropdown%--> <div class="col-md-12 px-1"> <ul role="menu" class="list-unstyled"> <li role="none"> <a href="https://blogs.blackberry.com/en" rel="noopener" role="menuitem" class="dropdown-item " target="_blank">BlackBerry Blog</a> </li> <li role="none"> <a href="https://devblog.blackberry.com/en" rel="noopener" role="menuitem" class="dropdown-item " target="_blank">BlackBerry Developers Blog</a> </li> </ul> </div> </div> </li> </ul> <ul class="navbar-nav ml-auto d-flex align-items-lg-center"> <li class="sign-in-link"> <a href="https://www.qnx.com/account/login.html" class="buttonLink buttonLink-type--textLink buttonLink-colour--white---textLink">SIGN IN</a> </li> <li class="talk-to-us-cta"> <a href="https://blackberry.qnx.com/en/company/contact" class="btn btn-primary" aria-expanded="false">TALK TO US</a> </li> <li class="search"> <button type="button" title="Search" aria-label="Search"> <svg viewBox="0 0 512 512"><path d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"></path></svg> </button> </li> </ul> </div> </nav> <div class="search-overlay d-none" style="z-index: 1000;"> <button class="close-search-btn" type="button" title="Close Search">×</button> <div class="overlay-content"> <form id="search-form"> <input id="search-form--input" description="Search" data-search-url="https://blackberry.qnx.com/en/search" type="text" placeholder="Search" name="search"/> <button type="submit" title="Search"> <svg aria-hidden="true" data-prefix="fa" data-icon="search" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg> <path fill="currentColor" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"></path> </svg> </button> </form> </div> </div> </div> </div> </header> <div id="main-content" class="page__position page__par" role="main"> <div class="cylance-h8"> <div class="cylance-mod-headerh8 content--dark fullscreen layout-zqldri" data-desktop="https://images.blackberry.com/is/image/blackberry/training-modules-h8.1-hero?wid=2560&fmt=jpg" data-tablet="https://images.blackberry.com/is/image/blackberry/training-modules-h8.1-hero?wid=2560&fmt=jpg" data-mobile="https://images.blackberry.com/is/image/blackberry/training-modules-h8.1-hero-m?wid=750&fmt=jpg"> <style> .section-bg-video { position: absolute; z-index: -100; top: 50%; left: 50%; width: auto; min-width: 100%; height: auto; min-height: 100%; transform: translate(-50%, -50%); } </style> <div class="cylance-mod-headerh8__contain container cylance-mod-container"> <div class="cylance-mod-headerh8__contain row"> <div class="col-md-12 col-lg-5 no-gutters cylance-mod-headerh8__main-container"> <h1 class="cylance-mod-headline no-padding-bottom">BlackBerry QNX Training Modules </h1> </div> </div> <div class="row"> <div class="col-12 col-sm-12"> </div> </div> </div> <div class="row"> <div class="col-12 col-sm-12 cylance-mod-headerh8__scroll-button-container"> <button class="cylance-mod-headerh8__scroll-button" aria-label="scroll to content"/> </div> </div> <style> .cylance-mod-headerh8 { background-repeat: no-repeat; background-position: center center; background-size: cover; } @media (min-width: 320px) { .layout-zqldri { background-image: url('https://images.blackberry.com/is/image/blackberry/training-modules-h8.1-hero-m?wid=750&fmt=jpg'); } } @media (min-width: 768px) { .layout-zqldri { background-image: url('https://images.blackberry.com/is/image/blackberry/training-modules-h8.1-hero?wid=2560&fmt=jpg'); } } @media (min-width: 992px) { .layout-zqldri { background-image: url('https://images.blackberry.com/is/image/blackberry/training-modules-h8.1-hero?wid=2560&fmt=jpg'); } } </style> </div> </div> <div class="cylance-it4 parbase"> <div class="cylance-mod-it4 content--grey"> <div class="container"> <div class="row"> <div class="module-container col-md-12 justify-end"> <div class="media-container right-align"> <picture> <source media="(min-width: 992px)" data-srcset="https://images.blackberry.com/is/image/blackberry/training-modules-it4?wid=1280&fmt=jpg"/> <source media="(min-width: 768px)" data-srcset="https://images.blackberry.com/is/image/blackberry/training-modules-it4?wid=1280&fmt=jpg"/> <source data-srcset="https://images.blackberry.com/is/image/blackberry/training-modules-h8.1-hero?wid=2560&fmt=jpg"/> <img data-src="https://images.blackberry.com/is/image/blackberry/training-modules-it4?wid=1280&fmt=jpg" alt="Choose the Training Modules You Need" class="image lazyload"/> </picture> </div> <div class="content left-align"> <h2>Choose the Training Modules You Need</h2> <div class="cylance-mod-body-copy"> If you opt for on-site training, you can choose from our existing courses or design a custom program by selecting the modules you need. To have an instructor help you select from the following modules, contact <a href="mailto:training@qnx.com">training@qnx.com.</a> </div> </div> </div> </div> </div> </div> </div> <div class="cylance-c1"> <section id='table-1'> <div class="cylance-mod-c1 content--light theme--white responsive-type--mobile full-width no-animation"> <div class="container cylance-mod-container-headline"> <div class="row justify-content-center"> <div class="col-12 col-sm-12 col-lg-12 no-gutters"> <table class="cylance-mod-c1__table desktop"> <tbody> <tr class="cylance-mod-c1__table-row"> <th class="cylance-mod-c1__table-header cylance-mod-c1__table-header-primary"> Module name </th> <th class="cylance-mod-c1__table-header "> Module Description </th> <th class="cylance-mod-c1__table-header "> Prerequisites </th> <th class="cylance-mod-c1__table-header "> Duration </th> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Adaptive Partitioning Scheduler </br> (QNX SDP 7.x only) </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Learn how to use the QNX® Adaptive Partitioning Scheduler, or APS, to group threads and/or processes into partitions according to their CPU requirements and/or to protect them from CPU starvation. APS is useful for safety and/or hypervisor related products or any product where partitioning the CPU may be needed. We will discuss the architecture of APS, how to add APS to an image, define and understand partitions, critical priorities and bankruptcy. There are hands-on exercises to explore administering APS from both the command line and with the APS API. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX® OS Architecture, Building a Boot Image </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Application Profiling </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Learn how to use the application profiler in the QNX® Momentics® Tool Suite to profile a single process. Using the profiler, you can pinpoint which parts of your code are consuming the most CPU, at both the function level and the source-line level. You can then use that information to make your code more efficient. Both live and post-mortem profiling are covered. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Building a QNX Boot/OS Image </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A detailed look at building boot images, which contain the binaries that run just after the reset vector. Boot images typically include components such as startup code, the process manager, the kernel, drivers, and a startup script. We also explore various ways to load a boot image onto your target. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Code Coverage </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Determining the effectiveness of a test suite takes work. In this section well see the IDE tools determining how much of your code has actually been executed, broken down to the source line, by your testing. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Comparing QNX IPC Methods </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A quick look at the relative advantages and disadvantages of the various IPC methods supported by QNX with a view to choosing which method(s) to use in your system. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Inter-Process Communication </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 0.5 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Momentics Development Basics (formerly named Compiling and Debugging in QNX SDP 7.x) </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> This section provides a quick introduction to editing, compiling, running, and debugging your application from the QNX Momentics IDE, giving the minimum needed to do the programming exercises in the programming sections. <br /> Note: This module is a light replacement for the Editing and Compiling and Running and Debugging modules. If you take one of those modules, it isn‘t necessary to take this one. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Debugging Memory Problems </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Memory problems, such as memory corruption, can often be subtle and uncaught by testing. In this section, we explore the powerful Momentics IDE tools for finding memory corruption, leaks, and excessive memory consumption. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Editing and Compiling </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> This section will focus on the code editor in the Momentics IDE, including the many powerful, time-saving features. In addition, we look at how to build code and how the IDE identifies problems with the build. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> File System Resource Managers </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A discussion on how to write file system resource managers, which are processes that represent data in the form of files or file systems. You will learn to write a resource manager that presents a tar file as a file system. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Writing a Resource Manager </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Further Topics for Resource Managers </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Explores the various ways to return from handlers, manage access and modification times, leave clients blocked, use multi-threaded resource managers, implement combine messages, perform unblock handling, receive pulses, and make poll() (or select()) and ionotify() work. Resource manager concepts are reinforced through a variety of hands-on exercises. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Processes, Threads and Synchronization, Introduction to Resource Managers or Writing a Resource Manager </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 6 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> High Availability </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> We start with how QNX architecture lends itself to high availability, then look at how to design applications that take advantage of that architecture. Next, we explore the high availability toolkit in detail, starting with how to use the high availability manager for doing process restart and multistage restart. We then cover the client recovery library, also included in the toolkit, which helps clients to restore broken connections. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> IDE Basics </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Focusing on Eclipse fundamentals, this section provides necessary background for anyone working with the IDE in the QNX® Momentics® Tool Suite. Starting with the central concepts of the IDE, you‘ll become adept at navigation in the IDE and configuring it to suit your personal needs and likes. We then talk about projects, workspaces and the host-target model, introducing various ways to interface to your target. We end with pointing out several preference settings that can make your work easier. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Inter-Process Communication </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Explores the various methods that the QNX OS provides for allowing two or more processes to exchange information and control. We focus on the QNX message passing that is fundamental to how the QNX OS works, but also examine pulses and shared memory. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Processes, Threads and Synchronization </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 9 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Interrupts </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Explores how the QNX OS makes it relatively easy to handle hardware interrupts. We present several approaches to handling interrupts. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Inter-Process Communication (recommended) </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Introduction to Hardware Programming </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> An introduction to hardware access methods including IO-mapped and memory-mapped IO, allocating DMA-safe memory, and interrupt handling. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Introduction to Security Policies </br>(QNX SDP 8.x only) </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A short introduction to the use of security policies in securing a QNX system. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 0.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Introduction to Resource Managers </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Any process can be a resource manager, and drivers usually are. This section looks at the capabilities of resource managers, including pathname-space resolution, IPC message formats, and general structure. Through a set of exercises we‘ll look at the initialization of a simple resource manager and the handling of read() and write() operations. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Inter-Process Communication </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> I/O </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Covers in detail the I/O aspects of a driver, including how to do port I/O and memory-mapped I/O, how to perform DMA memory configuration, and how to use the PCI API. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> I/O Exercises </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A collection of challenging exercises that are a must for anyone learning to write device drivers. The exercises used depend on the hardware available. You can choose from: </br> - VGA Text Mode driver exercise (2.5 hours) You‘ll write an I/O manager that does read()s from, write()s to, and devctl()s for changing the configuration of VGA text mode memory. </br>- Keyboard driver exercise (1.5 hours) You will write a simple driver that handles x86 keyboard input. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> I/O, Introduction to Resource Managers or Writing a Resource Manager </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1.5 to 4 hours (depends on depth of exercises, to be agreed with instructor) </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Managing C/C++ Projects </br>(QNX SDP 7.x only) </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> The basic container for code in the IDE is a project. We cover the two types of projects for C/C++ code: a project where the entire contents and build structure are up to you, and a project with a predefined structure that supports multiple platforms. We cover both header file and project dependencies and discuss how to get code from elsewhere and place it into your projects. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Migrating from QNX 7 to QNX 8 </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> This section will examine the changes between QNX Neutrino 7.x RTOS and QNX 8.0 OS. We will look at the core design changes to the QNX Neutrino microkernel including multi-threading the kernel, and the changes to time and interrupt handling, and what this means for the developer. We will also examine application programming and system integration level changes, and discuss ways of maintaining common code. Several hands-on porting exercises are included. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Real-Time Programming for QNX OS course </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 4 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> More on Threads and Synchronization </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Covers additional issues for anyone who wants to know a lot about threads, including reader/writer locks, once control, and thread local storage. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Processes, Threads and Synchronization </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Multicore Processing </br> (QNX SDP 7.x only) </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Discusses how to configure your application for Multicore, how scheduling works, where ISRs run, and processor affinity. Also examines how to perform synchronization among threads and between threads and ISRs. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> POSIX IPC in QNX </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX supplies a rich set of POSIX IPC methods. This section looks at signals, shared memory, pipes, POSIX message queues, and TCP/IP. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Processes, Threads and Synchronization </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Unlike many common legacy RTOSs, the QNX OS executes programs in separate, memory protected, processes. This section touches on how a system design problem can be broken down into separate processes, and how processes are started and terminated. In addition, in this section we‘ll discuss what a thread is, how to start and stop a thread, and how to synchronize resource access via QNX OS and POSIX function calls. Several hands-on lab exercises form a significant component of this section. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 4 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> QNX® Hypervisor Overview </br> (QNX SDP 7.x only) </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> An overview of the QNX Hypervisor and of how your applications make use of it. We cover the types of devices available to your guest OSes, where your guests run, their virtual CPUs, privileges and priorities. We then touch on how guests communicate with each other and/or with the QNX Hypervisor host, and how they can share devices. Next, we introduce how time and interrupts work. Thick and thin designs are then compared, and we finish with safety issues and an overview of the QNX Hypervisor for Safety. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> QNX OS Architecture </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Gives an overview of the QNX OS architecture, covering what the microkernel and the process manager do. We talk about standards, protected address spaces, process/thread model, timing, and scheduling. We also introduce various types of IPC, synchronization, what a resource manager is and where shared objects fit in. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 4.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> QNX OS Programming Basics </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A review of basic programming topics for the QNX OS, such as threads, mutexes, message passing, pulses, and timing. This module provides a refresher course to students familiar with QNX programming and offers a good background for other course material. Note: You shouldn’t select this module if you‘re taking other modules that cover the same topics in more detail. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> QNX Security </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> We discuss a variety of security topics for the QNXOS, starting with the basics of a microkernel architecture and Unix file permissions. We look at how QNX breaks down root abilities using procmgr abilities, discovering needed abilities, and using security policy to specify these. We delve into specific security features of the QNX OS, including Pathspace Control. And we look at various new optional subsystems such as hashed and encrypted filesystems, and Pathtrust. Several hands-on exercises are included. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 8 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Running and Debugging </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A look at launching programs with either "run" or from the debugger. We explain the fundamental debugging features, including stepping through code; setting breakpoints; performing post-mortem debugging; attaching to a running process; debugging shared libraries; and examining data. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> System Profiling </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> With system profiling, you can examine your system as a whole to see what‘s going on. Detail is available down to the kernel level. We start by covering what is happening on the kernel side and how to do the necessary setup. Next, we look at how to log the activity through the QNX Momentics IDE, from the command line, or under program control. Then, we look at how to use the IDE‘s system profiling perspective to analyze the resulting data. We finish off with how to insert your own data into logs. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX Neutrino OS Architecture, <br />Inter-Process Communication </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3.5 to 6 hours (depends on depth of exercises, to be agreed with instructor) </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Time </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> An explanation of how to meet deterministic timing requirements. We discuss timing architecture and how to handle periodic timing, one-shot timing, time-stamping, benchmarking, and timeouts. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Inter-Process Communication (recommended) </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Writing a character (e.g. serial) driver </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> We‘ll look at using the QNX io-char library to write a driver for character devices such as serial chipsets that support the RS-232 protocol. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Introduction to Resource Managers </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-primary"> <div class="inline-text"> Writing a Resource Manager </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A look at the capabilities of resource managers, including pathname-space resolution, IPC message formats, and general structure. We provide several exercises, from a very simple resource manager that implements /dev/null to more complex examples that support multiple devices. This module is a superset of Introduction to Resource Managers, and both modules should not be selected together. </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture, Inter-Process Communication </div> </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 7 hours </div> </td> </tr> </tbody> </table> <table class="cylance-mod-c1__table mobile"> <tbody> <tr class="cylance-mod-c1__table-row"> <th colspan="2" class="cylance-mod-c1__table-header"> Module Description </th> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Adaptive Partitioning Scheduler (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Learn how to use the QNX® Adaptive Partitioning Scheduler, or APS, to group threads and/or processes into partitions according to their CPU requirements and/or to protect them from CPU starvation. APS is useful for safety and/or hypervisor related products or any product where partitioning the CPU may be needed. We will discuss the architecture of APS, how to add APS to an image, define and understand partitions, critical priorities and bankruptcy. There are hands-on exercises to explore administering APS from both the command line and with the APS API. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Application Profiling </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Learn how to use the application profiler in the QNX® Momentics® Tool Suite to profile a single process. Using the profiler, you can pinpoint which parts of your code are consuming the most CPU, at both the function level and the source-line level. You can then use that information to make your code more efficient. Both live and post-mortem profiling are covered. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Building a QNX Boot/OS Image </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A detailed look at building boot images, which contain the binaries that run just after the reset vector. Boot images typically include components such as startup code, the process manager, the kernel, drivers, and a startup script. We also explore various ways to load a boot image onto your target. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Code Coverage </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Determining the effectiveness of a test suite takes work. In this section well see the IDE tools determining how much of your code has actually been executed, broken down to the source line, by your testing. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Comparing QNX IPC Methods </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A quick look at the relative advantages and disadvantages of the various IPC methods supported by QNX with a view to choosing which method(s) to use in your system. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Momentics Development Basics (formerly named Compiling and Debugging in QNX SDP 7.x) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> This section provides a quick introduction to editing, compiling, running, and debugging your application from the QNX Momentics IDE, giving the minimum needed to do the programming exercises in the programming sections. <br /> Note: This module is a light replacement for the Editing and Compiling and Running and Debugging modules. If you take one of those modules, it isn‘t necessary to take this one. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Debugging Memory Problems </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Memory problems, such as memory corruption, can often be subtle and uncaught by testing. In this section, we explore the powerful Momentics IDE tools for finding memory corruption, leaks, and excessive memory consumption. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Editing and Compiling </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> This section will focus on the code editor in the Momentics IDE, including the many powerful, time-saving features. In addition, we look at how to build code and how the IDE identifies problems with the build. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> File System Resource Managers </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A discussion on how to write file system resource managers, which are processes that represent data in the form of files or file systems. You will learn to write a resource manager that presents a tar file as a file system. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Further Topics for Resource Managers </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Explores the various ways to return from handlers, manage access and modification times, leave clients blocked, use multi-threaded resource managers, implement combine messages, perform unblock handling, receive pulses, and make poll() (or select()) and ionotify() work. Resource manager concepts are reinforced through a variety of hands-on exercises. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> High Availability </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> We start with how QNX architecture lends itself to high availability, then look at how to design applications that take advantage of that architecture. Next, we explore the high availability toolkit in detail, starting with how to use the high availability manager for doing process restart and multistage restart. We then cover the client recovery library, also included in the toolkit, which helps clients to restore broken connections. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> IDE Basics </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Focusing on Eclipse fundamentals, this section provides necessary background for anyone working with the IDE in the QNX® Momentics® Tool Suite. Starting with the central concepts of the IDE, you‘ll become adept at navigation in the IDE and configuring it to suit your personal needs and likes. We then talk about projects, workspaces and the host-target model, introducing various ways to interface to your target. We end with pointing out several preference settings that can make your work easier. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Inter-Process Communication </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Explores the various methods that the QNX OS provides for allowing two or more processes to exchange information and control. We focus on the QNX message passing that is fundamental to how the QNX OS works, but also examine pulses and shared memory. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Interrupts </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Explores how the QNX OS makes it relatively easy to handle hardware interrupts. We present several approaches to handling interrupts. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Introduction to Hardware Programming </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> An introduction to hardware access methods including IO-mapped and memory-mapped IO, allocating DMA-safe memory, and interrupt handling. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Introduction to Security Policies (QNX SDP 8.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A short introduction to the use of security policies in securing a QNX system. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Introduction to Resource Managers </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Any process can be a resource manager, and drivers usually are. This section looks at the capabilities of resource managers, including pathname-space resolution, IPC message formats, and general structure. Through a set of exercises we‘ll look at the initialization of a simple resource manager and the handling of read() and write() operations. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> I/O </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Covers in detail the I/O aspects of a driver, including how to do port I/O and memory-mapped I/O, how to perform DMA memory configuration, and how to use the PCI API. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> I/O Exercises </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A collection of challenging exercises that are a must for anyone learning to write device drivers. The exercises used depend on the hardware available. You can choose from: </br> - VGA Text Mode driver exercise (2.5 hours) You‘ll write an I/O manager that does read()s from, write()s to, and devctl()s for changing the configuration of VGA text mode memory. </br>- Keyboard driver exercise (1.5 hours) You will write a simple driver that handles x86 keyboard input. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Managing C/C++ Projects (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> The basic container for code in the IDE is a project. We cover the two types of projects for C/C++ code: a project where the entire contents and build structure are up to you, and a project with a predefined structure that supports multiple platforms. We cover both header file and project dependencies and discuss how to get code from elsewhere and place it into your projects. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Migrating from QNX 7 to QNX 8 </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> This section will examine the changes between QNX Neutrino 7.x RTOS and QNX 8.0 OS. We will look at the core design changes to the QNX Neutrino microkernel including multi-threading the kernel, and the changes to time and interrupt handling, and what this means for the developer. We will also examine application programming and system integration level changes, and discuss ways of maintaining common code. Several hands-on porting exercises are included. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> More on Threads and Synchronization </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Covers additional issues for anyone who wants to know a lot about threads, including reader/writer locks, once control, and thread local storage. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Multicore Processing (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Discusses how to configure your application for Multicore, how scheduling works, where ISRs run, and processor affinity. Also examines how to perform synchronization among threads and between threads and ISRs. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> POSIX IPC in QNX </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX supplies a rich set of POSIX IPC methods. This section looks at signals, shared memory, pipes, POSIX message queues, and TCP/IP. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Processes, Threads and Synchronization </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Unlike many common legacy RTOSs, the QNX OS executes programs in separate, memory protected, processes. This section touches on how a system design problem can be broken down into separate processes, and how processes are started and terminated. In addition, in this section we‘ll discuss what a thread is, how to start and stop a thread, and how to synchronize resource access via QNX OS and POSIX function calls. Several hands-on lab exercises form a significant component of this section. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX® Hypervisor Overview (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> An overview of the QNX Hypervisor and of how your applications make use of it. We cover the types of devices available to your guest OSes, where your guests run, their virtual CPUs, privileges and priorities. We then touch on how guests communicate with each other and/or with the QNX Hypervisor host, and how they can share devices. Next, we introduce how time and interrupts work. Thick and thin designs are then compared, and we finish with safety issues and an overview of the QNX Hypervisor for Safety. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX OS Architecture </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Gives an overview of the QNX OS architecture, covering what the microkernel and the process manager do. We talk about standards, protected address spaces, process/thread model, timing, and scheduling. We also introduce various types of IPC, synchronization, what a resource manager is and where shared objects fit in. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX OS Programming Basics </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A review of basic programming topics for the QNX OS, such as threads, mutexes, message passing, pulses, and timing. This module provides a refresher course to students familiar with QNX programming and offers a good background for other course material. Note: You shouldn’t select this module if you‘re taking other modules that cover the same topics in more detail. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX Security </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> We discuss a variety of security topics for the QNXOS, starting with the basics of a microkernel architecture and Unix file permissions. We look at how QNX breaks down root abilities using procmgr abilities, discovering needed abilities, and using security policy to specify these. We delve into specific security features of the QNX OS, including Pathspace Control. And we look at various new optional subsystems such as hashed and encrypted filesystems, and Pathtrust. Several hands-on exercises are included. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Running and Debugging </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A look at launching programs with either "run" or from the debugger. We explain the fundamental debugging features, including stepping through code; setting breakpoints; performing post-mortem debugging; attaching to a running process; debugging shared libraries; and examining data. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> System Profiling </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> With system profiling, you can examine your system as a whole to see what‘s going on. Detail is available down to the kernel level. We start by covering what is happening on the kernel side and how to do the necessary setup. Next, we look at how to log the activity through the QNX Momentics IDE, from the command line, or under program control. Then, we look at how to use the IDE‘s system profiling perspective to analyze the resulting data. We finish off with how to insert your own data into logs. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Time </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> An explanation of how to meet deterministic timing requirements. We discuss timing architecture and how to handle periodic timing, one-shot timing, time-stamping, benchmarking, and timeouts. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Writing a character (e.g. serial) driver </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> We‘ll look at using the QNX io-char library to write a driver for character devices such as serial chipsets that support the RS-232 protocol. </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Writing a Resource Manager </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> A look at the capabilities of resource managers, including pathname-space resolution, IPC message formats, and general structure. We provide several exercises, from a very simple resource manager that implements /dev/null to more complex examples that support multiple devices. This module is a superset of Introduction to Resource Managers, and both modules should not be selected together. </div> </td> </tr> </tbody> </table> <table class="cylance-mod-c1__table mobile"> <tbody> <tr class="cylance-mod-c1__table-row"> <th colspan="2" class="cylance-mod-c1__table-header"> Prerequisites </th> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Adaptive Partitioning Scheduler (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX® OS Architecture, Building a Boot Image </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Application Profiling </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Building a QNX Boot/OS Image </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Code Coverage </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Comparing QNX IPC Methods </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Inter-Process Communication </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Momentics Development Basics (formerly named Compiling and Debugging in QNX SDP 7.x) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Debugging Memory Problems </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Editing and Compiling </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> File System Resource Managers </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Writing a Resource Manager </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Further Topics for Resource Managers </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Processes, Threads and Synchronization, Introduction to Resource Managers or Writing a Resource Manager </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> High Availability </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> IDE Basics </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Inter-Process Communication </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Processes, Threads and Synchronization </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Interrupts </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Inter-Process Communication (recommended) </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Introduction to Hardware Programming </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Introduction to Security Policies (QNX SDP 8.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Introduction to Resource Managers </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Inter-Process Communication </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> I/O </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> I/O Exercises </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> I/O, Introduction to Resource Managers or Writing a Resource Manager </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Managing C/C++ Projects (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Migrating from QNX 7 to QNX 8 </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Real-Time Programming for QNX OS course </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> More on Threads and Synchronization </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Processes, Threads and Synchronization </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Multicore Processing (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> POSIX IPC in QNX </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Processes, Threads and Synchronization </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX® Hypervisor Overview (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX OS Architecture </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX OS Programming Basics </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> None </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX Security </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Running and Debugging </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> IDE Basics or Momentics Development Basics </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> System Profiling </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX Neutrino OS Architecture, <br />Inter-Process Communication </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Time </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Inter-Process Communication (recommended) </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Writing a character (e.g. serial) driver </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> Introduction to Resource Managers </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Writing a Resource Manager </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> QNX OS Architecture, Inter-Process Communication </div> </td> </tr> </tbody> </table> <table class="cylance-mod-c1__table mobile"> <tbody> <tr class="cylance-mod-c1__table-row"> <th colspan="2" class="cylance-mod-c1__table-header"> Duration </th> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Adaptive Partitioning Scheduler (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Application Profiling </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Building a QNX Boot/OS Image </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Code Coverage </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Comparing QNX IPC Methods </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 0.5 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Momentics Development Basics (formerly named Compiling and Debugging in QNX SDP 7.x) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Debugging Memory Problems </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Editing and Compiling </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> File System Resource Managers </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Further Topics for Resource Managers </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 6 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> High Availability </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> IDE Basics </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Inter-Process Communication </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 9 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Interrupts </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Introduction to Hardware Programming </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Introduction to Security Policies (QNX SDP 8.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 0.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Introduction to Resource Managers </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> I/O </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> I/O Exercises </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1.5 to 4 hours (depends on depth of exercises, to be agreed with instructor) </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Managing C/C++ Projects (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Migrating from QNX 7 to QNX 8 </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 4 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> More on Threads and Synchronization </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Multicore Processing (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> POSIX IPC in QNX </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Processes, Threads and Synchronization </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 4 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX® Hypervisor Overview (QNX SDP 7.x only) </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX OS Architecture </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 4.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX OS Programming Basics </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> QNX Security </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 8 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Running and Debugging </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 2.5 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> System Profiling </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3.5 to 6 hours (depends on depth of exercises, to be agreed with instructor) </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Time </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 3 hours </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Writing a character (e.g. serial) driver </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 1 hour </div> </td> </tr> <tr class="cylance-mod-c1__table-row"> <td class="cylance-mod-c1__table-cell"> Writing a Resource Manager </td> <td class="cylance-mod-c1__table-cell cylance-mod-c1__table-cell-center"> <div class="inline-text"> 7 hours </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> </section> </div> <div class="cylance-t11"> <div class="cylance-mod-t11 cylance-mod-container-headline content--dark py-lg-Select One"> <div class="container"> <div class="cylance-mod-t11__contain"> <div class="row"> <div class="col-sm-12 col-md-6 col-lg-5"> <h2 class="cylance-mod-headline">DATES AND LOCATIONS</h2> </div> </div> <div class="cylance-mod-body-copy no-margin-bottom"> All BlackBerry QNX training courses are hands-on, instructor led using real-world examples to give your development team the grounding they need in QNX best practices so that you get the most out of your investment. </div> <div class="row"> <div class="col-sm-12"> <a data-componentmodid="t11" data-ctahhierarchy="primary" class="cta cta-primary cta-big" href="/en/services/training/schedule"> <span class="cta__bullet-icon"></span>Course Schedule </a> </div> </div> </div> </div> </div> </div> </div> <footer class="page__position page__footer"> <div class="footer"><footer class='footerv1'> <section id="footer" class="section panel bgTransparent font-colour--black align-items-center section-height--full " data-title="Footer" data-section-name="footer"> <div class="section-body container align-center "> <div class="row "> <div class="col "> <div class="row align-items-center "> <div class=" col-md-4dot8 col-lg-4dot8 "> <style>.socialLinksv1 { list-style: none; } .socialLinksv1 li { display: inline-block; }</style> <ul class="socialLinksv1"> <li> <a href="https://twitter.com/QNX_News" target="_blank" class="socialLink" rel="noopener" aria-label="X"> <span class="svgIcon-social tw"> <svg class="twitter" width="28" height="28" viewBox="0 0 1200 1227"> <title>X</title> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z" fill="#000"/> </svg> </span> </a> </li> <li> <a href="https://www.linkedin.com/company/blackberryqnx" target="_blank" class="socialLink" rel="noopener"> <span class="svgIcon-social li"> <svg version="1.1" focusable="false" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 448 512" style="enable-background:new 0 0 448 512;" xml:space="preserve"> <title>LinkedIn</title> <style type="text/css">.linkedin { fill: #000000; }</style> <path class="linkedin" d="M416,32H31.9C14.3,32,0,46.5,0,64.3v383.4C0,465.5,14.3,480,31.9,480H416c17.6,0,32-14.5,32-32.3V64.3C448,46.5,433.6,32,416,32z M135.4,416H69V202.2h66.5V416H135.4z M102.2,173c-21.3,0-38.5-17.3-38.5-38.5S80.9,96,102.2,96c21.2,0,38.5,17.3,38.5,38.5C140.7,155.8,123.5,173,102.2,173z M384.3,416h-66.4V312c0-24.8-0.5-56.7-34.5-56.7c-34.6,0-39.9,27-39.9,54.9V416h-66.4V202.2h63.7v29.2h0.9c8.9-16.8,30.6-34.5,62.9-34.5c67.2,0,79.7,44.3,79.7,101.9V416z"/> </svg> </span> </a> </li> <li> <a href="https://www.youtube.com/qnxcam" target="_blank" class="socialLink" rel="noopener"> <span class="svgIcon-social yt"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 576 512" style="enable-background:new 0 0 576 512;" xml:space="preserve"> <title>YouTube</title> <style type="text/css">.youtube { fill: #000000; }</style> <path class="youtube" d="M549.7,124.1c-6.3-23.7-24.8-42.3-48.3-48.6C458.8,64,288,64,288,64S117.2,64,74.6,75.5c-23.5,6.3-42,24.9-48.3,48.6c-11.4,42.9-11.4,132.3-11.4,132.3s0,89.4,11.4,132.3c6.3,23.6,24.8,41.5,48.3,47.8C117.2,448,288,448,288,448s170.8,0,213.4-11.5c23.5-6.3,42-24.2,48.3-47.8c11.4-42.9,11.4-132.3,11.4-132.3S561.1,166.9,549.7,124.1z M232.1,337.6V175.2l142.7,81.2L232.1,337.6L232.1,337.6z"/> </svg> </span> </a> </li> </ul> </div> <div class=" col-md-2dot4 col-lg-2dot4 "> <div id="text-d83a7f1d4e" class="cmp-text"> <p><a href="https://blackberry.qnx.com/en/company/contact">CONTACT US</a></p> </div> </div> <div class=" col-md-2dot4 col-lg-2dot4 "> <div id="text-4c098ae82f" class="cmp-text"> <p><a href="https://blackberry.qnx.com/en/support">SUPPORT</a></p> </div> </div> <div class=" col-md-2dot4 col-lg-2dot4 "> <div id="text-9b96ec15b0" class="cmp-text"> <p><a href="https://www.blackberry.com/us/en/company/careers" target="_blank">CAREERS</a></p> </div> </div> </div> <div class="row "> <div class=" col-md-12 col-lg-12 "> <div id="text-c03f5af94d" class="cmp-text"> <p></p><hr /><p></p> </div> </div> </div> <div class="row "> <div class=" col-md-2dot4 col-lg-2dot4 "> <div id="text-ce13866644" class="cmp-text"> <h3>Company</h3> <ul> <li><a href="https://blackberry.qnx.com/en/company">About BlackBerry QNX</a></li> <li><a href="https://blackberry.qnx.com/en/resource-center/qnx-autonomous-vehicle-innovation-centre">Autonomous Vehicle Innovation Centre</a></li> <li><a href="https://blackberry.qnx.com/en/developers/certifications">Certifications</a></li> <li><a href="https://blackberry.qnx.com/en/resource-center/events-and-webinars">Events & Webinars</a></li> <li><a href="https://www.blackberry.com/us/en/company/newsroom" target="_blank" style="background-color: rgb(255,255,255);">News</a></li> <li><a href="https://blackberry.qnx.com/en/company/qnx-in-education">QNX-in-Education</a></li> <li><a href="https://www.blackberry.com/us/en/company/careers" target="_blank">Careers</a></li> </ul> </div> </div> <div class=" col-md-2dot4 col-lg-2dot4 "> <div id="text-b707ab700e" class="cmp-text"> <h3>Developer</h3> <ul> <li><a href="https://blackberry.qnx.com/en/support">Overview</a></li> <li><a href="https://www.qnx.com/download/group.html?programid=29178" target="_blank">QNX Software Center</a></li> <li><a href="https://blackberry.qnx.com/en/support/qnx-evaluation-license">Free 30-Day Evaluation</a></li> <li><a href="https://blackberry.qnx.com/en/developers/board-support-packages">Board Support Packages</a></li> <li><a href="https://www.qnx.com/account/tslogin.html" target="_blank">Support Portal</a></li> <li><a href="https://blackberry.qnx.com/en/support">Support Options</a></li> <li><a href="https://www.qnx.com/support/knowledgebase.html" target="_blank">Knowledge Base</a></li> <li><a href="https://www.qnx.com/download/group.html?programid=7807" target="_blank">Products & Updates</a></li> <li><a href="https://blackberry.qnx.com/en/developers/security-reporting">Report a Security Issue</a></li> </ul> </div> </div> <div class=" col-md-2dot4 col-lg-2dot4 "> <div id="text-3f2b4432de" class="cmp-text"> <h3>Partners</h3> <ul> <li><a href="https://blackberry.qnx.com/en/partners/qnx-partner-directory" target="_blank">Partners Directory</a></li> </ul> </div> </div> <div class=" col-md-2dot4 col-lg-2dot4 "> <div id="text-4e7b5245e6" class="cmp-text"> <h3>Legal</h3> <ul> <li><a href="https://www.blackberry.com/us/en/legal/privacy-policy" target="_blank">Privacy Policy</a></li> </ul> </div> </div> <div class="col "> <div id="text-0e7c47ebc4" class="cmp-text"> <h3>Languages</h3> </div> <select id="language-picker" class="language-picker form-control" title="Select Language"> <option value="/en">English</option> <option value="/zh">中文</option> <option value="/ja">日本語</option> </select> </div> </div> <div class="row "> <div class=" col-md-12 col-lg-12 "> <div id="text-b6fb6c9d3d" class="cmp-text"> <p> </p> <p>© 2024 BlackBerry Limited. All rights reserved.</p> </div> </div> </div> </div> </div> </div> </section> </footer></div> </footer> </div> <script src="/etc.clientlibs/blackberry/clientlibs/clientlib-core.min.js"></script> <script src="/etc.clientlibs/cylance-web/clientlibs/clientlib-all.min.js"></script> </body> </html>