cdocutils.nodes document q)q}q(U nametypesq}q(X$demo-rtos-template-application-labelqXbig data ipc exampleqNXknown issues and limitationsqNXsoftware and tools setupq NXresultsq NXhow to build the demoq NX running-pdk-led_test.bin-exampleq X*how-to-build-the-cmb-library-and-unit-testq Xlinux-kernel-modificationsqXam437xqXhow to run the exampleqNXusing makefileqNX&setup environment variables in windowsqNXtrouble shootingqNXmemory-reservationqXhardware setupqNX*run-time reconfiguration (in windows only)qNXbuilding the demoqNXhost applicationsqNX(how to read the input/output audio filesqNXterminal screenshotqNX k2g-evm-1qX known issuesqNX5task 4 - loading and running the template applicationqNXbuildqXdemo-simplelink-wifi-demo-labelqX cmb addonq NXarm cortex-a53q!NX/import raw audio data file using adobe auditionq"NXfrontq#NXjailhouse hypervisorq$NXbuild-environment-setupq%Xframework for multicoreq&NXrunning the applicationq'NXload and run pre-built binariesq(NXrtos-pdk-inmatesq)Xarm9q*NXjailhouse-performance-on-am5728q+Xjailhouse-internalsq,X am437x evmq-XDhow to build the simplelink wifi plugin demo using makefile on linuxq.NXc6678 evm or c6657 evmq/NX arm cortex-a9q0NX source filesq1NXadditional informationq2NX gic-interrupt-inputs-reservationq3Xam57xq4Xdisplay outputq5NXno os (bare metal) exampleq6NXsupported platformsq7NX can to ethq8NXsoftware dependenciesq9NXbackq:NXsoftware designq;NX$benchmark app output on uart consoleqNXdirectory structureq?NXknown issues & limitationsq@NX+task 5 - examining the template applicationqANXprocessor-sdk rtosqBNXhow to run the benchmarksqCNXsimplelink wifi demoqDNXtoolsqENXtask 3 - hardware setupqFNXhow to run the demoqGNXsoftware featuresqHNXam65xqIXam572x gp evm (using sbl)qJNXrunning-bare-metal-ti-app.binqKXinterrupt latency benchmarkqLNXfile based demoqMNX$setup environment variables in linuxqNNXusing ccs projectsqONXarchitecture updates for linuxqPNX(memory placement of instruction and dataqQNXti-rtos kernel exampleqRNXthe app.c fileqSNXdsp c66xqTNXarchitecture overviewqUNXposix-smp demoqVNXrtos-bios-examplesqWX.task 1 - installing the processor sdk into ccsqXNXmemory layout detailsqYNXrecommended training videosqZNXadditional resourcesq[NXk2g evm (boot from sd card)q\NX arm cortex-a8q]NXhow to build the benchmarksq^NX0using sd card (supported only on am57xx and k2g)q_NX omap-l137-evmq`Xterminal screen-shotqaNXperformance audio demoqbNXcomponents usedqcNXsupportqdNXsoftwareqeNXoverviewqfX6how to build the simplelink wifi plugin demo using ccsqgNXomap-l137 evm (using ccs)qhNXk2g evmqiNXsupported hardwareqjNXtemplate application overviewqkNX linux-hostqlXgravity simulator demoqmNXk2h, k2k, k2l, k2e boardsqnNXhost linux exampleqoNXthe main.c fileqpNXrunning-the-demo-on-am572x-evmqqXsecondary bootloader (sbl)qrNXaudio benchmark starterkitqsNX am654x evmqtX8single-precision-fir-dspf_sp_fir_cplx-complex-fir-filterquX introductionqvX6cache configuration for code/data sections in sram/ddrqwNXsercos iii softmasterqxNX8task 2 - importing and building the template applicationqyNXhardware-modules-reservationqzXframework-for-unit-testq{Xset upq|NXFhow to build the simplelink wifi plugin demo using makefile on windowsq}NXk2g evm (using ccs)q~NXversion detailsqNXuseful referencesqNXam65x evm/idk board set upqNX,building-and-running-the-ethercat-slave-demoqXarm cortex-a15qNXconnecting to the targetqNXimage processing demoqNXsoftware-designqXomap-l137-evm-1qXporting to a custom boardqNX usage notesqNX using ccsqNXdelete the code you don't needqNXconfiguring device clocksqNXcan-eth gatway demoqNXoptional setup for hdmiqNXk2g-evmqXpre-built-componentsqX"framework for audio pre-processingqNXam572x gp evm (using ccs)qNX*benchmarking using dsp tsch/tscl registersqNX am572x evmqX omap-l137 evmqNX4how to run the simplelink wifi plugin demo using ccsqNXrebuild the demoqNX windows-hostqX procedureqX c6678 evmqNX'simple buffer example: program sequenceqNXbuilding-jailhouse-from-sourcesqXhow to re-build the exampleqNXgeneral-porting-notesqX arm cortex-r5qNXdemoqXbare-metal-inmate-exampleqXhardwareqNXk2g audio dc addonqNXcompiler optimization flagsqNXbenchmark resultsqNXrtos-bios-porting-notesqXrunning the demoqNXbenchmark loggingqNX requirementsqXquickstart with how-to-videoqNX dsp c674xqNX:how to run the simplelink wifi plugin demo using uart bootqNXbare-metal-exampleqX#benchmark starterkit implementationqNXhost rtos exampleqNXcircular microphone board demoqNXhow to rebuild the demoqNXam57xx & k2g boardsqNXadd new application codeqNX c6657 evmqNXtemplate application workshopqNX dhrystoneqNXlabqNXroot-cell-configurationqX soc integration and optimizationqNX#add support for additional featuresqNX am335x evmqX next stepsqNXrunning-the-demo-on-am572x-idkqXcsingle-precision-iir-tisigcascadebiquadsp_2c_3s_kernel-cascade-biquad-filter-for-multichannel-inputqXhow-to-run-the-unit-testqX eth to canqNXbefore and after comparisonqNXaudio pre-processing demoqNXprocessor-sdk linuxqNX prerequisitesqNXam335xqňXk2h evmqNX more about processing algorithmsqNXccsqNXpcan tool set upqNXpre-requisitesqʈXsource-files-1qˈX=single-precision-fft-dspf_sp_fftspxsp-mixed-radix-forward-fftq̈X0task 6 - modifying the rtos template applicationqNXuseful resourcesqNX arm cortex-m4qNX.signal-processing-functions-used-in-starterkitqЈXload and run the demoqNXhow-to-build-the-unit-testq҈uUsubstitution_defsq}q(X terminateqcdocutils.nodes substitution_definition q)q}q(U rawsourceqX6.. |terminate| image:: ../images/terminate-button.png Uparentqcdocutils.nodes section q)q}q(hUhh)q}q(hUhh)q}q(hUhh)q}q(hUhhUsourceqXS/home/gtbldadm/nightlybuilds/processor-sdk-doc/source/rtos/index_examples_demos.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq]qUtemplate-application-workshopqaUnamesq]qhauUlineqKUdocumentqhUchildrenq]q(cdocutils.nodes title q)q}q(hXTemplate Application WorkshopqhhhhhUtitleqh}q(h]h]h]h]h]uhKhhh]qcdocutils.nodes Text qXTemplate Application Workshopqq}r(hhhhubaubcdocutils.nodes target r)r}r(hX).. _Demo-RTOS-Template-Application-label:hhhhhUtargetrh}r(h]h]h]h]rU$demo-rtos-template-application-labelrah]rhauhKhhh]ubcdocutils.nodes comment r )r }r (hXGhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Template_Apphhhcdocutils.nodes reprunicode r XAsource/rtos/Examples_and_Demonstrations/RTOS_Template_App.rst.incr r}rbhUcommentrh}r(U xml:spacerUpreserverh]h]h]h]h]uhKhhh]rhXGhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Template_Apprr}r(hUhj ubaubh)r}r(hUU referencedrKhhhjhhh}r(h]rX introductionrah]h]h]rU introductionrah]uhKhhh]r (h)r!}r"(hX Introductionr#hjhjhhh}r$(h]h]h]h]h]uhKhhh]r%hX Introductionr&r'}r((hj#hj!ubaubcdocutils.nodes note r))r*}r+(hXThis workshop duplicates information found elsewhere in the RTOS Software Developer Guide for the purpose of creating a cohesive document.hjhjhUnoter,h}r-(h]h]h]h]h]uhNhhh]r.cdocutils.nodes paragraph r/)r0}r1(hXThis workshop duplicates information found elsewhere in the RTOS Software Developer Guide for the purpose of creating a cohesive document.r2hj*hjhU paragraphr3h}r4(h]h]h]h]h]uhKh]r5hXThis workshop duplicates information found elsewhere in the RTOS Software Developer Guide for the purpose of creating a cohesive document.r6r7}r8(hj2hj0ubaubaubj/)r9}r:(hXThis workshop is a simple introduction for software development using Processor SDK RTOS. The goal of this workshop is to get you familiarized with Processor SDK RTOS and introduce you to using Sitara Evaluation Modules (EVMs) and TI tools.r;hjhjhj3h}r<(h]h]h]h]h]uhK hhh]r=hXThis workshop is a simple introduction for software development using Processor SDK RTOS. The goal of this workshop is to get you familiarized with Processor SDK RTOS and introduce you to using Sitara Evaluation Modules (EVMs) and TI tools.r>r?}r@(hj;hj9ubaubj/)rA}rB(hXTo accomplish this goal, we will work through an interactive lab using the RTOS/Bare-metal Template Application. This application will introduce key concepts of the SDK and serves as the starting point for creating your own application.rChjhjhj3h}rD(h]h]h]h]h]uhKhhh]rEhXTo accomplish this goal, we will work through an interactive lab using the RTOS/Bare-metal Template Application. This application will introduce key concepts of the SDK and serves as the starting point for creating your own application.rFrG}rH(hjChjAubaubj/)rI}rJ(hX6Here's what we will learn over the course of this lab:rKhjhjhj3h}rL(h]h]h]h]h]uhKhhh]rMhX6Here's what we will learn over the course of this lab:rNrO}rP(hjKhjIubaubcdocutils.nodes bullet_list rQ)rR}rS(hUhjhjhU bullet_listrTh}rU(UbulletrVX-h]h]h]h]h]uhKhhh]rW(cdocutils.nodes list_item rX)rY}rZ(hXVBasic usage of Code Composer Studio (CCS) - Importing - Editing - Building - FlashinghjRhNhU list_itemr[h}r\(h]h]h]h]h]uhNhhh]r](j/)r^}r_(hX)Basic usage of Code Composer Studio (CCS)r`hjYhjhj3h}ra(h]h]h]h]h]uhKh]rbhX)Basic usage of Code Composer Studio (CCS)rcrd}re(hj`hj^ubaubjQ)rf}rg(hUh}rh(jVX-h]h]h]h]h]uhjYh]ri(jX)rj}rk(hX Importingrlh}rm(h]h]h]h]h]uhjfh]rnj/)ro}rp(hjlhjjhjhj3h}rq(h]h]h]h]h]uhKh]rrhX Importingrsrt}ru(hjlhjoubaubahj[ubjX)rv}rw(hXEditingrxh}ry(h]h]h]h]h]uhjfh]rzj/)r{}r|(hjxhjvhjhj3h}r}(h]h]h]h]h]uhKh]r~hXEditingrr}r(hjxhj{ubaubahj[ubjX)r}r(hXBuildingrh}r(h]h]h]h]h]uhjfh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXBuildingrr}r(hjhjubaubahj[ubjX)r}r(hXFlashingrh}r(h]h]h]h]h]uhjfh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXFlashingrr}r(hjhjubaubahj[ubehjTubeubjX)r}r(hXProcessor SDK RTOS Software - Low level drivers (LLDs) such as UART, GPIO, etc. - Operating System Abstraction Layer (OSAL) - Board library hjRhNhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hXProcessor SDK RTOS Softwarerhjhjhj3h}r(h]h]h]h]h]uhKh]rhXProcessor SDK RTOS Softwarerr}r(hjhjubaubjQ)r}r(hUh}r(jVX-h]h]h]h]h]uhjh]r(jX)r}r(hX1Low level drivers (LLDs) such as UART, GPIO, etc.rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX1Low level drivers (LLDs) such as UART, GPIO, etc.rr}r(hjhjubaubahj[ubjX)r}r(hX)Operating System Abstraction Layer (OSAL)rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX)Operating System Abstraction Layer (OSAL)rr}r(hjhjubaubahj[ubjX)r}r(hXBoard library h}r(h]h]h]h]h]uhjh]rj/)r}r(hX Board libraryrhjhjhj3h}r(h]h]h]h]h]uhKh]rhX Board libraryrr}r(hjhjubaubahj[ubehjTubeubeubcdocutils.nodes line_block r)r}r(hUhjhjhU line_blockrh}r(h]h]h]h]h]uhK hhh]rcdocutils.nodes line r)r}r(hUUindentrKhjhjhhh}r(h]h]h]h]h]uhKhhh]ubaubeubh)r}r(hUhhhjhhh}r(h]h]h]h]rU prerequisitesrah]rhauhK#hhh]r(h)r}r(hX Prerequisitesrhjhjhhh}r(h]h]h]h]h]uhK#hhh]rhX Prerequisitesrr}r(hjhjubaubh)r}r(hUhjhjhhh}r(h]h]h]h]rUsoftwarerah]rheauhK&hhh]r(h)r}r(hXSoftwarerhjhjhhh}r(h]h]h]h]h]uhK&hhh]rhXSoftwarerr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK'hhh]r(jX)r}r(hX Processor SDK RTOS for your platform - `AM335x `_ - `AM437x `_ - `AM57x `_ - `AM65x `_ hjhNhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hX$Processor SDK RTOS for your platformrhjhjhj3h}r(h]h]h]h]h]uhK'h]rhX$Processor SDK RTOS for your platformrr}r(hjhjubaubjQ)r}r(hUh}r (jVX-h]h]h]h]h]uhjh]r (jX)r }r (hX7`AM335x `_r h}r(h]h]h]h]h]uhjh]rj/)r}r(hj hj hjhj3h}r(h]h]h]h]h]uhK)h]r(cdocutils.nodes reference r)r}r(hj h}r(UnameXAM335xUrefurirX+http://www.ti.com/tool/PROCESSOR-SDK-AM335Xrh]h]h]h]h]uhjh]rhXAM335xrr}r(hUhjubahU referencerubj)r}r (hX. jKhjhjh}r!(Urefurijh]r"Uam335xr#ah]h]h]h]r$hauh]ubeubahj[ubjX)r%}r&(hX7`AM437x `_r'h}r((h]h]h]h]h]uhjh]r)j/)r*}r+(hj'hj%hjhj3h}r,(h]h]h]h]h]uhK*h]r-(j)r.}r/(hj'h}r0(UnameXAM437xjX+http://www.ti.com/tool/PROCESSOR-SDK-AM437Xr1h]h]h]h]h]uhj*h]r2hXAM437xr3r4}r5(hUhj.ubahjubj)r6}r7(hX. jKhj*hjh}r8(Urefurij1h]r9Uam437xr:ah]h]h]h]r;hauh]ubeubahj[ubjX)r<}r=(hX5`AM57x `_r>h}r?(h]h]h]h]h]uhjh]r@j/)rA}rB(hj>hj<hjhj3h}rC(h]h]h]h]h]uhK+h]rD(j)rE}rF(hj>h}rG(UnameXAM57xjX*http://www.ti.com/tool/PROCESSOR-SDK-AM57XrHh]h]h]h]h]uhjAh]rIhXAM57xrJrK}rL(hUhjEubahjubj)rM}rN(hX- jKhjAhjh}rO(UrefurijHh]rPUam57xrQah]h]h]h]rRh4auh]ubeubahj[ubjX)rS}rT(hX6`AM65x `_ h}rU(h]h]h]h]h]uhjh]rVj/)rW}rX(hX5`AM65x `_rYhjShjhj3h}rZ(h]h]h]h]h]uhK,h]r[(j)r\}r](hjYh}r^(UnameXAM65xjX*http://www.ti.com/tool/PROCESSOR-SDK-AM65Xr_h]h]h]h]h]uhjWh]r`hXAM65xrarb}rc(hUhj\ubahjubj)rd}re(hX- jKhjWhjh}rf(Urefurij_h]rgUam65xrhah]h]h]h]rihIauh]ubeubahj[ubehjTubeubjX)rj}rk(hXyCCS Version associated with your SDK Release - A download link for CCS is located on the same page as the SDK download. hjhNhj[h}rl(h]h]h]h]h]uhNhhh]rm(j/)rn}ro(hX,CCS Version associated with your SDK Releaserphjjhjhj3h}rq(h]h]h]h]h]uhK.h]rrhX,CCS Version associated with your SDK Releasersrt}ru(hjphjnubaubjQ)rv}rw(hUh}rx(jVX-h]h]h]h]h]uhjjh]ryjX)rz}r{(hXIA download link for CCS is located on the same page as the SDK download. h}r|(h]h]h]h]h]uhjvh]r}j/)r~}r(hXHA download link for CCS is located on the same page as the SDK download.rhjzhjhj3h}r(h]h]h]h]h]uhK0h]rhXHA download link for CCS is located on the same page as the SDK download.rr}r(hjhj~ubaubahj[ubahjTubeubeubj))r}r(hXIf you are using AM65x, you will also need to install latest TI Emulators and Sitara device support packages into CCS. This can be done through CCS --> Help --> Check for Updates.hjhjhj,h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXIf you are using AM65x, you will also need to install latest TI Emulators and Sitara device support packages into CCS. This can be done through CCS --> Help --> Check for Updates.rhjhjhj3h}r(h]h]h]h]h]uhK3h]rhXIf you are using AM65x, you will also need to install latest TI Emulators and Sitara device support packages into CCS. This can be done through CCS --> Help --> Check for Updates.rr}r(hjhjubaubaubeubh)r}r(hUhjhjhhh}r(h]h]h]h]rUhardwarerah]rhauhK8hhh]r(h)r}r(hXHardwarerhjhjhhh}r(h]h]h]h]h]uhK8hhh]rhXHardwarerr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK9hhh]r(jX)r}r(hXA supported Sitara Evaluation Module - `AM335x EVM `_ - `AM437x EVM `_ - `AM572x EVM `_ - `AM654x EVM `_ hjhNhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hX$A supported Sitara Evaluation Modulerhjhjhj3h}r(h]h]h]h]h]uhK9h]rhX$A supported Sitara Evaluation Modulerr}r(hjhjubaubjQ)r}r(hUh}r(jVX-h]h]h]h]h]uhjh]r(jX)r}r(hX2`AM335x EVM `_rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK;h]r(j)r}r(hjh}r(UnameX AM335x EVMjX"http://www.ti.com/tool/TMDXEVM3358rh]h]h]h]h]uhjh]rhX AM335x EVMrr}r(hUhjubahjubj)r}r(hX% jKhjhjh}r(Urefurijh]rU am335x-evmrah]h]h]h]rhauh]ubeubahj[ubjX)r}r(hX2`AM437x EVM `_rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKjKhjhjh}r(Urefurijh]rU am437x-evmrah]h]h]h]rh-auh]ubeubahj[ubjX)r}r(hX2`AM572x EVM `_rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK=h]r(j)r}r(hjh}r(UnameX AM572x EVMjX"http://www.ti.com/tool/TMDSEVM572Xrh]h]h]h]h]uhjh]rhX AM572x EVMrr}r(hUhjubahjubj)r}r(hX% jKhjhjh}r(Urefurijh]rU am572x-evmrah]h]h]h]rhauh]ubeubahj[ubjX)r}r(hX5`AM654x EVM `_ h}r(h]h]h]h]h]uhjh]rj/)r}r(hX4`AM654x EVM `_rhjhjhj3h}r(h]h]h]h]h]uhK>h]r(j)r}r(hjh}r(UnameX AM654x EVMjX$http://www.ti.com/tool/TMDX654IDKEVMrh]h]h]h]h]uhjh]rhX AM654x EVMrr }r (hUhjubahjubj)r }r (hX' jKhjhjh}r (Urefurijh]rU am654x-evmrah]h]h]h]rhtauh]ubeubahj[ubehjTubeubjX)r}r(hXJTAG Debug Probe if using AM572x EVM - XDS100-class JTAG debug probes - Low cost, low performance - XDS100v1 is not supported. - XDS200-class JTAG debug probes - Recommended - XDS560v2-class JTAG debug probes - High performancehjhNhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hX$JTAG Debug Probe if using AM572x EVMrhjhjhj3h}r(h]h]h]h]h]uhK@h]rhX$JTAG Debug Probe if using AM572x EVMrr}r(hjhjubaubjQ)r}r(hUh}r(jVX-h]h]h]h]h]uhjh]r (jX)r!}r"(hXXXDS100-class JTAG debug probes - Low cost, low performance - XDS100v1 is not supported.h}r#(h]h]h]h]h]uhjh]r$(j/)r%}r&(hXXDS100-class JTAG debug probesr'hj!hjhj3h}r((h]h]h]h]h]uhKBh]r)hXXDS100-class JTAG debug probesr*r+}r,(hj'hj%ubaubjQ)r-}r.(hUh}r/(jVX-h]h]h]h]h]uhj!h]r0(jX)r1}r2(hXLow cost, low performancer3h}r4(h]h]h]h]h]uhj-h]r5j/)r6}r7(hj3hj1hjhj3h}r8(h]h]h]h]h]uhKDh]r9hXLow cost, low performancer:r;}r<(hj3hj6ubaubahj[ubjX)r=}r>(hXXDS100v1 is not supported.r?h}r@(h]h]h]h]h]uhj-h]rAj/)rB}rC(hj?hj=hjhj3h}rD(h]h]h]h]h]uhKEh]rEhXXDS100v1 is not supported.rFrG}rH(hj?hjBubaubahj[ubehjTubehj[ubjX)rI}rJ(hX-XDS200-class JTAG debug probes - Recommendedh}rK(h]h]h]h]h]uhjh]rL(j/)rM}rN(hXXDS200-class JTAG debug probesrOhjIhjhj3h}rP(h]h]h]h]h]uhKFh]rQhXXDS200-class JTAG debug probesrRrS}rT(hjOhjMubaubjQ)rU}rV(hUh}rW(jVX-h]h]h]h]h]uhjIh]rXjX)rY}rZ(hX Recommendedr[h}r\(h]h]h]h]h]uhjUh]r]j/)r^}r_(hj[hjYhjhj3h}r`(h]h]h]h]h]uhKHh]rahX Recommendedrbrc}rd(hj[hj^ubaubahj[ubahjTubehj[ubjX)re}rf(hX4XDS560v2-class JTAG debug probes - High performanceh}rg(h]h]h]h]h]uhjh]rh(j/)ri}rj(hX XDS560v2-class JTAG debug probesrkhjehjhj3h}rl(h]h]h]h]h]uhKIh]rmhX XDS560v2-class JTAG debug probesrnro}rp(hjkhjiubaubjQ)rq}rr(hUh}rs(jVX-h]h]h]h]h]uhjeh]rtjX)ru}rv(hXHigh performancerwh}rx(h]h]h]h]h]uhjqh]ryj/)rz}r{(hjwhjuhjhj3h}r|(h]h]h]h]h]uhKKh]r}hXHigh performancer~r}r(hjwhjzubaubahj[ubahjTubehj[ubehjTubeubjX)r}r(hX*Serial UART cable provided in the EVM kit hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX)Serial UART cable provided in the EVM kitrhjhjhj3h}r(h]h]h]h]h]uhKLh]rhX)Serial UART cable provided in the EVM kitrr}r(hjhjubaubaubeubeubh)r}r(hUhjhjhhh}r(h]h]h]h]rUrecommended-training-videosrah]rhZauhKOhhh]r(h)r}r(hXRecommended Training Videosrhjhjhhh}r(h]h]h]h]h]uhKOhhh]rhXRecommended Training Videosrr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKPhhh]r(jX)r}r(hX`Processor SDK Training Series`__ - Introduction to the Processor SDK Training Series - Processor SDK Overview - Introduction to Processor SDK RTOS Part 1 - Introduction to Processor SDK RTOS Part 2 - Application Development Using Processor SDK RTOShjhNhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hX!`Processor SDK Training Series`__rhjhjhj3h}r(h]h]h]h]h]uhKPh]rj)r}r(hjUresolvedrKhjhjh}r(UnameXProcessor SDK Training SeriesjX5https://training.ti.com/processor-sdk-training-seriesrh]h]h]h]h]U anonymousrKuh]rhXProcessor SDK Training Seriesrr}r(hUhjubaubaubjQ)r}r(hUh}r(jVX-h]h]h]h]h]uhjh]r(jX)r}r(hX1Introduction to the Processor SDK Training Seriesrh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKRh]rhX1Introduction to the Processor SDK Training Seriesrr}r(hjhjubaubahj[ubjX)r}r(hXProcessor SDK Overviewrh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKSh]rhXProcessor SDK Overviewrr}r(hjhjubaubahj[ubjX)r}r(hX)Introduction to Processor SDK RTOS Part 1rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKTh]rhX)Introduction to Processor SDK RTOS Part 1rr}r(hjhjubaubahj[ubjX)r}r(hX)Introduction to Processor SDK RTOS Part 2rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKUh]rhX)Introduction to Processor SDK RTOS Part 2rr}r(hjhjubaubahj[ubjX)r}r(hX0Application Development Using Processor SDK RTOSrh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKVh]rhX0Application Development Using Processor SDK RTOSrr}r(hjhjubaubahj[ubehjTubeubjX)r}r(hX,`AM437x Sitara Processors Training Series`__rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKWh]rj)r}r(hjjKhjhjh}r(UnameX(AM437x Sitara Processors Training SeriesjX@https://training.ti.com/am437x-sitara-processors-training-seriesrh]h]h]h]h]jKuh]rhX(AM437x Sitara Processors Training Seriesrr}r(hUhjubaubaubaubjX)r}r(hX+`AM57x Sitara Processors Training Series`__rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r }r (hjhjhjhj3h}r (h]h]h]h]h]uhKXh]r j)r }r(hjjKhj hjh}r(UnameX'AM57x Sitara Processors Training SeriesjX?https://training.ti.com/am57x-sitara-processors-training-seriesrh]h]h]h]h]jKuh]rhX'AM57x Sitara Processors Training Seriesrr}r(hUhj ubaubaubaubjX)r}r(hX,`AM65x Sitara Processors Training Series`__ hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX+`AM65x Sitara Processors Training Series`__rhjhjhj3h}r(h]h]h]h]h]uhKYh]rj)r}r(hjjKhjhjh}r (UnameX'AM65x Sitara Processors Training SeriesjXhttps://training.ti.com/am6xr!h]h]h]h]h]jKuh]r"hX'AM65x Sitara Processors Training Seriesr#r$}r%(hUhjubaubaubaubeubj)r&}r'(hX8__ https://training.ti.com/processor-sdk-training-seriesjKhjhjhjh}r((jjh]r)Uid1r*ah]h]h]h]jKuhKbhhh]ubj)r+}r,(hXC__ https://training.ti.com/am437x-sitara-processors-training-seriesjKhjhjhjh}r-(jjh]r.Uid2r/ah]h]h]h]jKuhKchhh]ubj)r0}r1(hXB__ https://training.ti.com/am57x-sitara-processors-training-seriesjKhjhjhjh}r2(jjh]r3Uid3r4ah]h]h]h]jKuhKdhhh]ubj)r5}r6(hX__ https://training.ti.com/am6xjKhjhjhjh}r7(jj!h]r8Uid4r9ah]h]h]h]jKuhKehhh]ubj)r:}r;(hUhjhjhjh}r<(h]h]h]h]h]uhK`hhh]r=j)r>}r?(hUjKhj:hjhhh}r@(h]h]h]h]h]uhKhhh]ubaubeubeubh)rA}rB(hUhhhjhhh}rC(h]h]h]h]rDUtemplate-application-overviewrEah]rFhkauhKchhh]rG(h)rH}rI(hXTemplate Application OverviewrJhjAhjhhh}rK(h]h]h]h]h]uhKchhh]rLhXTemplate Application OverviewrMrN}rO(hjJhjHubaubj/)rP}rQ(hXThe Template Application is intended for customers to use as a starting point during software development using Processor SDK RTOS software. The Template Application can be quickly brought up by importing the included Code Composer Studio (CCS) project into the CCS development environment. The application currently includes the typical low level drivers such as UART, GPIO, and I2C, the OSAL layer, and Board Library. For additional details refer to the **README.txt** file in the installed package.hjAhjhj3h}rR(h]h]h]h]h]uhKdhhh]rS(hXThe Template Application is intended for customers to use as a starting point during software development using Processor SDK RTOS software. The Template Application can be quickly brought up by importing the included Code Composer Studio (CCS) project into the CCS development environment. The application currently includes the typical low level drivers such as UART, GPIO, and I2C, the OSAL layer, and Board Library. For additional details refer to the rTrU}rV(hXThe Template Application is intended for customers to use as a starting point during software development using Processor SDK RTOS software. The Template Application can be quickly brought up by importing the included Code Composer Studio (CCS) project into the CCS development environment. The application currently includes the typical low level drivers such as UART, GPIO, and I2C, the OSAL layer, and Board Library. For additional details refer to the hjPubcdocutils.nodes strong rW)rX}rY(hX**README.txt**h}rZ(h]h]h]h]h]uhjPh]r[hX README.txtr\r]}r^(hUhjXubahUstrongr_ubhX file in the installed package.r`ra}rb(hX file in the installed package.hjPubeubh)rc}rd(hUjKhjAhjhhh}re(h]rfXcomponents usedrgah]h]h]rhUcomponents-usedriah]uhKnhhh]rj(h)rk}rl(hXComponents Usedrmhjchjhhh}rn(h]h]h]h]h]uhKnhhh]rohXComponents Usedrprq}rr(hjmhjkubaubjQ)rs}rt(hUhjchjhjTh}ru(jVX-h]h]h]h]h]uhKphhh]rv(jX)rw}rx(hXSYS/BIOS (RTOS only)ryhjshjhj[h}rz(h]h]h]h]h]uhNhhh]r{j/)r|}r}(hjyhjwhjhj3h}r~(h]h]h]h]h]uhKph]rhXSYS/BIOS (RTOS only)rr}r(hjyhj|ubaubaubjX)r}r(hXXDCTools (RTOS only)rhjshjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKqh]rhXXDCTools (RTOS only)rr}r(hjhjubaubaubjX)r}r(hX.Processor SDK RTOS PDK - Drivers, OSAL, etc. hjshNhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hXProcessor SDK RTOS PDKrhjhjhj3h}r(h]h]h]h]h]uhKrh]rhXProcessor SDK RTOS PDKrr}r(hjhjubaubjQ)r}r(hUh}r(jVX-h]h]h]h]h]uhjh]rjX)r}r(hXDrivers, OSAL, etc. h}r(h]h]h]h]h]uhjh]rj/)r}r(hXDrivers, OSAL, etc.rhjhjhj3h}r(h]h]h]h]h]uhKth]rhXDrivers, OSAL, etc.rr}r(hjhjubaubahj[ubahjTubeubeubeubh)r}r(hUjKhjAhjhhh}r(h]rXsoftware designrah]h]h]rUsoftware-designrah]uhKwhhh]r(h)r}r(hXSoftware Designrhjhjhhh}r(h]h]h]h]h]uhKwhhh]rhXSoftware Designrr}r(hjhjubaubj/)r}r(hXsThe Template Application is designed to provide a foundational project with a clean separation of the application-specific submodule from the startup and initialization code. This gives users the ability to focus on application-specific code and quickly get it up and running. This separation is achieved by splitting the "main" and "app" submodules into different files.rhjhjhj3h}r(h]h]h]h]h]uhKyhhh]rhXsThe Template Application is designed to provide a foundational project with a clean separation of the application-specific submodule from the startup and initialization code. This gives users the ability to focus on application-specific code and quickly get it up and running. This separation is achieved by splitting the "main" and "app" submodules into different files.rr}r(hjhjubaubj/)r}r(hX+The source files are organized as follows::rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhX*The source files are organized as follows:rr}r(hX*The source files are organized as follows:hjubaubcdocutils.nodes literal_block r)r}r(hX└── template_app ├── baremetal │   ├── app.c --> Application tasks are here │   ├── app.h --> Application header file │   ├── baremetal_template_app_am572x_a15_evmAM572X.projectspec --> Project spec file | ├── main.c --> Main file which has board and driver init code │   ├── lnk_a15.cmd --> Linker command file. ├── GPIO_board.h --> Gpio board header ├── GPIO_evmAM572x_board.c --> Gpio board configuration └── rtos ├── app.c --> Application tasks are here ├── app.cfg --> Application specific config file ├── app.defs --> Definitions (Currently empty) ├── app.h --> Application header file ├── main.c --> Main file which has board and driver init cod ├── main.cfg --> Main BIOS config file └── rtos_template_app_am572x_a15_evmAM572X.projectspec --> Project spec filehjhjhU literal_blockrh}r(jjh]h]h]h]h]uhKhhh]rhX└── template_app ├── baremetal │   ├── app.c --> Application tasks are here │   ├── app.h --> Application header file │   ├── baremetal_template_app_am572x_a15_evmAM572X.projectspec --> Project spec file | ├── main.c --> Main file which has board and driver init code │   ├── lnk_a15.cmd --> Linker command file. ├── GPIO_board.h --> Gpio board header ├── GPIO_evmAM572x_board.c --> Gpio board configuration └── rtos ├── app.c --> Application tasks are here ├── app.cfg --> Application specific config file ├── app.defs --> Definitions (Currently empty) ├── app.h --> Application header file ├── main.c --> Main file which has board and driver init cod ├── main.cfg --> Main BIOS config file └── rtos_template_app_am572x_a15_evmAM572X.projectspec --> Project spec filerr}r(hUhjubaubj/)r}r(hXdIn general, to write a new application **app.c** and **app.h** can be modified, recompiled, and run.hjhjhj3h}r(h]h]h]h]h]uhKhhh]r(hX'In general, to write a new application rr}r(hX'In general, to write a new application hjubjW)r}r(hX **app.c**h}r(h]h]h]h]h]uhjh]rhXapp.crr}r(hUhjubahj_ubhX and rr}r(hX and hjubjW)r}r(hX **app.h**h}r(h]h]h]h]h]uhjh]rhXapp.hrr}r(hUhjubahj_ubhX& can be modified, recompiled, and run.rr}r(hX& can be modified, recompiled, and run.hjubeubj)r}r(hUhjhjhjh}r(h]h]h]h]h]uhKhhh]rj)r}r(hUjKhjhjhhh}r(h]h]h]h]h]uhKhhh]ubaubeubeubhh)r}r(hUhhhjhhh}r(h]h]h]h]rUadditional-informationrah]rh2auhMhhh]r(h)r}r(hXAdditional Informationrhjhjhhh}r(h]h]h]h]h]uhMhhh]rhXAdditional Informationrr}r(hjhjubaubh)r}r(hUhjhjhhh}r(h]h]h]h]rUporting-to-a-custom-boardr ah]r hauhMhhh]r (h)r }r (hXPorting to a Custom Boardrhjhjhhh}r(h]h]h]h]h]uhMhhh]rhXPorting to a Custom Boardrr}r(hjhj ubaubj/)r}r(hXThe Template Application can be easily modified to run on a custom board. The major change required is to link in a new Board Library. Modifying the Template Application for your custom Board can be achieved by simply removing the ``ti.board`` library and PATH from the project and replacing with your specific board libraty and PATH under the linker build options in CCS by right clicking on the project and selecting *Properties --> GNU Linker --> Libraries*.hjhjhj3h}r(h]h]h]h]h]uhMhhh]r(hXThe Template Application can be easily modified to run on a custom board. The major change required is to link in a new Board Library. Modifying the Template Application for your custom Board can be achieved by simply removing the rr}r(hXThe Template Application can be easily modified to run on a custom board. The major change required is to link in a new Board Library. Modifying the Template Application for your custom Board can be achieved by simply removing the hjubcdocutils.nodes literal r)r}r(hX ``ti.board``h}r(h]h]h]h]h]uhjh]rhXti.boardr r!}r"(hUhjubahUliteralr#ubhX library and PATH from the project and replacing with your specific board libraty and PATH under the linker build options in CCS by right clicking on the project and selecting r$r%}r&(hX library and PATH from the project and replacing with your specific board libraty and PATH under the linker build options in CCS by right clicking on the project and selecting hjubcdocutils.nodes emphasis r')r(}r)(hX)*Properties --> GNU Linker --> Libraries*h}r*(h]h]h]h]h]uhjh]r+hX'Properties --> GNU Linker --> Librariesr,r-}r.(hUhj(ubahUemphasisr/ubhX.r0}r1(hX.hjubeubj/)r2}r3(hXkFor example, currently the library linked for AM572x is specified in the **.projectspec** file as follows::hjhjhj3h}r4(h]h]h]h]h]uhMhhh]r5(hXIFor example, currently the library linked for AM572x is specified in the r6r7}r8(hXIFor example, currently the library linked for AM572x is specified in the hj2ubjW)r9}r:(hX**.projectspec**h}r;(h]h]h]h]h]uhj2h]r<hX .projectspecr=r>}r?(hUhj9ubahj_ubhX file as follows:r@rA}rB(hX file as follows:hj2ubeubj)rC}rD(hXslinkerBuildOptions= -L${TI_PDK_INSTALL_DIR}/packages/ti/board/lib/evmAM572x/a15/release/ -l:ti.board.aa15fghjhjhjh}rE(jjh]h]h]h]h]uhMhhh]rFhXslinkerBuildOptions= -L${TI_PDK_INSTALL_DIR}/packages/ti/board/lib/evmAM572x/a15/release/ -l:ti.board.aa15fgrGrH}rI(hUhjCubaubj))rJ}rK(hXCurrently for AM572x EVM there is also a dependemcy on the **GPIO_evmAM572x_board.c** and **GPIO_board.h** files. These files can be modified for your custom board.hjhjhj,h}rL(h]h]h]h]h]uhNhhh]rMj/)rN}rO(hXCurrently for AM572x EVM there is also a dependemcy on the **GPIO_evmAM572x_board.c** and **GPIO_board.h** files. These files can be modified for your custom board.hjJhjhj3h}rP(h]h]h]h]h]uhMh]rQ(hX;Currently for AM572x EVM there is also a dependemcy on the rRrS}rT(hX;Currently for AM572x EVM there is also a dependemcy on the hjNubjW)rU}rV(hX**GPIO_evmAM572x_board.c**h}rW(h]h]h]h]h]uhjNh]rXhXGPIO_evmAM572x_board.crYrZ}r[(hUhjUubahj_ubhX and r\r]}r^(hX and hjNubjW)r_}r`(hX**GPIO_board.h**h}ra(h]h]h]h]h]uhjNh]rbhX GPIO_board.hrcrd}re(hUhj_ubahj_ubhX: files. These files can be modified for your custom board.rfrg}rh(hX: files. These files can be modified for your custom board.hjNubeubaubeubeubh)ri}rj(hUhhhjhhh}rk(h]h]h]h]rlU next-stepsrmah]rnhauhMhhh]ro(h)rp}rq(hX Next Stepsrrhjihjhhh}rs(h]h]h]h]h]uhMhhh]rthX Next Stepsrurv}rw(hjrhjpubaubj/)rx}ry(hX3Thanks for taking the time to read through this getting started workshop. At this point you should be comfortable with the basic structure of the SDK, know how to import, build, modify, and run applications on the target, and know where to find various documentation in the SDK and Software Developer Guide.rzhjihjhj3h}r{(h]h]h]h]h]uhMhhh]r|hX3Thanks for taking the time to read through this getting started workshop. At this point you should be comfortable with the basic structure of the SDK, know how to import, build, modify, and run applications on the target, and know where to find various documentation in the SDK and Software Developer Guide.r}r~}r(hjzhjxubaubj/)r}r(hXNext, you can check out our various video training series in the `TI training portal`__, check out our `Examples and Demonstrations `__, and get started writing your own application!hjihjhj3h}r(h]h]h]h]h]uhMhhh]r(hXANext, you can check out our various video training series in the rr}r(hXANext, you can check out our various video training series in the hjubj)r}r(hX`TI training portal`__jKhjhjh}r(UnameXTI training portaljXhttps://training.ti.com/rh]h]h]h]h]jKuh]rhXTI training portalrr}r(hUhjubaubhX, check out our rr}r(hX, check out our hjubj)r}r(hX;`Examples and Demonstrations `__h}r(UnameXExamples and DemonstrationsjXindex_examples_demos.htmlh]h]h]h]h]uhjh]rhXExamples and Demonstrationsrr}r(hUhjubahjubhX/, and get started writing your own application!rr}r(hX/, and get started writing your own application!hjubeubj)r}r(hX__ https://training.ti.com/jKhjihjhjh}r(jjh]rUid12rah]h]h]h]jKuhMhhh]ubj/)r}r(hXIf you have any questions along the way please remember to read the `FAQ `__ or reach out to our engineers on the `E2E forums`__.hjihjhj3h}r(h]h]h]h]h]uhMhhh]r(hXDIf you have any questions along the way please remember to read the rr}r(hXDIf you have any questions along the way please remember to read the hjubj)r}r(hX`FAQ `__h}r(UnameXFAQjXindex_faq.htmlh]h]h]h]h]uhjh]rhXFAQrr}r(hUhjubahjubhX& or reach out to our engineers on the rr}r(hX& or reach out to our engineers on the hjubj)r}r(hX`E2E forums`__jKhjhjh}r(UnameX E2E forumsjXhttp://e2e.ti.com/rh]h]h]h]h]jKuh]rhX E2E forumsrr}r(hUhjubaubhX.r}r(hX.hjubeubj)r}r(hX__ http://e2e.ti.com/jKhjihjhjh}r(jjh]rUid13rah]h]h]h]jKuhMhhh]ubeubeubhjhhh}r(h]h]h]h]rUlabrah]rhauhKhhh]r(h)r}r(hXLabrhhhjhhh}r(h]h]h]h]h]uhKhhh]rhXLabrr}r(hjhjubaubj/)r}r(hXjNow that the introductory material is out of the way, it is time to get our hands dirty and begin the lab.rhhhjhj3h}r(h]h]h]h]h]uhKhhh]rhXjNow that the introductory material is out of the way, it is time to get our hands dirty and begin the lab.rr}r(hjhjubaubj))r}r(hXThe AM572x EVM was used for the creation of this lab material, but the same instructions apply for the other supported platforms -- AM335x EVM, AM437x EVM, and AM654x EVM.hhhjhj,h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXThe AM572x EVM was used for the creation of this lab material, but the same instructions apply for the other supported platforms -- AM335x EVM, AM437x EVM, and AM654x EVM.rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXThe AM572x EVM was used for the creation of this lab material, but the same instructions apply for the other supported platforms -- AM335x EVM, AM437x EVM, and AM654x EVM.rr}r(hjhjubaubaubh)r}r(hUhhhjhhh}r(h]h]h]h]rU,task-1-installing-the-processor-sdk-into-ccsrah]rhXauhKhhh]r(h)r}r(hX.Task 1 - Installing the Processor SDK into CCSrhjhjhhh}r(h]h]h]h]h]uhKhhh]rhX.Task 1 - Installing the Processor SDK into CCSrr}r(hjhjubaubj/)r}r(hXNBefore using the Processor SDK, we must install its components into Code Composer Studio (CCS). Typically -- if you chose to install the Software Development Kit (SDK) into the default **$HOME/ti** or **C:\\ti** location -- CCS will automatically detect the new products the next time it is opened and prompt you to install them. If you are not prompted to install the new products, you can do so manually through the *Window --> Preferences --> Code Composer Studio --> Products* menu. This menu will allow you define product discovery paths and rediscover, install, and unistall products.hjhjhj3h}r(h]h]h]h]h]uhKhhh]r(hXBefore using the Processor SDK, we must install its components into Code Composer Studio (CCS). Typically -- if you chose to install the Software Development Kit (SDK) into the default rr}r(hXBefore using the Processor SDK, we must install its components into Code Composer Studio (CCS). Typically -- if you chose to install the Software Development Kit (SDK) into the default hjubjW)r}r(hX **$HOME/ti**h}r(h]h]h]h]h]uhjh]rhX$HOME/tirr}r(hUhjubahj_ubhX or rr}r(hX or hjubjW)r}r(hX **C:\\ti**h}r(h]h]h]h]h]uhjh]rhXC:\tirr}r(hUhjubahj_ubhX location -- CCS will automatically detect the new products the next time it is opened and prompt you to install them. If you are not prompted to install the new products, you can do so manually through the r r }r (hX location -- CCS will automatically detect the new products the next time it is opened and prompt you to install them. If you are not prompted to install the new products, you can do so manually through the hjubj')r }r (hX>*Window --> Preferences --> Code Composer Studio --> Products*h}r(h]h]h]h]h]uhjh]rhX<Window --> Preferences --> Code Composer Studio --> Productsrr}r(hUhj ubahj/ubhXn menu. This menu will allow you define product discovery paths and rediscover, install, and unistall products.rr}r(hXn menu. This menu will allow you define product discovery paths and rediscover, install, and unistall products.hjubeubcdocutils.nodes image r)r}r(hXE.. image:: ../images/install-discovered-products.png :scale: 70 % hjhjhUimagerh}r(UscaleKFUuriX.rtos/../images/install-discovered-products.pngrh]h]h]h]U candidatesr}rU*jsh]uhNhhh]ubj/)r}r(hXFor more info on setting up CCS. Check out `Setup CCS for EVM and Processor-SDK RTOS `__ in the How To Guides.hjhjhj3h}r (h]h]h]h]h]uhKhhh]r!(hX+For more info on setting up CCS. Check out r"r#}r$(hX+For more info on setting up CCS. Check out hjubj)r%}r&(hXp`Setup CCS for EVM and Processor-SDK RTOS `__h}r'(UnameX(Setup CCS for EVM and Processor-SDK RTOSjXAindex_how_to_guides.html#setup-ccs-for-evm-and-processor-sdk-rtosh]h]h]h]h]uhjh]r(hX(Setup CCS for EVM and Processor-SDK RTOSr)r*}r+(hUhj%ubahjubhX in the How To Guides.r,r-}r.(hX in the How To Guides.hjubeubeubh)r/}r0(hUhhhjhhh}r1(h]h]h]h]r2U6task-2-importing-and-building-the-template-applicationr3ah]r4hyauhKhhh]r5(h)r6}r7(hX9Task 2 - Importing and Building the Template Applicationr8hj/hjhhh}r9(h]h]h]h]h]uhKhhh]r:hX9Task 2 - Importing and Building the Template Applicationr;r<}r=(hj8hj6ubaubj/)r>}r?(hXWe begin the lab by importing the RTOS or Bare-metal Template Application into CCS. The Template Application is delivered as a preconfigured CCS Project, making this process very simple. We will also use this as an opportunity to briefly dive into the structure of the SDK.r@hj/hjhj3h}rA(h]h]h]h]h]uhKhhh]rBhXWe begin the lab by importing the RTOS or Bare-metal Template Application into CCS. The Template Application is delivered as a preconfigured CCS Project, making this process very simple. We will also use this as an opportunity to briefly dive into the structure of the SDK.rCrD}rE(hj@hj>ubaubj/)rF}rG(hXLTo import a project into CCS, go to the *Project --> Import CCS Projects...* menu. Typically, you will import SDK projects from either the **pdk__** or **processor_sdk_rtos__** directories. The **pdk__** directory contains Chip Support Library (CSL), Low Level Drivers (LLDs), Boot, Diagnostics, and other functions. It is also where LLD example projects are created. The **processor_sdk_rtos__** directory contains demos (including the Template App), documentation, and resources for creating bootable SD cards.hj/hjhj3h}rH(h]h]h]h]h]uhKhhh]rI(hX(To import a project into CCS, go to the rJrK}rL(hX(To import a project into CCS, go to the hjFubj')rM}rN(hX$*Project --> Import CCS Projects...*h}rO(h]h]h]h]h]uhjFh]rPhX"Project --> Import CCS Projects...rQrR}rS(hUhjMubahj/ubhX? menu. Typically, you will import SDK projects from either the rTrU}rV(hX? menu. Typically, you will import SDK projects from either the hjFubjW)rW}rX(hX**pdk__**h}rY(h]h]h]h]h]uhjFh]rZhXpdk__r[r\}r](hUhjWubahj_ubhX or r^r_}r`(hX or hjFubjW)ra}rb(hX+**processor_sdk_rtos__**h}rc(h]h]h]h]h]uhjFh]rdhX'processor_sdk_rtos__rerf}rg(hUhjaubahj_ubhX directories. The rhri}rj(hX directories. The hjFubjW)rk}rl(hX**pdk__**h}rm(h]h]h]h]h]uhjFh]rnhXpdk__rorp}rq(hUhjkubahj_ubhX directory contains Chip Support Library (CSL), Low Level Drivers (LLDs), Boot, Diagnostics, and other functions. It is also where LLD example projects are created. The rrrs}rt(hX directory contains Chip Support Library (CSL), Low Level Drivers (LLDs), Boot, Diagnostics, and other functions. It is also where LLD example projects are created. The hjFubjW)ru}rv(hX+**processor_sdk_rtos__**h}rw(h]h]h]h]h]uhjFh]rxhX'processor_sdk_rtos__ryrz}r{(hUhjuubahj_ubhXt directory contains demos (including the Template App), documentation, and resources for creating bootable SD cards.r|r}}r~(hXt directory contains demos (including the Template App), documentation, and resources for creating bootable SD cards.hjFubeubj/)r}r(hXnNow that you have an understanding of these directories, let us move on to importing the Template Application.rhj/hjhj3h}r(h]h]h]h]h]uhKhhh]rhXnNow that you have an understanding of these directories, let us move on to importing the Template Application.rr}r(hjhjubaubj/)r}r(hX>To import a project into CCS open the *Project --> Import CCS Projects...* menu. Then click *Browse...* to locate the template app which can be found at: **processor_sdk_rtos__/demos/rtos_template_app///**. This will create a copy of the project in your CCS workspace.hj/hjhj3h}r(h]h]h]h]h]uhKhhh]r(hX&To import a project into CCS open the rr}r(hX&To import a project into CCS open the hjubj')r}r(hX$*Project --> Import CCS Projects...*h}r(h]h]h]h]h]uhjh]rhX"Project --> Import CCS Projects...rr}r(hUhjubahj/ubhX menu. Then click rr}r(hX menu. Then click hjubj')r}r(hX *Browse...*h}r(h]h]h]h]h]uhjh]rhX Browse...rr}r(hUhjubahj/ubhX3 to locate the template app which can be found at: rr}r(hX3 to locate the template app which can be found at: hjubjW)r}r(hXe**processor_sdk_rtos__/demos/rtos_template_app///**h}r(h]h]h]h]h]uhjh]rhXaprocessor_sdk_rtos__/demos/rtos_template_app///rr}r(hUhjubahj_ubhX?. This will create a copy of the project in your CCS workspace.rr}r(hX?. This will create a copy of the project in your CCS workspace.hjubeubj)r}r(hX<.. image:: ../images/import-ccs-project.png :scale: 70 % hj/hjhjh}r(UscaleKFUuriX%rtos/../images/import-ccs-project.pngrh]h]h]h]j}rU*jsh]uhNhhh]ubj/)r}r(hX After project import is complete you will see the Template Application under the *Project Explorer* on the left side of CCS. Next, right click on the project and select *Build Project*. You should get a message that says ``**** Build Finished ****`` in the CCS Console.hj/hjhj3h}r(h]h]h]h]h]uhKhhh]r(hXQAfter project import is complete you will see the Template Application under the rr}r(hXQAfter project import is complete you will see the Template Application under the hjubj')r}r(hX*Project Explorer*h}r(h]h]h]h]h]uhjh]rhXProject Explorerrr}r(hUhjubahj/ubhXF on the left side of CCS. Next, right click on the project and select rr}r(hXF on the left side of CCS. Next, right click on the project and select hjubj')r}r(hX*Build Project*h}r(h]h]h]h]h]uhjh]rhX Build Projectrr}r(hUhjubahj/ubhX%. You should get a message that says rr}r(hX%. You should get a message that says hjubj)r}r(hX``**** Build Finished ****``h}r(h]h]h]h]h]uhjh]rhX**** Build Finished ****rr}r(hUhjubahj#ubhX in the CCS Console.rr}r(hX in the CCS Console.hjubeubeubh)r}r(hUhhhjhhh}r(h]h]h]h]rUtask-3-hardware-setuprah]rhFauhKhhh]r(h)r}r(hXTask 3 - Hardware Setuprhjhjhhh}r(h]h]h]h]h]uhKhhh]rhXTask 3 - Hardware Setuprr}r(hjhjubaubcdocutils.nodes warning r)r}r(hXThe EVM board is sensitive to electrostatic discharges (ESD). Use a grounding strap or other device to prevent damaging the board. Be sure to connect communication cables before applying power to any equipment.hjhjhUwarningrh}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXThe EVM board is sensitive to electrostatic discharges (ESD). Use a grounding strap or other device to prevent damaging the board. Be sure to connect communication cables before applying power to any equipment.rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXThe EVM board is sensitive to electrostatic discharges (ESD). Use a grounding strap or other device to prevent damaging the board. Be sure to connect communication cables before applying power to any equipment.rr}r(hjhjubaubaubj/)r}r(hXHardware setup will vary depending on which EVM you are using. Generally, you need to make sure that the boot switches are set correctly and that serial, a JTAG debug probe, and power are connected to the board.rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhXHardware setup will vary depending on which EVM you are using. Generally, you need to make sure that the boot switches are set correctly and that serial, a JTAG debug probe, and power are connected to the board.rr}r(hjhjubaubj/)r}r(hXRefer to the Quick Start Guide that came with your board and the Hardware User's Guide for more detailed hardware setup information.rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhXRefer to the Quick Start Guide that came with your board and the Hardware User's Guide for more detailed hardware setup information.rr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]r(jX)r}r(hX:AM335x EVM: - `Quick Start Guide`__ - `HW User's Guide`__hjhNhj[h}r (h]h]h]h]h]uhNhhh]r (j/)r }r (hX AM335x EVM:r hjhjhj3h}r(h]h]h]h]h]uhKh]rhX AM335x EVM:rr}r(hj hj ubaubjQ)r}r(hUh}r(jVX-h]h]h]h]h]uhjh]r(jX)r}r(hX`Quick Start Guide`__rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rj)r }r!(hjjKhjhjh}r"(UnameXQuick Start GuidejX.http://www.ti.com/lit/ml/sprw225d/sprw225d.pdfr#h]h]h]h]h]jKuh]r$hXQuick Start Guider%r&}r'(hUhj ubaubaubahj[ubjX)r(}r)(hX`HW User's Guide`__r*h}r+(h]h]h]h]h]uhjh]r,j/)r-}r.(hj*hj(hjhj3h}r/(h]h]h]h]h]uhKh]r0j)r1}r2(hj*jKhj-hjh}r3(UnameXHW User's GuidejXPhttp://processors.wiki.ti.com/index.php/AM335x_General_Purpose_EVM_HW_User_Guider4h]h]h]h]h]jKuh]r5hXHW User's Guider6r7}r8(hUhj1ubaubaubahj[ubehjTubeubjX)r9}r:(hX:AM437x EVM: - `Quick Start Guide`__ - `HW User's Guide`__hjhNhj[h}r;(h]h]h]h]h]uhNhhh]r<(j/)r=}r>(hX AM437x EVM:r?hj9hjhj3h}r@(h]h]h]h]h]uhKh]rAhX AM437x EVM:rBrC}rD(hj?hj=ubaubjQ)rE}rF(hUh}rG(jVX-h]h]h]h]h]uhj9h]rH(jX)rI}rJ(hX`Quick Start Guide`__rKh}rL(h]h]h]h]h]uhjEh]rMj/)rN}rO(hjKhjIhjhj3h}rP(h]h]h]h]h]uhKh]rQj)rR}rS(hjKjKhjNhjh}rT(UnameXQuick Start GuidejX,http://www.ti.com/lit/ml/sprw256/sprw256.pdfrUh]h]h]h]h]jKuh]rVhXQuick Start GuiderWrX}rY(hUhjRubaubaubahj[ubjX)rZ}r[(hX`HW User's Guide`__r\h}r](h]h]h]h]h]uhjEh]r^j/)r_}r`(hj\hjZhjhj3h}ra(h]h]h]h]h]uhKh]rbj)rc}rd(hj\jKhj_hjh}re(UnameXHW User's GuidejXPhttp://processors.wiki.ti.com/index.php/AM437x_General_Purpose_EVM_HW_User_Guiderfh]h]h]h]h]jKuh]rghXHW User's Guiderhri}rj(hUhjcubaubaubahj[ubehjTubeubjX)rk}rl(hX:AM572x EVM: - `Quick Start Guide`__ - `HW User's Guide`__hjhNhj[h}rm(h]h]h]h]h]uhNhhh]rn(j/)ro}rp(hX AM572x EVM:rqhjkhjhj3h}rr(h]h]h]h]h]uhKh]rshX AM572x EVM:rtru}rv(hjqhjoubaubjQ)rw}rx(hUh}ry(jVX-h]h]h]h]h]uhjkh]rz(jX)r{}r|(hX`Quick Start Guide`__r}h}r~(h]h]h]h]h]uhjwh]rj/)r}r(hj}hj{hjhj3h}r(h]h]h]h]h]uhKh]rj)r}r(hj}jKhjhjh}r(UnameXQuick Start GuidejX,http://www.ti.com/lit/ug/sprw275/sprw275.pdfrh]h]h]h]h]jKuh]rhXQuick Start Guiderr}r(hUhjubaubaubahj[ubjX)r}r(hX`HW User's Guide`__rh}r(h]h]h]h]h]uhjwh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rj)r}r(hjjKhjhjh}r(UnameXHW User's GuidejX!http://www.ti.com/lit/pdf/spruig1rh]h]h]h]h]jKuh]rhXHW User's Guiderr}r(hUhjubaubaubahj[ubehjTubeubjX)r}r(hX#AM654x EVM - `Quick Start Guide`__ hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX"AM654x EVM - `Quick Start Guide`__hjhjhj3h}r(h]h]h]h]h]uhKh]r(hX AM654x EVM - rr}r(hX AM654x EVM - hjubj)r}r(hX`Quick Start Guide`__jKhjhjh}r(UnameXQuick Start GuidejX!http://www.ti.com/lit/pdf/sprw323rh]h]h]h]h]jKuh]rhXQuick Start Guiderr}r(hUhjubaubeubaubeubj)r}r(hX1__ http://www.ti.com/lit/ml/sprw225d/sprw225d.pdfjKhjhjhjh}r(jj#h]rUid5rah]h]h]h]jKuhKhhh]ubj)r}r(hXS__ http://processors.wiki.ti.com/index.php/AM335x_General_Purpose_EVM_HW_User_GuidejKhjhjhjh}r(jj4h]rUid6rah]h]h]h]jKuhKhhh]ubj)r}r(hX/__ http://www.ti.com/lit/ml/sprw256/sprw256.pdfjKhjhjhjh}r(jjUh]rUid7rah]h]h]h]jKuhKhhh]ubj)r}r(hXS__ http://processors.wiki.ti.com/index.php/AM437x_General_Purpose_EVM_HW_User_GuidejKhjhjhjh}r(jjfh]rUid8rah]h]h]h]jKuhKhhh]ubj)r}r(hX/__ http://www.ti.com/lit/ug/sprw275/sprw275.pdfjKhjhjhjh}r(jjh]rUid9rah]h]h]h]jKuhMhhh]ubj)r}r(hX$__ http://www.ti.com/lit/pdf/spruig1jKhjhjhjh}r(jjh]rUid10rah]h]h]h]jKuhMhhh]ubj)r}r(hX$__ http://www.ti.com/lit/pdf/sprw323jKhjhjhjh}r(jjh]rUid11rah]h]h]h]jKuhMhhh]ubj/)r}r(hX:Example connections for the AM572x EVM are provided below:rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhX:Example connections for the AM572x EVM are provided below:rr}r(hjhjubaubh)r}r(hUhjhjhhh}r(h]h]h]h]rUfrontrah]rh#auhMhhh]r(h)r}r(hXFrontrhjhjhhh}r(h]h]h]h]h]uhMhhh]rhXFrontrr}r(hjhjubaubj)r}r(hXC.. image:: ../images/am572x-evm-hw-setup-front.jpg :scale: 50 % hjhjhjh}r(UscaleK2UuriX,rtos/../images/am572x-evm-hw-setup-front.jpgrh]h]h]h]j}rU*jsh]uhNhhh]ubeubh)r}r(hUhjhjhhh}r(h]h]h]h]rUbackrah]rh:auhMhhh]r(h)r}r(hXBackrhjhjhhh}r(h]h]h]h]h]uhMhhh]rhXBackrr}r(hjhjubaubj)r}r(hXB.. image:: ../images/am572x-evm-hw-setup-back.jpg :scale: 44 % hjhjhjh}r(UscaleK,UuriX+rtos/../images/am572x-evm-hw-setup-back.jpgrh]h]h]h]j}rU*jsh]uhNhhh]ubeubeubhh)r}r(hUhhhjhhh}r(h]h]h]h]rU)task-5-examining-the-template-applicationrah]rhAauhMhhh]r (h)r }r (hX+Task 5 - Examining the Template Applicationr hjhjhhh}r (h]h]h]h]h]uhMhhh]rhX+Task 5 - Examining the Template Applicationrr}r(hj hj ubaubj/)r}r(hXpNow that you're familiar with using the Template Application, let us look into the code to see how it all works.rhjhjhj3h}r(h]h]h]h]h]uhMhhh]rhXpNow that you're familiar with using the Template Application, let us look into the code to see how it all works.rr}r(hjhjubaubh)r}r(hUhjhjhhh}r(h]h]h]h]rUthe-main-c-filerah]rhpauhMhhh]r (h)r!}r"(hXThe main.c Filer#hjhjhhh}r$(h]h]h]h]h]uhMhhh]r%hXThe main.c Filer&r'}r((hj#hj!ubaubj/)r)}r*(hXBegin by opening the **main.c** file. At the top of this file, after the copyright header, there are a series of ``#include`` statements gathering the necessary header files for the application:hjhjhj3h}r+(h]h]h]h]h]uhMhhh]r,(hXBegin by opening the r-r.}r/(hXBegin by opening the hj)ubjW)r0}r1(hX **main.c**h}r2(h]h]h]h]h]uhj)h]r3hXmain.cr4r5}r6(hUhj0ubahj_ubhXR file. At the top of this file, after the copyright header, there are a series of r7r8}r9(hXR file. At the top of this file, after the copyright header, there are a series of hj)ubj)r:}r;(hX ``#include``h}r<(h]h]h]h]h]uhj)h]r=hX#includer>r?}r@(hUhj:ubahj#ubhXE statements gathering the necessary header files for the application:rArB}rC(hXE statements gathering the necessary header files for the application:hj)ubeubj)rD}rE(hX/* Standard header files */ #include /* XDCtools Header files (RTOS only) */ #include #include #include #include /* BIOS Header files (RTOS only) */ #include #include /* Board header file */ #include /* Local template app header file */ #include "app.h"hjhjhjh}rF(UlinenosrGUlanguagerHXcjjh]h]h]Uhighlight_argsrI}h]h]uhMhhh]rJhX/* Standard header files */ #include /* XDCtools Header files (RTOS only) */ #include #include #include #include /* BIOS Header files (RTOS only) */ #include #include /* Board header file */ #include /* Local template app header file */ #include "app.h"rKrL}rM(hUhjDubaubjQ)rN}rO(hUhjhjhjTh}rP(jVX-h]h]h]h]h]uhMhhh]rQ(jX)rR}rS(hX(RTOS only) XDCtools provides configuration tools to create and build a static configuration as part of your application. These headers are necessary for the ``*.cfg`` configuration files.hjNhjhj[h}rT(h]h]h]h]h]uhNhhh]rUj/)rV}rW(hX(RTOS only) XDCtools provides configuration tools to create and build a static configuration as part of your application. These headers are necessary for the ``*.cfg`` configuration files.hjRhjhj3h}rX(h]h]h]h]h]uhMh]rY(hX(RTOS only) XDCtools provides configuration tools to create and build a static configuration as part of your application. These headers are necessary for the rZr[}r\(hX(RTOS only) XDCtools provides configuration tools to create and build a static configuration as part of your application. These headers are necessary for the hjVubj)r]}r^(hX ``*.cfg``h}r_(h]h]h]h]h]uhjVh]r`hX*.cfgrarb}rc(hUhj]ubahj#ubhX configuration files.rdre}rf(hX configuration files.hjVubeubaubjX)rg}rh(hXx(RTOS only) BIOS is a synonym for TI-RTOS. These headers are necessary for accessing common RTOS features such as tasks.hjNhjhj[h}ri(h]h]h]h]h]uhNhhh]rjj/)rk}rl(hXx(RTOS only) BIOS is a synonym for TI-RTOS. These headers are necessary for accessing common RTOS features such as tasks.rmhjghjhj3h}rn(h]h]h]h]h]uhMh]rohXx(RTOS only) BIOS is a synonym for TI-RTOS. These headers are necessary for accessing common RTOS features such as tasks.rprq}rr(hjmhjkubaubaubjX)rs}rt(hX/The Board Library is a thin utility layer on top of CSL and other board utilities. It provides uniform Application Programming Interfaces (APIs) for all supported boards. It aims to assist the user to quickly write portable applications for supported boards by hiding board level details from the user.hjNhjhj[h}ru(h]h]h]h]h]uhNhhh]rvj/)rw}rx(hX/The Board Library is a thin utility layer on top of CSL and other board utilities. It provides uniform Application Programming Interfaces (APIs) for all supported boards. It aims to assist the user to quickly write portable applications for supported boards by hiding board level details from the user.ryhjshjhj3h}rz(h]h]h]h]h]uhMh]r{hX/The Board Library is a thin utility layer on top of CSL and other board utilities. It provides uniform Application Programming Interfaces (APIs) for all supported boards. It aims to assist the user to quickly write portable applications for supported boards by hiding board level details from the user.r|r}}r~(hjyhjwubaubaubjX)r}r(hXThe ``app.h`` header file includes header files for drivers used in the application code as well as macros and function prototypes. Specifically, ``app.h`` includes headers for the following LLDs which are used by the application: .. code-block:: c /* Low level driver header files */ #include #include #include #include #include #include hjNhjhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hXThe ``app.h`` header file includes header files for drivers used in the application code as well as macros and function prototypes. Specifically, ``app.h`` includes headers for the following LLDs which are used by the application:hjhjhj3h}r(h]h]h]h]h]uhMh]r(hXThe rr}r(hXThe hjubj)r}r(hX ``app.h``h}r(h]h]h]h]h]uhjh]rhXapp.hrr}r(hUhjubahj#ubhX header file includes header files for drivers used in the application code as well as macros and function prototypes. Specifically, rr}r(hX header file includes header files for drivers used in the application code as well as macros and function prototypes. Specifically, hjubj)r}r(hX ``app.h``h}r(h]h]h]h]h]uhjh]rhXapp.hrr}r(hUhjubahj#ubhXK includes headers for the following LLDs which are used by the application:rr}r(hXK includes headers for the following LLDs which are used by the application:hjubeubcdocutils.nodes block_quote r)r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hX/* Low level driver header files */ #include #include #include #include #include #include hjhjhjh}r(jGjHXcjjh]h]h]jI}h]h]uhMh]rhX/* Low level driver header files */ #include #include #include #include #include #include rr}r(hUhjubaubahU block_quoterubeubeubj/)r}r(hXNext, we come across the ``main()`` function which demonstrates the common procedure for initializing an RTOS or bare-metal application. You can read the comments in the code for further clarification. Let's break down the steps:hjhjhj3h}r(h]h]h]h]h]uhMhhh]r(hXNext, we come across the rr}r(hXNext, we come across the hjubj)r}r(hX ``main()``h}r(h]h]h]h]h]uhjh]rhXmain()rr}r(hUhjubahj#ubhX function which demonstrates the common procedure for initializing an RTOS or bare-metal application. You can read the comments in the code for further clarification. Let's break down the steps:rr}r(hX function which demonstrates the common procedure for initializing an RTOS or bare-metal application. You can read the comments in the code for further clarification. Let's break down the steps:hjubeubcdocutils.nodes enumerated_list r)r}r(hUhjhjhUenumerated_listrh}r(UsuffixrU)h]h]h]UprefixrUh]h]UenumtyperUarabicruhMhhh]r(jX)r}r(hXInitialize the board:: Board_initCfg boardCfg; boardCfg = BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_MODULE_CLOCK | BOARD_INIT_UART_STDIO; Board_init(boardCfg); hjhjhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hXInitialize the board::hjhjhj3h}r(h]h]h]h]h]uhMh]rhXInitialize the board:rr}r(hXInitialize the board:hjubaubj)r}r(hXBoard_initCfg boardCfg; boardCfg = BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_MODULE_CLOCK | BOARD_INIT_UART_STDIO; Board_init(boardCfg);hjhjh}r(jjh]h]h]h]h]uhMh]rhXBoard_initCfg boardCfg; boardCfg = BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_MODULE_CLOCK | BOARD_INIT_UART_STDIO; Board_init(boardCfg);rr}r(hUhjubaubeubjX)r}r(hXUIntialize the peripherals:: UART_init(); I2C_init(); GPIO_init(); MCSPI_init(); hjhjhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hXIntialize the peripherals::hjhjhj3h}r(h]h]h]h]h]uhMh]rhXIntialize the peripherals:rr}r(hXIntialize the peripherals:hjubaubj)r}r(hX3UART_init(); I2C_init(); GPIO_init(); MCSPI_init();hjhjh}r(jjh]h]h]h]h]uhMh]rhX3UART_init(); I2C_init(); GPIO_init(); MCSPI_init();rr}r(hUhjubaubeubjX)r}r(hXs(RTOS only) Create the application tasks. We will discuss this further in the section covering the ``app.c`` file. hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXr(RTOS only) Create the application tasks. We will discuss this further in the section covering the ``app.c`` file.hjhjhj3h}r(h]h]h]h]h]uhMh]r(hXc(RTOS only) Create the application tasks. We will discuss this further in the section covering the rr}r(hXc(RTOS only) Create the application tasks. We will discuss this further in the section covering the hjubj)r}r(hX ``app.c``h}r(h]h]h]h]h]uhjh]rhXapp.crr}r(hUhjubahj#ubhX file.rr}r(hX file.hjubeubaubjX)r}r (hXoStart BIOS (RTOS) or start the application tasks directly (Bare-metal):: BIOS_start(); or appRunTasks(); hjhjhj[h}r (h]h]h]h]h]uhNhhh]r (j/)r }r (hXHStart BIOS (RTOS) or start the application tasks directly (Bare-metal)::hjhjhj3h}r (h]h]h]h]h]uhMh]r hXGStart BIOS (RTOS) or start the application tasks directly (Bare-metal):r r }r (hXGStart BIOS (RTOS) or start the application tasks directly (Bare-metal):hj ubaubj)r }r (hX!BIOS_start(); or appRunTasks();hjhjh}r (jjh]h]h]h]h]uhMh]r hX!BIOS_start(); or appRunTasks();r r }r (hUhj ubaubeubeubeubh)r }r (hUhjhjhhh}r (h]h]h]h]r Uthe-app-c-filer ah]r hSauhMhhh]r (h)r }r (hXThe app.c Filer hj hjhhh}r (h]h]h]h]h]uhMhhh]r hXThe app.c Filer r }r (hj hj ubaubj/)r }r! (hX**RTOS**r" hj hjhj3h}r# (h]h]h]h]h]uhMhhh]r$ jW)r% }r& (hj" h}r' (h]h]h]h]h]uhj h]r( hXRTOSr) r* }r+ (hUhj% ubahj_ubaubj/)r, }r- (hXOpen the **app.c** file and take a look at the ``appTasksCreate()`` function. You should recall that this function was called in step three of ``main()``. Inside of ``appTasksCreate()`` there are ``biosTaskCreate()`` function calls for each peripheral task. ``biosTaskCreate()`` just wraps the common task creation procudure into an easy-to-use function call. Navigate to the bottom of the **app.c** file to check out ``biosTaskCreate()``.hj hjhj3h}r. (h]h]h]h]h]uhMhhh]r/ (hX Open the r0 r1 }r2 (hX Open the hj, ubjW)r3 }r4 (hX **app.c**h}r5 (h]h]h]h]h]uhj, h]r6 hXapp.cr7 r8 }r9 (hUhj3 ubahj_ubhX file and take a look at the r: r; }r< (hX file and take a look at the hj, ubj)r= }r> (hX``appTasksCreate()``h}r? (h]h]h]h]h]uhj, h]r@ hXappTasksCreate()rA rB }rC (hUhj= ubahj#ubhXL function. You should recall that this function was called in step three of rD rE }rF (hXL function. You should recall that this function was called in step three of hj, ubj)rG }rH (hX ``main()``h}rI (h]h]h]h]h]uhj, h]rJ hXmain()rK rL }rM (hUhjG ubahj#ubhX . Inside of rN rO }rP (hX . Inside of hj, ubj)rQ }rR (hX``appTasksCreate()``h}rS (h]h]h]h]h]uhj, h]rT hXappTasksCreate()rU rV }rW (hUhjQ ubahj#ubhX there are rX rY }rZ (hX there are hj, ubj)r[ }r\ (hX``biosTaskCreate()``h}r] (h]h]h]h]h]uhj, h]r^ hXbiosTaskCreate()r_ r` }ra (hUhj[ ubahj#ubhX* function calls for each peripheral task. rb rc }rd (hX* function calls for each peripheral task. hj, ubj)re }rf (hX``biosTaskCreate()``h}rg (h]h]h]h]h]uhj, h]rh hXbiosTaskCreate()ri rj }rk (hUhje ubahj#ubhXp just wraps the common task creation procudure into an easy-to-use function call. Navigate to the bottom of the rl rm }rn (hXp just wraps the common task creation procudure into an easy-to-use function call. Navigate to the bottom of the hj, ubjW)ro }rp (hX **app.c**h}rq (h]h]h]h]h]uhj, h]rr hXapp.crs rt }ru (hUhjo ubahj_ubhX file to check out rv rw }rx (hX file to check out hj, ubj)ry }rz (hX``biosTaskCreate()``h}r{ (h]h]h]h]h]uhj, h]r| hXbiosTaskCreate()r} r~ }r (hUhjy ubahj#ubhX.r }r (hX.hj, ubeubj/)r }r (hX*The task creation procudure is as follows:r hj hjhj3h}r (h]h]h]h]h]uhMhhh]r hX*The task creation procudure is as follows:r r }r (hj hj ubaubj)r }r (hUhj hjhjh}r (jU)h]h]h]jUh]h]jjuhMhhh]r (jX)r }r (hXCreate task variables .. code-block:: c Task_Params taskParams; Error_Block eb; Task_Handle task; hj hjhj[h}r (h]h]h]h]h]uhNhhh]r (j/)r }r (hXCreate task variablesr hj hjhj3h}r (h]h]h]h]h]uhMh]r hXCreate task variablesr r }r (hj hj ubaubj)r }r (hUh}r (h]h]h]h]h]uhj h]r j)r }r (hX9Task_Params taskParams; Error_Block eb; Task_Handle task;hj hjhjh}r (jGjHXcjjh]h]h]jI}h]h]uhMh]r hX9Task_Params taskParams; Error_Block eb; Task_Handle task;r r }r (hUhj ubaubahjubeubjX)r }r (hXInitialize ``Error_Block`` and ``Task_Params`` to their default values .. code-block:: c Error_init(&eb); Task_Params_init(&taskParams); hj hjhj[h}r (h]h]h]h]h]uhNhhh]r (j/)r }r (hXFInitialize ``Error_Block`` and ``Task_Params`` to their default valueshj hjhj3h}r (h]h]h]h]h]uhMh]r (hX Initialize r r }r (hX Initialize hj ubj)r }r (hX``Error_Block``h}r (h]h]h]h]h]uhj h]r hX Error_Blockr r }r (hUhj ubahj#ubhX and r r }r (hX and hj ubj)r }r (hX``Task_Params``h}r (h]h]h]h]h]uhj h]r hX Task_Paramsr r }r (hUhj ubahj#ubhX to their default valuesr r }r (hX to their default valueshj ubeubj)r }r (hUh}r (h]h]h]h]h]uhj h]r j)r }r (hX/Error_init(&eb); Task_Params_init(&taskParams);hj hjhjh}r (jGjHXcjjh]h]h]jI}h]h]uhMh]r hX/Error_init(&eb); Task_Params_init(&taskParams);r r }r (hUhj ubaubahjubeubjX)r }r (hXApply user arguments for stack name, priority, and stack size .. code-block:: c taskParams.instance->name = taskName; taskParams.priority = taskPriority; taskParams.stackSize = stackSize; hj hjhj[h}r (h]h]h]h]h]uhNhhh]r (j/)r }r (hX=Apply user arguments for stack name, priority, and stack sizer hj hjhj3h}r (h]h]h]h]h]uhM h]r hX=Apply user arguments for stack name, priority, and stack sizer r }r (hj hj ubaubj)r }r (hUh}r (h]h]h]h]h]uhj h]r j)r }r (hXktaskParams.instance->name = taskName; taskParams.priority = taskPriority; taskParams.stackSize = stackSize;hj hjhjh}r (jGjHXcjjh]h]h]jI}h]h]uhM h]r hXktaskParams.instance->name = taskName; taskParams.priority = taskPriority; taskParams.stackSize = stackSize;r r }r (hUhj ubaubahjubeubjX)r }r (hXaCreate the task .. code-block:: c task = Task_create(taskFunctionPtr, &taskParams, &eb); hj hjhj[h}r (h]h]h]h]h]uhNhhh]r (j/)r }r (hXCreate the taskr hj hjhj3h}r (h]h]h]h]h]uhMh]r hXCreate the taskr r }r (hj hj ubaubj)r }r (hUh}r (h]h]h]h]h]uhj h]r j)r }r (hX6task = Task_create(taskFunctionPtr, &taskParams, &eb);hj hjhjh}r (jGjHXcjjh]h]h]jI}h]h]uhMh]r hX6task = Task_create(taskFunctionPtr, &taskParams, &eb);r r }r (hUhj ubaubahjubeubeubj/)r }r (hXRThe tasks themselves are simply functions in your code following the format below:r hj hjhj3h}r (h]h]h]h]h]uhMhhh]r hXRThe tasks themselves are simply functions in your code following the format below:r r }r (hj hj ubaubj)r }r (hX%void myTaskFunc(UArg arg0, UArg arg1)hj hjhjh}r (jGjHXcjjh]h]h]jI}h]h]uhMhhh]r hX%void myTaskFunc(UArg arg0, UArg arg1)r r }r (hUhj ubaubj/)r }r (hX**Bare-metal**r hj hjhj3h}r (h]h]h]h]h]uhM hhh]r jW)r }r (hj h}r (h]h]h]h]h]uhj h]r hX Bare-metalr r }r (hUhj ubahj_ubaubj/)r }r (hXOpen the **app.c** file and take a look at the ``appRunTasks()`` function. Inside of ``appRunTasks()`` there are function calls for each peripheral task. This file also contains setup code for a timer interrupt that controls the LED blink task.hj hjhj3h}r (h]h]h]h]h]uhM"hhh]r (hX Open the r r }r (hX Open the hj ubjW)r }r (hX **app.c**h}r! (h]h]h]h]h]uhj h]r" hXapp.cr# r$ }r% (hUhj ubahj_ubhX file and take a look at the r& r' }r( (hX file and take a look at the hj ubj)r) }r* (hX``appRunTasks()``h}r+ (h]h]h]h]h]uhj h]r, hX appRunTasks()r- r. }r/ (hUhj) ubahj#ubhX function. Inside of r0 r1 }r2 (hX function. Inside of hj ubj)r3 }r4 (hX``appRunTasks()``h}r5 (h]h]h]h]h]uhj h]r6 hX appRunTasks()r7 r8 }r9 (hUhj3 ubahj#ubhX there are function calls for each peripheral task. This file also contains setup code for a timer interrupt that controls the LED blink task.r: r; }r< (hX there are function calls for each peripheral task. This file also contains setup code for a timer interrupt that controls the LED blink task.hj ubeubj))r= }r> (hXThe application functions are called "tasks" for naming consistency with the RTOS template application, but they are not actual SYS/BIOS tasks.hj hjhj,h}r? (h]h]h]h]h]uhNhhh]r@ j/)rA }rB (hXThe application functions are called "tasks" for naming consistency with the RTOS template application, but they are not actual SYS/BIOS tasks.rC hj= hjhj3h}rD (h]h]h]h]h]uhM(h]rE hXThe application functions are called "tasks" for naming consistency with the RTOS template application, but they are not actual SYS/BIOS tasks.rF rG }rH (hjC hjA ubaubaubj/)rI }rJ (hXNext, let's take a look at ``i2c_eeprom_read_and_display_task()`` to see how to use TI Drivers. The procedure for opening a TI Driver generally follows these steps:hj hjhj3h}rK (h]h]h]h]h]uhM,hhh]rL (hXNext, let's take a look at rM rN }rO (hXNext, let's take a look at hjI ubj)rP }rQ (hX&``i2c_eeprom_read_and_display_task()``h}rR (h]h]h]h]h]uhjI h]rS hX"i2c_eeprom_read_and_display_task()rT rU }rV (hUhjP ubahj#ubhXc to see how to use TI Drivers. The procedure for opening a TI Driver generally follows these steps:rW rX }rY (hXc to see how to use TI Drivers. The procedure for opening a TI Driver generally follows these steps:hjI ubeubj)rZ }r[ (hUhj hjhjh}r\ (jU)h]h]h]jUh]h]jjuhM0hhh]r] (jX)r^ }r_ (hXyCreate driver handle and params structure .. code-block:: c I2C_Handle handle; I2C_Params params; hjZ hjhj[h}r` (h]h]h]h]h]uhNhhh]ra (j/)rb }rc (hX)Create driver handle and params structurerd hj^ hjhj3h}re (h]h]h]h]h]uhM0h]rf hX)Create driver handle and params structurerg rh }ri (hjd hjb ubaubj)rj }rk (hUh}rl (h]h]h]h]h]uhj^ h]rm j)rn }ro (hX/I2C_Handle handle; I2C_Params params;hjj hjhjh}rp (jGjHXcjjh]h]h]jI}h]h]uhM2h]rq hX/I2C_Handle handle; I2C_Params params;rr rs }rt (hUhjn ubaubahjubeubjX)ru }rv (hXInitialize and set the driver parameters .. code-block:: c I2C_Params_init(¶ms); params.transferMode = I2C_MODE_CALLBACK; params.transferCallbackFxn = someI2CCallbackFunction; // etc... hjZ hjhj[h}rw (h]h]h]h]h]uhNhhh]rx (j/)ry }rz (hX(Initialize and set the driver parametersr{ hju hjhj3h}r| (h]h]h]h]h]uhM7h]r} hX(Initialize and set the driver parametersr~ r }r (hj{ hjy ubaubj)r }r (hUh}r (h]h]h]h]h]uhju h]r j)r }r (hXI2C_Params_init(¶ms); params.transferMode = I2C_MODE_CALLBACK; params.transferCallbackFxn = someI2CCallbackFunction; // etc...hj hjhjh}r (jGjHXcjjh]h]h]jI}h]h]uhM9h]r hXI2C_Params_init(¶ms); params.transferMode = I2C_MODE_CALLBACK; params.transferCallbackFxn = someI2CCallbackFunction; // etc...r r }r (hUhj ubaubahjubeubjX)r }r (hXOpen the driver .. code-block:: c handle = I2C_open(someI2C_configIndexValue, ¶ms); if (!handle) { System_printf("I2C did not open"); } hjZ hjhj[h}r (h]h]h]h]h]uhNhhh]r (j/)r }r (hXOpen the driverr hj hjhj3h}r (h]h]h]h]h]uhM@h]r hXOpen the driverr r }r (hj hj ubaubj)r }r (hUh}r (h]h]h]h]h]uhj h]r j)r }r (hXmhandle = I2C_open(someI2C_configIndexValue, ¶ms); if (!handle) { System_printf("I2C did not open"); }hj hjhjh}r (jGjHXcjjh]h]h]jI}h]h]uhMBh]r hXmhandle = I2C_open(someI2C_configIndexValue, ¶ms); if (!handle) { System_printf("I2C did not open"); }r r }r (hUhj ubaubahjubeubeubj/)r }r (hXFor more information on TI Drivers, check out the included documentation for each driver at **pdk__/packages/ti/drv//docs**.hj hjhj3h}r (h]h]h]h]h]uhMIhhh]r (hX\For more information on TI Drivers, check out the included documentation for each driver at r r }r (hX\For more information on TI Drivers, check out the included documentation for each driver at hj ubjW)r }r (hX:**pdk__/packages/ti/drv//docs**h}r (h]h]h]h]h]uhj h]r hX6pdk__/packages/ti/drv//docsr r }r (hUhj ubahj_ubhX.r }r (hX.hj ubeubj/)r }r (hXVFor more infomation on SYS/BIOS, check out the User Guide at **bios_/docs**.hj hjhj3h}r (h]h]h]h]h]uhMLhhh]r (hX>For more infomation on SYS/BIOS, check out the User Guide at r r }r (hX>For more infomation on SYS/BIOS, check out the User Guide at hj ubjW)r }r (hX**bios_/docs**h}r (h]h]h]h]h]uhj h]r hXbios_/docsr r }r (hUhj ubahj_ubhX.r }r (hX.hj ubeubeubeubh)r }r (hUhhhjhhh}r (h]h]h]h]r U.task-6-modifying-the-rtos-template-applicationr ah]r hauhMPhhh]r (h)r }r (hX0Task 6 - Modifying the RTOS Template Applicationr hj hjhhh}r (h]h]h]h]h]uhMPhhh]r hX0Task 6 - Modifying the RTOS Template Applicationr r }r (hj hj ubaubj))r }r (hXCThe instructions below apply to the RTOS Template Application only.r hj hjhj,h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hj hj hjhj3h}r (h]h]h]h]h]uhMRh]r hXCThe instructions below apply to the RTOS Template Application only.r r }r (hj hj ubaubaubj/)r }r (hXNow that you have an understanding of how to use the drivers and create RTOS tasks, let us make some simple modifications to create our own application.r hj hjhj3h}r (h]h]h]h]h]uhMThhh]r hXNow that you have an understanding of how to use the drivers and create RTOS tasks, let us make some simple modifications to create our own application.r r }r (hj hj ubaubj/)r }r (hXWe will create a simple application which allows the user to control the LED blink rate over the UART terminal. The user should be able to enter an LED blink period (between 0 and 5 seconds) and the user LED should blink at that rate.r hj hjhj3h}r (h]h]h]h]h]uhMWhhh]r hXWe will create a simple application which allows the user to control the LED blink rate over the UART terminal. The user should be able to enter an LED blink period (between 0 and 5 seconds) and the user LED should blink at that rate.r r }r (hj hj ubaubj/)r }r (hXFThis part of the lab is broken down into several sections. In each section, you will be given general instructions for modifications to make to the source files. After you make your own modifications they will be verified against provided code examples. Try to make the modifications on your own before looking at the answers!r hj hjhj3h}r (h]h]h]h]h]uhM\hhh]r hXFThis part of the lab is broken down into several sections. In each section, you will be given general instructions for modifications to make to the source files. After you make your own modifications they will be verified against provided code examples. Try to make the modifications on your own before looking at the answers!r r }r (hj hj ubaubh)r }r (hUhj hjhhh}r (h]h]h]h]r Udelete-the-code-you-don-t-needr ah]r hauhMchhh]r (h)r }r (hXDelete the Code You Don't Needr hj hjhhh}r (h]h]h]h]h]uhMchhh]r hXDelete the Code You Don't Needr r }r (hj hj ubaubj/)r }r (hX#The Template Application has tasks for UART, I2C, GPIO, and MCSPI drivers. Some of these tasks will not be used by our application. Go ahead and remove any tasks that you do not think you will need to create the application. Hold off on modifying tasks that will be reused until later steps.r hj hjhj3h}r (h]h]h]h]h]uhMdhhh]r hX#The Template Application has tasks for UART, I2C, GPIO, and MCSPI drivers. Some of these tasks will not be used by our application. Go ahead and remove any tasks that you do not think you will need to create the application. Hold off on modifying tasks that will be reused until later steps.r r }r (hj hj ubaubcdocutils.nodes attention r )r }r (hXDDon't peek! The next section will discuss answers to the task above.r hj hjhU attentionr h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hj hj hjhj3h}r (h]h]h]h]h]uhMkh]r hXDDon't peek! The next section will discuss answers to the task above.r r }r (hj hj ubaubaubj/)r }r (hXSince our application is only consuming user input and blinking the LEDs, we only need the UART and GPIO tasks. That means the I2C and SPI tasks can be removed.r hj hjhj3h}r (h]h]h]h]h]uhMmhhh]r hXSince our application is only consuming user input and blinking the LEDs, we only need the UART and GPIO tasks. That means the I2C and SPI tasks can be removed.r r! }r" (hj hj ubaubeubh)r# }r$ (hUhj hjhhh}r% (h]h]h]h]r& U#add-support-for-additional-featuresr' ah]r( hauhMrhhh]r) (h)r* }r+ (hX#Add Support for Additional Featuresr, hj# hjhhh}r- (h]h]h]h]h]uhMrhhh]r. hX#Add Support for Additional Featuresr/ r0 }r1 (hj, hj* ubaubj/)r2 }r3 (hXOur application will require that the UART task has a way to communicate the delay value it receives from the user to the LED task to modify the blink rate. While this could be accomplished with something as simple as a shared global variable, TI-RTOS provides many other ways to accomplish inter-process communication. Take a look at the BIOS User Guide, which is bundled with the SDK at **bios_/docs/Bios_User_Guide.pdf** for ideas on how to share data between tasks. After you decide on a method, you can use the API documentation located at **bios_/docs/Bios_APIs.html** to figure out how to use the API in your application.hj# hjhj3h}r4 (h]h]h]h]h]uhMshhh]r5 (hXOur application will require that the UART task has a way to communicate the delay value it receives from the user to the LED task to modify the blink rate. While this could be accomplished with something as simple as a shared global variable, TI-RTOS provides many other ways to accomplish inter-process communication. Take a look at the BIOS User Guide, which is bundled with the SDK at r6 r7 }r8 (hXOur application will require that the UART task has a way to communicate the delay value it receives from the user to the LED task to modify the blink rate. While this could be accomplished with something as simple as a shared global variable, TI-RTOS provides many other ways to accomplish inter-process communication. Take a look at the BIOS User Guide, which is bundled with the SDK at hj2 ubjW)r9 }r: (hX+**bios_/docs/Bios_User_Guide.pdf**h}r; (h]h]h]h]h]uhj2 h]r< hX'bios_/docs/Bios_User_Guide.pdfr= r> }r? (hUhj9 ubahj_ubhXz for ideas on how to share data between tasks. After you decide on a method, you can use the API documentation located at r@ rA }rB (hXz for ideas on how to share data between tasks. After you decide on a method, you can use the API documentation located at hj2 ubjW)rC }rD (hX&**bios_/docs/Bios_APIs.html**h}rE (h]h]h]h]h]uhj2 h]rF hX"bios_/docs/Bios_APIs.htmlrG rH }rI (hUhjC ubahj_ubhX6 to figure out how to use the API in your application.rJ rK }rL (hX6 to figure out how to use the API in your application.hj2 ubeubj )rM }rN (hXDDon't peek! The next section will discuss answers to the task above.rO hj# hjhj h}rP (h]h]h]h]h]uhNhhh]rQ j/)rR }rS (hjO hjM hjhj3h}rT (h]h]h]h]h]uhM~h]rU hXDDon't peek! The next section will discuss answers to the task above.rV rW }rX (hjO hjR ubaubaubj/)rY }rZ (hXA good choice for passing the LED blink rate is the ``ti.sysbios.knl.Mailbox`` module. This module can be used to pass buffers from one task to another on the same processor.hj# hjhj3h}r[ (h]h]h]h]h]uhMhhh]r\ (hX4A good choice for passing the LED blink rate is the r] r^ }r_ (hX4A good choice for passing the LED blink rate is the hjY ubj)r` }ra (hX``ti.sysbios.knl.Mailbox``h}rb (h]h]h]h]h]uhjY h]rc hXti.sysbios.knl.Mailboxrd re }rf (hUhj` ubahj#ubhX` module. This module can be used to pass buffers from one task to another on the same processor.rg rh }ri (hX` module. This module can be used to pass buffers from one task to another on the same processor.hjY ubeubj/)rj }rk (hX`To include ``Mailbox`` in your project you first need to add the module to the **app.cfg** file:hj# hjhj3h}rl (h]h]h]h]h]uhMhhh]rm (hX To include rn ro }rp (hX To include hjj ubj)rq }rr (hX ``Mailbox``h}rs (h]h]h]h]h]uhjj h]rt hXMailboxru rv }rw (hUhjq ubahj#ubhX9 in your project you first need to add the module to the rx ry }rz (hX9 in your project you first need to add the module to the hjj ubjW)r{ }r| (hX **app.cfg**h}r} (h]h]h]h]h]uhjj h]r~ hXapp.cfgr r }r (hUhj{ ubahj_ubhX file:r r }r (hX file:hjj ubeubj)r }r (hX6var Mailbox = xdc.useModule('ti.sysbios.knl.Mailbox');hj# hjhjh}r (jGjHX javascriptjjh]h]h]jI}h]h]uhMhhh]r hX6var Mailbox = xdc.useModule('ti.sysbios.knl.Mailbox');r r }r (hUhj ubaubj/)r }r (hXTNext, you need to include the ``ti/sysbios/knl/Mailbox.h`` header file in **app.h**:hj# hjhj3h}r (h]h]h]h]h]uhMhhh]r (hXNext, you need to include the r r }r (hXNext, you need to include the hj ubj)r }r (hX``ti/sysbios/knl/Mailbox.h``h}r (h]h]h]h]h]uhj h]r hXti/sysbios/knl/Mailbox.hr r }r (hUhj ubahj#ubhX header file in r r }r (hX header file in hj ubjW)r }r (hX **app.h**h}r (h]h]h]h]h]uhj h]r hXapp.hr r }r (hUhj ubahj_ubhX:r }r (hX:hj ubeubj)r }r (hX##include hj# hjhjh}r (jGjHXcjjh]h]h]jI}h]h]uhMhhh]r hX##include r r }r (hUhj ubaubj/)r }r (hXMTo create a Mailbox, use the ``Mailbox_create()`` API which is defined below:r hj# hjhj3h}r (h]h]h]h]h]uhMhhh]r (hXTo create a Mailbox, use the r r }r (hXTo create a Mailbox, use the hj ubj)r }r (hX``Mailbox_create()``h}r (h]h]h]h]h]uhj h]r hXMailbox_create()r r }r (hUhj ubahj#ubhX API which is defined below:r r }r (hX API which is defined below:hj ubeubj)r }r (hXMailbox_Handle Mailbox_create(SizeT bufsize, UInt numBufs, Mailbox_Params *params, Error_Block *eb)hj# hjhjh}r (jGjHXcjjh]h]h]jI}h]h]uhMhhh]r hXMailbox_Handle Mailbox_create(SizeT bufsize, UInt numBufs, Mailbox_Params *params, Error_Block *eb)r r }r (hUhj ubaubj/)r }r (hX?You are now set up to use ``Mailbox`` in your application code.r hj# hjhj3h}r (h]h]h]h]h]uhMhhh]r (hXYou are now set up to use r r }r (hXYou are now set up to use hj ubj)r }r (hX ``Mailbox``h}r (h]h]h]h]h]uhj h]r hXMailboxr r }r (hUhj ubahj#ubhX in your application code.r r }r (hX in your application code.hj ubeubeubh)r }r (hUhj hjhhh}r (h]h]h]h]r Uadd-new-application-coder ah]r hauhMhhh]r (h)r }r (hXAdd New Application Coder hj hjhhh}r (h]h]h]h]h]uhMhhh]r hXAdd New Application Coder r }r (hj hj ubaubj/)r }r (hXMModify the existing UART and LED task code to functions for the new application. If you run in to any issues, make sure to use CCS debug features such as breakpoints and variable watching to verify that the application is functioning in the way that you expect. Functional example code for the AM572x EVM will be provided at the end.r hj hjhj3h}r (h]h]h]h]h]uhMhhh]r hXMModify the existing UART and LED task code to functions for the new application. If you run in to any issues, make sure to use CCS debug features such as breakpoints and variable watching to verify that the application is functioning in the way that you expect. Functional example code for the AM572x EVM will be provided at the end.r r }r (hj hj ubaubj )r }r (hXDDon't peek! The next section will discuss answers to the task above.r hj hjhj h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hj hj hjhj3h}r (h]h]h]h]h]uhMh]r hXDDon't peek! The next section will discuss answers to the task above.r r }r (hj hj ubaubaubj)r }r (hUhj hjhjh}r (jU)h]h]h]jUh]h]jjuhMhhh]r (jX)r }r (hXCreate a global ``Mailbox_Handle`` to be shared by the ``uart_task()`` and ``gpio_toggle_led_task()``. Then create a Mailbox at the end of the ``appTasksCreate()`` function.hj hjhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hXCreate a global ``Mailbox_Handle`` to be shared by the ``uart_task()`` and ``gpio_toggle_led_task()``. Then create a Mailbox at the end of the ``appTasksCreate()`` function.hj hjhj3h}r (h]h]h]h]h]uhMh]r (hXCreate a global r r }r (hXCreate a global hj ubj)r }r (hX``Mailbox_Handle``h}r (h]h]h]h]h]uhj h]r hXMailbox_Handler r }r (hUhj ubahj#ubhX to be shared by the r r }r (hX to be shared by the hj ubj)r }r (hX``uart_task()``h}r (h]h]h]h]h]uhj h]r hX uart_task()r r }r (hUhj ubahj#ubhX and r r }r (hX and hj ubj)r }r (hX``gpio_toggle_led_task()``h}r (h]h]h]h]h]uhj h]r! hXgpio_toggle_led_task()r" r# }r$ (hUhj ubahj#ubhX*. Then create a Mailbox at the end of the r% r& }r' (hX*. Then create a Mailbox at the end of the hj ubj)r( }r) (hX``appTasksCreate()``h}r* (h]h]h]h]h]uhj h]r+ hXappTasksCreate()r, r- }r. (hUhj( ubahj#ubhX function.r/ r0 }r1 (hX function.hj ubeubaubjX)r2 }r3 (hXModify the ``uart_task()`` code to scan for an unisgned integer delay value instead of a string. This value should then be placed in the Mailbox by using the ``Mailbox_post()`` API.hj hjhj[h}r4 (h]h]h]h]h]uhNhhh]r5 j/)r6 }r7 (hXModify the ``uart_task()`` code to scan for an unisgned integer delay value instead of a string. This value should then be placed in the Mailbox by using the ``Mailbox_post()`` API.hj2 hjhj3h}r8 (h]h]h]h]h]uhMh]r9 (hX Modify the r: r; }r< (hX Modify the hj6 ubj)r= }r> (hX``uart_task()``h}r? (h]h]h]h]h]uhj6 h]r@ hX uart_task()rA rB }rC (hUhj= ubahj#ubhX code to scan for an unisgned integer delay value instead of a string. This value should then be placed in the Mailbox by using the rD rE }rF (hX code to scan for an unisgned integer delay value instead of a string. This value should then be placed in the Mailbox by using the hj6 ubj)rG }rH (hX``Mailbox_post()``h}rI (h]h]h]h]h]uhj6 h]rJ hXMailbox_post()rK rL }rM (hUhjG ubahj#ubhX API.rN rO }rP (hX API.hj6 ubeubaubjX)rQ }rR (hXModify ``gpio_toggle_led_task()`` to retrieve a delay value from the Mailbox via the ``Mailbox_pend()`` API. This delay value should be used in the ``task_sleep()`` function calls. hj hjhj[h}rS (h]h]h]h]h]uhNhhh]rT j/)rU }rV (hXModify ``gpio_toggle_led_task()`` to retrieve a delay value from the Mailbox via the ``Mailbox_pend()`` API. This delay value should be used in the ``task_sleep()`` function calls.hjQ hjhj3h}rW (h]h]h]h]h]uhMh]rX (hXModify rY rZ }r[ (hXModify hjU ubj)r\ }r] (hX``gpio_toggle_led_task()``h}r^ (h]h]h]h]h]uhjU h]r_ hXgpio_toggle_led_task()r` ra }rb (hUhj\ ubahj#ubhX4 to retrieve a delay value from the Mailbox via the rc rd }re (hX4 to retrieve a delay value from the Mailbox via the hjU ubj)rf }rg (hX``Mailbox_pend()``h}rh (h]h]h]h]h]uhjU h]ri hXMailbox_pend()rj rk }rl (hUhjf ubahj#ubhX- API. This delay value should be used in the rm rn }ro (hX- API. This delay value should be used in the hjU ubj)rp }rq (hX``task_sleep()``h}rr (h]h]h]h]h]uhjU h]rs hX task_sleep()rt ru }rv (hUhjp ubahj#ubhX function calls.rw rx }ry (hX function calls.hjU ubeubaubeubj/)rz }r{ (hXmNow, give your project a try. You should be able to type in LED delay values to the UART terminal and see the blink rate of the LED change accordingly. To see a functioning solution, you can download the modified source files from the links below. Sections of the source files that were modified from the originals are marked with a ``/* Modification: */`` comment.hj hjhj3h}r| (h]h]h]h]h]uhMhhh]r} (hXMNow, give your project a try. You should be able to type in LED delay values to the UART terminal and see the blink rate of the LED change accordingly. To see a functioning solution, you can download the modified source files from the links below. Sections of the source files that were modified from the originals are marked with a r~ r }r (hXMNow, give your project a try. You should be able to type in LED delay values to the UART terminal and see the blink rate of the LED change accordingly. To see a functioning solution, you can download the modified source files from the links below. Sections of the source files that were modified from the originals are marked with a hjz ubj)r }r (hX``/* Modification: */``h}r (h]h]h]h]h]uhjz h]r hX/* Modification: */r r }r (hUhj ubahj#ubhX comment.r r }r (hX comment.hjz ubeubj)r }r (hUhj hNhjh}r (h]h]h]h]h]uhNhhh]r jQ)r }r (hUh}r (jVX-h]h]h]h]h]uhj h]r (jX)r }r (hX;:download:`app.c <../example_code/template_app_mods/app.c>`r h}r (h]h]h]h]h]uhj h]r j/)r }r (hj hj hjhj3h}r (h]h]h]h]h]uhMh]r csphinx.addnodes download_reference r )r }r (hj hj hjhUdownload_referencer h}r (UreftypeXdownloadr Urefwarnr U reftargetr X'../example_code/template_app_mods/app.cU refdomainUh]h]U refexplicith]h]h]Urefdocr Xrtos/index_examples_demosr Ufilenamer Xapp.cr uhMh]r j)r }r (hj h}r (h]h]r (Uxrefr j eh]h]h]uhj h]r hXapp.cr r }r (hUhj ubahj#ubaubaubahj[ubjX)r }r (hX;:download:`app.h <../example_code/template_app_mods/app.h>`r h}r (h]h]h]h]h]uhj h]r j/)r }r (hj hj hjhj3h}r (h]h]h]h]h]uhMh]r j )r }r (hj hj hjhj h}r (UreftypeXdownloadr j j X'../example_code/template_app_mods/app.hU refdomainUh]h]U refexplicith]h]h]j j j Xapp.hr uhMh]r j)r }r (hj h}r (h]h]r (j j eh]h]h]uhj h]r hXapp.hr r }r (hUhj ubahj#ubaubaubahj[ubjX)r }r (hX@:download:`app.cfg <../example_code/template_app_mods/app.cfg>` h}r (h]h]h]h]h]uhj h]r j/)r }r (hX?:download:`app.cfg <../example_code/template_app_mods/app.cfg>`r hj hjhj3h}r (h]h]h]h]h]uhMh]r j )r }r (hj hj hjhj h}r (UreftypeXdownloadr j j X)../example_code/template_app_mods/app.cfgU refdomainUh]h]U refexplicith]h]h]j j j Xapp.cfgr uhMh]r j)r }r (hj h}r (h]h]r (j j eh]h]h]uhj h]r hXapp.cfgr r }r (hUhj ubahj#ubaubaubahj[ubehjTubaubj)r }r (hUhj hjhjh}r (h]h]h]h]h]uhMhhh]r j)r }r (hUjKhj hjhhh}r (h]h]h]h]h]uhKhhh]ubaubeubeubeubhjhhh}r (h]h]h]h]r U3task-4-loading-and-running-the-template-applicationr ah]r hauhM hhh]r (h)r }r (hX5Task 4 - Loading and Running the Template Applicationr hhhjhhh}r (h]h]h]h]h]uhM hhh]r hX5Task 4 - Loading and Running the Template Applicationr r }r (hj hj ubaubh)r }r (hUhhhjhhh}r (h]h]h]h]r U$creating-a-target-configuration-filer ah]r h=auhM hhh]r (h)r }r (hX$Creating a Target Configuration Filer hj hjhhh}r (h]h]h]h]h]uhM hhh]r hX$Creating a Target Configuration Filer r }r (hj hj ubaubj/)r }r (hX(In order to connect to the target platform we first need to create a target configuration file. To do this, open CCS and go to the *File --> New --> Target Configuration File* menu and create a new target configuration file named after your board. For example, **am572x-evm.ccxml**. Next, you need to choose your *connection* and *board* on the target configuration file page. The *connection* is your chosen JTAG Debug Probe (for example, the XDS200) and the *board* is the name of your EVM (either *EVMAM3358*, *EVMAM437X*, or *GPEVM_AM572x_SiRevA*).hj hjhj3h}r (h]h]h]h]h]uhMhhh]r (hXIn order to connect to the target platform we first need to create a target configuration file. To do this, open CCS and go to the r r }r (hXIn order to connect to the target platform we first need to create a target configuration file. To do this, open CCS and go to the hj ubj')r }r (hX,*File --> New --> Target Configuration File*h}r (h]h]h]h]h]uhj h]r hX*File --> New --> Target Configuration Filer r }r (hUhj ubahj/ubhXV menu and create a new target configuration file named after your board. For example, r r }r (hXV menu and create a new target configuration file named after your board. For example, hj ubjW)r }r (hX**am572x-evm.ccxml**h}r (h]h]h]h]h]uhj h]r hXam572x-evm.ccxmlr r }r (hUhj ubahj_ubhX . Next, you need to choose your r r }r (hX . Next, you need to choose your hj ubj')r }r (hX *connection*h}r (h]h]h]h]h]uhj h]r! hX connectionr" r# }r$ (hUhj ubahj/ubhX and r% r& }r' (hX and hj ubj')r( }r) (hX*board*h}r* (h]h]h]h]h]uhj h]r+ hXboardr, r- }r. (hUhj( ubahj/ubhX, on the target configuration file page. The r/ r0 }r1 (hX, on the target configuration file page. The hj ubj')r2 }r3 (hX *connection*h}r4 (h]h]h]h]h]uhj h]r5 hX connectionr6 r7 }r8 (hUhj2 ubahj/ubhXC is your chosen JTAG Debug Probe (for example, the XDS200) and the r9 r: }r; (hXC is your chosen JTAG Debug Probe (for example, the XDS200) and the hj ubj')r< }r= (hX*board*h}r> (h]h]h]h]h]uhj h]r? hXboardr@ rA }rB (hUhj< ubahj/ubhX! is the name of your EVM (either rC rD }rE (hX! is the name of your EVM (either hj ubj')rF }rG (hX *EVMAM3358*h}rH (h]h]h]h]h]uhj h]rI hX EVMAM3358rJ rK }rL (hUhjF ubahj/ubhX, rM rN }rO (hX, hj ubj')rP }rQ (hX *EVMAM437X*h}rR (h]h]h]h]h]uhj h]rS hX EVMAM437XrT rU }rV (hUhjP ubahj/ubhX, or rW rX }rY (hX, or hj ubj')rZ }r[ (hX*GPEVM_AM572x_SiRevA*h}r\ (h]h]h]h]h]uhj h]r] hXGPEVM_AM572x_SiRevAr^ r_ }r` (hUhjZ ubahj/ubhX).ra rb }rc (hX).hj ubeubj/)rd }re (hX]For example, here is the target configuration for the AM572x EVM using an XDS200 Debug Probe:rf hj hjhj3h}rg (h]h]h]h]h]uhMhhh]rh hX]For example, here is the target configuration for the AM572x EVM using an XDS200 Debug Probe:ri rj }rk (hjf hjd ubaubj)rl }rm (hXB.. image:: ../images/am572x-evm-target-config.png :scale: 70 % hj hjhjh}rn (UscaleKFUuriX+rtos/../images/am572x-evm-target-config.pngro h]h]h]h]j}rp U*jo sh]uhNhhh]ubj/)rq }rr (hXAfter setup is complete, clike the *Save* button to save your target configuration. Then click *Test Connection* to verify that you can connect to the board. If the test is successful you should receive the following message::hj hjhj3h}rs (h]h]h]h]h]uhMhhh]rt (hX#After setup is complete, clike the ru rv }rw (hX#After setup is complete, clike the hjq ubj')rx }ry (hX*Save*h}rz (h]h]h]h]h]uhjq h]r{ hXSaver| r} }r~ (hUhjx ubahj/ubhX6 button to save your target configuration. Then click r r }r (hX6 button to save your target configuration. Then click hjq ubj')r }r (hX*Test Connection*h}r (h]h]h]h]h]uhjq h]r hXTest Connectionr r }r (hUhj ubahj/ubhXq to verify that you can connect to the board. If the test is successful you should receive the following message:r r }r (hXq to verify that you can connect to the board. If the test is successful you should receive the following message:hjq ubeubj)r }r (hX.The JTAG DR Integrity scan-test has succeeded.hj hjhjh}r (jjh]h]h]h]h]uhM)hhh]r hX.The JTAG DR Integrity scan-test has succeeded.r r }r (hUhj ubaubeubh)r }r (hUhhhjhhh}r (h]h]h]h]r Uconnecting-to-the-targetr ah]r hauhM%hhh]r (h)r }r (hXConnecting to the Targetr hj hjhhh}r (h]h]h]h]h]uhM%hhh]r hXConnecting to the Targetr r }r (hj hj ubaubj/)r }r (hXtWith our target configuration confirmed, we can now move on to connecting to the target and loading our application.r hj hjhj3h}r (h]h]h]h]h]uhM&hhh]r hXtWith our target configuration confirmed, we can now move on to connecting to the target and loading our application.r r }r (hj hj ubaubj/)r }r (hXFirst, set up the UART connection using the following host configuration in your favorite serial terminal program (e.g. Tera Term, screen, Minicom):r hj hjhj3h}r (h]h]h]h]h]uhM)hhh]r hXFirst, set up the UART connection using the following host configuration in your favorite serial terminal program (e.g. Tera Term, screen, Minicom):r r }r (hj hj ubaubjQ)r }r (hUhj hjhjTh}r (jVX-h]h]h]h]h]uhM,hhh]r (jX)r }r (hX**Baud Rate**: 115200r hj hjhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hj hj hjhj3h}r (h]h]h]h]h]uhM,h]r (jW)r }r (hX **Baud Rate**h}r (h]h]h]h]h]uhj h]r hX Baud Rater r }r (hUhj ubahj_ubhX: 115200r r }r (hX: 115200hj ubeubaubjX)r }r (hX**Data Bits**: 8r hj hjhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hj hj hjhj3h}r (h]h]h]h]h]uhM-h]r (jW)r }r (hX **Data Bits**h}r (h]h]h]h]h]uhj h]r hX Data Bitsr r }r (hUhj ubahj_ubhX: 8r r }r (hX: 8hj ubeubaubjX)r }r (hX**Parity**: Noner hj hjhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hj hj hjhj3h}r (h]h]h]h]h]uhM.h]r (jW)r }r (hX **Parity**h}r (h]h]h]h]h]uhj h]r hXParityr r }r (hUhj ubahj_ubhX: Noner r }r (hX: Nonehj ubeubaubjX)r }r (hX**Flow Control**: Off hj hjhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hX**Flow Control**: Offhj hjhj3h}r (h]h]h]h]h]uhM/h]r (jW)r }r (hX**Flow Control**h}r (h]h]h]h]h]uhj h]r hX Flow Controlr r }r (hUhj ubahj_ubhX: Offr r }r(hX: Offhj ubeubaubeubj/)r}r(hXNext, click on *View --> Target Configurations* in CCS. Then, right click on the target configuration that you created earlier and click *Launch Selected Configuration*. This action will switch CCS into the debug perspective. Your CCS instance should look similar to below:hj hjhj3h}r(h]h]h]h]h]uhM1hhh]r(hXNext, click on rr}r(hXNext, click on hjubj')r}r (hX *View --> Target Configurations*h}r (h]h]h]h]h]uhjh]r hXView --> Target Configurationsr r }r(hUhjubahj/ubhXZ in CCS. Then, right click on the target configuration that you created earlier and click rr}r(hXZ in CCS. Then, right click on the target configuration that you created earlier and click hjubj')r}r(hX*Launch Selected Configuration*h}r(h]h]h]h]h]uhjh]rhXLaunch Selected Configurationrr}r(hUhjubahj/ubhXi. This action will switch CCS into the debug perspective. Your CCS instance should look similar to below:rr}r(hXi. This action will switch CCS into the debug perspective. Your CCS instance should look similar to below:hjubeubj)r}r(hX8.. image:: ../images/ccs-debug-pers.png :scale: 70 % hj hjhjh}r(UscaleKFUuriX!rtos/../images/ccs-debug-pers.pngrh]h]h]h]j}r U*jsh]uhNhhh]ubj/)r!}r"(hXFIn the top left corner of CCS you should see a list of all of the available cores on your device. Right click on the primary core (listed below) and choose the *Connect Target* option. During this process you should see GEL output in the CCS console and the status of the core should change from "Disconnected" to "Suspended".hj hjhj3h}r#(h]h]h]h]h]uhM9hhh]r$(hXIn the top left corner of CCS you should see a list of all of the available cores on your device. Right click on the primary core (listed below) and choose the r%r&}r'(hXIn the top left corner of CCS you should see a list of all of the available cores on your device. Right click on the primary core (listed below) and choose the hj!ubj')r(}r)(hX*Connect Target*h}r*(h]h]h]h]h]uhj!h]r+hXConnect Targetr,r-}r.(hUhj(ubahj/ubhX option. During this process you should see GEL output in the CCS console and the status of the core should change from "Disconnected" to "Suspended".r/r0}r1(hX option. During this process you should see GEL output in the CCS console and the status of the core should change from "Disconnected" to "Suspended".hj!ubeubj/)r2}r3(hXPrimary cores for each target:r4hj hjhj3h}r5(h]h]h]h]h]uhM?hhh]r6hXPrimary cores for each target:r7r8}r9(hj4hj2ubaubcdocutils.nodes table r:)r;}r<(hUhj hjhUtabler=h}r>(h]h]h]h]h]uhNhhh]r?cdocutils.nodes tgroup r@)rA}rB(hUh}rC(h]h]h]h]h]UcolsKuhj;h]rD(cdocutils.nodes colspec rE)rF}rG(hUh}rH(h]h]h]h]h]UcolwidthKuhjAh]hUcolspecrIubjE)rJ}rK(hUh}rL(h]h]h]h]h]UcolwidthKuhjAh]hjIubjE)rM}rN(hUh}rO(h]h]h]h]h]UcolwidthKuhjAh]hjIubjE)rP}rQ(hUh}rR(h]h]h]h]h]UcolwidthKuhjAh]hjIubcdocutils.nodes thead rS)rT}rU(hUh}rV(h]h]h]h]h]uhjAh]rWcdocutils.nodes row rX)rY}rZ(hUh}r[(h]h]h]h]h]uhjTh]r\(cdocutils.nodes entry r])r^}r_(hUh}r`(h]h]h]h]h]uhjYh]raj/)rb}rc(hXAM335xrdhj^hjhj3h}re(h]h]h]h]h]uhMBh]rfhXAM335xrgrh}ri(hjdhjbubaubahUentryrjubj])rk}rl(hUh}rm(h]h]h]h]h]uhjYh]rnj/)ro}rp(hXAM437xrqhjkhjhj3h}rr(h]h]h]h]h]uhMBh]rshXAM437xrtru}rv(hjqhjoubaubahjjubj])rw}rx(hUh}ry(h]h]h]h]h]uhjYh]rzj/)r{}r|(hXAM572xr}hjwhjhj3h}r~(h]h]h]h]h]uhMBh]rhXAM572xrr}r(hj}hj{ubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjYh]rj/)r}r(hXAM654xrhjhjhj3h}r(h]h]h]h]h]uhMBh]rhXAM654xrr}r(hjhjubaubahjjubehUrowrubahUtheadrubcdocutils.nodes tbody r)r}r(hUh}r(h]h]h]h]h]uhjAh]rjX)r}r(hUh}r(h]h]h]h]h]uhjh]r(j])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hXA8rhjhjhj3h}r(h]h]h]h]h]uhMDh]rhXA8rr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hXA9rhjhjhj3h}r(h]h]h]h]h]uhMDh]rhXA9rr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hXA15_0rhjhjhj3h}r(h]h]h]h]h]uhMDh]rhXA15_0rr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hXA53_0rhjhjhj3h}r(h]h]h]h]h]uhMDh]rhXA53_0rr}r(hjhjubaubahjjubehjubahUtbodyrubehUtgrouprubaubj))r}r(hXvFor AM572x EVM, the template application can also run on the M4 and DSP cores. If you intend to run the application on one of these cores you must still connect to the main A15_0 core **first**. After connecting to the A15_0 core you can then follow the same procedure as above to connect to the secondary core where you would like to run the application. Do not attempt to load and run the template application on two cores simultaneously as the Template Application is not designed to run this way. Similar instructions apply to AM654x EVM, where you should connect to the M3 core first before running on your application core.hj hjhj,h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hXFor AM572x EVM, the template application can also run on the M4 and DSP cores. If you intend to run the application on one of these cores you must still connect to the main A15_0 core **first**. After connecting to the A15_0 core you can then follow the same procedure as above to connect to the secondary core where you would like to run the application. Do not attempt to load and run the template application on two cores simultaneously as the Template Application is not designed to run this way.hjhjhj3h}r(h]h]h]h]h]uhMHh]r(hXFor AM572x EVM, the template application can also run on the M4 and DSP cores. If you intend to run the application on one of these cores you must still connect to the main A15_0 core rr}r(hXFor AM572x EVM, the template application can also run on the M4 and DSP cores. If you intend to run the application on one of these cores you must still connect to the main A15_0 core hjubjW)r}r(hX **first**h}r(h]h]h]h]h]uhjh]rhXfirstrr}r(hUhjubahj_ubhX3. After connecting to the A15_0 core you can then follow the same procedure as above to connect to the secondary core where you would like to run the application. Do not attempt to load and run the template application on two cores simultaneously as the Template Application is not designed to run this way.rr}r(hX3. After connecting to the A15_0 core you can then follow the same procedure as above to connect to the secondary core where you would like to run the application. Do not attempt to load and run the template application on two cores simultaneously as the Template Application is not designed to run this way.hjubeubj/)r}r(hXSimilar instructions apply to AM654x EVM, where you should connect to the M3 core first before running on your application core.rhjhjhj3h}r(h]h]h]h]h]uhMPh]rhXSimilar instructions apply to AM654x EVM, where you should connect to the M3 core first before running on your application core.rr}r(hjhjubaubeubeubheubhjhhh}r(h]h]h]h]rUrunning-the-applicationrah]rh'auhMThhh]r(h)r}r(hXRunning the Applicationrhhhjhhh}r(h]h]h]h]h]uhMThhh]rhXRunning the Applicationrr}r(hjhjubaubj/)r}r(hX5Now that we are connected to the target, it is time to load the application. To do this, go to the *Run --> Load --> Load Program* menu in CCS. Then, click the *Browse project...* button and choose the **[rtos or baremetal]_template_app__.out** executable. Then click *OK* to load the executable.hhhjhj3h}r(h]h]h]h]h]uhMVhhh]r(hXcNow that we are connected to the target, it is time to load the application. To do this, go to the rr}r(hXcNow that we are connected to the target, it is time to load the application. To do this, go to the hjubj')r}r(hX*Run --> Load --> Load Program*h}r(h]h]h]h]h]uhjh]rhXRun --> Load --> Load Programrr}r(hUhjubahj/ubhX menu in CCS. Then, click the rr}r(hX menu in CCS. Then, click the hjubj')r}r(hX*Browse project...*h}r (h]h]h]h]h]uhjh]r hXBrowse project...r r }r (hUhjubahj/ubhX button and choose the rr}r(hX button and choose the hjubjW)r}r(hX7**[rtos or baremetal]_template_app__.out**h}r(h]h]h]h]h]uhjh]rhX3[rtos or baremetal]_template_app__.outrr}r(hUhjubahj_ubhX executable. Then click rr}r(hX executable. Then click hjubj')r}r(hX*OK*h}r(h]h]h]h]h]uhjh]rhXOKrr }r!(hUhjubahj/ubhX to load the executable.r"r#}r$(hX to load the executable.hjubeubj)r%}r&(hX).. image:: ../images/load-executable.png hhhjhjh}r'(UuriX"rtos/../images/load-executable.pngr(h]h]h]h]j}r)U*j(sh]uhM]hhh]ubj/)r*}r+(hXYou should now see the **main.c** file open in CCS and the program halted at the beginning of the ``main()`` function. At this point you can click on the *Resume (F8)* |resume| button to start executing the Template Application.hhhjhj3h}r,(h]h]h]h]h]uhM^hhh]r-(hXYou should now see the r.r/}r0(hXYou should now see the hj*ubjW)r1}r2(hX **main.c**h}r3(h]h]h]h]h]uhj*h]r4hXmain.cr5r6}r7(hUhj1ubahj_ubhXA file open in CCS and the program halted at the beginning of the r8r9}r:(hXA file open in CCS and the program halted at the beginning of the hj*ubj)r;}r<(hX ``main()``h}r=(h]h]h]h]h]uhj*h]r>hXmain()r?r@}rA(hUhj;ubahj#ubhX. function. At this point you can click on the rBrC}rD(hX. function. At this point you can click on the hj*ubj')rE}rF(hX *Resume (F8)*h}rG(h]h]h]h]h]uhj*h]rHhX Resume (F8)rIrJ}rK(hUhjEubahj/ubhX rL}rM(hX hj*ubj)rN}rO(hX#image:: ../images/resume-button.pngrPhj*hNhjh}rQ(UuriX rtos/../images/resume-button.pngrRh]h]h]h]j}rSU*jRsh]UaltXresumerTuhNhhh]ubhX4 button to start executing the Template Application.rUrV}rW(hX4 button to start executing the Template Application.hj*ubeubh)rX}rY(hX0.. |resume| image:: ../images/resume-button.png hhhjhUsubstitution_definitionrZh}r[(h]h]h]h]h]r\jTauhMbhhh]r]j)r^}r_(hjPh}r`(UuriX rtos/../images/resume-button.pngrah]h]h]h]j}rbU*jash]UaltjTuhjXh]hjubaubj/)rc}rd(hXThe application will begin running and print progress over the UART. You should see the following text printed to your serial terminal::hhhjhj3h}re(h]h]h]h]h]uhMdhhh]rfhXThe application will begin running and print progress over the UART. You should see the following text printed to your serial terminal:rgrh}ri(hXThe application will begin running and print progress over the UART. You should see the following text printed to your serial terminal:hjcubaubj)rj}rk(hXBoard Init complete Uart Init complete I2C Init complete Gpio Init complete MCSPI Init complete ======== Peripheral Initialization complete ======== ======== Starting to create application tasks ======== gpio_toggle_led_task task created. uart_task task created. spi_test_task task created. i2c_eeprom_read_and_display_task task created. ======== Application tasks created successfully ======== gpio_toggle_led task started uart_task task started i2c_eeprom_read_and_display task started spi_test task started Board Name read: AM572PM_ Board version read: A.30 spi_test task ended i2c_eeprom_read_and_display task ended uart_task :Enter a word or Esc to quit >hhhjhjh}rl(jjh]h]h]h]h]uhMnhhh]rmhXBoard Init complete Uart Init complete I2C Init complete Gpio Init complete MCSPI Init complete ======== Peripheral Initialization complete ======== ======== Starting to create application tasks ======== gpio_toggle_led_task task created. uart_task task created. spi_test_task task created. i2c_eeprom_read_and_display_task task created. ======== Application tasks created successfully ======== gpio_toggle_led task started uart_task task started i2c_eeprom_read_and_display task started spi_test task started Board Name read: AM572PM_ Board version read: A.30 spi_test task ended i2c_eeprom_read_and_display task ended uart_task :Enter a word or Esc to quit >rnro}rp(hUhjjubaubj/)rq}rr(hXType a word into the serial terminal. It should be echoed back to you. Then, enter the ``ESC`` character to exit the Template Application. For example::hhhjhj3h}rs(h]h]h]h]h]uhMhhh]rt(hXWType a word into the serial terminal. It should be echoed back to you. Then, enter the rurv}rw(hXWType a word into the serial terminal. It should be echoed back to you. Then, enter the hjqubj)rx}ry(hX``ESC``h}rz(h]h]h]h]h]uhjqh]r{hXESCr|r}}r~(hUhjxubahj#ubhX9 character to exit the Template Application. For example:rr}r(hX9 character to exit the Template Application. For example:hjqubeubj)r}r(hXuart_task :Enter a word or Esc to quit >hello Data received is:hello uart_task :Enter a word or Esc to quit >test Data received is:test uart_task :Enter a word or Esc to quit >^[ uart_task task ended Template app endedhhhjhjh}r(jjh]h]h]h]h]uhMhhh]rhXuart_task :Enter a word or Esc to quit >hello Data received is:hello uart_task :Enter a word or Esc to quit >test Data received is:test uart_task :Enter a word or Esc to quit >^[ uart_task task ended Template app endedrr}r(hUhjubaubj/)r}r(hXNext, click the *Terminate* |terminate| button to disconnect from the target. At this point you have successfully imported, built, and run the Template Application.hhhjhj3h}r(h]h]h]h]h]uhMhhh]r(hXNext, click the rr}r(hXNext, click the hjubj')r}r(hX *Terminate*h}r(h]h]h]h]h]uhjh]rhX Terminaterr}r(hUhjubahj/ubhX r}r(hX hjubj)r}r(hX&image:: ../images/terminate-button.pngrhjhNhjh}r(UuriX#rtos/../images/terminate-button.pngrh]h]h]h]j}rU*jsh]UalthuhNhhh]ubhX} button to disconnect from the target. At this point you have successfully imported, built, and run the Template Application.rr}r(hX} button to disconnect from the target. At this point you have successfully imported, built, and run the Template Application.hjubeubheubhjhjZh}r(h]h]h]h]h]rhauhMhhh]rj)r}r(hjh}r(UuriX#rtos/../images/terminate-button.pngrh]h]h]h]j}rU*jsh]Ualthuhhh]hjubaubjTjXuUparse_messagesr]r(cdocutils.nodes system_message r)r}r(hUhh)r}r(hUjKhh)r}r(hUhhhhhhh}r(h]h]h]h]rUimage-processing-demorah]rhauhK hhh]r(h)r}r(hXImage Processing Demorhjhhhhh}r(h]h]h]h]h]uhK hhh]rhXImage Processing Demorr}r(hjhjubaubj )r}r(hXPhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Image_Processing_Demohjhj XEsource/rtos/Examples_and_Demonstrations/Image_Processing_Demo.rst.incrr}rbhjh}r(jjh]h]h]h]h]uhKhhh]rhXPhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Image_Processing_Demorr}r(hUhjubaubjh)r}r(hUjKhjhjhhh}r(h]rX requirementsrah]h]h]rU requirementsrah]uhK.hhh]r(h)r}r(hX Requirementsrhjhjhhh}r(h]h]h]h]h]uhK.hhh]rhX Requirementsrr}r(hjhjubaubj/)r}r(hX?The following materials are required to run this demonstration:rhjhjhj3h}r(h]h]h]h]h]uhK0hhh]rhX?The following materials are required to run this demonstration:rr}r(hjhjubaubj/)r}r(hXHardwarerhjhjhj3h}r(h]h]h]h]h]uhK2hhh]rhXHardwarerr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK4hhh]r(jX)r}r(hXTI EVM (see list above)rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK4h]rhXTI EVM (see list above)rr}r(hjhjubaubaubjX)r}r(hX$Local Area Network with DHCP supportrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK5h]rhX$Local Area Network with DHCP supportrr}r(hjhjubaubaubjX)r}r(hX%JTAG Emulator (on board or external) hjhjhj[h}r(h]h]h]h]h]uhNhhh]r j/)r }r (hX$JTAG Emulator (on board or external)r hjhjhj3h}r (h]h]h]h]h]uhK6h]rhX$JTAG Emulator (on board or external)rr}r(hj hj ubaubaubeubj/)r}r(hXSoftwarerhjhjhj3h}r(h]h]h]h]h]uhK8hhh]rhXSoftwarerr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK:hhh]r(jX)r}r(hXProcessor-SDK RTOSr hjhjhj[h}r!(h]h]h]h]h]uhNhhh]r"j/)r#}r$(hj hjhjhj3h}r%(h]h]h]h]h]uhK:h]r&hXProcessor-SDK RTOSr'r(}r)(hj hj#ubaubaubjX)r*}r+(hXCode Composer Studio hjhjhj[h}r,(h]h]h]h]h]uhNhhh]r-j/)r.}r/(hXCode Composer Studior0hj*hjhj3h}r1(h]h]h]h]h]uhK;h]r2hXCode Composer Studior3r4}r5(hj0hj.ubaubaubeubj)r6}r7(hUhjhjhjh}r8(h]h]h]h]h]uhK=hhh]r9j)r:}r;(hUjKhj6hjhhh}r<(h]h]h]h]h]uhKhhh]ubaubeubh)r=}r>(hUjKhjhjhhh}r?(h]r@jah]h]h]rAUid15rBah]uhK@hhh]rC(h)rD}rE(hXSoftware DesignrFhj=hjhhh}rG(h]h]h]h]h]uhK@hhh]rHhXSoftware DesignrIrJ}rK(hjFhjDubaubh)rL}rM(hUjKhj=hjhhh}rN(h]rOX more about processing algorithmsrPah]h]h]rQU more-about-processing-algorithmsrRah]uhKChhh]rS(h)rT}rU(hX More about processing algorithmsrVhjLhjhhh}rW(h]h]h]h]h]uhKChhh]rXhX More about processing algorithmsrYrZ}r[(hjVhjTubaubj/)r\}r](hXThe application will use IMGLIB APIs for its core image processing needs. The following steps are performed for edge detection:r^hjLhjhj3h}r_(h]h]h]h]h]uhKEhhh]r`hXThe application will use IMGLIB APIs for its core image processing needs. The following steps are performed for edge detection:rarb}rc(hj^hj\ubaubjQ)rd}re(hUhjLhjhjTh}rf(jVX-h]h]h]h]h]uhKHhhh]rg(jX)rh}ri(hX2Split input image into multiple overlapping slicesrjhjdhjhj[h}rk(h]h]h]h]h]uhNhhh]rlj/)rm}rn(hjjhjhhjhj3h}ro(h]h]h]h]h]uhKHh]rphX2Split input image into multiple overlapping slicesrqrr}rs(hjjhjmubaubaubjX)rt}ru(hXIf it is a RGB image, separate out the Luma component (Y) for processing (See `YCbCr `__ for further details)hjdhjhj[h}rv(h]h]h]h]h]uhNhhh]rwj/)rx}ry(hXIf it is a RGB image, separate out the Luma component (Y) for processing (See `YCbCr `__ for further details)hjthjhj3h}rz(h]h]h]h]h]uhKIh]r{(hXNIf it is a RGB image, separate out the Luma component (Y) for processing (See r|r}}r~(hXNIf it is a RGB image, separate out the Luma component (Y) for processing (See hjxubj)r}r(hX.`YCbCr `__h}r(UnameXYCbCrjX"http://en.wikipedia.org/wiki/Ycbcrh]h]h]h]h]uhjxh]rhXYCbCrrr}r(hUhjubahjubhX for further details)rr}r(hX for further details)hjxubeubaubjX)r}r(hXRun `Sobel operator `__ (IMG_sobel_3x3_8) to get the gradient image of each sliceshjdhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXRun `Sobel operator `__ (IMG_sobel_3x3_8) to get the gradient image of each sliceshjhjhj3h}r(h]h]h]h]h]uhKLh]r(hXRun rr}r(hXRun hjubj)r}r(hX@`Sobel operator `__h}r(UnameXSobel operatorjX+http://en.wikipedia.org/wiki/Sobel_operatorh]h]h]h]h]uhjh]rhXSobel operatorrr}r(hUhjubahjubhX; (IMG_sobel_3x3_8) to get the gradient image of each slicesrr}r(hX; (IMG_sobel_3x3_8) to get the gradient image of each sliceshjubeubaubjX)r}r(hXQRun the thresholding operation ( IMG_thr_le2min_8) on the slices to get the edgeshjdhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXQRun the thresholding operation ( IMG_thr_le2min_8) on the slices to get the edgesrhjhjhj3h}r(h]h]h]h]h]uhKNh]rhXQRun the thresholding operation ( IMG_thr_le2min_8) on the slices to get the edgesrr}r(hjhjubaubaubjX)r}r(hX+Combine the slices to get the final output hjdhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX*Combine the slices to get the final outputrhjhjhj3h}r(h]h]h]h]h]uhKPh]rhX*Combine the slices to get the final outputrr}r(hjhjubaubaubeubeubh)r}r(hUhj=hjhhh}r(h]h]h]h]rUframework-for-multicorerah]rh&auhKShhh]r(h)r}r(hXFramework for multicorerhjhjhhh}r(h]h]h]h]h]uhKShhh]rhXFramework for multicorerr}r(hjhjubaubj/)r}r(hXThe current framework for multicore is IPC (Message Queue). The following are the overall steps (the master and threads will be run on one or more cores):rhjhjhj3h}r(h]h]h]h]h]uhKUhhh]rhXThe current framework for multicore is IPC (Message Queue). The following are the overall steps (the master and threads will be run on one or more cores):rr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKYhhh]r(jX)r}r(hXTThe master thread will preprocess the input image to make a gray scale or luma imagehjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXTThe master thread will preprocess the input image to make a gray scale or luma imagerhjhjhj3h}r(h]h]h]h]h]uhKYh]rhXTThe master thread will preprocess the input image to make a gray scale or luma imagerr}r(hjhjubaubaubjX)r}r(hX}The master thread signal each slave thread to start processing and wait for processing complete signal from all slave threadshjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX}The master thread signal each slave thread to start processing and wait for processing complete signal from all slave threadsrhjhjhj3h}r(h]h]h]h]h]uhK[h]rhX}The master thread signal each slave thread to start processing and wait for processing complete signal from all slave threadsrr}r(hjhjubaubaubjX)r}r(hXXThe slave threads run edge detection function to generate output edge image of the slicehjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXXThe slave threads run edge detection function to generate output edge image of the slicerhjhjhj3h}r(h]h]h]h]h]uhK]h]rhXXThe slave threads run edge detection function to generate output edge image of the slicerr}r(hjhjubaubaubjX)r}r(hXOThen the slave threads signal master thread indicating the processing completedhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXOThen the slave threads signal master thread indicating the processing completedrhjhjhj3h}r(h]h]h]h]h]uhK_h]rhXOThen the slave threads signal master thread indicating the processing completedrr}r(hjhjubaubaubjX)r}r(hXrOnce master thread receives completion signal from all threads it proceeds with further user interface processing hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXqOnce master thread receives completion signal from all threads it proceeds with further user interface processingrhjhjhj3h}r(h]h]h]h]h]uhKah]r hXqOnce master thread receives completion signal from all threads it proceeds with further user interface processingr r }r (hjhjubaubaubeubj)r }r(hUhjhjhjh}r(h]h]h]h]h]uhKdhhh]rj)r}r(hUjKhj hjhhh}r(h]h]h]h]h]uhKhhh]ubaubeubh)r}r(hUjKhj=hjhhh}r(h]rXhow to build the demorah]h]h]rUhow-to-build-the-demorah]uhKghhh]r(h)r}r(hXHow to Build the Demorhjhjhhh}r(h]h]h]h]h]uhKghhh]r hXHow to Build the Demor!r"}r#(hjhjubaubh)r$}r%(hUjKhjhjhhh}r&(h]r'X am572x gp evmr(ah]h]h]r)U am572x-gp-evmr*ah]uhKjhhh]r+(h)r,}r-(hX AM572x GP EVMr.hj$hjhhh}r/(h]h]h]h]h]uhKjhhh]r0hX AM572x GP EVMr1r2}r3(hj.hj,ubaubj/)r4}r5(hX**For Linux:**r6hj$hjhj3h}r7(h]h]h]h]h]uhKlhhh]r8jW)r9}r:(hj6h}r;(h]h]h]h]h]uhj4h]r<hX For Linux:r=r>}r?(hUhj9ubahj_ubaubjQ)r@}rA(hUhj$hjhjTh}rB(jVX-h]h]h]h]h]uhKnhhh]rCjX)rD}rE(hXWUnder ~/ti/processor_sdk_rtos_am57xx_x_0x_xx_xx directory, run the following commands: hj@hjhj[h}rF(h]h]h]h]h]uhNhhh]rGj/)rH}rI(hXVUnder ~/ti/processor_sdk_rtos_am57xx_x_0x_xx_xx directory, run the following commands:rJhjDhjhj3h}rK(h]h]h]h]h]uhKnh]rLhXVUnder ~/ti/processor_sdk_rtos_am57xx_x_0x_xx_xx directory, run the following commands:rMrN}rO(hjJhjHubaubaubaubj)rP}rQ(hXsource ./setupenv.sh make demo_clean make demo the OUT files for A15, DSP1 and DSP2 will be built at ~/ti/processor_sdk_rtos_am57xx_x_0x_xx_xx/demos/image_processing/ipc/evmam572x/host/build, ~/ti/processor_sdk_rtos_am57xx_x_0x_xx_xx/demos/image_processing/ipc/evmam572x/dsp1/build, and ~/ti/processor_sdk_rtos_am57xx_x_0x_xx_xx/demos/image_processing/ipc/evmam572x/dsp2/build respectivelyhj$hjhjh}rR(jjh]h]h]h]h]uhMihhh]rShXsource ./setupenv.sh make demo_clean make demo the OUT files for A15, DSP1 and DSP2 will be built at ~/ti/processor_sdk_rtos_am57xx_x_0x_xx_xx/demos/image_processing/ipc/evmam572x/host/build, ~/ti/processor_sdk_rtos_am57xx_x_0x_xx_xx/demos/image_processing/ipc/evmam572x/dsp1/build, and ~/ti/processor_sdk_rtos_am57xx_x_0x_xx_xx/demos/image_processing/ipc/evmam572x/dsp2/build respectivelyrTrU}rV(hUhjPubaubj/)rW}rX(hX**For Windows:**rYhj$hjhj3h}rZ(h]h]h]h]h]uhK{hhh]r[jW)r\}r](hjYh}r^(h]h]h]h]h]uhjWh]r_hX For Windows:r`ra}rb(hUhj\ubahj_ubaubjQ)rc}rd(hUhj$hjhjTh}re(jVX-h]h]h]h]h]uhK}hhh]rfjX)rg}rh(hXZUnder C:\\ti\\processor_sdk_rtos_am57xx_x_0x_xx_xx directory, run the following commands: hjchjhj[h}ri(h]h]h]h]h]uhNhhh]rjj/)rk}rl(hXYUnder C:\\ti\\processor_sdk_rtos_am57xx_x_0x_xx_xx directory, run the following commands:hjghjhj3h}rm(h]h]h]h]h]uhK}h]rnhXWUnder C:\ti\processor_sdk_rtos_am57xx_x_0x_xx_xx directory, run the following commands:rorp}rq(hXYUnder C:\\ti\\processor_sdk_rtos_am57xx_x_0x_xx_xx directory, run the following commands:hjkubaubaubaubj)rr}rs(hXsetupenv.bat gmake demo_clean gmake demo the OUT files for A15, DSP1 and DSP2 will be built at C:\ti\processor_sdk_rtos_am57xx_x_0x_xx_xx\demos\image_processing\ipc\evmam572x\host\build, C:\ti\processor_sdk_rtos_am57xx_x_0x_xx_xx\demos\image_processing\ipc\evmam572x\dsp1\build, and C:\ti\processor_sdk_rtos_am57xx_x_0x_xx_xx\demos\image_processing\ipc\evmam572x\dsp2\build respectivelyhj$hjhjh}rt(jjh]h]h]h]h]uhMxhhh]ruhXsetupenv.bat gmake demo_clean gmake demo the OUT files for A15, DSP1 and DSP2 will be built at C:\ti\processor_sdk_rtos_am57xx_x_0x_xx_xx\demos\image_processing\ipc\evmam572x\host\build, C:\ti\processor_sdk_rtos_am57xx_x_0x_xx_xx\demos\image_processing\ipc\evmam572x\dsp1\build, and C:\ti\processor_sdk_rtos_am57xx_x_0x_xx_xx\demos\image_processing\ipc\evmam572x\dsp2\build respectivelyrvrw}rx(hUhjrubaubeubh)ry}rz(hUhjhjhhh}r{(h]h]h]h]r|U c6657-evmr}ah]r~hauhKhhh]r(h)r}r(hX C6657 EVMrhjyhjhhh}r(h]h]h]h]h]uhKhhh]rhX C6657 EVMrr}r(hjhjubaubj/)r}r(hX**For Linux:**rhjyhjhj3h}r(h]h]h]h]h]uhKhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX For Linux:rr}r(hUhjubahj_ubaubjQ)r}r(hUhjyhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]rjX)r}r(hXVUnder ~/ti/processor_sdk_rtos_c665x_x_0x_xx_xx directory, run the following commands: hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXUUnder ~/ti/processor_sdk_rtos_c665x_x_0x_xx_xx directory, run the following commands:rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXUUnder ~/ti/processor_sdk_rtos_c665x_x_0x_xx_xx directory, run the following commands:rr}r(hjhjubaubaubaubj)r}r(hXsource ./setupenv.sh make demo_clean make demo the OUT files for DSPs will be built at ~/ti/processor_sdk_rtos_c665x_x_0x_xx_xx/demos/image_processing/ipc/evmc6657l/master/build, ~/ti/processor_sdk_rtos_c665x_x_0x_xx_xx/demos/image_processing/ipc/evmc6657l/slave/build respectivelyhjyhjhjh}r(jjh]h]h]h]h]uhMhhh]rhXsource ./setupenv.sh make demo_clean make demo the OUT files for DSPs will be built at ~/ti/processor_sdk_rtos_c665x_x_0x_xx_xx/demos/image_processing/ipc/evmc6657l/master/build, ~/ti/processor_sdk_rtos_c665x_x_0x_xx_xx/demos/image_processing/ipc/evmc6657l/slave/build respectivelyrr}r(hUhjubaubj/)r}r(hX**For Windows:**rhjyhjhj3h}r(h]h]h]h]h]uhKhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX For Windows:rr}r(hUhjubahj_ubaubjQ)r}r(hUhjyhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]rjX)r}r(hXYUnder C:\\ti\\processor_sdk_rtos_c665x_x_0x_xx_xx directory, run the following commands: hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXXUnder C:\\ti\\processor_sdk_rtos_c665x_x_0x_xx_xx directory, run the following commands:hjhjhj3h}r(h]h]h]h]h]uhKh]rhXVUnder C:\ti\processor_sdk_rtos_c665x_x_0x_xx_xx directory, run the following commands:rr}r(hXXUnder C:\\ti\\processor_sdk_rtos_c665x_x_0x_xx_xx directory, run the following commands:hjubaubaubaubj)r}r(hXsetupenv.bat gmake demo_clean gmake demo the OUT files for DSPs will be built at C:\ti\processor_sdk_rtos_c665x_x_0x_xx_xx\demos\image_processing\ipc\evmc6657l\master\build, C:\ti\processor_sdk_rtos_c665x_x_0x_xx_xx\demos\image_processing\ipc\evmc6657l\slave\build respectivelyhjyhjhjh}r(jjh]h]h]h]h]uhMhhh]rhXsetupenv.bat gmake demo_clean gmake demo the OUT files for DSPs will be built at C:\ti\processor_sdk_rtos_c665x_x_0x_xx_xx\demos\image_processing\ipc\evmc6657l\master\build, C:\ti\processor_sdk_rtos_c665x_x_0x_xx_xx\demos\image_processing\ipc\evmc6657l\slave\build respectivelyrr}r(hUhjubaubeubh)r}r(hUhjhjhhh}r(h]h]h]h]rU c6678-evmrah]rhauhKhhh]r(h)r}r(hX C6678 EVMrhjhjhhh}r(h]h]h]h]h]uhKhhh]rhX C6678 EVMrr}r(hjhjubaubj/)r}r(hX**For Linux:**rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX For Linux:rr}r(hUhjubahj_ubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]rjX)r}r(hXVUnder ~/ti/processor_sdk_rtos_c667x_x_0x_xx_xx directory, run the following commands: hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXUUnder ~/ti/processor_sdk_rtos_c667x_x_0x_xx_xx directory, run the following commands:rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXUUnder ~/ti/processor_sdk_rtos_c667x_x_0x_xx_xx directory, run the following commands:rr}r(hjhjubaubaubaubj)r}r(hXsource ./setupenv.sh make demo_clean make demo the OUT files for DSPs will be built at ~/ti/processor_sdk_rtos_c667x_x_0x_xx_xx/demos/image_processing/ipc/evmc6678l/master/build, ~/ti/processor_sdk_rtos_c667x_x_0x_xx_xx/demos/image_processing/ipc/evmc6678l/slave/build respectivelyhjhjhjh}r(jjh]h]h]h]h]uhMhhh]rhXsource ./setupenv.sh make demo_clean make demo the OUT files for DSPs will be built at ~/ti/processor_sdk_rtos_c667x_x_0x_xx_xx/demos/image_processing/ipc/evmc6678l/master/build, ~/ti/processor_sdk_rtos_c667x_x_0x_xx_xx/demos/image_processing/ipc/evmc6678l/slave/build respectivelyrr}r(hUhjubaubj/)r}r(hX**For Windows:**rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX For Windows:rr }r (hUhjubahj_ubaubjQ)r }r (hUhjhjhjTh}r (jVX-h]h]h]h]h]uhKhhh]rjX)r}r(hXYUnder C:\\ti\\processor_sdk_rtos_c667x_x_0x_xx_xx directory, run the following commands: hj hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXXUnder C:\\ti\\processor_sdk_rtos_c667x_x_0x_xx_xx directory, run the following commands:hjhjhj3h}r(h]h]h]h]h]uhKh]rhXVUnder C:\ti\processor_sdk_rtos_c667x_x_0x_xx_xx directory, run the following commands:rr}r(hXXUnder C:\\ti\\processor_sdk_rtos_c667x_x_0x_xx_xx directory, run the following commands:hjubaubaubaubj)r}r(hXsetupenv.bat gmake demo_clean gmake demo the OUT files for DSPs will be built at C:\ti\processor_sdk_rtos_c667x_x_0x_xx_xx\demos\image_processing\ipc\evmc6678l\master\build, C:\ti\processor_sdk_rtos_c667x_x_0x_xx_xx\demos\image_processing\ipc\evmc6678l\slave\build respectivelyhjhjhjh}r(jjh]h]h]h]h]uhMhhh]rhXsetupenv.bat gmake demo_clean gmake demo the OUT files for DSPs will be built at C:\ti\processor_sdk_rtos_c667x_x_0x_xx_xx\demos\image_processing\ipc\evmc6678l\master\build, C:\ti\processor_sdk_rtos_c667x_x_0x_xx_xx\demos\image_processing\ipc\evmc6678l\slave\build respectivelyrr}r (hUhjubaubeubh)r!}r"(hUjKhjhjhhh}r#(h]r$Xk2h evmr%ah]h]h]r&Uk2h-evmr'ah]uhKhhh]r((h)r)}r*(hXK2H EVMr+hj!hjhhh}r,(h]h]h]h]h]uhKhhh]r-hXK2H EVMr.r/}r0(hj+hj)ubaubj/)r1}r2(hX**For Linux:**r3hj!hjhj3h}r4(h]h]h]h]h]uhKhhh]r5jW)r6}r7(hj3h}r8(h]h]h]h]h]uhj1h]r9hX For Linux:r:r;}r<(hUhj6ubahj_ubaubjQ)r=}r>(hUhj!hjhjTh}r?(jVX-h]h]h]h]h]uhKhhh]r@jX)rA}rB(hXUUnder ~/ti/processor_sdk_rtos_k2hk_x_0x_xx_xx directory, run the following commands: hj=hjhj[h}rC(h]h]h]h]h]uhNhhh]rDj/)rE}rF(hXTUnder ~/ti/processor_sdk_rtos_k2hk_x_0x_xx_xx directory, run the following commands:rGhjAhjhj3h}rH(h]h]h]h]h]uhKh]rIhXTUnder ~/ti/processor_sdk_rtos_k2hk_x_0x_xx_xx directory, run the following commands:rJrK}rL(hjGhjEubaubaubaubj)rM}rN(hXsource ./setupenv.sh make demo_clean make demo the OUT files for A15, DSPs will be built at ~/ti/processor_sdk_rtos_k2hk_x_0x_xx_xx/demos/image_processing/ipc/evmk2hk/master/build, ~/ti/processor_sdk_rtos_k2hk_x_0x_xx_xx/demos/image_processing/ipc/evmk2hk/slave/build respectivelyhj!hjhjh}rO(jjh]h]h]h]h]uhMhhh]rPhXsource ./setupenv.sh make demo_clean make demo the OUT files for A15, DSPs will be built at ~/ti/processor_sdk_rtos_k2hk_x_0x_xx_xx/demos/image_processing/ipc/evmk2hk/master/build, ~/ti/processor_sdk_rtos_k2hk_x_0x_xx_xx/demos/image_processing/ipc/evmk2hk/slave/build respectivelyrQrR}rS(hUhjMubaubj/)rT}rU(hX**For Windows:**rVhj!hjhj3h}rW(h]h]h]h]h]uhKhhh]rXjW)rY}rZ(hjVh}r[(h]h]h]h]h]uhjTh]r\hX For Windows:r]r^}r_(hUhjYubahj_ubaubjQ)r`}ra(hUhj!hjhjTh}rb(jVX-h]h]h]h]h]uhKhhh]rcjX)rd}re(hXXUnder C:\\ti\\processor_sdk_rtos_k2hk_x_0x_xx_xx directory, run the following commands: hj`hjhj[h}rf(h]h]h]h]h]uhNhhh]rgj/)rh}ri(hXWUnder C:\\ti\\processor_sdk_rtos_k2hk_x_0x_xx_xx directory, run the following commands:hjdhjhj3h}rj(h]h]h]h]h]uhKh]rkhXUUnder C:\ti\processor_sdk_rtos_k2hk_x_0x_xx_xx directory, run the following commands:rlrm}rn(hXWUnder C:\\ti\\processor_sdk_rtos_k2hk_x_0x_xx_xx directory, run the following commands:hjhubaubaubaubj)ro}rp(hXsetupenv.bat gmake demo_clean gmake demo the OUT files for A15, DSPs will be built at C:\ti\processor_sdk_rtos_k2hk_x_0x_xx_xx\demos\image_processing\ipc\evmk2hk\master\build, C:\ti\processor_sdk_rtos_k2hk_x_0x_xx_xx\demos\image_processing\ipc\evmk2hk\slave\build respectivelyhj!hjhjh}rq(jjh]h]h]h]h]uhMhhh]rrhXsetupenv.bat gmake demo_clean gmake demo the OUT files for A15, DSPs will be built at C:\ti\processor_sdk_rtos_k2hk_x_0x_xx_xx\demos\image_processing\ipc\evmk2hk\master\build, C:\ti\processor_sdk_rtos_k2hk_x_0x_xx_xx\demos\image_processing\ipc\evmk2hk\slave\build respectivelyrsrt}ru(hUhjoubaubj)rv}rw(hUhj!hjhjh}rx(h]h]h]h]h]uhKhhh]ryj)rz}r{(hUjKhjvhjhhh}r|(h]h]h]h]h]uhKhhh]ubaubeubeubh)r}}r~(hUjKhj=hjhhh}r(h]rXhow to run the demorah]h]h]rUhow-to-run-the-demorah]uhKhhh]r(h)r}r(hXHow to Run the Demorhj}hjhhh}r(h]h]h]h]h]uhKhhh]rhXHow to Run the Demorr}r(hjhjubaubh)r}r(hUhj}hjhhh}r(h]h]h]h]rUam572x-gp-evm-using-ccsrah]rhauhKhhh]r(h)r}r(hXAM572x GP EVM (Using CCS)rhjhjhhh}r(h]h]h]h]h]uhKhhh]rhXAM572x GP EVM (Using CCS)rr}r(hjhjubaubj/)r}r(hXThe CCS is used to load the program and run on ARM-A15 (HOST), C66x Core 1 (DSP1) and C66x Core 2 (DSP2) by following the steps below:rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhXThe CCS is used to load the program and run on ARM-A15 (HOST), C66x Core 1 (DSP1) and C66x Core 2 (DSP2) by following the steps below:rr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]r(jX)r}r(hXHLaunch CCS and connect to AM572 GP EVM using proper target configurationhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXHLaunch CCS and connect to AM572 GP EVM using proper target configurationrhjhjhj3h}r(h]h]h]h]h]uhKh]rhXHLaunch CCS and connect to AM572 GP EVM using proper target configurationrr}r(hjhjubaubaubjX)r}r(hXXConnect to CortexA15_0 (Host) [Push "Power" button right before connect to CortexA15_0] hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXWConnect to CortexA15_0 (Host) [Push "Power" button right before connect to CortexA15_0]rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXWConnect to CortexA15_0 (Host) [Push "Power" button right before connect to CortexA15_0]rr}r(hjhjubaubaubeubj)r}r(hX,.. Image:: ../images/Am572x_connect_a15.jpg hjhjhjh}r(UuriX%rtos/../images/Am572x_connect_a15.jpgrh]h]h]h]j}rU*jsh]uhKhhh]ubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]rjX)r}r(hXConnect to C66xx_DSP1 hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXConnect to C66xx_DSP1rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXConnect to C66xx_DSP1rr}r(hjhjubaubaubaubj)r}r(hX-.. Image:: ../images/Am572x_connect_dsp1.jpg hjhjhjh}r(UuriX&rtos/../images/Am572x_connect_dsp1.jpgrh]h]h]h]j}rU*jsh]uhKhhh]ubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]rjX)r}r(hXConnect to C66xx_DSP2 hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXConnect to C66xx_DSP2rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXConnect to C66xx_DSP2rr}r(hjhjubaubaubaubj)r}r(hX-.. Image:: ../images/Am572x_connect_dsp2.jpg hjhjhjh}r(UuriX&rtos/../images/Am572x_connect_dsp2.jpgrh]h]h]h]j}rU*jsh]uhMhhh]ubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhMhhh]rjX)r}r(hXBLoad image_processing_evmam572x_dsp1.out to C66xx_DSP1 using JTAG hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXALoad image_processing_evmam572x_dsp1.out to C66xx_DSP1 using JTAGrhjhjhj3h}r(h]h]h]h]h]uhMh]rhXALoad image_processing_evmam572x_dsp1.out to C66xx_DSP1 using JTAGrr}r(hjhjubaubaubaubj)r}r(hX*.. Image:: ../images/Am572x_load_dsp1.jpg hjhjhjh}r(UuriX#rtos/../images/Am572x_load_dsp1.jpgrh]h]h]h]j}rU*jsh]uhMhhh]ubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhMhhh]r(jX)r}r (hX5Run image_processing_evmam572x_dsp1.out on C66xx_DSP1r hjhjhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r(hj hjhjhj3h}r(h]h]h]h]h]uhMh]rhX5Run image_processing_evmam572x_dsp1.out on C66xx_DSP1rr}r(hj hj ubaubaubjX)r}r(hXBLoad image_processing_evmam572x_dsp2.out to C66xx_DSP2 using JTAG hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXALoad image_processing_evmam572x_dsp2.out to C66xx_DSP2 using JTAGrhjhjhj3h}r(h]h]h]h]h]uhMh]rhXALoad image_processing_evmam572x_dsp2.out to C66xx_DSP2 using JTAGrr}r(hjhjubaubaubeubj)r }r!(hX*.. Image:: ../images/Am572x_load_dsp2.jpg hjhjhjh}r"(UuriX#rtos/../images/Am572x_load_dsp2.jpgr#h]h]h]h]j}r$U*j#sh]uhM hhh]ubjQ)r%}r&(hUhjhjhjTh}r'(jVX-h]h]h]h]h]uhM hhh]r((jX)r)}r*(hX5Run image_processing_evmam572x_dsp2.out on C66xx_DSP2r+hj%hjhj[h}r,(h]h]h]h]h]uhNhhh]r-j/)r.}r/(hj+hj)hjhj3h}r0(h]h]h]h]h]uhM h]r1hX5Run image_processing_evmam572x_dsp2.out on C66xx_DSP2r2r3}r4(hj+hj.ubaubaubjX)r5}r6(hX:Loaded image_processing_evmam572x_host.out to CortexA15_0 hj%hjhj[h}r7(h]h]h]h]h]uhNhhh]r8j/)r9}r:(hX9Loaded image_processing_evmam572x_host.out to CortexA15_0r;hj5hjhj3h}r<(h]h]h]h]h]uhM h]r=hX9Loaded image_processing_evmam572x_host.out to CortexA15_0r>r?}r@(hj;hj9ubaubaubeubj)rA}rB(hX*.. Image:: ../images/Am572x_load_host.jpg hjhjhjh}rC(UuriX#rtos/../images/Am572x_load_host.jpgrDh]h]h]h]j}rEU*jDsh]uhMhhh]ubjQ)rF}rG(hUhjhjhjTh}rH(jVX-h]h]h]h]h]uhMhhh]rI(jX)rJ}rK(hX8Run image_processing_evmc6678l_master.out on CortexA15_0rLhjFhjhj[h}rM(h]h]h]h]h]uhNhhh]rNj/)rO}rP(hjLhjJhjhj3h}rQ(h]h]h]h]h]uhMh]rRhX8Run image_processing_evmc6678l_master.out on CortexA15_0rSrT}rU(hjLhjOubaubaubjX)rV}rW(hX0The HOST will display the IP address on CCS CIO hjFhjhj[h}rX(h]h]h]h]h]uhNhhh]rYj/)rZ}r[(hX/The HOST will display the IP address on CCS CIOr\hjVhjhj3h}r](h]h]h]h]h]uhMh]r^hX/The HOST will display the IP address on CCS CIOr_r`}ra(hj\hjZubaubaubeubj)rb}rc(hX$.. Image:: ../images/Am572x_cio.jpg hjhjhjh}rd(UuriXrtos/../images/Am572x_cio.jpgreh]h]h]h]j}rfU*jesh]uhMhhh]ubjQ)rg}rh(hUhjhjhjTh}ri(jVX-h]h]h]h]h]uhMhhh]rj(jX)rk}rl(hX8Users can use internet browser to access this IP addressrmhjghjhj[h}rn(h]h]h]h]h]uhNhhh]roj/)rp}rq(hjmhjkhjhj3h}rr(h]h]h]h]h]uhMh]rshX8Users can use internet browser to access this IP addressrtru}rv(hjmhjpubaubaubjX)rw}rx(hX0The Image Processing Demo page will be displayedryhjghjhj[h}rz(h]h]h]h]h]uhNhhh]r{j/)r|}r}(hjyhjwhjhj3h}r~(h]h]h]h]h]uhMh]rhX0The Image Processing Demo page will be displayedrr}r(hjyhj|ubaubaubjX)r}r(hXNProvide values for the "Number of Cores" and "Select Image to Process" fields hjghjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXMProvide values for the "Number of Cores" and "Select Image to Process" fieldsrhjhjhj3h}r(h]h]h]h]h]uhMh]rhXMProvide values for the "Number of Cores" and "Select Image to Process" fieldsrr}r(hjhjubaubaubeubj)r}r(hX&.. Image:: ../images/Am572x_web_1.jpg hjhjhjh}r(UuriXrtos/../images/Am572x_web_1.jpgrh]h]h]h]j}rU*jsh]uhMhhh]ubj/)r}r(hXThe HOST will read the image via NDK, partition it according to the number of cores, send the messages to DSP cores (Slaves) via IPC MessageQ. The DSP cores will start processing the partitioned images concurrently. The resulting output image will be stored in DDR and the HOST will be notified by DSP cores via IPC MessageQ. Subsequently, the HOST will write the input and output images to the Image Processing Demo page using NDK.rhjhjhj3h}r(h]h]h]h]h]uhMhhh]rhXThe HOST will read the image via NDK, partition it according to the number of cores, send the messages to DSP cores (Slaves) via IPC MessageQ. The DSP cores will start processing the partitioned images concurrently. The resulting output image will be stored in DDR and the HOST will be notified by DSP cores via IPC MessageQ. Subsequently, the HOST will write the input and output images to the Image Processing Demo page using NDK.rr}r(hjhjubaubj)r}r(hX&.. Image:: ../images/Am572x_web_2.jpg hjhjhjh}r(UuriXrtos/../images/Am572x_web_2.jpgrh]h]h]h]j}rU*jsh]uhM$hhh]ubj)r}r(hUhjhjhjh}r(h]h]h]h]h]uhM%hhh]rj)r}r(hUjKhjhjhhh}r(h]h]h]h]h]uhKhhh]ubaubeubh)r}r(hUhj}hjhhh}r(h]h]h]h]rUam572x-gp-evm-using-sblrah]rhJauhM(hhh]r(h)r}r(hXAM572x GP EVM (Using SBL)rhjhjhhh}r(h]h]h]h]h]uhM(hhh]rhXAM572x GP EVM (Using SBL)rr}r(hjhjubaubj/)r}r(hXThe SBL is used to load the program from SD card and run on ARM-A15 (HOST), C66x Core 1 (DSP1) and C66x Core 2 (DSP2) by following the steps below:rhjhjhj3h}r(h]h]h]h]h]uhM*hhh]rhXThe SBL is used to load the program from SD card and run on ARM-A15 (HOST), C66x Core 1 (DSP1) and C66x Core 2 (DSP2) by following the steps below:rr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhM.hhh]r(jX)r}r(hXCopy "app" and "MLO" from processor_sdk_rtos_am57xx_x_0x_00_0x\\prebuilt-sdcards\\evmAM572x\\sd_card_files on Windows or processor_sdk_rtos_am57xx_x_0x_00_0x/prebuilt-sdcards/evmAM572x/sd_card_files on Linux to the root directory of a formatted micro SD cardhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXCopy "app" and "MLO" from processor_sdk_rtos_am57xx_x_0x_00_0x\\prebuilt-sdcards\\evmAM572x\\sd_card_files on Windows or processor_sdk_rtos_am57xx_x_0x_00_0x/prebuilt-sdcards/evmAM572x/sd_card_files on Linux to the root directory of a formatted micro SD cardhjhjhj3h}r(h]h]h]h]h]uhM.h]rhXCopy "app" and "MLO" from processor_sdk_rtos_am57xx_x_0x_00_0x\prebuilt-sdcards\evmAM572x\sd_card_files on Windows or processor_sdk_rtos_am57xx_x_0x_00_0x/prebuilt-sdcards/evmAM572x/sd_card_files on Linux to the root directory of a formatted micro SD cardrr}r(hXCopy "app" and "MLO" from processor_sdk_rtos_am57xx_x_0x_00_0x\\prebuilt-sdcards\\evmAM572x\\sd_card_files on Windows or processor_sdk_rtos_am57xx_x_0x_00_0x/prebuilt-sdcards/evmAM572x/sd_card_files on Linux to the root directory of a formatted micro SD cardhjubaubaubjX)r}r(hX8Plug in the micro SD card into uSD slot on AM572x GP EVMrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhM3h]rhX8Plug in the micro SD card into uSD slot on AM572x GP EVMrr}r(hjhjubaubaubjX)r}r(hXTConnect "Serial Debug" on AM572x GP EVM to a PC USB port via a "Serial to USB" cablehjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXTConnect "Serial Debug" on AM572x GP EVM to a PC USB port via a "Serial to USB" cablerhjhjhj3h}r(h]h]h]h]h]uhM4h]rhXTConnect "Serial Debug" on AM572x GP EVM to a PC USB port via a "Serial to USB" cablerr}r(hjhjubaubaubjX)r}r(hXLaunch a terminal emulator like Tera Term and open the local COM port corresponding to the "Serial Debug" (Set it to 115200 bps, 8 bit, none parity, one bit stop, no flow control)hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXLaunch a terminal emulator like Tera Term and open the local COM port corresponding to the "Serial Debug" (Set it to 115200 bps, 8 bit, none parity, one bit stop, no flow control)rhjhjhj3h}r(h]h]h]h]h]uhM6h]rhXLaunch a terminal emulator like Tera Term and open the local COM port corresponding to the "Serial Debug" (Set it to 115200 bps, 8 bit, none parity, one bit stop, no flow control)rr}r(hjhjubaubaubjX)r}r(hXLPlug power adapter (12V) into the AM572x GP EVM (DC-In) and power on the EVMhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXLPlug power adapter (12V) into the AM572x GP EVM (DC-In) and power on the EVMrhjhjhj3h}r(h]h]h]h]h]uhM9h]rhXLPlug power adapter (12V) into the AM572x GP EVM (DC-In) and power on the EVMrr}r(hjhjubaubaubjX)r}r(hX<There the IP address will be displayed on the "Serial Debug"rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhM;h]rhX<There the IP address will be displayed on the "Serial Debug"rr}r (hjhjubaubaubjX)r }r (hX8Users can use internet browser to access this IP addressr hjhjhj[h}r (h]h]h]h]h]uhNhhh]rj/)r}r(hj hj hjhj3h}r(h]h]h]h]h]uhM<h]rhX8Users can use internet browser to access this IP addressrr}r(hj hjubaubaubjX)r}r(hX0The Image Processing Demo page will be displayedrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhM=h]rhX0The Image Processing Demo page will be displayedrr }r!(hjhjubaubaubjX)r"}r#(hXNProvide values for the "Number of Cores" and "Select Image to Process" fields hjhjhj[h}r$(h]h]h]h]h]uhNhhh]r%j/)r&}r'(hXMProvide values for the "Number of Cores" and "Select Image to Process" fieldsr(hj"hjhj3h}r)(h]h]h]h]h]uhM>h]r*hXMProvide values for the "Number of Cores" and "Select Image to Process" fieldsr+r,}r-(hj(hj&ubaubaubeubj)r.}r/(hX&.. Image:: ../images/Am572x_web_1.jpg hjhjhjh}r0(UuriXrtos/../images/Am572x_web_1.jpgr1h]h]h]h]j}r2U*j1sh]uhMBhhh]ubj/)r3}r4(hXThe HOST will read the image via NDK, partition it according to the number of cores, send the messages to DSP cores (Slaves) via IPC MessageQ. The DSP cores will start processing the partitioned images concurrently. The resulting output image will be stored in DDR and the HOST will be notified by DSP cores via IPC MessageQ. Subsequently, the HOST will write the input and output images to the Image Processing Demo page using NDK.r5hjhjhj3h}r6(h]h]h]h]h]uhMChhh]r7hXThe HOST will read the image via NDK, partition it according to the number of cores, send the messages to DSP cores (Slaves) via IPC MessageQ. The DSP cores will start processing the partitioned images concurrently. The resulting output image will be stored in DDR and the HOST will be notified by DSP cores via IPC MessageQ. Subsequently, the HOST will write the input and output images to the Image Processing Demo page using NDK.r8r9}r:(hj5hj3ubaubj)r;}r<(hX&.. Image:: ../images/Am572x_web_2.jpg hjhjhjh}r=(UuriXrtos/../images/Am572x_web_2.jpgr>h]h]h]h]j}r?U*j>sh]uhMLhhh]ubeubh)r@}rA(hUhj}hjhhh}rB(h]h]h]h]rCUc6678-evm-or-c6657-evmrDah]rEh/auhMNhhh]rF(h)rG}rH(hXC6678 EVM or C6657 EVMrIhj@hjhhh}rJ(h]h]h]h]h]uhMNhhh]rKhXC6678 EVM or C6657 EVMrLrM}rN(hjIhjGubaubj/)rO}rP(hXCCS is used to load the program and Core 0 will be configured as the host. The following steps show C667x but a similar process applies for C665x.rQhj@hjhj3h}rR(h]h]h]h]h]uhMPhhh]rShXCCS is used to load the program and Core 0 will be configured as the host. The following steps show C667x but a similar process applies for C665x.rTrU}rV(hjQhjOubaubjQ)rW}rX(hUhj@hjhjTh}rY(jVX-h]h]h]h]h]uhMThhh]rZ(jX)r[}r\(hXELaunch CCS and connect to C6678 EVM using proper target configurationr]hjWhjhj[h}r^(h]h]h]h]h]uhNhhh]r_j/)r`}ra(hj]hj[hjhj3h}rb(h]h]h]h]h]uhMTh]rchXELaunch CCS and connect to C6678 EVM using proper target configurationrdre}rf(hj]hj`ubaubaubjX)rg}rh(hXConnect to C66x Core 0 (Host) hjWhjhj[h}ri(h]h]h]h]h]uhNhhh]rjj/)rk}rl(hXConnect to C66x Core 0 (Host)rmhjghjhj3h}rn(h]h]h]h]h]uhMUh]rohXConnect to C66x Core 0 (Host)rprq}rr(hjmhjkubaubaubeubj)rs}rt(hX-.. Image:: ../images/C6678_connect_core0.jpg hj@hjhjh}ru(UuriX&rtos/../images/C6678_connect_core0.jpgrvh]h]h]h]j}rwU*jvsh]uhMXhhh]ubjQ)rx}ry(hUhj@hjhjTh}rz(jVX-h]h]h]h]h]uhMYhhh]r{jX)r|}r}(hX<Loaded image_processing_evmc6678l_master.out to C66x Core 0 hjxhjhj[h}r~(h]h]h]h]h]uhNhhh]rj/)r}r(hX;Loaded image_processing_evmc6678l_master.out to C66x Core 0rhj|hjhj3h}r(h]h]h]h]h]uhMYh]rhX;Loaded image_processing_evmc6678l_master.out to C66x Core 0rr}r(hjhjubaubaubaubj)r}r(hX+.. Image:: ../images/C6678_load_master.jpg hj@hjhjh}r(UuriX$rtos/../images/C6678_load_master.jpgrh]h]h]h]j}rU*jsh]uhM\hhh]ubjQ)r}r(hUhj@hjhjTh}r(jVX-h]h]h]h]h]uhM]hhh]r(jX)r}r(hX4Run image_processing_evmc6678l_master.out on C66xx_0rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhM]h]rhX4Run image_processing_evmc6678l_master.out on C66xx_0rr}r(hjhjubaubaubjX)r}r(hX1Group C66x Core 1-N into a group (Group 1, Slave)rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhM^h]rhX1Group C66x Core 1-N into a group (Group 1, Slave)rr}r(hjhjubaubaubjX)r}r(hXConnect to Group 1 hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXConnect to Group 1rhjhjhj3h}r(h]h]h]h]h]uhM_h]rhXConnect to Group 1rr}r(hjhjubaubaubeubj)r}r(hX... Image:: ../images/C6678_connect_group1.jpg hj@hjhjh}r(UuriX'rtos/../images/C6678_connect_group1.jpgrh]h]h]h]j}rU*jsh]uhMbhhh]ubjQ)r}r(hUhj@hjhjTh}r(jVX-h]h]h]h]h]uhMchhh]rjX)r}r(hX@Load image_processing_evmc6678l_slave.out to Group 1 using JTAG hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX?Load image_processing_evmc6678l_slave.out to Group 1 using JTAGrhjhjhj3h}r(h]h]h]h]h]uhMch]rhX?Load image_processing_evmc6678l_slave.out to Group 1 using JTAGrr}r(hjhjubaubaubaubj)r}r(hX*.. Image:: ../images/C6678_load_slave.jpg hj@hjhjh}r(UuriX#rtos/../images/C6678_load_slave.jpgrh]h]h]h]j}rU*jsh]uhMfhhh]ubjQ)r}r(hUhj@hjhjTh}r(jVX-h]h]h]h]h]uhMghhh]r(jX)r}r(hX3Run image_processing_evmc6678l_slave.out on Group 1rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhMgh]rhX3Run image_processing_evmc6678l_slave.out on Group 1rr}r(hjhjubaubaubjX)r}r(hX0The HOST will display the IP address on CCS CIO hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX/The HOST will display the IP address on CCS CIOrhjhjhj3h}r(h]h]h]h]h]uhMhh]rhX/The HOST will display the IP address on CCS CIOrr}r(hjhjubaubaubeubj)r}r(hX#.. Image:: ../images/C6678_cio.jpg hj@hjhjh}r(UuriXrtos/../images/C6678_cio.jpgrh]h]h]h]j}rU*jsh]uhMkhhh]ubjQ)r}r(hUhj@hjhjTh}r(jVX-h]h]h]h]h]uhMlhhh]r(jX)r}r(hX8Users can use internet browser to access this IP addressrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhMlh]rhX8Users can use internet browser to access this IP addressrr}r(hjhjubaubaubjX)r}r(hX0The Image Processing Demo page will be displayedrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhMmh]rhX0The Image Processing Demo page will be displayedr r }r (hjhjubaubaubjX)r }r (hXNProvide values for the "Number of Cores" and "Select Image to Process" fields hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXMProvide values for the "Number of Cores" and "Select Image to Process" fieldsrhj hjhj3h}r(h]h]h]h]h]uhMnh]rhXMProvide values for the "Number of Cores" and "Select Image to Process" fieldsrr}r(hjhjubaubaubeubj)r}r(hX).. Image:: ../images/Demo_web_page_1.jpg hj@hjhjh}r(UuriX"rtos/../images/Demo_web_page_1.jpgrh]h]h]h]j}rU*jsh]uhMrhhh]ubj/)r}r(hXThe HOST will read the image via NDK, partition it according to the number of cores, send the messages to DSP cores (Slaves) via IPC MessageQ. The DSP cores will start processing the partitioned images concurrently. The resulting output image will be stored in DDR and the HOST will be notified by DSP cores via IPC MessageQ. Subsequently, the HOST will write the input and output images to the Image Processing Demo page using NDK.rhj@hjhj3h}r (h]h]h]h]h]uhMshhh]r!hXThe HOST will read the image via NDK, partition it according to the number of cores, send the messages to DSP cores (Slaves) via IPC MessageQ. The DSP cores will start processing the partitioned images concurrently. The resulting output image will be stored in DDR and the HOST will be notified by DSP cores via IPC MessageQ. Subsequently, the HOST will write the input and output images to the Image Processing Demo page using NDK.r"r#}r$(hjhjubaubj)r%}r&(hX).. Image:: ../images/Demo_web_page_2.jpg hj@hjhjh}r'(UuriX"rtos/../images/Demo_web_page_2.jpgr(h]h]h]h]j}r)U*j(sh]uhM|hhh]ubeubh)r*}r+(hUjKhj}hjhhh}r,(h]r-j%ah]h]h]r.Uid16r/ah]uhM~hhh]r0(h)r1}r2(hXK2H EVMr3hj*hjhhh}r4(h]h]h]h]h]uhM~hhh]r5hXK2H EVMr6r7}r8(hj3hj1ubaubj/)r9}r:(hXCCS is used to load the program and arm_A15_0 will be configured as the master and C66xx_0 - C66xx_7 will be configured as slaves.r;hj*hjhj3h}r<(h]h]h]h]h]uhMhhh]r=hXCCS is used to load the program and arm_A15_0 will be configured as the master and C66xx_0 - C66xx_7 will be configured as slaves.r>r?}r@(hj;hj9ubaubjQ)rA}rB(hUhj*hjhjTh}rC(jVX-h]h]h]h]h]uhMhhh]rD(jX)rE}rF(hXCLaunch CCS and connect to K2H EVM using proper target configurationrGhjAhjhj[h}rH(h]h]h]h]h]uhNhhh]rIj/)rJ}rK(hjGhjEhjhj3h}rL(h]h]h]h]h]uhMh]rMhXCLaunch CCS and connect to K2H EVM using proper target configurationrNrO}rP(hjGhjJubaubaubjX)rQ}rR(hXConnect to arm_A15_0 (Host) hjAhjhj[h}rS(h]h]h]h]h]uhNhhh]rTj/)rU}rV(hXConnect to arm_A15_0 (Host)rWhjQhjhj3h}rX(h]h]h]h]h]uhMh]rYhXConnect to arm_A15_0 (Host)rZr[}r\(hjWhjUubaubaubeubj)r]}r^(hX).. Image:: ../images/K2h_connect_a15.jpg hj*hjhjh}r_(UuriX"rtos/../images/K2h_connect_a15.jpgr`h]h]h]h]j}raU*j`sh]uhMhhh]ubjQ)rb}rc(hUhj*hjhjTh}rd(jVX-h]h]h]h]h]uhMhhh]rejX)rf}rg(hX8Group C66xx_0 to C66xx_7 into a group (Group 1, Slaves) hjbhjhj[h}rh(h]h]h]h]h]uhNhhh]rij/)rj}rk(hX7Group C66xx_0 to C66xx_7 into a group (Group 1, Slaves)rlhjfhjhj3h}rm(h]h]h]h]h]uhMh]rnhX7Group C66xx_0 to C66xx_7 into a group (Group 1, Slaves)rorp}rq(hjlhjjubaubaubaubj)rr}rs(hX).. Image:: ../images/K2h_from_group1.jpg hj*hjhjh}rt(UuriX"rtos/../images/K2h_from_group1.jpgruh]h]h]h]j}rvU*jush]uhMhhh]ubjQ)rw}rx(hUhj*hjhjTh}ry(jVX-h]h]h]h]h]uhMhhh]rzjX)r{}r|(hXConnect to Group 1 hjwhjhj[h}r}(h]h]h]h]h]uhNhhh]r~j/)r}r(hXConnect to Group 1rhj{hjhj3h}r(h]h]h]h]h]uhMh]rhXConnect to Group 1rr}r(hjhjubaubaubaubj)r}r(hX,.. Image:: ../images/K2h_connect_group1.jpg hj*hjhjh}r(UuriX%rtos/../images/K2h_connect_group1.jpgrh]h]h]h]j}rU*jsh]uhMhhh]ubjQ)r}r(hUhj*hjhjTh}r(jVX-h]h]h]h]h]uhMhhh]rjX)r}r(hX>Load image_processing_evmk2hk_slave.out to Group 1 using JTAG hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX=Load image_processing_evmk2hk_slave.out to Group 1 using JTAGrhjhjhj3h}r(h]h]h]h]h]uhMh]rhX=Load image_processing_evmk2hk_slave.out to Group 1 using JTAGrr}r(hjhjubaubaubaubj)r}r(hX).. Image:: ../images/K2h_load_group1.jpg hj*hjhjh}r(UuriX"rtos/../images/K2h_load_group1.jpgrh]h]h]h]j}rU*jsh]uhMhhh]ubjQ)r}r(hUhj*hjhjTh}r(jVX-h]h]h]h]h]uhMhhh]rjX)r}r(hX2Run image_processing_evmk2hk_slave.out on Group 1 hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX1Run image_processing_evmk2hk_slave.out on Group 1rhjhjhj3h}r(h]h]h]h]h]uhMh]rhX1Run image_processing_evmk2hk_slave.out on Group 1rr}r(hjhjubaubaubaubj)r}r(hX(.. Image:: ../images/K2h_run_group1.jpg hj*hjhjh}r(UuriX!rtos/../images/K2h_run_group1.jpgrh]h]h]h]j}rU*jsh]uhMhhh]ubjQ)r}r(hUhj*hjhjTh}r(jVX-h]h]h]h]h]uhMhhh]rjX)r}r(hX<Loaded image_processing_evmk2hk_master_arm.out to arm_A15_0 hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX;Loaded image_processing_evmk2hk_master_arm.out to arm_A15_0rhjhjhj3h}r(h]h]h]h]h]uhMh]rhX;Loaded image_processing_evmk2hk_master_arm.out to arm_A15_0rr}r(hjhjubaubaubaubj)r}r(hX&.. Image:: ../images/K2h_load_a15.jpg hj*hjhjh}r(UuriXrtos/../images/K2h_load_a15.jpgrh]h]h]h]j}rU*jsh]uhMhhh]ubjQ)r}r(hUhj*hjhjTh}r(jVX-h]h]h]h]h]uhMhhh]rjX)r}r(hX9Run image_processing_evmk2hk_master_arm.out on arm_A15_0 hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX8Run image_processing_evmk2hk_master_arm.out on arm_A15_0rhjhjhj3h}r(h]h]h]h]h]uhMh]rhX8Run image_processing_evmk2hk_master_arm.out on arm_A15_0rr}r(hjhjubaubaubaubj)r}r(hX%.. Image:: ../images/K2h_run_a15.jpg hj*hjhjh}r(UuriXrtos/../images/K2h_run_a15.jpgrh]h]h]h]j}rU*jsh]uhMhhh]ubjQ)r}r(hUhj*hjhjTh}r(jVX-h]h]h]h]h]uhMhhh]rjX)r}r(hX0The HOST will display the IP address on CCS CIO hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX/The HOST will display the IP address on CCS CIOrhjhjhj3h}r(h]h]h]h]h]uhMh]rhX/The HOST will display the IP address on CCS CIOrr}r(hjhjubaubaubaubj)r}r(hX!.. Image:: ../images/K2h_cio.jpg hj*hjhjh}r(UuriXrtos/../images/K2h_cio.jpgrh]h]h]h]j}rU*jsh]uhMhhh]ubjQ)r}r(hUhj*hjhjTh}r(jVX-h]h]h]h]h]uhMhhh]r(jX)r}r(hX8Users can use internet browser to access this IP addressrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhMh]rhX8Users can use internet browser to access this IP addressrr}r(hjhjubaubaubjX)r}r(hX0The Image Processing Demo page will be displayedrhjhjhj[h}r(h]h]h]h]h]uhNhhh]r j/)r }r (hjhjhjhj3h}r (h]h]h]h]h]uhMh]r hX0The Image Processing Demo page will be displayedrr}r(hjhj ubaubaubjX)r}r(hXNProvide values for the "Number of Cores" and "Select Image to Process" fields hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXMProvide values for the "Number of Cores" and "Select Image to Process" fieldsrhjhjhj3h}r(h]h]h]h]h]uhMh]rhXMProvide values for the "Number of Cores" and "Select Image to Process" fieldsrr}r(hjhjubaubaubeubj)r}r(hX#.. Image:: ../images/K2h_web_1.jpg hj*hjhjh}r(UuriXrtos/../images/K2h_web_1.jpgr h]h]h]h]j}r!U*j sh]uhMhhh]ubj/)r"}r#(hXThe HOST will read the image via NDK, partition it according to the number of cores, send the messages to DSP cores (Slaves) via IPC MessageQ. The DSP cores will start processing the partitioned images concurrently. The resulting output image will be stored in DDR and the HOST will be notified by DSP cores via IPC MessageQ. Subsequently, the HOST will write the input and output images to the Image Processing Demo page using NDK.r$hj*hjhj3h}r%(h]h]h]h]h]uhMhhh]r&hXThe HOST will read the image via NDK, partition it according to the number of cores, send the messages to DSP cores (Slaves) via IPC MessageQ. The DSP cores will start processing the partitioned images concurrently. The resulting output image will be stored in DDR and the HOST will be notified by DSP cores via IPC MessageQ. Subsequently, the HOST will write the input and output images to the Image Processing Demo page using NDK.r'r(}r)(hj$hj"ubaubj)r*}r+(hX#.. Image:: ../images/K2h_web_2.jpg hj*hjhjh}r,(UuriXrtos/../images/K2h_web_2.jpgr-h]h]h]h]j}r.U*j-sh]uhMhhh]ubeubeubeubeubhjhhh}r/(h]r0jah]h]h]r1Uid14r2ah]uhKhhh]r3(h)r4}r5(hX Introductionr6hjhjhhh}r7(h]h]h]h]h]uhKhhh]r8hX Introductionr9r:}r;(hj6hj4ubaubj/)r<}r=(hXThis page describes the image processing demo provided in the Processor-SDK for RTOS. This demo illustrates the integration of key components in the SDK and provides a framework for application development.r>hjhjhj3h}r?(h]h]h]h]h]uhKhhh]r@hXThis page describes the image processing demo provided in the Processor-SDK for RTOS. This demo illustrates the integration of key components in the SDK and provides a framework for application development.rArB}rC(hj>hj<ubaubj/)rD}rE(hXThe use case implemented is the transfer of image data from/to DDR and internal memory. Typically, images are large and need to be stored in external memory. Key functions includerFhjhjhj3h}rG(h]h]h]h]h]uhK hhh]rHhXThe use case implemented is the transfer of image data from/to DDR and internal memory. Typically, images are large and need to be stored in external memory. Key functions includerIrJ}rK(hjFhjDubaubjQ)rL}rM(hUhjhjhjTh}rN(jVX-h]h]h]h]h]uhKhhh]rO(jX)rP}rQ(hXCOperates on different segments of the same image in different coresrRhjLhjhj[h}rS(h]h]h]h]h]uhNhhh]rTj/)rU}rV(hjRhjPhjhj3h}rW(h]h]h]h]h]uhKh]rXhXCOperates on different segments of the same image in different coresrYrZ}r[(hjRhjUubaubaubjX)r\}r](hXTOperates across multiple cores executing different algorithms on the same image datahjLhjhj[h}r^(h]h]h]h]h]uhNhhh]r_j/)r`}ra(hXTOperates across multiple cores executing different algorithms on the same image datarbhj\hjhj3h}rc(h]h]h]h]h]uhKh]rdhXTOperates across multiple cores executing different algorithms on the same image datarerf}rg(hjbhj`ubaubaubjX)rh}ri(hXETransfers input/output image to a medium (SD card or external system)rjhjLhjhj[h}rk(h]h]h]h]h]uhNhhh]rlj/)rm}rn(hjjhjhhjhj3h}ro(h]h]h]h]h]uhKh]rphXETransfers input/output image to a medium (SD card or external system)rqrr}rs(hjjhjmubaubaubjX)rt}ru(hXVUtilize IPC to communicate between cores to perform an image processing task parallel hjLhjhj[h}rv(h]h]h]h]h]uhNhhh]rwj/)rx}ry(hXUUtilize IPC to communicate between cores to perform an image processing task parallelrzhjthjhj3h}r{(h]h]h]h]h]uhKh]r|hXUUtilize IPC to communicate between cores to perform an image processing task parallelr}r~}r(hjzhjxubaubaubeubj/)r}r(hX0This demo utilizes many SDK features/components:rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhX0This demo utilizes many SDK features/components:rr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]r(jX)r}r(hX?**Multi-core** application utilizing ARM-A15 and DSP-C66x coresrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]r(jW)r}r(hX**Multi-core**h}r(h]h]h]h]h]uhjh]rhX Multi-corerr}r(hUhjubahj_ubhX1 application utilizing ARM-A15 and DSP-C66x coresrr}r(hX1 application utilizing ARM-A15 and DSP-C66x coreshjubeubaubjX)r}r(hX.**IMGLIB** for optimized C66x image processingrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]r(jW)r}r(hX **IMGLIB**h}r(h]h]h]h]h]uhjh]rhXIMGLIBrr}r(hUhjubahj_ubhX$ for optimized C66x image processingrr}r(hX$ for optimized C66x image processinghjubeubaubjX)r}r(hX(**IPC** for interprocessor communicationrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]r(jW)r}r(hX**IPC**h}r(h]h]h]h]h]uhjh]rhXIPCrr}r(hUhjubahj_ubhX! for interprocessor communicationrr}r(hX! for interprocessor communicationhjubeubaubjX)r}r(hX5**NDK** application utilizing NDK for internet accessrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]r(jW)r}r(hX**NDK**h}r(h]h]h]h]h]uhjh]rhXNDKrr}r(hUhjubahj_ubhX. application utilizing NDK for internet accessrr}r(hX. application utilizing NDK for internet accesshjubeubaubjX)r}r(hX$**UIA** for instrumentation logging hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX#**UIA** for instrumentation logginghjhjhj3h}r(h]h]h]h]h]uhKh]r(jW)r}r(hX**UIA**h}r(h]h]h]h]h]uhjh]rhXUIArr}r(hUhjubahj_ubhX for instrumentation loggingrr}r(hX for instrumentation logginghjubeubaubeubj/)r}r(hXcThis demo is not available for all devices. Currently, the following devices and EVM are supported:rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhXcThis demo is not available for all devices. Currently, the following devices and EVM are supported:rr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK!hhh]r(jX)r}r(hXAM57x, on the AM572x GP EVMrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK!h]rhXAM57x, on the AM572x GP EVMrr}r(hjhjubaubaubjX)r}r(hXC665x, on the C665x EVMrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r (h]h]h]h]h]uhK"h]r hXC665x, on the C665x EVMr r }r (hjhjubaubaubjX)r}r(hXC667x, on the C667x EVMrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK#h]rhXC667x, on the C667x EVMrr}r(hjhjubaubaubjX)r}r(hXK2H, on the K2H EVM hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXK2H, on the K2H EVMr hjhjhj3h}r!(h]h]h]h]h]uhK$h]r"hXK2H, on the K2H EVMr#r$}r%(hj hjubaubaubeubj))r&}r'(hXLFor AM572x EVM, only the SD card boot option (via SBL) is current supported.r(hjhjhj,h}r)(h]h]h]h]h]uhNhhh]r*j/)r+}r,(hj(hj&hjhj3h}r-(h]h]h]h]h]uhK'h]r.hXLFor AM572x EVM, only the SD card boot option (via SBL) is current supported.r/r0}r1(hj(hj+ubaubaubj))r2}r3(hX_This demo has been only verified with the Google Chrome along with the 100Mbit router with DHCPr4hjhjhj,h}r5(h]h]h]h]h]uhNhhh]r6j/)r7}r8(hj4hj2hjhj3h}r9(h]h]h]h]h]uhK*h]r:hX_This demo has been only verified with the Google Chrome along with the 100Mbit router with DHCPr;r<}r=(hj4hj7ubaubaubeubhjhUsystem_messager>h}r?(h]UlevelKh]h]r@j2aUsourcejh]h]UlineKUtypeUINFOrAuhKhhh]rBj/)rC}rD(hX/Duplicate implicit target name: "introduction".h}rE(h]h]h]h]h]uhjh]rFhX/Duplicate implicit target name: "introduction".rGrH}rI(hUhjCubahj3ubaubj)rJ}rK(hUhj=hjhj>h}rL(h]UlevelKh]h]rMjBaUsourcejh]h]UlineK@UtypejAuhK@hhh]rNj/)rO}rP(hX2Duplicate implicit target name: "software design".h}rQ(h]h]h]h]h]uhjJh]rRhX2Duplicate implicit target name: "software design".rSrT}rU(hUhjOubahj3ubaubj)rV}rW(hUhj*hjhj>h}rX(h]UlevelKh]h]rYj/aUsourcejh]h]UlineM~UtypejAuhM~hhh]rZj/)r[}r\(hX*Duplicate implicit target name: "k2h evm".h}r](h]h]h]h]h]uhjVh]r^hX*Duplicate implicit target name: "k2h evm".r_r`}ra(hUhj[ubahj3ubaubj)rb}rc(hUhj*hX\internal padding after source/rtos/Examples_and_Demonstrations/Image_Processing_Demo.rst.incrdhj>h}re(h]UlevelKh]h]Usourcejh]h]UlineMUtypeUERRORrfuhMhhh]rg(j/)rh}ri(hX;Content block expected for the "raw" directive; none found.h}rj(h]h]h]h]h]uhjbh]rkhX;Content block expected for the "raw" directive; none found.rlrm}rn(hUhjhubahj3ubj)ro}rp(hX.. raw:: html h}rq(jjh]h]h]h]h]uhjbh]rrhX.. raw:: html rsrt}ru(hUhjoubahjubeubj)rv}rw(hUhh)rx}ry(hUjKhh)rz}r{(hUhhhhhhh}r|(h]h]h]h]r}Uposix-smp-demor~ah]rhVauhKhhh]r(h)r}r(hXPOSIX-SMP Demorhjzhhhhh}r(h]h]h]h]h]uhKhhh]rhXPOSIX-SMP Demorr}r(hjhjubaubj )r}r(hXDhttp://processors.wiki.ti.com/index.php/Processor_SDK_Posix-SMP_Demohjzhj X>source/rtos/Examples_and_Demonstrations/Posix_SMP_Demo.rst.incrr}rbhjh}r(jjh]h]h]h]h]uhKhhh]rhXDhttp://processors.wiki.ti.com/index.php/Processor_SDK_Posix-SMP_Demorr}r(hUhjubaubjxh)r}r(hUjKhjzhjhhh}r(h]rjah]h]h]rUid18rah]uhKhhh]r(h)r}r(hX Requirementsrhjhjhhh}r(h]h]h]h]h]uhKhhh]rhX Requirementsrr}r(hjhjubaubj/)r}r(hX?The following materials are required to run this demonstration:rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhX?The following materials are required to run this demonstration:rr}r(hjhjubaubj/)r}r(hXHardwarerhjhjhj3h}r(h]h]h]h]h]uhK hhh]rhXHardwarerr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK"hhh]r(jX)r}r(hXTI EVM (see list above)rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK"h]rhXTI EVM (see list above)rr}r(hjhjubaubaubjX)r}r(hX(Serial UART cable (provided in EVM kit) hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX'Serial UART cable (provided in EVM kit)rhjhjhj3h}r(h]h]h]h]h]uhK#h]rhX'Serial UART cable (provided in EVM kit)rr}r(hjhjubaubaubeubj/)r}r(hXSoftwarerhjhjhj3h}r(h]h]h]h]h]uhK%hhh]rhXSoftwarerr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK'hhh]r(jX)r}r(hXProcessor-SDK RTOSrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK'h]rhXProcessor-SDK RTOSrr}r(hjhjubaubaubjX)r}r(hXCode Composer Studio hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXCode Composer Studiorhjhjhj3h}r(h]h]h]h]h]uhK(h]rhXCode Composer Studiorr}r(hjhjubaubaubeubj)r}r(hUhjhjhjh}r(h]h]h]h]h]uhK*hhh]rj)r}r(hUjKhjhjhhh}r(h]h]h]h]h]uhKhhh]ubaubeubh)r}r(hUjKhjzhjhhh}r(h]rXsoftware designrah]h]h]rUid19rah]uhK-hhh]r(h)r}r(hXSoftware Designrhjhjhhh}r(h]h]h]h]h]uhK-hhh]rhXSoftware Designrr}r(hjhjubaubj/)r }r (hXmThe demo is based on Dhrystone 2.1 from `link `__.hjhjhj3h}r (h]h]h]h]h]uhK/hhh]r (hX(The demo is based on Dhrystone 2.1 from r r}r(hX(The demo is based on Dhrystone 2.1 from hj ubj)r}r(hXD`link `__h}r(UnameXlinkjX9http://fossies.org/linux/privat/old/dhrystone-2.1.tar.gz/h]h]h]h]h]uhj h]rhXlinkrr}r(hUhjubahjubhX.r}r(hX.hj ubeubj/)r}r(hXThe purpose of the demo is two-fold. First, it is to show easy scaling of throughput across cores in a SMP cluster when running TI-RTOS. Second, it shows easy portability of Posix threads between TI-RTOS and Linux.rhjhjhj3h}r(h]h]h]h]h]uhK2hhh]rhXThe purpose of the demo is two-fold. First, it is to show easy scaling of throughput across cores in a SMP cluster when running TI-RTOS. Second, it shows easy portability of Posix threads between TI-RTOS and Linux.rr}r (hjhjubaubj/)r!}r"(hX7The overall requirement is discover all parameters automatically without user input, and to minimize the amount of code that must be customized between TI-RTOS and Linux. This demonstrates that the same Posix threads as well as their setup/control code can be run on either TI-RTOS or Linux with minimal effort.r#hjhjhj3h}r$(h]h]h]h]h]uhK7hhh]r%hX7The overall requirement is discover all parameters automatically without user input, and to minimize the amount of code that must be customized between TI-RTOS and Linux. This demonstrates that the same Posix threads as well as their setup/control code can be run on either TI-RTOS or Linux with minimal effort.r&r'}r((hj#hj!ubaubj/)r)}r*(hXIn order to accomplish this, several major modifications were made to Dhrystone in order to "threadify" it. Some of these changes slightly affect the results compared to an unmodified version. Thus this modified version should be run on all processors where comparisons will be drawn.r+hjhjhj3h}r,(h]h]h]h]h]uhK=hhh]r-hXIn order to accomplish this, several major modifications were made to Dhrystone in order to "threadify" it. Some of these changes slightly affect the results compared to an unmodified version. Thus this modified version should be run on all processors where comparisons will be drawn.r.r/}r0(hj+hj)ubaubjQ)r1}r2(hUhjhjhjTh}r3(jVX-h]h]h]h]h]uhKBhhh]r4(jX)r5}r6(hX**Removal of most printf() during normal operation.** Original code dumped all final values for the user to verify. Changed to programmatic verification. Only printf() for actual results (DMIPS and Dhrystones) preserved.hj1hjhj[h}r7(h]h]h]h]h]uhNhhh]r8j/)r9}r:(hX**Removal of most printf() during normal operation.** Original code dumped all final values for the user to verify. Changed to programmatic verification. Only printf() for actual results (DMIPS and Dhrystones) preserved.hj5hjhj3h}r;(h]h]h]h]h]uhKBh]r<(jW)r=}r>(hX5**Removal of most printf() during normal operation.**h}r?(h]h]h]h]h]uhj9h]r@hX1Removal of most printf() during normal operation.rArB}rC(hUhj=ubahj_ubhX Original code dumped all final values for the user to verify. Changed to programmatic verification. Only printf() for actual results (DMIPS and Dhrystones) preserved.rDrE}rF(hX Original code dumped all final values for the user to verify. Changed to programmatic verification. Only printf() for actual results (DMIPS and Dhrystones) preserved.hj9ubeubaubjX)rG}rH(hXY**Removal of all global variables.** They are accessed through an "inst" pointer instead.hj1hjhj[h}rI(h]h]h]h]h]uhNhhh]rJj/)rK}rL(hXY**Removal of all global variables.** They are accessed through an "inst" pointer instead.hjGhjhj3h}rM(h]h]h]h]h]uhKFh]rN(jW)rO}rP(hX$**Removal of all global variables.**h}rQ(h]h]h]h]h]uhjKh]rRhX Removal of all global variables.rSrT}rU(hUhjOubahj_ubhX5 They are accessed through an "inst" pointer instead.rVrW}rX(hX5 They are accessed through an "inst" pointer instead.hjKubeubaubjX)rY}rZ(hX**Adaptive discovery of iteration count.** Original code used a #define. This version doubles iteration count until execution time is about 10M timer ticks.hj1hjhj[h}r[(h]h]h]h]h]uhNhhh]r\j/)r]}r^(hX**Adaptive discovery of iteration count.** Original code used a #define. This version doubles iteration count until execution time is about 10M timer ticks.hjYhjhj3h}r_(h]h]h]h]h]uhKHh]r`(jW)ra}rb(hX***Adaptive discovery of iteration count.**h}rc(h]h]h]h]h]uhj]h]rdhX&Adaptive discovery of iteration count.rerf}rg(hUhjaubahj_ubhXr Original code used a #define. This version doubles iteration count until execution time is about 10M timer ticks.rhri}rj(hXr Original code used a #define. This version doubles iteration count until execution time is about 10M timer ticks.hj]ubeubaubjX)rk}rl(hX**Adaptive discovery of number of cores in SMP cluster.** Original code didn't use threads. This version doubled number of threads until cumulative DMIPS flattens out. hj1hjhj[h}rm(h]h]h]h]h]uhNhhh]rnj/)ro}rp(hX**Adaptive discovery of number of cores in SMP cluster.** Original code didn't use threads. This version doubled number of threads until cumulative DMIPS flattens out.hjkhjhj3h}rq(h]h]h]h]h]uhKKh]rr(jW)rs}rt(hX9**Adaptive discovery of number of cores in SMP cluster.**h}ru(h]h]h]h]h]uhjoh]rvhX5Adaptive discovery of number of cores in SMP cluster.rwrx}ry(hUhjsubahj_ubhXn Original code didn't use threads. This version doubled number of threads until cumulative DMIPS flattens out.rzr{}r|(hXn Original code didn't use threads. This version doubled number of threads until cumulative DMIPS flattens out.hjoubeubaubeubj/)r}}r~(hX^POSIX barriers are used inside the timed portion of the code. This is not to time the performance of the barrier, but is instead used to time how long all threads together take to complete. It is assumed the execution times of the threads (> 0.1 second) are orders of magnitude more than the barrier, so the barrier's effect on results is negligible.rhjhjhj3h}r(h]h]h]h]h]uhKOhhh]rhX^POSIX barriers are used inside the timed portion of the code. This is not to time the performance of the barrier, but is instead used to time how long all threads together take to complete. It is assumed the execution times of the threads (> 0.1 second) are orders of magnitude more than the barrier, so the barrier's effect on results is negligible.rr}r(hjhj}ubaubj/)r}r(hXProcessor SDK uses makefiles for TI-RTOS and Yocto recipes for Linux for the supported EVMs. The makefile can also be used to compile native builds for Linux (both for EVMs and x86).rhjhjhj3h}r(h]h]h]h]h]uhKUhhh]rhXProcessor SDK uses makefiles for TI-RTOS and Yocto recipes for Linux for the supported EVMs. The makefile can also be used to compile native builds for Linux (both for EVMs and x86).rr}r(hjhjubaubj/)r}r(hXFor more information on TI-RTOS Posix, see `POSIX Support `__.hjhjhj3h}r(h]h]h]h]h]uhKYhhh]r(hX+For more information on TI-RTOS Posix, see rr}r(hX+For more information on TI-RTOS Posix, see hjubj)r}r(hXc`POSIX Support `__h}r(UnameX POSIX SupportjXOhttp://processors.wiki.ti.com/index.php/SYS/BIOS_POSIX_Thread_(pthread)_Supporth]h]h]h]h]uhjh]rhX POSIX Supportrr}r(hUhjubahjubhX.r}r(hX.hjubeubj)r}r(hUhjhjhjh}r(h]h]h]h]h]uhK\hhh]rj)r}r(hUjKhjhjhhh}r(h]h]h]h]h]uhKhhh]ubaubeubh)r}r(hUjKhjzhjhhh}r(h]rjah]h]h]rUid20rah]uhK_hhh]r(h)r}r(hXHow to Run the Demorhjhjhhh}r(h]h]h]h]h]uhK_hhh]rhXHow to Run the Demorr}r(hjhjubaubj/)r}r(hXThe processor SDK includes pre-built binaries which may be loaded and run using the SBL with UART or using CCS with UART or ROV (UART display for newer versions and ROV for older versions). To run using UART, hook up to the board using UART and run the .out file.rhjhjhj3h}r(h]h]h]h]h]uhKahhh]rhXThe processor SDK includes pre-built binaries which may be loaded and run using the SBL with UART or using CCS with UART or ROV (UART display for newer versions and ROV for older versions). To run using UART, hook up to the board using UART and run the .out file.rr}r(hjhjubaubj)r}r(hX).. Image:: ../images/Posix-demo-uart.PNG hjhjhjh}r(UuriX"rtos/../images/Posix-demo-uart.PNGrh]h]h]h]j}rU*jsh]uhKghhh]ubj/)r}r(hXTo run using CCS, use the following steps. Each binary has an associated \\*.rov.xs file located in the same directory--enabling the CCS ROV tool. Newer versions will display directly to the UART console and any steps involving ROV may be skipped.hjhjhj3h}r(h]h]h]h]h]uhKhhhh]rhXTo run using CCS, use the following steps. Each binary has an associated \*.rov.xs file located in the same directory--enabling the CCS ROV tool. Newer versions will display directly to the UART console and any steps involving ROV may be skipped.rr}r(hXTo run using CCS, use the following steps. Each binary has an associated \\*.rov.xs file located in the same directory--enabling the CCS ROV tool. Newer versions will display directly to the UART console and any steps involving ROV may be skipped.hjubaubj)r}r(hX/processor_sdk_rtos__2_00_xx_xx/demos/posix-smp/bin///debug/dhry.out /processor_sdk_rtos__2_00_xx_xx/demos/posix-smp/bin///debug/dhry_pa15fg.rov.xshjhjhjh}r(jjh]h]h]h]h]uhM#hhh]rhX/processor_sdk_rtos__2_00_xx_xx/demos/posix-smp/bin///debug/dhry.out /processor_sdk_rtos__2_00_xx_xx/demos/posix-smp/bin///debug/dhry_pa15fg.rov.xsrr}r(hUhjubaubj/)r}r(hX\For all platforms and core types, the basic procedure for running the demo will be the same:rhjhjhj3h}r(h]h]h]h]h]uhKrhhh]rhX\For all platforms and core types, the basic procedure for running the demo will be the same:rr}r(hjhjubaubj)r}r(hUhjhjhjh}r(jU.h]h]h]jUh]h]jjuhKuhhh]r(jX)r}r(hXjUsing CCS, launch the target configuration for the EVM `CCS-Target Configurations `__. Please ensure that the target configuration will load the appropriate CCS gel files found in the emupak. Make sure all Coretex-A15 cores in the SMP cluster have an appropriate CCS gel file.hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXjUsing CCS, launch the target configuration for the EVM `CCS-Target Configurations `__. Please ensure that the target configuration will load the appropriate CCS gel files found in the emupak. Make sure all Coretex-A15 cores in the SMP cluster have an appropriate CCS gel file.hjhjhj3h}r(h]h]h]h]h]uhKuh]r(hX7Using CCS, launch the target configuration for the EVM rr}r(hX7Using CCS, launch the target configuration for the EVM hjubj)r}r(hXt`CCS-Target Configurations `__h}r(UnameXCCS-Target ConfigurationsjXThttp://processors.wiki.ti.com/index.php/Target_Configuration_-_Custom_Configurationsh]h]h]h]h]uhjh]rhXCCS-Target Configurationsrr}r(hUhjubahjubhX. Please ensure that the target configuration will load the appropriate CCS gel files found in the emupak. Make sure all Coretex-A15 cores in the SMP cluster have an appropriate CCS gel file.rr}r(hX. Please ensure that the target configuration will load the appropriate CCS gel files found in the emupak. Make sure all Coretex-A15 cores in the SMP cluster have an appropriate CCS gel file.hjubeubaubjX)r}r(hXThe default ccxml file only loads a gel on connect for some of the cores. Modify the ccxml file to load the gel for all the corresponding cores.hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXThe default ccxml file only loads a gel on connect for some of the cores. Modify the ccxml file to load the gel for all the corresponding cores.rhjhjhj3h}r(h]h]h]h]h]uhKzh]rhXThe default ccxml file only loads a gel on connect for some of the cores. Modify the ccxml file to load the gel for all the corresponding cores.rr}r(hjhjubaubaubjX)r}r(hXIn the CCS debug view, group and then connect to all cores of device that you wish to test on (i.e. - all of the clustered A15 cores).hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXIn the CCS debug view, group and then connect to all cores of device that you wish to test on (i.e. - all of the clustered A15 cores).rhjhjhj3h}r(h]h]h]h]h]uhK}h]rhXIn the CCS debug view, group and then connect to all cores of device that you wish to test on (i.e. - all of the clustered A15 cores).rr}r(hjhjubaubaubjX)r}r(hXFor each, core load the dhry.out file. The principle core should halt at main while the SMP linked cores will begin auto-running upon load.hjhjhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hXFor each, core load the dhry.out file. The principle core should halt at main while the SMP linked cores will begin auto-running upon load.r hjhjhj3h}r(h]h]h]h]h]uhKh]rhXFor each, core load the dhry.out file. The principle core should halt at main while the SMP linked cores will begin auto-running upon load.rr}r(hj hj ubaubaubjX)r}r(hX3Once all cores have been loaded, run all the cores.rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX3Once all cores have been loaded, run all the cores.rr}r(hjhjubaubaubjX)r}r (hX9The output will be sent to the UART console in real time.r!hjhjhj[h}r"(h]h]h]h]h]uhNhhh]r#j/)r$}r%(hj!hjhjhj3h}r&(h]h]h]h]h]uhKh]r'hX9The output will be sent to the UART console in real time.r(r)}r*(hj!hj$ubaubaubjX)r+}r,(hXkThe demo should not take more than a few minutes to run. You must manually halt the cores to end the demo. hjhjhj[h}r-(h]h]h]h]h]uhNhhh]r.j/)r/}r0(hXjThe demo should not take more than a few minutes to run. You must manually halt the cores to end the demo.r1hj+hjhj3h}r2(h]h]h]h]h]uhKh]r3hXjThe demo should not take more than a few minutes to run. You must manually halt the cores to end the demo.r4r5}r6(hj1hj/ubaubaubeubj/)r7}r8(hX$If using Processor-SDK 3.0 or later,r9hjhjhj3h}r:(h]h]h]h]h]uhKhhh]r;hX$If using Processor-SDK 3.0 or later,r<r=}r>(hj9hj7ubaubj)r?}r@(hUhjhjhjh}rA(jU.h]h]h]jUh]h]jjuhKhhh]rBjX)rC}rD(hXOpen the ROV window (Tools > RTOS Object View (ROV)) and view the SysMin module to inspect the output of the demo. If you see the below message, please specify the XDC and SYSBIOS versions: hj?hjhj[h}rE(h]h]h]h]h]uhNhhh]rFj/)rG}rH(hXOpen the ROV window (Tools > RTOS Object View (ROV)) and view the SysMin module to inspect the output of the demo. If you see the below message, please specify the XDC and SYSBIOS versions:rIhjChjhj3h}rJ(h]h]h]h]h]uhKh]rKhXOpen the ROV window (Tools > RTOS Object View (ROV)) and view the SysMin module to inspect the output of the demo. If you see the below message, please specify the XDC and SYSBIOS versions:rLrM}rN(hjIhjGubaubaubaubj)rO}rP(hX#.. Image:: ../images/Use_rov_1.jpg hjhjhjh}rQ(UuriXrtos/../images/Use_rov_1.jpgrRh]h]h]h]j}rSU*jRsh]uhKhhh]ubj)rT}rU(hX#.. Image:: ../images/Use_rov_2.png hjhjhjh}rV(UuriXrtos/../images/Use_rov_2.pngrWh]h]h]h]j}rXU*jWsh]uhKhhh]ubj)rY}rZ(hX$.. Image:: ../images/Posix-smp2.png hjhjhjh}r[(UuriXrtos/../images/Posix-smp2.pngr\h]h]h]h]j}r]U*j\sh]uhKhhh]ubj/)r^}r_(hX[The output buffer shown in the ROV contains the different stages of the demo's progression:r`hjhjhj3h}ra(h]h]h]h]h]uhKhhh]rbhX[The output buffer shown in the ROV contains the different stages of the demo's progression:rcrd}re(hj`hj^ubaubj)rf}rg(hUhjhjhjh}rh(jU.h]h]h]jUh]h]jjuhKhhh]ri(jX)rj}rk(hXBThe demo finds an appropriate number of iterations for the device.rlhjfhjhj[h}rm(h]h]h]h]h]uhNhhh]rnj/)ro}rp(hjlhjjhjhj3h}rq(h]h]h]h]h]uhKh]rrhXBThe demo finds an appropriate number of iterations for the device.rsrt}ru(hjlhjoubaubaubjX)rv}rw(hXThe demo begins to add threads.rxhjfhjhj[h}ry(h]h]h]h]h]uhNhhh]rzj/)r{}r|(hjxhjvhjhj3h}r}(h]h]h]h]h]uhKh]r~hXThe demo begins to add threads.rr}r(hjxhj{ubaubaubjX)r}r(hXWThe demo concludes when adding additional threads does not further increase the DMIPS. hjfhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXVThe demo concludes when adding additional threads does not further increase the DMIPS.rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXVThe demo concludes when adding additional threads does not further increase the DMIPS.rr}r(hjhjubaubaubeubj/)r}r(hX;The output takes the form of: "xxxxxxx iterations \*n threads; dhrystones xxxxxxxx, dmips = xxxx". In the screenshot above, moving from two threads to four threads does not appreciably improve the DMIPS, so the demo completes. This behavior is expected because the demo is only running on two cores in this example.hjhjhj3h}r(h]h]h]h]h]uhKhhh]rhX:The output takes the form of: "xxxxxxx iterations *n threads; dhrystones xxxxxxxx, dmips = xxxx". In the screenshot above, moving from two threads to four threads does not appreciably improve the DMIPS, so the demo completes. This behavior is expected because the demo is only running on two cores in this example.rr}r(hX;The output takes the form of: "xxxxxxx iterations \*n threads; dhrystones xxxxxxxx, dmips = xxxx". In the screenshot above, moving from two threads to four threads does not appreciably improve the DMIPS, so the demo completes. This behavior is expected because the demo is only running on two cores in this example.hjubaubj))r}r(hX8- A15 cores may usually be connected to directly; on the AM572x, the M4 IPUs must first be initialized by the gel scripts (Scripts > AM572x MULTICORE initialization > IPUxSSClkEnable_API) - If the K2 demo will not run, try updating to the latest emupack by doing "Help/Check For Updates" and selecting "Keystone2 device support" update (only). There are additional instructions for configuring groups, etc. at `SMP Debug `__. - If the primary core of an SMP group will not allow running after loading the demo, try pausing the linked cores and then running all the cores in a group - For TI-RTOS documentation for enabling SMP, refer to `SMP/BIOS `__. The POSIX demo in the Processor SDK RTOS packages with C66x does not support SMP. This is a POSIX pthread demo intended to run Dhrystone on one C66x core without SMP. - Some of the DMIPS values may not be accurate, but the values will increase proportionally with the number of coreshjhNhj,h}r(h]h]h]h]h]uhNhhh]rjQ)r}r(hUh}r(jVX-h]h]h]h]h]uhjh]r(jX)r}r(hXA15 cores may usually be connected to directly; on the AM572x, the M4 IPUs must first be initialized by the gel scripts (Scripts > AM572x MULTICORE initialization > IPUxSSClkEnable_API)h}r(h]h]h]h]h]uhjh]rj/)r}r(hXA15 cores may usually be connected to directly; on the AM572x, the M4 IPUs must first be initialized by the gel scripts (Scripts > AM572x MULTICORE initialization > IPUxSSClkEnable_API)rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXA15 cores may usually be connected to directly; on the AM572x, the M4 IPUs must first be initialized by the gel scripts (Scripts > AM572x MULTICORE initialization > IPUxSSClkEnable_API)rr}r(hjhjubaubahj[ubjX)r}r(hXIf the K2 demo will not run, try updating to the latest emupack by doing "Help/Check For Updates" and selecting "Keystone2 device support" update (only). There are additional instructions for configuring groups, etc. at `SMP Debug `__.h}r(h]h]h]h]h]uhjh]rj/)r}r(hXIf the K2 demo will not run, try updating to the latest emupack by doing "Help/Check For Updates" and selecting "Keystone2 device support" update (only). There are additional instructions for configuring groups, etc. at `SMP Debug `__.hjhjhj3h}r(h]h]h]h]h]uhKh]r(hXIf the K2 demo will not run, try updating to the latest emupack by doing "Help/Check For Updates" and selecting "Keystone2 device support" update (only). There are additional instructions for configuring groups, etc. at rr}r(hXIf the K2 demo will not run, try updating to the latest emupack by doing "Help/Check For Updates" and selecting "Keystone2 device support" update (only). There are additional instructions for configuring groups, etc. at hjubj)r}r(hXA`SMP Debug `__h}r(UnameX SMP DebugjX1http://processors.wiki.ti.com/index.php/SMP_Debugh]h]h]h]h]uhjh]rhX SMP Debugrr}r(hUhjubahjubhX.r}r(hX.hjubeubahj[ubjX)r}r(hXIf the primary core of an SMP group will not allow running after loading the demo, try pausing the linked cores and then running all the cores in a grouph}r(h]h]h]h]h]uhjh]rj/)r}r(hXIf the primary core of an SMP group will not allow running after loading the demo, try pausing the linked cores and then running all the cores in a grouprhjhjhj3h}r(h]h]h]h]h]uhKh]rhXIf the primary core of an SMP group will not allow running after loading the demo, try pausing the linked cores and then running all the cores in a grouprr}r(hjhjubaubahj[ubjX)r}r(hXFor TI-RTOS documentation for enabling SMP, refer to `SMP/BIOS `__. The POSIX demo in the Processor SDK RTOS packages with C66x does not support SMP. This is a POSIX pthread demo intended to run Dhrystone on one C66x core without SMP.h}r(h]h]h]h]h]uhjh]rj/)r}r(hXFor TI-RTOS documentation for enabling SMP, refer to `SMP/BIOS `__. The POSIX demo in the Processor SDK RTOS packages with C66x does not support SMP. This is a POSIX pthread demo intended to run Dhrystone on one C66x core without SMP.hjhjhj3h}r(h]h]h]h]h]uhKh]r(hX5For TI-RTOS documentation for enabling SMP, refer to rr}r(hX5For TI-RTOS documentation for enabling SMP, refer to hjubj)r}r(hX?`SMP/BIOS `__h}r(UnameXSMP/BIOSjX0http://processors.wiki.ti.com/index.php/SMP/BIOSh]h]h]h]h]uhjh]rhXSMP/BIOSrr}r(hUhjubahjubhX. The POSIX demo in the Processor SDK RTOS packages with C66x does not support SMP. This is a POSIX pthread demo intended to run Dhrystone on one C66x core without SMP.rr}r(hX. The POSIX demo in the Processor SDK RTOS packages with C66x does not support SMP. This is a POSIX pthread demo intended to run Dhrystone on one C66x core without SMP.hjubeubahj[ubjX)r}r(hXrSome of the DMIPS values may not be accurate, but the values will increase proportionally with the number of coresh}r(h]h]h]h]h]uhjh]rj/)r}r(hXrSome of the DMIPS values may not be accurate, but the values will increase proportionally with the number of coresrhjhjhj3h}r(h]h]h]h]h]uhKh]rhXrSome of the DMIPS values may not be accurate, but the values will increase proportionally with the number of coresrr}r(hjhjubaubahj[ubehjTubaubeubh)r}r(hUjKhjzhjhhh}r(h]rjah]h]h]rUid21rah]uhKhhh]r(h)r}r(hXHow to Build the Demorhjhjhhh}r(h]h]h]h]h]uhKhhh]rhXHow to Build the Demorr}r(hjhjubaubh)r}r(hUjKhjhjhhh}r(h]rXprocessor-sdk rtosrah]h]h]rUprocessor-sdk-rtosrah]uhKhhh]r(h)r}r(hXProcessor-SDK RTOSrhjhjhhh}r(h]h]h]h]h]uhKhhh]rhXProcessor-SDK RTOSrr}r(hjhjubaubj/)r }r (hXHTo build the project manually, first navigate to the top level makefile:r hjhjhj3h}r (h]h]h]h]h]uhKhhh]r hXHTo build the project manually, first navigate to the top level makefile:rr}r(hj hj ubaubj)r}r(hXT/processor_sdk_rtos__2_00_xx_xx/demos/posix-smp/makefilehjhjhjh}r(jjh]h]h]h]h]uhMrhhh]rhXT/processor_sdk_rtos__2_00_xx_xx/demos/posix-smp/makefilerr}r(hUhjubaubj/)r}r(hXoEdit the makefile to include the paths to BIOS, XDC, PDK packages, and the toolchains for the cores being used.rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhXoEdit the makefile to include the paths to BIOS, XDC, PDK packages, and the toolchains for the cores being used.rr}r(hjhjubaubj)r }r!(hX]#DEPOT = #### BIOS-side dependencies #### #BIOS_INSTALL_PATH ?= $(DEPOT)\bios_n_nn_nn_nn #XDC_INSTALL_PATH ?= $(DEPOT)\xdctools_n_nn_nn_nn_core #### BIOS-side toolchains #### #TOOLCHAIN_PATH_A15 ?= $(DEPOT)\ccsv6\tools\compiler\gcc-arm-none-eabi-n_n-xxxxqn #TOOLCHAIN_PATH_M4 ?= $(DEPOT)\ccsv6\tools\compiler\ti-cgt-arm_x.x.xhjhjhjh}r"(jjh]h]h]h]h]uhMyhhh]r#hX]#DEPOT = #### BIOS-side dependencies #### #BIOS_INSTALL_PATH ?= $(DEPOT)\bios_n_nn_nn_nn #XDC_INSTALL_PATH ?= $(DEPOT)\xdctools_n_nn_nn_nn_core #### BIOS-side toolchains #### #TOOLCHAIN_PATH_A15 ?= $(DEPOT)\ccsv6\tools\compiler\gcc-arm-none-eabi-n_n-xxxxqn #TOOLCHAIN_PATH_M4 ?= $(DEPOT)\ccsv6\tools\compiler\ti-cgt-arm_x.x.xr$r%}r&(hUhj ubaubj/)r'}r((hXZNavigate to the demo directory and run "make". The steps to run the demo will be the same.r)hjhjhj3h}r*(h]h]h]h]h]uhKhhh]r+hXZNavigate to the demo directory and run "make". The steps to run the demo will be the same.r,r-}r.(hj)hj'ubaubeubh)r/}r0(hUhjhjhhh}r1(h]h]h]h]r2Uprocessor-sdk-linuxr3ah]r4hauhKhhh]r5(h)r6}r7(hXProcessor-SDK Linuxr8hj/hjhhh}r9(h]h]h]h]h]uhKhhh]r:hXProcessor-SDK Linuxr;r<}r=(hj8hj6ubaubj/)r>}r?(hXThe Posix-SMP demo has been added to the Linux SDK matrix starting in Processor-SDK 3.0. Simply run the example from the Matrix and the output will be displayed on the console.r@hj/hjhj3h}rA(h]h]h]h]h]uhKhhh]rBhXThe Posix-SMP demo has been added to the Linux SDK matrix starting in Processor-SDK 3.0. Simply run the example from the Matrix and the output will be displayed on the console.rCrD}rE(hj@hj>ubaubj/)rF}rG(hX}For the documentation on the Linux Matrix, please see: `link `__.hj/hjhj3h}rH(h]h]h]h]h]uhKhhh]rI(hX7For the documentation on the Linux Matrix, please see: rJrK}rL(hX7For the documentation on the Linux Matrix, please see: hjFubj)rM}rN(hXE`link `__h}rO(UnameXlinkjX:http://processors.wiki.ti.com/index.php/Matrix_Users_Guideh]h]h]h]h]uhjFh]rPhXlinkrQrR}rS(hUhjMubahjubhX.rT}rU(hX.hjFubeubeubeubeubhjhhh}rV(h]rWX introductionrXah]h]h]rYUid17rZah]uhKhhh]r[(h)r\}r](hX Introductionr^hjxhjhhh}r_(h]h]h]h]h]uhKhhh]r`hX Introductionrarb}rc(hj^hj\ubaubj/)rd}re(hX*This page describes the SMP/Posix demo provided in the Processor-SDK for RTOS and Linux. This demo uses Posix APIs together with a simple benchmark (Dhrystone) to automatically calculate the effective throughput of all the cores in each SMP cluster. SMP mode is only supported on Coretex-A15 cores.rfhjxhjhj3h}rg(h]h]h]h]h]uhKhhh]rhhX*This page describes the SMP/Posix demo provided in the Processor-SDK for RTOS and Linux. This demo uses Posix APIs together with a simple benchmark (Dhrystone) to automatically calculate the effective throughput of all the cores in each SMP cluster. SMP mode is only supported on Coretex-A15 cores.rirj}rk(hjfhjdubaubj/)rl}rm(hXThis demo runs on:rnhjxhjhj3h}ro(h]h]h]h]h]uhK hhh]rphXThis demo runs on:rqrr}rs(hjnhjlubaubjQ)rt}ru(hUhjxhjhjTh}rv(jVX-h]h]h]h]h]uhKhhh]rw(jX)rx}ry(hXAM572x (A15, C66, M4)rzhjthjhj[h}r{(h]h]h]h]h]uhNhhh]r|j/)r}}r~(hjzhjxhjhj3h}r(h]h]h]h]h]uhKh]rhXAM572x (A15, C66, M4)rr}r(hjzhj}ubaubaubjX)r}r(hX AM437x (A9)rhjthjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX AM437x (A9)rr}r(hjhjubaubaubjX)r}r(hX AM335x (A8)rhjthjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX AM335x (A8)rr}r(hjhjubaubaubjX)r}r(hXK2H (A15, C66)rhjthjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXK2H (A15, C66)rr}r(hjhjubaubaubjX)r}r(hXK2E (A15, C66)rhjthjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXK2E (A15, C66)rr}r(hjhjubaubaubjX)r}r(hXK2G (A15, C66)rhjthjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXK2G (A15, C66)rr}r(hjhjubaubaubjX)r}r(hXK2L (A15, C66)rhjthjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXK2L (A15, C66)rr}r(hjhjubaubaubjX)r}r(hX C6678 (C66)rhjthjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX C6678 (C66)rr}r(hjhjubaubaubjX)r}r(hX C6657 (C66) hjthjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX C6657 (C66)rhjhjhj3h}r(h]h]h]h]h]uhKh]rhX C6657 (C66)rr}r(hjhjubaubaubeubj/)r}r(hX\The sections below provide details of the application as well as build and run instructions.rhjxhjhj3h}r(h]h]h]h]h]uhKhhh]rhX\The sections below provide details of the application as well as build and run instructions.rr}r(hjhjubaubeubhjhj>h}r(h]UlevelKh]h]rjZaUsourcejh]h]UlineKUtypejAuhKhhh]rj/)r}r(hX/Duplicate implicit target name: "introduction".h}r(h]h]h]h]h]uhjvh]rhX/Duplicate implicit target name: "introduction".rr}r(hUhjubahj3ubaubj)r}r(hUhjhjhj>h}r(h]UlevelKh]h]rjaUsourcejh]h]UlineKUtypejAuhKhhh]rj/)r}r(hX/Duplicate implicit target name: "requirements".h}r(h]h]h]h]h]uhjh]rhX/Duplicate implicit target name: "requirements".rr}r(hUhjubahj3ubaubj)r}r(hUhjhjhj>h}r(h]UlevelKh]h]rjaUsourcejh]h]UlineK-UtypejAuhK-hhh]rj/)r}r(hX2Duplicate implicit target name: "software design".h}r (h]h]h]h]h]uhjh]r hX2Duplicate implicit target name: "software design".r r }r (hUhjubahj3ubaubj)r}r(hUhjhjhj>h}r(h]UlevelKh]h]rjaUsourcejh]h]UlineK_UtypejAuhK_hhh]rj/)r}r(hX6Duplicate implicit target name: "how to run the demo".h}r(h]h]h]h]h]uhjh]rhX6Duplicate implicit target name: "how to run the demo".rr}r(hUhjubahj3ubaubj)r}r(hUhjhjhj>h}r(h]UlevelKh]h]rjaUsourcejh]h]UlineKUtypejAuhKhhh]rj/)r}r (hX8Duplicate implicit target name: "how to build the demo".h}r!(h]h]h]h]h]uhjh]r"hX8Duplicate implicit target name: "how to build the demo".r#r$}r%(hUhjubahj3ubaubj)r&}r'(hUhj/hXUinternal padding after source/rtos/Examples_and_Demonstrations/Posix_SMP_Demo.rst.incr(hj>h}r)(h]UlevelKh]h]Usourcejh]h]UlineKUtypejfuhKhhh]r*(j/)r+}r,(hX;Content block expected for the "raw" directive; none found.h}r-(h]h]h]h]h]uhj&h]r.hX;Content block expected for the "raw" directive; none found.r/r0}r1(hUhj+ubahj3ubj)r2}r3(hX.. raw:: html h}r4(jjh]h]h]h]h]uhj&h]r5hX.. raw:: html r6r7}r8(hUhj2ubahjubeubj)r9}r:(hUhh)r;}r<(hUjKhh)r=}r>(hUhhhhhhh}r?(h]h]h]h]r@Uaudio-benchmark-starterkitrAah]rBhsauhKhhh]rC(h)rD}rE(hXAudio Benchmark StarterkitrFhj=hhhhh}rG(h]h]h]h]h]uhKhhh]rHhXAudio Benchmark StarterkitrIrJ}rK(hjFhjDubaubj )rL}rM(hXUhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Audio_Benchmark_Starterkithj=hj XJsource/rtos/Examples_and_Demonstrations/Audio_Benchmark_Starterkit.rst.incrNrO}rPbhjh}rQ(jjh]h]h]h]h]uhKhhh]rRhXUhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Audio_Benchmark_StarterkitrSrT}rU(hUhjLubaubj;h)rV}rW(hUjKhj=hjOhhh}rX(h]rYXsoftware featuresrZah]h]h]r[Usoftware-featuresr\ah]uhKhhh]r](h)r^}r_(hXSoftware Featuresr`hjVhjOhhh}ra(h]h]h]h]h]uhKhhh]rbhXSoftware Featuresrcrd}re(hj`hj^ubaubjQ)rf}rg(hUhjVhjOhjTh}rh(jVX-h]h]h]h]h]uhKhhh]ri(jX)rj}rk(hX;Benchmark applications for core signal processing functionsrlhjfhjOhj[h}rm(h]h]h]h]h]uhNhhh]rnj/)ro}rp(hjlhjjhjOhj3h}rq(h]h]h]h]h]uhKh]rrhX;Benchmark applications for core signal processing functionsrsrt}ru(hjlhjoubaubaubjX)rv}rw(hX6Makefile and CCS Project scripts to build applicationsrxhjfhjOhj[h}ry(h]h]h]h]h]uhNhhh]rzj/)r{}r|(hjxhjvhjOhj3h}r}(h]h]h]h]h]uhKh]r~hX6Makefile and CCS Project scripts to build applicationsrr}r(hjxhj{ubaubaubjX)r}r(hXCSD card bootable binaries [Supported on SOCs that support SD boot] hjfhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXBSD card bootable binaries [Supported on SOCs that support SD boot]rhjhjOhj3h}r(h]h]h]h]h]uhKh]rhXBSD card bootable binaries [Supported on SOCs that support SD boot]rr}r(hjhjubaubaubeubeubh)r}r(hUjKhj=hjOhhh}r(h]rXdirectory structurerah]h]h]rUdirectory-structurerah]uhK!hhh]r(h)r}r(hXDirectory StructurerhjhjOhhh}r(h]h]h]h]h]uhK!hhh]rhXDirectory Structurerr}r(hjhjubaubj/)r}r(hXdThe audio benchmark starterkit is located in the Processor SDK RTOS release under the directory pathrhjhjOhj3h}r(h]h]h]h]h]uhK#hhh]rhXdThe audio benchmark starterkit is located in the Processor SDK RTOS release under the directory pathrr}r(hjhjubaubj)r}r(hXW\processor_sdk_rtos__x_xx_xx_xx\demos\audio-benchmark-starterkithjhjOhjh}r(jjh]h]h]h]h]uhMhhh]rhXW\processor_sdk_rtos__x_xx_xx_xx\demos\audio-benchmark-starterkitrr}r(hUhjubaubj)r}r(hUhjhjOhjh}r(h]h]h]h]h]uhK*hhh]r(j)r}r(hUjKhjhjOhhh}r(h]h]h]h]h]uhKhhh]ubj)r}r(hXWThe directory structure for the audio benchmark starterkit is shown in the image below.rjKhjhjOhhh}r(h]h]h]h]h]uhK,hhh]rhXWThe directory structure for the audio benchmark starterkit is shown in the image below.rr}r(hjhjubaubeubj/)r}r(hXlDetailed description of the directory structure is given below: .. Image:: ../images/Audben_dirStructure.pngrhjhjOhj3h}r(h]h]h]h]h]uhK.hhh]rhXlDetailed description of the directory structure is given below: .. Image:: ../images/Audben_dirStructure.pngrr}r(hjhjubaubjQ)r}r(hUhjhjOhjTh}r(jVX-h]h]h]h]h]uhK1hhh]r(jX)r}r(hXPprebuilt-binaries - directory contains prebuilt out files to run the benchmarks.rhjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjOhj3h}r(h]h]h]h]h]uhK1h]rhXPprebuilt-binaries - directory contains prebuilt out files to run the benchmarks.rr}r(hjhjubaubaubjX)r}r(hXDbootimages - SD card boot files to run the benchmarks using SD boot.rhjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjOhj3h}r(h]h]h]h]h]uhK2h]rhXDbootimages - SD card boot files to run the benchmarks using SD boot.rr}r(hjhjubaubaubjX)r}r(hX^docs - directory contains ReadMe, Quick start guide and the software manifest for the package.rhjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjOhj3h}r(h]h]h]h]h]uhK3h]rhX^docs - directory contains ReadMe, Quick start guide and the software manifest for the package.rr}r(hjhjubaubaubjX)r}r(hXsscripts - directory contains .txt script files that is used by BenchmarkProjectCreate script to create CCS projectshjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXsscripts - directory contains .txt script files that is used by BenchmarkProjectCreate script to create CCS projectsrhjhjOhj3h}r(h]h]h]h]h]uhK4h]rhXsscripts - directory contains .txt script files that is used by BenchmarkProjectCreate script to create CCS projectsrr}r(hjhjubaubaubjX)r}r(hX src - common - Contains linker command file and logging functions used by all benchmark tests. - singlePrecision_FFT - Source files for benchmark app for FFT - singlePrecision_FIR - Source files for benchmark app for FIR - singlePrecision_IIR - Source files for benchmark app for IIR hjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXsrc - common - Contains linker command file and logging functions used by all benchmark tests. - singlePrecision_FFT - Source files for benchmark app for FFT - singlePrecision_FIR - Source files for benchmark app for FIR - singlePrecision_IIR - Source files for benchmark app for IIRrhjhjOhj3h}r(h]h]h]h]h]uhK6h]rhXsrc - common - Contains linker command file and logging functions used by all benchmark tests. - singlePrecision_FFT - Source files for benchmark app for FFT - singlePrecision_FIR - Source files for benchmark app for FIR - singlePrecision_IIR - Source files for benchmark app for IIRrr}r(hjhjubaubaubeubeubh)r}r(hUhj=hjOhhh}r(h]h]h]h]rUsoftware-dependenciesrah]r h9auhK=hhh]r (h)r }r (hXSoftware Dependenciesr hjhjOhhh}r(h]h]h]h]h]uhK=hhh]rhXSoftware Dependenciesrr}r(hj hj ubaubjQ)r}r(hUhjhjOhjTh}r(jVX-h]h]h]h]h]uhK?hhh]r(jX)r}r(hXR`Processor SDK RTOS v3.3 and later `__rhjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjOhj3h}r(h]h]h]h]h]uhK?h]rj)r }r!(hjh}r"(UnameX!Processor SDK RTOS v3.3 and laterjX*index_overview.html#processor-sdk-for-rtosh]h]h]h]h]uhjh]r#hX!Processor SDK RTOS v3.3 and laterr$r%}r&(hUhj ubahjubaubaubjX)r'}r((hXa`Code Composer Studio IDE Environment v7 and later `__ hjhjOhj[h}r)(h]h]h]h]h]uhNhhh]r*j/)r+}r,(hX``Code Composer Studio IDE Environment v7 and later `__r-hj'hjOhj3h}r.(h]h]h]h]h]uhK@h]r/j)r0}r1(hj-h}r2(UnameX1Code Composer Studio IDE Environment v7 and laterjX(index_overview.html#code-composer-studioh]h]h]h]h]uhj+h]r3hX1Code Composer Studio IDE Environment v7 and laterr4r5}r6(hUhj0ubahjubaubaubeubj))r7}r8(hX**For correct version of Code Composer Studio to download, please refer to the `Release Notes `__ corresponding to the Processor SDK RTOS version that you have installed**hjhjOhj,h}r9(h]h]h]h]h]uhNhhh]r:j/)r;}r<(hX**For correct version of Code Composer Studio to download, please refer to the `Release Notes `__ corresponding to the Processor SDK RTOS version that you have installed**r=hj7hjOhj3h}r>(h]h]h]h]h]uhKCh]r?jW)r@}rA(hj=h}rB(h]h]h]h]h]uhj;h]rChXFor correct version of Code Composer Studio to download, please refer to the `Release Notes `__ corresponding to the Processor SDK RTOS version that you have installedrDrE}rF(hUhj@ubahj_ubaubaubeubh)rG}rH(hUhj=hjOhhh}rI(h]h]h]h]rJUsupported-hardwarerKah]rLhjauhKIhhh]rM(h)rN}rO(hXSupported HardwarerPhjGhjOhhh}rQ(h]h]h]h]h]uhKIhhh]rRhXSupported HardwarerSrT}rU(hjPhjNubaubj/)rV}rW(hX;**Platforms supported in Processor SDK RTOS 3.3 and later**rXhjGhjOhj3h}rY(h]h]h]h]h]uhKKhhh]rZjW)r[}r\(hjXh}r](h]h]h]h]h]uhjVh]r^hX7Platforms supported in Processor SDK RTOS 3.3 and laterr_r`}ra(hUhj[ubahj_ubaubjQ)rb}rc(hUhjGhjOhjTh}rd(jVX-h]h]h]h]h]uhKMhhh]re(jX)rf}rg(hX+`K2G EVM `__rhhjbhjOhj[h}ri(h]h]h]h]h]uhNhhh]rjj/)rk}rl(hjhhjfhjOhj3h}rm(h]h]h]h]h]uhKMh]rnj)ro}rp(hjhh}rq(UnameXK2G EVMjXhttp://www.ti.com/tool/EVMK2Gh]h]h]h]h]uhjkh]rrhXK2G EVMrsrt}ru(hUhjoubahjubaubaubjX)rv}rw(hX6`AM572x GP EVM `__rxhjbhjOhj[h}ry(h]h]h]h]h]uhNhhh]rzj/)r{}r|(hjxhjvhjOhj3h}r}(h]h]h]h]h]uhKNh]r~j)r}r(hjxh}r(UnameX AM572x GP EVMjX"http://www.ti.com/tool/tmdsevm572xh]h]h]h]h]uhj{h]rhX AM572x GP EVMrr}r(hUhjubahjubaubaubjX)r}r(hX4`AM571x IDK `__ hjbhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX3`AM571x IDK `__rhjhjOhj3h}r(h]h]h]h]h]uhKOh]rj)r}r(hjh}r(UnameX AM571x IDKjX"http://www.ti.com/tool/TMDXIDK5718h]h]h]h]h]uhjh]rhX AM571x IDKrr}r(hUhjubahjubaubaubeubj/)r}r(hX/**Platforms planned in Processor SDK RTOS 4.0**rhjGhjOhj3h}r(h]h]h]h]h]uhKQhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX+Platforms planned in Processor SDK RTOS 4.0rr}r(hUhjubahj_ubaubjQ)r}r(hUhjGhjOhjTh}r(jVX-h]h]h]h]h]uhKShhh]r(jX)r}r(hX=`OMAPL138/C6748 LCDK `__rhjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjOhj3h}r(h]h]h]h]h]uhKSh]rj)r}r(hjh}r(UnameXOMAPL138/C6748 LCDKjX#http://www.ti.com/tool/tmdslcdk6748h]h]h]h]h]uhjh]rhXOMAPL138/C6748 LCDKrr}r(hUhjubahjubaubaubjX)r}r(hXU`K2H EVM rev 1.1 and later `__hjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXU`K2H EVM rev 1.1 and later `__rhjhjOhj3h}r(h]h]h]h]h]uhKTh]rj)r}r(hjh}r(UnameXK2H EVM rev 1.1 and laterjX5http://www2.advantech.com/Support/TI-EVM/EVMK2HX.aspxh]h]h]h]h]uhjh]rhXK2H EVM rev 1.1 and laterrr}r(hUhjubahjubaubaubjX)r}r(hXu`K2E EVMs rev 1.0.2.0 and later `__hjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXu`K2E EVMs rev 1.0.2.0 and later `__rhjhjOhj3h}r(h]h]h]h]h]uhKVh]rj)r}r(hjh}r(UnameXK2E EVMs rev 1.0.2.0 and laterjXPhttps://www.einfochips.com/index.php/partnerships/texas-instruments/k2e-evm.htmlh]h]h]h]h]uhjh]rhXK2E EVMs rev 1.0.2.0 and laterrr}r(hUhjubahjubaubaubjX)r}r(hX2`C6678 EVM `__rhjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjOhj3h}r(h]h]h]h]h]uhKXh]rj)r}r(hjh}r(UnameX C6678 EVMjX"http://www.ti.com/tool/tmdsevm6678h]h]h]h]h]uhjh]rhX C6678 EVMrr}r(hUhjubahjubaubaubjX)r}r(hX3`C6657 EVM `__ hjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX2`C6657 EVM `__rhjhjOhj3h}r(h]h]h]h]h]uhKYh]rj)r}r(hjh}r(UnameX C6657 EVMjX"http://www.ti.com/tool/tmdsevm6657h]h]h]h]h]uhjh]rhX C6657 EVMrr}r(hUhjubahjubaubaubeubeubh)r}r(hUhj=hjOhhh}r(h]h]h]h]rUquickstart-with-how-to-videorah]rhauhK\hhh]r(h)r}r(hXQuickStart with How-To-VideorhjhjOhhh}r(h]h]h]h]h]uhK\hhh]rhXQuickStart with How-To-Videorr}r(hjhjubaubj/)r}r(hXFor an easy and visual experience to build and run the benchmark tests, we have created a short How to video that demonstrates how the Benchmark Starterkit can be built and run on C66x DSP on the K2G EVM which you can check out from the link provided below:rhjhjOhj3h}r(h]h]h]h]h]uhK^hhh]r hXFor an easy and visual experience to build and run the benchmark tests, we have created a short How to video that demonstrates how the Benchmark Starterkit can be built and run on C66x DSP on the K2G EVM which you can check out from the link provided below:r r }r (hjhjubaubjQ)r }r(hUhjhjOhjTh}r(jVX-h]h]h]h]h]uhKchhh]rjX)r}r(hX`Demonstration of Audio Benchmark starterkit demo on 66AK2G02 GP EVM `__ hj hjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX`Demonstration of Audio Benchmark starterkit demo on 66AK2G02 GP EVM `__rhjhjOhj3h}r(h]h]h]h]h]uhKch]rj)r}r(hjh}r(UnameXCDemonstration of Audio Benchmark starterkit demo on 66AK2G02 GP EVMjXGhttps://training.ti.com/66ak2gx-gp-evm-audio-benchmark-starter-kit-demoh]h]h]h]h]uhjh]rhXCDemonstration of Audio Benchmark starterkit demo on 66AK2G02 GP EVMrr}r (hUhjubahjubaubaubaubeubh)r!}r"(hUhj=hjOhhh}r#(h]h]h]h]r$Uhow-to-build-the-benchmarksr%ah]r&h^auhKghhh]r'(h)r(}r)(hXHow to Build the Benchmarksr*hj!hjOhhh}r+(h]h]h]h]h]uhKghhh]r,hXHow to Build the Benchmarksr-r.}r/(hj*hj(ubaubj/)r0}r1(hXhThe benchmark starterkit is designed to build with makefiles as well as with Code Composer Studio (CCS) IDE Environment. Both the approaches requires developers to setup the Processor SDK RTOS development environment. Developers can use either approach based on their familiarity with the chosen build environment. Let us take a closer look at both approaches.r2hj!hjOhj3h}r3(h]h]h]h]h]uhKihhh]r4hXhThe benchmark starterkit is designed to build with makefiles as well as with Code Composer Studio (CCS) IDE Environment. Both the approaches requires developers to setup the Processor SDK RTOS development environment. Developers can use either approach based on their familiarity with the chosen build environment. Let us take a closer look at both approaches.r5r6}r7(hj2hj0ubaubh)r8}r9(hUhj!hjOhhh}r:(h]h]h]h]r;Uusing-makefiler<ah]r=hauhKqhhh]r>(h)r?}r@(hXUsing MakefilerAhj8hjOhhh}rB(h]h]h]h]h]uhKqhhh]rChXUsing MakefilerDrE}rF(hjAhj?ubaubj/)rG}rH(hX8**Step1 : Setup Processor SDK RTOS build Environment.**rIhj8hjOhj3h}rJ(h]h]h]h]h]uhKshhh]rKjW)rL}rM(hjIh}rN(h]h]h]h]h]uhjGh]rOhX4Step1 : Setup Processor SDK RTOS build Environment.rPrQ}rR(hUhjLubahj_ubaubj/)rS}rT(hXDevelopers are required to setup the Processor SDK RTOS build environment as described in :ref:`Processor SDK RTOS Setup environment `hj8hjOhj3h}rU(h]h]h]h]h]uhKuhhh]rV(hXZDevelopers are required to setup the Processor SDK RTOS build environment as described in rWrX}rY(hXZDevelopers are required to setup the Processor SDK RTOS build environment as described in hjSubcsphinx.addnodes pending_xref rZ)r[}r\(hXS:ref:`Processor SDK RTOS Setup environment `r]hjShjOhU pending_xrefr^h}r_(UreftypeXrefj j X%build-the-sdk-setup-environment-labelU refdomainXstdr`h]h]U refexplicith]h]h]j j uhKuh]racdocutils.nodes inline rb)rc}rd(hj]h}re(h]h]rf(j j`Xstd-refrgeh]h]h]uhj[h]rhhX$Processor SDK RTOS Setup environmentrirj}rk(hUhjcubahUinlinerlubaubeubj)rm}rn(hUhj8hjOhjh}ro(jU.h]h]h]jUh]h]jjuhKxhhh]rp(jX)rq}rr(hX6**set SDK_INSTALL_PATH = C:\\ti\\**rshjmhjOhj[h}rt(h]h]h]h]h]uhNhhh]ruj/)rv}rw(hjshjqhjOhj3h}rx(h]h]h]h]h]uhKxh]ryjW)rz}r{(hX6**set SDK_INSTALL_PATH = C:\\ti\\**h}r|(h]h]h]h]h]uhjvh]r}hX0set SDK_INSTALL_PATH = C:\ti\r~r}r(hUhjzubahj_ubaubaubjX)r}r(hX**setupenv.bat** hjmhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX**setupenv.bat**rhjhjOhj3h}r(h]h]h]h]h]uhKyh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX setupenv.batrr}r(hUhjubahj_ubaubaubeubj))r}r(hXIf developers install CCS or Processor SDK RTOS under Custom path then they need to refer to the setup instructions described under :ref:`Setup environment when installing to a custom path `hj8hjOhj,h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXIf developers install CCS or Processor SDK RTOS under Custom path then they need to refer to the setup instructions described under :ref:`Setup environment when installing to a custom path `hjhjOhj3h}r(h]h]h]h]h]uhK|h]r(hXIf developers install CCS or Processor SDK RTOS under Custom path then they need to refer to the setup instructions described under rr}r(hXIf developers install CCS or Processor SDK RTOS under Custom path then they need to refer to the setup instructions described under hjubjZ)r}r(hXk:ref:`Setup environment when installing to a custom path `rhjhjOhj^h}r(UreftypeXrefj j X/processor-sdk-rtos-install-in-custom-path-labelU refdomainXstdrh]h]U refexplicith]h]h]j j uhK|h]rjb)r}r(hjh}r(h]h]r(j jXstd-refreh]h]h]uhjh]rhX2Setup environment when installing to a custom pathrr}r(hUhjubahjlubaubeubaubj)r}r(hUhj8hjOhjh}r(h]h]h]h]h]uhKhhh]rj)r}r(hUjKhjhjOhhh}r(h]h]h]h]h]uhKhhh]ubaubj/)r}r(hX,**Step2 : Invoke Make from root directory**rhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX(Step2 : Invoke Make from root directoryrr}r(hUhjubahj_ubaubj/)r}r(hXThe make file in the root director of the audio-starterkit can be used to build the entire package. To build the benchmark examples:rhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rhXThe make file in the root director of the audio-starterkit can be used to build the entire package. To build the benchmark examples:rr}r(hjhjubaubj)r}r(hUhj8hjOhjh}r(jU.h]h]h]jUh]h]jjuhKhhh]r(jX)r}r(hX?**cd /demos/audio-benchmark-starterkit**rhjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjOhj3h}r(h]h]h]h]h]uhKh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX;cd /demos/audio-benchmark-starterkitrr}r(hUhjubahj_ubaubaubjX)r}r(hX **make all** hjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX **make all**rhjhjOhj3h}r(h]h]h]h]h]uhKh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhXmake allrr}r(hUhjubahj_ubaubaubeubj))r}r(hXThe build picks up the SOC information from the SDK setup. Also, in the make environment the benchmark application is built to send benchmark logs to UART console so that there is no dependency on the CCS IDE environmenthj8hjOhj,h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXThe build picks up the SOC information from the SDK setup. Also, in the make environment the benchmark application is built to send benchmark logs to UART console so that there is no dependency on the CCS IDE environmentrhjhjOhj3h}r(h]h]h]h]h]uhKh]rhXThe build picks up the SOC information from the SDK setup. Also, in the make environment the benchmark application is built to send benchmark logs to UART console so that there is no dependency on the CCS IDE environmentrr}r(hjhjubaubaubj)r}r(hUhj8hjOhjh}r(h]h]h]h]h]uhKhhh]rj)r}r(hUjKhjhjOhhh}r(h]h]h]h]h]uhKhhh]ubaubj/)r}r(hX(For Other supported options, please typerhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rhX(For Other supported options, please typerr}r(hjhjubaubj/)r}r(hX**For Windows:**rhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]r jW)r }r (hjh}r (h]h]h]h]h]uhjh]r hX For Windows:rr}r(hUhj ubahj_ubaubj)r}r(hX gmake helphj8hjOhjh}r(jjh]h]h]h]h]uhM-hhh]rhX gmake helprr}r(hUhjubaubj/)r}r(hX**For Linux :**rhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]r hX For Linux :r!r"}r#(hUhjubahj_ubaubj)r$}r%(hX make helphj8hjOhjh}r&(jjh]h]h]h]h]uhM3hhh]r'hX make helpr(r)}r*(hUhj$ubaubj/)r+}r,(hX)All available options are provided below:r-hj8hjOhj3h}r.(h]h]h]h]h]uhKhhh]r/hX)All available options are provided below:r0r1}r2(hj-hj+ubaubj)r3}r4(hX#.. Image:: ../images/Make_help.png hj8hjOhjh}r5(UuriXrtos/../images/Make_help.pngr6h]h]h]h]j}r7U*j6sh]uhKhhh]ubeubh)r8}r9(hUhj!hjOhhh}r:(h]h]h]h]r;Uusing-ccs-projectsr<ah]r=hOauhKhhh]r>(h)r?}r@(hXUsing CCS ProjectsrAhj8hjOhhh}rB(h]h]h]h]h]uhKhhh]rChXUsing CCS ProjectsrDrE}rF(hjAhj?ubaubj/)rG}rH(hXHThe audio benchmark starterkit does not provide pre-canned CCS Projects as it is difficult to set up projects to be portable across various developer build environments. To create CCS Projects with the benchmarks, developers are required to run the BenchmarkProjectCreate script provided in the root directory of the starterkit.rIhj8hjOhj3h}rJ(h]h]h]h]h]uhKhhh]rKhXHThe audio benchmark starterkit does not provide pre-canned CCS Projects as it is difficult to set up projects to be portable across various developer build environments. To create CCS Projects with the benchmarks, developers are required to run the BenchmarkProjectCreate script provided in the root directory of the starterkit.rLrM}rN(hjIhjGubaubj/)rO}rP(hX8**Step1 : Setup Processor SDK RTOS build Environment.**rQhj8hjOhj3h}rR(h]h]h]h]h]uhKhhh]rSjW)rT}rU(hjQh}rV(h]h]h]h]h]uhjOh]rWhX4Step1 : Setup Processor SDK RTOS build Environment.rXrY}rZ(hUhjTubahj_ubaubj)r[}r\(hUhj8hjOhjh}r](jU.h]h]h]jUh]h]jjuhKhhh]r^(jX)r_}r`(hX6**set SDK_INSTALL_PATH = C:\\ti\\**rahj[hjOhj[h}rb(h]h]h]h]h]uhNhhh]rcj/)rd}re(hjahj_hjOhj3h}rf(h]h]h]h]h]uhKh]rgjW)rh}ri(hX6**set SDK_INSTALL_PATH = C:\\ti\\**h}rj(h]h]h]h]h]uhjdh]rkhX0set SDK_INSTALL_PATH = C:\ti\rlrm}rn(hUhjhubahj_ubaubaubjX)ro}rp(hX<**set TOOLS_INSTALL_PATH = C:\\ti\\**rqhj[hjOhj[h}rr(h]h]h]h]h]uhNhhh]rsj/)rt}ru(hjqhjohjOhj3h}rv(h]h]h]h]h]uhKh]rwjW)rx}ry(hX<**set TOOLS_INSTALL_PATH = C:\\ti\\**h}rz(h]h]h]h]h]uhjth]r{hX6set TOOLS_INSTALL_PATH = C:\ti\r|r}}r~(hUhjxubahj_ubaubaubjX)r}r(hX**setupenv.bat** hj[hjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX**setupenv.bat**rhjhjOhj3h}r(h]h]h]h]h]uhKh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX setupenv.batrr}r(hUhjubahj_ubaubaubeubj))r}r(hXRCCS by default is installed in the path C:\\ti\\ccsv7 so TOOLS_INSTALL_PATH=C:\\tihj8hjOhj,h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXRCCS by default is installed in the path C:\\ti\\ccsv7 so TOOLS_INSTALL_PATH=C:\\tihjhjOhj3h}r(h]h]h]h]h]uhKh]rhXOCCS by default is installed in the path C:\ti\ccsv7 so TOOLS_INSTALL_PATH=C:\tirr}r(hXRCCS by default is installed in the path C:\\ti\\ccsv7 so TOOLS_INSTALL_PATH=C:\\tihjubaubaubj/)r}r(hXDevelopers are required to setup the Processor SDK RTOS build environment as described in :ref:`Processor SDK RTOS Setup environment `hj8hjOhj3h}r(h]h]h]h]h]uhKhhh]r(hXZDevelopers are required to setup the Processor SDK RTOS build environment as described in rr}r(hXZDevelopers are required to setup the Processor SDK RTOS build environment as described in hjubjZ)r}r(hXS:ref:`Processor SDK RTOS Setup environment `rhjhjOhj^h}r(UreftypeXrefj j X%build-the-sdk-setup-environment-labelU refdomainXstdrh]h]U refexplicith]h]h]j j uhKh]rjb)r}r(hjh}r(h]h]r(j jXstd-refreh]h]h]uhjh]rhX$Processor SDK RTOS Setup environmentrr}r(hUhjubahjlubaubeubj/)r}r(hXIf developers install CCS or Processor SDK RTOS under a Custom path then they need to refer to the setup instructions described under :ref:`Setup environment when installing to a custom path `hj8hjOhj3h}r(h]h]h]h]h]uhKhhh]r(hXIf developers install CCS or Processor SDK RTOS under a Custom path then they need to refer to the setup instructions described under rr}r(hXIf developers install CCS or Processor SDK RTOS under a Custom path then they need to refer to the setup instructions described under hjubjZ)r}r(hXk:ref:`Setup environment when installing to a custom path `rhjhjOhj^h}r(UreftypeXrefj j X/processor-sdk-rtos-install-in-custom-path-labelU refdomainXstdrh]h]U refexplicith]h]h]j j uhKh]rjb)r}r(hjh}r(h]h]r(j jXstd-refreh]h]h]uhjh]rhX2Setup environment when installing to a custom pathrr}r(hUhjubahjlubaubeubj)r}r(hUhj8hjOhjh}r(h]h]h]h]h]uhKhhh]rj)r}r(hUjKhjhjOhhh}r(h]h]h]h]h]uhKhhh]ubaubj/)r}r(hXF**Step 2: Run BenchmarkProjectCreate script to generate CCS Projects**rhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhXBStep 2: Run BenchmarkProjectCreate script to generate CCS Projectsrr}r(hUhjubahj_ubaubj/)r}r(hXTo generate the CCS Projectsrhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rhXTo generate the CCS Projectsrr}r(hjhjubaubj)r}r(hUhj8hjOhjh}r(jU.h]h]h]jUh]h]jjuhKhhh]r(jX)r}r(hX>**cd $PROC_SDK_INSTALL_PATH/demos/audio-benchmark-starterkit**rhjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjOhj3h}r(h]h]h]h]h]uhKh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX:cd $PROC_SDK_INSTALL_PATH/demos/audio-benchmark-starterkitrr}r(hUhjubahj_ubaubaubjX)r}r(hX%**BenchmarkProjectCreate [Options]** hjhjOhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX$**BenchmarkProjectCreate [Options]**rhjhjOhj3h}r(h]h]h]h]h]uhKh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX BenchmarkProjectCreate [Options]rr}r(hUhjubahj_ubaubaubeubj/)r}r(hX?The Project create script can be run using the following syntaxrhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]r hX?The Project create script can be run using the following syntaxr r }r (hjhjubaubj)r }r(hX.BenchmarkProjectCreate.bat hj8hjOhjh}r(jjh]h]h]h]h]uhMahhh]rhX.BenchmarkProjectCreate.bat rr}r(hUhj ubaubj/)r}r(hXDescription of arguments:rhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rhXDescription of arguments:rr}r(hjhjubaubjQ)r}r(hUhj8hjOhjTh}r(jVX-h]h]h]h]h]uhKhhh]r(jX)r }r!(hXN**soc** - **K2G (Default)** / K2H/ K2E/ C6678/ C6657/ AM572X/ AM571x/ OMAPL138hjhjOhj[h}r"(h]h]h]h]h]uhNhhh]r#j/)r$}r%(hXN**soc** - **K2G (Default)** / K2H/ K2E/ C6678/ C6657/ AM572X/ AM571x/ OMAPL138hj hjOhj3h}r&(h]h]h]h]h]uhKh]r'(jW)r(}r)(hX**soc**h}r*(h]h]h]h]h]uhj$h]r+hXsocr,r-}r.(hUhj(ubahj_ubhX - r/r0}r1(hX - hj$ubjW)r2}r3(hX**K2G (Default)**h}r4(h]h]h]h]h]uhj$h]r5hX K2G (Default)r6r7}r8(hUhj2ubahj_ubhX3 / K2H/ K2E/ C6678/ C6657/ AM572X/ AM571x/ OMAPL138r9r:}r;(hX3 / K2H/ K2E/ C6678/ C6657/ AM572X/ AM571x/ OMAPL138hj$ubeubaubjX)r<}r=(hX4**board** - **all (Default)** / r>hjhjOhj[h}r?(h]h]h]h]h]uhNhhh]r@j/)rA}rB(hj>hj<hjOhj3h}rC(h]h]h]h]h]uhKh]rD(jW)rE}rF(hX **board**h}rG(h]h]h]h]h]uhjAh]rHhXboardrIrJ}rK(hUhjEubahj_ubhX - rLrM}rN(hX - hjAubjW)rO}rP(hX**all (Default)**h}rQ(h]h]h]h]h]uhjAh]rRhX all (Default)rSrT}rU(hUhjOubahj_ubhX / rVrW}rX(hX / hjAubeubaubjX)rY}rZ(hX)**module** - **all** / (FFT / FIR / IIR) hjhjOhj[h}r[(h]h]h]h]h]uhNhhh]r\j/)r]}r^(hX(**module** - **all** / (FFT / FIR / IIR)hjYhjOhj3h}r_(h]h]h]h]h]uhKh]r`(jW)ra}rb(hX **module**h}rc(h]h]h]h]h]uhj]h]rdhXmodulererf}rg(hUhjaubahj_ubhX - rhri}rj(hX - hj]ubjW)rk}rl(hX**all**h}rm(h]h]h]h]h]uhj]h]rnhXallrorp}rq(hUhjkubahj_ubhX / (FFT / FIR / IIR)rrrs}rt(hX / (FFT / FIR / IIR)hj]ubeubaubeubj)ru}rv(hXExample: a) BenchmarkProjectCreate.bat - Creates all module projects for the K2G soc for evmK2G platform b) BenchmarkProjectCreate.bat AM572x - Creates all module projects for AM572x soc for evmAM572x and idkAM572x platform c) BenchmarkProjectCreate.bat C6657 evmC6657 - Creates all modules for C6657 DSP for evmC6657 platform d) BenchmarkProjectCreate.bat K2H evmK2H FFT - Creates FFT module project for K2H soc for evmK2Hhj8hjOhjh}rw(jjh]h]h]h]h]uhMlhhh]rxhXExample: a) BenchmarkProjectCreate.bat - Creates all module projects for the K2G soc for evmK2G platform b) BenchmarkProjectCreate.bat AM572x - Creates all module projects for AM572x soc for evmAM572x and idkAM572x platform c) BenchmarkProjectCreate.bat C6657 evmC6657 - Creates all modules for C6657 DSP for evmC6657 platform d) BenchmarkProjectCreate.bat K2H evmK2H FFT - Creates FFT module project for K2H soc for evmK2Hryrz}r{(hUhjuubaubj))r|}r}(hX{**Known issue with Processor SDK RTOS 3.3** The BenchmarkProjectCreate script uses text files .txt from scripts folder to generate the CCS projects. The name for the demo folder was updated from "audio-benchmark-kit" to "audio-benchmark-starterkit". This will require CCS users to update the name in the .txt file before generating the scripts. For Example if you are using K2G platform locate file Benchmark_FFT_evmK2G_c66ExampleProject.txt, Benchmark_FIR_evmK2G_c66ExampleProject.txt and Benchmark_IIR_evmK2G_c66ExampleProject.txt and update the demo name in the text files from "audio-benchmark-kit" to "audio-benchmark-starterkit"hj8hjOhj,h}r~(h]h]h]h]h]uhNhhh]r(j/)r}r(hXX**Known issue with Processor SDK RTOS 3.3** The BenchmarkProjectCreate script uses text files .txt from scripts folder to generate the CCS projects. The name for the demo folder was updated from "audio-benchmark-kit" to "audio-benchmark-starterkit". This will require CCS users to update the name in the .txt file before generating the scripts.hj|hjOhj3h}r(h]h]h]h]h]uhKh]r(jW)r}r(hX+**Known issue with Processor SDK RTOS 3.3**h}r(h]h]h]h]h]uhjh]rhX'Known issue with Processor SDK RTOS 3.3rr}r(hUhjubahj_ubhX- The BenchmarkProjectCreate script uses text files .txt from scripts folder to generate the CCS projects. The name for the demo folder was updated from "audio-benchmark-kit" to "audio-benchmark-starterkit". This will require CCS users to update the name in the .txt file before generating the scripts.rr}r(hX- The BenchmarkProjectCreate script uses text files .txt from scripts folder to generate the CCS projects. The name for the demo folder was updated from "audio-benchmark-kit" to "audio-benchmark-starterkit". This will require CCS users to update the name in the .txt file before generating the scripts.hjubeubj/)r}r(hX!For Example if you are using K2G platform locate file Benchmark_FFT_evmK2G_c66ExampleProject.txt, Benchmark_FIR_evmK2G_c66ExampleProject.txt and Benchmark_IIR_evmK2G_c66ExampleProject.txt and update the demo name in the text files from "audio-benchmark-kit" to "audio-benchmark-starterkit"rhj|hjOhj3h}r(h]h]h]h]h]uhKh]rhX!For Example if you are using K2G platform locate file Benchmark_FFT_evmK2G_c66ExampleProject.txt, Benchmark_FIR_evmK2G_c66ExampleProject.txt and Benchmark_IIR_evmK2G_c66ExampleProject.txt and update the demo name in the text files from "audio-benchmark-kit" to "audio-benchmark-starterkit"rr}r(hjhjubaubeubj/)r}r(hX:**Step 3: Import Generated CCS Projects in CCS Workspace**rhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX6Step 3: Import Generated CCS Projects in CCS Workspacerr}r(hUhjubahj_ubaubj/)r}r(hXLaunch CCS and Import the CCS Project using the Project->Import Existing CCS Project and browse to the audio-benchmark-starterkit folderrhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rhXLaunch CCS and Import the CCS Project using the Project->Import Existing CCS Project and browse to the audio-benchmark-starterkit folderrr}r(hjhjubaubj)r}r(hX,.. Image:: ../images/CCS_Project_Browse.png hj8hjOhjh}r(UuriX%rtos/../images/CCS_Project_Browse.pngrh]h]h]h]j}rU*jsh]uhKhhh]ubj/)r}r(hX1**Step 4: Build Imported CCS Benchmark Projects**rhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX-Step 4: Build Imported CCS Benchmark Projectsrr}r(hUhjubahj_ubaubj/)r}r(hXORight click on the Benchmark Project File and Build the project as shown below:rhj8hjOhj3h}r(h]h]h]h]h]uhKhhh]rhXORight click on the Benchmark Project File and Build the project as shown below:rr}r(hjhjubaubj)r}r(hX).. Image:: ../images/Build_Benchmark.png hj8hjOhjh}r(UuriX"rtos/../images/Build_Benchmark.pngrh]h]h]h]j}rU*jsh]uhKhhh]ubeubeubh)r}r(hUhj=hjOhhh}r(h]h]h]h]rUhow-to-run-the-benchmarksrah]rhCauhKhhh]r(h)r}r(hXHow to Run the BenchmarksrhjhjOhhh}r(h]h]h]h]h]uhKhhh]rhXHow to Run the Benchmarksrr}r(hjhjubaubj/)r}r(hXThe benchmark examples can be run by loading the built out files with an emulator using the CCS Debug functionality or the examples can be run on the DSP by creating SD card bootable images using out files. Let us take a look at both these approaches.rhjhjOhj3h}r(h]h]h]h]h]uhKhhh]rhXThe benchmark examples can be run by loading the built out files with an emulator using the CCS Debug functionality or the examples can be run on the DSP by creating SD card bootable images using out files. Let us take a look at both these approaches.rr}r(hjhjubaubh)r}r(hUhjhjOhhh}r(h]h]h]h]rU using-ccsrah]rhauhMhhh]r(h)r}r(hX Using CCSrhjhjOhhh}r(h]h]h]h]h]uhMhhh]rhX Using CCSrr}r(hjhjubaubj/)r}r(hX1**Step 1: Connect Emulator and UART to Hardware**rhjhjOhj3h}r(h]h]h]h]h]uhMhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX-Step 1: Connect Emulator and UART to Hardwarerr}r(hUhjubahj_ubaubjQ)r}r(hUhjhjOhjTh}r(jVX-h]h]h]h]h]uhM hhh]r(jX)r}r(hXRefer to the `Hardware Setup guide `__ and connect the onboard or external emulator to the Hardware and Host machine with CCS installed. hjhjOhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hXRefer to the `Hardware Setup guide `__ and connect the onboard or external emulator to the Hardware and Host machine with CCS installed.hjhjOhj3h}r (h]h]h]h]h]uhM h]r (hX Refer to the r r }r (hX Refer to the hj ubj)r }r (hXW`Hardware Setup guide `__h}r (UnameXHardware Setup guidejX<index_release_specific.html#supported-platforms-and-versionsh]h]h]h]h]uhj h]r hXHardware Setup guider r }r (hUhj ubahjubhXb and connect the onboard or external emulator to the Hardware and Host machine with CCS installed.r r }r (hXb and connect the onboard or external emulator to the Hardware and Host machine with CCS installed.hj ubeubaubjX)r }r (hXConnect the UART cable from the EVM to the Host machine and configure the Serial console with following settings: - **Baud Rate**: 115200 - **Data Bits**: 8 - **Parity**: None - **Flow Control**: Off hjhNhj[h}r (h]h]h]h]h]uhNhhh]r (j/)r }r (hXqConnect the UART cable from the EVM to the Host machine and configure the Serial console with following settings:r hj hjOhj3h}r (h]h]h]h]h]uhM h]r hXqConnect the UART cable from the EVM to the Host machine and configure the Serial console with following settings:r r }r (hj hj ubaubjQ)r }r (hUh}r! (jVX-h]h]h]h]h]uhj h]r" (jX)r# }r$ (hX**Baud Rate**: 115200r% h}r& (h]h]h]h]h]uhj h]r' j/)r( }r) (hj% hj# hjOhj3h}r* (h]h]h]h]h]uhMh]r+ (jW)r, }r- (hX **Baud Rate**h}r. (h]h]h]h]h]uhj( h]r/ hX Baud Rater0 r1 }r2 (hUhj, ubahj_ubhX: 115200r3 r4 }r5 (hX: 115200hj( ubeubahj[ubjX)r6 }r7 (hX**Data Bits**: 8r8 h}r9 (h]h]h]h]h]uhj h]r: j/)r; }r< (hj8 hj6 hjOhj3h}r= (h]h]h]h]h]uhMh]r> (jW)r? }r@ (hX **Data Bits**h}rA (h]h]h]h]h]uhj; h]rB hX Data BitsrC rD }rE (hUhj? ubahj_ubhX: 8rF rG }rH (hX: 8hj; ubeubahj[ubjX)rI }rJ (hX**Parity**: NonerK h}rL (h]h]h]h]h]uhj h]rM j/)rN }rO (hjK hjI hjOhj3h}rP (h]h]h]h]h]uhMh]rQ (jW)rR }rS (hX **Parity**h}rT (h]h]h]h]h]uhjN h]rU hXParityrV rW }rX (hUhjR ubahj_ubhX: NonerY rZ }r[ (hX: NonehjN ubeubahj[ubjX)r\ }r] (hX**Flow Control**: Off h}r^ (h]h]h]h]h]uhj h]r_ j/)r` }ra (hX**Flow Control**: Offhj\ hjOhj3h}rb (h]h]h]h]h]uhMh]rc (jW)rd }re (hX**Flow Control**h}rf (h]h]h]h]h]uhj` h]rg hX Flow Controlrh ri }rj (hUhjd ubahj_ubhX: Offrk rl }rm (hX: Offhj` ubeubahj[ubehjTubeubeubj/)rn }ro (hX>**Step 2: Create Target configuration and connect to the DSP**rp hjhjOhj3h}rq (h]h]h]h]h]uhMhhh]rr jW)rs }rt (hjp h}ru (h]h]h]h]h]uhjn h]rv hX:Step 2: Create Target configuration and connect to the DSPrw rx }ry (hUhjs ubahj_ubaubj/)rz }r{ (hXTo connect to the SOC, developers need to create a Target configuration by following the procedure described in wiki :ref:`Create_Target_Configuration_File_for_EVM `hjhjOhj3h}r| (h]h]h]h]h]uhMhhh]r} (hXuTo connect to the SOC, developers need to create a Target configuration by following the procedure described in wiki r~ r }r (hXuTo connect to the SOC, developers need to create a Target configuration by following the procedure described in wiki hjz ubjZ)r }r (hX`:ref:`Create_Target_Configuration_File_for_EVM `r hjz hjOhj^h}r (UreftypeXrefj j X.create-target-configuration-file-for-evm-labelU refdomainXstdr h]h]U refexplicith]h]h]j j uhMh]r jb)r }r (hj h}r (h]h]r (j j Xstd-refr eh]h]h]uhj h]r hX(Create_Target_Configuration_File_for_EVMr r }r (hUhj ubahjlubaubeubj)r }r (hUhjhjOhjh}r (h]h]h]h]h]uhMhhh]r j)r }r (hUjKhj hjOhhh}r (h]h]h]h]h]uhKhhh]ubaubj/)r }r (hX(Instructions specific to supported EVMs:r hjhjOhj3h}r (h]h]h]h]h]uhMhhh]r hX(Instructions specific to supported EVMs:r r }r (hj hj ubaubjQ)r }r (hUhjhjOhjTh}r (jVX-h]h]h]h]h]uhMhhh]r (jX)r }r (hX`K2G GP EVM CCS Setup `__hj hjOhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hX`K2G GP EVM CCS Setup `__r hj hjOhj3h}r (h]h]h]h]h]uhMh]r j)r }r (hj h}r (UnameXK2G GP EVM CCS SetupjXkhttp://processors.wiki.ti.com/index.php/66AK2G02_GP_EVM_Hardware_Setup#Connect_without_a_SD_card_boot_imageh]h]h]h]h]uhj h]r hXK2G GP EVM CCS Setupr r }r (hUhj ubahjubaubaubjX)r }r (hX`AM572x GP EVM CCS Setup `__ hj hjOhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hX`AM572x GP EVM CCS Setup `__r hj hjOhj3h}r (h]h]h]h]h]uhM h]r j)r }r (hj h}r (UnameXAM572x GP EVM CCS SetupjXihttp://processors.wiki.ti.com/index.php/AM572x_GP_EVM_Hardware_Setup#Connect_without_a_SD_card_boot_imageh]h]h]h]h]uhj h]r hXAM572x GP EVM CCS Setupr r }r (hUhj ubahjubaubaubeubj))r }r (hXPlease refer to `Hardware User Guide `__ corresponding to each supported EVM so setup the boot switches to No boot if availablehjhjOhj,h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hXPlease refer to `Hardware User Guide `__ corresponding to each supported EVM so setup the boot switches to No boot if availablehj hjOhj3h}r (h]h]h]h]h]uhM$h]r (hXPlease refer to r r }r (hXPlease refer to hj ubj)r }r (hXV`Hardware User Guide `__h}r (UnameXHardware User GuidejX<index_release_specific.html#supported-platforms-and-versionsh]h]h]h]h]uhj h]r hXHardware User Guider r }r (hUhj ubahjubhXW corresponding to each supported EVM so setup the boot switches to No boot if availabler r }r (hXW corresponding to each supported EVM so setup the boot switches to No boot if availablehj ubeubaubj)r }r (hUhjhjOhjh}r (h]h]h]h]h]uhM(hhh]r j)r }r (hUjKhj hjOhhh}r (h]h]h]h]h]uhKhhh]ubaubj/)r }r (hX@**Step 3: Loading and Running Benchmark application on the DSP**r hjhjOhj3h}r (h]h]h]h]h]uhM)hhh]r jW)r }r (hj h}r (h]h]h]h]h]uhj h]r hX<Step 3: Loading and Running Benchmark application on the DSPr r }r (hUhj ubahj_ubaubjQ)r }r (hUhjhjOhjTh}r (jVX-h]h]h]h]h]uhM+hhh]r (jX)r }r (hXXLoad the out file using **Run -> Load -> Load Program** and browse to the output binary.hj hjOhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hXXLoad the out file using **Run -> Load -> Load Program** and browse to the output binary.hj hjOhj3h}r (h]h]h]h]h]uhM+h]r (hXLoad the out file using r r }r (hXLoad the out file using hj ubjW)r }r (hX**Run -> Load -> Load Program**h}r (h]h]h]h]h]uhj h]r hXRun -> Load -> Load Programr r }r!(hUhj ubahj_ubhX! and browse to the output binary.r!r!}r!(hX! and browse to the output binary.hj ubeubaubjX)r!}r!(hXZAfter loading the out file, run the benchmark app by Pressing **F8** or **Run -> Resume** hj hjOhj[h}r!(h]h]h]h]h]uhNhhh]r!j/)r!}r !(hXYAfter loading the out file, run the benchmark app by Pressing **F8** or **Run -> Resume**hj!hjOhj3h}r !(h]h]h]h]h]uhM-h]r !(hX>After loading the out file, run the benchmark app by Pressing r !r !}r!(hX>After loading the out file, run the benchmark app by Pressing hj!ubjW)r!}r!(hX**F8**h}r!(h]h]h]h]h]uhj!h]r!hXF8r!r!}r!(hUhj!ubahj_ubhX or r!r!}r!(hX or hj!ubjW)r!}r!(hX**Run -> Resume**h}r!(h]h]h]h]h]uhj!h]r!hX Run -> Resumer!r!}r!(hUhj!ubahj_ubeubaubeubj)r !}r!!(hUhjhjOhjh}r"!(h]h]h]h]h]uhM0hhh]r#!j)r$!}r%!(hUjKhj !hjOhhh}r&!(h]h]h]h]h]uhKhhh]ubaubj)r'!}r(!(hX0.. Image:: ../images/FFTBenchmark_CCS_Output.pngr)!hjhjOhjh}r*!(UuriX*rtos/../images/FFTBenchmark_CCS_Output.pngr+!h]h]h]h]j}r,!U*j+!sh]uhM5hhh]ubj:)r-!}r.!(hUhjhjOhj=h}r/!(h]h]h]h]h]uhM6hhh]r0!j@)r1!}r2!(hUh}r3!(h]h]h]h]h]UcolsKuhj-!h]r4!j)r5!}r6!(hUh}r7!(h]h]h]h]h]uhj1!h]hjubahjubaubeubh)r8!}r9!(hUhjhjOhhh}r:!(h]h]h]h]r;!U.using-sd-card-supported-only-on-am57xx-and-k2gr!(h)r?!}r@!(hX0Using SD card (Supported only on AM57xx and K2G)rA!hj8!hjOhhh}rB!(h]h]h]h]h]uhM9hhh]rC!hX0Using SD card (Supported only on AM57xx and K2G)rD!rE!}rF!(hjA!hj?!ubaubj/)rG!}rH!(hXA**Step 1: Run Create SD script to generate SD bootable binaries**rI!hj8!hjOhj3h}rJ!(h]h]h]h]h]uhM;hhh]rK!jW)rL!}rM!(hjI!h}rN!(h]h]h]h]h]uhjG!h]rO!hX=Step 1: Run Create SD script to generate SD bootable binariesrP!rQ!}rR!(hUhjL!ubahj_ubaubj/)rS!}rT!(hXThe root directory in the audio-benchmark-starterkit contains a create-sd.bat file that will convert the .out files installed int the bin folder into SD bootable images which will be installed in the path bin/sd_card_files/rU!hj8!hjOhj3h}rV!(h]h]h]h]h]uhM=hhh]rW!hXThe root directory in the audio-benchmark-starterkit contains a create-sd.bat file that will convert the .out files installed int the bin folder into SD bootable images which will be installed in the path bin/sd_card_files/rX!rY!}rZ!(hjU!hjS!ubaubj/)r[!}r\!(hX5The syntax to run the create-sd script is as follows:r]!hj8!hjOhj3h}r^!(h]h]h]h]h]uhMBhhh]r_!hX5The syntax to run the create-sd script is as follows:r`!ra!}rb!(hj]!hj[!ubaubj)rc!}rd!(hXcreate-sd.bat hj8!hjOhjh}re!(jjh]h]h]h]h]uhMhhh]rf!hXcreate-sd.bat rg!rh!}ri!(hUhjc!ubaubj/)rj!}rk!(hXQ**EVM** : refers to evaluation platfom on which the binaries are meant to be runhj8!hjOhj3h}rl!(h]h]h]h]h]uhMHhhh]rm!(jW)rn!}ro!(hX**EVM**h}rp!(h]h]h]h]h]uhjj!h]rq!hXEVMrr!rs!}rt!(hUhjn!ubahj_ubhXJ : refers to evaluation platfom on which the binaries are meant to be runru!rv!}rw!(hXJ : refers to evaluation platfom on which the binaries are meant to be runhjj!ubeubj/)rx!}ry!(hX>Eg: create-sd evmK2G - Creates SD bootable images for K2G EVM.rz!hj8!hjOhj3h}r{!(h]h]h]h]h]uhMKhhh]r|!hX>Eg: create-sd evmK2G - Creates SD bootable images for K2G EVM.r}!r~!}r!(hjz!hjx!ubaubj/)r!}r!(hXA**Step 2 : Format and copy the SD card binaries to the SD card**r!hj8!hjOhj3h}r!(h]h]h]h]h]uhMMhhh]r!jW)r!}r!(hj!h}r!(h]h]h]h]h]uhj!h]r!hX=Step 2 : Format and copy the SD card binaries to the SD cardr!r!}r!(hUhj!ubahj_ubaubj/)r!}r!(hXCreate an SD card using the procedure described in :ref:`Creating SD card in Windows ` and :ref:`Create SD card in Linux `hj8!hjOhj3h}r!(h]h]h]h]h]uhMOhhh]r!(hX3Create an SD card using the procedure described in r!r!}r!(hX3Create an SD card using the procedure described in hj!ubjZ)r!}r!(hXG:ref:`Creating SD card in Windows `r!hj!hjOhj^h}r!(UreftypeXrefj j X"tools-create-sd-card-windows-labelU refdomainXstdr!h]h]U refexplicith]h]h]j j uhMOh]r!jb)r!}r!(hj!h}r!(h]h]r!(j j!Xstd-refr!eh]h]h]uhj!h]r!hXCreating SD card in Windowsr!r!}r!(hUhj!ubahjlubaubhX and r!r!}r!(hX and hj!ubjZ)r!}r!(hXA:ref:`Create SD card in Linux `r!hj!hjOhj^h}r!(UreftypeXrefj j X tools-create-sd-card-linux-labelU refdomainXstdr!h]h]U refexplicith]h]h]j j uhMOh]r!jb)r!}r!(hj!h}r!(h]h]r!(j j!Xstd-refr!eh]h]h]uhj!h]r!hXCreate SD card in Linuxr!r!}r!(hUhj!ubahjlubaubeubj/)r!}r!(hXWCopy the "MLO" and "Singleprecision__app" to the boot partition on the SD card.r!hj8!hjOhj3h}r!(h]h]h]h]h]uhMRhhh]r!hXWCopy the "MLO" and "Singleprecision__app" to the boot partition on the SD card.r!r!}r!(hj!hj!ubaubj/)r!}r!(hXD**Step 3: Boot the Benchmark app by configuring SD boot on the EVM**r!hj8!hjOhj3h}r!(h]h]h]h]h]uhMUhhh]r!jW)r!}r!(hj!h}r!(h]h]h]h]h]uhj!h]r!hX@Step 3: Boot the Benchmark app by configuring SD boot on the EVMr!r!}r!(hUhj!ubahj_ubaubjQ)r!}r!(hUhj8!hjOhjTh}r!(jVX-h]h]h]h]h]uhMWhhh]r!(jX)r!}r!(hXBConfigure the boot switches on the evaluation hardware to SD boot.r!hj!hjOhj[h}r!(h]h]h]h]h]uhNhhh]r!j/)r!}r!(hj!hj!hjOhj3h}r!(h]h]h]h]h]uhMWh]r!hXBConfigure the boot switches on the evaluation hardware to SD boot.r!r!}r!(hj!hj!ubaubaubjX)r!}r!(hX?Insert the SD card in the microSD or SD card slot on the board.r!hj!hjOhj[h}r!(h]h]h]h]h]uhNhhh]r!j/)r!}r!(hj!hj!hjOhj3h}r!(h]h]h]h]h]uhMXh]r!hX?Insert the SD card in the microSD or SD card slot on the board.r!r!}r!(hj!hj!ubaubaubjX)r!}r!(hXConnect the UART on the hardware to the Host and configure the host to **Baud Rate**\ = 115200, **Data Bits**\ = 8 , **Parity**\ = None, **Flow Control**\ = Offhj!hjOhj[h}r!(h]h]h]h]h]uhNhhh]r!j/)r!}r!(hXConnect the UART on the hardware to the Host and configure the host to **Baud Rate**\ = 115200, **Data Bits**\ = 8 , **Parity**\ = None, **Flow Control**\ = Offhj!hjOhj3h}r!(h]h]h]h]h]uhMYh]r!(hXGConnect the UART on the hardware to the Host and configure the host to r!r!}r!(hXGConnect the UART on the hardware to the Host and configure the host to hj!ubjW)r!}r!(hX **Baud Rate**h}r!(h]h]h]h]h]uhj!h]r!hX Baud Rater!r!}r!(hUhj!ubahj_ubhX = 115200, r!r!}r!(hX \ = 115200, hj!ubjW)r!}r!(hX **Data Bits**h}r!(h]h]h]h]h]uhj!h]r!hX Data Bitsr!r!}r!(hUhj!ubahj_ubhX= 8 , r"r"}r"(hX\ = 8 , hj!ubjW)r"}r"(hX **Parity**h}r"(h]h]h]h]h]uhj!h]r"hXParityr"r"}r "(hUhj"ubahj_ubhX= None, r "r "}r "(hX \ = None, hj!ubjW)r "}r"(hX**Flow Control**h}r"(h]h]h]h]h]uhj!h]r"hX Flow Controlr"r"}r"(hUhj "ubahj_ubhX= Offr"r"}r"(hX\ = Offhj!ubeubaubjX)r"}r"(hXFPower on the EVM to view the output on the Serial console on the host hj!hjOhj[h}r"(h]h]h]h]h]uhNhhh]r"j/)r"}r"(hXEPower on the EVM to view the output on the Serial console on the hostr"hj"hjOhj3h}r"(h]h]h]h]h]uhM\h]r"hXEPower on the EVM to view the output on the Serial console on the hostr "r!"}r""(hj"hj"ubaubaubeubeubeubh)r#"}r$"(hUhj=hjOhhh}r%"(h]h]h]h]r&"U$benchmark-app-output-on-uart-consoler'"ah]r("h"ubaubcdocutils.nodes rubric rF")rG"}rH"(hX.Signal Processing functions used in StarterkitrI"hj7"hjOhUrubricrJ"h}rK"(h]rL"U.signal-processing-functions-used-in-starterkitrM"ah]h]h]h]rN"hauhNhhh]rO"hX.Signal Processing functions used in StarterkitrP"rQ"}rR"(hjI"hjG"ubaubjF")rS"}rT"(hXASingle Precision FFT: DSPF_sp_fftSPxSP (Mixed Radix Forward FFT )rU"hj7"hjOhjJ"h}rV"(h]rW"U=single-precision-fft-dspf-sp-fftspxsp-mixed-radix-forward-fftrX"ah]h]h]h]rY"hauhNhhh]rZ"hXASingle Precision FFT: DSPF_sp_fftSPxSP (Mixed Radix Forward FFT )r["r\"}r]"(hjU"hjS"ubaubj/)r^"}r_"(hXThe audio benchmark kit uses the FFT implementation(DSPF_sp_fftSPxSP) from the `TI DSP Library `__. The DSPF_sp_fftSPxSP kernel calculates the discrete Fourier transform of complex input array ``ptr_x`` using a mixed radix FFT algorithm. The result is stored in complex output array ``ptr_y`` in normal order. Each complex array contains real and imaginary values at even and odd indices, respectively. DSPF_sp_fftSPxSP kernel is implemented in assembly to maximize performance, but a natural C implementation is also provided. The demonstration app for this kernel includes the required bit reversal coefficients, ``brev``, and additional code to calculate the twiddle factor coefficients, ``ptr_w``.hj7"hjOhj3h}r`"(h]h]h]h]h]uhMmhhh]ra"(hXOThe audio benchmark kit uses the FFT implementation(DSPF_sp_fftSPxSP) from the rb"rc"}rd"(hXOThe audio benchmark kit uses the FFT implementation(DSPF_sp_fftSPxSP) from the hj^"ubj)re"}rf"(hXV`TI DSP Library `__h}rg"(UnameXTI DSP LibraryjXAhttp://processors.wiki.ti.com/index.php/Software_libraries#DSPLIBh]h]h]h]h]uhj^"h]rh"hXTI DSP Libraryri"rj"}rk"(hUhje"ubahjubhX_. The DSPF_sp_fftSPxSP kernel calculates the discrete Fourier transform of complex input array rl"rm"}rn"(hX_. The DSPF_sp_fftSPxSP kernel calculates the discrete Fourier transform of complex input array hj^"ubj)ro"}rp"(hX ``ptr_x``h}rq"(h]h]h]h]h]uhj^"h]rr"hXptr_xrs"rt"}ru"(hUhjo"ubahj#ubhXQ using a mixed radix FFT algorithm. The result is stored in complex output array rv"rw"}rx"(hXQ using a mixed radix FFT algorithm. The result is stored in complex output array hj^"ubj)ry"}rz"(hX ``ptr_y``h}r{"(h]h]h]h]h]uhj^"h]r|"hXptr_yr}"r~"}r"(hUhjy"ubahj#ubhXC in normal order. Each complex array contains real and imaginary values at even and odd indices, respectively. DSPF_sp_fftSPxSP kernel is implemented in assembly to maximize performance, but a natural C implementation is also provided. The demonstration app for this kernel includes the required bit reversal coefficients, r"r"}r"(hXC in normal order. Each complex array contains real and imaginary values at even and odd indices, respectively. DSPF_sp_fftSPxSP kernel is implemented in assembly to maximize performance, but a natural C implementation is also provided. The demonstration app for this kernel includes the required bit reversal coefficients, hj^"ubj)r"}r"(hX``brev``h}r"(h]h]h]h]h]uhj^"h]r"hXbrevr"r"}r"(hUhj"ubahj#ubhXD, and additional code to calculate the twiddle factor coefficients, r"r"}r"(hXD, and additional code to calculate the twiddle factor coefficients, hj^"ubj)r"}r"(hX ``ptr_w``h}r"(h]h]h]h]h]uhj^"h]r"hXptr_wr"r"}r"(hUhj"ubahj#ubhX.r"}r"(hX.hj^"ubeubj)r"}r"(hUhj7"hjOhjh}r"(h]h]h]h]h]uhMzhhh]r"j)r"}r"(hUjKhj"hjOhhh}r"(h]h]h]h]h]uhKhhh]ubaubj))r"}r"(hXu- For implementation details of this FFT computation refer to documentation provided in `Additional resources `__ - For Real input sequences, efficient FFT Implementation is described here `Efficient_FFT_Computation_of_Real_Input `__hj7"hNhj,h}r"(h]h]h]h]h]uhNhhh]r"jQ)r"}r"(hUh}r"(jVX-h]h]h]h]h]uhj"h]r"(jX)r"}r"(hXFor implementation details of this FFT computation refer to documentation provided in `Additional resources `__h}r"(h]h]h]h]h]uhj"h]r"j/)r"}r"(hXFor implementation details of this FFT computation refer to documentation provided in `Additional resources `__hj"hjOhj3h}r"(h]h]h]h]h]uhM}h]r"(hXVFor implementation details of this FFT computation refer to documentation provided in r"r"}r"(hXVFor implementation details of this FFT computation refer to documentation provided in hj"ubj)r"}r"(hXI`Additional resources `__h}r"(UnameXAdditional resourcesjX.index_examples_demos.html#additional-resourcesh]h]h]h]h]uhj"h]r"hXAdditional resourcesr"r"}r"(hUhj"ubahjubeubahj[ubjX)r"}r"(hXFor Real input sequences, efficient FFT Implementation is described here `Efficient_FFT_Computation_of_Real_Input `__h}r"(h]h]h]h]h]uhj"h]r"j/)r"}r"(hXFor Real input sequences, efficient FFT Implementation is described here `Efficient_FFT_Computation_of_Real_Input `__hj"hjOhj3h}r"(h]h]h]h]h]uhMh]r"(hXIFor Real input sequences, efficient FFT Implementation is described here r"r"}r"(hXIFor Real input sequences, efficient FFT Implementation is described here hj"ubj)r"}r"(hX}`Efficient_FFT_Computation_of_Real_Input `__h}r"(UnameX'Efficient_FFT_Computation_of_Real_InputjXOhttp://processors.wiki.ti.com/index.php/Efficient_FFT_Computation_of_Real_Inputh]h]h]h]h]uhj"h]r"hX'Efficient_FFT_Computation_of_Real_Inputr"r"}r"(hUhj"ubahjubeubahj[ubehjTubaubjF")r"}r"(hX;Single Precision FIR: DSPF_sp_fir_cplx (Complex FIR Filter)r"hj7"hjOhjJ"h}r"(h]r"U8single-precision-fir-dspf-sp-fir-cplx-complex-fir-filterr"ah]h]h]h]r"huauhNhhh]r"hX;Single Precision FIR: DSPF_sp_fir_cplx (Complex FIR Filter)r"r"}r"(hj"hj"ubaubj/)r"}r"(hXThe audio benchmark kit uses the FFT implementation(DSPF_sp_fftSPxSP) from the `TI DSP Library `__. The DSPF_sp_fir_cplx kernel performs complex FIR filtering on complex input array x with complex coefficient array h. The result is stored in complex output array y. For each complex array, real and imaginary elements are respectively stored at even and odd index locations.hj7"hjOhj3h}r"(h]h]h]h]h]uhMhhh]r"(hXOThe audio benchmark kit uses the FFT implementation(DSPF_sp_fftSPxSP) from the r"r"}r"(hXOThe audio benchmark kit uses the FFT implementation(DSPF_sp_fftSPxSP) from the hj"ubj)r"}r"(hXV`TI DSP Library `__h}r"(UnameXTI DSP LibraryjXAhttp://processors.wiki.ti.com/index.php/Software_libraries#DSPLIBh]h]h]h]h]uhj"h]r"hXTI DSP Libraryr"r"}r"(hUhj"ubahjubhX. The DSPF_sp_fir_cplx kernel performs complex FIR filtering on complex input array x with complex coefficient array h. The result is stored in complex output array y. For each complex array, real and imaginary elements are respectively stored at even and odd index locations.r"r"}r"(hX. The DSPF_sp_fir_cplx kernel performs complex FIR filtering on complex input array x with complex coefficient array h. The result is stored in complex output array y. For each complex array, real and imaginary elements are respectively stored at even and odd index locations.hj"ubeubj/)r"}r"(hXxThe API reference and the implementation details can found in the TI DSPLIB documentation included in the Processor SDK.r"hj7"hjOhj3h}r"(h]h]h]h]h]uhMhhh]r"hXxThe API reference and the implementation details can found in the TI DSPLIB documentation included in the Processor SDK.r"r"}r"(hj"hj"ubaubjF")r"}r"(hXhSingle Precision IIR : tisigCascadeBiquadSP_2c_3s_kernel (Cascade Biquad Filter for Multichannel input)r"hj7"hjOhjJ"h}r"(h]r"Ucsingle-precision-iir-tisigcascadebiquadsp-2c-3s-kernel-cascade-biquad-filter-for-multichannel-inputr"ah]h]h]h]r"hauhNhhh]r"hXhSingle Precision IIR : tisigCascadeBiquadSP_2c_3s_kernel (Cascade Biquad Filter for Multichannel input)r"r"}r"(hj"hj"ubaubj/)r"}r"(hXThe Cascade biquad filtering function in the audio benchmark starterkit is an improved biquad infinite impulse response filter `Patent US20160112033 Pending `__. The new filter structure modifies the feedback path in the filter, resulting in a significant reduction in execution cycles. One of the most-used digital filter forms is the biquad. A biquad is a second order (two poles and two zeros) Infinite Impulse Response (IIR) filter. It is high enough order to be useful on its own, and because of the coefficient sensitivities in higher order filters the biquad is often used as the basic building block for more complex filters. For instance, a biquad low pass filter has a cutoff slope of 12 dB/octave, useful for tone controls; if a 24 dB/octave filter is needed, you can cascade two biquads and it will have less coefficient sensitivity problems than a single fourth-order design.hj7"hjOhj3h}r"(h]h]h]h]h]uhMhhh]r"(hXThe Cascade biquad filtering function in the audio benchmark starterkit is an improved biquad infinite impulse response filter r"r"}r"(hXThe Cascade biquad filtering function in the audio benchmark starterkit is an improved biquad infinite impulse response filter hj"ubj)r"}r#(hX`Patent US20160112033 Pending `__h}r#(UnameXPatent US20160112033 PendingjXhttp://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PG01&p=1&u=/netahtml/PTO/srchnum.html&r=1&f=G&l=50&s1=20160112033.PGNR.h]h]h]h]h]uhj"h]r#hXPatent US20160112033 Pendingr#r#}r#(hUhj"ubahjubhX. The new filter structure modifies the feedback path in the filter, resulting in a significant reduction in execution cycles. One of the most-used digital filter forms is the biquad. A biquad is a second order (two poles and two zeros) Infinite Impulse Response (IIR) filter. It is high enough order to be useful on its own, and because of the coefficient sensitivities in higher order filters the biquad is often used as the basic building block for more complex filters. For instance, a biquad low pass filter has a cutoff slope of 12 dB/octave, useful for tone controls; if a 24 dB/octave filter is needed, you can cascade two biquads and it will have less coefficient sensitivity problems than a single fourth-order design.r#r#}r#(hX. The new filter structure modifies the feedback path in the filter, resulting in a significant reduction in execution cycles. One of the most-used digital filter forms is the biquad. A biquad is a second order (two poles and two zeros) Infinite Impulse Response (IIR) filter. It is high enough order to be useful on its own, and because of the coefficient sensitivities in higher order filters the biquad is often used as the basic building block for more complex filters. For instance, a biquad low pass filter has a cutoff slope of 12 dB/octave, useful for tone controls; if a 24 dB/octave filter is needed, you can cascade two biquads and it will have less coefficient sensitivity problems than a single fourth-order design.hj"ubeubj/)r #}r #(hXFor implementation details please check the `USTO link `__hj7"hjOhj3h}r #(h]h]h]h]h]uhMhhh]r #(hX,For implementation details please check the r #r#}r#(hX,For implementation details please check the hj #ubj)r#}r#(hX`USTO link `__h}r#(UnameX USTO linkjXhttp://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PG01&p=1&u=/netahtml/PTO/srchnum.html&r=1&f=G&l=50&s1=20160112033.PGNR.h]h]h]h]h]uhj #h]r#hX USTO linkr#r#}r#(hUhj#ubahjubeubj/)r#}r#(hXAPI reference:r#hj7"hjOhj3h}r#(h]h]h]h]h]uhMhhh]r#hXAPI reference:r#r#}r#(hj#hj#ubaubj)r#}r #(hXEint tisigCascadeBiquad32f_2c_3skernel(CascadeBiquad_FilParam *pParam)hj7"hjOhjh}r!#(jjh]h]h]h]h]uhMChhh]r"#hXEint tisigCascadeBiquad32f_2c_3skernel(CascadeBiquad_FilParam *pParam)r##r$#}r%#(hUhj#ubaubj/)r&#}r'#(hX*where CascadeBiquad_FilParam is defined asr(#hj7"hjOhj3h}r)#(h]h]h]h]h]uhMhhh]r*#hX*where CascadeBiquad_FilParam is defined asr+#r,#}r-#(hj(#hj&#ubaubj)r.#}r/#(hX'CascadeBiquad_FilParam { float *restrict pin1; // Input Data Channel 1 float *restrict pin2; // Input Data Channel 2 float *restrict pOut1; // Output Data Channel 1 float *restrict pOut2; // Output Data Channel 1 float *restrict pCoef; // Filter Coefficients a, b for 3 stages float *restrict pVar0; // Filter Variables d0, d1 for 3 stages channel 0 float *restrict pVar1; // Filter Variables d0, d1 for 3 stages channel 1 int sampleCount; // Number of samples } CascadeBiquad_FilParam;hj7"hjOhjh}r0#(jGjHXcjjh]h]h]jI}h]h]uhMhhh]r1#hX'CascadeBiquad_FilParam { float *restrict pin1; // Input Data Channel 1 float *restrict pin2; // Input Data Channel 2 float *restrict pOut1; // Output Data Channel 1 float *restrict pOut2; // Output Data Channel 1 float *restrict pCoef; // Filter Coefficients a, b for 3 stages float *restrict pVar0; // Filter Variables d0, d1 for 3 stages channel 0 float *restrict pVar1; // Filter Variables d0, d1 for 3 stages channel 1 int sampleCount; // Number of samples } CascadeBiquad_FilParam;r2#r3#}r4#(hUhj.#ubaubeubeubh)r5#}r6#(hUhj=hjOhhh}r7#(h]h]h]h]r8#U(memory-placement-of-instruction-and-datar9#ah]r:#hQauhMhhh]r;#(h)r<#}r=#(hX(Memory placement of Instruction and Datar>#hj5#hjOhhh}r?#(h]h]h]h]h]uhMhhh]r@#hX(Memory placement of Instruction and DatarA#rB#}rC#(hj>#hj<#ubaubj/)rD#}rE#(hXThe best performance of the DSP can be obtained by placing all the data and instructions in L2 SRAM. Please refer to the linker command files include in the src/common folder to see how the instructions and data can be place in DSP internal L2 memory.rF#hj5#hjOhj3h}rG#(h]h]h]h]h]uhMhhh]rH#hXThe best performance of the DSP can be obtained by placing all the data and instructions in L2 SRAM. Please refer to the linker command files include in the src/common folder to see how the instructions and data can be place in DSP internal L2 memory.rI#rJ#}rK#(hjF#hjD#ubaubj))rL#}rM#(hXIn application use cases where audio data needs to be place in onchip shared memory (OCMC or MSMC) and DDR memory, we recommend that users move data from external memory to L2 for processing using EDMA or enable DSP cache using CSL to optimize performance.hj5#hjOhj,h}rN#(h]h]h]h]h]uhNhhh]rO#j/)rP#}rQ#(hXIn application use cases where audio data needs to be place in onchip shared memory (OCMC or MSMC) and DDR memory, we recommend that users move data from external memory to L2 for processing using EDMA or enable DSP cache using CSL to optimize performance.rR#hjL#hjOhj3h}rS#(h]h]h]h]h]uhMh]rT#hXIn application use cases where audio data needs to be place in onchip shared memory (OCMC or MSMC) and DDR memory, we recommend that users move data from external memory to L2 for processing using EDMA or enable DSP cache using CSL to optimize performance.rU#rV#}rW#(hjR#hjP#ubaubaubeubh)rX#}rY#(hUhj=hjOhhh}rZ#(h]h]h]h]r[#Ucompiler-optimization-flagsr\#ah]r]#hauhMhhh]r^#(h)r_#}r`#(hXCompiler Optimization Flagsra#hjX#hjOhhh}rb#(h]h]h]h]h]uhMhhh]rc#hXCompiler Optimization Flagsrd#re#}rf#(hja#hj_#ubaubj/)rg#}rh#(hXNAll the projects in the Audio Benchmark starterkit are built using C6000 compiler with -o3 optimization that allows the source code to be compiled with highest compiler optimization settings. User can refer to the compiler Build settings in the Makefiles or go to Build Settings in CCS Project settings to modify the compiler options.ri#hjX#hjOhj3h}rj#(h]h]h]h]h]uhMhhh]rk#hXNAll the projects in the Audio Benchmark starterkit are built using C6000 compiler with -o3 optimization that allows the source code to be compiled with highest compiler optimization settings. User can refer to the compiler Build settings in the Makefiles or go to Build Settings in CCS Project settings to modify the compiler options.rl#rm#}rn#(hji#hjg#ubaubj)ro#}rp#(hUhjX#hjOhjh}rq#(h]h]h]h]h]uhMhhh]rr#j)rs#}rt#(hUjKhjo#hjOhhh}ru#(h]h]h]h]h]uhKhhh]ubaubj))rv#}rw#(hX=For more Details on recommended C6000 Compiler options refer `C6000_Compiler:_Recommended_Compiler_Options `__ - C6000 compiler documentation: `C6000 Compiler v8.x User Guide `__hjX#hNhj,h}rx#(h]h]h]h]h]uhNhhh]ry#(j/)rz#}r{#(hXFor more Details on recommended C6000 Compiler options refer `C6000_Compiler:_Recommended_Compiler_Options `__hjv#hjOhj3h}r|#(h]h]h]h]h]uhMh]r}#(hX=For more Details on recommended C6000 Compiler options refer r~#r#}r#(hX=For more Details on recommended C6000 Compiler options refer hjz#ubj)r#}r#(hX`C6000_Compiler:_Recommended_Compiler_Options `__h}r#(UnameX,C6000_Compiler:_Recommended_Compiler_OptionsjXThttp://processors.wiki.ti.com/index.php/C6000_Compiler:_Recommended_Compiler_Optionsh]h]h]h]h]uhjz#h]r#hX,C6000_Compiler:_Recommended_Compiler_Optionsr#r#}r#(hUhj#ubahjubeubjQ)r#}r#(hUh}r#(jVX-h]h]h]h]h]uhjv#h]r#jX)r#}r#(hXqC6000 compiler documentation: `C6000 Compiler v8.x User Guide `__h}r#(h]h]h]h]h]uhj#h]r#j/)r#}r#(hXqC6000 compiler documentation: `C6000 Compiler v8.x User Guide `__hj#hjOhj3h}r#(h]h]h]h]h]uhMh]r#(hXC6000 compiler documentation: r#r#}r#(hXC6000 compiler documentation: hj#ubj)r#}r#(hXS`C6000 Compiler v8.x User Guide `__h}r#(UnameXC6000 Compiler v8.x User GuidejX.http://www.ti.com/lit/ug/sprui04a/sprui04a.pdfh]h]h]h]h]uhj#h]r#hXC6000 Compiler v8.x User Guider#r#}r#(hUhj#ubahjubeubahj[ubahjTubeubeubh)r#}r#(hUhj=hjOhhh}r#(h]h]h]h]r#U soc-integration-and-optimizationr#ah]r#hauhMhhh]r#(h)r#}r#(hX SOC Integration and Optimizationr#hj#hjOhhh}r#(h]h]h]h]h]uhMhhh]r#hX SOC Integration and Optimizationr#r#}r#(hj#hj#ubaubh)r#}r#(hUhj#hjOhhh}r#(h]h]h]h]r#Uconfiguring-device-clocksr#ah]r#hauhMhhh]r#(h)r#}r#(hXConfiguring device clocksr#hj#hjOhhh}r#(h]h]h]h]h]uhMhhh]r#hXConfiguring device clocksr#r#}r#(hj#hj#ubaubj/)r#}r#(hXEvery SOC with TI DSP requires users to enable the DSP clocks by setting up the PLL and or enabling the DSP through Power Sleep Controller or Power and Control (PRCM) module. The way the clocks are set up differs depending on the environment setupr#hj#hjOhj3h}r#(h]h]h]h]h]uhMhhh]r#hXEvery SOC with TI DSP requires users to enable the DSP clocks by setting up the PLL and or enabling the DSP through Power Sleep Controller or Power and Control (PRCM) module. The way the clocks are set up differs depending on the environment setupr#r#}r#(hj#hj#ubaubjQ)r#}r#(hUhj#hjOhjTh}r#(jVX-h]h]h]h]h]uhMhhh]r#(jX)r#}r#(hX**Development environment with emulator:**\ In this case the SOC clocks are setup using GEL files which are added to the target configuration file. For audio benchmark starterkit, this done using GEL files setup explained in the Hardware Setup section hj#hjOhj[h}r#(h]h]h]h]h]uhNhhh]r#j/)r#}r#(hX**Development environment with emulator:**\ In this case the SOC clocks are setup using GEL files which are added to the target configuration file. For audio benchmark starterkit, this done using GEL files setup explained in the Hardware Setup sectionhj#hjOhj3h}r#(h]h]h]h]h]uhMh]r#(jW)r#}r#(hX***Development environment with emulator:**h}r#(h]h]h]h]h]uhj#h]r#hX&Development environment with emulator:r#r#}r#(hUhj#ubahj_ubhXIn this case the SOC clocks are setup using GEL files which are added to the target configuration file. For audio benchmark starterkit, this done using GEL files setup explained in the Hardware Setup sectionr#r#}r#(hX\ In this case the SOC clocks are setup using GEL files which are added to the target configuration file. For audio benchmark starterkit, this done using GEL files setup explained in the Hardware Setup sectionhj#ubeubaubjX)r#}r#(hXT**Application Boot from boot media**\ If you are booting application from a boot media like SD/MMC or flash device, the ROM bootloader or a secondary level bootloader performs the clock configuration. For audio starterkit, this initialization is done using board library which is linked to the secondary bootloader and the benchmark tests. hj#hjOhj[h}r#(h]h]h]h]h]uhNhhh]r#j/)r#}r#(hXS**Application Boot from boot media**\ If you are booting application from a boot media like SD/MMC or flash device, the ROM bootloader or a secondary level bootloader performs the clock configuration. For audio starterkit, this initialization is done using board library which is linked to the secondary bootloader and the benchmark tests.hj#hjOhj3h}r#(h]h]h]h]h]uhMh]r#(jW)r#}r#(hX$**Application Boot from boot media**h}r#(h]h]h]h]h]uhj#h]r#hX Application Boot from boot mediar#r#}r#(hUhj#ubahj_ubhX-If you are booting application from a boot media like SD/MMC or flash device, the ROM bootloader or a secondary level bootloader performs the clock configuration. For audio starterkit, this initialization is done using board library which is linked to the secondary bootloader and the benchmark tests.r#r#}r#(hX/\ If you are booting application from a boot media like SD/MMC or flash device, the ROM bootloader or a secondary level bootloader performs the clock configuration. For audio starterkit, this initialization is done using board library which is linked to the secondary bootloader and the benchmark tests.hj#ubeubaubeubj))r#}r#(hXIf the clocks are not configured the DSP will run at speed of the input clock rather than at the device speed grade. Hence if the clocks are not configured correctly the benchmarks will run much slower than anticipated but the cycle count will show the same.hj#hjOhj,h}r#(h]h]h]h]h]uhNhhh]r#j/)r#}r#(hXIf the clocks are not configured the DSP will run at speed of the input clock rather than at the device speed grade. Hence if the clocks are not configured correctly the benchmarks will run much slower than anticipated but the cycle count will show the same.r#hj#hjOhj3h}r#(h]h]h]h]h]uhMh]r#hXIf the clocks are not configured the DSP will run at speed of the input clock rather than at the device speed grade. Hence if the clocks are not configured correctly the benchmarks will run much slower than anticipated but the cycle count will show the same.r#r#}r#(hj#hj#ubaubaubeubeubh)r#}r#(hUhj=hjOhhh}r#(h]h]h]h]r#U*benchmarking-using-dsp-tsch-tscl-registersr#ah]r#hauhMhhh]r#(h)r#}r$(hX*Benchmarking using DSP TSCH/TSCL registersr$hj#hjOhhh}r$(h]h]h]h]h]uhMhhh]r$hX*Benchmarking using DSP TSCH/TSCL registersr$r$}r$(hj$hj#ubaubj/)r$}r$(hX:For C66x+ and C674x members of the C6000 family, there is a pair of registers, TSCL and TSCH, which together provide a 64-bit clock value. You can create your own clock function to take advantage of these registers. Simply add this function to your program and it will override the clock function from the library.r $hj#hjOhj3h}r $(h]h]h]h]h]uhMhhh]r $hX:For C66x+ and C674x members of the C6000 family, there is a pair of registers, TSCL and TSCH, which together provide a 64-bit clock value. You can create your own clock function to take advantage of these registers. Simply add this function to your program and it will override the clock function from the library.r $r $}r$(hj $hj$ubaubj/)r$}r$(hXvThe Bench mark test application, use the following functions to capture cycle count using the TSCH and TSCL regsiters.r$hj#hjOhj3h}r$(h]h]h]h]h]uhMhhh]r$hXvThe Bench mark test application, use the following functions to capture cycle count using the TSCH and TSCL regsiters.r$r$}r$(hj$hj$ubaubj)r$}r$(hX/* ---------------------------------------------------------------- */ /* Initialize timer for clock */ TSCL= 0,TSCH=0; /* Compute the overhead of calling _itoll(TSCH, TSCL) twice to get timing info */ /* ---------------------------------------------------------------- */ t_start = _itoll(TSCH, TSCL); t_stop = _itoll(TSCH, TSCL); t_overhead = t_stop - t_start; t_start = _itoll(TSCH, TSCL); t_stop = _itoll(TSCH, TSCL); t_measured = (t_stop - t_start) - t_overhead;hj#hjOhjh}r$(jGjHXcjjh]h]h]jI}h]h]uhMhhh]r$hX/* ---------------------------------------------------------------- */ /* Initialize timer for clock */ TSCL= 0,TSCH=0; /* Compute the overhead of calling _itoll(TSCH, TSCL) twice to get timing info */ /* ---------------------------------------------------------------- */ t_start = _itoll(TSCH, TSCL); t_stop = _itoll(TSCH, TSCL); t_overhead = t_stop - t_start; t_start = _itoll(TSCH, TSCL); t_stop = _itoll(TSCH, TSCL); t_measured = (t_stop - t_start) - t_overhead;r$r$}r$(hUhj$ubaubeubh)r$}r$(hUhj=hjOhhh}r $(h]h]h]h]r!$Ubenchmark-loggingr"$ah]r#$hauhMhhh]r$$(h)r%$}r&$(hXBenchmark loggingr'$hj$hjOhhh}r($(h]h]h]h]h]uhMhhh]r)$hXBenchmark loggingr*$r+$}r,$(hj'$hj%$ubaubj/)r-$}r.$(hXqThe Audio benchmarks demonstrates two ways to log benchmark numbers. One approach that can be used when code is loaded and run from Code composer studio is to use standard printf messages from the standard IO RTS libraries and the other approach is to use UART based logging that can send the benchmark logs to serial console on the host at the baud rate of 115.2 kbps.r/$hj$hjOhj3h}r0$(h]h]h]h]h]uhMhhh]r1$hXqThe Audio benchmarks demonstrates two ways to log benchmark numbers. One approach that can be used when code is loaded and run from Code composer studio is to use standard printf messages from the standard IO RTS libraries and the other approach is to use UART based logging that can send the benchmark logs to serial console on the host at the baud rate of 115.2 kbps.r2$r3$}r4$(hj/$hj-$ubaubj/)r5$}r6$(hX'All the benchmark test application include a file Benchmark_log.h and Benchmark_log.c, that are used to log messages based on the definition of macro **IO_CONSOLE**. If IO_CONSOLE is defined the output will be directed to CCS console. If it is not defined, the logs are sent to the UART console.hj$hjOhj3h}r7$(h]h]h]h]h]uhM hhh]r8$(hXAll the benchmark test application include a file Benchmark_log.h and Benchmark_log.c, that are used to log messages based on the definition of macro r9$r:$}r;$(hXAll the benchmark test application include a file Benchmark_log.h and Benchmark_log.c, that are used to log messages based on the definition of macro hj5$ubjW)r<$}r=$(hX**IO_CONSOLE**h}r>$(h]h]h]h]h]uhj5$h]r?$hX IO_CONSOLEr@$rA$}rB$(hUhj<$ubahj_ubhX. If IO_CONSOLE is defined the output will be directed to CCS console. If it is not defined, the logs are sent to the UART console.rC$rD$}rE$(hX. If IO_CONSOLE is defined the output will be directed to CCS console. If it is not defined, the logs are sent to the UART console.hj5$ubeubj/)rF$}rG$(hXMakefiles and scripts that build binaries to boot from SD card will not have IO_CONSOLE defined hence the benchmark logs will be directed to the UART serial console. In the CCS projects, we define the IO_CONSOLE macro so that the output can be observed on the CCS console.rH$hj$hjOhj3h}rI$(h]h]h]h]h]uhM&hhh]rJ$hXMakefiles and scripts that build binaries to boot from SD card will not have IO_CONSOLE defined hence the benchmark logs will be directed to the UART serial console. In the CCS projects, we define the IO_CONSOLE macro so that the output can be observed on the CCS console.rK$rL$}rM$(hjH$hjF$ubaubeubh)rN$}rO$(hUhj=hjOhhh}rP$(h]h]h]h]rQ$U6cache-configuration-for-code-data-sections-in-sram-ddrrR$ah]rS$hwauhM,hhh]rT$(h)rU$}rV$(hX6Cache configuration for Code/data sections in SRAM/DDRrW$hjN$hjOhhh}rX$(h]h]h]h]h]uhM,hhh]rY$hX6Cache configuration for Code/data sections in SRAM/DDRrZ$r[$}r\$(hjW$hjU$ubaubj/)r]$}r^$(hXThe best performance of the DSP can be obtained by placing all the data and instructions in L2 SRAM. If developer application use cases places audio data in onchip shared memory (OCMC or MSMC) and DDR memory then the user will need to enable L1 and L2 cache using CSL API.r_$hjN$hjOhj3h}r`$(h]h]h]h]h]uhM.hhh]ra$hXThe best performance of the DSP can be obtained by placing all the data and instructions in L2 SRAM. If developer application use cases places audio data in onchip shared memory (OCMC or MSMC) and DDR memory then the user will need to enable L1 and L2 cache using CSL API.rb$rc$}rd$(hj_$hj]$ubaubj/)re$}rf$(hXTo enable and utilize cache in the application, please refer to the csl_cacheAux.h file in the pdk__x_x_x/packages/ti/csl folder in the SDK and link the CSL library for the soc into the application code.rg$hjN$hjOhj3h}rh$(h]h]h]h]h]uhM3hhh]ri$hXTo enable and utilize cache in the application, please refer to the csl_cacheAux.h file in the pdk__x_x_x/packages/ti/csl folder in the SDK and link the CSL library for the soc into the application code.rj$rk$}rl$(hjg$hje$ubaubeubh)rm$}rn$(hUhj=hjOhhh}ro$(h]h]h]h]rp$Ubenchmark-resultsrq$ah]rr$hauhM8hhh]rs$(h)rt$}ru$(hXBenchmark resultsrv$hjm$hjOhhh}rw$(h]h]h]h]h]uhM8hhh]rx$hXBenchmark resultsry$rz$}r{$(hjv$hjt$ubaubj:)r|$}r}$(hUhjm$hjOhj=h}r~$(h]h]h]h]h]uhNhhh]r$j@)r$}r$(hUh}r$(h]h]h]h]h]UcolsKuhj|$h]r$(jE)r$}r$(hUh}r$(h]h]h]h]h]UcolwidthKuhj$h]hjIubjE)r$}r$(hUh}r$(h]h]h]h]h]UcolwidthKuhj$h]hjIubjE)r$}r$(hUh}r$(h]h]h]h]h]UcolwidthKuhj$h]hjIubjS)r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$jX)r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$(j])r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$j/)r$}r$(hXAlgorithm\DSP Architecturehj$hjOhj3h}r$(h]h]h]h]h]uhM;h]r$hXAlgorithmDSP Architecturer$r$}r$(hXAlgorithm\DSP Architecturehj$ubaubahjjubj])r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$j/)r$}r$(hXC66x DSPr$hj$hjOhj3h}r$(h]h]h]h]h]uhM;h]r$hXC66x DSPr$r$}r$(hj$hj$ubaubahjjubj])r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$j/)r$}r$(hX C674x DSPr$hj$hjOhj3h}r$(h]h]h]h]h]uhM;h]r$hX C674x DSPr$r$}r$(hj$hj$ubaubahjjubehjubahjubj)r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$(jX)r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$(j])r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$j/)r$}r$(hX"Single Precision FFT (256 samples)r$hj$hjOhj3h}r$(h]h]h]h]h]uhM>h]r$hX"Single Precision FFT (256 samples)r$r$}r$(hj$hj$ubaubahjjubj])r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$j/)r$}r$(hX 1808 cyclesr$hj$hjOhj3h}r$(h]h]h]h]h]uhM>h]r$hX 1808 cyclesr$r$}r$(hj$hj$ubaubahjjubj])r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$j/)r$}r$(hX 2314 cyclesr$hj$hjOhj3h}r$(h]h]h]h]h]uhM>h]r$hX 2314 cyclesr$r$}r$(hj$hj$ubaubahjjubehjubjX)r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$(j])r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$j/)r$}r$(hX3Single Precision FIR (128 samples, 16 coefficients)r$hj$hjOhj3h}r$(h]h]h]h]h]uhMAh]r$hX3Single Precision FIR (128 samples, 16 coefficients)r$r$}r$(hj$hj$ubaubahjjubj])r$}r$(hUh}r$(h]h]h]h]h]uhj$h]r$j/)r$}r$(hX 2652 cyclesr$hj$hjOhj3h}r$(h]h]h]h]h]uhMAh]r$hX 2652 cyclesr$r$}r$(hj$hj$ubaubahjjubj])r%}r%(hUh}r%(h]h]h]h]h]uhj$h]r%j/)r%}r%(hX 4465 cyclesr%hj%hjOhj3h}r%(h]h]h]h]h]uhMAh]r%hX 4465 cyclesr %r %}r %(hj%hj%ubaubahjjubehjubjX)r %}r %(hUh}r%(h]h]h]h]h]uhj$h]r%(j])r%}r%(hUh}r%(h]h]h]h]h]uhj %h]r%j/)r%}r%(hXLSingle Precision IIR (1k samples from 2 channel with 3 stage cascade biquad)r%hj%hjOhj3h}r%(h]h]h]h]h]uhMEh]r%hXLSingle Precision IIR (1k samples from 2 channel with 3 stage cascade biquad)r%r%}r%(hj%hj%ubaubahjjubj])r%}r%(hUh}r%(h]h]h]h]h]uhj %h]r%j/)r %}r!%(hX 8258 cyclesr"%hj%hjOhj3h}r#%(h]h]h]h]h]uhMEh]r$%hX 8258 cyclesr%%r&%}r'%(hj"%hj %ubaubahjjubj])r(%}r)%(hUh}r*%(h]h]h]h]h]uhj %h]r+%j/)r,%}r-%(hX 12381 cyclesr.%hj(%hjOhj3h}r/%(h]h]h]h]h]uhMEh]r0%hX 12381 cyclesr1%r2%}r3%(hj.%hj,%ubaubahjjubehjubehjubehjubaubj))r4%}r5%(hX- All code and data for the benchmark tests is placed in L2 Memory. - C6000 compiler version used was CGTools v8.1.3 - Bench marks were obtained from C66x DSP on K2G and C674x DSP on OMAPL138 LCDK - FFT and FIR benchmarks were obtained using the DSPLIB functions.hjm$hNhj,h}r6%(h]h]h]h]h]uhNhhh]r7%jQ)r8%}r9%(hUh}r:%(jVX-h]h]h]h]h]uhj4%h]r;%(jX)r<%}r=%(hXAAll code and data for the benchmark tests is placed in L2 Memory.r>%h}r?%(h]h]h]h]h]uhj8%h]r@%j/)rA%}rB%(hj>%hj<%hjOhj3h}rC%(h]h]h]h]h]uhMMh]rD%hXAAll code and data for the benchmark tests is placed in L2 Memory.rE%rF%}rG%(hj>%hjA%ubaubahj[ubjX)rH%}rI%(hX.C6000 compiler version used was CGTools v8.1.3rJ%h}rK%(h]h]h]h]h]uhj8%h]rL%j/)rM%}rN%(hjJ%hjH%hjOhj3h}rO%(h]h]h]h]h]uhMNh]rP%hX.C6000 compiler version used was CGTools v8.1.3rQ%rR%}rS%(hjJ%hjM%ubaubahj[ubjX)rT%}rU%(hXMBench marks were obtained from C66x DSP on K2G and C674x DSP on OMAPL138 LCDKh}rV%(h]h]h]h]h]uhj8%h]rW%j/)rX%}rY%(hXMBench marks were obtained from C66x DSP on K2G and C674x DSP on OMAPL138 LCDKrZ%hjT%hjOhj3h}r[%(h]h]h]h]h]uhMOh]r\%hXMBench marks were obtained from C66x DSP on K2G and C674x DSP on OMAPL138 LCDKr]%r^%}r_%(hjZ%hjX%ubaubahj[ubjX)r`%}ra%(hX@FFT and FIR benchmarks were obtained using the DSPLIB functions.rb%h}rc%(h]h]h]h]h]uhj8%h]rd%j/)re%}rf%(hjb%hj`%hjOhj3h}rg%(h]h]h]h]h]uhMQh]rh%hX@FFT and FIR benchmarks were obtained using the DSPLIB functions.ri%rj%}rk%(hjb%hje%ubaubahj[ubehjTubaubeubh)rl%}rm%(hUhj=hjOhhh}rn%(h]h]h]h]ro%Usupportrp%ah]rq%hdauhMThhh]rr%(h)rs%}rt%(hXSupportru%hjl%hjOhhh}rv%(h]h]h]h]h]uhMThhh]rw%hXSupportrx%ry%}rz%(hju%hjs%ubaubj/)r{%}r|%(hX\For questions, feature requests and bug reports, please use the TI E2E Forum provided below:r}%hjl%hjOhj3h}r~%(h]h]h]h]h]uhMVhhh]r%hX\For questions, feature requests and bug reports, please use the TI E2E Forum provided below:r%r%}r%(hj}%hj{%ubaubjQ)r%}r%(hUhjl%hjOhjTh}r%(jVX-h]h]h]h]h]uhMYhhh]r%jX)r%}r%(hXC`E2E Processor Support `__ hj%hjOhj[h}r%(h]h]h]h]h]uhNhhh]r%j/)r%}r%(hXB`E2E Processor Support `__r%hj%hjOhj3h}r%(h]h]h]h]h]uhMYh]r%j)r%}r%(hj%h}r%(UnameXE2E Processor SupportjX&https://e2e.ti.com/support/processors/h]h]h]h]h]uhj%h]r%hXE2E Processor Supportr%r%}r%(hUhj%ubahjubaubaubaubeubh)r%}r%(hUhj=hjOhhh}r%(h]h]h]h]r%Uadditional-resourcesr%ah]r%h[auhM]hhh]r%(h)r%}r%(hXAdditional resourcesr%hj%hjOhhh}r%(h]h]h]h]h]uhM]hhh]r%hXAdditional resourcesr%r%}r%(hj%hj%ubaubj/)r%}r%(hX**White papers:**r%hj%hjOhj3h}r%(h]h]h]h]h]uhM_hhh]r%jW)r%}r%(hj%h}r%(h]h]h]h]h]uhj%h]r%hX White papers:r%r%}r%(hUhj%ubahj_ubaubjQ)r%}r%(hUhj%hjOhjTh}r%(jVX-h]h]h]h]h]uhMahhh]r%(jX)r%}r%(hX_`Introduction to TMS320C6000 DSP Optimization `__hj%hjOhj[h}r%(h]h]h]h]h]uhNhhh]r%j/)r%}r%(hX_`Introduction to TMS320C6000 DSP Optimization `__r%hj%hjOhj3h}r%(h]h]h]h]h]uhMah]r%j)r%}r%(hj%h}r%(UnameX,Introduction to TMS320C6000 DSP OptimizationjX,http://www.ti.com/lit/an/sprabf2/sprabf2.pdfh]h]h]h]h]uhj%h]r%hX,Introduction to TMS320C6000 DSP Optimizationr%r%}r%(hUhj%ubahjubaubaubjX)r%}r%(hXF`TI DSP Benchmarking `__hj%hjOhj[h}r%(h]h]h]h]h]uhNhhh]r%j/)r%}r%(hXF`TI DSP Benchmarking `__r%hj%hjOhj3h}r%(h]h]h]h]h]uhMch]r%j)r%}r%(hj%h}r%(UnameXTI DSP BenchmarkingjX,http://www.ti.com/lit/an/sprac13/sprac13.pdfh]h]h]h]h]uhj%h]r%hXTI DSP Benchmarkingr%r%}r%(hUhj%ubahjubaubaubjX)r%}r%(hXK`Optimizing Loops on C66x `__hj%hjOhj[h}r%(h]h]h]h]h]uhNhhh]r%j/)r%}r%(hXK`Optimizing Loops on C66x `__r%hj%hjOhj3h}r%(h]h]h]h]h]uhMeh]r%j)r%}r%(hj%h}r%(UnameXOptimizing Loops on C66xjX,http://www.ti.com/lit/an/sprabg7/sprabg7.pdfh]h]h]h]h]uhj%h]r%hXOptimizing Loops on C66xr%r%}r%(hUhj%ubahjubaubaubjX)r%}r%(hX`TI’s new TMS320C66x fixed and floating-point DSP core conquers the ‘Need for Speed’ `__hj%hjOhj[h}r%(h]h]h]h]h]uhNhhh]r%j/)r%}r%(hX`TI’s new TMS320C66x fixed and floating-point DSP core conquers the ‘Need for Speed’ `__r%hj%hjOhj3h}r%(h]h]h]h]h]uhMgh]r%j)r%}r%(hj%h}r%(UnameXYTI’s new TMS320C66x fixed and floating-point DSP core conquers the ‘Need for Speed’jX,http://www.ti.com/lit/wp/spry147/spry147.pdfh]h]h]h]h]uhj%h]r%hXYTI’s new TMS320C66x fixed and floating-point DSP core conquers the ‘Need for Speed’r%r%}r%(hUhj%ubahjubaubaubjX)r%}r%(hX`Efficient fixed- and floating-point code execution on the TMS320C674x core delivers faster code development and reduces system cost with improved performance `__ hj%hjOhj[h}r%(h]h]h]h]h]uhNhhh]r%j/)r%}r%(hX`Efficient fixed- and floating-point code execution on the TMS320C674x core delivers faster code development and reduces system cost with improved performance `__r%hj%hjOhj3h}r%(h]h]h]h]h]uhMih]r%j)r%}r&(hj%h}r&(UnameXEfficient fixed- and floating-point code execution on the TMS320C674x core delivers faster code development and reduces system cost with improved performancejX,http://www.ti.com/lit/wp/spry127/spry127.pdfh]h]h]h]h]uhj%h]r&hXEfficient fixed- and floating-point code execution on the TMS320C674x core delivers faster code development and reduces system cost with improved performancer&r&}r&(hUhj%ubahjubaubaubeubeubeubhjOhhh}r&(h]r&X introductionr&ah]h]h]r &Uid22r &ah]uhKhhh]r &(h)r &}r &(hX Introductionr&hj;hjOhhh}r&(h]h]h]h]h]uhKhhh]r&hX Introductionr&r&}r&(hj&hj &ubaubj/)r&}r&(hXThe Audio Benchmark Starterkit is intended to provide an easy and quick way to benchmark key audio functions on C66x and C674x DSP devices. This package is intended for users who are new to the TI DSP development environment and provides an easy path to compare core audio benchmarks to other implementations. For the purposes of benchmarking we have selected the following signal processing functionsr&hj;hjOhj3h}r&(h]h]h]h]h]uhKhhh]r&hXThe Audio Benchmark Starterkit is intended to provide an easy and quick way to benchmark key audio functions on C66x and C674x DSP devices. This package is intended for users who are new to the TI DSP development environment and provides an easy path to compare core audio benchmarks to other implementations. For the purposes of benchmarking we have selected the following signal processing functionsr&r&}r&(hj&hj&ubaubjQ)r&}r&(hUhj;hjOhjTh}r&(jVX-h]h]h]h]h]uhK hhh]r&(jX)r &}r!&(hX$Complex Fast Fourier transform (FFT)r"&hj&hjOhj[h}r#&(h]h]h]h]h]uhNhhh]r$&j/)r%&}r&&(hj"&hj &hjOhj3h}r'&(h]h]h]h]h]uhK h]r(&hX$Complex Fast Fourier transform (FFT)r)&r*&}r+&(hj"&hj%&ubaubaubjX)r,&}r-&(hX8Real Block FIR filters with 128 samples, 16 coefficientsr.&hj&hjOhj[h}r/&(h]h]h]h]h]uhNhhh]r0&j/)r1&}r2&(hj.&hj,&hjOhj3h}r3&(h]h]h]h]h]uhKh]r4&hX8Real Block FIR filters with 128 samples, 16 coefficientsr5&r6&}r7&(hj.&hj1&ubaubaubjX)r8&}r9&(hXBCascaded Biquad (2 channels, 3 stages) IIR filter for 128 Samples hj&hjOhj[h}r:&(h]h]h]h]h]uhNhhh]r;&j/)r<&}r=&(hXACascaded Biquad (2 channels, 3 stages) IIR filter for 128 Samplesr>&hj8&hjOhj3h}r?&(h]h]h]h]h]uhKh]r@&hXACascaded Biquad (2 channels, 3 stages) IIR filter for 128 SamplesrA&rB&}rC&(hj>&hj<&ubaubaubeubj/)rD&}rE&(hXThe package is also a great way to get familiar with benchmarking functions on TI DSP with or without TI`s Code Composer Studio environment. It also intends to provide guidance on the compiler options and code/data memory placement that allows developers to obtain optimal performance on TI DSP architecture. The package also demonstrates use of signal processing functions from TI C6000 DSPLIB which contains several kernels optimized for TI DSP architectures.rF&hj;hjOhj3h}rG&(h]h]h]h]h]uhKhhh]rH&hXThe package is also a great way to get familiar with benchmarking functions on TI DSP with or without TI`s Code Composer Studio environment. It also intends to provide guidance on the compiler options and code/data memory placement that allows developers to obtain optimal performance on TI DSP architecture. The package also demonstrates use of signal processing functions from TI C6000 DSPLIB which contains several kernels optimized for TI DSP architectures.rI&rJ&}rK&(hjF&hjD&ubaubeubhjOhj>h}rL&(h]UlevelKh]h]rM&j &aUsourcejOh]h]UlineKUtypejAuhKhhh]rN&j/)rO&}rP&(hX/Duplicate implicit target name: "introduction".h}rQ&(h]h]h]h]h]uhj9h]rR&hX/Duplicate implicit target name: "introduction".rS&rT&}rU&(hUhjO&ubahj3ubaubj)rV&}rW&(hUhj8hjOhj>h}rX&(h]UlevelKh]h]UsourcejOh]h]UlineKUtypeUWARNINGrY&uhKhhh]rZ&j/)r[&}r\&(hX%Line block ends without a blank line.h}r]&(h]h]h]h]h]uhjV&h]r^&hX%Line block ends without a blank line.r_&r`&}ra&(hUhj[&ubahj3ubaubj)rb&}rc&(hUhj8hjOhj>h}rd&(h]UlevelKh]h]UsourcejOh]h]UlineKUtypejY&uhKhhh]re&j/)rf&}rg&(hX%Line block ends without a blank line.h}rh&(h]h]h]h]h]uhjb&h]ri&hX%Line block ends without a blank line.rj&rk&}rl&(hUhjf&ubahj3ubaubj)rm&}rn&(hUhj8hjOhj>h}ro&(h]UlevelKh]h]UsourcejOh]h]UlineKUtypejfuhKhhh]rp&(j/)rq&}rr&(hX<Content block expected for the "note" directive; none found.h}rs&(h]h]h]h]h]uhjm&h]rt&hX<Content block expected for the "note" directive; none found.ru&rv&}rw&(hUhjq&ubahj3ubj)rx&}ry&(hX .. note::rz&h}r{&(jjh]h]h]h]h]uhjm&h]r|&hX .. note::r}&r~&}r&(hUhjx&ubahjubeubj)r&}r&(hUhj8hjOhj>h}r&(h]UlevelKh]h]UsourcejOh]h]UlineKUtypejY&uhKhhh]r&j/)r&}r&(hX?Explicit markup ends without a blank line; unexpected unindent.h}r&(h]h]h]h]h]uhj&h]r&hX?Explicit markup ends without a blank line; unexpected unindent.r&r&}r&(hUhj&ubahj3ubaubj)r&}r&(hUhjhjOhj>h}r&(h]UlevelKh]h]UsourcejOh]h]UlineMUtypejY&uhMhhh]r&j/)r&}r&(hX%Line block ends without a blank line.h}r&(h]h]h]h]h]uhj&h]r&hX%Line block ends without a blank line.r&r&}r&(hUhj&ubahj3ubaubj)r&}r&(hUhjhjOhj>h}r&(h]UlevelKh]h]UsourcejOh]h]UlineM)UtypejY&uhM(hhh]r&j/)r&}r&(hX%Line block ends without a blank line.h}r&(h]h]h]h]h]uhj&h]r&hX%Line block ends without a blank line.r&r&}r&(hUhj&ubahj3ubaubj)r&}r&(hUhjhjOhj>h}r&(h]UlevelKh]h]UsourcejOh]h]UlineM2UtypejfuhM4hhh]r&(j/)r&}r&(hXMalformed table.h}r&(h]h]h]h]h]uhj&h]r&hXMalformed table.r&r&}r&(hUhj&ubahj3ubj)r&}r&(hX+--------------------------------+------------------------------+ | **Output in CCS IO Console :** | **Output in UART Console :** | +================================+==============================+h}r&(jjh]h]h]h]h]uhj&h]r&hX+--------------------------------+------------------------------+ | **Output in CCS IO Console :** | **Output in UART Console :** | +================================+==============================+r&r&}r&(hUhj&ubahjubeubj)r&}r&(hUhjhjOhj>h}r&(h]UlevelKh]h]UsourcejOh]h]UlineM5UtypejY&uhM4hhh]r&j/)r&}r&(hX Blank line required after table.h}r&(h]h]h]h]h]uhj&h]r&hX Blank line required after table.r&r&}r&(hUhj&ubahj3ubaubj)r&}r&(hUhjhjOhj>h}r&(h]UlevelKh]h]UsourcejOh]h]UlineM6UtypejY&uhM5hhh]r&j/)r&}r&(hX?Explicit markup ends without a blank line; unexpected unindent.h}r&(h]h]h]h]h]uhj&h]r&hX?Explicit markup ends without a blank line; unexpected unindent.r&r&}r&(hUhj&ubahj3ubaubj)r&}r&(hUhj%hXainternal padding after source/rtos/Examples_and_Demonstrations/Audio_Benchmark_Starterkit.rst.incr&hj>h}r&(h]UlevelKh]h]UsourcejOh]h]UlineMnUtypejfuhMphhh]r&(j/)r&}r&(hX;Content block expected for the "raw" directive; none found.h}r&(h]h]h]h]h]uhj&h]r&hX;Content block expected for the "raw" directive; none found.r&r&}r&(hUhj&ubahj3ubj)r&}r&(hX.. raw:: html h}r&(jjh]h]h]h]h]uhj&h]r&hX.. raw:: html r&r&}r&(hUhj&ubahjubeubj)r&}r&(hUhh)r&}r&(hUjKhh)r&}r&(hUhhhhhhh}r&(h]h]h]h]r&Uaudio-pre-processing-demor&ah]r&hauhKhhh]r&(h)r&}r&(hXAudio Pre-Processing Demor&hj&hhhhh}r&(h]h]h]h]h]uhKhhh]r&hXAudio Pre-Processing Demor&r&}r&(hj&hj&ubaubj )r&}r&(hXOhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Audio_Pre-Processinghj&hj XDsource/rtos/Examples_and_Demonstrations/Audio_Pre_Processing.rst.incr&r&}r&bhjh}r&(jjh]h]h]h]h]uhKhhh]r&hXOhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Audio_Pre-Processingr&r&}r&(hUhj&ubaubj&h)r&}r&(hUjKhj&hj&hhh}r&(h]r&X requirementsr&ah]h]h]r&Uid24r&ah]uhK.hhh]r'(h)r'}r'(hX Requirementsr'hj&hj&hhh}r'(h]h]h]h]h]uhK.hhh]r'hX Requirementsr'r'}r'(hj'hj'ubaubj/)r '}r '(hX?The following materials are required to run this demonstration:r 'hj&hj&hj3h}r '(h]h]h]h]h]uhK0hhh]r 'hX?The following materials are required to run this demonstration:r'r'}r'(hj 'hj 'ubaubj/)r'}r'(hXHardwarer'hj&hj&hj3h}r'(h]h]h]h]h]uhK2hhh]r'hXHardwarer'r'}r'(hj'hj'ubaubjQ)r'}r'(hUhj&hj&hjTh}r'(jVX-h]h]h]h]h]uhK4hhh]r'(jX)r'}r'(hXTI EVMs (see list above)r'hj'hj&hj[h}r '(h]h]h]h]h]uhNhhh]r!'j/)r"'}r#'(hj'hj'hj&hj3h}r$'(h]h]h]h]h]uhK4h]r%'hXTI EVMs (see list above)r&'r''}r('(hj'hj"'ubaubaubjX)r)'}r*'(hX7CMB for K2G and OMAP-L137, if using circular microphoner+'hj'hj&hj[h}r,'(h]h]h]h]h]uhNhhh]r-'j/)r.'}r/'(hj+'hj)'hj&hj3h}r0'(h]h]h]h]h]uhK5h]r1'hX7CMB for K2G and OMAP-L137, if using circular microphoner2'r3'}r4'(hj+'hj.'ubaubaubjX)r5'}r6'(hX-Blackhawk USB560 JTAG Emulator (BH-USB-560m) hj'hj&hj[h}r7'(h]h]h]h]h]uhNhhh]r8'j/)r9'}r:'(hX,Blackhawk USB560 JTAG Emulator (BH-USB-560m)r;'hj5'hj&hj3h}r<'(h]h]h]h]h]uhK6h]r='hX,Blackhawk USB560 JTAG Emulator (BH-USB-560m)r>'r?'}r@'(hj;'hj9'ubaubaubeubj/)rA'}rB'(hXSoftwarerC'hj&hj&hj3h}rD'(h]h]h]h]h]uhK8hhh]rE'hXSoftwarerF'rG'}rH'(hjC'hjA'ubaubjQ)rI'}rJ'(hUhj&hj&hjTh}rK'(jVX-h]h]h]h]h]uhK:hhh]rL'(jX)rM'}rN'(hX#Processor-SDK RTOS (4.0 or greater)rO'hjI'hj&hj[h}rP'(h]h]h]h]h]uhNhhh]rQ'j/)rR'}rS'(hjO'hjM'hj&hj3h}rT'(h]h]h]h]h]uhK:h]rU'hX#Processor-SDK RTOS (4.0 or greater)rV'rW'}rX'(hjO'hjR'ubaubaubjX)rY'}rZ'(hXCode Composer Studior['hjI'hj&hj[h}r\'(h]h]h]h]h]uhNhhh]r]'j/)r^'}r_'(hj['hjY'hj&hj3h}r`'(h]h]h]h]h]uhK;h]ra'hXCode Composer Studiorb'rc'}rd'(hj['hj^'ubaubaubjX)re'}rf'(hX7AER 17.0.0.0 (C64P) (http://www.ti.com/tool/telecomlib)rg'hjI'hj&hj[h}rh'(h]h]h]h]h]uhNhhh]ri'j/)rj'}rk'(hjg'hje'hj&hj3h}rl'(h]h]h]h]h]uhK((hXDWhen woke up, the main thread will perform the BF, ASNR, MSS and DRCr?(hj(hj&hj[h}r@((h]h]h]h]h]uhNhhh]rA(j/)rB(}rC((hj?(hj=(hj&hj3h}rD((h]h]h]h]h]uhK^h]rE(hXDWhen woke up, the main thread will perform the BF, ASNR, MSS and DRCrF(rG(}rH((hj?(hjB(ubaubaubjX)rI(}rJ((hXLThe main thread will also output the final processing audio frame to the DDRhj(hj&hj[h}rK((h]h]h]h]h]uhNhhh]rL(j/)rM(}rN((hXLThe main thread will also output the final processing audio frame to the DDRrO(hjI(hj&hj3h}rP((h]h]h]h]h]uhK_h]rQ(hXLThe main thread will also output the final processing audio frame to the DDRrR(rS(}rT((hjO(hjM(ubaubaubjX)rU(}rV((hXqAfter completed the audio frame processing, the main thread will wait on semaphore for next audio frames to come hj(hj&hj[h}rW((h]h]h]h]h]uhNhhh]rX(j/)rY(}rZ((hXpAfter completed the audio frame processing, the main thread will wait on semaphore for next audio frames to comer[(hjU(hj&hj3h}r\((h]h]h]h]h]uhKah]r](hXpAfter completed the audio frame processing, the main thread will wait on semaphore for next audio frames to comer^(r_(}r`((hj[(hjY(ubaubaubeubj)ra(}rb((hUhj'hj&hjh}rc((h]h]h]h]h]uhKdhhh]rd(j)re(}rf((hUjKhja(hj&hhh}rg((h]h]h]h]h]uhKhhh]ubaubeubeubh)rh(}ri((hUhj&hj&hhh}rj((h]h]h]h]rk(Ufile-based-demorl(ah]rm(hMauhKghhh]rn((h)ro(}rp((hXFile Based Demorq(hjh(hj&hhh}rr((h]h]h]h]h]uhKghhh]rs(hXFile Based Demort(ru(}rv((hjq(hjo(ubaubh)rw(}rx((hUjKhjh(hj&hhh}ry((h]rz(Xhow to build the demor{(ah]h]h]r|(Uid27r}(ah]uhKjhhh]r~((h)r(}r((hXHow to Build the Demor(hjw(hj&hhh}r((h]h]h]h]h]uhKjhhh]r(hXHow to Build the Demor(r(}r((hj(hj(ubaubj))r(}r((hXIn order to make the following build procedure to work, AER and VOLIB have to be installed at the same location as the Processor SDK RTOS and make sure the AER 17.0.0.0 (C64P) is installed at aer_c64Px_obj_17_0_0_0hjw(hj&hj,h}r((h]h]h]h]h]uhNhhh]r(j/)r(}r((hXIn order to make the following build procedure to work, AER and VOLIB have to be installed at the same location as the Processor SDK RTOS and make sure the AER 17.0.0.0 (C64P) is installed at aer_c64Px_obj_17_0_0_0r(hj(hj&hj3h}r((h]h]h]h]h]uhKmh]r(hXIn order to make the following build procedure to work, AER and VOLIB have to be installed at the same location as the Processor SDK RTOS and make sure the AER 17.0.0.0 (C64P) is installed at aer_c64Px_obj_17_0_0_0r(r(}r((hj(hj(ubaubaubh)r(}r((hUjKhjw(hj&hhh}r((h]r(j(ah]h]h]r(Uid28r(ah]uhKshhh]r((h)r(}r((hX AM572x GP EVMr(hj(hj&hhh}r((h]h]h]h]h]uhKshhh]r(hX AM572x GP EVMr(r(}r((hj(hj(ubaubj/)r(}r((hX**For Linux:**r(hj(hj&hj3h}r((h]h]h]h]h]uhKuhhh]r(jW)r(}r((hj(h}r((h]h]h]h]h]uhj(h]r(hX For Linux:r(r(}r((hUhj(ubahj_ubaubjQ)r(}r((hUhj(hj&hjTh}r((jVX-h]h]h]h]h]uhKwhhh]r(jX)r(}r((hXRUnder processor_sdk_rtos_am57xx_4_xx_xx_xx directory, run the following commands: hj(hj&hj[h}r((h]h]h]h]h]uhNhhh]r(j/)r(}r((hXQUnder processor_sdk_rtos_am57xx_4_xx_xx_xx directory, run the following commands:r(hj(hj&hj3h}r((h]h]h]h]h]uhKwh]r(hXQUnder processor_sdk_rtos_am57xx_4_xx_xx_xx directory, run the following commands:r(r(}r((hj(hj(ubaubaubaubj)r(}r((hXsource ./setupenv.sh make audio_preproc_clean make audio_preproc the OUT files for DSP1 will be built at processor_sdk_rtos_am57xx_4_xx_xx_xx/demos/audio-preprocessing/file_demo_bios/am572x/buildhj(hj&hjh}r((jjh]h]h]h]h]uhMhhh]r(hXsource ./setupenv.sh make audio_preproc_clean make audio_preproc the OUT files for DSP1 will be built at processor_sdk_rtos_am57xx_4_xx_xx_xx/demos/audio-preprocessing/file_demo_bios/am572x/buildr(r(}r((hUhj(ubaubj/)r(}r((hX**For Windows:**r(hj(hj&hj3h}r((h]h]h]h]h]uhKhhh]r(jW)r(}r((hj(h}r((h]h]h]h]h]uhj(h]r(hX For Windows:r(r(}r((hUhj(ubahj_ubaubjQ)r(}r((hUhj(hj&hjTh}r((jVX-h]h]h]h]h]uhKhhh]r(jX)r(}r((hXRUnder processor_sdk_rtos_am57xx_4_00_xx_xx directory, run the following commands: hj(hj&hj[h}r((h]h]h]h]h]uhNhhh]r(j/)r(}r((hXQUnder processor_sdk_rtos_am57xx_4_00_xx_xx directory, run the following commands:r(hj(hj&hj3h}r((h]h]h]h]h]uhKh]r(hXQUnder processor_sdk_rtos_am57xx_4_00_xx_xx directory, run the following commands:r(r(}r((hj(hj(ubaubaubaubj)r(}r((hXsetupenv.bat gmake audio_preproc_clean gmake audio_preproc the OUT files for DSP1 will be built at processor_sdk_rtos_am57xx_4_xx_xx_xx\demos\audio-preprocessing\file_demo_bios\am572x\buildhj(hj&hjh}r((jjh]h]h]h]h]uhMhhh]r(hXsetupenv.bat gmake audio_preproc_clean gmake audio_preproc the OUT files for DSP1 will be built at processor_sdk_rtos_am57xx_4_xx_xx_xx\demos\audio-preprocessing\file_demo_bios\am572x\buildr(r(}r((hUhj(ubaubeubh)r(}r((hUjKhjw(hj&hhh}r((h]r(Xk2g evmr(ah]h]h]r(Uk2g-evmr(ah]uhKhhh]r((h)r(}r((hXK2G EVMr(hj(hj&hhh}r((h]h]h]h]h]uhKhhh]r(hXK2G EVMr(r(}r((hj(hj(ubaubj/)r(}r((hX**For Linux:**r(hj(hj&hj3h}r((h]h]h]h]h]uhKhhh]r(jW)r(}r((hj(h}r((h]h]h]h]h]uhj(h]r)hX For Linux:r)r)}r)(hUhj(ubahj_ubaubjQ)r)}r)(hUhj(hj&hjTh}r)(jVX-h]h]h]h]h]uhKhhh]r)jX)r)}r )(hXOUnder processor_sdk_rtos_k2g_4_xx_xx_xx directory, run the following commands: hj)hj&hj[h}r )(h]h]h]h]h]uhNhhh]r )j/)r )}r )(hXNUnder processor_sdk_rtos_k2g_4_xx_xx_xx directory, run the following commands:r)hj)hj&hj3h}r)(h]h]h]h]h]uhKh]r)hXNUnder processor_sdk_rtos_k2g_4_xx_xx_xx directory, run the following commands:r)r)}r)(hj)hj )ubaubaubaubj)r)}r)(hXsource ./setupenv.sh make audio_preproc_clean make audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_k2g_4_xx_xx_xx/demos/audio-preprocessing/file_demo_bios/k2g/buildhj(hj&hjh}r)(jjh]h]h]h]h]uhMhhh]r)hXsource ./setupenv.sh make audio_preproc_clean make audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_k2g_4_xx_xx_xx/demos/audio-preprocessing/file_demo_bios/k2g/buildr)r)}r)(hUhj)ubaubj/)r)}r)(hX**For Windows:**r)hj(hj&hj3h}r)(h]h]h]h]h]uhKhhh]r)jW)r )}r!)(hj)h}r")(h]h]h]h]h]uhj)h]r#)hX For Windows:r$)r%)}r&)(hUhj )ubahj_ubaubjQ)r')}r()(hUhj(hj&hjTh}r))(jVX-h]h]h]h]h]uhKhhh]r*)jX)r+)}r,)(hXOUnder processor_sdk_rtos_k2g_4_00_xx_xx directory, run the following commands: hj')hj&hj[h}r-)(h]h]h]h]h]uhNhhh]r.)j/)r/)}r0)(hXNUnder processor_sdk_rtos_k2g_4_00_xx_xx directory, run the following commands:r1)hj+)hj&hj3h}r2)(h]h]h]h]h]uhKh]r3)hXNUnder processor_sdk_rtos_k2g_4_00_xx_xx directory, run the following commands:r4)r5)}r6)(hj1)hj/)ubaubaubaubj)r7)}r8)(hXsetupenv.bat gmake audio_preproc_clean gmake audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_k2g_4_xx_xx_xx\demos\audio-preprocessing\file_demo_bios\k2g\buildhj(hj&hjh}r9)(jjh]h]h]h]h]uhMhhh]r:)hXsetupenv.bat gmake audio_preproc_clean gmake audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_k2g_4_xx_xx_xx\demos\audio-preprocessing\file_demo_bios\k2g\buildr;)r<)}r=)(hUhj7)ubaubeubh)r>)}r?)(hUjKhjw(hj&hhh}r@)(h]rA)X omap-l137 evmrB)ah]h]h]rC)U omap-l137-evmrD)ah]uhKhhh]rE)(h)rF)}rG)(hX OMAP-L137 EVMrH)hj>)hj&hhh}rI)(h]h]h]h]h]uhKhhh]rJ)hX OMAP-L137 EVMrK)rL)}rM)(hjH)hjF)ubaubj/)rN)}rO)(hX**For Linux:**rP)hj>)hj&hj3h}rQ)(h]h]h]h]h]uhKhhh]rR)jW)rS)}rT)(hjP)h}rU)(h]h]h]h]h]uhjN)h]rV)hX For Linux:rW)rX)}rY)(hUhjS)ubahj_ubaubjQ)rZ)}r[)(hUhj>)hj&hjTh}r\)(jVX-h]h]h]h]h]uhKhhh]r])jX)r^)}r_)(hXTUnder processor_sdk_rtos_omapl137_4_xx_xx_xx directory, run the following commands: hjZ)hj&hj[h}r`)(h]h]h]h]h]uhNhhh]ra)j/)rb)}rc)(hXSUnder processor_sdk_rtos_omapl137_4_xx_xx_xx directory, run the following commands:rd)hj^)hj&hj3h}re)(h]h]h]h]h]uhKh]rf)hXSUnder processor_sdk_rtos_omapl137_4_xx_xx_xx directory, run the following commands:rg)rh)}ri)(hjd)hjb)ubaubaubaubj)rj)}rk)(hXsource ./setupenv.sh make audio_preproc_clean make audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_omapl137_4_xx_xx_xx/demos/audio-preprocessing/file_demo_bios/omapl137/buildhj>)hj&hjh}rl)(jjh]h]h]h]h]uhMhhh]rm)hXsource ./setupenv.sh make audio_preproc_clean make audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_omapl137_4_xx_xx_xx/demos/audio-preprocessing/file_demo_bios/omapl137/buildrn)ro)}rp)(hUhjj)ubaubj/)rq)}rr)(hX**For Windows:**rs)hj>)hj&hj3h}rt)(h]h]h]h]h]uhKhhh]ru)jW)rv)}rw)(hjs)h}rx)(h]h]h]h]h]uhjq)h]ry)hX For Windows:rz)r{)}r|)(hUhjv)ubahj_ubaubjQ)r})}r~)(hUhj>)hj&hjTh}r)(jVX-h]h]h]h]h]uhKhhh]r)jX)r)}r)(hXTUnder processor_sdk_rtos_omapl137_4_xx_xx_xx directory, run the following commands: hj})hj&hj[h}r)(h]h]h]h]h]uhNhhh]r)j/)r)}r)(hXSUnder processor_sdk_rtos_omapl137_4_xx_xx_xx directory, run the following commands:r)hj)hj&hj3h}r)(h]h]h]h]h]uhKh]r)hXSUnder processor_sdk_rtos_omapl137_4_xx_xx_xx directory, run the following commands:r)r)}r)(hj)hj)ubaubaubaubj)r)}r)(hXsetupenv.bat gmake audio_preproc_clean gmake audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_omapl137_4_xx_xx_xx\demos\audio-preprocessing\file_demo_bios\omapl137\buildhj>)hj&hjh}r)(jjh]h]h]h]h]uhMhhh]r)hXsetupenv.bat gmake audio_preproc_clean gmake audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_omapl137_4_xx_xx_xx\demos\audio-preprocessing\file_demo_bios\omapl137\buildr)r)}r)(hUhj)ubaubeubeubh)r)}r)(hUjKhjh(hj&hhh}r)(h]r)Xhow to run the demor)ah]h]h]r)Uid29r)ah]uhKhhh]r)(h)r)}r)(hXHow to Run the Demor)hj)hj&hhh}r)(h]h]h]h]h]uhKhhh]r)hXHow to Run the Demor)r)}r)(hj)hj)ubaubj/)r)}r)(hXThe demo along with the audio input files will be loaded onto the target using JTAG. After executing, the output file can be read from target. Play both input and output audio files to compare effect of audio pre-processing.r)hj)hj&hj3h}r)(h]h]h]h]h]uhKhhh]r)hXThe demo along with the audio input files will be loaded onto the target using JTAG. After executing, the output file can be read from target. Play both input and output audio files to compare effect of audio pre-processing.r)r)}r)(hj)hj)ubaubj/)r)}r)(hX;The following sections provide detailed steps for each EVM.r)hj)hj&hj3h}r)(h]h]h]h]h]uhKhhh]r)hX;The following sections provide detailed steps for each EVM.r)r)}r)(hj)hj)ubaubh)r)}r)(hUjKhj)hj&hhh}r)(h]r)X am572x gp evmr)ah]h]h]r)Uid30r)ah]uhKhhh]r)(h)r)}r)(hX AM572x GP EVMr)hj)hj&hhh}r)(h]h]h]h]h]uhKhhh]r)hX AM572x GP EVMr)r)}r)(hj)hj)ubaubjQ)r)}r)(hUhj)hj&hjTh}r)(jVX-h]h]h]h]h]uhKhhh]r)(jX)r)}r)(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hj)hj&hj[h}r)(h]h]h]h]h]uhNhhh]r)j/)r)}r)(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hj)hj&hj3h}r)(h]h]h]h]h]uhKh]r)(hXFollow this link r)r)}r)(hXFollow this link hj)ubjZ)r)}r)(hX):ref:`Processor-SDK-RTOS-Setup-CCS-label`r)hj)hj&hj^h}r)(UreftypeXrefj j X"processor-sdk-rtos-setup-ccs-labelU refdomainXstdr)h]h]U refexplicith]h]h]j j uhKh]r)jb)r)}r)(hj)h}r)(h]h]r)(j j)Xstd-refr)eh]h]h]uhj)h]r)hX"Processor-SDK-RTOS-Setup-CCS-labelr)r)}r)(hUhj)ubahjlubaubhX- to get target configuration setup correctly.r)r)}r)(hX- to get target configuration setup correctly.hj)ubeubaubjX)r)}r)(hXxThen in CCS tools --> Gel file to load the modified gel file -- audio-preprocessing/file_demo_bios/am572x/files_io_7.gelhj)hj&hj[h}r)(h]h]h]h]h]uhNhhh]r)j/)r)}r)(hXxThen in CCS tools --> Gel file to load the modified gel file -- audio-preprocessing/file_demo_bios/am572x/files_io_7.gelr)hj)hj&hj3h}r)(h]h]h]h]h]uhKh]r)hXxThen in CCS tools --> Gel file to load the modified gel file -- audio-preprocessing/file_demo_bios/am572x/files_io_7.gelr)r)}r)(hj)hj)ubaubaubjX)r)}r)(hX:Connect the Blackhawk USB 560M JTAG to P4 on AM572x GP EVMr)hj)hj&hj[h}r)(h]h]h]h]h]uhNhhh]r)j/)r)}r)(hj)hj)hj&hj3h}r)(h]h]h]h]h]uhKh]r)hX:Connect the Blackhawk USB 560M JTAG to P4 on AM572x GP EVMr)r)}r)(hj)hj)ubaubaubjX)r)}r)(hXVPlug power adaptor(12V) into the AM572x GP EVM (Do not press the Power Button(S1) yet)hj)hj&hj[h}r)(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hXVPlug power adaptor(12V) into the AM572x GP EVM (Do not press the Power Button(S1) yet)r*hj)hj&hj3h}r*(h]h]h]h]h]uhKh]r*hXVPlug power adaptor(12V) into the AM572x GP EVM (Do not press the Power Button(S1) yet)r*r*}r*(hj*hj*ubaubaubjX)r *}r *(hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3hj)hj&hj[h}r *(h]h]h]h]h]uhNhhh]r *j/)r *}r*(hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3r*hj *hj&hj3h}r*(h]h]h]h]h]uhKh]r*hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3r*r*}r*(hj*hj *ubaubaubjX)r*}r*(hXvPress the Power Button(S1) and "Connect to CortexA15_0" immediately (Due to the EVM will be auto power off in 10 secs)hj)hj&hj[h}r*(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hXvPress the Power Button(S1) and "Connect to CortexA15_0" immediately (Due to the EVM will be auto power off in 10 secs)r*hj*hj&hj3h}r*(h]h]h]h]h]uhKh]r*hXvPress the Power Button(S1) and "Connect to CortexA15_0" immediately (Due to the EVM will be auto power off in 10 secs)r*r*}r *(hj*hj*ubaubaubjX)r!*}r"*(hXThen "Connect to C66xx_DSP1"r#*hj)hj&hj[h}r$*(h]h]h]h]h]uhNhhh]r%*j/)r&*}r'*(hj#*hj!*hj&hj3h}r(*(h]h]h]h]h]uhKh]r)*hXThen "Connect to C66xx_DSP1"r**r+*}r,*(hj#*hj&*ubaubaubjX)r-*}r.*(hXNLoad the AM572x_bf.out from audio-preprocessing\\file_demo_bios\\am572x\\buildhj)hj&hj[h}r/*(h]h]h]h]h]uhNhhh]r0*j/)r1*}r2*(hXNLoad the AM572x_bf.out from audio-preprocessing\\file_demo_bios\\am572x\\buildhj-*hj&hj3h}r3*(h]h]h]h]h]uhKh]r4*hXKLoad the AM572x_bf.out from audio-preprocessing\file_demo_bios\am572x\buildr5*r6*}r7*(hXNLoad the AM572x_bf.out from audio-preprocessing\\file_demo_bios\\am572x\\buildhj1*ubaubaubjX)r8*}r9*(hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files (audio-preprocessing\\common\\t8\\y16L7g3m7090_x.pcm) into external memory buffershj)hj&hj[h}r:*(h]h]h]h]h]uhNhhh]r;*j/)r<*}r=*(hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files (audio-preprocessing\\common\\t8\\y16L7g3m7090_x.pcm) into external memory buffershj8*hj&hj3h}r>*(h]h]h]h]h]uhKh]r?*hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files (audio-preprocessing\common\t8\y16L7g3m7090_x.pcm) into external memory buffersr@*rA*}rB*(hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files (audio-preprocessing\\common\\t8\\y16L7g3m7090_x.pcm) into external memory buffershj<*ubaubaubjX)rC*}rD*(hX2Run the program (loaded previously) by pressing F8rE*hj)hj&hj[h}rF*(h]h]h]h]h]uhNhhh]rG*j/)rH*}rI*(hjE*hjC*hj&hj3h}rJ*(h]h]h]h]h]uhKh]rK*hX2Run the program (loaded previously) by pressing F8rL*rM*}rN*(hjE*hjH*ubaubaubjX)rO*}rP*(hXeThe program will print out the statistics and “EOF reached” when the program completes processinghj)hj&hj[h}rQ*(h]h]h]h]h]uhNhhh]rR*j/)rS*}rT*(hXeThe program will print out the statistics and “EOF reached” when the program completes processingrU*hjO*hj&hj3h}rV*(h]h]h]h]h]uhKh]rW*hXeThe program will print out the statistics and “EOF reached” when the program completes processingrX*rY*}rZ*(hjU*hjS*ubaubaubjX)r[*}r\*(hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\common\t8\fileOutput7.bin) hj)hj&hj[h}r]*(h]h]h]h]h]uhNhhh]r^*j/)r_*}r`*(hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\common\t8\fileOutput7.bin)hj[*hj&hj3h}ra*(h]h]h]h]h]uhKh]rb*hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessingcommont8fileOutput7.bin)rc*rd*}re*(hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\common\t8\fileOutput7.bin)hj_*ubaubaubeubeubh)rf*}rg*(hUjKhj)hj&hhh}rh*(h]ri*j(ah]h]h]rj*Uid31rk*ah]uhKhhh]rl*(h)rm*}rn*(hXK2G EVMro*hjf*hj&hhh}rp*(h]h]h]h]h]uhKhhh]rq*hXK2G EVMrr*rs*}rt*(hjo*hjm*ubaubjQ)ru*}rv*(hUhjf*hj&hjTh}rw*(jVX-h]h]h]h]h]uhKhhh]rx*(jX)ry*}rz*(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hju*hj&hj[h}r{*(h]h]h]h]h]uhNhhh]r|*j/)r}*}r~*(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hjy*hj&hj3h}r*(h]h]h]h]h]uhKh]r*(hXFollow this link r*r*}r*(hXFollow this link hj}*ubjZ)r*}r*(hX):ref:`Processor-SDK-RTOS-Setup-CCS-label`r*hj}*hj&hj^h}r*(UreftypeXrefj j X"processor-sdk-rtos-setup-ccs-labelU refdomainXstdr*h]h]U refexplicith]h]h]j j uhKh]r*jb)r*}r*(hj*h}r*(h]h]r*(j j*Xstd-refr*eh]h]h]uhj*h]r*hX"Processor-SDK-RTOS-Setup-CCS-labelr*r*}r*(hUhj*ubahjlubaubhX- to get target configuration setup correctly.r*r*}r*(hX- to get target configuration setup correctly.hj}*ubeubaubjX)r*}r*(hXuThen in CCS tools --> Gel file to load the modified gel file -- audio-preprocessing/file_demo_bios/k2g/files_io_7.gelhju*hj&hj[h}r*(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hXuThen in CCS tools --> Gel file to load the modified gel file -- audio-preprocessing/file_demo_bios/k2g/files_io_7.gelr*hj*hj&hj3h}r*(h]h]h]h]h]uhKh]r*hXuThen in CCS tools --> Gel file to load the modified gel file -- audio-preprocessing/file_demo_bios/k2g/files_io_7.gelr*r*}r*(hj*hj*ubaubaubjX)r*}r*(hX?Connect to the on board emulator (J1 on K2G EVM) to your PC USBr*hju*hj&hj[h}r*(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hj*hj*hj&hj3h}r*(h]h]h]h]h]uhKh]r*hX?Connect to the on board emulator (J1 on K2G EVM) to your PC USBr*r*}r*(hj*hj*ubaubaubjX)r*}r*(hX=Plug power adaptor(12V) into the K2G EVM and power on the EVMr*hju*hj&hj[h}r*(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hj*hj*hj&hj3h}r*(h]h]h]h]h]uhKh]r*hX=Plug power adaptor(12V) into the K2G EVM and power on the EVMr*r*}r*(hj*hj*ubaubaubjX)r*}r*(hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3hju*hj&hj[h}r*(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3r*hj*hj&hj3h}r*(h]h]h]h]h]uhKh]r*hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3r*r*}r*(hj*hj*ubaubaubjX)r*}r*(hXThen "Connect to C66xx_DSP"r*hju*hj&hj[h}r*(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hj*hj*hj&hj3h}r*(h]h]h]h]h]uhKh]r*hXThen "Connect to C66xx_DSP"r*r*}r*(hj*hj*ubaubaubjX)r*}r*(hXHLoad the K2G_bf.out from audio-preprocessing\\file_demo_bios\\k2g\\buildr*hju*hj&hj[h}r*(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hj*hj*hj&hj3h}r*(h]h]h]h]h]uhKh]r*hXELoad the K2G_bf.out from audio-preprocessing\file_demo_bios\k2g\buildr*r*}r*(hXHLoad the K2G_bf.out from audio-preprocessing\\file_demo_bios\\k2g\\buildhj*ubaubaubjX)r*}r*(hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files ((audio-preprocessing\\common\\t8\\y16L7g3m7090_x.pcm)) into external memory buffershju*hj&hj[h}r*(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files ((audio-preprocessing\\common\\t8\\y16L7g3m7090_x.pcm)) into external memory buffershj*hj&hj3h}r*(h]h]h]h]h]uhKh]r*hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files ((audio-preprocessing\common\t8\y16L7g3m7090_x.pcm)) into external memory buffersr*r*}r*(hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files ((audio-preprocessing\\common\\t8\\y16L7g3m7090_x.pcm)) into external memory buffershj*ubaubaubjX)r*}r*(hX2Run the program (loaded previously) by pressing F8r*hju*hj&hj[h}r*(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hj*hj*hj&hj3h}r*(h]h]h]h]h]uhMh]r*hX2Run the program (loaded previously) by pressing F8r*r*}r*(hj*hj*ubaubaubjX)r*}r*(hXeThe program will print out the statistics and “EOF reached” when the program completes processinghju*hj&hj[h}r*(h]h]h]h]h]uhNhhh]r*j/)r*}r*(hXeThe program will print out the statistics and “EOF reached” when the program completes processingr*hj*hj&hj3h}r*(h]h]h]h]h]uhMh]r*hXeThe program will print out the statistics and “EOF reached” when the program completes processingr*r*}r+(hj*hj*ubaubaubjX)r+}r+(hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\\common\\t8\\fileOutput7.bin) hju*hj&hj[h}r+(h]h]h]h]h]uhNhhh]r+j/)r+}r+(hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\\common\\t8\\fileOutput7.bin)hj+hj&hj3h}r+(h]h]h]h]h]uhMh]r+hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\common\t8\fileOutput7.bin)r +r +}r +(hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\\common\\t8\\fileOutput7.bin)hj+ubaubaubeubeubh)r +}r +(hUjKhj)hj&hhh}r+(h]r+jB)ah]h]h]r+Uid32r+ah]uhM hhh]r+(h)r+}r+(hX OMAP-L137 EVMr+hj +hj&hhh}r+(h]h]h]h]h]uhM hhh]r+hX OMAP-L137 EVMr+r+}r+(hj+hj+ubaubjQ)r+}r+(hUhj +hj&hjTh}r+(jVX-h]h]h]h]h]uhM hhh]r+(jX)r+}r +(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hj+hj&hj[h}r!+(h]h]h]h]h]uhNhhh]r"+j/)r#+}r$+(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hj+hj&hj3h}r%+(h]h]h]h]h]uhM h]r&+(hXFollow this link r'+r(+}r)+(hXFollow this link hj#+ubjZ)r*+}r++(hX):ref:`Processor-SDK-RTOS-Setup-CCS-label`r,+hj#+hj&hj^h}r-+(UreftypeXrefj j X"processor-sdk-rtos-setup-ccs-labelU refdomainXstdr.+h]h]U refexplicith]h]h]j j uhM h]r/+jb)r0+}r1+(hj,+h}r2+(h]h]r3+(j j.+Xstd-refr4+eh]h]h]uhj*+h]r5+hX"Processor-SDK-RTOS-Setup-CCS-labelr6+r7+}r8+(hUhj0+ubahjlubaubhX- to get target configuration setup correctly.r9+r:+}r;+(hX- to get target configuration setup correctly.hj#+ubeubaubjX)r<+}r=+(hXuThen in CCS tools --> Gel file to load the modified gel file -- audio-preprocessing/file_demo_bios/k2g/files_io_7.gelhj+hj&hj[h}r>+(h]h]h]h]h]uhNhhh]r?+j/)r@+}rA+(hXuThen in CCS tools --> Gel file to load the modified gel file -- audio-preprocessing/file_demo_bios/k2g/files_io_7.gelrB+hj<+hj&hj3h}rC+(h]h]h]h]h]uhMh]rD+hXuThen in CCS tools --> Gel file to load the modified gel file -- audio-preprocessing/file_demo_bios/k2g/files_io_7.gelrE+rF+}rG+(hjB+hj@+ubaubaubjX)rH+}rI+(hXGConnect to the on board emulator (J201 on OMAP-L137 EVM) to your PC USBhj+hj&hj[h}rJ+(h]h]h]h]h]uhNhhh]rK+j/)rL+}rM+(hXGConnect to the on board emulator (J201 on OMAP-L137 EVM) to your PC USBrN+hjH+hj&hj3h}rO+(h]h]h]h]h]uhMh]rP+hXGConnect to the on board emulator (J201 on OMAP-L137 EVM) to your PC USBrQ+rR+}rS+(hjN+hjL+ubaubaubjX)rT+}rU+(hXBPlug power adaptor(5V) into the OMAP-L137 EVM and power on the EVMrV+hj+hj&hj[h}rW+(h]h]h]h]h]uhNhhh]rX+j/)rY+}rZ+(hjV+hjT+hj&hj3h}r[+(h]h]h]h]h]uhMh]r\+hXBPlug power adaptor(5V) into the OMAP-L137 EVM and power on the EVMr]+r^+}r_+(hjV+hjY+ubaubaubjX)r`+}ra+(hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3hj+hj&hj[h}rb+(h]h]h]h]h]uhNhhh]rc+j/)rd+}re+(hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3rf+hj`+hj&hj3h}rg+(h]h]h]h]h]uhMh]rh+hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3ri+rj+}rk+(hjf+hjd+ubaubaubjX)rl+}rm+(hXThen "Connect to C674x_0"rn+hj+hj&hj[h}ro+(h]h]h]h]h]uhNhhh]rp+j/)rq+}rr+(hjn+hjl+hj&hj3h}rs+(h]h]h]h]h]uhMh]rt+hXThen "Connect to C674x_0"ru+rv+}rw+(hjn+hjq+ubaubaubjX)rx+}ry+(hXOLoad the DA830_bf.out from audio-preprocessing\\file_demo_bios\\omapl137\\buildhj+hj&hj[h}rz+(h]h]h]h]h]uhNhhh]r{+j/)r|+}r}+(hXOLoad the DA830_bf.out from audio-preprocessing\\file_demo_bios\\omapl137\\buildhjx+hj&hj3h}r~+(h]h]h]h]h]uhMh]r+hXLLoad the DA830_bf.out from audio-preprocessing\file_demo_bios\omapl137\buildr+r+}r+(hXOLoad the DA830_bf.out from audio-preprocessing\\file_demo_bios\\omapl137\\buildhj|+ubaubaubjX)r+}r+(hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files ((audio-preprocessing\\common\\t8\\y16L7g3m7090_x.pcm)) into external memory buffershj+hj&hj[h}r+(h]h]h]h]h]uhNhhh]r+j/)r+}r+(hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files ((audio-preprocessing\\common\\t8\\y16L7g3m7090_x.pcm)) into external memory buffershj+hj&hj3h}r+(h]h]h]h]h]uhMh]r+hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files ((audio-preprocessing\common\t8\y16L7g3m7090_x.pcm)) into external memory buffersr+r+}r+(hXExecute GEL function Scripts-->Microphone Load Functions-->BFMicLoadAll to load all 7 microphone input files ((audio-preprocessing\\common\\t8\\y16L7g3m7090_x.pcm)) into external memory buffershj+ubaubaubjX)r+}r+(hX2Run the program (loaded previously) by pressing F8r+hj+hj&hj[h}r+(h]h]h]h]h]uhNhhh]r+j/)r+}r+(hj+hj+hj&hj3h}r+(h]h]h]h]h]uhMh]r+hX2Run the program (loaded previously) by pressing F8r+r+}r+(hj+hj+ubaubaubjX)r+}r+(hXeThe program will print out the statistics and “EOF reached” when the program completes processinghj+hj&hj[h}r+(h]h]h]h]h]uhNhhh]r+j/)r+}r+(hXeThe program will print out the statistics and “EOF reached” when the program completes processingr+hj+hj&hj3h}r+(h]h]h]h]h]uhMh]r+hXeThe program will print out the statistics and “EOF reached” when the program completes processingr+r+}r+(hj+hj+ubaubaubjX)r+}r+(hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\\common\\t8\\fileOutput7.bin) hj+hj&hj[h}r+(h]h]h]h]h]uhNhhh]r+j/)r+}r+(hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\\common\\t8\\fileOutput7.bin)hj+hj&hj3h}r+(h]h]h]h]h]uhMh]r+hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\common\t8\fileOutput7.bin)r+r+}r+(hXExecute GEL function Scripts-->Microphone Save Functions-->BFSaveOutput to save the processed audio output from external memory buffer to a file (audio-preprocessing\\common\\t8\\fileOutput7.bin)hj+ubaubaubeubj)r+}r+(hUhj +hj&hjh}r+(h]h]h]h]h]uhM$hhh]r+j)r+}r+(hUjKhj+hj&hhh}r+(h]h]h]h]h]uhKhhh]ubaubj)r+}r+(hUhj +hj&hjh}r+(h]h]h]h]h]uhM&hhh]r+j)r+}r+(hUjKhj+hj&hhh}r+(h]h]h]h]h]uhKhhh]ubaubeubeubeubh)r+}r+(hUhj&hj&hhh}r+(h]h]h]h]r+Ucircular-microphone-board-demor+ah]r+hauhM)hhh]r+(h)r+}r+(hXCircular Microphone Board Demor+hj+hj&hhh}r+(h]h]h]h]h]uhM)hhh]r+hXCircular Microphone Board Demor+r+}r+(hj+hj+ubaubh)r+}r+(hUjKhj+hj&hhh}r+(h]r+Xhow to build the demor+ah]h]h]r+Uid33r+ah]uhM,hhh]r+(h)r+}r+(hXHow to Build the Demor+hj+hj&hhh}r+(h]h]h]h]h]uhM,hhh]r+hXHow to Build the Demor+r+}r+(hj+hj+ubaubj))r+}r+(hXIn order to make the following build procedure to work, AER and VOLIB have to be installed at the same location as the Processor SDK RTOS and make sure the AER 17.0.0.0 (C64P) is installed at aer_c64Px_obj_17_0_0_0hj+hj&hj,h}r+(h]h]h]h]h]uhNhhh]r+j/)r+}r+(hXIn order to make the following build procedure to work, AER and VOLIB have to be installed at the same location as the Processor SDK RTOS and make sure the AER 17.0.0.0 (C64P) is installed at aer_c64Px_obj_17_0_0_0r+hj+hj&hj3h}r+(h]h]h]h]h]uhM/h]r+hXIn order to make the following build procedure to work, AER and VOLIB have to be installed at the same location as the Processor SDK RTOS and make sure the AER 17.0.0.0 (C64P) is installed at aer_c64Px_obj_17_0_0_0r+r+}r+(hj+hj+ubaubaubh)r+}r+(hUjKhj+hj&hhh}r+(h]r+Xk2g evmr+ah]h]h]r+Uid34r+ah]uhM4hhh]r+(h)r+}r+(hXK2G EVMr+hj+hj&hhh}r+(h]h]h]h]h]uhM4hhh]r+hXK2G EVMr+r+}r+(hj+hj+ubaubj/)r+}r+(hX**For Linux:**r+hj+hj&hj3h}r+(h]h]h]h]h]uhM6hhh]r+jW)r+}r,(hj+h}r,(h]h]h]h]h]uhj+h]r,hX For Linux:r,r,}r,(hUhj+ubahj_ubaubjQ)r,}r,(hUhj+hj&hjTh}r,(jVX-h]h]h]h]h]uhM8hhh]r ,jX)r ,}r ,(hXOUnder processor_sdk_rtos_k2g_4_xx_xx_xx directory, run the following commands: hj,hj&hj[h}r ,(h]h]h]h]h]uhNhhh]r ,j/)r,}r,(hXNUnder processor_sdk_rtos_k2g_4_xx_xx_xx directory, run the following commands:r,hj ,hj&hj3h}r,(h]h]h]h]h]uhM8h]r,hXNUnder processor_sdk_rtos_k2g_4_xx_xx_xx directory, run the following commands:r,r,}r,(hj,hj,ubaubaubaubj)r,}r,(hXsource ./setupenv.sh make audio_preproc_clean make audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_k2g_4_xx_xx_xx/demos/audio-preprocessing/realtime_demo_bios/k2g/buildhj+hj&hjh}r,(jjh]h]h]h]h]uhMK hhh]r,hXsource ./setupenv.sh make audio_preproc_clean make audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_k2g_4_xx_xx_xx/demos/audio-preprocessing/realtime_demo_bios/k2g/buildr,r,}r,(hUhj,ubaubj/)r,}r,(hX**For Windows:**r,hj+hj&hj3h}r ,(h]h]h]h]h]uhMChhh]r!,jW)r",}r#,(hj,h}r$,(h]h]h]h]h]uhj,h]r%,hX For Windows:r&,r',}r(,(hUhj",ubahj_ubaubjQ)r),}r*,(hUhj+hj&hjTh}r+,(jVX-h]h]h]h]h]uhMEhhh]r,,jX)r-,}r.,(hXOUnder processor_sdk_rtos_k2g_4_00_xx_xx directory, run the following commands: hj),hj&hj[h}r/,(h]h]h]h]h]uhNhhh]r0,j/)r1,}r2,(hXNUnder processor_sdk_rtos_k2g_4_00_xx_xx directory, run the following commands:r3,hj-,hj&hj3h}r4,(h]h]h]h]h]uhMEh]r5,hXNUnder processor_sdk_rtos_k2g_4_00_xx_xx directory, run the following commands:r6,r7,}r8,(hj3,hj1,ubaubaubaubj)r9,}r:,(hXsetupenv.bat gmake audio_preproc_clean gmake audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_k2g_4_xx_xx_xx\demos\audio-preprocessing\realtime_demo_bios\k2g\buildhj+hj&hjh}r;,(jjh]h]h]h]h]uhMX hhh]r<,hXsetupenv.bat gmake audio_preproc_clean gmake audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_k2g_4_xx_xx_xx\demos\audio-preprocessing\realtime_demo_bios\k2g\buildr=,r>,}r?,(hUhj9,ubaubeubh)r@,}rA,(hUjKhj+hj&hhh}rB,(h]rC,X omap-l137 evmrD,ah]h]h]rE,Uid35rF,ah]uhMQhhh]rG,(h)rH,}rI,(hX OMAP-L137 EVMrJ,hj@,hj&hhh}rK,(h]h]h]h]h]uhMQhhh]rL,hX OMAP-L137 EVMrM,rN,}rO,(hjJ,hjH,ubaubj/)rP,}rQ,(hX**For Linux:**rR,hj@,hj&hj3h}rS,(h]h]h]h]h]uhMShhh]rT,jW)rU,}rV,(hjR,h}rW,(h]h]h]h]h]uhjP,h]rX,hX For Linux:rY,rZ,}r[,(hUhjU,ubahj_ubaubjQ)r\,}r],(hUhj@,hj&hjTh}r^,(jVX-h]h]h]h]h]uhMUhhh]r_,jX)r`,}ra,(hXTUnder processor_sdk_rtos_omapl137_4_xx_xx_xx directory, run the following commands: hj\,hj&hj[h}rb,(h]h]h]h]h]uhNhhh]rc,j/)rd,}re,(hXSUnder processor_sdk_rtos_omapl137_4_xx_xx_xx directory, run the following commands:rf,hj`,hj&hj3h}rg,(h]h]h]h]h]uhMUh]rh,hXSUnder processor_sdk_rtos_omapl137_4_xx_xx_xx directory, run the following commands:ri,rj,}rk,(hjf,hjd,ubaubaubaubj)rl,}rm,(hXsource ./setupenv.sh make audio_preproc_clean make audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_omapl137_4_xx_xx_xx/demos/audio-preprocessing/realtime_demo_bios/omapl137/makehj@,hj&hjh}rn,(jjh]h]h]h]h]uhMh hhh]ro,hXsource ./setupenv.sh make audio_preproc_clean make audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_omapl137_4_xx_xx_xx/demos/audio-preprocessing/realtime_demo_bios/omapl137/makerp,rq,}rr,(hUhjl,ubaubj/)rs,}rt,(hX**For Windows:**ru,hj@,hj&hj3h}rv,(h]h]h]h]h]uhM`hhh]rw,jW)rx,}ry,(hju,h}rz,(h]h]h]h]h]uhjs,h]r{,hX For Windows:r|,r},}r~,(hUhjx,ubahj_ubaubjQ)r,}r,(hUhj@,hj&hjTh}r,(jVX-h]h]h]h]h]uhMbhhh]r,jX)r,}r,(hXTUnder processor_sdk_rtos_omapl137_4_00_xx_xx directory, run the following commands: hj,hj&hj[h}r,(h]h]h]h]h]uhNhhh]r,j/)r,}r,(hXSUnder processor_sdk_rtos_omapl137_4_00_xx_xx directory, run the following commands:r,hj,hj&hj3h}r,(h]h]h]h]h]uhMbh]r,hXSUnder processor_sdk_rtos_omapl137_4_00_xx_xx directory, run the following commands:r,r,}r,(hj,hj,ubaubaubaubj)r,}r,(hXsetupenv.bat gmake audio_preproc_clean gmake audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_omapl137_4_xx_xx_xx\demos\audio-preprocessing\realtime_demo_bios\omapl137\makehj@,hj&hjh}r,(jjh]h]h]h]h]uhMu hhh]r,hXsetupenv.bat gmake audio_preproc_clean gmake audio_preproc the OUT files for DSP will be built at processor_sdk_rtos_omapl137_4_xx_xx_xx\demos\audio-preprocessing\realtime_demo_bios\omapl137\maker,r,}r,(hUhj,ubaubeubeubh)r,}r,(hUjKhj+hj&hhh}r,(h]r,Xhow to run the demor,ah]h]h]r,Uid36r,ah]uhMnhhh]r,(h)r,}r,(hXHow to Run the Demor,hj,hj&hhh}r,(h]h]h]h]h]uhMnhhh]r,hXHow to Run the Demor,r,}r,(hj,hj,ubaubj/)r,}r,(hXUThe demo works with the real time audio input from CMB. After processing is complete, the audio output will be sent to the line-out(left channel) of the K2G EVM on-board audio codec. For the purpose of comparison, the unprocessed center microphone (mic 8) will be sent out to the line-out (right channel) of the K2G EVM on-board audio codec.r,hj,hj&hj3h}r,(h]h]h]h]h]uhMphhh]r,hXUThe demo works with the real time audio input from CMB. After processing is complete, the audio output will be sent to the line-out(left channel) of the K2G EVM on-board audio codec. For the purpose of comparison, the unprocessed center microphone (mic 8) will be sent out to the line-out (right channel) of the K2G EVM on-board audio codec.r,r,}r,(hj,hj,ubaubj/)r,}r,(hX;The following sections provide detailed steps for each EVM.r,hj,hj&hj3h}r,(h]h]h]h]h]uhMvhhh]r,hX;The following sections provide detailed steps for each EVM.r,r,}r,(hj,hj,ubaubh)r,}r,(hUhj,hj&hhh}r,(h]h]h]h]r,Uk2g-evm-using-ccsr,ah]r,h~auhMyhhh]r,(h)r,}r,(hXK2G EVM (using CCS)r,hj,hj&hhh}r,(h]h]h]h]h]uhMyhhh]r,hXK2G EVM (using CCS)r,r,}r,(hj,hj,ubaubjQ)r,}r,(hUhj,hj&hjTh}r,(jVX-h]h]h]h]h]uhM{hhh]r,(jX)r,}r,(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hj,hj&hj[h}r,(h]h]h]h]h]uhNhhh]r,j/)r,}r,(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hj,hj&hj3h}r,(h]h]h]h]h]uhM{h]r,(hXFollow this link r,r,}r,(hXFollow this link hj,ubjZ)r,}r,(hX):ref:`Processor-SDK-RTOS-Setup-CCS-label`r,hj,hj&hj^h}r,(UreftypeXrefj j X"processor-sdk-rtos-setup-ccs-labelU refdomainXstdr,h]h]U refexplicith]h]h]j j uhM{h]r,jb)r,}r,(hj,h}r,(h]h]r,(j j,Xstd-refr,eh]h]h]uhj,h]r,hX"Processor-SDK-RTOS-Setup-CCS-labelr,r,}r,(hUhj,ubahjlubaubhX- to get target configuration setup correctly.r,r,}r,(hX- to get target configuration setup correctly.hj,ubeubaubjX)r,}r,(hX?Connect to the on board emulator (J1 on K2G EVM) to your PC USBr,hj,hj&hj[h}r,(h]h]h]h]h]uhNhhh]r,j/)r,}r,(hj,hj,hj&hj3h}r,(h]h]h]h]h]uhM}h]r,hX?Connect to the on board emulator (J1 on K2G EVM) to your PC USBr,r,}r,(hj,hj,ubaubaubjX)r,}r,(hX=Plug power adaptor(12V) into the K2G EVM and power on the EVMr,hj,hj&hj[h}r,(h]h]h]h]h]uhNhhh]r,j/)r,}r,(hj,hj,hj&hj3h}r,(h]h]h]h]h]uhM~h]r,hX=Plug power adaptor(12V) into the K2G EVM and power on the EVMr,r,}r,(hj,hj,ubaubaubjX)r,}r,(hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3hj,hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3r-hj,hj&hj3h}r-(h]h]h]h]h]uhMh]r-hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3r-r-}r -(hj-hj-ubaubaubjX)r -}r -(hXThen "Connect to C66xx_DSP"r -hj,hj&hj[h}r -(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hj -hj -hj&hj3h}r-(h]h]h]h]h]uhMh]r-hXThen "Connect to C66xx_DSP"r-r-}r-(hj -hj-ubaubaubjX)r-}r-(hXOLoad the K2G_bf_rt.out from audio-preprocessing\\realtime_demo_bios\\k2g\\buildhj,hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hXOLoad the K2G_bf_rt.out from audio-preprocessing\\realtime_demo_bios\\k2g\\buildhj-hj&hj3h}r-(h]h]h]h]h]uhMh]r-hXLLoad the K2G_bf_rt.out from audio-preprocessing\realtime_demo_bios\k2g\buildr-r-}r -(hXOLoad the K2G_bf_rt.out from audio-preprocessing\\realtime_demo_bios\\k2g\\buildhj-ubaubaubjX)r!-}r"-(hX2Run the program (loaded previously) by pressing F8r#-hj,hj&hj[h}r$-(h]h]h]h]h]uhNhhh]r%-j/)r&-}r'-(hj#-hj!-hj&hj3h}r(-(h]h]h]h]h]uhMh]r)-hX2Run the program (loaded previously) by pressing F8r*-r+-}r,-(hj#-hj&-ubaubaubjX)r--}r.-(hXoThe program will run the real time demo forever, taking the input from CMB and output to the on-board line-out hj,hj&hj[h}r/-(h]h]h]h]h]uhNhhh]r0-j/)r1-}r2-(hXnThe program will run the real time demo forever, taking the input from CMB and output to the on-board line-outr3-hj--hj&hj3h}r4-(h]h]h]h]h]uhMh]r5-hXnThe program will run the real time demo forever, taking the input from CMB and output to the on-board line-outr6-r7-}r8-(hj3-hj1-ubaubaubeubeubh)r9-}r:-(hUhj,hj&hhh}r;-(h]h]h]h]r<-Uomap-l137-evm-using-ccsr=-ah]r>-hhauhMhhh]r?-(h)r@-}rA-(hXOMAP-L137 EVM (using CCS)rB-hj9-hj&hhh}rC-(h]h]h]h]h]uhMhhh]rD-hXOMAP-L137 EVM (using CCS)rE-rF-}rG-(hjB-hj@-ubaubjQ)rH-}rI-(hUhj9-hj&hjTh}rJ-(jVX-h]h]h]h]h]uhMhhh]rK-(jX)rL-}rM-(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hjH-hj&hj[h}rN-(h]h]h]h]h]uhNhhh]rO-j/)rP-}rQ-(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hjL-hj&hj3h}rR-(h]h]h]h]h]uhMh]rS-(hXFollow this link rT-rU-}rV-(hXFollow this link hjP-ubjZ)rW-}rX-(hX):ref:`Processor-SDK-RTOS-Setup-CCS-label`rY-hjP-hj&hj^h}rZ-(UreftypeXrefj j X"processor-sdk-rtos-setup-ccs-labelU refdomainXstdr[-h]h]U refexplicith]h]h]j j uhMh]r\-jb)r]-}r^-(hjY-h}r_-(h]h]r`-(j j[-Xstd-refra-eh]h]h]uhjW-h]rb-hX"Processor-SDK-RTOS-Setup-CCS-labelrc-rd-}re-(hUhj]-ubahjlubaubhX- to get target configuration setup correctly.rf-rg-}rh-(hX- to get target configuration setup correctly.hjP-ubeubaubjX)ri-}rj-(hXGConnect to the on board emulator (J201 on OMAP-L137 EVM) to your PC USBhjH-hj&hj[h}rk-(h]h]h]h]h]uhNhhh]rl-j/)rm-}rn-(hXGConnect to the on board emulator (J201 on OMAP-L137 EVM) to your PC USBro-hji-hj&hj3h}rp-(h]h]h]h]h]uhMh]rq-hXGConnect to the on board emulator (J201 on OMAP-L137 EVM) to your PC USBrr-rs-}rt-(hjo-hjm-ubaubaubjX)ru-}rv-(hXBPlug power adaptor(5V) into the OMAP-L137 EVM and power on the EVMrw-hjH-hj&hj[h}rx-(h]h]h]h]h]uhNhhh]ry-j/)rz-}r{-(hjw-hju-hj&hj3h}r|-(h]h]h]h]h]uhMh]r}-hXBPlug power adaptor(5V) into the OMAP-L137 EVM and power on the EVMr~-r-}r-(hjw-hjz-ubaubaubjX)r-}r-(hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3hjH-hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3r-hj-hj&hj3h}r-(h]h]h]h]h]uhMh]r-hXfLaunch the target configuration created in step 1 using "Launch Selected Configuration" from CCS 6.1.3r-r-}r-(hj-hj-ubaubaubjX)r-}r-(hXThen "Connect to C674X_0"r-hjH-hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hj-hj-hj&hj3h}r-(h]h]h]h]h]uhMh]r-hXThen "Connect to C674X_0"r-r-}r-(hj-hj-ubaubaubjX)r-}r-(hXXLoad the OMAPL137_bf_rt.out from audio-preprocessing\\realtime_demo_bios\\omapl137\\makehjH-hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hXXLoad the OMAPL137_bf_rt.out from audio-preprocessing\\realtime_demo_bios\\omapl137\\makehj-hj&hj3h}r-(h]h]h]h]h]uhMh]r-hXULoad the OMAPL137_bf_rt.out from audio-preprocessing\realtime_demo_bios\omapl137\maker-r-}r-(hXXLoad the OMAPL137_bf_rt.out from audio-preprocessing\\realtime_demo_bios\\omapl137\\makehj-ubaubaubjX)r-}r-(hX2Run the program (loaded previously) by pressing F8r-hjH-hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hj-hj-hj&hj3h}r-(h]h]h]h]h]uhMh]r-hX2Run the program (loaded previously) by pressing F8r-r-}r-(hj-hj-ubaubaubjX)r-}r-(hXoThe program will run the real time demo forever, taking the input from CMB and output to the on-board line-out hjH-hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hXnThe program will run the real time demo forever, taking the input from CMB and output to the on-board line-outr-hj-hj&hj3h}r-(h]h]h]h]h]uhMh]r-hXnThe program will run the real time demo forever, taking the input from CMB and output to the on-board line-outr-r-}r-(hj-hj-ubaubaubeubeubh)r-}r-(hUhj,hj&hhh}r-(h]h]h]h]r-Uk2g-evm-boot-from-sd-cardr-ah]r-h\auhMhhh]r-(h)r-}r-(hXK2G EVM (Boot from SD card)r-hj-hj&hhh}r-(h]h]h]h]h]uhMhhh]r-hXK2G EVM (Boot from SD card)r-r-}r-(hj-hj-ubaubjQ)r-}r-(hUhj-hj&hjTh}r-(jVX-h]h]h]h]h]uhMhhh]r-(jX)r-}r-(hXCopy "app" and "MLO" from audio-preprocessing\\realtime_demo_bios\\k2g\\pre-built\\mmcsd on Windows or audio-preprocessing/realtime_demo_bios/k2g/pre-built/mmcsd on Linux to the root directory of a formatted micro SD cardhj-hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hXCopy "app" and "MLO" from audio-preprocessing\\realtime_demo_bios\\k2g\\pre-built\\mmcsd on Windows or audio-preprocessing/realtime_demo_bios/k2g/pre-built/mmcsd on Linux to the root directory of a formatted micro SD cardhj-hj&hj3h}r-(h]h]h]h]h]uhMh]r-hXCopy "app" and "MLO" from audio-preprocessing\realtime_demo_bios\k2g\pre-built\mmcsd on Windows or audio-preprocessing/realtime_demo_bios/k2g/pre-built/mmcsd on Linux to the root directory of a formatted micro SD cardr-r-}r-(hXCopy "app" and "MLO" from audio-preprocessing\\realtime_demo_bios\\k2g\\pre-built\\mmcsd on Windows or audio-preprocessing/realtime_demo_bios/k2g/pre-built/mmcsd on Linux to the root directory of a formatted micro SD cardhj-ubaubaubjX)r-}r-(hX7Plug in the micro SD card into uSD Card slot on K2G EVMr-hj-hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hj-hj-hj&hj3h}r-(h]h]h]h]h]uhMh]r-hX7Plug in the micro SD card into uSD Card slot on K2G EVMr-r-}r-(hj-hj-ubaubaubjX)r-}r-(hXDConnect "USB TO SOC UART0" on K2G EVM to a PC USB port via USB cabler-hj-hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hj-hj-hj&hj3h}r-(h]h]h]h]h]uhMh]r-hXDConnect "USB TO SOC UART0" on K2G EVM to a PC USB port via USB cabler-r-}r-(hj-hj-ubaubaubjX)r-}r-(hXLaunch a terminal emulator like Tera Term and open the local COM port corresponding to the UART0 (Set it to 115200 bps, 8 bit, none parity, one bit stop, no flow control)hj-hj&hj[h}r-(h]h]h]h]h]uhNhhh]r-j/)r-}r-(hXLaunch a terminal emulator like Tera Term and open the local COM port corresponding to the UART0 (Set it to 115200 bps, 8 bit, none parity, one bit stop, no flow control)r-hj-hj&hj3h}r-(h]h]h]h]h]uhMh]r-hXLaunch a terminal emulator like Tera Term and open the local COM port corresponding to the UART0 (Set it to 115200 bps, 8 bit, none parity, one bit stop, no flow control)r-r-}r-(hj-hj-ubaubaubjX)r-}r-(hXWPlug power adapter (12V) into the K2G EVM and power on the EVM and Power on the K2G EVMhj-hj&hj[h}r.(h]h]h]h]h]uhNhhh]r.j/)r.}r.(hXWPlug power adapter (12V) into the K2G EVM and power on the EVM and Power on the K2G EVMr.hj-hj&hj3h}r.(h]h]h]h]h]uhMh]r.hXWPlug power adapter (12V) into the K2G EVM and power on the EVM and Power on the K2G EVMr.r.}r .(hj.hj.ubaubaubjX)r .}r .(hX9There will be some information displayed on the SOC UART0r .hj-hj&hj[h}r .(h]h]h]h]h]uhNhhh]r.j/)r.}r.(hj .hj .hj&hj3h}r.(h]h]h]h]h]uhMh]r.hX9There will be some information displayed on the SOC UART0r.r.}r.(hj .hj.ubaubaubjX)r.}r.(hXoThe program will run the real time demo forever, taking the input from CMB and output to the on-board line-out hj-hj&hj[h}r.(h]h]h]h]h]uhNhhh]r.j/)r.}r.(hXnThe program will run the real time demo forever, taking the input from CMB and output to the on-board line-outr.hj.hj&hj3h}r.(h]h]h]h]h]uhMh]r.hXnThe program will run the real time demo forever, taking the input from CMB and output to the on-board line-outr.r .}r!.(hj.hj.ubaubaubeubj)r".}r#.(hUhj-hj&hjh}r$.(h]h]h]h]h]uhMhhh]r%.j)r&.}r'.(hUjKhj".hj&hhh}r(.(h]h]h]h]h]uhKhhh]ubaubeubeubeubh)r).}r*.(hUhj&hj&hhh}r+.(h]h]h]h]r,.U(how-to-read-the-input-output-audio-filesr-.ah]r..hauhMhhh]r/.(h)r0.}r1.(hX(How to Read the Input/output Audio Filesr2.hj).hj&hhh}r3.(h]h]h]h]h]uhMhhh]r4.hX(How to Read the Input/output Audio Filesr5.r6.}r7.(hj2.hj0.ubaubj/)r8.}r9.(hXBoth the input/output audio files are in raw PCM format (*.pcm or \*.bin) 16 bit per sample, big endian, mono, at 16Khz. They can be imported either by Adobe Audition or Audacity as the raw audio data.hj).hj&hj3h}r:.(h]h]h]h]h]uhMhhh]r;.(hX9Both the input/output audio files are in raw PCM format (r<.r=.}r>.(hX9Both the input/output audio files are in raw PCM format (hj8.ubcdocutils.nodes problematic r?.)r@.}rA.(hX*h}rB.(h]rC.Uid38rD.ah]h]h]h]UrefidUid37rE.uhj8.h]rF.hX*rG.}rH.(hUhj@.ubahU problematicrI.ubhX.pcm or *.bin) 16 bit per sample, big endian, mono, at 16Khz. They can be imported either by Adobe Audition or Audacity as the raw audio data.rJ.rK.}rL.(hX.pcm or \*.bin) 16 bit per sample, big endian, mono, at 16Khz. They can be imported either by Adobe Audition or Audacity as the raw audio data.hj8.ubeubh)rM.}rN.(hUhj).hj&hhh}rO.(h]h]h]h]rP.U/import-raw-audio-data-file-using-adobe-auditionrQ.ah]rR.h"auhMhhh]rS.(h)rT.}rU.(hX/Import Raw Audio Data File using Adobe AuditionrV.hjM.hj&hhh}rW.(h]h]h]h]h]uhMhhh]rX.hX/Import Raw Audio Data File using Adobe AuditionrY.rZ.}r[.(hjV.hjT.ubaubjQ)r\.}r].(hUhjM.hj&hjTh}r^.(jVX-h]h]h]h]h]uhMhhh]r_.(jX)r`.}ra.(hXLaunch the Adobe Audition CS5.5rb.hj\.hj&hj[h}rc.(h]h]h]h]h]uhNhhh]rd.j/)re.}rf.(hjb.hj`.hj&hj3h}rg.(h]h]h]h]h]uhMh]rh.hXLaunch the Adobe Audition CS5.5ri.rj.}rk.(hjb.hje.ubaubaubjX)rl.}rm.(hXFile --> Import --> Raw Data...rn.hj\.hj&hj[h}ro.(h]h]h]h]h]uhNhhh]rp.j/)rq.}rr.(hjn.hjl.hj&hj3h}rs.(h]h]h]h]h]uhMh]rt.hXFile --> Import --> Raw Data...ru.rv.}rw.(hjn.hjq.ubaubaubjX)rx.}ry.(hX!The following dialog will pop up hj\.hj&hj[h}rz.(h]h]h]h]h]uhNhhh]r{.j/)r|.}r}.(hX The following dialog will pop upr~.hjx.hj&hj3h}r.(h]h]h]h]h]uhMh]r.hX The following dialog will pop upr.r.}r.(hj~.hj|.ubaubaubeubj)r.}r.(hX3.. Image:: ../images/Aud_pre_processing_import.png hjM.hj&hjh}r.(UuriX,rtos/../images/Aud_pre_processing_import.pngr.h]h]h]h]j}r.U*j.sh]uhMhhh]ubjQ)r.}r.(hUhjM.hj&hjTh}r.(jVX-h]h]h]h]h]uhMhhh]r.(jX)r.}r.(hX:Select the raw audio file and input the correct parametersr.hj.hj&hj[h}r.(h]h]h]h]h]uhNhhh]r.j/)r.}r.(hj.hj.hj&hj3h}r.(h]h]h]h]h]uhMh]r.hX:Select the raw audio file and input the correct parametersr.r.}r.(hj.hj.ubaubaubjX)r.}r.(hX Click OK hj.hj&hj[h}r.(h]h]h]h]h]uhNhhh]r.j/)r.}r.(hXClick OKr.hj.hj&hj3h}r.(h]h]h]h]h]uhMh]r.hXClick OKr.r.}r.(hj.hj.ubaubaubeubeubh)r.}r.(hUhj).hj&hhh}r.(h]h]h]h]r.Ubefore-and-after-comparisonr.ah]r.hauhMhhh]r.(h)r.}r.(hXBefore and After Comparisonr.hj.hj&hhh}r.(h]h]h]h]h]uhMhhh]r.hXBefore and After Comparisonr.r.}r.(hj.hj.ubaubjQ)r.}r.(hUhj.hj&hjTh}r.(jVX-h]h]h]h]h]uhMhhh]r.jX)r.}r.(hX4Before audio pre-processing (t8/y16L7g3m7090_1.pcm) hj.hj&hj[h}r.(h]h]h]h]h]uhNhhh]r.j/)r.}r.(hX3Before audio pre-processing (t8/y16L7g3m7090_1.pcm)r.hj.hj&hj3h}r.(h]h]h]h]h]uhMh]r.hX3Before audio pre-processing (t8/y16L7g3m7090_1.pcm)r.r.}r.(hj.hj.ubaubaubaubj)r.}r.(hX3.. Image:: ../images/Aud_pre_processing_before.png hj.hj&hjh}r.(UuriX,rtos/../images/Aud_pre_processing_before.pngr.h]h]h]h]j}r.U*j.sh]uhMhhh]ubjQ)r.}r.(hUhj.hj&hjTh}r.(jVX-h]h]h]h]h]uhMhhh]r.jX)r.}r.(hX/After audio pre-processing (t8/fileOutput.bin) hj.hj&hj[h}r.(h]h]h]h]h]uhNhhh]r.j/)r.}r.(hX.After audio pre-processing (t8/fileOutput.bin)r.hj.hj&hj3h}r.(h]h]h]h]h]uhMh]r.hX.After audio pre-processing (t8/fileOutput.bin)r.r.}r.(hj.hj.ubaubaubaubj)r.}r.(hX2.. Image:: ../images/Aud_pre_processing_after.png hj.hj&hjh}r.(UuriX+rtos/../images/Aud_pre_processing_after.pngr.h]h]h]h]j}r.U*j.sh]uhMhhh]ubj)r.}r.(hUhj.hj&hjh}r.(h]h]h]h]h]uhMhhh]r.j)r.}r.(hUjKhj.hj&hhh}r.(h]h]h]h]h]uhKhhh]ubaubeubeubeubhj&hhh}r.(h]r.X introductionr.ah]h]h]r.Uid23r.ah]uhKhhh]r.(h)r.}r.(hX Introductionr.hj&hj&hhh}r.(h]h]h]h]h]uhKhhh]r.hX Introductionr.r.}r.(hj.hj.ubaubj/)r.}r.(hX_This page describes the audio pre-processing for speech recognition framework provided in the Processor-SDK for RTOS. This demo illustrates the integration of Beamforming (BF), Adaptive Spectral Noise Reduction (ASNR), Multiple Source Selection (MSS) and Dynamic Range Compression (DRC) components and provides a framework for application development.r.hj&hj&hj3h}r.(h]h]h]h]h]uhKhhh]r.hX_This page describes the audio pre-processing for speech recognition framework provided in the Processor-SDK for RTOS. This demo illustrates the integration of Beamforming (BF), Adaptive Spectral Noise Reduction (ASNR), Multiple Source Selection (MSS) and Dynamic Range Compression (DRC) components and provides a framework for application development.r.r.}r.(hj.hj.ubaubj)r.}r.(hX1.. Image:: ../images/Aud_pre_processing_arch.png hj&hj&hjh}r.(UuriX*rtos/../images/Aud_pre_processing_arch.pngr.h]h]h]h]j}r.U*j.sh]uhK hhh]ubj/)r/}r/(hX+The key functions in this use case include:r/hj&hj&hj3h}r/(h]h]h]h]h]uhKhhh]r/hX+The key functions in this use case include:r/r/}r/(hj/hj/ubaubjQ)r/}r /(hUhj&hj&hjTh}r /(jVX-h]h]h]h]h]uhKhhh]r /(jX)r /}r /(hXVRead 7 canned audio input files from hard drive into buffers in DDR using GEL functionhj/hj&hj[h}r/(h]h]h]h]h]uhNhhh]r/j/)r/}r/(hXVRead 7 canned audio input files from hard drive into buffers in DDR using GEL functionr/hj /hj&hj3h}r/(h]h]h]h]h]uhKh]r/hXVRead 7 canned audio input files from hard drive into buffers in DDR using GEL functionr/r/}r/(hj/hj/ubaubaubjX)r/}r/(hX<Generate 12 virtual mics using BF (Beamforming) (30° apart)r/hj/hj&hj[h}r/(h]h]h]h]h]uhNhhh]r/j/)r/}r/(hj/hj/hj&hj3h}r/(h]h]h]h]h]uhKh]r /hX<Generate 12 virtual mics using BF (Beamforming) (30° apart)r!/r"/}r#/(hj/hj/ubaubaubjX)r$/}r%/(hXBApply ASNR (Adaptive Spectral Noise Reduction) on each virtual micr&/hj/hj&hj[h}r'/(h]h]h]h]h]uhNhhh]r(/j/)r)/}r*/(hj&/hj$/hj&hj3h}r+/(h]h]h]h]h]uhKh]r,/hXBApply ASNR (Adaptive Spectral Noise Reduction) on each virtual micr-/r./}r//(hj&/hj)/ubaubaubjX)r0/}r1/(hX[Use MSS (Multiple Source Selection) to select the best virtual mic from the 12 virtual micshj/hj&hj[h}r2/(h]h]h]h]h]uhNhhh]r3/j/)r4/}r5/(hX[Use MSS (Multiple Source Selection) to select the best virtual mic from the 12 virtual micsr6/hj0/hj&hj3h}r7/(h]h]h]h]h]uhKh]r8/hX[Use MSS (Multiple Source Selection) to select the best virtual mic from the 12 virtual micsr9/r:/}r;/(hj6/hj4/ubaubaubjX)r/hj/hj&hj[h}r?/(h]h]h]h]h]uhNhhh]r@/j/)rA/}rB/(hj>/hj/hjA/ubaubaubjX)rH/}rI/(hXDisplay performance datarJ/hj/hj&hj[h}rK/(h]h]h]h]h]uhNhhh]rL/j/)rM/}rN/(hjJ/hjH/hj&hj3h}rO/(h]h]h]h]h]uhKh]rP/hXDisplay performance datarQ/rR/}rS/(hjJ/hjM/ubaubaubjX)rT/}rU/(hXVWrite one processed audio channel from buffer in DDR to hard drive using GEL function hj/hj&hj[h}rV/(h]h]h]h]h]uhNhhh]rW/j/)rX/}rY/(hXUWrite one processed audio channel from buffer in DDR to hard drive using GEL functionrZ/hjT/hj&hj3h}r[/(h]h]h]h]h]uhKh]r\/hXUWrite one processed audio channel from buffer in DDR to hard drive using GEL functionr]/r^/}r_/(hjZ/hjX/ubaubaubeubj/)r`/}ra/(hX;This demo utilizes other Processor SDK features/components:rb/hj&hj&hj3h}rc/(h]h]h]h]h]uhKhhh]rd/hX;This demo utilizes other Processor SDK features/components:re/rf/}rg/(hjb/hj`/ubaubjQ)rh/}ri/(hUhj&hj&hjTh}rj/(jVX-h]h]h]h]h]uhKhhh]rk/(jX)rl/}rm/(hXK**SYS/BIOS** application utilizing TI-RTOS features for DSP-C66x/C674x corehjh/hj&hj[h}rn/(h]h]h]h]h]uhNhhh]ro/j/)rp/}rq/(hXK**SYS/BIOS** application utilizing TI-RTOS features for DSP-C66x/C674x corehjl/hj&hj3h}rr/(h]h]h]h]h]uhKh]rs/(jW)rt/}ru/(hX **SYS/BIOS**h}rv/(h]h]h]h]h]uhjp/h]rw/hXSYS/BIOSrx/ry/}rz/(hUhjt/ubahj_ubhX? application utilizing TI-RTOS features for DSP-C66x/C674x corer{/r|/}r}/(hX? application utilizing TI-RTOS features for DSP-C66x/C674x corehjp/ubeubaubjX)r~/}r/(hX$**UIA** for instrumentation logging hjh/hj&hj[h}r/(h]h]h]h]h]uhNhhh]r/j/)r/}r/(hX#**UIA** for instrumentation logginghj~/hj&hj3h}r/(h]h]h]h]h]uhKh]r/(jW)r/}r/(hX**UIA**h}r/(h]h]h]h]h]uhj/h]r/hXUIAr/r/}r/(hUhj/ubahj_ubhX for instrumentation loggingr/r/}r/(hX for instrumentation logginghj/ubeubaubeubj/)r/}r/(hXThe audio components are available in AER and VOLIB packages, which are optimized for C66x cores, so this demo not available for all devices. Currently, the following devices and EVMs are supported:r/hj&hj&hj3h}r/(h]h]h]h]h]uhK!hhh]r/hXThe audio components are available in AER and VOLIB packages, which are optimized for C66x cores, so this demo not available for all devices. Currently, the following devices and EVMs are supported:r/r/}r/(hj/hj/ubaubjQ)r/}r/(hUhj&hj&hjTh}r/(jVX-h]h]h]h]h]uhK%hhh]r/(jX)r/}r/(hXAM57x, on the AM572x GP EVMr/hj/hj&hj[h}r/(h]h]h]h]h]uhNhhh]r/j/)r/}r/(hj/hj/hj&hj3h}r/(h]h]h]h]h]uhK%h]r/hXAM57x, on the AM572x GP EVMr/r/}r/(hj/hj/ubaubaubjX)r/}r/(hXSK2G, on the K2G EVM. See TIDEP-0088 (http://www.ti.com/tool/TIDEP-0088) for detailshj/hj&hj[h}r/(h]h]h]h]h]uhNhhh]r/j/)r/}r/(hXSK2G, on the K2G EVM. See TIDEP-0088 (http://www.ti.com/tool/TIDEP-0088) for detailshj/hj&hj3h}r/(h]h]h]h]h]uhK&h]r/(hX%K2G, on the K2G EVM. See TIDEP-0088 (r/r/}r/(hX%K2G, on the K2G EVM. See TIDEP-0088 (hj/ubj)r/}r/(hX!http://www.ti.com/tool/TIDEP-0088r/h}r/(Urefurij/h]h]h]h]h]uhj/h]r/hX!http://www.ti.com/tool/TIDEP-0088r/r/}r/(hUhj/ubahjubhX ) for detailsr/r/}r/(hX ) for detailshj/ubeubaubjX)r/}r/(hX`OMAP-L137, on the OMAP-L137 EVM. See TIDEP-0099 (http://www.ti.com/tool/TIDEP-0099) for details hj/hj&hj[h}r/(h]h]h]h]h]uhNhhh]r/j/)r/}r/(hX_OMAP-L137, on the OMAP-L137 EVM. See TIDEP-0099 (http://www.ti.com/tool/TIDEP-0099) for detailshj/hj&hj3h}r/(h]h]h]h]h]uhK(h]r/(hX1OMAP-L137, on the OMAP-L137 EVM. See TIDEP-0099 (r/r/}r/(hX1OMAP-L137, on the OMAP-L137 EVM. See TIDEP-0099 (hj/ubj)r/}r/(hX!http://www.ti.com/tool/TIDEP-0099r/h}r/(Urefurij/h]h]h]h]h]uhj/h]r/hX!http://www.ti.com/tool/TIDEP-0099r/r/}r/(hUhj/ubahjubhX ) for detailsr/r/}r/(hX ) for detailshj/ubeubaubeubj)r/}r/(hUhj&hj&hjh}r/(h]h]h]h]h]uhK+hhh]r/j)r/}r/(hUjKhj/hj&hhh}r/(h]h]h]h]h]uhKhhh]ubaubeubhj&hj>h}r/(h]UlevelKh]h]r/j.aUsourcej&h]h]UlineKUtypejAuhKhhh]r/j/)r/}r/(hX/Duplicate implicit target name: "introduction".h}r/(h]h]h]h]h]uhj&h]r/hX/Duplicate implicit target name: "introduction".r/r/}r/(hUhj/ubahj3ubaubj)r/}r/(hUhj&hj&hj>h}r/(h]UlevelKh]h]r/j&aUsourcej&h]h]UlineK.UtypejAuhK.hhh]r/j/)r/}r/(hX/Duplicate implicit target name: "requirements".h}r/(h]h]h]h]h]uhj/h]r/hX/Duplicate implicit target name: "requirements".r/r/}r/(hUhj/ubahj3ubaubj)r/}r/(hUhj'hj&hj>h}r/(h]UlevelKh]h]r/j'aUsourcej&h]h]UlineKCUtypejAuhKChhh]r/j/)r/}r/(hX2Duplicate implicit target name: "software design".h}r/(h]h]h]h]h]uhj/h]r/hX2Duplicate implicit target name: "software design".r/r/}r/(hUhj/ubahj3ubaubj)r/}r/(hUhj'hj&hj>h}r/(h]UlevelKh]h]r0j'aUsourcej&h]h]UlineKFUtypejAuhKFhhh]r0j/)r0}r0(hXCDuplicate implicit target name: "more about processing algorithms".h}r0(h]h]h]h]h]uhj/h]r0hXCDuplicate implicit target name: "more about processing algorithms".r0r0}r0(hUhj0ubahj3ubaubj)r 0}r 0(hUhjw(hj&hj>h}r 0(h]UlevelKh]h]r 0j}(aUsourcej&h]h]UlineKjUtypejAuhKjhhh]r 0j/)r0}r0(hX8Duplicate implicit target name: "how to build the demo".h}r0(h]h]h]h]h]uhj 0h]r0hX8Duplicate implicit target name: "how to build the demo".r0r0}r0(hUhj0ubahj3ubaubj)r0}r0(hUhj(hj&hj>h}r0(h]UlevelKh]h]r0j(aUsourcej&h]h]UlineKsUtypejAuhKshhh]r0j/)r0}r0(hX0Duplicate implicit target name: "am572x gp evm".h}r0(h]h]h]h]h]uhj0h]r0hX0Duplicate implicit target name: "am572x gp evm".r0r0}r 0(hUhj0ubahj3ubaubj)r!0}r"0(hUhj)hj&hj>h}r#0(h]UlevelKh]h]r$0j)aUsourcej&h]h]UlineKUtypejAuhKhhh]r%0j/)r&0}r'0(hX6Duplicate implicit target name: "how to run the demo".h}r(0(h]h]h]h]h]uhj!0h]r)0hX6Duplicate implicit target name: "how to run the demo".r*0r+0}r,0(hUhj&0ubahj3ubaubj)r-0}r.0(hUhj)hj&hj>h}r/0(h]UlevelKh]h]r00j)aUsourcej&h]h]UlineKUtypejAuhKhhh]r10j/)r20}r30(hX0Duplicate implicit target name: "am572x gp evm".h}r40(h]h]h]h]h]uhj-0h]r50hX0Duplicate implicit target name: "am572x gp evm".r60r70}r80(hUhj20ubahj3ubaubj)r90}r:0(hUhjf*hj&hj>h}r;0(h]UlevelKh]h]r<0jk*aUsourcej&h]h]UlineKUtypejAuhKhhh]r=0j/)r>0}r?0(hX*Duplicate implicit target name: "k2g evm".h}r@0(h]h]h]h]h]uhj90h]rA0hX*Duplicate implicit target name: "k2g evm".rB0rC0}rD0(hUhj>0ubahj3ubaubj)rE0}rF0(hUhj +hj&hj>h}rG0(h]UlevelKh]h]rH0j+aUsourcej&h]h]UlineM UtypejAuhM hhh]rI0j/)rJ0}rK0(hX0Duplicate implicit target name: "omap-l137 evm".h}rL0(h]h]h]h]h]uhjE0h]rM0hX0Duplicate implicit target name: "omap-l137 evm".rN0rO0}rP0(hUhjJ0ubahj3ubaubj)rQ0}rR0(hUhj+hj&hj>h}rS0(h]UlevelKh]h]rT0j+aUsourcej&h]h]UlineM,UtypejAuhM,hhh]rU0j/)rV0}rW0(hX8Duplicate implicit target name: "how to build the demo".h}rX0(h]h]h]h]h]uhjQ0h]rY0hX8Duplicate implicit target name: "how to build the demo".rZ0r[0}r\0(hUhjV0ubahj3ubaubj)r]0}r^0(hUhj+hj&hj>h}r_0(h]UlevelKh]h]r`0j+aUsourcej&h]h]UlineM4UtypejAuhM4hhh]ra0j/)rb0}rc0(hX*Duplicate implicit target name: "k2g evm".h}rd0(h]h]h]h]h]uhj]0h]re0hX*Duplicate implicit target name: "k2g evm".rf0rg0}rh0(hUhjb0ubahj3ubaubj)ri0}rj0(hUhj@,hj&hj>h}rk0(h]UlevelKh]h]rl0jF,aUsourcej&h]h]UlineMQUtypejAuhMQhhh]rm0j/)rn0}ro0(hX0Duplicate implicit target name: "omap-l137 evm".h}rp0(h]h]h]h]h]uhji0h]rq0hX0Duplicate implicit target name: "omap-l137 evm".rr0rs0}rt0(hUhjn0ubahj3ubaubj)ru0}rv0(hUhj,hj&hj>h}rw0(h]UlevelKh]h]rx0j,aUsourcej&h]h]UlineMnUtypejAuhMnhhh]ry0j/)rz0}r{0(hX6Duplicate implicit target name: "how to run the demo".h}r|0(h]h]h]h]h]uhju0h]r}0hX6Duplicate implicit target name: "how to run the demo".r~0r0}r0(hUhjz0ubahj3ubaubj)r0}r0(hUhj).hj&hj>h}r0(h]UlevelKh]r0jE.ah]r0jD.aUsourcej&h]h]UlineMUtypejY&uhMhhh]r0j/)r0}r0(hX0Inline emphasis start-string without end-string.h}r0(h]h]h]h]h]uhj0h]r0hX0Inline emphasis start-string without end-string.r0r0}r0(hUhj0ubahj3ubaubj)r0}r0(hUhj.hX[internal padding after source/rtos/Examples_and_Demonstrations/Audio_Pre_Processing.rst.incr0hj>h}r0(h]UlevelKh]h]Usourcej&h]h]UlineMUtypejfuhMhhh]r0(j/)r0}r0(hX;Content block expected for the "raw" directive; none found.h}r0(h]h]h]h]h]uhj0h]r0hX;Content block expected for the "raw" directive; none found.r0r0}r0(hUhj0ubahj3ubj)r0}r0(hX.. raw:: html h}r0(jjh]h]h]h]h]uhj0h]r0hX.. raw:: html r0r0}r0(hUhj0ubahjubeubj)r0}r0(hUhh)r0}r0(hUjKhh)r0}r0(hUhhhhhhh}r0(h]h]h]h]r0Uperformance-audio-demor0ah]r0hbauhK!hhh]r0(h)r0}r0(hXPerformance Audio Demor0hj0hhhhh}r0(h]h]h]h]h]uhK!hhh]r0hXPerformance Audio Demor0r0}r0(hj0hj0ubaubj )r0}r0(hXLhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Performance_Audiohj0hj XAsource/rtos/Examples_and_Demonstrations/Performance_Audio.rst.incr0r0}r0bhjh}r0(jjh]h]h]h]h]uhKhhh]r0hXLhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Performance_Audior0r0}r0(hUhj0ubaubj0h)r0}r0(hUjKhj0hj0hhh}r0(h]r0X requirementsr0ah]h]h]r0Uid40r0ah]uhKhhh]r0(h)r0}r0(hX Requirementsr0hj0hj0hhh}r0(h]h]h]h]h]uhKhhh]r0hX Requirementsr0r0}r0(hj0hj0ubaubj/)r0}r0(hXHardwarer0hj0hj0hj3h}r0(h]h]h]h]h]uhKhhh]r0hXHardwarer0r0}r0(hj0hj0ubaubjQ)r0}r0(hUhj0hj0hjTh}r0(jVX-h]h]h]h]h]uhKhhh]r0(jX)r0}r0(hXF`66AK2Gx Evaluation Module (EVMK2G) `__r0hj0hj0hj[h}r0(h]h]h]h]h]uhNhhh]r0j/)r0}r0(hj0hj0hj0hj3h}r0(h]h]h]h]h]uhKh]r0j)r0}r0(hj0h}r0(UnameX"66AK2Gx Evaluation Module (EVMK2G)jXhttp://www.ti.com/tool/evmk2gh]h]h]h]h]uhj0h]r0hX"66AK2Gx Evaluation Module (EVMK2G)r0r0}r0(hUhj0ubahjubaubaubjX)r0}r0(hXH`66AK2Gx Audio Daughter Card (AUDK2G) `__r0hj0hj0hj[h}r0(h]h]h]h]h]uhNhhh]r0j/)r0}r0(hj0hj0hj0hj3h}r0(h]h]h]h]h]uhKh]r0j)r0}r0(hj0h}r0(UnameX$66AK2Gx Audio Daughter Card (AUDK2G)jXhttp://www.ti.com/tool/AUDK2Gh]h]h]h]h]uhj0h]r0hX$66AK2Gx Audio Daughter Card (AUDK2G)r0r0}r0(hUhj0ubahjubaubaubjX)r0}r0(hX`Momentum Data Systems (MDS) HDMI repeater kit `__ (optional). Contact contactsales@mds.com for more information. hj0hj0hj[h}r0(h]h]h]h]h]uhNhhh]r0j/)r0}r0(hX`Momentum Data Systems (MDS) HDMI repeater kit `__ (optional). Contact contactsales@mds.com for more information.hj0hj0hj3h}r1(h]h]h]h]h]uhKh]r1(j)r1}r1(hXZ`Momentum Data Systems (MDS) HDMI repeater kit `__h}r1(UnameX-Momentum Data Systems (MDS) HDMI repeater kitjX&http://www.mds.com/products/hdmivideo/h]h]h]h]h]uhj0h]r1hX-Momentum Data Systems (MDS) HDMI repeater kitr1r1}r1(hUhj1ubahjubhX (optional). Contact r 1r 1}r 1(hX (optional). Contact hj0ubj)r 1}r 1(hXcontactsales@mds.comh}r1(UrefuriXmailto:contactsales@mds.comh]h]h]h]h]uhj0h]r1hXcontactsales@mds.comr1r1}r1(hUhj 1ubahjubhX for more information.r1r1}r1(hX for more information.hj0ubeubaubeubj/)r1}r1(hXSoftwarer1hj0hj0hj3h}r1(h]h]h]h]h]uhKhhh]r1hXSoftwarer1r1}r1(hj1hj1ubaubjQ)r1}r1(hUhj0hj0hjTh}r 1(jVX-h]h]h]h]h]uhK!hhh]r!1(jX)r"1}r#1(hXCode Composer Studio (CCS)r$1hj1hj0hj[h}r%1(h]h]h]h]h]uhNhhh]r&1j/)r'1}r(1(hj$1hj"1hj0hj3h}r)1(h]h]h]h]h]uhK!h]r*1hXCode Composer Studio (CCS)r+1r,1}r-1(hj$1hj'1ubaubaubjX)r.1}r/1(hX-Python 2.7.14 and Sed 4.2.1 for Windows only hj1hj0hj[h}r01(h]h]h]h]h]uhNhhh]r11j/)r21}r31(hX,Python 2.7.14 and Sed 4.2.1 for Windows onlyr41hj.1hj0hj3h}r51(h]h]h]h]h]uhK"h]r61hX,Python 2.7.14 and Sed 4.2.1 for Windows onlyr71r81}r91(hj41hj21ubaubaubeubeubh)r:1}r;1(hUjKhj0hj0hhh}r<1(h]r=1Xhow to run the demor>1ah]h]h]r?1Uid41r@1ah]uhK%hhh]rA1(h)rB1}rC1(hXHow to Run the DemorD1hj:1hj0hhh}rE1(h]h]h]h]h]uhK%hhh]rF1hXHow to Run the DemorG1rH1}rI1(hjD1hjB1ubaubh)rJ1}rK1(hUhj:1hj0hhh}rL1(h]h]h]h]rM1Uhardware-setuprN1ah]rO1hauhK(hhh]rP1(h)rQ1}rR1(hXHardware SetuprS1hjJ1hj0hhh}rT1(h]h]h]h]h]uhK(hhh]rU1hXHardware SetuprV1rW1}rX1(hjS1hjQ1ubaubjQ)rY1}rZ1(hUhjJ1hj0hjTh}r[1(jVX-h]h]h]h]h]uhK*hhh]r\1(jX)r]1}r^1(hXXSetup K2G EVM according to the `Quick Start Guide `__r_1hjY1hj0hj[h}r`1(h]h]h]h]h]uhNhhh]ra1j/)rb1}rc1(hj_1hj]1hj0hj3h}rd1(h]h]h]h]h]uhK*h]re1(hXSetup K2G EVM according to the rf1rg1}rh1(hXSetup K2G EVM according to the hjb1ubj)ri1}rj1(hX9`Quick Start Guide `__h}rk1(UnameXQuick Start GuidejX!http://www.ti.com/lit/pdf/sprw292h]h]h]h]h]uhjb1h]rl1hXQuick Start Guiderm1rn1}ro1(hUhji1ubahjubeubaubjX)rp1}rq1(hXSetup Audio Daughter Card according to the `Quick Start Guide `__ and attach it to the K2G EVM. The Audio Daughter Card connects to the EVM through the JP1 “Audio Expansion” and J12 “Serial Expansion” connectors on EVM.hjY1hj0hj[h}rr1(h]h]h]h]h]uhNhhh]rs1j/)rt1}ru1(hXSetup Audio Daughter Card according to the `Quick Start Guide `__ and attach it to the K2G EVM. The Audio Daughter Card connects to the EVM through the JP1 “Audio Expansion” and J12 “Serial Expansion” connectors on EVM.hjp1hj0hj3h}rv1(h]h]h]h]h]uhK+h]rw1(hX+Setup Audio Daughter Card according to the rx1ry1}rz1(hX+Setup Audio Daughter Card according to the hjt1ubj)r{1}r|1(hX9`Quick Start Guide `__h}r}1(UnameXQuick Start GuidejX!http://www.ti.com/lit/pdf/sprw287h]h]h]h]h]uhjt1h]r~1hXQuick Start Guider1r1}r1(hUhj{1ubahjubhX and attach it to the K2G EVM. The Audio Daughter Card connects to the EVM through the JP1 “Audio Expansion” and J12 “Serial Expansion” connectors on EVM.r1r1}r1(hX and attach it to the K2G EVM. The Audio Daughter Card connects to the EVM through the JP1 “Audio Expansion” and J12 “Serial Expansion” connectors on EVM.hjt1ubeubaubjX)r1}r1(hXXConnect an analog player output to the ADC_IN0-3 input jacks on the Audio Daughter Card.r1hjY1hj0hj[h}r1(h]h]h]h]h]uhNhhh]r1j/)r1}r1(hj1hj1hj0hj3h}r1(h]h]h]h]h]uhK-h]r1hXXConnect an analog player output to the ADC_IN0-3 input jacks on the Audio Daughter Card.r1r1}r1(hj1hj1ubaubaubjX)r1}r1(hXConnect a DVD/Blue-Ray player digital output (S/PDIF) to the MOD1 Digital Input (Optical) connector on the Audio Daughter Card.r1hjY1hj0hj[h}r1(h]h]h]h]h]uhNhhh]r1j/)r1}r1(hj1hj1hj0hj3h}r1(h]h]h]h]h]uhK.h]r1hXConnect a DVD/Blue-Ray player digital output (S/PDIF) to the MOD1 Digital Input (Optical) connector on the Audio Daughter Card.r1r1}r1(hj1hj1ubaubaubjX)r1}r1(hXGConnect speakers to DAC_OUT0-3 output jacks on the Audio Daughter Card.r1hjY1hj0hj[h}r1(h]h]h]h]h]uhNhhh]r1j/)r1}r1(hj1hj1hj0hj3h}r1(h]h]h]h]h]uhK/h]r1hXGConnect speakers to DAC_OUT0-3 output jacks on the Audio Daughter Card.r1r1}r1(hj1hj1ubaubaubjX)r1}r1(hXGConnect a COM port on PC to UART0 port on K2G EVM using a RS-232 cable.r1hjY1hj0hj[h}r1(h]h]h]h]h]uhNhhh]r1j/)r1}r1(hj1hj1hj0hj3h}r1(h]h]h]h]h]uhK0h]r1hXGConnect a COM port on PC to UART0 port on K2G EVM using a RS-232 cable.r1r1}r1(hj1hj1ubaubaubjX)r1}r1(hXdConnect XDS2xx USB Onboard Debug Probe to a PC USB port using the USB cable delivered with the EVM. hjY1hj0hj[h}r1(h]h]h]h]h]uhNhhh]r1j/)r1}r1(hXcConnect XDS2xx USB Onboard Debug Probe to a PC USB port using the USB cable delivered with the EVM.r1hj1hj0hj3h}r1(h]h]h]h]h]uhK1h]r1hXcConnect XDS2xx USB Onboard Debug Probe to a PC USB port using the USB cable delivered with the EVM.r1r1}r1(hj1hj1ubaubaubeubj)r1}r1(hXB.. Image:: ../images/pa_k2g_EVM_DC_setup.png :scale: 70 % hjJ1hj0hjh}r1(UscaleKFUuriX&rtos/../images/pa_k2g_EVM_DC_setup.pngr1h]h]h]h]j}r1U*j1sh]uhNhhh]ubeubh)r1}r1(hUhj:1hj0hhh}r1(h]h]h]h]r1Uoptional-setup-for-hdmir1ah]r1hauhK7hhh]r1(h)r1}r1(hXOptional Setup for HDMIr1hj1hj0hhh}r1(h]h]h]h]h]uhK7hhh]r1hXOptional Setup for HDMIr1r1}r1(hj1hj1ubaubjQ)r1}r1(hUhj1hj0hjTh}r1(jVX-h]h]h]h]h]uhK9hhh]r1(jX)r1}r1(hXConnect the MDS HSR41P to the MDS IFB. - Connect HSR41P J4 “Main” header to the IFB J5 “Main” header using the short 26-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between HSR41P J4 Pin1 and IFB J5 Pin1. - Connect HSR41P J7 “Sec” header to the IFB J2 “Sec” header using the short 34-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between HSR41P J7 Pin1 and IFB J2 Pin1. hj1hNhj[h}r1(h]h]h]h]h]uhNhhh]r1(j/)r1}r1(hX&Connect the MDS HSR41P to the MDS IFB.r1hj1hj0hj3h}r1(h]h]h]h]h]uhK9h]r1hX&Connect the MDS HSR41P to the MDS IFB.r1r1}r1(hj1hj1ubaubjQ)r1}r1(hUh}r1(jVX-h]h]h]h]h]uhj1h]r1(jX)r1}r1(hXConnect HSR41P J4 “Main” header to the IFB J5 “Main” header using the short 26-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between HSR41P J4 Pin1 and IFB J5 Pin1.h}r1(h]h]h]h]h]uhj1h]r1j/)r1}r1(hXConnect HSR41P J4 “Main” header to the IFB J5 “Main” header using the short 26-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between HSR41P J4 Pin1 and IFB J5 Pin1.r1hj1hj0hj3h}r1(h]h]h]h]h]uhK;h]r1hXConnect HSR41P J4 “Main” header to the IFB J5 “Main” header using the short 26-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between HSR41P J4 Pin1 and IFB J5 Pin1.r1r1}r1(hj1hj1ubaubahj[ubjX)r1}r1(hXConnect HSR41P J7 “Sec” header to the IFB J2 “Sec” header using the short 34-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between HSR41P J7 Pin1 and IFB J2 Pin1. h}r1(h]h]h]h]h]uhj1h]r1j/)r1}r1(hXConnect HSR41P J7 “Sec” header to the IFB J2 “Sec” header using the short 34-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between HSR41P J7 Pin1 and IFB J2 Pin1.r1hj1hj0hj3h}r1(h]h]h]h]h]uhK=h]r1hXConnect HSR41P J7 “Sec” header to the IFB J2 “Sec” header using the short 34-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between HSR41P J7 Pin1 and IFB J2 Pin1.r1r1}r2(hj1hj1ubaubahj[ubehjTubeubjX)r2}r2(hXConnect the MDS IFB to the Audio Daughter Card. Connect IFB J3 “McASP0” header to Audio Daughter Card “I2S Header” using the supplied long 34-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between IFB J3 Pin1 and Audio Daughter Card “I2S Header” Pin1 (note the “I2S Header” is only 32 pins, so the two wires on the ribbon cable opposite Pin1 are unused).hj1hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hXConnect the MDS IFB to the Audio Daughter Card. Connect IFB J3 “McASP0” header to Audio Daughter Card “I2S Header” using the supplied long 34-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between IFB J3 Pin1 and Audio Daughter Card “I2S Header” Pin1 (note the “I2S Header” is only 32 pins, so the two wires on the ribbon cable opposite Pin1 are unused).r2hj2hj0hj3h}r2(h]h]h]h]h]uhK@h]r 2hXConnect the MDS IFB to the Audio Daughter Card. Connect IFB J3 “McASP0” header to Audio Daughter Card “I2S Header” using the supplied long 34-wire ribbon cable. Ensure the red wire on the ribbon cable is connected between IFB J3 Pin1 and Audio Daughter Card “I2S Header” Pin1 (note the “I2S Header” is only 32 pins, so the two wires on the ribbon cable opposite Pin1 are unused).r 2r 2}r 2(hj2hj2ubaubaubjX)r 2}r2(hXConnect HDMI cable from audio source (e.g. Blu-ray player) to HSR41P J6 “IN”. Connect HDMI cable to audio sink (e.g. HDMI enabled monitor) from HSR41P J8 “HDMI OUT”.hj1hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hXConnect HDMI cable from audio source (e.g. Blu-ray player) to HSR41P J6 “IN”. Connect HDMI cable to audio sink (e.g. HDMI enabled monitor) from HSR41P J8 “HDMI OUT”.r2hj 2hj0hj3h}r2(h]h]h]h]h]uhKCh]r2hXConnect HDMI cable from audio source (e.g. Blu-ray player) to HSR41P J6 “IN”. Connect HDMI cable to audio sink (e.g. HDMI enabled monitor) from HSR41P J8 “HDMI OUT”.r2r2}r2(hj2hj2ubaubaubjX)r2}r2(hX=Connect 5V AC to USB power supply to IFB power connector J1. hj1hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hX<Connect 5V AC to USB power supply to IFB power connector J1.r2hj2hj0hj3h}r 2(h]h]h]h]h]uhKEh]r!2hX<Connect 5V AC to USB power supply to IFB power connector J1.r"2r#2}r$2(hj2hj2ubaubaubeubj)r%2}r&2(hXG.. Image:: ../images/pa_k2g_EVM_DC_HDMI_setup.png :scale: 70 % hj1hj0hjh}r'2(UscaleKFUuriX+rtos/../images/pa_k2g_EVM_DC_HDMI_setup.pngr(2h]h]h]h]j}r)2U*j(2sh]uhNhhh]ubeubh)r*2}r+2(hUhj:1hj0hhh}r,2(h]h]h]h]r-2Usoftware-and-tools-setupr.2ah]r/2h auhKKhhh]r02(h)r12}r22(hXSoftware and Tools Setupr32hj*2hj0hhh}r42(h]h]h]h]h]uhKKhhh]r52hXSoftware and Tools Setupr62r72}r82(hj32hj12ubaubj/)r92}r:2(hX+CCS is required to load the binaries and run the demo. Sed and Python are required for run time reselection of input/output, control and reconfiguration of decoding and/or audio stream procesing, etc. One may choose to run the demo first and then install Sed and Python for run-time reconfiguration.r;2hj*2hj0hj3h}r<2(h]h]h]h]h]uhKLhhh]r=2hX+CCS is required to load the binaries and run the demo. Sed and Python are required for run time reselection of input/output, control and reconfiguration of decoding and/or audio stream procesing, etc. One may choose to run the demo first and then install Sed and Python for run-time reconfiguration.r>2r?2}r@2(hj;2hj92ubaubjQ)rA2}rB2(hUhj*2hj0hjTh}rC2(jVX-h]h]h]h]h]uhKOhhh]rD2(jX)rE2}rF2(hXQDownload and Install CCS (download link available at Processor SDK download page)rG2hjA2hj0hj[h}rH2(h]h]h]h]h]uhNhhh]rI2j/)rJ2}rK2(hjG2hjE2hj0hj3h}rL2(h]h]h]h]h]uhKOh]rM2hXQDownload and Install CCS (download link available at Processor SDK download page)rN2rO2}rP2(hjG2hjJ2ubaubaubjX)rQ2}rR2(hXhObtain Sed 4.2.1 from http://gnuwin32.sourceforge.net/packages/sed.htm, executable installer, sed-4.2.1-setup.exe (click on Setup next to "Complete package, except sources" and download will start). Install it to c:/PA_Tools/GnuWin32 (or change installation location in /demos/performance-audio/src/setup_build_env/setup_env.bat.hjA2hj0hj[h}rS2(h]h]h]h]h]uhNhhh]rT2j/)rU2}rV2(hXhObtain Sed 4.2.1 from http://gnuwin32.sourceforge.net/packages/sed.htm, executable installer, sed-4.2.1-setup.exe (click on Setup next to "Complete package, except sources" and download will start). Install it to c:/PA_Tools/GnuWin32 (or change installation location in /demos/performance-audio/src/setup_build_env/setup_env.bat.hjQ2hj0hj3h}rW2(h]h]h]h]h]uhKPh]rX2(hXObtain Sed 4.2.1 from rY2rZ2}r[2(hXObtain Sed 4.2.1 from hjU2ubj)r\2}r]2(hX0http://gnuwin32.sourceforge.net/packages/sed.htmr^2h}r_2(Urefurij^2h]h]h]h]h]uhjU2h]r`2hX0http://gnuwin32.sourceforge.net/packages/sed.htmra2rb2}rc2(hUhj\2ubahjubhX", executable installer, sed-4.2.1-setup.exe (click on Setup next to "Complete package, except sources" and download will start). Install it to c:/PA_Tools/GnuWin32 (or change installation location in /demos/performance-audio/src/setup_build_env/setup_env.bat.rd2re2}rf2(hX", executable installer, sed-4.2.1-setup.exe (click on Setup next to "Complete package, except sources" and download will start). Install it to c:/PA_Tools/GnuWin32 (or change installation location in /demos/performance-audio/src/setup_build_env/setup_env.bat.hjU2ubeubaubjX)rg2}rh2(hX]Obtain Python 2.7.14 from https://www.python.org/downloads/release/python-2714/ (click on Windows x86 MSI installer, and the installer python-2.7.14.msi will be downloaded automatically). Install it to c:/PA_Tools/Python27 (or change installation location in /demos/performance-audio/src/setup_build_env/setup_env.bat.hjA2hj0hj[h}ri2(h]h]h]h]h]uhNhhh]rj2j/)rk2}rl2(hX]Obtain Python 2.7.14 from https://www.python.org/downloads/release/python-2714/ (click on Windows x86 MSI installer, and the installer python-2.7.14.msi will be downloaded automatically). Install it to c:/PA_Tools/Python27 (or change installation location in /demos/performance-audio/src/setup_build_env/setup_env.bat.hjg2hj0hj3h}rm2(h]h]h]h]h]uhKTh]rn2(hXObtain Python 2.7.14 from ro2rp2}rq2(hXObtain Python 2.7.14 from hjk2ubj)rr2}rs2(hX5https://www.python.org/downloads/release/python-2714/rt2h}ru2(Urefurijt2h]h]h]h]h]uhjk2h]rv2hX5https://www.python.org/downloads/release/python-2714/rw2rx2}ry2(hUhjr2ubahjubhX (click on Windows x86 MSI installer, and the installer python-2.7.14.msi will be downloaded automatically). Install it to c:/PA_Tools/Python27 (or change installation location in /demos/performance-audio/src/setup_build_env/setup_env.bat.rz2r{2}r|2(hX (click on Windows x86 MSI installer, and the installer python-2.7.14.msi will be downloaded automatically). Install it to c:/PA_Tools/Python27 (or change installation location in /demos/performance-audio/src/setup_build_env/setup_env.bat.hjk2ubeubaubjX)r}2}r~2(hXOnce Python is installed, open a Command Prompt and go to /demos/performance-audio/src/setup_build_env. Run setup_env.bat, and then go to /demos/performance-audio/tools/ and run setup.bat to install PyAlpha dependencies. Note: since tools/setup.bat will download Python packages from the web, one needs to make sure that the proxy environment variables are set properly. hjA2hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hXOnce Python is installed, open a Command Prompt and go to /demos/performance-audio/src/setup_build_env. Run setup_env.bat, and then go to /demos/performance-audio/tools/ and run setup.bat to install PyAlpha dependencies. Note: since tools/setup.bat will download Python packages from the web, one needs to make sure that the proxy environment variables are set properly.r2hj}2hj0hj3h}r2(h]h]h]h]h]uhKXh]r2hXOnce Python is installed, open a Command Prompt and go to /demos/performance-audio/src/setup_build_env. Run setup_env.bat, and then go to /demos/performance-audio/tools/ and run setup.bat to install PyAlpha dependencies. Note: since tools/setup.bat will download Python packages from the web, one needs to make sure that the proxy environment variables are set properly.r2r2}r2(hj2hj2ubaubaubeubeubh)r2}r2(hUhj:1hj0hhh}r2(h]h]h]h]r2Uload-and-run-pre-built-binariesr2ah]r2h(auhK^hhh]r2(h)r2}r2(hXLoad and Run Pre-built Binariesr2hj2hj0hhh}r2(h]h]h]h]h]uhK^hhh]r2hXLoad and Run Pre-built Binariesr2r2}r2(hj2hj2ubaubj/)r2}r2(hXQThis demo can be run by loading and running the DSP and ARM binaries through CCS:r2hj2hj0hj3h}r2(h]h]h]h]h]uhK`hhh]r2hXQThis demo can be run by loading and running the DSP and ARM binaries through CCS:r2r2}r2(hj2hj2ubaubj)r2}r2(hUhj2hj0hjh}r2(jU.h]h]h]jUh]h]jjuhKbhhh]r2(jX)r2}r2(hX$Click View -> Target Configurations.r2hj2hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hj2hj2hj0hj3h}r2(h]h]h]h]h]uhKbh]r2hX$Click View -> Target Configurations.r2r2}r2(hj2hj2ubaubaubjX)r2}r2(hX]In the Target Configurations window, right click and then click Import Target Configurations.r2hj2hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hj2hj2hj0hj3h}r2(h]h]h]h]h]uhKch]r2hX]In the Target Configurations window, right click and then click Import Target Configurations.r2r2}r2(hj2hj2ubaubaubjX)r2}r2(hXBrowse to /demos/performance-audio/src/pasrc/test_dsp/targetConfigs, click K2GEVM.ccxml and then click Open.r2hj2hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hj2hj2hj0hj3h}r2(h]h]h]h]h]uhKdh]r2hXBrowse to /demos/performance-audio/src/pasrc/test_dsp/targetConfigs, click K2GEVM.ccxml and then click Open.r2r2}r2(hj2hj2ubaubaubjX)r2}r2(hXjIn the Target Configurations window, right-click on K2GEVM.ccxml and select Launch Selected Configuration.r2hj2hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hj2hj2hj0hj3h}r2(h]h]h]h]h]uhKeh]r2hXjIn the Target Configurations window, right-click on K2GEVM.ccxml and select Launch Selected Configuration.r2r2}r2(hj2hj2ubaubaubjX)r2}r2(hXIn the Debug window, right-click on the C66x and select Connect Target. The output from the GEL code invoked on the target connection can be observed in the Console output window. The final line of this output should read "C66xx: GEL Output: DDR3A initialization complete".r2hj2hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hj2hj2hj0hj3h}r2(h]h]h]h]h]uhKfh]r2hXIn the Debug window, right-click on the C66x and select Connect Target. The output from the GEL code invoked on the target connection can be observed in the Console output window. The final line of this output should read "C66xx: GEL Output: DDR3A initialization complete".r2r2}r2(hj2hj2ubaubaubjX)r2}r2(hXIn the Debug window, right-click on the CortexA15 and select Connect Target. The output from the GEL code invoked on the target connection can be observed in the Console output window. The final line of this output should read "CortexA15: GEL Output: A15 non secure mode entered".r2hj2hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hj2hj2hj0hj3h}r2(h]h]h]h]h]uhKgh]r2hXIn the Debug window, right-click on the CortexA15 and select Connect Target. The output from the GEL code invoked on the target connection can be observed in the Console output window. The final line of this output should read "CortexA15: GEL Output: A15 non secure mode entered".r2r2}r2(hj2hj2ubaubaubjX)r2}r2(hXIn the Debug Window, click on the C66x. Then open Run->Load->Load Program. In the Load Program window, click on Browse and double click /demos/performance-audio/prebuilt-binaries/test_dsp.xe66. Then click OK to load the C66x binary.r2hj2hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hj2hj2hj0hj3h}r2(h]h]h]h]h]uhKhh]r2hXIn the Debug Window, click on the C66x. Then open Run->Load->Load Program. In the Load Program window, click on Browse and double click /demos/performance-audio/prebuilt-binaries/test_dsp.xe66. Then click OK to load the C66x binary.r2r2}r2(hj2hj2ubaubaubjX)r2}r2(hXIn the Debug Window, click on the CortexA15. Then open Run->Load->Load Program. In the Load Program window, click on Browse and double click /demos/performance-audio/prebuilt-binaries/test_arm.xa15fg. Then click OK to load the CortexA15 binary.r2hj2hj0hj[h}r2(h]h]h]h]h]uhNhhh]r2j/)r2}r2(hj2hj2hj0hj3h}r2(h]h]h]h]h]uhKih]r3hXIn the Debug Window, click on the CortexA15. Then open Run->Load->Load Program. In the Load Program window, click on Browse and double click /demos/performance-audio/prebuilt-binaries/test_arm.xa15fg. Then click OK to load the CortexA15 binary.r3r3}r3(hj2hj2ubaubaubjX)r3}r3(hXWIn the Debug window, click on the C66x. Then Open Run->Resume to execute the C66x code.r3hj2hj0hj[h}r3(h]h]h]h]h]uhNhhh]r3j/)r 3}r 3(hj3hj3hj0hj3h}r 3(h]h]h]h]h]uhKjh]r 3hXWIn the Debug window, click on the C66x. Then Open Run->Resume to execute the C66x code.r 3r3}r3(hj3hj 3ubaubaubjX)r3}r3(hXaIn the Debug window, click on the CortexA15. Then Open Run->Resume to execute the CortexA15 code.r3hj2hj0hj[h}r3(h]h]h]h]h]uhNhhh]r3j/)r3}r3(hj3hj3hj0hj3h}r3(h]h]h]h]h]uhKkh]r3hXaIn the Debug window, click on the CortexA15. Then Open Run->Resume to execute the CortexA15 code.r3r3}r3(hj3hj3ubaubaubjX)r3}r3(hXThe CIO Console output window should display memory usage statistics. The final line of output should display the memory usage summary for the EXT NC SHM heap.r3hj2hj0hj[h}r3(h]h]h]h]h]uhNhhh]r 3j/)r!3}r"3(hj3hj3hj0hj3h}r#3(h]h]h]h]h]uhKlh]r$3hXThe CIO Console output window should display memory usage statistics. The final line of output should display the memory usage summary for the EXT NC SHM heap.r%3r&3}r'3(hj3hj!3ubaubaubjX)r(3}r)3(hXDefault input interface is S/PDIF. Play music on the media player with S/PDIF output. Sound should come out of speakers connected to analog out DAC_OUT0. hj2hj0hj[h}r*3(h]h]h]h]h]uhNhhh]r+3j/)r,3}r-3(hXDefault input interface is S/PDIF. Play music on the media player with S/PDIF output. Sound should come out of speakers connected to analog out DAC_OUT0.r.3hj(3hj0hj3h}r/3(h]h]h]h]h]uhKmh]r03hXDefault input interface is S/PDIF. Play music on the media player with S/PDIF output. Sound should come out of speakers connected to analog out DAC_OUT0.r13r23}r33(hj.3hj,3ubaubaubeubj/)r43}r53(hX Limitations:r63hj2hj0hj3h}r73(h]h]h]h]h]uhKohhh]r83hX Limitations:r93r:3}r;3(hj63hj43ubaubjQ)r<3}r=3(hUhj2hj0hjTh}r>3(jVX-h]h]h]h]h]uhKqhhh]r?3jX)r@3}rA3(hXIf code needs to be reload and rerun, one must terminate the CCS debugging session, power cycle the EVM, and start a new CCS debugging session. Then repeat from step 4 listed above. hj<3hj0hj[h}rB3(h]h]h]h]h]uhNhhh]rC3j/)rD3}rE3(hXIf code needs to be reload and rerun, one must terminate the CCS debugging session, power cycle the EVM, and start a new CCS debugging session. Then repeat from step 4 listed above.rF3hj@3hj0hj3h}rG3(h]h]h]h]h]uhKqh]rH3hXIf code needs to be reload and rerun, one must terminate the CCS debugging session, power cycle the EVM, and start a new CCS debugging session. Then repeat from step 4 listed above.rI3rJ3}rK3(hjF3hjD3ubaubaubaubeubh)rL3}rM3(hUhj:1hj0hhh}rN3(h]h]h]h]rO3U(run-time-reconfiguration-in-windows-onlyrP3ah]rQ3hauhKuhhh]rR3(h)rS3}rT3(hX*Run-time Reconfiguration (in Windows only)rU3hjL3hj0hhh}rV3(h]h]h]h]h]uhKuhhh]rW3hX*Run-time Reconfiguration (in Windows only)rX3rY3}rZ3(hjU3hjS3ubaubj/)r[3}r\3(hXrPlease make sure src/setup_build_env/setup_env.bat and tools/setup.bat have both been run to setup the tools path.r]3hjL3hj0hj3h}r^3(h]h]h]h]h]uhKvhhh]r_3hXrPlease make sure src/setup_build_env/setup_env.bat and tools/setup.bat have both been run to setup the tools path.r`3ra3}rb3(hj]3hj[3ubaubj/)rc3}rd3(hXIOutput volume can be changed at run-time via Python scripts through UART:re3hjL3hj0hj3h}rf3(h]h]h]h]h]uhKxhhh]rg3hXIOutput volume can be changed at run-time via Python scripts through UART:rh3ri3}rj3(hje3hjc3ubaubjQ)rk3}rl3(hUhjL3hj0hjTh}rm3(jVX-h]h]h]h]h]uhKzhhh]rn3jX)ro3}rp3(hXOpen a windows command prompt, go to tools folder and use the following command to change output volume: - python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 writeVOLControlMasterN(), where is level adjustment from default in units of 0.5dB. For example, python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 writeVOLControlMasterN(-24) lowers the level by 12dB from default. hjk3hNhj[h}rq3(h]h]h]h]h]uhNhhh]rr3(j/)rs3}rt3(hXhOpen a windows command prompt, go to tools folder and use the following command to change output volume:ru3hjo3hj0hj3h}rv3(h]h]h]h]h]uhKzh]rw3hXhOpen a windows command prompt, go to tools folder and use the following command to change output volume:rx3ry3}rz3(hju3hjs3ubaubjQ)r{3}r|3(hUh}r}3(jVX-h]h]h]h]h]uhjo3h]r~3jX)r3}r3(hX5python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 writeVOLControlMasterN(), where is level adjustment from default in units of 0.5dB. For example, python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 writeVOLControlMasterN(-24) lowers the level by 12dB from default. h}r3(h]h]h]h]h]uhj{3h]r3j/)r3}r3(hX4python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 writeVOLControlMasterN(), where is level adjustment from default in units of 0.5dB. For example, python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 writeVOLControlMasterN(-24) lowers the level by 12dB from default.r3hj3hj0hj3h}r3(h]h]h]h]h]uhK|h]r3hX4python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 writeVOLControlMasterN(), where is level adjustment from default in units of 0.5dB. For example, python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 writeVOLControlMasterN(-24) lowers the level by 12dB from default.r3r3}r3(hj3hj3ubaubahj[ubahjTubeubaubj/)r3}r3(hXInput interface is S/PDIF by default and can be reslected at run-time (Note: interface can be reselected only when playing is stopped):r3hjL3hj0hj3h}r3(h]h]h]h]h]uhKhhh]r3hXInput interface is S/PDIF by default and can be reslected at run-time (Note: interface can be reselected only when playing is stopped):r3r3}r3(hj3hj3ubaubjQ)r3}r3(hUhjL3hj0hjTh}r3(jVX-h]h]h]h]h]uhKhhh]r3(jX)r3}r3(hXSwitch to HDMI input: - Stop playing - Issue command to change to HDMI input: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIInHDMI - Play again using digital player with HDMI output hj3hNhj[h}r3(h]h]h]h]h]uhNhhh]r3(j/)r3}r3(hXSwitch to HDMI input:r3hj3hj0hj3h}r3(h]h]h]h]h]uhKh]r3hXSwitch to HDMI input:r3r3}r3(hj3hj3ubaubjQ)r3}r3(hUh}r3(jVX-h]h]h]h]h]uhj3h]r3(jX)r3}r3(hX Stop playingr3h}r3(h]h]h]h]h]uhj3h]r3j/)r3}r3(hj3hj3hj0hj3h}r3(h]h]h]h]h]uhKh]r3hX Stop playingr3r3}r3(hj3hj3ubaubahj[ubjX)r3}r3(hXnIssue command to change to HDMI input: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIInHDMIh}r3(h]h]h]h]h]uhj3h]r3j/)r3}r3(hXnIssue command to change to HDMI input: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIInHDMIr3hj3hj0hj3h}r3(h]h]h]h]h]uhKh]r3hXnIssue command to change to HDMI input: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIInHDMIr3r3}r3(hj3hj3ubaubahj[ubjX)r3}r3(hX1Play again using digital player with HDMI output h}r3(h]h]h]h]h]uhj3h]r3j/)r3}r3(hX0Play again using digital player with HDMI outputr3hj3hj0hj3h}r3(h]h]h]h]h]uhKh]r3hX0Play again using digital player with HDMI outputr3r3}r3(hj3hj3ubaubahj[ubehjTubeubjX)r3}r3(hXGSwitch to analog input: - Stop playing - Issue command to change output to ADC slave: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIOutAnalogSlave - Issue command to change input to analog: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIInAnalog - Play again using analog player hj3hNhj[h}r3(h]h]h]h]h]uhNhhh]r3(j/)r3}r3(hXSwitch to analog input:r3hj3hj0hj3h}r3(h]h]h]h]h]uhKh]r3hXSwitch to analog input:r3r3}r3(hj3hj3ubaubjQ)r3}r3(hUh}r3(jVX-h]h]h]h]h]uhj3h]r3(jX)r3}r3(hX Stop playingr3h}r3(h]h]h]h]h]uhj3h]r3j/)r3}r3(hj3hj3hj0hj3h}r3(h]h]h]h]h]uhKh]r3hX Stop playingr3r3}r3(hj3hj3ubaubahj[ubjX)r3}r3(hX|Issue command to change output to ADC slave: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIOutAnalogSlaveh}r3(h]h]h]h]h]uhj3h]r3j/)r3}r3(hX|Issue command to change output to ADC slave: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIOutAnalogSlaver3hj3hj0hj3h}r3(h]h]h]h]h]uhKh]r3hX|Issue command to change output to ADC slave: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIOutAnalogSlaver3r3}r3(hj3hj3ubaubahj[ubjX)r3}r3(hXrIssue command to change input to analog: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIInAnalogh}r3(h]h]h]h]h]uhj3h]r3j/)r3}r3(hXrIssue command to change input to analog: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIInAnalogr3hj3hj0hj3h}r3(h]h]h]h]h]uhKh]r3hXrIssue command to change input to analog: python.exe pyalpha -I alpha -h pa_i13_evmk2g_io_a -p COM1 execPAIInAnalogr3r3}r3(hj3hj3ubaubahj[ubjX)r3}r4(hXPlay again using analog player h}r4(h]h]h]h]h]uhj3h]r4j/)r4}r4(hXPlay again using analog playerr4hj3hj0hj3h}r4(h]h]h]h]h]uhKh]r4hXPlay again using analog playerr4r 4}r 4(hj4hj4ubaubahj[ubehjTubeubeubj/)r 4}r 4(hX;Limitations of run-time reconfiguration as of this release:r 4hjL3hj0hj3h}r4(h]h]h]h]h]uhKhhh]r4hX;Limitations of run-time reconfiguration as of this release:r4r4}r4(hj 4hj 4ubaubjQ)r4}r4(hUhjL3hj0hjTh}r4(jVX-h]h]h]h]h]uhKhhh]r4(jX)r4}r4(hX@Input interface reselection can only be done when input is mute.r4hj4hj0hj[h}r4(h]h]h]h]h]uhNhhh]r4j/)r4}r4(hj4hj4hj0hj3h}r4(h]h]h]h]h]uhKh]r4hX@Input interface reselection can only be done when input is mute.r 4r!4}r"4(hj4hj4ubaubaubjX)r#4}r$4(hXpOnce analog input is selected, S/PDIF can NOT be selected anymore. One must reload the code and rerun the demo. hj4hj0hj[h}r%4(h]h]h]h]h]uhNhhh]r&4j/)r'4}r(4(hXoOnce analog input is selected, S/PDIF can NOT be selected anymore. One must reload the code and rerun the demo.r)4hj#4hj0hj3h}r*4(h]h]h]h]h]uhKh]r+4hXoOnce analog input is selected, S/PDIF can NOT be selected anymore. One must reload the code and rerun the demo.r,4r-4}r.4(hj)4hj'4ubaubaubeubeubeubh)r/4}r04(hUhj0hj0hhh}r14(h]h]h]h]r24Uhow-to-rebuild-the-demor34ah]r44hauhKhhh]r54(h)r64}r74(hXHow to Rebuild the Demor84hj/4hj0hhh}r94(h]h]h]h]h]uhKhhh]r:4hXHow to Rebuild the Demor;4r<4}r=4(hj84hj64ubaubj/)r>4}r?4(hXgThe performance audio demo can be rebuilt from the source code, following the instructions given below.r@4hj/4hj0hj3h}rA4(h]h]h]h]h]uhKhhh]rB4hXgThe performance audio demo can be rebuilt from the source code, following the instructions given below.rC4rD4}rE4(hj@4hj>4ubaubh)rF4}rG4(hUhj/4hj0hhh}rH4(h]h]h]h]rI4U$setup-environment-variables-in-linuxrJ4ah]rK4hNauhKhhh]rL4(h)rM4}rN4(hX$Setup Environment Variables in LinuxrO4hjF4hj0hhh}rP4(h]h]h]h]h]uhKhhh]rQ4hX$Setup Environment Variables in LinuxrR4rS4}rT4(hjO4hjM4ubaubj/)rU4}rV4(hXA bash shell script, /demos/performance-audio/src/setup_build_env/setup_env.sh, can be used to set up the environment variables:rW4hjF4hj0hj3h}rX4(h]h]h]h]h]uhKhhh]rY4hXA bash shell script, /demos/performance-audio/src/setup_build_env/setup_env.sh, can be used to set up the environment variables:rZ4r[4}r\4(hjW4hjU4ubaubjQ)r]4}r^4(hUhjF4hj0hjTh}r_4(jVX-h]h]h]h]h]uhKhhh]r`4(jX)ra4}rb4(hXOset the TI tools path and performance audio demo path in setup_env.sh properly.rc4hj]4hj0hj[h}rd4(h]h]h]h]h]uhNhhh]re4j/)rf4}rg4(hjc4hja4hj0hj3h}rh4(h]h]h]h]h]uhKh]ri4hXOset the TI tools path and performance audio demo path in setup_env.sh properly.rj4rk4}rl4(hjc4hjf4ubaubaubjX)rm4}rn4(hXvset version numbers of each component to what's going to be used for the build (default is what's delivered in PRSDK).ro4hj]4hj0hj[h}rp4(h]h]h]h]h]uhNhhh]rq4j/)rr4}rs4(hjo4hjm4hj0hj3h}rt4(h]h]h]h]h]uhKh]ru4hXvset version numbers of each component to what's going to be used for the build (default is what's delivered in PRSDK).rv4rw4}rx4(hjo4hjr4ubaubaubjX)ry4}rz4(hX:run the shell script using command "source setup_env.sh". hj]4hj0hj[h}r{4(h]h]h]h]h]uhNhhh]r|4j/)r}4}r~4(hX9run the shell script using command "source setup_env.sh".r4hjy4hj0hj3h}r4(h]h]h]h]h]uhKh]r4hX9run the shell script using command "source setup_env.sh".r4r4}r4(hj4hj}4ubaubaubeubeubh)r4}r4(hUhj/4hj0hhh}r4(h]h]h]h]r4U&setup-environment-variables-in-windowsr4ah]r4hauhKhhh]r4(h)r4}r4(hX&Setup Environment Variables in Windowsr4hj4hj0hhh}r4(h]h]h]h]h]uhKhhh]r4hX&Setup Environment Variables in Windowsr4r4}r4(hj4hj4ubaubj/)r4}r4(hXBatch file /demos/performance-audio/src/setup_build_env/setup_env.bat can be used to set up the environment variables.r4hj4hj0hj3h}r4(h]h]h]h]h]uhKhhh]r4hXBatch file /demos/performance-audio/src/setup_build_env/setup_env.bat can be used to set up the environment variables.r4r4}r4(hj4hj4ubaubjQ)r4}r4(hUhj4hj0hjTh}r4(jVX-h]h]h]h]h]uhKhhh]r4(jX)r4}r4(hXGset variable TI_TOOLS_DIR in setup_env.bat properly (default is C:\ti).r4hj4hj0hj[h}r4(h]h]h]h]h]uhNhhh]r4j/)r4}r4(hj4hj4hj0hj3h}r4(h]h]h]h]h]uhKh]r4hXFset variable TI_TOOLS_DIR in setup_env.bat properly (default is C:ti).r4r4}r4(hXGset variable TI_TOOLS_DIR in setup_env.bat properly (default is C:\ti).hj4ubaubaubjX)r4}r4(hXvset version numbers of each component to what's going to be used for the build (default is what's delivered in PRSDK).r4hj4hj0hj[h}r4(h]h]h]h]h]uhNhhh]r4j/)r4}r4(hj4hj4hj0hj3h}r4(h]h]h]h]h]uhKh]r4hXvset version numbers of each component to what's going to be used for the build (default is what's delivered in PRSDK).r4r4}r4(hj4hj4ubaubaubjX)r4}r4(hXgo to folder /demos/performance-audio/src/setup_build_env and run setup_env.bat (Note: this script MUST be run in the setup_build_env folder.)hj4hj0hj[h}r4(h]h]h]h]h]uhNhhh]r4j/)r4}r4(hXgo to folder /demos/performance-audio/src/setup_build_env and run setup_env.bat (Note: this script MUST be run in the setup_build_env folder.)r4hj4hj0hj3h}r4(h]h]h]h]h]uhKh]r4hXgo to folder /demos/performance-audio/src/setup_build_env and run setup_env.bat (Note: this script MUST be run in the setup_build_env folder.)r4r4}r4(hj4hj4ubaubaubjX)r4}r4(hXzafter running setup_env.bat, run setup_paf.bat in the same folder (Note: setup_env.bat MUST be run before setup_paf.bat). hj4hj0hj[h}r4(h]h]h]h]h]uhNhhh]r4j/)r4}r4(hXyafter running setup_env.bat, run setup_paf.bat in the same folder (Note: setup_env.bat MUST be run before setup_paf.bat).r4hj4hj0hj3h}r4(h]h]h]h]h]uhKh]r4hXyafter running setup_env.bat, run setup_paf.bat in the same folder (Note: setup_env.bat MUST be run before setup_paf.bat).r4r4}r4(hj4hj4ubaubaubeubeubh)r4}r4(hUhj/4hj0hhh}r4(h]h]h]h]r4Urebuild-the-demor4ah]r4hauhKhhh]r4(h)r4}r4(hXRebuild the Demor4hj4hj0hhh}r4(h]h]h]h]h]uhKhhh]r4hXRebuild the Demor4r4}r4(hj4hj4ubaubjQ)r4}r4(hUhj4hj0hjTh}r4(jVX-h]h]h]h]h]uhKhhh]r4(jX)r4}r4(hXPGo to source folder: /demos/performance-audio/srcr4hj4hj0hj[h}r4(h]h]h]h]h]uhNhhh]r4j/)r4}r4(hj4hj4hj0hj3h}r4(h]h]h]h]h]uhKh]r4hXPGo to source folder: /demos/performance-audio/srcr4r4}r4(hj4hj4ubaubaubjX)r4}r4(hX7Issue command "make clean" and "make install" for Linuxr4hj4hj0hj[h}r4(h]h]h]h]h]uhNhhh]r4j/)r4}r4(hj4hj4hj0hj3h}r4(h]h]h]h]h]uhKh]r4hX7Issue command "make clean" and "make install" for Linuxr4r4}r4(hj4hj4ubaubaubjX)r4}r4(hX;Issue command "gmake clean" and "gmake install" for Windowsr4hj4hj0hj[h}r4(h]h]h]h]h]uhNhhh]r4j/)r5}r5(hj4hj4hj0hj3h}r5(h]h]h]h]h]uhKh]r5hX;Issue command "gmake clean" and "gmake install" for Windowsr5r5}r5(hj4hj5ubaubaubjX)r5}r5(hXThe rebuilt binaries are placed in src/install/pasdk/debug. They can also be found at src/pasdk/test_dsp/bin/debug and src/pasdk/test_arm/bin/debug hj4hj0hj[h}r 5(h]h]h]h]h]uhNhhh]r 5j/)r 5}r 5(hXThe rebuilt binaries are placed in src/install/pasdk/debug. They can also be found at src/pasdk/test_dsp/bin/debug and src/pasdk/test_arm/bin/debugr 5hj5hj0hj3h}r5(h]h]h]h]h]uhKh]r5hXThe rebuilt binaries are placed in src/install/pasdk/debug. They can also be found at src/pasdk/test_dsp/bin/debug and src/pasdk/test_arm/bin/debugr5r5}r5(hj 5hj 5ubaubaubeubeubeubh)r5}r5(hUhj0hj0hhh}r5(h]h]h]h]r5Utrouble-shootingr5ah]r5hauhKhhh]r5(h)r5}r5(hXTrouble Shootingr5hj5hj0hhh}r5(h]h]h]h]h]uhKhhh]r5hXTrouble Shootingr5r 5}r!5(hj5hj5ubaubj/)r"5}r#5(hXProblems may be encountered when setting up or running the demo. Here are some common problems and the corresponding solutions:r$5hj5hj0hj3h}r%5(h]h]h]h]h]uhKhhh]r&5hXProblems may be encountered when setting up or running the demo. Here are some common problems and the corresponding solutions:r'5r(5}r)5(hj$5hj"5ubaubj)r*5}r+5(hUhj5hj0hjh}r,5(jU.h]h]h]jUh]h]jjuhKhhh]r-5jX)r.5}r/5(hX(Sound doesn't come out of the speakers: hj*5hj0hj[h}r05(h]h]h]h]h]uhNhhh]r15j/)r25}r35(hX'Sound doesn't come out of the speakers:r45hj.5hj0hj3h}r55(h]h]h]h]h]uhKh]r65hX'Sound doesn't come out of the speakers:r75r85}r95(hj45hj25ubaubaubaubj)r:5}r;5(hUhj5hNhjh}r<5(h]h]h]h]h]uhNhhh]r=5jQ)r>5}r?5(hUh}r@5(jVX-h]h]h]h]h]uhj:5h]rA5(jX)rB5}rC5(hXMake sure the audio daughter card (and HDMI repeater card if used) is connected well. The `PDK addon audio loopback test `__ can be run to verify the setup of EVM and audio daughter card.h}rD5(h]h]h]h]h]uhj>5h]rE5j/)rF5}rG5(hXMake sure the audio daughter card (and HDMI repeater card if used) is connected well. The `PDK addon audio loopback test `__ can be run to verify the setup of EVM and audio daughter card.hjB5hj0hj3h}rH5(h]h]h]h]h]uhKh]rI5(hXZMake sure the audio daughter card (and HDMI repeater card if used) is connected well. The rJ5rK5}rL5(hXZMake sure the audio daughter card (and HDMI repeater card if used) is connected well. The hjF5ubj)rM5}rN5(hXP`PDK addon audio loopback test `__h}rO5(UnameXPDK addon audio loopback testjX,index_examples_demos.html#k2g-audio-dc-addonh]h]h]h]h]uhjF5h]rP5hXPDK addon audio loopback testrQ5rR5}rS5(hUhjM5ubahjubhX? can be run to verify the setup of EVM and audio daughter card.rT5rU5}rV5(hX? can be run to verify the setup of EVM and audio daughter card.hjF5ubeubahj[ubjX)rW5}rX5(hXIn CCS Expressions window, enter variable "asipLoopCount1" and check if it is incrementing. If not, terminate the debug session, power cycle the EVM, and restart. h}rY5(h]h]h]h]h]uhj>5h]rZ5j/)r[5}r\5(hXIn CCS Expressions window, enter variable "asipLoopCount1" and check if it is incrementing. If not, terminate the debug session, power cycle the EVM, and restart.r]5hjW5hj0hj3h}r^5(h]h]h]h]h]uhKh]r_5hXIn CCS Expressions window, enter variable "asipLoopCount1" and check if it is incrementing. If not, terminate the debug session, power cycle the EVM, and restart.r`5ra5}rb5(hj]5hj[5ubaubahj[ubehjTubaubj)rc5}rd5(hUhj5hj0hjh}re5(jU.Ustartrf5Kh]h]h]jUh]h]jjuhKhhh]rg5jX)rh5}ri5(hXThe Python command times out: hjc5hj0hj[h}rj5(h]h]h]h]h]uhNhhh]rk5j/)rl5}rm5(hXThe Python command times out:rn5hjh5hj0hj3h}ro5(h]h]h]h]h]uhKh]rp5hXThe Python command times out:rq5rr5}rs5(hjn5hjl5ubaubaubaubj)rt5}ru5(hUhj5hNhjh}rv5(h]h]h]h]h]uhNhhh]rw5jQ)rx5}ry5(hUh}rz5(jVX-h]h]h]h]h]uhjt5h]r{5jX)r|5}r}5(hXMake sure to use UART0 COM port on the EVM. The Python scripts may not work well if J23 USB connector is used for UART communications. h}r~5(h]h]h]h]h]uhjx5h]r5j/)r5}r5(hXMake sure to use UART0 COM port on the EVM. The Python scripts may not work well if J23 USB connector is used for UART communications.r5hj|5hj0hj3h}r5(h]h]h]h]h]uhKh]r5hXMake sure to use UART0 COM port on the EVM. The Python scripts may not work well if J23 USB connector is used for UART communications.r5r5}r5(hj5hj5ubaubahj[ubahjTubaubj)r5}r5(hUhj5hj0hjh}r5(jU.jf5Kh]h]h]jUh]h]jjuhKhhh]r5jX)r5}r5(hXThe source code doesn't build: hj5hj0hj[h}r5(h]h]h]h]h]uhNhhh]r5j/)r5}r5(hXThe source code doesn't build:r5hj5hj0hj3h}r5(h]h]h]h]h]uhKh]r5hXThe source code doesn't build:r5r5}r5(hj5hj5ubaubaubaubj)r5}r5(hUhj5hNhjh}r5(h]h]h]h]h]uhNhhh]r5jQ)r5}r5(hUh}r5(jVX-h]h]h]h]h]uhj5h]r5jX)r5}r5(hXMake sure the environment variables are set correctly. The default tools location in setup.env may not be where the tools are installed. Change TI_TOOLS_DIR to where tools and Proc-SDK components are installed. h}r5(h]h]h]h]h]uhj5h]r5j/)r5}r5(hXMake sure the environment variables are set correctly. The default tools location in setup.env may not be where the tools are installed. Change TI_TOOLS_DIR to where tools and Proc-SDK components are installed.r5hj5hj0hj3h}r5(h]h]h]h]h]uhKh]r5hXMake sure the environment variables are set correctly. The default tools location in setup.env may not be where the tools are installed. Change TI_TOOLS_DIR to where tools and Proc-SDK components are installed.r5r5}r5(hj5hj5ubaubahj[ubahjTubaubj)r5}r5(hUhj5hj0hjh}r5(jU.jf5Kh]h]h]jUh]h]jjuhKhhh]r5jX)r5}r5(hX1Python setup can't install PyAlpha dependencies. hj5hj0hj[h}r5(h]h]h]h]h]uhNhhh]r5j/)r5}r5(hX0Python setup can't install PyAlpha dependencies.r5hj5hj0hj3h}r5(h]h]h]h]h]uhKh]r5hX0Python setup can't install PyAlpha dependencies.r5r5}r5(hj5hj5ubaubaubaubj)r5}r5(hUhj5hNhjh}r5(h]h]h]h]h]uhNhhh]r5jQ)r5}r5(hUh}r5(jVX-h]h]h]h]h]uhj5h]r5jX)r5}r5(hXUMake sure proxy environment variables, HTTP_PROXY and HTTPS_PROXY, are set properly. h}r5(h]h]h]h]h]uhj5h]r5j/)r5}r5(hXTMake sure proxy environment variables, HTTP_PROXY and HTTPS_PROXY, are set properly.r5hj5hj0hj3h}r5(h]h]h]h]h]uhKh]r5hXTMake sure proxy environment variables, HTTP_PROXY and HTTPS_PROXY, are set properly.r5r5}r5(hj5hj5ubaubahj[ubahjTubaubeubeubhj0hhh}r5(h]r5X introductionr5ah]h]h]r5Uid39r5ah]uhKhhh]r5(h)r5}r5(hX Introductionr5hj0hj0hhh}r5(h]h]h]h]h]uhKhhh]r5hX Introductionr5r5}r5(hj5hj5ubaubj/)r5}r5(hXpThis page describes the performance audio demo, developed within Processor SDK RTOS on 66AK2Gx platform. This demo implements and integrates audio I/O, framework, auto-detection, decoding, audio stream processing (ASP) and encoding - the foundational building blocks of any performance audio application. The system block diagram below shows the structure of the demo.r5hj0hj0hj3h}r5(h]h]h]h]h]uhKhhh]r5hXpThis page describes the performance audio demo, developed within Processor SDK RTOS on 66AK2Gx platform. This demo implements and integrates audio I/O, framework, auto-detection, decoding, audio stream processing (ASP) and encoding - the foundational building blocks of any performance audio application. The system block diagram below shows the structure of the demo.r5r5}r5(hj5hj5ubaubj)r5}r5(hX=.. Image:: ../images/pa_k2g_layout.png :scale: 100 % hj0hj0hjh}r5(UscaleKdUuriX rtos/../images/pa_k2g_layout.pngr5h]h]h]h]j}r5U*j5sh]uhNhhh]ubj/)r5}r5(hX5This demo utilizes Processor SDK features/components:r5hj0hj0hj3h}r5(h]h]h]h]h]uhKhhh]r5hX5This demo utilizes Processor SDK features/components:r5r5}r5(hj5hj5ubaubjQ)r5}r5(hUhj0hj0hjTh}r5(jVX-h]h]h]h]h]uhKhhh]r5(jX)r5}r5(hXV**SYS/BIOS** application utilizing TI-RTOS features for DSP-C66x core and ARM-A15 corer5hj5hj0hj[h}r5(h]h]h]h]h]uhNhhh]r5j/)r5}r5(hj5hj5hj0hj3h}r5(h]h]h]h]h]uhKh]r5(jW)r6}r6(hX **SYS/BIOS**h}r6(h]h]h]h]h]uhj5h]r6hXSYS/BIOSr6r6}r6(hUhj6ubahj_ubhXJ application utilizing TI-RTOS features for DSP-C66x core and ARM-A15 corer6r6}r 6(hXJ application utilizing TI-RTOS features for DSP-C66x core and ARM-A15 corehj5ubeubaubjX)r 6}r 6(hX-**McASP LLD** from PDK for audio input/outputr 6hj5hj0hj[h}r 6(h]h]h]h]h]uhNhhh]r6j/)r6}r6(hj 6hj 6hj0hj3h}r6(h]h]h]h]h]uhKh]r6(jW)r6}r6(hX **McASP LLD**h}r6(h]h]h]h]h]uhj6h]r6hX McASP LLDr6r6}r6(hUhj6ubahj_ubhX from PDK for audio input/outputr6r6}r6(hX from PDK for audio input/outputhj6ubeubaubjX)r6}r6(hX>**IPC** for inter-processor communications between DSP and ARMr6hj5hj0hj[h}r 6(h]h]h]h]h]uhNhhh]r!6j/)r"6}r#6(hj6hj6hj0hj3h}r$6(h]h]h]h]h]uhKh]r%6(jW)r&6}r'6(hX**IPC**h}r(6(h]h]h]h]h]uhj"6h]r)6hXIPCr*6r+6}r,6(hUhj&6ubahj_ubhX7 for inter-processor communications between DSP and ARMr-6r.6}r/6(hX7 for inter-processor communications between DSP and ARMhj"6ubeubaubjX)r06}r16(hX$**UIA** for instrumentation logging hj5hj0hj[h}r26(h]h]h]h]h]uhNhhh]r36j/)r46}r56(hX#**UIA** for instrumentation logginghj06hj0hj3h}r66(h]h]h]h]h]uhKh]r76(jW)r86}r96(hX**UIA**h}r:6(h]h]h]h]h]uhj46h]r;6hXUIAr<6r=6}r>6(hUhj86ubahj_ubhX for instrumentation loggingr?6r@6}rA6(hX for instrumentation logginghj46ubeubaubeubeubhj0hj>h}rB6(h]UlevelKh]h]rC6j5aUsourcej0h]h]UlineKUtypejAuhKhhh]rD6j/)rE6}rF6(hX/Duplicate implicit target name: "introduction".h}rG6(h]h]h]h]h]uhj0h]rH6hX/Duplicate implicit target name: "introduction".rI6rJ6}rK6(hUhjE6ubahj3ubaubj)rL6}rM6(hUhj0hj0hj>h}rN6(h]UlevelKh]h]rO6j0aUsourcej0h]h]UlineKUtypejAuhKhhh]rP6j/)rQ6}rR6(hX/Duplicate implicit target name: "requirements".h}rS6(h]h]h]h]h]uhjL6h]rT6hX/Duplicate implicit target name: "requirements".rU6rV6}rW6(hUhjQ6ubahj3ubaubj)rX6}rY6(hUhj:1hj0hj>h}rZ6(h]UlevelKh]h]r[6j@1aUsourcej0h]h]UlineK%UtypejAuhK%hhh]r\6j/)r]6}r^6(hX6Duplicate implicit target name: "how to run the demo".h}r_6(h]h]h]h]h]uhjX6h]r`6hX6Duplicate implicit target name: "how to run the demo".ra6rb6}rc6(hUhj]6ubahj3ubaubj)rd6}re6(hUhj5hj0hj>h}rf6(h]UlevelKh]h]Usourcehh]h]UlineK!UtypejAuhKhhh]rg6j/)rh6}ri6(hX:Enumerated list start value not ordinal-1: "2" (ordinal 2)h}rj6(h]h]h]h]h]uhjd6h]rk6hX:Enumerated list start value not ordinal-1: "2" (ordinal 2)rl6rm6}rn6(hUhjh6ubahj3ubaubj)ro6}rp6(hUhj5hj0hj>h}rq6(h]UlevelKh]h]Usourcehh]h]UlineK!UtypejAuhKhhh]rr6j/)rs6}rt6(hX:Enumerated list start value not ordinal-1: "3" (ordinal 3)h}ru6(h]h]h]h]h]uhjo6h]rv6hX:Enumerated list start value not ordinal-1: "3" (ordinal 3)rw6rx6}ry6(hUhjs6ubahj3ubaubj)rz6}r{6(hUhj5hj0hj>h}r|6(h]UlevelKh]h]Usourcehh]h]UlineK!UtypejAuhKhhh]r}6j/)r~6}r6(hX:Enumerated list start value not ordinal-1: "4" (ordinal 4)h}r6(h]h]h]h]h]uhjz6h]r6hX:Enumerated list start value not ordinal-1: "4" (ordinal 4)r6r6}r6(hUhj~6ubahj3ubaubj)r6}r6(hUhh)r6}r6(hUjKhh)r6}r6(hUhhhhhhh}r6(h]h]h]h]r6Ubig-data-ipc-exampler6ah]r6hauhK'hhh]r6(h)r6}r6(hXBig Data IPC Exampler6hj6hhhhh}r6(h]h]h]h]h]uhK'hhh]r6hXBig Data IPC Exampler6r6}r6(hj6hj6ubaubj )r6}r6(hXKhttp://processors.wiki.ti.com/index.php/Processor_SDK_Big_Data_IPC_Exampleshj6hj XEsource/rtos/Examples_and_Demonstrations/Big_Data_IPC_Examples.rst.incr6r6}r6bhjh}r6(jjh]h]h]h]h]uhKhhh]r6hXKhttp://processors.wiki.ti.com/index.php/Processor_SDK_Big_Data_IPC_Examplesr6r6}r6(hUhj6ubaubj6h)r6}r6(hUjKhj6hj6hhh}r6(h]r6Xarchitecture overviewr6ah]h]h]r6Uarchitecture-overviewr6ah]uhKhhh]r6(h)r6}r6(hXArchitecture Overviewr6hj6hj6hhh}r6(h]h]h]h]h]uhKhhh]r6hXArchitecture Overviewr6r6}r6(hj6hj6ubaubj/)r6}r6(hXvThe following block diagram shows the various functional blocks used in the example on the cores running TI-RTOS/BIOS.r6hj6hj6hj3h}r6(h]h]h]h]h]uhKhhh]r6hXvThe following block diagram shows the various functional blocks used in the example on the cores running TI-RTOS/BIOS.r6r6}r6(hj6hj6ubaubj)r6}r6(hX;.. Image:: ../images/Big_Data_IPC_RTOS_Software_blocks.png hj6hj6hjh}r6(UuriX4rtos/../images/Big_Data_IPC_RTOS_Software_blocks.pngr6h]h]h]h]j}r6U*j6sh]uhKhhh]ubj/)r6}r6(hXfFor the small message IPC, sharedRegion and Heap, the modules in the Standard TI IPC package are used.r6hj6hj6hj3h}r6(h]h]h]h]h]uhKhhh]r6hXfFor the small message IPC, sharedRegion and Heap, the modules in the Standard TI IPC package are used.r6r6}r6(hj6hj6ubaubj/)r6}r6(hXThe BigDataXlat module, which is part of the example code, provides a high level abstraction to take care of Address translation and Cache sync on the big data buffers.r6hj6hj6hj3h}r6(h]h]h]h]h]uhKhhh]r6hXThe BigDataXlat module, which is part of the example code, provides a high level abstraction to take care of Address translation and Cache sync on the big data buffers.r6r6}r6(hj6hj6ubaubeubh)r6}r6(hUhj6hj6hhh}r6(h]h]h]h]r6U&simple-buffer-example-program-sequencer6ah]r6hauhK"hhh]r6(h)r6}r6(hX'Simple Buffer example: Program Sequencer6hj6hj6hhh}r6(h]h]h]h]h]uhK"hhh]r6hX'Simple Buffer example: Program Sequencer6r6}r6(hj6hj6ubaubj/)r6}r6(hXDThis section describes the program sequence captured in the example.r6hj6hj6hj3h}r6(h]h]h]h]h]uhK$hhh]r6hXDThis section describes the program sequence captured in the example.r6r6}r6(hj6hj6ubaubj/)r6}r6(hXThe main aim of the overall program is to show the exchange of big data buffers. The sequence is described in words here to sort of walk through the main application code.r6hj6hj6hj3h}r6(h]h]h]h]h]uhK&hhh]r6hXThe main aim of the overall program is to show the exchange of big data buffers. The sequence is described in words here to sort of walk through the main application code.r6r6}r6(hj6hj6ubaubj/)r6}r6(hXInitially, the host sends first message with shared memory init information followed by two more dummy messages to slave core ( all three messages sent in sequence without waiting for reply).r6hj6hj6hj3h}r6(h]h]h]h]h]uhK*hhh]r6hXInitially, the host sends first message with shared memory init information followed by two more dummy messages to slave core ( all three messages sent in sequence without waiting for reply).r6r6}r6(hj6hj6ubaubj/)r6}r6(hXxThe shared memory region init message conveys the details about the shared memory expected to hold the big data buffers.r6hj6hj6hj3h}r6(h]h]h]h]h]uhK.hhh]r6hXxThe shared memory region init message conveys the details about the shared memory expected to hold the big data buffers.r6r6}r6(hj6hj6ubaubj/)r6}r6(hXtIndependently, the slave processor receives messages and sends back reply back for each of the messages to the host.r7hj6hj6hj3h}r7(h]h]h]h]h]uhK1hhh]r7hXtIndependently, the slave processor receives messages and sends back reply back for each of the messages to the host.r7r7}r7(hj7hj6ubaubj/)r7}r7(hXxThen the host receives one message from the slave and sends a message with Big data buffer allocated from the Big data heap and filled with an incrementing pattern. (This process is repeated with 10 Big data Buffer messages). Each of these Messages are received by slave and the values in the buffers are updated with a modified incrementing pattern and sent back to the host.r7hj6hj6hj3h}r 7(h]h]h]h]h]uhK4hhh]r 7hXxThen the host receives one message from the slave and sends a message with Big data buffer allocated from the Big data heap and filled with an incrementing pattern. (This process is repeated with 10 Big data Buffer messages). Each of these Messages are received by slave and the values in the buffers are updated with a modified incrementing pattern and sent back to the host.r 7r 7}r 7(hj7hj7ubaubj/)r7}r7(hXWNote the Slave and Host processors checks the expected incrementing pattern for errors.r7hj6hj6hj3h}r7(h]h]h]h]h]uhK;hhh]r7hXWNote the Slave and Host processors checks the expected incrementing pattern for errors.r7r7}r7(hj7hj7ubaubj/)r7}r7(hXAt this point only 7 Big data buffer messages would have been received. Then the host sends two dummy messages plus one shutdown message to the slave core when receiving the remaining three Big data buffer messages. Totally 10 Big data buffers are exchanged between the cores. The slave core on receiving the shutdown message, shuts itself down and reinitializes itself for future runs.r7hj6hj6hj3h}r7(h]h]h]h]h]uhK>hhh]r7hXAt this point only 7 Big data buffer messages would have been received. Then the host sends two dummy messages plus one shutdown message to the slave core when receiving the remaining three Big data buffer messages. Totally 10 Big data buffers are exchanged between the cores. The slave core on receiving the shutdown message, shuts itself down and reinitializes itself for future runs.r7r7}r7(hj7hj7ubaubj/)r7}r7(hXQThen the host receives back the remaining returned messages before shutting down.r 7hj6hj6hj3h}r!7(h]h]h]h]h]uhKEhhh]r"7hXQThen the host receives back the remaining returned messages before shutting down.r#7r$7}r%7(hj 7hj7ubaubj))r&7}r'7(hXThe size of the big data buffer is configurable compile time by changing value of the define BIGDATA_SIZE in shared/AppCommon.hhj6hj6hj,h}r(7(h]h]h]h]h]uhNhhh]r)7j/)r*7}r+7(hXThe size of the big data buffer is configurable compile time by changing value of the define BIGDATA_SIZE in shared/AppCommon.hr,7hj&7hj6hj3h}r-7(h]h]h]h]h]uhKIh]r.7hXThe size of the big data buffer is configurable compile time by changing value of the define BIGDATA_SIZE in shared/AppCommon.hr/7r07}r17(hj,7hj*7ubaubaubeubh)r27}r37(hUhj6hj6hhh}r47(h]h]h]h]r57Uhost-linux-exampler67ah]r77hoauhKMhhh]r87(h)r97}r:7(hXHost Linux exampler;7hj27hj6hhh}r<7(h]h]h]h]h]uhKMhhh]r=7hXHost Linux exampler>7r?7}r@7(hj;7hj97ubaubj))rA7}rB7(hXbHost linux example is only available starting from Processor SDK 4.0.0 release for AM57xx platformhj27hj6hj,h}rC7(h]h]h]h]h]uhNhhh]rD7j/)rE7}rF7(hXbHost linux example is only available starting from Processor SDK 4.0.0 release for AM57xx platformrG7hjA7hj6hj3h}rH7(h]h]h]h]h]uhKPh]rI7hXbHost linux example is only available starting from Processor SDK 4.0.0 release for AM57xx platformrJ7rK7}rL7(hjG7hjE7ubaubaubj/)rM7}rN7(hXUnder the host_linux directory the simple_buffer_example is implemented for Host A15 running Linux and DSP core running TI-RTOS.rO7hj27hj6hj3h}rP7(h]h]h]h]h]uhKShhh]rQ7hXUnder the host_linux directory the simple_buffer_example is implemented for Host A15 running Linux and DSP core running TI-RTOS.rR7rS7}rT7(hjO7hjM7ubaubh)rU7}rV7(hUhj27hj6hhh}rW7(h]h]h]h]rX7Uarchitecture-updates-for-linuxrY7ah]rZ7hPauhKWhhh]r[7(h)r\7}r]7(hXArchitecture Updates for Linuxr^7hjU7hj6hhh}r_7(h]h]h]h]h]uhKWhhh]r`7hXArchitecture Updates for Linuxra7rb7}rc7(hj^7hj\7ubaubj/)rd7}re7(hXnThe following block diagram shows the various functional blocks used in the example on the host running linux.rf7hjU7hj6hj3h}rg7(h]h]h]h]h]uhKYhhh]rh7hXnThe following block diagram shows the various functional blocks used in the example on the host running linux.ri7rj7}rk7(hjf7hjd7ubaubj)rl7}rm7(hX<.. Image:: ../images/Big_DATA_IPC_Linux_Software_blocks.png hjU7hj6hjh}rn7(UuriX5rtos/../images/Big_DATA_IPC_Linux_Software_blocks.pngro7h]h]h]h]j}rp7U*jo7sh]uhK]hhh]ubj/)rq7}rr7(hXjThe SharedRegion and HeapMem modules are not currently supported for Linux in the TI Standard IPC package.rs7hjU7hj6hj3h}rt7(h]h]h]h]h]uhK^hhh]ru7hXjThe SharedRegion and HeapMem modules are not currently supported for Linux in the TI Standard IPC package.rv7rw7}rx7(hjs7hjq7ubaubj/)ry7}rz7(hXeThe example provides these modules with same/similar API implemented for Linux with some limitations.r{7hjU7hj6hj3h}r|7(h]h]h]h]h]uhKahhh]r}7hXeThe example provides these modules with same/similar API implemented for Linux with some limitations.r~7r7}r7(hj{7hjy7ubaubj/)r7}r7(hXZThe CMEM APIs provide user space allocation of contiguous memory for the Big data buffers.r7hjU7hj6hj3h}r7(h]h]h]h]h]uhKdhhh]r7hXZThe CMEM APIs provide user space allocation of contiguous memory for the Big data buffers.r7r7}r7(hj7hj7ubaubeubh)r7}r7(hUjKhj27hj6hhh}r7(h]r7Xhow to run the exampler7ah]h]h]r7Uhow-to-run-the-exampler7ah]uhKhhhh]r7(h)r7}r7(hXHow to Run the Exampler7hj7hj6hhh}r7(h]h]h]h]h]uhKhhhh]r7hXHow to Run the Exampler7r7}r7(hj7hj7ubaubj/)r7}r7(hXThe Processor SDK Linux release includes the pre-built binaries for the host_linux example as part of the tisdk-rootfs-image filesystem.r7hj7hj6hj3h}r7(h]h]h]h]h]uhKjhhh]r7hXThe Processor SDK Linux release includes the pre-built binaries for the host_linux example as part of the tisdk-rootfs-image filesystem.r7r7}r7(hj7hj7ubaubj/)r7}r7(hXStep 1 : To run the demo, the first step is to make sure there is no other default applications using the same resources. For example, the following command is needed to disable the default OpenCL applications.r7hj7hj6hj3h}r7(h]h]h]h]h]uhKmhhh]r7hXStep 1 : To run the demo, the first step is to make sure there is no other default applications using the same resources. For example, the following command is needed to disable the default OpenCL applications.r7r7}r7(hj7hj7ubaubj)r7}r7(hX$systemctl stop ti-mct-daemon.servicehj7hj6hjh}r7(jjh]h]h]h]h]uhM3 hhh]r7hX$systemctl stop ti-mct-daemon.servicer7r7}r7(hUhj7ubaubj/)r7}r7(hXiStep 2: Switch the firmware running in the DSP. This can be done by using the following steps. Unbind dspr7hj7hj6hj3h}r7(h]h]h]h]h]uhKuhhh]r7hXiStep 2: Switch the firmware running in the DSP. This can be done by using the following steps. Unbind dspr7r7}r7(hj7hj7ubaubj)r7}r7(hX?echo 40800000.dsp > /sys/bus/platform/drivers/omap-rproc/unbindhj7hj6hjh}r7(jjh]h]h]h]h]uhM: hhh]r7hX?echo 40800000.dsp > /sys/bus/platform/drivers/omap-rproc/unbindr7r7}r7(hUhj7ubaubj))r7}r7(hX?May need to unbind all the other cores as well to avoid issues.r7hj7hj6hj,h}r7(h]h]h]h]h]uhNhhh]r7j/)r7}r7(hj7hj7hj6hj3h}r7(h]h]h]h]h]uhK}h]r7hX?May need to unbind all the other cores as well to avoid issues.r7r7}r7(hj7hj7ubaubaubj/)r7}r7(hXUpdate firmware symbolic linkr7hj7hj6hj3h}r7(h]h]h]h]h]uhKhhh]r7hXUpdate firmware symbolic linkr7r7}r7(hj7hj7ubaubj)r7}r7(hX]ln -sf /usr/bin/simple_buffer_example/release/server_dsp.xe66 /lib/firmware/dra7-dsp1-fw.xe66hj7hj6hjh}r7(jjh]h]h]h]h]uhMC hhh]r7hX]ln -sf /usr/bin/simple_buffer_example/release/server_dsp.xe66 /lib/firmware/dra7-dsp1-fw.xe66r7r7}r7(hUhj7ubaubj/)r7}r7(hXBind dspr7hj7hj6hj3h}r7(h]h]h]h]h]uhKhhh]r7hXBind dspr7r7}r7(hj7hj7ubaubj)r7}r7(hX=echo 40800000.dsp > /sys/bus/platform/drivers/omap-rproc/bindhj7hj6hjh}r7(jjh]h]h]h]h]uhMI hhh]r7hX=echo 40800000.dsp > /sys/bus/platform/drivers/omap-rproc/bindr7r7}r7(hUhj7ubaubj/)r7}r7(hXLStep 3: Now the Host side application can be run using the following commandr7hj7hj6hj3h}r7(h]h]h]h]h]uhKhhh]r7hXLStep 3: Now the Host side application can be run using the following commandr7r7}r7(hj7hj7ubaubj)r7}r7(hX//usr/bin/simple_buffer_example/release/app_hosthj7hj6hjh}r7(jjh]h]h]h]h]uhMP hhh]r7hX//usr/bin/simple_buffer_example/release/app_hostr7r7}r7(hUhj7ubaubj/)r7}r7(hXRThe DSP side log can be checked by typing the following command to dump the trace.r7hj7hj6hj3h}r7(h]h]h]h]h]uhKhhh]r7hXRThe DSP side log can be checked by typing the following command to dump the trace.r7r7}r7(hj7hj7ubaubj)r8}r8(hX3cat /sys/kernel/debug/remoteproc/remoteproc2/trace0hj7hj6hjh}r8(jjh]h]h]h]h]uhMW hhh]r8hX3cat /sys/kernel/debug/remoteproc/remoteproc2/trace0r8r8}r8(hUhj8ubaubj/)r8}r8(hXHere is a sample log.r 8hj7hj6hj3h}r 8(h]h]h]h]h]uhKhhh]r 8hXHere is a sample log.r 8r 8}r8(hj 8hj8ubaubj)r8}r8(hXroot@am57xx-evm:~# /usr/bin/simple_buffer_example/release/app_host DSP1 --> main: [523682.897761] omap_hwmod: mmu0_dsp2: _wait_target_disable failed [523682.903751] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0 [523682.911797] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0 --> Main_main: --> App_create: App_create: Host is ready <-- App_create: --> App_exec: CMEM_init success CMEM_getPool success CMEM_allocPool success: Allocated buffer 0xaa641000 SharedRegion_setup success App_taskFxn: SR_1, base 0xaa641000, len=1000000 HeapMem_setup success HeapMem_create success App_taskFxn: SR_1 heap, totalSize=16777216,totalFreeSize=16777216,largestFreeSize=16777216 App_taskFxn: SR_1 heap, buf=0x0xaa641080,size=16777216 App_exec: sending message 1 Shared memory phys Addr ffffffffa0000000 App_exec: sending message 2 App_exec: sending message 3 App_exec: message received 1 App_exec: Preparing message 4 App_exec: Sending message 4 App_exec: message received 2 App_exec: Preparing message 5 App_exec: Sending message 5 App_exec: message received 3 App_exec: Preparing message 6 App_exec: Sending message 6 App_exec: message received 4 App_exec: Preparing message 7 App_exec: Sending message 7 App_exec: message received 5 App_exec: Preparing message 8 App_exec: Sending message 8 App_exec: message received 6 App_exec: Preparing message 9 App_exec: Sending message 9 App_exec: message received 7 App_exec: Preparing message 10 App_exec: Sending message 10 App_exec: message received 8 App_exec: Preparing message 11 App_exec: Sending message 11 App_exec: message received 9 App_exec: Preparing message 12 App_exec: Sending message 12 App_exec: message received 10 App_exec: Preparing message 13 App_exec: Sending message 13 App_exec: message received 11 App_exec: Preparing message 14 App_exec: Sending message 14 App_exec: message received 12 App_exec: Preparing message 15 App_exec: Sending message 15 App_exec: message received 13 App_exec: Preparing message 16 App_exec: Sending message 16 App_exec: message received: 14 App_exec: message received: 15 App_exec: message received: 16 App_exec: Data check clean <-- App_exec: 0 --> App_delete: <-- App_delete: <-- Main_main: Host: Test Passed <-- main: root@am57xx-evm:~# root@am57xx-evm:~# cat /sys/kernel/debug/remoteproc/remoteproc2/trace0 [ 0.000] 18 Resource entries at 0x95000000 [ 0.000] [t=0x0002122e] xdc.runtime.Main: --> main: [ 0.000] registering rpmsg-proto:rpmsg-proto service on 61 with HOST [ 0.000] [t=0x003c5d7b] xdc.runtime.Main: NameMap_sendMessage: HOST 53, port=61 [ 0.000] [t=0x003d5186] xdc.runtime.Main: --> smain: [ 0.000] [t=0x003e8259] Server: Server_create: server is ready [ 0.000] [t=0x003ecc97] Server: <-- Server_create: 0 [ 0.000] [t=0x003f04a4] Server: --> Server_exec: [ 51.571] [t=0x00000008:a56e6a9a] Server: Message received...1 [ 51.571] [t=0x00000008:a56f9b77] Server: Shared region entry configured... [ 51.571] [t=0x00000008:a5700cb1] Server: Server_exec: processed id 1, cmd=0x1 [ 51.571] [t=0x00000008:a570aea5] Server: Message received...2 [ 51.571] [t=0x00000008:a57119fd] Server: Server_exec: processed id 2, cmd=0x0 [ 51.571] [t=0x00000008:a571b1e9] Server: Message received...3 [ 51.571] [t=0x00000008:a5721eac] Server: Server_exec: processed id 3, cmd=0x0 [ 51.571] [t=0x00000008:a5755f6b] Server: Message received...4 [ 51.573] [t=0x00000008:a583e61b] Server: Server_exec: processed id 4, cmd=0x2 [ 51.573] [t=0x00000008:a584a087] Server: Message received...5 [ 51.574] [t=0x00000008:a592c2cc] Server: Server_exec: processed id 5, cmd=0x2 [ 51.574] [t=0x00000008:a5937d8c] Server: Message received...6 [ 51.575] [t=0x00000008:a5a19aeb] Server: Server_exec: processed id 6, cmd=0x2 [ 51.575] [t=0x00000008:a5a2543d] Server: Message received...7 [ 51.577] [t=0x00000008:a5b07d15] Server: Server_exec: processed id 7, cmd=0x2 [ 51.577] [t=0x00000008:a5b137c0] Server: Message received...8 [ 51.578] [t=0x00000008:a5bf5d83] Server: Server_exec: processed id 8, cmd=0x2 [ 51.578] [t=0x00000008:a5c019cc] Server: Message received...9 [ 51.579] [t=0x00000008:a5ce3dca] Server: Server_exec: processed id 9, cmd=0x2 [ 51.579] [t=0x00000008:a5cef75e] Server: Message received...10 [ 51.581] [t=0x00000008:a5dd247a] Server: Server_exec: processed id 10, cmd=0x2 [ 51.581] [t=0x00000008:a5dde2d9] Server: Message received...11 [ 51.582] [t=0x00000008:a5ec04df] Server: Server_exec: processed id 11, cmd=0x2 [ 51.582] [t=0x00000008:a5ecc1a3] Server: Message received...12 [ 51.583] [t=0x00000008:a5fae91c] Server: Server_exec: processed id 12, cmd=0x2 [ 51.583] [t=0x00000008:a5fba4c6] Server: Message received...13 [ 51.585] [t=0x00000008:a609d1c1] Server: Server_exec: processed id 13, cmd=0x2 [ 51.585] [t=0x00000008:a60a8dd4] Server: Message received...14 [ 51.585] [t=0x00000008:a60af96e] Server: Server_exec: processed id 14, cmd=0x0 [ 51.585] [t=0x00000008:a60b9229] Server: Message received...15 [ 51.585] [t=0x00000008:a60bffd3] Server: Server_exec: processed id 15, cmd=0x0 [ 51.585] [t=0x00000008:a60e179b] Server: Message received...16 [ 51.585] [t=0x00000008:a60e9727] Server: Server_exec: processed id 16, cmd=0x2000000 [ 51.585] [t=0x00000008:a60f3fb7] Server: Server_exec: Data check clean [ 51.585] [t=0x00000008:a60fb280] Server: <-- Server_exec: 0 [ 51.585] [t=0x00000008:a6101708] xdc.runtime.Main: DSP: Test Passed [ 51.585] [t=0x00000008:a6109170] Server: --> Server_delete: [ 51.585] [t=0x00000008:a6114fa2] Server: <-- Server_delete: 0 [ 51.586] [t=0x00000008:a6127d48] Server: Server_create: server is ready [ 51.586] [t=0x00000008:a612ff93] Server: <-- Server_create: 0 [ 51.586] [t=0x00000008:a613620c] Server: --> Server_exec: root@am57xx-evm:~#hj7hj6hjh}r8(jjh]h]h]h]h]uhM] hhh]r8hXroot@am57xx-evm:~# /usr/bin/simple_buffer_example/release/app_host DSP1 --> main: [523682.897761] omap_hwmod: mmu0_dsp2: _wait_target_disable failed [523682.903751] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0 [523682.911797] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0 --> Main_main: --> App_create: App_create: Host is ready <-- App_create: --> App_exec: CMEM_init success CMEM_getPool success CMEM_allocPool success: Allocated buffer 0xaa641000 SharedRegion_setup success App_taskFxn: SR_1, base 0xaa641000, len=1000000 HeapMem_setup success HeapMem_create success App_taskFxn: SR_1 heap, totalSize=16777216,totalFreeSize=16777216,largestFreeSize=16777216 App_taskFxn: SR_1 heap, buf=0x0xaa641080,size=16777216 App_exec: sending message 1 Shared memory phys Addr ffffffffa0000000 App_exec: sending message 2 App_exec: sending message 3 App_exec: message received 1 App_exec: Preparing message 4 App_exec: Sending message 4 App_exec: message received 2 App_exec: Preparing message 5 App_exec: Sending message 5 App_exec: message received 3 App_exec: Preparing message 6 App_exec: Sending message 6 App_exec: message received 4 App_exec: Preparing message 7 App_exec: Sending message 7 App_exec: message received 5 App_exec: Preparing message 8 App_exec: Sending message 8 App_exec: message received 6 App_exec: Preparing message 9 App_exec: Sending message 9 App_exec: message received 7 App_exec: Preparing message 10 App_exec: Sending message 10 App_exec: message received 8 App_exec: Preparing message 11 App_exec: Sending message 11 App_exec: message received 9 App_exec: Preparing message 12 App_exec: Sending message 12 App_exec: message received 10 App_exec: Preparing message 13 App_exec: Sending message 13 App_exec: message received 11 App_exec: Preparing message 14 App_exec: Sending message 14 App_exec: message received 12 App_exec: Preparing message 15 App_exec: Sending message 15 App_exec: message received 13 App_exec: Preparing message 16 App_exec: Sending message 16 App_exec: message received: 14 App_exec: message received: 15 App_exec: message received: 16 App_exec: Data check clean <-- App_exec: 0 --> App_delete: <-- App_delete: <-- Main_main: Host: Test Passed <-- main: root@am57xx-evm:~# root@am57xx-evm:~# cat /sys/kernel/debug/remoteproc/remoteproc2/trace0 [ 0.000] 18 Resource entries at 0x95000000 [ 0.000] [t=0x0002122e] xdc.runtime.Main: --> main: [ 0.000] registering rpmsg-proto:rpmsg-proto service on 61 with HOST [ 0.000] [t=0x003c5d7b] xdc.runtime.Main: NameMap_sendMessage: HOST 53, port=61 [ 0.000] [t=0x003d5186] xdc.runtime.Main: --> smain: [ 0.000] [t=0x003e8259] Server: Server_create: server is ready [ 0.000] [t=0x003ecc97] Server: <-- Server_create: 0 [ 0.000] [t=0x003f04a4] Server: --> Server_exec: [ 51.571] [t=0x00000008:a56e6a9a] Server: Message received...1 [ 51.571] [t=0x00000008:a56f9b77] Server: Shared region entry configured... [ 51.571] [t=0x00000008:a5700cb1] Server: Server_exec: processed id 1, cmd=0x1 [ 51.571] [t=0x00000008:a570aea5] Server: Message received...2 [ 51.571] [t=0x00000008:a57119fd] Server: Server_exec: processed id 2, cmd=0x0 [ 51.571] [t=0x00000008:a571b1e9] Server: Message received...3 [ 51.571] [t=0x00000008:a5721eac] Server: Server_exec: processed id 3, cmd=0x0 [ 51.571] [t=0x00000008:a5755f6b] Server: Message received...4 [ 51.573] [t=0x00000008:a583e61b] Server: Server_exec: processed id 4, cmd=0x2 [ 51.573] [t=0x00000008:a584a087] Server: Message received...5 [ 51.574] [t=0x00000008:a592c2cc] Server: Server_exec: processed id 5, cmd=0x2 [ 51.574] [t=0x00000008:a5937d8c] Server: Message received...6 [ 51.575] [t=0x00000008:a5a19aeb] Server: Server_exec: processed id 6, cmd=0x2 [ 51.575] [t=0x00000008:a5a2543d] Server: Message received...7 [ 51.577] [t=0x00000008:a5b07d15] Server: Server_exec: processed id 7, cmd=0x2 [ 51.577] [t=0x00000008:a5b137c0] Server: Message received...8 [ 51.578] [t=0x00000008:a5bf5d83] Server: Server_exec: processed id 8, cmd=0x2 [ 51.578] [t=0x00000008:a5c019cc] Server: Message received...9 [ 51.579] [t=0x00000008:a5ce3dca] Server: Server_exec: processed id 9, cmd=0x2 [ 51.579] [t=0x00000008:a5cef75e] Server: Message received...10 [ 51.581] [t=0x00000008:a5dd247a] Server: Server_exec: processed id 10, cmd=0x2 [ 51.581] [t=0x00000008:a5dde2d9] Server: Message received...11 [ 51.582] [t=0x00000008:a5ec04df] Server: Server_exec: processed id 11, cmd=0x2 [ 51.582] [t=0x00000008:a5ecc1a3] Server: Message received...12 [ 51.583] [t=0x00000008:a5fae91c] Server: Server_exec: processed id 12, cmd=0x2 [ 51.583] [t=0x00000008:a5fba4c6] Server: Message received...13 [ 51.585] [t=0x00000008:a609d1c1] Server: Server_exec: processed id 13, cmd=0x2 [ 51.585] [t=0x00000008:a60a8dd4] Server: Message received...14 [ 51.585] [t=0x00000008:a60af96e] Server: Server_exec: processed id 14, cmd=0x0 [ 51.585] [t=0x00000008:a60b9229] Server: Message received...15 [ 51.585] [t=0x00000008:a60bffd3] Server: Server_exec: processed id 15, cmd=0x0 [ 51.585] [t=0x00000008:a60e179b] Server: Message received...16 [ 51.585] [t=0x00000008:a60e9727] Server: Server_exec: processed id 16, cmd=0x2000000 [ 51.585] [t=0x00000008:a60f3fb7] Server: Server_exec: Data check clean [ 51.585] [t=0x00000008:a60fb280] Server: <-- Server_exec: 0 [ 51.585] [t=0x00000008:a6101708] xdc.runtime.Main: DSP: Test Passed [ 51.585] [t=0x00000008:a6109170] Server: --> Server_delete: [ 51.585] [t=0x00000008:a6114fa2] Server: <-- Server_delete: 0 [ 51.586] [t=0x00000008:a6127d48] Server: Server_create: server is ready [ 51.586] [t=0x00000008:a612ff93] Server: <-- Server_create: 0 [ 51.586] [t=0x00000008:a613620c] Server: --> Server_exec: root@am57xx-evm:~#r8r8}r8(hUhj8ubaubj)r8}r8(hUhj7hj6hjh}r8(h]h]h]h]h]uhMhhh]r8j)r8}r8(hUjKhj8hj6hhh}r8(h]h]h]h]h]uhKhhh]ubaubeubh)r8}r8(hUjKhj27hj6hhh}r8(h]r 8Xhow to re-build the exampler!8ah]h]h]r"8Uhow-to-re-build-the-exampler#8ah]uhM hhh]r$8(h)r%8}r&8(hXHow to Re-Build the exampler'8hj8hj6hhh}r(8(h]h]h]h]h]uhM hhh]r)8hXHow to Re-Build the exampler*8r+8}r,8(hj'8hj%8ubaubj/)r-8}r.8(hXAlso source code for the example is included in the Processor SDK Linux release. Once installed the source files can be found in the directory example-applications/big-data-ipc-demo-linux_.r/8hj8hj6hj3h}r08(h]h]h]h]h]uhM"hhh]r18hXAlso source code for the example is included in the Processor SDK Linux release. Once installed the source files can be found in the directory example-applications/big-data-ipc-demo-linux_.r28r38}r48(hj/8hj-8ubaubj/)r58}r68(hXPrerequisites: Also need to have the Processor SDK RTOS release installed to build the DSP side RTOS image. See the instruction in :ref:`RTOS SDK Getting Started Guide `hj8hj6hj3h}r78(h]h]h]h]h]uhM&hhh]r88(hXPrerequisites: Also need to have the Processor SDK RTOS release installed to build the DSP side RTOS image. See the instruction in r98r:8}r;8(hXPrerequisites: Also need to have the Processor SDK RTOS release installed to build the DSP side RTOS image. See the instruction in hj58ubjZ)r<8}r=8(hXV:ref:`RTOS SDK Getting Started Guide `r>8hj58hj6hj^h}r?8(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdr@8h]h]U refexplicith]h]h]j j uhM&h]rA8jb)rB8}rC8(hj>8h}rD8(h]h]rE8(j j@8Xstd-refrF8eh]h]h]uhj<8h]rG8hXRTOS SDK Getting Started GuiderH8rI8}rJ8(hUhjB8ubahjlubaubeubj/)rK8}rL8(hX;The example can be rebuilt by using the following commands.rM8hj8hj6hj3h}rN8(h]h]h]h]h]uhM*hhh]rO8hX;The example can be rebuilt by using the following commands.rP8rQ8}rR8(hjM8hjK8ubaubj)rS8}rT8(hXIexport TI_RTOS_PATH= make big-data-ipc-demohj8hj6hjh}rU8(jjh]h]h]h]h]uhM hhh]rV8hXIexport TI_RTOS_PATH= make big-data-ipc-demorW8rX8}rY8(hUhjS8ubaubj/)rZ8}r[8(hX(e.g)r\8hj8hj6hj3h}r]8(h]h]h]h]h]uhM1hhh]r^8hX(e.g)r_8r`8}ra8(hj\8hjZ8ubaubj)rb8}rc8(hX3export TI_RTOS_PATH=$HOME/ti make big-data-ipc-demohj8hj6hjh}rd8(jjh]h]h]h]h]uhM hhh]re8hX3export TI_RTOS_PATH=$HOME/ti make big-data-ipc-demorf8rg8}rh8(hUhjb8ubaubj/)ri8}rj8(hXQThe test binaries can be installed into the default filesystem using the command.rk8hj8hj6hj3h}rl8(h]h]h]h]h]uhM8hhh]rm8hXQThe test binaries can be installed into the default filesystem using the command.rn8ro8}rp8(hjk8hji8ubaubj)rq8}rr8(hXmake big-data-ipc-demo_installhj8hj6hjh}rs8(jjh]h]h]h]h]uhM hhh]rt8hXmake big-data-ipc-demo_installru8rv8}rw8(hUhjq8ubaubj))rx8}ry8(hXYRules.make file can be edited to change the DESTDIR where the binaries will be installed.hj8hj6hj,h}rz8(h]h]h]h]h]uhNhhh]r{8j/)r|8}r}8(hXYRules.make file can be edited to change the DESTDIR where the binaries will be installed.r~8hjx8hj6hj3h}r8(h]h]h]h]h]uhM@h]r8hXYRules.make file can be edited to change the DESTDIR where the binaries will be installed.r8r8}r8(hj~8hj|8ubaubaubh)r8}r8(hUhj8hj6hhh}r8(h]h]h]h]r8U source-filesr8ah]r8h1auhMDhhh]r8(h)r8}r8(hX Source filesr8hj8hj6hhh}r8(h]h]h]h]h]uhMDhhh]r8hX Source filesr8r8}r8(hj8hj8ubaubj/)r8}r8(hX/The source files for the example are located atr8hj8hj6hj3h}r8(h]h]h]h]h]uhMFhhh]r8hX/The source files for the example are located atr8r8}r8(hj8hj8ubaubj)r8}r8(hX-/example-applications/big-data-ipc-demo-linux-/host_linux/simple_buffer_example.hj8hj6hjh}r8(jjh]h]h]h]h]uhM hhh]r8hX-/example-applications/big-data-ipc-demo-linux-/host_linux/simple_buffer_example.r8r8}r8(hUhj8ubaubj/)r8}r8(hXThe host directory and dsp directory has the corresponding sources. The shared folder contains some common sources. The main sequence for big data IPC can be followed by looking at host/App.c and dsp/Server.c. |r8hj8hj6hj3h}r8(h]h]h]h]h]uhMLhhh]r8hXThe host directory and dsp directory has the corresponding sources. The shared folder contains some common sources. The main sequence for big data IPC can be followed by looking at host/App.c and dsp/Server.c. |r8r8}r8(hj8hj8ubaubeubh)r8}r8(hUhj8hj6hhh}r8(h]h]h]h]r8Umemory-layout-detailsr8ah]r8hYauhMShhh]r8(h)r8}r8(hXMemory layout detailsr8hj8hj6hhh}r8(h]h]h]h]h]uhMShhh]r8hXMemory layout detailsr8r8}r8(hj8hj8ubaubj/)r8}r8(hX&The DSP side memory layout can be found in the file host_linux/simple_buffer_example/shared//config.bld. Also note the addition of the following section in host_linux/simple_buffer_example/shared//rsc_table_dsp.h. Please note the reserved carve-out in the DSP resource tabler8hj8hj6hj3h}r8(h]h]h]h]h]uhMUhhh]r8hX&The DSP side memory layout can be found in the file host_linux/simple_buffer_example/shared//config.bld. Also note the addition of the following section in host_linux/simple_buffer_example/shared//rsc_table_dsp.h. Please note the reserved carve-out in the DSP resource tabler8r8}r8(hj8hj8ubaubj))r8}r8(hXBMake sure this matches what is configured in the linux device treer8hj8hj6hj,h}r8(h]h]h]h]h]uhNhhh]r8j/)r8}r8(hj8hj8hj6hj3h}r8(h]h]h]h]h]uhM\h]r8hXBMake sure this matches what is configured in the linux device treer8r8}r8(hj8hj8ubaubaubj)r8}r8(hUhj8hj6hjh}r8(jU.h]h]h]jUh]h]jjuhM^hhh]r8(jX)r8}r8(hX!define DSP_CMEM_IOBUFS 0xA0000000r8hj8hj6hj[h}r8(h]h]h]h]h]uhNhhh]r8j/)r8}r8(hj8hj8hj6hj3h}r8(h]h]h]h]h]uhM^h]r8hX!define DSP_CMEM_IOBUFS 0xA0000000r8r8}r8(hj8hj8ubaubaubjX)r8}r8(hX"define PHYS_CMEM_IOBUFS 0xA0000000r8hj8hj6hj[h}r8(h]h]h]h]h]uhNhhh]r8j/)r8}r8(hj8hj8hj6hj3h}r8(h]h]h]h]h]uhM_h]r8hX"define PHYS_CMEM_IOBUFS 0xA0000000r8r8}r8(hj8hj8ubaubaubjX)r8}r8(hX+define DSP_CMEM_IOBUFS_SIZE (SZ_1M \* 192) hj8hj6hj[h}r8(h]h]h]h]h]uhNhhh]r8j/)r8}r8(hX*define DSP_CMEM_IOBUFS_SIZE (SZ_1M \* 192)hj8hj6hj3h}r8(h]h]h]h]h]uhM`h]r8hX)define DSP_CMEM_IOBUFS_SIZE (SZ_1M * 192)r8r8}r8(hX*define DSP_CMEM_IOBUFS_SIZE (SZ_1M \* 192)hj8ubaubaubeubj/)r8}r8(hXJThe CMEM area allocated from this region is used for the big data buffers.r8hj8hj6hj3h}r8(h]h]h]h]h]uhMbhhh]r8hXJThe CMEM area allocated from this region is used for the big data buffers.r8r8}r8(hj8hj8ubaubeubeubeubh)r8}r8(hUhj6hj6hhh}r8(h]h]h]h]r8Uhost-rtos-exampler9ah]r9hauhMfhhh]r9(h)r9}r9(hXHost RTOS exampler9hj8hj6hhh}r9(h]h]h]h]h]uhMfhhh]r9hXHost RTOS exampler9r 9}r 9(hj9hj9ubaubj/)r 9}r 9(hXvUnder the host_bios directory the simple_buffer_example is implemented for Host A15 and DSP both running TI RTOS/BIOS.r 9hj8hj6hj3h}r9(h]h]h]h]h]uhMhhhh]r9hXvUnder the host_bios directory the simple_buffer_example is implemented for Host A15 and DSP both running TI RTOS/BIOS.r9r9}r9(hj 9hj 9ubaubh)r9}r9(hUjKhj8hj6hhh}r9(h]r9j7ah]h]h]r9Uid43r9ah]uhMlhhh]r9(h)r9}r9(hXHow to Run the Exampler9hj9hj6hhh}r9(h]h]h]h]h]uhMlhhh]r9hXHow to Run the Exampler9r 9}r!9(hj9hj9ubaubj/)r"9}r#9(hX^The Processor SDK RTOS release include the pre-built binaries for the host_bios example under:r$9hj9hj6hj3h}r%9(h]h]h]h]h]uhMnhhh]r&9hX^The Processor SDK RTOS release include the pre-built binaries for the host_bios example under:r'9r(9}r)9(hj$9hj"9ubaubj)r*9}r+9(hXqprocessor_sdk__/demos/bigdataipc/prebuilt-binaries//simple_buffer_example/release/hj9hj6hjh}r,9(jjh]h]h]h]h]uhM3 hhh]r-9hXqprocessor_sdk__/demos/bigdataipc/prebuilt-binaries//simple_buffer_example/release/r.9r/9}r09(hUhj*9ubaubj/)r19}r29(hX}Also for the platforms that support boot through SDcard, pre-built boot image or 'app' bootable through SBL is located under:r39hj9hj6hj3h}r49(h]h]h]h]h]uhMuhhh]r59hX}Also for the platforms that support boot through SDcard, pre-built boot image or 'app' bootable through SBL is located under:r69r79}r89(hj39hj19ubaubj)r99}r:9(hXprocessor_sdk__/demos/bigdataipc/prebuilt-binaries/bootimages/host_bios/simple_buffer_example//apphj9hj6hjh}r;9(jjh]h]h]h]h]uhM: hhh]r<9hXprocessor_sdk__/demos/bigdataipc/prebuilt-binaries/bootimages/host_bios/simple_buffer_example//appr=9r>9}r?9(hUhj99ubaubh)r@9}rA9(hUhj9hj6hhh}rB9(h]h]h]h]rC9Uam57xx-k2g-boardsrD9ah]rE9hauhM}hhh]rF9(h)rG9}rH9(hXAM57xx & K2G boardsrI9hj@9hj6hhh}rJ9(h]h]h]h]h]uhM}hhh]rK9hXAM57xx & K2G boardsrL9rM9}rN9(hjI9hjG9ubaubjF")rO9}rP9(hXPre-requisitesrQ9hj@9hj6hjJ"h}rR9(h]rS9Upre-requisitesrT9ah]h]h]h]rU9hauhNhhh]rV9hXPre-requisitesrW9rX9}rY9(hjQ9hjO9ubaubj/)rZ9}r[9(hX1. Create a bootable SDCard using the procedure here: :ref:`Creating SD card in Windows ` or :ref:`Create SD card in Linux `hj@9hj6hj3h}r\9(h]h]h]h]h]uhMhhh]r]9(hX61. Create a bootable SDCard using the procedure here: r^9r_9}r`9(hX61. Create a bootable SDCard using the procedure here: hjZ9ubjZ)ra9}rb9(hXG:ref:`Creating SD card in Windows `rc9hjZ9hj6hj^h}rd9(UreftypeXrefj j X"tools-create-sd-card-windows-labelU refdomainXstdre9h]h]U refexplicith]h]h]j j uhMh]rf9jb)rg9}rh9(hjc9h}ri9(h]h]rj9(j je9Xstd-refrk9eh]h]h]uhja9h]rl9hXCreating SD card in Windowsrm9rn9}ro9(hUhjg9ubahjlubaubhX or rp9rq9}rr9(hX or hjZ9ubjZ)rs9}rt9(hXA:ref:`Create SD card in Linux `ru9hjZ9hj6hj^h}rv9(UreftypeXrefj j X tools-create-sd-card-linux-labelU refdomainXstdrw9h]h]U refexplicith]h]h]j j uhMh]rx9jb)ry9}rz9(hju9h}r{9(h]h]r|9(j jw9Xstd-refr}9eh]h]h]uhjs9h]r~9hXCreate SD card in Linuxr9r9}r9(hUhjy9ubahjlubaubeubj/)r9}r9(hX2. Connect the UART on the hardware to the Host. ( Configure the terminal/console to Baud Rate= 115200, Data Bits= 8 , Parity= None, Flow Control= Off )r9hj@9hj6hj3h}r9(h]h]h]h]h]uhMhhh]r9hX2. Connect the UART on the hardware to the Host. ( Configure the terminal/console to Baud Rate= 115200, Data Bits= 8 , Parity= None, Flow Control= Off )r9r9}r9(hj9hj9ubaubjF")r9}r9(hX Procedurer9hj@9hj6hjJ"h}r9(h]r9U procedurer9ah]h]h]h]r9hauhNhhh]r9hX Procedurer9r9}r9(hj9hj9ubaubjQ)r9}r9(hUhj@9hj6hjTh}r9(jVX-h]h]h]h]h]uhMhhh]r9(jX)r9}r9(hX^Copy/overwrite the pre-built boot image 'app' corresponding to the board to a bootable SD Cardhj9hj6hj[h}r9(h]h]h]h]h]uhNhhh]r9j/)r9}r9(hX^Copy/overwrite the pre-built boot image 'app' corresponding to the board to a bootable SD Cardr9hj9hj6hj3h}r9(h]h]h]h]h]uhMh]r9hX^Copy/overwrite the pre-built boot image 'app' corresponding to the board to a bootable SD Cardr9r9}r9(hj9hj9ubaubaubjX)r9}r9(hX!Insert the SD card into the boardr9hj9hj6hj[h}r9(h]h]h]h]h]uhNhhh]r9j/)r9}r9(hj9hj9hj6hj3h}r9(h]h]h]h]h]uhMh]r9hX!Insert the SD card into the boardr9r9}r9(hj9hj9ubaubaubjX)r9}r9(hXBoot/Reboot the board hj9hj6hj[h}r9(h]h]h]h]h]uhNhhh]r9j/)r9}r9(hXBoot/Reboot the boardr9hj9hj6hj3h}r9(h]h]h]h]h]uhMh]r9hXBoot/Reboot the boardr9r9}r9(hj9hj9ubaubaubeubj/)r9}r9(hX}The application will be loaded and run automatically and the "Host: Test Passed" message will be printed to the UART console.r9hj@9hj6hj3h}r9(h]h]h]h]h]uhMhhh]r9hX}The application will be loaded and run automatically and the "Host: Test Passed" message will be printed to the UART console.r9r9}r9(hj9hj9ubaubj)r9}r9(hX... Image:: ../images/BigDataIPC_Rtos_Demo.png hj@9hj6hjh}r9(UuriX'rtos/../images/BigDataIPC_Rtos_Demo.pngr9h]h]h]h]j}r9U*j9sh]uhMhhh]ubeubh)r9}r9(hUhj9hj6hhh}r9(h]h]h]h]r9Uk2h-k2k-k2l-k2e-boardsr9ah]r9hnauhMhhh]r9(h)r9}r9(hXK2H, K2K, K2L, K2E Boardsr9hj9hj6hhh}r9(h]h]h]h]h]uhMhhh]r9hXK2H, K2K, K2L, K2E Boardsr9r9}r9(hj9hj9ubaubj/)r9}r9(hXlThe prebuilt elf binaries of Host and DSP images can be loaded through CCS to the appropriate cores and run.r9hj9hj6hj3h}r9(h]h]h]h]h]uhMhhh]r9hXlThe prebuilt elf binaries of Host and DSP images can be loaded through CCS to the appropriate cores and run.r9r9}r9(hj9hj9ubaubeubeubh)r9}r9(hUjKhj8hj6hhh}r9(h]r9j!8ah]h]h]r9Uid44r9ah]uhMhhh]r9(h)r9}r9(hXHow to Re-Build the Exampler9hj9hj6hhh}r9(h]h]h]h]h]uhMhhh]r9hXHow to Re-Build the Exampler9r9}r9(hj9hj9ubaubj/)r9}r9(hXjThe bigdata ipc examples can be built from the Processor SDK top level directory using the following stepsr9hj9hj6hj3h}r9(h]h]h]h]h]uhMhhh]r9hXjThe bigdata ipc examples can be built from the Processor SDK top level directory using the following stepsr9r9}r9(hj9hj9ubaubjF")r9}r9(hX1. Build environment setupr9hj9hj6hjJ"h}r9(h]r9Ubuild-environment-setupr9ah]h]h]h]r9h%auhNhhh]r9hX1. Build environment setupr:r:}r:(hj9hj9ubaubjF")r:}r:(hX Linux hostr:hj9hj6hjJ"h}r:(h]r:U linux-hostr:ah]h]h]h]r :hlauhNhhh]r :hX Linux hostr :r :}r :(hj:hj:ubaubj)r:}r:(hXcd _ export SDK_INSTALL_PATH= source setupenv.shhj9hj6hjh}r:(jjh]h]h]h]h]uhMk hhh]r:hXcd _ export SDK_INSTALL_PATH= source setupenv.shr:r:}r:(hUhj:ubaubjF")r:}r:(hX Windows hostr:hj9hj6hjJ"h}r:(h]r:U windows-hostr:ah]h]h]h]r:hauhNhhh]r:hX Windows hostr:r:}r:(hj:hj:ubaubj)r :}r!:(hX{cd _ set SDK_INSTALL_PATH= setupenv.bathj9hj6hjh}r":(jjh]h]h]h]h]uhMt hhh]r#:hX{cd _ set SDK_INSTALL_PATH= setupenv.batr$:r%:}r&:(hUhj :ubaubjF")r':}r(:(hX2. Buildr):hj9hj6hjJ"h}r*:(h]r+:Ubuildr,:ah]h]h]h]r-:hauhNhhh]r.:hX2. Buildr/:r0:}r1:(hj):hj':ubaubj)r2:}r3:(hXmake bigdataipc_exampleshj9hj6hjh}r4:(jjh]h]h]h]h]uhM} hhh]r5:hXmake bigdataipc_examplesr6:r7:}r8:(hUhj2:ubaubj/)r9:}r::(hXfThis creates the elf binaries for both the host and DSP cores. And the binaries can be installed usingr;:hj9hj6hj3h}r<:(h]h]h]h]h]uhMhhh]r=:hXfThis creates the elf binaries for both the host and DSP cores. And the binaries can be installed usingr>:r?:}r@:(hj;:hj9:ubaubj)rA:}rB:(hX make bigdataipc_examples_installhj9hj6hjh}rC:(jjh]h]h]h]h]uhM hhh]rD:hX make bigdataipc_examples_installrE:rF:}rG:(hUhjA:ubaubj/)rH:}rI:(hX(NOTE: The above command installs the elf binaries under the prebuilt-binaries location mentioned above. Need to convert the prebuilt elf binaries into bootable images refer to :ref:`Processor SDK RTOS Boot `)hj9hj6hj3h}rJ:(h]h]h]h]h]uhMhhh]rK:(hX(NOTE: The above command installs the elf binaries under the prebuilt-binaries location mentioned above. Need to convert the prebuilt elf binaries into bootable images refer to rL:rM:}rN:(hX(NOTE: The above command installs the elf binaries under the prebuilt-binaries location mentioned above. Need to convert the prebuilt elf binaries into bootable images refer to hjH:ubjZ)rO:}rP:(hX.:ref:`Processor SDK RTOS Boot `rQ:hjH:hj6hj^h}rR:(UreftypeXrefj j X fc-boot-labelU refdomainXstdrS:h]h]U refexplicith]h]h]j j uhMh]rT:jb)rU:}rV:(hjQ:h}rW:(h]h]rX:(j jS:Xstd-refrY:eh]h]h]uhjO:h]rZ:hXProcessor SDK RTOS Bootr[:r\:}r]:(hUhjU:ubahjlubaubhX)r^:}r_:(hX)hjH:ubeubjF")r`:}ra:(hX Source filesrb:hj9hj6hjJ"h}rc:(h]rd:Usource-files-1re:ah]h]h]h]rf:hauhNhhh]rg:hX Source filesrh:ri:}rj:(hjb:hj`:ubaubj/)rk:}rl:(hX/The source files for the example are located atrm:hj9hj6hj3h}rn:(h]h]h]h]h]uhMhhh]ro:hX/The source files for the example are located atrp:rq:}rr:(hjm:hjk:ubaubj)rs:}rt:(hXU_/demos/bigdataipc/host_bios/simple_buffer_example.hj9hj6hjh}ru:(jjh]h]h]h]h]uhM hhh]rv:hXU_/demos/bigdataipc/host_bios/simple_buffer_example.rw:rx:}ry:(hUhjs:ubaubj/)rz:}r{:(hXThe host directory and dsp directory has the corresponding sources. The shared folder contains some common sources. The main sequence for big data IPC can be followed by looking at host/App.c and dsp/Server.c.r|:hj9hj6hj3h}r}:(h]h]h]h]h]uhMhhh]r~:hXThe host directory and dsp directory has the corresponding sources. The shared folder contains some common sources. The main sequence for big data IPC can be followed by looking at host/App.c and dsp/Server.c.r:r:}r:(hj|:hjz:ubaubeubeubeubhj6hhh}r:(h]r:X introductionr:ah]h]h]r:Uid42r:ah]uhKhhh]r:(h)r:}r:(hX Introductionr:hj6hj6hhh}r:(h]h]h]h]h]uhKhhh]r:hX Introductionr:r:}r:(hj:hj:ubaubj/)r:}r:(hXHigh Performance Computing applications and other Data intensive applications often require passing of Big data buffers between the multi-core processors in an SOC.r:hj6hj6hj3h}r:(h]h]h]h]h]uhKhhh]r:hXHigh Performance Computing applications and other Data intensive applications often require passing of Big data buffers between the multi-core processors in an SOC.r:r:}r:(hj:hj:ubaubj/)r:}r:(hXThe Big Data IPC examples are created mainly to show exchange of big data buffers between cores and is part of the Processor SDK RTOS package.r:hj6hj6hj3h}r:(h]h]h]h]h]uhK hhh]r:hXThe Big Data IPC examples are created mainly to show exchange of big data buffers between cores and is part of the Processor SDK RTOS package.r:r:}r:(hj:hj:ubaubj/)r:}r:(hXCurrently the example named "simple_buffer_example", captures the details of exchange of big buffers with both host A15 core and a DSP cores.r:hj6hj6hj3h}r:(h]h]h]h]h]uhKhhh]r:hXCurrently the example named "simple_buffer_example", captures the details of exchange of big buffers with both host A15 core and a DSP cores.r:r:}r:(hj:hj:ubaubeubhj6hj>h}r:(h]UlevelKh]h]r:j:aUsourcej6h]h]UlineKUtypejAuhKhhh]r:j/)r:}r:(hX/Duplicate implicit target name: "introduction".h}r:(h]h]h]h]h]uhj6h]r:hX/Duplicate implicit target name: "introduction".r:r:}r:(hUhj:ubahj3ubaubj)r:}r:(hUhj9hj6hj>h}r:(h]UlevelKh]h]r:j9aUsourcej6h]h]UlineMlUtypejAuhMlhhh]r:j/)r:}r:(hX9Duplicate implicit target name: "how to run the example".h}r:(h]h]h]h]h]uhj:h]r:hX9Duplicate implicit target name: "how to run the example".r:r:}r:(hUhj:ubahj3ubaubj)r:}r:(hUhj9hj6hj>h}r:(h]UlevelKh]h]r:j9aUsourcej6h]h]UlineMUtypejAuhMhhh]r:j/)r:}r:(hX>Duplicate implicit target name: "how to re-build the example".h}r:(h]h]h]h]h]uhj:h]r:hX>Duplicate implicit target name: "how to re-build the example".r:r:}r:(hUhj:ubahj3ubaubj)r:}r:(hUhj9hX\internal padding after source/rtos/Examples_and_Demonstrations/Big_Data_IPC_Examples.rst.incr:hj>h}r:(h]UlevelKh]h]Usourcej6h]h]UlineMUtypejfuhMhhh]r:(j/)r:}r:(hX;Content block expected for the "raw" directive; none found.h}r:(h]h]h]h]h]uhj:h]r:hX;Content block expected for the "raw" directive; none found.r:r:}r:(hUhj:ubahj3ubj)r:}r:(hX.. raw:: html h}r:(jjh]h]h]h]h]uhj:h]r:hX.. raw:: html r:r:}r:(hUhj:ubahjubeubj)r:}r:(hUhh)r:}r:(hUjKhh)r:}r:(hUhhhhhhh}r:(h]h]h]h]r:Uti-rtos-kernel-exampler:ah]r:hRauhK-hhh]r:(h)r:}r:(hXTI-RTOS Kernel Exampler:hj:hhhhh}r:(h]h]h]h]h]uhK-hhh]r:hXTI-RTOS Kernel Exampler:r:}r:(hj:hj:ubaubj )r:}r:(hXChttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Exampleshj:hj X=source/rtos/Examples_and_Demonstrations/RTOS_Examples.rst.incr:r:}r:bhjh}r:(jjh]h]h]h]h]uhKhhh]r:hXChttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Examplesr:r:}r:(hUhj:ubaubh)r:}r:(hUjKhj:hj:hhh}r:(h]r:Xoverviewr:ah]h]h]r:Uoverviewr;ah]uhKhhh]r;(h)r;}r;(hXOverviewr;hj:hj:hhh}r;(h]h]h]h]h]uhKhhh]r;hXOverviewr;r;}r ;(hj;hj;ubaubj/)r ;}r ;(hXThe SYS/BIOS examples gets user started with development of code using a real-time operating system. These are simple examples that does not get into details of software components provided in the SDK.r ;hj:hj:hj3h}r ;(h]h]h]h]h]uhKhhh]r;hXThe SYS/BIOS examples gets user started with development of code using a real-time operating system. These are simple examples that does not get into details of software components provided in the SDK.r;r;}r;(hj ;hj ;ubaubeubj:h)r;}r;(hUjKhj:hj:hhh}r;(h]r;Xarm cortex-a15r;ah]h]h]r;Uarm-cortex-a15r;ah]uhK?hhh]r;(h)r;}r;(hXARM Cortex-A15r;hj;hj:hhh}r;(h]h]h]h]h]uhK?hhh]r;hXARM Cortex-A15r;r ;}r!;(hj;hj;ubaubj/)r";}r#;(hX2The hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout. As a sample we will use the AM572x device to describe the steps. The same steps can be used for create hello world examples for A15 cores in Keystone 2 family of devices.r$;hj;hj:hj3h}r%;(h]h]h]h]h]uhKAhhh]r&;hX2The hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout. As a sample we will use the AM572x device to describe the steps. The same steps can be used for create hello world examples for A15 cores in Keystone 2 family of devices.r';r(;}r);(hj$;hj";ubaubj))r*;}r+;(hX- The K2G, K2E and K2H devices, can be located under Unclassified devices in the Resource Explorer. Refer below Screenshot for Keystone IIhj;hNhj,h}r,;(h]h]h]h]h]uhNhhh]r-;jQ)r.;}r/;(hUh}r0;(jVX-h]h]h]h]h]uhj*;h]r1;jX)r2;}r3;(hXThe K2G, K2E and K2H devices, can be located under Unclassified devices in the Resource Explorer. Refer below Screenshot for Keystone IIh}r4;(h]h]h]h]h]uhj.;h]r5;j/)r6;}r7;(hXThe K2G, K2E and K2H devices, can be located under Unclassified devices in the Resource Explorer. Refer below Screenshot for Keystone IIr8;hj2;hj:hj3h}r9;(h]h]h]h]h]uhKIh]r:;hXThe K2G, K2E and K2H devices, can be located under Unclassified devices in the Resource Explorer. Refer below Screenshot for Keystone IIr;;r<;}r=;(hj8;hj6;ubaubahj[ubahjTubaubj)r>;}r?;(hX!.. Image:: ../images/KSII_RS.png hj;hj:hjh}r@;(UuriXrtos/../images/KSII_RS.pngrA;h]h]h]h]j}rB;U*jA;sh]uhKMhhh]ubj/)rC;}rD;(hX1. Create a work space folder (\ti\am_572x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with **New Products Discovered**, so select all and **click on Finish**hj;hj:hj3h}rE;(h]h]h]h]h]uhKNhhh]rF;(hX1. Create a work space folder (tiam_572x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with rG;rH;}rI;(hX1. Create a work space folder (\ti\am_572x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with hjC;ubjW)rJ;}rK;(hX**New Products Discovered**h}rL;(h]h]h]h]h]uhjC;h]rM;hXNew Products DiscoveredrN;rO;}rP;(hUhjJ;ubahj_ubhX, so select all and rQ;rR;}rS;(hX, so select all and hjC;ubjW)rT;}rU;(hX**click on Finish**h}rV;(h]h]h]h]h]uhjC;h]rW;hXclick on FinishrX;rY;}rZ;(hUhjT;ubahj_ubeubj)r[;}r\;(hUhj;hj:hjh}r];(jU.jf5Kh]h]h]jUh]h]jjuhKShhh]r^;jX)r_;}r`;(hX4On CCS click View --> Resource Explorer (Examples). hj[;hj:hj[h}ra;(h]h]h]h]h]uhNhhh]rb;j/)rc;}rd;(hX3On CCS click View --> Resource Explorer (Examples).re;hj_;hj:hj3h}rf;(h]h]h]h]h]uhKSh]rg;hX3On CCS click View --> Resource Explorer (Examples).rh;ri;}rj;(hje;hjc;ubaubaubaubj/)rk;}rl;(hXa3. On SYS/BIOS scroll down to AM572X --> Cortex A --> Generic Example --> click on Hello Example.rm;hj;hj:hj3h}rn;(h]h]h]h]h]uhKUhhh]ro;hXa3. On SYS/BIOS scroll down to AM572X --> Cortex A --> Generic Example --> click on Hello Example.rp;rq;}rr;(hjm;hjk;ubaubj)rs;}rt;(hX9.. Image:: ../images/Sys_bios_hello_example_screen_1.jpg hj;hj:hjh}ru;(UuriX2rtos/../images/Sys_bios_hello_example_screen_1.jpgrv;h]h]h]h]j}rw;U*jv;sh]uhKYhhh]ubj/)rx;}ry;(hXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.rz;hj;hj:hj3h}r{;(h]h]h]h]h]uhKZhhh]r|;hXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.r};r~;}r;(hjz;hjx;ubaubj)r;}r;(hUhj;hj:hjh}r;(jU.jf5Kh]h]h]jUh]h]jjuhK]hhh]r;jX)r;}r;(hXBOn New CCS Project window enter project name and then click Next. hj;hj:hj[h}r;(h]h]h]h]h]uhNhhh]r;j/)r;}r;(hXAOn New CCS Project window enter project name and then click Next.r;hj;hj:hj3h}r;(h]h]h]h]h]uhK]h]r;hXAOn New CCS Project window enter project name and then click Next.r;r;}r;(hj;hj;ubaubaubaubj)r;}r;(hX9.. Image:: ../images/Sys_bios_hello_example_screen_2.jpg hj;hj:hjh}r;(UuriX2rtos/../images/Sys_bios_hello_example_screen_2.jpgr;h]h]h]h]j}r;U*j;sh]uhK`hhh]ubj/)r;}r;(hX6. On RSTC window select platform name: **ti.platforms.evmAM572X** and check that the target is set to **gnu.targets.arm.A15F**hj;hj:hj3h}r;(h]h]h]h]h]uhKahhh]r;(hX(6. On RSTC window select platform name: r;r;}r;(hX(6. On RSTC window select platform name: hj;ubjW)r;}r;(hX**ti.platforms.evmAM572X**h}r;(h]h]h]h]h]uhj;h]r;hXti.platforms.evmAM572Xr;r;}r;(hUhj;ubahj_ubhX% and check that the target is set to r;r;}r;(hX% and check that the target is set to hj;ubjW)r;}r;(hX**gnu.targets.arm.A15F**h}r;(h]h]h]h]h]uhj;h]r;hXgnu.targets.arm.A15Fr;r;}r;(hUhj;ubahj_ubeubj)r;}r;(hUhj;hj:hjh}r;(jU.jf5Kh]h]h]jUh]h]jjuhKdhhh]r;jX)r;}r;(hXFClick Finish. Your project should show up on Project Explorer window. hj;hj:hj[h}r;(h]h]h]h]h]uhNhhh]r;j/)r;}r;(hXEClick Finish. Your project should show up on Project Explorer window.r;hj;hj:hj3h}r;(h]h]h]h]h]uhKdh]r;hXEClick Finish. Your project should show up on Project Explorer window.r;r;}r;(hj;hj;ubaubaubaubj/)r;}r;(hXN8. To get log message to print on console add this variable to hello.cfg file:r;hj;hj:hj3h}r;(h]h]h]h]h]uhKfhhh]r;hXN8. To get log message to print on console add this variable to hello.cfg file:r;r;}r;(hj;hj;ubaubcdocutils.nodes raw r;)r;}r;(hX7
hj;hj:hUrawr;h}r;(UformatXhtmljjh]h]h]h]h]uhKihhh]r;hX7
r;r;}r;(hUhj;ubaubj;)r;}r;(hX
hj;hj:hj;h}r;(UformatXhtmljjh]h]h]h]h]uhKmhhh]r;hX
r;r;}r;(hUhj;ubaubj)r;}r;(hXJvar SemiHostSupport = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');hj;hj:hjh}r;(jjh]h]h]h]r;(Ucoder;Xceh]uhKthhh]r;(jb)r;}r;(hXvarh}r;(h]h]r;Unamer;ah]h]h]uhj;h]r;hXvarr;r;}r;(hUhj;ubahjlubhX r;}r;(hX hj;ubjb)r;}r;(hXSemiHostSupporth}r;(h]h]r;Unamer;ah]h]h]uhj;h]r;hXSemiHostSupportr;r;}r;(hUhj;ubahjlubhX r;}r;(hX hj;ubjb)r;}r;(hX=h}r;(h]h]r;Uoperatorr;ah]h]h]uhj;h]r;hX=r;}r;(hUhj;ubahjlubhX r;}r;(hX hj;ubjb)r;}r;(hXxdch}r;(h]h]r;Unamer;ah]h]h]uhj;h]r<hXxdcr<r<}r<(hUhj;ubahjlubjb)r<}r<(hX.h}r<(h]h]r<U punctuationr<ah]h]h]uhj;h]r <hX.r <}r <(hUhj<ubahjlubjb)r <}r <(hX useModuleh}r<(h]h]r<Unamer<ah]h]h]uhj;h]r<hX useModuler<r<}r<(hUhj <ubahjlubjb)r<}r<(hX(h}r<(h]h]r<U punctuationr<ah]h]h]uhj;h]r<hX(r<}r<(hUhj<ubahjlubjb)r<}r<(hX'h}r<(h]h]r <Uerrorr!<ah]h]h]uhj;h]r"<hX'r#<}r$<(hUhj<ubahjlubjb)r%<}r&<(hXtih}r'<(h]h]r(<Unamer)<ah]h]h]uhj;h]r*<hXtir+<r,<}r-<(hUhj%<ubahjlubjb)r.<}r/<(hX.h}r0<(h]h]r1<U punctuationr2<ah]h]h]uhj;h]r3<hX.r4<}r5<(hUhj.<ubahjlubjb)r6<}r7<(hXsysbiosh}r8<(h]h]r9<Unamer:<ah]h]h]uhj;h]r;<hXsysbiosr<<r=<}r><(hUhj6<ubahjlubjb)r?<}r@<(hX.h}rA<(h]h]rB<U punctuationrC<ah]h]h]uhj;h]rD<hX.rE<}rF<(hUhj?<ubahjlubjb)rG<}rH<(hXrtsh}rI<(h]h]rJ<UnamerK<ah]h]h]uhj;h]rL<hXrtsrM<rN<}rO<(hUhjG<ubahjlubjb)rP<}rQ<(hX.h}rR<(h]h]rS<U punctuationrT<ah]h]h]uhj;h]rU<hX.rV<}rW<(hUhjP<ubahjlubjb)rX<}rY<(hXgnuh}rZ<(h]h]r[<Unamer\<ah]h]h]uhj;h]r]<hXgnur^<r_<}r`<(hUhjX<ubahjlubjb)ra<}rb<(hX.h}rc<(h]h]rd<U punctuationre<ah]h]h]uhj;h]rf<hX.rg<}rh<(hUhja<ubahjlubjb)ri<}rj<(hXSemiHostSupporth}rk<(h]h]rl<Unamerm<ah]h]h]uhj;h]rn<hXSemiHostSupportro<rp<}rq<(hUhji<ubahjlubjb)rr<}rs<(hX'h}rt<(h]h]ru<Uerrorrv<ah]h]h]uhj;h]rw<hX'rx<}ry<(hUhjr<ubahjlubjb)rz<}r{<(hX);h}r|<(h]h]r}<U punctuationr~<ah]h]h]uhj;h]r<hX);r<r<}r<(hUhjz<ubahjlubeubj;)r<}r<(hX
hj;hj:hj;h}r<(UformatXhtmljjh]h]h]h]h]uhKuhhh]r<hX
r<r<}r<(hUhj<ubaubj))r<}r<(hXoYou also need to replace the nosys library in linker with rdimon which is the Semi-Hosting enabled BSP library.hj;hj:hj,h}r<(h]h]h]h]h]uhNhhh]r<j/)r<}r<(hXoYou also need to replace the nosys library in linker with rdimon which is the Semi-Hosting enabled BSP library.r<hj<hj:hj3h}r<(h]h]h]h]h]uhKzh]r<hXoYou also need to replace the nosys library in linker with rdimon which is the Semi-Hosting enabled BSP library.r<r<}r<(hj<hj<ubaubaubj/)r<}r<(hXXRight click on project --> Show Build Settings... --> Build --> GNU Linker --> Librariesr<hj;hj:hj3h}r<(h]h]h]h]h]uhK}hhh]r<hXXRight click on project --> Show Build Settings... --> Build --> GNU Linker --> Librariesr<r<}r<(hj<hj<ubaubj/)r<}r<(hXW9. Build Hello Example project by Right click on Hello Project and click Build project.r<hj;hj:hj3h}r<(h]h]h]h]h]uhKhhh]r<hXW9. Build Hello Example project by Right click on Hello Project and click Build project.r<r<}r<(hj<hj<ubaubj/)r<}r<(hX10. Create new target configuration (if one doesn`t exist) as described in here :ref:`Create Target Configuration File for EVM `hj;hj:hj3h}r<(h]h]h]h]h]uhKhhh]r<(hXP10. Create new target configuration (if one doesn`t exist) as described in here r<r<}r<(hXP10. Create new target configuration (if one doesn`t exist) as described in here hj<ubjZ)r<}r<(hXa:ref:`Create Target Configuration File for EVM `r<hj<hj:hj^h}r<(UreftypeXrefj j X/create-target-configuration-file-for-evm-label/U refdomainXstdr<h]h]U refexplicith]h]h]j j uhKh]r<jb)r<}r<(hj<h}r<(h]h]r<(j j<Xstd-refr<eh]h]h]uhj<h]r<hX(Create Target Configuration File for EVMr<r<}r<(hUhj<ubahjlubaubeubj/)r<}r<(hXM11. Right click on the target configuration and Launch target configurations.r<hj;hj:hj3h}r<(h]h]h]h]h]uhKhhh]r<hXM11. Right click on the target configuration and Launch target configurations.r<r<}r<(hj<hj<ubaubj)r<}r<(hUhj;hj:hjh}r<(jU.jf5K h]h]h]jUh]h]jjuhKhhh]r<jX)r<}r<(hX,Right click CortexA15_0 and connect target. hj<hj:hj[h}r<(h]h]h]h]h]uhNhhh]r<j/)r<}r<(hX+Right click CortexA15_0 and connect target.r<hj<hj:hj3h}r<(h]h]h]h]h]uhKh]r<hX+Right click CortexA15_0 and connect target.r<r<}r<(hj<hj<ubaubaubaubj/)r<}r<(hXk13. Load and run Hello Example out file. You should see **Hello World** string displayed on console window.hj;hj:hj3h}r<(h]h]h]h]h]uhKhhh]r<(hX813. Load and run Hello Example out file. You should see r<r<}r<(hX813. Load and run Hello Example out file. You should see hj<ubjW)r<}r<(hX**Hello World**h}r<(h]h]h]h]h]uhj<h]r<hX Hello Worldr<r<}r<(hUhj<ubahj_ubhX$ string displayed on console window.r<r<}r<(hX$ string displayed on console window.hj<ubeubj)r<}r<(hUhj;hj:hjh}r<(h]h]h]h]h]uhKhhh]r<j)r<}r<(hUjKhj<hj:hhh}r<(h]h]h]h]h]uhKhhh]ubaubeubh)r<}r<(hUjKhj:hj:hhh}r<(h]r<X arm cortex-a9r<ah]h]h]r<U arm-cortex-a9r<ah]uhKhhh]r<(h)r<}r<(hX ARM Cortex-A9r<hj<hj:hhh}r<(h]h]h]h]h]uhKhhh]r<hX ARM Cortex-A9r<r<}r<(hj<hj<ubaubj/)r<}r<(hXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout.r<hj<hj:hj3h}r<(h]h]h]h]h]uhKhhh]r=hXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout.r=r=}r=(hj<hj<ubaubj/)r=}r=(hX1. Create a work space folder (\\ti\\am_437x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with **New Products Discovered**, so select all and **click on Finish**hj<hj:hj3h}r=(h]h]h]h]h]uhKhhh]r=(hX1. Create a work space folder (\ti\am_437x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with r=r =}r =(hX1. Create a work space folder (\\ti\\am_437x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with hj=ubjW)r =}r =(hX**New Products Discovered**h}r =(h]h]h]h]h]uhj=h]r=hXNew Products Discoveredr=r=}r=(hUhj =ubahj_ubhX, so select all and r=r=}r=(hX, so select all and hj=ubjW)r=}r=(hX**click on Finish**h}r=(h]h]h]h]h]uhj=h]r=hXclick on Finishr=r=}r=(hUhj=ubahj_ubeubj)r=}r=(hUhj<hj:hjh}r=(jU.jf5Kh]h]h]jUh]h]jjuhKhhh]r=jX)r =}r!=(hX4On CCS click View --> Resource Explorer (Examples). hj=hj:hj[h}r"=(h]h]h]h]h]uhNhhh]r#=j/)r$=}r%=(hX3On CCS click View --> Resource Explorer (Examples).r&=hj =hj:hj3h}r'=(h]h]h]h]h]uhKh]r(=hX3On CCS click View --> Resource Explorer (Examples).r)=r*=}r+=(hj&=hj$=ubaubaubaubj/)r,=}r-=(hXa3. On SYS/BIOS scroll down to AM4378 --> Cortex A --> Generic Example --> click on Hello Example.r.=hj<hj:hj3h}r/=(h]h]h]h]h]uhKhhh]r0=hXa3. On SYS/BIOS scroll down to AM4378 --> Cortex A --> Generic Example --> click on Hello Example.r1=r2=}r3=(hj.=hj,=ubaubj)r4=}r5=(hX2.. Image:: ../images/RTOS_CortexA9_HelloWorld.png hj<hj:hjh}r6=(UuriX+rtos/../images/RTOS_CortexA9_HelloWorld.pngr7=h]h]h]h]j}r8=U*j7=sh]uhKhhh]ubj/)r9=}r:=(hXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.r;=hj<hj:hj3h}r<=(h]h]h]h]h]uhKhhh]r==hXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.r>=r?=}r@=(hj;=hj9=ubaubj)rA=}rB=(hUhj<hj:hjh}rC=(jU.jf5Kh]h]h]jUh]h]jjuhKhhh]rD=jX)rE=}rF=(hXBOn New CCS Project window enter project name and then click Next. hjA=hj:hj[h}rG=(h]h]h]h]h]uhNhhh]rH=j/)rI=}rJ=(hXAOn New CCS Project window enter project name and then click Next.rK=hjE=hj:hj3h}rL=(h]h]h]h]h]uhKh]rM=hXAOn New CCS Project window enter project name and then click Next.rN=rO=}rP=(hjK=hjI=ubaubaubaubj)rQ=}rR=(hX-.. Image:: ../images/HelloWorld_cortexA9.png hj<hj:hjh}rS=(UuriX&rtos/../images/HelloWorld_cortexA9.pngrT=h]h]h]h]j}rU=U*jT=sh]uhKhhh]ubj/)rV=}rW=(hX~6. On RSTC window select platform name: **ti.platforms.evmAM437X** and check that the target is set to **gnu.targets.arm.A9F**hj<hj:hj3h}rX=(h]h]h]h]h]uhKhhh]rY=(hX(6. On RSTC window select platform name: rZ=r[=}r\=(hX(6. On RSTC window select platform name: hjV=ubjW)r]=}r^=(hX**ti.platforms.evmAM437X**h}r_=(h]h]h]h]h]uhjV=h]r`=hXti.platforms.evmAM437Xra=rb=}rc=(hUhj]=ubahj_ubhX% and check that the target is set to rd=re=}rf=(hX% and check that the target is set to hjV=ubjW)rg=}rh=(hX**gnu.targets.arm.A9F**h}ri=(h]h]h]h]h]uhjV=h]rj=hXgnu.targets.arm.A9Frk=rl=}rm=(hUhjg=ubahj_ubeubj)rn=}ro=(hUhj<hj:hjh}rp=(jU.jf5Kh]h]h]jUh]h]jjuhKhhh]rq=jX)rr=}rs=(hXFClick Finish. Your project should show up on Project Explorer window. hjn=hj:hj[h}rt=(h]h]h]h]h]uhNhhh]ru=j/)rv=}rw=(hXEClick Finish. Your project should show up on Project Explorer window.rx=hjr=hj:hj3h}ry=(h]h]h]h]h]uhKh]rz=hXEClick Finish. Your project should show up on Project Explorer window.r{=r|=}r}=(hjx=hjv=ubaubaubaubj/)r~=}r=(hXN8. To get log message to print on console add this variable to hello.cfg file:r=hj<hj:hj3h}r=(h]h]h]h]h]uhKhhh]r=hXN8. To get log message to print on console add this variable to hello.cfg file:r=r=}r=(hj=hj~=ubaubj;)r=}r=(hX7
hj<hj:hj;h}r=(UformatXhtmljjh]h]h]h]h]uhKhhh]r=hX7
r=r=}r=(hUhj=ubaubj;)r=}r=(hX
hj<hj:hj;h}r=(UformatXhtmljjh]h]h]h]h]uhKhhh]r=hX
r=r=}r=(hUhj=ubaubj)r=}r=(hXJvar SemiHostSupport = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');hj<hj:hjh}r=(jjh]h]h]h]r=(j;Xceh]uhKhhh]r=(jb)r=}r=(hXvarh}r=(h]h]r=Unamer=ah]h]h]uhj=h]r=hXvarr=r=}r=(hUhj=ubahjlubhX r=}r=(hX hj=ubjb)r=}r=(hXSemiHostSupporth}r=(h]h]r=Unamer=ah]h]h]uhj=h]r=hXSemiHostSupportr=r=}r=(hUhj=ubahjlubhX r=}r=(hX hj=ubjb)r=}r=(hX=h}r=(h]h]r=Uoperatorr=ah]h]h]uhj=h]r=hX=r=}r=(hUhj=ubahjlubhX r=}r=(hX hj=ubjb)r=}r=(hXxdch}r=(h]h]r=Unamer=ah]h]h]uhj=h]r=hXxdcr=r=}r=(hUhj=ubahjlubjb)r=}r=(hX.h}r=(h]h]r=U punctuationr=ah]h]h]uhj=h]r=hX.r=}r=(hUhj=ubahjlubjb)r=}r=(hX useModuleh}r=(h]h]r=Unamer=ah]h]h]uhj=h]r=hX useModuler=r=}r=(hUhj=ubahjlubjb)r=}r=(hX(h}r=(h]h]r=U punctuationr=ah]h]h]uhj=h]r=hX(r=}r=(hUhj=ubahjlubjb)r=}r=(hX'h}r=(h]h]r=Uerrorr=ah]h]h]uhj=h]r=hX'r=}r=(hUhj=ubahjlubjb)r=}r=(hXtih}r=(h]h]r=Unamer=ah]h]h]uhj=h]r=hXtir=r=}r=(hUhj=ubahjlubjb)r=}r=(hX.h}r=(h]h]r=U punctuationr=ah]h]h]uhj=h]r=hX.r=}r=(hUhj=ubahjlubjb)r=}r=(hXsysbiosh}r=(h]h]r=Unamer=ah]h]h]uhj=h]r=hXsysbiosr=r=}r=(hUhj=ubahjlubjb)r=}r=(hX.h}r=(h]h]r>U punctuationr>ah]h]h]uhj=h]r>hX.r>}r>(hUhj=ubahjlubjb)r>}r>(hXrtsh}r>(h]h]r>Unamer >ah]h]h]uhj=h]r >hXrtsr >r >}r >(hUhj>ubahjlubjb)r>}r>(hX.h}r>(h]h]r>U punctuationr>ah]h]h]uhj=h]r>hX.r>}r>(hUhj>ubahjlubjb)r>}r>(hXgnuh}r>(h]h]r>Unamer>ah]h]h]uhj=h]r>hXgnur>r>}r>(hUhj>ubahjlubjb)r>}r >(hX.h}r!>(h]h]r">U punctuationr#>ah]h]h]uhj=h]r$>hX.r%>}r&>(hUhj>ubahjlubjb)r'>}r(>(hXSemiHostSupporth}r)>(h]h]r*>Unamer+>ah]h]h]uhj=h]r,>hXSemiHostSupportr->r.>}r/>(hUhj'>ubahjlubjb)r0>}r1>(hX'h}r2>(h]h]r3>Uerrorr4>ah]h]h]uhj=h]r5>hX'r6>}r7>(hUhj0>ubahjlubjb)r8>}r9>(hX);h}r:>(h]h]r;>U punctuationr<>ah]h]h]uhj=h]r=>hX);r>>r?>}r@>(hUhj8>ubahjlubeubj;)rA>}rB>(hX
hj<hj:hj;h}rC>(UformatXhtmljjh]h]h]h]h]uhKhhh]rD>hX
rE>rF>}rG>(hUhjA>ubaubj;)rH>}rI>(hX
hj<hj:hj;h}rJ>(UformatXhtmljjh]h]h]h]h]uhKhhh]rK>hX
rL>rM>}rN>(hUhjH>ubaubj))rO>}rP>(hXoYou also need to replace the nosys library in linker with rdimon which is the Semi-Hosting enabled BSP library.hj<hj:hj,h}rQ>(h]h]h]h]h]uhNhhh]rR>j/)rS>}rT>(hXoYou also need to replace the nosys library in linker with rdimon which is the Semi-Hosting enabled BSP library.rU>hjO>hj:hj3h}rV>(h]h]h]h]h]uhKh]rW>hXoYou also need to replace the nosys library in linker with rdimon which is the Semi-Hosting enabled BSP library.rX>rY>}rZ>(hjU>hjS>ubaubaubj/)r[>}r\>(hXXRight click on project --> Show Build Settings... --> Build --> GNU Linker --> Librariesr]>hj<hj:hj3h}r^>(h]h]h]h]h]uhKhhh]r_>hXXRight click on project --> Show Build Settings... --> Build --> GNU Linker --> Librariesr`>ra>}rb>(hj]>hj[>ubaubj/)rc>}rd>(hXW9. Build Hello Example project by Right click on Hello Project and click Build project.re>hj<hj:hj3h}rf>(h]h]h]h]h]uhKhhh]rg>hXW9. Build Hello Example project by Right click on Hello Project and click Build project.rh>ri>}rj>(hje>hjc>ubaubj/)rk>}rl>(hX10. Create new target configuration (if one doesn`t exist) as described here :ref:`Create Target Configuration File for EVM `hj<hj:hj3h}rm>(h]h]h]h]h]uhKhhh]rn>(hXM10. Create new target configuration (if one doesn`t exist) as described here ro>rp>}rq>(hXM10. Create new target configuration (if one doesn`t exist) as described here hjk>ubjZ)rr>}rs>(hX`:ref:`Create Target Configuration File for EVM `rt>hjk>hj:hj^h}ru>(UreftypeXrefj j X.create-target-configuration-file-for-evm-labelU refdomainXstdrv>h]h]U refexplicith]h]h]j j uhKh]rw>jb)rx>}ry>(hjt>h}rz>(h]h]r{>(j jv>Xstd-refr|>eh]h]h]uhjr>h]r}>hX(Create Target Configuration File for EVMr~>r>}r>(hUhjx>ubahjlubaubeubj/)r>}r>(hXM11. Right click on the target configuration and Launch target configurations.r>hj<hj:hj3h}r>(h]h]h]h]h]uhKhhh]r>hXM11. Right click on the target configuration and Launch target configurations.r>r>}r>(hj>hj>ubaubj)r>}r>(hUhj<hj:hjh}r>(jU.jf5K h]h]h]jUh]h]jjuhKhhh]r>jX)r>}r>(hX+Right click CortexA9_0 and connect target. hj>hj:hj[h}r>(h]h]h]h]h]uhNhhh]r>j/)r>}r>(hX*Right click CortexA9_0 and connect target.r>hj>hj:hj3h}r>(h]h]h]h]h]uhKh]r>hX*Right click CortexA9_0 and connect target.r>r>}r>(hj>hj>ubaubaubaubj/)r>}r>(hXk13. Load and run Hello Example out file. You should see **Hello World** string displayed on console window.hj<hj:hj3h}r>(h]h]h]h]h]uhKhhh]r>(hX813. Load and run Hello Example out file. You should see r>r>}r>(hX813. Load and run Hello Example out file. You should see hj>ubjW)r>}r>(hX**Hello World**h}r>(h]h]h]h]h]uhj>h]r>hX Hello Worldr>r>}r>(hUhj>ubahj_ubhX$ string displayed on console window.r>r>}r>(hX$ string displayed on console window.hj>ubeubj)r>}r>(hUhj<hj:hjh}r>(h]h]h]h]h]uhKhhh]r>j)r>}r>(hUjKhj>hj:hhh}r>(h]h]h]h]h]uhKhhh]ubaubeubh)r>}r>(hUjKhj:hj:hhh}r>(h]r>X arm cortex-a8r>ah]h]h]r>U arm-cortex-a8r>ah]uhKhhh]r>(h)r>}r>(hX ARM Cortex-A8r>hj>hj:hhh}r>(h]h]h]h]h]uhKhhh]r>hX ARM Cortex-A8r>r>}r>(hj>hj>ubaubj/)r>}r>(hXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout.r>hj>hj:hj3h}r>(h]h]h]h]h]uhKhhh]r>hXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout.r>r>}r>(hj>hj>ubaubj/)r>}r>(hX1. Create a work space folder (\\ti\\am_335x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with **New Products Discovered**, so select all and **click on Finish**hj>hj:hj3h}r>(h]h]h]h]h]uhKhhh]r>(hX1. Create a work space folder (\ti\am_335x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with r>r>}r>(hX1. Create a work space folder (\\ti\\am_335x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with hj>ubjW)r>}r>(hX**New Products Discovered**h}r>(h]h]h]h]h]uhj>h]r>hXNew Products Discoveredr>r>}r>(hUhj>ubahj_ubhX, so select all and r>r>}r>(hX, so select all and hj>ubjW)r>}r>(hX**click on Finish**h}r>(h]h]h]h]h]uhj>h]r>hXclick on Finishr>r>}r>(hUhj>ubahj_ubeubj/)r>}r>(hX62. On CCS click View --> Resource Explorer (Examples).r>hj>hj:hj3h}r>(h]h]h]h]h]uhKhhh]r>hX62. On CCS click View --> Resource Explorer (Examples).r>r>}r>(hj>hj>ubaubj/)r>}r>(hXa3. On SYS/BIOS scroll down to AM3352 --> Cortex A --> Generic Example --> click on Hello Example.r>hj>hj:hj3h}r>(h]h]h]h]h]uhKhhh]r>hXa3. On SYS/BIOS scroll down to AM3352 --> Cortex A --> Generic Example --> click on Hello Example.r>r>}r>(hj>hj>ubaubj)r>}r>(hX2.. Image:: ../images/RTOS_CortexA8_HelloWorld.png hj>hj:hjh}r>(UuriX+rtos/../images/RTOS_CortexA8_HelloWorld.pngr>h]h]h]h]j}r>U*j>sh]uhKhhh]ubj/)r>}r>(hXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.r>hj>hj:hj3h}r>(h]h]h]h]h]uhKhhh]r>hXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.r>r>}r>(hj>hj>ubaubj/)r>}r>(hXD5. On New CCS Project window enter project name and then click Next.r?hj>hj:hj3h}r?(h]h]h]h]h]uhKhhh]r?hXD5. On New CCS Project window enter project name and then click Next.r?r?}r?(hj?hj>ubaubj)r?}r?(hX-.. Image:: ../images/HelloWorld_cortexA8.png hj>hj:hjh}r?(UuriX&rtos/../images/HelloWorld_cortexA8.pngr ?h]h]h]h]j}r ?U*j ?sh]uhKhhh]ubj/)r ?}r ?(hX~6. On RSTC window select platform name: **ti.platforms.evmAM335X** and check that the target is set to **gnu.targets.arm.A8F**hj>hj:hj3h}r ?(h]h]h]h]h]uhKhhh]r?(hX(6. On RSTC window select platform name: r?r?}r?(hX(6. On RSTC window select platform name: hj ?ubjW)r?}r?(hX**ti.platforms.evmAM335X**h}r?(h]h]h]h]h]uhj ?h]r?hXti.platforms.evmAM335Xr?r?}r?(hUhj?ubahj_ubhX% and check that the target is set to r?r?}r?(hX% and check that the target is set to hj ?ubjW)r?}r?(hX**gnu.targets.arm.A8F**h}r?(h]h]h]h]h]uhj ?h]r?hXgnu.targets.arm.A8Fr ?r!?}r"?(hUhj?ubahj_ubeubj/)r#?}r$?(hXH7. Click Finish. Your project should show up on Project Explorer window.r%?hj>hj:hj3h}r&?(h]h]h]h]h]uhKhhh]r'?hXH7. Click Finish. Your project should show up on Project Explorer window.r(?r)?}r*?(hj%?hj#?ubaubj/)r+?}r,?(hXN8. To get log message to print on console add this variable to hello.cfg file:r-?hj>hj:hj3h}r.?(h]h]h]h]h]uhKhhh]r/?hXN8. To get log message to print on console add this variable to hello.cfg file:r0?r1?}r2?(hj-?hj+?ubaubj;)r3?}r4?(hX7
hj>hj:hj;h}r5?(UformatXhtmljjh]h]h]h]h]uhMhhh]r6?hX7
r7?r8?}r9?(hUhj3?ubaubj;)r:?}r;?(hX
hj>hj:hj;h}rr>?r??}r@?(hUhj:?ubaubj)rA?}rB?(hXJvar SemiHostSupport = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');hj>hj:hjh}rC?(jjh]h]h]h]rD?(j;Xceh]uhM hhh]rE?(jb)rF?}rG?(hXvarh}rH?(h]h]rI?UnamerJ?ah]h]h]uhjA?h]rK?hXvarrL?rM?}rN?(hUhjF?ubahjlubhX rO?}rP?(hX hjA?ubjb)rQ?}rR?(hXSemiHostSupporth}rS?(h]h]rT?UnamerU?ah]h]h]uhjA?h]rV?hXSemiHostSupportrW?rX?}rY?(hUhjQ?ubahjlubhX rZ?}r[?(hX hjA?ubjb)r\?}r]?(hX=h}r^?(h]h]r_?Uoperatorr`?ah]h]h]uhjA?h]ra?hX=rb?}rc?(hUhj\?ubahjlubhX rd?}re?(hX hjA?ubjb)rf?}rg?(hXxdch}rh?(h]h]ri?Unamerj?ah]h]h]uhjA?h]rk?hXxdcrl?rm?}rn?(hUhjf?ubahjlubjb)ro?}rp?(hX.h}rq?(h]h]rr?U punctuationrs?ah]h]h]uhjA?h]rt?hX.ru?}rv?(hUhjo?ubahjlubjb)rw?}rx?(hX useModuleh}ry?(h]h]rz?Unamer{?ah]h]h]uhjA?h]r|?hX useModuler}?r~?}r?(hUhjw?ubahjlubjb)r?}r?(hX(h}r?(h]h]r?U punctuationr?ah]h]h]uhjA?h]r?hX(r?}r?(hUhj?ubahjlubjb)r?}r?(hX'h}r?(h]h]r?Uerrorr?ah]h]h]uhjA?h]r?hX'r?}r?(hUhj?ubahjlubjb)r?}r?(hXtih}r?(h]h]r?Unamer?ah]h]h]uhjA?h]r?hXtir?r?}r?(hUhj?ubahjlubjb)r?}r?(hX.h}r?(h]h]r?U punctuationr?ah]h]h]uhjA?h]r?hX.r?}r?(hUhj?ubahjlubjb)r?}r?(hXsysbiosh}r?(h]h]r?Unamer?ah]h]h]uhjA?h]r?hXsysbiosr?r?}r?(hUhj?ubahjlubjb)r?}r?(hX.h}r?(h]h]r?U punctuationr?ah]h]h]uhjA?h]r?hX.r?}r?(hUhj?ubahjlubjb)r?}r?(hXrtsh}r?(h]h]r?Unamer?ah]h]h]uhjA?h]r?hXrtsr?r?}r?(hUhj?ubahjlubjb)r?}r?(hX.h}r?(h]h]r?U punctuationr?ah]h]h]uhjA?h]r?hX.r?}r?(hUhj?ubahjlubjb)r?}r?(hXgnuh}r?(h]h]r?Unamer?ah]h]h]uhjA?h]r?hXgnur?r?}r?(hUhj?ubahjlubjb)r?}r?(hX.h}r?(h]h]r?U punctuationr?ah]h]h]uhjA?h]r?hX.r?}r?(hUhj?ubahjlubjb)r?}r?(hXSemiHostSupporth}r?(h]h]r?Unamer?ah]h]h]uhjA?h]r?hXSemiHostSupportr?r?}r?(hUhj?ubahjlubjb)r?}r?(hX'h}r?(h]h]r?Uerrorr?ah]h]h]uhjA?h]r?hX'r?}r?(hUhj?ubahjlubjb)r?}r?(hX);h}r?(h]h]r?U punctuationr?ah]h]h]uhjA?h]r?hX);r?r?}r?(hUhj?ubahjlubeubj;)r?}r?(hX
hj>hj:hj;h}r?(UformatXhtmljjh]h]h]h]h]uhM hhh]r?hX
r?r?}r?(hUhj?ubaubj;)r?}r?(hX
hj>hj:hj;h}r?(UformatXhtmljjh]h]h]h]h]uhMhhh]r?hX
r?r?}r?(hUhj?ubaubj))r?}r?(hXoYou also need to replace the nosys library in linker with rdimon which is the Semi-Hosting enabled BSP library.hj>hj:hj,h}r?(h]h]h]h]h]uhNhhh]r?j/)r@}r@(hXoYou also need to replace the nosys library in linker with rdimon which is the Semi-Hosting enabled BSP library.r@hj?hj:hj3h}r@(h]h]h]h]h]uhMh]r@hXoYou also need to replace the nosys library in linker with rdimon which is the Semi-Hosting enabled BSP library.r@r@}r@(hj@hj@ubaubaubj/)r@}r @(hXXRight click on project --> Show Build Settings... --> Build --> GNU Linker --> Librariesr @hj>hj:hj3h}r @(h]h]h]h]h]uhMhhh]r @hXXRight click on project --> Show Build Settings... --> Build --> GNU Linker --> Librariesr @r@}r@(hj @hj@ubaubj/)r@}r@(hXW9. Build Hello Example project by Right click on Hello Project and click Build project.r@hj>hj:hj3h}r@(h]h]h]h]h]uhMhhh]r@hXW9. Build Hello Example project by Right click on Hello Project and click Build project.r@r@}r@(hj@hj@ubaubj/)r@}r@(hX10. Create new target configuration (if one doesn`t exist) as described here :ref:`Create Target Configuration File for EVM `hj>hj:hj3h}r@(h]h]h]h]h]uhMhhh]r@(hXM10. Create new target configuration (if one doesn`t exist) as described here r@r@}r@(hXM10. Create new target configuration (if one doesn`t exist) as described here hj@ubjZ)r@}r @(hX`:ref:`Create Target Configuration File for EVM `r!@hj@hj:hj^h}r"@(UreftypeXrefj j X.create-target-configuration-file-for-evm-labelU refdomainXstdr#@h]h]U refexplicith]h]h]j j uhMh]r$@jb)r%@}r&@(hj!@h}r'@(h]h]r(@(j j#@Xstd-refr)@eh]h]h]uhj@h]r*@hX(Create Target Configuration File for EVMr+@r,@}r-@(hUhj%@ubahjlubaubeubj/)r.@}r/@(hXM11. Right click on the target configuration and Launch target configurations.r0@hj>hj:hj3h}r1@(h]h]h]h]h]uhM!hhh]r2@hXM11. Right click on the target configuration and Launch target configurations.r3@r4@}r5@(hj0@hj.@ubaubj)r6@}r7@(hUhj>hj:hjh}r8@(jU.jf5K h]h]h]jUh]h]jjuhM$hhh]r9@jX)r:@}r;@(hX+Right click CortexA8_0 and connect target. hj6@hj:hj[h}r<@(h]h]h]h]h]uhNhhh]r=@j/)r>@}r?@(hX*Right click CortexA8_0 and connect target.r@@hj:@hj:hj3h}rA@(h]h]h]h]h]uhM$h]rB@hX*Right click CortexA8_0 and connect target.rC@rD@}rE@(hj@@hj>@ubaubaubaubj/)rF@}rG@(hXk13. Load and run Hello Example out file. You should see **Hello World** string displayed on console window.hj>hj:hj3h}rH@(h]h]h]h]h]uhM&hhh]rI@(hX813. Load and run Hello Example out file. You should see rJ@rK@}rL@(hX813. Load and run Hello Example out file. You should see hjF@ubjW)rM@}rN@(hX**Hello World**h}rO@(h]h]h]h]h]uhjF@h]rP@hX Hello WorldrQ@rR@}rS@(hUhjM@ubahj_ubhX$ string displayed on console window.rT@rU@}rV@(hX$ string displayed on console window.hjF@ubeubj)rW@}rX@(hUhj>hj:hjh}rY@(h]h]h]h]h]uhM)hhh]rZ@j)r[@}r\@(hUjKhjW@hj:hhh}r]@(h]h]h]h]h]uhKhhh]ubaubeubh)r^@}r_@(hUjKhj:hj:hhh}r`@(h]ra@X arm cortex-r5rb@ah]h]h]rc@U arm-cortex-r5rd@ah]uhM,hhh]re@(h)rf@}rg@(hX ARM Cortex-R5rh@hj^@hj:hhh}ri@(h]h]h]h]h]uhM,hhh]rj@hX ARM Cortex-R5rk@rl@}rm@(hjh@hjf@ubaubj/)rn@}ro@(hXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout.rp@hj^@hj:hj3h}rq@(h]h]h]h]h]uhM.hhh]rr@hXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout.rs@rt@}ru@(hjp@hjn@ubaubj/)rv@}rw@(hX1. Create a work space folder (/ti/am65x_r5_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with **New Products Discovered**, so select all and **click on Finish**hj^@hj:hj3h}rx@(h]h]h]h]h]uhM1hhh]ry@(hX1. Create a work space folder (/ti/am65x_r5_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with rz@r{@}r|@(hX1. Create a work space folder (/ti/am65x_r5_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with hjv@ubjW)r}@}r~@(hX**New Products Discovered**h}r@(h]h]h]h]h]uhjv@h]r@hXNew Products Discoveredr@r@}r@(hUhj}@ubahj_ubhX, so select all and r@r@}r@(hX, so select all and hjv@ubjW)r@}r@(hX**click on Finish**h}r@(h]h]h]h]h]uhjv@h]r@hXclick on Finishr@r@}r@(hUhj@ubahj_ubeubj/)r@}r@(hX'2. Select File --> New --> CCS Project.r@hj^@hj:hj3h}r@(h]h]h]h]h]uhM6hhh]r@hX'2. Select File --> New --> CCS Project.r@r@}r@(hj@hj@ubaubj/)r@}r@(hX3. Select Target: AM6548.r@hj^@hj:hj3h}r@(h]h]h]h]h]uhM9hhh]r@hX3. Select Target: AM6548.r@r@}r@(hj@hj@ubaubj/)r@}r@(hX4. Select Cortex R [ARM] tab.r@hj^@hj:hj3h}r@(h]h]h]h]h]uhM<hhh]r@hX4. Select Cortex R [ARM] tab.r@r@}r@(hj@hj@ubaubj/)r@}r@(hXt5. Under Project templates and examples, expand SYS/BIOS. Expand More Examples..., click Search using Import Wizard.r@hj^@hj:hj3h}r@(h]h]h]h]h]uhM?hhh]r@hXt5. Under Project templates and examples, expand SYS/BIOS. Expand More Examples..., click Search using Import Wizard.r@r@}r@(hj@hj@ubaubj/)r@}r@(hX(6. Select "hello" project, click Finish.r@hj^@hj:hj3h}r@(h]h]h]h]h]uhMBhhh]r@hX(6. Select "hello" project, click Finish.r@r@}r@(hj@hj@ubaubj/)r@}r@(hX7. Launch the target configuration using the appropriate emulator to connect to AM65x EVM as described in the AM65x EVM Hardware Setup Guide.r@hj^@hj:hj3h}r@(h]h]h]h]h]uhMEhhh]r@hX7. Launch the target configuration using the appropriate emulator to connect to AM65x EVM as described in the AM65x EVM Hardware Setup Guide.r@r@}r@(hj@hj@ubaubj/)r@}r@(hX<8. Right click on DMSC_Cortex_M3_0 and click Connect Target.r@hj^@hj:hj3h}r@(h]h]h]h]h]uhMHhhh]r@hX<8. Right click on DMSC_Cortex_M3_0 and click Connect Target.r@r@}r@(hj@hj@ubaubj/)r@}r@(hX9. Connect to the MCU_PULSAR_Cortex_R5_0 core. Load and run Hello Example out file. You should see Hello World string displayed on console window.r@hj^@hj:hj3h}r@(h]h]h]h]h]uhMKhhh]r@hX9. Connect to the MCU_PULSAR_Cortex_R5_0 core. Load and run Hello Example out file. You should see Hello World string displayed on console window.r@r@}r@(hj@hj@ubaubeubh)r@}r@(hUjKhj:hj:hhh}r@(h]r@X arm cortex-m4r@ah]h]h]r@U arm-cortex-m4r@ah]uhMPhhh]r@(h)r@}r@(hX ARM Cortex-M4r@hj@hj:hhh}r@(h]h]h]h]h]uhMPhhh]r@hX ARM Cortex-M4r@r@}r@(hj@hj@ubaubj/)r@}r@(hXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout.r@hj@hj:hj3h}r@(h]h]h]h]h]uhMRhhh]r@hXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout.r@r@}r@(hj@hj@ubaubj/)r@}r@(hX1. Create a work space folder (/ti/am_572x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with **New Products Discovered**, so select all and **click on Finish**hj@hj:hj3h}r@(h]h]h]h]h]uhMUhhh]r@(hX1. Create a work space folder (/ti/am_572x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with r@r@}r@(hX1. Create a work space folder (/ti/am_572x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with hj@ubjW)r@}r@(hX**New Products Discovered**h}r@(h]h]h]h]h]uhj@h]r@hXNew Products Discoveredr@r@}r@(hUhj@ubahj_ubhX, so select all and r@r@}r@(hX, so select all and hj@ubjW)r@}r@(hX**click on Finish**h}r@(h]h]h]h]h]uhj@h]r@hXclick on Finishr@r@}r@(hUhj@ubahj_ubeubj/)r@}r@(hX62. On CCS click View --> Resource Explorer (Examples).rAhj@hj:hj3h}rA(h]h]h]h]h]uhMZhhh]rAhX62. On CCS click View --> Resource Explorer (Examples).rArA}rA(hjAhj@ubaubj/)rA}rA(hXa3. on SYS/BIOS scroll down to AM572X --> Cortex M --> Generic Example --> click on Hello Example.rAhj@hj:hj3h}r A(h]h]h]h]h]uhM]hhh]r AhXa3. on SYS/BIOS scroll down to AM572X --> Cortex M --> Generic Example --> click on Hello Example.r Ar A}r A(hjAhjAubaubj)rA}rA(hX9.. Image:: ../images/SYSBIOS_hello_world_M4_template.jpg hj@hj:hjh}rA(UuriX2rtos/../images/SYSBIOS_hello_world_M4_template.jpgrAh]h]h]h]j}rAU*jAsh]uhMahhh]ubj/)rA}rA(hXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.rAhj@hj:hj3h}rA(h]h]h]h]h]uhMbhhh]rAhXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.rArA}rA(hjAhjAubaubj)rA}rA(hUhj@hj:hjh}rA(jU.jf5Kh]h]h]jUh]h]jjuhMehhh]rAjX)rA}r A(hX?Go to Project Explorer window and click on project properties. hjAhj:hj[h}r!A(h]h]h]h]h]uhNhhh]r"Aj/)r#A}r$A(hX>Go to Project Explorer window and click on project properties.r%AhjAhj:hj3h}r&A(h]h]h]h]h]uhMeh]r'AhX>Go to Project Explorer window and click on project properties.r(Ar)A}r*A(hj%Ahj#Aubaubaubaubj)r+A}r,A(hX3.. Image:: ../images/SYSBIOS_M4_platformSelect.jpg hj@hj:hjh}r-A(UuriX,rtos/../images/SYSBIOS_M4_platformSelect.jpgr.Ah]h]h]h]j}r/AU*j.Ash]uhMhhhh]ubj/)r0A}r1A(hX6. On RSTC window select platform name: **ti.platforms.evmAM572X** and check that the target is set to **gnu.targets.arm.elf.M4**hj@hj:hj3h}r2A(h]h]h]h]h]uhMihhh]r3A(hX(6. On RSTC window select platform name: r4Ar5A}r6A(hX(6. On RSTC window select platform name: hj0AubjW)r7A}r8A(hX**ti.platforms.evmAM572X**h}r9A(h]h]h]h]h]uhj0Ah]r:AhXti.platforms.evmAM572Xr;ArAr?A}r@A(hX% and check that the target is set to hj0AubjW)rAA}rBA(hX**gnu.targets.arm.elf.M4**h}rCA(h]h]h]h]h]uhj0Ah]rDAhXgnu.targets.arm.elf.M4rEArFA}rGA(hUhjAAubahj_ubeubj/)rHA}rIA(hXH7. Click Finish. Your project should show up on Project Explorer window.rJAhj@hj:hj3h}rKA(h]h]h]h]h]uhMlhhh]rLAhXH7. Click Finish. Your project should show up on Project Explorer window.rMArNA}rOA(hjJAhjHAubaubj/)rPA}rQA(hXW8. Build Hello Example project by Right click on Hello Project and click Build project.rRAhj@hj:hj3h}rSA(h]h]h]h]h]uhMohhh]rTAhXW8. Build Hello Example project by Right click on Hello Project and click Build project.rUArVA}rWA(hjRAhjPAubaubj/)rXA}rYA(hXT9. Launch target configurations using appropriate emulator to connect to AM572X EVM.rZAhj@hj:hj3h}r[A(h]h]h]h]h]uhMrhhh]r\AhXT9. Launch target configurations using appropriate emulator to connect to AM572X EVM.r]Ar^A}r_A(hjZAhjXAubaubj/)r`A}raA(hX10. Right click CortexA15_0 and connect target. From the Scripts menu select `AM572x Multicore Initialization->IPU1SSClkEnable_API `__.hj@hj:hj3h}rbA(h]h]h]h]h]uhMuhhh]rcA(hXM10. Right click CortexA15_0 and connect target. From the Scripts menu select rdAreA}rfA(hXM10. Right click CortexA15_0 and connect target. From the Scripts menu select hj`Aubj)rgA}rhA(hXp`AM572x Multicore Initialization->IPU1SSClkEnable_API `__h}riA(UnameX4AM572x Multicore Initialization->IPU1SSClkEnable_APIjX5index_how_to_guides.html#connect-to-am57x-slave-coresh]h]h]h]h]uhj`Ah]rjAhX4AM572x Multicore Initialization->IPU1SSClkEnable_APIrkArlA}rmA(hUhjgAubahjubhX.rnA}roA(hX.hj`Aubeubj/)rpA}rqA(hX11. Connect to the Cortex_M4_IPU1_C0. Load and run Hello Example out file. You should see **Hello World** string displayed on console window.hj@hj:hj3h}rrA(h]h]h]h]h]uhMyhhh]rsA(hXZ11. Connect to the Cortex_M4_IPU1_C0. Load and run Hello Example out file. You should see rtAruA}rvA(hXZ11. Connect to the Cortex_M4_IPU1_C0. Load and run Hello Example out file. You should see hjpAubjW)rwA}rxA(hX**Hello World**h}ryA(h]h]h]h]h]uhjpAh]rzAhX Hello Worldr{Ar|A}r}A(hUhjwAubahj_ubhX$ string displayed on console window.r~ArA}rA(hX$ string displayed on console window.hjpAubeubj)rA}rA(hUhj@hj:hjh}rA(h]h]h]h]h]uhM|hhh]rAj)rA}rA(hUjKhjAhj:hhh}rA(h]h]h]h]h]uhKhhh]ubaubeubh)rA}rA(hUjKhj:hj:hhh}rA(h]rAXarm9rAah]h]h]rAUarm9rAah]uhMhhh]rA(h)rA}rA(hXARM9rAhjAhj:hhh}rA(h]h]h]h]h]uhMhhh]rAhXARM9rArA}rA(hjAhjAubaubj/)rA}rA(hXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout. As a sample we will use the OMAP-L138 device to describe the steps.rAhjAhj:hj3h}rA(h]h]h]h]h]uhMhhh]rAhXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout. As a sample we will use the OMAP-L138 device to describe the steps.rArA}rA(hjAhjAubaubj/)rA}rA(hX1. Create a workspace folder inside the ti folder to be used for the Hello Example project, and start CCS. You may be prompted with **New Products Discovered**, so select all and **click on Finish**hjAhj:hj3h}rA(h]h]h]h]h]uhMhhh]rA(hX1. Create a workspace folder inside the ti folder to be used for the Hello Example project, and start CCS. You may be prompted with rArA}rA(hX1. Create a workspace folder inside the ti folder to be used for the Hello Example project, and start CCS. You may be prompted with hjAubjW)rA}rA(hX**New Products Discovered**h}rA(h]h]h]h]h]uhjAh]rAhXNew Products DiscoveredrArA}rA(hUhjAubahj_ubhX, so select all and rArA}rA(hX, so select all and hjAubjW)rA}rA(hX**click on Finish**h}rA(h]h]h]h]h]uhjAh]rAhXclick on FinishrArA}rA(hUhjAubahj_ubeubj)rA}rA(hUhjAhj:hjh}rA(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]rAjX)rA}rA(hX<On CCS click View --> Resource Explorer Classic (Examples). hjAhj:hj[h}rA(h]h]h]h]h]uhNhhh]rAj/)rA}rA(hX;On CCS click View --> Resource Explorer Classic (Examples).rAhjAhj:hj3h}rA(h]h]h]h]h]uhMh]rAhX;On CCS click View --> Resource Explorer Classic (Examples).rArA}rA(hjAhjAubaubaubaubj/)rA}rA(hX3. On SYS/BIOS scroll down to OMAP-L1x --> LCDKOMAPL138 --> TI Target Examples --> Generic Examples --> click on Hello Example.rAhjAhj:hj3h}rA(h]h]h]h]h]uhMhhh]rAhX3. On SYS/BIOS scroll down to OMAP-L1x --> LCDKOMAPL138 --> TI Target Examples --> Generic Examples --> click on Hello Example.rArA}rA(hjAhjAubaubj)rA}rA(hX8.. Image:: ../images/omapl13x_arm9_hello_rtos_tirex.png hjAhj:hjh}rA(UuriX1rtos/../images/omapl13x_arm9_hello_rtos_tirex.pngrAh]h]h]h]j}rAU*jAsh]uhMhhh]ubj/)rA}rA(hXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.rAhjAhj:hj3h}rA(h]h]h]h]h]uhMhhh]rAhXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.rArA}rA(hjAhjAubaubj)rA}rA(hUhjAhj:hjh}rA(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]rAjX)rA}rA(hXBOn New CCS Project window enter project name and then click Next. hjAhj:hj[h}rA(h]h]h]h]h]uhNhhh]rAj/)rA}rA(hXAOn New CCS Project window enter project name and then click Next.rAhjAhj:hj3h}rA(h]h]h]h]h]uhMh]rAhXAOn New CCS Project window enter project name and then click Next.rArA}rA(hjAhjAubaubaubaubj)rA}rA(hX6.. Image:: ../images/omapl13x_arm9_hello_rtos_ccs.png hjAhj:hjh}rA(UuriX/rtos/../images/omapl13x_arm9_hello_rtos_ccs.pngrAh]h]h]h]j}rAU*jAsh]uhMhhh]ubj/)rA}rA(hX6. On RSTC window select platform name: **ti.platforms.evmOMAPL138** and check that the target is set to **ti.targets.arm.elf.Arm9**hjAhj:hj3h}rA(h]h]h]h]h]uhMhhh]rA(hX(6. On RSTC window select platform name: rArA}rA(hX(6. On RSTC window select platform name: hjAubjW)rA}rA(hX**ti.platforms.evmOMAPL138**h}rA(h]h]h]h]h]uhjAh]rAhXti.platforms.evmOMAPL138rArA}rA(hUhjAubahj_ubhX% and check that the target is set to rBrB}rB(hX% and check that the target is set to hjAubjW)rB}rB(hX**ti.targets.arm.elf.Arm9**h}rB(h]h]h]h]h]uhjAh]rBhXti.targets.arm.elf.Arm9rBrB}r B(hUhjBubahj_ubeubj)r B}r B(hUhjAhj:hjh}r B(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]r BjX)rB}rB(hXFClick Finish. Your project should show up on Project Explorer window. hj Bhj:hj[h}rB(h]h]h]h]h]uhNhhh]rBj/)rB}rB(hXEClick Finish. Your project should show up on Project Explorer window.rBhjBhj:hj3h}rB(h]h]h]h]h]uhMh]rBhXEClick Finish. Your project should show up on Project Explorer window.rBrB}rB(hjBhjBubaubaubaubj/)rB}rB(hXW8. Build Hello Example project by Right click on Hello Project and click Build project.rBhjAhj:hj3h}rB(h]h]h]h]h]uhMhhh]rBhXW8. Build Hello Example project by Right click on Hello Project and click Build project.rBr B}r!B(hjBhjBubaubj/)r"B}r#B(hX9. Create new target configuration (if one doesn`t exist) as described in here :ref:`Create Target Configuration File for EVM `hjAhj:hj3h}r$B(h]h]h]h]h]uhMhhh]r%B(hXO9. Create new target configuration (if one doesn`t exist) as described in here r&Br'B}r(B(hXO9. Create new target configuration (if one doesn`t exist) as described in here hj"BubjZ)r)B}r*B(hXa:ref:`Create Target Configuration File for EVM `r+Bhj"Bhj:hj^h}r,B(UreftypeXrefj j X/create-target-configuration-file-for-evm-label/U refdomainXstdr-Bh]h]U refexplicith]h]h]j j uhMh]r.Bjb)r/B}r0B(hj+Bh}r1B(h]h]r2B(j j-BXstd-refr3Beh]h]h]uhj)Bh]r4BhX(Create Target Configuration File for EVMr5Br6B}r7B(hUhj/Bubahjlubaubeubj/)r8B}r9B(hXM10. Right click on the target configuration and Launch target configurations.r:BhjAhj:hj3h}r;B(h]h]h]h]h]uhMhhh]rB}r?B(hj:Bhj8Bubaubj)r@B}rAB(hUhjAhj:hjh}rBB(jU.jf5K h]h]h]jUh]h]jjuhMhhh]rCBjX)rDB}rEB(hX'Right click ARM9_0 and connect target. hj@Bhj:hj[h}rFB(h]h]h]h]h]uhNhhh]rGBj/)rHB}rIB(hX&Right click ARM9_0 and connect target.rJBhjDBhj:hj3h}rKB(h]h]h]h]h]uhMh]rLBhX&Right click ARM9_0 and connect target.rMBrNB}rOB(hjJBhjHBubaubaubaubj/)rPB}rQB(hXo12. Load and run Hello Example out file. You should see **Hello World** string displayed on the console window.hjAhj:hj3h}rRB(h]h]h]h]h]uhMhhh]rSB(hX812. Load and run Hello Example out file. You should see rTBrUB}rVB(hX812. Load and run Hello Example out file. You should see hjPBubjW)rWB}rXB(hX**Hello World**h}rYB(h]h]h]h]h]uhjPBh]rZBhX Hello Worldr[Br\B}r]B(hUhjWBubahj_ubhX( string displayed on the console window.r^Br_B}r`B(hX( string displayed on the console window.hjPBubeubj)raB}rbB(hUhjAhj:hjh}rcB(h]h]h]h]h]uhMhhh]rdBj)reB}rfB(hUjKhjaBhj:hhh}rgB(h]h]h]h]h]uhKhhh]ubaubeubh)rhB}riB(hUjKhj:hj:hhh}rjB(h]rkBXdsp c66xrlBah]h]h]rmBUdsp-c66xrnBah]uhMhhh]roB(h)rpB}rqB(hXDSP C66xrrBhjhBhj:hhh}rsB(h]h]h]h]h]uhMhhh]rtBhXDSP C66xruBrvB}rwB(hjrBhjpBubaubj/)rxB}ryB(hXEThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout. As a sample we will use the AM572x device to describe the steps but the same steps can be used for create hello world examples for C66x cores in Keystone I and Keystone 2 family of devices.rzBhjhBhj:hj3h}r{B(h]h]h]h]h]uhMhhh]r|BhXEThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout. As a sample we will use the AM572x device to describe the steps but the same steps can be used for create hello world examples for C66x cores in Keystone I and Keystone 2 family of devices.r}Br~B}rB(hjzBhjxBubaubj))rB}rB(hX- The C66x examples corresponding Keystone I devices can be located under C66x Multi-core DSP devies in the Resource Explorer. Refer below screenshothjhBhNhj,h}rB(h]h]h]h]h]uhNhhh]rBjQ)rB}rB(hUh}rB(jVX-h]h]h]h]h]uhjBh]rBjX)rB}rB(hXThe C66x examples corresponding Keystone I devices can be located under C66x Multi-core DSP devies in the Resource Explorer. Refer below screenshoth}rB(h]h]h]h]h]uhjBh]rBj/)rB}rB(hXThe C66x examples corresponding Keystone I devices can be located under C66x Multi-core DSP devies in the Resource Explorer. Refer below screenshotrBhjBhj:hj3h}rB(h]h]h]h]h]uhMh]rBhXThe C66x examples corresponding Keystone I devices can be located under C66x Multi-core DSP devies in the Resource Explorer. Refer below screenshotrBrB}rB(hjBhjBubaubahj[ubahjTubaubj)rB}rB(hX .. Image:: ../images/KSI_RS.png hjhBhj:hjh}rB(UuriXrtos/../images/KSI_RS.pngrBh]h]h]h]j}rBU*jBsh]uhMhhh]ubj))rB}rB(hX- The K2G, K2E and K2H devices, can be located under Unclassified devices in the Resource Explorer. Refer below screen shothjhBhNhj,h}rB(h]h]h]h]h]uhNhhh]rBjQ)rB}rB(hUh}rB(jVX-h]h]h]h]h]uhjBh]rBjX)rB}rB(hXyThe K2G, K2E and K2H devices, can be located under Unclassified devices in the Resource Explorer. Refer below screen shoth}rB(h]h]h]h]h]uhjBh]rBj/)rB}rB(hXyThe K2G, K2E and K2H devices, can be located under Unclassified devices in the Resource Explorer. Refer below screen shotrBhjBhj:hj3h}rB(h]h]h]h]h]uhMh]rBhXyThe K2G, K2E and K2H devices, can be located under Unclassified devices in the Resource Explorer. Refer below screen shotrBrB}rB(hjBhjBubaubahj[ubahjTubaubj)rB}rB(hX!.. Image:: ../images/KSII_RS.png hjhBhj:hjh}rB(UuriXrtos/../images/KSII_RS.pngrBh]h]h]h]j}rBU*jBsh]uhMhhh]ubj/)rB}rB(hX1. Create a work space folder (\ti\am_572x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with **New Products Discovered**, so select all and **click on Finish**hjhBhj:hj3h}rB(h]h]h]h]h]uhMhhh]rB(hX1. Create a work space folder (tiam_572x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with rBrB}rB(hX1. Create a work space folder (\ti\am_572x_hello_workspace) under ti folder to be used for Hello Example project, and start CCS. You may be prompted with hjBubjW)rB}rB(hX**New Products Discovered**h}rB(h]h]h]h]h]uhjBh]rBhXNew Products DiscoveredrBrB}rB(hUhjBubahj_ubhX, so select all and rBrB}rB(hX, so select all and hjBubjW)rB}rB(hX**click on Finish**h}rB(h]h]h]h]h]uhjBh]rBhXclick on FinishrBrB}rB(hUhjBubahj_ubeubj)rB}rB(hUhjhBhj:hjh}rB(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]rBjX)rB}rB(hX4On CCS click View --> Resource Explorer (Examples). hjBhj:hj[h}rB(h]h]h]h]h]uhNhhh]rBj/)rB}rB(hX3On CCS click View --> Resource Explorer (Examples).rBhjBhj:hj3h}rB(h]h]h]h]h]uhMh]rBhX3On CCS click View --> Resource Explorer (Examples).rBrB}rB(hjBhjBubaubaubaubj/)rB}rB(hX]3. on SYS/BIOS scroll down to AM572X --> C66x --> Generic Example --> click on Hello Example.rBhjhBhj:hj3h}rB(h]h]h]h]h]uhMhhh]rBhX]3. on SYS/BIOS scroll down to AM572X --> C66x --> Generic Example --> click on Hello Example.rBrB}rB(hjBhjBubaubj)rB}rB(hX:.. Image:: ../images/SYSBIOS_hello_world_dsp_template.jpg hjhBhj:hjh}rB(UuriX3rtos/../images/SYSBIOS_hello_world_dsp_template.jpgrBh]h]h]h]j}rBU*jBsh]uhMhhh]ubj/)rB}rB(hXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.rBhjhBhj:hj3h}rB(h]h]h]h]h]uhMhhh]rBhXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.rBrB}rB(hjBhjBubaubj)rB}rB(hUhjhBhj:hjh}rB(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]rBjX)rB}rB(hXBOn New CCS Project window enter project name and then click Next. hjBhj:hj[h}rB(h]h]h]h]h]uhNhhh]rBj/)rB}rB(hXAOn New CCS Project window enter project name and then click Next.rBhjBhj:hj3h}rB(h]h]h]h]h]uhMh]rBhXAOn New CCS Project window enter project name and then click Next.rBrB}rB(hjBhjBubaubaubaubj)rB}rC(hX4.. Image:: ../images/SYSBIOS_DSP_platformSelect.jpg hjhBhj:hjh}rC(UuriX-rtos/../images/SYSBIOS_DSP_platformSelect.jpgrCh]h]h]h]j}rCU*jCsh]uhMhhh]ubj/)rC}rC(hX6. On RSTC window select platform name: **ti.platforms.evmAM572X** and check that the target is set to **ti.targets.elf.C66** (Auto populated)hjhBhj:hj3h}rC(h]h]h]h]h]uhMhhh]rC(hX(6. On RSTC window select platform name: rCr C}r C(hX(6. On RSTC window select platform name: hjCubjW)r C}r C(hX**ti.platforms.evmAM572X**h}r C(h]h]h]h]h]uhjCh]rChXti.platforms.evmAM572XrCrC}rC(hUhj Cubahj_ubhX% and check that the target is set to rCrC}rC(hX% and check that the target is set to hjCubjW)rC}rC(hX**ti.targets.elf.C66**h}rC(h]h]h]h]h]uhjCh]rChXti.targets.elf.C66rCrC}rC(hUhjCubahj_ubhX (Auto populated)rCrC}rC(hX (Auto populated)hjCubeubj)rC}r C(hUhjhBhj:hjh}r!C(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]r"CjX)r#C}r$C(hXFClick Finish. Your project should show up on Project Explorer window. hjChj:hj[h}r%C(h]h]h]h]h]uhNhhh]r&Cj/)r'C}r(C(hXEClick Finish. Your project should show up on Project Explorer window.r)Chj#Chj:hj3h}r*C(h]h]h]h]h]uhMh]r+ChXEClick Finish. Your project should show up on Project Explorer window.r,Cr-C}r.C(hj)Chj'Cubaubaubaubj/)r/C}r0C(hXW8. Build Hello Example project by Right click on Hello Project and click Build project.r1ChjhBhj:hj3h}r2C(h]h]h]h]h]uhMhhh]r3ChXW8. Build Hello Example project by Right click on Hello Project and click Build project.r4Cr5C}r6C(hj1Chj/Cubaubj/)r7C}r8C(hX10. Create new target configuration (if one doesn`t exist) as described `here `__.hjhBhj:hj3h}r9C(h]h]h]h]h]uhMhhh]r:C(hXH10. Create new target configuration (if one doesn`t exist) as described r;CrC}r?C(hXL`here `__h}r@C(UnameXherejXAindex_how_to_guides.html#create-target-configuration-file-for-evmh]h]h]h]h]uhj7Ch]rAChXhererBCrCC}rDC(hUhj>CubahjubhX.rEC}rFC(hX.hj7Cubeubj/)rGC}rHC(hXM11. Right click on the target configuration and Launch target configurations.rIChjhBhj:hj3h}rJC(h]h]h]h]h]uhMhhh]rKChXM11. Right click on the target configuration and Launch target configurations.rLCrMC}rNC(hjIChjGCubaubj/)rOC}rPC(hX12. Right click CortexA15_0 and connect target. From the Scripts menu select `AM572x Multicore Initialization->DSP1SSClkEnable_API `__.hjhBhj:hj3h}rQC(h]h]h]h]h]uhMhhh]rRC(hXM12. Right click CortexA15_0 and connect target. From the Scripts menu select rSCrTC}rUC(hXM12. Right click CortexA15_0 and connect target. From the Scripts menu select hjOCubj)rVC}rWC(hXp`AM572x Multicore Initialization->DSP1SSClkEnable_API `__h}rXC(UnameX4AM572x Multicore Initialization->DSP1SSClkEnable_APIjX5index_how_to_guides.html#connect-to-am57x-slave-coresh]h]h]h]h]uhjOCh]rYChX4AM572x Multicore Initialization->DSP1SSClkEnable_APIrZCr[C}r\C(hUhjVCubahjubhX.r]C}r^C(hX.hjOCubeubj/)r_C}r`C(hX13. Route the GPTimer5 suspend ctrl signal to the DSP using the Scripts menu GP timer Suspend Ctrl -> GPTimer5SuspendCtl_DSP1SS_BIOS as described `here `__.hjhBhj:hj3h}raC(h]h]h]h]h]uhMhhh]rbC(hX13. Route the GPTimer5 suspend ctrl signal to the DSP using the Scripts menu GP timer Suspend Ctrl -> GPTimer5SuspendCtl_DSP1SS_BIOS as described rcCrdC}reC(hX13. Route the GPTimer5 suspend ctrl signal to the DSP using the Scripts menu GP timer Suspend Ctrl -> GPTimer5SuspendCtl_DSP1SS_BIOS as described hj_Cubj)rfC}rgC(hXI`here `__h}rhC(UnameXherejX>index_how_to_guides.html#timer-suspend-control-options-for-dsph]h]h]h]h]uhj_Ch]riChXhererjCrkC}rlC(hUhjfCubahjubhX.rmC}rnC(hX.hj_Cubeubj/)roC}rpC(hX14. Connect to C66x_DSP1 Load and run Hello Example out file. You should see **Hello World** string displayed on console window.hjhBhj:hj3h}rqC(h]h]h]h]h]uhMhhh]rrC(hXM14. Connect to C66x_DSP1 Load and run Hello Example out file. You should see rsCrtC}ruC(hXM14. Connect to C66x_DSP1 Load and run Hello Example out file. You should see hjoCubjW)rvC}rwC(hX**Hello World**h}rxC(h]h]h]h]h]uhjoCh]ryChX Hello WorldrzCr{C}r|C(hUhjvCubahj_ubhX$ string displayed on console window.r}Cr~C}rC(hX$ string displayed on console window.hjoCubeubeubh)rC}rC(hUjKhj:hj:hhh}rC(h]rCX dsp c674xrCah]h]h]rCU dsp-c674xrCah]uhMhhh]rC(h)rC}rC(hX DSP C674xrChjChj:hhh}rC(h]h]h]h]h]uhMhhh]rChX DSP C674xrCrC}rC(hjChjCubaubj/)rC}rC(hX8The hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout. As a sample we will use the C6748 device to describe the steps but the same steps can be used for create hello world examples for C674x cores in OMAPL1x/DA8x family of devices.rChjChj:hj3h}rC(h]h]h]h]h]uhMhhh]rChX8The hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout. As a sample we will use the C6748 device to describe the steps but the same steps can be used for create hello world examples for C674x cores in OMAPL1x/DA8x family of devices.rCrC}rC(hjChjCubaubj))rC}rC(hX- Locate the appropriate device that you are using to make sure the correct SYSBIOS platform definiition gets used in the buildhjChNhj,h}rC(h]h]h]h]h]uhNhhh]rCjQ)rC}rC(hUh}rC(jVX-h]h]h]h]h]uhjCh]rCjX)rC}rC(hX}Locate the appropriate device that you are using to make sure the correct SYSBIOS platform definiition gets used in the buildh}rC(h]h]h]h]h]uhjCh]rCj/)rC}rC(hX}Locate the appropriate device that you are using to make sure the correct SYSBIOS platform definiition gets used in the buildrChjChj:hj3h}rC(h]h]h]h]h]uhMh]rChX}Locate the appropriate device that you are using to make sure the correct SYSBIOS platform definiition gets used in the buildrCrC}rC(hjChjCubaubahj[ubahjTubaubj/)rC}rC(hX1. Create a work space folder ( Eg. tirtos_hello_workspace) that can be used for Hello Example project, and start CCS. You may be prompted with **New Products Discovered**, so select all and **click on Finish** Note: at this stage the version of SYSBIOS and corresponding dependencies are assumed to be discovered by CCS. If not please follow the steps described here: `Discovering_SDK_products `__hjChj:hj3h}rC(h]h]h]h]h]uhMhhh]rC(hX1. Create a work space folder ( Eg. tirtos_hello_workspace) that can be used for Hello Example project, and start CCS. You may be prompted with rCrC}rC(hX1. Create a work space folder ( Eg. tirtos_hello_workspace) that can be used for Hello Example project, and start CCS. You may be prompted with hjCubjW)rC}rC(hX**New Products Discovered**h}rC(h]h]h]h]h]uhjCh]rChXNew Products DiscoveredrCrC}rC(hUhjCubahj_ubhX, so select all and rCrC}rC(hX, so select all and hjCubjW)rC}rC(hX**click on Finish**h}rC(h]h]h]h]h]uhjCh]rChXclick on FinishrCrC}rC(hUhjCubahj_ubhX Note: at this stage the version of SYSBIOS and corresponding dependencies are assumed to be discovered by CCS. If not please follow the steps described here: rCrC}rC(hX Note: at this stage the version of SYSBIOS and corresponding dependencies are assumed to be discovered by CCS. If not please follow the steps described here: hjCubj)rC}rC(hXP`Discovering_SDK_products `__h}rC(UnameXDiscovering_SDK_productsjX1index_how_to_guides.html#discovering-sdk-productsh]h]h]h]h]uhjCh]rChXDiscovering_SDK_productsrCrC}rC(hUhjCubahjubeubj)rC}rC(hUhjChj:hjh}rC(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]rCjX)rC}rC(hX<On CCS click View --> Resource Explorer Classic (Examples). hjChj:hj[h}rC(h]h]h]h]h]uhNhhh]rCj/)rC}rC(hX;On CCS click View --> Resource Explorer Classic (Examples).rChjChj:hj3h}rC(h]h]h]h]h]uhMh]rChX;On CCS click View --> Resource Explorer Classic (Examples).rCrC}rC(hjChjCubaubaubaubj/)rC}rC(hXq3. on SYS/BIOS scroll down to C6748 /OMAPL1x and select --> C674x --> Generic Example --> click on Hello Example.rChjChj:hj3h}rC(h]h]h]h]h]uhM hhh]rChXq3. on SYS/BIOS scroll down to C6748 /OMAPL1x and select --> C674x --> Generic Example --> click on Hello Example.rCrC}rC(hjChjCubaubj)rC}rC(hX8.. Image:: ../images/OMAPL138_SYSBIOS_TI_RTOS_CCSv7.png hjChj:hjh}rC(UuriX1rtos/../images/OMAPL138_SYSBIOS_TI_RTOS_CCSv7.pngrCh]h]h]h]j}rCU*jCsh]uhM hhh]ubj/)rC}rC(hXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.rChjChj:hj3h}rC(h]h]h]h]h]uhMhhh]rChXc4. To import Hello Example, on the right window click on step 1. Import The Example to CCS Project.rCrC}rC(hjChjCubaubj)rC}rC(hUhjChj:hjh}rC(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]rCjX)rC}rC(hXBOn New CCS Project window enter project name and then click Next. hjChj:hj[h}rC(h]h]h]h]h]uhNhhh]rCj/)rC}rC(hXAOn New CCS Project window enter project name and then click Next.rChjChj:hj3h}rC(h]h]h]h]h]uhMh]rChXAOn New CCS Project window enter project name and then click Next.rDrD}rD(hjChjCubaubaubaubj)rD}rD(hX... Image:: ../images/Create_Project_Step1.png hjChj:hjh}rD(UuriX'rtos/../images/Create_Project_Step1.pngrDh]h]h]h]j}rDU*jDsh]uhMhhh]ubj/)rD}r D(hX6. On RSTC window select platform name: **ti.platforms.evmc6748** and check that the target is set to **ti.targets.elf.C674** (Auto populated)hjChj:hj3h}r D(h]h]h]h]h]uhMhhh]r D(hX(6. On RSTC window select platform name: r Dr D}rD(hX(6. On RSTC window select platform name: hjDubjW)rD}rD(hX**ti.platforms.evmc6748**h}rD(h]h]h]h]h]uhjDh]rDhXti.platforms.evmc6748rDrD}rD(hUhjDubahj_ubhX% and check that the target is set to rDrD}rD(hX% and check that the target is set to hjDubjW)rD}rD(hX**ti.targets.elf.C674**h}rD(h]h]h]h]h]uhjDh]rDhXti.targets.elf.C674rDrD}rD(hUhjDubahj_ubhX (Auto populated)r Dr!D}r"D(hX (Auto populated)hjDubeubj)r#D}r$D(hX... Image:: ../images/Create_Project_Step2.png hjChj:hjh}r%D(UuriX'rtos/../images/Create_Project_Step2.pngr&Dh]h]h]h]j}r'DU*j&Dsh]uhMhhh]ubj)r(D}r)D(hUhjChj:hjh}r*D(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]r+DjX)r,D}r-D(hXFClick Finish. Your project should show up on Project Explorer window. hj(Dhj:hj[h}r.D(h]h]h]h]h]uhNhhh]r/Dj/)r0D}r1D(hXEClick Finish. Your project should show up on Project Explorer window.r2Dhj,Dhj:hj3h}r3D(h]h]h]h]h]uhMh]r4DhXEClick Finish. Your project should show up on Project Explorer window.r5Dr6D}r7D(hj2Dhj0Dubaubaubaubj/)r8D}r9D(hXW8. Build Hello Example project by Right click on Hello Project and click Build project.r:DhjChj:hj3h}r;D(h]h]h]h]h]uhMhhh]rD}r?D(hj:Dhj8Dubaubj/)r@D}rAD(hX10. Create new target configuration (if one doesn`t exist) as described `here `__.hjChj:hj3h}rBD(h]h]h]h]h]uhMhhh]rCD(hXH10. Create new target configuration (if one doesn`t exist) as described rDDrED}rFD(hXH10. Create new target configuration (if one doesn`t exist) as described hj@Dubj)rGD}rHD(hXL`here `__h}rID(UnameXherejXAindex_how_to_guides.html#create-target-configuration-file-for-evmh]h]h]h]h]uhj@Dh]rJDhXhererKDrLD}rMD(hUhjGDubahjubhX.rND}rOD(hX.hj@Dubeubj/)rPD}rQD(hXM11. Right click on the target configuration and Launch target configurations.rRDhjChj:hj3h}rSD(h]h]h]h]h]uhM"hhh]rTDhXM11. Right click on the target configuration and Launch target configurations.rUDrVD}rWD(hjRDhjPDubaubj/)rXD}rYD(hX 12. Developers can Connect to the C674x on OMAPL137/C6747/C6748 can connect directly to the DSP. For OMAPL138 device, you will need to connect to the ARM as this is ARM master boot device and ARM needs to power up the DSP You should see the following log in the ConsolerZDhjChj:hj3h}r[D(h]h]h]h]h]uhM%hhh]r\DhX 12. Developers can Connect to the C674x on OMAPL137/C6747/C6748 can connect directly to the DSP. For OMAPL138 device, you will need to connect to the ARM as this is ARM master boot device and ARM needs to power up the DSP You should see the following log in the Consoler]Dr^D}r_D(hjZDhjXDubaubj)r`D}raD(hXC674X_0: Output: Target Connected. C674X_0: Output: --------------------------------------------- C674X_0: Output: Memory Map Cleared. C674X_0: Output: --------------------------------------------- C674X_0: Output: Memory Map Setup Complete. C674X_0: Output: --------------------------------------------- C674X_0: Output: PSC Enable Complete. C674X_0: Output: --------------------------------------------- C674X_0: Output: PLL0 init done for Core:300MHz, EMIFA:25MHz C674X_0: Output: DDR initialization is in progress.... C674X_0: Output: PLL1 init done for DDR:150MHz C674X_0: Output: Using DDR2 settings C674X_0: Output: DDR2 init for 150 MHz is done C674X_0: Output: ---------------------------------------------hjChj:hjh}rbD(jjh]h]h]h]h]uhMhhh]rcDhXC674X_0: Output: Target Connected. C674X_0: Output: --------------------------------------------- C674X_0: Output: Memory Map Cleared. C674X_0: Output: --------------------------------------------- C674X_0: Output: Memory Map Setup Complete. C674X_0: Output: --------------------------------------------- C674X_0: Output: PSC Enable Complete. C674X_0: Output: --------------------------------------------- C674X_0: Output: PLL0 init done for Core:300MHz, EMIFA:25MHz C674X_0: Output: DDR initialization is in progress.... C674X_0: Output: PLL1 init done for DDR:150MHz C674X_0: Output: Using DDR2 settings C674X_0: Output: DDR2 init for 150 MHz is done C674X_0: Output: ---------------------------------------------rdDreD}rfD(hUhj`Dubaubj/)rgD}rhD(hX13. Connect to C674x_DSP1 Load and run Hello Example out file. You should see **Hello World** string displayed on console window.hjChj:hj3h}riD(h]h]h]h]h]uhM;hhh]rjD(hXN13. Connect to C674x_DSP1 Load and run Hello Example out file. You should see rkDrlD}rmD(hXN13. Connect to C674x_DSP1 Load and run Hello Example out file. You should see hjgDubjW)rnD}roD(hX**Hello World**h}rpD(h]h]h]h]h]uhjgDh]rqDhX Hello WorldrrDrsD}rtD(hUhjnDubahj_ubhX$ string displayed on console window.ruDrvD}rwD(hX$ string displayed on console window.hjgDubeubj)rxD}ryD(hX2.. Image:: ../images/Hello_world_dsp674x_rtos.png hjChj:hjh}rzD(UuriX+rtos/../images/Hello_world_dsp674x_rtos.pngr{Dh]h]h]h]j}r|DU*j{Dsh]uhM?hhh]ubj)r}D}r~D(hUhjChj:hjh}rD(h]h]h]h]h]uhM@hhh]rDj)rD}rD(hUjKhj}Dhj:hhh}rD(h]h]h]h]h]uhKhhh]ubaubeubh)rD}rD(hUhj:hj:hhh}rD(h]h]h]h]rDU usage-notesrDah]rDhauhMChhh]rD(h)rD}rD(hX Usage NotesrDhjDhj:hhh}rD(h]h]h]h]h]uhMChhh]rDhX Usage NotesrDrD}rD(hjDhjDubaubj/)rD}rD(hX After execution of the hello world examples on the core, the CCS Editor may report "Can't find a source file" error messages when you pause or the application exits/aborts after completion. This occurs due to source files from SYSBIOS or XDC packages not being in the default search path of the CCS Editor. when you run into this issue, you can navigate to the file using Locate file option in the Editor. Once you provide the location the CCS Editor will be able to locate all the other required files from that package based on relative path.rDhjDhj:hj3h}rD(h]h]h]h]h]uhMEhhh]rDhX After execution of the hello world examples on the core, the CCS Editor may report "Can't find a source file" error messages when you pause or the application exits/aborts after completion. This occurs due to source files from SYSBIOS or XDC packages not being in the default search path of the CCS Editor. when you run into this issue, you can navigate to the file using Locate file option in the Editor. Once you provide the location the CCS Editor will be able to locate all the other required files from that package based on relative path.rDrD}rD(hjDhjDubaubj/)rD}rD(hXZFor example, when running SYS/BIOS Hello Example using AM57x-GP EVM if you see the messagerDhjDhj:hj3h}rD(h]h]h]h]h]uhMNhhh]rDhXZFor example, when running SYS/BIOS Hello Example using AM57x-GP EVM if you see the messagerDrD}rD(hjDhjDubaubj)rD}rD(hX,Can't find a source file at "/db/ztree/library/trees/xdctargets/xdctargets-i02/src/gnu/targets /arm/rtsv7A/syscalls.c" Locate the file or edit the source lookup path to include its location. The above file is located under file path ${PROC_SDK_DIR}\bios_6_42_02_29\packages\gnu\targets\arm\rtsv7AhjDhj:hjh}rD(jjh]h]h]h]h]uhMhhh]rDhX,Can't find a source file at "/db/ztree/library/trees/xdctargets/xdctargets-i02/src/gnu/targets /arm/rtsv7A/syscalls.c" Locate the file or edit the source lookup path to include its location. The above file is located under file path ${PROC_SDK_DIR}\bios_6_42_02_29\packages\gnu\targets\arm\rtsv7ArDrD}rD(hUhjDubaubj/)rD}rD(hXYou can also prevent these issues by adding the Processor SDK components to file search path under Windows->Preferences options in CCS GUI.rDhjDhj:hj3h}rD(h]h]h]h]h]uhMVhhh]rDhXYou can also prevent these issues by adding the Processor SDK components to file search path under Windows->Preferences options in CCS GUI.rDrD}rD(hjDhjDubaubj)rD}rD(hUhjDhj:hjh}rD(h]h]h]h]h]uhMYhhh]rDj)rD}rD(hUjKhjDhj:hhh}rD(h]h]h]h]h]uhKhhh]ubaubeubh)rD}rD(hUhj:hj:hhh}rD(h]h]h]h]rDU known-issuesrDah]rDhauhM\hhh]rD(h)rD}rD(hX Known IssuesrDhjDhj:hhh}rD(h]h]h]h]h]uhM\hhh]rDhX Known IssuesrDrD}rD(hjDhjDubaubjQ)rD}rD(hUhjDhj:hjTh}rD(jVX-h]h]h]h]h]uhM^hhh]rDjX)rD}rD(hXY**SYS/BIOS examples for Cortex-A15 generate linker errors due to the FPU related flags** hjDhj:hj[h}rD(h]h]h]h]h]uhNhhh]rDj/)rD}rD(hXX**SYS/BIOS examples for Cortex-A15 generate linker errors due to the FPU related flags**rDhjDhj:hj3h}rD(h]h]h]h]h]uhM^h]rDjW)rD}rD(hjDh}rD(h]h]h]h]h]uhjDh]rDhXTSYS/BIOS examples for Cortex-A15 generate linker errors due to the FPU related flagsrDrD}rD(hUhjDubahj_ubaubaubaubj/)rD}rD(hXSome versions of CCS are impacted by linker setting used in CCS RTOS templates and may need some manual modification to set the correct -mfpu, -mcpu and -march. If you are seeing VFP errors in the link step, you are most likely running into this issue. To correct this issue please check the resolution here: https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/539973hjDhj:hj3h}rD(h]h]h]h]h]uhMahhh]rD(hX5Some versions of CCS are impacted by linker setting used in CCS RTOS templates and may need some manual modification to set the correct -mfpu, -mcpu and -march. If you are seeing VFP errors in the link step, you are most likely running into this issue. To correct this issue please check the resolution here: rDrD}rD(hX5Some versions of CCS are impacted by linker setting used in CCS RTOS templates and may need some manual modification to set the correct -mfpu, -mcpu and -march. If you are seeing VFP errors in the link step, you are most likely running into this issue. To correct this issue please check the resolution here: hjDubj)rD}rD(hXOhttps://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/539973rDh}rD(UrefurijDh]h]h]h]h]uhjDh]rDhXOhttps://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/539973rDrD}rD(hUhjDubahjubeubj)rD}rD(hUhjDhj:hjh}rD(h]h]h]h]h]uhMhhhh]rDj)rD}rD(hUjKhjDhj:hhh}rD(h]h]h]h]h]uhKhhh]ubaubeubh)rD}rD(hUhj:hj:hhh}rD(h]h]h]h]rDUuseful-resourcesrDah]rDhauhMlhhh]rD(h)rD}rD(hXUseful ResourcesrDhjDhj:hhh}rD(h]h]h]h]h]uhMlhhh]rDhXUseful ResourcesrDrD}rE(hjDhjDubaubjQ)rE}rE(hUhjDhj:hjTh}rE(jVX-h]h]h]h]h]uhMnhhh]rE(jX)rE}rE(hXj`TI RTOS training `__hjEhj:hj[h}rE(h]h]h]h]h]uhNhhh]rEj/)r E}r E(hXj`TI RTOS training `__r EhjEhj:hj3h}r E(h]h]h]h]h]uhMnh]r Ej)rE}rE(hj Eh}rE(UnameXTI RTOS trainingjXShttp://processors.wiki.ti.com/index.php/Introduction_to_the_TI-RTOS_Kernel_Workshoph]h]h]h]h]uhj Eh]rEhXTI RTOS trainingrErE}rE(hUhjEubahjubaubaubjX)rE}rE(hXS`SYS/BIOS Information `__hjEhj:hj[h}rE(h]h]h]h]h]uhNhhh]rEj/)rE}rE(hXS`SYS/BIOS Information `__rEhjEhj:hj3h}rE(h]h]h]h]h]uhMph]rEj)rE}rE(hjEh}r E(UnameXSYS/BIOS InformationjX8http://processors.wiki.ti.com/index.php/Category:SYSBIOSh]h]h]h]h]uhjEh]r!EhXSYS/BIOS Informationr"Er#E}r$E(hUhjEubahjubaubaubjX)r%E}r&E(hXI`SYS/BIOS FAQ `__ hjEhj:hj[h}r'E(h]h]h]h]h]uhNhhh]r(Ej/)r)E}r*E(hXH`SYS/BIOS FAQ `__r+Ehj%Ehj:hj3h}r,E(h]h]h]h]h]uhMrh]r-Ej)r.E}r/E(hj+Eh}r0E(UnameX SYS/BIOS FAQjX5http://processors.wiki.ti.com/index.php/SYS/BIOS_FAQsh]h]h]h]h]uhj)Eh]r1EhX SYS/BIOS FAQr2Er3E}r4E(hUhj.Eubahjubaubaubeubj)r5E}r6E(hUhjDhj:hjh}r7E(h]h]h]h]h]uhMuhhh]r8Ej)r9E}r:E(hUjKhj5Ehj:hhh}r;E(h]h]h]h]h]uhKhhh]ubaubeubeubhj:hhh}rEah]h]h]r?EUarm-cortex-a53r@Eah]uhK hhh]rAE(h)rBE}rCE(hXARM Cortex-A53rDEhj:hj:hhh}rEE(h]h]h]h]h]uhK hhh]rFEhXARM Cortex-A53rGErHE}rIE(hjDEhjBEubaubj/)rJE}rKE(hXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout. As a sample we will use the AM65x device to describe the steps for the Cortex-A53.rLEhj:hj:hj3h}rME(h]h]h]h]h]uhKhhh]rNEhXThe hello example serves as a basic sanity check program for SYS/BIOS. It demonstrates how to print the string 'hello world' to stdout. As a sample we will use the AM65x device to describe the steps for the Cortex-A53.rOErPE}rQE(hjLEhjJEubaubj))rRE}rSE(hXFor future Device Support Package releases, the Hello World example for the Cortex-A53 will be added to CCS as an out-of-box experience.rTEhj:hj:hj,h}rUE(h]h]h]h]h]uhNhhh]rVEj/)rWE}rXE(hjTEhjREhj:hj3h}rYE(h]h]h]h]h]uhKh]rZEhXFor future Device Support Package releases, the Hello World example for the Cortex-A53 will be added to CCS as an out-of-box experience.r[Er\E}r]E(hjTEhjWEubaubaubj/)r^E}r_E(hX1. Create a work space folder to be used for Hello Example project (e.g. /ti/am65x_am53_hello_workspace), and start CCS. If prompted with **New Products Discovered**, install any desired products and restart CCS if required.hj:hj:hj3h}r`E(h]h]h]h]h]uhKhhh]raE(hX1. Create a work space folder to be used for Hello Example project (e.g. /ti/am65x_am53_hello_workspace), and start CCS. If prompted with rbErcE}rdE(hX1. Create a work space folder to be used for Hello Example project (e.g. /ti/am65x_am53_hello_workspace), and start CCS. If prompted with hj^EubjW)reE}rfE(hX**New Products Discovered**h}rgE(h]h]h]h]h]uhj^Eh]rhEhXNew Products DiscoveredriErjE}rkE(hUhjeEubahj_ubhX;, install any desired products and restart CCS if required.rlErmE}rnE(hX;, install any desired products and restart CCS if required.hj^Eubeubj/)roE}rpE(hX.2. In CCS, go to File --> New --> CCS Project.rqEhj:hj:hj3h}rrE(h]h]h]h]h]uhKhhh]rsEhX.2. In CCS, go to File --> New --> CCS Project.rtEruE}rvE(hjqEhjoEubaubj)rwE}rxE(hUhj:hj:hjh}ryE(jU.jf5Kh]h]h]jUh]h]jjuhKhhh]rzEjX)r{E}r|E(hXCEnter a project name and configure the new CCS project as follows: hjwEhj:hj[h}r}E(h]h]h]h]h]uhNhhh]r~Ej/)rE}rE(hXBEnter a project name and configure the new CCS project as follows:rEhj{Ehj:hj3h}rE(h]h]h]h]h]uhKh]rEhXBEnter a project name and configure the new CCS project as follows:rErE}rE(hjEhjEubaubaubaubj)rE}rE(hUhj:hNhjh}rE(h]h]h]h]h]uhNhhh]rEjQ)rE}rE(hUh}rE(jVX*h]h]h]h]h]uhjEh]rE(jX)rE}rE(hX**Target**: GPEVM_AM65xrEh}rE(h]h]h]h]h]uhjEh]rEj/)rE}rE(hjEhjEhj:hj3h}rE(h]h]h]h]h]uhKh]rE(jW)rE}rE(hX **Target**h}rE(h]h]h]h]h]uhjEh]rEhXTargetrErE}rE(hUhjEubahj_ubhX : GPEVM_AM65xrErE}rE(hX : GPEVM_AM65xhjEubeubahj[ubjX)rE}rE(hX **Cortex A**rEh}rE(h]h]h]h]h]uhjEh]rEj/)rE}rE(hjEhjEhj:hj3h}rE(h]h]h]h]h]uhKh]rEjW)rE}rE(hjEh}rE(h]h]h]h]h]uhjEh]rEhXCortex ArErE}rE(hUhjEubahj_ubaubahj[ubjX)rE}rE(hX**Device Endianness**: little h}rE(h]h]h]h]h]uhjEh]rEj/)rE}rE(hX**Device Endianness**: littlehjEhj:hj3h}rE(h]h]h]h]h]uhK h]rE(jW)rE}rE(hX**Device Endianness**h}rE(h]h]h]h]h]uhjEh]rEhXDevice EndiannessrErE}rE(hUhjEubahj_ubhX: littlerErE}rE(hX: littlehjEubeubahj[ubehjTubaubj/)rE}rE(hX4. Under "Project Templates and examples", select "More Examples... --> Search Using Import Wizard". Select "hello" project and click "Finish".rEhj:hj:hj3h}rE(h]h]h]h]h]uhK"hhh]rEhX4. Under "Project Templates and examples", select "More Examples... --> Search Using Import Wizard". Select "hello" project and click "Finish".rErE}rE(hjEhjEubaubj/)rE}rE(hX5. Remove AM6548.lds from the project. Add the file **linker_a53.lds** located in the folder (PDK INSTALL PATH)/packages/ti/build/am65xx/ to the project.hj:hj:hj3h}rE(h]h]h]h]h]uhK%hhh]rE(hX45. Remove AM6548.lds from the project. Add the file rErE}rE(hX45. Remove AM6548.lds from the project. Add the file hjEubjW)rE}rE(hX**linker_a53.lds**h}rE(h]h]h]h]h]uhjEh]rEhXlinker_a53.ldsrErE}rE(hUhjEubahj_ubhXS located in the folder (PDK INSTALL PATH)/packages/ti/build/am65xx/ to the project.rErE}rE(hXS located in the folder (PDK INSTALL PATH)/packages/ti/build/am65xx/ to the project.hjEubeubj/)rE}rE(hX6. Remove hello.cfg from the project. Add the file **sysbios_a53.cfg** located in the folder (PDK INSTALL PATH)/packages/ti/build/am65xx/ to the project.hj:hj:hj3h}rE(h]h]h]h]h]uhK(hhh]rE(hX36. Remove hello.cfg from the project. Add the file rErE}rE(hX36. Remove hello.cfg from the project. Add the file hjEubjW)rE}rE(hX**sysbios_a53.cfg**h}rE(h]h]h]h]h]uhjEh]rEhXsysbios_a53.cfgrErE}rE(hUhjEubahj_ubhXS located in the folder (PDK INSTALL PATH)/packages/ti/build/am65xx/ to the project.rErE}rE(hXS located in the folder (PDK INSTALL PATH)/packages/ti/build/am65xx/ to the project.hjEubeubj/)rE}rE(hXz7. Add the file **InitMmu.c** located under (IPC INSTALL PATH)/examples/AM65XX_bios_elf/ex02_messageq/host to the project.hj:hj:hj3h}rE(h]h]h]h]h]uhK+hhh]rE(hX7. Add the file rErE}rE(hX7. Add the file hjEubjW)rE}rE(hX **InitMmu.c**h}rE(h]h]h]h]h]uhjEh]rEhX InitMmu.crErE}rE(hUhjEubahj_ubhX] located under (IPC INSTALL PATH)/examples/AM65XX_bios_elf/ex02_messageq/host to the project.rErE}rE(hX] located under (IPC INSTALL PATH)/examples/AM65XX_bios_elf/ex02_messageq/host to the project.hjEubeubj/)rE}rF(hX8. Select Compiler: right-click on the project, select "Properites". Under "Tool-chain", select "GNU v7.2.1 (Linaro aarch64)" (or higher).rFhj:hj:hj3h}rF(h]h]h]h]h]uhK.hhh]rFhX8. Select Compiler: right-click on the project, select "Properites". Under "Tool-chain", select "GNU v7.2.1 (Linaro aarch64)" (or higher).rFrF}rF(hjFhjEubaubj/)rF}rF(hXL9. Build the project: right-click on the project and select "Build Project".r Fhj:hj:hj3h}r F(h]h]h]h]h]uhK1hhh]r FhXL9. Build the project: right-click on the project and select "Build Project".r Fr F}rF(hj FhjFubaubj/)rF}rF(hX10. Launch the target configuration using the appropriate emulator to connect to AM65x EVM as described in the AM65x EVM Hardware Setup Guide.rFhj:hj:hj3h}rF(h]h]h]h]h]uhK4hhh]rFhX10. Launch the target configuration using the appropriate emulator to connect to AM65x EVM as described in the AM65x EVM Hardware Setup Guide.rFrF}rF(hjFhjFubaubj)rF}rF(hUhj:hj:hjh}rF(jU.jf5K h]h]h]jUh]h]jjuhK7hhh]rFjX)rF}rF(hX:Right click on DMSC_Cortex_M3_0 and click Connect Target. hjFhj:hj[h}rF(h]h]h]h]h]uhNhhh]rFj/)rF}r F(hX9Right click on DMSC_Cortex_M3_0 and click Connect Target.r!FhjFhj:hj3h}r"F(h]h]h]h]h]uhK7h]r#FhX9Right click on DMSC_Cortex_M3_0 and click Connect Target.r$Fr%F}r&F(hj!FhjFubaubaubaubj/)r'F}r(F(hX12. Connect to the CortexA53_0_0 core. Load and run Hello Example out file. You should see Hello World string displayed on console window.r)Fhj:hj:hj3h}r*F(h]h]h]h]h]uhK9hhh]r+FhX12. Connect to the CortexA53_0_0 core. Load and run Hello Example out file. You should see Hello World string displayed on console window.r,Fr-F}r.F(hj)Fhj'Fubaubj)r/F}r0F(hUhj:hj:hjh}r1F(h]h]h]h]h]uhKh}r6F(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhKhhh]r7Fj/)r8F}r9F(hX:Enumerated list start value not ordinal-1: "3" (ordinal 3)h}r:F(h]h]h]h]h]uhj:h]r;FhX:Enumerated list start value not ordinal-1: "3" (ordinal 3)rF(hUhj8Fubahj3ubaubj)r?F}r@F(hUhj:hj:hj>h}rAF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhK7hhh]rBFj/)rCF}rDF(hX<Enumerated list start value not ordinal-1: "11" (ordinal 11)h}rEF(h]h]h]h]h]uhj?Fh]rFFhX<Enumerated list start value not ordinal-1: "11" (ordinal 11)rGFrHF}rIF(hUhjCFubahj3ubaubj)rJF}rKF(hUhj;hj:hj>h}rLF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhKShhh]rMFj/)rNF}rOF(hX:Enumerated list start value not ordinal-1: "2" (ordinal 2)h}rPF(h]h]h]h]h]uhjJFh]rQFhX:Enumerated list start value not ordinal-1: "2" (ordinal 2)rRFrSF}rTF(hUhjNFubahj3ubaubj)rUF}rVF(hUhj;hj:hj>h}rWF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhK]hhh]rXFj/)rYF}rZF(hX:Enumerated list start value not ordinal-1: "5" (ordinal 5)h}r[F(h]h]h]h]h]uhjUFh]r\FhX:Enumerated list start value not ordinal-1: "5" (ordinal 5)r]Fr^F}r_F(hUhjYFubahj3ubaubj)r`F}raF(hUhj;hj:hj>h}rbF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhKdhhh]rcFj/)rdF}reF(hX:Enumerated list start value not ordinal-1: "7" (ordinal 7)h}rfF(h]h]h]h]h]uhj`Fh]rgFhX:Enumerated list start value not ordinal-1: "7" (ordinal 7)rhFriF}rjF(hUhjdFubahj3ubaubj)rkF}rlF(hUhj;hj:hj>h}rmF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhKhhh]rnFj/)roF}rpF(hX<Enumerated list start value not ordinal-1: "12" (ordinal 12)h}rqF(h]h]h]h]h]uhjkFh]rrFhX<Enumerated list start value not ordinal-1: "12" (ordinal 12)rsFrtF}ruF(hUhjoFubahj3ubaubj)rvF}rwF(hUhj<hj:hj>h}rxF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhKhhh]ryFj/)rzF}r{F(hX:Enumerated list start value not ordinal-1: "2" (ordinal 2)h}r|F(h]h]h]h]h]uhjvFh]r}FhX:Enumerated list start value not ordinal-1: "2" (ordinal 2)r~FrF}rF(hUhjzFubahj3ubaubj)rF}rF(hUhj<hj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhKhhh]rFj/)rF}rF(hX:Enumerated list start value not ordinal-1: "5" (ordinal 5)h}rF(h]h]h]h]h]uhjFh]rFhX:Enumerated list start value not ordinal-1: "5" (ordinal 5)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhj<hj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhKhhh]rFj/)rF}rF(hX:Enumerated list start value not ordinal-1: "7" (ordinal 7)h}rF(h]h]h]h]h]uhjFh]rFhX:Enumerated list start value not ordinal-1: "7" (ordinal 7)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhj<hj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhKhhh]rFj/)rF}rF(hX<Enumerated list start value not ordinal-1: "12" (ordinal 12)h}rF(h]h]h]h]h]uhjFh]rFhX<Enumerated list start value not ordinal-1: "12" (ordinal 12)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhj>hj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhM$hhh]rFj/)rF}rF(hX<Enumerated list start value not ordinal-1: "12" (ordinal 12)h}rF(h]h]h]h]h]uhjFh]rFhX<Enumerated list start value not ordinal-1: "12" (ordinal 12)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhj@hj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMehhh]rFj/)rF}rF(hX:Enumerated list start value not ordinal-1: "5" (ordinal 5)h}rF(h]h]h]h]h]uhjFh]rFhX:Enumerated list start value not ordinal-1: "5" (ordinal 5)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhjAhj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMhhh]rFj/)rF}rF(hX:Enumerated list start value not ordinal-1: "2" (ordinal 2)h}rF(h]h]h]h]h]uhjFh]rFhX:Enumerated list start value not ordinal-1: "2" (ordinal 2)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhjAhj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMhhh]rFj/)rF}rF(hX:Enumerated list start value not ordinal-1: "5" (ordinal 5)h}rF(h]h]h]h]h]uhjFh]rFhX:Enumerated list start value not ordinal-1: "5" (ordinal 5)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhjAhj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMhhh]rFj/)rF}rF(hX:Enumerated list start value not ordinal-1: "7" (ordinal 7)h}rF(h]h]h]h]h]uhjFh]rFhX:Enumerated list start value not ordinal-1: "7" (ordinal 7)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhjAhj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMhhh]rFj/)rF}rF(hX<Enumerated list start value not ordinal-1: "11" (ordinal 11)h}rF(h]h]h]h]h]uhjFh]rFhX<Enumerated list start value not ordinal-1: "11" (ordinal 11)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhjhBhj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMhhh]rFj/)rF}rF(hX:Enumerated list start value not ordinal-1: "2" (ordinal 2)h}rF(h]h]h]h]h]uhjFh]rFhX:Enumerated list start value not ordinal-1: "2" (ordinal 2)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhjhBhj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMhhh]rFj/)rF}rF(hX:Enumerated list start value not ordinal-1: "5" (ordinal 5)h}rF(h]h]h]h]h]uhjFh]rFhX:Enumerated list start value not ordinal-1: "5" (ordinal 5)rFrF}rF(hUhjFubahj3ubaubj)rF}rF(hUhjhBhj:hj>h}rF(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMhhh]rFj/)rF}rF(hX:Enumerated list start value not ordinal-1: "7" (ordinal 7)h}rG(h]h]h]h]h]uhjFh]rGhX:Enumerated list start value not ordinal-1: "7" (ordinal 7)rGrG}rG(hUhjFubahj3ubaubj)rG}rG(hUhjChj:hj>h}rG(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMhhh]rGj/)r G}r G(hX:Enumerated list start value not ordinal-1: "2" (ordinal 2)h}r G(h]h]h]h]h]uhjGh]r GhX:Enumerated list start value not ordinal-1: "2" (ordinal 2)r GrG}rG(hUhj Gubahj3ubaubj)rG}rG(hUhjChj:hj>h}rG(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMhhh]rGj/)rG}rG(hX:Enumerated list start value not ordinal-1: "5" (ordinal 5)h}rG(h]h]h]h]h]uhjGh]rGhX:Enumerated list start value not ordinal-1: "5" (ordinal 5)rGrG}rG(hUhjGubahj3ubaubj)rG}rG(hUhjChj:hj>h}rG(h]UlevelKh]h]Usourcehh]h]UlineK-UtypejAuhMhhh]rGj/)rG}r G(hX:Enumerated list start value not ordinal-1: "7" (ordinal 7)h}r!G(h]h]h]h]h]uhjGh]r"GhX:Enumerated list start value not ordinal-1: "7" (ordinal 7)r#Gr$G}r%G(hUhjGubahj3ubaubj)r&G}r'G(hUhjDhXTinternal padding after source/rtos/Examples_and_Demonstrations/RTOS_Examples.rst.incr(Ghj>h}r)G(h]UlevelKh]h]Usourcej:h]h]UlineMwUtypejfuhMyhhh]r*G(j/)r+G}r,G(hX;Content block expected for the "raw" directive; none found.h}r-G(h]h]h]h]h]uhj&Gh]r.GhX;Content block expected for the "raw" directive; none found.r/Gr0G}r1G(hUhj+Gubahj3ubj)r2G}r3G(hX.. raw:: html h}r4G(jjh]h]h]h]h]uhj&Gh]r5GhX.. raw:: html r6Gr7G}r8G(hUhj2Gubahjubeubj)r9G}r:G(hUhh)r;G}rG(hUhhhhhhh}r?G(h]h]h]h]r@GUno-os-bare-metal-examplerAGah]rBGh6auhK3hhh]rCG(h)rDG}rEG(hXNo OS (Bare Metal) ExamplerFGhj=Ghhhhh}rGG(h]h]h]h]h]uhK3hhh]rHGhXNo OS (Bare Metal) ExamplerIGrJG}rKG(hjFGhjDGubaubj )rLG}rMG(hXIhttp://processors.wiki.ti.com/index.php/Processor_SDK_Bare_Metal_Exampleshj=Ghj XCsource/rtos/Examples_and_Demonstrations/Bare_Metal_Examples.rst.incrNGrOG}rPGbhjh}rQG(jjh]h]h]h]h]uhKhhh]rRGhXIhttp://processors.wiki.ti.com/index.php/Processor_SDK_Bare_Metal_ExamplesrSGrTG}rUG(hUhjLGubaubj;Gh)rVG}rWG(hUjKhj=GhjOGhhh}rXG(h]rYGj>Eah]h]h]rZGUid46r[Gah]uhKhhh]r\G(h)r]G}r^G(hXARM Cortex-A53r_GhjVGhjOGhhh}r`G(h]h]h]h]h]uhKhhh]raGhXARM Cortex-A53rbGrcG}rdG(hj_Ghj]Gubaubj/)reG}rfG(hXIn this article, we take a look at creating bare-metal hello world examples for the Cortex-A53 core in CCS. We will be using the AM654x device as an example.rgGhjVGhjOGhj3h}rhG(h]h]h]h]h]uhKhhh]riGhXIn this article, we take a look at creating bare-metal hello world examples for the Cortex-A53 core in CCS. We will be using the AM654x device as an example.rjGrkG}rlG(hjgGhjeGubaubj))rmG}rnG(hXvFor future Device Support Package releases, the Hello World examples will be added to CCS as an out-of-box experience.roGhjVGhjOGhj,h}rpG(h]h]h]h]h]uhNhhh]rqGj/)rrG}rsG(hjoGhjmGhjOGhj3h}rtG(h]h]h]h]h]uhKh]ruGhXvFor future Device Support Package releases, the Hello World examples will be added to CCS as an out-of-box experience.rvGrwG}rxG(hjoGhjrGubaubaubj/)ryG}rzG(hX?1. Start CCS and create a workspace for generating the project.r{GhjVGhjOGhj3h}r|G(h]h]h]h]h]uhKhhh]r}GhX?1. Start CCS and create a workspace for generating the project.r~GrG}rG(hj{GhjyGubaubj/)rG}rG(hXy2. Configure the CCS Tools discovery path to allow CCS to use the code generation tools supplied with Processor-SDK-RTOS.rGhjVGhjOGhj3h}rG(h]h]h]h]h]uhKhhh]rGhXy2. Configure the CCS Tools discovery path to allow CCS to use the code generation tools supplied with Processor-SDK-RTOS.rGrG}rG(hjGhjGubaubj)rG}rG(hUhjVGhNhjh}rG(h]h]h]h]h]uhNhhh]rGjQ)rG}rG(hUh}rG(jVX-h]h]h]h]h]uhjGh]rG(jX)rG}rG(hX#Select the menu Window->PreferencesrGh}rG(h]h]h]h]h]uhjGh]rGj/)rG}rG(hjGhjGhjOGhj3h}rG(h]h]h]h]h]uhKh]rGhX#Select the menu Window->PreferencesrGrG}rG(hjGhjGubaubahj[ubjX)rG}rG(hX^On the left-hand side of the Preferences window, select Code Composer Studio->Build->CompilersrGh}rG(h]h]h]h]h]uhjGh]rGj/)rG}rG(hjGhjGhjOGhj3h}rG(h]h]h]h]h]uhKh]rGhX^On the left-hand side of the Preferences window, select Code Composer Studio->Build->CompilersrGrG}rG(hjGhjGubaubahj[ubjX)rG}rG(hXOn the right-hand side of the Preferences window, click the "Add" button. Select the Processor-SDK-RTOS root install folder, then click "Apply and Close". h}rG(h]h]h]h]h]uhjGh]rGj/)rG}rG(hXOn the right-hand side of the Preferences window, click the "Add" button. Select the Processor-SDK-RTOS root install folder, then click "Apply and Close".rGhjGhjOGhj3h}rG(h]h]h]h]h]uhKh]rGhXOn the right-hand side of the Preferences window, click the "Add" button. Select the Processor-SDK-RTOS root install folder, then click "Apply and Close".rGrG}rG(hjGhjGubaubahj[ubehjTubaubj/)rG}rG(hX*3. Navigate to File -> New -> CCS Project.rGhjVGhjOGhj3h}rG(h]h]h]h]h]uhK hhh]rGhX*3. Navigate to File -> New -> CCS Project.rGrG}rG(hjGhjGubaubj/)rG}rG(hXS4. Select Target as AM65x - Cortex A53 and GPEVM_AM65x as shown in the image below.rGhjVGhjOGhj3h}rG(h]h]h]h]h]uhK#hhh]rGhXS4. Select Target as AM65x - Cortex A53 and GPEVM_AM65x as shown in the image below.rGrG}rG(hjGhjGubaubj/)rG}rG(hXV5. Select **Cortex A setting** in the options below and provide a name for the project. Use the default advanced settings for the project. Select **GNU v7.2.1 (Linaro aarch64)** (or higher) for the Compiler Version. Under Tool-chain, for the Linker Command file, select the file (PDK INSTALL PATH)/packages/ti/build/am65xx/**linker_a53.lds**.hjVGhjOGhj3h}rG(h]h]h]h]h]uhK&hhh]rG(hX 5. Select rGrG}rG(hX 5. Select hjGubjW)rG}rG(hX**Cortex A setting**h}rG(h]h]h]h]h]uhjGh]rGhXCortex A settingrGrG}rG(hUhjGubahj_ubhXt in the options below and provide a name for the project. Use the default advanced settings for the project. Select rGrG}rG(hXt in the options below and provide a name for the project. Use the default advanced settings for the project. Select hjGubjW)rG}rG(hX**GNU v7.2.1 (Linaro aarch64)**h}rG(h]h]h]h]h]uhjGh]rGhXGNU v7.2.1 (Linaro aarch64)rGrG}rG(hUhjGubahj_ubhX (or higher) for the Compiler Version. Under Tool-chain, for the Linker Command file, select the file (PDK INSTALL PATH)/packages/ti/build/am65xx/rGrG}rG(hX (or higher) for the Compiler Version. Under Tool-chain, for the Linker Command file, select the file (PDK INSTALL PATH)/packages/ti/build/am65xx/hjGubjW)rG}rG(hX**linker_a53.lds**h}rG(h]h]h]h]h]uhjGh]rGhXlinker_a53.ldsrGrG}rG(hUhjGubahj_ubhX.rG}rG(hX.hjGubeubj/)rG}rG(hXMUnder Project templates and examples, select **Empty Project (with main.c).**rGhjVGhjOGhj3h}rG(h]h]h]h]h]uhK)hhh]rG(hX-Under Project templates and examples, select rGrG}rG(hX-Under Project templates and examples, select hjGubjW)rG}rG(hX **Empty Project (with main.c).**h}rG(h]h]h]h]h]uhjGh]rGhXEmpty Project (with main.c).rGrG}rG(hUhjGubahj_ubeubj/)rG}rG(hX\Click Finish after you are done to allow CCS to auto generate the project from the template.rGhjVGhjOGhj3h}rG(h]h]h]h]h]uhK+hhh]rGhX\Click Finish after you are done to allow CCS to auto generate the project from the template.rGrG}rG(hjGhjGubaubj)rH}rH(hX3.. Image:: ../images/AM65x_Create_CCS_Project.png hjVGhjOGhjh}rH(UuriX+rtos/../images/AM65x_Create_CCS_Project.pngrHh]h]h]h]j}rHU*jHsh]uhK1hhh]ubj/)rH}rH(hX6. The generated CCS project contains source file **main.c**, ARM assembly code **startup_ARMCA53.S** and a linker command file **AM65X.lds**. Remove startup_ARMCA53.S and AM65X.lds from the project.hjVGhjOGhj3h}rH(h]h]h]h]h]uhK2hhh]rH(hX26. The generated CCS project contains source file r Hr H}r H(hX26. The generated CCS project contains source file hjHubjW)r H}r H(hX **main.c**h}rH(h]h]h]h]h]uhjHh]rHhXmain.crHrH}rH(hUhj Hubahj_ubhX, ARM assembly code rHrH}rH(hX, ARM assembly code hjHubjW)rH}rH(hX**startup_ARMCA53.S**h}rH(h]h]h]h]h]uhjHh]rHhXstartup_ARMCA53.SrHrH}rH(hUhjHubahj_ubhX and a linker command file rHrH}rH(hX and a linker command file hjHubjW)r H}r!H(hX **AM65X.lds**h}r"H(h]h]h]h]h]uhjHh]r#HhX AM65X.ldsr$Hr%H}r&H(hUhj Hubahj_ubhX:. Remove startup_ARMCA53.S and AM65X.lds from the project.r'Hr(H}r)H(hX:. Remove startup_ARMCA53.S and AM65X.lds from the project.hjHubeubj/)r*H}r+H(hX;7. Add the following linker command file to the project. ::hjVGhjOGhj3h}r,H(h]h]h]h]h]uhK6hhh]r-HhX87. Add the following linker command file to the project.r.Hr/H}r0H(hX87. Add the following linker command file to the project.hj*Hubaubj)r1H}r2H(hX:(PDK INSTALL PATH)/packages/ti/build/am65xx/linker_a53.ldshjVGhjOGhjh}r3H(jjh]h]h]h]h]uhM[hhh]r4HhX:(PDK INSTALL PATH)/packages/ti/build/am65xx/linker_a53.ldsr5Hr6H}r7H(hUhj1Hubaubj)r8H}r9H(hUhjVGhjOGhjh}r:H(h]h]h]h]h]uhKH(h]h]h]h]h]uhKhhh]ubaubj/)r?H}r@H(hX+8. Modify main.c to include the following::hjVGhjOGhj3h}rAH(h]h]h]h]h]uhK>hhh]rBHhX*8. Modify main.c to include the following:rCHrDH}rEH(hX*8. Modify main.c to include the following:hj?Hubaubj)rFH}rGH(hX/* Header files */ #include #include "stdio.h" int main(void) { printf("Hello World\n"); while(1); }hjVGhjOGhjh}rHH(jjh]h]h]h]h]uhMchhh]rIHhX/* Header files */ #include #include "stdio.h" int main(void) { printf("Hello World\n"); while(1); }rJHrKH}rLH(hUhjFHubaubj)rMH}rNH(hUhjVGhjOGhjh}rOH(jU.jf5K h]h]h]jUh]h]jjuhKKhhh]rPHjX)rQH}rRH(hXmNavigate to Project Properties -> CCS Build -> GNU Linker and add "Entry" to the "Set start address" field. hjMHhjOGhj[h}rSH(h]h]h]h]h]uhNhhh]rTHj/)rUH}rVH(hXkNavigate to Project Properties -> CCS Build -> GNU Linker and add "Entry" to the "Set start address" field.rWHhjQHhjOGhj3h}rXH(h]h]h]h]h]uhKKh]rYHhXkNavigate to Project Properties -> CCS Build -> GNU Linker and add "Entry" to the "Set start address" field.rZHr[H}r\H(hjWHhjUHubaubaubaubj/)r]H}r^H(hXX10. Navigate to CCS Build -> GNU Linker -> Libraries and add the following libraries. ::hjVGhjOGhj3h}r_H(h]h]h]h]h]uhKNhhh]r`HhXU10. Navigate to CCS Build -> GNU Linker -> Libraries and add the following libraries.raHrbH}rcH(hXU10. Navigate to CCS Build -> GNU Linker -> Libraries and add the following libraries.hj]Hubaubj)rdH}reH(hX6ti.csl.init.aa53fg ti.csl.aa53fg rdimon stdc++ gcc c mhjVGhjOGhjh}rfH(jjh]h]h]h]h]uhMthhh]rgHhX6ti.csl.init.aa53fg ti.csl.aa53fg rdimon stdc++ gcc c mrhHriH}rjH(hUhjdHubaubj/)rkH}rlH(hX-11. Add the following library search path. ::hjVGhjOGhj3h}rmH(h]h]h]h]h]uhKZhhh]rnHhX*11. Add the following library search path.roHrpH}rqH(hX*11. Add the following library search path.hjkHubaubj)rrH}rsH(hX0(PDK INSTALL PATH)/ti/csl/lib/am65xx/a53/releasehjVGhjOGhjh}rtH(jjh]h]h]h]h]uhMhhh]ruHhX0(PDK INSTALL PATH)/ti/csl/lib/am65xx/a53/releaservHrwH}rxH(hUhjrHubaubj/)ryH}rzH(hX12. Save all changes, and right click on the project and select Build Project to build the project and generate hello_world.out.r{HhjVGhjOGhj3h}r|H(h]h]h]h]h]uhKahhh]r}HhX12. Save all changes, and right click on the project and select Build Project to build the project and generate hello_world.out.r~HrH}rH(hj{HhjyHubaubj/)rH}rH(hX13. Launch the target configuration using your emulator to connect to the AM65x EVM as described in the :ref:`Processor-SDK-RTOS-Getting-Started-Guide-label`.hjVGhjOGhj3h}rH(h]h]h]h]h]uhKdhhh]rH(hXh13. Launch the target configuration using your emulator to connect to the AM65x EVM as described in the rHrH}rH(hXh13. Launch the target configuration using your emulator to connect to the AM65x EVM as described in the hjHubjZ)rH}rH(hX5:ref:`Processor-SDK-RTOS-Getting-Started-Guide-label`rHhjHhjOGhj^h}rH(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrHh]h]U refexplicith]h]h]j j uhKdh]rHjb)rH}rH(hjHh}rH(h]h]rH(j jHXstd-refrHeh]h]h]uhjHh]rHhX.Processor-SDK-RTOS-Getting-Started-Guide-labelrHrH}rH(hUhjHubahjlubaubhX.rH}rH(hX.hjHubeubj/)rH}rH(hX14. Right click on **DMSC_Cortex_M3_0** and click connect to target. After connecting to the M3, right click on **CortexA53_0_0** and connect to it.hjVGhjOGhj3h}rH(h]h]h]h]h]uhKghhh]rH(hX14. Right click on rHrH}rH(hX14. Right click on hjHubjW)rH}rH(hX**DMSC_Cortex_M3_0**h}rH(h]h]h]h]h]uhjHh]rHhXDMSC_Cortex_M3_0rHrH}rH(hUhjHubahj_ubhXI and click connect to target. After connecting to the M3, right click on rHrH}rH(hXI and click connect to target. After connecting to the M3, right click on hjHubjW)rH}rH(hX**CortexA53_0_0**h}rH(h]h]h]h]h]uhjHh]rHhX CortexA53_0_0rHrH}rH(hUhjHubahj_ubhX and connect to it.rHrH}rH(hX and connect to it.hjHubeubj/)rH}rH(hX15. Load and run hello_world.out example file on the Cortex-A53. You should see a Hello_world string displayed in the CCS console window.rHhjVGhjOGhj3h}rH(h]h]h]h]h]uhKjhhh]rHhX15. Load and run hello_world.out example file on the Cortex-A53. You should see a Hello_world string displayed in the CCS console window.rHrH}rH(hjHhjHubaubj)rH}rH(hX/.. Image:: ../images/AM65x_CCS_Hello_World.PNG hjVGhjOGhjh}rH(UuriX(rtos/../images/AM65x_CCS_Hello_World.PNGrHh]h]h]h]j}rHU*jHsh]uhKnhhh]ubeubh)rH}rH(hUjKhj=GhjOGhhh}rH(h]rHj;ah]h]h]rHUid47rHah]uhKphhh]rH(h)rH}rH(hXARM Cortex-A15rHhjHhjOGhhh}rH(h]h]h]h]h]uhKphhh]rHhXARM Cortex-A15rHrH}rH(hjHhjHubaubj/)rH}rH(hX:In this article, we take a look at creating bare-metal hello world examples for Cortex A15 core using pre-built templates in CCS. As a sample we will use the AM572x device to describe the steps but the same steps can be used for create hello world examples for Cortex A15 cores in the Keystone 2 family of devices.rHhjHhjOGhj3h}rH(h]h]h]h]h]uhKrhhh]rHhX:In this article, we take a look at creating bare-metal hello world examples for Cortex A15 core using pre-built templates in CCS. As a sample we will use the AM572x device to describe the steps but the same steps can be used for create hello world examples for Cortex A15 cores in the Keystone 2 family of devices.rHrH}rH(hjHhjHubaubj))rH}rH(hX - Only major difference between A15 examples for AM572x and Keystone 2 is that the Keystone 2 device contain MSMC memory instead of OCMC memory as the shared memory. - For K2G devices, the hello world template will be created with the .lds file that specifies MSMC and DDR memory sections. For K2E and K2H, the CCS template doesn`t populate the .lds file. K2H & K2E users can choose to use 66AK2G02.lds located at ccsv6\ccs_base\arm\include as reference to add .lds file to their hello world projects.hjHhNhj,h}rH(h]h]h]h]h]uhNhhh]rHjQ)rH}rH(hUh}rH(jVX-h]h]h]h]h]uhjHh]rH(jX)rH}rH(hXOnly major difference between A15 examples for AM572x and Keystone 2 is that the Keystone 2 device contain MSMC memory instead of OCMC memory as the shared memory.h}rH(h]h]h]h]h]uhjHh]rHj/)rH}rH(hXOnly major difference between A15 examples for AM572x and Keystone 2 is that the Keystone 2 device contain MSMC memory instead of OCMC memory as the shared memory.rHhjHhjOGhj3h}rH(h]h]h]h]h]uhKzh]rHhXOnly major difference between A15 examples for AM572x and Keystone 2 is that the Keystone 2 device contain MSMC memory instead of OCMC memory as the shared memory.rHrH}rH(hjHhjHubaubahj[ubjX)rH}rH(hXMFor K2G devices, the hello world template will be created with the .lds file that specifies MSMC and DDR memory sections. For K2E and K2H, the CCS template doesn`t populate the .lds file. K2H & K2E users can choose to use 66AK2G02.lds located at ccsv6\ccs_base\arm\include as reference to add .lds file to their hello world projects.h}rH(h]h]h]h]h]uhjHh]rHj/)rH}rH(hXMFor K2G devices, the hello world template will be created with the .lds file that specifies MSMC and DDR memory sections. For K2E and K2H, the CCS template doesn`t populate the .lds file. K2H & K2E users can choose to use 66AK2G02.lds located at ccsv6\ccs_base\arm\include as reference to add .lds file to their hello world projects.hjHhjOGhj3h}rH(h]h]h]h]h]uhK}h]rHhXJFor K2G devices, the hello world template will be created with the .lds file that specifies MSMC and DDR memory sections. For K2E and K2H, the CCS template doesn`t populate the .lds file. K2H & K2E users can choose to use 66AK2G02.lds located at ccsv6ccs_basearminclude as reference to add .lds file to their hello world projects.rHrH}rH(hXMFor K2G devices, the hello world template will be created with the .lds file that specifies MSMC and DDR memory sections. For K2E and K2H, the CCS template doesn`t populate the .lds file. K2H & K2E users can choose to use 66AK2G02.lds located at ccsv6\ccs_base\arm\include as reference to add .lds file to their hello world projects.hjHubaubahj[ubehjTubaubj)rH}rH(hUhjHhjOGhjh}rH(jU.h]h]h]jUh]h]jjuhKhhh]rH(jX)rH}rH(hX>Start CCS and create a work space for generating the project. hjHhjOGhj[h}rH(h]h]h]h]h]uhNhhh]rHj/)rH}rI(hX=Start CCS and create a work space for generating the project.rIhjHhjOGhj3h}rI(h]h]h]h]h]uhKh]rIhX=Start CCS and create a work space for generating the project.rIrI}rI(hjIhjHubaubaubjX)rI}rI(hX9Click on File menu option and select New--> CCS Project. hjHhjOGhj[h}r I(h]h]h]h]h]uhNhhh]r Ij/)r I}r I(hX8Click on File menu option and select New--> CCS Project.r IhjIhjOGhj3h}rI(h]h]h]h]h]uhKh]rIhX8Click on File menu option and select New--> CCS Project.rIrI}rI(hj Ihj Iubaubaubeubj/)rI}rI(hXM3. Select Target as AM572x -Cortex A15 and GPEVM_AM572x as shown in the imagerIhjHhjOGhj3h}rI(h]h]h]h]h]uhKhhh]rIhXM3. Select Target as AM572x -Cortex A15 and GPEVM_AM572x as shown in the imagerIrI}rI(hjIhjIubaubj/)rI}rI(hX4. Select **Cortex A setting** in the options below and provide name of the project as "hello_world" and use default Advanced settings for the project. If the Default settings uses "TI ARM compiler 5.x.x" switch to **GNU Linaro 4.8.4** (or higher) tool chain for A15 and check the build **little** endian **ELF** binary for the A15 core. Under Project templates and examples, select **Basic Examples-> Hello World**hjHhjOGhj3h}rI(h]h]h]h]h]uhKhhh]rI(hX 4. Select rIr I}r!I(hX 4. Select hjIubjW)r"I}r#I(hX**Cortex A setting**h}r$I(h]h]h]h]h]uhjIh]r%IhXCortex A settingr&Ir'I}r(I(hUhj"Iubahj_ubhX in the options below and provide name of the project as "hello_world" and use default Advanced settings for the project. If the Default settings uses "TI ARM compiler 5.x.x" switch to r)Ir*I}r+I(hX in the options below and provide name of the project as "hello_world" and use default Advanced settings for the project. If the Default settings uses "TI ARM compiler 5.x.x" switch to hjIubjW)r,I}r-I(hX**GNU Linaro 4.8.4**h}r.I(h]h]h]h]h]uhjIh]r/IhXGNU Linaro 4.8.4r0Ir1I}r2I(hUhj,Iubahj_ubhX4 (or higher) tool chain for A15 and check the build r3Ir4I}r5I(hX4 (or higher) tool chain for A15 and check the build hjIubjW)r6I}r7I(hX **little**h}r8I(h]h]h]h]h]uhjIh]r9IhXlittler:Ir;I}rI}r?I(hX endian hjIubjW)r@I}rAI(hX**ELF**h}rBI(h]h]h]h]h]uhjIh]rCIhXELFrDIrEI}rFI(hUhj@Iubahj_ubhXG binary for the A15 core. Under Project templates and examples, select rGIrHI}rII(hXG binary for the A15 core. Under Project templates and examples, select hjIubjW)rJI}rKI(hX **Basic Examples-> Hello World**h}rLI(h]h]h]h]h]uhjIh]rMIhXBasic Examples-> Hello WorldrNIrOI}rPI(hUhjJIubahj_ubeubj/)rQI}rRI(hX}Click Finish after you are done to allow CCS to auto generate the project from the template **Basic Examples-> Hello World**.hjHhjOGhj3h}rSI(h]h]h]h]h]uhKhhh]rTI(hX\Click Finish after you are done to allow CCS to auto generate the project from the template rUIrVI}rWI(hX\Click Finish after you are done to allow CCS to auto generate the project from the template hjQIubjW)rXI}rYI(hX **Basic Examples-> Hello World**h}rZI(h]h]h]h]h]uhjQIh]r[IhXBasic Examples-> Hello Worldr\Ir]I}r^I(hUhjXIubahj_ubhX.r_I}r`I(hX.hjQIubeubj)raI}rbI(hX3.. Image:: ../images/NewCCSProject_Hello_world.png hjHhjOGhjh}rcI(UuriX,rtos/../images/NewCCSProject_Hello_world.pngrdIh]h]h]h]j}reIU*jdIsh]uhKhhh]ubj/)rfI}rgI(hX5. The generated CCS project contains source file **main.c**, ARM assembly code **startup_ARMCA15.S** and a linker command file **AM572x.lds**. Please modify the main.c file by adding the following highlighted code lines and save main.c file.hjHhjOGhj3h}rhI(h]h]h]h]h]uhKhhh]riI(hX25. The generated CCS project contains source file rjIrkI}rlI(hX25. The generated CCS project contains source file hjfIubjW)rmI}rnI(hX **main.c**h}roI(h]h]h]h]h]uhjfIh]rpIhXmain.crqIrrI}rsI(hUhjmIubahj_ubhX, ARM assembly code rtIruI}rvI(hX, ARM assembly code hjfIubjW)rwI}rxI(hX**startup_ARMCA15.S**h}ryI(h]h]h]h]h]uhjfIh]rzIhXstartup_ARMCA15.Sr{Ir|I}r}I(hUhjwIubahj_ubhX and a linker command file r~IrI}rI(hX and a linker command file hjfIubjW)rI}rI(hX**AM572x.lds**h}rI(h]h]h]h]h]uhjfIh]rIhX AM572x.ldsrIrI}rI(hUhjIubahj_ubhXd. Please modify the main.c file by adding the following highlighted code lines and save main.c file.rIrI}rI(hXd. Please modify the main.c file by adding the following highlighted code lines and save main.c file.hjfIubeubj;)rI}rI(hX7
hjHhjOGhj;h}rI(UformatXhtmljjh]h]h]h]h]uhKhhh]rIhX7
rIrI}rI(hUhjIubaubj;)rI}rI(hX
hjHhjOGhj;h}rI(UformatXhtmljjh]h]h]h]h]uhKhhh]rIhX
rIrI}rI(hUhjIubaubj)rI}rI(hXi /* * hello.c */ #include int main(void) { printf("Hello_world\n"); return 0; }hjHhjOGhjh}rI(jjh]h]h]h]rI(j;Xceh]uhKhhh]rI(hX rI}rI(hX hjIubjb)rI}rI(hX/* * hello.c */h}rI(h]h]rI(UcommentrIU multilinerIeh]h]h]uhjIh]rIhX/* * hello.c */rIrI}rI(hUhjIubahjlubhX rIrI}rI(hX hjIubjb)rI}rI(hX#includeh}rI(h]h]rI(UcommentrIUpreprocrIeh]h]h]uhjIh]rIhX#includerIrI}rI(hUhjIubahjlubhX rI}rI(hX hjIubjb)rI}rI(hX h}rI(h]h]rI(UcommentrIU preprocfilerIeh]h]h]uhjIh]rIhX rIrI}rI(hUhjIubahjlubjb)rI}rI(hX h}rI(h]h]rI(UcommentrIUpreprocrIeh]h]h]uhjIh]rIhX rI}rI(hUhjIubahjlubhX rIrI}rI(hX hjIubjb)rI}rI(hXinth}rI(h]h]rI(UkeywordrIUtyperIeh]h]h]uhjIh]rIhXintrIrI}rI(hUhjIubahjlubhX rI}rI(hX hjIubjb)rI}rI(hXmainh}rI(h]h]rI(UnamerIUfunctionrIeh]h]h]uhjIh]rIhXmainrIrI}rI(hUhjIubahjlubjb)rI}rI(hX(h}rI(h]h]rIU punctuationrIah]h]h]uhjIh]rIhX(rI}rI(hUhjIubahjlubjb)rI}rI(hXvoidh}rI(h]h]rI(UkeywordrIUtyperIeh]h]h]uhjIh]rIhXvoidrIrI}rI(hUhjIubahjlubjb)rI}rI(hX)h}rI(h]h]rIU punctuationrIah]h]h]uhjIh]rIhX)rI}rI(hUhjIubahjlubhX rI}rJ(hX hjIubjb)rJ}rJ(hX{h}rJ(h]h]rJU punctuationrJah]h]h]uhjIh]rJhX{rJ}rJ(hUhjJubahjlubhX r Jr J}r J(hX hjIubjb)r J}r J(hXprintfh}rJ(h]h]rJUnamerJah]h]h]uhjIh]rJhXprintfrJrJ}rJ(hUhj Jubahjlubjb)rJ}rJ(hX(h}rJ(h]h]rJU punctuationrJah]h]h]uhjIh]rJhX(rJ}rJ(hUhjJubahjlubjb)rJ}rJ(hX "Hello_worldh}rJ(h]h]r J(Uliteralr!JUstringr"Jeh]h]h]uhjIh]r#JhX "Hello_worldr$Jr%J}r&J(hUhjJubahjlubjb)r'J}r(J(hX\nh}r)J(h]h]r*J(Uliteralr+JUstringr,JUescaper-Jeh]h]h]uhjIh]r.JhX\nr/Jr0J}r1J(hUhj'Jubahjlubjb)r2J}r3J(hX"h}r4J(h]h]r5J(Uliteralr6JUstringr7Jeh]h]h]uhjIh]r8JhX"r9J}r:J(hUhj2Jubahjlubjb)r;J}rJU punctuationr?Jah]h]h]uhjIh]r@JhX);rAJrBJ}rCJ(hUhj;JubahjlubhX rDJrEJ}rFJ(hX hjIubjb)rGJ}rHJ(hXreturnh}rIJ(h]h]rJJUkeywordrKJah]h]h]uhjIh]rLJhXreturnrMJrNJ}rOJ(hUhjGJubahjlubhX rPJ}rQJ(hX hjIubjb)rRJ}rSJ(hX0h}rTJ(h]h]rUJ(UliteralrVJUnumberrWJUintegerrXJeh]h]h]uhjIh]rYJhX0rZJ}r[J(hUhjRJubahjlubjb)r\J}r]J(hX;h}r^J(h]h]r_JU punctuationr`Jah]h]h]uhjIh]raJhX;rbJ}rcJ(hUhj\JubahjlubhX rdJ}reJ(hX hjIubjb)rfJ}rgJ(hX}h}rhJ(h]h]riJU punctuationrjJah]h]h]uhjIh]rkJhX}rlJ}rmJ(hUhjfJubahjlubeubj;)rnJ}roJ(hX
hjHhjOGhj;h}rpJ(UformatXhtmljjh]h]h]h]h]uhKhhh]rqJhX
rrJrsJ}rtJ(hUhjnJubaubj;)ruJ}rvJ(hX
hjHhjOGhj;h}rwJ(UformatXhtmljjh]h]h]h]h]uhKhhh]rxJhX
ryJrzJ}r{J(hUhjuJubaubj))r|J}r}J(hX For Keystone2 users, the startup_ARMCA15.S and .lds file is not auto populated by CCS. To add these file, right click the project and add files and locate the 66AK2Gxx.lds and startup_ARMCA15.S under the file path ccsvX/ccs_base/arm/include and add them to the projecthjHhjOGhj,h}r~J(h]h]h]h]h]uhNhhh]rJj/)rJ}rJ(hX For Keystone2 users, the startup_ARMCA15.S and .lds file is not auto populated by CCS. To add these file, right click the project and add files and locate the 66AK2Gxx.lds and startup_ARMCA15.S under the file path ccsvX/ccs_base/arm/include and add them to the projectrJhj|JhjOGhj3h}rJ(h]h]h]h]h]uhKh]rJhX For Keystone2 users, the startup_ARMCA15.S and .lds file is not auto populated by CCS. To add these file, right click the project and add files and locate the 66AK2Gxx.lds and startup_ARMCA15.S under the file path ccsvX/ccs_base/arm/include and add them to the projectrJrJ}rJ(hjJhjJubaubaubj/)rJ}rJ(hXo6. Ensure that CCSv6 generated linker command file **AM572x.lds** contains the following Memory configurations.hjHhjOGhj3h}rJ(h]h]h]h]h]uhKhhh]rJ(hX36. Ensure that CCSv6 generated linker command file rJrJ}rJ(hX36. Ensure that CCSv6 generated linker command file hjJubjW)rJ}rJ(hX**AM572x.lds**h}rJ(h]h]h]h]h]uhjJh]rJhX AM572x.ldsrJrJ}rJ(hUhjJubahj_ubhX. contains the following Memory configurations.rJrJ}rJ(hX. contains the following Memory configurations.hjJubeubj;)rJ}rJ(hX7
hjHhjOGhj;h}rJ(UformatXhtmljjh]h]h]h]h]uhKhhh]rJhX7
rJrJ}rJ(hUhjJubaubj;)rJ}rJ(hX
hjHhjOGhj;h}rJ(UformatXhtmljjh]h]h]h]h]uhKhhh]rJhX
rJrJ}rJ(hUhjJubaubj)rJ}rJ(hXMEMORY { OCMC_RAM1 : o = 0x40300000, l = 0x00080000 /* 512kB L3 OCMC RAM1 */ OCMC_RAM2 : o = 0x40400000, l = 0x00100000 /* 1MB L3 OCMC RAM2 */ OCMC_RAM3 : o = 0x40500000, l = 0x00100000 /* 1MB L3 OCMC RAM3 */ DDR0 : o = 0x80000000, l = 0x40000000 /* 1GB external DDR Bank 0 */ DDR1 : o = 0xC0000000, l = 0x40000000 /* 1GB external DDR Bank 1 */ }hjHhjOGhjh}rJ(jjh]h]h]h]rJ(j;Xceh]uhKhhh]rJ(jb)rJ}rJ(hXMEMORYh}rJ(h]h]rJUnamerJah]h]h]uhjJh]rJhXMEMORYrJrJ}rJ(hUhjJubahjlubhX rJ}rJ(hX hjJubjb)rJ}rJ(hX{h}rJ(h]h]rJU punctuationrJah]h]h]uhjJh]rJhX{rJ}rJ(hUhjJubahjlubhX rJrJ}rJ(hX hjJubjb)rJ}rJ(hX OCMC_RAM1h}rJ(h]h]rJ(UnamerJUlabelrJeh]h]h]uhjJh]rJhX OCMC_RAM1rJrJ}rJ(hUhjJubahjlubhX rJ}rJ(hX hjJubjb)rJ}rJ(hX:h}rJ(h]h]rJU punctuationrJah]h]h]uhjJh]rJhX:rJ}rJ(hUhjJubahjlubhX rJrJ}rJ(hX hjJubjb)rJ}rJ(hXoh}rJ(h]h]rJUnamerJah]h]h]uhjJh]rJhXorJ}rJ(hUhjJubahjlubhX rJ}rJ(hX hjJubjb)rJ}rJ(hX=h}rJ(h]h]rJUoperatorrJah]h]h]uhjJh]rJhX=rJ}rJ(hUhjJubahjlubhX rJ}rJ(hX hjJubjb)rJ}rJ(hX 0x40300000h}rJ(h]h]rJ(UliteralrJUnumberrJUhexrJeh]h]h]uhjJh]rJhX 0x40300000rJrJ}rJ(hUhjJubahjlubjb)rJ}rJ(hX,h}rJ(h]h]rJU punctuationrJah]h]h]uhjJh]rJhX,rJ}rJ(hUhjJubahjlubhX rKrK}rK(hX hjJubjb)rK}rK(hXlh}rK(h]h]rKUnamerKah]h]h]uhjJh]rKhXlr K}r K(hUhjKubahjlubhX r K}r K(hX hjJubjb)r K}rK(hX=h}rK(h]h]rKUoperatorrKah]h]h]uhjJh]rKhX=rK}rK(hUhj KubahjlubhX rK}rK(hX hjJubjb)rK}rK(hX 0x00080000h}rK(h]h]rK(UliteralrKUnumberrKUhexrKeh]h]h]uhjJh]rKhX 0x00080000rKr K}r!K(hUhjKubahjlubhX r"Kr#K}r$K(hX hjJubjb)r%K}r&K(hX/* 512kB L3 OCMC RAM1 */h}r'K(h]h]r(K(Ucommentr)KU multiliner*Keh]h]h]uhjJh]r+KhX/* 512kB L3 OCMC RAM1 */r,Kr-K}r.K(hUhj%KubahjlubhX r/Kr0K}r1K(hX hjJubjb)r2K}r3K(hX OCMC_RAM2h}r4K(h]h]r5K(Unamer6KUlabelr7Keh]h]h]uhjJh]r8KhX OCMC_RAM2r9Kr:K}r;K(hUhj2KubahjlubhX rK}r?K(hX:h}r@K(h]h]rAKU punctuationrBKah]h]h]uhjJh]rCKhX:rDK}rEK(hUhj>KubahjlubhX rFKrGK}rHK(hX hjJubjb)rIK}rJK(hXoh}rKK(h]h]rLKUnamerMKah]h]h]uhjJh]rNKhXorOK}rPK(hUhjIKubahjlubhX rQK}rRK(hX hjJubjb)rSK}rTK(hX=h}rUK(h]h]rVKUoperatorrWKah]h]h]uhjJh]rXKhX=rYK}rZK(hUhjSKubahjlubhX r[K}r\K(hX hjJubjb)r]K}r^K(hX 0x40400000h}r_K(h]h]r`K(UliteralraKUnumberrbKUhexrcKeh]h]h]uhjJh]rdKhX 0x40400000reKrfK}rgK(hUhj]Kubahjlubjb)rhK}riK(hX,h}rjK(h]h]rkKU punctuationrlKah]h]h]uhjJh]rmKhX,rnK}roK(hUhjhKubahjlubhX rpKrqK}rrK(hX hjJubjb)rsK}rtK(hXlh}ruK(h]h]rvKUnamerwKah]h]h]uhjJh]rxKhXlryK}rzK(hUhjsKubahjlubhX r{K}r|K(hX hjJubjb)r}K}r~K(hX=h}rK(h]h]rKUoperatorrKah]h]h]uhjJh]rKhX=rK}rK(hUhj}KubahjlubhX rK}rK(hX hjJubjb)rK}rK(hX 0x00100000h}rK(h]h]rK(UliteralrKUnumberrKUhexrKeh]h]h]uhjJh]rKhX 0x00100000rKrK}rK(hUhjKubahjlubhX rKrK}rK(hX hjJubjb)rK}rK(hX/* 1MB L3 OCMC RAM2 */h}rK(h]h]rK(UcommentrKU multilinerKeh]h]h]uhjJh]rKhX/* 1MB L3 OCMC RAM2 */rKrK}rK(hUhjKubahjlubhX rKrK}rK(hX hjJubjb)rK}rK(hX OCMC_RAM3h}rK(h]h]rK(UnamerKUlabelrKeh]h]h]uhjJh]rKhX OCMC_RAM3rKrK}rK(hUhjKubahjlubhX rK}rK(hX hjJubjb)rK}rK(hX:h}rK(h]h]rKU punctuationrKah]h]h]uhjJh]rKhX:rK}rK(hUhjKubahjlubhX rKrK}rK(hX hjJubjb)rK}rK(hXoh}rK(h]h]rKUnamerKah]h]h]uhjJh]rKhXorK}rK(hUhjKubahjlubhX rK}rK(hX hjJubjb)rK}rK(hX=h}rK(h]h]rKUoperatorrKah]h]h]uhjJh]rKhX=rK}rK(hUhjKubahjlubhX rK}rK(hX hjJubjb)rK}rK(hX 0x40500000h}rK(h]h]rK(UliteralrKUnumberrKUhexrKeh]h]h]uhjJh]rKhX 0x40500000rKrK}rK(hUhjKubahjlubjb)rK}rK(hX,h}rK(h]h]rKU punctuationrKah]h]h]uhjJh]rKhX,rK}rK(hUhjKubahjlubhX rKrK}rK(hX hjJubjb)rK}rK(hXlh}rK(h]h]rKUnamerKah]h]h]uhjJh]rKhXlrK}rK(hUhjKubahjlubhX rK}rK(hX hjJubjb)rK}rK(hX=h}rK(h]h]rKUoperatorrKah]h]h]uhjJh]rKhX=rK}rK(hUhjKubahjlubhX rK}rK(hX hjJubjb)rK}rK(hX 0x00100000h}rK(h]h]rK(UliteralrKUnumberrKUhexrKeh]h]h]uhjJh]rKhX 0x00100000rKrL}rL(hUhjKubahjlubhX rLrL}rL(hX hjJubjb)rL}rL(hX/* 1MB L3 OCMC RAM3 */h}rL(h]h]rL(Ucommentr LU multiliner Leh]h]h]uhjJh]r LhX/* 1MB L3 OCMC RAM3 */r Lr L}rL(hUhjLubahjlubhX rLrL}rL(hX hjJubjb)rL}rL(hXDDR0h}rL(h]h]rL(UnamerLUlabelrLeh]h]h]uhjJh]rLhXDDR0rLrL}rL(hUhjLubahjlubhX rL}rL(hX hjJubjb)rL}rL(hX:h}r L(h]h]r!LU punctuationr"Lah]h]h]uhjJh]r#LhX:r$L}r%L(hUhjLubahjlubhX r&Lr'L}r(L(hX hjJubjb)r)L}r*L(hXoh}r+L(h]h]r,LUnamer-Lah]h]h]uhjJh]r.LhXor/L}r0L(hUhj)LubahjlubhX r1L}r2L(hX hjJubjb)r3L}r4L(hX=h}r5L(h]h]r6LUoperatorr7Lah]h]h]uhjJh]r8LhX=r9L}r:L(hUhj3LubahjlubhX r;L}rL(hX 0x80000000h}r?L(h]h]r@L(UliteralrALUnumberrBLUhexrCLeh]h]h]uhjJh]rDLhX 0x80000000rELrFL}rGL(hUhj=Lubahjlubjb)rHL}rIL(hX,h}rJL(h]h]rKLU punctuationrLLah]h]h]uhjJh]rMLhX,rNL}rOL(hUhjHLubahjlubhX rPLrQL}rRL(hX hjJubjb)rSL}rTL(hXlh}rUL(h]h]rVLUnamerWLah]h]h]uhjJh]rXLhXlrYL}rZL(hUhjSLubahjlubhX r[L}r\L(hX hjJubjb)r]L}r^L(hX=h}r_L(h]h]r`LUoperatorraLah]h]h]uhjJh]rbLhX=rcL}rdL(hUhj]LubahjlubhX reL}rfL(hX hjJubjb)rgL}rhL(hX 0x40000000h}riL(h]h]rjL(UliteralrkLUnumberrlLUhexrmLeh]h]h]uhjJh]rnLhX 0x40000000roLrpL}rqL(hUhjgLubahjlubhX rrLrsL}rtL(hX hjJubjb)ruL}rvL(hX/* 1GB external DDR Bank 0 */h}rwL(h]h]rxL(UcommentryLU multilinerzLeh]h]h]uhjJh]r{LhX/* 1GB external DDR Bank 0 */r|Lr}L}r~L(hUhjuLubahjlubhX rLrL}rL(hX hjJubjb)rL}rL(hXDDR1h}rL(h]h]rL(UnamerLUlabelrLeh]h]h]uhjJh]rLhXDDR1rLrL}rL(hUhjLubahjlubhX rL}rL(hX hjJubjb)rL}rL(hX:h}rL(h]h]rLU punctuationrLah]h]h]uhjJh]rLhX:rL}rL(hUhjLubahjlubhX rLrL}rL(hX hjJubjb)rL}rL(hXoh}rL(h]h]rLUnamerLah]h]h]uhjJh]rLhXorL}rL(hUhjLubahjlubhX rL}rL(hX hjJubjb)rL}rL(hX=h}rL(h]h]rLUoperatorrLah]h]h]uhjJh]rLhX=rL}rL(hUhjLubahjlubhX rL}rL(hX hjJubjb)rL}rL(hX 0xC0000000h}rL(h]h]rL(UliteralrLUnumberrLUhexrLeh]h]h]uhjJh]rLhX 0xC0000000rLrL}rL(hUhjLubahjlubjb)rL}rL(hX,h}rL(h]h]rLU punctuationrLah]h]h]uhjJh]rLhX,rL}rL(hUhjLubahjlubhX rLrL}rL(hX hjJubjb)rL}rL(hXlh}rL(h]h]rLUnamerLah]h]h]uhjJh]rLhXlrL}rL(hUhjLubahjlubhX rL}rL(hX hjJubjb)rL}rL(hX=h}rL(h]h]rLUoperatorrLah]h]h]uhjJh]rLhX=rL}rL(hUhjLubahjlubhX rL}rL(hX hjJubjb)rL}rL(hX 0x40000000h}rL(h]h]rL(UliteralrLUnumberrLUhexrLeh]h]h]uhjJh]rLhX 0x40000000rLrL}rL(hUhjLubahjlubhX rLrL}rL(hX hjJubjb)rL}rL(hX/* 1GB external DDR Bank 1 */h}rL(h]h]rL(UcommentrLU multilinerLeh]h]h]uhjJh]rLhX/* 1GB external DDR Bank 1 */rLrL}rL(hUhjLubahjlubhX rL}rL(hX hjJubjb)rL}rL(hX}h}rL(h]h]rLU punctuationrLah]h]h]uhjJh]rLhX}rL}rL(hUhjLubahjlubeubj;)rL}rL(hX
hjHhjOGhj;h}rL(UformatXhtmljjh]h]h]h]h]uhKhhh]rLhX
rLrL}rL(hUhjLubaubj;)rM}rM(hX
hjHhjOGhj;h}rM(UformatXhtmljjh]h]h]h]h]uhKhhh]rMhX
rMrM}rM(hUhjMubaubj))rM}rM(hXFor Keystone 2 devices, replace all the OCMC_RAM# regions in the lds file and replace it with MSMC memory section as shown below. Refer to 66AK2G02.lds file in ccs installation under directory path ccsv6\ccs_base\arm\includehjHhjOGhj,h}r M(h]h]h]h]h]uhNhhh]r Mj/)r M}r M(hXFor Keystone 2 devices, replace all the OCMC_RAM# regions in the lds file and replace it with MSMC memory section as shown below. Refer to 66AK2G02.lds file in ccs installation under directory path ccsv6\ccs_base\arm\includehjMhjOGhj3h}r M(h]h]h]h]h]uhKh]rMhXFor Keystone 2 devices, replace all the OCMC_RAM# regions in the lds file and replace it with MSMC memory section as shown below. Refer to 66AK2G02.lds file in ccs installation under directory path ccsv6ccs_basearmincluderMrM}rM(hXFor Keystone 2 devices, replace all the OCMC_RAM# regions in the lds file and replace it with MSMC memory section as shown below. Refer to 66AK2G02.lds file in ccs installation under directory path ccsv6\ccs_base\arm\includehj Mubaubaubj)rM}rM(hXOMSMC  : o=0x0c000000, l = 0x00600000 /* 6MB Muticore shared memory */hjHhjOGhjh}rM(jjh]h]h]h]h]uhMhhh]rMhXOMSMC  : o=0x0c000000, l = 0x00600000 /* 6MB Muticore shared memory */rMrM}rM(hUhjMubaubj))rM}rM(hXThe .lds file expects users to provide STACKSIZE and HEAPSIZE from linker settings. To provide these settings got to Build Settings GNU Linker add the following to the Symbols section. Keystone II devices require this to be done explicitly in the linker settingshjHhjOGhj,h}rM(h]h]h]h]h]uhNhhh]rMj/)rM}rM(hXThe .lds file expects users to provide STACKSIZE and HEAPSIZE from linker settings. To provide these settings got to Build Settings GNU Linker add the following to the Symbols section. Keystone II devices require this to be done explicitly in the linker settingsrMhjMhjOGhj3h}r M(h]h]h]h]h]uhKh]r!MhXThe .lds file expects users to provide STACKSIZE and HEAPSIZE from linker settings. To provide these settings got to Build Settings GNU Linker add the following to the Symbols section. Keystone II devices require this to be done explicitly in the linker settingsr"Mr#M}r$M(hjMhjMubaubaubj)r%M}r&M(hXSTACKSIZE=10000 HEAPSIZE=400hjHhjOGhjh}r'M(jjh]h]h]h]h]uhMhhh]r(MhXSTACKSIZE=10000 HEAPSIZE=400r)Mr*M}r+M(hUhj%Mubaubj/)r,M}r-M(hXj7. Right click on the project and select Build Project, to build the project and generate hello_world.out.r.MhjHhjOGhj3h}r/M(h]h]h]h]h]uhKhhh]r0MhXj7. Right click on the project and select Build Project, to build the project and generate hello_world.out.r1Mr2M}r3M(hj.Mhj,Mubaubj/)r4M}r5M(hX8. Launch target configuration using your emulator to connect to AM572X EVM as described in the :ref:`Processor-SDK-RTOS-Getting-Started-Guide-label`.hjHhjOGhj3h}r6M(h]h]h]h]h]uhKhhh]r7M(hX`8. Launch target configuration using your emulator to connect to AM572X EVM as described in the r8Mr9M}r:M(hX`8. Launch target configuration using your emulator to connect to AM572X EVM as described in the hj4MubjZ)r;M}rM(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdr?Mh]h]U refexplicith]h]h]j j uhKh]r@Mjb)rAM}rBM(hj=Mh}rCM(h]h]rDM(j j?MXstd-refrEMeh]h]h]uhj;Mh]rFMhX.Processor-SDK-RTOS-Getting-Started-Guide-labelrGMrHM}rIM(hUhjAMubahjlubaubhX.rJM}rKM(hX.hj4Mubeubj)rLM}rMM(hUhjHhjOGhjh}rNM(jU.jf5K h]h]h]jUh]h]jjuhKhhh]rOMjX)rPM}rQM(hX7Right click **CortexA15_0** and select connect target. hjLMhjOGhj[h}rRM(h]h]h]h]h]uhNhhh]rSMj/)rTM}rUM(hX6Right click **CortexA15_0** and select connect target.hjPMhjOGhj3h}rVM(h]h]h]h]h]uhKh]rWM(hX Right click rXMrYM}rZM(hX Right click hjTMubjW)r[M}r\M(hX**CortexA15_0**h}r]M(h]h]h]h]h]uhjTMh]r^MhX CortexA15_0r_Mr`M}raM(hUhj[Mubahj_ubhX and select connect target.rbMrcM}rdM(hX and select connect target.hjTMubeubaubaubj/)reM}rfM(hXh10. Initialize DDR configuration. On CCS --> Scripts --> DDR configurations --> AM572_DDR3_532MHz_configrgMhjHhjOGhj3h}rhM(h]h]h]h]h]uhKhhh]riMhXh10. Initialize DDR configuration. On CCS --> Scripts --> DDR configurations --> AM572_DDR3_532MHz_configrjMrkM}rlM(hjgMhjeMubaubj/)rmM}rnM(hXu11. Load and run hello_world.out example file. You should see **Hello_world** string displayed on CCS console window.hjHhjOGhj3h}roM(h]h]h]h]h]uhKhhh]rpM(hX>11. Load and run hello_world.out example file. You should see rqMrrM}rsM(hX>11. Load and run hello_world.out example file. You should see hjmMubjW)rtM}ruM(hX**Hello_world**h}rvM(h]h]h]h]h]uhjmMh]rwMhX Hello_worldrxMryM}rzM(hUhjtMubahj_ubhX( string displayed on CCS console window.r{Mr|M}r}M(hX( string displayed on CCS console window.hjmMubeubj)r~M}rM(hX*.. Image:: ../images/HelloWorldOutput.jpg hjHhjOGhjh}rM(UuriX#rtos/../images/HelloWorldOutput.jpgrMh]h]h]h]j}rMU*jMsh]uhMhhh]ubj))rM}rM(hX- If the example does not load correctly in the first attempt, reload and **ensure ARM core starts at main**. - If the ARM loads correctly but you don`t see any output then check to see if the GNU linker is linking to Semihosting library (librdimon) in the linker setting. If it is not linked go to GNU linker settings in CCS project and add **"rdimon"** to the libraries that are linkedhjHhNhj,h}rM(h]h]h]h]h]uhNhhh]rMjQ)rM}rM(hUh}rM(jVX-h]h]h]h]h]uhjMh]rM(jX)rM}rM(hXkIf the example does not load correctly in the first attempt, reload and **ensure ARM core starts at main**.h}rM(h]h]h]h]h]uhjMh]rMj/)rM}rM(hXkIf the example does not load correctly in the first attempt, reload and **ensure ARM core starts at main**.hjMhjOGhj3h}rM(h]h]h]h]h]uhMh]rM(hXHIf the example does not load correctly in the first attempt, reload and rMrM}rM(hXHIf the example does not load correctly in the first attempt, reload and hjMubjW)rM}rM(hX"**ensure ARM core starts at main**h}rM(h]h]h]h]h]uhjMh]rMhXensure ARM core starts at mainrMrM}rM(hUhjMubahj_ubhX.rM}rM(hX.hjMubeubahj[ubjX)rM}rM(hXIf the ARM loads correctly but you don`t see any output then check to see if the GNU linker is linking to Semihosting library (librdimon) in the linker setting. If it is not linked go to GNU linker settings in CCS project and add **"rdimon"** to the libraries that are linkedh}rM(h]h]h]h]h]uhjMh]rMj/)rM}rM(hXIf the ARM loads correctly but you don`t see any output then check to see if the GNU linker is linking to Semihosting library (librdimon) in the linker setting. If it is not linked go to GNU linker settings in CCS project and add **"rdimon"** to the libraries that are linkedhjMhjOGhj3h}rM(h]h]h]h]h]uhMh]rM(hXIf the ARM loads correctly but you don`t see any output then check to see if the GNU linker is linking to Semihosting library (librdimon) in the linker setting. If it is not linked go to GNU linker settings in CCS project and add rMrM}rM(hXIf the ARM loads correctly but you don`t see any output then check to see if the GNU linker is linking to Semihosting library (librdimon) in the linker setting. If it is not linked go to GNU linker settings in CCS project and add hjMubjW)rM}rM(hX **"rdimon"**h}rM(h]h]h]h]h]uhjMh]rMhX"rdimon"rMrM}rM(hUhjMubahj_ubhX! to the libraries that are linkedrMrM}rM(hX! to the libraries that are linkedhjMubeubahj[ubehjTubaubj)rM}rM(hUhjHhjOGhjh}rM(h]h]h]h]h]uhM hhh]rMj)rM}rM(hUjKhjMhjOGhhh}rM(h]h]h]h]h]uhKhhh]ubaubeubh)rM}rM(hUjKhj=GhjOGhhh}rM(h]rMj<ah]h]h]rMUid48rMah]uhMhhh]rM(h)rM}rM(hX ARM Cortex-A9rMhjMhjOGhhh}rM(h]h]h]h]h]uhMhhh]rMhX ARM Cortex-A9rMrM}rM(hjMhjMubaubj)rM}rM(hUhjMhjOGhjh}rM(jU.h]h]h]jUh]h]jjuhMhhh]rMjX)rM}rM(hX@Start CCSv6 and create a work space for generating the project. hjMhjOGhj[h}rM(h]h]h]h]h]uhNhhh]rMj/)rM}rM(hX?Start CCSv6 and create a work space for generating the project.rMhjMhjOGhj3h}rM(h]h]h]h]h]uhMh]rMhX?Start CCSv6 and create a work space for generating the project.rMrM}rM(hjMhjMubaubaubaubj))rM}rM(hXCCSv6.1.1 doesn`t contain a hello world project template for Cortex A9 core using GNU Linaro 4.8.x tool chain. Due to code compatibility of Cortex A8 and cortex A9 platforms, We recommend that you create a project for Cortex A8 platform like AM335x using the GNU Linaro tool chain and then use the code to test hello world application on the Cortex A9 on the AM437x platform. If you wish to use TI ARM compiler 5.2.x, then you can use the default hello world template in CCSv6 for the Cortex A9 on AM437xhjMhjOGhj,h}rM(h]h]h]h]h]uhNhhh]rMj/)rM}rM(hXCCSv6.1.1 doesn`t contain a hello world project template for Cortex A9 core using GNU Linaro 4.8.x tool chain. Due to code compatibility of Cortex A8 and cortex A9 platforms, We recommend that you create a project for Cortex A8 platform like AM335x using the GNU Linaro tool chain and then use the code to test hello world application on the Cortex A9 on the AM437x platform. If you wish to use TI ARM compiler 5.2.x, then you can use the default hello world template in CCSv6 for the Cortex A9 on AM437xrMhjMhjOGhj3h}rM(h]h]h]h]h]uhMh]rMhXCCSv6.1.1 doesn`t contain a hello world project template for Cortex A9 core using GNU Linaro 4.8.x tool chain. Due to code compatibility of Cortex A8 and cortex A9 platforms, We recommend that you create a project for Cortex A8 platform like AM335x using the GNU Linaro tool chain and then use the code to test hello world application on the Cortex A9 on the AM437x platform. If you wish to use TI ARM compiler 5.2.x, then you can use the default hello world template in CCSv6 for the Cortex A9 on AM437xrMrM}rM(hjMhjMubaubaubj/)rM}rM(hX2. Click on File menu option and select New--> CCS Project. Steps assume that user is using GN Linaro tool chain for Cortex A9.rMhjMhjOGhj3h}rM(h]h]h]h]h]uhMhhh]rMhX2. Click on File menu option and select New--> CCS Project. Steps assume that user is using GN Linaro tool chain for Cortex A9.rMrM}rM(hjMhjMubaubj/)rM}rM(hX`3. Select Target as AM33xx -Cortex A8 and appropriate target Board setting as shown in the imagerMhjMhjOGhj3h}rM(h]h]h]h]h]uhM hhh]rMhX`3. Select Target as AM33xx -Cortex A8 and appropriate target Board setting as shown in the imagerMrM}rM(hjMhjMubaubj/)rM}rM(hX4. Select **Cortex A8** setting in the options below and provide name of the project as "hello_world_a9" and use default Advanced settings for the project. If the Default settings uses "TI ARM compiler 5.x.x" switch to **GNU Linaro 4.8.4** (or higher) tool chain for A9 and check the build **little** endian **ELF** binary for the A9 core. Click Finish after you are done to allow CCS to auto generate the project from the template **Basic Examples-> Hello World**.hjMhjOGhj3h}rM(h]h]h]h]h]uhM#hhh]rM(hX 4. Select rMrM}rM(hX 4. Select hjMubjW)rM}rM(hX **Cortex A8**h}rM(h]h]h]h]h]uhjMh]rNhX Cortex A8rNrN}rN(hUhjMubahj_ubhX setting in the options below and provide name of the project as "hello_world_a9" and use default Advanced settings for the project. If the Default settings uses "TI ARM compiler 5.x.x" switch to rNrN}rN(hX setting in the options below and provide name of the project as "hello_world_a9" and use default Advanced settings for the project. If the Default settings uses "TI ARM compiler 5.x.x" switch to hjMubjW)rN}rN(hX**GNU Linaro 4.8.4**h}r N(h]h]h]h]h]uhjMh]r NhXGNU Linaro 4.8.4r Nr N}r N(hUhjNubahj_ubhX3 (or higher) tool chain for A9 and check the build rNrN}rN(hX3 (or higher) tool chain for A9 and check the build hjMubjW)rN}rN(hX **little**h}rN(h]h]h]h]h]uhjMh]rNhXlittlerNrN}rN(hUhjNubahj_ubhX endian rNrN}rN(hX endian hjMubjW)rN}rN(hX**ELF**h}rN(h]h]h]h]h]uhjMh]rNhXELFrNr N}r!N(hUhjNubahj_ubhXu binary for the A9 core. Click Finish after you are done to allow CCS to auto generate the project from the template r"Nr#N}r$N(hXu binary for the A9 core. Click Finish after you are done to allow CCS to auto generate the project from the template hjMubjW)r%N}r&N(hX **Basic Examples-> Hello World**h}r'N(h]h]h]h]h]uhjMh]r(NhXBasic Examples-> Hello Worldr)Nr*N}r+N(hUhj%Nubahj_ubhX.r,N}r-N(hX.hjMubeubj)r.N}r/N(hX6.. Image:: ../images/Bare-Metal_A9_templateselect.jpg hjMhjOGhjh}r0N(UuriX/rtos/../images/Bare-Metal_A9_templateselect.jpgr1Nh]h]h]h]j}r2NU*j1Nsh]uhM,hhh]ubj/)r3N}r4N(hX?5. The generated CCS project contains source file **main.c**, ARM assembly code **startup_ARMCA8.S** and a linker command file **AM335x.lds**. The startup file does some basic setup and there is no difference between A8 and A9, so it can be used directly on A9 target. Ensure the main.c file contains the following codehjMhjOGhj3h}r5N(h]h]h]h]h]uhM-hhh]r6N(hX25. The generated CCS project contains source file r7Nr8N}r9N(hX25. The generated CCS project contains source file hj3NubjW)r:N}r;N(hX **main.c**h}rNr?N}r@N(hUhj:Nubahj_ubhX, ARM assembly code rANrBN}rCN(hX, ARM assembly code hj3NubjW)rDN}rEN(hX**startup_ARMCA8.S**h}rFN(h]h]h]h]h]uhj3Nh]rGNhXstartup_ARMCA8.SrHNrIN}rJN(hUhjDNubahj_ubhX and a linker command file rKNrLN}rMN(hX and a linker command file hj3NubjW)rNN}rON(hX**AM335x.lds**h}rPN(h]h]h]h]h]uhj3Nh]rQNhX AM335x.ldsrRNrSN}rTN(hUhjNNubahj_ubhX. The startup file does some basic setup and there is no difference between A8 and A9, so it can be used directly on A9 target. Ensure the main.c file contains the following coderUNrVN}rWN(hX. The startup file does some basic setup and there is no difference between A8 and A9, so it can be used directly on A9 target. Ensure the main.c file contains the following codehj3Nubeubj;)rXN}rYN(hX7
hjMhjOGhj;h}rZN(UformatXhtmljjh]h]h]h]h]uhM3hhh]r[NhX7
r\Nr]N}r^N(hUhjXNubaubj;)r_N}r`N(hX
hjMhjOGhj;h}raN(UformatXhtmljjh]h]h]h]h]uhM7hhh]rbNhX
rcNrdN}reN(hUhj_Nubaubj)rfN}rgN(hXi /* * hello.c */ #include int main(void) { printf("Hello_world\n"); return 0; }hjMhjOGhjh}rhN(jjh]h]h]h]riN(j;Xceh]uhMGhhh]rjN(hX rkN}rlN(hX hjfNubjb)rmN}rnN(hX/* * hello.c */h}roN(h]h]rpN(UcommentrqNU multilinerrNeh]h]h]uhjfNh]rsNhX/* * hello.c */rtNruN}rvN(hUhjmNubahjlubhX rwNrxN}ryN(hX hjfNubjb)rzN}r{N(hX#includeh}r|N(h]h]r}N(Ucommentr~NUpreprocrNeh]h]h]uhjfNh]rNhX#includerNrN}rN(hUhjzNubahjlubhX rN}rN(hX hjfNubjb)rN}rN(hX h}rN(h]h]rN(UcommentrNU preprocfilerNeh]h]h]uhjfNh]rNhX rNrN}rN(hUhjNubahjlubjb)rN}rN(hX h}rN(h]h]rN(UcommentrNUpreprocrNeh]h]h]uhjfNh]rNhX rN}rN(hUhjNubahjlubhX rNrN}rN(hX hjfNubjb)rN}rN(hXinth}rN(h]h]rN(UkeywordrNUtyperNeh]h]h]uhjfNh]rNhXintrNrN}rN(hUhjNubahjlubhX rN}rN(hX hjfNubjb)rN}rN(hXmainh}rN(h]h]rN(UnamerNUfunctionrNeh]h]h]uhjfNh]rNhXmainrNrN}rN(hUhjNubahjlubjb)rN}rN(hX(h}rN(h]h]rNU punctuationrNah]h]h]uhjfNh]rNhX(rN}rN(hUhjNubahjlubjb)rN}rN(hXvoidh}rN(h]h]rN(UkeywordrNUtyperNeh]h]h]uhjfNh]rNhXvoidrNrN}rN(hUhjNubahjlubjb)rN}rN(hX)h}rN(h]h]rNU punctuationrNah]h]h]uhjfNh]rNhX)rN}rN(hUhjNubahjlubhX rN}rN(hX hjfNubjb)rN}rN(hX{h}rN(h]h]rNU punctuationrNah]h]h]uhjfNh]rNhX{rN}rN(hUhjNubahjlubhX rNrN}rN(hX hjfNubjb)rN}rN(hXprintfh}rN(h]h]rNUnamerNah]h]h]uhjfNh]rNhXprintfrNrN}rN(hUhjNubahjlubjb)rN}rN(hX(h}rN(h]h]rNU punctuationrNah]h]h]uhjfNh]rNhX(rN}rN(hUhjNubahjlubjb)rN}rN(hX "Hello_worldh}rN(h]h]rN(UliteralrNUstringrNeh]h]h]uhjfNh]rNhX "Hello_worldrNrN}rN(hUhjNubahjlubjb)rN}rN(hX\nh}rN(h]h]rN(UliteralrNUstringrNUescaperNeh]h]h]uhjfNh]rNhX\nrNrN}rN(hUhjNubahjlubjb)rN}rO(hX"h}rO(h]h]rO(UliteralrOUstringrOeh]h]h]uhjfNh]rOhX"rO}rO(hUhjNubahjlubjb)rO}r O(hX);h}r O(h]h]r OU punctuationr Oah]h]h]uhjfNh]r OhX);rOrO}rO(hUhjOubahjlubhX rOrO}rO(hX hjfNubjb)rO}rO(hXreturnh}rO(h]h]rOUkeywordrOah]h]h]uhjfNh]rOhXreturnrOrO}rO(hUhjOubahjlubhX rO}rO(hX hjfNubjb)rO}r O(hX0h}r!O(h]h]r"O(Uliteralr#OUnumberr$OUintegerr%Oeh]h]h]uhjfNh]r&OhX0r'O}r(O(hUhjOubahjlubjb)r)O}r*O(hX;h}r+O(h]h]r,OU punctuationr-Oah]h]h]uhjfNh]r.OhX;r/O}r0O(hUhj)OubahjlubhX r1O}r2O(hX hjfNubjb)r3O}r4O(hX}h}r5O(h]h]r6OU punctuationr7Oah]h]h]uhjfNh]r8OhX}r9O}r:O(hUhj3Oubahjlubeubj;)r;O}rhjMhjOGhj;h}r=O(UformatXhtmljjh]h]h]h]h]uhMHhhh]r>OhX
r?Or@O}rAO(hUhj;Oubaubj;)rBO}rCO(hX
hjMhjOGhj;h}rDO(UformatXhtmljjh]h]h]h]h]uhMLhhh]rEOhX
rFOrGO}rHO(hUhjBOubaubj)rIO}rJO(hUhjMhjOGhjh}rKO(jU.jf5Kh]h]h]jUh]h]jjuhMPhhh]rLOjX)rMO}rNO(hXDEnsure that CCSv6 generates the linker command file **AM335x.lds**. hjIOhjOGhj[h}rOO(h]h]h]h]h]uhNhhh]rPOj/)rQO}rRO(hXCEnsure that CCSv6 generates the linker command file **AM335x.lds**.hjMOhjOGhj3h}rSO(h]h]h]h]h]uhMPh]rTO(hX4Ensure that CCSv6 generates the linker command file rUOrVO}rWO(hX4Ensure that CCSv6 generates the linker command file hjQOubjW)rXO}rYO(hX**AM335x.lds**h}rZO(h]h]h]h]h]uhjQOh]r[OhX AM335x.ldsr\Or]O}r^O(hUhjXOubahj_ubhX.r_O}r`O(hX.hjQOubeubaubaubj;)raO}rbO(hX7
hjMhjOGhj;h}rcO(UformatXhtmljjh]h]h]h]h]uhMRhhh]rdOhX7
reOrfO}rgO(hUhjaOubaubj;)rhO}riO(hX
hjMhjOGhj;h}rjO(UformatXhtmljjh]h]h]h]h]uhMVhhh]rkOhX
rlOrmO}rnO(hUhjhOubaubj)roO}rpO(hXMEMORY { SRAM : o = 0x402F0400, l = 0x0000FC00 /* 64kB internal SRAM */ L3OCMC0 : o = 0x40300000, l = 0x00010000 /* 64kB L3 OCMC SRAM */ M3SHUMEM : o = 0x44D00000, l = 0x00004000 /* 16kB M3 Shared Unified Code Space */ M3SHDMEM : o = 0x44D80000, l = 0x00002000 /* 8kB M3 Shared Data Memory */ DDR0 : o = 0x80000000, l = 0x40000000 /* 1GB external DDR Bank 0 */ }hjMhjOGhjh}rqO(jjh]h]h]h]rrO(j;Xceh]uhMdhhh]rsO(jb)rtO}ruO(hXMEMORYh}rvO(h]h]rwOUnamerxOah]h]h]uhjoOh]ryOhXMEMORYrzOr{O}r|O(hUhjtOubahjlubhX r}O}r~O(hX hjoOubjb)rO}rO(hX{h}rO(h]h]rOU punctuationrOah]h]h]uhjoOh]rOhX{rO}rO(hUhjOubahjlubhX rOrO}rO(hX hjoOubjb)rO}rO(hXSRAMh}rO(h]h]rO(UnamerOUlabelrOeh]h]h]uhjoOh]rOhXSRAMrOrO}rO(hUhjOubahjlubhX rO}rO(hX hjoOubjb)rO}rO(hX:h}rO(h]h]rOU punctuationrOah]h]h]uhjoOh]rOhX:rO}rO(hUhjOubahjlubhX rOrO}rO(hX hjoOubjb)rO}rO(hXoh}rO(h]h]rOUnamerOah]h]h]uhjoOh]rOhXorO}rO(hUhjOubahjlubhX rO}rO(hX hjoOubjb)rO}rO(hX=h}rO(h]h]rOUoperatorrOah]h]h]uhjoOh]rOhX=rO}rO(hUhjOubahjlubhX rO}rO(hX hjoOubjb)rO}rO(hX 0x402F0400h}rO(h]h]rO(UliteralrOUnumberrOUhexrOeh]h]h]uhjoOh]rOhX 0x402F0400rOrO}rO(hUhjOubahjlubjb)rO}rO(hX,h}rO(h]h]rOU punctuationrOah]h]h]uhjoOh]rOhX,rO}rO(hUhjOubahjlubhX rOrO}rO(hX hjoOubjb)rO}rO(hXlh}rO(h]h]rOUnamerOah]h]h]uhjoOh]rOhXlrO}rO(hUhjOubahjlubhX rO}rO(hX hjoOubjb)rO}rO(hX=h}rO(h]h]rOUoperatorrOah]h]h]uhjoOh]rOhX=rO}rO(hUhjOubahjlubhX rO}rO(hX hjoOubjb)rO}rO(hX 0x0000FC00h}rO(h]h]rO(UliteralrOUnumberrOUhexrOeh]h]h]uhjoOh]rOhX 0x0000FC00rOrO}rO(hUhjOubahjlubhX rOrO}rO(hX hjoOubjb)rO}rO(hX/* 64kB internal SRAM */h}rO(h]h]rO(UcommentrOU multilinerOeh]h]h]uhjoOh]rOhX/* 64kB internal SRAM */rOrO}rO(hUhjOubahjlubhX rOrO}rO(hX hjoOubjb)rO}rO(hXL3OCMC0h}rO(h]h]rO(UnamerOUlabelrOeh]h]h]uhjoOh]rPhXL3OCMC0rPrP}rP(hUhjOubahjlubhX rP}rP(hX hjoOubjb)rP}rP(hX:h}rP(h]h]r PU punctuationr Pah]h]h]uhjoOh]r PhX:r P}r P(hUhjPubahjlubhX rPrP}rP(hX hjoOubjb)rP}rP(hXoh}rP(h]h]rPUnamerPah]h]h]uhjoOh]rPhXorP}rP(hUhjPubahjlubhX rP}rP(hX hjoOubjb)rP}rP(hX=h}rP(h]h]rPUoperatorrPah]h]h]uhjoOh]r PhX=r!P}r"P(hUhjPubahjlubhX r#P}r$P(hX hjoOubjb)r%P}r&P(hX 0x40300000h}r'P(h]h]r(P(Uliteralr)PUnumberr*PUhexr+Peh]h]h]uhjoOh]r,PhX 0x40300000r-Pr.P}r/P(hUhj%Pubahjlubjb)r0P}r1P(hX,h}r2P(h]h]r3PU punctuationr4Pah]h]h]uhjoOh]r5PhX,r6P}r7P(hUhj0PubahjlubhX r8Pr9P}r:P(hX hjoOubjb)r;P}rPUnamer?Pah]h]h]uhjoOh]r@PhXlrAP}rBP(hUhj;PubahjlubhX rCP}rDP(hX hjoOubjb)rEP}rFP(hX=h}rGP(h]h]rHPUoperatorrIPah]h]h]uhjoOh]rJPhX=rKP}rLP(hUhjEPubahjlubhX rMP}rNP(hX hjoOubjb)rOP}rPP(hX 0x00010000h}rQP(h]h]rRP(UliteralrSPUnumberrTPUhexrUPeh]h]h]uhjoOh]rVPhX 0x00010000rWPrXP}rYP(hUhjOPubahjlubhX rZPr[P}r\P(hX hjoOubjb)r]P}r^P(hX/* 64kB L3 OCMC SRAM */h}r_P(h]h]r`P(UcommentraPU multilinerbPeh]h]h]uhjoOh]rcPhX/* 64kB L3 OCMC SRAM */rdPreP}rfP(hUhj]PubahjlubhX rgPrhP}riP(hX hjoOubjb)rjP}rkP(hXM3SHUMEMh}rlP(h]h]rmP(UnamernPUlabelroPeh]h]h]uhjoOh]rpPhXM3SHUMEMrqPrrP}rsP(hUhjjPubahjlubhX rtP}ruP(hX hjoOubjb)rvP}rwP(hX:h}rxP(h]h]ryPU punctuationrzPah]h]h]uhjoOh]r{PhX:r|P}r}P(hUhjvPubahjlubhX r~P}rP(hX hjoOubjb)rP}rP(hXoh}rP(h]h]rPUnamerPah]h]h]uhjoOh]rPhXorP}rP(hUhjPubahjlubhX rP}rP(hX hjoOubjb)rP}rP(hX=h}rP(h]h]rPUoperatorrPah]h]h]uhjoOh]rPhX=rP}rP(hUhjPubahjlubhX rP}rP(hX hjoOubjb)rP}rP(hX 0x44D00000h}rP(h]h]rP(UliteralrPUnumberrPUhexrPeh]h]h]uhjoOh]rPhX 0x44D00000rPrP}rP(hUhjPubahjlubjb)rP}rP(hX,h}rP(h]h]rPU punctuationrPah]h]h]uhjoOh]rPhX,rP}rP(hUhjPubahjlubhX rPrP}rP(hX hjoOubjb)rP}rP(hXlh}rP(h]h]rPUnamerPah]h]h]uhjoOh]rPhXlrP}rP(hUhjPubahjlubhX rP}rP(hX hjoOubjb)rP}rP(hX=h}rP(h]h]rPUoperatorrPah]h]h]uhjoOh]rPhX=rP}rP(hUhjPubahjlubhX rP}rP(hX hjoOubjb)rP}rP(hX 0x00004000h}rP(h]h]rP(UliteralrPUnumberrPUhexrPeh]h]h]uhjoOh]rPhX 0x00004000rPrP}rP(hUhjPubahjlubhX rPrP}rP(hX hjoOubjb)rP}rP(hX'/* 16kB M3 Shared Unified Code Space */h}rP(h]h]rP(UcommentrPU multilinerPeh]h]h]uhjoOh]rPhX'/* 16kB M3 Shared Unified Code Space */rPrP}rP(hUhjPubahjlubhX rPrP}rP(hX hjoOubjb)rP}rP(hXM3SHDMEMh}rP(h]h]rP(UnamerPUlabelrPeh]h]h]uhjoOh]rPhXM3SHDMEMrPrP}rP(hUhjPubahjlubhX rP}rP(hX hjoOubjb)rP}rP(hX:h}rP(h]h]rPU punctuationrPah]h]h]uhjoOh]rPhX:rP}rP(hUhjPubahjlubhX rP}rP(hX hjoOubjb)rP}rP(hXoh}rP(h]h]rPUnamerPah]h]h]uhjoOh]rPhXorP}rP(hUhjPubahjlubhX rP}rP(hX hjoOubjb)rP}rP(hX=h}rP(h]h]rPUoperatorrPah]h]h]uhjoOh]rPhX=rP}rQ(hUhjPubahjlubhX rQ}rQ(hX hjoOubjb)rQ}rQ(hX 0x44D80000h}rQ(h]h]rQ(UliteralrQUnumberrQUhexr Qeh]h]h]uhjoOh]r QhX 0x44D80000r Qr Q}r Q(hUhjQubahjlubjb)rQ}rQ(hX,h}rQ(h]h]rQU punctuationrQah]h]h]uhjoOh]rQhX,rQ}rQ(hUhjQubahjlubhX rQrQ}rQ(hX hjoOubjb)rQ}rQ(hXlh}rQ(h]h]rQUnamerQah]h]h]uhjoOh]rQhXlrQ}r Q(hUhjQubahjlubhX r!Q}r"Q(hX hjoOubjb)r#Q}r$Q(hX=h}r%Q(h]h]r&QUoperatorr'Qah]h]h]uhjoOh]r(QhX=r)Q}r*Q(hUhj#QubahjlubhX r+Q}r,Q(hX hjoOubjb)r-Q}r.Q(hX 0x00002000h}r/Q(h]h]r0Q(Uliteralr1QUnumberr2QUhexr3Qeh]h]h]uhjoOh]r4QhX 0x00002000r5Qr6Q}r7Q(hUhj-QubahjlubhX r8Qr9Q}r:Q(hX hjoOubjb)r;Q}rQ(Ucommentr?QU multiliner@Qeh]h]h]uhjoOh]rAQhX/* 8kB M3 Shared Data Memory */rBQrCQ}rDQ(hUhj;QubahjlubhX rEQrFQ}rGQ(hX hjoOubjb)rHQ}rIQ(hXDDR0h}rJQ(h]h]rKQ(UnamerLQUlabelrMQeh]h]h]uhjoOh]rNQhXDDR0rOQrPQ}rQQ(hUhjHQubahjlubhX rRQ}rSQ(hX hjoOubjb)rTQ}rUQ(hX:h}rVQ(h]h]rWQU punctuationrXQah]h]h]uhjoOh]rYQhX:rZQ}r[Q(hUhjTQubahjlubhX r\Qr]Q}r^Q(hX hjoOubjb)r_Q}r`Q(hXoh}raQ(h]h]rbQUnamercQah]h]h]uhjoOh]rdQhXoreQ}rfQ(hUhj_QubahjlubhX rgQ}rhQ(hX hjoOubjb)riQ}rjQ(hX=h}rkQ(h]h]rlQUoperatorrmQah]h]h]uhjoOh]rnQhX=roQ}rpQ(hUhjiQubahjlubhX rqQ}rrQ(hX hjoOubjb)rsQ}rtQ(hX 0x80000000h}ruQ(h]h]rvQ(UliteralrwQUnumberrxQUhexryQeh]h]h]uhjoOh]rzQhX 0x80000000r{Qr|Q}r}Q(hUhjsQubahjlubjb)r~Q}rQ(hX,h}rQ(h]h]rQU punctuationrQah]h]h]uhjoOh]rQhX,rQ}rQ(hUhj~QubahjlubhX rQrQ}rQ(hX hjoOubjb)rQ}rQ(hXlh}rQ(h]h]rQUnamerQah]h]h]uhjoOh]rQhXlrQ}rQ(hUhjQubahjlubhX rQ}rQ(hX hjoOubjb)rQ}rQ(hX=h}rQ(h]h]rQUoperatorrQah]h]h]uhjoOh]rQhX=rQ}rQ(hUhjQubahjlubhX rQ}rQ(hX hjoOubjb)rQ}rQ(hX 0x40000000h}rQ(h]h]rQ(UliteralrQUnumberrQUhexrQeh]h]h]uhjoOh]rQhX 0x40000000rQrQ}rQ(hUhjQubahjlubhX rQrQ}rQ(hX hjoOubjb)rQ}rQ(hX/* 1GB external DDR Bank 0 */h}rQ(h]h]rQ(UcommentrQU multilinerQeh]h]h]uhjoOh]rQhX/* 1GB external DDR Bank 0 */rQrQ}rQ(hUhjQubahjlubhX rQ}rQ(hX hjoOubjb)rQ}rQ(hX}h}rQ(h]h]rQU punctuationrQah]h]h]uhjoOh]rQhX}rQ}rQ(hUhjQubahjlubeubj;)rQ}rQ(hX
hjMhjOGhj;h}rQ(UformatXhtmljjh]h]h]h]h]uhMehhh]rQhX
rQrQ}rQ(hUhjQubaubj;)rQ}rQ(hX
hjMhjOGhj;h}rQ(UformatXhtmljjh]h]h]h]h]uhMihhh]rQhX
rQrQ}rQ(hUhjQubaubj))rQ}rQ(hX|An optional step is to modify the section definition in AM437x.lds file if you wish to introduce more sections or partition the existing sections. If you renamed the startup file from startup_ARMCA8.S to startup_ARMCA9.S in your project, then the linker command file needs to be updated as well for code section placement: from startup_ARMCA8.o (.text) to startup_ARMCA9.o (.text)hjMhjOGhj,h}rQ(h]h]h]h]h]uhNhhh]rQj/)rQ}rQ(hX|An optional step is to modify the section definition in AM437x.lds file if you wish to introduce more sections or partition the existing sections. If you renamed the startup file from startup_ARMCA8.S to startup_ARMCA9.S in your project, then the linker command file needs to be updated as well for code section placement: from startup_ARMCA8.o (.text) to startup_ARMCA9.o (.text)rQhjQhjOGhj3h}rQ(h]h]h]h]h]uhMnh]rQhX|An optional step is to modify the section definition in AM437x.lds file if you wish to introduce more sections or partition the existing sections. If you renamed the startup file from startup_ARMCA8.S to startup_ARMCA9.S in your project, then the linker command file needs to be updated as well for code section placement: from startup_ARMCA8.o (.text) to startup_ARMCA9.o (.text)rQrQ}rQ(hjQhjQubaubaubj)rQ}rQ(hUhjMhjOGhjh}rQ(jU.jf5Kh]h]h]jUh]h]jjuhMvhhh]rQjX)rQ}rQ(hX8Now build the project to generate hello_world.out file. hjQhjOGhj[h}rQ(h]h]h]h]h]uhNhhh]rQj/)rQ}rQ(hX7Now build the project to generate hello_world.out file.rQhjQhjOGhj3h}rQ(h]h]h]h]h]uhMvh]rQhX7Now build the project to generate hello_world.out file.rQrQ}rQ(hjQhjQubaubaubaubj/)rQ}rQ(hX8. Launch target configurations using your emulator to connect to AM335X EVM as described in the :ref:`Getting Started Guide `.hjMhjOGhj3h}rQ(h]h]h]h]h]uhMxhhh]rQ(hXa8. Launch target configurations using your emulator to connect to AM335X EVM as described in the rQrQ}rQ(hXa8. Launch target configurations using your emulator to connect to AM335X EVM as described in the hjQubjZ)rQ}rQ(hXM:ref:`Getting Started Guide `rQhjQhjOGhj^h}rQ(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrQh]h]U refexplicith]h]h]j j uhMxh]rQjb)rQ}rQ(hjQh}rQ(h]h]rQ(j jQXstd-refrQeh]h]h]uhjQh]rQhXGetting Started GuiderQrQ}rQ(hUhjQubahjlubaubhX.rQ}rR(hX.hjQubeubj/)rR}rR(hXv9. Right click CortexA9 and connect target. The on target functionality in the GEL will initialize the clocks and DDR.rRhjMhjOGhj3h}rR(h]h]h]h]h]uhM{hhh]rRhXv9. Right click CortexA9 and connect target. The on target functionality in the GEL will initialize the clocks and DDR.rRrR}rR(hjRhjRubaubj/)r R}r R(hXq10. Load and run hello_world_a9.out file. You should see **Hello World!** string displayed on CCS console window.hjMhjOGhj3h}r R(h]h]h]h]h]uhM~hhh]r R(hX910. Load and run hello_world_a9.out file. You should see r RrR}rR(hX910. Load and run hello_world_a9.out file. You should see hj RubjW)rR}rR(hX**Hello World!**h}rR(h]h]h]h]h]uhj Rh]rRhX Hello World!rRrR}rR(hUhjRubahj_ubhX( string displayed on CCS console window.rRrR}rR(hX( string displayed on CCS console window.hj Rubeubj)rR}rR(hX(.. Image:: ../images/Hello_world_a9.jpg hjMhjOGhjh}rR(UuriX!rtos/../images/Hello_world_a9.jpgrRh]h]h]h]j}rRU*jRsh]uhMhhh]ubj))rR}r R(hXkIf the example does not load correctly in the first attempt, reload and **ensure ARM core starts at main**.hjMhjOGhj,h}r!R(h]h]h]h]h]uhNhhh]r"Rj/)r#R}r$R(hXkIf the example does not load correctly in the first attempt, reload and **ensure ARM core starts at main**.hjRhjOGhj3h}r%R(h]h]h]h]h]uhMh]r&R(hXHIf the example does not load correctly in the first attempt, reload and r'Rr(R}r)R(hXHIf the example does not load correctly in the first attempt, reload and hj#RubjW)r*R}r+R(hX"**ensure ARM core starts at main**h}r,R(h]h]h]h]h]uhj#Rh]r-RhXensure ARM core starts at mainr.Rr/R}r0R(hUhj*Rubahj_ubhX.r1R}r2R(hX.hj#Rubeubaubeubh)r3R}r4R(hUjKhj=GhjOGhhh}r5R(h]r6Rj>ah]h]h]r7RUid49r8Rah]uhMhhh]r9R(h)r:R}r;R(hX ARM Cortex-A8rRhX ARM Cortex-A8r?Rr@R}rAR(hj CCS Project. hjBRhjOGhj[h}rTR(h]h]h]h]h]uhNhhh]rURj/)rVR}rWR(hX8Click on File menu option and select New--> CCS Project.rXRhjRRhjOGhj3h}rYR(h]h]h]h]h]uhMh]rZRhX8Click on File menu option and select New--> CCS Project.r[Rr\R}r]R(hjXRhjVRubaubaubeubj/)r^R}r_R(hX`3. Select Target as AM33xx -Cortex A8 and appropriate target Board setting as shown in the imager`Rhj3RhjOGhj3h}raR(h]h]h]h]h]uhMhhh]rbRhX`3. Select Target as AM33xx -Cortex A8 and appropriate target Board setting as shown in the imagercRrdR}reR(hj`Rhj^Rubaubj/)rfR}rgR(hX4. Select **Cortex A8** setting in the options below and provide name of the project as "hello_world_a8" and use default Advanced settings for the project. If the Default settings uses "TI ARM compiler 5.x.x" switch to **GNU Linaro 4.8.4** (or higher) tool chain for A8 and check the build **little** endian **ELF** binary for the A8 core. Click Finish after you are done to allow CCS to auto generate the project from the template **Basic Examples-> Hello World**.hj3RhjOGhj3h}rhR(h]h]h]h]h]uhMhhh]riR(hX 4. Select rjRrkR}rlR(hX 4. Select hjfRubjW)rmR}rnR(hX **Cortex A8**h}roR(h]h]h]h]h]uhjfRh]rpRhX Cortex A8rqRrrR}rsR(hUhjmRubahj_ubhX setting in the options below and provide name of the project as "hello_world_a8" and use default Advanced settings for the project. If the Default settings uses "TI ARM compiler 5.x.x" switch to rtRruR}rvR(hX setting in the options below and provide name of the project as "hello_world_a8" and use default Advanced settings for the project. If the Default settings uses "TI ARM compiler 5.x.x" switch to hjfRubjW)rwR}rxR(hX**GNU Linaro 4.8.4**h}ryR(h]h]h]h]h]uhjfRh]rzRhXGNU Linaro 4.8.4r{Rr|R}r}R(hUhjwRubahj_ubhX3 (or higher) tool chain for A8 and check the build r~RrR}rR(hX3 (or higher) tool chain for A8 and check the build hjfRubjW)rR}rR(hX **little**h}rR(h]h]h]h]h]uhjfRh]rRhXlittlerRrR}rR(hUhjRubahj_ubhX endian rRrR}rR(hX endian hjfRubjW)rR}rR(hX**ELF**h}rR(h]h]h]h]h]uhjfRh]rRhXELFrRrR}rR(hUhjRubahj_ubhXu binary for the A8 core. Click Finish after you are done to allow CCS to auto generate the project from the template rRrR}rR(hXu binary for the A8 core. Click Finish after you are done to allow CCS to auto generate the project from the template hjfRubjW)rR}rR(hX **Basic Examples-> Hello World**h}rR(h]h]h]h]h]uhjfRh]rRhXBasic Examples-> Hello WorldrRrR}rR(hUhjRubahj_ubhX.rR}rR(hX.hjfRubeubj)rR}rR(hX6.. Image:: ../images/Bare-Metal_A8_templateselect.jpg hj3RhjOGhjh}rR(UuriX/rtos/../images/Bare-Metal_A8_templateselect.jpgrRh]h]h]h]j}rRU*jRsh]uhMhhh]ubj/)rR}rR(hX5. The generated CCS project contains source file **hello.c**, ARM assembly code **startup_ARMCA8.S** and a linker command file **AM335x.lds**. Ensure the main.c file contains the following codehj3RhjOGhj3h}rR(h]h]h]h]h]uhMhhh]rR(hX25. The generated CCS project contains source file rRrR}rR(hX25. The generated CCS project contains source file hjRubjW)rR}rR(hX **hello.c**h}rR(h]h]h]h]h]uhjRh]rRhXhello.crRrR}rR(hUhjRubahj_ubhX, ARM assembly code rRrR}rR(hX, ARM assembly code hjRubjW)rR}rR(hX**startup_ARMCA8.S**h}rR(h]h]h]h]h]uhjRh]rRhXstartup_ARMCA8.SrRrR}rR(hUhjRubahj_ubhX and a linker command file rRrR}rR(hX and a linker command file hjRubjW)rR}rR(hX**AM335x.lds**h}rR(h]h]h]h]h]uhjRh]rRhX AM335x.ldsrRrR}rR(hUhjRubahj_ubhX4. Ensure the main.c file contains the following coderRrR}rR(hX4. Ensure the main.c file contains the following codehjRubeubj;)rR}rR(hX7
hj3RhjOGhj;h}rR(UformatXhtmljjh]h]h]h]h]uhMhhh]rRhX7
rRrR}rR(hUhjRubaubj;)rR}rR(hX
hj3RhjOGhj;h}rR(UformatXhtmljjh]h]h]h]h]uhMhhh]rRhX
rRrR}rR(hUhjRubaubj)rR}rR(hXi /* * hello.c */ #include int main(void) { printf("Hello_world\n"); return 0; }hj3RhjOGhjh}rR(jjh]h]h]h]rR(j;Xceh]uhMhhh]rR(hX rR}rR(hX hjRubjb)rR}rR(hX/* * hello.c */h}rR(h]h]rR(UcommentrRU multilinerReh]h]h]uhjRh]rRhX/* * hello.c */rRrR}rR(hUhjRubahjlubhX rRrR}rR(hX hjRubjb)rR}rR(hX#includeh}rR(h]h]rR(UcommentrRUpreprocrReh]h]h]uhjRh]rRhX#includerRrR}rR(hUhjRubahjlubhX rR}rR(hX hjRubjb)rR}rR(hX h}rR(h]h]rR(UcommentrRU preprocfilerReh]h]h]uhjRh]rRhX rRrR}rR(hUhjRubahjlubjb)rS}rS(hX h}rS(h]h]rS(UcommentrSUpreprocrSeh]h]h]uhjRh]rShX rS}rS(hUhjSubahjlubhX r Sr S}r S(hX hjRubjb)r S}r S(hXinth}rS(h]h]rS(UkeywordrSUtyperSeh]h]h]uhjRh]rShXintrSrS}rS(hUhj SubahjlubhX rS}rS(hX hjRubjb)rS}rS(hXmainh}rS(h]h]rS(UnamerSUfunctionrSeh]h]h]uhjRh]rShXmainrSr S}r!S(hUhjSubahjlubjb)r"S}r#S(hX(h}r$S(h]h]r%SU punctuationr&Sah]h]h]uhjRh]r'ShX(r(S}r)S(hUhj"Subahjlubjb)r*S}r+S(hXvoidh}r,S(h]h]r-S(Ukeywordr.SUtyper/Seh]h]h]uhjRh]r0ShXvoidr1Sr2S}r3S(hUhj*Subahjlubjb)r4S}r5S(hX)h}r6S(h]h]r7SU punctuationr8Sah]h]h]uhjRh]r9ShX)r:S}r;S(hUhj4SubahjlubhX rS}r?S(hX{h}r@S(h]h]rASU punctuationrBSah]h]h]uhjRh]rCShX{rDS}rES(hUhj>SubahjlubhX rFSrGS}rHS(hX hjRubjb)rIS}rJS(hXprintfh}rKS(h]h]rLSUnamerMSah]h]h]uhjRh]rNShXprintfrOSrPS}rQS(hUhjISubahjlubjb)rRS}rSS(hX(h}rTS(h]h]rUSU punctuationrVSah]h]h]uhjRh]rWShX(rXS}rYS(hUhjRSubahjlubjb)rZS}r[S(hX "Hello_worldh}r\S(h]h]r]S(Uliteralr^SUstringr_Seh]h]h]uhjRh]r`ShX "Hello_worldraSrbS}rcS(hUhjZSubahjlubjb)rdS}reS(hX\nh}rfS(h]h]rgS(UliteralrhSUstringriSUescaperjSeh]h]h]uhjRh]rkShX\nrlSrmS}rnS(hUhjdSubahjlubjb)roS}rpS(hX"h}rqS(h]h]rrS(UliteralrsSUstringrtSeh]h]h]uhjRh]ruShX"rvS}rwS(hUhjoSubahjlubjb)rxS}ryS(hX);h}rzS(h]h]r{SU punctuationr|Sah]h]h]uhjRh]r}ShX);r~SrS}rS(hUhjxSubahjlubhX rSrS}rS(hX hjRubjb)rS}rS(hXreturnh}rS(h]h]rSUkeywordrSah]h]h]uhjRh]rShXreturnrSrS}rS(hUhjSubahjlubhX rS}rS(hX hjRubjb)rS}rS(hX0h}rS(h]h]rS(UliteralrSUnumberrSUintegerrSeh]h]h]uhjRh]rShX0rS}rS(hUhjSubahjlubjb)rS}rS(hX;h}rS(h]h]rSU punctuationrSah]h]h]uhjRh]rShX;rS}rS(hUhjSubahjlubhX rS}rS(hX hjRubjb)rS}rS(hX}h}rS(h]h]rSU punctuationrSah]h]h]uhjRh]rShX}rS}rS(hUhjSubahjlubeubj;)rS}rS(hX
hj3RhjOGhj;h}rS(UformatXhtmljjh]h]h]h]h]uhMhhh]rShX
rSrS}rS(hUhjSubaubj;)rS}rS(hX
hj3RhjOGhj;h}rS(UformatXhtmljjh]h]h]h]h]uhMhhh]rShX
rSrS}rS(hUhjSubaubj)rS}rS(hUhj3RhjOGhjh}rS(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]rSjX)rS}rS(hXDEnsure that CCSv6 generates the linker command file **AM335x.lds**. hjShjOGhj[h}rS(h]h]h]h]h]uhNhhh]rSj/)rS}rS(hXCEnsure that CCSv6 generates the linker command file **AM335x.lds**.hjShjOGhj3h}rS(h]h]h]h]h]uhMh]rS(hX4Ensure that CCSv6 generates the linker command file rSrS}rS(hX4Ensure that CCSv6 generates the linker command file hjSubjW)rS}rS(hX**AM335x.lds**h}rS(h]h]h]h]h]uhjSh]rShX AM335x.ldsrSrS}rS(hUhjSubahj_ubhX.rS}rS(hX.hjSubeubaubaubj;)rS}rS(hX7
hj3RhjOGhj;h}rS(UformatXhtmljjh]h]h]h]h]uhMhhh]rShX7
rSrS}rS(hUhjSubaubj;)rS}rS(hX
hj3RhjOGhj;h}rS(UformatXhtmljjh]h]h]h]h]uhMhhh]rShX
rSrS}rS(hUhjSubaubj)rS}rS(hXMEMORY { SRAM : o = 0x402F0400, l = 0x0000FC00 /* 64kB internal SRAM */ L3OCMC0 : o = 0x40300000, l = 0x00010000 /* 64kB L3 OCMC SRAM */ M3SHUMEM : o = 0x44D00000, l = 0x00004000 /* 16kB M3 Shared Unified Code Space */ M3SHDMEM : o = 0x44D80000, l = 0x00002000 /* 8kB M3 Shared Data Memory */ DDR0 : o = 0x80000000, l = 0x40000000 /* 1GB external DDR Bank 0 */ }hj3RhjOGhjh}rS(jjh]h]h]h]rS(j;Xceh]uhMhhh]rS(jb)rS}rS(hXMEMORYh}rS(h]h]rSUnamerSah]h]h]uhjSh]rShXMEMORYrSrS}rS(hUhjSubahjlubhX rS}rS(hX hjSubjb)rS}rS(hX{h}rS(h]h]rSU punctuationrSah]h]h]uhjSh]rShX{rS}rS(hUhjSubahjlubhX rSrS}rS(hX hjSubjb)rS}rS(hXSRAMh}rS(h]h]rS(UnamerSUlabelrSeh]h]h]uhjSh]rThXSRAMrTrT}rT(hUhjSubahjlubhX rT}rT(hX hjSubjb)rT}rT(hX:h}rT(h]h]r TU punctuationr Tah]h]h]uhjSh]r ThX:r T}r T(hUhjTubahjlubhX rTrT}rT(hX hjSubjb)rT}rT(hXoh}rT(h]h]rTUnamerTah]h]h]uhjSh]rThXorT}rT(hUhjTubahjlubhX rT}rT(hX hjSubjb)rT}rT(hX=h}rT(h]h]rTUoperatorrTah]h]h]uhjSh]r ThX=r!T}r"T(hUhjTubahjlubhX r#T}r$T(hX hjSubjb)r%T}r&T(hX 0x402F0400h}r'T(h]h]r(T(Uliteralr)TUnumberr*TUhexr+Teh]h]h]uhjSh]r,ThX 0x402F0400r-Tr.T}r/T(hUhj%Tubahjlubjb)r0T}r1T(hX,h}r2T(h]h]r3TU punctuationr4Tah]h]h]uhjSh]r5ThX,r6T}r7T(hUhj0TubahjlubhX r8Tr9T}r:T(hX hjSubjb)r;T}rTUnamer?Tah]h]h]uhjSh]r@ThXlrAT}rBT(hUhj;TubahjlubhX rCT}rDT(hX hjSubjb)rET}rFT(hX=h}rGT(h]h]rHTUoperatorrITah]h]h]uhjSh]rJThX=rKT}rLT(hUhjETubahjlubhX rMT}rNT(hX hjSubjb)rOT}rPT(hX 0x0000FC00h}rQT(h]h]rRT(UliteralrSTUnumberrTTUhexrUTeh]h]h]uhjSh]rVThX 0x0000FC00rWTrXT}rYT(hUhjOTubahjlubhX rZTr[T}r\T(hX hjSubjb)r]T}r^T(hX/* 64kB internal SRAM */h}r_T(h]h]r`T(UcommentraTU multilinerbTeh]h]h]uhjSh]rcThX/* 64kB internal SRAM */rdTreT}rfT(hUhj]TubahjlubhX rgTrhT}riT(hX hjSubjb)rjT}rkT(hXL3OCMC0h}rlT(h]h]rmT(UnamernTUlabelroTeh]h]h]uhjSh]rpThXL3OCMC0rqTrrT}rsT(hUhjjTubahjlubhX rtT}ruT(hX hjSubjb)rvT}rwT(hX:h}rxT(h]h]ryTU punctuationrzTah]h]h]uhjSh]r{ThX:r|T}r}T(hUhjvTubahjlubhX r~TrT}rT(hX hjSubjb)rT}rT(hXoh}rT(h]h]rTUnamerTah]h]h]uhjSh]rThXorT}rT(hUhjTubahjlubhX rT}rT(hX hjSubjb)rT}rT(hX=h}rT(h]h]rTUoperatorrTah]h]h]uhjSh]rThX=rT}rT(hUhjTubahjlubhX rT}rT(hX hjSubjb)rT}rT(hX 0x40300000h}rT(h]h]rT(UliteralrTUnumberrTUhexrTeh]h]h]uhjSh]rThX 0x40300000rTrT}rT(hUhjTubahjlubjb)rT}rT(hX,h}rT(h]h]rTU punctuationrTah]h]h]uhjSh]rThX,rT}rT(hUhjTubahjlubhX rTrT}rT(hX hjSubjb)rT}rT(hXlh}rT(h]h]rTUnamerTah]h]h]uhjSh]rThXlrT}rT(hUhjTubahjlubhX rT}rT(hX hjSubjb)rT}rT(hX=h}rT(h]h]rTUoperatorrTah]h]h]uhjSh]rThX=rT}rT(hUhjTubahjlubhX rT}rT(hX hjSubjb)rT}rT(hX 0x00010000h}rT(h]h]rT(UliteralrTUnumberrTUhexrTeh]h]h]uhjSh]rThX 0x00010000rTrT}rT(hUhjTubahjlubhX rTrT}rT(hX hjSubjb)rT}rT(hX/* 64kB L3 OCMC SRAM */h}rT(h]h]rT(UcommentrTU multilinerTeh]h]h]uhjSh]rThX/* 64kB L3 OCMC SRAM */rTrT}rT(hUhjTubahjlubhX rTrT}rT(hX hjSubjb)rT}rT(hXM3SHUMEMh}rT(h]h]rT(UnamerTUlabelrTeh]h]h]uhjSh]rThXM3SHUMEMrTrT}rT(hUhjTubahjlubhX rT}rT(hX hjSubjb)rT}rT(hX:h}rT(h]h]rTU punctuationrTah]h]h]uhjSh]rThX:rT}rT(hUhjTubahjlubhX rT}rT(hX hjSubjb)rT}rT(hXoh}rT(h]h]rTUnamerTah]h]h]uhjSh]rThXorT}rT(hUhjTubahjlubhX rT}rT(hX hjSubjb)rT}rT(hX=h}rT(h]h]rTUoperatorrTah]h]h]uhjSh]rThX=rU}rU(hUhjTubahjlubhX rU}rU(hX hjSubjb)rU}rU(hX 0x44D00000h}rU(h]h]rU(UliteralrUUnumberr UUhexr Ueh]h]h]uhjSh]r UhX 0x44D00000r Ur U}rU(hUhjUubahjlubjb)rU}rU(hX,h}rU(h]h]rUU punctuationrUah]h]h]uhjSh]rUhX,rU}rU(hUhjUubahjlubhX rUrU}rU(hX hjSubjb)rU}rU(hXlh}rU(h]h]rUUnamerUah]h]h]uhjSh]rUhXlr U}r!U(hUhjUubahjlubhX r"U}r#U(hX hjSubjb)r$U}r%U(hX=h}r&U(h]h]r'UUoperatorr(Uah]h]h]uhjSh]r)UhX=r*U}r+U(hUhj$UubahjlubhX r,U}r-U(hX hjSubjb)r.U}r/U(hX 0x00004000h}r0U(h]h]r1U(Uliteralr2UUnumberr3UUhexr4Ueh]h]h]uhjSh]r5UhX 0x00004000r6Ur7U}r8U(hUhj.UubahjlubhX r9Ur:U}r;U(hX hjSubjb)rU(h]h]r?U(Ucommentr@UU multilinerAUeh]h]h]uhjSh]rBUhX'/* 16kB M3 Shared Unified Code Space */rCUrDU}rEU(hUhjhj3RhjOGhj;h}r1V(UformatXhtmljjh]h]h]h]h]uhMhhh]r2VhX
r3Vr4V}r5V(hUhj/Vubaubj;)r6V}r7V(hX
hj3RhjOGhj;h}r8V(UformatXhtmljjh]h]h]h]h]uhMhhh]r9VhX
r:Vr;V}rV(hXAn optional step is to modify the section definition in AM335x.lds file if you wish to introduce more sections or partition the existing sections.hj3RhjOGhj,h}r?V(h]h]h]h]h]uhNhhh]r@Vj/)rAV}rBV(hXAn optional step is to modify the section definition in AM335x.lds file if you wish to introduce more sections or partition the existing sections.rCVhj=VhjOGhj3h}rDV(h]h]h]h]h]uhMh]rEVhXAn optional step is to modify the section definition in AM335x.lds file if you wish to introduce more sections or partition the existing sections.rFVrGV}rHV(hjCVhjAVubaubaubj)rIV}rJV(hUhj3RhjOGhjh}rKV(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]rLVjX)rMV}rNV(hX;Now build the project to generate hello_world_a8.out file. hjIVhjOGhj[h}rOV(h]h]h]h]h]uhNhhh]rPVj/)rQV}rRV(hX:Now build the project to generate hello_world_a8.out file.rSVhjMVhjOGhj3h}rTV(h]h]h]h]h]uhMh]rUVhX:Now build the project to generate hello_world_a8.out file.rVVrWV}rXV(hjSVhjQVubaubaubaubj/)rYV}rZV(hX8. Launch target configurations using your emulator to connect to AM335X EVM as described in the :ref:`Getting Started Guide `.hj3RhjOGhj3h}r[V(h]h]h]h]h]uhMhhh]r\V(hXa8. Launch target configurations using your emulator to connect to AM335X EVM as described in the r]Vr^V}r_V(hXa8. Launch target configurations using your emulator to connect to AM335X EVM as described in the hjYVubjZ)r`V}raV(hXM:ref:`Getting Started Guide `rbVhjYVhjOGhj^h}rcV(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrdVh]h]U refexplicith]h]h]j j uhMh]reVjb)rfV}rgV(hjbVh}rhV(h]h]riV(j jdVXstd-refrjVeh]h]h]uhj`Vh]rkVhXGetting Started GuiderlVrmV}rnV(hUhjfVubahjlubaubhX.roV}rpV(hX.hjYVubeubj/)rqV}rrV(hX}9. Right click CortexA8 and select connect target. The on target functionality in the GEL will initialize the clocks and DDR.rsVhj3RhjOGhj3h}rtV(h]h]h]h]h]uhMhhh]ruVhX}9. Right click CortexA8 and select connect target. The on target functionality in the GEL will initialize the clocks and DDR.rvVrwV}rxV(hjsVhjqVubaubj/)ryV}rzV(hXq10. Load and run hello_world_a8.out file. You should see **Hello World!** string displayed on CCS console window.hj3RhjOGhj3h}r{V(h]h]h]h]h]uhMhhh]r|V(hX910. Load and run hello_world_a8.out file. You should see r}Vr~V}rV(hX910. Load and run hello_world_a8.out file. You should see hjyVubjW)rV}rV(hX**Hello World!**h}rV(h]h]h]h]h]uhjyVh]rVhX Hello World!rVrV}rV(hUhjVubahj_ubhX( string displayed on CCS console window.rVrV}rV(hX( string displayed on CCS console window.hjyVubeubj)rV}rV(hX(.. Image:: ../images/Hello_world_a8.jpg hj3RhjOGhjh}rV(UuriX!rtos/../images/Hello_world_a8.jpgrVh]h]h]h]j}rVU*jVsh]uhMhhh]ubj))rV}rV(hXkIf the example does not load correctly in the first attempt, reload and **ensure ARM core starts at main**.hj3RhjOGhj,h}rV(h]h]h]h]h]uhNhhh]rVj/)rV}rV(hXkIf the example does not load correctly in the first attempt, reload and **ensure ARM core starts at main**.hjVhjOGhj3h}rV(h]h]h]h]h]uhMh]rV(hXHIf the example does not load correctly in the first attempt, reload and rVrV}rV(hXHIf the example does not load correctly in the first attempt, reload and hjVubjW)rV}rV(hX"**ensure ARM core starts at main**h}rV(h]h]h]h]h]uhjVh]rVhXensure ARM core starts at mainrVrV}rV(hUhjVubahj_ubhX.rV}rV(hX.hjVubeubaubj)rV}rV(hUhj3RhjOGhjh}rV(h]h]h]h]h]uhMhhh]rVj)rV}rV(hUjKhjVhjOGhhh}rV(h]h]h]h]h]uhKhhh]ubaubeubh)rV}rV(hUjKhj=GhjOGhhh}rV(h]rVjb@ah]h]h]rVUid50rVah]uhMhhh]rV(h)rV}rV(hX ARM Cortex-R5rVhjVhjOGhhh}rV(h]h]h]h]h]uhMhhh]rVhX ARM Cortex-R5rVrV}rV(hjVhjVubaubj/)rV}rV(hXIn this article, we take a look at creating bare-metal hello world examples for the Cortex-R5 core in CCS. We will be using the AM654x device as an example.rVhjVhjOGhj3h}rV(h]h]h]h]h]uhMhhh]rVhXIn this article, we take a look at creating bare-metal hello world examples for the Cortex-R5 core in CCS. We will be using the AM654x device as an example.rVrV}rV(hjVhjVubaubj))rV}rV(hXvFor future Device Support Package releases, the Hello World examples will be added to CCS as an out-of-box experience.rVhjVhjOGhj,h}rV(h]h]h]h]h]uhNhhh]rVj/)rV}rV(hjVhjVhjOGhj3h}rV(h]h]h]h]h]uhMh]rVhXvFor future Device Support Package releases, the Hello World examples will be added to CCS as an out-of-box experience.rVrV}rV(hjVhjVubaubaubj/)rV}rV(hX?1. Start CCS and create a workspace for generating the project.rVhjVhjOGhj3h}rV(h]h]h]h]h]uhMhhh]rVhX?1. Start CCS and create a workspace for generating the project.rVrV}rV(hjVhjVubaubj/)rV}rV(hX*2. Navigate to File -> New -> CCS Project.rVhjVhjOGhj3h}rV(h]h]h]h]h]uhMhhh]rVhX*2. Navigate to File -> New -> CCS Project.rVrV}rV(hjVhjVubaubj/)rV}rV(hXR3. Select Target as AM65x - Cortex R5 and GPEVM_AM65x as shown in the image below.rVhjVhjOGhj3h}rV(h]h]h]h]h]uhMhhh]rVhXR3. Select Target as AM65x - Cortex R5 and GPEVM_AM65x as shown in the image below.rVrV}rV(hjVhjVubaubj/)rV}rV(hX;4. Select the **Cortex R** tab and provide a name for the project. Select **TI v16.9.4.LTS** (or higher) for the Compiler Version. Under Tool-chain, set the Device Endianness to **little**, and for the Linker Command file, select **linker_r5.lds** located in the folder (PDK INSTALL PATH)/packages/ti/build/am65xx/.hjVhjOGhj3h}rV(h]h]h]h]h]uhMhhh]rV(hX4. Select the rVrV}rV(hX4. Select the hjVubjW)rV}rV(hX **Cortex R**h}rV(h]h]h]h]h]uhjVh]rVhXCortex RrVrV}rV(hUhjVubahj_ubhX0 tab and provide a name for the project. Select rVrV}rV(hX0 tab and provide a name for the project. Select hjVubjW)rV}rV(hX**TI v16.9.4.LTS**h}rV(h]h]h]h]h]uhjVh]rVhXTI v16.9.4.LTSrVrV}rV(hUhjVubahj_ubhXV (or higher) for the Compiler Version. Under Tool-chain, set the Device Endianness to rVrV}rV(hXV (or higher) for the Compiler Version. Under Tool-chain, set the Device Endianness to hjVubjW)rW}rW(hX **little**h}rW(h]h]h]h]h]uhjVh]rWhXlittlerWrW}rW(hUhjWubahj_ubhX*, and for the Linker Command file, select rWrW}r W(hX*, and for the Linker Command file, select hjVubjW)r W}r W(hX**linker_r5.lds**h}r W(h]h]h]h]h]uhjVh]r WhX linker_r5.ldsrWrW}rW(hUhj Wubahj_ubhXD located in the folder (PDK INSTALL PATH)/packages/ti/build/am65xx/.rWrW}rW(hXD located in the folder (PDK INSTALL PATH)/packages/ti/build/am65xx/.hjVubeubj))rW}rW(hXGPlease refer to the Release Notes for the recommended Compiler version.rWhjVhjOGhj,h}rW(h]h]h]h]h]uhNhhh]rWj/)rW}rW(hjWhjWhjOGhj3h}rW(h]h]h]h]h]uhMh]rWhXGPlease refer to the Release Notes for the recommended Compiler version.rWrW}rW(hjWhjWubaubaubj/)r W}r!W(hXNUnder Project templates and examples, select **Basic Examples -> Hello World**r"WhjVhjOGhj3h}r#W(h]h]h]h]h]uhMhhh]r$W(hX-Under Project templates and examples, select r%Wr&W}r'W(hX-Under Project templates and examples, select hj WubjW)r(W}r)W(hX!**Basic Examples -> Hello World**h}r*W(h]h]h]h]h]uhj Wh]r+WhXBasic Examples -> Hello Worldr,Wr-W}r.W(hUhj(Wubahj_ubeubj/)r/W}r0W(hX\Click Finish after you are done to allow CCS to auto generate the project from the template.r1WhjVhjOGhj3h}r2W(h]h]h]h]h]uhM hhh]r3WhX\Click Finish after you are done to allow CCS to auto generate the project from the template.r4Wr5W}r6W(hj1Whj/Wubaubj)r7W}r8W(hX5.. Image:: ../images/AM65x_Create_CCS_Project_R5.png hjVhjOGhjh}r9W(UuriX.rtos/../images/AM65x_Create_CCS_Project_R5.pngr:Wh]h]h]h]j}r;WU*j:Wsh]uhM hhh]ubj/)rW(h]h]h]h]h]uhMhhh]r?W(hX25. The generated CCS project contains source file r@WrAW}rBW(hX25. The generated CCS project contains source file hj ARM Linker -> File Search Path and add the following libraries. ::hjVhjOGhj3h}rXW(h]h]h]h]h]uhMhhh]rYWhX[6. Navigate to CCS Build -> ARM Linker -> File Search Path and add the following libraries.rZWr[W}r\W(hX[6. Navigate to CCS Build -> ARM Linker -> File Search Path and add the following libraries.hjVWubaubj)r]W}r^W(hX%ti.csl.aer5f ti.csl.init.aer5f libc.ahjVhjOGhjh}r_W(jjh]h]h]h]h]uhM7hhh]r`WhX%ti.csl.aer5f ti.csl.init.aer5f libc.araWrbW}rcW(hUhj]Wubaubj/)rdW}reW(hX,7. Add the following library search path. ::hjVhjOGhj3h}rfW(h]h]h]h]h]uhMhhh]rgWhX)7. Add the following library search path.rhWriW}rjW(hX)7. Add the following library search path.hjdWubaubj)rkW}rlW(hX0(PDK INSTALL PATH)/ti/csl/lib/am65xx/r5f/releasehjVhjOGhjh}rmW(jjh]h]h]h]h]uhM?hhh]rnWhX0(PDK INSTALL PATH)/ti/csl/lib/am65xx/r5f/releaseroWrpW}rqW(hUhjkWubaubj/)rrW}rsW(hX8. Save all changes, and right click on the project and select Build Project to build the project and generate hello_world.out.rtWhjVhjOGhj3h}ruW(h]h]h]h]h]uhM hhh]rvWhX8. Save all changes, and right click on the project and select Build Project to build the project and generate hello_world.out.rwWrxW}ryW(hjtWhjrWubaubj/)rzW}r{W(hX9. Launch the target configuration using your emulator to connect to the AM65x EVM as described in the :ref:`Processor-SDK-RTOS-Getting-Started-Guide-label`.hjVhjOGhj3h}r|W(h]h]h]h]h]uhM#hhh]r}W(hXg9. Launch the target configuration using your emulator to connect to the AM65x EVM as described in the r~WrW}rW(hXg9. Launch the target configuration using your emulator to connect to the AM65x EVM as described in the hjzWubjZ)rW}rW(hX5:ref:`Processor-SDK-RTOS-Getting-Started-Guide-label`rWhjzWhjOGhj^h}rW(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrWh]h]U refexplicith]h]h]j j uhM#h]rWjb)rW}rW(hjWh}rW(h]h]rW(j jWXstd-refrWeh]h]h]uhjWh]rWhX.Processor-SDK-RTOS-Getting-Started-Guide-labelrWrW}rW(hUhjWubahjlubaubhX.rW}rW(hX.hjzWubeubj/)rW}rW(hX10. Right click on **DMSC_Cortex_M3_0** and click connect to target. After connecting to the M3, right click on **MCU_PULSAR_Cortex_R5_0** and connect to it.hjVhjOGhj3h}rW(h]h]h]h]h]uhM&hhh]rW(hX10. Right click on rWrW}rW(hX10. Right click on hjWubjW)rW}rW(hX**DMSC_Cortex_M3_0**h}rW(h]h]h]h]h]uhjWh]rWhXDMSC_Cortex_M3_0rWrW}rW(hUhjWubahj_ubhXI and click connect to target. After connecting to the M3, right click on rWrW}rW(hXI and click connect to target. After connecting to the M3, right click on hjWubjW)rW}rW(hX**MCU_PULSAR_Cortex_R5_0**h}rW(h]h]h]h]h]uhjWh]rWhXMCU_PULSAR_Cortex_R5_0rWrW}rW(hUhjWubahj_ubhX and connect to it.rWrW}rW(hX and connect to it.hjWubeubj/)rW}rW(hX11. Load and run hello_world.out example file on the Cortex-R5. You should see a Hello_world string displayed in the CCS console window.rWhjVhjOGhj3h}rW(h]h]h]h]h]uhM)hhh]rWhX11. Load and run hello_world.out example file on the Cortex-R5. You should see a Hello_world string displayed in the CCS console window.rWrW}rW(hjWhjWubaubj)rW}rW(hX2.. Image:: ../images/AM65x_CCS_Hello_World_R5.PNG hjVhjOGhjh}rW(UuriX+rtos/../images/AM65x_CCS_Hello_World_R5.PNGrWh]h]h]h]j}rWU*jWsh]uhM-hhh]ubj)rW}rW(hUhjVhjOGhjh}rW(h]h]h]h]h]uhM.hhh]rWj)rW}rW(hUjKhjWhjOGhhh}rW(h]h]h]h]h]uhKhhh]ubaubeubh)rW}rW(hUjKhj=GhjOGhhh}rW(h]rWj@ah]h]h]rWUid51rWah]uhM1hhh]rW(h)rW}rW(hX ARM Cortex-M4rWhjWhjOGhhh}rW(h]h]h]h]h]uhM1hhh]rWhX ARM Cortex-M4rWrW}rW(hjWhjWubaubj)rW}rW(hUhjWhjOGhjh}rW(jU.h]h]h]jUh]h]jjuhM3hhh]rW(jX)rW}rW(hX@Start CCSv6 and create a work space for generating the project. hjWhjOGhj[h}rW(h]h]h]h]h]uhNhhh]rWj/)rW}rW(hX?Start CCSv6 and create a work space for generating the project.rWhjWhjOGhj3h}rW(h]h]h]h]h]uhM3h]rWhX?Start CCSv6 and create a work space for generating the project.rWrW}rW(hjWhjWubaubaubjX)rW}rW(hX9Click on File menu option and select New--> CCS Project. hjWhjOGhj[h}rW(h]h]h]h]h]uhNhhh]rWj/)rW}rW(hX8Click on File menu option and select New--> CCS Project.rWhjWhjOGhj3h}rW(h]h]h]h]h]uhM5h]rWhX8Click on File menu option and select New--> CCS Project.rWrW}rW(hjWhjWubaubaubeubj/)rW}rW(hXL3. Select Target as AM572x -Cortex M4 and GPEVM_AM572x as shown in the imagerWhjWhjOGhj3h}rW(h]h]h]h]h]uhM7hhh]rWhXL3. Select Target as AM572x -Cortex M4 and GPEVM_AM572x as shown in the imagerWrW}rW(hjWhjWubaubj/)rW}rW(hX4. Select **Cortex M** setting in the options below and provide name of the project as "hello_world_m4" and use default Advanced settings for the project. Click Finish after you are done to allow CCS to auto generate the project from the template **Basic Examples-> Hello World**. The Default settings uses "TI ARM compiler 5.x.x" tool chain for cortex M4 and sets the build for **little** endian **ELF** binary for the M4 core.hjWhjOGhj3h}rW(h]h]h]h]h]uhM:hhh]rW(hX 4. Select rWrW}rW(hX 4. Select hjWubjW)rW}rW(hX **Cortex M**h}rW(h]h]h]h]h]uhjWh]rWhXCortex MrWrX}rX(hUhjWubahj_ubhX setting in the options below and provide name of the project as "hello_world_m4" and use default Advanced settings for the project. Click Finish after you are done to allow CCS to auto generate the project from the template rXrX}rX(hX setting in the options below and provide name of the project as "hello_world_m4" and use default Advanced settings for the project. Click Finish after you are done to allow CCS to auto generate the project from the template hjWubjW)rX}rX(hX **Basic Examples-> Hello World**h}rX(h]h]h]h]h]uhjWh]rXhXBasic Examples-> Hello Worldr Xr X}r X(hUhjXubahj_ubhXd. The Default settings uses "TI ARM compiler 5.x.x" tool chain for cortex M4 and sets the build for r Xr X}rX(hXd. The Default settings uses "TI ARM compiler 5.x.x" tool chain for cortex M4 and sets the build for hjWubjW)rX}rX(hX **little**h}rX(h]h]h]h]h]uhjWh]rXhXlittlerXrX}rX(hUhjXubahj_ubhX endian rXrX}rX(hX endian hjWubjW)rX}rX(hX**ELF**h}rX(h]h]h]h]h]uhjWh]rXhXELFrXrX}rX(hUhjXubahj_ubhX binary for the M4 core.r Xr!X}r"X(hX binary for the M4 core.hjWubeubj)r#X}r$X(hX6.. Image:: ../images/Bare-Metal_M4_templateselect.jpg hjWhjOGhjh}r%X(UuriX/rtos/../images/Bare-Metal_M4_templateselect.jpgr&Xh]h]h]h]j}r'XU*j&Xsh]uhMChhh]ubj/)r(X}r)X(hXz5. The generated CCS project contains only one source file **hello.c**. Ensure the main.c file contains the following codehjWhjOGhj3h}r*X(h]h]h]h]h]uhMDhhh]r+X(hX;5. The generated CCS project contains only one source file r,Xr-X}r.X(hX;5. The generated CCS project contains only one source file hj(XubjW)r/X}r0X(hX **hello.c**h}r1X(h]h]h]h]h]uhj(Xh]r2XhXhello.cr3Xr4X}r5X(hUhj/Xubahj_ubhX4. Ensure the main.c file contains the following coder6Xr7X}r8X(hX4. Ensure the main.c file contains the following codehj(Xubeubj;)r9X}r:X(hX7
hjWhjOGhj;h}r;X(UformatXhtmljjh]h]h]h]h]uhMGhhh]rr=Xr>X}r?X(hUhj9Xubaubj;)r@X}rAX(hX
hjWhjOGhj;h}rBX(UformatXhtmljjh]h]h]h]h]uhMKhhh]rCXhX
rDXrEX}rFX(hUhj@Xubaubj)rGX}rHX(hXi /* * hello.c */ #include int main(void) { printf("Hello_world\n"); return 0; }hjWhjOGhjh}rIX(jjh]h]h]h]rJX(j;Xceh]uhM[hhh]rKX(hX rLX}rMX(hX hjGXubjb)rNX}rOX(hX/* * hello.c */h}rPX(h]h]rQX(UcommentrRXU multilinerSXeh]h]h]uhjGXh]rTXhX/* * hello.c */rUXrVX}rWX(hUhjNXubahjlubhX rXXrYX}rZX(hX hjGXubjb)r[X}r\X(hX#includeh}r]X(h]h]r^X(Ucommentr_XUpreprocr`Xeh]h]h]uhjGXh]raXhX#includerbXrcX}rdX(hUhj[XubahjlubhX reX}rfX(hX hjGXubjb)rgX}rhX(hX h}riX(h]h]rjX(UcommentrkXU preprocfilerlXeh]h]h]uhjGXh]rmXhX rnXroX}rpX(hUhjgXubahjlubjb)rqX}rrX(hX h}rsX(h]h]rtX(UcommentruXUpreprocrvXeh]h]h]uhjGXh]rwXhX rxX}ryX(hUhjqXubahjlubhX rzXr{X}r|X(hX hjGXubjb)r}X}r~X(hXinth}rX(h]h]rX(UkeywordrXUtyperXeh]h]h]uhjGXh]rXhXintrXrX}rX(hUhj}XubahjlubhX rX}rX(hX hjGXubjb)rX}rX(hXmainh}rX(h]h]rX(UnamerXUfunctionrXeh]h]h]uhjGXh]rXhXmainrXrX}rX(hUhjXubahjlubjb)rX}rX(hX(h}rX(h]h]rXU punctuationrXah]h]h]uhjGXh]rXhX(rX}rX(hUhjXubahjlubjb)rX}rX(hXvoidh}rX(h]h]rX(UkeywordrXUtyperXeh]h]h]uhjGXh]rXhXvoidrXrX}rX(hUhjXubahjlubjb)rX}rX(hX)h}rX(h]h]rXU punctuationrXah]h]h]uhjGXh]rXhX)rX}rX(hUhjXubahjlubhX rX}rX(hX hjGXubjb)rX}rX(hX{h}rX(h]h]rXU punctuationrXah]h]h]uhjGXh]rXhX{rX}rX(hUhjXubahjlubhX rXrX}rX(hX hjGXubjb)rX}rX(hXprintfh}rX(h]h]rXUnamerXah]h]h]uhjGXh]rXhXprintfrXrX}rX(hUhjXubahjlubjb)rX}rX(hX(h}rX(h]h]rXU punctuationrXah]h]h]uhjGXh]rXhX(rX}rX(hUhjXubahjlubjb)rX}rX(hX "Hello_worldh}rX(h]h]rX(UliteralrXUstringrXeh]h]h]uhjGXh]rXhX "Hello_worldrXrX}rX(hUhjXubahjlubjb)rX}rX(hX\nh}rX(h]h]rX(UliteralrXUstringrXUescaperXeh]h]h]uhjGXh]rXhX\nrXrX}rX(hUhjXubahjlubjb)rX}rX(hX"h}rX(h]h]rX(UliteralrXUstringrXeh]h]h]uhjGXh]rXhX"rX}rX(hUhjXubahjlubjb)rX}rX(hX);h}rX(h]h]rXU punctuationrXah]h]h]uhjGXh]rXhX);rXrX}rX(hUhjXubahjlubhX rXrX}rX(hX hjGXubjb)rX}rX(hXreturnh}rX(h]h]rXUkeywordrXah]h]h]uhjGXh]rXhXreturnrXrX}rX(hUhjXubahjlubhX rX}rX(hX hjGXubjb)rY}rY(hX0h}rY(h]h]rY(UliteralrYUnumberrYUintegerrYeh]h]h]uhjGXh]rYhX0rY}r Y(hUhjYubahjlubjb)r Y}r Y(hX;h}r Y(h]h]r YU punctuationrYah]h]h]uhjGXh]rYhX;rY}rY(hUhj YubahjlubhX rY}rY(hX hjGXubjb)rY}rY(hX}h}rY(h]h]rYU punctuationrYah]h]h]uhjGXh]rYhX}rY}rY(hUhjYubahjlubeubj;)rY}rY(hX
hjWhjOGhj;h}rY(UformatXhtmljjh]h]h]h]h]uhM\hhh]rYhX
r Yr!Y}r"Y(hUhjYubaubj;)r#Y}r$Y(hX
hjWhjOGhj;h}r%Y(UformatXhtmljjh]h]h]h]h]uhM`hhh]r&YhX
r'Yr(Y}r)Y(hUhj#Yubaubj/)r*Y}r+Y(hX6. CCSv6 includes a default linker command file(AM57xx_CM4.cmd) for the M4 (IPU) core which will place code into appropriate device memory. The linker command file has the following memory sections.r,YhjWhjOGhj3h}r-Y(h]h]h]h]h]uhMdhhh]r.YhX6. CCSv6 includes a default linker command file(AM57xx_CM4.cmd) for the M4 (IPU) core which will place code into appropriate device memory. The linker command file has the following memory sections.r/Yr0Y}r1Y(hj,Yhj*Yubaubj;)r2Y}r3Y(hX7
hjWhjOGhj;h}r4Y(UformatXhtmljjh]h]h]h]h]uhMhhhh]r5YhX7
r6Yr7Y}r8Y(hUhj2Yubaubj;)r9Y}r:Y(hX
hjWhjOGhj;h}r;Y(UformatXhtmljjh]h]h]h]h]uhMlhhh]rr=Yr>Y}r?Y(hUhj9Yubaubj)r@Y}rAY(hXuMEMORY { IRAM: o = 0x00000000 l = 0x00001000 /* 4kB internal SRAM */ OCMC_RAM1: o = 0x40300000 l = 0x00080000 /* 512kB L3 OCMC SRAM1 */ OCMC_RAM2: o = 0x40400000 l = 0x00100000 /* 1MB L3 OCMC SRAM2 */ OCMC_RAM3: o = 0x40500000 l = 0x00100000 /* 1MB L3 OCMC SRAM3 */ DDR0: o = 0x80000000 l = 0x40000000 /* 1GB external DDR Bank 0 */ }hjWhjOGhjh}rBY(jjh]h]h]h]rCY(j;Xceh]uhMzhhh]rDY(jb)rEY}rFY(hXMEMORYh}rGY(h]h]rHYUnamerIYah]h]h]uhj@Yh]rJYhXMEMORYrKYrLY}rMY(hUhjEYubahjlubhX rNY}rOY(hX hj@Yubjb)rPY}rQY(hX{h}rRY(h]h]rSYU punctuationrTYah]h]h]uhj@Yh]rUYhX{rVY}rWY(hUhjPYubahjlubhX rXYrYY}rZY(hX hj@Yubjb)r[Y}r\Y(hXIRAMh}r]Y(h]h]r^Y(Unamer_YUlabelr`Yeh]h]h]uhj@Yh]raYhXIRAMrbYrcY}rdY(hUhj[Yubahjlubjb)reY}rfY(hX:h}rgY(h]h]rhYU punctuationriYah]h]h]uhj@Yh]rjYhX:rkY}rlY(hUhjeYubahjlubhX rmYrnY}roY(hX hj@Yubjb)rpY}rqY(hXoh}rrY(h]h]rsYUnamertYah]h]h]uhj@Yh]ruYhXorvY}rwY(hUhjpYubahjlubhX rxY}ryY(hX hj@Yubjb)rzY}r{Y(hX=h}r|Y(h]h]r}YUoperatorr~Yah]h]h]uhj@Yh]rYhX=rY}rY(hUhjzYubahjlubhX rY}rY(hX hj@Yubjb)rY}rY(hX 0x00000000h}rY(h]h]rY(UliteralrYUnumberrYUhexrYeh]h]h]uhj@Yh]rYhX 0x00000000rYrY}rY(hUhjYubahjlubhX rY}rY(hX hj@Yubjb)rY}rY(hXlh}rY(h]h]rYUnamerYah]h]h]uhj@Yh]rYhXlrY}rY(hUhjYubahjlubhX rY}rY(hX hj@Yubjb)rY}rY(hX=h}rY(h]h]rYUoperatorrYah]h]h]uhj@Yh]rYhX=rY}rY(hUhjYubahjlubhX rY}rY(hX hj@Yubjb)rY}rY(hX 0x00001000h}rY(h]h]rY(UliteralrYUnumberrYUhexrYeh]h]h]uhj@Yh]rYhX 0x00001000rYrY}rY(hUhjYubahjlubhX rYrY}rY(hX hj@Yubjb)rY}rY(hX/* 4kB internal SRAM */h}rY(h]h]rY(UcommentrYU multilinerYeh]h]h]uhj@Yh]rYhX/* 4kB internal SRAM */rYrY}rY(hUhjYubahjlubhX rYrY}rY(hX hj@Yubjb)rY}rY(hX OCMC_RAM1h}rY(h]h]rY(UnamerYUlabelrYeh]h]h]uhj@Yh]rYhX OCMC_RAM1rYrY}rY(hUhjYubahjlubjb)rY}rY(hX:h}rY(h]h]rYU punctuationrYah]h]h]uhj@Yh]rYhX:rY}rY(hUhjYubahjlubhX rY}rY(hX hj@Yubjb)rY}rY(hXoh}rY(h]h]rYUnamerYah]h]h]uhj@Yh]rYhXorY}rY(hUhjYubahjlubhX rY}rY(hX hj@Yubjb)rY}rY(hX=h}rY(h]h]rYUoperatorrYah]h]h]uhj@Yh]rYhX=rY}rY(hUhjYubahjlubhX rY}rY(hX hj@Yubjb)rY}rY(hX 0x40300000h}rY(h]h]rY(UliteralrYUnumberrYUhexrYeh]h]h]uhj@Yh]rYhX 0x40300000rYrY}rY(hUhjYubahjlubhX rY}rY(hX hj@Yubjb)rY}rY(hXlh}rY(h]h]rYUnamerYah]h]h]uhj@Yh]rYhXlrY}rY(hUhjYubahjlubhX rY}rY(hX hj@Yubjb)rY}rZ(hX=h}rZ(h]h]rZUoperatorrZah]h]h]uhj@Yh]rZhX=rZ}rZ(hUhjYubahjlubhX rZ}rZ(hX hj@Yubjb)r Z}r Z(hX 0x00080000h}r Z(h]h]r Z(Uliteralr ZUnumberrZUhexrZeh]h]h]uhj@Yh]rZhX 0x00080000rZrZ}rZ(hUhj ZubahjlubhX rZrZ}rZ(hX hj@Yubjb)rZ}rZ(hX/* 512kB L3 OCMC SRAM1 */h}rZ(h]h]rZ(UcommentrZU multilinerZeh]h]h]uhj@Yh]rZhX/* 512kB L3 OCMC SRAM1 */rZrZ}r Z(hUhjZubahjlubhX r!Zr"Z}r#Z(hX hj@Yubjb)r$Z}r%Z(hX OCMC_RAM2h}r&Z(h]h]r'Z(Unamer(ZUlabelr)Zeh]h]h]uhj@Yh]r*ZhX OCMC_RAM2r+Zr,Z}r-Z(hUhj$Zubahjlubjb)r.Z}r/Z(hX:h}r0Z(h]h]r1ZU punctuationr2Zah]h]h]uhj@Yh]r3ZhX:r4Z}r5Z(hUhj.ZubahjlubhX r6Z}r7Z(hX hj@Yubjb)r8Z}r9Z(hXoh}r:Z(h]h]r;ZUnamerZ}r?Z(hUhj8ZubahjlubhX r@Z}rAZ(hX hj@Yubjb)rBZ}rCZ(hX=h}rDZ(h]h]rEZUoperatorrFZah]h]h]uhj@Yh]rGZhX=rHZ}rIZ(hUhjBZubahjlubhX rJZ}rKZ(hX hj@Yubjb)rLZ}rMZ(hX 0x40400000h}rNZ(h]h]rOZ(UliteralrPZUnumberrQZUhexrRZeh]h]h]uhj@Yh]rSZhX 0x40400000rTZrUZ}rVZ(hUhjLZubahjlubhX rWZ}rXZ(hX hj@Yubjb)rYZ}rZZ(hXlh}r[Z(h]h]r\ZUnamer]Zah]h]h]uhj@Yh]r^ZhXlr_Z}r`Z(hUhjYZubahjlubhX raZ}rbZ(hX hj@Yubjb)rcZ}rdZ(hX=h}reZ(h]h]rfZUoperatorrgZah]h]h]uhj@Yh]rhZhX=riZ}rjZ(hUhjcZubahjlubhX rkZ}rlZ(hX hj@Yubjb)rmZ}rnZ(hX 0x00100000h}roZ(h]h]rpZ(UliteralrqZUnumberrrZUhexrsZeh]h]h]uhj@Yh]rtZhX 0x00100000ruZrvZ}rwZ(hUhjmZubahjlubhX rxZryZ}rzZ(hX hj@Yubjb)r{Z}r|Z(hX/* 1MB L3 OCMC SRAM2 */h}r}Z(h]h]r~Z(UcommentrZU multilinerZeh]h]h]uhj@Yh]rZhX/* 1MB L3 OCMC SRAM2 */rZrZ}rZ(hUhj{ZubahjlubhX rZrZ}rZ(hX hj@Yubjb)rZ}rZ(hX OCMC_RAM3h}rZ(h]h]rZ(UnamerZUlabelrZeh]h]h]uhj@Yh]rZhX OCMC_RAM3rZrZ}rZ(hUhjZubahjlubjb)rZ}rZ(hX:h}rZ(h]h]rZU punctuationrZah]h]h]uhj@Yh]rZhX:rZ}rZ(hUhjZubahjlubhX rZ}rZ(hX hj@Yubjb)rZ}rZ(hXoh}rZ(h]h]rZUnamerZah]h]h]uhj@Yh]rZhXorZ}rZ(hUhjZubahjlubhX rZ}rZ(hX hj@Yubjb)rZ}rZ(hX=h}rZ(h]h]rZUoperatorrZah]h]h]uhj@Yh]rZhX=rZ}rZ(hUhjZubahjlubhX rZ}rZ(hX hj@Yubjb)rZ}rZ(hX 0x40500000h}rZ(h]h]rZ(UliteralrZUnumberrZUhexrZeh]h]h]uhj@Yh]rZhX 0x40500000rZrZ}rZ(hUhjZubahjlubhX rZ}rZ(hX hj@Yubjb)rZ}rZ(hXlh}rZ(h]h]rZUnamerZah]h]h]uhj@Yh]rZhXlrZ}rZ(hUhjZubahjlubhX rZ}rZ(hX hj@Yubjb)rZ}rZ(hX=h}rZ(h]h]rZUoperatorrZah]h]h]uhj@Yh]rZhX=rZ}rZ(hUhjZubahjlubhX rZ}rZ(hX hj@Yubjb)rZ}rZ(hX 0x00100000h}rZ(h]h]rZ(UliteralrZUnumberrZUhexrZeh]h]h]uhj@Yh]rZhX 0x00100000rZrZ}rZ(hUhjZubahjlubhX rZrZ}rZ(hX hj@Yubjb)rZ}rZ(hX/* 1MB L3 OCMC SRAM3 */h}rZ(h]h]rZ(UcommentrZU multilinerZeh]h]h]uhj@Yh]rZhX/* 1MB L3 OCMC SRAM3 */rZrZ}rZ(hUhjZubahjlubhX rZrZ}rZ(hX hj@Yubjb)rZ}rZ(hXDDR0h}rZ(h]h]rZ(UnamerZUlabelrZeh]h]h]uhj@Yh]rZhXDDR0rZrZ}rZ(hUhjZubahjlubjb)rZ}rZ(hX:h}rZ(h]h]rZU punctuationrZah]h]h]uhj@Yh]rZhX:rZ}rZ(hUhjZubahjlubhX rZrZ}r[(hX hj@Yubjb)r[}r[(hXoh}r[(h]h]r[Unamer[ah]h]h]uhj@Yh]r[hXor[}r[(hUhj[ubahjlubhX r [}r [(hX hj@Yubjb)r [}r [(hX=h}r [(h]h]r[Uoperatorr[ah]h]h]uhj@Yh]r[hX=r[}r[(hUhj [ubahjlubhX r[}r[(hX hj@Yubjb)r[}r[(hX 0x80000000h}r[(h]h]r[(Uliteralr[Unumberr[Uhexrh]h]h]uhj@Yh]r[hX 0x80000000r[r[}r[(hUhj[ubahjlubhX r [}r![(hX hj@Yubjb)r"[}r#[(hXlh}r$[(h]h]r%[Unamer&[ah]h]h]uhj@Yh]r'[hXlr([}r)[(hUhj"[ubahjlubhX r*[}r+[(hX hj@Yubjb)r,[}r-[(hX=h}r.[(h]h]r/[Uoperatorr0[ah]h]h]uhj@Yh]r1[hX=r2[}r3[(hUhj,[ubahjlubhX r4[}r5[(hX hj@Yubjb)r6[}r7[(hX 0x40000000h}r8[(h]h]r9[(Uliteralr:[Unumberr;[Uhexr<[eh]h]h]uhj@Yh]r=[hX 0x40000000r>[r?[}r@[(hUhj6[ubahjlubhX rA[rB[}rC[(hX hj@Yubjb)rD[}rE[(hX/* 1GB external DDR Bank 0 */h}rF[(h]h]rG[(UcommentrH[U multilinerI[eh]h]h]uhj@Yh]rJ[hX/* 1GB external DDR Bank 0 */rK[rL[}rM[(hUhjD[ubahjlubhX rN[}rO[(hX hj@Yubjb)rP[}rQ[(hX}h}rR[(h]h]rS[U punctuationrT[ah]h]h]uhj@Yh]rU[hX}rV[}rW[(hUhjP[ubahjlubeubj;)rX[}rY[(hX
hjWhjOGhj;h}rZ[(UformatXhtmljjh]h]h]h]h]uhM{hhh]r[[hX
r\[r][}r^[(hUhjX[ubaubj;)r_[}r`[(hX
hjWhjOGhj;h}ra[(UformatXhtmljjh]h]h]h]h]uhMhhh]rb[hX
rc[rd[}re[(hUhj_[ubaubj/)rf[}rg[(hXThe linker command file is designed to place code in OCMC memory with interrupt vectors and .intc_txt generated by the compiler being place in device internal memory.rh[hjWhjOGhj3h}ri[(h]h]h]h]h]uhMhhh]rj[hXThe linker command file is designed to place code in OCMC memory with interrupt vectors and .intc_txt generated by the compiler being place in device internal memory.rk[rl[}rm[(hjh[hjf[ubaubj))rn[}ro[(hX- Please note that if the device GEL files are setting up MMU for the core then the code will not load correctly on the core and will cause a CPU exception. We recommend that you modify the linker command file appropriately to match the MMU settings in the GEL file. The linker command file in all CCS releases prior to CCS 6.1.3 don`t account for this MMU Setting in AM57xx GEL files. Please modify the OCMC addresses to the logical address set in the GEL file - An optional step is to modify the section definition in AM57xx_CM4.cmd file if you wish to introduce/partition existing sections or place the code in different memory section.hjWhNhj,h}rp[(h]h]h]h]h]uhNhhh]rq[jQ)rr[}rs[(hUh}rt[(jVX-h]h]h]h]h]uhjn[h]ru[(jX)rv[}rw[(hXPlease note that if the device GEL files are setting up MMU for the core then the code will not load correctly on the core and will cause a CPU exception. We recommend that you modify the linker command file appropriately to match the MMU settings in the GEL file. The linker command file in all CCS releases prior to CCS 6.1.3 don`t account for this MMU Setting in AM57xx GEL files. Please modify the OCMC addresses to the logical address set in the GEL fileh}rx[(h]h]h]h]h]uhjr[h]ry[j/)rz[}r{[(hXPlease note that if the device GEL files are setting up MMU for the core then the code will not load correctly on the core and will cause a CPU exception. We recommend that you modify the linker command file appropriately to match the MMU settings in the GEL file. The linker command file in all CCS releases prior to CCS 6.1.3 don`t account for this MMU Setting in AM57xx GEL files. Please modify the OCMC addresses to the logical address set in the GEL filer|[hjv[hjOGhj3h}r}[(h]h]h]h]h]uhMh]r~[hXPlease note that if the device GEL files are setting up MMU for the core then the code will not load correctly on the core and will cause a CPU exception. We recommend that you modify the linker command file appropriately to match the MMU settings in the GEL file. The linker command file in all CCS releases prior to CCS 6.1.3 don`t account for this MMU Setting in AM57xx GEL files. Please modify the OCMC addresses to the logical address set in the GEL filer[r[}r[(hj|[hjz[ubaubahj[ubjX)r[}r[(hXAn optional step is to modify the section definition in AM57xx_CM4.cmd file if you wish to introduce/partition existing sections or place the code in different memory section.h}r[(h]h]h]h]h]uhjr[h]r[j/)r[}r[(hXAn optional step is to modify the section definition in AM57xx_CM4.cmd file if you wish to introduce/partition existing sections or place the code in different memory section.r[hj[hjOGhj3h}r[(h]h]h]h]h]uhMh]r[hXAn optional step is to modify the section definition in AM57xx_CM4.cmd file if you wish to introduce/partition existing sections or place the code in different memory section.r[r[}r[(hj[hj[ubaubahj[ubehjTubaubj)r[}r[(hUhjWhjOGhjh}r[(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]r[jX)r[}r[(hX6Now build the project to generate hello_world_m4.out. hj[hjOGhj[h}r[(h]h]h]h]h]uhNhhh]r[j/)r[}r[(hX5Now build the project to generate hello_world_m4.out.r[hj[hjOGhj3h}r[(h]h]h]h]h]uhMh]r[hX5Now build the project to generate hello_world_m4.out.r[r[}r[(hj[hj[ubaubaubaubj/)r[}r[(hX8. Launch target configurations using your emulator to connect to AM572X EVM as described in the :ref:`Getting Started Guide `hjWhjOGhj3h}r[(h]h]h]h]h]uhMhhh]r[(hXa8. Launch target configurations using your emulator to connect to AM572X EVM as described in the r[r[}r[(hXa8. Launch target configurations using your emulator to connect to AM572X EVM as described in the hj[ubjZ)r[}r[(hXM:ref:`Getting Started Guide `r[hj[hjOGhj^h}r[(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdr[h]h]U refexplicith]h]h]j j uhMh]r[jb)r[}r[(hj[h}r[(h]h]r[(j j[Xstd-refr[eh]h]h]uhj[h]r[hXGetting Started Guider[r[}r[(hUhj[ubahjlubaubeubj/)r[}r[(hX9. In order to wake up the M4 core from A15, Go to Menu option Scripts->AM572x_Multicore_Initialization->IPU1SSClkEnable_API. Refer to the `Processor_SDK_RTOS_Setup_CCS `__.hjWhjOGhj3h}r[(h]h]h]h]h]uhMhhh]r[(hX9. In order to wake up the M4 core from A15, Go to Menu option Scripts->AM572x_Multicore_Initialization->IPU1SSClkEnable_API. Refer to the r[r[}r[(hX9. In order to wake up the M4 core from A15, Go to Menu option Scripts->AM572x_Multicore_Initialization->IPU1SSClkEnable_API. Refer to the hj[ubj)r[}r[(hXX`Processor_SDK_RTOS_Setup_CCS `__h}r[(UnameXProcessor_SDK_RTOS_Setup_CCSjX5index_how_to_guides.html#connect-to-am57x-slave-coresh]h]h]h]h]uhj[h]r[hXProcessor_SDK_RTOS_Setup_CCSr[r[}r[(hUhj[ubahjubhX.r[}r[(hX.hj[ubeubj/)r[}r[(hX/You should see the following log in the Consoler[hjWhjOGhj3h}r[(h]h]h]h]h]uhMhhh]r[hX/You should see the following log in the Consoler[r[}r[(hj[hj[ubaubj)r[}r[(hXCortexA15_0: GEL Output: --->>> IPU1SS Initialization is in progress ... <<<--- CortexA15_0: GEL Output: --->>> IPU1SS Initialization is DONE! <<<---hjWhjOGhjh}r[(jjh]h]h]h]h]uhMhhh]r[hXCortexA15_0: GEL Output: --->>> IPU1SS Initialization is in progress ... <<<--- CortexA15_0: GEL Output: --->>> IPU1SS Initialization is DONE! <<<---r[r[}r[(hUhj[ubaubj/)r[}r[(hX11. Select and Connect to Cortex_M4_IPU1_C0. Load and run Hello_Example_m4.out file. You should see **Hello World** string displayed on console window.hjWhjOGhj3h}r[(h]h]h]h]h]uhMhhh]r[(hXd11. Select and Connect to Cortex_M4_IPU1_C0. Load and run Hello_Example_m4.out file. You should see r[r[}r[(hXd11. Select and Connect to Cortex_M4_IPU1_C0. Load and run Hello_Example_m4.out file. You should see hj[ubjW)r[}r[(hX**Hello World**h}r[(h]h]h]h]h]uhj[h]r[hX Hello Worldr[r[}r[(hUhj[ubahj_ubhX$ string displayed on console window.r[r[}r[(hX$ string displayed on console window.hj[ubeubj)r[}r[(hX(.. Image:: ../images/Hello_world_m4.jpg hjWhjOGhjh}r[(UuriX!rtos/../images/Hello_world_m4.jpgr[h]h]h]h]j}r[U*j[sh]uhMhhh]ubj))r[}r[(hXkIf the example does not load correctly in the first attempt, reload and **ensure ARM core starts at main**.hjWhjOGhj,h}r[(h]h]h]h]h]uhNhhh]r[j/)r[}r[(hXkIf the example does not load correctly in the first attempt, reload and **ensure ARM core starts at main**.hj[hjOGhj3h}r[(h]h]h]h]h]uhMh]r[(hXHIf the example does not load correctly in the first attempt, reload and r[r[}r[(hXHIf the example does not load correctly in the first attempt, reload and hj[ubjW)r[}r[(hX"**ensure ARM core starts at main**h}r[(h]h]h]h]h]uhj[h]r[hXensure ARM core starts at mainr[r[}r[(hUhj[ubahj_ubhX.r[}r[(hX.hj[ubeubaubj)r[}r[(hUhjWhjOGhjh}r[(h]h]h]h]h]uhMhhh]r\j)r\}r\(hUjKhj[hjOGhhh}r\(h]h]h]h]h]uhKhhh]ubaubeubh)r\}r\(hUjKhj=GhjOGhhh}r\(h]r\jAah]h]h]r\Uid52r \ah]uhMhhh]r \(h)r \}r \(hXARM9r \hj\hjOGhhh}r\(h]h]h]h]h]uhMhhh]r\hXARM9r\r\}r\(hj \hj \ubaubj/)r\}r\(hXIn this article, we take a look at creating bare-metal hello world examples for the ARM9 core using pre-built templates in CCS. As a sample we will use the OMAP-L138 device to describe the steps.r\hj\hjOGhj3h}r\(h]h]h]h]h]uhMhhh]r\hXIn this article, we take a look at creating bare-metal hello world examples for the ARM9 core using pre-built templates in CCS. As a sample we will use the OMAP-L138 device to describe the steps.r\r\}r\(hj\hj\ubaubj)r\}r\(hUhj\hjOGhjh}r\(jU.h]h]h]jUh]h]jjuhMhhh]r\(jX)r\}r \(hX=Start CCS and create a workspace for generating the project. hj\hjOGhj[h}r!\(h]h]h]h]h]uhNhhh]r"\j/)r#\}r$\(hX<Start CCS and create a workspace for generating the project.r%\hj\hjOGhj3h}r&\(h]h]h]h]h]uhMh]r'\hX<Start CCS and create a workspace for generating the project.r(\r)\}r*\(hj%\hj#\ubaubaubjX)r+\}r,\(hX9Click on File menu option and select New--> CCS Project. hj\hjOGhj[h}r-\(h]h]h]h]h]uhNhhh]r.\j/)r/\}r0\(hX8Click on File menu option and select New--> CCS Project.r1\hj+\hjOGhj3h}r2\(h]h]h]h]h]uhMh]r3\hX8Click on File menu option and select New--> CCS Project.r4\r5\}r6\(hj1\hj/\ubaubaubjX)r7\}r8\(hX]Select Target as OMAP-L1x --> ARM9 and appropriate target board as shown in the image below. hj\hjOGhj[h}r9\(h]h]h]h]h]uhNhhh]r:\j/)r;\}r<\(hX\Select Target as OMAP-L1x --> ARM9 and appropriate target board as shown in the image below.r=\hj7\hjOGhj3h}r>\(h]h]h]h]h]uhMh]r?\hX\Select Target as OMAP-L1x --> ARM9 and appropriate target board as shown in the image below.r@\rA\}rB\(hj=\hj;\ubaubaubeubj)rC\}rD\(hX8.. Image:: ../images/omapl13x_arm9_hello_nonos_ccs.png hj\hjOGhjh}rE\(UuriX0rtos/../images/omapl13x_arm9_hello_nonos_ccs.pngrF\h]h]h]h]j}rG\U*jF\sh]uhMhhh]ubj/)rH\}rI\(hX4. In the ARM9 tab, provide a name for the project, such as "hello_world_arm9" and use the default settings for the project as shown in the image below. Ensure OMAPL138.cmd is selected for the linker command file.rJ\hj\hjOGhj3h}rK\(h]h]h]h]h]uhMhhh]rL\hX4. In the ARM9 tab, provide a name for the project, such as "hello_world_arm9" and use the default settings for the project as shown in the image below. Ensure OMAPL138.cmd is selected for the linker command file.rM\rN\}rO\(hjJ\hjH\ubaubj)rP\}rQ\(hX8.. Image:: ../images/omapl13x_arm9_hello_nonos_ccs2.png hj\hjOGhjh}rR\(UuriX1rtos/../images/omapl13x_arm9_hello_nonos_ccs2.pngrS\h]h]h]h]j}rT\U*jS\sh]uhMhhh]ubj/)rU\}rV\(hX5. Click Finish after you are done to allow CCS to auto generate the project from the template **Basic Examples-> Hello World**.hj\hjOGhj3h}rW\(h]h]h]h]h]uhMhhh]rX\(hX_5. Click Finish after you are done to allow CCS to auto generate the project from the template rY\rZ\}r[\(hX_5. Click Finish after you are done to allow CCS to auto generate the project from the template hjU\ubjW)r\\}r]\(hX **Basic Examples-> Hello World**h}r^\(h]h]h]h]h]uhjU\h]r_\hXBasic Examples-> Hello Worldr`\ra\}rb\(hUhj\\ubahj_ubhX.rc\}rd\(hX.hjU\ubeubj/)re\}rf\(hX6. The generated CCS project contains source file **main.c**, and a linker command file **OMAPL138.cmd**. Ensure the main.c file contains the following code.hj\hjOGhj3h}rg\(h]h]h]h]h]uhMhhh]rh\(hX26. The generated CCS project contains source file ri\rj\}rk\(hX26. The generated CCS project contains source file hje\ubjW)rl\}rm\(hX **main.c**h}rn\(h]h]h]h]h]uhje\h]ro\hXmain.crp\rq\}rr\(hUhjl\ubahj_ubhX, and a linker command file rs\rt\}ru\(hX, and a linker command file hje\ubjW)rv\}rw\(hX**OMAPL138.cmd**h}rx\(h]h]h]h]h]uhje\h]ry\hX OMAPL138.cmdrz\r{\}r|\(hUhjv\ubahj_ubhX5. Ensure the main.c file contains the following code.r}\r~\}r\(hX5. Ensure the main.c file contains the following code.hje\ubeubj)r\}r\(hXi /* * hello.c */ #include int main(void) { printf("Hello_world\n"); return 0; }hj\hjOGhjh}r\(jjh]h]h]h]r\(j;Xceh]uhMhhh]r\(hX r\}r\(hX hj\ubjb)r\}r\(hX/* * hello.c */h}r\(h]h]r\(Ucommentr\U multiliner\eh]h]h]uhj\h]r\hX/* * hello.c */r\r\}r\(hUhj\ubahjlubhX r\r\}r\(hX hj\ubjb)r\}r\(hX#includeh}r\(h]h]r\(Ucommentr\Upreprocr\eh]h]h]uhj\h]r\hX#includer\r\}r\(hUhj\ubahjlubhX r\}r\(hX hj\ubjb)r\}r\(hX h}r\(h]h]r\(Ucommentr\U preprocfiler\eh]h]h]uhj\h]r\hX r\r\}r\(hUhj\ubahjlubjb)r\}r\(hX h}r\(h]h]r\(Ucommentr\Upreprocr\eh]h]h]uhj\h]r\hX r\}r\(hUhj\ubahjlubhX r\r\}r\(hX hj\ubjb)r\}r\(hXinth}r\(h]h]r\(Ukeywordr\Utyper\eh]h]h]uhj\h]r\hXintr\r\}r\(hUhj\ubahjlubhX r\}r\(hX hj\ubjb)r\}r\(hXmainh}r\(h]h]r\(Unamer\Ufunctionr\eh]h]h]uhj\h]r\hXmainr\r\}r\(hUhj\ubahjlubjb)r\}r\(hX(h}r\(h]h]r\U punctuationr\ah]h]h]uhj\h]r\hX(r\}r\(hUhj\ubahjlubjb)r\}r\(hXvoidh}r\(h]h]r\(Ukeywordr\Utyper\eh]h]h]uhj\h]r\hXvoidr\r\}r\(hUhj\ubahjlubjb)r\}r\(hX)h}r\(h]h]r\U punctuationr\ah]h]h]uhj\h]r\hX)r\}r\(hUhj\ubahjlubhX r\}r\(hX hj\ubjb)r\}r\(hX{h}r\(h]h]r\U punctuationr\ah]h]h]uhj\h]r\hX{r\}r\(hUhj\ubahjlubhX r\r\}r\(hX hj\ubjb)r\}r\(hXprintfh}r\(h]h]r\Unamer\ah]h]h]uhj\h]r\hXprintfr\r\}r\(hUhj\ubahjlubjb)r\}r\(hX(h}r\(h]h]r\U punctuationr]ah]h]h]uhj\h]r]hX(r]}r](hUhj\ubahjlubjb)r]}r](hX "Hello_worldh}r](h]h]r](Uliteralr]Ustringr ]eh]h]h]uhj\h]r ]hX "Hello_worldr ]r ]}r ](hUhj]ubahjlubjb)r]}r](hX\nh}r](h]h]r](Uliteralr]Ustringr]Uescaper]eh]h]h]uhj\h]r]hX\nr]r]}r](hUhj]ubahjlubjb)r]}r](hX"h}r](h]h]r](Uliteralr]Ustringr]eh]h]h]uhj\h]r]hX"r ]}r!](hUhj]ubahjlubjb)r"]}r#](hX);h}r$](h]h]r%]U punctuationr&]ah]h]h]uhj\h]r']hX);r(]r)]}r*](hUhj"]ubahjlubhX r+]r,]}r-](hX hj\ubjb)r.]}r/](hXreturnh}r0](h]h]r1]Ukeywordr2]ah]h]h]uhj\h]r3]hXreturnr4]r5]}r6](hUhj.]ubahjlubhX r7]}r8](hX hj\ubjb)r9]}r:](hX0h}r;](h]h]r<](Uliteralr=]Unumberr>]Uintegerr?]eh]h]h]uhj\h]r@]hX0rA]}rB](hUhj9]ubahjlubjb)rC]}rD](hX;h}rE](h]h]rF]U punctuationrG]ah]h]h]uhj\h]rH]hX;rI]}rJ](hUhjC]ubahjlubhX rK]}rL](hX hj\ubjb)rM]}rN](hX}h}rO](h]h]rP]U punctuationrQ]ah]h]h]uhj\h]rR]hX}rS]}rT](hUhjM]ubahjlubeubj)rU]}rV](hUhj\hjOGhjh}rW](jU.jf5Kh]h]h]jUh]h]jjuhMhhh]rX]jX)rY]}rZ](hXSEnsure that CCS generates the linker command file **OMAPL138.cmd** as shown below. hjU]hjOGhj[h}r[](h]h]h]h]h]uhNhhh]r\]j/)r]]}r^](hXREnsure that CCS generates the linker command file **OMAPL138.cmd** as shown below.hjY]hjOGhj3h}r_](h]h]h]h]h]uhMh]r`](hX2Ensure that CCS generates the linker command file ra]rb]}rc](hX2Ensure that CCS generates the linker command file hj]]ubjW)rd]}re](hX**OMAPL138.cmd**h}rf](h]h]h]h]h]uhj]]h]rg]hX OMAPL138.cmdrh]ri]}rj](hUhjd]ubahj_ubhX as shown below.rk]rl]}rm](hX as shown below.hj]]ubeubaubaubj)rn]}ro](hX MEMORY { #ifdef DSP_CORE /* DSP exclusive memory regions */ DSPL2ROM o = 0x00700000 l = 0x00100000 /* 1MB L2 DSP local ROM */ DSPL2RAM o = 0x00800000 l = 0x00040000 /* 256kB L2 DSP local RAM */ DSPL1PRAM o = 0x00E00000 l = 0x00008000 /* 32kB L1 DSP local Program RAM */ DSPL1DRAM o = 0x00F00000 l = 0x00008000 /* 32kB L1 DSP local Data RAM */ #endif SHDSPL2ROM o = 0x11700000 l = 0x00100000 /* 1MB L2 Shared Internal ROM */ SHDSPL2RAM o = 0x11800000 l = 0x00040000 /* 256kB L2 Shared Internal RAM */ SHDSPL1PRAM o = 0x11E00000 l = 0x00008000 /* 32kB L1 Shared Internal Program RAM */ SHDSPL1DRAM o = 0x11F00000 l = 0x00008000 /* 32kB L1 Shared Internal Data RAM */ EMIFACS0 o = 0x40000000 l = 0x20000000 /* 512MB SDRAM Data (CS0) */ EMIFACS2 o = 0x60000000 l = 0x02000000 /* 32MB Async Data (CS2) */ EMIFACS3 o = 0x62000000 l = 0x02000000 /* 32MB Async Data (CS3) */ EMIFACS4 o = 0x64000000 l = 0x02000000 /* 32MB Async Data (CS4) */ EMIFACS5 o = 0x66000000 l = 0x02000000 /* 32MB Async Data (CS5) */ SHRAM o = 0x80000000 l = 0x00020000 /* 128kB Shared RAM */ DDR2 o = 0xC0000000 l = 0x20000000 /* 512MB DDR2 Data */ #ifndef DSP_CORE /* ARM exclusive memory regions */ ARMROM o = 0xFFFD0000 l = 0x00010000 /* 64kB ARM local ROM */ ARMRAM o = 0xFFFF0000 l = 0x00002000 /* 8kB ARM local RAM */ #endif } SECTIONS { .text > SHRAM .stack > SHRAM .bss > SHRAM .cio > SHRAM .const > SHRAM .data > SHRAM .switch > SHRAM .sysmem > SHRAM .far > SHRAM .args > SHRAM .ppinfo > SHRAM .ppdata > SHRAM /* TI-ABI or COFF sections */ .pinit > SHRAM .cinit > SHRAM /* EABI sections */ .binit > SHRAM .init_array > SHRAM .neardata > SHRAM .fardata > SHRAM .rodata > SHRAM .c6xabi.exidx > SHRAM .c6xabi.extab > SHRAM }hj\hjOGhjh}rp](jjh]h]h]h]rq](j;Xceh]uhMhhh]rr](jb)rs]}rt](hXMEMORYh}ru](h]h]rv]Unamerw]ah]h]h]uhjn]h]rx]hXMEMORYry]rz]}r{](hUhjs]ubahjlubhX r|]}r}](hX hjn]ubjb)r~]}r](hX{h}r](h]h]r]U punctuationr]ah]h]h]uhjn]h]r]hX{r]}r](hUhj~]ubahjlubhX r]}r](hX hjn]ubjb)r]}r](hX#ifdef DSP_CORE h}r](h]h]r](Ucommentr]Upreprocr]eh]h]h]uhjn]h]r]hX#ifdef DSP_CORE r]r]}r](hUhj]ubahjlubjb)r]}r](hX"/* DSP exclusive memory regions */h}r](h]h]r](Ucommentr]U multiliner]eh]h]h]uhjn]h]r]hX"/* DSP exclusive memory regions */r]r]}r](hUhj]ubahjlubjb)r]}r](hX h}r](h]h]r](Ucommentr]Upreprocr]eh]h]h]uhjn]h]r]hX r]}r](hUhj]ubahjlubhX r]r]}r](hX hjn]ubjb)r]}r](hXDSPL2ROMh}r](h]h]r]Unamer]ah]h]h]uhjn]h]r]hXDSPL2ROMr]r]}r](hUhj]ubahjlubhX r]r]}r](hX hjn]ubjb)r]}r](hXoh}r](h]h]r]Unamer]ah]h]h]uhjn]h]r]hXor]}r](hUhj]ubahjlubhX r]}r](hX hjn]ubjb)r]}r](hX=h}r](h]h]r]Uoperatorr]ah]h]h]uhjn]h]r]hX=r]}r](hUhj]ubahjlubhX r]}r](hX hjn]ubjb)r]}r](hX 0x00700000h}r](h]h]r](Uliteralr]Unumberr]Uhexr]eh]h]h]uhjn]h]r]hX 0x00700000r]r]}r](hUhj]ubahjlubhX r]r]}r](hX hjn]ubjb)r]}r](hXlh}r](h]h]r]Unamer]ah]h]h]uhjn]h]r]hXlr]}r](hUhj]ubahjlubhX r]}r](hX hjn]ubjb)r]}r](hX=h}r](h]h]r]Uoperatorr]ah]h]h]uhjn]h]r]hX=r]}r](hUhj]ubahjlubhX r]}r](hX hjn]ubjb)r]}r](hX 0x00100000h}r](h]h]r](Uliteralr]Unumberr]Uhexr]eh]h]h]uhjn]h]r]hX 0x00100000r]r]}r](hUhj]ubahjlubhX r]r]}r](hX hjn]ubjb)r]}r](hX/* 1MB L2 DSP local ROM */h}r](h]h]r](Ucommentr]U multiliner]eh]h]h]uhjn]h]r]hX/* 1MB L2 DSP local ROM */r]r^}r^(hUhj]ubahjlubhX r^r^}r^(hX hjn]ubjb)r^}r^(hXDSPL2RAMh}r^(h]h]r^Unamer ^ah]h]h]uhjn]h]r ^hXDSPL2RAMr ^r ^}r ^(hUhj^ubahjlubhX r^r^}r^(hX hjn]ubjb)r^}r^(hXoh}r^(h]h]r^Unamer^ah]h]h]uhjn]h]r^hXor^}r^(hUhj^ubahjlubhX r^}r^(hX hjn]ubjb)r^}r^(hX=h}r^(h]h]r^Uoperatorr^ah]h]h]uhjn]h]r ^hX=r!^}r"^(hUhj^ubahjlubhX r#^}r$^(hX hjn]ubjb)r%^}r&^(hX 0x00800000h}r'^(h]h]r(^(Uliteralr)^Unumberr*^Uhexr+^eh]h]h]uhjn]h]r,^hX 0x00800000r-^r.^}r/^(hUhj%^ubahjlubhX r0^r1^}r2^(hX hjn]ubjb)r3^}r4^(hXlh}r5^(h]h]r6^Unamer7^ah]h]h]uhjn]h]r8^hXlr9^}r:^(hUhj3^ubahjlubhX r;^}r<^(hX hjn]ubjb)r=^}r>^(hX=h}r?^(h]h]r@^UoperatorrA^ah]h]h]uhjn]h]rB^hX=rC^}rD^(hUhj=^ubahjlubhX rE^}rF^(hX hjn]ubjb)rG^}rH^(hX 0x00040000h}rI^(h]h]rJ^(UliteralrK^UnumberrL^UhexrM^eh]h]h]uhjn]h]rN^hX 0x00040000rO^rP^}rQ^(hUhjG^ubahjlubhX rR^rS^}rT^(hX hjn]ubjb)rU^}rV^(hX/* 256kB L2 DSP local RAM */h}rW^(h]h]rX^(UcommentrY^U multilinerZ^eh]h]h]uhjn]h]r[^hX/* 256kB L2 DSP local RAM */r\^r]^}r^^(hUhjU^ubahjlubhX r_^r`^}ra^(hX hjn]ubjb)rb^}rc^(hX DSPL1PRAMh}rd^(h]h]re^Unamerf^ah]h]h]uhjn]h]rg^hX DSPL1PRAMrh^ri^}rj^(hUhjb^ubahjlubhX rk^rl^}rm^(hX hjn]ubjb)rn^}ro^(hXoh}rp^(h]h]rq^Unamerr^ah]h]h]uhjn]h]rs^hXort^}ru^(hUhjn^ubahjlubhX rv^}rw^(hX hjn]ubjb)rx^}ry^(hX=h}rz^(h]h]r{^Uoperatorr|^ah]h]h]uhjn]h]r}^hX=r~^}r^(hUhjx^ubahjlubhX r^}r^(hX hjn]ubjb)r^}r^(hX 0x00E00000h}r^(h]h]r^(Uliteralr^Unumberr^Uhexr^eh]h]h]uhjn]h]r^hX 0x00E00000r^r^}r^(hUhj^ubahjlubhX r^r^}r^(hX hjn]ubjb)r^}r^(hXlh}r^(h]h]r^Unamer^ah]h]h]uhjn]h]r^hXlr^}r^(hUhj^ubahjlubhX r^}r^(hX hjn]ubjb)r^}r^(hX=h}r^(h]h]r^Uoperatorr^ah]h]h]uhjn]h]r^hX=r^}r^(hUhj^ubahjlubhX r^}r^(hX hjn]ubjb)r^}r^(hX 0x00008000h}r^(h]h]r^(Uliteralr^Unumberr^Uhexr^eh]h]h]uhjn]h]r^hX 0x00008000r^r^}r^(hUhj^ubahjlubhX r^r^}r^(hX hjn]ubjb)r^}r^(hX#/* 32kB L1 DSP local Program RAM */h}r^(h]h]r^(Ucommentr^U multiliner^eh]h]h]uhjn]h]r^hX#/* 32kB L1 DSP local Program RAM */r^r^}r^(hUhj^ubahjlubhX r^r^}r^(hX hjn]ubjb)r^}r^(hX DSPL1DRAMh}r^(h]h]r^Unamer^ah]h]h]uhjn]h]r^hX DSPL1DRAMr^r^}r^(hUhj^ubahjlubhX r^r^}r^(hX hjn]ubjb)r^}r^(hXoh}r^(h]h]r^Unamer^ah]h]h]uhjn]h]r^hXor^}r^(hUhj^ubahjlubhX r^}r^(hX hjn]ubjb)r^}r^(hX=h}r^(h]h]r^Uoperatorr^ah]h]h]uhjn]h]r^hX=r^}r^(hUhj^ubahjlubhX r^}r^(hX hjn]ubjb)r^}r^(hX 0x00F00000h}r^(h]h]r^(Uliteralr^Unumberr^Uhexr^eh]h]h]uhjn]h]r^hX 0x00F00000r^r^}r^(hUhj^ubahjlubhX r^r^}r^(hX hjn]ubjb)r^}r^(hXlh}r^(h]h]r^Unamer^ah]h]h]uhjn]h]r^hXlr^}r^(hUhj^ubahjlubhX r^}r^(hX hjn]ubjb)r^}r^(hX=h}r^(h]h]r^Uoperatorr^ah]h]h]uhjn]h]r^hX=r^}r^(hUhj^ubahjlubhX r^}r_(hX hjn]ubjb)r_}r_(hX 0x00008000h}r_(h]h]r_(Uliteralr_Unumberr_Uhexr_eh]h]h]uhjn]h]r_hX 0x00008000r _r _}r _(hUhj_ubahjlubhX r _r _}r_(hX hjn]ubjb)r_}r_(hX /* 32kB L1 DSP local Data RAM */h}r_(h]h]r_(Ucommentr_U multiliner_eh]h]h]uhjn]h]r_hX /* 32kB L1 DSP local Data RAM */r_r_}r_(hUhj_ubahjlubhX r_r_}r_(hX hjn]ubjb)r_}r_(hX#endif h}r_(h]h]r_(Ucommentr _Upreprocr!_eh]h]h]uhjn]h]r"_hX#endif r#_r$_}r%_(hUhj_ubahjlubhX r&_r'_}r(_(hX hjn]ubjb)r)_}r*_(hX SHDSPL2ROMh}r+_(h]h]r,_Unamer-_ah]h]h]uhjn]h]r._hX SHDSPL2ROMr/_r0_}r1_(hUhj)_ubahjlubhX r2_r3_}r4_(hX hjn]ubjb)r5_}r6_(hXoh}r7_(h]h]r8_Unamer9_ah]h]h]uhjn]h]r:_hXor;_}r<_(hUhj5_ubahjlubhX r=_}r>_(hX hjn]ubjb)r?_}r@_(hX=h}rA_(h]h]rB_UoperatorrC_ah]h]h]uhjn]h]rD_hX=rE_}rF_(hUhj?_ubahjlubhX rG_}rH_(hX hjn]ubjb)rI_}rJ_(hX 0x11700000h}rK_(h]h]rL_(UliteralrM_UnumberrN_UhexrO_eh]h]h]uhjn]h]rP_hX 0x11700000rQ_rR_}rS_(hUhjI_ubahjlubhX rT_rU_}rV_(hX hjn]ubjb)rW_}rX_(hXlh}rY_(h]h]rZ_Unamer[_ah]h]h]uhjn]h]r\_hXlr]_}r^_(hUhjW_ubahjlubhX r__}r`_(hX hjn]ubjb)ra_}rb_(hX=h}rc_(h]h]rd_Uoperatorre_ah]h]h]uhjn]h]rf_hX=rg_}rh_(hUhja_ubahjlubhX ri_}rj_(hX hjn]ubjb)rk_}rl_(hX 0x00100000h}rm_(h]h]rn_(Uliteralro_Unumberrp_Uhexrq_eh]h]h]uhjn]h]rr_hX 0x00100000rs_rt_}ru_(hUhjk_ubahjlubhX rv_rw_}rx_(hX hjn]ubjb)ry_}rz_(hX /* 1MB L2 Shared Internal ROM */h}r{_(h]h]r|_(Ucommentr}_U multiliner~_eh]h]h]uhjn]h]r_hX /* 1MB L2 Shared Internal ROM */r_r_}r_(hUhjy_ubahjlubhX r_r_}r_(hX hjn]ubjb)r_}r_(hX SHDSPL2RAMh}r_(h]h]r_Unamer_ah]h]h]uhjn]h]r_hX SHDSPL2RAMr_r_}r_(hUhj_ubahjlubhX r_r_}r_(hX hjn]ubjb)r_}r_(hXoh}r_(h]h]r_Unamer_ah]h]h]uhjn]h]r_hXor_}r_(hUhj_ubahjlubhX r_}r_(hX hjn]ubjb)r_}r_(hX=h}r_(h]h]r_Uoperatorr_ah]h]h]uhjn]h]r_hX=r_}r_(hUhj_ubahjlubhX r_}r_(hX hjn]ubjb)r_}r_(hX 0x11800000h}r_(h]h]r_(Uliteralr_Unumberr_Uhexr_eh]h]h]uhjn]h]r_hX 0x11800000r_r_}r_(hUhj_ubahjlubhX r_r_}r_(hX hjn]ubjb)r_}r_(hXlh}r_(h]h]r_Unamer_ah]h]h]uhjn]h]r_hXlr_}r_(hUhj_ubahjlubhX r_}r_(hX hjn]ubjb)r_}r_(hX=h}r_(h]h]r_Uoperatorr_ah]h]h]uhjn]h]r_hX=r_}r_(hUhj_ubahjlubhX r_}r_(hX hjn]ubjb)r_}r_(hX 0x00040000h}r_(h]h]r_(Uliteralr_Unumberr_Uhexr_eh]h]h]uhjn]h]r_hX 0x00040000r_r_}r_(hUhj_ubahjlubhX r_r_}r_(hX hjn]ubjb)r_}r_(hX"/* 256kB L2 Shared Internal RAM */h}r_(h]h]r_(Ucommentr_U multiliner_eh]h]h]uhjn]h]r_hX"/* 256kB L2 Shared Internal RAM */r_r_}r_(hUhj_ubahjlubhX r_r_}r_(hX hjn]ubjb)r_}r_(hX SHDSPL1PRAMh}r_(h]h]r_Unamer_ah]h]h]uhjn]h]r_hX SHDSPL1PRAMr_r_}r_(hUhj_ubahjlubhX r_r_}r_(hX hjn]ubjb)r_}r_(hXoh}r_(h]h]r_Unamer_ah]h]h]uhjn]h]r_hXor_}r_(hUhj_ubahjlubhX r_}r_(hX hjn]ubjb)r_}r_(hX=h}r_(h]h]r_Uoperatorr_ah]h]h]uhjn]h]r_hX=r_}r`(hUhj_ubahjlubhX r`}r`(hX hjn]ubjb)r`}r`(hX 0x11E00000h}r`(h]h]r`(Uliteralr`Unumberr`Uhexr `eh]h]h]uhjn]h]r `hX 0x11E00000r `r `}r `(hUhj`ubahjlubhX r`r`}r`(hX hjn]ubjb)r`}r`(hXlh}r`(h]h]r`Unamer`ah]h]h]uhjn]h]r`hXlr`}r`(hUhj`ubahjlubhX r`}r`(hX hjn]ubjb)r`}r`(hX=h}r`(h]h]r`Uoperatorr`ah]h]h]uhjn]h]r `hX=r!`}r"`(hUhj`ubahjlubhX r#`}r$`(hX hjn]ubjb)r%`}r&`(hX 0x00008000h}r'`(h]h]r(`(Uliteralr)`Unumberr*`Uhexr+`eh]h]h]uhjn]h]r,`hX 0x00008000r-`r.`}r/`(hUhj%`ubahjlubhX r0`r1`}r2`(hX hjn]ubjb)r3`}r4`(hX)/* 32kB L1 Shared Internal Program RAM */h}r5`(h]h]r6`(Ucommentr7`U multiliner8`eh]h]h]uhjn]h]r9`hX)/* 32kB L1 Shared Internal Program RAM */r:`r;`}r<`(hUhj3`ubahjlubhX r=`r>`}r?`(hX hjn]ubjb)r@`}rA`(hX SHDSPL1DRAMh}rB`(h]h]rC`UnamerD`ah]h]h]uhjn]h]rE`hX SHDSPL1DRAMrF`rG`}rH`(hUhj@`ubahjlubhX rI`rJ`}rK`(hX hjn]ubjb)rL`}rM`(hXoh}rN`(h]h]rO`UnamerP`ah]h]h]uhjn]h]rQ`hXorR`}rS`(hUhjL`ubahjlubhX rT`}rU`(hX hjn]ubjb)rV`}rW`(hX=h}rX`(h]h]rY`UoperatorrZ`ah]h]h]uhjn]h]r[`hX=r\`}r]`(hUhjV`ubahjlubhX r^`}r_`(hX hjn]ubjb)r``}ra`(hX 0x11F00000h}rb`(h]h]rc`(Uliteralrd`Unumberre`Uhexrf`eh]h]h]uhjn]h]rg`hX 0x11F00000rh`ri`}rj`(hUhj``ubahjlubhX rk`rl`}rm`(hX hjn]ubjb)rn`}ro`(hXlh}rp`(h]h]rq`Unamerr`ah]h]h]uhjn]h]rs`hXlrt`}ru`(hUhjn`ubahjlubhX rv`}rw`(hX hjn]ubjb)rx`}ry`(hX=h}rz`(h]h]r{`Uoperatorr|`ah]h]h]uhjn]h]r}`hX=r~`}r`(hUhjx`ubahjlubhX r`}r`(hX hjn]ubjb)r`}r`(hX 0x00008000h}r`(h]h]r`(Uliteralr`Unumberr`Uhexr`eh]h]h]uhjn]h]r`hX 0x00008000r`r`}r`(hUhj`ubahjlubhX r`r`}r`(hX hjn]ubjb)r`}r`(hX&/* 32kB L1 Shared Internal Data RAM */h}r`(h]h]r`(Ucommentr`U multiliner`eh]h]h]uhjn]h]r`hX&/* 32kB L1 Shared Internal Data RAM */r`r`}r`(hUhj`ubahjlubhX r`r`}r`(hX hjn]ubjb)r`}r`(hXEMIFACS0h}r`(h]h]r`Unamer`ah]h]h]uhjn]h]r`hXEMIFACS0r`r`}r`(hUhj`ubahjlubhX r`r`}r`(hX hjn]ubjb)r`}r`(hXoh}r`(h]h]r`Unamer`ah]h]h]uhjn]h]r`hXor`}r`(hUhj`ubahjlubhX r`}r`(hX hjn]ubjb)r`}r`(hX=h}r`(h]h]r`Uoperatorr`ah]h]h]uhjn]h]r`hX=r`}r`(hUhj`ubahjlubhX r`}r`(hX hjn]ubjb)r`}r`(hX 0x40000000h}r`(h]h]r`(Uliteralr`Unumberr`Uhexr`eh]h]h]uhjn]h]r`hX 0x40000000r`r`}r`(hUhj`ubahjlubhX r`r`}r`(hX hjn]ubjb)r`}r`(hXlh}r`(h]h]r`Unamer`ah]h]h]uhjn]h]r`hXlr`}r`(hUhj`ubahjlubhX r`}r`(hX hjn]ubjb)r`}r`(hX=h}r`(h]h]r`Uoperatorr`ah]h]h]uhjn]h]r`hX=r`}r`(hUhj`ubahjlubhX r`}r`(hX hjn]ubjb)r`}r`(hX 0x20000000h}r`(h]h]r`(Uliteralr`Unumberr`Uhexr`eh]h]h]uhjn]h]r`hX 0x20000000r`r`}r`(hUhj`ubahjlubhX r`r`}r`(hX hjn]ubjb)r`}r`(hX/* 512MB SDRAM Data (CS0) */h}r`(h]h]r`(Ucommentr`U multiliner`eh]h]h]uhjn]h]r`hX/* 512MB SDRAM Data (CS0) */r`r`}r`(hUhj`ubahjlubhX r`r`}r`(hX hjn]ubjb)r`}r`(hXEMIFACS2h}r`(h]h]r`Unamer`ah]h]h]uhjn]h]r`hXEMIFACS2rara}ra(hUhj`ubahjlubhX rara}ra(hX hjn]ubjb)ra}ra(hXoh}ra(h]h]r aUnamer aah]h]h]uhjn]h]r ahXor a}r a(hUhjaubahjlubhX ra}ra(hX hjn]ubjb)ra}ra(hX=h}ra(h]h]raUoperatorraah]h]h]uhjn]h]rahX=ra}ra(hUhjaubahjlubhX ra}ra(hX hjn]ubjb)ra}ra(hX 0x60000000h}ra(h]h]ra(UliteralraUnumberraUhexr aeh]h]h]uhjn]h]r!ahX 0x60000000r"ar#a}r$a(hUhjaubahjlubhX r%ar&a}r'a(hX hjn]ubjb)r(a}r)a(hXlh}r*a(h]h]r+aUnamer,aah]h]h]uhjn]h]r-ahXlr.a}r/a(hUhj(aubahjlubhX r0a}r1a(hX hjn]ubjb)r2a}r3a(hX=h}r4a(h]h]r5aUoperatorr6aah]h]h]uhjn]h]r7ahX=r8a}r9a(hUhj2aubahjlubhX r:a}r;a(hX hjn]ubjb)ra(h]h]r?a(Uliteralr@aUnumberrAaUhexrBaeh]h]h]uhjn]h]rCahX 0x02000000rDarEa}rFa(hUhjb(hX hjn]ubjb)r?b}r@b(hXlh}rAb(h]h]rBbUnamerCbah]h]h]uhjn]h]rDbhXlrEb}rFb(hUhj?bubahjlubhX rGb}rHb(hX hjn]ubjb)rIb}rJb(hX=h}rKb(h]h]rLbUoperatorrMbah]h]h]uhjn]h]rNbhX=rOb}rPb(hUhjIbubahjlubhX rQb}rRb(hX hjn]ubjb)rSb}rTb(hX 0x02000000h}rUb(h]h]rVb(UliteralrWbUnumberrXbUhexrYbeh]h]h]uhjn]h]rZbhX 0x02000000r[br\b}r]b(hUhjSbubahjlubhX r^br_b}r`b(hX hjn]ubjb)rab}rbb(hX/* 32MB Async Data (CS5) */h}rcb(h]h]rdb(UcommentrebU multilinerfbeh]h]h]uhjn]h]rgbhX/* 32MB Async Data (CS5) */rhbrib}rjb(hUhjabubahjlubhX rkbrlb}rmb(hX hjn]ubjb)rnb}rob(hXSHRAMh}rpb(h]h]rqbUnamerrbah]h]h]uhjn]h]rsbhXSHRAMrtbrub}rvb(hUhjnbubahjlubhX rwbrxb}ryb(hX hjn]ubjb)rzb}r{b(hXoh}r|b(h]h]r}bUnamer~bah]h]h]uhjn]h]rbhXorb}rb(hUhjzbubahjlubhX rb}rb(hX hjn]ubjb)rb}rb(hX=h}rb(h]h]rbUoperatorrbah]h]h]uhjn]h]rbhX=rb}rb(hUhjbubahjlubhX rb}rb(hX hjn]ubjb)rb}rb(hX 0x80000000h}rb(h]h]rb(UliteralrbUnumberrbUhexrbeh]h]h]uhjn]h]rbhX 0x80000000rbrb}rb(hUhjbubahjlubhX rbrb}rb(hX hjn]ubjb)rb}rb(hXlh}rb(h]h]rbUnamerbah]h]h]uhjn]h]rbhXlrb}rb(hUhjbubahjlubhX rb}rb(hX hjn]ubjb)rb}rb(hX=h}rb(h]h]rbUoperatorrbah]h]h]uhjn]h]rbhX=rb}rb(hUhjbubahjlubhX rb}rb(hX hjn]ubjb)rb}rb(hX 0x00020000h}rb(h]h]rb(UliteralrbUnumberrbUhexrbeh]h]h]uhjn]h]rbhX 0x00020000rbrb}rb(hUhjbubahjlubhX rbrb}rb(hX hjn]ubjb)rb}rb(hX/* 128kB Shared RAM */h}rb(h]h]rb(UcommentrbU multilinerbeh]h]h]uhjn]h]rbhX/* 128kB Shared RAM */rbrb}rb(hUhjbubahjlubhX rbrb}rb(hX hjn]ubjb)rb}rb(hXDDR2h}rb(h]h]rbUnamerbah]h]h]uhjn]h]rbhXDDR2rbrb}rb(hUhjbubahjlubhX rbrb}rb(hX hjn]ubjb)rb}rb(hXoh}rb(h]h]rbUnamerbah]h]h]uhjn]h]rbhXorb}rb(hUhjbubahjlubhX rb}rb(hX hjn]ubjb)rb}rb(hX=h}rb(h]h]rbUoperatorrbah]h]h]uhjn]h]rbhX=rb}rb(hUhjbubahjlubhX rb}rb(hX hjn]ubjb)rb}rb(hX 0xC0000000h}rb(h]h]rb(UliteralrbUnumberrbUhexrbeh]h]h]uhjn]h]rbhX 0xC0000000rbrb}rb(hUhjbubahjlubhX rbrb}rb(hX hjn]ubjb)rb}rb(hXlh}rb(h]h]rbUnamerbah]h]h]uhjn]h]rbhXlrb}rc(hUhjbubahjlubhX rc}rc(hX hjn]ubjb)rc}rc(hX=h}rc(h]h]rcUoperatorrcah]h]h]uhjn]h]rchX=r c}r c(hUhjcubahjlubhX r c}r c(hX hjn]ubjb)r c}rc(hX 0x20000000h}rc(h]h]rc(UliteralrcUnumberrcUhexrceh]h]h]uhjn]h]rchX 0x20000000rcrc}rc(hUhj cubahjlubhX rcrc}rc(hX hjn]ubjb)rc}rc(hX/* 512MB DDR2 Data */h}rc(h]h]rc(UcommentrcU multiliner ceh]h]h]uhjn]h]r!chX/* 512MB DDR2 Data */r"cr#c}r$c(hUhjcubahjlubhX r%cr&c}r'c(hX hjn]ubjb)r(c}r)c(hX#ifndef DSP_CORE h}r*c(h]h]r+c(Ucommentr,cUpreprocr-ceh]h]h]uhjn]h]r.chX#ifndef DSP_CORE r/cr0c}r1c(hUhj(cubahjlubjb)r2c}r3c(hX"/* ARM exclusive memory regions */h}r4c(h]h]r5c(Ucommentr6cU multiliner7ceh]h]h]uhjn]h]r8chX"/* ARM exclusive memory regions */r9cr:c}r;c(hUhj2cubahjlubjb)rc(h]h]r?c(Ucommentr@cUpreprocrAceh]h]h]uhjn]h]rBchX rCc}rDc(hUhjdr?d}r@d(hX hjn]ubjb)rAd}rBd(hX>h}rCd(h]h]rDdUoperatorrEdah]h]h]uhjn]h]rFdhX>rGd}rHd(hUhjAdubahjlubhX rIdrJd}rKd(hX hjn]ubjb)rLd}rMd(hXSHRAMh}rNd(h]h]rOdUnamerPdah]h]h]uhjn]h]rQdhXSHRAMrRdrSd}rTd(hUhjLdubahjlubhX rUdrVd}rWd(hX hjn]ubjb)rXd}rYd(hX.h}rZd(h]h]r[dU punctuationr\dah]h]h]uhjn]h]r]dhX.r^d}r_d(hUhjXdubahjlubjb)r`d}rad(hXstackh}rbd(h]h]rcdUnamerddah]h]h]uhjn]h]redhXstackrfdrgd}rhd(hUhj`dubahjlubhX ridrjd}rkd(hX hjn]ubjb)rld}rmd(hX>h}rnd(h]h]rodUoperatorrpdah]h]h]uhjn]h]rqdhX>rrd}rsd(hUhjldubahjlubhX rtdrud}rvd(hX hjn]ubjb)rwd}rxd(hXSHRAMh}ryd(h]h]rzdUnamer{dah]h]h]uhjn]h]r|dhXSHRAMr}dr~d}rd(hUhjwdubahjlubhX rdrd}rd(hX hjn]ubjb)rd}rd(hX.h}rd(h]h]rdU punctuationrdah]h]h]uhjn]h]rdhX.rd}rd(hUhjdubahjlubjb)rd}rd(hXbssh}rd(h]h]rdUnamerdah]h]h]uhjn]h]rdhXbssrdrd}rd(hUhjdubahjlubhX rdrd}rd(hX hjn]ubjb)rd}rd(hX>h}rd(h]h]rdUoperatorrdah]h]h]uhjn]h]rdhX>rd}rd(hUhjdubahjlubhX rdrd}rd(hX hjn]ubjb)rd}rd(hXSHRAMh}rd(h]h]rdUnamerdah]h]h]uhjn]h]rdhXSHRAMrdrd}rd(hUhjdubahjlubhX rdrd}rd(hX hjn]ubjb)rd}rd(hX.h}rd(h]h]rdU punctuationrdah]h]h]uhjn]h]rdhX.rd}rd(hUhjdubahjlubjb)rd}rd(hXcioh}rd(h]h]rdUnamerdah]h]h]uhjn]h]rdhXciordrd}rd(hUhjdubahjlubhX rdrd}rd(hX hjn]ubjb)rd}rd(hX>h}rd(h]h]rdUoperatorrdah]h]h]uhjn]h]rdhX>rd}rd(hUhjdubahjlubhX rdrd}rd(hX hjn]ubjb)rd}rd(hXSHRAMh}rd(h]h]rdUnamerdah]h]h]uhjn]h]rdhXSHRAMrdrd}rd(hUhjdubahjlubhX rdrd}rd(hX hjn]ubjb)rd}rd(hX.h}rd(h]h]rdU punctuationrdah]h]h]uhjn]h]rdhX.rd}rd(hUhjdubahjlubjb)rd}rd(hXconsth}rd(h]h]rdUkeywordrdah]h]h]uhjn]h]rdhXconstrdrd}rd(hUhjdubahjlubhX rdrd}rd(hX hjn]ubjb)rd}rd(hX>h}rd(h]h]rdUoperatorrdah]h]h]uhjn]h]rdhX>rd}rd(hUhjdubahjlubhX rdrd}rd(hX hjn]ubjb)rd}rd(hXSHRAMh}rd(h]h]rdUnamerdah]h]h]uhjn]h]rdhXSHRAMrdrd}re(hUhjdubahjlubhX rere}re(hX hjn]ubjb)re}re(hX.h}re(h]h]reU punctuationreah]h]h]uhjn]h]r ehX.r e}r e(hUhjeubahjlubjb)r e}r e(hXdatah}re(h]h]reUnamereah]h]h]uhjn]h]rehXdatarere}re(hUhj eubahjlubhX rere}re(hX hjn]ubjb)re}re(hX>h}re(h]h]reUoperatorreah]h]h]uhjn]h]rehX>re}re(hUhjeubahjlubhX r er!e}r"e(hX hjn]ubjb)r#e}r$e(hXSHRAMh}r%e(h]h]r&eUnamer'eah]h]h]uhjn]h]r(ehXSHRAMr)er*e}r+e(hUhj#eubahjlubhX r,er-e}r.e(hX hjn]ubjb)r/e}r0e(hX.h}r1e(h]h]r2eU punctuationr3eah]h]h]uhjn]h]r4ehX.r5e}r6e(hUhj/eubahjlubjb)r7e}r8e(hXswitchh}r9e(h]h]r:eUkeywordr;eah]h]h]uhjn]h]re}r?e(hUhj7eubahjlubhX r@erAe}rBe(hX hjn]ubjb)rCe}rDe(hX>h}rEe(h]h]rFeUoperatorrGeah]h]h]uhjn]h]rHehX>rIe}rJe(hUhjCeubahjlubhX rKerLe}rMe(hX hjn]ubjb)rNe}rOe(hXSHRAMh}rPe(h]h]rQeUnamerReah]h]h]uhjn]h]rSehXSHRAMrTerUe}rVe(hUhjNeubahjlubhX rWerXe}rYe(hX hjn]ubjb)rZe}r[e(hX.h}r\e(h]h]r]eU punctuationr^eah]h]h]uhjn]h]r_ehX.r`e}rae(hUhjZeubahjlubjb)rbe}rce(hXsysmemh}rde(h]h]reeUnamerfeah]h]h]uhjn]h]rgehXsysmemrherie}rje(hUhjbeubahjlubhX rkerle}rme(hX hjn]ubjb)rne}roe(hX>h}rpe(h]h]rqeUoperatorrreah]h]h]uhjn]h]rsehX>rte}rue(hUhjneubahjlubhX rverwe}rxe(hX hjn]ubjb)rye}rze(hXSHRAMh}r{e(h]h]r|eUnamer}eah]h]h]uhjn]h]r~ehXSHRAMrere}re(hUhjyeubahjlubhX rere}re(hX hjn]ubjb)re}re(hX.h}re(h]h]reU punctuationreah]h]h]uhjn]h]rehX.re}re(hUhjeubahjlubjb)re}re(hXfarh}re(h]h]reUnamereah]h]h]uhjn]h]rehXfarrere}re(hUhjeubahjlubhX rere}re(hX hjn]ubjb)re}re(hX>h}re(h]h]reUoperatorreah]h]h]uhjn]h]rehX>re}re(hUhjeubahjlubhX rere}re(hX hjn]ubjb)re}re(hXSHRAMh}re(h]h]reUnamereah]h]h]uhjn]h]rehXSHRAMrere}re(hUhjeubahjlubhX rere}re(hX hjn]ubjb)re}re(hX.h}re(h]h]reU punctuationreah]h]h]uhjn]h]rehX.re}re(hUhjeubahjlubjb)re}re(hXargsh}re(h]h]reUnamereah]h]h]uhjn]h]rehXargsrere}re(hUhjeubahjlubhX rere}re(hX hjn]ubjb)re}re(hX>h}re(h]h]reUoperatorreah]h]h]uhjn]h]rehX>re}re(hUhjeubahjlubhX rere}re(hX hjn]ubjb)re}re(hXSHRAMh}re(h]h]reUnamereah]h]h]uhjn]h]rehXSHRAMrere}re(hUhjeubahjlubhX rere}re(hX hjn]ubjb)re}re(hX.h}re(h]h]reU punctuationreah]h]h]uhjn]h]rehX.re}re(hUhjeubahjlubjb)re}re(hXppinfoh}re(h]h]reUnamereah]h]h]uhjn]h]rehXppinforere}re(hUhjeubahjlubhX rere}re(hX hjn]ubjb)re}re(hX>h}re(h]h]reUoperatorreah]h]h]uhjn]h]rehX>re}re(hUhjeubahjlubhX rere}re(hX hjn]ubjb)re}re(hXSHRAMh}re(h]h]reUnamereah]h]h]uhjn]h]rehXSHRAMrfrf}rf(hUhjeubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hX.h}rf(h]h]r fU punctuationr fah]h]h]uhjn]h]r fhX.r f}r f(hUhjfubahjlubjb)rf}rf(hXppdatah}rf(h]h]rfUnamerfah]h]h]uhjn]h]rfhXppdatarfrf}rf(hUhjfubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hX>h}rf(h]h]rfUoperatorrfah]h]h]uhjn]h]rfhX>r f}r!f(hUhjfubahjlubhX r"fr#f}r$f(hX hjn]ubjb)r%f}r&f(hXSHRAMh}r'f(h]h]r(fUnamer)fah]h]h]uhjn]h]r*fhXSHRAMr+fr,f}r-f(hUhj%fubahjlubhX r.fr/f}r0f(hX hjn]ubjb)r1f}r2f(hX/* TI-ABI or COFF sections */h}r3f(h]h]r4f(Ucommentr5fU multiliner6feh]h]h]uhjn]h]r7fhX/* TI-ABI or COFF sections */r8fr9f}r:f(hUhj1fubahjlubhX r;frf}r?f(hX.h}r@f(h]h]rAfU punctuationrBfah]h]h]uhjn]h]rCfhX.rDf}rEf(hUhj>fubahjlubjb)rFf}rGf(hXpinith}rHf(h]h]rIfUnamerJfah]h]h]uhjn]h]rKfhXpinitrLfrMf}rNf(hUhjFfubahjlubhX rOfrPf}rQf(hX hjn]ubjb)rRf}rSf(hX>h}rTf(h]h]rUfUoperatorrVfah]h]h]uhjn]h]rWfhX>rXf}rYf(hUhjRfubahjlubhX rZfr[f}r\f(hX hjn]ubjb)r]f}r^f(hXSHRAMh}r_f(h]h]r`fUnamerafah]h]h]uhjn]h]rbfhXSHRAMrcfrdf}ref(hUhj]fubahjlubhX rffrgf}rhf(hX hjn]ubjb)rif}rjf(hX.h}rkf(h]h]rlfU punctuationrmfah]h]h]uhjn]h]rnfhX.rof}rpf(hUhjifubahjlubjb)rqf}rrf(hXcinith}rsf(h]h]rtfUnamerufah]h]h]uhjn]h]rvfhXcinitrwfrxf}ryf(hUhjqfubahjlubhX rzfr{f}r|f(hX hjn]ubjb)r}f}r~f(hX>h}rf(h]h]rfUoperatorrfah]h]h]uhjn]h]rfhX>rf}rf(hUhj}fubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hXSHRAMh}rf(h]h]rfUnamerfah]h]h]uhjn]h]rfhXSHRAMrfrf}rf(hUhjfubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hX/* EABI sections */h}rf(h]h]rf(UcommentrfU multilinerfeh]h]h]uhjn]h]rfhX/* EABI sections */rfrf}rf(hUhjfubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hX.h}rf(h]h]rfU punctuationrfah]h]h]uhjn]h]rfhX.rf}rf(hUhjfubahjlubjb)rf}rf(hXbinith}rf(h]h]rfUnamerfah]h]h]uhjn]h]rfhXbinitrfrf}rf(hUhjfubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hX>h}rf(h]h]rfUoperatorrfah]h]h]uhjn]h]rfhX>rf}rf(hUhjfubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hXSHRAMh}rf(h]h]rfUnamerfah]h]h]uhjn]h]rfhXSHRAMrfrf}rf(hUhjfubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hX.h}rf(h]h]rfU punctuationrfah]h]h]uhjn]h]rfhX.rf}rf(hUhjfubahjlubjb)rf}rf(hX init_arrayh}rf(h]h]rfUnamerfah]h]h]uhjn]h]rfhX init_arrayrfrf}rf(hUhjfubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hX>h}rf(h]h]rfUoperatorrfah]h]h]uhjn]h]rfhX>rf}rf(hUhjfubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hXSHRAMh}rf(h]h]rfUnamerfah]h]h]uhjn]h]rfhXSHRAMrfrf}rf(hUhjfubahjlubhX rfrf}rf(hX hjn]ubjb)rf}rf(hX.h}rf(h]h]rfU punctuationrfah]h]h]uhjn]h]rfhX.rf}rf(hUhjfubahjlubjb)rf}rg(hXneardatah}rg(h]h]rgUnamergah]h]h]uhjn]h]rghXneardatargrg}rg(hUhjfubahjlubhX rgr g}r g(hX hjn]ubjb)r g}r g(hX>h}r g(h]h]rgUoperatorrgah]h]h]uhjn]h]rghX>rg}rg(hUhj gubahjlubhX rgrg}rg(hX hjn]ubjb)rg}rg(hXSHRAMh}rg(h]h]rgUnamergah]h]h]uhjn]h]rghXSHRAMrgrg}rg(hUhjgubahjlubhX rgr g}r!g(hX hjn]ubjb)r"g}r#g(hX.h}r$g(h]h]r%gU punctuationr&gah]h]h]uhjn]h]r'ghX.r(g}r)g(hUhj"gubahjlubjb)r*g}r+g(hXfardatah}r,g(h]h]r-gUnamer.gah]h]h]uhjn]h]r/ghXfardatar0gr1g}r2g(hUhj*gubahjlubhX r3gr4g}r5g(hX hjn]ubjb)r6g}r7g(hX>h}r8g(h]h]r9gUoperatorr:gah]h]h]uhjn]h]r;ghX>rgr?g}r@g(hX hjn]ubjb)rAg}rBg(hXSHRAMh}rCg(h]h]rDgUnamerEgah]h]h]uhjn]h]rFghXSHRAMrGgrHg}rIg(hUhjAgubahjlubhX rJgrKg}rLg(hX hjn]ubjb)rMg}rNg(hX.h}rOg(h]h]rPgU punctuationrQgah]h]h]uhjn]h]rRghX.rSg}rTg(hUhjMgubahjlubjb)rUg}rVg(hXrodatah}rWg(h]h]rXgUnamerYgah]h]h]uhjn]h]rZghXrodatar[gr\g}r]g(hUhjUgubahjlubhX r^gr_g}r`g(hX hjn]ubjb)rag}rbg(hX>h}rcg(h]h]rdgUoperatorregah]h]h]uhjn]h]rfghX>rgg}rhg(hUhjagubahjlubhX rigrjg}rkg(hX hjn]ubjb)rlg}rmg(hXSHRAMh}rng(h]h]rogUnamerpgah]h]h]uhjn]h]rqghXSHRAMrrgrsg}rtg(hUhjlgubahjlubhX rugrvg}rwg(hX hjn]ubjb)rxg}ryg(hX.h}rzg(h]h]r{gU punctuationr|gah]h]h]uhjn]h]r}ghX.r~g}rg(hUhjxgubahjlubjb)rg}rg(hXc6xabih}rg(h]h]rgUnamergah]h]h]uhjn]h]rghXc6xabirgrg}rg(hUhjgubahjlubjb)rg}rg(hX.h}rg(h]h]rgU punctuationrgah]h]h]uhjn]h]rghX.rg}rg(hUhjgubahjlubjb)rg}rg(hXexidxh}rg(h]h]rgUnamergah]h]h]uhjn]h]rghXexidxrgrg}rg(hUhjgubahjlubhX rgrg}rg(hX hjn]ubjb)rg}rg(hX>h}rg(h]h]rgUoperatorrgah]h]h]uhjn]h]rghX>rg}rg(hUhjgubahjlubhX rgrg}rg(hX hjn]ubjb)rg}rg(hXSHRAMh}rg(h]h]rgUnamergah]h]h]uhjn]h]rghXSHRAMrgrg}rg(hUhjgubahjlubhX rgrg}rg(hX hjn]ubjb)rg}rg(hX.h}rg(h]h]rgU punctuationrgah]h]h]uhjn]h]rghX.rg}rg(hUhjgubahjlubjb)rg}rg(hXc6xabih}rg(h]h]rgUnamergah]h]h]uhjn]h]rghXc6xabirgrg}rg(hUhjgubahjlubjb)rg}rg(hX.h}rg(h]h]rgU punctuationrgah]h]h]uhjn]h]rghX.rg}rg(hUhjgubahjlubjb)rg}rg(hXextabh}rg(h]h]rgUnamergah]h]h]uhjn]h]rghXextabrgrg}rg(hUhjgubahjlubhX rgrg}rg(hX hjn]ubjb)rg}rg(hX>h}rg(h]h]rgUoperatorrgah]h]h]uhjn]h]rghX>rg}rg(hUhjgubahjlubhX rgrg}rg(hX hjn]ubjb)rg}rg(hXSHRAMh}rg(h]h]rgUnamergah]h]h]uhjn]h]rghXSHRAMrgrg}rg(hUhjgubahjlubhX rg}rg(hX hjn]ubjb)rg}rg(hX}h}rg(h]h]rgU punctuationrgah]h]h]uhjn]h]rghX}rg}rg(hUhjgubahjlubeubj)rg}rg(hUhj\hjOGhjh}rg(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]rgjX)rg}rg(hX8Now build the project to generate hello_world.out file. hjghjOGhj[h}rg(h]h]h]h]h]uhNhhh]rgj/)rg}rh(hX7Now build the project to generate hello_world.out file.rhhjghjOGhj3h}rh(h]h]h]h]h]uhMh]rhhX7Now build the project to generate hello_world.out file.rhrh}rh(hjhhjgubaubaubaubj/)rh}rh(hX9. Launch target configurations using your emulator to connect to the OMAP-L138 as described in the :ref:`Getting Started Guide `.hj\hjOGhj3h}r h(h]h]h]h]h]uhMhhh]r h(hXd9. Launch target configurations using your emulator to connect to the OMAP-L138 as described in the r hr h}r h(hXd9. Launch target configurations using your emulator to connect to the OMAP-L138 as described in the hjhubjZ)rh}rh(hXM:ref:`Getting Started Guide `rhhjhhjOGhj^h}rh(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrhh]h]U refexplicith]h]h]j j uhMh]rhjb)rh}rh(hjhh}rh(h]h]rh(j jhXstd-refrheh]h]h]uhjhh]rhhXGetting Started Guiderhrh}rh(hUhjhubahjlubaubhX.rh}rh(hX.hjhubeubj/)rh}r h(hX{10. Right click on ARM9_0 and connect to target. The on target functionality in the GEL will initialize the clocks and DDR.r!hhj\hjOGhj3h}r"h(h]h]h]h]h]uhM"hhh]r#hhX{10. Right click on ARM9_0 and connect to target. The on target functionality in the GEL will initialize the clocks and DDR.r$hr%h}r&h(hj!hhjhubaubj/)r'h}r(h(hXs11. Load and run hello_world_arm9.out file. You should see **Hello World!** string displayed on CCS console window.hj\hjOGhj3h}r)h(h]h]h]h]h]uhM%hhh]r*h(hX;11. Load and run hello_world_arm9.out file. You should see r+hr,h}r-h(hX;11. Load and run hello_world_arm9.out file. You should see hj'hubjW)r.h}r/h(hX**Hello World!**h}r0h(h]h]h]h]h]uhj'hh]r1hhX Hello World!r2hr3h}r4h(hUhj.hubahj_ubhX( string displayed on CCS console window.r5hr6h}r7h(hX( string displayed on CCS console window.hj'hubeubj)r8h}r9h(hUhj\hjOGhjh}r:h(h]h]h]h]h]uhM(hhh]r;hj)rh(h]h]h]h]h]uhKhhh]ubaubeubh)r?h}r@h(hUjKhj=GhjOGhhh}rAh(h]rBhjlBah]h]h]rChUid53rDhah]uhM+hhh]rEh(h)rFh}rGh(hXDSP C66xrHhhj?hhjOGhhh}rIh(h]h]h]h]h]uhM+hhh]rJhhXDSP C66xrKhrLh}rMh(hjHhhjFhubaubj/)rNh}rOh(hX.In this article, we take a look at creating bare-metal hello world examples for C66x core using pre-built templates in CCS. As a sample we will use the AM572x device to describe the steps but the same steps can be used for create hello world examples for C66x cores in the Keystone 2 family of devices.rPhhj?hhjOGhj3h}rQh(h]h]h]h]h]uhM-hhh]rRhhX.In this article, we take a look at creating bare-metal hello world examples for C66x core using pre-built templates in CCS. As a sample we will use the AM572x device to describe the steps but the same steps can be used for create hello world examples for C66x cores in the Keystone 2 family of devices.rShrTh}rUh(hjPhhjNhubaubj))rVh}rWh(hXOnly major difference C66x examples for AM572x and Keystone 2 is that the Keystone 2 device contain MSMC memory instead of OCMC memory as the shared on chip memory.hj?hhjOGhj,h}rXh(h]h]h]h]h]uhNhhh]rYhj/)rZh}r[h(hXOnly major difference C66x examples for AM572x and Keystone 2 is that the Keystone 2 device contain MSMC memory instead of OCMC memory as the shared on chip memory.r\hhjVhhjOGhj3h}r]h(h]h]h]h]h]uhM4h]r^hhXOnly major difference C66x examples for AM572x and Keystone 2 is that the Keystone 2 device contain MSMC memory instead of OCMC memory as the shared on chip memory.r_hr`h}rah(hj\hhjZhubaubaubj)rbh}rch(hUhj?hhjOGhjh}rdh(jU.h]h]h]jUh]h]jjuhM8hhh]reh(jX)rfh}rgh(hX@Start CCSv6 and create a work space for generating the project. hjbhhjOGhj[h}rhh(h]h]h]h]h]uhNhhh]rihj/)rjh}rkh(hX?Start CCSv6 and create a work space for generating the project.rlhhjfhhjOGhj3h}rmh(h]h]h]h]h]uhM8h]rnhhX?Start CCSv6 and create a work space for generating the project.rohrph}rqh(hjlhhjjhubaubaubjX)rrh}rsh(hX9Click on File menu option and select New--> CCS Project. hjbhhjOGhj[h}rth(h]h]h]h]h]uhNhhh]ruhj/)rvh}rwh(hX8Click on File menu option and select New--> CCS Project.rxhhjrhhjOGhj3h}ryh(h]h]h]h]h]uhM:h]rzhhX8Click on File menu option and select New--> CCS Project.r{hr|h}r}h(hjxhhjvhubaubaubjX)r~h}rh(hXFSelect Target as AM572x -C66xx and GPEVM_AM572x as shown in the image hjbhhjOGhj[h}rh(h]h]h]h]h]uhNhhh]rhj/)rh}rh(hXESelect Target as AM572x -C66xx and GPEVM_AM572x as shown in the imagerhhj~hhjOGhj3h}rh(h]h]h]h]h]uhM<h]rhhXESelect Target as AM572x -C66xx and GPEVM_AM572x as shown in the imagerhrh}rh(hjhhjhubaubaubeubj/)rh}rh(hX4. Select **C66XX [C6000]** DSP setting in the options below and provide name of the project as "hello_world_dsp" and use default Advanced settings for the project. Click Finish after you are done to allow CCS to auto generate the project from the template **Basic Examples-> Hello World**. The Default settings uses "TI CG Tools compiler 8.x.x" tool chain for C66x and sets the build for **little** endian **ELF** binary for the C66x core.hj?hhjOGhj3h}rh(h]h]h]h]h]uhM>hhh]rh(hX 4. Select rhrh}rh(hX 4. Select hjhubjW)rh}rh(hX**C66XX [C6000]**h}rh(h]h]h]h]h]uhjhh]rhhX C66XX [C6000]rhrh}rh(hUhjhubahj_ubhX DSP setting in the options below and provide name of the project as "hello_world_dsp" and use default Advanced settings for the project. Click Finish after you are done to allow CCS to auto generate the project from the template rhrh}rh(hX DSP setting in the options below and provide name of the project as "hello_world_dsp" and use default Advanced settings for the project. Click Finish after you are done to allow CCS to auto generate the project from the template hjhubjW)rh}rh(hX **Basic Examples-> Hello World**h}rh(h]h]h]h]h]uhjhh]rhhXBasic Examples-> Hello Worldrhrh}rh(hUhjhubahj_ubhXd. The Default settings uses "TI CG Tools compiler 8.x.x" tool chain for C66x and sets the build for rhrh}rh(hXd. The Default settings uses "TI CG Tools compiler 8.x.x" tool chain for C66x and sets the build for hjhubjW)rh}rh(hX **little**h}rh(h]h]h]h]h]uhjhh]rhhXlittlerhrh}rh(hUhjhubahj_ubhX endian rhrh}rh(hX endian hjhubjW)rh}rh(hX**ELF**h}rh(h]h]h]h]h]uhjhh]rhhXELFrhrh}rh(hUhjhubahj_ubhX binary for the C66x core.rhrh}rh(hX binary for the C66x core.hjhubeubj)rh}rh(hX8.. Image:: ../images/Bare-Metal_C66x_templateselect.jpg hj?hhjOGhjh}rh(UuriX1rtos/../images/Bare-Metal_C66x_templateselect.jpgrhh]h]h]h]j}rhU*jhsh]uhMGhhh]ubj/)rh}rh(hXz5. The generated CCS project contains only one source file **hello.c**. Ensure the main.c file contains the following codehj?hhjOGhj3h}rh(h]h]h]h]h]uhMHhhh]rh(hX;5. The generated CCS project contains only one source file rhrh}rh(hX;5. The generated CCS project contains only one source file hjhubjW)rh}rh(hX **hello.c**h}rh(h]h]h]h]h]uhjhh]rhhXhello.crhrh}rh(hUhjhubahj_ubhX4. Ensure the main.c file contains the following coderhrh}rh(hX4. Ensure the main.c file contains the following codehjhubeubj;)rh}rh(hX7
hj?hhjOGhj;h}rh(UformatXhtmljjh]h]h]h]h]uhMKhhh]rhhX7
rhrh}rh(hUhjhubaubj;)rh}rh(hX
hj?hhjOGhj;h}rh(UformatXhtmljjh]h]h]h]h]uhMOhhh]rhhX
rhrh}rh(hUhjhubaubj)rh}rh(hXi /* * hello.c */ #include int main(void) { printf("Hello_world\n"); return 0; }hj?hhjOGhjh}rh(jjh]h]h]h]rh(j;Xceh]uhM_hhh]rh(hX rh}rh(hX hjhubjb)rh}rh(hX/* * hello.c */h}rh(h]h]rh(UcommentrhU multilinerheh]h]h]uhjhh]rhhX/* * hello.c */rhrh}rh(hUhjhubahjlubhX rhrh}rh(hX hjhubjb)rh}rh(hX#includeh}rh(h]h]rh(UcommentrhUpreprocrheh]h]h]uhjhh]rhhX#includerhrh}rh(hUhjhubahjlubhX rh}rh(hX hjhubjb)rh}rh(hX h}rh(h]h]ri(UcommentriU preprocfilerieh]h]h]uhjhh]rihX riri}ri(hUhjhubahjlubjb)ri}ri(hX h}r i(h]h]r i(Ucommentr iUpreprocr ieh]h]h]uhjhh]r ihX ri}ri(hUhjiubahjlubhX riri}ri(hX hjhubjb)ri}ri(hXinth}ri(h]h]ri(UkeywordriUtyperieh]h]h]uhjhh]rihXintriri}ri(hUhjiubahjlubhX ri}ri(hX hjhubjb)ri}r i(hXmainh}r!i(h]h]r"i(Unamer#iUfunctionr$ieh]h]h]uhjhh]r%ihXmainr&ir'i}r(i(hUhjiubahjlubjb)r)i}r*i(hX(h}r+i(h]h]r,iU punctuationr-iah]h]h]uhjhh]r.ihX(r/i}r0i(hUhj)iubahjlubjb)r1i}r2i(hXvoidh}r3i(h]h]r4i(Ukeywordr5iUtyper6ieh]h]h]uhjhh]r7ihXvoidr8ir9i}r:i(hUhj1iubahjlubjb)r;i}riU punctuationr?iah]h]h]uhjhh]r@ihX)rAi}rBi(hUhj;iubahjlubhX rCi}rDi(hX hjhubjb)rEi}rFi(hX{h}rGi(h]h]rHiU punctuationrIiah]h]h]uhjhh]rJihX{rKi}rLi(hUhjEiubahjlubhX rMirNi}rOi(hX hjhubjb)rPi}rQi(hXprintfh}rRi(h]h]rSiUnamerTiah]h]h]uhjhh]rUihXprintfrVirWi}rXi(hUhjPiubahjlubjb)rYi}rZi(hX(h}r[i(h]h]r\iU punctuationr]iah]h]h]uhjhh]r^ihX(r_i}r`i(hUhjYiubahjlubjb)rai}rbi(hX "Hello_worldh}rci(h]h]rdi(UliteralreiUstringrfieh]h]h]uhjhh]rgihX "Hello_worldrhirii}rji(hUhjaiubahjlubjb)rki}rli(hX\nh}rmi(h]h]rni(UliteralroiUstringrpiUescaperqieh]h]h]uhjhh]rrihX\nrsirti}rui(hUhjkiubahjlubjb)rvi}rwi(hX"h}rxi(h]h]ryi(UliteralrziUstringr{ieh]h]h]uhjhh]r|ihX"r}i}r~i(hUhjviubahjlubjb)ri}ri(hX);h}ri(h]h]riU punctuationriah]h]h]uhjhh]rihX);riri}ri(hUhjiubahjlubhX riri}ri(hX hjhubjb)ri}ri(hXreturnh}ri(h]h]riUkeywordriah]h]h]uhjhh]rihXreturnriri}ri(hUhjiubahjlubhX ri}ri(hX hjhubjb)ri}ri(hX0h}ri(h]h]ri(UliteralriUnumberriUintegerrieh]h]h]uhjhh]rihX0ri}ri(hUhjiubahjlubjb)ri}ri(hX;h}ri(h]h]riU punctuationriah]h]h]uhjhh]rihX;ri}ri(hUhjiubahjlubhX ri}ri(hX hjhubjb)ri}ri(hX}h}ri(h]h]riU punctuationriah]h]h]uhjhh]rihX}ri}ri(hUhjiubahjlubeubj;)ri}ri(hX
hj?hhjOGhj;h}ri(UformatXhtmljjh]h]h]h]h]uhM`hhh]rihX
riri}ri(hUhjiubaubj;)ri}ri(hX
hj?hhjOGhj;h}ri(UformatXhtmljjh]h]h]h]h]uhMdhhh]rihX
riri}ri(hUhjiubaubj/)ri}ri(hX6. CCSv6 includes a default linker command file(AM57xx_C66.cmd) for the C66x DSP core which will place code into appropriate device memory. The linker command file has the following memory sections.rihj?hhjOGhj3h}ri(h]h]h]h]h]uhMhhhh]rihX6. CCSv6 includes a default linker command file(AM57xx_C66.cmd) for the C66x DSP core which will place code into appropriate device memory. The linker command file has the following memory sections.riri}ri(hjihjiubaubj;)ri}ri(hX7
hj?hhjOGhj;h}ri(UformatXhtmljjh]h]h]h]h]uhMlhhh]rihX7
riri}ri(hUhjiubaubj;)ri}ri(hX
hj?hhjOGhj;h}ri(UformatXhtmljjh]h]h]h]h]uhMphhh]rihX
riri}ri(hUhjiubaubj)ri}ri(hXvMEMORY { IRAM_MEM: o = 0x00800000 l = 0x00008000 /* 32kB internal SRAM */ OCMC_RAM1: o = 0x40300000 l = 0x00080000 /* 512kB L3 OCMC SRAM1 */ OCMC_RAM2: o = 0x40400000 l = 0x00100000 /* 1MB L3 OCMC SRAM2 */ OCMC_RAM3: o = 0x40500000 l = 0x00100000 /* 1MB L3 OCMC SRAM3 */ DDR0: o = 0x80000000 l = 0x40000000 /* 1GB external DDR Bank 0 */ }hj?hhjOGhjh}ri(jjh]h]h]h]ri(j;Xceh]uhM~hhh]ri(jb)ri}ri(hXMEMORYh}ri(h]h]riUnameriah]h]h]uhjih]rihXMEMORYriri}ri(hUhjiubahjlubhX ri}ri(hX hjiubjb)ri}ri(hX{h}ri(h]h]riU punctuationriah]h]h]uhjih]rihX{ri}ri(hUhjiubahjlubhX riri}ri(hX hjiubjb)ri}ri(hXIRAM_MEMh}ri(h]h]ri(UnameriUlabelrieh]h]h]uhjih]rihXIRAM_MEMriri}ri(hUhjiubahjlubjb)ri}ri(hX:h}ri(h]h]riU punctuationriah]h]h]uhjih]rjhX:rj}rj(hUhjiubahjlubhX rjrj}rj(hX hjiubjb)rj}rj(hXoh}rj(h]h]r jUnamer jah]h]h]uhjih]r jhXor j}r j(hUhjjubahjlubhX rj}rj(hX hjiubjb)rj}rj(hX=h}rj(h]h]rjUoperatorrjah]h]h]uhjih]rjhX=rj}rj(hUhjjubahjlubhX rj}rj(hX hjiubjb)rj}rj(hX 0x00800000h}rj(h]h]rj(UliteralrjUnumberrjUhexr jeh]h]h]uhjih]r!jhX 0x00800000r"jr#j}r$j(hUhjjubahjlubhX r%j}r&j(hX hjiubjb)r'j}r(j(hXlh}r)j(h]h]r*jUnamer+jah]h]h]uhjih]r,jhXlr-j}r.j(hUhj'jubahjlubhX r/j}r0j(hX hjiubjb)r1j}r2j(hX=h}r3j(h]h]r4jUoperatorr5jah]h]h]uhjih]r6jhX=r7j}r8j(hUhj1jubahjlubhX r9j}r:j(hX hjiubjb)r;j}rj(Uliteralr?jUnumberr@jUhexrAjeh]h]h]uhjih]rBjhX 0x00008000rCjrDj}rEj(hUhj;jubahjlubhX rFjrGj}rHj(hX hjiubjb)rIj}rJj(hX/* 32kB internal SRAM */h}rKj(h]h]rLj(UcommentrMjU multilinerNjeh]h]h]uhjih]rOjhX/* 32kB internal SRAM */rPjrQj}rRj(hUhjIjubahjlubhX rSjrTj}rUj(hX hjiubjb)rVj}rWj(hX OCMC_RAM1h}rXj(h]h]rYj(UnamerZjUlabelr[jeh]h]h]uhjih]r\jhX OCMC_RAM1r]jr^j}r_j(hUhjVjubahjlubjb)r`j}raj(hX:h}rbj(h]h]rcjU punctuationrdjah]h]h]uhjih]rejhX:rfj}rgj(hUhj`jubahjlubhX rhj}rij(hX hjiubjb)rjj}rkj(hXoh}rlj(h]h]rmjUnamernjah]h]h]uhjih]rojhXorpj}rqj(hUhjjjubahjlubhX rrj}rsj(hX hjiubjb)rtj}ruj(hX=h}rvj(h]h]rwjUoperatorrxjah]h]h]uhjih]ryjhX=rzj}r{j(hUhjtjubahjlubhX r|j}r}j(hX hjiubjb)r~j}rj(hX 0x40300000h}rj(h]h]rj(UliteralrjUnumberrjUhexrjeh]h]h]uhjih]rjhX 0x40300000rjrj}rj(hUhj~jubahjlubhX rj}rj(hX hjiubjb)rj}rj(hXlh}rj(h]h]rjUnamerjah]h]h]uhjih]rjhXlrj}rj(hUhjjubahjlubhX rj}rj(hX hjiubjb)rj}rj(hX=h}rj(h]h]rjUoperatorrjah]h]h]uhjih]rjhX=rj}rj(hUhjjubahjlubhX rj}rj(hX hjiubjb)rj}rj(hX 0x00080000h}rj(h]h]rj(UliteralrjUnumberrjUhexrjeh]h]h]uhjih]rjhX 0x00080000rjrj}rj(hUhjjubahjlubhX rjrj}rj(hX hjiubjb)rj}rj(hX/* 512kB L3 OCMC SRAM1 */h}rj(h]h]rj(UcommentrjU multilinerjeh]h]h]uhjih]rjhX/* 512kB L3 OCMC SRAM1 */rjrj}rj(hUhjjubahjlubhX rjrj}rj(hX hjiubjb)rj}rj(hX OCMC_RAM2h}rj(h]h]rj(UnamerjUlabelrjeh]h]h]uhjih]rjhX OCMC_RAM2rjrj}rj(hUhjjubahjlubjb)rj}rj(hX:h}rj(h]h]rjU punctuationrjah]h]h]uhjih]rjhX:rj}rj(hUhjjubahjlubhX rj}rj(hX hjiubjb)rj}rj(hXoh}rj(h]h]rjUnamerjah]h]h]uhjih]rjhXorj}rj(hUhjjubahjlubhX rj}rj(hX hjiubjb)rj}rj(hX=h}rj(h]h]rjUoperatorrjah]h]h]uhjih]rjhX=rj}rj(hUhjjubahjlubhX rj}rj(hX hjiubjb)rj}rj(hX 0x40400000h}rj(h]h]rj(UliteralrjUnumberrjUhexrjeh]h]h]uhjih]rjhX 0x40400000rjrj}rj(hUhjjubahjlubhX rj}rj(hX hjiubjb)rj}rj(hXlh}rj(h]h]rjUnamerjah]h]h]uhjih]rjhXlrj}rj(hUhjjubahjlubhX rj}rj(hX hjiubjb)rj}rj(hX=h}rj(h]h]rjUoperatorrjah]h]h]uhjih]rjhX=rj}rk(hUhjjubahjlubhX rk}rk(hX hjiubjb)rk}rk(hX 0x00100000h}rk(h]h]rk(UliteralrkUnumberrkUhexr keh]h]h]uhjih]r khX 0x00100000r kr k}r k(hUhjkubahjlubhX rkrk}rk(hX hjiubjb)rk}rk(hX/* 1MB L3 OCMC SRAM2 */h}rk(h]h]rk(UcommentrkU multilinerkeh]h]h]uhjih]rkhX/* 1MB L3 OCMC SRAM2 */rkrk}rk(hUhjkubahjlubhX rkrk}rk(hX hjiubjb)rk}rk(hX OCMC_RAM3h}r k(h]h]r!k(Unamer"kUlabelr#keh]h]h]uhjih]r$khX OCMC_RAM3r%kr&k}r'k(hUhjkubahjlubjb)r(k}r)k(hX:h}r*k(h]h]r+kU punctuationr,kah]h]h]uhjih]r-khX:r.k}r/k(hUhj(kubahjlubhX r0k}r1k(hX hjiubjb)r2k}r3k(hXoh}r4k(h]h]r5kUnamer6kah]h]h]uhjih]r7khXor8k}r9k(hUhj2kubahjlubhX r:k}r;k(hX hjiubjb)rk(h]h]r?kUoperatorr@kah]h]h]uhjih]rAkhX=rBk}rCk(hUhjhj?hhjOGhj;h}rk(UformatXhtmljjh]h]h]h]h]uhMhhh]rkhX
rkrk}rk(hUhjkubaubj;)rk}rk(hX
hj?hhjOGhj;h}rk(UformatXhtmljjh]h]h]h]h]uhMhhh]rkhX
rkrk}rk(hUhjkubaubj/)rk}rk(hXAThe linker command file is designed to place code in OCMC memory.rkhj?hhjOGhj3h}rk(h]h]h]h]h]uhMhhh]rlhXAThe linker command file is designed to place code in OCMC memory.rlrl}rl(hjkhjkubaubj))rl}rl(hXFor Keystone 2 devices, replace all the OCMC_RAM# regions in the lds file and replace it with MSMC memory section as shown below.hj?hhjOGhj,h}rl(h]h]h]h]h]uhNhhh]rlj/)rl}r l(hXFor Keystone 2 devices, replace all the OCMC_RAM# regions in the lds file and replace it with MSMC memory section as shown below.r lhjlhjOGhj3h}r l(h]h]h]h]h]uhMh]r lhXFor Keystone 2 devices, replace all the OCMC_RAM# regions in the lds file and replace it with MSMC memory section as shown below.r lrl}rl(hj lhjlubaubaubj)rl}rl(hXOMSMC  : o=0x0c000000, l = 0x00600000 /* 6MB Muticore shared memory */hj?hhjOGhjh}rl(jjh]h]h]h]h]uhMhhh]rlhXOMSMC  : o=0x0c000000, l = 0x00600000 /* 6MB Muticore shared memory */rlrl}rl(hUhjlubaubj))rl}rl(hXAn optional step is to modify the section definition in linker command file if you wish to introduce/partition existing sections or place the code in different memory section.hj?hhjOGhj,h}rl(h]h]h]h]h]uhNhhh]rlj/)rl}rl(hXAn optional step is to modify the section definition in linker command file if you wish to introduce/partition existing sections or place the code in different memory section.rlhjlhjOGhj3h}rl(h]h]h]h]h]uhMh]rlhXAn optional step is to modify the section definition in linker command file if you wish to introduce/partition existing sections or place the code in different memory section.r lr!l}r"l(hjlhjlubaubaubj)r#l}r$l(hUhj?hhjOGhjh}r%l(jU.jf5Kh]h]h]jUh]h]jjuhMhhh]r&ljX)r'l}r(l(hX7Now build the project to generate hello_world_dsp.out. hj#lhjOGhj[h}r)l(h]h]h]h]h]uhNhhh]r*lj/)r+l}r,l(hX6Now build the project to generate hello_world_dsp.out.r-lhj'lhjOGhj3h}r.l(h]h]h]h]h]uhMh]r/lhX6Now build the project to generate hello_world_dsp.out.r0lr1l}r2l(hj-lhj+lubaubaubaubj/)r3l}r4l(hX8. Launch target configurations using your emulator to connect to AM572X EVM as described in the :ref:`Getting Started Guide `hj?hhjOGhj3h}r5l(h]h]h]h]h]uhMhhh]r6l(hXa8. Launch target configurations using your emulator to connect to AM572X EVM as described in the r7lr8l}r9l(hXa8. Launch target configurations using your emulator to connect to AM572X EVM as described in the hj3lubjZ)r:l}r;l(hXM:ref:`Getting Started Guide `rlh]h]U refexplicith]h]h]j j uhMh]r?ljb)r@l}rAl(hjlXstd-refrDleh]h]h]uhj:lh]rElhXGetting Started GuiderFlrGl}rHl(hUhj@lubahjlubaubeubj/)rIl}rJl(hX9. In order to wake up the DSP1 core from A15, Go to Menu option Scripts->AM572x_Multicore_Initialization->DSP1SSClkEnable_API. Refer to the `Processor_SDK_RTOS_Setup_CCS `__.hj?hhjOGhj3h}rKl(h]h]h]h]h]uhMhhh]rLl(hX9. In order to wake up the DSP1 core from A15, Go to Menu option Scripts->AM572x_Multicore_Initialization->DSP1SSClkEnable_API. Refer to the rMlrNl}rOl(hX9. In order to wake up the DSP1 core from A15, Go to Menu option Scripts->AM572x_Multicore_Initialization->DSP1SSClkEnable_API. Refer to the hjIlubj)rPl}rQl(hXX`Processor_SDK_RTOS_Setup_CCS `__h}rRl(UnameXProcessor_SDK_RTOS_Setup_CCSjX5index_how_to_guides.html#connect-to-am57x-slave-coresh]h]h]h]h]uhjIlh]rSlhXProcessor_SDK_RTOS_Setup_CCSrTlrUl}rVl(hUhjPlubahjubhX.rWl}rXl(hX.hjIlubeubj/)rYl}rZl(hX/You should see the following log in the Consoler[lhj?hhjOGhj3h}r\l(h]h]h]h]h]uhMhhh]r]lhX/You should see the following log in the Consoler^lr_l}r`l(hj[lhjYlubaubj)ral}rbl(hXhCortexA15_0: GEL Output: --->>> DSP1SS Initialization is in progress ... <<<--- CortexA15_0: GEL Output: DEBUG: Clock is active ... CortexA15_0: GEL Output: DEBUG: Checking for data integrity in DSPSS L2RAM ... CortexA15_0: GEL Output: DEBUG: Data integrity check in GEM L2RAM is sucessful! CortexA15_0: GEL Output: --->>> DSP1SS Initialization is DONE! <<<---hj?hhjOGhjh}rcl(jjh]h]h]h]h]uhMhhh]rdlhXhCortexA15_0: GEL Output: --->>> DSP1SS Initialization is in progress ... <<<--- CortexA15_0: GEL Output: DEBUG: Clock is active ... CortexA15_0: GEL Output: DEBUG: Checking for data integrity in DSPSS L2RAM ... CortexA15_0: GEL Output: DEBUG: Data integrity check in GEM L2RAM is sucessful! CortexA15_0: GEL Output: --->>> DSP1SS Initialization is DONE! <<<---relrfl}rgl(hUhjalubaubj/)rhl}ril(hX10. Select and Connect to C66x_DSP1. Load and run hello_world_dsp.out file. You should see **Hello World** string displayed on console window.hj?hhjOGhj3h}rjl(h]h]h]h]h]uhMhhh]rkl(hX[10. Select and Connect to C66x_DSP1. Load and run hello_world_dsp.out file. You should see rllrml}rnl(hX[10. Select and Connect to C66x_DSP1. Load and run hello_world_dsp.out file. You should see hjhlubjW)rol}rpl(hX**Hello World**h}rql(h]h]h]h]h]uhjhlh]rrlhX Hello Worldrslrtl}rul(hUhjolubahj_ubhX$ string displayed on console window.rvlrwl}rxl(hX$ string displayed on console window.hjhlubeubj)ryl}rzl(hX).. Image:: ../images/Hello_world_dsp.jpg hj?hhjOGhjh}r{l(UuriX"rtos/../images/Hello_world_dsp.jpgr|lh]h]h]h]j}r}lU*j|lsh]uhMhhh]ubj)r~l}rl(hUhj?hhjOGhjh}rl(h]h]h]h]h]uhMhhh]rlj)rl}rl(hUjKhj~lhjOGhhh}rl(h]h]h]h]h]uhKhhh]ubaubeubh)rl}rl(hUjKhj=GhjOGhhh}rl(h]rljCah]h]h]rlUid54rlah]uhMhhh]rl(h)rl}rl(hX DSP C674xrlhjlhjOGhhh}rl(h]h]h]h]h]uhMhhh]rlhX DSP C674xrlrl}rl(hjlhjlubaubj/)rl}rl(hX=In this article, we take a look at creating bare-metal hello world examples for C674x core using pre-built templates in CCS. As a sample we will use the C6748 LCDK device to describe the steps but the same steps can be used for create hello world examples for C674x cores in the OMAPL13x/C647x/DA8x family of devices.rlhjlhjOGhj3h}rl(h]h]h]h]h]uhMhhh]rlhX=In this article, we take a look at creating bare-metal hello world examples for C674x core using pre-built templates in CCS. As a sample we will use the C6748 LCDK device to describe the steps but the same steps can be used for create hello world examples for C674x cores in the OMAPL13x/C647x/DA8x family of devices.rlrl}rl(hjlhjlubaubj))rl}rl(hXAll the C674x DSP cores on in OMAPL13x/C674x/DA8x have the same memory map so modification are limited to selecting the correct platform when generating the projecthjlhjOGhj,h}rl(h]h]h]h]h]uhNhhh]rlj/)rl}rl(hXAll the C674x DSP cores on in OMAPL13x/C674x/DA8x have the same memory map so modification are limited to selecting the correct platform when generating the projectrlhjlhjOGhj3h}rl(h]h]h]h]h]uhMh]rlhXAll the C674x DSP cores on in OMAPL13x/C674x/DA8x have the same memory map so modification are limited to selecting the correct platform when generating the projectrlrl}rl(hjlhjlubaubaubj)rl}rl(hUhjlhjOGhjh}rl(jU.h]h]h]jUh]h]jjuhMhhh]rl(jX)rl}rl(hX>Start CCS and create a work space for generating the project. hjlhjOGhj[h}rl(h]h]h]h]h]uhNhhh]rlj/)rl}rl(hX=Start CCS and create a work space for generating the project.rlhjlhjOGhj3h}rl(h]h]h]h]h]uhMh]rlhX=Start CCS and create a work space for generating the project.rlrl}rl(hjlhjlubaubaubjX)rl}rl(hX9Click on File menu option and select New--> CCS Project. hjlhjOGhj[h}rl(h]h]h]h]h]uhNhhh]rlj/)rl}rl(hX8Click on File menu option and select New--> CCS Project.rlhjlhjOGhj3h}rl(h]h]h]h]h]uhMh]rlhX8Click on File menu option and select New--> CCS Project.rlrl}rl(hjlhjlubaubaubjX)rl}rl(hXCSelect Target as OMAPLx -C674xx and LCDK674x as shown in the image hjlhjOGhj[h}rl(h]h]h]h]h]uhNhhh]rlj/)rl}rl(hXBSelect Target as OMAPLx -C674xx and LCDK674x as shown in the imagerlhjlhjOGhj3h}rl(h]h]h]h]h]uhMh]rlhXBSelect Target as OMAPLx -C674xx and LCDK674x as shown in the imagerlrl}rl(hjlhjlubaubaubeubj/)rl}rl(hX4. Select **C67XX [C6000]** DSP setting in the options below and provide name of the project as "hello_world_lcdk674x" and use default Advanced settings for the project. Click Finish after you are done to allow CCS to auto generate the project from the template **Basic Examples-> Hello World**. The Default settings uses "TI CG Tools compiler 8.x.x" tool chain for C674x and sets the build for **little** endian **ELF** binary for the C674x core.hjlhjOGhj3h}rl(h]h]h]h]h]uhMhhh]rl(hX 4. Select rlrl}rl(hX 4. Select hjlubjW)rl}rl(hX**C67XX [C6000]**h}rl(h]h]h]h]h]uhjlh]rlhX C67XX [C6000]rlrl}rl(hUhjlubahj_ubhX DSP setting in the options below and provide name of the project as "hello_world_lcdk674x" and use default Advanced settings for the project. Click Finish after you are done to allow CCS to auto generate the project from the template rlrl}rl(hX DSP setting in the options below and provide name of the project as "hello_world_lcdk674x" and use default Advanced settings for the project. Click Finish after you are done to allow CCS to auto generate the project from the template hjlubjW)rl}rl(hX **Basic Examples-> Hello World**h}rl(h]h]h]h]h]uhjlh]rlhXBasic Examples-> Hello Worldrlrl}rl(hUhjlubahj_ubhXe. The Default settings uses "TI CG Tools compiler 8.x.x" tool chain for C674x and sets the build for rlrl}rl(hXe. The Default settings uses "TI CG Tools compiler 8.x.x" tool chain for C674x and sets the build for hjlubjW)rl}rl(hX **little**h}rl(h]h]h]h]h]uhjlh]rlhXlittlerlrl}rl(hUhjlubahj_ubhX endian rlrl}rl(hX endian hjlubjW)rl}rl(hX**ELF**h}rl(h]h]h]h]h]uhjlh]rlhXELFrlrl}rl(hUhjlubahj_ubhX binary for the C674x core.rlrl}rl(hX binary for the C674x core.hjlubeubj)rl}rm(hXB.. Image:: ../images/Baremetal_helloWorld_ProjectCreate_step1.png hjlhjOGhjh}rm(UuriX;rtos/../images/Baremetal_helloWorld_ProjectCreate_step1.pngrmh]h]h]h]j}rmU*jmsh]uhMhhh]ubj/)rm}rm(hXz5. The generated CCS project contains only one source file **hello.c**. Ensure the main.c file contains the following codehjlhjOGhj3h}rm(h]h]h]h]h]uhMhhh]rm(hX;5. The generated CCS project contains only one source file rmr m}r m(hX;5. The generated CCS project contains only one source file hjmubjW)r m}r m(hX **hello.c**h}r m(h]h]h]h]h]uhjmh]rmhXhello.crmrm}rm(hUhj mubahj_ubhX4. Ensure the main.c file contains the following codermrm}rm(hX4. Ensure the main.c file contains the following codehjmubeubj;)rm}rm(hX7
hjlhjOGhj;h}rm(UformatXhtmljjh]h]h]h]h]uhMhhh]rmhX7
rmrm}rm(hUhjmubaubj;)rm}rm(hX
hjlhjOGhj;h}rm(UformatXhtmljjh]h]h]h]h]uhMhhh]rmhX
r mr!m}r"m(hUhjmubaubj)r#m}r$m(hXi /* * hello.c */ #include int main(void) { printf("Hello_world\n"); return 0; }hjlhjOGhjh}r%m(jjh]h]h]h]r&m(j;Xceh]uhMhhh]r'm(hX r(m}r)m(hX hj#mubjb)r*m}r+m(hX/* * hello.c */h}r,m(h]h]r-m(Ucommentr.mU multiliner/meh]h]h]uhj#mh]r0mhX/* * hello.c */r1mr2m}r3m(hUhj*mubahjlubhX r4mr5m}r6m(hX hj#mubjb)r7m}r8m(hX#includeh}r9m(h]h]r:m(Ucommentr;mUpreprocrmr?m}r@m(hUhj7mubahjlubhX rAm}rBm(hX hj#mubjb)rCm}rDm(hX h}rEm(h]h]rFm(UcommentrGmU preprocfilerHmeh]h]h]uhj#mh]rImhX rJmrKm}rLm(hUhjCmubahjlubjb)rMm}rNm(hX h}rOm(h]h]rPm(UcommentrQmUpreprocrRmeh]h]h]uhj#mh]rSmhX rTm}rUm(hUhjMmubahjlubhX rVmrWm}rXm(hX hj#mubjb)rYm}rZm(hXinth}r[m(h]h]r\m(Ukeywordr]mUtyper^meh]h]h]uhj#mh]r_mhXintr`mram}rbm(hUhjYmubahjlubhX rcm}rdm(hX hj#mubjb)rem}rfm(hXmainh}rgm(h]h]rhm(UnamerimUfunctionrjmeh]h]h]uhj#mh]rkmhXmainrlmrmm}rnm(hUhjemubahjlubjb)rom}rpm(hX(h}rqm(h]h]rrmU punctuationrsmah]h]h]uhj#mh]rtmhX(rum}rvm(hUhjomubahjlubjb)rwm}rxm(hXvoidh}rym(h]h]rzm(Ukeywordr{mUtyper|meh]h]h]uhj#mh]r}mhXvoidr~mrm}rm(hUhjwmubahjlubjb)rm}rm(hX)h}rm(h]h]rmU punctuationrmah]h]h]uhj#mh]rmhX)rm}rm(hUhjmubahjlubhX rm}rm(hX hj#mubjb)rm}rm(hX{h}rm(h]h]rmU punctuationrmah]h]h]uhj#mh]rmhX{rm}rm(hUhjmubahjlubhX rmrm}rm(hX hj#mubjb)rm}rm(hXprintfh}rm(h]h]rmUnamermah]h]h]uhj#mh]rmhXprintfrmrm}rm(hUhjmubahjlubjb)rm}rm(hX(h}rm(h]h]rmU punctuationrmah]h]h]uhj#mh]rmhX(rm}rm(hUhjmubahjlubjb)rm}rm(hX "Hello_worldh}rm(h]h]rm(UliteralrmUstringrmeh]h]h]uhj#mh]rmhX "Hello_worldrmrm}rm(hUhjmubahjlubjb)rm}rm(hX\nh}rm(h]h]rm(UliteralrmUstringrmUescapermeh]h]h]uhj#mh]rmhX\nrmrm}rm(hUhjmubahjlubjb)rm}rm(hX"h}rm(h]h]rm(UliteralrmUstringrmeh]h]h]uhj#mh]rmhX"rm}rm(hUhjmubahjlubjb)rm}rm(hX);h}rm(h]h]rmU punctuationrmah]h]h]uhj#mh]rmhX);rmrm}rm(hUhjmubahjlubhX rmrm}rm(hX hj#mubjb)rm}rm(hXreturnh}rm(h]h]rmUkeywordrmah]h]h]uhj#mh]rmhXreturnrmrm}rm(hUhjmubahjlubhX rm}rm(hX hj#mubjb)rm}rm(hX0h}rm(h]h]rm(UliteralrmUnumberrmUintegerrmeh]h]h]uhj#mh]rmhX0rm}rm(hUhjmubahjlubjb)rm}rm(hX;h}rm(h]h]rmU punctuationrmah]h]h]uhj#mh]rmhX;rm}rm(hUhjmubahjlubhX rm}rm(hX hj#mubjb)rm}rm(hX}h}rm(h]h]rmU punctuationrmah]h]h]uhj#mh]rmhX}rm}rm(hUhjmubahjlubeubj;)rm}rm(hX
hjlhjOGhj;h}rm(UformatXhtmljjh]h]h]h]h]uhMhhh]rmhX
rmrm}rm(hUhjmubaubj;)rm}rn(hX
hjlhjOGhj;h}rn(UformatXhtmljjh]h]h]h]h]uhMhhh]rnhX
rnrn}rn(hUhjmubaubj/)rn}rn(hX6. CCS includes a default linker command file(C6748.cmd) for the C674x DSP core which will place code into appropriate device memory. The linker command file has the following memory sections.rnhjlhjOGhj3h}r n(h]h]h]h]h]uhMhhh]r nhX6. CCS includes a default linker command file(C6748.cmd) for the C674x DSP core which will place code into appropriate device memory. The linker command file has the following memory sections.r nr n}r n(hjnhjnubaubj;)rn}rn(hX7
hjlhjOGhj;h}rn(UformatXhtmljjh]h]h]h]h]uhMhhh]rnhX7
rnrn}rn(hUhjnubaubj;)rn}rn(hX
hjlhjOGhj;h}rn(UformatXhtmljjh]h]h]h]h]uhMhhh]rnhX
rnrn}rn(hUhjnubaubj)rn}rn(hXMEMORY { DSPL2ROM o = 0x00700000 l = 0x00100000 /* 1MB L2 Internal ROM */ DSPL2RAM o = 0x00800000 l = 0x00040000 /* 256kB L2 Internal RAM */ DSPL1PRAM o = 0x00E00000 l = 0x00008000 /* 32kB L1 Internal Program RAM */ DSPL1DRAM o = 0x00F00000 l = 0x00008000 /* 32kB L1 Internal Data RAM */ SHDSPL2ROM o = 0x11700000 l = 0x00100000 /* 1MB L2 Shared Internal ROM */ SHDSPL2RAM o = 0x11800000 l = 0x00040000 /* 256kB L2 Shared Internal RAM */ SHDSPL1PRAM o = 0x11E00000 l = 0x00008000 /* 32kB L1 Shared Internal Program RAM */ SHDSPL1DRAM o = 0x11F00000 l = 0x00008000 /* 32kB L1 Shared Internal Data RAM */ EMIFACS0 o = 0x40000000 l = 0x20000000 /* 512MB SDRAM Data (CS0) */ EMIFACS2 o = 0x60000000 l = 0x02000000 /* 32MB Async Data (CS2) */ EMIFACS3 o = 0x62000000 l = 0x02000000 /* 32MB Async Data (CS3) */ EMIFACS4 o = 0x64000000 l = 0x02000000 /* 32MB Async Data (CS4) */ EMIFACS5 o = 0x66000000 l = 0x02000000 /* 32MB Async Data (CS5) */ SHRAM o = 0x80000000 l = 0x00020000 /* 128kB Shared RAM */ DDR2 o = 0xC0000000 l = 0x20000000 /* 512MB DDR2 Data */ }hjlhjOGhjh}rn(jjh]h]h]h]rn(j;Xceh]uhMhhh]r n(jb)r!n}r"n(hXMEMORYh}r#n(h]h]r$nUnamer%nah]h]h]uhjnh]r&nhXMEMORYr'nr(n}r)n(hUhj!nubahjlubhX r*n}r+n(hX hjnubjb)r,n}r-n(hX{h}r.n(h]h]r/nU punctuationr0nah]h]h]uhjnh]r1nhX{r2n}r3n(hUhj,nubahjlubhX r4nr5n}r6n(hX hjnubjb)r7n}r8n(hXDSPL2ROMh}r9n(h]h]r:nUnamer;nah]h]h]uhjnh]rn}r?n(hUhj7nubahjlubhX r@nrAn}rBn(hX hjnubjb)rCn}rDn(hXoh}rEn(h]h]rFnUnamerGnah]h]h]uhjnh]rHnhXorIn}rJn(hUhjCnubahjlubhX rKn}rLn(hX hjnubjb)rMn}rNn(hX=h}rOn(h]h]rPnUoperatorrQnah]h]h]uhjnh]rRnhX=rSn}rTn(hUhjMnubahjlubhX rUn}rVn(hX hjnubjb)rWn}rXn(hX 0x00700000h}rYn(h]h]rZn(Uliteralr[nUnumberr\nUhexr]neh]h]h]uhjnh]r^nhX 0x00700000r_nr`n}ran(hUhjWnubahjlubhX rbnrcn}rdn(hX hjnubjb)ren}rfn(hXlh}rgn(h]h]rhnUnamerinah]h]h]uhjnh]rjnhXlrkn}rln(hUhjenubahjlubhX rmn}rnn(hX hjnubjb)ron}rpn(hX=h}rqn(h]h]rrnUoperatorrsnah]h]h]uhjnh]rtnhX=run}rvn(hUhjonubahjlubhX rwn}rxn(hX hjnubjb)ryn}rzn(hX 0x00100000h}r{n(h]h]r|n(Uliteralr}nUnumberr~nUhexrneh]h]h]uhjnh]rnhX 0x00100000rnrn}rn(hUhjynubahjlubhX rnrn}rn(hX hjnubjb)rn}rn(hX/* 1MB L2 Internal ROM */h}rn(h]h]rn(UcommentrnU multilinerneh]h]h]uhjnh]rnhX/* 1MB L2 Internal ROM */rnrn}rn(hUhjnubahjlubhX rnrn}rn(hX hjnubjb)rn}rn(hXDSPL2RAMh}rn(h]h]rnUnamernah]h]h]uhjnh]rnhXDSPL2RAMrnrn}rn(hUhjnubahjlubhX rnrn}rn(hX hjnubjb)rn}rn(hXoh}rn(h]h]rnUnamernah]h]h]uhjnh]rnhXorn}rn(hUhjnubahjlubhX rn}rn(hX hjnubjb)rn}rn(hX=h}rn(h]h]rnUoperatorrnah]h]h]uhjnh]rnhX=rn}rn(hUhjnubahjlubhX rn}rn(hX hjnubjb)rn}rn(hX 0x00800000h}rn(h]h]rn(UliteralrnUnumberrnUhexrneh]h]h]uhjnh]rnhX 0x00800000rnrn}rn(hUhjnubahjlubhX rnrn}rn(hX hjnubjb)rn}rn(hXlh}rn(h]h]rnUnamernah]h]h]uhjnh]rnhXlrn}rn(hUhjnubahjlubhX rn}rn(hX hjnubjb)rn}rn(hX=h}rn(h]h]rnUoperatorrnah]h]h]uhjnh]rnhX=rn}rn(hUhjnubahjlubhX rn}rn(hX hjnubjb)rn}rn(hX 0x00040000h}rn(h]h]rn(UliteralrnUnumberrnUhexrneh]h]h]uhjnh]rnhX 0x00040000rnrn}rn(hUhjnubahjlubhX rnrn}rn(hX hjnubjb)rn}rn(hX/* 256kB L2 Internal RAM */h}rn(h]h]rn(UcommentrnU multilinerneh]h]h]uhjnh]rnhX/* 256kB L2 Internal RAM */rnrn}rn(hUhjnubahjlubhX rnrn}rn(hX hjnubjb)rn}rn(hX DSPL1PRAMh}rn(h]h]rnUnamernah]h]h]uhjnh]rnhX DSPL1PRAMrnrn}rn(hUhjnubahjlubhX rnrn}rn(hX hjnubjb)rn}rn(hXoh}rn(h]h]roUnameroah]h]h]uhjnh]rohXoro}ro(hUhjnubahjlubhX ro}ro(hX hjnubjb)ro}ro(hX=h}r o(h]h]r oUoperatorr oah]h]h]uhjnh]r ohX=r o}ro(hUhjoubahjlubhX ro}ro(hX hjnubjb)ro}ro(hX 0x00E00000h}ro(h]h]ro(UliteralroUnumberroUhexroeh]h]h]uhjnh]rohX 0x00E00000roro}ro(hUhjoubahjlubhX roro}ro(hX hjnubjb)ro}r o(hXlh}r!o(h]h]r"oUnamer#oah]h]h]uhjnh]r$ohXlr%o}r&o(hUhjoubahjlubhX r'o}r(o(hX hjnubjb)r)o}r*o(hX=h}r+o(h]h]r,oUoperatorr-oah]h]h]uhjnh]r.ohX=r/o}r0o(hUhj)oubahjlubhX r1o}r2o(hX hjnubjb)r3o}r4o(hX 0x00008000h}r5o(h]h]r6o(Uliteralr7oUnumberr8oUhexr9oeh]h]h]uhjnh]r:ohX 0x00008000r;oror?o}r@o(hX hjnubjb)rAo}rBo(hX"/* 32kB L1 Internal Program RAM */h}rCo(h]h]rDo(UcommentrEoU multilinerFoeh]h]h]uhjnh]rGohX"/* 32kB L1 Internal Program RAM */rHorIo}rJo(hUhjAoubahjlubhX rKorLo}rMo(hX hjnubjb)rNo}rOo(hX DSPL1DRAMh}rPo(h]h]rQoUnamerRoah]h]h]uhjnh]rSohX DSPL1DRAMrTorUo}rVo(hUhjNoubahjlubhX rWorXo}rYo(hX hjnubjb)rZo}r[o(hXoh}r\o(h]h]r]oUnamer^oah]h]h]uhjnh]r_ohXor`o}rao(hUhjZoubahjlubhX rbo}rco(hX hjnubjb)rdo}reo(hX=h}rfo(h]h]rgoUoperatorrhoah]h]h]uhjnh]riohX=rjo}rko(hUhjdoubahjlubhX rlo}rmo(hX hjnubjb)rno}roo(hX 0x00F00000h}rpo(h]h]rqo(UliteralrroUnumberrsoUhexrtoeh]h]h]uhjnh]ruohX 0x00F00000rvorwo}rxo(hUhjnoubahjlubhX ryorzo}r{o(hX hjnubjb)r|o}r}o(hXlh}r~o(h]h]roUnameroah]h]h]uhjnh]rohXlro}ro(hUhj|oubahjlubhX ro}ro(hX hjnubjb)ro}ro(hX=h}ro(h]h]roUoperatorroah]h]h]uhjnh]rohX=ro}ro(hUhjoubahjlubhX ro}ro(hX hjnubjb)ro}ro(hX 0x00008000h}ro(h]h]ro(UliteralroUnumberroUhexroeh]h]h]uhjnh]rohX 0x00008000roro}ro(hUhjoubahjlubhX roro}ro(hX hjnubjb)ro}ro(hX/* 32kB L1 Internal Data RAM */h}ro(h]h]ro(UcommentroU multilineroeh]h]h]uhjnh]rohX/* 32kB L1 Internal Data RAM */roro}ro(hUhjoubahjlubhX roro}ro(hX hjnubjb)ro}ro(hX SHDSPL2ROMh}ro(h]h]roUnameroah]h]h]uhjnh]rohX SHDSPL2ROMroro}ro(hUhjoubahjlubhX roro}ro(hX hjnubjb)ro}ro(hXoh}ro(h]h]roUnameroah]h]h]uhjnh]rohXoro}ro(hUhjoubahjlubhX ro}ro(hX hjnubjb)ro}ro(hX=h}ro(h]h]roUoperatorroah]h]h]uhjnh]rohX=ro}ro(hUhjoubahjlubhX ro}ro(hX hjnubjb)ro}ro(hX 0x11700000h}ro(h]h]ro(UliteralroUnumberroUhexroeh]h]h]uhjnh]rohX 0x11700000roro}ro(hUhjoubahjlubhX roro}ro(hX hjnubjb)ro}ro(hXlh}ro(h]h]roUnameroah]h]h]uhjnh]rohXlro}ro(hUhjoubahjlubhX ro}ro(hX hjnubjb)ro}ro(hX=h}ro(h]h]roUoperatorroah]h]h]uhjnh]rohX=ro}ro(hUhjoubahjlubhX ro}ro(hX hjnubjb)ro}ro(hX 0x00100000h}ro(h]h]ro(UliteralroUnumberroUhexroeh]h]h]uhjnh]rohX 0x00100000roro}ro(hUhjoubahjlubhX roro}ro(hX hjnubjb)ro}ro(hX /* 1MB L2 Shared Internal ROM */h}ro(h]h]ro(UcommentroU multilinerpeh]h]h]uhjnh]rphX /* 1MB L2 Shared Internal ROM */rprp}rp(hUhjoubahjlubhX rprp}rp(hX hjnubjb)rp}r p(hX SHDSPL2RAMh}r p(h]h]r pUnamer pah]h]h]uhjnh]r phX SHDSPL2RAMrprp}rp(hUhjpubahjlubhX rprp}rp(hX hjnubjb)rp}rp(hXoh}rp(h]h]rpUnamerpah]h]h]uhjnh]rphXorp}rp(hUhjpubahjlubhX rp}rp(hX hjnubjb)rp}rp(hX=h}r p(h]h]r!pUoperatorr"pah]h]h]uhjnh]r#phX=r$p}r%p(hUhjpubahjlubhX r&p}r'p(hX hjnubjb)r(p}r)p(hX 0x11800000h}r*p(h]h]r+p(Uliteralr,pUnumberr-pUhexr.peh]h]h]uhjnh]r/phX 0x11800000r0pr1p}r2p(hUhj(pubahjlubhX r3pr4p}r5p(hX hjnubjb)r6p}r7p(hXlh}r8p(h]h]r9pUnamer:pah]h]h]uhjnh]r;phXlrp}r?p(hX hjnubjb)r@p}rAp(hX=h}rBp(h]h]rCpUoperatorrDpah]h]h]uhjnh]rEphX=rFp}rGp(hUhj@pubahjlubhX rHp}rIp(hX hjnubjb)rJp}rKp(hX 0x00040000h}rLp(h]h]rMp(UliteralrNpUnumberrOpUhexrPpeh]h]h]uhjnh]rQphX 0x00040000rRprSp}rTp(hUhjJpubahjlubhX rUprVp}rWp(hX hjnubjb)rXp}rYp(hX"/* 256kB L2 Shared Internal RAM */h}rZp(h]h]r[p(Ucommentr\pU multiliner]peh]h]h]uhjnh]r^phX"/* 256kB L2 Shared Internal RAM */r_pr`p}rap(hUhjXpubahjlubhX rbprcp}rdp(hX hjnubjb)rep}rfp(hX SHDSPL1PRAMh}rgp(h]h]rhpUnameripah]h]h]uhjnh]rjphX SHDSPL1PRAMrkprlp}rmp(hUhjepubahjlubhX rnprop}rpp(hX hjnubjb)rqp}rrp(hXoh}rsp(h]h]rtpUnamerupah]h]h]uhjnh]rvphXorwp}rxp(hUhjqpubahjlubhX ryp}rzp(hX hjnubjb)r{p}r|p(hX=h}r}p(h]h]r~pUoperatorrpah]h]h]uhjnh]rphX=rp}rp(hUhj{pubahjlubhX rp}rp(hX hjnubjb)rp}rp(hX 0x11E00000h}rp(h]h]rp(UliteralrpUnumberrpUhexrpeh]h]h]uhjnh]rphX 0x11E00000rprp}rp(hUhjpubahjlubhX rprp}rp(hX hjnubjb)rp}rp(hXlh}rp(h]h]rpUnamerpah]h]h]uhjnh]rphXlrp}rp(hUhjpubahjlubhX rp}rp(hX hjnubjb)rp}rp(hX=h}rp(h]h]rpUoperatorrpah]h]h]uhjnh]rphX=rp}rp(hUhjpubahjlubhX rp}rp(hX hjnubjb)rp}rp(hX 0x00008000h}rp(h]h]rp(UliteralrpUnumberrpUhexrpeh]h]h]uhjnh]rphX 0x00008000rprp}rp(hUhjpubahjlubhX rprp}rp(hX hjnubjb)rp}rp(hX)/* 32kB L1 Shared Internal Program RAM */h}rp(h]h]rp(UcommentrpU multilinerpeh]h]h]uhjnh]rphX)/* 32kB L1 Shared Internal Program RAM */rprp}rp(hUhjpubahjlubhX rprp}rp(hX hjnubjb)rp}rp(hX SHDSPL1DRAMh}rp(h]h]rpUnamerpah]h]h]uhjnh]rphX SHDSPL1DRAMrprp}rp(hUhjpubahjlubhX rprp}rp(hX hjnubjb)rp}rp(hXoh}rp(h]h]rpUnamerpah]h]h]uhjnh]rphXorp}rp(hUhjpubahjlubhX rp}rp(hX hjnubjb)rp}rp(hX=h}rp(h]h]rpUoperatorrpah]h]h]uhjnh]rphX=rp}rp(hUhjpubahjlubhX rp}rp(hX hjnubjb)rp}rp(hX 0x11F00000h}rp(h]h]rp(UliteralrpUnumberrpUhexrpeh]h]h]uhjnh]rphX 0x11F00000rprp}rp(hUhjpubahjlubhX rprp}rp(hX hjnubjb)rp}rp(hXlh}rp(h]h]rpUnamerpah]h]h]uhjnh]rphXlrp}rp(hUhjpubahjlubhX rp}rp(hX hjnubjb)rp}rp(hX=h}rp(h]h]rpUoperatorrpah]h]h]uhjnh]rphX=rq}rq(hUhjpubahjlubhX rq}rq(hX hjnubjb)rq}rq(hX 0x00008000h}rq(h]h]rq(UliteralrqUnumberr qUhexr qeh]h]h]uhjnh]r qhX 0x00008000r qr q}rq(hUhjqubahjlubhX rqrq}rq(hX hjnubjb)rq}rq(hX&/* 32kB L1 Shared Internal Data RAM */h}rq(h]h]rq(UcommentrqU multilinerqeh]h]h]uhjnh]rqhX&/* 32kB L1 Shared Internal Data RAM */rqrq}rq(hUhjqubahjlubhX rqrq}rq(hX hjnubjb)rq}r q(hXEMIFACS0h}r!q(h]h]r"qUnamer#qah]h]h]uhjnh]r$qhXEMIFACS0r%qr&q}r'q(hUhjqubahjlubhX r(qr)q}r*q(hX hjnubjb)r+q}r,q(hXoh}r-q(h]h]r.qUnamer/qah]h]h]uhjnh]r0qhXor1q}r2q(hUhj+qubahjlubhX r3q}r4q(hX hjnubjb)r5q}r6q(hX=h}r7q(h]h]r8qUoperatorr9qah]h]h]uhjnh]r:qhX=r;q}rq(hX hjnubjb)r?q}r@q(hX 0x40000000h}rAq(h]h]rBq(UliteralrCqUnumberrDqUhexrEqeh]h]h]uhjnh]rFqhX 0x40000000rGqrHq}rIq(hUhj?qubahjlubhX rJqrKq}rLq(hX hjnubjb)rMq}rNq(hXlh}rOq(h]h]rPqUnamerQqah]h]h]uhjnh]rRqhXlrSq}rTq(hUhjMqubahjlubhX rUq}rVq(hX hjnubjb)rWq}rXq(hX=h}rYq(h]h]rZqUoperatorr[qah]h]h]uhjnh]r\qhX=r]q}r^q(hUhjWqubahjlubhX r_q}r`q(hX hjnubjb)raq}rbq(hX 0x20000000h}rcq(h]h]rdq(UliteralreqUnumberrfqUhexrgqeh]h]h]uhjnh]rhqhX 0x20000000riqrjq}rkq(hUhjaqubahjlubhX rlqrmq}rnq(hX hjnubjb)roq}rpq(hX/* 512MB SDRAM Data (CS0) */h}rqq(h]h]rrq(UcommentrsqU multilinertqeh]h]h]uhjnh]ruqhX/* 512MB SDRAM Data (CS0) */rvqrwq}rxq(hUhjoqubahjlubhX ryqrzq}r{q(hX hjnubjb)r|q}r}q(hXEMIFACS2h}r~q(h]h]rqUnamerqah]h]h]uhjnh]rqhXEMIFACS2rqrq}rq(hUhj|qubahjlubhX rqrq}rq(hX hjnubjb)rq}rq(hXoh}rq(h]h]rqUnamerqah]h]h]uhjnh]rqhXorq}rq(hUhjqubahjlubhX rq}rq(hX hjnubjb)rq}rq(hX=h}rq(h]h]rqUoperatorrqah]h]h]uhjnh]rqhX=rq}rq(hUhjqubahjlubhX rq}rq(hX hjnubjb)rq}rq(hX 0x60000000h}rq(h]h]rq(UliteralrqUnumberrqUhexrqeh]h]h]uhjnh]rqhX 0x60000000rqrq}rq(hUhjqubahjlubhX rqrq}rq(hX hjnubjb)rq}rq(hXlh}rq(h]h]rqUnamerqah]h]h]uhjnh]rqhXlrq}rq(hUhjqubahjlubhX rq}rq(hX hjnubjb)rq}rq(hX=h}rq(h]h]rqUoperatorrqah]h]h]uhjnh]rqhX=rq}rq(hUhjqubahjlubhX rq}rq(hX hjnubjb)rq}rq(hX 0x02000000h}rq(h]h]rq(UliteralrqUnumberrqUhexrqeh]h]h]uhjnh]rqhX 0x02000000rqrq}rq(hUhjqubahjlubhX rqrq}rq(hX hjnubjb)rq}rq(hX/* 32MB Async Data (CS2) */h}rq(h]h]rq(UcommentrqU multilinerqeh]h]h]uhjnh]rqhX/* 32MB Async Data (CS2) */rqrq}rq(hUhjqubahjlubhX rqrq}rq(hX hjnubjb)rq}rq(hXEMIFACS3h}rq(h]h]rqUnamerqah]h]h]uhjnh]rqhXEMIFACS3rqrq}rq(hUhjqubahjlubhX rqrq}rq(hX hjnubjb)rq}rq(hXoh}rq(h]h]rqUnamerqah]h]h]uhjnh]rqhXorq}rq(hUhjqubahjlubhX rq}rq(hX hjnubjb)rq}rq(hX=h}rq(h]h]rqUoperatorrqah]h]h]uhjnh]rqhX=rq}rq(hUhjqubahjlubhX rq}rq(hX hjnubjb)rq}rq(hX 0x62000000h}rq(h]h]rq(UliteralrqUnumberrqUhexrqeh]h]h]uhjnh]rrhX 0x62000000rrrr}rr(hUhjqubahjlubhX rrrr}rr(hX hjnubjb)rr}rr(hXlh}r r(h]h]r rUnamer rah]h]h]uhjnh]r rhXlr r}rr(hUhjrubahjlubhX rr}rr(hX hjnubjb)rr}rr(hX=h}rr(h]h]rrUoperatorrrah]h]h]uhjnh]rrhX=rr}rr(hUhjrubahjlubhX rr}rr(hX hjnubjb)rr}rr(hX 0x02000000h}rr(h]h]rr(UliteralrrUnumberr rUhexr!reh]h]h]uhjnh]r"rhX 0x02000000r#rr$r}r%r(hUhjrubahjlubhX r&rr'r}r(r(hX hjnubjb)r)r}r*r(hX/* 32MB Async Data (CS3) */h}r+r(h]h]r,r(Ucommentr-rU multiliner.reh]h]h]uhjnh]r/rhX/* 32MB Async Data (CS3) */r0rr1r}r2r(hUhj)rubahjlubhX r3rr4r}r5r(hX hjnubjb)r6r}r7r(hXEMIFACS4h}r8r(h]h]r9rUnamer:rah]h]h]uhjnh]r;rhXEMIFACS4rr(hUhj6rubahjlubhX r?rr@r}rAr(hX hjnubjb)rBr}rCr(hXoh}rDr(h]h]rErUnamerFrah]h]h]uhjnh]rGrhXorHr}rIr(hUhjBrubahjlubhX rJr}rKr(hX hjnubjb)rLr}rMr(hX=h}rNr(h]h]rOrUoperatorrPrah]h]h]uhjnh]rQrhX=rRr}rSr(hUhjLrubahjlubhX rTr}rUr(hX hjnubjb)rVr}rWr(hX 0x64000000h}rXr(h]h]rYr(UliteralrZrUnumberr[rUhexr\reh]h]h]uhjnh]r]rhX 0x64000000r^rr_r}r`r(hUhjVrubahjlubhX rarrbr}rcr(hX hjnubjb)rdr}rer(hXlh}rfr(h]h]rgrUnamerhrah]h]h]uhjnh]rirhXlrjr}rkr(hUhjdrubahjlubhX rlr}rmr(hX hjnubjb)rnr}ror(hX=h}rpr(h]h]rqrUoperatorrrrah]h]h]uhjnh]rsrhX=rtr}rur(hUhjnrubahjlubhX rvr}rwr(hX hjnubjb)rxr}ryr(hX 0x02000000h}rzr(h]h]r{r(Uliteralr|rUnumberr}rUhexr~reh]h]h]uhjnh]rrhX 0x02000000rrrr}rr(hUhjxrubahjlubhX rrrr}rr(hX hjnubjb)rr}rr(hX/* 32MB Async Data (CS4) */h}rr(h]h]rr(UcommentrrU multilinerreh]h]h]uhjnh]rrhX/* 32MB Async Data (CS4) */rrrr}rr(hUhjrubahjlubhX rrrr}rr(hX hjnubjb)rr}rr(hXEMIFACS5h}rr(h]h]rrUnamerrah]h]h]uhjnh]rrhXEMIFACS5rrrr}rr(hUhjrubahjlubhX rrrr}rr(hX hjnubjb)rr}rr(hXoh}rr(h]h]rrUnamerrah]h]h]uhjnh]rrhXorr}rr(hUhjrubahjlubhX rr}rr(hX hjnubjb)rr}rr(hX=h}rr(h]h]rrUoperatorrrah]h]h]uhjnh]rrhX=rr}rr(hUhjrubahjlubhX rr}rr(hX hjnubjb)rr}rr(hX 0x66000000h}rr(h]h]rr(UliteralrrUnumberrrUhexrreh]h]h]uhjnh]rrhX 0x66000000rrrr}rr(hUhjrubahjlubhX rrrr}rr(hX hjnubjb)rr}rr(hXlh}rr(h]h]rrUnamerrah]h]h]uhjnh]rrhXlrr}rr(hUhjrubahjlubhX rr}rr(hX hjnubjb)rr}rr(hX=h}rr(h]h]rrUoperatorrrah]h]h]uhjnh]rrhX=rr}rr(hUhjrubahjlubhX rr}rr(hX hjnubjb)rr}rr(hX 0x02000000h}rr(h]h]rr(UliteralrrUnumberrrUhexrreh]h]h]uhjnh]rrhX 0x02000000rrrr}rr(hUhjrubahjlubhX rrrr}rr(hX hjnubjb)rr}rr(hX/* 32MB Async Data (CS5) */h}rr(h]h]rr(UcommentrrU multilinerreh]h]h]uhjnh]rrhX/* 32MB Async Data (CS5) */rrrr}rr(hUhjrubahjlubhX rrrr}rr(hX hjnubjb)rr}rr(hXSHRAMh}rr(h]h]rrUnamerrah]h]h]uhjnh]rrhXSHRAMrrrr}rr(hUhjrubahjlubhX rrrr}rr(hX hjnubjb)rr}rr(hXoh}rr(h]h]rrUnamersah]h]h]uhjnh]rshXors}rs(hUhjrubahjlubhX rs}rs(hX hjnubjb)rs}rs(hX=h}rs(h]h]r sUoperatorr sah]h]h]uhjnh]r shX=r s}r s(hUhjsubahjlubhX rs}rs(hX hjnubjb)rs}rs(hX 0x80000000h}rs(h]h]rs(UliteralrsUnumberrsUhexrseh]h]h]uhjnh]rshX 0x80000000rsrs}rs(hUhjsubahjlubhX rsrs}rs(hX hjnubjb)rs}rs(hXlh}r s(h]h]r!sUnamer"sah]h]h]uhjnh]r#shXlr$s}r%s(hUhjsubahjlubhX r&s}r's(hX hjnubjb)r(s}r)s(hX=h}r*s(h]h]r+sUoperatorr,sah]h]h]uhjnh]r-shX=r.s}r/s(hUhj(subahjlubhX r0s}r1s(hX hjnubjb)r2s}r3s(hX 0x00020000h}r4s(h]h]r5s(Uliteralr6sUnumberr7sUhexr8seh]h]h]uhjnh]r9shX 0x00020000r:sr;s}rs}r?s(hX hjnubjb)r@s}rAs(hX/* 128kB Shared RAM */h}rBs(h]h]rCs(UcommentrDsU multilinerEseh]h]h]uhjnh]rFshX/* 128kB Shared RAM */rGsrHs}rIs(hUhj@subahjlubhX rJsrKs}rLs(hX hjnubjb)rMs}rNs(hXDDR2h}rOs(h]h]rPsUnamerQsah]h]h]uhjnh]rRshXDDR2rSsrTs}rUs(hUhjMsubahjlubhX rVsrWs}rXs(hX hjnubjb)rYs}rZs(hXoh}r[s(h]h]r\sUnamer]sah]h]h]uhjnh]r^shXor_s}r`s(hUhjYsubahjlubhX ras}rbs(hX hjnubjb)rcs}rds(hX=h}res(h]h]rfsUoperatorrgsah]h]h]uhjnh]rhshX=ris}rjs(hUhjcsubahjlubhX rks}rls(hX hjnubjb)rms}rns(hX 0xC0000000h}ros(h]h]rps(UliteralrqsUnumberrrsUhexrsseh]h]h]uhjnh]rtshX 0xC0000000rusrvs}rws(hUhjmsubahjlubhX rxsrys}rzs(hX hjnubjb)r{s}r|s(hXlh}r}s(h]h]r~sUnamersah]h]h]uhjnh]rshXlrs}rs(hUhj{subahjlubhX rs}rs(hX hjnubjb)rs}rs(hX=h}rs(h]h]rsUoperatorrsah]h]h]uhjnh]rshX=rs}rs(hUhjsubahjlubhX rs}rs(hX hjnubjb)rs}rs(hX 0x20000000h}rs(h]h]rs(UliteralrsUnumberrsUhexrseh]h]h]uhjnh]rshX 0x20000000rsrs}rs(hUhjsubahjlubhX rsrs}rs(hX hjnubjb)rs}rs(hX/* 512MB DDR2 Data */h}rs(h]h]rs(UcommentrsU multilinerseh]h]h]uhjnh]rshX/* 512MB DDR2 Data */rsrs}rs(hUhjsubahjlubhX rs}rs(hX hjnubjb)rs}rs(hX}h}rs(h]h]rsU punctuationrsah]h]h]uhjnh]rshX}rs}rs(hUhjsubahjlubeubj;)rs}rs(hX
hjlhjOGhj;h}rs(UformatXhtmljjh]h]h]h]h]uhMhhh]rshX
rsrs}rs(hUhjsubaubj;)rs}rs(hX
hjlhjOGhj;h}rs(UformatXhtmljjh]h]h]h]h]uhMhhh]rshX
rsrs}rs(hUhjsubaubj/)rs}rs(hXAThe linker command file is designed to place code in OCMC memory.rshjlhjOGhj3h}rs(h]h]h]h]h]uhMhhh]rshXAThe linker command file is designed to place code in OCMC memory.rsrs}rs(hjshjsubaubj))rs}rs(hXkFor OMAPL13x/C674x devices, the linker command file places code in the SHRAM memory section as shown below.hjlhjOGhj,h}rs(h]h]h]h]h]uhNhhh]rsj/)rs}rs(hXkFor OMAPL13x/C674x devices, the linker command file places code in the SHRAM memory section as shown below.rshjshjOGhj3h}rs(h]h]h]h]h]uhMh]rshXkFor OMAPL13x/C674x devices, the linker command file places code in the SHRAM memory section as shown below.rsrs}rs(hjshjsubaubaubj)rs}rs(hXb SECTIONS { .text > SHRAM .stack > SHRAM .bss > SHRAM ....... }hjlhjOGhjh}rs(jjh]h]h]h]h]uhMEhhh]rshXb SECTIONS { .text > SHRAM .stack > SHRAM .bss > SHRAM ....... }rsrs}rs(hUhjsubaubj))rs}rs(hXAn optional step is to modify the section definition in linker command file if you wish to introduce/partition existing sections or place the code in different memory section.hjlhjOGhj,h}rs(h]h]h]h]h]uhNhhh]rsj/)rs}rs(hXAn optional step is to modify the section definition in linker command file if you wish to introduce/partition existing sections or place the code in different memory section.rshjshjOGhj3h}rs(h]h]h]h]h]uhM,h]rshXAn optional step is to modify the section definition in linker command file if you wish to introduce/partition existing sections or place the code in different memory section.rsrs}rs(hjshjsubaubaubj/)rs}rs(hX}7. Now build the project by right clicking on the Project and selecting "Build Project" to generate hello_world_lcdk674x.out.rshjlhjOGhj3h}rs(h]h]h]h]h]uhM0hhh]rshX}7. Now build the project by right clicking on the Project and selecting "Build Project" to generate hello_world_lcdk674x.out.rsrs}rs(hjshjsubaubj/)rs}rs(hX8. Launch target configurations using your emulator to connect to OMAPLx/C674x LCDK as described in the :ref:`Getting Started Guide `.hjlhjOGhj3h}rs(h]h]h]h]h]uhM3hhh]rs(hXh8. Launch target configurations using your emulator to connect to OMAPLx/C674x LCDK as described in the rsrs}rs(hXh8. Launch target configurations using your emulator to connect to OMAPLx/C674x LCDK as described in the hjsubjZ)rs}rs(hXM:ref:`Getting Started Guide `rshjshjOGhj^h}rs(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrsh]h]U refexplicith]h]h]j j uhM3h]rsjb)rs}rs(hjsh}rs(h]h]rs(j jsXstd-refrseh]h]h]uhjsh]rthXGetting Started Guidertrt}rt(hUhjsubahjlubaubhX.rt}rt(hX.hjsubeubj/)rt}rt(hX9. Developers on OMAPL137/C6747/C6748 can connect directly to the DSP. For OMAPL138 device, you will need to connect to the ARM as this is ARM master boot device and ARM needs to power up the DSP. You should see the following log in the console.rthjlhjOGhj3h}r t(h]h]h]h]h]uhM6hhh]r thX9. Developers on OMAPL137/C6747/C6748 can connect directly to the DSP. For OMAPL138 device, you will need to connect to the ARM as this is ARM master boot device and ARM needs to power up the DSP. You should see the following log in the console.r tr t}r t(hjthjtubaubj)rt}rt(hXC674X_0: Output: Target Connected. C674X_0: Output: --------------------------------------------- C674X_0: Output: Memory Map Cleared. C674X_0: Output: --------------------------------------------- C674X_0: Output: Memory Map Setup Complete. C674X_0: Output: --------------------------------------------- C674X_0: Output: PSC Enable Complete. C674X_0: Output: --------------------------------------------- C674X_0: Output: PLL0 init done for Core:300MHz, EMIFA:25MHz C674X_0: Output: DDR initialization is in progress.... C674X_0: Output: PLL1 init done for DDR:150MHz C674X_0: Output: Using DDR2 settings C674X_0: Output: DDR2 init for 150 MHz is done C674X_0: Output: ---------------------------------------------hjlhjOGhjh}rt(jjh]h]h]h]h]uhM_hhh]rthXC674X_0: Output: Target Connected. C674X_0: Output: --------------------------------------------- C674X_0: Output: Memory Map Cleared. C674X_0: Output: --------------------------------------------- C674X_0: Output: Memory Map Setup Complete. C674X_0: Output: --------------------------------------------- C674X_0: Output: PSC Enable Complete. C674X_0: Output: --------------------------------------------- C674X_0: Output: PLL0 init done for Core:300MHz, EMIFA:25MHz C674X_0: Output: DDR initialization is in progress.... C674X_0: Output: PLL1 init done for DDR:150MHz C674X_0: Output: Using DDR2 settings C674X_0: Output: DDR2 init for 150 MHz is done C674X_0: Output: ---------------------------------------------rtrt}rt(hUhjtubaubj)rt}rt(hUhjlhjOGhjh}rt(h]h]h]h]h]uhMLhhh]rtj)rt}rt(hUjKhjthjOGhhh}rt(h]h]h]h]h]uhKhhh]ubaubj/)rt}rt(hX11. Select and Connect to C674x. Load and run hello_world_dsp.out file. You should see **Hello World** string displayed on console window.hjlhjOGhj3h}rt(h]h]h]h]h]uhMNhhh]rt(hXW11. Select and Connect to C674x. Load and run hello_world_dsp.out file. You should see r tr!t}r"t(hXW11. Select and Connect to C674x. Load and run hello_world_dsp.out file. You should see hjtubjW)r#t}r$t(hX**Hello World**h}r%t(h]h]h]h]h]uhjth]r&thX Hello Worldr'tr(t}r)t(hUhj#tubahj_ubhX$ string displayed on console window.r*tr+t}r,t(hX$ string displayed on console window.hjtubeubj)r-t}r.t(hX-.. Image:: ../images/Hello_world_dsp674x.png hjlhjOGhjh}r/t(UuriX&rtos/../images/Hello_world_dsp674x.pngr0th]h]h]h]j}r1tU*j0tsh]uhMRhhh]ubj)r2t}r3t(hUhjlhjOGhjh}r4t(h]h]h]h]h]uhMShhh]r5tj)r6t}r7t(hUjKhj2thjOGhhh}r8t(h]h]h]h]h]uhKhhh]ubaubeubeubhjOGhhh}r9t(h]r:tj:ah]h]h]r;tUid45rt}r?t(hXOverviewr@thj;GhjOGhhh}rAt(h]h]h]h]h]uhKhhh]rBthXOverviewrCtrDt}rEt(hj@thj>tubaubj/)rFt}rGt(hX=The bare-metal examples gets user started with development of code without an operating system. These are simple examples that does not get into details of software components provided in the SDK. Consequently, make sure there are no SD cards installed on the EVM with an OS prior to exploring the following examples.rHthj;GhjOGhj3h}rIt(h]h]h]h]h]uhKhhh]rJthX=The bare-metal examples gets user started with development of code without an operating system. These are simple examples that does not get into details of software components provided in the SDK. Consequently, make sure there are no SD cards installed on the EVM with an OS prior to exploring the following examples.rKtrLt}rMt(hjHthjFtubaubj/)rNt}rOt(hXzIf you face any problems with CCS or JTAG, try these `troubleshooting steps `__.hj;GhjOGhj3h}rPt(h]h]h]h]h]uhK hhh]rQt(hX5If you face any problems with CCS or JTAG, try these rRtrSt}rTt(hX5If you face any problems with CCS or JTAG, try these hjNtubj)rUt}rVt(hXD`troubleshooting steps `__h}rWt(UnameXtroubleshooting stepsjX(index_how_to_guides.html#troubleshootingh]h]h]h]h]uhjNth]rXthXtroubleshooting stepsrYtrZt}r[t(hUhjUtubahjubhX.r\t}r]t(hX.hjNtubeubeubhjOGhj>h}r^t(h]UlevelKh]h]r_tjh}rjt(h]UlevelKh]h]rktj[GaUsourcejOGh]h]UlineKUtypejAuhKhhh]rltj/)rmt}rnt(hX1Duplicate implicit target name: "arm cortex-a53".h}rot(h]h]h]h]h]uhjhth]rpthX1Duplicate implicit target name: "arm cortex-a53".rqtrrt}rst(hUhjmtubahj3ubaubj)rtt}rut(hUhjVGhjOGhj>h}rvt(h]UlevelKh]h]UsourcejOGh]h]UlineK7UtypejAuhK7hhh]rwtj/)rxt}ryt(hXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.h}rzt(h]h]h]h]h]uhjtth]r{thXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.r|tr}t}r~t(hUhjxtubahj3ubaubj)rt}rt(hUhjVGhjOGhj>h}rt(h]UlevelKh]h]Usourcehh]h]UlineK3UtypejAuhKKhhh]rtj/)rt}rt(hX:Enumerated list start value not ordinal-1: "9" (ordinal 9)h}rt(h]h]h]h]h]uhjth]rthX:Enumerated list start value not ordinal-1: "9" (ordinal 9)rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhjHhjOGhj>h}rt(h]UlevelKh]h]rtjHaUsourcejOGh]h]UlineKpUtypejAuhKphhh]rtj/)rt}rt(hX1Duplicate implicit target name: "arm cortex-a15".h}rt(h]h]h]h]h]uhjth]rthX1Duplicate implicit target name: "arm cortex-a15".rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhjHhjOGhj>h}rt(h]UlevelKh]h]Usourcehh]h]UlineK3UtypejAuhKhhh]rtj/)rt}rt(hX:Enumerated list start value not ordinal-1: "9" (ordinal 9)h}rt(h]h]h]h]h]uhjth]rthX:Enumerated list start value not ordinal-1: "9" (ordinal 9)rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhjMhjOGhj>h}rt(h]UlevelKh]h]rtjMaUsourcejOGh]h]UlineMUtypejAuhMhhh]rtj/)rt}rt(hX0Duplicate implicit target name: "arm cortex-a9".h}rt(h]h]h]h]h]uhjth]rthX0Duplicate implicit target name: "arm cortex-a9".rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhjMhjOGhj>h}rt(h]UlevelKh]h]Usourcehh]h]UlineK3UtypejAuhMPhhh]rtj/)rt}rt(hX:Enumerated list start value not ordinal-1: "6" (ordinal 6)h}rt(h]h]h]h]h]uhjth]rthX:Enumerated list start value not ordinal-1: "6" (ordinal 6)rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhjMhjOGhj>h}rt(h]UlevelKh]h]Usourcehh]h]UlineK3UtypejAuhMvhhh]rtj/)rt}rt(hX:Enumerated list start value not ordinal-1: "7" (ordinal 7)h}rt(h]h]h]h]h]uhjth]rthX:Enumerated list start value not ordinal-1: "7" (ordinal 7)rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhj3RhjOGhj>h}rt(h]UlevelKh]h]rtj8RaUsourcejOGh]h]UlineMUtypejAuhMhhh]rtj/)rt}rt(hX0Duplicate implicit target name: "arm cortex-a8".h}rt(h]h]h]h]h]uhjth]rthX0Duplicate implicit target name: "arm cortex-a8".rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhj3RhjOGhj>h}rt(h]UlevelKh]h]Usourcehh]h]UlineK3UtypejAuhMhhh]rtj/)rt}rt(hX:Enumerated list start value not ordinal-1: "6" (ordinal 6)h}rt(h]h]h]h]h]uhjth]rthX:Enumerated list start value not ordinal-1: "6" (ordinal 6)rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhj3RhjOGhj>h}rt(h]UlevelKh]h]Usourcehh]h]UlineK3UtypejAuhMhhh]rtj/)rt}rt(hX:Enumerated list start value not ordinal-1: "7" (ordinal 7)h}rt(h]h]h]h]h]uhjth]rthX:Enumerated list start value not ordinal-1: "7" (ordinal 7)rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhjVhjOGhj>h}rt(h]UlevelKh]h]rtjVaUsourcejOGh]h]UlineMUtypejAuhMhhh]rtj/)rt}rt(hX0Duplicate implicit target name: "arm cortex-r5".h}rt(h]h]h]h]h]uhjth]rthX0Duplicate implicit target name: "arm cortex-r5".rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhjWhjOGhj>h}rt(h]UlevelKh]h]rtjWaUsourcejOGh]h]UlineM1UtypejAuhM1hhh]rtj/)rt}rt(hX0Duplicate implicit target name: "arm cortex-m4".h}rt(h]h]h]h]h]uhjth]rthX0Duplicate implicit target name: "arm cortex-m4".rtrt}rt(hUhjtubahj3ubaubj)rt}rt(hUhjWhjOGhj>h}rt(h]UlevelKh]h]Usourcehh]h]UlineK3UtypejAuhMhhh]ruj/)ru}ru(hX:Enumerated list start value not ordinal-1: "7" (ordinal 7)h}ru(h]h]h]h]h]uhjth]ruhX:Enumerated list start value not ordinal-1: "7" (ordinal 7)ruru}ru(hUhjuubahj3ubaubj)ru}r u(hUhj\hjOGhj>h}r u(h]UlevelKh]h]r uj \aUsourcejOGh]h]UlineMUtypejAuhMhhh]r uj/)r u}ru(hX'Duplicate implicit target name: "arm9".h}ru(h]h]h]h]h]uhjuh]ruhX'Duplicate implicit target name: "arm9".ruru}ru(hUhj uubahj3ubaubj)ru}ru(hUhj\hjOGhj>h}ru(h]UlevelKh]h]Usourcehh]h]UlineK3UtypejAuhMhhh]ruj/)ru}ru(hX:Enumerated list start value not ordinal-1: "7" (ordinal 7)h}ru(h]h]h]h]h]uhjuh]ruhX:Enumerated list start value not ordinal-1: "7" (ordinal 7)ruru}ru(hUhjuubahj3ubaubj)ru}r u(hUhj\hjOGhj>h}r!u(h]UlevelKh]h]Usourcehh]h]UlineK3UtypejAuhMhhh]r"uj/)r#u}r$u(hX:Enumerated list start value not ordinal-1: "8" (ordinal 8)h}r%u(h]h]h]h]h]uhjuh]r&uhX:Enumerated list start value not ordinal-1: "8" (ordinal 8)r'ur(u}r)u(hUhj#uubahj3ubaubj)r*u}r+u(hUhj?hhjOGhj>h}r,u(h]UlevelKh]h]r-ujDhaUsourcejOGh]h]UlineM+UtypejAuhM+hhh]r.uj/)r/u}r0u(hX+Duplicate implicit target name: "dsp c66x".h}r1u(h]h]h]h]h]uhj*uh]r2uhX+Duplicate implicit target name: "dsp c66x".r3ur4u}r5u(hUhj/uubahj3ubaubj)r6u}r7u(hUhj?hhjOGhj>h}r8u(h]UlevelKh]h]Usourcehh]h]UlineK3UtypejAuhMhhh]r9uj/)r:u}r;u(hX:Enumerated list start value not ordinal-1: "7" (ordinal 7)h}rur?u}r@u(hUhj:uubahj3ubaubj)rAu}rBu(hUhjlhjOGhj>h}rCu(h]UlevelKh]h]rDujlaUsourcejOGh]h]UlineMUtypejAuhMhhh]rEuj/)rFu}rGu(hX,Duplicate implicit target name: "dsp c674x".h}rHu(h]h]h]h]h]uhjAuh]rIuhX,Duplicate implicit target name: "dsp c674x".rJurKu}rLu(hUhjFuubahj3ubaubj)rMu}rNu(hUhjlhXZinternal padding after source/rtos/Examples_and_Demonstrations/Bare_Metal_Examples.rst.incrOuhj>h}rPu(h]UlevelKh]h]UsourcejOGh]h]UlineMUUtypejfuhMWhhh]rQu(j/)rRu}rSu(hX;Content block expected for the "raw" directive; none found.h}rTu(h]h]h]h]h]uhjMuh]rUuhX;Content block expected for the "raw" directive; none found.rVurWu}rXu(hUhjRuubahj3ubj)rYu}rZu(hX.. raw:: html h}r[u(jjh]h]h]h]h]uhjMuh]r\uhX.. raw:: html r]ur^u}r_u(hUhjYuubahjubeubj)r`u}rau(hUhh)rbu}rcu(hUjKhh)rdu}reu(hUhhhhhhh}rfu(h]h]h]h]rguUgravity-simulator-demorhuah]riuhmauhK9hhh]rju(h)rku}rlu(hXGravity Simulator Demormuhjduhhhhh}rnu(h]h]h]h]h]uhK9hhh]rouhXGravity Simulator Demorpurqu}rru(hjmuhjkuubaubj )rsu}rtu(hXQhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Gravity_Simulator_Demohjduhj XFsource/rtos/Examples_and_Demonstrations/Gravity_Simulator_Demo.rst.incruurvu}rwubhjh}rxu(jjh]h]h]h]h]uhKhhh]ryuhXQhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Gravity_Simulator_Demorzur{u}r|u(hUhjsuubaubjbuh)r}u}r~u(hUhjduhjvuhhh}ru(h]h]h]h]ruUversion-detailsruah]ruhauhK hhh]ru(h)ru}ru(hXVersion Detailsruhj}uhjvuhhh}ru(h]h]h]h]h]uhK hhh]ruhXVersion Detailsruru}ru(hjuhjuubaubj/)ru}ru(hXLatest version: 1.0.0ruhj}uhjvuhj3h}ru(h]h]h]h]h]uhK hhh]ruhXLatest version: 1.0.0ruru}ru(hjuhjuubaubj/)ru}ru(hXSupported platforms: idkAM572xruhj}uhjvuhj3h}ru(h]h]h]h]h]uhKhhh]ruhXSupported platforms: idkAM572xruru}ru(hjuhjuubaubj/)ru}ru(hX(Available in: Processor SDK RTOS 4.0.0.4ruhj}uhjvuhj3h}ru(h]h]h]h]h]uhKhhh]ruhX(Available in: Processor SDK RTOS 4.0.0.4ruru}ru(hjuhjuubaubeubh)ru}ru(hUjKhjduhjvuhhh}ru(h]rujgah]h]h]ruUid56ruah]uhKhhh]ru(h)ru}ru(hXComponents Usedruhjuhjvuhhh}ru(h]h]h]h]h]uhKhhh]ruhXComponents Usedruru}ru(hjuhjuubaubj/)ru}ru(hXOpen Sourced Libraries:ruhjuhjvuhj3h}ru(h]h]h]h]h]uhKhhh]ruhXOpen Sourced Libraries:ruru}ru(hjuhjuubaubjQ)ru}ru(hUhjuhjvuhjTh}ru(jVX-h]h]h]h]h]uhKhhh]rujX)ru}ru(hXGravit hjuhjvuhj[h}ru(h]h]h]h]h]uhNhhh]ruj/)ru}ru(hXGravitruhjuhjvuhj3h}ru(h]h]h]h]h]uhKh]ruhXGravitruru}ru(hjuhjuubaubaubaubj/)ru}ru(hXRTOS Components:ruhjuhjvuhj3h}ru(h]h]h]h]h]uhKhhh]ruhXRTOS Components:ruru}ru(hjuhjuubaubjQ)ru}ru(hUhjuhjvuhjTh}ru(jVX-h]h]h]h]h]uhKhhh]ru(jX)ru}ru(hXSYSBIOSruhjuhjvuhj[h}ru(h]h]h]h]h]uhNhhh]ruj/)ru}ru(hjuhjuhjvuhj3h}ru(h]h]h]h]h]uhKh]ruhXSYSBIOSruru}ru(hjuhjuubaubaubjX)ru}ru(hXXDC hjuhjvuhj[h}ru(h]h]h]h]h]uhNhhh]ruj/)ru}ru(hXXDCruhjuhjvuhj3h}ru(h]h]h]h]h]uhKh]ruhXXDCruru}ru(hjuhjuubaubaubeubj/)ru}ru(hXProcessor SDK RTOS Drivers:ruhjuhjvuhj3h}ru(h]h]h]h]h]uhKhhh]ruhXProcessor SDK RTOS Drivers:ruru}ru(hjuhjuubaubjQ)ru}ru(hUhjuhjvuhjTh}ru(jVX-h]h]h]h]h]uhK!hhh]ru(jX)ru}ru(hXVPSruhjuhjvuhj[h}ru(h]h]h]h]h]uhNhhh]ruj/)rv}rv(hjuhjuhjvuhj3h}rv(h]h]h]h]h]uhK!h]rvhXVPSrvrv}rv(hjuhjvubaubaubjX)rv}rv(hXPMr vhjuhjvuhj[h}r v(h]h]h]h]h]uhNhhh]r vj/)r v}r v(hj vhjvhjvuhj3h}rv(h]h]h]h]h]uhK"h]rvhXPMrvrv}rv(hj vhj vubaubaubjX)rv}rv(hXI2Crvhjuhjvuhj[h}rv(h]h]h]h]h]uhNhhh]rvj/)rv}rv(hjvhjvhjvuhj3h}rv(h]h]h]h]h]uhK#h]rvhXI2Crvrv}rv(hjvhjvubaubaubjX)rv}r v(hXUARTr!vhjuhjvuhj[h}r"v(h]h]h]h]h]uhNhhh]r#vj/)r$v}r%v(hj!vhjvhjvuhj3h}r&v(h]h]h]h]h]uhK$h]r'vhXUARTr(vr)v}r*v(hj!vhj$vubaubaubjX)r+v}r,v(hXBoardr-vhjuhjvuhj[h}r.v(h]h]h]h]h]uhNhhh]r/vj/)r0v}r1v(hj-vhj+vhjvuhj3h}r2v(h]h]h]h]h]uhK%h]r3vhXBoardr4vr5v}r6v(hj-vhj0vubaubaubjX)r7v}r8v(hXOSALr9vhjuhjvuhj[h}r:v(h]h]h]h]h]uhNhhh]r;vj/)rv(h]h]h]h]h]uhK&h]r?vhXOSALr@vrAv}rBv(hj9vhj`__ page for information on setting up your build environment.hjOvhjvuhj3h}rav(h]h]h]h]h]uhK,hhh]rbv(hXThe demo is available pre-built for Processor SDK RTOS version 4.0.0.4 or higher. You must first set up your development environment. Refer to the rcvrdv}rev(hXThe demo is available pre-built for Processor SDK RTOS version 4.0.0.4 or higher. You must first set up your development environment. Refer to the hj_vubj)rfv}rgv(hXF`Processor SDK RTOS Building `__h}rhv(UnameXProcessor SDK RTOS BuildingjX$index_overview.html#building-the-sdkh]h]h]h]h]uhj_vh]rivhXProcessor SDK RTOS Buildingrjvrkv}rlv(hUhjfvubahjubhX; page for information on setting up your build environment.rmvrnv}rov(hX; page for information on setting up your build environment.hj_vubeubj/)rpv}rqv(hX*The following are steps to clean the demo:rrvhjOvhjvuhj3h}rsv(h]h]h]h]h]uhK1hhh]rtvhX*The following are steps to clean the demo:ruvrvv}rwv(hjrvhjpvubaubj)rxv}ryv(hX`cd [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gravit make clean BOARD=idkAM572xhjOvhjvuhjh}rzv(jjh]h]h]h]h]uhMhhh]r{vhX`cd [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gravit make clean BOARD=idkAM572xr|vr}v}r~v(hUhjxvubaubj/)rv}rv(hX,The following are steps to compile the demo:rvhjOvhjvuhj3h}rv(h]h]h]h]h]uhK8hhh]rvhX,The following are steps to compile the demo:rvrv}rv(hjvhjvubaubj)rv}rv(hXZcd [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gravit make BOARD=idkAM572xhjOvhjvuhjh}rv(jjh]h]h]h]h]uhMhhh]rvhXZcd [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gravit make BOARD=idkAM572xrvrv}rv(hUhjvubaubeubh)rv}rv(hUjKhjduhjvuhhh}rv(h]rvXrunning the demorvah]h]h]rvUrunning-the-demorvah]uhK@hhh]rv(h)rv}rv(hXRunning the Demorvhjvhjvuhhh}rv(h]h]h]h]h]uhK@hhh]rvhXRunning the Demorvrv}rv(hjvhjvubaubj/)rv}rv(hXYou will need the following:rvhjvhjvuhj3h}rv(h]h]h]h]h]uhKBhhh]rvhXYou will need the following:rvrv}rv(hjvhjvubaubj)rv}rv(hUhjvhjvuhjh}rv(jU.h]h]h]jUh]h]jjuhKDhhh]rv(jX)rv}rv(hXCode Composer Studio to load and run the demo. Refer to :ref:`Processor SDK RTOS Getting Started Guide ` for installing CCS.hjvhjvuhj[h}rv(h]h]h]h]h]uhNhhh]rvj/)rv}rv(hXCode Composer Studio to load and run the demo. Refer to :ref:`Processor SDK RTOS Getting Started Guide ` for installing CCS.hjvhjvuhj3h}rv(h]h]h]h]h]uhKDh]rv(hX8Code Composer Studio to load and run the demo. Refer to rvrv}rv(hX8Code Composer Studio to load and run the demo. Refer to hjvubjZ)rv}rv(hX`:ref:`Processor SDK RTOS Getting Started Guide `rvhjvhjvuhj^h}rv(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrvh]h]U refexplicith]h]h]j j uhKDh]rvjb)rv}rv(hjvh}rv(h]h]rv(j jvXstd-refrveh]h]h]uhjvh]rvhX(Processor SDK RTOS Getting Started Guidervrv}rv(hUhjvubahjlubaubhX for installing CCS.rvrv}rv(hX for installing CCS.hjvubeubaubjX)rv}rv(hX(idkAM572x board with attached LCD screenrvhjvhjvuhj[h}rv(h]h]h]h]h]uhNhhh]rvj/)rv}rv(hjvhjvhjvuhj3h}rv(h]h]h]h]h]uhKGh]rvhX(idkAM572x board with attached LCD screenrvrv}rv(hjvhjvubaubaubjX)rv}rv(hX8USB cable for JTAG and serial terminal (micro USB port) hjvhjvuhj[h}rv(h]h]h]h]h]uhNhhh]rvj/)rv}rv(hX7USB cable for JTAG and serial terminal (micro USB port)rvhjvhjvuhj3h}rv(h]h]h]h]h]uhKHh]rvhX7USB cable for JTAG and serial terminal (micro USB port)rvrv}rv(hjvhjvubaubaubeubj/)rv}rv(hXTo load and run the demo:rvhjvhjvuhj3h}rv(h]h]h]h]h]uhKJhhh]rvhXTo load and run the demo:rvrv}rv(hjvhjvubaubj)rv}rv(hUhjvhjvuhjh}rv(jU.h]h]h]jUh]h]jjuhKLhhh]rv(jX)rv}rv(hXEConnect the USB cable from your computer to the idkAM572x's JTAG portrvhjvhjvuhj[h}rv(h]h]h]h]h]uhNhhh]rvj/)rv}rv(hjvhjvhjvuhj3h}rv(h]h]h]h]h]uhKLh]rvhXEConnect the USB cable from your computer to the idkAM572x's JTAG portrvrv}rv(hjvhjvubaubaubjX)rv}rv(hXnPower on the idkAM572x board. Ensure that no boot mode is entered (do not have SD card loaded or QSPI flashed)hjvhjvuhj[h}rv(h]h]h]h]h]uhNhhh]rvj/)rv}rv(hXnPower on the idkAM572x board. Ensure that no boot mode is entered (do not have SD card loaded or QSPI flashed)rvhjvhjvuhj3h}rv(h]h]h]h]h]uhKMh]rvhXnPower on the idkAM572x board. Ensure that no boot mode is entered (do not have SD card loaded or QSPI flashed)rwrw}rw(hjvhjvubaubaubjX)rw}rw(hXOpen up a serial terminal for UART communication (Refer to :ref:`Processor SDK RTOS Getting Started Guide `, setup EVM hardware)hjvhjvuhj[h}rw(h]h]h]h]h]uhNhhh]rwj/)rw}rw(hXOpen up a serial terminal for UART communication (Refer to :ref:`Processor SDK RTOS Getting Started Guide `, setup EVM hardware)hjwhjvuhj3h}r w(h]h]h]h]h]uhKOh]r w(hX;Open up a serial terminal for UART communication (Refer to r wr w}r w(hX;Open up a serial terminal for UART communication (Refer to hjwubjZ)rw}rw(hX`:ref:`Processor SDK RTOS Getting Started Guide `rwhjwhjvuhj^h}rw(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrwh]h]U refexplicith]h]h]j j uhKOh]rwjb)rw}rw(hjwh}rw(h]h]rw(j jwXstd-refrweh]h]h]uhjwh]rwhX(Processor SDK RTOS Getting Started Guiderwrw}rw(hUhjwubahjlubaubhX, setup EVM hardware)rwrw}rw(hX, setup EVM hardware)hjwubeubaubjX)r w}r!w(hXOpen CCS and launch target config file for idkAM572x (Refer to `Processor SDK RTOS Setup CCS `__ for setting up CCS)hjvhjvuhj[h}r"w(h]h]h]h]h]uhNhhh]r#wj/)r$w}r%w(hXOpen CCS and launch target config file for idkAM572x (Refer to `Processor SDK RTOS Setup CCS `__ for setting up CCS)hj whjvuhj3h}r&w(h]h]h]h]h]uhKRh]r'w(hX?Open CCS and launch target config file for idkAM572x (Refer to r(wr)w}r*w(hX?Open CCS and launch target config file for idkAM572x (Refer to hj$wubj)r+w}r,w(hXd`Processor SDK RTOS Setup CCS `__h}r-w(UnameXProcessor SDK RTOS Setup CCSjXAindex_how_to_guides.html#setup-ccs-for-evm-and-processor-sdk-rtosh]h]h]h]h]uhj$wh]r.whXProcessor SDK RTOS Setup CCSr/wr0w}r1w(hUhj+wubahjubhX for setting up CCS)r2wr3w}r4w(hX for setting up CCS)hj$wubeubaubjX)r5w}r6w(hXConnect to CortexA15_0r7whjvhjvuhj[h}r8w(h]h]h]h]h]uhNhhh]r9wj/)r:w}r;w(hj7whj5whjvuhj3h}rwr?w}r@w(hj7whj:wubaubaubjX)rAw}rBw(hX%Load and launch the demo executable: hjvhjvuhj[h}rCw(h]h]h]h]h]uhNhhh]rDwj/)rEw}rFw(hX$Load and launch the demo executable:rGwhjAwhjvuhj3h}rHw(h]h]h]h]h]uhKUh]rIwhX$Load and launch the demo executable:rJwrKw}rLw(hjGwhjEwubaubaubeubj)rMw}rNw(hXl[SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gravit/bin/idkAM572x/gravit_a15_0_release.xa15fghjvhjvuhjh}rOw(jjh]h]h]h]h]uhMhhh]rPwhXl[SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gravit/bin/idkAM572x/gravit_a15_0_release.xa15fgrQwrRw}rSw(hUhjMwubaubeubh)rTw}rUw(hUhjduhjvuhhh}rVw(h]h]h]h]rWwUterminal-screenshotrXwah]rYwhauhK\hhh]rZw(h)r[w}r\w(hXTerminal Screenshotr]whjTwhjvuhhh}r^w(h]h]h]h]h]uhK\hhh]r_whXTerminal Screenshotr`wraw}rbw(hj]whj[wubaubjQ)rcw}rdw(hUhjTwhjvuhjTh}rew(jVX-h]h]h]h]h]uhK^hhh]rfw(jX)rgw}rhw(hX`When launched, you will be prompt for number of particles to simulate. Enter a value up to 1000.hjcwhjvuhj[h}riw(h]h]h]h]h]uhNhhh]rjwj/)rkw}rlw(hX`When launched, you will be prompt for number of particles to simulate. Enter a value up to 1000.rmwhjgwhjvuhj3h}rnw(h]h]h]h]h]uhK^h]rowhX`When launched, you will be prompt for number of particles to simulate. Enter a value up to 1000.rpwrqw}rrw(hjmwhjkwubaubaubjX)rsw}rtw(hX Use w-a-s-d for display rotationruwhjcwhjvuhj[h}rvw(h]h]h]h]h]uhNhhh]rwwj/)rxw}ryw(hjuwhjswhjvuhj3h}rzw(h]h]h]h]h]uhK`h]r{whX Use w-a-s-d for display rotationr|wr}w}r~w(hjuwhjxwubaubaubjX)rw}rw(hX#Use i-j-k-l for display translationrwhjcwhjvuhj[h}rw(h]h]h]h]h]uhNhhh]rwj/)rw}rw(hjwhjwhjvuhj3h}rw(h]h]h]h]h]uhKah]rwhX#Use i-j-k-l for display translationrwrw}rw(hjwhjwubaubaubjX)rw}rw(hXFPress Esc to end current simulation and display accumulated statisticshjcwhjvuhj[h}rw(h]h]h]h]h]uhNhhh]rwj/)rw}rw(hXFPress Esc to end current simulation and display accumulated statisticsrwhjwhjvuhj3h}rw(h]h]h]h]h]uhKbh]rwhXFPress Esc to end current simulation and display accumulated statisticsrwrw}rw(hjwhjwubaubaubjX)rw}rw(hXgFrames per second (FPS) and floating point operations per second (FLOPS) are displayed on the terminal hjcwhjvuhj[h}rw(h]h]h]h]h]uhNhhh]rwj/)rw}rw(hXfFrames per second (FPS) and floating point operations per second (FLOPS) are displayed on the terminalrwhjwhjvuhj3h}rw(h]h]h]h]h]uhKdh]rwhXfFrames per second (FPS) and floating point operations per second (FLOPS) are displayed on the terminalrwrw}rw(hjwhjwubaubaubeubj/)rw}rw(hX;Below is a screenshot of the terminal after one simulation:rwhjTwhjvuhj3h}rw(h]h]h]h]h]uhKghhh]rwhX;Below is a screenshot of the terminal after one simulation:rwrw}rw(hjwhjwubaubj)rw}rw(hX<.. Image:: ../images/Gravit-screenshot_version_01_00_00.png hjTwhjvuhjh}rw(UuriX5rtos/../images/Gravit-screenshot_version_01_00_00.pngrwh]h]h]h]j}rwU*jwsh]uhKjhhh]ubeubh)rw}rw(hUhjduhjvuhhh}rw(h]h]h]h]rwUdisplay-outputrwah]rwh5auhKlhhh]rw(h)rw}rw(hXDisplay Outputrwhjwhjvuhhh}rw(h]h]h]h]h]uhKlhhh]rwhXDisplay Outputrwrw}rw(hjwhjwubaubjQ)rw}rw(hUhjwhjvuhjTh}rw(jVX-h]h]h]h]h]uhKnhhh]rw(jX)rw}rw(hX^Particles are set to rotate around a gravity center positioned at the center of the LCD screenhjwhjvuhj[h}rw(h]h]h]h]h]uhNhhh]rwj/)rw}rw(hX^Particles are set to rotate around a gravity center positioned at the center of the LCD screenrwhjwhjvuhj3h}rw(h]h]h]h]h]uhKnh]rwhX^Particles are set to rotate around a gravity center positioned at the center of the LCD screenrwrw}rw(hjwhjwubaubaubjX)rw}rw(hXParticles are represented with 3D coordinates, projected to a 2D LCD screen. The projection is simplified such that the camera (or the viewer) does not change display angles. hjwhjvuhj[h}rw(h]h]h]h]h]uhNhhh]rwj/)rw}rw(hXParticles are represented with 3D coordinates, projected to a 2D LCD screen. The projection is simplified such that the camera (or the viewer) does not change display angles.rwhjwhjvuhj3h}rw(h]h]h]h]h]uhKph]rwhXParticles are represented with 3D coordinates, projected to a 2D LCD screen. The projection is simplified such that the camera (or the viewer) does not change display angles.rwrw}rw(hjwhjwubaubaubeubj/)rw}rw(hX9Below is an example display of a 500-particle simulation:rwhjwhjvuhj3h}rw(h]h]h]h]h]uhKthhh]rwhX9Below is an example display of a 500-particle simulation:rwrw}rw(hjwhjwubaubj)rw}rw(hX=.. Image:: ../images/Gravit-displayshot_version_01_00_00.jpg hjwhjvuhjh}rw(UuriX6rtos/../images/Gravit-displayshot_version_01_00_00.jpgrwh]h]h]h]j}rwU*jwsh]uhKwhhh]ubeubh)rw}rw(hUhjduhjvuhhh}rw(h]h]h]h]rwUuseful-referencesrwah]rwhauhKyhhh]rw(h)rw}rw(hXUseful Referencesrwhjwhjvuhhh}rw(h]h]h]h]h]uhKyhhh]rwhXUseful Referencesrwrw}rw(hjwhjwubaubj/)rw}rw(hX1Main Gravit website: https://gravit.slowchop.com/rwhjwhjvuhj3h}rw(h]h]h]h]h]uhK{hhh]rw(hXMain Gravit website: rwrw}rw(hXMain Gravit website: hjwubj)rw}rx(hXhttps://gravit.slowchop.com/rxh}rx(Urefurijxh]h]h]h]h]uhjwh]rxhXhttps://gravit.slowchop.com/rxrx}rx(hUhjwubahjubeubj/)rx}rx(hX,Gravit github: https://github.com/gak/gravitr xhjwhjvuhj3h}r x(h]h]h]h]h]uhK}hhh]r x(hXGravit github: r xr x}rx(hXGravit github: hjxubj)rx}rx(hXhttps://github.com/gak/gravitrxh}rx(Urefurijxh]h]h]h]h]uhjxh]rxhXhttps://github.com/gak/gravitrxrx}rx(hUhjxubahjubeubj/)rx}rx(hXPhysics algorithm behind gravit, Barnes-hut: `https://en.wikipedia.org/wiki/Barnes-Hut_simulation `__hjwhjvuhj3h}rx(h]h]h]h]h]uhKhhh]rx(hX-Physics algorithm behind gravit, Barnes-hut: rxrx}rx(hX-Physics algorithm behind gravit, Barnes-hut: hjxubj)rx}rx(hXu`https://en.wikipedia.org/wiki/Barnes-Hut_simulation `__h}r x(UnameX3https://en.wikipedia.org/wiki/Barnes-Hut_simulationjX;https://en.wikipedia.org/wiki/Barnes%E2%80%93Hut_simulationh]h]h]h]h]uhjxh]r!xhX3https://en.wikipedia.org/wiki/Barnes-Hut_simulationr"xr#x}r$x(hUhjxubahjubeubj/)r%x}r&x(hXBresenham's line algorithm: `https://en.wikipedia.org/wiki/Bresenham's_line_algorithm `__hjwhjvuhj3h}r'x(h]h]h]h]h]uhKhhh]r(x(hXBresenham's line algorithm: r)xr*x}r+x(hXBresenham's line algorithm: hj%xubj)r,x}r-x(hXy`https://en.wikipedia.org/wiki/Bresenham's_line_algorithm `__h}r.x(UnameX8https://en.wikipedia.org/wiki/Bresenham's_line_algorithmjX:https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithmh]h]h]h]h]uhj%xh]r/xhX8https://en.wikipedia.org/wiki/Bresenham's_line_algorithmr0xr1x}r2x(hUhj,xubahjubeubeubeubhjvuhhh}r3x(h]r4xXoverviewr5xah]h]h]r6xUid55r7xah]uhKhhh]r8x(h)r9x}r:x(hXOverviewr;xhjbuhjvuhhh}rxr?x}r@x(hj;xhj9xubaubj/)rAx}rBx(hXThis demo showcases a simple video display with Processor SDK RTOS. This demo uses Gravit, a GPL-licensed open-sourced library, to simulate gravity of particles in space.rCxhjbuhjvuhj3h}rDx(h]h]h]h]h]uhKhhh]rExhXThis demo showcases a simple video display with Processor SDK RTOS. This demo uses Gravit, a GPL-licensed open-sourced library, to simulate gravity of particles in space.rFxrGx}rHx(hjCxhjAxubaubeubhjvuhj>h}rIx(h]UlevelKh]h]rJxj7xaUsourcejvuh]h]UlineKUtypejAuhKhhh]rKxj/)rLx}rMx(hX+Duplicate implicit target name: "overview".h}rNx(h]h]h]h]h]uhj`uh]rOxhX+Duplicate implicit target name: "overview".rPxrQx}rRx(hUhjLxubahj3ubaubj)rSx}rTx(hUhjuhjvuhj>h}rUx(h]UlevelKh]h]rVxjuaUsourcejvuh]h]UlineKUtypejAuhKhhh]rWxj/)rXx}rYx(hX2Duplicate implicit target name: "components used".h}rZx(h]h]h]h]h]uhjSxh]r[xhX2Duplicate implicit target name: "components used".r\xr]x}r^x(hUhjXxubahj3ubaubj)r_x}r`x(hUhjwhX]internal padding after source/rtos/Examples_and_Demonstrations/Gravity_Simulator_Demo.rst.incraxhj>h}rbx(h]UlevelKh]h]Usourcejvuh]h]UlineKUtypejfuhKhhh]rcx(j/)rdx}rex(hX;Content block expected for the "raw" directive; none found.h}rfx(h]h]h]h]h]uhj_xh]rgxhX;Content block expected for the "raw" directive; none found.rhxrix}rjx(hUhjdxubahj3ubj)rkx}rlx(hX.. raw:: html h}rmx(jjh]h]h]h]h]uhj_xh]rnxhX.. raw:: html roxrpx}rqx(hUhjkxubahjubeubj)rrx}rsx(hUhh)rtx}rux(hUhhhhhhh}rvx(h]h]h]h]rwxUjailhouse-hypervisorrxxah]ryxh$auhK?hhh]rzx(h)r{x}r|x(hXJailhouse Hypervisorr}xhjtxhhhhh}r~x(h]h]h]h]h]uhK?hhh]rxhXJailhouse Hypervisorrxrx}rx(hj}xhj{xubaubj )rx}rx(hXJhttp://processors.wiki.ti.com/index.php/Processor_SDK_Jailhouse_Hypervisorhjtxhj XDsource/rtos/Examples_and_Demonstrations/Jailhouse_Hypervisor.rst.incrxrx}rxbhjh}rx(jjh]h]h]h]h]uhKhhh]rxhXJhttp://processors.wiki.ti.com/index.php/Processor_SDK_Jailhouse_Hypervisorrxrx}rx(hUhjxubaubjF")rx}rx(hXOverviewrxhjtxhjxhjJ"h}rx(h]rxUid57rxah]h]h]h]rxXoverviewrxauhNhhh]rxhXOverviewrxrx}rx(hjxhjxubaubj/)rx}rx(hXJailhouse is a static partitioning hypervisor that runs bare metal binaries. It cooperates closely with Linux. Jailhouse doesn't emulate resources that don't exist. It just splits existing hardware resources into isolated compartments called "cells" that are wholly dedicated to guest software programs called "inmates". One of these cells runs the Linux OS and is known as the "root cell". Other cells borrow CPUs and devices from the root cell as they are created.rxhjtxhjxhj3h}rx(h]h]h]h]h]uhKhhh]rxhXJailhouse is a static partitioning hypervisor that runs bare metal binaries. It cooperates closely with Linux. Jailhouse doesn't emulate resources that don't exist. It just splits existing hardware resources into isolated compartments called "cells" that are wholly dedicated to guest software programs called "inmates". One of these cells runs the Linux OS and is known as the "root cell". Other cells borrow CPUs and devices from the root cell as they are created.rxrx}rx(hjxhjxubaubj)rx}rx(hUhjtxhjxhjh}rx(h]h]h]h]h]uhKhhh]rxj)rx}rx(hUjKhjxhjxhhh}rx(h]h]h]h]h]uhKhhh]ubaubj)rx}rx(hX#.. Image:: ../images/Jailhouse.png hjtxhjxhjh}rx(UuriXrtos/../images/Jailhouse.pngrxh]h]h]h]j}rxU*jxsh]uhKhhh]ubj/)rx}rx(hX*The picture above shows the jailhouse on a system a) before the jailhouse is enabled; b) after the jailhouse is enabled; c) after a cell is created. *hjtxhjxhj3h}rx(h]h]h]h]h]uhKhhh]rx(j?.)rx}rx(hX*h}rx(h]rxUid59rxah]h]h]h]UrefidUid58rxuhjxh]rxhX*rx}rx(hUhjxubahjI.ubhXThe picture above shows the jailhouse on a system a) before the jailhouse is enabled; b) after the jailhouse is enabled; c) after a cell is created. *rxrx}rx(hXThe picture above shows the jailhouse on a system a) before the jailhouse is enabled; b) after the jailhouse is enabled; c) after a cell is created. *hjxubeubj)rx}rx(hUhjtxhjxhjh}rx(h]h]h]h]h]uhKhhh]rxj)rx}rx(hUjKhjxhjxhhh}rx(h]h]h]h]h]uhKhhh]ubaubj/)rx}rx(hXJailhouse consists of three parts: kernel module, hypervisor firmware and tools, which a user uses to enable the hypervisor, create a cell, load inmate binary, run and stop it. Jailhouse is an example of Asynchronous Multiprocessing (AMP) architecture. When we boot Linux on AM57XX-EVM, which has 2 ARM cores, Linux uses the both cores. After we enable hypervisor it moves Linux to the root-cell. The root cell still uses the both ARM cores. When we create a new cell, hypervisor calls cpu_down() for the ARM1 core, leaving for Linux ARM0 only. The new cell will use the ARM1 core and hardware resources dedicated for this cell in the cell configuration file.rxhjtxhjxhj3h}rx(h]h]h]h]h]uhKhhh]rxhXJailhouse consists of three parts: kernel module, hypervisor firmware and tools, which a user uses to enable the hypervisor, create a cell, load inmate binary, run and stop it. Jailhouse is an example of Asynchronous Multiprocessing (AMP) architecture. When we boot Linux on AM57XX-EVM, which has 2 ARM cores, Linux uses the both cores. After we enable hypervisor it moves Linux to the root-cell. The root cell still uses the both ARM cores. When we create a new cell, hypervisor calls cpu_down() for the ARM1 core, leaving for Linux ARM0 only. The new cell will use the ARM1 core and hardware resources dedicated for this cell in the cell configuration file.rxrx}rx(hjxhjxubaubj)rx}rx(hUhjtxhjxhjh}rx(h]h]h]h]h]uhK#hhh]rxj)rx}rx(hUjKhjxhjxhhh}rx(h]h]h]h]h]uhKhhh]ubaubj/)rx}rx(hX`Jailhouse is an open source project, which can be found on https://github.com/siemens/jailhouse.hjtxhjxhj3h}rx(h]h]h]h]h]uhK%hhh]rx(hX;Jailhouse is an open source project, which can be found on rxrx}rx(hX;Jailhouse is an open source project, which can be found on hjxubj)rx}rx(hX$https://github.com/siemens/jailhouserxh}rx(Urefurijxh]h]h]h]h]uhjxh]rxhX$https://github.com/siemens/jailhouserxrx}rx(hUhjxubahjubhX.rx}rx(hX.hjxubeubj)rx}rx(hUhjtxhjxhjh}rx(h]h]h]h]h]uhK(hhh]rxj)rx}rx(hUjKhjxhjxhhh}rx(h]h]h]h]h]uhKhhh]ubaubjF")rx}rx(hXDemorxhjtxhjxhjJ"h}rx(h]rxUdemorxah]h]h]h]rxhauhNhhh]rxhXDemorxrx}rx(hjxhjxubaubj)rx}rx(hUhjtxhjxhjh}rx(h]h]h]h]h]uhK-hhh]rxj)rx}rx(hXProcessor Linux SDK delivers Jailhouse’s prebuilt binaries. You may try it immediately after installation. This section assumes that you have already installed PLSDK, and have Linux booted on the AM572X-EVM or AM572x-IDK.rxjKhjxhjxhhh}rx(h]h]h]h]h]uhK0hhh]rxhXProcessor Linux SDK delivers Jailhouse’s prebuilt binaries. You may try it immediately after installation. This section assumes that you have already installed PLSDK, and have Linux booted on the AM572X-EVM or AM572x-IDK.rxry}ry(hjxhjxubaubaubj)ry}ry(hUhjtxhjxhjh}ry(h]h]h]h]h]uhK2hhh]ryj)ry}ry(hX'**NOTE:** *to use Jailhouse hypervisor*jKhjyhjxhhh}ry(h]h]h]h]h]uhK2hhh]r y(jW)r y}r y(hX **NOTE:**h}r y(h]h]h]h]h]uhjyh]r yhXNOTE:ryry}ry(hUhj yubahj_ubhX ry}ry(hX hjyubj')ry}ry(hX*to use Jailhouse hypervisor*h}ry(h]h]h]h]h]uhjyh]ryhXto use Jailhouse hypervisorryry}ry(hUhjyubahj/ubeubaubj)ry}ry(hUhjtxhjxhjh}ry(h]h]h]h]h]uhK4hhh]ryj)ry}ry(hXI*1) set u-boot environment variable optargs*: setenv optargs vmalloc=512MjKhjyhjxhhh}r y(h]h]h]h]h]uhK5hhh]r!y(j')r"y}r#y(hX,*1) set u-boot environment variable optargs*h}r$y(h]h]h]h]h]uhjyh]r%yhX*1) set u-boot environment variable optargsr&yr'y}r(y(hUhj"yubahj/ubhX: setenv optargs vmalloc=512Mr)yr*y}r+y(hX: setenv optargs vmalloc=512Mhjyubeubaubj/)r,y}r-y(hXj*2) use \ **am572x-evm-jailhouse.dtb** for AM572x-EVM or \ **am572x-idk-jailhouse.dtb** for AM572x-IDK *hjtxhjxhj3h}r.y(h]h]h]h]h]uhK7hhh]r/y(j')r0y}r1y(hX'*2) use \ **am572x-evm-jailhouse.dtb**h}r2y(h]h]h]h]h]uhj,yh]r3yhX#2) use **am572x-evm-jailhouse.dtb*r4yr5y}r6y(hUhj0yubahj/ubhX for AM572x-EVM or r7yr8y}r9y(hX for AM572x-EVM or \ hj,yubjW)r:y}r;y(hX**am572x-idk-jailhouse.dtb**h}ryr?y}r@y(hUhj:yubahj_ubhX for AM572x-IDK *rAyrBy}rCy(hX for AM572x-IDK *hj,yubeubj)rDy}rEy(hUhjtxhjxhjh}rFy(h]h]h]h]h]uhK;hhh]rGyj)rHy}rIy(hUjKhjDyhjxhhh}rJy(h]h]h]h]h]uhKhhh]ubaubjF")rKy}rLy(hXPre-built componentsrMyhjtxhjxhjJ"h}rNy(h]rOyUpre-built-componentsrPyah]h]h]h]rQyhauhNhhh]rRyhXPre-built componentsrSyrTy}rUy(hjMyhjKyubaubj)rVy}rWy(hUhjtxhjxhjh}rXy(h]h]h]h]h]uhK@hhh]rYyj)rZy}r[y(hXAs it was mentioned in the previous section, Jailhouse consists of following components, which are prebuilt and copied to the target filesystem:r\yjKhjVyhjxhhh}r]y(h]h]h]h]h]uhKBhhh]r^yhXAs it was mentioned in the previous section, Jailhouse consists of following components, which are prebuilt and copied to the target filesystem:r_yr`y}ray(hj\yhjZyubaubaubj)rby}rcy(hUhjtxhjxhjh}rdy(jU.h]h]h]jUh]h]jjuhKDhhh]rey(jX)rfy}rgy(hXYjailhouse.ko kernel module located at /lib/modules/4.9.28-/extra/driver directory;hjbyhjxhj[h}rhy(h]h]h]h]h]uhNhhh]riyj/)rjy}rky(hXYjailhouse.ko kernel module located at /lib/modules/4.9.28-/extra/driver directory;rlyhjfyhjxhj3h}rmy(h]h]h]h]h]uhKDh]rnyhXYjailhouse.ko kernel module located at /lib/modules/4.9.28-/extra/driver directory;royrpy}rqy(hjlyhjjyubaubaubjX)rry}rsy(hXEjailhouse.bin - hypervisor itself located at /lib/firmware directory;rtyhjbyhjxhj[h}ruy(h]h]h]h]h]uhNhhh]rvyj/)rwy}rxy(hjtyhjryhjxhj3h}ryy(h]h]h]h]h]uhKFh]rzyhXEjailhouse.bin - hypervisor itself located at /lib/firmware directory;r{yr|y}r}y(hjtyhjwyubaubaubjX)r~y}ry(hXbJailhouse management tools are located at /usr/local/libexec/jailhouse and /usr/sbin directories; hjbyhjxhj[h}ry(h]h]h]h]h]uhNhhh]ryj/)ry}ry(hXaJailhouse management tools are located at /usr/local/libexec/jailhouse and /usr/sbin directories;ryhj~yhjxhj3h}ry(h]h]h]h]h]uhKGh]ryhXaJailhouse management tools are located at /usr/local/libexec/jailhouse and /usr/sbin directories;ryry}ry(hjyhjyubaubaubeubj/)ry}ry(hXIn order to create the root-cell and an inmate cell we need to provide cell configuration files. Those configuration files and example binaries are located at /usr/share/jailhouse/examples directory:ryhjtxhjxhj3h}ry(h]h]h]h]h]uhKJhhh]ryhXIn order to create the root-cell and an inmate cell we need to provide cell configuration files. Those configuration files and example binaries are located at /usr/share/jailhouse/examples directory:ryry}ry(hjyhjyubaubj)ry}ry(hXroot@am57xx-evm:/usr/share/jailhouse/examples# ls -1 am572x-rtos-icss.cell am572x-rtos-pruss.cell am57xx-evm-ti-app.cell am57xx-evm.cell am57xx-pdk-leddiag.cell icss_emac.bin led_test.bin linux-loader.bin pruss.bin ti-app.binhjtxhjxhjh}ry(jjh]h]h]h]h]uhM^hhh]ryhXroot@am57xx-evm:/usr/share/jailhouse/examples# ls -1 am572x-rtos-icss.cell am572x-rtos-pruss.cell am57xx-evm-ti-app.cell am57xx-evm.cell am57xx-pdk-leddiag.cell icss_emac.bin led_test.bin linux-loader.bin pruss.bin ti-app.binryry}ry(hUhjyubaubj/)ry}ry(hXwhereryhjtxhjxhj3h}ry(h]h]h]h]h]uhK\hhh]ryhXwhereryry}ry(hjyhjyubaubjQ)ry}ry(hUhjtxhjxhjTh}ry(jVX-h]h]h]h]h]uhK^hhh]ry(jX)ry}ry(hX3**am57xx-evm.cell** - root cell configuration file;ryhjyhjxhj[h}ry(h]h]h]h]h]uhNhhh]ryj/)ry}ry(hjyhjyhjxhj3h}ry(h]h]h]h]h]uhK^h]ry(jW)ry}ry(hX**am57xx-evm.cell**h}ry(h]h]h]h]h]uhjyh]ryhXam57xx-evm.cellryry}ry(hUhjyubahj_ubhX - root cell configuration file;ryry}ry(hX - root cell configuration file;hjyubeubaubjX)ry}ry(hX]**ti-app.bin** and **am57xx-evm-ti-app.cell** - bare metal inmate and its cell configuration;hjyhjxhj[h}ry(h]h]h]h]h]uhNhhh]ryj/)ry}ry(hX]**ti-app.bin** and **am57xx-evm-ti-app.cell** - bare metal inmate and its cell configuration;hjyhjxhj3h}ry(h]h]h]h]h]uhK_h]ry(jW)ry}ry(hX**ti-app.bin**h}ry(h]h]h]h]h]uhjyh]ryhX ti-app.binryry}ry(hUhjyubahj_ubhX and ryry}ry(hX and hjyubjW)ry}ry(hX**am57xx-evm-ti-app.cell**h}ry(h]h]h]h]h]uhjyh]ryhXam57xx-evm-ti-app.cellryry}ry(hUhjyubahj_ubhX0 - bare metal inmate and its cell configuration;ryry}ry(hX0 - bare metal inmate and its cell configuration;hjyubeubaubjX)ry}ry(hX**led_test.bin** and **am57xx-pdk-leddiag.cell** - PDK led_test inmate example and its cell configuration (led_test.bin can be run on AM572x-EVM only);hjyhjxhj[h}ry(h]h]h]h]h]uhNhhh]ryj/)ry}ry(hX**led_test.bin** and **am57xx-pdk-leddiag.cell** - PDK led_test inmate example and its cell configuration (led_test.bin can be run on AM572x-EVM only);hjyhjxhj3h}ry(h]h]h]h]h]uhKah]ry(jW)ry}ry(hX**led_test.bin**h}ry(h]h]h]h]h]uhjyh]ryhX led_test.binryry}ry(hUhjyubahj_ubhX and ryry}ry(hX and hjyubjW)ry}ry(hX**am57xx-pdk-leddiag.cell**h}ry(h]h]h]h]h]uhjyh]ryhXam57xx-pdk-leddiag.cellryry}ry(hUhjyubahj_ubhXg - PDK led_test inmate example and its cell configuration (led_test.bin can be run on AM572x-EVM only);ryry}ry(hXg - PDK led_test inmate example and its cell configuration (led_test.bin can be run on AM572x-EVM only);hjyubeubaubjX)ry}ry(hX**pruss.bin** and **am572x-rtos-pruss.cell** - TI-RTOS PRUSS inmate examples and its cell configuration (pruss.bin can be run on AM572x-IDK only);hjyhjxhj[h}ry(h]h]h]h]h]uhNhhh]ryj/)ry}ry(hX**pruss.bin** and **am572x-rtos-pruss.cell** - TI-RTOS PRUSS inmate examples and its cell configuration (pruss.bin can be run on AM572x-IDK only);hjyhjxhj3h}ry(h]h]h]h]h]uhKdh]ry(jW)ry}ry(hX **pruss.bin**h}ry(h]h]h]h]h]uhjyh]ryhX pruss.binryry}ry(hUhjyubahj_ubhX and ryrz}rz(hX and hjyubjW)rz}rz(hX**am572x-rtos-pruss.cell**h}rz(h]h]h]h]h]uhjyh]rzhXam572x-rtos-pruss.cellrzrz}rz(hUhjzubahj_ubhXf - TI-RTOS PRUSS inmate examples and its cell configuration (pruss.bin can be run on AM572x-IDK only);r zr z}r z(hXf - TI-RTOS PRUSS inmate examples and its cell configuration (pruss.bin can be run on AM572x-IDK only);hjyubeubaubjX)r z}r z(hX**icss_emac.bin** and **am572x-rtos-icss.cell** - TI-RTOS ICSS-EMAC inmate example and its cell configuration (icss_emac.bin can be run on AM572x-IDK only);hjyhjxhj[h}rz(h]h]h]h]h]uhNhhh]rzj/)rz}rz(hX**icss_emac.bin** and **am572x-rtos-icss.cell** - TI-RTOS ICSS-EMAC inmate example and its cell configuration (icss_emac.bin can be run on AM572x-IDK only);hj zhjxhj3h}rz(h]h]h]h]h]uhKgh]rz(jW)rz}rz(hX**icss_emac.bin**h}rz(h]h]h]h]h]uhjzh]rzhX icss_emac.binrzrz}rz(hUhjzubahj_ubhX and rzrz}rz(hX and hjzubjW)rz}rz(hX**am572x-rtos-icss.cell**h}r z(h]h]h]h]h]uhjzh]r!zhXam572x-rtos-icss.cellr"zr#z}r$z(hUhjzubahj_ubhXm - TI-RTOS ICSS-EMAC inmate example and its cell configuration (icss_emac.bin can be run on AM572x-IDK only);r%zr&z}r'z(hXm - TI-RTOS ICSS-EMAC inmate example and its cell configuration (icss_emac.bin can be run on AM572x-IDK only);hjzubeubaubjX)r(z}r)z(hXW**linux-loader.bin** - loader required to run inmates, which start address is not 0x0; hjyhjxhj[h}r*z(h]h]h]h]h]uhNhhh]r+zj/)r,z}r-z(hXV**linux-loader.bin** - loader required to run inmates, which start address is not 0x0;hj(zhjxhj3h}r.z(h]h]h]h]h]uhKjh]r/z(jW)r0z}r1z(hX**linux-loader.bin**h}r2z(h]h]h]h]h]uhj,zh]r3zhXlinux-loader.binr4zr5z}r6z(hUhj0zubahj_ubhXB - loader required to run inmates, which start address is not 0x0;r7zr8z}r9z(hXB - loader required to run inmates, which start address is not 0x0;hj,zubeubaubeubj)r:z}r;z(hUhjtxhjxhjh}rz}r?z(hUjKhj:zhjxhhh}r@z(h]h]h]h]h]uhKhhh]ubaubjF")rAz}rBz(hXRunning the Demo on AM572x-EVMrCzhjtxhjxhjJ"h}rDz(h]rEzUrunning-the-demo-on-am572x-evmrFzah]h]h]h]rGzhqauhNhhh]rHzhXRunning the Demo on AM572x-EVMrIzrJz}rKz(hjCzhjAzubaubjF")rLz}rMz(hXRunning bare-metal ti-app.binrNzhjtxhjxhjJ"h}rOz(h]rPzUrunning-bare-metal-ti-app-binrQzah]h]h]h]rRzhKauhNhhh]rSzhXRunning bare-metal ti-app.binrTzrUz}rVz(hjNzhjLzubaubj/)rWz}rXz(hX#Here are the steps to run the demo:rYzhjtxhjxhj3h}rZz(h]h]h]h]h]uhKuhhh]r[zhX#Here are the steps to run the demo:r\zr]z}r^z(hjYzhjWzubaubjQ)r_z}r`z(hUhjtxhjxhjTh}raz(jVX-h]h]h]h]h]uhKwhhh]rbz(jX)rcz}rdz(hXBoot the Linuxrezhj_zhjxhj[h}rfz(h]h]h]h]h]uhNhhh]rgzj/)rhz}riz(hjezhjczhjxhj3h}rjz(h]h]h]h]h]uhKwh]rkzhXBoot the Linuxrlzrmz}rnz(hjezhjhzubaubaubjX)roz}rpz(hX"Insert jailhouse.ko kernel module hj_zhjxhj[h}rqz(h]h]h]h]h]uhNhhh]rrzj/)rsz}rtz(hX!Insert jailhouse.ko kernel moduleruzhjozhjxhj3h}rvz(h]h]h]h]h]uhKxh]rwzhX!Insert jailhouse.ko kernel modulerxzryz}rzz(hjuzhjszubaubaubeubj)r{z}r|z(hX%root@am57xx-evm:~# modprobe jailhousehjtxhjxhjh}r}z(jjh]h]h]h]h]uhMhhh]r~zhX%root@am57xx-evm:~# modprobe jailhouserzrz}rz(hUhj{zubaubjQ)rz}rz(hUhjtxhjxhjTh}rz(jVX-h]h]h]h]h]uhK~hhh]rzjX)rz}rz(hXIEnable the hypervisor using am57xx-evm.cell root-cell configuration file hjzhjxhj[h}rz(h]h]h]h]h]uhNhhh]rzj/)rz}rz(hXHEnable the hypervisor using am57xx-evm.cell root-cell configuration filerzhjzhjxhj3h}rz(h]h]h]h]h]uhK~h]rzhXHEnable the hypervisor using am57xx-evm.cell root-cell configuration filerzrz}rz(hjzhjzubaubaubaubj)rz}rz(hXroot@am57xx-evm:~# jailhouse enable /usr/share/jailhouse/examples/am57xx-evm.cell Initializing Jailhouse hypervisor v0.6 on CPU 1 Code location: 0xf0000030 Page pool usage after early setup: mem 30/4073, remap 32/131072 Initializing processors: CPU 1... OK CPU 0... OK Page pool usage after late setup: mem 39/4073, remap 38/131072 Activating hypervisor [ 4155.880217] The Jailhouse is opening.hjtxhjxhjh}rz(jjh]h]h]h]h]uhMhhh]rzhXroot@am57xx-evm:~# jailhouse enable /usr/share/jailhouse/examples/am57xx-evm.cell Initializing Jailhouse hypervisor v0.6 on CPU 1 Code location: 0xf0000030 Page pool usage after early setup: mem 30/4073, remap 32/131072 Initializing processors: CPU 1... OK CPU 0... OK Page pool usage after late setup: mem 39/4073, remap 38/131072 Activating hypervisor [ 4155.880217] The Jailhouse is opening.rzrz}rz(hUhjzubaubjQ)rz}rz(hUhjtxhjxhjTh}rz(jVX-h]h]h]h]h]uhKhhh]rzjX)rz}rz(hXCreate a cell for the inmate hjzhjxhj[h}rz(h]h]h]h]h]uhNhhh]rzj/)rz}rz(hXCreate a cell for the inmaterzhjzhjxhj3h}rz(h]h]h]h]h]uhKh]rzhXCreate a cell for the inmaterzrz}rz(hjzhjzubaubaubaubj)rz}rz(hXProot@am57xx-evm:~# jailhouse cell create /usr/share/jailhouse/examples/am57xx-evm-ti-app.cell [ 5270.449687] CPU1: shutdown [ 5270.453221] NOHZ: local_softirq_pending 20 Created cell "AM57XX-EVM-timer8-demo" Page pool usage after cell creation: mem 51/4073, remap 38/131072 [ 5270.487970] Created Jailhouse cell "AM57XX-EVM-timer8-demo"hjtxhjxhjh}rz(jjh]h]h]h]h]uhMhhh]rzhXProot@am57xx-evm:~# jailhouse cell create /usr/share/jailhouse/examples/am57xx-evm-ti-app.cell [ 5270.449687] CPU1: shutdown [ 5270.453221] NOHZ: local_softirq_pending 20 Created cell "AM57XX-EVM-timer8-demo" Page pool usage after cell creation: mem 51/4073, remap 38/131072 [ 5270.487970] Created Jailhouse cell "AM57XX-EVM-timer8-demo"rzrz}rz(hUhjzubaubjQ)rz}rz(hUhjtxhjxhjTh}rz(jVX-h]h]h]h]h]uhKhhh]rzjX)rz}rz(hX"Load the ti-app.bin inmate binary hjzhjxhj[h}rz(h]h]h]h]h]uhNhhh]rzj/)rz}rz(hX!Load the ti-app.bin inmate binaryrzhjzhjxhj3h}rz(h]h]h]h]h]uhKh]rzhX!Load the ti-app.bin inmate binaryrzrz}rz(hjzhjzubaubaubaubj)rz}rz(hX}root@am57xx-evm:~# jailhouse cell load 1 /usr/share/jailhouse/examples/ti-app.bin Cell "AM57XX-EVM-timer8-demo" can be loadedhjtxhjxhjh}rz(jjh]h]h]h]h]uhMhhh]rzhX}root@am57xx-evm:~# jailhouse cell load 1 /usr/share/jailhouse/examples/ti-app.bin Cell "AM57XX-EVM-timer8-demo" can be loadedrzrz}rz(hUhjzubaubjQ)rz}rz(hUhjtxhjxhjTh}rz(jVX-h]h]h]h]h]uhKhhh]rzjX)rz}rz(hXStart the binary hjzhjxhj[h}rz(h]h]h]h]h]uhNhhh]rzj/)rz}rz(hXStart the binaryrzhjzhjxhj3h}rz(h]h]h]h]h]uhKh]rzhXStart the binaryrzrz}rz(hjzhjzubaubaubaubj)rz}rz(hXroot@am57xx-evm:~# jailhouse cell start 1 Hey, I'm working !!!!!!!!!!! timer id 4fff2b01 timer value fffffc17; irq status 00000002; raw 00000002 min 00000017; avr 0000001b; max 000002c1 min 00000017; avr 0000001b; max 000000f3 min 00000017; avr 0000001b; max 000002c8 min 00000017; avr 0000001b; max 00000148 min 00000017; avr 0000001b; max 000002d4 min 00000017; avr 0000001b; max 00000158hjtxhjxhjh}rz(jjh]h]h]h]h]uhMhhh]rzhXroot@am57xx-evm:~# jailhouse cell start 1 Hey, I'm working !!!!!!!!!!! timer id 4fff2b01 timer value fffffc17; irq status 00000002; raw 00000002 min 00000017; avr 0000001b; max 000002c1 min 00000017; avr 0000001b; max 000000f3 min 00000017; avr 0000001b; max 000002c8 min 00000017; avr 0000001b; max 00000148 min 00000017; avr 0000001b; max 000002d4 min 00000017; avr 0000001b; max 00000158rzrz}rz(hUhjzubaubj/)rz}rz(hX**NOTE**: *becase all of the components: root-cell, hypervisor and demo inmate use the same UART, there is a conflict. Once the inmate started to use the UART, Linux stops getting any input from console. To workaround this and continue to control the hypervisor, you may telnet to the EVM and issue all commands from the telnet shell. Hypervisor still will use Linux console to print it sdebug messages*hjtxhjxhj3h}rz(h]h]h]h]h]uhKhhh]rz(jW)rz}rz(hX**NOTE**h}rz(h]h]h]h]h]uhjzh]rzhXNOTErzrz}rz(hUhjzubahj_ubhX: rzrz}rz(hX: hjzubj')rz}rz(hX*becase all of the components: root-cell, hypervisor and demo inmate use the same UART, there is a conflict. Once the inmate started to use the UART, Linux stops getting any input from console. To workaround this and continue to control the hypervisor, you may telnet to the EVM and issue all commands from the telnet shell. Hypervisor still will use Linux console to print it sdebug messages*h}rz(h]h]h]h]h]uhjzh]rzhXbecase all of the components: root-cell, hypervisor and demo inmate use the same UART, there is a conflict. Once the inmate started to use the UART, Linux stops getting any input from console. To workaround this and continue to control the hypervisor, you may telnet to the EVM and issue all commands from the telnet shell. Hypervisor still will use Linux console to print it sdebug messagesrzrz}rz(hUhjzubahj/ubeubjQ)rz}rz(hUhjtxhjxhjTh}rz(jVX-h]h]h]h]h]uhKhhh]rzjX)rz}rz(hXStop the binary hjzhjxhj[h}rz(h]h]h]h]h]uhNhhh]rzj/)rz}rz(hXStop the binaryrzhjzhjxhj3h}rz(h]h]h]h]h]uhKh]rzhXStop the binaryr{r{}r{(hjzhjzubaubaubaubj)r{}r{(hX,root@am57xx-evm:~# jailhouse cell shutdown 1hjtxhjxhjh}r{(jjh]h]h]h]h]uhMhhh]r{hX,root@am57xx-evm:~# jailhouse cell shutdown 1r{r{}r {(hUhj{ubaubj/)r {}r {(hXe**NOTE**: *You may restore Linux console by killing the "/bin/login --" process from telnet session.*hjtxhjxhj3h}r {(h]h]h]h]h]uhKhhh]r {(jW)r{}r{(hX**NOTE**h}r{(h]h]h]h]h]uhj {h]r{hXNOTEr{r{}r{(hUhj{ubahj_ubhX: r{r{}r{(hX: hj {ubj')r{}r{(hX[*You may restore Linux console by killing the "/bin/login --" process from telnet session.*h}r{(h]h]h]h]h]uhj {h]r{hXYYou may restore Linux console by killing the "/bin/login --" process from telnet session.r{r{}r{(hUhj{ubahj/ubeubjQ)r{}r {(hUhjtxhjxhjTh}r!{(jVX-h]h]h]h]h]uhKhhh]r"{jX)r#{}r${(hX destroy cell hj{hjxhj[h}r%{(h]h]h]h]h]uhNhhh]r&{j/)r'{}r({(hX destroy cellr){hj#{hjxhj3h}r*{(h]h]h]h]h]uhKh]r+{hX destroy cellr,{r-{}r.{(hj){hj'{ubaubaubaubj)r/{}r0{(hXroot@am57xx-evm:~# jailhouse cell destroy 1 Closing cell "AM57XX-EVM-timer8-demo" Page pool usage after cell destruction: mem 39/4073, remap 38/131072 [ 6201.111168] Destroyed Jailhouse cell "AM57XX-EVM-timer8-demo"hjtxhjxhjh}r1{(jjh]h]h]h]h]uhMhhh]r2{hXroot@am57xx-evm:~# jailhouse cell destroy 1 Closing cell "AM57XX-EVM-timer8-demo" Page pool usage after cell destruction: mem 39/4073, remap 38/131072 [ 6201.111168] Destroyed Jailhouse cell "AM57XX-EVM-timer8-demo"r3{r4{}r5{(hUhj/{ubaubjQ)r6{}r7{(hUhjtxhjxhjTh}r8{(jVX-h]h]h]h]h]uhKhhh]r9{jX)r:{}r;{(hXdisable hypervisor hj6{hjxhj[h}r<{(h]h]h]h]h]uhNhhh]r={j/)r>{}r?{(hXdisable hypervisorr@{hj:{hjxhj3h}rA{(h]h]h]h]h]uhKh]rB{hXdisable hypervisorrC{rD{}rE{(hj@{hj>{ubaubaubaubj)rF{}rG{(hXroot@am57xx-evm:~# jailhouse disable Shutting down hypervisor Releasing CPU 0 Releasing CPU 1 [ 6248.149728] The Jailhouse was closed.hjtxhjxhjh}rH{(jjh]h]h]h]h]uhMhhh]rI{hXroot@am57xx-evm:~# jailhouse disable Shutting down hypervisor Releasing CPU 0 Releasing CPU 1 [ 6248.149728] The Jailhouse was closed.rJ{rK{}rL{(hUhjF{ubaubj/)rM{}rN{(hX **NOTES**:rO{hjtxhjxhj3h}rP{(h]h]h]h]h]uhKhhh]rQ{(jW)rR{}rS{(hX **NOTES**h}rT{(h]h]h]h]h]uhjM{h]rU{hXNOTESrV{rW{}rX{(hUhjR{ubahj_ubhX:rY{}rZ{(hX:hjM{ubeubj/)r[{}r\{(hXyYou may shutdown and start the same binary multiple times. Every time you start the binary, it starts from the beginning.r]{hjtxhjxhj3h}r^{(h]h]h]h]h]uhKhhh]r_{hXyYou may shutdown and start the same binary multiple times. Every time you start the binary, it starts from the beginning.r`{ra{}rb{(hj]{hj[{ubaubj/)rc{}rd{(hXvIf you have different binaries which use the same cell resources, you may reuse the created cell to run them. You need just shutdown the cell, load another binary and start it. If you need to run different binaries that requires different resources, you need to shutdown the running cell, destroy it, create a new one with required resources, load a new binary and start it.re{hjtxhjxhj3h}rf{(h]h]h]h]h]uhKhhh]rg{hXvIf you have different binaries which use the same cell resources, you may reuse the created cell to run them. You need just shutdown the cell, load another binary and start it. If you need to run different binaries that requires different resources, you need to shutdown the running cell, destroy it, create a new one with required resources, load a new binary and start it.rh{ri{}rj{(hje{hjc{ubaubjF")rk{}rl{(hX Running PDK led_test.bin examplerm{hjtxhjxhjJ"h}rn{(h]ro{U running-pdk-led-test-bin-examplerp{ah]h]h]h]rq{h auhNhhh]rr{hX Running PDK led_test.bin examplers{rt{}ru{(hjm{hjk{ubaubj/)rv{}rw{(hX.After you enable hyprevisor, create a pdk cellrx{hjtxhjxhj3h}ry{(h]h]h]h]h]uhKhhh]rz{hX.After you enable hyprevisor, create a pdk cellr{{r|{}r}{(hjx{hjv{ubaubj)r~{}r{(hX.root@am57xx-evm:~# jailhouse cell create /usr/share/jailhouse/examples/am57xx-pdk-leddiag.cell [ 312.419978] CPU1: shutdown Created cell "AM57XX-EVM-PDK-LED" Page pool usage after cell creation: mem 54/4075, remap 38/131072 [ 312.470723] Created Jailhouse cell "AM57XX-EVM-PDK-LED" root@am57xx-evm:~#hjtxhjxhjh}r{(jjh]h]h]h]h]uhMhhh]r{hX.root@am57xx-evm:~# jailhouse cell create /usr/share/jailhouse/examples/am57xx-pdk-leddiag.cell [ 312.419978] CPU1: shutdown Created cell "AM57XX-EVM-PDK-LED" Page pool usage after cell creation: mem 54/4075, remap 38/131072 [ 312.470723] Created Jailhouse cell "AM57XX-EVM-PDK-LED" root@am57xx-evm:~#r{r{}r{(hUhj~{ubaubj)r{}r{(hUhjtxhjxhjh}r{(h]h]h]h]h]uhKhhh]r{j)r{}r{(hXload the led_test.bin binaryr{jKhj{hjxhhh}r{(h]h]h]h]h]uhKhhh]r{hXload the led_test.bin binaryr{r{}r{(hj{hj{ubaubaubj)r{}r{(hX{root@am57xx-evm:~# jailhouse cell load 1 /usr/share/jailhouse/examples/led_test.bin Cell "AM57XX-EVM-PDK-LED" can be loadedhjtxhjxhjh}r{(jjh]h]h]h]h]uhMhhh]r{hX{root@am57xx-evm:~# jailhouse cell load 1 /usr/share/jailhouse/examples/led_test.bin Cell "AM57XX-EVM-PDK-LED" can be loadedr{r{}r{(hUhj{ubaubj/)r{}r{(hX and start itr{hjtxhjxhj3h}r{(h]h]h]h]h]uhKhhh]r{hX and start itr{r{}r{(hj{hj{ubaubj)r{}r{(hXroot@am57xx-evm:~# jailhouse cell start 1 Started cell "AM57XX-EVM-PDK-LED" root@am57xx-e ********************************************* * LED Test * ********************************************* Testing LED Blinking LEDs... Press 'y' to verify pass, 'r' to blink again, or any other character to indicate failure: r Blinking again Press 'y' to verify pass, 'r' to blink again, or any other character to indicate failure: y Received: y Test PASSED!hjtxhjxhjh}r{(jjh]h]h]h]h]uhMhhh]r{hXroot@am57xx-evm:~# jailhouse cell start 1 Started cell "AM57XX-EVM-PDK-LED" root@am57xx-e ********************************************* * LED Test * ********************************************* Testing LED Blinking LEDs... Press 'y' to verify pass, 'r' to blink again, or any other character to indicate failure: r Blinking again Press 'y' to verify pass, 'r' to blink again, or any other character to indicate failure: y Received: y Test PASSED!r{r{}r{(hUhj{ubaubj/)r{}r{(hX8You may see blinking leds, press "r" to repeat the test.r{hjtxhjxhj3h}r{(h]h]h]h]h]uhM hhh]r{hX8You may see blinking leds, press "r" to repeat the test.r{r{}r{(hj{hj{ubaubj)r{}r{(hUhjtxhjxhjh}r{(h]h]h]h]h]uhM hhh]r{(j)r{}r{(hX **NOTE:**r{jKhj{hjxhhh}r{(h]h]h]h]h]uhM hhh]r{jW)r{}r{(hj{h}r{(h]h]h]h]h]uhj{h]r{hXNOTE:r{r{}r{(hUhj{ubahj_ubaubj)r{}r{(hXThis example just demonstrates hypervisor's ability to run binaries that were built outside of jailhouse source tree. This and other RTOS examples were ported for this purpose. Look to RTOS SDK documentation for description of the examples functionality.r{jKhj{hjxhhh}r{(h]h]h]h]h]uhMhhh]r{hXThis example just demonstrates hypervisor's ability to run binaries that were built outside of jailhouse source tree. This and other RTOS examples were ported for this purpose. Look to RTOS SDK documentation for description of the examples functionality.r{r{}r{(hj{hj{ubaubeubjF")r{}r{(hXRunning the Demo on AM572x-IDKr{hjtxhjxhjJ"h}r{(h]r{Urunning-the-demo-on-am572x-idkr{ah]h]h]h]r{hauhNhhh]r{hXRunning the Demo on AM572x-IDKr{r{}r{(hj{hj{ubaubj/)r{}r{(hXTwo TI-RTOS example applications were ported for Jailhouse hypervisor: pruss.bin and icss_emac.bin. In contrast to led_test.bin, which has its own startup code, linker script and was linked to start from address 0x0, the pruss.bin and icss_emac.bin used the TI-RTOS building infrustructure as much as possible. Therefore they are linked to EVM's DDR address space (starting from 0x80000000 ) and their entry points are not 0x0. To support loading and running such applicaiton a special command shell be used.r{hjtxhjxhj3h}r{(h]h]h]h]h]uhMhhh]r{hXTwo TI-RTOS example applications were ported for Jailhouse hypervisor: pruss.bin and icss_emac.bin. In contrast to led_test.bin, which has its own startup code, linker script and was linked to start from address 0x0, the pruss.bin and icss_emac.bin used the TI-RTOS building infrustructure as much as possible. Therefore they are linked to EVM's DDR address space (starting from 0x80000000 ) and their entry points are not 0x0. To support loading and running such applicaiton a special command shell be used.r{r{}r{(hj{hj{ubaubj/)r{}r{(hXYTo run the pruss.bin applicaton enable the hypervisor the same way as for other examples.r{hjtxhjxhj3h}r{(h]h]h]h]h]uhMhhh]r{hXYTo run the pruss.bin applicaton enable the hypervisor the same way as for other examples.r{r{}r{(hj{hj{ubaubj)r{}r{(hXcd /usr/share/jailhouse/examples/ root@am57xx-evm:/usr/share/jailhouse/examples# modprobe jailhouse root@am57xx-evm:/usr/share/jailhouse/examples# jailhouse enable ./am57xx-evm.cell Initializing Jailhouse hypervisor on CPU 0 Code location: 0xf0000030 Page pool usage after early setup: mem 30/4075, remap 32/131072 Initializing processors: CPU 0... OK CPU 1... OK Page pool usage after late setup: mem 39/4075, remap 38/131072 Activating hypervisor [ 710.008555] The Jailhouse is opening.hjtxhjxhjh}r{(jjh]h]h]h]h]uhM1hhh]r{hXcd /usr/share/jailhouse/examples/ root@am57xx-evm:/usr/share/jailhouse/examples# modprobe jailhouse root@am57xx-evm:/usr/share/jailhouse/examples# jailhouse enable ./am57xx-evm.cell Initializing Jailhouse hypervisor on CPU 0 Code location: 0xf0000030 Page pool usage after early setup: mem 30/4075, remap 32/131072 Initializing processors: CPU 0... OK CPU 1... OK Page pool usage after late setup: mem 39/4075, remap 38/131072 Activating hypervisor [ 710.008555] The Jailhouse is opening.r{r{}r{(hUhj{ubaubj/)r{}r{(hXCreate a cell for pruss.binr{hjtxhjxhj3h}r{(h]h]h]h]h]uhM1hhh]r{hXCreate a cell for pruss.binr{r{}r{(hj{hj{ubaubj)r{}r{(hXEroot@am57xx-evm:/usr/share/jailhouse/examples# jailhouse cell create ./am572x-rtos-pruss.cell [ 745.067783] CPU1: shutdown Created cell "AM572X-IDK-PRUSS" Page pool usage after cell creation: mem 54/4075, remap 38/131072 [ 745.107324] Created Jailhouse cell "AM572X-IDK-PRUSS" root@am57xx-evm:/usr/share/jailhouse/examples#hjtxhjxhjh}r{(jjh]h]h]h]h]uhMChhh]r{hXEroot@am57xx-evm:/usr/share/jailhouse/examples# jailhouse cell create ./am572x-rtos-pruss.cell [ 745.067783] CPU1: shutdown Created cell "AM572X-IDK-PRUSS" Page pool usage after cell creation: mem 54/4075, remap 38/131072 [ 745.107324] Created Jailhouse cell "AM572X-IDK-PRUSS" root@am57xx-evm:/usr/share/jailhouse/examples#r{r{}r{(hUhj{ubaubj/)r{}r{(hX:Use cell load command to load several required components:r{hjtxhjxhj3h}r{(h]h]h]h]h]uhM<hhh]r{hX:Use cell load command to load several required components:r{r{}r{(hj{hj{ubaubj)r|}r|(hXroot@am57xx-evm:/usr/share/jailhouse/examples# jailhouse cell load 1 linux-loader.bin -a 0 -s "kernel=0x80005128" -a 0x100 pruss.bin -a 0x80000000 Cell "AM572X-IDK-PRUSS" can be loadedhjtxhjxhjh}r|(jjh]h]h]h]h]uhMNhhh]r|hXroot@am57xx-evm:/usr/share/jailhouse/examples# jailhouse cell load 1 linux-loader.bin -a 0 -s "kernel=0x80005128" -a 0x100 pruss.bin -a 0x80000000 Cell "AM572X-IDK-PRUSS" can be loadedr|r|}r|(hUhj|ubaubj/)r|}r|(hXwherer |hjtxhjxhj3h}r |(h]h]h]h]h]uhMChhh]r |hXwherer |r |}r|(hj |hj|ubaubjQ)r|}r|(hUhjtxhjxhjTh}r|(jVX-h]h]h]h]h]uhMEhhh]r|(jX)r|}r|(hXlinux-loader.bin is a small application provided and built by jailhouse source tree. As you can see (-a 0) it is loaded to virtual address 0x0;hj|hjxhj[h}r|(h]h]h]h]h]uhNhhh]r|j/)r|}r|(hXlinux-loader.bin is a small application provided and built by jailhouse source tree. As you can see (-a 0) it is loaded to virtual address 0x0;r|hj|hjxhj3h}r|(h]h]h]h]h]uhMEh]r|hXlinux-loader.bin is a small application provided and built by jailhouse source tree. As you can see (-a 0) it is loaded to virtual address 0x0;r|r|}r|(hj|hj|ubaubaubjX)r|}r |(hX"-s "kernel=0x80005128" -a 0x100" - is the linux_loader argument loaded as string to virtual address 0x100, which instructs the linux-loader to branch to the pruss.bin 0x80005128 entry point;hj|hjxhj[h}r!|(h]h]h]h]h]uhNhhh]r"|j/)r#|}r$|(hX"-s "kernel=0x80005128" -a 0x100" - is the linux_loader argument loaded as string to virtual address 0x100, which instructs the linux-loader to branch to the pruss.bin 0x80005128 entry point;r%|hj|hjxhj3h}r&|(h]h]h]h]h]uhMHh]r'|hX"-s "kernel=0x80005128" -a 0x100" - is the linux_loader argument loaded as string to virtual address 0x100, which instructs the linux-loader to branch to the pruss.bin 0x80005128 entry point;r(|r)|}r*|(hj%|hj#|ubaubaubjX)r+|}r,|(hXmpruss.bin itself, loaded to the virtual address 0x80000000 - the address where this application is lined to; hj|hjxhj[h}r-|(h]h]h]h]h]uhNhhh]r.|j/)r/|}r0|(hXlpruss.bin itself, loaded to the virtual address 0x80000000 - the address where this application is lined to;r1|hj+|hjxhj3h}r2|(h]h]h]h]h]uhMKh]r3|hXlpruss.bin itself, loaded to the virtual address 0x80000000 - the address where this application is lined to;r4|r5|}r6|(hj1|hj/|ubaubaubeubj)r7|}r8|(hUhjtxhjxhjh}r9|(h]h]h]h]h]uhMNhhh]r:|(j)r;|}r<|(hUjKhj7|hjxhhh}r=|(h]h]h]h]h]uhKhhh]ubj)r>|}r?|(hX&After loading run the inmate as usual:r@|jKhj7|hjxhhh}rA|(h]h]h]h]h]uhMOhhh]rB|hX&After loading run the inmate as usual:rC|rD|}rE|(hj@|hj>|ubaubeubj)rF|}rG|(hXroot@am57xx-evm:/usr/share/jailhouse/examples# jailhouse cell start 1 Started cell "AM572X-IDK-PRUSS" root@am57xx-evm:/usr/share/jailhouse/examples# passed verify constant tbl entry for instance 1: pruNum: 0 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 0 eventwait: got the INTC event from PRU, count: 1 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 0 eventwait: got the INTC event from PRU, count: 2 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 0 eventwait: got the INTC event from PRU, count: 3 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 0 eventwait: got the INTC event from PRU, count: 4 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 0 eventwait: got the INTC event from PRU, count: 5 eventwait: waiting for the INTC event from PRU Testing for instance: 1, pru num: 0 is complete passed verify constant tbl entry for instance 1: pruNum: 1 sending the INTC event to the PRU for instance: 1 , pru num: 1 eventwait: got the INTC event from PRU, count: 1 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 1 eventwait: got the INTC event from PRU, count: 2 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 1 eventwait: got the INTC event from PRU, count: 3 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 1 eventwait: got the INTC event from PRU, count: 4 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 1 eventwait: got the INTC event from PRU, count: 5 Testing for instance: 1, pru num: 1 is complete passed verify constant tbl entry for instance 2: pruNum: 0 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 0 eventwait2: got the INTC event from PRU, count: 1 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 0 eventwait2: got the INTC event from PRU, count: 2 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 0 eventwait2: got the INTC event from PRU, count: 3 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 0 eventwait2: got the INTC event from PRU, count: 4 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 0 eventwait2: got the INTC event from PRU, count: 5 eventwait2: waiting for the INTC event from PRU Testing for instance: 2, pru num: 0 is complete passed verify constant tbl entry for instance 2: pruNum: 1 sending the INTC event to the PRU for instance: 2 , pru num: 1 eventwait2: got the INTC event from PRU, count: 1 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 1 eventwait2: got the INTC event from PRU, count: 2 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 1 eventwait2: got the INTC event from PRU, count: 3 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 1 eventwait2: got the INTC event from PRU, count: 4 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 1 eventwait2: got the INTC event from PRU, count: 5 Testing for instance: 2, pru num: 1 is complete All tests have passedhjtxhjxhjh}rH|(jjh]h]h]h]h]uhMahhh]rI|hXroot@am57xx-evm:/usr/share/jailhouse/examples# jailhouse cell start 1 Started cell "AM572X-IDK-PRUSS" root@am57xx-evm:/usr/share/jailhouse/examples# passed verify constant tbl entry for instance 1: pruNum: 0 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 0 eventwait: got the INTC event from PRU, count: 1 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 0 eventwait: got the INTC event from PRU, count: 2 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 0 eventwait: got the INTC event from PRU, count: 3 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 0 eventwait: got the INTC event from PRU, count: 4 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 0 eventwait: got the INTC event from PRU, count: 5 eventwait: waiting for the INTC event from PRU Testing for instance: 1, pru num: 0 is complete passed verify constant tbl entry for instance 1: pruNum: 1 sending the INTC event to the PRU for instance: 1 , pru num: 1 eventwait: got the INTC event from PRU, count: 1 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 1 eventwait: got the INTC event from PRU, count: 2 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 1 eventwait: got the INTC event from PRU, count: 3 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 1 eventwait: got the INTC event from PRU, count: 4 eventwait: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 1 , pru num: 1 eventwait: got the INTC event from PRU, count: 5 Testing for instance: 1, pru num: 1 is complete passed verify constant tbl entry for instance 2: pruNum: 0 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 0 eventwait2: got the INTC event from PRU, count: 1 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 0 eventwait2: got the INTC event from PRU, count: 2 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 0 eventwait2: got the INTC event from PRU, count: 3 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 0 eventwait2: got the INTC event from PRU, count: 4 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 0 eventwait2: got the INTC event from PRU, count: 5 eventwait2: waiting for the INTC event from PRU Testing for instance: 2, pru num: 0 is complete passed verify constant tbl entry for instance 2: pruNum: 1 sending the INTC event to the PRU for instance: 2 , pru num: 1 eventwait2: got the INTC event from PRU, count: 1 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 1 eventwait2: got the INTC event from PRU, count: 2 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 1 eventwait2: got the INTC event from PRU, count: 3 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 1 eventwait2: got the INTC event from PRU, count: 4 eventwait2: waiting for the INTC event from PRU sending the INTC event to the PRU for instance: 2 , pru num: 1 eventwait2: got the INTC event from PRU, count: 5 Testing for instance: 2, pru num: 1 is complete All tests have passedrJ|rK|}rL|(hUhjF|ubaubj)rM|}rN|(hUhjtxhjxhjh}rO|(h]h]h]h]h]uhMhhh]rP|(j)rQ|}rR|(hUjKhjM|hjxhhh}rS|(h]h]h]h]h]uhKhhh]ubj)rT|}rU|(hXYou may run the **icss_emac.bin** in similar way using appropriate cell configuration. **Note that icss_emac has different entry point - 0x80000000**.jKhjM|hjxhhh}rV|(h]h]h]h]h]uhMhhh]rW|(hXYou may run the rX|rY|}rZ|(hXYou may run the hjT|ubjW)r[|}r\|(hX**icss_emac.bin**h}r]|(h]h]h]h]h]uhjT|h]r^|hX icss_emac.binr_|r`|}ra|(hUhj[|ubahj_ubhX6 in similar way using appropriate cell configuration. rb|rc|}rd|(hX6 in similar way using appropriate cell configuration. hjT|ubjW)re|}rf|(hX>**Note that icss_emac has different entry point - 0x80000000**h}rg|(h]h]h]h]h]uhjT|h]rh|hX:Note that icss_emac has different entry point - 0x80000000ri|rj|}rk|(hUhje|ubahj_ubhX.rl|}rm|(hX.hjT|ubeubeubjF")rn|}ro|(hXJailhouse Performance on AM5728rp|hjtxhjxhjJ"h}rq|(h]rr|Ujailhouse-performance-on-am5728rs|ah]h]h]h]rt|h+auhNhhh]ru|hXJailhouse Performance on AM5728rv|rw|}rx|(hjp|hjn|ubaubj/)ry|}rz|(hXTo verify the real-time performance of Jailhouse Sitara AM5728 was setup to run Linux on one of the ARM Cortex A15 cores, and a TI-RTOS inmate on the other A15 core. A test was run to measure interrupt latency. Poll mode driver based application performance of an inmate should be identical to a system without virtualizationion in a static partitioning system like Jailhouse. Anything interrupt based is required to share the interrupt controller (GIC) which will introduce some interference from Linux to the real-time application. The measurements shown below over a million interrupts clearly shows the interference, and captures the upper bound at 8.8us. For the first run of interrupt latency test an unloaded Linux running on core 0 is in the first column. In the second column Linux on core 0 is running STREAM. STREAM is an external memory access benchmark that fully utilizes the number of outstanding reads and writes to memory. It is scalable from individual processors to clusters supercomputers, here it is used at the processor level. It was chosen as representative of a worst case memory access behaviour of a Linux based application on a Cortex A15, essentially with a memory access profile like an optimized memorytomemory copy. In AM5728 the two Cortex A15 cores share L2 cache and access to the rest of the SoC, which the STREAM benchmark running on core 0 stresses while core 1 access GIC registers to respond to the interrupt.r{|hjtxhjxhj3h}r||(h]h]h]h]h]uhMhhh]r}|hXTo verify the real-time performance of Jailhouse Sitara AM5728 was setup to run Linux on one of the ARM Cortex A15 cores, and a TI-RTOS inmate on the other A15 core. A test was run to measure interrupt latency. Poll mode driver based application performance of an inmate should be identical to a system without virtualizationion in a static partitioning system like Jailhouse. Anything interrupt based is required to share the interrupt controller (GIC) which will introduce some interference from Linux to the real-time application. The measurements shown below over a million interrupts clearly shows the interference, and captures the upper bound at 8.8us. For the first run of interrupt latency test an unloaded Linux running on core 0 is in the first column. In the second column Linux on core 0 is running STREAM. STREAM is an external memory access benchmark that fully utilizes the number of outstanding reads and writes to memory. It is scalable from individual processors to clusters supercomputers, here it is used at the processor level. It was chosen as representative of a worst case memory access behaviour of a Linux based application on a Cortex A15, essentially with a memory access profile like an optimized memorytomemory copy. In AM5728 the two Cortex A15 cores share L2 cache and access to the rest of the SoC, which the STREAM benchmark running on core 0 stresses while core 1 access GIC registers to respond to the interrupt.r~|r|}r|(hj{|hjy|ubaubj)r|}r|(hUhjtxhjxhjh}r|(h]h]h]h]h]uhMhhh]r|j)r|}r|(hUjKhj|hjxhhh}r|(h]h]h]h]h]uhKhhh]ubaubj:)r|}r|(hUhjtxhjxhj=h}r|(h]h]h]h]r|Uid87r|ah]uhNhhh]r|(h)r|}r|(hX5**Interrupt latency of a bare metal inmate (core 1)**r|hj|hjxhhh}r|(h]h]h]h]h]uhKh]r|jW)r|}r|(hj|h}r|(h]h]h]h]h]uhj|h]r|hX1Interrupt latency of a bare metal inmate (core 1)r|r|}r|(hUhj|ubahj_ubaubj@)r|}r|(hUh}r|(h]h]h]h]h]UcolsKuhj|h]r|(jE)r|}r|(hUh}r|(h]h]h]h]h]UcolwidthKuhj|h]hjIubjE)r|}r|(hUh}r|(h]h]h]h]h]UcolwidthKuhj|h]hjIubjE)r|}r|(hUh}r|(h]h]h]h]h]UcolwidthKuhj|h]hjIubjS)r|}r|(hUh}r|(h]h]h]h]h]uhj|h]r|jX)r|}r|(hUh}r|(h]h]h]h]h]uhj|h]r|(j])r|}r|(hUh}r|(h]h]h]h]h]uhj|h]hjjubj])r|}r|(hUh}r|(h]h]h]h]h]uhj|h]r|j/)r|}r|(hXUnloaded Linux on core 0r|hj|hjxhj3h}r|(h]h]h]h]h]uhMh]r|hXUnloaded Linux on core 0r|r|}r|(hj|hj|ubaubahjjubj])r|}r|(hUh}r|(h]h]h]h]h]uhj|h]r|j/)r|}r|(hX(Linux Running STREAM benchmark on core 0r|hj|hjxhj3h}r|(h]h]h]h]h]uhMh]r|hX(Linux Running STREAM benchmark on core 0r|r|}r|(hj|hj|ubaubahjjubehjubahjubj)r|}r|(hUh}r|(h]h]h]h]h]uhj|h]r|(jX)r|}r|(hUh}r|(h]h]h]h]h]uhj|h]r|(j])r|}r|(hUh}r|(h]h]h]h]h]uhj|h]r|j)r|}r|(hUh}r|(h]h]h]h]h]uhj|h]r|(j)r|}r|(hXInterrutp countr|jKhj|hjxhhh}r|(h]h]h]h]h]uhKh]r|hXInterrutp countr|r|}r|(hj|hj|ubaubj)r|}r|(hXBucket 1.6 us - 3.2 usr|jKhj|hjxhhh}r|(h]h]h]h]h]uhKh]r|hXBucket 1.6 us - 3.2 usr|r|}r|(hj|hj|ubaubehjubahjjubj])r|}r|(hUh}r|(h]h]h]h]h]uhj|h]r|j/)r|}r|(hX99.3756%r|hj|hjxhj3h}r|(h]h]h]h]h]uhMh]r|hX99.3756%r|r|}r|(hj|hj|ubaubahjjubj])r|}r|(hUh}r|(h]h]h]h]h]uhj|h]r|j/)r|}r|(hX33.9323%r|hj|hjxhj3h}r|(h]h]h]h]h]uhMh]r|hX33.9323%r|r}}r}(hj|hj|ubaubahjjubehjubjX)r}}r}(hUh}r}(h]h]h]h]h]uhj|h]r}(j])r}}r}(hUh}r}(h]h]h]h]h]uhj}h]r }j)r }}r }(hUh}r }(h]h]h]h]h]uhj}h]r }(j)r}}r}(hXInterrutp countr}jKhj }hjxhhh}r}(h]h]h]h]h]uhKh]r}hXInterrutp countr}r}}r}(hj}hj}ubaubj)r}}r}(hXBucket 3.2 us - 6.4 usr}jKhj }hjxhhh}r}(h]h]h]h]h]uhKh]r}hXBucket 3.2 us - 6.4 usr}r}}r}(hj}hj}ubaubehjubahjjubj])r}}r}(hUh}r }(h]h]h]h]h]uhj}h]r!}j/)r"}}r#}(hX0.6244%r$}hj}hjxhj3h}r%}(h]h]h]h]h]uhMh]r&}hX0.6244%r'}r(}}r)}(hj$}hj"}ubaubahjjubj])r*}}r+}(hUh}r,}(h]h]h]h]h]uhj}h]r-}j/)r.}}r/}(hX66.0632%r0}hj*}hjxhj3h}r1}(h]h]h]h]h]uhMh]r2}hX66.0632%r3}r4}}r5}(hj0}hj.}ubaubahjjubehjubjX)r6}}r7}(hUh}r8}(h]h]h]h]h]uhj|h]r9}(j])r:}}r;}(hUh}r<}(h]h]h]h]h]uhj6}h]r=}j)r>}}r?}(hUh}r@}(h]h]h]h]h]uhj:}h]rA}(j)rB}}rC}(hXInterrutp countrD}jKhj>}hjxhhh}rE}(h]h]h]h]h]uhKh]rF}hXInterrutp countrG}rH}}rI}(hjD}hjB}ubaubj)rJ}}rK}(hXBucket 6.4 us - 12.8 usrL}jKhj>}hjxhhh}rM}(h]h]h]h]h]uhKh]rN}hXBucket 6.4 us - 12.8 usrO}rP}}rQ}(hjL}hjJ}ubaubehjubahjjubj])rR}}rS}(hUh}rT}(h]h]h]h]h]uhj6}h]rU}j/)rV}}rW}(hXnonerX}hjR}hjxhj3h}rY}(h]h]h]h]h]uhMh]rZ}hXnoner[}r\}}r]}(hjX}hjV}ubaubahjjubj])r^}}r_}(hUh}r`}(h]h]h]h]h]uhj6}h]ra}j/)rb}}rc}(hX0.0045%rd}hj^}hjxhj3h}re}(h]h]h]h]h]uhMh]rf}hX0.0045%rg}rh}}ri}(hjd}hjb}ubaubahjjubehjubjX)rj}}rk}(hUh}rl}(h]h]h]h]h]uhj|h]rm}(j])rn}}ro}(hUh}rp}(h]h]h]h]h]uhjj}h]rq}j/)rr}}rs}(hXMinimum interrupt latencyrt}hjn}hjxhj3h}ru}(h]h]h]h]h]uhMh]rv}hXMinimum interrupt latencyrw}rx}}ry}(hjt}hjr}ubaubahjjubj])rz}}r{}(hUh}r|}(h]h]h]h]h]uhjj}h]r}}j/)r~}}r}(hX2.2 microsecondsr}hjz}hjxhj3h}r}(h]h]h]h]h]uhMh]r}hX2.2 microsecondsr}r}}r}(hj}hj~}ubaubahjjubj])r}}r}(hUh}r}(h]h]h]h]h]uhjj}h]r}j/)r}}r}(hX1.8 microsecondsr}hj}hjxhj3h}r}(h]h]h]h]h]uhMh]r}hX1.8 microsecondsr}r}}r}(hj}hj}ubaubahjjubehjubjX)r}}r}(hUh}r}(h]h]h]h]h]uhj|h]r}(j])r}}r}(hUh}r}(h]h]h]h]h]uhj}h]r}j/)r}}r}(hXMaximim interrupt latencyr}hj}hjxhj3h}r}(h]h]h]h]h]uhMh]r}hXMaximim interrupt latencyr}r}}r}(hj}hj}ubaubahjjubj])r}}r}(hUh}r}(h]h]h]h]h]uhj}h]r}j/)r}}r}(hX5.0 microsecondsr}hj}hjxhj3h}r}(h]h]h]h]h]uhMh]r}hX5.0 microsecondsr}r}}r}(hj}hj}ubaubahjjubj])r}}r}(hUh}r}(h]h]h]h]h]uhj}h]r}j/)r}}r}(hX8.8 microsecondsr}hj}hjxhj3h}r}(h]h]h]h]h]uhMh]r}hX8.8 microsecondsr}r}}r}(hj}hj}ubaubahjjubehjubehjubehjubeubj)r}}r}(hUhjtxhjxhjh}r}(h]h]h]h]h]uhMhhh]r}j)r}}r}(hUjKhj}hjxhhh}r}(h]h]h]h]h]uhKhhh]ubaubj)r}}r}(hUhjtxhjxhjh}r}(h]h]h]h]h]uhMhhh]r}j)r}}r}(hUjKhj}hjxhhh}r}(h]h]h]h]h]uhKhhh]ubaubjF")r}}r}(hXBuilding Jailhouse from Sourcesr}hjtxhjxhjJ"h}r}(h]r}Ubuilding-jailhouse-from-sourcesr}ah]h]h]h]r}hauhNhhh]r}hXBuilding Jailhouse from Sourcesr}r}}r}(hj}hj}ubaubj/)r}}r}(hXJailhouse sources are located at $TI_SDK_PATH/board-support/extra-drivers/jailhouse-0.7 directory. The directory contains the following subdirectories:r}hjtxhjxhj3h}r}(h]h]h]h]h]uhMhhh]r}hXJailhouse sources are located at $TI_SDK_PATH/board-support/extra-drivers/jailhouse-0.7 directory. The directory contains the following subdirectories:r}r}}r}(hj}hj}ubaubjQ)r}}r}(hUhjtxhjxhjTh}r}(jVX-h]h]h]h]h]uhMhhh]r}(jX)r}}r}(hX**Documentation**r}hj}hjxhj[h}r}(h]h]h]h]h]uhNhhh]r}j/)r}}r}(hj}hj}hjxhj3h}r}(h]h]h]h]h]uhMh]r}jW)r}}r}(hj}h}r}(h]h]h]h]h]uhj}h]r}hX Documentationr}r}}r}(hUhj}ubahj_ubaubaubjX)r}}r}(hX**ci** - configuration files for different platforms. ***Copy the jailhouse-config-am57xx-evm.h file into hypervisor/include/jailhouse directory and rename it to config.h***hj}hjxhj[h}r}(h]h]h]h]h]uhNhhh]r}j/)r}}r}(hX**ci** - configuration files for different platforms. ***Copy the jailhouse-config-am57xx-evm.h file into hypervisor/include/jailhouse directory and rename it to config.h***hj}hjxhj3h}r}(h]h]h]h]h]uhMh]r}(jW)r}}r}(hX**ci**h}r}(h]h]h]h]h]uhj}h]r}hXcir}r}}r}(hUhj}ubahj_ubhX0 - configuration files for different platforms. r}r}}r~(hX0 - configuration files for different platforms. hj}ubjW)r~}r~(hXw***Copy the jailhouse-config-am57xx-evm.h file into hypervisor/include/jailhouse directory and rename it to config.h***h}r~(h]h]h]h]h]uhj}h]r~hXs*Copy the jailhouse-config-am57xx-evm.h file into hypervisor/include/jailhouse directory and rename it to config.h*r~r~}r~(hUhj~ubahj_ubeubaubjX)r~}r ~(hX'**configs** - cell configuration files.r ~hj}hjxhj[h}r ~(h]h]h]h]h]uhNhhh]r ~j/)r ~}r~(hj ~hj~hjxhj3h}r~(h]h]h]h]h]uhMh]r~(jW)r~}r~(hX **configs**h}r~(h]h]h]h]h]uhj ~h]r~hXconfigsr~r~}r~(hUhj~ubahj_ubhX - cell configuration files.r~r~}r~(hX - cell configuration files.hj ~ubeubaubjX)r~}r~(hX,**driver** - jailhouse.ko kernel module coder~hj}hjxhj[h}r~(h]h]h]h]h]uhNhhh]r~j/)r ~}r!~(hj~hj~hjxhj3h}r"~(h]h]h]h]h]uhMh]r#~(jW)r$~}r%~(hX **driver**h}r&~(h]h]h]h]h]uhj ~h]r'~hXdriverr(~r)~}r*~(hUhj$~ubahj_ubhX" - jailhouse.ko kernel module coder+~r,~}r-~(hX" - jailhouse.ko kernel module codehj ~ubeubaubjX)r.~}r/~(hX **hypervisor** - hypervisor coder0~hj}hjxhj[h}r1~(h]h]h]h]h]uhNhhh]r2~j/)r3~}r4~(hj0~hj.~hjxhj3h}r5~(h]h]h]h]h]uhMh]r6~(jW)r7~}r8~(hX**hypervisor**h}r9~(h]h]h]h]h]uhj3~h]r:~hX hypervisorr;~r<~}r=~(hUhj7~ubahj_ubhX - hypervisor coder>~r?~}r@~(hX - hypervisor codehj3~ubeubaubjX)rA~}rB~(hXM**inmates** - inmates demos. It also contains code for ti_app inmate example.hj}hjxhj[h}rC~(h]h]h]h]h]uhNhhh]rD~j/)rE~}rF~(hXM**inmates** - inmates demos. It also contains code for ti_app inmate example.hjA~hjxhj3h}rG~(h]h]h]h]h]uhMh]rH~(jW)rI~}rJ~(hX **inmates**h}rK~(h]h]h]h]h]uhjE~h]rL~hXinmatesrM~rN~}rO~(hUhjI~ubahj_ubhXB - inmates demos. It also contains code for ti_app inmate example.rP~rQ~}rR~(hXB - inmates demos. It also contains code for ti_app inmate example.hjE~ubeubaubjX)rS~}rT~(hX **scripts**rU~hj}hjxhj[h}rV~(h]h]h]h]h]uhNhhh]rW~j/)rX~}rY~(hjU~hjS~hjxhj3h}rZ~(h]h]h]h]h]uhMh]r[~jW)r\~}r]~(hjU~h}r^~(h]h]h]h]h]uhjX~h]r_~hXscriptsr`~ra~}rb~(hUhj\~ubahj_ubaubaubjX)rc~}rd~(hX)**tools** - jailhouse management utility hj}hjxhj[h}re~(h]h]h]h]h]uhNhhh]rf~j/)rg~}rh~(hX(**tools** - jailhouse management utilityhjc~hjxhj3h}ri~(h]h]h]h]h]uhMh]rj~(jW)rk~}rl~(hX **tools**h}rm~(h]h]h]h]h]uhjg~h]rn~hXtoolsro~rp~}rq~(hUhjk~ubahj_ubhX - jailhouse management utilityrr~rs~}rt~(hX - jailhouse management utilityhjg~ubeubaubeubj/)ru~}rv~(hXThe top level SDK Makefile has the *jailhouse_clean*, *jailhouse* and *jailhouse_install* targets which can be used to clean, build and install jailhouse to the target file system.hjtxhjxhj3h}rw~(h]h]h]h]h]uhMhhh]rx~(hX#The top level SDK Makefile has the ry~rz~}r{~(hX#The top level SDK Makefile has the hju~ubj')r|~}r}~(hX*jailhouse_clean*h}r~~(h]h]h]h]h]uhju~h]r~hXjailhouse_cleanr~r~}r~(hUhj|~ubahj/ubhX, r~r~}r~(hX, hju~ubj')r~}r~(hX *jailhouse*h}r~(h]h]h]h]h]uhju~h]r~hX jailhouser~r~}r~(hUhj~ubahj/ubhX and r~r~}r~(hX and hju~ubj')r~}r~(hX*jailhouse_install*h}r~(h]h]h]h]h]uhju~h]r~hXjailhouse_installr~r~}r~(hUhj~ubahj/ubhX[ targets which can be used to clean, build and install jailhouse to the target file system.r~r~}r~(hX[ targets which can be used to clean, build and install jailhouse to the target file system.hju~ubeubj)r~}r~(hUhjtxhjxhjh}r~(h]h]h]h]h]uhMhhh]r~j)r~}r~(hUjKhj~hjxhhh}r~(h]h]h]h]h]uhKhhh]ubaubjF")r~}r~(hX,Building and Running the Ethercat Slave Demor~hjtxhjxhjJ"h}r~(h]r~U,building-and-running-the-ethercat-slave-demor~ah]h]h]h]r~hauhNhhh]r~hX,Building and Running the Ethercat Slave Demor~r~}r~(hj~hj~ubaubj/)r~}r~(hXPTo build and run the Ethercat Slave Demo, you need to install the PLSDK-RT, PRSDK and PRU-ICSS-ETHERCAT-SLAVE builds. We assume that you already have the first two SDKs installed. The PRU-ICSS-ETHERCAT-SLAVE can be downloaded from http://software-dl.ti.com/processor-industrial-sw/esd/PRU-ICSS-ETHERCAT-SLAVE/01_00_05_00/index_FDS.html.hjtxhjxhj3h}r~(h]h]h]h]h]uhMhhh]r~(hXTo build and run the Ethercat Slave Demo, you need to install the PLSDK-RT, PRSDK and PRU-ICSS-ETHERCAT-SLAVE builds. We assume that you already have the first two SDKs installed. The PRU-ICSS-ETHERCAT-SLAVE can be downloaded from r~r~}r~(hXTo build and run the Ethercat Slave Demo, you need to install the PLSDK-RT, PRSDK and PRU-ICSS-ETHERCAT-SLAVE builds. We assume that you already have the first two SDKs installed. The PRU-ICSS-ETHERCAT-SLAVE can be downloaded from hj~ubj)r~}r~(hXhhttp://software-dl.ti.com/processor-industrial-sw/esd/PRU-ICSS-ETHERCAT-SLAVE/01_00_05_00/index_FDS.htmlr~h}r~(Urefurij~h]h]h]h]h]uhj~h]r~hXhhttp://software-dl.ti.com/processor-industrial-sw/esd/PRU-ICSS-ETHERCAT-SLAVE/01_00_05_00/index_FDS.htmlr~r~}r~(hUhj~ubahjubhX.r~}r~(hX.hj~ubeubj/)r~}r~(hXIOnce you have this SDK installed you may build Ethercat slave components.r~hjtxhjxhj3h}r~(h]h]h]h]h]uhMhhh]r~hXIOnce you have this SDK installed you may build Ethercat slave components.r~r~}r~(hj~hj~ubaubj/)r~}r~(hXIf the am572x-ethercat.cell is not installed on target filesystem yet, build it from PLSDK-RT top level makefile "make jailhouse" and copy it to target under /usr/share/jailhouse/examples.r~hjtxhjxhj3h}r~(h]h]h]h]h]uhMhhh]r~hXIf the am572x-ethercat.cell is not installed on target filesystem yet, build it from PLSDK-RT top level makefile "make jailhouse" and copy it to target under /usr/share/jailhouse/examples.r~r~}r~(hj~hj~ubaubj/)r~}r~(hX%To build the ethercat_slave_demo.bin:r~hjtxhjxhj3h}r~(h]h]h]h]h]uhMhhh]r~hX%To build the ethercat_slave_demo.bin:r~r~}r~(hj~hj~ubaubjQ)r~}r~(hUhjtxhjxhjTh}r~(jVX-h]h]h]h]h]uhMhhh]r~(jX)r~}r~(hXModify the IA_SDK_HOME at ~/ti/processor_sdk_rtos_am57xx_[version]/demos/jailhouse-inmate/rtos/ethercat_slave_demo/Makefile to point to the install directory of PRU-ICSS-ETHERCAT-SLAVE.hj~hjxhj[h}r~(h]h]h]h]h]uhNhhh]r~j/)r~}r~(hXModify the IA_SDK_HOME at ~/ti/processor_sdk_rtos_am57xx_[version]/demos/jailhouse-inmate/rtos/ethercat_slave_demo/Makefile to point to the install directory of PRU-ICSS-ETHERCAT-SLAVE.r~hj~hjxhj3h}r~(h]h]h]h]h]uhMh]r~hXModify the IA_SDK_HOME at ~/ti/processor_sdk_rtos_am57xx_[version]/demos/jailhouse-inmate/rtos/ethercat_slave_demo/Makefile to point to the install directory of PRU-ICSS-ETHERCAT-SLAVE.r~r~}r~(hj~hj~ubaubaubjX)r~}r~(hXAt ~/ti/processor_sdk_rtos_am57xx_[version]/demos/jailhouse-inmate/makefile: add ethercat_slave_demo\* entries as pruss-test/icss-emac-test to the end of the makefile hj~hjxhj[h}r~(h]h]h]h]h]uhNhhh]r~j/)r~}r~(hXAt ~/ti/processor_sdk_rtos_am57xx_[version]/demos/jailhouse-inmate/makefile: add ethercat_slave_demo\* entries as pruss-test/icss-emac-test to the end of the makefilehj~hjxhj3h}r~(h]h]h]h]h]uhMh]r~hXAt ~/ti/processor_sdk_rtos_am57xx_[version]/demos/jailhouse-inmate/makefile: add ethercat_slave_demo* entries as pruss-test/icss-emac-test to the end of the makefiler~r~}r~(hXAt ~/ti/processor_sdk_rtos_am57xx_[version]/demos/jailhouse-inmate/makefile: add ethercat_slave_demo\* entries as pruss-test/icss-emac-test to the end of the makefilehj~ubaubaubeubj)r~}r~(hXethercat_slave_demo: $(MAKE) -C ./rtos/ethercat_slave_demo ethercat_slave_demo_clean: $(MAKE) -C ./rtos/ethercat_slave_demo clean ethercat_slave_demo_install: $(MAKE) -C ./rtos/ethercat_slave_demo installhjtxhjxhjh}r~(jjh]h]h]h]h]uhMhhh]r~hXethercat_slave_demo: $(MAKE) -C ./rtos/ethercat_slave_demo ethercat_slave_demo_clean: $(MAKE) -C ./rtos/ethercat_slave_demo clean ethercat_slave_demo_install: $(MAKE) -C ./rtos/ethercat_slave_demo installr~r~}r~(hUhj~ubaubjQ)r~}r~(hUhjtxhjxhjTh}r~(jVX-h]h]h]h]h]uhMhhh]r~(jX)r~}r~(hX,cd ~/ti/processor_sdk_rtos_am57xx_[version]/r~hj~hjxhj[h}r~(h]h]h]h]h]uhNhhh]r~j/)r}r(hj~hj~hjxhj3h}r(h]h]h]h]h]uhMh]rhX,cd ~/ti/processor_sdk_rtos_am57xx_[version]/rr}r(hj~hjubaubaubjX)r}r(hXsource setupenv.shr hj~hjxhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hj hjhjxhj3h}r(h]h]h]h]h]uhMh]rhXsource setupenv.shrr}r(hj hj ubaubaubjX)r}r(hXBcd ~/ti/processor_sdk_rtos_am57xx_[version]/demos/jailhouse-inmaterhj~hjxhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjxhj3h}r(h]h]h]h]h]uhMh]rhXBcd ~/ti/processor_sdk_rtos_am57xx_[version]/demos/jailhouse-inmaterr}r(hjhjubaubaubjX)r}r (hXsource setenv.shr!hj~hjxhj[h}r"(h]h]h]h]h]uhNhhh]r#j/)r$}r%(hj!hjhjxhj3h}r&(h]h]h]h]h]uhMh]r'hXsource setenv.shr(r)}r*(hj!hj$ubaubaubjX)r+}r,(hXmake ethercat_slave_demo hj~hjxhj[h}r-(h]h]h]h]h]uhNhhh]r.j/)r/}r0(hXmake ethercat_slave_demor1hj+hjxhj3h}r2(h]h]h]h]h]uhMh]r3hXmake ethercat_slave_demor4r5}r6(hj1hj/ubaubaubeubj/)r7}r8(hXbAfter the steps above, copy ethercat_slave_demo.bin to target under /usr/share/jailhouse/examples.r9hjtxhjxhj3h}r:(h]h]h]h]h]uhMhhh]r;hXbAfter the steps above, copy ethercat_slave_demo.bin to target under /usr/share/jailhouse/examples.r<r=}r>(hj9hj7ubaubj/)r?}r@(hXTo run the inmate refer to the instructions for `**Running the Demo on AM572x-IDK** <#Running_the_Demo_on_AM572x-IDK>`__ . Be aware that the inmate start address is 0x80000000. So, you need to use it as a parameter at the "jailhouse cell load" command:hjtxhjxhj3h}rA(h]h]h]h]h]uhMhhh]rB(hX0To run the inmate refer to the instructions for rCrD}rE(hX0To run the inmate refer to the instructions for hj?ubj)rF}rG(hXH`**Running the Demo on AM572x-IDK** <#Running_the_Demo_on_AM572x-IDK>`__h}rH(UnameX"**Running the Demo on AM572x-IDK**jX#Running_the_Demo_on_AM572x-IDKh]h]h]h]h]uhj?h]rIhX"**Running the Demo on AM572x-IDK**rJrK}rL(hUhjFubahjubhX . Be aware that the inmate start address is 0x80000000. So, you need to use it as a parameter at the "jailhouse cell load" command:rMrN}rO(hX . Be aware that the inmate start address is 0x80000000. So, you need to use it as a parameter at the "jailhouse cell load" command:hj?ubeubj)rP}rQ(hXqjailhouse cell load 1 linux-loader.bin -a 0 -s "kernel=0x80000000" -a 0x100 ethercat_slave_demo.bin -a 0x80000000hjtxhjxhjh}rR(jjh]h]h]h]h]uhM4hhh]rShXqjailhouse cell load 1 linux-loader.bin -a 0 -s "kernel=0x80000000" -a 0x100 ethercat_slave_demo.bin -a 0x80000000rTrU}rV(hUhjPubaubj)rW}rX(hUhjtxhjxhjh}rY(h]h]h]h]h]uhM(hhh]rZ(j)r[}r\(hUjKhjWhjxhhh}r](h]h]h]h]h]uhKhhh]ubj)r^}r_(hXYProcedure to check two-way communication between the slave inmate and the master station:r`jKhjWhjxhhh}ra(h]h]h]h]h]uhM*hhh]rbhXYProcedure to check two-way communication between the slave inmate and the master station:rcrd}re(hj`hj^ubaubeubjQ)rf}rg(hUhjtxhjxhjTh}rh(jVX-h]h]h]h]h]uhM,hhh]ri(jX)rj}rk(hXRefer to http://processors.wiki.ti.com/index.php/PRU_ICSS_EtherCAT#Running_EtherCAT_Slave_Application to setup Ethercat master.hjfhjxhj[h}rl(h]h]h]h]h]uhNhhh]rmj/)rn}ro(hXRefer to http://processors.wiki.ti.com/index.php/PRU_ICSS_EtherCAT#Running_EtherCAT_Slave_Application to setup Ethercat master.hjjhjxhj3h}rp(h]h]h]h]h]uhM,h]rq(hX Refer to rrrs}rt(hX Refer to hjnubj)ru}rv(hX\http://processors.wiki.ti.com/index.php/PRU_ICSS_EtherCAT#Running_EtherCAT_Slave_Applicationrwh}rx(Urefurijwh]h]h]h]h]uhjnh]ryhX\http://processors.wiki.ti.com/index.php/PRU_ICSS_EtherCAT#Running_EtherCAT_Slave_Applicationrzr{}r|(hUhjuubahjubhX to setup Ethercat master.r}r~}r(hX to setup Ethercat master.hjnubeubaubjX)r}r(hXMaster: Online write [data] to RxPDO 32Bit Output. After this, the slave should report the corresponding value via Board_setDigOutput. The value can be checked with “devmem2 0xeef00000” also.hjfhjxhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXMaster: Online write [data] to RxPDO 32Bit Output. After this, the slave should report the corresponding value via Board_setDigOutput. The value can be checked with “devmem2 0xeef00000” also.rhjhjxhj3h}r(h]h]h]h]h]uhM/h]rhXMaster: Online write [data] to RxPDO 32Bit Output. After this, the slave should report the corresponding value via Board_setDigOutput. The value can be checked with “devmem2 0xeef00000” also.rr}r(hjhjubaubaubjX)r}r(hXtSlave: devmem2 0xeef00004 b [data]. After this, Master should display the corresponding value in TXPDO 32Bit Input. hjfhjxhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXsSlave: devmem2 0xeef00004 b [data]. After this, Master should display the corresponding value in TXPDO 32Bit Input.rhjhjxhj3h}r(h]h]h]h]h]uhM2h]rhXsSlave: devmem2 0xeef00004 b [data]. After this, Master should display the corresponding value in TXPDO 32Bit Input.rr}r(hjhjubaubaubeubj)r}r(hUhjtxhjxhjh}r(h]h]h]h]h]uhM5hhh]rj)r}r(hUjKhjhjxhhh}r(h]h]h]h]h]uhKhhh]ubaubjF")r}r(hXJailhouse InternalsrhjtxhjxhjJ"h}r(h]rUjailhouse-internalsrah]h]h]h]rh,auhNhhh]rhXJailhouse Internalsrr}r(hjhjubaubj/)r}r(hXLThis section gives some Jailhouse details and required kernel modifications.rhjtxhjxhj3h}r(h]h]h]h]h]uhM:hhh]rhXLThis section gives some Jailhouse details and required kernel modifications.rr}r(hjhjubaubjF")r}r(hXLinux Kernel ModificationsrhjtxhjxhjJ"h}r(h]rUlinux-kernel-modificationsrah]h]h]h]rhauhNhhh]rhXLinux Kernel Modificationsrr}r(hjhjubaubj/)r}r(hXIn order to run hypervisor itself and inmates Jailhouse requires additional nodes in kernel dtb. See the am572x-evm-jailhouse.dts and am572x-idk-jailhouse.dts. They add required nodes or modify existing nodes of the default am57xx-evm-reva3.dts and am57xx-idk.dts DTS files.rhjtxhjxhj3h}r(h]h]h]h]h]uhM@hhh]rhXIn order to run hypervisor itself and inmates Jailhouse requires additional nodes in kernel dtb. See the am572x-evm-jailhouse.dts and am572x-idk-jailhouse.dts. They add required nodes or modify existing nodes of the default am57xx-evm-reva3.dts and am57xx-idk.dts DTS files.rr}r(hjhjubaubjF")r}r(hXMemory ReservationrhjtxhjxhjJ"h}r(h]rUmemory-reservationrah]h]h]h]rhauhNhhh]rhXMemory Reservationrr}r(hjhjubaubj/)r}r(hXLinux kernel has to reserve some memory for jailhouse hypervisor and for inmate. This memory has to be reserver statically. In this release we reserved 16MB of physical memory for hypervisor and 16MB for inmates.rhjtxhjxhj3h}r(h]h]h]h]h]uhMHhhh]rhXLinux kernel has to reserve some memory for jailhouse hypervisor and for inmate. This memory has to be reserver statically. In this release we reserved 16MB of physical memory for hypervisor and 16MB for inmates.rr}r(hjhjubaubj)r}r(hXQ/ { reserved-memory { jailhouse: jailhouse@ef000000 { reg = <0x0 0xef000000 0x0 0x1000000>; no-map; status = "okay"; }; jh_inmate: jh_inmate@ee000000 { reg = <0x0 0xee000000 0x0 0x1000000>; no-map; status = "okay"; }; }; };hjtxhjxhjh}r(jjh]h]h]h]h]uhM\hhh]rhXQ/ { reserved-memory { jailhouse: jailhouse@ef000000 { reg = <0x0 0xef000000 0x0 0x1000000>; no-map; status = "okay"; }; jh_inmate: jh_inmate@ee000000 { reg = <0x0 0xee000000 0x0 0x1000000>; no-map; status = "okay"; }; }; };rr}r(hUhjubaubjF")r}r(hXHardware Modules ReservationrhjtxhjxhjJ"h}r(h]rUhardware-modules-reservationrah]h]h]h]rhzauhNhhh]rhXHardware Modules Reservationrr}r(hjhjubaubj/)r}r(hXLinux kernel enables all SOC HW modules which are required for its configuration. Appropriate drivers configure required clocks and initialize HW registers. For all unused IPs clocks are not configured. Also kernel power management can put a module into the sleep mode. A jailhouse inmate doesn't share the same hardware module with Linux kernel (except debug UART). But the inmate doesn't configure required clocks and doesn't deal with power domains. So, we still relay on Linux kernel (at least at the current release) to configure clocks to inmate HW modules. If we want to use some hardware modules for an inmate, we have to tell kernel about this in advance.rhjtxhjxhj3h}r(h]h]h]h]h]uhMbhhh]rhXLinux kernel enables all SOC HW modules which are required for its configuration. Appropriate drivers configure required clocks and initialize HW registers. For all unused IPs clocks are not configured. Also kernel power management can put a module into the sleep mode. A jailhouse inmate doesn't share the same hardware module with Linux kernel (except debug UART). But the inmate doesn't configure required clocks and doesn't deal with power domains. So, we still relay on Linux kernel (at least at the current release) to configure clocks to inmate HW modules. If we want to use some hardware modules for an inmate, we have to tell kernel about this in advance.rr}r(hjhjubaubj/)r}r(hXThe following nodes disable using of the timer8 and uart9 by kernel. Also this restricts kernel to put those IPs to sleep mode.rhjtxhjxhj3h}r(h]h]h]h]h]uhMmhhh]rhXThe following nodes disable using of the timer8 and uart9 by kernel. Also this restricts kernel to put those IPs to sleep mode.rr}r(hjhjubaubj)r}r(hXk&timer8 { status = "disabled"; ti,no-idle; }; &uart9 { status = "disabled"; ti,no-idle; };hjtxhjxhjh}r(jjh]h]h]h]h]uhMhhh]rhXk&timer8 { status = "disabled"; ti,no-idle; }; &uart9 { status = "disabled"; ti,no-idle; };rr}r(hUhjubaubj/)r}r(hXYou may see other nodes in the jailhouse DTSes which reserve other IPs to be used for inmates. Thus IDK's DTS disables nodes, which IPs are used for icss_emac and pruss inmates.rhjtxhjxhj3h}r(h]h]h]h]h]uhM|hhh]rhXYou may see other nodes in the jailhouse DTSes which reserve other IPs to be used for inmates. Thus IDK's DTS disables nodes, which IPs are used for icss_emac and pruss inmates.rr}r(hjhjubaubjF")r }r (hX GIC Interrupt Inputs Reservationr hjtxhjxhjJ"h}r (h]r U gic-interrupt-inputs-reservationrah]h]h]h]rh3auhNhhh]rhX GIC Interrupt Inputs Reservationrr}r(hj hj ubaubj/)r}r(hX.Interrupt lines from hardware modules don't go to ARM interrupt controller (GIC) directly. They go to a crossbar register, which selects a GIC distributor input. The selection is done dynamically by Linux kernel. Linux keeps track of all used and unused GIC inputs. If a jailhouse inmate has to use an interrupt, it has to configure the crossbar register by itself. To prevent conflicts between the Linux crossbar manager and the inmate, and give to the inmate some unused GIC input lines, which it can use, we need to reserve some of them in the kernel dts.rhjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]rhX.Interrupt lines from hardware modules don't go to ARM interrupt controller (GIC) directly. They go to a crossbar register, which selects a GIC distributor input. The selection is done dynamically by Linux kernel. Linux keeps track of all used and unused GIC inputs. If a jailhouse inmate has to use an interrupt, it has to configure the crossbar register by itself. To prevent conflicts between the Linux crossbar manager and the inmate, and give to the inmate some unused GIC input lines, which it can use, we need to reserve some of them in the kernel dts.rr}r(hjhjubaubj/)r}r(hXThis can be done by adding GIC input numbers to the "ti,irqs-skip" property of the "crossbar_mpu:" node. Lines 134 and 135 are added to the following node.rhjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]r hXThis can be done by adding GIC input numbers to the "ti,irqs-skip" property of the "crossbar_mpu:" node. Lines 134 and 135 are added to the following node.r!r"}r#(hjhjubaubj)r$}r%(hXScrossbar_mpu: crossbar@4a002a48 { ti,irqs-skip = <10 133 134 135 139 140>; };hjtxhjxhjh}r&(jjh]h]h]h]h]uhMhhh]r'hXScrossbar_mpu: crossbar@4a002a48 { ti,irqs-skip = <10 133 134 135 139 140>; };r(r)}r*(hUhj$ubaubj)r+}r,(hUhjtxhjxhjh}r-(h]h]h]h]h]uhMhhh]r.j)r/}r0(hXz**Note:** The icss_emac.bin application uses much more interrupt lines. Thats is why IDK's dtb skips aditional interrupts.jKhj+hjxhhh}r1(h]h]h]h]h]uhMhhh]r2(jW)r3}r4(hX **Note:**h}r5(h]h]h]h]h]uhj/h]r6hXNote:r7r8}r9(hUhj3ubahj_ubhXq The icss_emac.bin application uses much more interrupt lines. Thats is why IDK's dtb skips aditional interrupts.r:r;}r<(hXq The icss_emac.bin application uses much more interrupt lines. Thats is why IDK's dtb skips aditional interrupts.hj/ubeubaubj)r=}r>(hXdcrossbar_mpu: crossbar@4a002a48 { ti,irqs-skip = <10 44 127 129 133 134 135 136 137 139 140>; };hjtxhjxhjh}r?(jjh]h]h]h]h]uhMhhh]r@hXdcrossbar_mpu: crossbar@4a002a48 { ti,irqs-skip = <10 44 127 129 133 134 135 136 137 139 140>; };rArB}rC(hUhj=ubaubjF")rD}rE(hXRoot-cell configurationrFhjtxhjxhjJ"h}rG(h]rHUroot-cell-configurationrIah]h]h]h]rJhauhNhhh]rKhXRoot-cell configurationrLrM}rN(hjFhjDubaubj/)rO}rP(hXxWhen hypervisor is being enabled it creates a cell for Linux and moves it to that cell. The cell is called as "root-cell". The cell configuration as a "*.c" file which is compiled to a special binary format "*.cell" file. The hypervisor uses the "cell" file to create a cell. The cell configuration describes memory regions and their attributes which will be used by the cell,hjtxhjxhj3h}rQ(h]h]h]h]h]uhMhhh]rR(hXWhen hypervisor is being enabled it creates a cell for Linux and moves it to that cell. The cell is called as "root-cell". The cell configuration as a "rSrT}rU(hXWhen hypervisor is being enabled it creates a cell for Linux and moves it to that cell. The cell is called as "root-cell". The cell configuration as a "hjOubj')rV}rW(hX9*.c" file which is compiled to a special binary format "*h}rX(h]h]h]h]h]uhjOh]rYhX7.c" file which is compiled to a special binary format "rZr[}r\(hUhjVubahj/ubhX.cell" file. The hypervisor uses the "cell" file to create a cell. The cell configuration describes memory regions and their attributes which will be used by the cell,r]r^}r_(hX.cell" file. The hypervisor uses the "cell" file to create a cell. The cell configuration describes memory regions and their attributes which will be used by the cell,hjOubeubj)r`}ra(hX.mem_regions = { /* OCMCRAM */ { .phys_start = 0x40300000, .virt_start = 0x40300000, .size = 0x80000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO, }, /* 0x40380000 - 0x48020000 */ { .phys_start = 0x40380000, .virt_start = 0x40380000, .size = 0x7ca0000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO, }, /* UART... */ { .phys_start = 0x48020000, .virt_start = 0x48020000, .size = 0xe0000,//0x00001000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO, }, ... /* RAM */ { .phys_start = 0x80000000, .virt_start = 0x80000000, .size = 0x6F000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE, }, /* Leave hole for hypervisor */ /* RAM */ { .phys_start = 0xF0000000, .virt_start = 0xF0000000, .size = 0x10000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE, },hjtxhjxhjh}rb(jjh]h]h]h]h]uhMhhh]rchX.mem_regions = { /* OCMCRAM */ { .phys_start = 0x40300000, .virt_start = 0x40300000, .size = 0x80000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO, }, /* 0x40380000 - 0x48020000 */ { .phys_start = 0x40380000, .virt_start = 0x40380000, .size = 0x7ca0000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO, }, /* UART... */ { .phys_start = 0x48020000, .virt_start = 0x48020000, .size = 0xe0000,//0x00001000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO, }, ... /* RAM */ { .phys_start = 0x80000000, .virt_start = 0x80000000, .size = 0x6F000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE, }, /* Leave hole for hypervisor */ /* RAM */ { .phys_start = 0xF0000000, .virt_start = 0xF0000000, .size = 0x10000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE, },rdre}rf(hUhj`ubaubj/)rg}rh(hX+bitmap of CPU cores dedicated for the cell,rihjtxhjxhj3h}rj(h]h]h]h]h]uhMhhh]rkhX+bitmap of CPU cores dedicated for the cell,rlrm}rn(hjihjgubaubj)ro}rp(hX.cpus = { 0x3, },hjtxhjxhjh}rq(jjh]h]h]h]h]uhMhhh]rrhX.cpus = { 0x3, },rsrt}ru(hUhjoubaubj/)rv}rw(hX-bitmap of interrupt controller SPI interruptsrxhjtxhjxhj3h}ry(h]h]h]h]h]uhMhhh]rzhX-bitmap of interrupt controller SPI interruptsr{r|}r}(hjxhjvubaubj)r~}r(hX].irqchips = { /* GIC */ { .address = 0x48211000, .pin_base = 32, .pin_bitmap = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff }, }, /* GIC */ { .address = 0x48211000, .pin_base = 160, .pin_bitmap = { 0xffffffff, 0, 0, 0 }, }, },hjtxhjxhjh}r(jjh]h]h]h]h]uhMhhh]rhX].irqchips = { /* GIC */ { .address = 0x48211000, .pin_base = 32, .pin_bitmap = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff }, }, /* GIC */ { .address = 0x48211000, .pin_base = 160, .pin_bitmap = { 0xffffffff, 0, 0, 0 }, }, },rr}r(hUhj~ubaubj/)r}r(hX1and some other parameters. That is for all cells.rhjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]rhX1and some other parameters. That is for all cells.rr}r(hjhjubaubj/)r}r(hXXIn addition to that the root cell also allocates the physical memory for the hypervisor.rhjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]rhXXIn addition to that the root cell also allocates the physical memory for the hypervisor.rr}r(hjhjubaubj)r}r(hXQ.hypervisor_memory = { .phys_start = 0xef000000, .size = 0x1000000, },hjtxhjxhjh}r(jjh]h]h]h]h]uhMhhh]rhXQ.hypervisor_memory = { .phys_start = 0xef000000, .size = 0x1000000, },rr}r(hUhjubaubj/)r}r(hXThe "memory regions" section is used by hypervisor to create the second stage MMU translation table. Usually for root-cell the identical mapping is being used - "VA = PA".rhjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]rhXThe "memory regions" section is used by hypervisor to create the second stage MMU translation table. Usually for root-cell the identical mapping is being used - "VA = PA".rr}r(hjhjubaubj/)r}r(hXMSee the am57xx-evm.c file is the complete am57xx-evm root cell configuration.rhjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]rhXMSee the am57xx-evm.c file is the complete am57xx-evm root cell configuration.rr}r(hjhjubaubjF")r}r(hXBare Metal Inmate ExamplerhjtxhjxhjJ"h}r(h]rUbare-metal-inmate-examplerah]h]h]h]rhauhNhhh]rhXBare Metal Inmate Examplerr}r(hjhjubaubj/)r}r(hX,Jailhouse comes with inmate demos located at the *inmates/demos* directory. Current (v0.6) version has two demo inmates: **gic-demo** and **uart-demo**. Those are very simple bare-metal applications that demonstrates a uart and arm-timer interrupt. Those demos are common for all jailhouse platforms.hjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]r(hX1Jailhouse comes with inmate demos located at the rr}r(hX1Jailhouse comes with inmate demos located at the hjubj')r}r(hX*inmates/demos*h}r(h]h]h]h]h]uhjh]rhX inmates/demosr€rÀ}rĀ(hUhjubahj/ubhX9 directory. Current (v0.6) version has two demo inmates: rŀrƀ}rǀ(hX9 directory. Current (v0.6) version has two demo inmates: hjubjW)rȀ}rɀ(hX **gic-demo**h}rʀ(h]h]h]h]h]uhjh]rˀhXgic-demor̀r̀}r΀(hUhjȀubahj_ubhX and rπrЀ}rр(hX and hjubjW)rҀ}rӀ(hX **uart-demo**h}rԀ(h]h]h]h]h]uhjh]rՀhX uart-demorրr׀}r؀(hUhjҀubahj_ubhX. Those are very simple bare-metal applications that demonstrates a uart and arm-timer interrupt. Those demos are common for all jailhouse platforms.rـrڀ}rۀ(hX. Those are very simple bare-metal applications that demonstrates a uart and arm-timer interrupt. Those demos are common for all jailhouse platforms.hjubeubj/)r܀}r݀(hXMore interesting may be the **ti-app**, a demo made especially for AM572x SOC. The code is located at the *inmate/ti_app* directory.hjtxhjxhj3h}rހ(h]h]h]h]h]uhM hhh]r߀(hXMore interesting may be the rr}r(hXMore interesting may be the hj܀ubjW)r}r(hX **ti-app**h}r(h]h]h]h]h]uhj܀h]rhXti-apprr}r(hUhjubahj_ubhXD, a demo made especially for AM572x SOC. The code is located at the rr}r(hXD, a demo made especially for AM572x SOC. The code is located at the hj܀ubj')r}r(hX*inmate/ti_app*h}r(h]h]h]h]h]uhj܀h]rhX inmate/ti_apprr}r(hUhjubahj/ubhX directory.rr}r(hX directory.hj܀ubeubj/)r}r(hXBasically this application is a sandbox to make some experiments. The current version demonstrates of using a uart, timer and a GIC SPI interrupt (timer generates periodic interrupts). The application also has some extra code, which was used to measure interrupt latency.rhjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]rhXBasically this application is a sandbox to make some experiments. The current version demonstrates of using a uart, timer and a GIC SPI interrupt (timer generates periodic interrupts). The application also has some extra code, which was used to measure interrupt latency.rr}r(hjhjubaubj)r}r(hUhjtxhjxhjh}r(h]h]h]h]h]uhMhhh]rj)r}r(hUjKhjhjxhhh}r(h]h]h]h]h]uhKhhh]ubaubj/)r}r(hXAs any inmate the ti-app inmate works in a cell. The am57xx-evm-ti-app.c is the cell configuration file. For this cell only ARM1 core will be used:rhjtxhjxhj3h}r (h]h]h]h]h]uhMhhh]r hXAs any inmate the ti-app inmate works in a cell. The am57xx-evm-ti-app.c is the cell configuration file. For this cell only ARM1 core will be used:r r }r (hjhjubaubj)r}r(hX.cpus = { 0x2, },hjtxhjxhjh}r(jjh]h]h]h]h]uhM+hhh]rhX.cpus = { 0x2, },rr}r(hUhjubaubj/)r}r(hX**NOTE:** *Actually on am572 SOC, which has only 2 ARM core and Linux always uses the ARM0 core only ARM1 can be taken for an inmate.*hjtxhjxhj3h}r(h]h]h]h]h]uhM!hhh]r(jW)r}r(hX **NOTE:**h}r(h]h]h]h]h]uhjh]rhXNOTE:rr}r(hUhjubahj_ubhX r }r!(hX hjubj')r"}r#(hX|*Actually on am572 SOC, which has only 2 ARM core and Linux always uses the ARM0 core only ARM1 can be taken for an inmate.*h}r$(h]h]h]h]h]uhjh]r%hXzActually on am572 SOC, which has only 2 ARM core and Linux always uses the ARM0 core only ARM1 can be taken for an inmate.r&r'}r((hUhj"ubahj/ubeubj/)r)}r*(hX,The cell configuration has 5 memory regions:r+hjtxhjxhj3h}r,(h]h]h]h]h]uhM$hhh]r-hX,The cell configuration has 5 memory regions:r.r/}r0(hj+hj)ubaubj)r1}r2(hX+/* UART... */ { .phys_start = 0x48020000, .virt_start = 0x48020000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* UART... */ { .phys_start = 0x48424000, .virt_start = 0x48424000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* TIMER... */ { .phys_start = 0x48826000, .virt_start = 0x48826000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* L4_CFG */ { .phys_start = 0x4a000000, .virt_start = 0x4a000000, .size = 0xE00000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* RAM */ { .phys_start = 0xee000000, .virt_start = 0, .size = 0x800000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, },hjtxhjxhjh}r3(jjh]h]h]h]h]uhM6hhh]r4hX+/* UART... */ { .phys_start = 0x48020000, .virt_start = 0x48020000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* UART... */ { .phys_start = 0x48424000, .virt_start = 0x48424000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* TIMER... */ { .phys_start = 0x48826000, .virt_start = 0x48826000, .size = 0x1000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* L4_CFG */ { .phys_start = 0x4a000000, .virt_start = 0x4a000000, .size = 0xE00000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_IO | JAILHOUSE_MEM_ROOTSHARED, }, /* RAM */ { .phys_start = 0xee000000, .virt_start = 0, .size = 0x800000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, },r5r6}r7(hUhj1ubaubj/)r8}r9(hXQTwo for UARTs. *The first one for UART3, which is a standard EVM debug uart. The second for UART9, using of which requires some board modifications. But UART9 doesn't conflict with Linux or hypervisor and may be more useful if the inmate needs a dedicated UART.* One region for timer9 and one for access multiple configuration registers.hjtxhjxhj3h}r:(h]h]h]h]h]uhMLhhh]r;(hXTwo for UARTs. r<r=}r>(hXTwo for UARTs. hj8ubj')r?}r@(hX*The first one for UART3, which is a standard EVM debug uart. The second for UART9, using of which requires some board modifications. But UART9 doesn't conflict with Linux or hypervisor and may be more useful if the inmate needs a dedicated UART.*h}rA(h]h]h]h]h]uhj8h]rBhXThe first one for UART3, which is a standard EVM debug uart. The second for UART9, using of which requires some board modifications. But UART9 doesn't conflict with Linux or hypervisor and may be more useful if the inmate needs a dedicated UART.rCrD}rE(hUhj?ubahj/ubhXK One region for timer9 and one for access multiple configuration registers.rFrG}rH(hXK One region for timer9 and one for access multiple configuration registers.hj8ubeubj/)rI}rJ(hXVThe last region is for RAM allocated for the inmate. Similar to root-cell memory regions configuration memory mapping for all regions except for RAM are identical (VA = PA). For the RAM region virtual address has to be '0'. The physical addresses of the region must be inside of the physical memory reserved for inmates in the Linux DTS file.rKhjtxhjxhj3h}rL(h]h]h]h]h]uhMRhhh]rMhXVThe last region is for RAM allocated for the inmate. Similar to root-cell memory regions configuration memory mapping for all regions except for RAM are identical (VA = PA). For the RAM region virtual address has to be '0'. The physical addresses of the region must be inside of the physical memory reserved for inmates in the Linux DTS file.rNrO}rP(hjKhjIubaubj/)rQ}rR(hXIn the .irqchip section of the cell configuration file we reserve GIC interrupt line #134 (*One of two lines reserved in the kernel DTS*).hjtxhjxhj3h}rS(h]h]h]h]h]uhMYhhh]rT(hX[In the .irqchip section of the cell configuration file we reserve GIC interrupt line #134 (rUrV}rW(hX[In the .irqchip section of the cell configuration file we reserve GIC interrupt line #134 (hjQubj')rX}rY(hX-*One of two lines reserved in the kernel DTS*h}rZ(h]h]h]h]h]uhjQh]r[hX+One of two lines reserved in the kernel DTSr\r]}r^(hUhjXubahj/ubhX).r_r`}ra(hX).hjQubeubj)rb}rc(hXm/* GIC */ { .address = 0x48211000, .pin_base = 160, .pin_bitmap = { 0x00000040, }, },hjtxhjxhjh}rd(jjh]h]h]h]h]uhMmhhh]rehXm/* GIC */ { .address = 0x48211000, .pin_base = 160, .pin_bitmap = { 0x00000040, }, },rfrg}rh(hUhjbubaubj/)ri}rj(hX*Here where #134 comes from. The 0x00000040 is the bitmask of the sixth bit. So, .pin_base(160) + .pin_bitmap(6) - 32(number of SWI and PPI interrupt) = 134.*rkhjtxhjxhj3h}rl(h]h]h]h]h]uhMghhh]rmj')rn}ro(hjkh}rp(h]h]h]h]h]uhjih]rqhXHere where #134 comes from. The 0x00000040 is the bitmask of the sixth bit. So, .pin_base(160) + .pin_bitmap(6) - 32(number of SWI and PPI interrupt) = 134.rrrs}rt(hUhjnubahj/ubaubj/)ru}rv(hXAs other jailhouse demos the **ti-app** uses the jailhouse startup code, which sets the inmate vector table, zeros BSS segment, sets the stack up and calls the inmate_main(). The initialization of the GIC controller is done by hypervisor. Also the hypervisor remaps GICC interface to GICV interface and intercepts all inmates accesses to GICD. It allows to read/write only GICD registers, related to the lines given in the .irq_chips section. In our case for the line #134 only.hjtxhjxhj3h}rw(h]h]h]h]h]uhMkhhh]rx(hXAs other jailhouse demos the ryrz}r{(hXAs other jailhouse demos the hjuubjW)r|}r}(hX **ti-app**h}r~(h]h]h]h]h]uhjuh]rhXti-apprr}r(hUhj|ubahj_ubhX uses the jailhouse startup code, which sets the inmate vector table, zeros BSS segment, sets the stack up and calls the inmate_main(). The initialization of the GIC controller is done by hypervisor. Also the hypervisor remaps GICC interface to GICV interface and intercepts all inmates accesses to GICD. It allows to read/write only GICD registers, related to the lines given in the .irq_chips section. In our case for the line #134 only.rr}r(hX uses the jailhouse startup code, which sets the inmate vector table, zeros BSS segment, sets the stack up and calls the inmate_main(). The initialization of the GIC controller is done by hypervisor. Also the hypervisor remaps GICC interface to GICV interface and intercepts all inmates accesses to GICD. It allows to read/write only GICD registers, related to the lines given in the .irq_chips section. In our case for the line #134 only.hjuubeubj/)r}r(hXIn the inmate_main() the inmate initializes uart, sets the crossbar and calls the gic_setup() to set the inmate's interrupt handler. *The jailhouse provides inmate interrupt controller API. This can be used by inmate.*hjtxhjxhj3h}r(h]h]h]h]h]uhMshhh]r(hXIn the inmate_main() the inmate initializes uart, sets the crossbar and calls the gic_setup() to set the inmate's interrupt handler. rr}r(hXIn the inmate_main() the inmate initializes uart, sets the crossbar and calls the gic_setup() to set the inmate's interrupt handler. hjubj')r}r(hXU*The jailhouse provides inmate interrupt controller API. This can be used by inmate.*h}r(h]h]h]h]h]uhjh]rhXSThe jailhouse provides inmate interrupt controller API. This can be used by inmate.rr}r(hUhjubahj/ubeubj/)r}r(hXAThe ti-app initializes the timer and enters to the infinite loop.rhjtxhjxhj3h}r(h]h]h]h]h]uhMxhhh]rhXAThe ti-app initializes the timer and enters to the infinite loop.rr}r(hjhjubaubj/)r}r(hX[Actually the inmate code has only about 100 lines and doesn't require any more explanation.rhjtxhjxhj3h}r(h]h]h]h]h]uhMzhhh]rhX[Actually the inmate code has only about 100 lines and doesn't require any more explanation.rr}r(hjhjubaubjF")r}r(hXRTOS PDK InmatesrhjtxhjxhjJ"h}r(h]rUrtos-pdk-inmatesrah]h]h]h]rh)auhNhhh]rhXRTOS PDK Inmatesrr}r(hjhjubaubj/)r}r(hX~The jailhouse demo applications and the "ti_app" are built by jailhouse's makefile inside the jailhouse's source tree. It is more interesting to build an inmate outside of the jailhouse source tree, using independent makefile and third party libraries. This release provides **led_test**, a simple example of a bare-metal application, which uses prebuilt RTOS PDK libraries and is built independently on Jailhouse. It also has ports of two TI RTOS SYSBIOS test applications - pruss and icss_emac. *There are two other examples: 1) bare-metal memcp_bm - a simple application to measure memory bandwidth; 2) Ethercat_slave_demo - ported to Jailhouse example from "PRU-ICSS Industrial Software for Sitara™ Processors". The example requires some modifications of the PRU-ICSS Industrial Software, which is not published yet. That is why the ethercat_slave_demo included here as a reference only.*hjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]r(hXThe jailhouse demo applications and the "ti_app" are built by jailhouse's makefile inside the jailhouse's source tree. It is more interesting to build an inmate outside of the jailhouse source tree, using independent makefile and third party libraries. This release provides rr}r(hXThe jailhouse demo applications and the "ti_app" are built by jailhouse's makefile inside the jailhouse's source tree. It is more interesting to build an inmate outside of the jailhouse source tree, using independent makefile and third party libraries. This release provides hjubjW)r}r(hX **led_test**h}r(h]h]h]h]h]uhjh]rhXled_testrr}r(hUhjubahj_ubhX, a simple example of a bare-metal application, which uses prebuilt RTOS PDK libraries and is built independently on Jailhouse. It also has ports of two TI RTOS SYSBIOS test applications - pruss and icss_emac. rr}r(hX, a simple example of a bare-metal application, which uses prebuilt RTOS PDK libraries and is built independently on Jailhouse. It also has ports of two TI RTOS SYSBIOS test applications - pruss and icss_emac. hjubj')r}r(hX*There are two other examples: 1) bare-metal memcp_bm - a simple application to measure memory bandwidth; 2) Ethercat_slave_demo - ported to Jailhouse example from "PRU-ICSS Industrial Software for Sitara™ Processors". The example requires some modifications of the PRU-ICSS Industrial Software, which is not published yet. That is why the ethercat_slave_demo included here as a reference only.*h}r(h]h]h]h]h]uhjh]rÁhXThere are two other examples: 1) bare-metal memcp_bm - a simple application to measure memory bandwidth; 2) Ethercat_slave_demo - ported to Jailhouse example from "PRU-ICSS Industrial Software for Sitara™ Processors". The example requires some modifications of the PRU-ICSS Industrial Software, which is not published yet. That is why the ethercat_slave_demo included here as a reference only.rārŁ}rƁ(hUhjubahj/ubeubj/)rǁ}rȁ(hXThe code of the applications is located on the $(SDK_INSTALL_PATH)/processor_sdk_rtos_am57xx_4_01_00_04/demos/jailhouse-inmate directory, which contains:rɁhjtxhjxhj3h}rʁ(h]h]h]h]h]uhMhhh]rˁhXThe code of the applications is located on the $(SDK_INSTALL_PATH)/processor_sdk_rtos_am57xx_4_01_00_04/demos/jailhouse-inmate directory, which contains:ŕŕ}r΁(hjɁhjǁubaubj)rρ}rЁ(hXG├── baremetal │ ├── led │ │ ├── led_test.c │ │ └── makefile │ ├── memcp_bm │ │ ├── makefile │ │ └── memcp_bm.c │ └── soc │ └── am572x │ ├── evmAM572x │ │ ├── entry.S │ │ ├── gic.c │ │ ├── linker.cmd │ │ └── make.inc │ └── rules.mk ├── makefile ├── rtos │ ├── ethercat_slave_demo │ │ ├── bios │ │ │ ├── am572x_app.cfg │ │ │ └── makefile │ │ ├── Makefile │ │ └── src │ │ └── board_jh.c │ ├── icss_emac │ │ ├── bios │ │ │ ├── icss_emac_arm_wSoCLib.cfg │ │ │ └── makefile │ │ ├── lnk_pruss_fw.cmd │ │ ├── Makefile │ │ └── src │ │ ├── idkAM572x_ethernet_config_jh.c │ │ └── idkAM572x_jh.c │ ├── pru-icss │ │ ├── bios │ │ │ ├── makefile │ │ │ └── pruss_arm_wSoCLib.cfg │ │ ├── Makefile │ │ └── src │ │ └── idkAM572x_jh.c │ └── Rules.mk └── setenv.shhjtxhjxhjh}rс(jjh]h]h]h]h]uhMhhh]rҁhXG├── baremetal │ ├── led │ │ ├── led_test.c │ │ └── makefile │ ├── memcp_bm │ │ ├── makefile │ │ └── memcp_bm.c │ └── soc │ └── am572x │ ├── evmAM572x │ │ ├── entry.S │ │ ├── gic.c │ │ ├── linker.cmd │ │ └── make.inc │ └── rules.mk ├── makefile ├── rtos │ ├── ethercat_slave_demo │ │ ├── bios │ │ │ ├── am572x_app.cfg │ │ │ └── makefile │ │ ├── Makefile │ │ └── src │ │ └── board_jh.c │ ├── icss_emac │ │ ├── bios │ │ │ ├── icss_emac_arm_wSoCLib.cfg │ │ │ └── makefile │ │ ├── lnk_pruss_fw.cmd │ │ ├── Makefile │ │ └── src │ │ ├── idkAM572x_ethernet_config_jh.c │ │ └── idkAM572x_jh.c │ ├── pru-icss │ │ ├── bios │ │ │ ├── makefile │ │ │ └── pruss_arm_wSoCLib.cfg │ │ ├── Makefile │ │ └── src │ │ └── idkAM572x_jh.c │ └── Rules.mk └── setenv.shrӁrԁ}rՁ(hUhjρubaubjF")rց}rׁ(hXBare-metal exampler؁hjtxhjxhjJ"h}rف(h]rځUbare-metal-examplerہah]h]h]h]r܁hauhNhhh]r݁hXBare-metal examplerށr߁}r(hj؁hjցubaubj/)r}r(hXThe bare-metal directory has three subdirectories: **soc** - has common for bare-metal applications soc specific code; **led** - led_test application code; **memcp_bm** - memcp_bm code;hjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]r(hX3The bare-metal directory has three subdirectories: rr}r(hX3The bare-metal directory has three subdirectories: hjubjW)r}r(hX**soc**h}r(h]h]h]h]h]uhjh]rhXsocrr}r(hUhjubahj_ubhX= - has common for bare-metal applications soc specific code; rr}r(hX= - has common for bare-metal applications soc specific code; hjubjW)r}r(hX**led**h}r(h]h]h]h]h]uhjh]rhXledrr}r(hUhjubahj_ubhX - led_test application code; rr}r(hX - led_test application code; hjubjW)r}r(hX **memcp_bm**h}r(h]h]h]h]h]uhjh]rhXmemcp_bmrr}r(hUhjubahj_ubhX - memcp_bm code;rr}r(hX - memcp_bm code;hjubeubj/)r}r(hX4The **soc/am572x/evmAM572x** sub-directory contains:rhjtxhjxhj3h}r (h]h]h]h]h]uhMhhh]r (hXThe r r }r (hXThe hjubjW)r}r(hX**soc/am572x/evmAM572x**h}r(h]h]h]h]h]uhjh]rhXsoc/am572x/evmAM572xrr}r(hUhjubahj_ubhX sub-directory contains:rr}r(hX sub-directory contains:hjubeubjQ)r}r(hUhjtxhjxhjTh}r(jVX-h]h]h]h]h]uhMhhh]r(jX)r}r(hX)**entry.S** - startup file for an inmate;rhjhjxhj[h}r(h]h]h]h]h]uhNhhh]r j/)r!}r"(hjhjhjxhj3h}r#(h]h]h]h]h]uhMh]r$(jW)r%}r&(hX **entry.S**h}r'(h]h]h]h]h]uhj!h]r(hXentry.Sr)r*}r+(hUhj%ubahj_ubhX - startup file for an inmate;r,r-}r.(hX - startup file for an inmate;hj!ubeubaubjX)r/}r0(hXu**gic.c** - has the dummy \_weak\_ INTCCommonIntrHandler(), which can be overridden by an actual application handler.hjhjxhj[h}r1(h]h]h]h]h]uhNhhh]r2j/)r3}r4(hXu**gic.c** - has the dummy \_weak\_ INTCCommonIntrHandler(), which can be overridden by an actual application handler.hj/hjxhj3h}r5(h]h]h]h]h]uhMh]r6(jW)r7}r8(hX **gic.c**h}r9(h]h]h]h]h]uhj3h]r:hXgic.cr;r<}r=(hUhj7ubahj_ubhXj - has the dummy _weak_ INTCCommonIntrHandler(), which can be overridden by an actual application handler.r>r?}r@(hXl - has the dummy \_weak\_ INTCCommonIntrHandler(), which can be overridden by an actual application handler.hj3ubeubaubjX)rA}rB(hX**linker.cmd** - jailhouse requires that an inmate shall start from address "0". It also requires that all inmates segments be located in contiguous memory. This linker.cmd is to meet these requirements. hjhjxhj[h}rC(h]h]h]h]h]uhNhhh]rDj/)rE}rF(hX**linker.cmd** - jailhouse requires that an inmate shall start from address "0". It also requires that all inmates segments be located in contiguous memory. This linker.cmd is to meet these requirements.hjAhjxhj3h}rG(h]h]h]h]h]uhMh]rH(jW)rI}rJ(hX**linker.cmd**h}rK(h]h]h]h]h]uhjEh]rLhX linker.cmdrMrN}rO(hUhjIubahj_ubhX - jailhouse requires that an inmate shall start from address "0". It also requires that all inmates segments be located in contiguous memory. This linker.cmd is to meet these requirements.rPrQ}rR(hX - jailhouse requires that an inmate shall start from address "0". It also requires that all inmates segments be located in contiguous memory. This linker.cmd is to meet these requirements.hjEubeubaubeubj/)rS}rT(hXThe **led** directory contains:rUhjtxhjxhj3h}rV(h]h]h]h]h]uhMhhh]rW(hXThe rXrY}rZ(hXThe hjSubjW)r[}r\(hX**led**h}r](h]h]h]h]h]uhjSh]r^hXledr_r`}ra(hUhj[ubahj_ubhX directory contains:rbrc}rd(hX directory contains:hjSubeubjQ)re}rf(hUhjtxhjxhjTh}rg(jVX-h]h]h]h]h]uhMhhh]rh(jX)ri}rj(hXThe main inmate **led_test.c** code. This file is based on $(SDK_INSTALL_PATH)/pdk_am57xx_1_0_6/packages/ti/board/diag/led/src/led_test.c diagnostic application. Because the inmate works as a virtual machine in order to use caches MMU has to be enabled. So, the application creates the MMU translation table with identical mapping and enables MMU. It also has the gic_init(), which is now used at this relese.hjehjxhj[h}rk(h]h]h]h]h]uhNhhh]rlj/)rm}rn(hXThe main inmate **led_test.c** code. This file is based on $(SDK_INSTALL_PATH)/pdk_am57xx_1_0_6/packages/ti/board/diag/led/src/led_test.c diagnostic application. Because the inmate works as a virtual machine in order to use caches MMU has to be enabled. So, the application creates the MMU translation table with identical mapping and enables MMU. It also has the gic_init(), which is now used at this relese.hjihjxhj3h}ro(h]h]h]h]h]uhMh]rp(hXThe main inmate rqrr}rs(hXThe main inmate hjmubjW)rt}ru(hX**led_test.c**h}rv(h]h]h]h]h]uhjmh]rwhX led_test.crxry}rz(hUhjtubahj_ubhX{ code. This file is based on $(SDK_INSTALL_PATH)/pdk_am57xx_1_0_6/packages/ti/board/diag/led/src/led_test.c diagnostic application. Because the inmate works as a virtual machine in order to use caches MMU has to be enabled. So, the application creates the MMU translation table with identical mapping and enables MMU. It also has the gic_init(), which is now used at this relese.r{r|}r}(hX{ code. This file is based on $(SDK_INSTALL_PATH)/pdk_am57xx_1_0_6/packages/ti/board/diag/led/src/led_test.c diagnostic application. Because the inmate works as a virtual machine in order to use caches MMU has to be enabled. So, the application creates the MMU translation table with identical mapping and enables MMU. It also has the gic_init(), which is now used at this relese.hjmubeubaubjX)r~}r(hX`**makefile** is to build the inmate. As you can see, it links number of brebuilt PDK libraries. hjehjxhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX_**makefile** is to build the inmate. As you can see, it links number of brebuilt PDK libraries.hj~hjxhj3h}r(h]h]h]h]h]uhMh]r(jW)r}r(hX **makefile**h}r(h]h]h]h]h]uhjh]rhXmakefilerr}r(hUhjubahj_ubhXS is to build the inmate. As you can see, it links number of brebuilt PDK libraries.rr}r(hXS is to build the inmate. As you can see, it links number of brebuilt PDK libraries.hjubeubaubeubj)r}r(hUhjtxhjxhjh}r(h]h]h]h]h]uhMhhh]r(j)r}r(hUjKhjhjxhhh}r(h]h]h]h]h]uhKhhh]ubj)r}r(hXYTo build the **led_test.bin** (a jailhouse inmate has to be \*.bin, but not \*.out file):jKhjhjxhhh}r(h]h]h]h]h]uhMhhh]r(hX To build the rr}r(hX To build the hjubjW)r}r(hX**led_test.bin**h}r(h]h]h]h]h]uhjh]rhX led_test.binrr}r(hUhjubahj_ubhX: (a jailhouse inmate has to be *.bin, but not *.out file):rr}r(hX< (a jailhouse inmate has to be \*.bin, but not \*.out file):hjubeubeubjQ)r}r(hUhjtxhjxhjTh}r(jVX-h]h]h]h]h]uhMhhh]r(jX)r}r(hXGcd to $(SDK_INSTALL_PATH)/processor_sdk_rtos_am57xx_4_01_00_04 drectoryhjhjxhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXGcd to $(SDK_INSTALL_PATH)/processor_sdk_rtos_am57xx_4_01_00_04 drectoryrhjhjxhj3h}r(h]h]h]h]h]uhMh]rhXGcd to $(SDK_INSTALL_PATH)/processor_sdk_rtos_am57xx_4_01_00_04 drectoryrr}r(hjhjubaubaubjX)r}r(hXsource setupenv.shrhjhjxhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjxhj3h}r(h]h]h]h]h]uhMh]rhXsource setupenv.shrr‚}rÂ(hjhjubaubaubjX)rĂ}rł(hXVcd to $(SDK_INSTALL_PATH)/processor_sdk_rtos_am57xx_4_01_00_04/demos/jailhouse-inmateshjhjxhj[h}rƂ(h]h]h]h]h]uhNhhh]rǂj/)rȂ}rɂ(hXVcd to $(SDK_INSTALL_PATH)/processor_sdk_rtos_am57xx_4_01_00_04/demos/jailhouse-inmatesrʂhjĂhjxhj3h}r˂(h]h]h]h]h]uhMh]r̂hXVcd to $(SDK_INSTALL_PATH)/processor_sdk_rtos_am57xx_4_01_00_04/demos/jailhouse-inmatesr͂r΂}rς(hjʂhjȂubaubaubjX)rЂ}rт(hXsource setenv.shr҂hjhjxhj[h}rӂ(h]h]h]h]h]uhNhhh]rԂj/)rՂ}rւ(hj҂hjЂhjxhj3h}rׂ(h]h]h]h]h]uhMh]r؂hXsource setenv.shrقrڂ}rۂ(hj҂hjՂubaubaubjX)r܂}r݂(hXrun **make led_test** hjhjxhj[h}rނ(h]h]h]h]h]uhNhhh]r߂j/)r}r(hXrun **make led_test**hj܂hjxhj3h}r(h]h]h]h]h]uhMh]r(hXrun rr}r(hXrun hjubjW)r}r(hX**make led_test**h}r(h]h]h]h]h]uhjh]rhX make led_testrr}r(hUhjubahj_ubeubaubeubj/)r}r(hXNThat should build the led_test.bin binary, that can be loaded to the jailhouse cell and run. As any other inmate it has to be run in a cell, created with appropriate cell configuration. In contrast to the led_test.bin, which is compiled independently on jailhouse, a corresponding cell configuration is compiled by jailhouse makefile.rhjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]rhXNThat should build the led_test.bin binary, that can be loaded to the jailhouse cell and run. As any other inmate it has to be run in a cell, created with appropriate cell configuration. In contrast to the led_test.bin, which is compiled independently on jailhouse, a corresponding cell configuration is compiled by jailhouse makefile.rr}r(hjhjubaubj/)r}r(hXThe am57xx-pdk-leddiag.c cell configuration file is located in the $TI_SDK_PATH/board-support/extra-drivers/jailhouse-0.7/configs directory. Use the compiled am57xx-pdk-leddiag.cell file when you create the cell for led_test.bin inmate.rhjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]rhXThe am57xx-pdk-leddiag.c cell configuration file is located in the $TI_SDK_PATH/board-support/extra-drivers/jailhouse-0.7/configs directory. Use the compiled am57xx-pdk-leddiag.cell file when you create the cell for led_test.bin inmate.rr}r(hjhjubaubj/)r}r(hX?See `Running the Demo <#Running_the_Demo>`__ to run the inmate.rhjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]r(hXSee rr}r(hXSee hjubj)r}r(hX(`Running the Demo <#Running_the_Demo>`__h}r(UnameXRunning the DemojX#Running_the_Demoh]h]h]h]h]uhjh]r hXRunning the Demor r }r (hUhjubahjubhX to run the inmate.r r}r(hX to run the inmate.hjubeubj/)r}r(hXThe **memcp_bm** is very similar to led_test. It is built in the same way as the led_test. Use the am57xx-bm.cell file from $TI_SDK_PATH/board-support/extra-drivers/jailhouse-0.7/configs to create the jailhouse cell for the memcp_bm inmate.hjtxhjxhj3h}r(h]h]h]h]h]uhMhhh]r(hXThe rr}r(hXThe hjubjW)r}r(hX **memcp_bm**h}r(h]h]h]h]h]uhjh]rhXmemcp_bmrr}r(hUhjubahj_ubhX is very similar to led_test. It is built in the same way as the led_test. Use the am57xx-bm.cell file from $TI_SDK_PATH/board-support/extra-drivers/jailhouse-0.7/configs to create the jailhouse cell for the memcp_bm inmate.rr}r (hX is very similar to led_test. It is built in the same way as the led_test. Use the am57xx-bm.cell file from $TI_SDK_PATH/board-support/extra-drivers/jailhouse-0.7/configs to create the jailhouse cell for the memcp_bm inmate.hjubeubj)r!}r"(hUhjtxhjxhjh}r#(h]h]h]h]h]uhMhhh]r$j)r%}r&(hUjKhj!hjxhhh}r'(h]h]h]h]h]uhKhhh]ubaubjF")r(}r)(hXRTOS BIOS Examplesr*hjtxhjxhjJ"h}r+(h]r,Urtos-bios-examplesr-ah]h]h]h]r.hWauhNhhh]r/hXRTOS BIOS Examplesr0r1}r2(hj*hj(ubaubj)r3}r4(hUhjtxhjxhjh}r5(h]h]h]h]h]uhMhhh]r6j)r7}r8(hXThe pruss and icss_emac examples are located in the rtos/pruss and rtos/icss_emac directories. The structures of the both directories are identical. Each directory contains the bios and src subdirectories. The bios contains XDC type application configuration file and makefile. The configuration file is reworked copy of the original RTOS application configuration file. For example the configuration file for icss_emac inmate was ported from $(SDK_INSTALL_PATH)/ti/pdk_am57xx_1_0_7/packages/ti/drv/icss_emac/test/am572x/armv7/bios/icss_emac_arm_wSoCLib.cfg file. As far as jailhouse inmate is not responsible for board related configuration, the board library, i2c library, OCRAM MMU sections and some other unnecessary for the inmate components were removed from the configuration file.r9jKhj3hjxhhh}r:(h]h]h]h]h]uhM hhh]r;hXThe pruss and icss_emac examples are located in the rtos/pruss and rtos/icss_emac directories. The structures of the both directories are identical. Each directory contains the bios and src subdirectories. The bios contains XDC type application configuration file and makefile. The configuration file is reworked copy of the original RTOS application configuration file. For example the configuration file for icss_emac inmate was ported from $(SDK_INSTALL_PATH)/ti/pdk_am57xx_1_0_7/packages/ti/drv/icss_emac/test/am572x/armv7/bios/icss_emac_arm_wSoCLib.cfg file. As far as jailhouse inmate is not responsible for board related configuration, the board library, i2c library, OCRAM MMU sections and some other unnecessary for the inmate components were removed from the configuration file.r<r=}r>(hj9hj7ubaubaubj)r?}r@(hUhjtxhjxhjh}rA(h]h]h]h]h]uhM hhh]rBj)rC}rD(hXAs far as the application main function calls the board_init() function, this function as well as the Board_moduleClockInit() (with required for icss_emac application clocks) are implemented in the idkAM572x_jh.c file.rEjKhj?hjxhhh}rF(h]h]h]h]h]uhMhhh]rGhXAs far as the application main function calls the board_init() function, this function as well as the Board_moduleClockInit() (with required for icss_emac application clocks) are implemented in the idkAM572x_jh.c file.rHrI}rJ(hjEhjCubaubaubj)rK}rL(hUhjtxhjxhjh}rM(h]h]h]h]h]uhMhhh]rNj)rO}rP(hXThus the ported configuration file, the idkAM572x_jh.c and makefiles are only new files required to port RTOS SDK existing project to jailhouse inmate.rQjKhjKhjxhhh}rR(h]h]h]h]h]uhMhhh]rShXThus the ported configuration file, the idkAM572x_jh.c and makefiles are only new files required to port RTOS SDK existing project to jailhouse inmate.rTrU}rV(hjQhjOubaubaubj/)rW}rX(hXjThe jailhouse-inmate/Makefile has the "pruss_test" and "icss_emac_test" targets to build the BIOS inmates.rYhjtxhjxhj3h}rZ(h]h]h]h]h]uhMhhh]r[hXjThe jailhouse-inmate/Makefile has the "pruss_test" and "icss_emac_test" targets to build the BIOS inmates.r\r]}r^(hjYhjWubaubj/)r_}r`(hX$The structure of the ethercat_slave_demo example is very similar to the pruss and icss_emac examples. As far as it depends on a particular version of the "PRU-ICSS Industrial Software", which has to be installed independently, building of the demo is not included into the top level makefile.rahjtxhjxhj3h}rb(h]h]h]h]h]uhMhhh]rchX$The structure of the ethercat_slave_demo example is very similar to the pruss and icss_emac examples. As far as it depends on a particular version of the "PRU-ICSS Industrial Software", which has to be installed independently, building of the demo is not included into the top level makefile.rdre}rf(hjahj_ubaubj)rg}rh(hUhjtxhjxhjh}ri(h]h]h]h]h]uhMhhh]rjj)rk}rl(hUjKhjghjxhhh}rm(h]h]h]h]h]uhKhhh]ubaubjF")rn}ro(hXRTOS BIOS Porting NotesrphjtxhjxhjJ"h}rq(h]rrUrtos-bios-porting-notesrsah]h]h]h]rthauhNhhh]ruhXRTOS BIOS Porting Notesrvrw}rx(hjphjnubaubj/)ry}rz(hXAs you can see in the previous section, the RTOS BIOS inmates has only few new files. Almost all files were reused from RTOS SDK examples. But following notes have to be considered when porting an RTOS BIOS application to a Jailhouse inmate.r{hjtxhjxhj3h}r|(h]h]h]h]h]uhM"hhh]r}hXAs you can see in the previous section, the RTOS BIOS inmates has only few new files. Almost all files were reused from RTOS SDK examples. But following notes have to be considered when porting an RTOS BIOS application to a Jailhouse inmate.r~r}r(hj{hjyubaubj/)r}r(hX2Jailhouse inmate runs in a small cell. The cell is created by hypervisor, which was started from already booted Linux OS. That says that the SOC, board and most clocks are already initialized and the inmate don't need and usually cannot touch any resources not listed in the inmate cell configuration file.rhjtxhjxhj3h}r(h]h]h]h]h]uhM'hhh]rhX2Jailhouse inmate runs in a small cell. The cell is created by hypervisor, which was started from already booted Linux OS. That says that the SOC, board and most clocks are already initialized and the inmate don't need and usually cannot touch any resources not listed in the inmate cell configuration file.rr}r(hjhjubaubj/)r}r(hXThus the using of board and i2c libraries were removed from cponfiguration file. Also OCRAM was removed from MMU configuration.rhjtxhjxhj3h}r(h]h]h]h]h]uhM-hhh]rhXThus the using of board and i2c libraries were removed from cponfiguration file. Also OCRAM was removed from MMU configuration.rr}r(hjhjubaubj/)r}r(hX!Jailhouse hypervisor allows inmate to access certain GICD registers, but only for those interrupt lines, which are listed in the cell configuration file. The cell creating routine reconfigures GICD target registers by itself. The standard gic_init() BIOS API configures target registers for all interrupt lines. That is not permitted for an inmate. To avoid this the latest SYSBIOS release has a special feature, which allows to disable target configuration from GIC initialization function. See the following fragment at the configuration file:rhjtxhjxhj3h}r(h]h]h]h]h]uhM0hhh]rhX!Jailhouse hypervisor allows inmate to access certain GICD registers, but only for those interrupt lines, which are listed in the cell configuration file. The cell creating routine reconfigures GICD target registers by itself. The standard gic_init() BIOS API configures target registers for all interrupt lines. That is not permitted for an inmate. To avoid this the latest SYSBIOS release has a special feature, which allows to disable target configuration from GIC initialization function. See the following fragment at the configuration file:rr}r(hjhjubaubj)r}r(hXOvar Hwi = xdc.useModule('ti.sysbios.family.arm.gic.Hwi'); Hwi.initGicd = false;hjtxhjxhjh}r(jjh]h]h]h]h]uhMIhhh]rhXOvar Hwi = xdc.useModule('ti.sysbios.family.arm.gic.Hwi'); Hwi.initGicd = false;rr}r(hUhjubaubj/)r}r(hX}The RTOS BIOS applications are built to \*.out format. RTOS loader may load this file to the board even if the image has multiple sections with their addresses spread across the entire SOC address range. The Jailhouse supports only \*.bin format, and inmate may use only allocated for it memory carved out from Linux. Therefore the ported application shall use only limited memory.hjtxhjxhj3h}r(h]h]h]h]h]uhM>hhh]rhX{The RTOS BIOS applications are built to *.out format. RTOS loader may load this file to the board even if the image has multiple sections with their addresses spread across the entire SOC address range. The Jailhouse supports only *.bin format, and inmate may use only allocated for it memory carved out from Linux. Therefore the ported application shall use only limited memory.rr}r(hX}The RTOS BIOS applications are built to \*.out format. RTOS loader may load this file to the board even if the image has multiple sections with their addresses spread across the entire SOC address range. The Jailhouse supports only \*.bin format, and inmate may use only allocated for it memory carved out from Linux. Therefore the ported application shall use only limited memory.hjubaubj/)r}r(hXAJailhouse may start an inmate that start from virtual address 0x0, but an usual RTOS application is linked to the 0x80000000 address and with different from that entry point. The Jailhouse allows to start such applications (see above). But using the linux-loader required additional node in the inmate cell configuration.rhjtxhjxhj3h}r(h]h]h]h]h]uhMEhhh]rhXAJailhouse may start an inmate that start from virtual address 0x0, but an usual RTOS application is linked to the 0x80000000 address and with different from that entry point. The Jailhouse allows to start such applications (see above). But using the linux-loader required additional node in the inmate cell configuration.rr}r(hjhjubaubj)r}r(hX/* RAM loader */ { .phys_start = 0xed000000, .virt_start = 0x0, .size = 0x10000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, /* RAM RTOS 224MB*/ { .phys_start = 0xe0000000, .virt_start = 0x80000000, .size = 0xd000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, },hjtxhjxhjh}r(jjh]h]h]h]h]uhM[hhh]rhX/* RAM loader */ { .phys_start = 0xed000000, .virt_start = 0x0, .size = 0x10000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, }, /* RAM RTOS 224MB*/ { .phys_start = 0xe0000000, .virt_start = 0x80000000, .size = 0xd000000, .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE | JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE, },rr}r(hUhjubaubj)r}r(hUhjtxhjxhjh}r(h]h]h]h]h]uhM\hhh]rj)r}r(hXTYou may see that cell configuration for icss_emac inmate configures two RAM regions:rjKhjhjxhhh}r(h]h]h]h]h]uhM]hhh]rhXTYou may see that cell configuration for icss_emac inmate configures two RAM regions:rr}r(hjhjubaubaubj)rƒ}rÃ(hUhjtxhjxhjh}ră(jU.h]h]h]jUh]h]jjuhM_hhh]rŃ(jX)rƃ}rǃ(hX8small one with virtual address 0x0 for the linux-loader;rȃhjƒhjxhj[h}rɃ(h]h]h]h]h]uhNhhh]rʃj/)r˃}r̃(hjȃhjƃhjxhj3h}r̓(h]h]h]h]h]uhM_h]r΃hX8small one with virtual address 0x0 for the linux-loader;rσrЃ}rу(hjȃhj˃ubaubaubjX)r҃}rӃ(hX+main region for the icss_emac test itself; hjƒhjxhj[h}rԃ(h]h]h]h]h]uhNhhh]rՃj/)rփ}r׃(hX*main region for the icss_emac test itself;r؃hj҃hjxhj3h}rك(h]h]h]h]h]uhM`h]rڃhX*main region for the icss_emac test itself;rۃr܃}r݃(hj؃hjփubaubaubeubj)rރ}r߃(hUhjtxhjxhjh}r(h]h]h]h]h]uhMbhhh]rj)r}r(hUjKhjރhjxhhh}r(h]h]h]h]h]uhKhhh]ubaubjF")r}r(hXGeneral Porting NotesrhjtxhjxhjJ"h}r(h]rUgeneral-porting-notesrah]h]h]h]rhauhNhhh]rhXGeneral Porting Notesrr}r(hjhjubaubj/)r}r(hXWhen you start porting your RTOS or bare-metal application to Jailhouse inmate, you have to consider several things. They are listed below. *This list is not complete and has just recommendations based on common sense and previous porting experience*.hjtxhjxhj3h}r(h]h]h]h]h]uhMghhh]r(hXWhen you start porting your RTOS or bare-metal application to Jailhouse inmate, you have to consider several things. They are listed below. rr}r(hXWhen you start porting your RTOS or bare-metal application to Jailhouse inmate, you have to consider several things. They are listed below. hjubj')r}r(hXn*This list is not complete and has just recommendations based on common sense and previous porting experience*h}r(h]h]h]h]h]uhjh]rhXlThis list is not complete and has just recommendations based on common sense and previous porting experiencerr}r(hUhjubahj/ubhX.r}r(hX.hjubeubjQ)r}r(hUhjtxhjxhjTh}r(jVX-h]h]h]h]h]uhMlhhh]r(jX)r}r(hX**Linux always starts first** before hypervisor. Linux initializes all (or almost all) common resources of SOC. Thus it initializes memory controller, clocks, interrupt controller etc. It configures PINMUX registers. In most cases it takes care about board configuration as well. hjhjxhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r (hX**Linux always starts first** before hypervisor. Linux initializes all (or almost all) common resources of SOC. Thus it initializes memory controller, clocks, interrupt controller etc. It configures PINMUX registers. In most cases it takes care about board configuration as well.hjhjxhj3h}r (h]h]h]h]h]uhMlh]r (jW)r }r (hX**Linux always starts first**h}r(h]h]h]h]h]uhjh]rhXLinux always starts firstrr}r(hUhj ubahj_ubhX before hypervisor. Linux initializes all (or almost all) common resources of SOC. Thus it initializes memory controller, clocks, interrupt controller etc. It configures PINMUX registers. In most cases it takes care about board configuration as well.rr}r(hX before hypervisor. Linux initializes all (or almost all) common resources of SOC. Thus it initializes memory controller, clocks, interrupt controller etc. It configures PINMUX registers. In most cases it takes care about board configuration as well.hjubeubaubjX)r}r(hX**Inmate Cell Configuration** defines resources, which are available for the inmate. The ported application can use only those resources and responsible for theirs initialization only. The ported application will not run on the board it used to run, but on a different **virtual board**, defined by the cell configuration. Thats is why the application cannot use any common board_init or soc_init functions that may touch used by Linux resources. **Inmate is a guest only**. hjhjxhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX**Inmate Cell Configuration** defines resources, which are available for the inmate. The ported application can use only those resources and responsible for theirs initialization only. The ported application will not run on the board it used to run, but on a different **virtual board**, defined by the cell configuration. Thats is why the application cannot use any common board_init or soc_init functions that may touch used by Linux resources. **Inmate is a guest only**.hjhjxhj3h}r(h]h]h]h]h]uhMrh]r(jW)r}r(hX**Inmate Cell Configuration**h}r (h]h]h]h]h]uhjh]r!hXInmate Cell Configurationr"r#}r$(hUhjubahj_ubhX defines resources, which are available for the inmate. The ported application can use only those resources and responsible for theirs initialization only. The ported application will not run on the board it used to run, but on a different r%r&}r'(hX defines resources, which are available for the inmate. The ported application can use only those resources and responsible for theirs initialization only. The ported application will not run on the board it used to run, but on a different hjubjW)r(}r)(hX**virtual board**h}r*(h]h]h]h]h]uhjh]r+hX virtual boardr,r-}r.(hUhj(ubahj_ubhX, defined by the cell configuration. Thats is why the application cannot use any common board_init or soc_init functions that may touch used by Linux resources. r/r0}r1(hX, defined by the cell configuration. Thats is why the application cannot use any common board_init or soc_init functions that may touch used by Linux resources. hjubjW)r2}r3(hX**Inmate is a guest only**h}r4(h]h]h]h]h]uhjh]r5hXInmate is a guest onlyr6r7}r8(hUhj2ubahj_ubhX.r9}r:(hX.hjubeubaubjX)r;}r<(hXAs it mentioned above Linux initializes **Interrupt Controller** and dynamically configures crossbar registers. It has to be planned ahead which interrupts inmate may use. Those interrupts has to be reserved at Linux's dts file. Also used by the inmate interrupts have to listed in the inmate cell configuration. Hypervisor configures GIC target registers for those interrupt. Inmate is responsible only for enabling, disabling and acknowledging the interrupts. hjhjxhj[h}r=(h]h]h]h]h]uhNhhh]r>j/)r?}r@(hXAs it mentioned above Linux initializes **Interrupt Controller** and dynamically configures crossbar registers. It has to be planned ahead which interrupts inmate may use. Those interrupts has to be reserved at Linux's dts file. Also used by the inmate interrupts have to listed in the inmate cell configuration. Hypervisor configures GIC target registers for those interrupt. Inmate is responsible only for enabling, disabling and acknowledging the interrupts.hj;hjxhj3h}rA(h]h]h]h]h]uhM{h]rB(hX(As it mentioned above Linux initializes rCrD}rE(hX(As it mentioned above Linux initializes hj?ubjW)rF}rG(hX**Interrupt Controller**h}rH(h]h]h]h]h]uhj?h]rIhXInterrupt ControllerrJrK}rL(hUhjFubahj_ubhX and dynamically configures crossbar registers. It has to be planned ahead which interrupts inmate may use. Those interrupts has to be reserved at Linux's dts file. Also used by the inmate interrupts have to listed in the inmate cell configuration. Hypervisor configures GIC target registers for those interrupt. Inmate is responsible only for enabling, disabling and acknowledging the interrupts.rMrN}rO(hX and dynamically configures crossbar registers. It has to be planned ahead which interrupts inmate may use. Those interrupts has to be reserved at Linux's dts file. Also used by the inmate interrupts have to listed in the inmate cell configuration. Hypervisor configures GIC target registers for those interrupt. Inmate is responsible only for enabling, disabling and acknowledging the interrupts.hj?ubeubaubjX)rP}rQ(hXLinux owns **I2C** buses. Inmate cannot has its owe driver to control I2C bus. It is not practicable even if the both root-cell and inmate cell configurations share I2C region and Linux and the Inmate have an agreement not to use I2C at the same time. The problem is that the Linux I2C driver works in interrupt mode and if the Inmate issues an I2C transaction, Linux's interrupt handler will be called. It brakes the Linux's and Inmate's I2C drivers state machines (or whatever they have). hjhjxhj[h}rR(h]h]h]h]h]uhNhhh]rSj/)rT}rU(hXLinux owns **I2C** buses. Inmate cannot has its owe driver to control I2C bus. It is not practicable even if the both root-cell and inmate cell configurations share I2C region and Linux and the Inmate have an agreement not to use I2C at the same time. The problem is that the Linux I2C driver works in interrupt mode and if the Inmate issues an I2C transaction, Linux's interrupt handler will be called. It brakes the Linux's and Inmate's I2C drivers state machines (or whatever they have).hjPhjxhj3h}rV(h]h]h]h]h]uhMh]rW(hX Linux owns rXrY}rZ(hX Linux owns hjTubjW)r[}r\(hX**I2C**h}r](h]h]h]h]h]uhjTh]r^hXI2Cr_r`}ra(hUhj[ubahj_ubhX buses. Inmate cannot has its owe driver to control I2C bus. It is not practicable even if the both root-cell and inmate cell configurations share I2C region and Linux and the Inmate have an agreement not to use I2C at the same time. The problem is that the Linux I2C driver works in interrupt mode and if the Inmate issues an I2C transaction, Linux's interrupt handler will be called. It brakes the Linux's and Inmate's I2C drivers state machines (or whatever they have).rbrc}rd(hX buses. Inmate cannot has its owe driver to control I2C bus. It is not practicable even if the both root-cell and inmate cell configurations share I2C region and Linux and the Inmate have an agreement not to use I2C at the same time. The problem is that the Linux I2C driver works in interrupt mode and if the Inmate issues an I2C transaction, Linux's interrupt handler will be called. It brakes the Linux's and Inmate's I2C drivers state machines (or whatever they have).hjTubeubaubjX)re}rf(hXUsing **GPIO** may have the same as I2C problem. It is easy to disable an entire GPIO bank from using by Linux and use it for the Inmate. But it is not practical to share the same bank by the both Linux and Inmate. hjhjxhj[h}rg(h]h]h]h]h]uhNhhh]rhj/)ri}rj(hXUsing **GPIO** may have the same as I2C problem. It is easy to disable an entire GPIO bank from using by Linux and use it for the Inmate. But it is not practical to share the same bank by the both Linux and Inmate.hjehjxhj3h}rk(h]h]h]h]h]uhMh]rl(hXUsing rmrn}ro(hXUsing hjiubjW)rp}rq(hX**GPIO**h}rr(h]h]h]h]h]uhjih]rshXGPIOrtru}rv(hUhjpubahj_ubhX may have the same as I2C problem. It is easy to disable an entire GPIO bank from using by Linux and use it for the Inmate. But it is not practical to share the same bank by the both Linux and Inmate.rwrx}ry(hX may have the same as I2C problem. It is easy to disable an entire GPIO bank from using by Linux and use it for the Inmate. But it is not practical to share the same bank by the both Linux and Inmate.hjiubeubaubeubj)rz}r{(hUhjtxhjxhjh}r|(h]h]h]h]h]uhMhhh]r}j)r~}r(hUjKhjzhjxhhh}r(h]h]h]h]h]uhKhhh]ubaubeubhjxhj>h}r(h]UlevelKh]h]Usourcejxh]h]UlineKUtypejY&uhKhhh]rj/)r}r(hX%Line block ends without a blank line.h}r(h]h]h]h]h]uhjrxh]rhX%Line block ends without a blank line.rr}r(hUhjubahj3ubaubj)r}r(hUhjtxhjxhj>h}r(h]UlevelKh]rjxah]rjxaUsourcejxh]h]UlineKUtypejY&uhKhhh]rj/)r}r(hX0Inline emphasis start-string without end-string.h}r(h]h]h]h]h]uhjh]rhX0Inline emphasis start-string without end-string.rr}r(hUhjubahj3ubaubj)r}r(hUhh)r}r(hUhhhhhhh}r(h]h]h]h]rUk2g-audio-dc-addonrah]rhauhKEhhh]r(h)r}r(hXK2G AUDIO DC AddOnrhjhhhhh}r(h]h]h]h]h]uhKEhhh]rhXK2G AUDIO DC AddOnrr}r(hjhjubaubj )r}r(hXGhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_AUDK2G_AddOnhjhj X<source/rtos/Examples_and_Demonstrations/AUDK2G_AddOn.rst.incrr}rbhjh}r(jjh]h]h]h]h]uhKhhh]rhXGhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_AUDK2G_AddOnrr}r(hUhjubaubjF")r}r(hX IntroductionrjKhjhjhjJ"h}r(h]rUid60rah]h]rX introductionrah]h]uhNhhh]rhX Introductionrr}r(hjhjubaubj/)r}r(hXThis page describes the unit test for the Audio Daughter Card for K2G (AUDK2G) AddOn provided in the Processor-SDK for RTOS. This unit test implemented the audio loopback between the ADC_IN1-4 to DAC_OUT1-4 on AUDK2G.rhjhjhj3h}r(h]h]h]h]h]uhKhhh]r„hXThis page describes the unit test for the Audio Daughter Card for K2G (AUDK2G) AddOn provided in the Processor-SDK for RTOS. This unit test implemented the audio loopback between the ADC_IN1-4 to DAC_OUT1-4 on AUDK2G.rÄrĄ}rń(hjhjubaubj/)rƄ}rDŽ(hX,The key functions in this unit test include:rȄhjhjhj3h}rɄ(h]h]h]h]h]uhK hhh]rʄhX,The key functions in this unit test include:r˄r̄}r̈́(hjȄhjƄubaubjQ)r΄}rτ(hUhjhjhjTh}rЄ(jVX-h]h]h]h]h]uhK hhh]rф(jX)r҄}rӄ(hX+Use board library to initialize the K2G EVMrԄhj΄hjhj[h}rՄ(h]h]h]h]h]uhNhhh]rքj/)rׄ}r؄(hjԄhj҄hjhj3h}rل(h]h]h]h]h]uhK h]rڄhX+Use board library to initialize the K2G EVMrۄr܄}r݄(hjԄhjׄubaubaubjX)rބ}r߄(hX+Setup the PinMux for K2G EVM and the AUDK2Grhj΄hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjބhjhj3h}r(h]h]h]h]h]uhKh]rhX+Setup the PinMux for K2G EVM and the AUDK2Grr}r(hjhjubaubaubjX)r}r(hX Allocate the data buffers neededrhj΄hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX Allocate the data buffers neededrr}r(hjhjubaubaubjX)r}r(hXInitialize the McASP and EDMArhj΄hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXInitialize the McASP and EDMArr}r(hjhjubaubaubjX)r}r(hX0Start the infinite loop for continious loopback hj΄hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX/Start the infinite loop for continious loopbackrhjhjhj3h}r (h]h]h]h]h]uhKh]r hX/Start the infinite loop for continious loopbackr r }r (hjhjubaubaubeubj/)r}r(hX@This unit test utilizes other Processor SDK features/components:rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhX@This unit test utilizes other Processor SDK features/components:rr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]r(jX)r}r(hX1**Board Library** for K2G platform initializationrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r (hjhjhjhj3h}r!(h]h]h]h]h]uhKh]r"(jW)r#}r$(hX**Board Library**h}r%(h]h]h]h]h]uhjh]r&hX Board Libraryr'r(}r)(hUhj#ubahj_ubhX for K2G platform initializationr*r+}r,(hX for K2G platform initializationhjubeubaubjX)r-}r.(hX1**AUDK2G Library** for PinMux, McASP/EDMA setups hjhjhj[h}r/(h]h]h]h]h]uhNhhh]r0j/)r1}r2(hX0**AUDK2G Library** for PinMux, McASP/EDMA setupshj-hjhj3h}r3(h]h]h]h]h]uhKh]r4(jW)r5}r6(hX**AUDK2G Library**h}r7(h]h]h]h]h]uhj1h]r8hXAUDK2G Libraryr9r:}r;(hUhj5ubahj_ubhX for PinMux, McASP/EDMA setupsr<r=}r>(hX for PinMux, McASP/EDMA setupshj1ubeubaubeubj/)r?}r@(hX6Currently, the following device and EVM are supported:rAhjhjhj3h}rB(h]h]h]h]h]uhKhhh]rChX6Currently, the following device and EVM are supported:rDrE}rF(hjAhj?ubaubjQ)rG}rH(hUhjhjhjTh}rI(jVX-h]h]h]h]h]uhKhhh]rJjX)rK}rL(hX K2G, on the K2G EVM with AUDK2G hjGhjhj[h}rM(h]h]h]h]h]uhNhhh]rNj/)rO}rP(hXK2G, on the K2G EVM with AUDK2GrQhjKhjhj3h}rR(h]h]h]h]h]uhKh]rShXK2G, on the K2G EVM with AUDK2GrTrU}rV(hjQhjOubaubaubaubj)rW}rX(hUhjhjhjh}rY(h]h]h]h]h]uhKhhh]rZj)r[}r\(hUjKhjWhjhhh}r](h]h]h]h]h]uhKhhh]ubaubjF")r^}r_(hX Requirementsr`jKhjhjhjJ"h}ra(h]rbUid61rcah]h]rdX requirementsreah]h]uhNhhh]rfhX Requirementsrgrh}ri(hj`hj^ubaubj/)rj}rk(hX;The following materials are required to run this unit test:rlhjhjhj3h}rm(h]h]h]h]h]uhK!hhh]rnhX;The following materials are required to run this unit test:rorp}rq(hjlhjjubaubj/)rr}rs(hXHardwarerthjhjhj3h}ru(h]h]h]h]h]uhK#hhh]rvhXHardwarerwrx}ry(hjthjrubaubjQ)rz}r{(hUhjhjhjTh}r|(jVX-h]h]h]h]h]uhK%hhh]r}(jX)r~}r(hXK2G EVMrhjzhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhj~hjhj3h}r(h]h]h]h]h]uhK%h]rhXK2G EVMrr}r(hjhjubaubaubjX)r}r(hXAudio Daughter Card (AUDK2G) hjzhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXAudio Daughter Card (AUDK2G)rhjhjhj3h}r(h]h]h]h]h]uhK&h]rhXAudio Daughter Card (AUDK2G)rr}r(hjhjubaubaubeubj/)r}r(hXSoftwarerhjhjhj3h}r(h]h]h]h]h]uhK(hhh]rhXSoftwarerr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK*hhh]r(jX)r}r(hX#Processor-SDK RTOS (3.2 or greater)rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK*h]rhX#Processor-SDK RTOS (3.2 or greater)rr}r(hjhjubaubaubjX)r}r(hXCode Composer Studio 6.1.3 hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXCode Composer Studio 6.1.3rhjhjhj3h}r(h]h]h]h]h]uhK+h]rhXCode Composer Studio 6.1.3rr}r(hjhjubaubaubeubj)r}r(hUhjhjhjh}r(h]h]h]h]h]uhK-hhh]rj)r}r(hUjKhjhjhhh}r(h]h]h]h]h]uhKhhh]ubaubjF")r}r…(hXHow to Build the Unit TestrÅhjhjhjJ"h}rą(h]rŅUhow-to-build-the-unit-testrƅah]h]h]h]rDžhauhNhhh]rȅhXHow to Build the Unit TestrɅrʅ}r˅(hjÅhjubaubjF")r̅}rͅ(hXK2G EVMr΅jKhjhjhjJ"h}rυ(h]rЅUid62rхah]h]r҅Xk2g-evmrӅah]h]uhNhhh]rԅhXK2G EVMrՅrօ}rׅ(hj΅hj̅ubaubj/)r؅}rم(hX**For Linux:**rڅhjhjhj3h}rۅ(h]h]h]h]h]uhK5hhh]r܅jW)r݅}rޅ(hjڅh}r߅(h]h]h]h]h]uhj؅h]rhX For Linux:rr}r(hUhj݅ubahj_ubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK7hhh]rjX)r}r(hXHUnder pdk_k2g_/packages directory, run the following commands: hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXGUnder pdk_k2g_/packages directory, run the following commands:rhjhjhj3h}r(h]h]h]h]h]uhK7h]rhXGUnder pdk_k2g_/packages directory, run the following commands:rr}r(hjhjubaubaubaubj)r}r(hXUsource pdksetupenv.sh cd pdk_k2g_/packages/ti/addon/aud/ make clean make allhjhjhjh}r(jjh]h]h]h]h]uhMhhh]rhXUsource pdksetupenv.sh cd pdk_k2g_/packages/ti/addon/aud/ make clean make allrr}r(hUhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKAhhh]rjX)r}r(hXThe OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_/packages/ti/addon/aud/test/analog/loopback/build/make hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXThe OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_/packages/ti/addon/aud/test/analog/loopback/build/makerhjhjhj3h}r(h]h]h]h]h]uhKAh]rhXThe OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_/packages/ti/addon/aud/test/analog/loopback/build/makerr }r (hjhjubaubaubaubj/)r }r (hX**For Windows:**r hjhjhj3h}r(h]h]h]h]h]uhKDhhh]rjW)r}r(hj h}r(h]h]h]h]h]uhj h]rhX For Windows:rr}r(hUhjubahj_ubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKFhhh]rjX)r}r(hXIUnder pdk_k2g_\\packages directory, run the following commands: hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r (hXHUnder pdk_k2g_\\packages directory, run the following commands:hjhjhj3h}r!(h]h]h]h]h]uhKFh]r"hXGUnder pdk_k2g_\packages directory, run the following commands:r#r$}r%(hXHUnder pdk_k2g_\\packages directory, run the following commands:hjubaubaubaubj)r&}r'(hXQpdksetupenv.bat cd pdk_k2g_\packages\ti\addon\aud\ gmake clean gmake allhjhjhjh}r((jjh]h]h]h]h]uhMhhh]r)hXQpdksetupenv.bat cd pdk_k2g_\packages\ti\addon\aud\ gmake clean gmake allr*r+}r,(hUhj&ubaubjQ)r-}r.(hUhjhjhjTh}r/(jVX-h]h]h]h]h]uhKPhhh]r0jX)r1}r2(hXThe OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_\\packages\\ti\\addon\\aud\\test\\analog\\loopback\\build\\make hj-hjhj[h}r3(h]h]h]h]h]uhNhhh]r4j/)r5}r6(hXThe OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_\\packages\\ti\\addon\\aud\\test\\analog\\loopback\\build\\makehj1hjhj3h}r7(h]h]h]h]h]uhKPh]r8hXThe OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_\packages\ti\addon\aud\test\analog\loopback\build\maker9r:}r;(hXThe OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_\\packages\\ti\\addon\\aud\\test\\analog\\loopback\\build\\makehj5ubaubaubaubjF")r<}r=(hXHow to Run the Unit Testr>jKhjhjhjJ"h}r?(h]r@Uhow-to-run-the-unit-testrAah]h]rBXhow-to-run-the-unit-testrCah]h]uhNhhh]rDhXHow to Run the Unit TestrErF}rG(hj>hj<ubaubj/)rH}rI(hX<The unit test works on the K2G EVM with an AUDK2G connected.rJhjhjhj3h}rK(h]h]h]h]h]uhKVhhh]rLhX<The unit test works on the K2G EVM with an AUDK2G connected.rMrN}rO(hjJhjHubaubj/)rP}rQ(hX8The following section provide detailed steps for K2G EVMrRhjhjhj3h}rS(h]h]h]h]h]uhKXhhh]rThX8The following section provide detailed steps for K2G EVMrUrV}rW(hjRhjPubaubjQ)rX}rY(hUhjhjhjTh}rZ(jVX-h]h]h]h]h]uhKZhhh]r[(jX)r\}r](hXFollow this link `Processor SDK RTOS Setup CCS `__ to get target configuration setup correctlyhjXhjhj[h}r^(h]h]h]h]h]uhNhhh]r_j/)r`}ra(hXFollow this link `Processor SDK RTOS Setup CCS `__ to get target configuration setup correctlyhj\hjhj3h}rb(h]h]h]h]h]uhKZh]rc(hXFollow this link rdre}rf(hXFollow this link hj`ubj)rg}rh(hXd`Processor SDK RTOS Setup CCS `__h}ri(UnameXProcessor SDK RTOS Setup CCSjXAindex_how_to_guides.html#setup-ccs-for-evm-and-processor-sdk-rtosh]h]h]h]h]uhj`h]rjhXProcessor SDK RTOS Setup CCSrkrl}rm(hUhjgubahjubhX, to get target configuration setup correctlyrnro}rp(hX, to get target configuration setup correctlyhj`ubeubaubjX)rq}rr(hX?Connect to the on board emulator (J1 on K2G EVM) to your PC USBrshjXhjhj[h}rt(h]h]h]h]h]uhNhhh]ruj/)rv}rw(hjshjqhjhj3h}rx(h]h]h]h]h]uhK\h]ryhX?Connect to the on board emulator (J1 on K2G EVM) to your PC USBrzr{}r|(hjshjvubaubaubjX)r}}r~(hX=Plug power adaptor(12V) into the K2G EVM and power on the EVMrhjXhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhj}hjhj3h}r(h]h]h]h]h]uhK]h]rhX=Plug power adaptor(12V) into the K2G EVM and power on the EVMrr}r(hjhjubaubaubjX)r}r(hXYLaunch the target configuration file using "Launch Selected Configuration" from CCS 6.1.3hjXhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXYLaunch the target configuration file using "Launch Selected Configuration" from CCS 6.1.3rhjhjhj3h}r(h]h]h]h]h]uhK^h]rhXYLaunch the target configuration file using "Launch Selected Configuration" from CCS 6.1.3rr}r(hjhjubaubaubjX)r}r(hXThen "Connect to C66xx_DSP"rhjXhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK`h]rhXThen "Connect to C66xx_DSP"rr}r(hjhjubaubaubjX)r}r(hXqLoad the audioAnalogLoopbackTest.out from pdk_k2g_/packages/ti/addon/aud/test/analog/loopback/build/makehjXhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXqLoad the audioAnalogLoopbackTest.out from pdk_k2g_/packages/ti/addon/aud/test/analog/loopback/build/makerhjhjhj3h}r(h]h]h]h]h]uhKah]rhXqLoad the audioAnalogLoopbackTest.out from pdk_k2g_/packages/ti/addon/aud/test/analog/loopback/build/makerr}r(hjhjubaubaubjX)r}r(hX2Run the program (loaded previously) by pressing F8rhjXhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKch]rhX2Run the program (loaded previously) by pressing F8rr}r(hjhjubaubaubjX)r}r(hXUThe program will print out the instructions on how to verify the loopback physically hjXhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXTThe program will print out the instructions on how to verify the loopback physicallyrhjhjhj3h}r(h]h]h]h]h]uhKdh]rhXTThe program will print out the instructions on how to verify the loopback physicallyr†rÆ}rĆ(hjhjubaubaubeubj)rņ}rƆ(hX[C66xx] ****************************************** Audio DC Analog Loopback Test ****************************************** Test Verifies ADC and DAC Channels 0 to 3 Test Runs in Audio Loopback Mode Confirm that ADC Input Audio is Played at DAC Channels 0 to 3 Audio Connection Details ************************************** ADC_IN 0 ==> DAC_OUT 0 ADC_IN 1 ==> DAC_OUT 1 ADC_IN 2 ==> DAC_OUT 2 ADC_IN 3 ==> DAC_OUT 3 **************************************hjhjhjh}rdž(jjh]h]h]h]h]uhMhhh]rȆhX[C66xx] ****************************************** Audio DC Analog Loopback Test ****************************************** Test Verifies ADC and DAC Channels 0 to 3 Test Runs in Audio Loopback Mode Confirm that ADC Input Audio is Played at DAC Channels 0 to 3 Audio Connection Details ************************************** ADC_IN 0 ==> DAC_OUT 0 ADC_IN 1 ==> DAC_OUT 1 ADC_IN 2 ==> DAC_OUT 2 ADC_IN 3 ==> DAC_OUT 3 **************************************rɆrʆ}rˆ(hUhjņubaubeubhXSinternal padding after source/rtos/Examples_and_Demonstrations/AUDK2G_AddOn.rst.incr̆hj>h}r͆(h]UlevelKh]h]Usourcejh]h]UlineKzUtypejfuhK|hhh]rΆ(j/)rφ}rІ(hX;Content block expected for the "raw" directive; none found.h}rц(h]h]h]h]h]uhjh]r҆hX;Content block expected for the "raw" directive; none found.rӆrԆ}rՆ(hUhjφubahj3ubj)rֆ}r׆(hX.. raw:: html h}r؆(jjh]h]h]h]h]uhjh]rنhX.. raw:: html rچrۆ}r܆(hUhjֆubahjubeubj)r݆}rކ(hUh}r߆(h]UlevelKh]h]rUid63raUsourcehh]h]UlineKKUtypejY&uhjF")r}r(hX IntroductionrjKhh)r}r(hUhhhhhhh}r(h]h]h]h]rU cmb-addonrah]rh auhKKhhh]r(h)r}r(hX CMB AddOnrhjhhhhh}r(h]h]h]h]h]uhKKhhh]rhX CMB AddOnrr}r(hjhjubaubj )r}r(hXDhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_CMB_AddOnhjhj X9source/rtos/Examples_and_Demonstrations/CMB_AddOn.rst.incrr}rbhjh}r(jjh]h]h]h]h]uhKhhh]rhXDhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_CMB_AddOnrr}r(hUhjubaubjj/)r}r(hXThis page describes the Circular Microphone Board (CMB) Addon library and the unit test provided in the Processor-SDK for RTOS.rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhXThis page describes the Circular Microphone Board (CMB) Addon library and the unit test provided in the Processor-SDK for RTOS.rr}r(hjhjubaubj/)r}r(hX3The key functions in the CMB Addon library include:rhjhjhj3h}r (h]h]h]h]h]uhK hhh]r hX3The key functions in the CMB Addon library include:r r }r (hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK hhh]r(jX)r}r(hX(Initialize the board connects to the CMBrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK h]rhX(Initialize the board connects to the CMBrr}r(hjhjubaubaubjX)r}r(hX2Initialize/configure the McASP, EDMA, I2C and GPIOr hjhjhj[h}r!(h]h]h]h]h]uhNhhh]r"j/)r#}r$(hj hjhjhj3h}r%(h]h]h]h]h]uhK h]r&hX2Initialize/configure the McASP, EDMA, I2C and GPIOr'r(}r)(hj hj#ubaubaubjX)r*}r+(hXNSet up the CMB and on-board audio codec to the correct sample rate and format hjhjhj[h}r,(h]h]h]h]h]uhNhhh]r-j/)r.}r/(hXMSet up the CMB and on-board audio codec to the correct sample rate and formatr0hj*hjhj3h}r1(h]h]h]h]h]uhK h]r2hXMSet up the CMB and on-board audio codec to the correct sample rate and formatr3r4}r5(hj0hj.ubaubaubeubj/)r6}r7(hXDThe unit test demo utilizes other Processor SDK features/components:r8hjhjhj3h}r9(h]h]h]h]h]uhKhhh]r:hXDThe unit test demo utilizes other Processor SDK features/components:r;r<}r=(hj8hj6ubaubjQ)r>}r?(hUhjhjhjTh}r@(jVX-h]h]h]h]h]uhKhhh]rA(jX)rB}rC(hXE**SYS/BIOS** application utilizing TI-RTOS features for DSP-C66x corerDhj>hjhj[h}rE(h]h]h]h]h]uhNhhh]rFj/)rG}rH(hjDhjBhjhj3h}rI(h]h]h]h]h]uhKh]rJ(jW)rK}rL(hX **SYS/BIOS**h}rM(h]h]h]h]h]uhjGh]rNhXSYS/BIOSrOrP}rQ(hUhjKubahj_ubhX9 application utilizing TI-RTOS features for DSP-C66x corerRrS}rT(hX9 application utilizing TI-RTOS features for DSP-C66x corehjGubeubaubjX)rU}rV(hX$**UIA** for instrumentation logging hj>hjhj[h}rW(h]h]h]h]h]uhNhhh]rXj/)rY}rZ(hX#**UIA** for instrumentation logginghjUhjhj3h}r[(h]h]h]h]h]uhKh]r\(jW)r]}r^(hX**UIA**h}r_(h]h]h]h]h]uhjYh]r`hXUIArarb}rc(hUhj]ubahj_ubhX for instrumentation loggingrdre}rf(hX for instrumentation logginghjYubeubaubeubj/)rg}rh(hX8Currently, the following devices and EVMs are supported:rihjhjhj3h}rj(h]h]h]h]h]uhKhhh]rkhX8Currently, the following devices and EVMs are supported:rlrm}rn(hjihjgubaubjQ)ro}rp(hUhjhjhjTh}rq(jVX-h]h]h]h]h]uhKhhh]rr(jX)rs}rt(hXSK2G, on the K2G EVM. See TIDEP-0088 (http://www.ti.com/tool/TIDEP-0088) for detailshjohjhj[h}ru(h]h]h]h]h]uhNhhh]rvj/)rw}rx(hXSK2G, on the K2G EVM. See TIDEP-0088 (http://www.ti.com/tool/TIDEP-0088) for detailshjshjhj3h}ry(h]h]h]h]h]uhKh]rz(hX%K2G, on the K2G EVM. See TIDEP-0088 (r{r|}r}(hX%K2G, on the K2G EVM. See TIDEP-0088 (hjwubj)r~}r(hX!http://www.ti.com/tool/TIDEP-0088rh}r(Urefurijh]h]h]h]h]uhjwh]rhX!http://www.ti.com/tool/TIDEP-0088rr}r(hUhj~ubahjubhX ) for detailsrr}r(hX ) for detailshjwubeubaubjX)r}r(hXbOMAP-L137, on the OMAP-L137 EVM. See TIDEP-0099 ((http://www.ti.com/tool/TIDEP-0099)) for details hjohjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXaOMAP-L137, on the OMAP-L137 EVM. See TIDEP-0099 ((http://www.ti.com/tool/TIDEP-0099)) for detailshjhjhj3h}r(h]h]h]h]h]uhKh]r(hX2OMAP-L137, on the OMAP-L137 EVM. See TIDEP-0099 ((rr}r(hX2OMAP-L137, on the OMAP-L137 EVM. See TIDEP-0099 ((hjubj)r}r(hX!http://www.ti.com/tool/TIDEP-0099rh}r(Urefurijh]h]h]h]h]uhjh]rhX!http://www.ti.com/tool/TIDEP-0099rr}r(hUhjubahjubhX)) for detailsrr}r(hX)) for detailshjubeubaubeubjF")r}r(hX RequirementsrjKhjhjhjJ"h}r(h]rUid64rah]h]rjeah]h]uhNhhh]rhX Requirementsrr}r(hjhjubaubj/)r}r(hXBThe following materials are required to run this add-on unit test:rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhXBThe following materials are required to run this add-on unit test:rr}r(hjhjubaubj/)r}r(hXHardwarerhjhjhj3h}r(h]h]h]h]h]uhK!hhh]rhXHardwarerr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK#hhh]r(jX)r}r(hXTI EVMs (see list above)rhjhjhj[h}r(h]h]h]h]h]uhNhhh]r‡j/)rÇ}rć(hjhjhjhj3h}rŇ(h]h]h]h]h]uhK#h]rƇhXTI EVMs (see list above)rLJrȇ}rɇ(hjhjÇubaubaubjX)rʇ}rˇ(hX%Circular Microphone Array Board (CMB)ṙhjhjhj[h}r͇(h]h]h]h]h]uhNhhh]r·j/)rχ}rЇ(hj̇hjʇhjhj3h}rч(h]h]h]h]h]uhK$h]r҇hX%Circular Microphone Array Board (CMB)rӇrԇ}rՇ(hj̇hjχubaubaubjX)rև}rׇ(hX3OMAP-L137 Prototype Board (for OMAP-L137 EVM only) hjhjhj[h}r؇(h]h]h]h]h]uhNhhh]rهj/)rڇ}rۇ(hX2OMAP-L137 Prototype Board (for OMAP-L137 EVM only)r܇hjևhjhj3h}r݇(h]h]h]h]h]uhK%h]rއhX2OMAP-L137 Prototype Board (for OMAP-L137 EVM only)r߇r}r(hj܇hjڇubaubaubeubj/)r}r(hXSoftwarerhjhjhj3h}r(h]h]h]h]h]uhK'hhh]rhXSoftwarerr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK)hhh]r(jX)r}r(hX#Processor-SDK RTOS (4.0 or greater)rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK)h]rhX#Processor-SDK RTOS (4.0 or greater)rr}r(hjhjubaubaubjX)r}r(hX"Code Composer Studio 6.1.3 and up hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX!Code Composer Studio 6.1.3 and uprhjhjhj3h}r(h]h]h]h]h]uhK*h]rhX!Code Composer Studio 6.1.3 and uprr}r(hjhjubaubaubeubjF")r}r(hXSoftware DesignrhjhjhjJ"h}r (h]r Uid65r ah]h]h]h]r hauhNhhh]r hXSoftware Designrr}r(hjhjubaubjF")r}r(hXFramework for Unit TestrhjhjhjJ"h}r(h]rUframework-for-unit-testrah]h]h]h]rh{auhNhhh]rhXFramework for Unit Testrr}r(hjhjubaubj/)r}r(hXPThe current framework is based on SYS/BIOS. The following are the overall steps:rhjhjhj3h}r(h]h]h]h]h]uhK2hhh]r hXPThe current framework is based on SYS/BIOS. The following are the overall steps:r!r"}r#(hjhjubaubjQ)r$}r%(hUhjhjhjTh}r&(jVX-h]h]h]h]h]uhK5hhh]r'(jX)r(}r)(hXAThe McASP/EDMA will generate interrupt every 10ms (approximately)r*hj$hjhj[h}r+(h]h]h]h]h]uhNhhh]r,j/)r-}r.(hj*hj(hjhj3h}r/(h]h]h]h]h]uhK5h]r0hXAThe McASP/EDMA will generate interrupt every 10ms (approximately)r1r2}r3(hj*hj-ubaubaubjX)r4}r5(hXgThe EDMA ISR will prepare the audio frame buffer pointers (McASP/EDMA RX buffer) for further processinghj$hjhj[h}r6(h]h]h]h]h]uhNhhh]r7j/)r8}r9(hXgThe EDMA ISR will prepare the audio frame buffer pointers (McASP/EDMA RX buffer) for further processingr:hj4hjhj3h}r;(h]h]h]h]h]uhK6h]r<hXgThe EDMA ISR will prepare the audio frame buffer pointers (McASP/EDMA RX buffer) for further processingr=r>}r?(hj:hj8ubaubaubjX)r@}rA(hX@The EDMA ISR will also send a semaphore to wake up the main taskrBhj$hjhj[h}rC(h]h]h]h]h]uhNhhh]rDj/)rE}rF(hjBhj@hjhj3h}rG(h]h]h]h]h]uhK8h]rHhX@The EDMA ISR will also send a semaphore to wake up the main taskrIrJ}rK(hjBhjEubaubaubjX)rL}rM(hX]When woke up, the main thread will perform the audio de-interleaving to separate the channelshj$hjhj[h}rN(h]h]h]h]h]uhNhhh]rOj/)rP}rQ(hX]When woke up, the main thread will perform the audio de-interleaving to separate the channelsrRhjLhjhj3h}rS(h]h]h]h]h]uhK9h]rThX]When woke up, the main thread will perform the audio de-interleaving to separate the channelsrUrV}rW(hjRhjPubaubaubjX)rX}rY(hXNThe main thread will also output two of eight channels to McASP/EDMA TX bufferhj$hjhj[h}rZ(h]h]h]h]h]uhNhhh]r[j/)r\}r](hXNThe main thread will also output two of eight channels to McASP/EDMA TX bufferr^hjXhjhj3h}r_(h]h]h]h]h]uhK;h]r`hXNThe main thread will also output two of eight channels to McASP/EDMA TX bufferrarb}rc(hj^hj\ubaubaubjX)rd}re(hXCThe McASP/EDMA will send the TX buffer to the on-board audio codec hj$hjhj[h}rf(h]h]h]h]h]uhNhhh]rgj/)rh}ri(hXBThe McASP/EDMA will send the TX buffer to the on-board audio codecrjhjdhjhj3h}rk(h]h]h]h]h]uhK=h]rlhXBThe McASP/EDMA will send the TX buffer to the on-board audio codecrmrn}ro(hjjhjhubaubaubeubjF")rp}rq(hX*How to Build the CMB Library and Unit TestrrhjhjhjJ"h}rs(h]rtU*how-to-build-the-cmb-library-and-unit-testruah]h]h]h]rvh auhNhhh]rwhX*How to Build the CMB Library and Unit Testrxry}rz(hjrhjpubaubjF")r{}r|(hXK2G EVMr}jKhjhjhjJ"h}r~(h]rUid66rah]h]rjӅah]h]uhNhhh]rhXK2G EVMrr}r(hj}hj{ubaubj/)r}r(hX**For Linux:**rhjhjhj3h}r(h]h]h]h]h]uhKEhhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX For Linux:rr}r(hUhjubahj_ubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKGhhh]rjX)r}r(hXDUnder pdk_k2g_1_x_x/packages directory, run the following commands: hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXCUnder pdk_k2g_1_x_x/packages directory, run the following commands:rhjhjhj3h}r(h]h]h]h]h]uhKGh]rhXCUnder pdk_k2g_1_x_x/packages directory, run the following commands:rr}r(hjhjubaubaubaubj)r}r(hXsource ./pdksetupenv.sh make cmb_clean make cmb the libraries will be in pdk_k2g_1_x_x/packages/ti/addon/cmb/lib/k2g/c66/release the OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_1_x_x/packages/ti/addon/cmb/test/evmK2G/analog/loopback/build/makehjhjhjh}r(jjh]h]h]h]h]uhMvhhh]rhXsource ./pdksetupenv.sh make cmb_clean make cmb the libraries will be in pdk_k2g_1_x_x/packages/ti/addon/cmb/lib/k2g/c66/release the OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_1_x_x/packages/ti/addon/cmb/test/evmK2G/analog/loopback/build/makerr}r(hUhjubaubj/)r}r(hX**For Windows:**rhjhjhj3h}r(h]h]h]h]h]uhKShhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX For Windows:rr}r(hUhjubahj_ubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKUhhh]rjX)r}r(hXDUnder pdk_k2g_1_x_x/packages directory, run the following commands: hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXCUnder pdk_k2g_1_x_x/packages directory, run the following commands:rhjhjhj3h}r(h]h]h]h]h]uhKUh]rhXCUnder pdk_k2g_1_x_x/packages directory, run the following commands:rˆrÈ}rĈ(hjhjubaubaubaubj)rň}rƈ(hXpdksetupenv.bat gmake cmb_clean gmake cmb the libraries will be in pdk_k2g_1_x_x\packages\ti\addon\cmb\lib\k2g\c66\release the OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_1_x_x\packages\ti\addon\cmb\test\evmK2G\analog\loopback\build\makehjhjhjh}rLj(jjh]h]h]h]h]uhMhhh]rȈhXpdksetupenv.bat gmake cmb_clean gmake cmb the libraries will be in pdk_k2g_1_x_x\packages\ti\addon\cmb\lib\k2g\c66\release the OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_k2g_1_x_x\packages\ti\addon\cmb\test\evmK2G\analog\loopback\build\makerɈrʈ}rˈ(hUhjňubaubjF")r̈}r͈(hX OMAP-L137 EVMrΈhjhjhjJ"h}rψ(h]rЈUid67rшah]h]h]h]r҈h`auhNhhh]rӈhX OMAP-L137 EVMrԈrՈ}rֈ(hjΈhj̈ubaubj/)r׈}r؈(hX**For Linux:**rوhjhjhj3h}rڈ(h]h]h]h]h]uhKdhhh]rۈjW)r܈}r݈(hjوh}rވ(h]h]h]h]h]uhj׈h]r߈hX For Linux:rr}r(hUhj܈ubahj_ubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKfhhh]rjX)r}r(hXIUnder pdk_omapl137_1_x_x/packages directory, run the following commands: hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXHUnder pdk_omapl137_1_x_x/packages directory, run the following commands:rhjhjhj3h}r(h]h]h]h]h]uhKfh]rhXHUnder pdk_omapl137_1_x_x/packages directory, run the following commands:rr}r(hjhjubaubaubaubj)r}r(hX*source ./pdksetupenv.sh make cmb_clean make cmb the libraries will be in pdk_omapl137_1_x_x/packages/ti/addon/cmb/lib/omapl137/c674/release the OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_omapl137_1_x_x/packages/ti/addon/cmb/test/evmOMAPL137/analog/loopback/build/makehjhjhjh}r(jjh]h]h]h]h]uhMhhh]rhX*source ./pdksetupenv.sh make cmb_clean make cmb the libraries will be in pdk_omapl137_1_x_x/packages/ti/addon/cmb/lib/omapl137/c674/release the OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_omapl137_1_x_x/packages/ti/addon/cmb/test/evmOMAPL137/analog/loopback/build/makerr}r(hUhjubaubj/)r}r(hX**For Windows:**rhjhjhj3h}r(h]h]h]h]h]uhKshhh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX For Windows:rr}r(hUhjubahj_ubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKuhhh]r jX)r }r (hXIUnder pdk_omapl137_1_x_x\packages directory, run the following commands: hjhjhj[h}r (h]h]h]h]h]uhNhhh]r j/)r}r(hXHUnder pdk_omapl137_1_x_x\packages directory, run the following commands:hj hjhj3h}r(h]h]h]h]h]uhKuh]rhXGUnder pdk_omapl137_1_x_xpackages directory, run the following commands:rr}r(hXHUnder pdk_omapl137_1_x_x\packages directory, run the following commands:hjubaubaubaubj)r}r(hX$pdksetupenv.bat gmake cmb_clean gmake cmb the libraries will be in pdk_omapl137_1_x_x\packages\ti\addon\cmb\lib\omapl137\c674\release the OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_omapl137_1_x_x\packages\ti\addon\cmb\test\evmOMAPL137\analog\loopback\build\makehjhjhjh}r(jjh]h]h]h]h]uhMhhh]rhX$pdksetupenv.bat gmake cmb_clean gmake cmb the libraries will be in pdk_omapl137_1_x_x\packages\ti\addon\cmb\lib\omapl137\c674\release the OUT file (audioAnalogLoopbackTest.out) for DSP will be built at pdk_omapl137_1_x_x\packages\ti\addon\cmb\test\evmOMAPL137\analog\loopback\build\makerr}r(hUhjubaubjF")r}r(hXHow to Run the Unit TestrjKhjhjhjJ"h}r(h]r Uid68r!ah]h]r"jCah]h]uhNhhh]r#hXHow to Run the Unit Testr$r%}r&(hjhjubaubj/)r'}r((hXThe unit test will be loaded onto the target using JTAG. After running the unit test, the 2 out of 8 input audio channels from CMB will be output to the line-out of the on-board audio codec.r)hjhjhj3h}r*(h]h]h]h]h]uhKhhh]r+hXThe unit test will be loaded onto the target using JTAG. After running the unit test, the 2 out of 8 input audio channels from CMB will be output to the line-out of the on-board audio codec.r,r-}r.(hj)hj'ubaubj/)r/}r0(hX;The following sections provide detailed steps for each EVM.r1hjhjhj3h}r2(h]h]h]h]h]uhKhhh]r3hX;The following sections provide detailed steps for each EVM.r4r5}r6(hj1hj/ubaubjF")r7}r8(hXK2G EVMr9hjhjhjJ"h}r:(h]r;U k2g-evm-1r<ah]h]h]h]r=hauhNhhh]r>hXK2G EVMr?r@}rA(hj9hj7ubaubjQ)rB}rC(hUhjhjhjTh}rD(jVX-h]h]h]h]h]uhKhhh]rE(jX)rF}rG(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hjBhjhj[h}rH(h]h]h]h]h]uhNhhh]rIj/)rJ}rK(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hjFhjhj3h}rL(h]h]h]h]h]uhKh]rM(hXFollow this link rNrO}rP(hXFollow this link hjJubjZ)rQ}rR(hX):ref:`Processor-SDK-RTOS-Setup-CCS-label`rShjJhjhj^h}rT(UreftypeXrefj j X"processor-sdk-rtos-setup-ccs-labelU refdomainXstdrUh]h]U refexplicith]h]h]j j uhKh]rVjb)rW}rX(hjSh}rY(h]h]rZ(j jUXstd-refr[eh]h]h]uhjQh]r\hX"Processor-SDK-RTOS-Setup-CCS-labelr]r^}r_(hUhjWubahjlubaubhX- to get target configuration setup correctly.r`ra}rb(hX- to get target configuration setup correctly.hjJubeubaubjX)rc}rd(hX?Connect to the on board emulator (J1 on K2G EVM) to your PC USBrehjBhjhj[h}rf(h]h]h]h]h]uhNhhh]rgj/)rh}ri(hjehjchjhj3h}rj(h]h]h]h]h]uhKh]rkhX?Connect to the on board emulator (J1 on K2G EVM) to your PC USBrlrm}rn(hjehjhubaubaubjX)ro}rp(hX=Plug power adaptor(12V) into the K2G EVM and power on the EVMrqhjBhjhj[h}rr(h]h]h]h]h]uhNhhh]rsj/)rt}ru(hjqhjohjhj3h}rv(h]h]h]h]h]uhKh]rwhX=Plug power adaptor(12V) into the K2G EVM and power on the EVMrxry}rz(hjqhjtubaubaubjX)r{}r|(hXSLaunch the ccxml created above using "Launch Selected Configuration" from CCS 6.1.3hjBhjhj[h}r}(h]h]h]h]h]uhNhhh]r~j/)r}r(hXSLaunch the ccxml created above using "Launch Selected Configuration" from CCS 6.1.3rhj{hjhj3h}r(h]h]h]h]h]uhKh]rhXSLaunch the ccxml created above using "Launch Selected Configuration" from CCS 6.1.3rr}r(hjhjubaubaubjX)r}r(hXThen "Connect to C66xx_DSP"rhjBhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXThen "Connect to C66xx_DSP"rr}r(hjhjubaubaubjX)r}r(hXtLoad the audioAnalogLoopbackTest.out from pdk_k2g_1_x_x/packages/ti/addon/cmb/test/evmK2G/analog/loopback/build/makehjBhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXtLoad the audioAnalogLoopbackTest.out from pdk_k2g_1_x_x/packages/ti/addon/cmb/test/evmK2G/analog/loopback/build/makerhjhjhj3h}r(h]h]h]h]h]uhKh]rhXtLoad the audioAnalogLoopbackTest.out from pdk_k2g_1_x_x/packages/ti/addon/cmb/test/evmK2G/analog/loopback/build/makerr}r(hjhjubaubaubjX)r}r(hX2Run the program (loaded previously) by pressing F8rhjBhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX2Run the program (loaded previously) by pressing F8rr}r(hjhjubaubaubjX)r}r(hXjThe program will run the unit test forever, taking the input from CMB and output to the on-board line-out hjBhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXiThe program will run the unit test forever, taking the input from CMB and output to the on-board line-outrhjhjhj3h}r(h]h]h]h]h]uhKh]rhXiThe program will run the unit test forever, taking the input from CMB and output to the on-board line-outrr}r(hjhjubaubaubeubjF")r}r(hX OMAP-L137 EVMrhjhjhjJ"h}r(h]rUomap-l137-evm-1rah]h]h]h]rhauhNhhh]rhX OMAP-L137 EVMrr}r(hjhjubaubjQ)r‰}rÉ(hUhjhjhjTh}rĉ(jVX-h]h]h]h]h]uhKhhh]rʼn(jX)rƉ}rlj(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hj‰hjhj[h}rȉ(h]h]h]h]h]uhNhhh]rɉj/)rʉ}rˉ(hXgFollow this link :ref:`Processor-SDK-RTOS-Setup-CCS-label` to get target configuration setup correctly.hjƉhjhj3h}r̉(h]h]h]h]h]uhKh]r͉(hXFollow this link rΉrω}rЉ(hXFollow this link hjʉubjZ)rщ}r҉(hX):ref:`Processor-SDK-RTOS-Setup-CCS-label`rӉhjʉhjhj^h}rԉ(UreftypeXrefj j X"processor-sdk-rtos-setup-ccs-labelU refdomainXstdrՉh]h]U refexplicith]h]h]j j uhKh]r։jb)r׉}r؉(hjӉh}rى(h]h]rډ(j jՉXstd-refrۉeh]h]h]uhjщh]r܉hX"Processor-SDK-RTOS-Setup-CCS-labelr݉rމ}r߉(hUhj׉ubahjlubaubhX- to get target configuration setup correctly.rr}r(hX- to get target configuration setup correctly.hjʉubeubaubjX)r}r(hXGConnect to the on board emulator (J201 on OMAP-L137 EVM) to your PC USBhj‰hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXGConnect to the on board emulator (J201 on OMAP-L137 EVM) to your PC USBrhjhjhj3h}r(h]h]h]h]h]uhKh]rhXGConnect to the on board emulator (J201 on OMAP-L137 EVM) to your PC USBrr}r(hjhjubaubaubjX)r}r(hXBPlug power adaptor(5V) into the OMAP-L137 EVM and power on the EVMrhj‰hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXBPlug power adaptor(5V) into the OMAP-L137 EVM and power on the EVMrr}r(hjhjubaubaubjX)r}r(hXSLaunch the ccxml created above using "Launch Selected Configuration" from CCS 6.1.3hj‰hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXSLaunch the ccxml created above using "Launch Selected Configuration" from CCS 6.1.3rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXSLaunch the ccxml created above using "Launch Selected Configuration" from CCS 6.1.3rr}r(hjhjubaubaubjX)r}r(hXThen "Connect to C674X_0"r hj‰hjhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hj hjhjhj3h}r(h]h]h]h]h]uhKh]rhXThen "Connect to C674X_0"rr}r(hj hj ubaubaubjX)r}r(hX~Load the audioAnalogLoopbackTest.out from pdk_omapl137_1_x_x/packages/ti/addon/cmb/test/evmOMAPL137/analog/loopback/build/makehj‰hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX~Load the audioAnalogLoopbackTest.out from pdk_omapl137_1_x_x/packages/ti/addon/cmb/test/evmOMAPL137/analog/loopback/build/makerhjhjhj3h}r(h]h]h]h]h]uhKh]rhX~Load the audioAnalogLoopbackTest.out from pdk_omapl137_1_x_x/packages/ti/addon/cmb/test/evmOMAPL137/analog/loopback/build/makerr}r(hjhjubaubaubjX)r}r (hX2Run the program (loaded previously) by pressing F8r!hj‰hjhj[h}r"(h]h]h]h]h]uhNhhh]r#j/)r$}r%(hj!hjhjhj3h}r&(h]h]h]h]h]uhKh]r'hX2Run the program (loaded previously) by pressing F8r(r)}r*(hj!hj$ubaubaubjX)r+}r,(hXjThe program will run the unit test forever, taking the input from CMB and output to the on-board line-out hj‰hjhj[h}r-(h]h]h]h]h]uhNhhh]r.j/)r/}r0(hXiThe program will run the unit test forever, taking the input from CMB and output to the on-board line-outr1hj+hjhj3h}r2(h]h]h]h]h]uhKh]r3hXiThe program will run the unit test forever, taking the input from CMB and output to the on-board line-outr4r5}r6(hj1hj/ubaubaubeubj)r7}r8(hUhjhjhjh}r9(h]h]h]h]h]uhKhhh]r:j)r;}r<(hUjKhj7hjhhh}r=(h]h]h]h]h]uhKhhh]ubaubeubhjhjJ"h}r>(h]r?jah]h]r@jah]h]uhNhhh]rAhX IntroductionrBrC}rD(hjhjubaubh]rEj/)rF}rG(hX/Duplicate explicit target name: "introduction".h}rH(h]h]h]h]h]uhj݆h]rIhX/Duplicate explicit target name: "introduction".rJrK}rL(hUhjFubahj3ubahj>ubj)rM}rN(hUh}rO(h]UlevelKh]h]rPjaUsourcehh]h]UlineKKUtypejY&uhjh]rQj/)rR}rS(hX/Duplicate explicit target name: "requirements".h}rT(h]h]h]h]h]uhjMh]rUhX/Duplicate explicit target name: "requirements".rVrW}rX(hUhjRubahj3ubahj>ubj)rY}rZ(hUh}r[(h]UlevelKh]h]r\jaUsourcehh]h]UlineKKUtypejY&uhj{h]r]j/)r^}r_(hX*Duplicate explicit target name: "k2g-evm".h}r`(h]h]h]h]h]uhjYh]rahX*Duplicate explicit target name: "k2g-evm".rbrc}rd(hUhj^ubahj3ubahj>ubj)re}rf(hUh}rg(h]UlevelKh]h]rhj!aUsourcehh]h]UlineKKUtypejY&uhjh]rij/)rj}rk(hX;Duplicate explicit target name: "how-to-run-the-unit-test".h}rl(h]h]h]h]h]uhjeh]rmhX;Duplicate explicit target name: "how-to-run-the-unit-test".rnro}rp(hUhjjubahj3ubahj>ubj)rq}rr(hUhjhXPinternal padding after source/rtos/Examples_and_Demonstrations/CMB_AddOn.rst.incrshj>h}rt(h]UlevelKh]h]Usourcejh]h]UlineKUtypejfuhKhhh]ru(j/)rv}rw(hX;Content block expected for the "raw" directive; none found.h}rx(h]h]h]h]h]uhjqh]ryhX;Content block expected for the "raw" directive; none found.rzr{}r|(hUhjvubahj3ubj)r}}r~(hX.. raw:: html h}r(jjh]h]h]h]h]uhjqh]rhX.. raw:: html rr}r(hUhj}ubahjubeubj)r}r(hUhh)r}r(hUjKhh)r}r(hUhhhhhhh}r(h]h]h]h]rUsimplelink-wifi-demorah]rhDauhKQhhh]r(h)r}r(hXSimpleLink WiFi Demorhjhhhhh}r(h]h]h]h]h]uhKQhhh]rhXSimpleLink WiFi Demorr}r(hjhjubaubj)r}r(hX$.. _Demo-SimpleLink-WiFi-Demo-label:hjhhhjh}r(h]h]h]h]rUdemo-simplelink-wifi-demo-labelrah]rhauhMhhh]ubj )r}r(hXOhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_SimpleLink_WiFi_Demohjhj XDsource/rtos/Examples_and_Demonstrations/SimpleLink_WiFi_Demo.rst.incrr}rbhjh}r(jjh]h]h]h]h]uhKhhh]rhXOhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_SimpleLink_WiFi_Demorr}r(hUhjubaubjh)r}r(hUhjhjhhh}r(h]h]h]h]rUsupported-platformsrah]rh7auhKhhh]r(h)r}r(hXSupported platformsrhjhjhhh}r(h]h]h]h]h]uhKhhh]rhXSupported platformsrr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]rjX)r}r(hXiceAMIC110 ( A8 ) hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXiceAMIC110 ( A8 )rhjhjhj3h}r(h]h]h]h]h]uhKh]rŠhXiceAMIC110 ( A8 )rÊrĊ}rŊ(hjhjubaubaubaubeubh)rƊ}rNJ(hUjKhjhjhhh}rȊ(h]rɊX requirementsrʊah]h]h]rˊUid70r̊ah]uhKhhh]r͊(h)rΊ}rϊ(hX RequirementsrЊhjƊhjhhh}rъ(h]h]h]h]h]uhKhhh]rҊhX RequirementsrӊrԊ}rՊ(hjЊhjΊubaubj/)r֊}r׊(hX.Following are required to run the application:r؊hjƊhjhj3h}rي(h]h]h]h]h]uhKhhh]rڊhX.Following are required to run the application:rۊr܊}r݊(hj؊hj֊ubaubj/)rފ}rߊ(hXHardwarerhjƊhjhj3h}r(h]h]h]h]h]uhKhhh]rhXHardwarerr}r(hjhjފubaubjQ)r}r(hUhjƊhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]r(jX)r}r(hXTI CC3120 BoosterPackrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXTI CC3120 BoosterPackrr}r(hjhjubaubaubjX)r}r(hXTI EVM (see list above)rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXTI EVM (see list above)rr}r(hjhjubaubaubjX)r}r(hX,Blue wires between CC3120 BP and AMIC110 ICErhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r (h]h]h]h]h]uhKh]r hX,Blue wires between CC3120 BP and AMIC110 ICEr r }r (hjhjubaubaubjX)r}r(hX'Serial UART cable (provided in EVM kit)rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX'Serial UART cable (provided in EVM kit)rr}r(hjhjubaubaubjX)r}r(hXConnection Diagramrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r (hjhjhjhj3h}r!(h]h]h]h]h]uhKh]r"hXConnection Diagramr#r$}r%(hjhjubaubaubeubj)r&}r'(hX0.. Image:: ../images/sl_wifi_demo_connection.jpgr(hjƊhjhjh}r)(UuriX*rtos/../images/sl_wifi_demo_connection.jpgr*h]h]h]h]j}r+U*j*sh]uhKhhh]ubjQ)r,}r-(hUhjƊhjhjTh}r.(jVX-h]h]h]h]h]uhK hhh]r/jX)r0}r1(hXPicture of connected EVMsr2hj,hjhj[h}r3(h]h]h]h]h]uhNhhh]r4j/)r5}r6(hj2hj0hjhj3h}r7(h]h]h]h]h]uhK h]r8hXPicture of connected EVMsr9r:}r;(hj2hj5ubaubaubaubj)r<}r=(hX0.. Image:: ../images/sl_wifi_demo_connected.jpg hjƊhjhjh}r>(UuriX)rtos/../images/sl_wifi_demo_connected.jpgr?h]h]h]h]j}r@U*j?sh]uhK"hhh]ubj/)rA}rB(hXSoftwarerChjƊhjhj3h}rD(h]h]h]h]h]uhK#hhh]rEhXSoftwarerFrG}rH(hjChjAubaubjQ)rI}rJ(hUhjƊhjhjTh}rK(jVX-h]h]h]h]h]uhK%hhh]rL(jX)rM}rN(hX"Processor-SDK RTOS 5.1.0 and laterrOhjIhjhj[h}rP(h]h]h]h]h]uhNhhh]rQj/)rR}rS(hjOhjMhjhj3h}rT(h]h]h]h]h]uhK%h]rUhX"Processor-SDK RTOS 5.1.0 and laterrVrW}rX(hjOhjRubaubaubjX)rY}rZ(hX$Code Composer Studio 8.0 and later hjIhjhj[h}r[(h]h]h]h]h]uhNhhh]r\j/)r]}r^(hX"Code Composer Studio 8.0 and laterr_hjYhjhj3h}r`(h]h]h]h]h]uhK&h]rahX"Code Composer Studio 8.0 and laterrbrc}rd(hj_hj]ubaubaubeubeubh)re}rf(hUjKhjhjhhh}rg(h]rhXcomponents usedriah]h]h]rjUid71rkah]uhK*hhh]rl(h)rm}rn(hXComponents Usedrohjehjhhh}rp(h]h]h]h]h]uhK*hhh]rqhXComponents Usedrrrs}rt(hjohjmubaubj/)ru}rv(hXRTOS Components:rwhjehjhj3h}rx(h]h]h]h]h]uhK,hhh]ryhXRTOS Components:rzr{}r|(hjwhjuubaubjQ)r}}r~(hUhjehjhjTh}r(jVX-h]h]h]h]h]uhK.hhh]r(jX)r}r(hXSYS/BIOSrhj}hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK.h]rhXSYS/BIOSrr}r(hjhjubaubaubjX)r}r(hXXDCToolsrhj}hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK/h]rhXXDCToolsrr}r(hjhjubaubaubjX)r}r(hX@Processor SDK RTOS PDK: SPI, UART, GPIO LLDs, OSAL, Board etc. hj}hjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX>Processor SDK RTOS PDK: SPI, UART, GPIO LLDs, OSAL, Board etc.rhjhjhj3h}r(h]h]h]h]h]uhK0h]rhX>Processor SDK RTOS PDK: SPI, UART, GPIO LLDs, OSAL, Board etc.rr}r(hjhjubaubaubeubeubh)r}r(hUjKhjhjhhh}r(h]rXsoftware designrah]h]h]rUid72rah]uhK4hhh]r(h)r}r(hXSoftware Designrhjhjhhh}r(h]h]h]h]h]uhK4hhh]rhXSoftware Designrr}r(hjhjubaubj/)r}r(hXThe demo implemented a network terminal application to illustrate how the SimpleLink WiFi Plugin for Processor SDK RTOS can be used to provide a low cost solution for Sitara devies (AM3/4/5). The AMIC110 ICE and CC3120 BoosterPack are connected via SPI and GPIO pins. The SPI interface will provide The data and command channels for SimpleLink WiFi Plugin, while the GPIO pins are providing the INT and RESET signals.rhjhjhj3h}r(h]h]h]h]h]uhK6hhh]rhXThe demo implemented a network terminal application to illustrate how the SimpleLink WiFi Plugin for Processor SDK RTOS can be used to provide a low cost solution for Sitara devies (AM3/4/5). The AMIC110 ICE and CC3120 BoosterPack are connected via SPI and GPIO pins. The SPI interface will provide The data and command channels for SimpleLink WiFi Plugin, while the GPIO pins are providing the INT and RESET signals.rr}r(hjhjubaubj/)r}r(hX5The following diagram shows the overview of the demo:rhjhjhj3h}r(h]h]h]h]h]uhK=hhh]rhX5The following diagram shows the overview of the demo:r‹rË}rċ(hjhjubaubj)rŋ}rƋ(hX0.. Image:: ../images/sl_wifi_demo_overview.jpg hjhjhjh}rNj(UuriX(rtos/../images/sl_wifi_demo_overview.jpgrȋh]h]h]h]j}rɋU*jȋsh]uhKAhhh]ubj/)rʋ}rˋ(hX*The source files are organized as follows:r̋hjhjhj3h}r͋(h]h]h]h]h]uhKBhhh]r΋hX*The source files are organized as follows:rϋrЋ}rы(hj̋hjʋubaubj)rҋ}rӋ(hX└── simplelink-wifi-demo ├── bin --> Folder for the executables ├── examples --> Demo source code, projectspec file and makefile ├── lib --> Folder for SimpleLink WiFi Plugin liraray ├── source --> Folder for SimpleLink WiFi Plugin sourcehjhjhjh}rԋ(jjh]h]h]h]h]uhM(hhh]rՋhX└── simplelink-wifi-demo ├── bin --> Folder for the executables ├── examples --> Demo source code, projectspec file and makefile ├── lib --> Folder for SimpleLink WiFi Plugin liraray ├── source --> Folder for SimpleLink WiFi Plugin sourcer֋r׋}r؋(hUhjҋubaubeubh)rً}rڋ(hUhjhjhhh}rۋ(h]h]h]h]r܋U6how-to-build-the-simplelink-wifi-plugin-demo-using-ccsr݋ah]rދhgauhKNhhh]rߋ(h)r}r(hX6How to Build the SimpleLink WiFi Plugin Demo using CCSrhjًhjhhh}r(h]h]h]h]h]uhKNhhh]rhX6How to Build the SimpleLink WiFi Plugin Demo using CCSrr}r(hjhjubaubj/)r}r(hXDPlease follow below step by step procedure to build the application.rhjًhjhj3h}r(h]h]h]h]h]uhKPhhh]rhXDPlease follow below step by step procedure to build the application.rr}r(hjhjubaubj)r}r(hUhjًhjhjh}r(jU.h]h]h]jUh]h]jjuhKRhhh]r(jX)r}r(hXInstall Code Composer Studio.rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKRh]rhXInstall Code Composer Studio.rr}r(hjhjubaubaubjX)r}r(hXInstall Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default $HOME/ti or c:/ti) Refer :ref:`Processor SDK RTOS Getting Started Guide ` for details.hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXInstall Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default $HOME/ti or c:/ti) Refer :ref:`Processor SDK RTOS Getting Started Guide ` for details.hjhjhj3h}r(h]h]h]h]h]uhKSh]r(hXInstall Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default $HOME/ti or c:/ti) Refer rr }r (hXInstall Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default $HOME/ti or c:/ti) Refer hjubjZ)r }r (hX`:ref:`Processor SDK RTOS Getting Started Guide `r hjhjhj^h}r(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrh]h]U refexplicith]h]h]j j uhKSh]rjb)r}r(hj h}r(h]h]r(j jXstd-refreh]h]h]uhj h]rhX(Processor SDK RTOS Getting Started Guiderr}r(hUhjubahjlubaubhX for details.rr}r(hX for details.hjubeubaubjX)r}r(hX Open CCS:rhjhjhj[h}r (h]h]h]h]h]uhNhhh]r!j/)r"}r#(hjhjhjhj3h}r$(h]h]h]h]h]uhKWh]r%hX Open CCS:r&r'}r((hjhj"ubaubaubjX)r)}r*(hXClick Project-->Import CCS Projects and select network_terminal_AMIC110_ICE_RTOS_ccs under directory : processor_sdk_rtos__/demos/simplelink-wifi-demo/hjhjhj[h}r+(h]h]h]h]h]uhNhhh]r,j/)r-}r.(hXClick Project-->Import CCS Projects and select network_terminal_AMIC110_ICE_RTOS_ccs under directory : processor_sdk_rtos__/demos/simplelink-wifi-demo/r/hj)hjhj3h}r0(h]h]h]h]h]uhKXh]r1hXClick Project-->Import CCS Projects and select network_terminal_AMIC110_ICE_RTOS_ccs under directory : processor_sdk_rtos__/demos/simplelink-wifi-demo/r2r3}r4(hj/hj-ubaubaubjX)r5}r6(hX^Build the application . ( By right clicking on imported project and clicking "Build project") hjhjhj[h}r7(h]h]h]h]h]uhNhhh]r8j/)r9}r:(hX]Build the application . ( By right clicking on imported project and clicking "Build project")r;hj5hjhj3h}r<(h]h]h]h]h]uhK[h]r=hX]Build the application . ( By right clicking on imported project and clicking "Build project")r>r?}r@(hj;hj9ubaubaubeubj))rA}rB(hXThis will create executable binary under /network_terminal_AMIC110_ICE_RTOS_RTOS_ccs/Debug/network_terminal_AMIC110_ICE_RTOS_RTOS_ccs.outrChjًhjhj,h}rD(h]h]h]h]h]uhNhhh]rEj/)rF}rG(hjChjAhjhj3h}rH(h]h]h]h]h]uhK_h]rIhXThis will create executable binary under /network_terminal_AMIC110_ICE_RTOS_RTOS_ccs/Debug/network_terminal_AMIC110_ICE_RTOS_RTOS_ccs.outrJrK}rL(hjChjFubaubaubj)rM}rN(hX2.. Image:: ../images/sl_wifi_demo_ccs_import.jpg hjًhjhjh}rO(UuriX*rtos/../images/sl_wifi_demo_ccs_import.jpgrPh]h]h]h]j}rQU*jPsh]uhKchhh]ubeubh)rR}rS(hUhjhjhhh}rT(h]h]h]h]rUUFhow-to-build-the-simplelink-wifi-plugin-demo-using-makefile-on-windowsrVah]rWh}auhKehhh]rX(h)rY}rZ(hXFHow to Build the SimpleLink WiFi Plugin Demo using makefile on Windowsr[hjRhjhhh}r\(h]h]h]h]h]uhKehhh]r]hXFHow to Build the SimpleLink WiFi Plugin Demo using makefile on Windowsr^r_}r`(hj[hjYubaubj/)ra}rb(hXDPlease follow below step by step procedure to build the application.rchjRhjhj3h}rd(h]h]h]h]h]uhKghhh]rehXDPlease follow below step by step procedure to build the application.rfrg}rh(hjchjaubaubj)ri}rj(hUhjRhjhjh}rk(jU.h]h]h]jUh]h]jjuhKihhh]rl(jX)rm}rn(hXInstall Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default c:/ti) Refer :ref:`Processor SDK RTOS Getting Started Guide ` for details.hjihjhj[h}ro(h]h]h]h]h]uhNhhh]rpj/)rq}rr(hXInstall Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default c:/ti) Refer :ref:`Processor SDK RTOS Getting Started Guide ` for details.hjmhjhj3h}rs(h]h]h]h]h]uhKih]rt(hXyInstall Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default c:/ti) Refer rurv}rw(hXyInstall Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default c:/ti) Refer hjqubjZ)rx}ry(hX`:ref:`Processor SDK RTOS Getting Started Guide `rzhjqhjhj^h}r{(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdr|h]h]U refexplicith]h]h]j j uhKih]r}jb)r~}r(hjzh}r(h]h]r(j j|Xstd-refreh]h]h]uhjxh]rhX(Processor SDK RTOS Getting Started Guiderr}r(hUhj~ubahjlubaubhX for details.rr}r(hX for details.hjqubeubaubjX)r}r(hXUnder DOS command prompt type:rhjihjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKmh]rhXUnder DOS command prompt type:rr}r(hjhjubaubaubjX)r}r(hX2cd processor_sdk_rtos__/ folderrhjihjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKnh]rhX2cd processor_sdk_rtos__/ folderrr}r(hjhjubaubaubjX)r}r(hX setupenv.batrhjihjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKoh]rhX setupenv.batrr}r(hjhjubaubaubjX)r}r(hXcd processor_sdk_rtos__/demos/simplelink-wifi-demo/examples\rtos/AMIC110_ICE/demos/network_terminal/tirtos/ccsrhjihjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKph]rhXcd processor_sdk_rtos__/demos/simplelink-wifi-demo/examplesrtos/AMIC110_ICE/demos/network_terminal/tirtos/ccsrr}r(hXcd processor_sdk_rtos__/demos/simplelink-wifi-demo/examples\rtos/AMIC110_ICE/demos/network_terminal/tirtos/ccshjubaubaubjX)r}r(hX gmake cleanrhjihjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKqh]rŒhX gmake cleanrÌrČ}rŌ(hjhjubaubaubjX)rƌ}rnj(hX gmake allrȌhjihjhj[h}rɌ(h]h]h]h]h]uhNhhh]rʌj/)rˌ}ř(hjȌhjƌhjhj3h}r͌(h]h]h]h]h]uhKrh]rΌhX gmake allrόrЌ}rь(hjȌhjˌubaubaubjX)rҌ}rӌ(hXjThe executable binary will be generated under processor_sdk_rtos__/demos/simplelink-wifi-demo/examples\rtos/AMIC110_ICE/demos/network_terminal/tirtos/ccs and The executable network_terminal.out, boot image files network_terminal.bin and app will be under processor_sdk_rtos__/demos/simplelink-wifi-demo/bin/am335x/a8/debug hjihjhj[h}rԌ(h]h]h]h]h]uhNhhh]rՌj/)r֌}r׌(hXhThe executable binary will be generated under processor_sdk_rtos__/demos/simplelink-wifi-demo/examples\rtos/AMIC110_ICE/demos/network_terminal/tirtos/ccs and The executable network_terminal.out, boot image files network_terminal.bin and app will be under processor_sdk_rtos__/demos/simplelink-wifi-demo/bin/am335x/a8/debughjҌhjhj3h}r،(h]h]h]h]h]uhKsh]rٌhXgThe executable binary will be generated under processor_sdk_rtos__/demos/simplelink-wifi-demo/examplesrtos/AMIC110_ICE/demos/network_terminal/tirtos/ccs and The executable network_terminal.out, boot image files network_terminal.bin and app will be under processor_sdk_rtos__/demos/simplelink-wifi-demo/bin/am335x/a8/debugrڌrی}r܌(hXhThe executable binary will be generated under processor_sdk_rtos__/demos/simplelink-wifi-demo/examples\rtos/AMIC110_ICE/demos/network_terminal/tirtos/ccs and The executable network_terminal.out, boot image files network_terminal.bin and app will be under processor_sdk_rtos__/demos/simplelink-wifi-demo/bin/am335x/a8/debughj֌ubaubaubeubeubh)r݌}rތ(hUhjhjhhh}rߌ(h]h]h]h]rUDhow-to-build-the-simplelink-wifi-plugin-demo-using-makefile-on-linuxrah]rh.auhKzhhh]r(h)r}r(hXDHow to Build the SimpleLink WiFi Plugin Demo using makefile on Linuxrhj݌hjhhh}r(h]h]h]h]h]uhKzhhh]rhXDHow to Build the SimpleLink WiFi Plugin Demo using makefile on Linuxrr}r(hjhjubaubj/)r}r(hXDPlease follow below step by step procedure to build the application.rhj݌hjhj3h}r(h]h]h]h]h]uhK|hhh]rhXDPlease follow below step by step procedure to build the application.rr}r(hjhjubaubj)r}r(hUhj݌hjhjh}r(jU.h]h]h]jUh]h]jjuhK~hhh]r(jX)r}r(hXInstall Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default $HOME/ti) Refer :ref:`Processor SDK RTOS Getting Started Guide ` for details.hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXInstall Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default $HOME/ti) Refer :ref:`Processor SDK RTOS Getting Started Guide ` for details.hjhjhj3h}r(h]h]h]h]h]uhK~h]r(hX|Install Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default $HOME/ti) Refer rr}r(hX|Install Processor SDK RTOS for the respective platform needed, in a location where CCS expects: (by default $HOME/ti) Refer hjubjZ)r}r(hX`:ref:`Processor SDK RTOS Getting Started Guide `rhjhjhj^h}r(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrh]h]U refexplicith]h]h]j j uhK~h]rjb)r }r (hjh}r (h]h]r (j jXstd-refr eh]h]h]uhjh]rhX(Processor SDK RTOS Getting Started Guiderr}r(hUhj ubahjlubaubhX for details.rr}r(hX for details.hjubeubaubjX)r}r(hX Under Linux command prompt type:rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX Under Linux command prompt type:rr}r (hjhjubaubaubjX)r!}r"(hX2cd processor_sdk_rtos__/ folderr#hjhjhj[h}r$(h]h]h]h]h]uhNhhh]r%j/)r&}r'(hj#hj!hjhj3h}r((h]h]h]h]h]uhKh]r)hX2cd processor_sdk_rtos__/ folderr*r+}r,(hj#hj&ubaubaubjX)r-}r.(hXsource setupenv.shr/hjhjhj[h}r0(h]h]h]h]h]uhNhhh]r1j/)r2}r3(hj/hj-hjhj3h}r4(h]h]h]h]h]uhKh]r5hXsource setupenv.shr6r7}r8(hj/hj2ubaubaubjX)r9}r:(hXcd processor_sdk_rtos__/demos/simplelink-wifi-demo/examples\rtos/AMIC110_ICE/demos/network_terminal/tirtos/ccsr;hjhjhj[h}r<(h]h]h]h]h]uhNhhh]r=j/)r>}r?(hj;hj9hjhj3h}r@(h]h]h]h]h]uhKh]rAhXcd processor_sdk_rtos__/demos/simplelink-wifi-demo/examplesrtos/AMIC110_ICE/demos/network_terminal/tirtos/ccsrBrC}rD(hXcd processor_sdk_rtos__/demos/simplelink-wifi-demo/examples\rtos/AMIC110_ICE/demos/network_terminal/tirtos/ccshj>ubaubaubjX)rE}rF(hX make cleanrGhjhjhj[h}rH(h]h]h]h]h]uhNhhh]rIj/)rJ}rK(hjGhjEhjhj3h}rL(h]h]h]h]h]uhKh]rMhX make cleanrNrO}rP(hjGhjJubaubaubjX)rQ}rR(hXmake allrShjhjhj[h}rT(h]h]h]h]h]uhNhhh]rUj/)rV}rW(hjShjQhjhj3h}rX(h]h]h]h]h]uhKh]rYhXmake allrZr[}r\(hjShjVubaubaubjX)r]}r^(hXThe executable binary will be generated under processor_sdk_rtos__/demos/simplelink-wifi-demo/examples\rtos/AMIC110_ICE/demos/network_terminal/tirtos/ccs hjhjhj[h}r_(h]h]h]h]h]uhNhhh]r`j/)ra}rb(hXThe executable binary will be generated under processor_sdk_rtos__/demos/simplelink-wifi-demo/examples\rtos/AMIC110_ICE/demos/network_terminal/tirtos/ccshj]hjhj3h}rc(h]h]h]h]h]uhKh]rdhXThe executable binary will be generated under processor_sdk_rtos__/demos/simplelink-wifi-demo/examplesrtos/AMIC110_ICE/demos/network_terminal/tirtos/ccsrerf}rg(hXThe executable binary will be generated under processor_sdk_rtos__/demos/simplelink-wifi-demo/examples\rtos/AMIC110_ICE/demos/network_terminal/tirtos/ccshjaubaubaubeubeubh)rh}ri(hUhjhjhhh}rj(h]h]h]h]rkU4how-to-run-the-simplelink-wifi-plugin-demo-using-ccsrlah]rmhauhKhhh]rn(h)ro}rp(hX4How to Run the SimpleLink WiFi Plugin Demo using CCSrqhjhhjhhh}rr(h]h]h]h]h]uhKhhh]rshX4How to Run the SimpleLink WiFi Plugin Demo using CCSrtru}rv(hjqhjoubaubj/)rw}rx(hXYou will need the following:ryhjhhjhj3h}rz(h]h]h]h]h]uhKhhh]r{hXYou will need the following:r|r}}r~(hjyhjwubaubj)r}r(hUhjhhjhjh}r(jU.h]h]h]jUh]h]jjuhKhhh]r(jX)r}r(hXInstall Code Composer Studio to load and run the Template Application. Refer to :ref:`Processor SDK RTOS Getting Started Guide ` for installing CCS.hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXInstall Code Composer Studio to load and run the Template Application. Refer to :ref:`Processor SDK RTOS Getting Started Guide ` for installing CCS.hjhjhj3h}r(h]h]h]h]h]uhKh]r(hXPInstall Code Composer Studio to load and run the Template Application. Refer to rr}r(hXPInstall Code Composer Studio to load and run the Template Application. Refer to hjubjZ)r}r(hX`:ref:`Processor SDK RTOS Getting Started Guide `rhjhjhj^h}r(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrh]h]U refexplicith]h]h]j j uhKh]rjb)r}r(hjh}r(h]h]r(j jXstd-refreh]h]h]uhjh]rhX(Processor SDK RTOS Getting Started Guiderr}r(hUhjubahjlubaubhX for installing CCS.rr}r(hX for installing CCS.hjubeubaubjX)r}r(hXAMIC110 ICE boardrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXAMIC110 ICE boardrr}r(hjhjubaubaubjX)r}r(hXJTAG Emulator hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX JTAG Emulatorrhjhjhj3h}r(h]h]h]h]h]uhKh]rhX JTAG Emulatorrr}r(hjhjubaubaubeubj/)r}r(hX,To load and run SimpleLink WiFi Plugin Demo:rhjhhjhj3h}r(h]h]h]h]h]uhKhhh]rhX,To load and run SimpleLink WiFi Plugin Demo:rr}r(hjhjubaubj)r}r(hUhjhhjhjh}r(jU.h]h]h]jUh]h]jjuhKhhh]rÍ(jX)rč}rō(hXKConnect the computer to the JTAG port on the board using the JTAG emulator.hjhjhj[h}rƍ(h]h]h]h]h]uhNhhh]rǍj/)rȍ}rɍ(hXKConnect the computer to the JTAG port on the board using the JTAG emulator.rʍhjčhjhj3h}rˍ(h]h]h]h]h]uhKh]r̍hXKConnect the computer to the JTAG port on the board using the JTAG emulator.r͍r΍}rύ(hjʍhjȍubaubaubjX)rЍ}rэ(hXhPower on the EVM/board. Ensure that no boot mode is entered (do not have SD card loaded or QSPI flashed)hjhjhj[h}rҍ(h]h]h]h]h]uhNhhh]rӍj/)rԍ}rՍ(hXhPower on the EVM/board. Ensure that no boot mode is entered (do not have SD card loaded or QSPI flashed)r֍hjЍhjhj3h}r׍(h]h]h]h]h]uhKh]r؍hXhPower on the EVM/board. Ensure that no boot mode is entered (do not have SD card loaded or QSPI flashed)rٍrڍ}rۍ(hj֍hjԍubaubaubjX)r܍}rݍ(hXOpen up a serial terminal for UART communication (Refer to :ref:`Processor SDK RTOS Getting Started Guide `, setup EVM hardware)hjhjhj[h}rލ(h]h]h]h]h]uhNhhh]rߍj/)r}r(hXOpen up a serial terminal for UART communication (Refer to :ref:`Processor SDK RTOS Getting Started Guide `, setup EVM hardware)hj܍hjhj3h}r(h]h]h]h]h]uhKh]r(hX;Open up a serial terminal for UART communication (Refer to rr}r(hX;Open up a serial terminal for UART communication (Refer to hjubjZ)r}r(hX`:ref:`Processor SDK RTOS Getting Started Guide `rhjhjhj^h}r(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrh]h]U refexplicith]h]h]j j uhKh]rjb)r}r(hjh}r(h]h]r(j jXstd-refreh]h]h]uhjh]rhX(Processor SDK RTOS Getting Started Guiderr}r(hUhjubahjlubaubhX, setup EVM hardware)rr}r(hX, setup EVM hardware)hjubeubaubjX)r}r(hXOpen CCS and launch target config file for the EVM (Refer to `Processor SDK RTOS Setup CCS `__ for setting up CCS)hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXOpen CCS and launch target config file for the EVM (Refer to `Processor SDK RTOS Setup CCS `__ for setting up CCS)hjhjhj3h}r(h]h]h]h]h]uhKh]r(hX=Open CCS and launch target config file for the EVM (Refer to rr}r(hX=Open CCS and launch target config file for the EVM (Refer to hjubj)r}r(hXd`Processor SDK RTOS Setup CCS `__h}r(UnameXProcessor SDK RTOS Setup CCSjXAindex_how_to_guides.html#setup-ccs-for-evm-and-processor-sdk-rtosh]h]h]h]h]uhjh]rhXProcessor SDK RTOS Setup CCSrr }r (hUhjubahjubhX for setting up CCS)r r }r (hX for setting up CCS)hjubeubaubjX)r}r(hXSConnect to the primary core to make sure on connect gels are run A8 core for AM335xhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXSConnect to the primary core to make sure on connect gels are run A8 core for AM335xrhjhjhj3h}r(h]h]h]h]h]uhKh]rhXSConnect to the primary core to make sure on connect gels are run A8 core for AM335xrr}r(hjhjubaubaubjX)r}r(hXRConnect to core where the application is expected to run, if not the primary core.rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r (hjhjhjhj3h}r!(h]h]h]h]h]uhKh]r"hXRConnect to core where the application is expected to run, if not the primary core.r#r$}r%(hjhjubaubaubjX)r&}r'(hXLoad executable by clicking("Run --> Load --> Load Program.). Click on Browse Project and select outfile under: /network_terminal_AMIC110_ICE_RTOS_RTOS_ccs/Debug/network_terminal_AMIC110_ICE_RTOS_RTOS_ccs.outhjhjhj[h}r((h]h]h]h]h]uhNhhh]r)j/)r*}r+(hXLoad executable by clicking("Run --> Load --> Load Program.). Click on Browse Project and select outfile under: /network_terminal_AMIC110_ICE_RTOS_RTOS_ccs/Debug/network_terminal_AMIC110_ICE_RTOS_RTOS_ccs.outr,hj&hjhj3h}r-(h]h]h]h]h]uhKh]r.hXLoad executable by clicking("Run --> Load --> Load Program.). Click on Browse Project and select outfile under: /network_terminal_AMIC110_ICE_RTOS_RTOS_ccs/Debug/network_terminal_AMIC110_ICE_RTOS_RTOS_ccs.outr/r0}r1(hj,hj*ubaubaubjX)r2}r3(hXERun application by clicking the Run icon. ( Or Click Run --> Resume) hjhjhj[h}r4(h]h]h]h]h]uhNhhh]r5j/)r6}r7(hXDRun application by clicking the Run icon. ( Or Click Run --> Resume)r8hj2hjhj3h}r9(h]h]h]h]h]uhKh]r:hXDRun application by clicking the Run icon. ( Or Click Run --> Resume)r;r<}r=(hj8hj6ubaubaubeubj/)r>}r?(hXKNow the network terminal demo will run and print progress through the UART.r@hjhhjhj3h}rA(h]h]h]h]h]uhKhhh]rBhXKNow the network terminal demo will run and print progress through the UART.rCrD}rE(hj@hj>ubaubjQ)rF}rG(hUhjhhjhjTh}rH(jVX-h]h]h]h]h]uhKhhh]rIjX)rJ}rK(hXThe inital display on the UARTrLhjFhjhj[h}rM(h]h]h]h]h]uhNhhh]rNj/)rO}rP(hjLhjJhjhj3h}rQ(h]h]h]h]h]uhKh]rRhXThe inital display on the UARTrSrT}rU(hjLhjOubaubaubaubj)rV}rW(hX0.. Image:: ../images/sl_wifi_demo_uart_init.jpg hjhhjhjh}rX(UuriX)rtos/../images/sl_wifi_demo_uart_init.jpgrYh]h]h]h]j}rZU*jYsh]uhKhhh]ubjQ)r[}r\(hUhjhhjhjTh}r](jVX-h]h]h]h]h]uhKhhh]r^jX)r_}r`(hXEnter "help" at UART promptrahj[hjhj[h}rb(h]h]h]h]h]uhNhhh]rcj/)rd}re(hjahj_hjhj3h}rf(h]h]h]h]h]uhKh]rghXEnter "help" at UART promptrhri}rj(hjahjdubaubaubaubj)rk}rl(hX0.. Image:: ../images/sl_wifi_demo_uart_help.jpg hjhhjhjh}rm(UuriX)rtos/../images/sl_wifi_demo_uart_help.jpgrnh]h]h]h]j}roU*jnsh]uhKhhh]ubjQ)rp}rq(hUhjhhjhjTh}rr(jVX-h]h]h]h]h]uhKhhh]rsjX)rt}ru(hX!Enter "scan -n 10" at UART promptrvhjphjhj[h}rw(h]h]h]h]h]uhNhhh]rxj/)ry}rz(hjvhjthjhj3h}r{(h]h]h]h]h]uhKh]r|hX!Enter "scan -n 10" at UART promptr}r~}r(hjvhjyubaubaubaubj)r}r(hX0.. Image:: ../images/sl_wifi_demo_uart_scan.jpg hjhhjhjh}r(UuriX)rtos/../images/sl_wifi_demo_uart_scan.jpgrh]h]h]h]j}rU*jsh]uhKhhh]ubjQ)r}r(hUhjhhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]rjX)r}r(hXJEnter " wlanconnect -s "dir645" -t WPA/WPA2 -p "12345678" " at UART promptrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXJEnter " wlanconnect -s "dir645" -t WPA/WPA2 -p "12345678" " at UART promptrr}r(hjhjubaubaubaubj)r}r(hX7.. Image:: ../images/sl_wifi_demo_uart_wlanconnect.jpg hjhhjhjh}r(UuriX0rtos/../images/sl_wifi_demo_uart_wlanconnect.jpgrh]h]h]h]j}rU*jsh]uhKhhh]ubjQ)r}r(hUhjhhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]rjX)r}r(hX'Enter "ping 192.168.0.1" at UART promptrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX'Enter "ping 192.168.0.1" at UART promptrr}r(hjhjubaubaubaubj)r}r(hX0.. Image:: ../images/sl_wifi_demo_uart_ping.jpg hjhhjhjh}r(UuriX)rtos/../images/sl_wifi_demo_uart_ping.jpgrh]h]h]h]j}rU*jsh]uhKhhh]ubj))r}r(hXThis demo uses the D-Link DIR-645 wirless router with DHCP server. "dir645" is its SSID. "12345678" is its connection password. "192.168.0.1" is its default gateway. Users should adjust those parameters according to their own wireless routers.hjhhjhj,h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXThis demo uses the D-Link DIR-645 wirless router with DHCP server. "dir645" is its SSID. "12345678" is its connection password. "192.168.0.1" is its default gateway. Users should adjust those parameters according to their own wireless routers.rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXThis demo uses the D-Link DIR-645 wirless router with DHCP server. "dir645" is its SSID. "12345678" is its connection password. "192.168.0.1" is its default gateway. Users should adjust those parameters according to their own wireless routers.rr}r(hjhjubaubaubeubh)r}r(hUhjhjhhh}r(h]h]h]h]rU:how-to-run-the-simplelink-wifi-plugin-demo-using-uart-bootrah]rhauhKhhh]r(h)rŽ}rÎ(hX:How to Run the SimpleLink WiFi Plugin Demo using UART BootrĎhjhjhhh}rŎ(h]h]h]h]h]uhKhhh]rƎhX:How to Run the SimpleLink WiFi Plugin Demo using UART BootrǎrȎ}rɎ(hjĎhjŽubaubj/)rʎ}rˎ(hX,To load and run SimpleLink WiFi Plugin Demo:r̎hjhjhj3h}r͎(h]h]h]h]h]uhKhhh]rΎhX,To load and run SimpleLink WiFi Plugin Demo:rώrЎ}rю(hj̎hjʎubaubj)rҎ}rӎ(hUhjhjhjh}rԎ(jU.h]h]h]jUh]h]jjuhKhhh]rՎ(jX)r֎}r׎(hXAConnect the J3 to the USB port on a PC via the UART to USB cable.r؎hjҎhjhj[h}rَ(h]h]h]h]h]uhNhhh]rڎj/)rێ}r܎(hj؎hj֎hjhj3h}rݎ(h]h]h]h]h]uhKh]rގhXAConnect the J3 to the USB port on a PC via the UART to USB cable.rߎr}r(hj؎hjێubaubaubjX)r}r(hXPower on the EVM/board.rhjҎhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXPower on the EVM/board.rr}r(hjhjubaubaubjX)r}r(hXOpen up a serial terminal for UART communication (Refer to :ref:`Processor SDK RTOS Getting Started Guide `, setup EVM hardware)hjҎhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXOpen up a serial terminal for UART communication (Refer to :ref:`Processor SDK RTOS Getting Started Guide `, setup EVM hardware)hjhjhj3h}r(h]h]h]h]h]uhKh]r(hX;Open up a serial terminal for UART communication (Refer to rr}r(hX;Open up a serial terminal for UART communication (Refer to hjubjZ)r}r(hX`:ref:`Processor SDK RTOS Getting Started Guide `rhjhjhj^h}r(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrh]h]U refexplicith]h]h]j j uhKh]rjb)r}r(hjh}r(h]h]r(j jXstd-refreh]h]h]uhjh]rhX(Processor SDK RTOS Getting Started Guiderr}r(hUhjubahjlubaubhX, setup EVM hardware)rr }r (hX, setup EVM hardware)hjubeubaubjX)r }r (hXSend the bootloader_boot_uart_a8host_debug.bin under pdk__/packages/ti/starterware/binary/bootloader/bin/am335x-evm/gcc using the XMODEM.hjҎhjhj[h}r (h]h]h]h]h]uhNhhh]rj/)r}r(hXSend the bootloader_boot_uart_a8host_debug.bin under pdk__/packages/ti/starterware/binary/bootloader/bin/am335x-evm/gcc using the XMODEM.rhj hjhj3h}r(h]h]h]h]h]uhKh]rhXSend the bootloader_boot_uart_a8host_debug.bin under pdk__/packages/ti/starterware/binary/bootloader/bin/am335x-evm/gcc using the XMODEM.rr}r(hjhjubaubaubeubj)r}r(hX).. Image:: ../images/sl_uart_boot_1st.jpgrhjhjhjh}r(UuriX#rtos/../images/sl_uart_boot_1st.jpgrh]h]h]h]j}rU*jsh]uhKhhh]ubj)r}r(hUhjhjhjh}r(jU.h]h]h]jUh]h]jjuhKhhh]r jX)r!}r"(hXUpon completion, then send the network_terminal.bin under processor_sdk_rtos__/demos/simplelink-wifi-demo/bin/am335x/a8/debug using the XMODEM.hjhjhj[h}r#(h]h]h]h]h]uhNhhh]r$j/)r%}r&(hXUpon completion, then send the network_terminal.bin under processor_sdk_rtos__/demos/simplelink-wifi-demo/bin/am335x/a8/debug using the XMODEM.r'hj!hjhj3h}r((h]h]h]h]h]uhKh]r)hXUpon completion, then send the network_terminal.bin under processor_sdk_rtos__/demos/simplelink-wifi-demo/bin/am335x/a8/debug using the XMODEM.r*r+}r,(hj'hj%ubaubaubaubj)r-}r.(hX*.. Image:: ../images/sl_uart_boot_2nd.jpg hjhjhjh}r/(UuriX#rtos/../images/sl_uart_boot_2nd.jpgr0h]h]h]h]j}r1U*j0sh]uhKhhh]ubj/)r2}r3(hXKNow the network terminal demo will run and print progress through the UART.r4hjhjhj3h}r5(h]h]h]h]h]uhKhhh]r6hXKNow the network terminal demo will run and print progress through the UART.r7r8}r9(hj4hj2ubaubjQ)r:}r;(hUhjhjhjTh}r<(jVX-h]h]h]h]h]uhKhhh]r=jX)r>}r?(hXThe inital display on the UARTr@hj:hjhj[h}rA(h]h]h]h]h]uhNhhh]rBj/)rC}rD(hj@hj>hjhj3h}rE(h]h]h]h]h]uhKh]rFhXThe inital display on the UARTrGrH}rI(hj@hjCubaubaubaubj)rJ}rK(hX0.. Image:: ../images/sl_wifi_demo_uart_init.jpg hjhjhjh}rL(UuriX)rtos/../images/sl_wifi_demo_uart_init.jpgrMh]h]h]h]j}rNU*jMsh]uhKhhh]ubjQ)rO}rP(hUhjhjhjTh}rQ(jVX-h]h]h]h]h]uhKhhh]rRjX)rS}rT(hXEnter "help" at UART promptrUhjOhjhj[h}rV(h]h]h]h]h]uhNhhh]rWj/)rX}rY(hjUhjShjhj3h}rZ(h]h]h]h]h]uhKh]r[hXEnter "help" at UART promptr\r]}r^(hjUhjXubaubaubaubj)r_}r`(hX0.. Image:: ../images/sl_wifi_demo_uart_help.jpg hjhjhjh}ra(UuriX)rtos/../images/sl_wifi_demo_uart_help.jpgrbh]h]h]h]j}rcU*jbsh]uhKhhh]ubjQ)rd}re(hUhjhjhjTh}rf(jVX-h]h]h]h]h]uhKhhh]rgjX)rh}ri(hX!Enter "scan -n 10" at UART promptrjhjdhjhj[h}rk(h]h]h]h]h]uhNhhh]rlj/)rm}rn(hjjhjhhjhj3h}ro(h]h]h]h]h]uhKh]rphX!Enter "scan -n 10" at UART promptrqrr}rs(hjjhjmubaubaubaubj)rt}ru(hX0.. Image:: ../images/sl_wifi_demo_uart_scan.jpg hjhjhjh}rv(UuriX)rtos/../images/sl_wifi_demo_uart_scan.jpgrwh]h]h]h]j}rxU*jwsh]uhKhhh]ubjQ)ry}rz(hUhjhjhjTh}r{(jVX-h]h]h]h]h]uhKhhh]r|jX)r}}r~(hXJEnter " wlanconnect -s "dir645" -t WPA/WPA2 -p "12345678" " at UART promptrhjyhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhj}hjhj3h}r(h]h]h]h]h]uhKh]rhXJEnter " wlanconnect -s "dir645" -t WPA/WPA2 -p "12345678" " at UART promptrr}r(hjhjubaubaubaubj)r}r(hX7.. Image:: ../images/sl_wifi_demo_uart_wlanconnect.jpg hjhjhjh}r(UuriX0rtos/../images/sl_wifi_demo_uart_wlanconnect.jpgrh]h]h]h]j}rU*jsh]uhKhhh]ubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhKhhh]rjX)r}r(hX'Enter "ping 192.168.0.1" at UART promptrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX'Enter "ping 192.168.0.1" at UART promptrr}r(hjhjubaubaubaubj)r}r(hX0.. Image:: ../images/sl_wifi_demo_uart_ping.jpg hjhjhjh}r(UuriX)rtos/../images/sl_wifi_demo_uart_ping.jpgrh]h]h]h]j}rU*jsh]uhKhhh]ubj))r}r(hXThis demo uses the D-Link DIR-645 wirless router with DHCP server. "dir645" is its SSID. "12345678" is its connection password. "192.168.0.1" is its default gateway. Users should adjust those parameters according to their own wireless routers.hjhjhj,h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXThis demo uses the D-Link DIR-645 wirless router with DHCP server. "dir645" is its SSID. "12345678" is its connection password. "192.168.0.1" is its default gateway. Users should adjust those parameters according to their own wireless routers.rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXThis demo uses the D-Link DIR-645 wirless router with DHCP server. "dir645" is its SSID. "12345678" is its connection password. "192.168.0.1" is its default gateway. Users should adjust those parameters according to their own wireless routers.rr}r(hjhjubaubaubeubeubhjhhh}r(h]rXoverviewrah]h]h]rUid69rah]uhKhhh]r(h)r}r(hXOverviewrhjhjhhh}r(h]h]h]h]h]uhKhhh]rhXOverviewrr}r(hjhjubaubj/)r}r(hXThis page describes the SimpleLink WiFi Demo provided in the Processor-SDK for RTOS. This demo illustrates the integration of CC3120 BoosterPack and AMIC110 ICE using components in the SDK to provides a low cost WiFi solution for application development.rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhXThis page describes the SimpleLink WiFi Demo provided in the Processor-SDK for RTOS. This demo illustrates the integration of CC3120 BoosterPack and AMIC110 ICE using components in the SDK to provides a low cost WiFi solution for application development.rrÏ}rď(hjhjubaubeubhjhj>h}rŏ(h]UlevelKh]h]rƏjaUsourcejh]h]UlineKUtypejAuhKhhh]rǏj/)rȏ}rɏ(hX+Duplicate implicit target name: "overview".h}rʏ(h]h]h]h]h]uhjh]rˏhX+Duplicate implicit target name: "overview".ȑr͏}rΏ(hUhjȏubahj3ubaubj)rϏ}rЏ(hUhjƊhjhj>h}rя(h]UlevelKh]h]rҏj̊aUsourcejh]h]UlineKUtypejAuhKhhh]rӏj/)rԏ}rՏ(hX/Duplicate implicit target name: "requirements".h}r֏(h]h]h]h]h]uhjϏh]r׏hX/Duplicate implicit target name: "requirements".r؏rُ}rڏ(hUhjԏubahj3ubaubj)rۏ}r܏(hUhjƊhjhj>h}rݏ(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]rޏj/)rߏ}r(hX;Bullet list ends without a blank line; unexpected unindent.h}r(h]h]h]h]h]uhjۏh]rhX;Bullet list ends without a blank line; unexpected unindent.rr}r(hUhjߏubahj3ubaubj)r}r(hUhjƊhjhj>h}r(h]UlevelKh]h]Usourcejh]h]UlineK UtypejY&uhKhhh]rj/)r}r(hX?Explicit markup ends without a blank line; unexpected unindent.h}r(h]h]h]h]h]uhjh]rhX?Explicit markup ends without a blank line; unexpected unindent.rr}r(hUhjubahj3ubaubj)r}r(hUhjƊhjhj>h}r(h]UlevelKh]h]Usourcejh]h]UlineK!UtypejY&uhK hhh]rj/)r}r(hX;Bullet list ends without a blank line; unexpected unindent.h}r(h]h]h]h]h]uhjh]rhX;Bullet list ends without a blank line; unexpected unindent.rr}r(hUhjubahj3ubaubj)r}r(hUhjehjhj>h}r(h]UlevelKh]h]rjkaUsourcejh]h]UlineK*UtypejAuhK*hhh]rj/)r}r(hX2Duplicate implicit target name: "components used".h}r(h]h]h]h]h]uhjh]rhX2Duplicate implicit target name: "components used".rr}r(hUhjubahj3ubaubj)r}r (hUhjhjhj>h}r (h]UlevelKh]h]r jaUsourcejh]h]UlineK4UtypejAuhK4hhh]r j/)r }r(hX2Duplicate implicit target name: "software design".h}r(h]h]h]h]h]uhjh]rhX2Duplicate implicit target name: "software design".rr}r(hUhj ubahj3ubaubj)r}r(hUh}r(h]UlevelKh]h]Usourcejh]h]UlineKNUtypejY&uh]r(j/)r}r(hUh}r(h]h]h]h]h]uhjh]rhXTitle underline too short.rr}r(hUhjubahj3ubj)r}r (hX\How to Build the SimpleLink WiFi Plugin Demo using CCS =====================================h}r!(jjh]h]h]h]h]uhjh]r"hX\How to Build the SimpleLink WiFi Plugin Demo using CCS =====================================r#r$}r%(hUhjubahjubehj>ubj)r&}r'(hUhjًhjhj>h}r((h]UlevelKh]h]Usourcejh]h]UlineKNUtypejY&uhKNhhh]r)(j/)r*}r+(hXTitle underline too short.h}r,(h]h]h]h]h]uhj&h]r-hXTitle underline too short.r.r/}r0(hUhj*ubahj3ubj)r1}r2(hX\How to Build the SimpleLink WiFi Plugin Demo using CCS =====================================h}r3(jjh]h]h]h]h]uhj&h]r4hX\How to Build the SimpleLink WiFi Plugin Demo using CCS =====================================r5r6}r7(hUhj1ubahjubeubj)r8}r9(hUh}r:(h]UlevelKh]h]Usourcejh]h]UlineKeUtypejY&uh]r;(j/)r<}r=(hUh}r>(h]h]h]h]h]uhj8h]r?hXTitle underline too short.r@rA}rB(hUhj<ubahj3ubj)rC}rD(hXlHow to Build the SimpleLink WiFi Plugin Demo using makefile on Windows =====================================h}rE(jjh]h]h]h]h]uhj8h]rFhXlHow to Build the SimpleLink WiFi Plugin Demo using makefile on Windows =====================================rGrH}rI(hUhjCubahjubehj>ubj)rJ}rK(hUhjRhjhj>h}rL(h]UlevelKh]h]Usourcejh]h]UlineKeUtypejY&uhKehhh]rM(j/)rN}rO(hXTitle underline too short.h}rP(h]h]h]h]h]uhjJh]rQhXTitle underline too short.rRrS}rT(hUhjNubahj3ubj)rU}rV(hXlHow to Build the SimpleLink WiFi Plugin Demo using makefile on Windows =====================================h}rW(jjh]h]h]h]h]uhjJh]rXhXlHow to Build the SimpleLink WiFi Plugin Demo using makefile on Windows =====================================rYrZ}r[(hUhjUubahjubeubj)r\}r](hUh}r^(h]UlevelKh]h]Usourcejh]h]UlineKzUtypejY&uh]r_(j/)r`}ra(hUh}rb(h]h]h]h]h]uhj\h]rchXTitle underline too short.rdre}rf(hUhj`ubahj3ubj)rg}rh(hXjHow to Build the SimpleLink WiFi Plugin Demo using makefile on Linux =====================================h}ri(jjh]h]h]h]h]uhj\h]rjhXjHow to Build the SimpleLink WiFi Plugin Demo using makefile on Linux =====================================rkrl}rm(hUhjgubahjubehj>ubj)rn}ro(hUhj݌hjhj>h}rp(h]UlevelKh]h]Usourcejh]h]UlineKzUtypejY&uhKzhhh]rq(j/)rr}rs(hXTitle underline too short.h}rt(h]h]h]h]h]uhjnh]ruhXTitle underline too short.rvrw}rx(hUhjrubahj3ubj)ry}rz(hXjHow to Build the SimpleLink WiFi Plugin Demo using makefile on Linux =====================================h}r{(jjh]h]h]h]h]uhjnh]r|hXjHow to Build the SimpleLink WiFi Plugin Demo using makefile on Linux =====================================r}r~}r(hUhjyubahjubeubj)r}r(hUh}r(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uh]r(j/)r}r(hUh}r(h]h]h]h]h]uhjh]rhXTitle underline too short.rr}r(hUhjubahj3ubj)r}r(hXXHow to Run the SimpleLink WiFi Plugin Demo using CCS ===================================h}r(jjh]h]h]h]h]uhjh]rhXXHow to Run the SimpleLink WiFi Plugin Demo using CCS ===================================rr}r(hUhjubahjubehj>ubj)r}r(hUhjhhjhj>h}r(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]r(j/)r}r(hXTitle underline too short.h}r(h]h]h]h]h]uhjh]rhXTitle underline too short.rr}r(hUhjubahj3ubj)r}r(hXXHow to Run the SimpleLink WiFi Plugin Demo using CCS ===================================h}r(jjh]h]h]h]h]uhjh]rhXXHow to Run the SimpleLink WiFi Plugin Demo using CCS ===================================rr}r(hUhjubahjubeubj)r}r(hUhjhhjhj>h}r(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]rj/)r}r(hX;Bullet list ends without a blank line; unexpected unindent.h}r(h]h]h]h]h]uhjh]rhX;Bullet list ends without a blank line; unexpected unindent.rr}r(hUhjubahj3ubaubj)r}r(hUhjhhjhj>h}r(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]rj/)r}r(hX;Bullet list ends without a blank line; unexpected unindent.h}r(h]h]h]h]h]uhjh]rhX;Bullet list ends without a blank line; unexpected unindent.rr}r(hUhjubahj3ubaubj)r}r(hUhjhhjhj>h}r(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]rj/)r}r(hX;Bullet list ends without a blank line; unexpected unindent.h}r(h]h]h]h]h]uhjh]rhX;Bullet list ends without a blank line; unexpected unindent.rrÐ}rĐ(hUhjubahj3ubaubj)rŐ}rƐ(hUhjhhjhj>h}rǐ(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]rȐj/)rɐ}rʐ(hX;Bullet list ends without a blank line; unexpected unindent.h}rː(h]h]h]h]h]uhjŐh]r̐hX;Bullet list ends without a blank line; unexpected unindent.r͐rΐ}rϐ(hUhjɐubahj3ubaubj)rА}rѐ(hUhjhhjhj>h}rҐ(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]rӐj/)rԐ}rՐ(hX;Bullet list ends without a blank line; unexpected unindent.h}r֐(h]h]h]h]h]uhjАh]rאhX;Bullet list ends without a blank line; unexpected unindent.rؐrِ}rڐ(hUhjԐubahj3ubaubj)rې}rܐ(hUh}rݐ(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uh]rސ(j/)rߐ}r(hUh}r(h]h]h]h]h]uhjېh]rhXTitle underline too short.rr}r(hUhjߐubahj3ubj)r}r(hX^How to Run the SimpleLink WiFi Plugin Demo using UART Boot ===================================h}r(jjh]h]h]h]h]uhjېh]rhX^How to Run the SimpleLink WiFi Plugin Demo using UART Boot ===================================rr}r(hUhjubahjubehj>ubj)r}r(hUhjhjhj>h}r(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]r(j/)r}r(hXTitle underline too short.h}r(h]h]h]h]h]uhjh]rhXTitle underline too short.rr}r(hUhjubahj3ubj)r}r(hX^How to Run the SimpleLink WiFi Plugin Demo using UART Boot ===================================h}r(jjh]h]h]h]h]uhjh]rhX^How to Run the SimpleLink WiFi Plugin Demo using UART Boot ===================================rr}r(hUhjubahjubeubj)r}r(hUhjhjhj>h}r(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]rj/)r}r(hX?Enumerated list ends without a blank line; unexpected unindent.h}r(h]h]h]h]h]uhjh]rhX?Enumerated list ends without a blank line; unexpected unindent.rr}r (hUhjubahj3ubaubj)r }r (hUhjhjhj>h}r (h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]r j/)r}r(hX?Explicit markup ends without a blank line; unexpected unindent.h}r(h]h]h]h]h]uhj h]rhX?Explicit markup ends without a blank line; unexpected unindent.rr}r(hUhjubahj3ubaubj)r}r(hUhjhjhj>h}r(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]rj/)r}r(hX?Enumerated list ends without a blank line; unexpected unindent.h}r(h]h]h]h]h]uhjh]rhX?Enumerated list ends without a blank line; unexpected unindent.rr}r(hUhjubahj3ubaubj)r }r!(hUhjhjhj>h}r"(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]r#j/)r$}r%(hX;Bullet list ends without a blank line; unexpected unindent.h}r&(h]h]h]h]h]uhj h]r'hX;Bullet list ends without a blank line; unexpected unindent.r(r)}r*(hUhj$ubahj3ubaubj)r+}r,(hUhjhjhj>h}r-(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]r.j/)r/}r0(hX;Bullet list ends without a blank line; unexpected unindent.h}r1(h]h]h]h]h]uhj+h]r2hX;Bullet list ends without a blank line; unexpected unindent.r3r4}r5(hUhj/ubahj3ubaubj)r6}r7(hUhjhjhj>h}r8(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]r9j/)r:}r;(hX;Bullet list ends without a blank line; unexpected unindent.h}r<(h]h]h]h]h]uhj6h]r=hX;Bullet list ends without a blank line; unexpected unindent.r>r?}r@(hUhj:ubahj3ubaubj)rA}rB(hUhjhjhj>h}rC(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]rDj/)rE}rF(hX;Bullet list ends without a blank line; unexpected unindent.h}rG(h]h]h]h]h]uhjAh]rHhX;Bullet list ends without a blank line; unexpected unindent.rIrJ}rK(hUhjEubahj3ubaubj)rL}rM(hUhjhjhj>h}rN(h]UlevelKh]h]Usourcejh]h]UlineKUtypejY&uhKhhh]rOj/)rP}rQ(hX;Bullet list ends without a blank line; unexpected unindent.h}rR(h]h]h]h]h]uhjLh]rShX;Bullet list ends without a blank line; unexpected unindent.rTrU}rV(hUhjPubahj3ubaubj)rW}rX(hUhjhX[internal padding after source/rtos/Examples_and_Demonstrations/SimpleLink_WiFi_Demo.rst.incrYhj>h}rZ(h]UlevelKh]h]Usourcejh]h]UlineKUtypejfuhKhhh]r[(j/)r\}r](hX;Content block expected for the "raw" directive; none found.h}r^(h]h]h]h]h]uhjWh]r_hX;Content block expected for the "raw" directive; none found.r`ra}rb(hUhj\ubahj3ubj)rc}rd(hX.. raw:: html h}re(jjh]h]h]h]h]uhjWh]rfhX.. raw:: html rgrh}ri(hUhjcubahjubeubj)rj}rk(hUhh)rl}rm(hUjKhh)rn}ro(hUhhhhhhh}rp(h]h]h]h]rqUcan-eth-gatway-demorrah]rshauhKWhhh]rt(h)ru}rv(hXCAN-Eth Gatway Demorwhjnhhhhh}rx(h]h]h]h]h]uhKWhhh]ryhXCAN-Eth Gatway Demorzr{}r|(hjwhjuubaubj )r}}r~(hXOhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_CAN_Eth_Gateway_Demohjnhj XDsource/rtos/Examples_and_Demonstrations/Can_Eth_Gateway_Demo.rst.incrr}rbhjh}r(jjh]h]h]h]h]uhKhhh]rhXOhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_CAN_Eth_Gateway_Demorr}r(hUhj}ubaubjlh)r}r(hUjKhjnhjhhh}r(h]rj6ah]h]h]rUid74rah]uhKhhh]r(h)r}r(hXArchitecture Overviewrhjhjhhh}r(h]h]h]h]h]uhKhhh]rhXArchitecture Overviewrr}r(hjhjubaubj/)r}r(hXDThe following block diagram shows the various functional blocks & the data flow used in the gateway application. As shown in the diagram the PC Ethernet applications are used for transmitting & receiving the Ethernet frames from/to PC, similarly for CAN message reception & transmission, any compatible CAN tool can be used.rhjhjhj3h}r(h]h]h]h]h]uhKhhh]rhXDThe following block diagram shows the various functional blocks & the data flow used in the gateway application. As shown in the diagram the PC Ethernet applications are used for transmitting & receiving the Ethernet frames from/to PC, similarly for CAN message reception & transmission, any compatible CAN tool can be used.rr}r(hjhjubaubj)r}r(hX.. Image:: ../images/can-eth-gateway.png :height: 1000px :width: 1500px :scale: 50 % :alt: can-to-eth data flow :align: center hjhjhjh}r(UscaleK2UwidthX1500pxUalignXcenterUuriX"rtos/../images/can-eth-gateway.pngrh]h]h]h]j}rU*jsh]Ualtj Xcan-to-eth data flowrr}rbUheightX1000pxuhNhhh]ubeubh)r}r(hUjKhjnhjhhh}r(h]rjZah]h]h]rUid75rah]uhK"hhh]r(h)r}r(hXSoftware Featuresrhjhjhhh}r(h]h]h]h]h]uhK"hhh]rhXSoftware Featuresrr}r(hjhjubaubjQ)r}r(hUhjhjhjTh}r(jVX-h]h]h]h]h]uhK$hhh]r(jX)r}r(hX2Routing application for CAN to Eth and Eth to CAN.rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK$h]rhX2Routing application for CAN to Eth and Eth to CAN.r‘rÑ}rđ(hjhjubaubaubjX)rő}rƑ(hX.Network APIs for creating TCP/IP applications.rǑhjhjhj[h}rȑ(h]h]h]h]h]uhNhhh]rɑj/)rʑ}rˑ(hjǑhjőhjhj3h}ȓ(h]h]h]h]h]uhK%h]r͑hX.Network APIs for creating TCP/IP applications.rΑrϑ}rБ(hjǑhjʑubaubaubjX)rё}rґ(hXCPU load benchmark utils. hjhjhj[h}rӑ(h]h]h]h]h]uhNhhh]rԑj/)rՑ}r֑(hXCPU load benchmark utils.rבhjёhjhj3h}rؑ(h]h]h]h]h]uhK&h]rّhXCPU load benchmark utils.rڑrۑ}rܑ(hjבhjՑubaubaubeubeubh)rݑ}rޑ(hUjKhjnhjhhh}rߑ(h]rjah]h]h]rUid76rah]uhK)hhh]r(h)r}r(hXDirectory Structurerhjݑhjhhh}r(h]h]h]h]h]uhK)hhh]rhXDirectory Structurerr}r(hjhjubaubj/)r}r(hX^The CAN_ETH Gateway demo is located in the Processor SDK RTOS release under the directory pathrhjݑhjhj3h}r(h]h]h]h]h]uhK+hhh]rhX^The CAN_ETH Gateway demo is located in the Processor SDK RTOS release under the directory pathrr}r(hjhjubaubj)r}r(hXY[SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gatewayhjݑhjhjh}r(jjh]h]h]h]h]uhMhhh]rhXY[SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gatewayrr}r(hUhjubaubj/)r}r(hX?Detailed description of the directory structure is given below:rhjݑhjhj3h}r(h]h]h]h]h]uhK2hhh]rhX?Detailed description of the directory structure is given below:rr}r(hjhjubaubjQ)r}r(hUhjݑhjhjTh}r(jVX-h]h]h]h]h]uhK4hhh]r(jX)r}r(hXGoutput - directory contains prebuilt out file and PC tools executables.r hjhjhj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hj hjhjhj3h}r(h]h]h]h]h]uhK4h]rhXGoutput - directory contains prebuilt out file and PC tools executables.rr}r(hj hj ubaubaubjX)r}r(hXVbuild - directory contains makefiles and SYSBIOS configuration, linker files for buildrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhK5h]rhXVbuild - directory contains makefiles and SYSBIOS configuration, linker files for buildrr}r(hjhjubaubaubjX)r}r (hX.pctools - directory contains Ethernet PC toolsr!hjhjhj[h}r"(h]h]h]h]h]uhNhhh]r#j/)r$}r%(hj!hjhjhj3h}r&(h]h]h]h]h]uhK6h]r'hX.pctools - directory contains Ethernet PC toolsr(r)}r*(hj!hj$ubaubaubjX)r+}r,(hXDsrc - Source files for gateway application, utils and network APIs. hjhjhj[h}r-(h]h]h]h]h]uhNhhh]r.j/)r/}r0(hXCsrc - Source files for gateway application, utils and network APIs.r1hj+hjhj3h}r2(h]h]h]h]h]uhK7h]r3hXCsrc - Source files for gateway application, utils and network APIs.r4r5}r6(hj1hj/ubaubaubeubj))r7}r8(hXe* Only Linux PC tools pre-built binaries are provided. For Windows, user needs to build it locally.hjݑhNhj,h}r9(h]h]h]h]h]uhNhhh]r:jQ)r;}r<(hUh}r=(jVX*h]h]h]h]h]uhj7h]r>jX)r?}r@(hXaOnly Linux PC tools pre-built binaries are provided. For Windows, user needs to build it locally.h}rA(h]h]h]h]h]uhj;h]rBj/)rC}rD(hXaOnly Linux PC tools pre-built binaries are provided. For Windows, user needs to build it locally.rEhj?hjhj3h}rF(h]h]h]h]h]uhK;h]rGhXaOnly Linux PC tools pre-built binaries are provided. For Windows, user needs to build it locally.rHrI}rJ(hjEhjCubaubahj[ubahjTubaubeubh)rK}rL(hUjKhjnhjhhh}rM(h]rNXcomponents usedrOah]h]h]rPUid77rQah]uhK?hhh]rR(h)rS}rT(hXComponents UsedrUhjKhjhhh}rV(h]h]h]h]h]uhK?hhh]rWhXComponents UsedrXrY}rZ(hjUhjSubaubj/)r[}r\(hXRTOS Components:r]hjKhjhj3h}r^(h]h]h]h]h]uhKAhhh]r_hXRTOS Components:r`ra}rb(hj]hj[ubaubjQ)rc}rd(hUhjKhjhjTh}re(jVX-h]h]h]h]h]uhKChhh]rf(jX)rg}rh(hXSYSBIOSrihjchjhj[h}rj(h]h]h]h]h]uhNhhh]rkj/)rl}rm(hjihjghjhj3h}rn(h]h]h]h]h]uhKCh]rohXSYSBIOSrprq}rr(hjihjlubaubaubjX)rs}rt(hXXDCruhjchjhj[h}rv(h]h]h]h]h]uhNhhh]rwj/)rx}ry(hjuhjshjhj3h}rz(h]h]h]h]h]uhKDh]r{hXXDCr|r}}r~(hjuhjxubaubaubjX)r}r(hXNDK hjchjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXNDKrhjhjhj3h}r(h]h]h]h]h]uhKEh]rhXNDKrr}r(hjhjubaubaubeubj/)r}r(hXProcessor SDK RTOS Drivers:rhjKhjhj3h}r(h]h]h]h]h]uhKGhhh]rhXProcessor SDK RTOS Drivers:rr}r(hjhjubaubjQ)r}r(hUhjKhjhjTh}r(jVX-h]h]h]h]h]uhKIhhh]r(jX)r}r(hXEMACrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKIh]rhXEMACrr}r(hjhjubaubaubjX)r}r(hXNIMUrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKJh]rhXNIMUrr}r(hjhjubaubaubjX)r}r(hXUARTrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKKh]rhXUARTrr}r(hjhjubaubaubjX)r}r(hXBoardrhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r’(h]h]h]h]h]uhKLh]rÒhXBoardrĒrŒ}rƒ(hjhjubaubaubjX)rǒ}rȒ(hXOSALrɒhjhjhj[h}rʒ(h]h]h]h]h]uhNhhh]r˒j/)r̒}r͒(hjɒhjǒhjhj3h}rΒ(h]h]h]h]h]uhKMh]rϒhXOSALrВrђ}rҒ(hjɒhj̒ubaubaubjX)rӒ}rԒ(hXCSLrՒhjhjhj[h}r֒(h]h]h]h]h]uhNhhh]rגj/)rؒ}rْ(hjՒhjӒhjhj3h}rڒ(h]h]h]h]h]uhKNh]rےhXCSLrܒrݒ}rޒ(hjՒhjؒubaubaubjX)rߒ}r(hXudmarhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjߒhjhj3h}r(h]h]h]h]h]uhKOh]rhXudmarr}r(hjhjubaubaubjX)r}r(hX sciclient hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX sciclientrhjhjhj3h}r(h]h]h]h]h]uhKPh]rhX sciclientrr}r(hjhjubaubaubeubeubh)r}r(hUjKhjnhjhhh}r(h]rjSvah]h]h]rUid78rah]uhKShhh]r(h)r}r(hXBuilding the Demorhjhjhhh}r(h]h]h]h]h]uhKShhh]rhXBuilding the Demorr}r(hjhjubaubj/)r}r(hXThe demo application is built using makefile. Also the demo is available pre-built for Processor SDK RTOS version 5.3.0.0 or higher.rhjhjhj3h}r (h]h]h]h]h]uhKUhhh]r hXThe demo application is built using makefile. Also the demo is available pre-built for Processor SDK RTOS version 5.3.0.0 or higher.r r }r (hjhjubaubj/)r}r(hXYou must first set up your development environment. Refer to the `Processor SDK RTOS Building `__ page for information on setting up your build environment.hjhjhj3h}r(h]h]h]h]h]uhKXhhh]r(hXAYou must first set up your development environment. Refer to the rr}r(hXAYou must first set up your development environment. Refer to the hjubj)r}r(hXF`Processor SDK RTOS Building `__h}r(UnameXProcessor SDK RTOS BuildingjX$index_overview.html#building-the-sdkh]h]h]h]h]uhjh]rhXProcessor SDK RTOS Buildingrr}r(hUhjubahjubhX; page for information on setting up your build environment.rr}r(hX; page for information on setting up your build environment.hjubeubj/)r}r (hX*The following are steps to clean the demo:r!hjhjhj3h}r"(h]h]h]h]h]uhK\hhh]r#hX*The following are steps to clean the demo:r$r%}r&(hj!hjubaubj)r'}r((hX~cd [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/build make clean BOARD=am65xx_idkhjhjhjh}r)(jjh]h]h]h]h]uhM6hhh]r*hX~cd [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/build make clean BOARD=am65xx_idkr+r,}r-(hUhj'ubaubj/)r.}r/(hX,The following are steps to compile the demo:r0hjhjhj3h}r1(h]h]h]h]h]uhKchhh]r2hX,The following are steps to compile the demo:r3r4}r5(hj0hj.ubaubj)r6}r7(hX|cd [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/build make all BOARD=am65xx_idkhjhjhjh}r8(jjh]h]h]h]h]uhM=hhh]r9hX|cd [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/build make all BOARD=am65xx_idkr:r;}r<(hUhj6ubaubeubh)r=}r>(hUhjnhjhhh}r?(h]h]h]h]r@Uhost-applicationsrAah]rBhauhKkhhh]rC(h)rD}rE(hXHost ApplicationsrFhj=hjhhh}rG(h]h]h]h]h]uhKkhhh]rHhXHost ApplicationsrIrJ}rK(hjFhjDubaubj/)rL}rM(hXThe PC tools for Ethernet reception and transmission are located under pctools directory. These tools can be built for Linux and Windows. ::hj=hjhj3h}rN(h]h]h]h]h]uhKmhhh]rOhXThe PC tools for Ethernet reception and transmission are located under pctools directory. These tools can be built for Linux and Windows.rPrQ}rR(hXThe PC tools for Ethernet reception and transmission are located under pctools directory. These tools can be built for Linux and Windows.hjLubaubj)rS}rT(hXmcd [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/pctools make allhj=hjhjh}rU(jjh]h]h]h]h]uhMGhhh]rVhXmcd [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/pctools make allrWrX}rY(hUhjSubaubeubh)rZ}r[(hUjKhjnhjhhh}r\(h]r]jvah]h]h]r^Uid79r_ah]uhKuhhh]r`(h)ra}rb(hXRunning the DemorchjZhjhhh}rd(h]h]h]h]h]uhKuhhh]rehXRunning the Demorfrg}rh(hjchjaubaubj/)ri}rj(hXYou will need the following:rkhjZhjhj3h}rl(h]h]h]h]h]uhKwhhh]rmhXYou will need the following:rnro}rp(hjkhjiubaubj:)rq}rr(hUhjZhjhj=h}rs(h]h]h]h]h]uhNhhh]rtj@)ru}rv(hUh}rw(h]h]h]h]h]UcolsKuhjqh]rx(jE)ry}rz(hUh}r{(h]h]h]h]h]UcolwidthKuhjuh]hjIubjE)r|}r}(hUh}r~(h]h]h]h]h]UcolwidthKuhjuh]hjIubjS)r}r(hUh}r(h]h]h]h]h]uhjuh]rjX)r}r(hUh}r(h]h]h]h]h]uhjh]r(j])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hXEVM's supportedrhjhjhj3h}r(h]h]h]h]h]uhKzh]rhXEVM's supportedrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX Bare metalrhjhjhj3h}r(h]h]h]h]h]uhKzh]rhX Bare metalrr}r(hjhjubaubahjjubehjubahjubj)r}r(hUh}r(h]h]h]h]h]uhjuh]rjX)r}r(hUh}r(h]h]h]h]h]uhjh]r(j])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hXAM65xx EVM/IDKrhjhjhj3h}r(h]h]h]h]h]uhK}h]rhXAM65xx EVM/IDKrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hXNorhjhjhj3h}r(h]h]h]h]h]uhK}h]rhXNorr}r(hjhjubaubahjjubehjubahjubehjubaubh)r}r(hUhjZhjhhh}r(h]h]h]h]r“UtoolsrÓah]rēhEauhKhhh]rœ(h)rƓ}rǓ(hXToolsrȓhjhjhhh}rɓ(h]h]h]h]h]uhKhhh]rʓhXToolsr˓r̓}r͓(hjȓhjƓubaubj)rΓ}rϓ(hUhjhjhjh}rГ(jU.h]h]h]jUh]h]jjuhKhhh]rѓ(jX)rғ}rӓ(hXLCAN Receiver/Transmitter - PC tool to receive and transmit the CAN messages.rԓhjΓhjhj[h}rՓ(h]h]h]h]h]uhNhhh]r֓j/)rד}rؓ(hjԓhjғhjhj3h}rٓ(h]h]h]h]h]uhKh]rړhXLCAN Receiver/Transmitter - PC tool to receive and transmit the CAN messages.rۓrܓ}rݓ(hjԓhjדubaubaubjX)rޓ}rߓ(hXLAN Cable (preferably CAT6)rhjΓhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjޓhjhj3h}r(h]h]h]h]h]uhKh]rhXLAN Cable (preferably CAT6)rr}r(hjhjubaubaubjX)r}r(hX)Gigabit switch connection - as mentioned in the known issues demo does not work with 100Mbps mode. The gigabit connection is needed to AM65xx EVM. .. note:: * PCAN - PC CAN Emulation tool is used for testing CAN_ETH Gateway demo. * Refer section PCAN Tool Set up for more details. * For receiving and transmitting data over Ethernet, use/run "eth_rx.out" and "eth_tx.out" utilities on host PC. * Above utilities are available at "[SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/pctools". hjΓhjhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hXGigabit switch connection - as mentioned in the known issues demo does not work with 100Mbps mode. The gigabit connection is needed to AM65xx EVM.rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXGigabit switch connection - as mentioned in the known issues demo does not work with 100Mbps mode. The gigabit connection is needed to AM65xx EVM.rr}r(hjhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rj))r}r(hXt* PCAN - PC CAN Emulation tool is used for testing CAN_ETH Gateway demo. * Refer section PCAN Tool Set up for more details. * For receiving and transmitting data over Ethernet, use/run "eth_rx.out" and "eth_tx.out" utilities on host PC. * Above utilities are available at "[SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/pctools".h}r(h]h]h]h]h]uhjh]rjQ)r}r(hUh}r(jVX*h]h]h]h]h]uhjh]r(jX)r}r(hXFPCAN - PC CAN Emulation tool is used for testing CAN_ETH Gateway demo.rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r (h]h]h]h]h]uhKh]r hXFPCAN - PC CAN Emulation tool is used for testing CAN_ETH Gateway demo.r r }r (hjhjubaubahj[ubjX)r}r(hX0Refer section PCAN Tool Set up for more details.rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX0Refer section PCAN Tool Set up for more details.rr}r(hjhjubaubahj[ubjX)r}r(hXnFor receiving and transmitting data over Ethernet, use/run "eth_rx.out" and "eth_tx.out" utilities on host PC.rh}r(h]h]h]h]h]uhjh]rj/)r}r (hjhjhjhj3h}r!(h]h]h]h]h]uhKh]r"hXnFor receiving and transmitting data over Ethernet, use/run "eth_rx.out" and "eth_tx.out" utilities on host PC.r#r$}r%(hjhjubaubahj[ubjX)r&}r'(hXAbove utilities are available at "[SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/pctools".r(h}r)(h]h]h]h]h]uhjh]r*j/)r+}r,(hj(hj&hjhj3h}r-(h]h]h]h]h]uhKh]r.hXAbove utilities are available at "[SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/pctools".r/r0}r1(hj(hj+ubaubahj[ubehjTubahj,ubahjubeubeubeubh)r2}r3(hUhjZhjhhh}r4(h]h]h]h]r5Uset-upr6ah]r7h|auhKhhh]r8(h)r9}r:(hXSet upr;hj2hjhhh}r<(h]h]h]h]h]uhKhhh]r=hXSet upr>r?}r@(hj;hj9ubaubj)rA}rB(hUhj2hjhjh}rC(jU.h]h]h]jUh]h]jjuhKhhh]rD(jX)rE}rF(hXCode Composer Studio to load and run the demo. Refer to :ref:`Processor SDK RTOS Getting Started Guide ` for installing CCS.hjAhjhj[h}rG(h]h]h]h]h]uhNhhh]rHj/)rI}rJ(hXCode Composer Studio to load and run the demo. Refer to :ref:`Processor SDK RTOS Getting Started Guide ` for installing CCS.hjEhjhj3h}rK(h]h]h]h]h]uhKh]rL(hX8Code Composer Studio to load and run the demo. Refer to rMrN}rO(hX8Code Composer Studio to load and run the demo. Refer to hjIubjZ)rP}rQ(hX`:ref:`Processor SDK RTOS Getting Started Guide `rRhjIhjhj^h}rS(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrTh]h]U refexplicith]h]h]j j uhKh]rUjb)rV}rW(hjRh}rX(h]h]rY(j jTXstd-refrZeh]h]h]uhjPh]r[hX(Processor SDK RTOS Getting Started Guider\r]}r^(hUhjVubahjlubaubhX for installing CCS.r_r`}ra(hX for installing CCS.hjIubeubaubjX)rb}rc(hX6AM65xx_EVM board with attached LAN cable and CAN tool.rdhjAhjhj[h}re(h]h]h]h]h]uhNhhh]rfj/)rg}rh(hjdhjbhjhj3h}ri(h]h]h]h]h]uhKh]rjhX6AM65xx_EVM board with attached LAN cable and CAN tool.rkrl}rm(hjdhjgubaubaubjX)rn}ro(hX7USB cable for JTAG and serial terminal (micro USB port)rphjAhjhj[h}rq(h]h]h]h]h]uhNhhh]rrj/)rs}rt(hjphjnhjhj3h}ru(h]h]h]h]h]uhKh]rvhX7USB cable for JTAG and serial terminal (micro USB port)rwrx}ry(hjphjsubaubaubjX)rz}r{(hXConfigure PC running Ethernet PC tools with below static IP * IP Address = "192.168.1.20" * Subnet mask = "255.255.255.0" * Default Gateway = "192.168.1.1" .. note:: You can enable DHCP for AM65xx board if PC is connected to network and static IP configuration is not feasible. Set enableStaticIP flag to 1 in :: [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/build/am65xx/nimuExample_r5.cfg hjAhNhj[h}r|(h]h]h]h]h]uhNhhh]r}cdocutils.nodes definition_list r~)r}r(hUh}r(h]h]h]h]h]uhjzh]rcdocutils.nodes definition_list_item r)r}r(hXConfigure PC running Ethernet PC tools with below static IP * IP Address = "192.168.1.20" * Subnet mask = "255.255.255.0" * Default Gateway = "192.168.1.1" .. note:: You can enable DHCP for AM65xx board if PC is connected to network and static IP configuration is not feasible. Set enableStaticIP flag to 1 in :: [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/build/am65xx/nimuExample_r5.cfg hjhjhUdefinition_list_itemrh}r(h]h]h]h]h]uhKh]r(cdocutils.nodes term r)r}r(hX;Configure PC running Ethernet PC tools with below static IPrhjhjhUtermrh}r(h]h]h]h]h]uhKh]rhX;Configure PC running Ethernet PC tools with below static IPrr}r(hjhjubaubcdocutils.nodes definition r)r}r(hUh}r(h]h]h]h]h]uhjh]r(jQ)r}r(hUh}r(jVX*h]h]h]h]h]uhjh]r(jX)r}r(hXIP Address = "192.168.1.20"rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXIP Address = "192.168.1.20"rr}r(hjhjubaubahj[ubjX)r}r(hXSubnet mask = "255.255.255.0"rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXSubnet mask = "255.255.255.0"rr}r(hjhjubaubahj[ubjX)r}r(hX!Default Gateway = "192.168.1.1" h}r(h]h]h]h]h]uhjh]rj/)r}r(hXDefault Gateway = "192.168.1.1"rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXDefault Gateway = "192.168.1.1"rr}r(hjhjubaubahj[ubehjTubj))r}r(hX You can enable DHCP for AM65xx board if PC is connected to network and static IP configuration is not feasible. Set enableStaticIP flag to 1 in :: [SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/build/am65xx/nimuExample_r5.cfgh}r”(h]h]h]h]h]uhjh]rÔ(j)rĔ}rŔ(hUh}rƔ(h]h]h]h]h]uhjh]rǔj/)rȔ}rɔ(hXYou can enable DHCP for AM65xx board if PC is connected to network and static IP configuration is not feasible. Set enableStaticIP flag to 1 inrʔhjĔhjhj3h}r˔(h]h]h]h]h]uhKh]r̔hXYou can enable DHCP for AM65xx board if PC is connected to network and static IP configuration is not feasible. Set enableStaticIP flag to 1 inr͔rΔ}rϔ(hjʔhjȔubaubahjubj)rД}rє(hXy[SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/build/am65xx/nimuExample_r5.cfghjhjh}rҔ(jjh]h]h]h]h]uhMyh]rӔhXy[SDK Install Path]/processor_sdk_rtos_[soc]_[version]/demos/gateway-demos/can-eth-gateway/build/am65xx/nimuExample_r5.cfgrԔrՔ}r֔(hUhjДubaubehj,ubehU definitionrהubeubahUdefinition_listrؔubaubeubeubh)rٔ}rڔ(hUhjZhjhhh}r۔(h]h]h]h]rܔUam65x-evm-idk-board-set-uprݔah]rޔhauhKhhh]rߔ(h)r}r(hXAM65x EVM/IDK Board Set uprhjٔhjhhh}r(h]h]h]h]h]uhKhhh]rhXAM65x EVM/IDK Board Set uprr}r(hjhjubaubj)r}r(hUhjٔhjhjh}r(jU.h]h]h]jUh]h]jjuhKhhh]rjX)r}r(hXaAdding Termination Resistors to the MCAN Interface Reason for change * The IDK Application board has two MCAN ports. The termination for the MCAN ports is not installed by default. If the termination is needed on the board, the following steps can be followed to add it. Items Needed * Two 120 ohm resistors in 0603 package Modification * Carefully remove the IDK application board by removing the four screws and gently separating the board from the connectors. * On the top of the board, solder a 120 ohm resistor to the footprint for R252. .. Image:: ../images/am65x_evm_idk_board_changes_for_mcan_interface1.png :height: 500px :width: 800px :scale: 50 % :alt: can-to-eth data flow :align: center * On the bottom of the board, solder a 120 ohm resistor to the footprint for R130. .. Image:: ../images/am65x_evm_idk_board_changes_for_mcan_interface2.png :height: 500px :width: 800px :scale: 50 % :alt: can-to-eth data flow :align: center * Reinstall the IDK Application board and return the screws. hjhjhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hX2Adding Termination Resistors to the MCAN Interfacerhjhjhj3h}r(h]h]h]h]h]uhKh]rhX2Adding Termination Resistors to the MCAN Interfacerr}r(hjhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rj~)r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hXReason for change * The IDK Application board has two MCAN ports. The termination for the MCAN ports is not installed by default. If the termination is needed on the board, the following steps can be followed to add it. hjhjhjh}r(h]h]h]h]h]uhKh]r(j)r}r(hXReason for changerhjhjhjh}r(h]h]h]h]h]uhKh]rhXReason for changer r }r (hjhjubaubj)r }r (hUh}r(h]h]h]h]h]uhjh]rjQ)r}r(hUh}r(jVX*h]h]h]h]h]uhj h]rjX)r}r(hXThe IDK Application board has two MCAN ports. The termination for the MCAN ports is not installed by default. If the termination is needed on the board, the following steps can be followed to add it. h}r(h]h]h]h]h]uhjh]rj/)r}r(hXThe IDK Application board has two MCAN ports. The termination for the MCAN ports is not installed by default. If the termination is needed on the board, the following steps can be followed to add it.rhjhjhj3h}r(h]h]h]h]h]uhKh]rhXThe IDK Application board has two MCAN ports. The termination for the MCAN ports is not installed by default. If the termination is needed on the board, the following steps can be followed to add it.rr}r(hjhjubaubahj[ubahjTubahjהubeubj)r }r!(hX5Items Needed * Two 120 ohm resistors in 0603 package hjhjhjh}r"(h]h]h]h]h]uhKh]r#(j)r$}r%(hX Items Neededr&hj hjhjh}r'(h]h]h]h]h]uhKh]r(hX Items Neededr)r*}r+(hj&hj$ubaubj)r,}r-(hUh}r.(h]h]h]h]h]uhj h]r/jQ)r0}r1(hUh}r2(jVX*h]h]h]h]h]uhj,h]r3jX)r4}r5(hX&Two 120 ohm resistors in 0603 package h}r6(h]h]h]h]h]uhj0h]r7j/)r8}r9(hX%Two 120 ohm resistors in 0603 packager:hj4hjhj3h}r;(h]h]h]h]h]uhKh]r<hX%Two 120 ohm resistors in 0603 packager=r>}r?(hj:hj8ubaubahj[ubahjTubahjהubeubj)r@}rA(hXModification * Carefully remove the IDK application board by removing the four screws and gently separating the board from the connectors. * On the top of the board, solder a 120 ohm resistor to the footprint for R252. .. Image:: ../images/am65x_evm_idk_board_changes_for_mcan_interface1.png :height: 500px :width: 800px :scale: 50 % :alt: can-to-eth data flow :align: center * On the bottom of the board, solder a 120 ohm resistor to the footprint for R130. .. Image:: ../images/am65x_evm_idk_board_changes_for_mcan_interface2.png :height: 500px :width: 800px :scale: 50 % :alt: can-to-eth data flow :align: center * Reinstall the IDK Application board and return the screws. hjhjhjh}rB(h]h]h]h]h]uhKh]rC(j)rD}rE(hX ModificationrFhj@hjhjh}rG(h]h]h]h]h]uhKh]rHhX ModificationrIrJ}rK(hjFhjDubaubj)rL}rM(hUh}rN(h]h]h]h]h]uhj@h]rO(jQ)rP}rQ(hUh}rR(jVX*h]h]h]h]h]uhjLh]rS(jX)rT}rU(hX{Carefully remove the IDK application board by removing the four screws and gently separating the board from the connectors.rVh}rW(h]h]h]h]h]uhjPh]rXj/)rY}rZ(hjVhjThjhj3h}r[(h]h]h]h]h]uhKh]r\hX{Carefully remove the IDK application board by removing the four screws and gently separating the board from the connectors.r]r^}r_(hjVhjYubaubahj[ubjX)r`}ra(hXNOn the top of the board, solder a 120 ohm resistor to the footprint for R252. h}rb(h]h]h]h]h]uhjPh]rcj/)rd}re(hXMOn the top of the board, solder a 120 ohm resistor to the footprint for R252.rfhj`hjhj3h}rg(h]h]h]h]h]uhKh]rhhXMOn the top of the board, solder a 120 ohm resistor to the footprint for R252.rirj}rk(hjfhjdubaubahj[ubehjTubj)rl}rm(hX.. Image:: ../images/am65x_evm_idk_board_changes_for_mcan_interface1.png :height: 500px :width: 800px :scale: 50 % :alt: can-to-eth data flow :align: center h}rn(UscaleK2UwidthX800pxUalignXcenterUuriXBrtos/../images/am65x_evm_idk_board_changes_for_mcan_interface1.pngroh]h]h]h]j}rpU*josh]Ualtj Xcan-to-eth data flowrqrr}rsbUheightX500pxuhjLh]hjubjQ)rt}ru(hUh}rv(jVX*h]h]h]h]h]uhjLh]rwjX)rx}ry(hXQOn the bottom of the board, solder a 120 ohm resistor to the footprint for R130. h}rz(h]h]h]h]h]uhjth]r{j/)r|}r}(hXPOn the bottom of the board, solder a 120 ohm resistor to the footprint for R130.r~hjxhjhj3h}r(h]h]h]h]h]uhKh]rhXPOn the bottom of the board, solder a 120 ohm resistor to the footprint for R130.rr}r(hj~hj|ubaubahj[ubahjTubj)r}r(hX.. Image:: ../images/am65x_evm_idk_board_changes_for_mcan_interface2.png :height: 500px :width: 800px :scale: 50 % :alt: can-to-eth data flow :align: center h}r(UscaleK2UwidthX800pxUalignXcenterUuriXBrtos/../images/am65x_evm_idk_board_changes_for_mcan_interface2.pngrh]h]h]h]j}rU*jsh]Ualtj Xcan-to-eth data flowrr}rbUheightX500pxuhjLh]hjubjQ)r}r(hUh}r(jVX*h]h]h]h]h]uhjLh]rjX)r}r(hX;Reinstall the IDK Application board and return the screws. h}r(h]h]h]h]h]uhjh]rj/)r}r(hX:Reinstall the IDK Application board and return the screws.rhjhjhj3h}r(h]h]h]h]h]uhKh]rhX:Reinstall the IDK Application board and return the screws.rr}r(hjhjubaubahj[ubahjTubehjהubeubehjؔubahjubeubaubeubh)r}r(hUhjZhjhhh}r(h]h]h]h]rUpcan-tool-set-uprah]rhauhKhhh]r(h)r}r(hXPCAN Tool Set uprhjhjhhh}r(h]h]h]h]h]uhKhhh]rhXPCAN Tool Set uprr}r(hjhjubaubj~)r}r(hUhjhjhjؔh}r(h]h]h]h]h]uhNhhh]rj)r}r(hXCAN FD adapter PCAN-USB FD allows the connection of CAN FD and CAN networks to a computer via USB. Product details: https://www.peak-system.com/PCAN-USB-FD.365.0.html?&L=1 hjhjhjh}r(h]h]h]h]h]uhKh]r(j)r}r(hXbCAN FD adapter PCAN-USB FD allows the connection of CAN FD and CAN networks to a computer via USB.rhjhjhjh}r(h]h]h]h]h]uhKh]rhXbCAN FD adapter PCAN-USB FD allows the connection of CAN FD and CAN networks to a computer via USB.rr}r(hjhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hXHProduct details: https://www.peak-system.com/PCAN-USB-FD.365.0.html?&L=1hjhjhj3h}r(h]h]h]h]h]uhKh]r•(hXProduct details: rÕrĕ}rŕ(hXProduct details: hjubj)rƕ}rǕ(hX7https://www.peak-system.com/PCAN-USB-FD.365.0.html?&L=1rȕh}rɕ(Urefurijȕh]h]h]h]h]uhjh]rʕhX7https://www.peak-system.com/PCAN-USB-FD.365.0.html?&L=1r˕r̕}r͕(hUhjƕubahjubeubahjהubeubaubj)rΕ}rϕ(hUhjhjhjh}rЕ(jU.h]h]h]jUh]h]jjuhKhhh]rѕjX)rҕ}rӕ(hX5Prerequisite (PC Setup): * Download and install PCAN driver from: https://www.peak-system.com/quick/DrvSetup * Download and install PCAN driver from: https://www.peak-system.com/quick/DrvSetup * Download PCAN-View from: https://www.peak-system.com/fileadmin/media/files/pcanview.zip * PCAN-View is a GUI based tool used to configure bit-rate of the PCAN tool. It provides a convenient was to see sent and received messages. It also provides an option to enable tracing of CAN messages along with timestamp * Please refer to PCAN-USB FD manual for more details hjΕhNhj[h}rԕ(h]h]h]h]h]uhNhhh]rՕj~)r֕}rו(hUh}rؕ(h]h]h]h]h]uhjҕh]rٕj)rڕ}rە(hX0Prerequisite (PC Setup): * Download and install PCAN driver from: https://www.peak-system.com/quick/DrvSetup * Download and install PCAN driver from: https://www.peak-system.com/quick/DrvSetup * Download PCAN-View from: https://www.peak-system.com/fileadmin/media/files/pcanview.zip * PCAN-View is a GUI based tool used to configure bit-rate of the PCAN tool. It provides a convenient was to see sent and received messages. It also provides an option to enable tracing of CAN messages along with timestamp * Please refer to PCAN-USB FD manual for more details hj֕hjhjh}rܕ(h]h]h]h]h]uhKh]rݕ(j)rޕ}rߕ(hXPrerequisite (PC Setup):rhjڕhjhjh}r(h]h]h]h]h]uhKh]rhXPrerequisite (PC Setup):rr}r(hjhjޕubaubj)r}r(hUh}r(h]h]h]h]h]uhjڕh]rjQ)r}r(hUh}r(jVX*h]h]h]h]h]uhjh]r(jX)r}r(hXQDownload and install PCAN driver from: https://www.peak-system.com/quick/DrvSetuprh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]r(hX'Download and install PCAN driver from: rr}r(hX'Download and install PCAN driver from: hjubj)r}r(hX*https://www.peak-system.com/quick/DrvSetuprh}r(Urefurijh]h]h]h]h]uhjh]rhX*https://www.peak-system.com/quick/DrvSetuprr}r(hUhjubahjubeubahj[ubjX)r}r(hXQDownload and install PCAN driver from: https://www.peak-system.com/quick/DrvSetuprh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r (h]h]h]h]h]uhKh]r (hX'Download and install PCAN driver from: r r }r (hX'Download and install PCAN driver from: hjubj)r}r(hX*https://www.peak-system.com/quick/DrvSetuprh}r(Urefurijh]h]h]h]h]uhjh]rhX*https://www.peak-system.com/quick/DrvSetuprr}r(hUhjubahjubeubahj[ubjX)r}r(hXWDownload PCAN-View from: https://www.peak-system.com/fileadmin/media/files/pcanview.ziprh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]r(hXDownload PCAN-View from: rr }r!(hXDownload PCAN-View from: hjubj)r"}r#(hX>https://www.peak-system.com/fileadmin/media/files/pcanview.zipr$h}r%(Urefurij$h]h]h]h]h]uhjh]r&hX>https://www.peak-system.com/fileadmin/media/files/pcanview.zipr'r(}r)(hUhj"ubahjubeubahj[ubjX)r*}r+(hXPCAN-View is a GUI based tool used to configure bit-rate of the PCAN tool. It provides a convenient was to see sent and received messages. It also provides an option to enable tracing of CAN messages along with timestampr,h}r-(h]h]h]h]h]uhjh]r.j/)r/}r0(hj,hj*hjhj3h}r1(h]h]h]h]h]uhKh]r2hXPCAN-View is a GUI based tool used to configure bit-rate of the PCAN tool. It provides a convenient was to see sent and received messages. It also provides an option to enable tracing of CAN messages along with timestampr3r4}r5(hj,hj/ubaubahj[ubjX)r6}r7(hX4Please refer to PCAN-USB FD manual for more details h}r8(h]h]h]h]h]uhjh]r9j/)r:}r;(hX3Please refer to PCAN-USB FD manual for more detailsr<hj6hjhj3h}r=(h]h]h]h]h]uhKh]r>hX3Please refer to PCAN-USB FD manual for more detailsr?r@}rA(hj<hj:ubaubahj[ubehjTubahjהubeubahjؔubaubaubj))rB}rC(hXPlease check licensing information & terms of usage of PCAN-USB product and make sure it adheres your organizations policy before downloading the drivers.hjhjhj,h}rD(h]h]h]h]h]uhNhhh]rEj/)rF}rG(hXPlease check licensing information & terms of usage of PCAN-USB product and make sure it adheres your organizations policy before downloading the drivers.rHhjBhjhj3h}rI(h]h]h]h]h]uhKh]rJhXPlease check licensing information & terms of usage of PCAN-USB product and make sure it adheres your organizations policy before downloading the drivers.rKrL}rM(hjHhjFubaubaubj)rN}rO(hUhjhjhjh}rP(jU.h]h]h]jUh]h]jjuhKhhh]rQ(jX)rR}rS(hX>PCAN Setup: * Once driver is installed, connect PCAN to PC. It should be auto detected as ‘PCAN-USB FD’ in ‘Device Manager’. If it is not auto detected then re-install the PCAN driver * Once it is detected in Device Manager, open PCAN-View and follow below steps * Click on ‘Connect’ from ‘CAN’ menu (as shown in below figure) * Popped up window shall show connected PCAN hardware. Select that device. * Tick in the checkbox shown next to ‘Data Bit rate’ * This will enable Bit * Select ‘Nominal Bit Rate’ as ‘1 MBits/s’ * Select ‘Data Bit Rate’ as ‘5 MBits/s’ * Bit rates may vary from use-case to use-case. * Click on Ok button. .. Image:: ../images/pcan_view_device_selection.png :height: 500px :width: 500px :scale: 50 % :alt: can-to-eth data flow :align: center * Create and send message at period of 2sec * Click on ‘New Message’ under ‘Transmit’ menu * Tick the check box present next to ‘CAN FD’ * Tick the check box present next to ‘Bit Rate Switch’ * Give below parameters /inputs: * ID as hex ‘004’ * Length as ‘64’ * Cycle Time as ‘2000’ * Data: as use-case needs .. Image:: ../images/CanEth_PCANViewTransmitMessageConfig.png :height: 500px :width: 600px :scale: 50 % :alt: can-to-eth data flow :align: center hjNhNhj[h}rT(h]h]h]h]h]uhNhhh]rUj~)rV}rW(hUh}rX(h]h]h]h]h]uhjRh]rYj)rZ}r[(hXPCAN Setup: * Once driver is installed, connect PCAN to PC. It should be auto detected as ‘PCAN-USB FD’ in ‘Device Manager’. If it is not auto detected then re-install the PCAN driver * Once it is detected in Device Manager, open PCAN-View and follow below steps * Click on ‘Connect’ from ‘CAN’ menu (as shown in below figure) * Popped up window shall show connected PCAN hardware. Select that device. * Tick in the checkbox shown next to ‘Data Bit rate’ * This will enable Bit * Select ‘Nominal Bit Rate’ as ‘1 MBits/s’ * Select ‘Data Bit Rate’ as ‘5 MBits/s’ * Bit rates may vary from use-case to use-case. * Click on Ok button. .. Image:: ../images/pcan_view_device_selection.png :height: 500px :width: 500px :scale: 50 % :alt: can-to-eth data flow :align: center * Create and send message at period of 2sec * Click on ‘New Message’ under ‘Transmit’ menu * Tick the check box present next to ‘CAN FD’ * Tick the check box present next to ‘Bit Rate Switch’ * Give below parameters /inputs: * ID as hex ‘004’ * Length as ‘64’ * Cycle Time as ‘2000’ * Data: as use-case needs .. Image:: ../images/CanEth_PCANViewTransmitMessageConfig.png :height: 500px :width: 600px :scale: 50 % :alt: can-to-eth data flow :align: center hjVhjhjh}r\(h]h]h]h]h]uhKh]r](j)r^}r_(hX PCAN Setup:r`hjZhjhjh}ra(h]h]h]h]h]uhKh]rbhX PCAN Setup:rcrd}re(hj`hj^ubaubj)rf}rg(hUh}rh(h]h]h]h]h]uhjZh]rijQ)rj}rk(hUh}rl(jVX*h]h]h]h]h]uhjfh]rm(jX)rn}ro(hXOnce driver is installed, connect PCAN to PC. It should be auto detected as ‘PCAN-USB FD’ in ‘Device Manager’. If it is not auto detected then re-install the PCAN driverrph}rq(h]h]h]h]h]uhjjh]rrj/)rs}rt(hjphjnhjhj3h}ru(h]h]h]h]h]uhKh]rvhXOnce driver is installed, connect PCAN to PC. It should be auto detected as ‘PCAN-USB FD’ in ‘Device Manager’. If it is not auto detected then re-install the PCAN driverrwrx}ry(hjphjsubaubahj[ubjX)rz}r{(hX#Once it is detected in Device Manager, open PCAN-View and follow below steps * Click on ‘Connect’ from ‘CAN’ menu (as shown in below figure) * Popped up window shall show connected PCAN hardware. Select that device. * Tick in the checkbox shown next to ‘Data Bit rate’ * This will enable Bit * Select ‘Nominal Bit Rate’ as ‘1 MBits/s’ * Select ‘Data Bit Rate’ as ‘5 MBits/s’ * Bit rates may vary from use-case to use-case. * Click on Ok button. .. Image:: ../images/pcan_view_device_selection.png :height: 500px :width: 500px :scale: 50 % :alt: can-to-eth data flow :align: center * Create and send message at period of 2sec * Click on ‘New Message’ under ‘Transmit’ menu * Tick the check box present next to ‘CAN FD’ * Tick the check box present next to ‘Bit Rate Switch’ * Give below parameters /inputs: * ID as hex ‘004’ * Length as ‘64’ * Cycle Time as ‘2000’ * Data: as use-case needs .. Image:: ../images/CanEth_PCANViewTransmitMessageConfig.png :height: 500px :width: 600px :scale: 50 % :alt: can-to-eth data flow :align: center h}r|(h]h]h]h]h]uhjjh]r}j~)r~}r(hUh}r(h]h]h]h]h]uhjzh]rj)r}r(hXOnce it is detected in Device Manager, open PCAN-View and follow below steps * Click on ‘Connect’ from ‘CAN’ menu (as shown in below figure) * Popped up window shall show connected PCAN hardware. Select that device. * Tick in the checkbox shown next to ‘Data Bit rate’ * This will enable Bit * Select ‘Nominal Bit Rate’ as ‘1 MBits/s’ * Select ‘Data Bit Rate’ as ‘5 MBits/s’ * Bit rates may vary from use-case to use-case. * Click on Ok button. .. Image:: ../images/pcan_view_device_selection.png :height: 500px :width: 500px :scale: 50 % :alt: can-to-eth data flow :align: center * Create and send message at period of 2sec * Click on ‘New Message’ under ‘Transmit’ menu * Tick the check box present next to ‘CAN FD’ * Tick the check box present next to ‘Bit Rate Switch’ * Give below parameters /inputs: * ID as hex ‘004’ * Length as ‘64’ * Cycle Time as ‘2000’ * Data: as use-case needs .. Image:: ../images/CanEth_PCANViewTransmitMessageConfig.png :height: 500px :width: 600px :scale: 50 % :alt: can-to-eth data flow :align: center hj~hjhjh}r(h]h]h]h]h]uhKh]r(j)r}r(hXLOnce it is detected in Device Manager, open PCAN-View and follow below stepsrhjhjhjh}r(h]h]h]h]h]uhKh]rhXLOnce it is detected in Device Manager, open PCAN-View and follow below stepsrr}r(hjhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjQ)r}r(hUh}r(jVX*h]h]h]h]h]uhjh]r(jX)r}r(hXDClick on ‘Connect’ from ‘CAN’ menu (as shown in below figure) * Popped up window shall show connected PCAN hardware. Select that device. * Tick in the checkbox shown next to ‘Data Bit rate’ * This will enable Bit * Select ‘Nominal Bit Rate’ as ‘1 MBits/s’ * Select ‘Data Bit Rate’ as ‘5 MBits/s’ * Bit rates may vary from use-case to use-case. * Click on Ok button. .. Image:: ../images/pcan_view_device_selection.png :height: 500px :width: 500px :scale: 50 % :alt: can-to-eth data flow :align: center h}r(h]h]h]h]h]uhjh]rj~)r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hX*Click on ‘Connect’ from ‘CAN’ menu (as shown in below figure) * Popped up window shall show connected PCAN hardware. Select that device. * Tick in the checkbox shown next to ‘Data Bit rate’ * This will enable Bit * Select ‘Nominal Bit Rate’ as ‘1 MBits/s’ * Select ‘Data Bit Rate’ as ‘5 MBits/s’ * Bit rates may vary from use-case to use-case. * Click on Ok button. .. Image:: ../images/pcan_view_device_selection.png :height: 500px :width: 500px :scale: 50 % :alt: can-to-eth data flow :align: center hjhjhjh}r(h]h]h]h]h]uhKh]r(j)r}r(hXEClick on ‘Connect’ from ‘CAN’ menu (as shown in below figure)rhjhjhjh}r(h]h]h]h]h]uhKh]rhXEClick on ‘Connect’ from ‘CAN’ menu (as shown in below figure)rr}r(hjhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]r(jQ)r}r(hUh}r(jVX*h]h]h]h]h]uhjh]r(jX)r}r(hXHPopped up window shall show connected PCAN hardware. Select that device.rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXHPopped up window shall show connected PCAN hardware. Select that device.rr}r(hjhjubaubahj[ubjX)r}r(hXOTick in the checkbox shown next to ‘Data Bit rate’ * This will enable Bith}r(h]h]h]h]h]uhjh]rj~)r–}rÖ(hUh}rĖ(h]h]h]h]h]uhjh]rŖj)rƖ}rǖ(hXMTick in the checkbox shown next to ‘Data Bit rate’ * This will enable Bithj–hjhjh}rȖ(h]h]h]h]h]uhKh]rɖ(j)rʖ}r˖(hX6Tick in the checkbox shown next to ‘Data Bit rate’r̖hjƖhjhjh}r͖(h]h]h]h]h]uhKh]rΖhX6Tick in the checkbox shown next to ‘Data Bit rate’rϖrЖ}rі(hj̖hjʖubaubj)rҖ}rӖ(hUh}rԖ(h]h]h]h]h]uhjƖh]rՖjQ)r֖}rז(hUh}rؖ(jVX*h]h]h]h]h]uhjҖh]rٖjX)rږ}rۖ(hXThis will enable Bitrܖh}rݖ(h]h]h]h]h]uhj֖h]rޖj/)rߖ}r(hjܖhjږhjhj3h}r(h]h]h]h]h]uhKh]rhXThis will enable Bitrr}r(hjܖhjߖubaubahj[ubahjTubahjהubeubahjؔubahj[ubjX)r}r(hX0Select ‘Nominal Bit Rate’ as ‘1 MBits/s’rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX0Select ‘Nominal Bit Rate’ as ‘1 MBits/s’rr}r(hjhjubaubahj[ubjX)r}r(hX_Select ‘Data Bit Rate’ as ‘5 MBits/s’ * Bit rates may vary from use-case to use-case.h}r(h]h]h]h]h]uhjh]rj~)r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hX]Select ‘Data Bit Rate’ as ‘5 MBits/s’ * Bit rates may vary from use-case to use-case.hjhjhjh}r(h]h]h]h]h]uhKh]r(j)r}r(hX-Select ‘Data Bit Rate’ as ‘5 MBits/s’rhjhjhjh}r(h]h]h]h]h]uhKh]rhX-Select ‘Data Bit Rate’ as ‘5 MBits/s’rr}r(hjhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]r jQ)r }r (hUh}r (jVX*h]h]h]h]h]uhjh]r jX)r}r(hX-Bit rates may vary from use-case to use-case.rh}r(h]h]h]h]h]uhj h]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX-Bit rates may vary from use-case to use-case.rr}r(hjhjubaubahj[ubahjTubahjהubeubahjؔubahj[ubjX)r}r(hXClick on Ok button. h}r(h]h]h]h]h]uhjh]rj/)r}r(hXClick on Ok button.r hjhjhj3h}r!(h]h]h]h]h]uhKh]r"hXClick on Ok button.r#r$}r%(hj hjubaubahj[ubehjTubj)r&}r'(hX.. Image:: ../images/pcan_view_device_selection.png :height: 500px :width: 500px :scale: 50 % :alt: can-to-eth data flow :align: center h}r((UscaleK2UwidthX500pxUalignXcenterUuriX-rtos/../images/pcan_view_device_selection.pngr)h]h]h]h]j}r*U*j)sh]Ualtj Xcan-to-eth data flowr+r,}r-bUheightX500pxuhjh]hjubehjהubeubahjؔubahj[ubjX)r.}r/(hXCreate and send message at period of 2sec * Click on ‘New Message’ under ‘Transmit’ menu * Tick the check box present next to ‘CAN FD’ * Tick the check box present next to ‘Bit Rate Switch’ * Give below parameters /inputs: * ID as hex ‘004’ * Length as ‘64’ * Cycle Time as ‘2000’ * Data: as use-case needs .. Image:: ../images/CanEth_PCANViewTransmitMessageConfig.png :height: 500px :width: 600px :scale: 50 % :alt: can-to-eth data flow :align: center h}r0(h]h]h]h]h]uhjh]r1j~)r2}r3(hUh}r4(h]h]h]h]h]uhj.h]r5j)r6}r7(hXCreate and send message at period of 2sec * Click on ‘New Message’ under ‘Transmit’ menu * Tick the check box present next to ‘CAN FD’ * Tick the check box present next to ‘Bit Rate Switch’ * Give below parameters /inputs: * ID as hex ‘004’ * Length as ‘64’ * Cycle Time as ‘2000’ * Data: as use-case needs .. Image:: ../images/CanEth_PCANViewTransmitMessageConfig.png :height: 500px :width: 600px :scale: 50 % :alt: can-to-eth data flow :align: center hj2hjhjh}r8(h]h]h]h]h]uhKh]r9(j)r:}r;(hX)Create and send message at period of 2secr<hj6hjhjh}r=(h]h]h]h]h]uhKh]r>hX)Create and send message at period of 2secr?r@}rA(hj<hj:ubaubj)rB}rC(hUh}rD(h]h]h]h]h]uhj6h]rE(jQ)rF}rG(hUh}rH(jVX*h]h]h]h]h]uhjBh]rI(jX)rJ}rK(hX4Click on ‘New Message’ under ‘Transmit’ menurLh}rM(h]h]h]h]h]uhjFh]rNj/)rO}rP(hjLhjJhjhj3h}rQ(h]h]h]h]h]uhKh]rRhX4Click on ‘New Message’ under ‘Transmit’ menurSrT}rU(hjLhjOubaubahj[ubjX)rV}rW(hX/Tick the check box present next to ‘CAN FD’rXh}rY(h]h]h]h]h]uhjFh]rZj/)r[}r\(hjXhjVhjhj3h}r](h]h]h]h]h]uhKh]r^hX/Tick the check box present next to ‘CAN FD’r_r`}ra(hjXhj[ubaubahj[ubjX)rb}rc(hX8Tick the check box present next to ‘Bit Rate Switch’rdh}re(h]h]h]h]h]uhjFh]rfj/)rg}rh(hjdhjbhjhj3h}ri(h]h]h]h]h]uhKh]rjhX8Tick the check box present next to ‘Bit Rate Switch’rkrl}rm(hjdhjgubaubahj[ubjX)rn}ro(hXGive below parameters /inputs: * ID as hex ‘004’ * Length as ‘64’ * Cycle Time as ‘2000’ * Data: as use-case needs h}rp(h]h]h]h]h]uhjFh]rqj~)rr}rs(hUh}rt(h]h]h]h]h]uhjnh]ruj)rv}rw(hXGive below parameters /inputs: * ID as hex ‘004’ * Length as ‘64’ * Cycle Time as ‘2000’ * Data: as use-case needs hjrhjhjh}rx(h]h]h]h]h]uhKh]ry(j)rz}r{(hXGive below parameters /inputs:r|hjvhjhjh}r}(h]h]h]h]h]uhKh]r~hXGive below parameters /inputs:rr}r(hj|hjzubaubj)r}r(hUh}r(h]h]h]h]h]uhjvh]rjQ)r}r(hUh}r(jVX*h]h]h]h]h]uhjh]r(jX)r}r(hXID as hex ‘004’rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXID as hex ‘004’rr}r(hjhjubaubahj[ubjX)r}r(hXLength as ‘64’rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXLength as ‘64’rr}r(hjhjubaubahj[ubjX)r}r(hXCycle Time as ‘2000’rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhXCycle Time as ‘2000’rr}r(hjhjubaubahj[ubjX)r}r(hXData: as use-case needs h}r(h]h]h]h]h]uhjh]rj/)r}r(hXData: as use-case needsrhjhjhj3h}r(h]h]h]h]h]uhKh]rhXData: as use-case needsrr}r(hjhjubaubahj[ubehjTubahjהubeubahjؔubahj[ubehjTubj)r}r(hX.. Image:: ../images/CanEth_PCANViewTransmitMessageConfig.png :height: 500px :width: 600px :scale: 50 % :alt: can-to-eth data flow :align: center h}r(UscaleK2UwidthX600pxUalignXcenterUuriX7rtos/../images/CanEth_PCANViewTransmitMessageConfig.pngrh]h]h]h]j}rU*jsh]Ualtj Xcan-to-eth data flowrr}rbUheightX500pxuhjBh]hjubehjהubeubahjؔubahj[ubehjTubahjהubeubahjؔubahj[ubehjTubahjהubeubahjؔubaubjX)r—}r×(hXCreating Bit Rate Configurations: * Example for creating 5 Mbps bit rate configuration for ‘Data Bit Rate’(shown in below diagram) * Click on ‘Connect’ under ‘CAN’ menu * Tick in the checkbox shown next to ‘Data Bit rate’ * Click on Play button present below ‘Data Bit rate’ and then ‘Manage Bit rates’ * Click on ‘Data’ in newly popped window * Select clock frequency as 80 MHz * Click on ‘Add’ button * Give caption as ‘5 MBits/s’ * Program ‘Prescalar’, ‘tseg1’, ‘tseg2’, ‘Sync Jump Width’ as ‘1’, ‘12’, ‘3’, ‘1’ respectively. * Bit Rate text box shall show ‘5 Mbit/s’ after programming above values. * Click on ‘Ok’ and then again on ‘Ok’ .. Image:: ../images/CanEth_PCANViewBitRateConfig.png :height: 500px :width: 800px :scale: 50 % :alt: can-to-eth data flow :align: center hjNhNhj[h}rė(h]h]h]h]h]uhNhhh]rŗj~)rƗ}rǗ(hUh}rȗ(h]h]h]h]h]uhj—h]rɗj)rʗ}r˗(hXCreating Bit Rate Configurations: * Example for creating 5 Mbps bit rate configuration for ‘Data Bit Rate’(shown in below diagram) * Click on ‘Connect’ under ‘CAN’ menu * Tick in the checkbox shown next to ‘Data Bit rate’ * Click on Play button present below ‘Data Bit rate’ and then ‘Manage Bit rates’ * Click on ‘Data’ in newly popped window * Select clock frequency as 80 MHz * Click on ‘Add’ button * Give caption as ‘5 MBits/s’ * Program ‘Prescalar’, ‘tseg1’, ‘tseg2’, ‘Sync Jump Width’ as ‘1’, ‘12’, ‘3’, ‘1’ respectively. * Bit Rate text box shall show ‘5 Mbit/s’ after programming above values. * Click on ‘Ok’ and then again on ‘Ok’ .. Image:: ../images/CanEth_PCANViewBitRateConfig.png :height: 500px :width: 800px :scale: 50 % :alt: can-to-eth data flow :align: center hjƗhjhjh}r̗(h]h]h]h]h]uhMh]r͗(j)rΗ}rϗ(hX!Creating Bit Rate Configurations:rЗhjʗhjhjh}rї(h]h]h]h]h]uhMh]rҗhX!Creating Bit Rate Configurations:rӗrԗ}r՗(hjЗhjΗubaubj)r֗}rח(hUh}rؗ(h]h]h]h]h]uhjʗh]rٗ(jQ)rڗ}rۗ(hUh}rܗ(jVX*h]h]h]h]h]uhj֗h]rݗjX)rޗ}rߗ(hXExample for creating 5 Mbps bit rate configuration for ‘Data Bit Rate’(shown in below diagram) * Click on ‘Connect’ under ‘CAN’ menu * Tick in the checkbox shown next to ‘Data Bit rate’ * Click on Play button present below ‘Data Bit rate’ and then ‘Manage Bit rates’ * Click on ‘Data’ in newly popped window * Select clock frequency as 80 MHz * Click on ‘Add’ button * Give caption as ‘5 MBits/s’ * Program ‘Prescalar’, ‘tseg1’, ‘tseg2’, ‘Sync Jump Width’ as ‘1’, ‘12’, ‘3’, ‘1’ respectively. * Bit Rate text box shall show ‘5 Mbit/s’ after programming above values. * Click on ‘Ok’ and then again on ‘Ok’ h}r(h]h]h]h]h]uhjڗh]rj~)r}r(hUh}r(h]h]h]h]h]uhjޗh]rj)r}r(hXExample for creating 5 Mbps bit rate configuration for ‘Data Bit Rate’(shown in below diagram) * Click on ‘Connect’ under ‘CAN’ menu * Tick in the checkbox shown next to ‘Data Bit rate’ * Click on Play button present below ‘Data Bit rate’ and then ‘Manage Bit rates’ * Click on ‘Data’ in newly popped window * Select clock frequency as 80 MHz * Click on ‘Add’ button * Give caption as ‘5 MBits/s’ * Program ‘Prescalar’, ‘tseg1’, ‘tseg2’, ‘Sync Jump Width’ as ‘1’, ‘12’, ‘3’, ‘1’ respectively. * Bit Rate text box shall show ‘5 Mbit/s’ after programming above values. * Click on ‘Ok’ and then again on ‘Ok’ hjhjhjh}r(h]h]h]h]h]uhMh]r(j)r}r(hXbExample for creating 5 Mbps bit rate configuration for ‘Data Bit Rate’(shown in below diagram)rhjhjhjh}r(h]h]h]h]h]uhMh]rhXbExample for creating 5 Mbps bit rate configuration for ‘Data Bit Rate’(shown in below diagram)rr}r(hjhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjQ)r}r(hUh}r(jVX*h]h]h]h]h]uhjh]r(jX)r}r(hX+Click on ‘Connect’ under ‘CAN’ menurh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhKh]rhX+Click on ‘Connect’ under ‘CAN’ menurr}r(hjhjubaubahj[ubjX)r}r(hX6Tick in the checkbox shown next to ‘Data Bit rate’rh}r (h]h]h]h]h]uhjh]r j/)r }r (hjhjhjhj3h}r (h]h]h]h]h]uhKh]rhX6Tick in the checkbox shown next to ‘Data Bit rate’rr}r(hjhj ubaubahj[ubjX)r}r(hXVClick on Play button present below ‘Data Bit rate’ and then ‘Manage Bit rates’rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhMh]rhXVClick on Play button present below ‘Data Bit rate’ and then ‘Manage Bit rates’rr}r(hjhjubaubahj[ubjX)r}r(hX*Click on ‘Data’ in newly popped windowr h}r!(h]h]h]h]h]uhjh]r"j/)r#}r$(hj hjhjhj3h}r%(h]h]h]h]h]uhMh]r&hX*Click on ‘Data’ in newly popped windowr'r(}r)(hj hj#ubaubahj[ubjX)r*}r+(hX Select clock frequency as 80 MHzr,h}r-(h]h]h]h]h]uhjh]r.j/)r/}r0(hj,hj*hjhj3h}r1(h]h]h]h]h]uhMh]r2hX Select clock frequency as 80 MHzr3r4}r5(hj,hj/ubaubahj[ubjX)r6}r7(hXClick on ‘Add’ buttonr8h}r9(h]h]h]h]h]uhjh]r:j/)r;}r<(hj8hj6hjhj3h}r=(h]h]h]h]h]uhMh]r>hXClick on ‘Add’ buttonr?r@}rA(hj8hj;ubaubahj[ubjX)rB}rC(hXGive caption as ‘5 MBits/s’rDh}rE(h]h]h]h]h]uhjh]rFj/)rG}rH(hjDhjBhjhj3h}rI(h]h]h]h]h]uhMh]rJhXGive caption as ‘5 MBits/s’rKrL}rM(hjDhjGubaubahj[ubjX)rN}rO(hX}Program ‘Prescalar’, ‘tseg1’, ‘tseg2’, ‘Sync Jump Width’ as ‘1’, ‘12’, ‘3’, ‘1’ respectively.rPh}rQ(h]h]h]h]h]uhjh]rRj/)rS}rT(hjPhjNhjhj3h}rU(h]h]h]h]h]uhMh]rVhX}Program ‘Prescalar’, ‘tseg1’, ‘tseg2’, ‘Sync Jump Width’ as ‘1’, ‘12’, ‘3’, ‘1’ respectively.rWrX}rY(hjPhjSubaubahj[ubjX)rZ}r[(hXKBit Rate text box shall show ‘5 Mbit/s’ after programming above values.r\h}r](h]h]h]h]h]uhjh]r^j/)r_}r`(hj\hjZhjhj3h}ra(h]h]h]h]h]uhMh]rbhXKBit Rate text box shall show ‘5 Mbit/s’ after programming above values.rcrd}re(hj\hj_ubaubahj[ubjX)rf}rg(hX-Click on ‘Ok’ and then again on ‘Ok’ h}rh(h]h]h]h]h]uhjh]rij/)rj}rk(hX,Click on ‘Ok’ and then again on ‘Ok’rlhjfhjhj3h}rm(h]h]h]h]h]uhMh]rnhX,Click on ‘Ok’ and then again on ‘Ok’rorp}rq(hjlhjjubaubahj[ubehjTubahjהubeubahjؔubahj[ubahjTubj)rr}rs(hX.. Image:: ../images/CanEth_PCANViewBitRateConfig.png :height: 500px :width: 800px :scale: 50 % :alt: can-to-eth data flow :align: center h}rt(UscaleK2UwidthX800pxUalignXcenterUuriX/rtos/../images/CanEth_PCANViewBitRateConfig.pngruh]h]h]h]j}rvU*jush]Ualtj Xcan-to-eth data flowrwrx}rybUheightX500pxuhj֗h]hjubehjהubeubahjؔubaubjX)rz}r{(hXCAN Bus Connections: * CAN_H of all the nodes on the bus shall be connected together * Similarly CAN_L of all the nodes on the bus shall be connected together * Please refer to ‘PCAN-USB FD manual’ for more details about connections. hjNhNhj[h}r|(h]h]h]h]h]uhNhhh]r}j~)r~}r(hUh}r(h]h]h]h]h]uhjzh]rj)r}r(hXCAN Bus Connections: * CAN_H of all the nodes on the bus shall be connected together * Similarly CAN_L of all the nodes on the bus shall be connected together * Please refer to ‘PCAN-USB FD manual’ for more details about connections. hj~hjhjh}r(h]h]h]h]h]uhMh]r(j)r}r(hXCAN Bus Connections:rhjhjhjh}r(h]h]h]h]h]uhMh]rhXCAN Bus Connections:rr}r(hjhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjQ)r}r(hUh}r(jVX*h]h]h]h]h]uhjh]r(jX)r}r(hX=CAN_H of all the nodes on the bus shall be connected togetherrh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhMh]rhX=CAN_H of all the nodes on the bus shall be connected togetherrr}r(hjhjubaubahj[ubjX)r}r(hXGSimilarly CAN_L of all the nodes on the bus shall be connected togetherrh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhMh]rhXGSimilarly CAN_L of all the nodes on the bus shall be connected togetherrr}r(hjhjubaubahj[ubjX)r}r(hXMPlease refer to ‘PCAN-USB FD manual’ for more details about connections. h}r(h]h]h]h]h]uhjh]rj/)r}r(hXLPlease refer to ‘PCAN-USB FD manual’ for more details about connections.rhjhjhj3h}r(h]h]h]h]h]uhMh]rhXLPlease refer to ‘PCAN-USB FD manual’ for more details about connections.rr}r(hjhjubaubahj[ubehjTubahjהubeubahjؔubaubeubeubh)r}r(hUhjZhjhhh}r(h]h]h]h]rUload-and-run-the-demorah]rhauhMhhh]r(h)r}r˜(hXLoad and run the demorØhjhjhhh}rĘ(h]h]h]h]h]uhMhhh]rŘhXLoad and run the demorƘrǘ}rȘ(hjØhjubaubj)rɘ}rʘ(hUhjhjhjh}r˘(jU.h]h]h]jUh]h]jjuhMhhh]r̘(jX)r͘}rΘ(hXFConnect the USB cable from your computer to the AM65xx_EVM's JTAG portrϘhjɘhjhj[h}rИ(h]h]h]h]h]uhNhhh]rјj/)rҘ}rӘ(hjϘhj͘hjhj3h}rԘ(h]h]h]h]h]uhMh]r՘hXFConnect the USB cable from your computer to the AM65xx_EVM's JTAG portr֘rט}rؘ(hjϘhjҘubaubaubjX)r٘}rژ(hXoPower on the AM65xx_EVM board. Ensure that no boot mode is entered (do not have SD card loaded or QSPI flashed)hjɘhjhj[h}rۘ(h]h]h]h]h]uhNhhh]rܘj/)rݘ}rޘ(hXoPower on the AM65xx_EVM board. Ensure that no boot mode is entered (do not have SD card loaded or QSPI flashed)rߘhj٘hjhj3h}r(h]h]h]h]h]uhMh]rhXoPower on the AM65xx_EVM board. Ensure that no boot mode is entered (do not have SD card loaded or QSPI flashed)rr}r(hjߘhjݘubaubaubjX)r}r(hXOpen up a serial terminal for UART communication (Refer to :ref:`Processor SDK RTOS Getting Started Guide `, setup EVM hardware)hjɘhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXOpen up a serial terminal for UART communication (Refer to :ref:`Processor SDK RTOS Getting Started Guide `, setup EVM hardware)hjhjhj3h}r(h]h]h]h]h]uhMh]r(hX;Open up a serial terminal for UART communication (Refer to rr}r(hX;Open up a serial terminal for UART communication (Refer to hjubjZ)r}r(hX`:ref:`Processor SDK RTOS Getting Started Guide `rhjhjhj^h}r(UreftypeXrefj j X.processor-sdk-rtos-getting-started-guide-labelU refdomainXstdrh]h]U refexplicith]h]h]j j uhMh]rjb)r}r(hjh}r(h]h]r(j jXstd-refreh]h]h]uhjh]rhX(Processor SDK RTOS Getting Started Guiderr}r(hUhjubahjlubaubhX, setup EVM hardware)rr}r(hX, setup EVM hardware)hjubeubaubjX)r}r(hXOpen CCS and launch target config file for AM65xx_EVM (Refer to `Processor SDK RTOS Setup CCS `__ for setting up CCS)hjɘhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXOpen CCS and launch target config file for AM65xx_EVM (Refer to `Processor SDK RTOS Setup CCS `__ for setting up CCS)hjhjhj3h}r(h]h]h]h]h]uhMh]r (hX@Open CCS and launch target config file for AM65xx_EVM (Refer to r r }r (hX@Open CCS and launch target config file for AM65xx_EVM (Refer to hjubj)r }r(hXd`Processor SDK RTOS Setup CCS `__h}r(UnameXProcessor SDK RTOS Setup CCSjXAindex_how_to_guides.html#setup-ccs-for-evm-and-processor-sdk-rtosh]h]h]h]h]uhjh]rhXProcessor SDK RTOS Setup CCSrr}r(hUhj ubahjubhX for setting up CCS)rr}r(hX for setting up CCS)hjubeubaubjX)r}r(hX!Connect to MCU_PULSAR_Cortex_R5_0rhjɘhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhM!h]rhX!Connect to MCU_PULSAR_Cortex_R5_0r r!}r"(hjhjubaubaubjX)r#}r$(hX@Load the System firmware as specified in SCICLIENT documentationr%hjɘhjhj[h}r&(h]h]h]h]h]uhNhhh]r'j/)r(}r)(hj%hj#hjhj3h}r*(h]h]h]h]h]uhM"h]r+hX@Load the System firmware as specified in SCICLIENT documentationr,r-}r.(hj%hj(ubaubaubjX)r/}r0(hXLoad and launch the demo executable: :: [PDK Install Path]/packages/ti/binary/gatewayapp/bin/am65xx_idk/gatewayapp_mcu1_0_release.xer5f hjɘhjhj[h}r1(h]h]h]h]h]uhNhhh]r2(j/)r3}r4(hX$Load and launch the demo executable:r5hj/hjhj3h}r6(h]h]h]h]h]uhM#h]r7hX$Load and launch the demo executable:r8r9}r:(hj5hj3ubaubj)r;}r<(hUh}r=(h]h]h]h]h]uhj/h]r>j)r?}r@(hX_[PDK Install Path]/packages/ti/binary/gatewayapp/bin/am65xx_idk/gatewayapp_mcu1_0_release.xer5fhj;hjh}rA(jjh]h]h]h]h]uhMh]rBhX_[PDK Install Path]/packages/ti/binary/gatewayapp/bin/am65xx_idk/gatewayapp_mcu1_0_release.xer5frCrD}rE(hUhj?ubaubahjubeubjX)rF}rG(hXThe application print will be displayed on the CCS and UART console. The UART console used depends on the core in which the application is run.rHhjɘhjhj[h}rI(h]h]h]h]h]uhNhhh]rJj/)rK}rL(hjHhjFhjhj3h}rM(h]h]h]h]h]uhM)h]rNhXThe application print will be displayed on the CCS and UART console. The UART console used depends on the core in which the application is run.rOrP}rQ(hjHhjKubaubaubjX)rR}rS(hXDConfirm the network connectivity of PC with board. ping 192.168.1.4 hjɘhjhj[h}rT(h]h]h]h]h]uhNhhh]rUj/)rV}rW(hXCConfirm the network connectivity of PC with board. ping 192.168.1.4rXhjRhjhj3h}rY(h]h]h]h]h]uhM*h]rZhXCConfirm the network connectivity of PC with board. ping 192.168.1.4r[r\}r](hjXhjVubaubaubeubh)r^}r_(hUhjhjhhh}r`(h]h]h]h]raU can-to-ethrbah]rch8auhM.hhh]rd(h)re}rf(hX CAN to ETHrghj^hjhhh}rh(h]h]h]h]h]uhM.hhh]rihX CAN to ETHrjrk}rl(hjghjeubaubj)rm}rn(hUhj^hjhjh}ro(jU.h]h]h]jUh]h]jjuhM/hhh]rp(jX)rq}rr(hXConnect the CAN PC tool.rshjmhjhj[h}rt(h]h]h]h]h]uhNhhh]ruj/)rv}rw(hjshjqhjhj3h}rx(h]h]h]h]h]uhM/h]ryhXConnect the CAN PC tool.rzr{}r|(hjshjvubaubaubjX)r}}r~(hXYStart the Ethernet receive application :: ./eth_tx.exe[or eth_tx.out] 192.168.1.4 hjmhjhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hX&Start the Ethernet receive applicationrhj}hjhj3h}r(h]h]h]h]h]uhM0h]rhX&Start the Ethernet receive applicationrr}r(hjhjubaubj)r}r(hUh}r(h]h]h]h]h]uhj}h]rj)r}r(hX'./eth_tx.exe[or eth_tx.out] 192.168.1.4hjhjh}r(jjh]h]h]h]h]uhM h]rhX'./eth_tx.exe[or eth_tx.out] 192.168.1.4rr}r(hUhjubaubahjubeubjX)r}r(hXStart CAN message transmission from the CAN tool with below information * ID as hex ‘004’ * Length as ‘64’ * Cycle Time as ‘2000’ * Data can be any user specified data hjmhNhj[h}r(h]h]h]h]h]uhNhhh]rj~)r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hXStart CAN message transmission from the CAN tool with below information * ID as hex ‘004’ * Length as ‘64’ * Cycle Time as ‘2000’ * Data can be any user specified data hjhjhjh}r(h]h]h]h]h]uhM:h]r(j)r}r(hXGStart CAN message transmission from the CAN tool with below informationrhjhjhjh}r(h]h]h]h]h]uhM:h]rhXGStart CAN message transmission from the CAN tool with below informationrr}r(hjhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjQ)r}r(hUh}r(jVX*h]h]h]h]h]uhjh]r(jX)r}r(hXID as hex ‘004’rh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhM7h]rhXID as hex ‘004’rr}r(hjhjubaubahj[ubjX)r}r(hXLength as ‘64’rh}r(h]h]h]h]h]uhjh]rj/)r}r™(hjhjhjhj3h}rÙ(h]h]h]h]h]uhM8h]ręhXLength as ‘64’rřrƙ}rǙ(hjhjubaubahj[ubjX)rș}rə(hXCycle Time as ‘2000’rʙh}r˙(h]h]h]h]h]uhjh]r̙j/)r͙}rΙ(hjʙhjșhjhj3h}rϙ(h]h]h]h]h]uhM9h]rЙhXCycle Time as ‘2000’rљrҙ}rә(hjʙhj͙ubaubahj[ubjX)rԙ}rՙ(hX$Data can be any user specified data h}r֙(h]h]h]h]h]uhjh]rיj/)rؙ}rٙ(hX#Data can be any user specified datarڙhjԙhjhj3h}rۙ(h]h]h]h]h]uhM:h]rܙhX#Data can be any user specified datarݙrޙ}rߙ(hjڙhjؙubaubahj[ubehjTubahjהubeubahjؔubaubeubeubh)r}r(hUhjhjhhh}r(h]h]h]h]rU eth-to-canrah]rhauhM=hhh]r(h)r}r(hX ETH to CANrhjhjhhh}r(h]h]h]h]h]uhM=hhh]rhX ETH to CANrr}r(hjhjubaubj)r}r(hUhjhjhjh}r(jU.h]h]h]jUh]h]jjuhM?hhh]r(jX)r}r(hXConnect the CAN PC tool.rhjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhjhj3h}r(h]h]h]h]h]uhM?h]rhXConnect the CAN PC tool.rr}r(hjhjubaubaubjX)r}r(hXStart the Ethernet transmit application :: ./eth_rx.exe[or eth_rx.out] --ip 192.168.1.4 [--port ] [--framerate ] port and framerate are optional hjhjhj[h}r(h]h]h]h]h]uhNhhh]r(j/)r}r(hX'Start the Ethernet transmit applicationrhjhjhj3h}r(h]h]h]h]h]uhM@h]rhX'Start the Ethernet transmit applicationrr }r (hjhjubaubj)r }r (hUh}r (h]h]h]h]h]uhjh]rj)r}r(hX./eth_rx.exe[or eth_rx.out] --ip 192.168.1.4 [--port ] [--framerate ] port and framerate are optionalhj hjh}r(jjh]h]h]h]h]uhMh]rhX./eth_rx.exe[or eth_rx.out] --ip 192.168.1.4 [--port ] [--framerate ] port and framerate are optionalrr}r(hUhjubaubahjubeubjX)r}r(hX}Once Ethernet transmit application starts sending data out, CAN PC tool shall receive a CAN FD message with ID hex ‘009’ hjhjhj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX|Once Ethernet transmit application starts sending data out, CAN PC tool shall receive a CAN FD message with ID hex ‘009’rhjhjhj3h}r(h]h]h]h]h]uhMHh]rhX|Once Ethernet transmit application starts sending data out, CAN PC tool shall receive a CAN FD message with ID hex ‘009’rr }r!(hjhjubaubaubeubeubeubeubh)r"}r#(hUhjnhjhhh}r$(h]h]h]h]r%Uterminal-screen-shotr&ah]r'haauhMKhhh]r((h)r)}r*(hXTerminal Screen-shotr+hj"hjhhh}r,(h]h]h]h]h]uhMKhhh]r-hXTerminal Screen-shotr.r/}r0(hj+hj)ubaubj/)r1}r2(hX0Below is a terminal output after one simulation:r3hj"hjhj3h}r4(h]h]h]h]h]uhMMhhh]r5hX0Below is a terminal output after one simulation:r6r7}r8(hj3hj1ubaubj)r9}r:(hXBoard_init success GatewayApp: BOARD IP address I/F 1: 192.168.1.14 GatewayApp: Starting GATEWAY Tasks... Gateway Tx: Server listening (port=1000) !!! GatewayApp: Network Tx socket open done.. Gateway Tx: Server listening (port=2000) !!! GatewayApp: Network Rx socket open done.. GatewayApp: CrossBar/Interrupt Configuration done. GatewayApp: MCANSS Revision ID: GatewayApp: scheme:0x1 GatewayApp: Business Unit:0x2 GatewayApp: Module ID:0x8e0 GatewayApp: RTL Revision:0x5 GatewayApp: Major Revision:0x1 GatewayApp: Custom Revision:0x0 GatewayApp: Minor Revision:0x1 GatewayApp: CAN-FD operation is enabled through E-Fuse. GatewayApp: Endianess Value: 0x87654321 GatewayApp: MCAN Transmitter app started.. Received 0 Transmitted 0 LOAD: CPU: 0.6% HWI: 0.1%, SWI:0.1% LOAD: TSK: Gateway Tx: 0.1% MISC: 0.3% GatewayApp: CAN stats - Received 500 Transmitted 500 LOAD: CPU: 6.6% HWI: 0.5%, SWI:0.1% LOAD: TSK: Gateway Rx: 1.6% LOAD: TSK: Gateway Tx: 0.6% MISC: 3.8%hj"hjhjh}r;(jjh]h]h]h]h]uhM'hhh]r<hXBoard_init success GatewayApp: BOARD IP address I/F 1: 192.168.1.14 GatewayApp: Starting GATEWAY Tasks... Gateway Tx: Server listening (port=1000) !!! GatewayApp: Network Tx socket open done.. Gateway Tx: Server listening (port=2000) !!! GatewayApp: Network Rx socket open done.. GatewayApp: CrossBar/Interrupt Configuration done. GatewayApp: MCANSS Revision ID: GatewayApp: scheme:0x1 GatewayApp: Business Unit:0x2 GatewayApp: Module ID:0x8e0 GatewayApp: RTL Revision:0x5 GatewayApp: Major Revision:0x1 GatewayApp: Custom Revision:0x0 GatewayApp: Minor Revision:0x1 GatewayApp: CAN-FD operation is enabled through E-Fuse. GatewayApp: Endianess Value: 0x87654321 GatewayApp: MCAN Transmitter app started.. Received 0 Transmitted 0 LOAD: CPU: 0.6% HWI: 0.1%, SWI:0.1% LOAD: TSK: Gateway Tx: 0.1% MISC: 0.3% GatewayApp: CAN stats - Received 500 Transmitted 500 LOAD: CPU: 6.6% HWI: 0.5%, SWI:0.1% LOAD: TSK: Gateway Rx: 1.6% LOAD: TSK: Gateway Tx: 0.6% MISC: 3.8%r=r>}r?(hUhj9ubaubh)r@}rA(hUhj"hjhhh}rB(h]h]h]h]rCUknown-issues-limitationsrDah]rEh@auhMvhhh]rF(h)rG}rH(hXKnown issues & limitationsrIhj@hjhhh}rJ(h]h]h]h]h]uhMvhhh]rKhXKnown issues & limitationsrLrM}rN(hjIhjGubaubj)rO}rP(hUhj@hjhjh}rQ(jU.h]h]h]jUh]h]jjuhMwhhh]rR(jX)rS}rT(hX9Polling mode is not supported in the Gateway application.rUhjOhjhj[h}rV(h]h]h]h]h]uhNhhh]rWj/)rX}rY(hjUhjShjhj3h}rZ(h]h]h]h]h]uhMwh]r[hX9Polling mode is not supported in the Gateway application.r\r]}r^(hjUhjXubaubaubjX)r_}r`(hX7Re-transmission of failed CAN message is not supported.rahjOhjhj[h}rb(h]h]h]h]h]uhNhhh]rcj/)rd}re(hjahj_hjhj3h}rf(h]h]h]h]h]uhMxh]rghX7Re-transmission of failed CAN message is not supported.rhri}rj(hjahjdubaubaubjX)rk}rl(hX<Ethernet 100Mbps is not supported. Gigabit only supported. hjOhX[internal padding after source/rtos/Examples_and_Demonstrations/Can_Eth_Gateway_Demo.rst.incrmhj[h}rn(h]h]h]h]h]uhNhhh]roj/)rp}rq(hX:Ethernet 100Mbps is not supported. Gigabit only supported.rrhjkhjhj3h}rs(h]h]h]h]h]uhMyh]rthX:Ethernet 100Mbps is not supported. Gigabit only supported.rurv}rw(hjrhjpubaubaubeubeubeubeubhjhhh}rx(h]ryXoverviewrzah]h]h]r{Uid73r|ah]uhKhhh]r}(h)r~}r(hXOverviewrhjlhjhhh}r(h]h]h]h]h]uhKhhh]rhXOverviewrr}r(hjhj~ubaubj/)r}r(hXGateway is one of the major use-cases in the modern cars. Performance requirements for Gateway applications are ever increasing due to advanced connected car architecture having multiple domain controllers. The CAN - Ethernet gateway demo showcases P2P (Protocol to Protocol) translation i.e. translating data and control information between incompatible networks like Ethernet and CAN for communication on AM65xx device. The demo enables full duplex routing between CAN and Ethernet (CAN to Ethernet & Ethernet to CAN). The gateway demo shows handling of high bandwidth data traffic on Cortex-R5 with low CPU load and latency for bridging application leaving cortex A53 free for application processing.rhjlhjhj3h}r(h]h]h]h]h]uhKhhh]rhXGateway is one of the major use-cases in the modern cars. Performance requirements for Gateway applications are ever increasing due to advanced connected car architecture having multiple domain controllers. The CAN - Ethernet gateway demo showcases P2P (Protocol to Protocol) translation i.e. translating data and control information between incompatible networks like Ethernet and CAN for communication on AM65xx device. The demo enables full duplex routing between CAN and Ethernet (CAN to Ethernet & Ethernet to CAN). The gateway demo shows handling of high bandwidth data traffic on Cortex-R5 with low CPU load and latency for bridging application leaving cortex A53 free for application processing.rr}r(hjhjubaubeubhjhj>h}r(h]UlevelKh]h]rj|aUsourcejh]h]UlineKUtypejAuhKhhh]rj/)r}r(hX+Duplicate implicit target name: "overview".h}r(h]h]h]h]h]uhjjh]rhX+Duplicate implicit target name: "overview".rr}r(hUhjubahj3ubaubj)r}r(hUhjhjhj>h}r(h]UlevelKh]h]rjaUsourcejh]h]UlineKUtypejAuhKhhh]rj/)r}r(hX8Duplicate implicit target name: "architecture overview".h}r(h]h]h]h]h]uhjh]rhX8Duplicate implicit target name: "architecture overview".rr}r(hUhjubahj3ubaubj)r}r(hUhjhjhj>h}r(h]UlevelKh]h]rjaUsourcejh]h]UlineK"UtypejAuhK"hhh]rj/)r}r(hX4Duplicate implicit target name: "software features".h}r(h]h]h]h]h]uhjh]rhX4Duplicate implicit target name: "software features".rr}r(hUhjubahj3ubaubj)r}r(hUhjݑhjhj>h}r(h]UlevelKh]h]rjaUsourcejh]h]UlineK)UtypejAuhK)hhh]rj/)r}r(hX6Duplicate implicit target name: "directory structure".h}r(h]h]h]h]h]uhjh]rhX6Duplicate implicit target name: "directory structure".rr}r(hUhjubahj3ubaubj)r}r(hUhjKhjhj>h}r(h]UlevelKh]h]rjQaUsourcejh]h]UlineK?UtypejAuhK?hhh]rj/)r}rš(hX2Duplicate implicit target name: "components used".h}rÚ(h]h]h]h]h]uhjh]rĚhX2Duplicate implicit target name: "components used".rŚrƚ}rǚ(hUhjubahj3ubaubj)rȚ}rɚ(hUhjhjhj>h}rʚ(h]UlevelKh]h]r˚jaUsourcejh]h]UlineKSUtypejAuhKShhh]r̚j/)r͚}rΚ(hX4Duplicate implicit target name: "building the demo".h}rϚ(h]h]h]h]h]uhjȚh]rКhX4Duplicate implicit target name: "building the demo".rњrҚ}rӚ(hUhj͚ubahj3ubaubj)rԚ}r՚(hUhjZhjhj>h}r֚(h]UlevelKh]h]rךj_aUsourcejh]h]UlineKuUtypejAuhKuhhh]rؚj/)rٚ}rښ(hX3Duplicate implicit target name: "running the demo".h}rۚ(h]h]h]h]h]uhjԚh]rܚhX3Duplicate implicit target name: "running the demo".rݚrޚ}rߚ(hUhjٚubahj3ubaubj)r}r(hUhh)r}r(hUhhhhhhh}r(h]h]h]h]rUsercos-iii-softmasterrah]rhxauhK\hhh]rh)r}r(hXSercos III Softmasterrhjhhhhh}r(h]h]h]h]h]uhK\hhh]rhXSercos III Softmasterrr}r(hjhjubaubaubhhhj>h}r(h]UlevelKh]h]Usourcehh]h]UlineK]UtypeUSEVEREruhK^hhh]r(j/)r}r(hXProblems with "include" directive path: InputError: [Errno 2] No such file or directory: 'source/rtos/Examples_and_Demonstrations/Sercos3_Softmaster_Demo.rst.inc'.h}r(h]h]h]h]h]uhjh]rhXProblems with "include" directive path: InputError: [Errno 2] No such file or directory: 'source/rtos/Examples_and_Demonstrations/Sercos3_Softmaster_Demo.rst.inc'.rr}r(hUhjubahj3ubj)r}r(hXI.. include:: Examples_and_Demonstrations/Sercos3_Softmaster_Demo.rst.inc h}r(jjh]h]h]h]h]uhjh]rhXI.. include:: Examples_and_Demonstrations/Sercos3_Softmaster_Demo.rst.inc rr}r(hUhjubahjubeubj)r}r(hUh}r(h]UlevelKh]h]Usourcehh]h]UlineK_UtypejY&uh]r(j/)r}r(hUh}r(h]h]h]h]h]uhjh]r hXTitle overline too short.r r }r (hUhjubahj3ubj)r }r(hXI********************** Interrupt Latency Benchmark **********************h}r(jjh]h]h]h]h]uhjh]rhXI********************** Interrupt Latency Benchmark **********************rr}r(hUhj ubahjubehj>ubj)r}r(hUhh)r}r(hUjKhhhhhhh}r(h]rXinterrupt latency benchmarkrah]h]h]rUinterrupt-latency-benchmarkrah]uhKahhh]r(h)r}r(hXInterrupt Latency Benchmarkr hjhhhhh}r!(h]h]h]h]h]uhKahhh]r"hXInterrupt Latency Benchmarkr#r$}r%(hj hjubaubj )r&}r'(hXwhttp://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_examples_demos.html#interrupt-latency-benchmarkhjhj XKsource/rtos/Examples_and_Demonstrations/Interrupt_Latency_Benchmark.rst.incr(r)}r*bhjh}r+(jjh]h]h]h]h]uhKhhh]r,hXwhttp://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_examples_demos.html#interrupt-latency-benchmarkr-r.}r/(hUhj&ubaubh)r0}r1(hUjKhjhj)hhh}r2(h]r3X introductionr4ah]h]h]r5Uid80r6ah]uhKhhh]r7(h)r8}r9(hX Introductionr:hj0hj)hhh}r;(h]h]h]h]h]uhKhhh]r<hX Introductionr=r>}r?(hj:hj8ubaubj/)r@}rA(hXThis page describes the interrupt latency benchmark provided in the Processor-SDK for RTOS. This benchmark gives several options for different types of load configurations.rBhj0hj)hj3h}rC(h]h]h]h]h]uhKhhh]rDhXThis page describes the interrupt latency benchmark provided in the Processor-SDK for RTOS. This benchmark gives several options for different types of load configurations.rErF}rG(hjBhj@ubaubj/)rH}rI(hXThis benchmark runs on:rJhj0hj)hj3h}rK(h]h]h]h]h]uhK hhh]rLhXThis benchmark runs on:rMrN}rO(hjJhjHubaubjQ)rP}rQ(hUhj0hj)hjTh}rR(jVX-h]h]h]h]h]uhK hhh]rSjX)rT}rU(hX AM572x (A15) hjPhj)hj[h}rV(h]h]h]h]h]uhNhhh]rWj/)rX}rY(hX AM572x (A15)rZhjThj)hj3h}r[(h]h]h]h]h]uhK h]r\hX AM572x (A15)r]r^}r_(hjZhjXubaubaubaubj/)r`}ra(hX\The sections below provide details of the application as well as build and run instructions.rbhj0hj)hj3h}rc(h]h]h]h]h]uhKhhh]rdhX\The sections below provide details of the application as well as build and run instructions.rerf}rg(hjbhj`ubaubeubh)rh}ri(hUjKhjhj)hhh}rj(h]rkX requirementsrlah]h]h]rmUid81rnah]uhKhhh]ro(h)rp}rq(hX Requirementsrrhjhhj)hhh}rs(h]h]h]h]h]uhKhhh]rthX Requirementsrurv}rw(hjrhjpubaubj/)rx}ry(hX?The following materials are required to run this demonstration:rzhjhhj)hj3h}r{(h]h]h]h]h]uhKhhh]r|hX?The following materials are required to run this demonstration:r}r~}r(hjzhjxubaubj/)r}r(hXHardwarerhjhhj)hj3h}r(h]h]h]h]h]uhKhhh]rhXHardwarerr}r(hjhjubaubjQ)r}r(hUhjhhj)hjTh}r(jVX-h]h]h]h]h]uhKhhh]r(jX)r}r(hXTI EVM (see list above)rhjhj)hj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhj)hj3h}r(h]h]h]h]h]uhKh]rhXTI EVM (see list above)rr}r(hjhjubaubaubjX)r}r(hX&Micro USB cable (provided in EVM kit) hjhj)hj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX%Micro USB cable (provided in EVM kit)rhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX%Micro USB cable (provided in EVM kit)rr}r(hjhjubaubaubeubj/)r}r(hXSoftwarerhjhhj)hj3h}r(h]h]h]h]h]uhKhhh]rhXSoftwarerr}r(hjhjubaubjQ)r}r(hUhjhhj)hjTh}r(jVX-h]h]h]h]h]uhKhhh]r(jX)r}r(hXProcessor-SDK RTOSrhjhj)hj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hjhjhj)hj3h}r(h]h]h]h]h]uhKh]rhXProcessor-SDK RTOSrr}r(hjhjubaubaubjX)r}r(hXCode Composer Studio hjhj)hj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXCode Composer Studior›hjhj)hj3h}rÛ(h]h]h]h]h]uhKh]rěhXCode Composer Studiorśrƛ}rǛ(hj›hjubaubaubeubeubh)rț}rɛ(hUjKhjhj)hhh}rʛ(h]r˛Xsoftware designr̛ah]h]h]r͛Uid82rΛah]uhK!hhh]rϛ(h)rЛ}rћ(hXSoftware Designrқhjțhj)hhh}rӛ(h]h]h]h]h]uhK!hhh]rԛhXSoftware Designr՛r֛}rכ(hjқhjЛubaubj/)r؛}rٛ(hXThe purpose of this benchmark is to measure the worst case interrupt latency under load. This load is achieved by simultaneously running a modified version of the Dhrystone benchmark.rڛhjțhj)hj3h}rۛ(h]h]h]h]h]uhK#hhh]rܛhXThe purpose of this benchmark is to measure the worst case interrupt latency under load. This load is achieved by simultaneously running a modified version of the Dhrystone benchmark.rݛrޛ}rߛ(hjڛhj؛ubaubh)r}r(hUhjțhj)hhh}r(h]h]h]h]rU dhrystonerah]rhauhK(hhh]r(h)r}r(hX Dhrystonerhjhj)hhh}r(h]h]h]h]h]uhK(hhh]rhX Dhrystonerr}r(hjhjubaubj/)r}r(hX?The Dhrystone code is modified to run continuously. Instead of testing the host system for DMIPS, Dhrystone threads are created repeatedly until the benchmark completes. Essentially, once a Dhrystone thread finishes, it is created again. Additionally, the user can specify the number of Dhrystone threads to be created.rhjhj)hj3h}r(h]h]h]h]h]uhK*hhh]rhX?The Dhrystone code is modified to run continuously. Instead of testing the host system for DMIPS, Dhrystone threads are created repeatedly until the benchmark completes. Essentially, once a Dhrystone thread finishes, it is created again. Additionally, the user can specify the number of Dhrystone threads to be created.rr}r(hjhjubaubeubh)r}r(hUjKhjțhj)hhh}r(h]rjah]h]h]rUid83rah]uhK1hhh]r(h)r}r(hXInterrupt Latency Benchmarkrhjhj)hhh}r(h]h]h]h]h]uhK1hhh]rhXInterrupt Latency Benchmarkrr}r(hjhjubaubj/)r}r(hXOSeveral design choices were made when creating the interrupt latency benchmark.rhjhj)hj3h}r (h]h]h]h]h]uhK3hhh]r hXOSeveral design choices were made when creating the interrupt latency benchmark.r r }r (hjhjubaubjQ)r}r(hUhjhj)hjTh}r(jVX-h]h]h]h]h]uhK6hhh]r(jX)r}r(hXThe benchmark task is set to core 0 * Core 0 is the A15_0 core, and is the primary core for the benchmark. The benchmark is forced to operate only on this core, no matter the load. This is achieved by setting the affinity of the task parameter to 0hjhNhj[h}r(h]h]h]h]h]uhNhhh]rj~)r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hXThe benchmark task is set to core 0 * Core 0 is the A15_0 core, and is the primary core for the benchmark. The benchmark is forced to operate only on this core, no matter the load. This is achieved by setting the affinity of the task parameter to 0hjhj)hjh}r(h]h]h]h]h]uhK9h]r(j)r}r(hX#The benchmark task is set to core 0r hjhj)hjh}r!(h]h]h]h]h]uhK9h]r"hX#The benchmark task is set to core 0r#r$}r%(hj hjubaubj)r&}r'(hUh}r((h]h]h]h]h]uhjh]r)jQ)r*}r+(hUh}r,(jVX*h]h]h]h]h]uhj&h]r-jX)r.}r/(hXCore 0 is the A15_0 core, and is the primary core for the benchmark. The benchmark is forced to operate only on this core, no matter the load. This is achieved by setting the affinity of the task parameter to 0h}r0(h]h]h]h]h]uhj*h]r1j/)r2}r3(hXCore 0 is the A15_0 core, and is the primary core for the benchmark. The benchmark is forced to operate only on this core, no matter the load. This is achieved by setting the affinity of the task parameter to 0r4hj.hj)hj3h}r5(h]h]h]h]h]uhK7h]r6hXCore 0 is the A15_0 core, and is the primary core for the benchmark. The benchmark is forced to operate only on this core, no matter the load. This is achieved by setting the affinity of the task parameter to 0r7r8}r9(hj4hj2ubaubahj[ubahjTubahjהubeubahjؔubaubjX)r:}r;(hXThe benchmark task needs to have a higher priority than the Dhrystone threads * If the Dhrystone threads have a priority level that is greater than or equal to the benchmark task priority, then the scheduler will schedule the two to execute one after another. Thus, the benchmark task will not run while the Dhrystone thread is running, but the timer will continue to fire. As a result, the benchmark task is stalled and returns invalid data when it resumeshjhNhj[h}r<(h]h]h]h]h]uhNhhh]r=j~)r>}r?(hUh}r@(h]h]h]h]h]uhj:h]rAj)rB}rC(hXThe benchmark task needs to have a higher priority than the Dhrystone threads * If the Dhrystone threads have a priority level that is greater than or equal to the benchmark task priority, then the scheduler will schedule the two to execute one after another. Thus, the benchmark task will not run while the Dhrystone thread is running, but the timer will continue to fire. As a result, the benchmark task is stalled and returns invalid data when it resumeshj>hj)hjh}rD(h]h]h]h]h]uhK@h]rE(j)rF}rG(hXMThe benchmark task needs to have a higher priority than the Dhrystone threadsrHhjBhj)hjh}rI(h]h]h]h]h]uhK@h]rJhXMThe benchmark task needs to have a higher priority than the Dhrystone threadsrKrL}rM(hjHhjFubaubj)rN}rO(hUh}rP(h]h]h]h]h]uhjBh]rQjQ)rR}rS(hUh}rT(jVX*h]h]h]h]h]uhjNh]rUjX)rV}rW(hXyIf the Dhrystone threads have a priority level that is greater than or equal to the benchmark task priority, then the scheduler will schedule the two to execute one after another. Thus, the benchmark task will not run while the Dhrystone thread is running, but the timer will continue to fire. As a result, the benchmark task is stalled and returns invalid data when it resumesh}rX(h]h]h]h]h]uhjRh]rYj/)rZ}r[(hXyIf the Dhrystone threads have a priority level that is greater than or equal to the benchmark task priority, then the scheduler will schedule the two to execute one after another. Thus, the benchmark task will not run while the Dhrystone thread is running, but the timer will continue to fire. As a result, the benchmark task is stalled and returns invalid data when it resumesr\hjVhj)hj3h}r](h]h]h]h]h]uhK/benchmarks/interrupt_latencyhjhj)hjh}r(jjh]h]h]h]h]uhMhhh]rhX4/benchmarks/interrupt_latencyrr}r(hUhjubaubeubeubh)r}r(hUjKhjhj)hhh}r(h]rXhow to run the demorah]h]h]rUid86rah]uhKWhhh]r(h)r}r(hXHow to Run the Demorœhjhj)hhh}rÜ(h]h]h]h]h]uhKWhhh]rĜhXHow to Run the DemorŜrƜ}rǜ(hjœhjubaubj/)rȜ}rɜ(hXAfter building the benchmark, locate the binary under the relevant device directory in the interrupt latency benchmark's bin/ directory. Additionally, power on the board, connect the micro-USB cable to the UART port, and begin a UART console.rʜhjhj)hj3h}r˜(h]h]h]h]h]uhKYhhh]r̜hXAfter building the benchmark, locate the binary under the relevant device directory in the interrupt latency benchmark's bin/ directory. Additionally, power on the board, connect the micro-USB cable to the UART port, and begin a UART console.r͜rΜ}rϜ(hjʜhjȜubaubj)rМ}rќ(hX?/benchmarks/interrupt_latency/bin//hjhj)hjh}rҜ(jjh]h]h]h]h]uhMhhh]rӜhX?/benchmarks/interrupt_latency/bin//rԜr՜}r֜(hUhjМubaubh)rל}r؜(hUhjhj)hhh}rٜ(h]h]h]h]rڜUccsrۜah]rܜhauhKdhhh]rݜ(h)rޜ}rߜ(hXCCSrhjלhj)hhh}r(h]h]h]h]h]uhKdhhh]rhXCCSrr}r(hjhjޜubaubj/)r}r(hXCTo run the benchmark on AM572xx using CCS, use the following steps.rhjלhj)hj3h}r(h]h]h]h]h]uhKfhhh]rhXCTo run the benchmark on AM572xx using CCS, use the following steps.rr}r(hjhjubaubj)r}r(hUhjלhj)hjh}r(jU.h]h]h]jUh]h]jjuhKhhhh]r(jX)r}r(hXUsing CCS, launch the target configuration for the EVM CCS-Target Configurations (http://software-dl.ti.com/ccs/esd/documents/ccs_custom_target_config.html)hjhj)hj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hXUsing CCS, launch the target configuration for the EVM CCS-Target Configurations (http://software-dl.ti.com/ccs/esd/documents/ccs_custom_target_config.html)hjhj)hj3h}r(h]h]h]h]h]uhKhh]r(hXRUsing CCS, launch the target configuration for the EVM CCS-Target Configurations (rr}r(hXRUsing CCS, launch the target configuration for the EVM CCS-Target Configurations (hjubj)r}r(hXIhttp://software-dl.ti.com/ccs/esd/documents/ccs_custom_target_config.htmlrh}r(Urefurijh]h]h]h]h]uhjh]rhXIhttp://software-dl.ti.com/ccs/esd/documents/ccs_custom_target_config.htmlrr}r(hUhjubahjubhX)r}r(hX)hjubeubaubjX)r}r(hX~In the CCS debug view, create a sync group (http://software-dl.ti.com/ccs/esd/documents/ccs_smp-debug.html) with the A15 coreshjhj)hj[h}r (h]h]h]h]h]uhNhhh]r j/)r }r (hX~In the CCS debug view, create a sync group (http://software-dl.ti.com/ccs/esd/documents/ccs_smp-debug.html) with the A15 coreshjhj)hj3h}r (h]h]h]h]h]uhKjh]r(hX,In the CCS debug view, create a sync group (rr}r(hX,In the CCS debug view, create a sync group (hj ubj)r}r(hX>http://software-dl.ti.com/ccs/esd/documents/ccs_smp-debug.htmlrh}r(Urefurijh]h]h]h]h]uhj h]rhX>http://software-dl.ti.com/ccs/esd/documents/ccs_smp-debug.htmlrr}r(hUhjubahjubhX) with the A15 coresrr}r(hX) with the A15 coreshj ubeubaubjX)r}r(hXFor each core, connect to it and load the binary. The A15_0 core should halt at main while the SMP linked cores will begin auto-running upon loadhjhj)hj[h}r(h]h]h]h]h]uhNhhh]r j/)r!}r"(hXFor each core, connect to it and load the binary. The A15_0 core should halt at main while the SMP linked cores will begin auto-running upon loadr#hjhj)hj3h}r$(h]h]h]h]h]uhKlh]r%hXFor each core, connect to it and load the binary. The A15_0 core should halt at main while the SMP linked cores will begin auto-running upon loadr&r'}r((hj#hj!ubaubaubjX)r)}r*(hX-Once all cores have been loaded, run them allr+hjhj)hj[h}r,(h]h]h]h]h]uhNhhh]r-j/)r.}r/(hj+hj)hj)hj3h}r0(h]h]h]h]h]uhKoh]r1hX-Once all cores have been loaded, run them allr2r3}r4(hj+hj.ubaubaubjX)r5}r6(hX8The output will be sent to the UART console in real timer7hjhj)hj[h}r8(h]h]h]h]h]uhNhhh]r9j/)r:}r;(hj7hj5hj)hj3h}r<(h]h]h]h]h]uhKph]r=hX8The output will be sent to the UART console in real timer>r?}r@(hj7hj:ubaubaubjX)rA}rB(hX6You must manually halt the cores to end the benchmark hjhj)hj[h}rC(h]h]h]h]h]uhNhhh]rDj/)rE}rF(hX5You must manually halt the cores to end the benchmarkrGhjAhj)hj3h}rH(h]h]h]h]h]uhKqh]rIhX5You must manually halt the cores to end the benchmarkrJrK}rL(hjGhjEubaubaubeubj))rM}rN(hXl- If running in non-SMP mode, do not create a sync group. Only load and run the binary on the A15_0 corehjלhNhj,h}rO(h]h]h]h]h]uhNhhh]rPjQ)rQ}rR(hUh}rS(jVX-h]h]h]h]h]uhjMh]rTjX)rU}rV(hXfIf running in non-SMP mode, do not create a sync group. Only load and run the binary on the A15_0 coreh}rW(h]h]h]h]h]uhjQh]rXj/)rY}rZ(hXfIf running in non-SMP mode, do not create a sync group. Only load and run the binary on the A15_0 corer[hjUhj)hj3h}r\(h]h]h]h]h]uhKth]r]hXfIf running in non-SMP mode, do not create a sync group. Only load and run the binary on the A15_0 corer^r_}r`(hj[hjYubaubahj[ubahjTubaubeubh)ra}rb(hUhjhj)hhh}rc(h]h]h]h]rdUsecondary-bootloader-sblreah]rfhrauhKxhhh]rg(h)rh}ri(hXSecondary Bootloader (SBL)rjhjahj)hhh}rk(h]h]h]h]h]uhKxhhh]rlhXSecondary Bootloader (SBL)rmrn}ro(hjjhjhubaubj/)rp}rq(hXTo run the benchmark on a micro-SD card, follow the corresponding steps for AM57x (http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#am57x)hjahj)hj3h}rr(h]h]h]h]h]uhKzhhh]rs(hXSTo run the benchmark on a micro-SD card, follow the corresponding steps for AM57x (rtru}rv(hXSTo run the benchmark on a micro-SD card, follow the corresponding steps for AM57x (hjpubj)rw}rx(hXjhttp://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#am57xryh}rz(Urefurijyh]h]h]h]h]uhjph]r{hXjhttp://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_Foundational_Components.html#am57xr|r}}r~(hUhjwubahjubhX)r}r(hX)hjpubeubj))r}r(hX/- The binary is the same format as a .out filerhjahNhj,h}r(h]h]h]h]h]uhNhhh]rjQ)r}r(hUh}r(jVX-h]h]h]h]h]uhjh]rjX)r}r(hX,The binary is the same format as a .out filerh}r(h]h]h]h]h]uhjh]rj/)r}r(hjhjhj)hj3h}r(h]h]h]h]h]uhK~h]rhX,The binary is the same format as a .out filerr}r(hjhjubaubahj[ubahjTubaubeubeubh)r}r(hUhjhj)hhh}r(h]h]h]h]rUknown-issues-and-limitationsrah]rhauhKhhh]r(h)r}r(hXKnown Issues and Limitationsrhjhj)hhh}r(h]h]h]h]h]uhKhhh]rhXKnown Issues and Limitationsrr}r(hjhjubaubj/)r}r(hXZWhen running the benchmark, keep in mind the following issues which are still being fixed.rhjhj)hj3h}r(h]h]h]h]h]uhKhhh]rhXZWhen running the benchmark, keep in mind the following issues which are still being fixed.rr}r(hjhjubaubj)r}r(hUhjhj)hjh}r(jU.h]h]h]jUh]h]jjuhKhhh]rjX)r}r(hXAThe cause for several outliers in the data is being investigated hjhj)hj[h}r(h]h]h]h]h]uhNhhh]rj/)r}r(hX@The cause for several outliers in the data is being investigatedrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX@The cause for several outliers in the data is being investigatedrr}r(hjhjubaubaubaubeubh)r}r(hUhjhj)hhh}r(h]h]h]h]rUresultsrah]rh auhKhhh]rÝ(h)rĝ}rŝ(hXResultsrƝhjhj)hhh}rǝ(h]h]h]h]h]uhKhhh]rȝhXResultsrɝrʝ}r˝(hjƝhjĝubaubj)r̝}r͝(hUhjhj)hjh}rΝ(h]h]h]h]h]uhNhhh]rϝj:)rН}rѝ(hUh}rҝ(h]h]h]h]h]uhj̝h]rӝj@)rԝ}r՝(hUh}r֝(h]h]h]h]h]UcolsKuhjНh]rם(jE)r؝}rٝ(hUh}rڝ(h]h]h]h]h]UcolwidthKuhjԝh]hjIubjE)r۝}rܝ(hUh}rݝ(h]h]h]h]h]UcolwidthKuhjԝh]hjIubjE)rޝ}rߝ(hUh}r(h]h]h]h]h]UcolwidthKuhjԝh]hjIubjE)r}r(hUh}r(h]h]h]h]h]UcolwidthKuhjԝh]hjIubjE)r}r(hUh}r(h]h]h]h]h]UcolwidthKuhjԝh]hjIubjE)r}r(hUh}r(h]h]h]h]h]UcolwidthKuhjԝh]hjIubjE)r}r(hUh}r(h]h]h]h]h]UcolwidthKuhjԝh]hjIubjS)r}r(hUh}r(h]h]h]h]h]uhjԝh]rjX)r}r(hUh}r(h]h]h]h]h]uhjh]r(j])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hXAM572xrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhXAM572xrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hXSMP Disabled Dhrystone Disabledrhjhj)hj3h}r(h]h]h]h]h]uhKh]r hXSMP Disabled Dhrystone Disabledr r }r (hjhjubaubahjjubj])r }r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX.SMP Disabled Dhrystone Enabled One Dhry Threadrhj hj)hj3h}r(h]h]h]h]h]uhKh]rhX.SMP Disabled Dhrystone Enabled One Dhry Threadrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX/SMP Disabled Dhrystone Enabled Two Dhry Threadsrhjhj)hj3h}r (h]h]h]h]h]uhKh]r!hX/SMP Disabled Dhrystone Enabled Two Dhry Threadsr"r#}r$(hjhjubaubahjjubj])r%}r&(hUh}r'(h]h]h]h]h]uhjh]r(j/)r)}r*(hXSMP Enabled Dhrystone Disabledr+hj%hj)hj3h}r,(h]h]h]h]h]uhKh]r-hXSMP Enabled Dhrystone Disabledr.r/}r0(hj+hj)ubaubahjjubj])r1}r2(hUh}r3(h]h]h]h]h]uhjh]r4j/)r5}r6(hX-SMP Enabled Dhrystone Enabled One Dhry Threadr7hj1hj)hj3h}r8(h]h]h]h]h]uhKh]r9hX-SMP Enabled Dhrystone Enabled One Dhry Threadr:r;}r<(hj7hj5ubaubahjjubj])r=}r>(hUh}r?(h]h]h]h]h]uhjh]r@j/)rA}rB(hX.SMP Enabled Dhrystone Enabled Two Dhry ThreadsrChj=hj)hj3h}rD(h]h]h]h]h]uhKh]rEhX.SMP Enabled Dhrystone Enabled Two Dhry ThreadsrFrG}rH(hjChjAubaubahjjubehjubahjubj)rI}rJ(hUh}rK(h]h]h]h]h]uhjԝh]rL(jX)rM}rN(hUh}rO(h]h]h]h]h]uhjIh]rP(j])rQ}rR(hUh}rS(h]h]h]h]h]uhjMh]rTj/)rU}rV(hX**HW Interrupt Latency**rWhjQhj)hj3h}rX(h]h]h]h]h]uhKh]rYjW)rZ}r[(hjWh}r\(h]h]h]h]h]uhjUh]r]hXHW Interrupt Latencyr^r_}r`(hUhjZubahj_ubaubahjjubj])ra}rb(hUh}rc(h]h]h]h]h]uhjMh]hjjubj])rd}re(hUh}rf(h]h]h]h]h]uhjMh]hjjubj])rg}rh(hUh}ri(h]h]h]h]h]uhjMh]hjjubj])rj}rk(hUh}rl(h]h]h]h]h]uhjMh]hjjubj])rm}rn(hUh}ro(h]h]h]h]h]uhjMh]hjjubj])rp}rq(hUh}rr(h]h]h]h]h]uhjMh]hjjubehjubjX)rs}rt(hUh}ru(h]h]h]h]h]uhjIh]rv(j])rw}rx(hUh}ry(h]h]h]h]h]uhjsh]rzj/)r{}r|(hX**Average Max**r}hjwhj)hj3h}r~(h]h]h]h]h]uhKh]rjW)r}r(hj}h}r(h]h]h]h]h]uhj{h]rhX Average Maxrr}r(hUhjubahj_ubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjsh]rj/)r}r(hX0.602 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX0.602 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjsh]rj/)r}r(hX0.576 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX0.576 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjsh]rj/)r}r(hX0.579 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX0.579 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjsh]rj/)r}r(hX1.159 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX1.159 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjsh]rj/)r}r(hX1.150 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX1.150 usrr}rž(hjhjubaubahjjubj])rÞ}rĞ(hUh}rŞ(h]h]h]h]h]uhjsh]rƞj/)rǞ}rȞ(hX1.063 usrɞhjÞhj)hj3h}rʞ(h]h]h]h]h]uhKh]r˞hX1.063 usr̞r͞}rΞ(hjɞhjǞubaubahjjubehjubjX)rϞ}rО(hUh}rў(h]h]h]h]h]uhjIh]rҞ(j])rӞ}rԞ(hUh}r՞(h]h]h]h]h]uhjϞh]r֞j/)rמ}r؞(hX**Average Min**rٞhjӞhj)hj3h}rڞ(h]h]h]h]h]uhKh]r۞jW)rܞ}rݞ(hjٞh}rޞ(h]h]h]h]h]uhjמh]rߞhX Average Minrr}r(hUhjܞubahj_ubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjϞh]rj/)r}r(hX0.572 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX0.572 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjϞh]rj/)r}r(hX0.572 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX0.572 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjϞh]rj/)r}r(hX0.572 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX0.572 usrr}r(hjhjubaubahjjubj])r}r(hUh}r (h]h]h]h]h]uhjϞh]r j/)r }r (hX1.121 usr hjhj)hj3h}r(h]h]h]h]h]uhKh]rhX1.121 usrr}r(hj hj ubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjϞh]rj/)r}r(hX1.102 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX1.102 usrr}r(hjhjubaubahjjubj])r}r (hUh}r!(h]h]h]h]h]uhjϞh]r"j/)r#}r$(hX1.040 usr%hjhj)hj3h}r&(h]h]h]h]h]uhKh]r'hX1.040 usr(r)}r*(hj%hj#ubaubahjjubehjubjX)r+}r,(hUh}r-(h]h]h]h]h]uhjIh]r.(j])r/}r0(hUh}r1(h]h]h]h]h]uhj+h]r2j/)r3}r4(hX**Absolute Max**r5hj/hj)hj3h}r6(h]h]h]h]h]uhKh]r7jW)r8}r9(hj5h}r:(h]h]h]h]h]uhj3h]r;hX Absolute Maxr<r=}r>(hUhj8ubahj_ubaubahjjubj])r?}r@(hUh}rA(h]h]h]h]h]uhj+h]rBj/)rC}rD(hX1.510 usrEhj?hj)hj3h}rF(h]h]h]h]h]uhKh]rGhX1.510 usrHrI}rJ(hjEhjCubaubahjjubj])rK}rL(hUh}rM(h]h]h]h]h]uhj+h]rNj/)rO}rP(hX1.354 usrQhjKhj)hj3h}rR(h]h]h]h]h]uhKh]rShX1.354 usrTrU}rV(hjQhjOubaubahjjubj])rW}rX(hUh}rY(h]h]h]h]h]uhj+h]rZj/)r[}r\(hX1.354 usr]hjWhj)hj3h}r^(h]h]h]h]h]uhKh]r_hX1.354 usr`ra}rb(hj]hj[ubaubahjjubj])rc}rd(hUh}re(h]h]h]h]h]uhj+h]rfj/)rg}rh(hX2.916 usrihjchj)hj3h}rj(h]h]h]h]h]uhKh]rkhX2.916 usrlrm}rn(hjihjgubaubahjjubj])ro}rp(hUh}rq(h]h]h]h]h]uhj+h]rrj/)rs}rt(hX2.916 usruhjohj)hj3h}rv(h]h]h]h]h]uhKh]rwhX2.916 usrxry}rz(hjuhjsubaubahjjubj])r{}r|(hUh}r}(h]h]h]h]h]uhj+h]r~j/)r}r(hX3.385 usrhj{hj)hj3h}r(h]h]h]h]h]uhKh]rhX3.385 usrr}r(hjhjubaubahjjubehjubjX)r}r(hUh}r(h]h]h]h]h]uhjIh]r(j])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX**Absolute Min**rhjhj)hj3h}r(h]h]h]h]h]uhKh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Absolute Minrr}r(hUhjubahj_ubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX0.572 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX0.572 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX0.572 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX0.572 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX0.572 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX0.572 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rŸj/)rß}rğ(hX1.041 usrşhjhj)hj3h}rƟ(h]h]h]h]h]uhKh]rǟhX1.041 usrȟrɟ}rʟ(hjşhjßubaubahjjubj])r˟}r̟(hUh}r͟(h]h]h]h]h]uhjh]rΟj/)rϟ}rП(hX0.885 usrџhj˟hj)hj3h}rҟ(h]h]h]h]h]uhKh]rӟhX0.885 usrԟr՟}r֟(hjџhjϟubaubahjjubj])rן}r؟(hUh}rٟ(h]h]h]h]h]uhjh]rڟj/)r۟}rܟ(hX0.885 usrݟhjןhj)hj3h}rޟ(h]h]h]h]h]uhKh]rߟhX0.885 usrr}r(hjݟhj۟ubaubahjjubehjubjX)r}r(hUh}r(h]h]h]h]h]uhjIh]r(j])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX**Semaphore Wake Latency**rhjhj)hj3h}r(h]h]h]h]h]uhKh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhXSemaphore Wake Latencyrr}r(hUhjubahj_ubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]hjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]hjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]hjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]hjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]hjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]hjjubehjubjX)r }r (hUh}r (h]h]h]h]h]uhjIh]r (j])r }r(hUh}r(h]h]h]h]h]uhj h]rj/)r}r(hX**Average Max**rhj hj)hj3h}r(h]h]h]h]h]uhKh]rjW)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Average Maxrr}r(hUhjubahj_ubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhj h]r j/)r!}r"(hX1.281 usr#hjhj)hj3h}r$(h]h]h]h]h]uhKh]r%hX1.281 usr&r'}r((hj#hj!ubaubahjjubj])r)}r*(hUh}r+(h]h]h]h]h]uhj h]r,j/)r-}r.(hX1.329 usr/hj)hj)hj3h}r0(h]h]h]h]h]uhKh]r1hX1.329 usr2r3}r4(hj/hj-ubaubahjjubj])r5}r6(hUh}r7(h]h]h]h]h]uhj h]r8j/)r9}r:(hX1.281 usr;hj5hj)hj3h}r<(h]h]h]h]h]uhKh]r=hX1.281 usr>r?}r@(hj;hj9ubaubahjjubj])rA}rB(hUh}rC(h]h]h]h]h]uhj h]rDj/)rE}rF(hX2.645 usrGhjAhj)hj3h}rH(h]h]h]h]h]uhKh]rIhX2.645 usrJrK}rL(hjGhjEubaubahjjubj])rM}rN(hUh}rO(h]h]h]h]h]uhj h]rPj/)rQ}rR(hX2.665 usrShjMhj)hj3h}rT(h]h]h]h]h]uhKh]rUhX2.665 usrVrW}rX(hjShjQubaubahjjubj])rY}rZ(hUh}r[(h]h]h]h]h]uhj h]r\j/)r]}r^(hX2.812 usr_hjYhj)hj3h}r`(h]h]h]h]h]uhKh]rahX2.812 usrbrc}rd(hj_hj]ubaubahjjubehjubjX)re}rf(hUh}rg(h]h]h]h]h]uhjIh]rh(j])ri}rj(hUh}rk(h]h]h]h]h]uhjeh]rlj/)rm}rn(hX**Average Min**rohjihj)hj3h}rp(h]h]h]h]h]uhKh]rqjW)rr}rs(hjoh}rt(h]h]h]h]h]uhjmh]ruhX Average Minrvrw}rx(hUhjrubahj_ubaubahjjubj])ry}rz(hUh}r{(h]h]h]h]h]uhjeh]r|j/)r}}r~(hX1.249 usrhjyhj)hj3h}r(h]h]h]h]h]uhKh]rhX1.249 usrr}r(hjhj}ubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjeh]rj/)r}r(hX1.250 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX1.250 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjeh]rj/)r}r(hX1.250 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX1.250 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjeh]rj/)r}r(hX2.581 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX2.581 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjeh]rj/)r}r(hX2.551 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX2.551 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjeh]rj/)r}r(hX2.657 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX2.657 usrr}r(hjhjubaubahjjubehjubjX)r}r (hUh}rà(h]h]h]h]h]uhjIh]rĠ(j])rŠ}rƠ(hUh}rǠ(h]h]h]h]h]uhjh]rȠj/)rɠ}rʠ(hX**Absolute Max**rˠhjŠhj)hj3h}r̠(h]h]h]h]h]uhKh]r͠jW)rΠ}rϠ(hjˠh}rР(h]h]h]h]h]uhjɠh]rѠhX Absolute MaxrҠrӠ}rԠ(hUhjΠubahj_ubaubahjjubj])rՠ}r֠(hUh}rנ(h]h]h]h]h]uhjh]rؠj/)r٠}rڠ(hX2.968 usr۠hjՠhj)hj3h}rܠ(h]h]h]h]h]uhKh]rݠhX2.968 usrޠrߠ}r(hj۠hj٠ubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX2.812 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX2.812 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX2.812 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX2.812 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX5.625 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX5.625 usrr}r(hjhjubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r }r (hX5.468 usr hjhj)hj3h}r (h]h]h]h]h]uhKh]r hX5.468 usrr}r(hj hj ubaubahjjubj])r}r(hUh}r(h]h]h]h]h]uhjh]rj/)r}r(hX7.500 usrhjhj)hj3h}r(h]h]h]h]h]uhKh]rhX7.500 usrr}r(hjhjubaubahjjubehjubjX)r}r(hUh}r(h]h]h]h]h]uhjIh]r (j])r!}r"(hUh}r#(h]h]h]h]h]uhjh]r$j/)r%}r&(hX**Absolute Min**r'hj!hj)hj3h}r((h]h]h]h]h]uhKh]r)jW)r*}r+(hj'h}r,(h]h]h]h]h]uhj%h]r-hX Absolute Minr.r/}r0(hUhj*ubahj_ubaubahjjubj])r1}r2(hUh}r3(h]h]h]h]h]uhjh]r4j/)r5}r6(hX1.093 usr7hj1hj)hj3h}r8(h]h]h]h]h]uhKh]r9hX1.093 usr:r;}r<(hj7hj5ubaubahjjubj])r=}r>(hUh}r?(h]h]h]h]h]uhjh]r@j/)rA}rB(hX1.250 usrChj=hj)hj3h}rD(h]h]h]h]h]uhKh]rEhX1.250 usrFrG}rH(hjChjAubaubahjjubj])rI}rJ(hUh}rK(h]h]h]h]h]uhjh]rLj/)rM}rN(hX1.250 usrOhjIhj)hj3h}rP(h]h]h]h]h]uhKh]rQhX1.250 usrRrS}rT(hjOhjMubaubahjjubj])rU}rV(hUh}rW(h]h]h]h]h]uhjh]rXj/)rY}rZ(hX2.343 usr[hjUhj)hj3h}r\(h]h]h]h]h]uhKh]r]hX2.343 usr^r_}r`(hj[hjYubaubahjjubj])ra}rb(hUh}rc(h]h]h]h]h]uhjh]rdj/)re}rf(hX2.343 usrghjahj)hj3h}rh(h]h]h]h]h]uhKh]rihX2.343 usrjrk}rl(hjghjeubaubahjjubj])rm}rn(hUh}ro(h]h]h]h]h]uhjh]rpj/)rq}rr(hX2.343 usrshjmhj)hj3h}rt(h]h]h]h]h]uhKh]ruhX2.343 usrvrw}rx(hjshjqubaubahjjubehjubehjubehjubahj=ubaubeubeubhhhj>h}ry(h]UlevelKh]h]Usourcehh]h]UlineK_UtypejY&uhKahhh]rz(j/)r{}r|(hXTitle overline too short.h}r}(h]h]h]h]h]uhjh]r~hXTitle overline too short.rr}r(hUhj{ubahj3ubj)r}r(hXI********************** Interrupt Latency Benchmark **********************h}r(jjh]h]h]h]h]uhjh]rhXI********************** Interrupt Latency Benchmark **********************rr}r(hUhjubahjubeubj)r}r(hUhj0hj)hj>h}r(h]UlevelKh]h]rj6aUsourcej)h]h]UlineKUtypejAuhKhhh]rj/)r}r(hX/Duplicate implicit target name: "introduction".h}r(h]h]h]h]h]uhjh]rhX/Duplicate implicit target name: "introduction".rr}r(hUhjubahj3ubaubj)r}r(hUhjhhj)hj>h}r(h]UlevelKh]h]rjnaUsourcej)h]h]UlineKUtypejAuhKhhh]rj/)r}r(hX/Duplicate implicit target name: "requirements".h}r(h]h]h]h]h]uhjh]rhX/Duplicate implicit target name: "requirements".rr}r(hUhjubahj3ubaubj)r}r(hUhjțhj)hj>h}r(h]UlevelKh]h]rjΛaUsourcej)h]h]UlineK!UtypejAuhK!hhh]rj/)r}r(hX2Duplicate implicit target name: "software design".h}r(h]h]h]h]h]uhjh]rhX2Duplicate implicit target name: "software design".rr}r(hUhjubahj3ubaubj)r}r(hUhjhj)hj>h}r(h]UlevelKh]h]rjaUsourcej)h]h]UlineK1UtypejAuhK1hhh]rj/)r}r(hX>Duplicate implicit target name: "interrupt latency benchmark".h}r(h]h]h]h]h]uhjh]rhX>Duplicate implicit target name: "interrupt latency benchmark".rr}r(hUhjubahj3ubaubj)r}r(hUhjhj)hj>h}r(h]UlevelKh]h]rjaUsourcej)h]h]UlineKFUtypejAuhKFhhh]rj/)r}r(hX8Duplicate implicit target name: "how to build the demo".h}r(h]h]h]h]h]uhjh]rhX8Duplicate implicit target name: "how to build the demo".r¡rá}rġ(hUhjubahj3ubaubj)rš}rơ(hUhjhj)hj>h}rǡ(h]UlevelKh]h]rȡjaUsourcej)h]h]UlineKIUtypejAuhKIhhh]rɡj/)rʡ}rˡ(hX5Duplicate implicit target name: "processor-sdk rtos".h}r̡(h]h]h]h]h]uhjšh]r͡hX5Duplicate implicit target name: "processor-sdk rtos".rΡrϡ}rС(hUhjʡubahj3ubaubj)rѡ}rҡ(hUhjhj)hj>h}rӡ(h]UlevelKh]h]rԡjaUsourcej)h]h]UlineKWUtypejAuhKWhhh]rաj/)r֡}rס(hX6Duplicate implicit target name: "how to run the demo".h}rء(h]h]h]h]h]uhjѡh]r١hX6Duplicate implicit target name: "how to run the demo".rڡrۡ}rܡ(hUhj֡ubahj3ubaubj)rݡ}rޡ(hUhjhXbinternal padding after source/rtos/Examples_and_Demonstrations/Interrupt_Latency_Benchmark.rst.incrߡhj>h}r(h]UlevelKh]h]Usourcej)h]h]UlineKUtypejfuhKhhh]r(j/)r}r(hX;Content block expected for the "raw" directive; none found.h}r(h]h]h]h]h]uhjݡh]rhX;Content block expected for the "raw" directive; none found.rr}r(hUhjubahj3ubj)r}r(hX.. raw:: html h}r(jjh]h]h]h]h]uhjݡh]rhX.. raw:: html rr}r(hUhjubahjubeubeUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hjhj6hjh j.2h jh Nh jp{h juhjhj:hNhj<hj4hj5hjhjN1hjP3hNhjAhj-.hjXwhj<hjDhj hj,:hjh jh!Nh"jQ.h#jh$jxxh%j9h&jh'jh(j2h)jh*Nh+js|h,jh-jh.jh/jDh0Nh1j8h2jh3jh4jQh5jwh6jAGh7jh8jbh9jh:jh;NhNh?Nh@jDhAjhBNhCjhDjhEjÓhFjhGNhHNhIjhhJjhKjQzhLNhMjl(hNjJ4hOj<hPjY7hQj9#hRj:hSj hTNhUNhVj~hWj-hXjhYj8hZjh[j%h\j-h]Nh^j%h_jubj)r}r(hUh}r(h]UlevelKh]h]Usourcehh]h]UlineMUtypejAuh]rj/)r}r(hUh}r(h]h]h]h]h]uhjh]rhXEHyperlink target "demo-simplelink-wifi-demo-label" is not referenced.rr}r(hUhjubahj3ubahj>ubeUreporterrNUid_startrKXU autofootnotesr]rU citation_refsr }r!Uindirect_targetsr"]r#Usettingsr$(cdocutils.frontend Values r%or&}r'(Ufootnote_backlinksr(KUrecord_dependenciesr)NU rfc_base_urlr*Uhttps://tools.ietf.org/html/r+U tracebackr,Upep_referencesr-NUstrip_commentsr.NU toc_backlinksr/jjU language_coder0Uenr1U datestampr2NU report_levelr3KU _destinationr4NU halt_levelr5KU strip_classesr6NhNUerror_encoding_error_handlerr7Ubackslashreplacer8Udebugr9NUembed_stylesheetr:Uoutput_encoding_error_handlerr;Ustrictr<U sectnum_xformr=KUdump_transformsr>NU docinfo_xformr?KUwarning_streamr@NUpep_file_url_templaterAUpep-%04drBUexit_status_levelrCKUconfigrDNUstrict_visitorrENUcloak_email_addressesrFUtrim_footnote_reference_spacerGUenvrHNUdump_pseudo_xmlrINUexpose_internalsrJNUsectsubtitle_xformrKU source_linkrLNUrfc_referencesrMNUoutput_encodingrNUutf-8rOU source_urlrPNUinput_encodingrQU utf-8-sigrRU_disable_configrSNU id_prefixrTUU tab_widthrUKUerror_encodingrVUUTF-8rWU_sourcerXhUgettext_compactrYU generatorrZNUdump_internalsr[NU smart_quotesr\U pep_base_urlr]U https://www.python.org/dev/peps/r^Usyntax_highlightr_Ulongr`Uinput_encoding_error_handlerraj<Uauto_id_prefixrbUidrcUdoctitle_xformrdUstrip_elements_with_classesreNU _config_filesrf]Ufile_insertion_enabledrgU raw_enabledrhKU dump_settingsriNubUsymbol_footnote_startrjKUidsrk}rl(jjjjj0j0j1j1jMjMjHjHj[GjVGjX"jS"j9j8jjj:j6j@1j:1j0j0j=-j9-jj݌j-j-jujpjjjÓjj j j:j6jjjhjdjRjLjjj8Rj3Rjjjj>j;j:j<j7jjjjj)jcj^jjjjjхj̅j<j8jjj!jjVjRjjj%j%jEjAjj}j}j}jq$jm$jijcj:j:j \j\jΛjțjnjhj<j8jXwjTwjjjjjAj=j'"j#"jjjjj"j"j' j# jp%jl%jQzjLzj j j{j{jjjjjjjjj2jj j j/j*jZjxj hjjj j jBj=jjjl(jh(j34j/4juj}uj~j~jd@j^@j3j/jjjDjDj:j:jDj@j#j#jjj9j9jwjwjD9j@9jjjAjAj(j(jPyjKyjjjjj&j"jR$jN$j,j,jjjjjp{jk{j:j:j*j$jKjGj9j9jjjjj6j2j2j2jxjxjjjjjjjjj_jZj#8j8jƅjj#j#jT9jO9j"j"jjj|jlj(j(jFzjAzj8j8jшj̈j6j6jbj^jہjցj\#jX#jjj|j|j,:j':jD.j@.j5j0j,j,jE.j0j+j+jF,j@,j+j +j+j+j)j)jk*jf*jj j5j5jj jUvjOvjxjjxjxjjjljlj7xjbujujujxjxjVjVjWjWhhjDhj?hj&j&j-.j).j}jyje:j`:j.j&j#j#j%j!jAj<j+j+j@Ej:jljhjjjjj#jj'j!jۜjלjmjij)j)jjjsjnj4j4jCjCjjjjjM"jG"j &j;j'j'j&j&j}(jw(j'j'uUsubstitution_namesrm}rn(hhjTjTuhhh}ro(h]h]h]Usourcehh]h]uU footnotesrp]rqUrefidsrr}rsub.