€cdocutils.nodes document q)�q}q(U nametypesq}q(Xrecompiling on linuxqNXbuild procedureqNX memory mapqNXtests & examplesq NXipc 3.x vs ipc lldq NXapploader usageq NXnew type_devmem entryq NXinstalling tests in qnxq NX-interprocessor-communication-related-packagesqˆXconfiguring entry point for sblqNXc codeqNXflash-programming-verificationqˆXnor bootqNXapplication integrationqNXrebuilding ipcqNXsearching nameserver instancesqNXmpmqNXDbuilding the ipc resource manager in debug mode (ipc 3.35 and above)qNXversion-and-hw-informationqˆXruntime troubleshootingqNXhow do i change the pbm buffer?qNX am65x/j721eqNX)getting information about a shared regionqNXdebugging-tipsqˆXcreating a heap*mp instanceqNX#standard ipc function call sequenceqNXgenerating examplesq NX*how to share a tcp/ip socket across tasks?q!NXallocating memory from the heapq"NX presumptionsq#ˆX#linux benchmark test: messageqbenchq$NXtest applicationq%NX windows hostq&NX custom transport implementationsq'NXipc daemons and driversq(NXbios install guideq)NX:speeding up boot by increasing speed of the boot interfaceq*NXbooting the target.q+NXxdaisq,NX]why are the peripherals mapped to 0x6xxx:xxxx virtual memory for ipu (cortex-m4) test images?q-NXdirectory structureq.NX ping exampleq/NX#building the sbl and its componentsq0NX omap-l138-1q1ˆX omap-l138-2q2ˆX"thread synchronization (bios only)q3NXam57xx interrupt resourcesq4NXnandq5NXbooting via mcspiq6NXadditional referencesq7NXacronyms-used-in-this-articleq8ˆX fc-boot-labelq9ˆXipc lld for am65x/j721eq:ˆX@powerful but easy-to-use messaging with messageq (hlos and bios)q;NX compiler and linker optimizationqNX compilationq?NXhereq@ˆX mpm transport srio configurationqANX,making loadable user application image (app)qBNXarm linux transportsrioqCNXam655x-image-formatsqDˆXsource referenceqENXslave-side-trace-outputqFˆXbootloader execution sequenceqGNX throughputqHNXchangesqINXbootloader-execution-sequenceqJˆXipcqKNXmessage prioritiesqLNXpreparing qspi flashqMNX0tasks internally created from timesync_drvinit()qNNX ipc-linux.makqONX!the role of ibl in pcie boot modeqPNX boot sequenceqQNX list moduleqRNXtoolsqSNX(minimal use scenario (bios-to-bios only)qTNX/remote communication via transports (bios only)qUNXipc configurationqVNXopening a message queueqWNX!ddr-timings-and-configuration-sblqXˆXarm linux transportqmssqYNX nimu for cpswqZNXclosing a gatemp instanceq[NXnormal operation of bootloader:q\NX(bootloader build files for am335x/am437xq]NXmpm-mailbox-moduleq^ˆXdeleting a heap*mp instanceq_NXsbl avs and abb setupq`NXwindows environmentqaNX spi writerqbNXsystem-state-at-boot-failureqcˆX8q-how-to-build-and-run-the-qmssipcbenchmark-on-c6678-evmqdˆXlinux install guideqeNXipc user's guideqfNXinstallqgNXbooting via mmcsdqhNX$inserting and removing list elementsqiNXexampleqjˆX8is there any multicast streams limitation using the ndk?qkNXhost-side-trace-outputqlˆXopening a gatemp instanceqmNXbooting-the-targetqnˆX,choosing and configuring messageq transportsqoNXopening a heap*mp instanceqpNX xdc runtimeqqNXnetwork developers kit faqqrˆXipc performanceqsNXcleaning flash writerqtNXti sdo utils packagequNXam655x-compiling-apps-for-sblqvˆX2cc-link ie field network basic example descriptionqwNX ndk overviewqxNX emulator-based-debugging-of-bootqyˆX ipc-qnx.makqzˆXconfigq{NXadvanced topicsq|NXnq-how-can-i-build-the-qmssipcbenchmark-of-pdk_c6678_1_1_2_x-pdk_c6678_1_1_2_x-with-release-build-configurationq}ˆXfaqq~NXbooting via sd cardqNXladq€ˆX2trace-from-ipc-resource-manager-ipc-3.35-and-aboveq�ˆX post bootq‚NXbuilding the bootloaderqƒNX6creating and removing nameserver instances dynamicallyq„NX nimu for icssq…NXresource custom tableq†NXsbl customizationq‡NXquerying heap statisticsqˆNXpreparing the sd cardq‰NXoptimizing shared memory usageqŠNX9arm linux transportsrio source delivery and recompilationq‹NX�q-in-ipc-packages-there-are-lot-of-test-examplesample.c-code-given-in-the-path-ipc_3_3x_xx_xxpackagestiipctests.-but-there-is-only-command-line-option-to-build-the-whole-ipc-package.-no-option-available-to-build-the-test-examples-individually.-this-is-time-consuming-to-build-the-whole-ipc-package.-customers-were-asking-for-ccs-based-environment-to-build-and-test-as-individual-example-for-both-dsp-and-arm-side.qŒˆXexpected-outputq�ˆX-keystone ipc frequently asked questions (faq)qŽNXsbl-and-app-entry-pointsq�ˆXoptimizing local memory usageq�NXbooting via nandq‘NXLqhow-to-import-the-slave-code-of-image-processing-demo-and-how-do-i-build-itq’ˆXbuild questionsq“NXdriver-configuration-pktlibq”ˆXadding table entries staticallyq•NX#modifying table entries dynamicallyq–NXoptimizing ipc applicationsq—NX gatemp moduleq˜NXprotocol overviewq™NX+configuring the messageq module (bios only)qšNX9inspect the state of a slave core (ipc 3.23.01 and above)q›NXandroidqœNX&common steps to debug application bootq�NX flash writersqžNX%sample runtime program flow (dynamic)qŸNX building sblq NXterms and abbreviationsq¡NXcreating a gatemp instanceq¢NX initial stepsq£NXproject-modificationsq¤ˆXbios-side buildq¥NXtesting the sblq¦NX notify moduleq§NXapploader load addressq¨NXnetworkq©NXgq-for-keystone-ii-is-there-any-ccs-based-examples-to-demonstrate-a-simple-communication-between-arm-dspqªˆXipc 3.xq«NXbooting targetq¬NXboot mode settingsq­NXloading the test applicationq®NX!how helloworld boot example worksq¯NXlinux environmentq°NXallocating a messageq±NXcode organizationq²NXsys/bios dsp transportqmssq³NXbuilding the examplesq´NXomapl137/omapl138/c6748qµNXfcq¶NXc66xq·NXmodes of operationq¸NX'choosing and configuring notify driversq¹NXoptimizing runtime performanceqºNX<sys/bios dsp transportqmss source delivery and recompilationq»NX introductionq¼ˆXadditional detailsq½NXtips-on-system-startupq¾ˆX listmp moduleq¿NXtest application image creationqÀNXdoes ipc 3.x support smp bios?qÁNXnameserver interactionqÂNX replyqueueqÃNX¡q-for-keystone-ii-devices-where-do-i-find-the-source-code-of-the-image-processing-demo-and-how-to-i-re-build-them-using-arm-core-as-a-master-dsp-cores-as-slaves.qĈXusing memory in a shared regionqÅNXipc resource managerqÆNXsys/bios dsp transportsrioqÇNXbooting-the-target-1qȈXfirst-openmp-projectqɈX3special build option for industrial ddrless bootingqÊNXbootloader debuggingqËNXqspiqÌNXnameserver configurationqÍNX?guide on building and running the ipc examples of processor sdkqÎNX nand writerqÏNXhow post boot example worksqÐNXbooting via spiqÑNXipc throughput cpu utilizationqÒNX am335x/am437xqÓNXbuildqÔNXonlineqÕˆX4creating nameserver instances statically (bios-only)qÖNX)how do i enable the jumbo packet support?q×NX project-setupq؈Xsoftware debug stepsqÙNXpreparing flash deviceqÚNXfreeing memory to the heapqÛNXpreparing the emmcqÜNXtools and binary formatsqÝNXincluding header filesqÞNX linux buildqßNXuse cases for ipcqàNX&optimizing notify and messageq latencyqáNXam655x-sbl-directory-structureqâˆX am437x trmqãˆXslave binariesqäNXipc benchmarkingqåNX ipc trainingqæNX eeprom writerqçNX ipc-bios.makqèNX nor writerqéNX ethernet bootqêNXti-rtos kernelqëNXrunning standalone examplesqìNXapplication image creationqíNXatomic list operationsqîNXsbl-and-app-memory-mapqïˆX5how do i configure the memory used by shmemallocator?qðNX9how to check which versions of nimu driver is for my soc?qñNXxdc.runtime.iheap interfaceqòˆXqspi boot modeqóNXbuild-and-loadqôˆXrecompiling on windowsqõNX srio bootqöNXpreparing-flash-device-2q÷ˆXpreparing-flash-device-1qøˆXsending a messageqùNX3q-how-to-re-build-the-ipc-package-and-its-librariesqúˆXconceptual-overviewqûˆXti sdo ipc packageqüNXadditional-referencesqýˆXipc transportsqþNX9arm linux transportqmss source delivery and recompilationqÿNXbuild-and-executerˆXuart console setuprNX omap-l138rNX!recompiling through yocto/bitbakerNXBlad reports nameserver_setup: connect failed: 22, invalid argumentrNXpktlibrNXmultiproc pagerˆXdisabling auto-recoveryrNXpreparing sd cardrNX#creating connections with multiprocr NXconfiguring the bspr NX source coder NXomap54xxr ˆX^keystone pa or ndk example doesn’t work in other boot mode than no-boot mode using ccs/jtag?r NXdriver-configuration-nwalrˆXmessageq allocation and heapsrNXmmcsd boot moderNXjq-while-building-the-armmaster-side-code-of-image-processing-demo-i-see-a-linker-error-message-like-below.rˆXdeleting a gatemp instancerNX(building ipc examples using products.makrNXbooting via qspirNX¨q-while-building-the-armmaster-side-code-of-image-processing-demo-i-see-a-compilation-error-message-about-std.h-as-below-when-i-make-it-with-or-without-build_localtrue.rˆX linux hostrNXbios-side virtqueue assertionsrNX6how to tune tcp buffer size for an optimal throughput?rNXconfidence-testrˆXoverviewrNX pcie bootrNXlinuxrNX ipc modulerNXipc faqrNX"when should ipc_start() be called?rNXdebugging application bootr NX"messageq allocation without a heapr!NX boot-modesr"ˆXbooting via emmcr#NX heapmp moduler$NXbasic fifo operation of a listr%NXinstrumentation configurationr&NX&lad reports _gatemp_ti_dgate not foundr'NXclosing a heap*mp instancer(NX installationr)ˆXother optional configurationsr*NX'pointing a ccs project at a rebuilt ipcr+NXipc average round trip timer,NX#installing remote core applicationsr-NX block diagramr.NXtry cleaning firstr/NX6running ndk example on arm core of keystone ii devicesr0NX&gatemp support for uio and misc driverr1NXmessageq moduler2NXmmcsdr3NXbuilding ipc examplesr4NXam655x-sbl-high-level-archr5ˆXother nameserver apisr6NX nand bootr7NX!how dsp local reset example worksr8NXmpm-sync-moduler9ˆXsee alsor:NXam655x-sbl-memory-usager;ˆXoptimizing code sizer<NX developmentr=NX$building timesync examples/unit testr>NXipc module apisr?NX#do you have any raw packet example?r@NX image formatsrANX#lad reports lad_connect() failed: 4rBNXmultiproc run-time apirCˆX}q-after-building-the-slave-code-of-the-image-processing-demo-using-ccs-where-it-needs-to-be-replaced-in-the-linux-file-systemrDˆX k2h/k2e/k2lrENXdriver-featuresrFˆXMload and unload individual cores while ipc is running (ipc 3.23.01 and above)rGNX usage notesrHNX memory usagerINXmulti-proc-manager-linux-modulerJˆXboot modes supportedrKNX products.makrLNXhlos loading failuresrMNXaq-is-there-any-simple-example-to-demonstrate-ipc-methods-like-message-q-or-notify-for-keystone-iirNˆXhow do i change the memory map?rONX0trace-from-ipc-user-libraries-ipc-3.35-and-aboverPˆXnimu transportrQNXboard-specific-configurationrRˆXrebuilding apploaderrSNX"recompiling through git repositoryrTNXam65xrUNXk2grVNXTqnx ipc driver takes a long time to load the slave executable(s) when '-g' is thrownrWNXopenclrXNXbooting via uartrYNX!source delivery and recompilationrZNX)data passing scenario (bios-to-bios only)r[NXflashing the bootloaderr\NXusager]NXbios configurationr^NXopenmpr_NX qnx buildr`NXnameserver moduleraNXqnx install guiderbNX$bios application configuration filesrcNX"binary format conversion procedurerdNX.configuring clusters with the multiproc modulereNX$reducing size of sbl and applicationrfNXmultiproc modulergNXsys/biosrhNXstart-your-openmp-projectriˆXchanging boot media offsetsrjNXtimesync (ptp)rkNX#binary format conversion in windowsrlNX timesync-configuration-structurermˆXam57xrnNXsupported platformsroNX&rtos ipc benchmark applications in sdkrpNX platformsrqNXcclinkrrNXreceiving a messagersNX boot examplertNXresource usageruNXkernel boot-up parametersrvNXÀq-the-image-processing-demo-does-not-work-on-the-version-of-mcsdk-v3.0x.xx.x-on-both-the-k2h-and-k2e-evms.-the-earlier-version-of-mcsdk-works-on-both-the-evms.-will-it-be-fixed-on-next-versionrwˆXtransport configurationrxNX5i have a question that's not answered here, what now?ryNXlinux ipc_start() failuresrzNXinstalling testsr{NXconfiguring kernelr|NXconfiguring a heap*mp moduler}NX mpm transport qmss configurationr~NXrunrNX/linux spurious "msg received with no recepient"r€NXfaq for keystone devicesr�NXqnxr‚NXndk example descriptionrƒNXbuilding-flash-writerr„NXndkr…NXrunning test applicationsr†NXuartr‡NXtracingrˆNX/dynamic allocation scenario (bios-to-bios only)r‰NXbuilding the sblrŠNXshared region moduler‹NX#additional documentation referencesrŒNXipc install guidesr�NXexecute-and-see-outputrŽˆX.running cc-link ie field network basic exampler�NXsample examplesr�NXerror handling in ipcr‘NX!binary format conversion in linuxr’NXcclink exampler“NXquerying a gatemp instancer”NXbooting the targetr•NXsecond-openmp-projectr–ˆXcreating a messageq objectr—NX"srio serdes and lane configurationr˜NXentering a gatemp instancer™NXbiosršNXdisabling runtime auto-suspendr›NXmaking bootable sbl image (mlo)rœNXipc examples: detailsr�NX<q-where-do-i-look-for-the-list-of-ipc-api-reference-documentržˆXapisrŸˆXinterrupt map usager NX3why a pipe creation fails and fderror() returns -1?r¡NXformatting the sd cardr¢NXuart apploaderr£NXleaving a gatemp instancer¤NXbuilding the ndk examplesr¥NX,procedure to build and run linux host loaderr¦NXdeleting a messageq objectr§NXexamplesr¨NXmodes-of-operationr©ˆX cleaning sblrªNXproject-setup-1r«ˆXhow-to-obtain-supportr¬ˆX linux/androidr­NXhardware debug stepsr®NXiterating over a listr¯NXdriversr°ˆXbootr±NX)ipc module configuration (bios-side only)r²NX(updating the ibl ethernet configurationsr³NX transportr´NXpreparing spi flashrµNXeq-how-to-re-build-the-ipc---qmss-transport-library-and-generate-ti.transport.ipc.qmss.transports.ae66r¶ˆX mcspi/spir·NXloading test applicationr¸NX spi boot moder¹NX boot modesrºNX ipc examplesr»NXadditional build optionsr¼NXpre-requisitesr½NX tftp bootr¾NuUsubstitution_defsr¿}rÀ(X srmCfg_Img2rÁcdocutils.nodes substitution_definition rÂ)�rÃ}rÄ(U rawsourcerÅX´.. |srmCfg_Img2| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html UparentrÆcdocutils.nodes section rÇ)�rÈ}rÉ(jÅUjÆjÇ)�rÊ}rË(jÅUjÆjÇ)�rÌ}rÍ(jÅUjÆhUsourcerÎX\/home/gtbldadm/nightlybuilds/processor-sdk-doc/source/rtos/index_Foundational_Components.rstrÏUtagnamerÐUsectionrÑU attributesrÒ}rÓ(UdupnamesrÔ]UclassesrÕ]UbackrefsrÖ]Uidsr×]rØUipcrÙaUnamesrÚ]rÛhKauUlinerÜKUdocumentrÝhUchildrenrÞ]rß(cdocutils.nodes title rà)�rá}râ(jÅXIPCrãjÆjÌjÎjÏjÐUtitleräjÒ}rå(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ræcdocutils.nodes Text rçXIPCrè…�ré}rê(jÅjãjÆjáubaubcdocutils.nodes note rë)�rì}rí(jÅX´This section mainly provides details of the software distributed part of the IPC 3.x package (installed under ipc_). The IPC package provides the IPC APIs with higher level software abstraction. In addition,starting from Processor SDK 6.1 release, a lower level IPC driver (IPC LLD) using rpmsg based transport is included specifically for AM6x/J7 platforms. See the following link for additional details `IPC 3.x vs IPC LLD`_rîjÆjÌjÎjÏjÐUnoterïjÒ}rð(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rñcdocutils.nodes paragraph rò)�ró}rô(jÅjîjÆjìjÎjÏjÐU paragraphrõjÒ}rö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r÷(jçXŸThis section mainly provides details of the software distributed part of the IPC 3.x package (installed under ipc_). The IPC package provides the IPC APIs with higher level software abstraction. In addition,starting from Processor SDK 6.1 release, a lower level IPC driver (IPC LLD) using rpmsg based transport is included specifically for AM6x/J7 platforms. See the following link for additional details rø…�rù}rú(jÅXŸThis section mainly provides details of the software distributed part of the IPC 3.x package (installed under ipc_). The IPC package provides the IPC APIs with higher level software abstraction. In addition,starting from Processor SDK 6.1 release, a lower level IPC driver (IPC LLD) using rpmsg based transport is included specifically for AM6x/J7 platforms. See the following link for additional details jÆjóubcdocutils.nodes reference rû)�rü}rý(jÅX`IPC 3.x vs IPC LLD`_UresolvedrþKjÆjójÐU referencerÿjÒ}r(UnameXIPC 3.x vs IPC LLDj×]jÖ]jÔ]jÕ]jÚ]UrefidrUipc-3-x-vs-ipc-lldrujÞ]rjçXIPC 3.x vs IPC LLDr…�r}r(jÅUjÆjüubaubeubaubjë)�r}r(jÅX?Starting with releases after the 6.3 release, IPC3.x will be deprecated on the AM65x device and IPC LLD is the only IPC stack supported. Please stop new development on top of IPC3.x for AM65x, and migrate to IPC LLD stack. Please see `IPC LLD for AM65x/J721E `_ for information on IPC LLD.r jÆjÌjÎjÏjÐjïjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r jò)�r }r (jÅj jÆjjÎjÏjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r(jçXêStarting with releases after the 6.3 release, IPC3.x will be deprecated on the AM65x device and IPC LLD is the only IPC stack supported. Please stop new development on top of IPC3.x for AM65x, and migrate to IPC LLD stack. Please see r…�r}r(jÅXêStarting with releases after the 6.3 release, IPC3.x will be deprecated on the AM65x device and IPC LLD is the only IPC stack supported. Please stop new development on top of IPC3.x for AM65x, and migrate to IPC LLD stack. Please see jÆj ubjû)�r}r(jÅX9`IPC LLD for AM65x/J721E `_jÒ}r(UnameXIPC LLD for AM65x/J721EUrefurirXindex_device_drv.html#ipclldrj×]jÖ]jÔ]jÕ]jÚ]ujÆj jÞ]rjçXIPC LLD for AM65x/J721Er…�r}r(jÅUjÆjubajÐjÿubcdocutils.nodes target r)�r}r(jÅX U referencedrKjÆj jÐUtargetr jÒ}r!(Urefurijj×]r"Uipc-lld-for-am65x-j721er#ajÖ]jÔ]jÕ]jÚ]r$h:aujÞ]ubjçX for information on IPC LLD.r%…�r&}r'(jÅX for information on IPC LLD.jÆj ubeubaubjÇ)�r(}r)(jÅUjÆjÌjÎjÏjÐjÑjÒ}r*(jÔ]jÕ]jÖ]j×]r+Uipc-user-s-guider,ajÚ]r-hfaujÜKjÝhjÞ]r.(jà)�r/}r0(jÅXIPC User's Guider1jÆj(jÎjÏjÐjäjÒ}r2(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r3jçXIPC User's Guider4…�r5}r6(jÅj1jÆj/ubaubcdocutils.nodes comment r7)�r8}r9(jÅX7http://processors.wiki.ti.com/index.php/IPC_Users_GuidejÆj(jÎcdocutils.nodes reprunicode r:X=source/rtos/PDK_Platform_Software/IPC/IPC_Users_Guide.rst.incr;…�r<}r=bjÐUcommentr>jÒ}r?(U xml:spacer@UpreserverAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rBjçX7http://processors.wiki.ti.com/index.php/IPC_Users_GuiderC…�rD}rE(jÅUjÆj8ubaubjÂ)�rF}rG(jÅX±.. |ipcCfg_Img| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆj(jÎj<jÐUsubstitution_definitionrHjÒ}rI(jÔ]jÕ]jÖ]j×]jÚ]rJX ipcCfg_ImgrKaujÜKjÝhjÞ]rLjû)�rM}rN(jÅjKjÒ}rO(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrPj×]jÖ]jÔ]jÕ]jÚ]ujÆjFjÞ]rQcdocutils.nodes image rR)�rS}rT(jÅX Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrUjÒ}rV(UuriXrtos/../images/Book_cfg.pngrWj×]jÖ]jÔ]jÕ]U candidatesrX}rYU*jWsjÚ]UaltjKujÆjMjÞ]jÐUimagerZubajÐjÿubaubjÂ)�r[}r\(jÅX².. |ipcRun_Img| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/index.html jÆj(jÎj<jÐjHjÒ}r](jÔ]jÕ]jÖ]j×]jÚ]r^X ipcRun_Imgr_aujÜKjÝhjÞ]r`jû)�ra}rb(jÅj_jÒ}rc(UrefuriXhhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/index.htmlrdj×]jÖ]jÔ]jÕ]jÚ]ujÆj[jÞ]rejR)�rf}rg(jÅX Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/index.htmlrhjÒ}ri(UuriXrtos/../images/Book_run.pngrjj×]jÖ]jÔ]jÕ]jX}rkU*jjsjÚ]Ualtj_ujÆjajÞ]jÐjZubajÐjÿubaubjò)�rl}rm(jÅXŽInter-Processor Communication (IPC) provides a processor-agnostic API which can be used for communication between processors in a multi-processor environment (inter-core), communication to other threads on same processor (inter-process), and communication to peripherals (inter-device). The API supports message passing, streams, and linked lists. IPC can be used to communicate with the following:rnjÆj(jÎj<jÐjõjÒ}ro(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rpjçXŽInter-Processor Communication (IPC) provides a processor-agnostic API which can be used for communication between processors in a multi-processor environment (inter-core), communication to other threads on same processor (inter-process), and communication to peripherals (inter-device). The API supports message passing, streams, and linked lists. IPC can be used to communicate with the following:rq…�rr}rs(jÅjnjÆjlubaubcdocutils.nodes bullet_list rt)�ru}rv(jÅUjÆj(jÎj<jÐU bullet_listrwjÒ}rx(UbulletryX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rz(cdocutils.nodes list_item r{)�r|}r}(jÅX#Other threads on the same processorr~jÆjujÎj<jÐU list_itemrjÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�jò)�r‚}rƒ(jÅj~jÆj|jÎj<jÐjõjÒ}r„(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r…jçX#Other threads on the same processorr†…�r‡}rˆ(jÅj~jÆj‚ubaubaubj{)�r‰}rŠ(jÅX,Threads on other processors running SYS/BIOSr‹jÆjujÎj<jÐjjÒ}rŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�jò)�rŽ}r�(jÅj‹jÆj‰jÎj<jÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r‘jçX,Threads on other processors running SYS/BIOSr’…�r“}r”(jÅj‹jÆjŽubaubaubj{)�r•}r–(jÅXHThreads on other processors running an HLOS (e.g., Linux, QNX, Android) jÆjujÎj<jÐjjÒ}r—(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r˜jò)�r™}rš(jÅXGThreads on other processors running an HLOS (e.g., Linux, QNX, Android)r›jÆj•jÎj<jÐjõjÒ}rœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�jçXGThreads on other processors running an HLOS (e.g., Linux, QNX, Android)rž…�rŸ}r (jÅj›jÆj™ubaubaubeubjR)�r¡}r¢(jÅX+.. image:: ../images/IPC_comm_features.JPG jÆj(jÎj<jÐjZjÒ}r£(UuriX$rtos/../images/IPC_comm_features.JPGr¤j×]jÖ]jÔ]jÕ]jX}r¥U*j¤sjÚ]ujÜKjÝhjÞ]ubeubjÇ)�r¦}r§(jÅUjKjÆjÌjÎj<jÐjÑjÒ}r¨(jÔ]r©XoverviewrªajÕ]jÖ]j×]r«Uoverviewr¬ajÚ]ujÜKjÝhjÞ]r­(jà)�r®}r¯(jÅXOverviewr°jÆj¦jÎj<jÐjäjÒ}r±(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r²jçXOverviewr³…�r´}rµ(jÅj°jÆj®ubaubjò)�r¶}r·(jÅXËThis user's guide contains the topics in the following list. It also links to API reference documentation for static configuration (|ipcCfg_Img|) and run-time C processing (|ipcRun_Img|) for each module.jÆj¦jÎj<jÐjõjÒ}r¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r¹(jçX„This user's guide contains the topics in the following list. It also links to API reference documentation for static configuration (rº…�r»}r¼(jÅX„This user's guide contains the topics in the following list. It also links to API reference documentation for static configuration (jÆj¶ubjû)�r½}r¾(jÅjKjÆj¶jÎNjÐjÿjÒ}r¿(UrefurijPj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]rÀjR)�rÁ}rÂ(jÅjUjÆj½jÎNjÐjZjÒ}rÃ(UuriXrtos/../images/Book_cfg.pngrÄj×]jÖ]jÔ]jÕ]jX}rÅU*jÄsjÚ]UaltjKujÜNjÞ]ubaubjçX) and run-time C processing (rÆ…�rÇ}rÈ(jÅX) and run-time C processing (jÆj¶ubjû)�rÉ}rÊ(jÅj_jÆj¶jÎNjÐjÿjÒ}rË(Urefurijdj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]rÌjR)�rÍ}rÎ(jÅjhjÆjÉjÎNjÐjZjÒ}rÏ(UuriXrtos/../images/Book_run.pngrÐj×]jÖ]jÔ]jÕ]jX}rÑU*jÐsjÚ]Ualtj_ujÜNjÞ]ubaubjçX) for each module.rÒ…�rÓ}rÔ(jÅX) for each module.jÆj¶ubeubjò)�rÕ}rÖ(jÅX**Getting Started**r×jÆj¦jÎj<jÐjõjÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÙcdocutils.nodes strong rÚ)�rÛ}rÜ(jÅj×jÒ}rÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÕjÞ]rÞjçXGetting Startedrß…�rà}rá(jÅUjÆjÛubajÐUstrongrâubaubjt)�rã}rä(jÅUjÆj¦jÎj<jÐjwjÒ}rå(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]ræ(j{)�rç}rè(jÅXu`Use Cases for IPC `__ explains the various use cases for IPC. jÆjãjÎj<jÐjjÒ}ré(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rêjò)�rë}rì(jÅXt`Use Cases for IPC `__ explains the various use cases for IPC.jÆjçjÎj<jÐjõjÒ}rí(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rî(jû)�rï}rð(jÅXL`Use Cases for IPC `__jÒ}rñ(UnameXUse Cases for IPCjX4index_Foundational_Components.html#use-cases-for-ipcj×]jÖ]jÔ]jÕ]jÚ]ujÆjëjÞ]ròjçXUse Cases for IPCró…�rô}rõ(jÅUjÆjïubajÐjÿubjçX( explains the various use cases for IPC.rö…�r÷}rø(jÅX( explains the various use cases for IPC.jÆjëubeubaubj{)�rù}rú(jÅXx`IPC Examples `__ explains how to build and generate the IPC examples. jÆjãjÎj<jÐjjÒ}rû(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rüjò)�rý}rþ(jÅXw`IPC Examples `__ explains how to build and generate the IPC examples.jÆjùjÎj<jÐjõjÒ}rÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r(jû)�r}r(jÅXB`IPC Examples `__jÒ}r(UnameX IPC ExamplesjX/index_Foundational_Components.html#ipc-examplesj×]jÖ]jÔ]jÕ]jÚ]ujÆjýjÞ]rjçX IPC Examplesr…�r}r(jÅUjÆjubajÐjÿubjçX5 explains how to build and generate the IPC examples.r…�r }r (jÅX5 explains how to build and generate the IPC examples.jÆjýubeubaubj{)�r }r (jÅXa`IPC Training `__ lists available IPC training. jÆjãjÎj<jÐjjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rjò)�r}r(jÅX``IPC Training `__ lists available IPC training.jÆj jÎj<jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]r(jû)�r}r(jÅXB`IPC Training `__jÒ}r(UnameX IPC TrainingjX/index_Foundational_Components.html#ipc-trainingj×]jÖ]jÔ]jÕ]jÚ]ujÆjjÞ]rjçX IPC Trainingr…�r}r(jÅUjÆjubajÐjÿubjçX lists available IPC training.r…�r}r(jÅX lists available IPC training.jÆjubeubaubj{)�r}r(jÅX^`IPC 3.x `__ Provides details of IPC 3.x releases jÆjãjÎj<jÐjjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r jò)�r!}r"(jÅX]`IPC 3.x `__ Provides details of IPC 3.x releasesjÆjjÎj<jÐjõjÒ}r#(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]r$(jû)�r%}r&(jÅX8`IPC 3.x `__jÒ}r'(UnameXIPC 3.xjX*index_Foundational_Components.html#ipc-3-xj×]jÖ]jÔ]jÕ]jÚ]ujÆj!jÞ]r(jçXIPC 3.xr)…�r*}r+(jÅUjÆj%ubajÐjÿubjçX% Provides details of IPC 3.x releasesr,…�r-}r.(jÅX% Provides details of IPC 3.x releasesjÆj!ubeubaubj{)�r/}r0(jÅX—`Run IPC Examples on AM572x `__ jÆjãjÎj<jÐjjÒ}r1(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r2jò)�r3}r4(jÅX–`Run IPC Examples on AM572x `__r5jÆj/jÎj<jÐjõjÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK&jÞ]r7jû)�r8}r9(jÅj5jÒ}r:(UnameXRun IPC Examples on AM572xjXuhttp://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_how_to_guides.html#run-ipc-examples-on-am572xj×]jÖ]jÔ]jÕ]jÚ]ujÆj3jÞ]r;jçXRun IPC Examples on AM572xr<…�r=}r>(jÅUjÆj8ubajÐjÿubaubaubj{)�r?}r@(jÅX—`Run IPC Examples on AM65xx `__ jÆjãjÎj<jÐjjÒ}rA(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rBjò)�rC}rD(jÅX–`Run IPC Examples on AM65xx `__rEjÆj?jÎj<jÐjõjÒ}rF(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]rGjû)�rH}rI(jÅjEjÒ}rJ(UnameXRun IPC Examples on AM65xxjXuhttp://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_how_to_guides.html#run-ipc-examples-on-am65xxj×]jÖ]jÔ]jÕ]jÚ]ujÆjCjÞ]rKjçXRun IPC Examples on AM65xxrL…�rM}rN(jÅUjÆjHubajÐjÿubaubaubeubjò)�rO}rP(jÅX**Application Development**rQjÆj¦jÎj<jÐjõjÒ}rR(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÝhjÞ]rSjÚ)�rT}rU(jÅjQjÒ}rV(jÔ]jÕ]jÖ]j×]jÚ]ujÆjOjÞ]rWjçXApplication DevelopmentrX…�rY}rZ(jÅUjÆjTubajÐjâubaubjt)�r[}r\(jÅUjÆj¦jÎj<jÐjwjÒ}r](jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK,jÝhjÞ]r^(j{)�r_}r`(jÅX`Create DSP and IPU firmware using PDK drivers and IPC to load from ARM Linux on AM57xx devices `__ jÆj[jÎj<jÐjjÒ}ra(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rbjò)�rc}rd(jÅX`Create DSP and IPU firmware using PDK drivers and IPC to load from ARM Linux on AM57xx devices `__rejÆj_jÎj<jÐjõjÒ}rf(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]rgjû)�rh}ri(jÅjejÒ}rj(UnameX^Create DSP and IPU firmware using PDK drivers and IPC to load from ARM Linux on AM57xx devicesjX³http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/How_to_Guides.html#create-dsp-and-ipu-firmware-using-pdk-drivers-and-ipc-to-load-from-arm-linux-on-am57xx-devicesj×]jÖ]jÔ]jÕ]jÚ]ujÆjcjÞ]rkjçX^Create DSP and IPU firmware using PDK drivers and IPC to load from ARM Linux on AM57xx devicesrl…�rm}rn(jÅUjÆjhubajÐjÿubaubaubj{)�ro}rp(jÅXù`Customizing Memory map for creating Multicore Applications on AM57xx using IPC `__ jÆj[jÎj<jÐjjÒ}rq(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rrjò)�rs}rt(jÅXø`Customizing Memory map for creating Multicore Applications on AM57xx using IPC `__rujÆjojÎj<jÐjõjÒ}rv(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rwjû)�rx}ry(jÅjujÒ}rz(UnameXNCustomizing Memory map for creating Multicore Applications on AM57xx using IPCjX£http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/How_to_Guides.html#customizing-memory-map-for-creating-multicore-applications-on-am57xx-using-ipcj×]jÖ]jÔ]jÕ]jÚ]ujÆjsjÞ]r{jçXNCustomizing Memory map for creating Multicore Applications on AM57xx using IPCr|…�r}}r~(jÅUjÆjxubajÐjÿubaubaubj{)�r}r€(jÅXÌ`Optimizing IPC Applications `__ provides hints for improving the runtime performance and shared memory usage of applications that use IPC. jÆj[jÎj<jÐjjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‚jò)�rƒ}r„(jÅXË`Optimizing IPC Applications `__ provides hints for improving the runtime performance and shared memory usage of applications that use IPC.jÆjjÎj<jÐjõjÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]r†(jû)�r‡}rˆ(jÅX``Optimizing IPC Applications `__jÒ}r‰(UnameXOptimizing IPC ApplicationsjX>index_Foundational_Components.html#optimizing-ipc-applicationsj×]jÖ]jÔ]jÕ]jÚ]ujÆjƒjÞ]rŠjçXOptimizing IPC Applicationsr‹…�rŒ}r�(jÅUjÆj‡ubajÐjÿubjçXk provides hints for improving the runtime performance and shared memory usage of applications that use IPC.rŽ…�r�}r�(jÅXk provides hints for improving the runtime performance and shared memory usage of applications that use IPC.jÆjƒubeubaubj{)�r‘}r’(jÅXi`IPC Benchmarking `__ IPC Benchmarking with IPC 3.x jÆj[jÎj<jÐjjÒ}r“(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r”jò)�r•}r–(jÅXh`IPC Benchmarking `__ IPC Benchmarking with IPC 3.xjÆj‘jÎj<jÐjõjÒ}r—(jÔ]jÕ]jÖ]j×]jÚ]ujÜK5jÞ]r˜(jû)�r™}rš(jÅXJ`IPC Benchmarking `__jÒ}r›(UnameXIPC BenchmarkingjX3index_Foundational_Components.html#ipc-benchmarkingj×]jÖ]jÔ]jÕ]jÚ]ujÆj•jÞ]rœjçXIPC Benchmarkingr�…�rž}rŸ(jÅUjÆj™ubajÐjÿubjçX IPC Benchmarking with IPC 3.xr …�r¡}r¢(jÅX IPC Benchmarking with IPC 3.xjÆj•ubeubaubj{)�r£}r¤(jÅXŒ`IPC Custom ResourceTable `__ Provides details of customizing the resource table. jÆj[jÎj<jÐjjÒ}r¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¦jò)�r§}r¨(jÅX‹`IPC Custom ResourceTable `__ Provides details of customizing the resource table.jÆj£jÎj<jÐjõjÒ}r©(jÔ]jÕ]jÖ]j×]jÚ]ujÜK9jÞ]rª(jû)�r«}r¬(jÅXW`IPC Custom ResourceTable `__jÒ}r­(UnameXIPC Custom ResourceTablejX8index_Foundational_Components.html#resource-custom-tablej×]jÖ]jÔ]jÕ]jÚ]ujÆj§jÞ]r®jçXIPC Custom ResourceTabler¯…�r°}r±(jÅUjÆj«ubajÐjÿubjçX4 Provides details of customizing the resource table.r²…�r³}r´(jÅX4 Provides details of customizing the resource table.jÆj§ubeubaubj{)�rµ}r¶(jÅXµ`IPC Debugging Tools and Techniques on AM57xx `__ jÆj[jÎj<jÐjjÒ}r·(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¸jò)�r¹}rº(jÅX´`IPC Debugging Tools and Techniques on AM57xx `__r»jÆjµjÎj<jÐjõjÒ}r¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÞ]r½jû)�r¾}r¿(jÅj»jÒ}rÀ(UnameX,IPC Debugging Tools and Techniques on AM57xxjX�http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/How_to_Guides.html#ipc-debugging-tools-and-techniques-on-am57xxj×]jÖ]jÔ]jÕ]jÚ]ujÆj¹jÞ]rÁjçX,IPC Debugging Tools and Techniques on AM57xxrÂ…�rÃ}rÄ(jÅUjÆj¾ubajÐjÿubaubaubeubjò)�rÅ}rÆ(jÅX)**IPC Internal/API & Other Useful Links**rÇjÆj¦jÎj<jÐjõjÒ}rÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK?jÝhjÞ]rÉjÚ)�rÊ}rË(jÅjÇjÒ}rÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÅjÞ]rÍjçX%IPC Internal/API & Other Useful LinksrÎ…�rÏ}rÐ(jÅUjÆjÊubajÐjâubaubjt)�rÑ}rÒ(jÅUjÆj¦jÎj<jÐjwjÒ}rÓ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKAjÝhjÞ]rÔ(j{)�rÕ}rÖ(jÅXŒ`The TI SDO IPC Package `__ section describes the modules in the ti.sdo.ipc package. jÆjÑjÎj<jÐjjÒ}r×(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rØjò)�rÙ}rÚ(jÅX‹`The TI SDO IPC Package `__ section describes the modules in the ti.sdo.ipc package.jÆjÕjÎj<jÐjõjÒ}rÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÞ]rÜ(jû)�rÝ}rÞ(jÅXR`The TI SDO IPC Package `__jÒ}rß(UnameXThe TI SDO IPC PackagejX5index_Foundational_Components.html#ti-sdo-ipc-packagej×]jÖ]jÔ]jÕ]jÚ]ujÆjÙjÞ]ràjçXThe TI SDO IPC Packagerá…�râ}rã(jÅUjÆjÝubajÐjÿubjçX9 section describes the modules in the ti.sdo.ipc package.rä…�rå}ræ(jÅX9 section describes the modules in the ti.sdo.ipc package.jÆjÙubeubaubj{)�rç}rè(jÅX’`The TI SDO Utils Package `__ section describes the modules in the ti.sdo.utils package. jÆjÑjÎj<jÐjjÒ}ré(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rêjò)�rë}rì(jÅX‘`The TI SDO Utils Package `__ section describes the modules in the ti.sdo.utils package.jÆjçjÎj<jÐjõjÒ}rí(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]rî(jû)�rï}rð(jÅXV`The TI SDO Utils Package `__jÒ}rñ(UnameXThe TI SDO Utils PackagejX7index_Foundational_Components.html#ti-sdo-utils-packagej×]jÖ]jÔ]jÕ]jÚ]ujÆjëjÞ]ròjçXThe TI SDO Utils Packageró…�rô}rõ(jÅUjÆjïubajÐjÿubjçX; section describes the modules in the ti.sdo.utils package.rö…�r÷}rø(jÅX; section describes the modules in the ti.sdo.utils package.jÆjëubeubaubj{)�rù}rú(jÅXž`IPC 3.x Migration Guide `__ Provides details of migrating to IPC 3.x from previous releases jÆjÑjÎj<jÐjjÒ}rû(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rüjò)�rý}rþ(jÅX�`IPC 3.x Migration Guide `__ Provides details of migrating to IPC 3.x from previous releasesjÆjùjÎj<jÐjõjÒ}rÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÞ]r(jû)�r}r(jÅX]`IPC 3.x Migration Guide `__jÒ}r(UnameXIPC 3.x Migration GuidejX?http://processors.wiki.ti.com/index.php/IPC_3.x_Migration_Guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjýjÞ]rjçXIPC 3.x Migration Guider…�r}r(jÅUjÆjubajÐjÿubjçX@ Provides details of migrating to IPC 3.x from previous releasesr…�r }r (jÅX@ Provides details of migrating to IPC 3.x from previous releasesjÆjýubeubaubj{)�r }r (jÅX²`IPC GateMP Support for UIO and Misc Driver `__ Provides details of IPC GateMP support with UIO driver jÆjÑjÎj<jÐjjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rjò)�r}r(jÅX±`IPC GateMP Support for UIO and Misc Driver `__ Provides details of IPC GateMP support with UIO driverjÆj jÎj<jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÞ]r(jû)�r}r(jÅXz`IPC GateMP Support for UIO and Misc Driver `__jÒ}r(UnameX*IPC GateMP Support for UIO and Misc DriverjXIindex_Foundational_Components.html#gatemp-support-for-uio-and-misc-driverj×]jÖ]jÔ]jÕ]jÚ]ujÆjjÞ]rjçX*IPC GateMP Support for UIO and Misc Driverr…�r}r(jÅUjÆjubajÐjÿubjçX7 Provides details of IPC GateMP support with UIO driverr…�r}r(jÅX7 Provides details of IPC GateMP support with UIO driverjÆjubeubaubj{)�r}r(jÅX±`RTOS IPC Transports `__ explains details of the additional RTOS IPC transports provided via the Processor SDK PDK component. jÆjÑjÎj<jÐjjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r jò)�r!}r"(jÅX°`RTOS IPC Transports `__ explains details of the additional RTOS IPC transports provided via the Processor SDK PDK component.jÆjjÎj<jÐjõjÒ}r#(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÞ]r$(jû)�r%}r&(jÅXK`RTOS IPC Transports `__jÒ}r'(UnameXRTOS IPC TransportsjX1index_Foundational_Components.html#ipc-transportsj×]jÖ]jÔ]jÕ]jÚ]ujÆj!jÞ]r(jçXRTOS IPC Transportsr)…�r*}r+(jÅUjÆj%ubajÐjÿubjçXe explains details of the additional RTOS IPC transports provided via the Processor SDK PDK component.r,…�r-}r.(jÅXe explains details of the additional RTOS IPC transports provided via the Processor SDK PDK component.jÆj!ubeubaubj{)�r/}r0(jÅX‘`Rebuilding IPC `__ explains how to rebuild the IPC libraries if you modify the source files. jÆjÑjÎj<jÐjjÒ}r1(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r2jò)�r3}r4(jÅX�`Rebuilding IPC `__ explains how to rebuild the IPC libraries if you modify the source files.jÆj/jÎj<jÐjõjÒ}r5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]r6(jû)�r7}r8(jÅXF`Rebuilding IPC `__jÒ}r9(UnameXRebuilding IPCjX1index_Foundational_Components.html#rebuilding-ipcj×]jÖ]jÔ]jÕ]jÚ]ujÆj3jÞ]r:jçXRebuilding IPCr;…�r<}r=(jÅUjÆj7ubajÐjÿubjçXJ explains how to rebuild the IPC libraries if you modify the source files.r>…�r?}r@(jÅXJ explains how to rebuild the IPC libraries if you modify the source files.jÆj3ubeubaubeubjò)�rA}rB(jÅX**FAQ**rCjÆj¦jÎj<jÐjõjÒ}rD(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÝhjÞ]rEjÚ)�rF}rG(jÅjCjÒ}rH(jÔ]jÕ]jÖ]j×]jÚ]ujÆjAjÞ]rIjçXFAQrJ…�rK}rL(jÅUjÆjFubajÐjâubaubjt)�rM}rN(jÅUjÆj¦jÎj<jÐjwjÒ}rO(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKZjÝhjÞ]rPj{)�rQ}rR(jÅXc`IPC 3.x FAQ `__ Frequently asked questions on IPC 3.x jÆjMjÎj<jÐjjÒ}rS(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rTjò)�rU}rV(jÅXb`IPC 3.x FAQ `__ Frequently asked questions on IPC 3.xjÆjQjÎj<jÐjõjÒ}rW(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]rX(jû)�rY}rZ(jÅX<`IPC 3.x FAQ `__jÒ}r[(UnameX IPC 3.x FAQjX*index_Foundational_Components.html#ipc-faqj×]jÖ]jÔ]jÕ]jÚ]ujÆjUjÞ]r\jçX IPC 3.x FAQr]…�r^}r_(jÅUjÆjYubajÐjÿubjçX& Frequently asked questions on IPC 3.xr`…�ra}rb(jÅX& Frequently asked questions on IPC 3.xjÆjUubeubaubaubcdocutils.nodes line_block rc)�rd}re(jÅUjÆj¦jÎj<jÐU line_blockrfjÒ}rg(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÝhjÞ]rhcdocutils.nodes line ri)�rj}rk(jÅUUindentrlKjÆjdjÎj<jÐjÜjÒ}rm(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjë)�rn}ro(jÅXØPlease see the release notes in your IPC installation before starting to use IPC. The release notes contain important information about feature support, issues, and compatibility information for a particular release.jÆj¦jÎj<jÐjïjÒ}rp(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rqjò)�rr}rs(jÅXØPlease see the release notes in your IPC installation before starting to use IPC. The release notes contain important information about feature support, issues, and compatibility information for a particular release.rtjÆjnjÎj<jÐjõjÒ}ru(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÞ]rvjçXØPlease see the release notes in your IPC installation before starting to use IPC. The release notes contain important information about feature support, issues, and compatibility information for a particular release.rw…�rx}ry(jÅjtjÆjrubaubaubjc)�rz}r{(jÅUjÆj¦jÎj<jÐjfjÒ}r|(jÔ]jÕ]jÖ]j×]jÚ]ujÜKejÝhjÞ]r}ji)�r~}r(jÅUjlKjÆjzjÎj<jÐjÜjÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�r�}r‚(jÅUjÆjÌjÎjÏjÐjÑjÒ}rƒ(jÔ]jÕ]jÖ]j×]r„Uuse-cases-for-ipcr…ajÚ]r†hàaujÜKjÝhjÞ]r‡(jà)�rˆ}r‰(jÅXUse Cases for IPCrŠjÆj�jÎjÏjÐjäjÒ}r‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rŒjçXUse Cases for IPCr�…�rŽ}r�(jÅjŠjÆjˆubaubj7)�r�}r‘(jÅXIhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/Use_Cases_for_IPCjÆj�jÎj:X?source/rtos/PDK_Platform_Software/IPC/Use_Cases_for_IPC.rst.incr’…�r“}r”bjÐj>jÒ}r•(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r–jçXIhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/Use_Cases_for_IPCr—…�r˜}r™(jÅUjÆj�ubaubjò)�rš}r›(jÅXÕYou can use IPC modules in a variety of combinations. From the simplest setup to the setup with the most functionality, the use case options are as follows. A number of variations of these cases are also possible:rœjÆj�jÎj“jÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ržjçXÕYou can use IPC modules in a variety of combinations. From the simplest setup to the setup with the most functionality, the use case options are as follows. A number of variations of these cases are also possible:rŸ…�r }r¡(jÅjœjÆjšubaubjt)�r¢}r£(jÅUjÆj�jÎj“jÐjwjÒ}r¤(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r¥(j{)�r¦}r§(jÅXM**Minimal use of IPC. (BIOS-to-BIOS only)** This scenario performs inter-processor notification. The amount of data passed with a notification is minimal--typically on the order of 32 bits. This scenario is best used for simple synchronization between processors without the overhead and complexity of message-passing infrastructure.jÆj¢jÎj“jÐjjÒ}r¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r©jò)�rª}r«(jÅXM**Minimal use of IPC. (BIOS-to-BIOS only)** This scenario performs inter-processor notification. The amount of data passed with a notification is minimal--typically on the order of 32 bits. This scenario is best used for simple synchronization between processors without the overhead and complexity of message-passing infrastructure.jÆj¦jÎj“jÐjõjÒ}r¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r­(jÚ)�r®}r¯(jÅX+**Minimal use of IPC. (BIOS-to-BIOS only)**jÒ}r°(jÔ]jÕ]jÖ]j×]jÚ]ujÆjªjÞ]r±jçX'Minimal use of IPC. (BIOS-to-BIOS only)r²…�r³}r´(jÅUjÆj®ubajÐjâubjçX" This scenario performs inter-processor notification. The amount of data passed with a notification is minimal--typically on the order of 32 bits. This scenario is best used for simple synchronization between processors without the overhead and complexity of message-passing infrastructure.rµ…�r¶}r·(jÅX" This scenario performs inter-processor notification. The amount of data passed with a notification is minimal--typically on the order of 32 bits. This scenario is best used for simple synchronization between processors without the overhead and complexity of message-passing infrastructure.jÆjªubeubaubj{)�r¸}r¹(jÅX**Add data passing. (BIOS-to-BIOS only)** This scenario adds the ability to pass linked list elements between processors to the previous minimal scenario. The linked list implementation may optionally use shared memory and/or gates to manage synchronization.jÆj¢jÎj“jÐjjÒ}rº(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r»jò)�r¼}r½(jÅX**Add data passing. (BIOS-to-BIOS only)** This scenario adds the ability to pass linked list elements between processors to the previous minimal scenario. The linked list implementation may optionally use shared memory and/or gates to manage synchronization.jÆj¸jÎj“jÐjõjÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r¿(jÚ)�rÀ}rÁ(jÅX)**Add data passing. (BIOS-to-BIOS only)**jÒ}rÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼jÞ]rÃjçX%Add data passing. (BIOS-to-BIOS only)rÄ…�rÅ}rÆ(jÅUjÆjÀubajÐjâubjçXÙ This scenario adds the ability to pass linked list elements between processors to the previous minimal scenario. The linked list implementation may optionally use shared memory and/or gates to manage synchronization.rÇ…�rÈ}rÉ(jÅXÙ This scenario adds the ability to pass linked list elements between processors to the previous minimal scenario. The linked list implementation may optionally use shared memory and/or gates to manage synchronization.jÆj¼ubeubaubj{)�rÊ}rË(jÅXˆ**Add dynamic allocation. (BIOS-to-BIOS only)** This scenario adds the ability to dynamically allocate linked list elements from a heap.jÆj¢jÎj“jÐjjÒ}rÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÍjò)�rÎ}rÏ(jÅXˆ**Add dynamic allocation. (BIOS-to-BIOS only)** This scenario adds the ability to dynamically allocate linked list elements from a heap.jÆjÊjÎj“jÐjõjÒ}rÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÑ(jÚ)�rÒ}rÓ(jÅX/**Add dynamic allocation. (BIOS-to-BIOS only)**jÒ}rÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÎjÞ]rÕjçX+Add dynamic allocation. (BIOS-to-BIOS only)rÖ…�r×}rØ(jÅUjÆjÒubajÐjâubjçXY This scenario adds the ability to dynamically allocate linked list elements from a heap.rÙ…�rÚ}rÛ(jÅXY This scenario adds the ability to dynamically allocate linked list elements from a heap.jÆjÎubeubaubj{)�rÜ}rÝ(jÅX **Powerful but easy-to-use messaging. (HLOS and BIOS)** This scenario uses the MessageQ module for messaging. The application configures other modules. However, the APIs for other modules are then used internally by MessageQ, rather than directly by the application. jÆj¢jÎj“jÐjjÒ}rÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rßjò)�rà}rá(jÅX **Powerful but easy-to-use messaging. (HLOS and BIOS)** This scenario uses the MessageQ module for messaging. The application configures other modules. However, the APIs for other modules are then used internally by MessageQ, rather than directly by the application.jÆjÜjÎj“jÐjõjÒ}râ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rã(jÚ)�rä}rå(jÅX7**Powerful but easy-to-use messaging. (HLOS and BIOS)**jÒ}ræ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjàjÞ]rçjçX3Powerful but easy-to-use messaging. (HLOS and BIOS)rè…�ré}rê(jÅUjÆjäubajÐjâubjçXÓ This scenario uses the MessageQ module for messaging. The application configures other modules. However, the APIs for other modules are then used internally by MessageQ, rather than directly by the application.rë…�rì}rí(jÅXÓ This scenario uses the MessageQ module for messaging. The application configures other modules. However, the APIs for other modules are then used internally by MessageQ, rather than directly by the application.jÆjàubeubaubeubjò)�rî}rï(jÅXFIn the following sections, figures show modules used by each scenario.rðjÆj�jÎj“jÐjõjÒ}rñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ròjçXFIn the following sections, figures show modules used by each scenario.ró…�rô}rõ(jÅjðjÆjîubaubjt)�rö}r÷(jÅUjÆj�jÎj“jÐjwjÒ}rø(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rù(j{)�rú}rû(jÅX¬:raw-html:`Blue boxes,` identify modules for which your application will call C API functions other than those used to dynamically create objects.rüjÆjöjÎj“jÐjjÒ}rý(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rþjò)�rÿ}r(jÅjüjÆjújÎj“jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r(cdocutils.nodes raw r)�r}r(jÅX1:raw-html:`Blue boxes,`jÆjÿjÎj“jÐUrawrjÒ}r(Uformatj:Xhtmlr…�r }r bj@jAj×]jÖ]jÔ]jÕ]r Uraw-htmlr ajÚ]ujÜKjÞ]r jçX%Blue boxes,r…�r}r(jÅUjÆjubaubjçX{ identify modules for which your application will call C API functions other than those used to dynamically create objects.r…�r}r(jÅX{ identify modules for which your application will call C API functions other than those used to dynamically create objects.jÆjÿubeubaubj{)�r}r(jÅXñ:raw-html:`Red boxes,` identify modules that require only configuration by your application. Static configuration is performed in an XDCtools configuration script (.cfg). Dynamic configuration is performed in C code.rjÆjöjÎj“jÐjjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rjò)�r}r(jÅjjÆjjÎj“jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r(j)�r}r(jÅX/:raw-html:`Red boxes,`jÆjjÎj“jÐjjÒ}r(Uformatj j@jAj×]jÖ]jÔ]jÕ]r j ajÚ]ujÜKjÞ]r!jçX#Red boxes,r"…�r#}r$(jÅUjÆjubaubjçX identify modules that require only configuration by your application. Static configuration is performed in an XDCtools configuration script (.cfg). Dynamic configuration is performed in C code.r%…�r&}r'(jÅX identify modules that require only configuration by your application. Static configuration is performed in an XDCtools configuration script (.cfg). Dynamic configuration is performed in C code.jÆjubeubaubj{)�r(}r)(jÅX™:raw-html:`Grey boxes,` identify modules that are used internally but do not need to be configured or have their APIs called. jÆjöjÎj“jÐjjÒ}r*(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r+jò)�r,}r-(jÅX—:raw-html:`Grey boxes,` identify modules that are used internally but do not need to be configured or have their APIs called.jÆj(jÎj“jÐjõjÒ}r.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r/(j)�r0}r1(jÅX1:raw-html:`Grey boxes,`jÆj,jÎj“jÐjjÒ}r2(Uformatj j@jAj×]jÖ]jÔ]jÕ]r3j ajÚ]ujÜKjÞ]r4jçX%Grey boxes,r5…�r6}r7(jÅUjÆj0ubaubjçXf identify modules that are used internally but do not need to be configured or have their APIs called.r8…�r9}r:(jÅXf identify modules that are used internally but do not need to be configured or have their APIs called.jÆj,ubeubaubeubjÇ)�r;}r<(jÅUjÆj�jÎj“jÐjÑjÒ}r=(jÔ]jÕ]jÖ]j×]r>U&minimal-use-scenario-bios-to-bios-onlyr?ajÚ]r@hTaujÜK"jÝhjÞ]rA(jà)�rB}rC(jÅX(Minimal Use Scenario (BIOS-to-BIOS only)rDjÆj;jÎj“jÐjäjÒ}rE(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÝhjÞ]rFjçX(Minimal Use Scenario (BIOS-to-BIOS only)rG…�rH}rI(jÅjDjÆjBubaubjò)�rJ}rK(jÅXFThis scenario performs inter-processor notification using a Notify driver, which is used by the Notify module. This scenario is best used for simple synchronization in which you want to send a message to another processor to tell it to perform some action and optionally have it notify the first processor when it is finished.rLjÆj;jÎj“jÐjõjÒ}rM(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÝhjÞ]rNjçXFThis scenario performs inter-processor notification using a Notify driver, which is used by the Notify module. This scenario is best used for simple synchronization in which you want to send a message to another processor to tell it to perform some action and optionally have it notify the first processor when it is finished.rO…�rP}rQ(jÅjLjÆjJubaubjR)�rR}rS(jÅX*.. Image:: ../images/IpcUG_over_1_2_1.png jÆj;jÎj“jÐjZjÒ}rT(UuriX#rtos/../images/IpcUG_over_1_2_1.pngrUj×]jÖ]jÔ]jÕ]jX}rVU*jUsjÚ]ujÜK+jÝhjÞ]ubjò)�rW}rX(jÅXðIn this scenario, you make API calls to the Notify module. For example, the Notify_sendEvent() function sends an event to the specified processor. You can dynamically register callback functions with the Notify module to handle such events.rYjÆj;jÎj“jÐjõjÒ}rZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÝhjÞ]r[jçXðIn this scenario, you make API calls to the Notify module. For example, the Notify_sendEvent() function sends an event to the specified processor. You can dynamically register callback functions with the Notify module to handle such events.r\…�r]}r^(jÅjYjÆjWubaubjò)�r_}r`(jÅX_You must statically configure MultiProc module properties, which are used by the Notify module.rajÆj;jÎj“jÐjõjÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÝhjÞ]rcjçX_You must statically configure MultiProc module properties, which are used by the Notify module.rd…�re}rf(jÅjajÆj_ubaubjò)�rg}rh(jÅXïThe amount of data passed with a notification is minimal. You can send an event number, which is typically used by the callback function to determine what action it needs to perform. Optionally, a small "payload"? of data can also be sent.rijÆj;jÎj“jÐjõjÒ}rj(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÝhjÞ]rkjçXïThe amount of data passed with a notification is minimal. You can send an event number, which is typically used by the callback function to determine what action it needs to perform. Optionally, a small "payload"? of data can also be sent.rl…�rm}rn(jÅjijÆjgubaubjò)�ro}rp(jÅX˜See `Notify Module `__ and `MultiProc Module `__.jÆj;jÎj“jÐjõjÒ}rq(jÔ]jÕ]jÖ]j×]jÚ]ujÜK9jÝhjÞ]rr(jçXSee rs…�rt}ru(jÅXSee jÆjoubjû)�rv}rw(jÅXD`Notify Module `__jÒ}rx(UnameX Notify ModulejX0index_Foundational_Components.html#notify-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjojÞ]ryjçX Notify Modulerz…�r{}r|(jÅUjÆjvubajÐjÿubjçX and r}…�r~}r(jÅX and jÆjoubjû)�r€}r�(jÅXJ`MultiProc Module `__jÒ}r‚(UnameXMultiProc ModulejX3index_Foundational_Components.html#multiproc-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjojÞ]rƒjçXMultiProc Moduler„…�r…}r†(jÅUjÆj€ubajÐjÿubjçX.…�r‡}rˆ(jÅX.jÆjoubeubeubjÇ)�r‰}rŠ(jÅUjÆj�jÎj“jÐjÑjÒ}r‹(jÔ]jÕ]jÖ]j×]rŒU'data-passing-scenario-bios-to-bios-onlyr�ajÚ]rŽj[aujÜK>jÝhjÞ]r�(jà)�r�}r‘(jÅX)Data Passing Scenario (BIOS-to-BIOS only)r’jÆj‰jÎj“jÐjäjÒ}r“(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÝhjÞ]r”jçX)Data Passing Scenario (BIOS-to-BIOS only)r•…�r–}r—(jÅj’jÆj�ubaubjò)�r˜}r™(jÅX†In addition to the IPC modules used in the previous scenario, you can use the ListMP module to share a linked list between processors.ršjÆj‰jÎj“jÐjõjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÝhjÞ]rœjçX†In addition to the IPC modules used in the previous scenario, you can use the ListMP module to share a linked list between processors.r�…�rž}rŸ(jÅjšjÆj˜ubaubjR)�r }r¡(jÅX*.. Image:: ../images/IpcUG_over_1_2_2.png jÆj‰jÎj“jÐjZjÒ}r¢(UuriX#rtos/../images/IpcUG_over_1_2_2.pngr£j×]jÖ]jÔ]jÕ]jX}r¤U*j£sjÚ]ujÜKDjÝhjÞ]ubjò)�r¥}r¦(jÅXFIn this scenario, you make API calls to the Notify and ListMP modules.r§jÆj‰jÎj“jÐjõjÒ}r¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÝhjÞ]r©jçXFIn this scenario, you make API calls to the Notify and ListMP modules.rª…�r«}r¬(jÅj§jÆj¥ubaubjò)�r­}r®(jÅX¦The ListMP module is a doubly-linked-list designed to be shared by multiple processors. ListMP differs from a conventional "local"? linked list in the following ways:r¯jÆj‰jÎj“jÐjõjÒ}r°(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÝhjÞ]r±jçX¦The ListMP module is a doubly-linked-list designed to be shared by multiple processors. ListMP differs from a conventional "local"? linked list in the following ways:r²…�r³}r´(jÅj¯jÆj­ubaubjt)�rµ}r¶(jÅUjÆj‰jÎj“jÐjwjÒ}r·(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKKjÝhjÞ]r¸(j{)�r¹}rº(jÅX^Address translation is performed internally upon pointers contained within the data structure.jÆjµjÎj“jÐjjÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¼jò)�r½}r¾(jÅX^Address translation is performed internally upon pointers contained within the data structure.r¿jÆj¹jÎj“jÐjõjÒ}rÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÞ]rÁjçX^Address translation is performed internally upon pointers contained within the data structure.rÂ…�rÃ}rÄ(jÅj¿jÆj½ubaubaubj{)�rÅ}rÆ(jÅXGCache coherency is maintained when the cacheable shared memory is used.jÆjµjÎj“jÐjjÒ}rÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÈjò)�rÉ}rÊ(jÅXGCache coherency is maintained when the cacheable shared memory is used.rËjÆjÅjÎj“jÐjõjÒ}rÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÞ]rÍjçXGCache coherency is maintained when the cacheable shared memory is used.rÎ…�rÏ}rÐ(jÅjËjÆjÉubaubaubj{)�rÑ}rÒ(jÅXnA multi-processor gate (GateMP) is used to protect read/write accesses to the list by two or more processors. jÆjµjÎj“jÐjjÒ}rÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÔjò)�rÕ}rÖ(jÅXmA multi-processor gate (GateMP) is used to protect read/write accesses to the list by two or more processors.r×jÆjÑjÎj“jÐjõjÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÞ]rÙjçXmA multi-processor gate (GateMP) is used to protect read/write accesses to the list by two or more processors.rÚ…�rÛ}rÜ(jÅj×jÆjÕubaubaubeubjò)�rÝ}rÞ(jÅXƒListMP uses SharedRegion's lookup table to manage access to shared memory, so configuration of the SharedRegion module is required.rßjÆj‰jÎj“jÐjõjÒ}rà(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÝhjÞ]rájçXƒListMP uses SharedRegion's lookup table to manage access to shared memory, so configuration of the SharedRegion module is required.râ…�rã}rä(jÅjßjÆjÝubaubjò)�rå}ræ(jÅXõInternally, ListMP can optionally use the NameServer module to manage name/value pairs. The ListMP module also uses a GateMP object, which your application must configure. The GateMP is used internally to synchronize access to the list elements.rçjÆj‰jÎj“jÐjõjÒ}rè(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÝhjÞ]réjçXõInternally, ListMP can optionally use the NameServer module to manage name/value pairs. The ListMP module also uses a GateMP object, which your application must configure. The GateMP is used internally to synchronize access to the list elements.rê…�rë}rì(jÅjçjÆjåubaubjò)�rí}rî(jÅX4See `ListMP Module `__, `GateMP Module `__, `SharedRegion Module `__, and `NameServer Module `__.jÆj‰jÎj“jÐjõjÒ}rï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÝhjÞ]rð(jçXSee rñ…�rò}ró(jÅXSee jÆjíubjû)�rô}rõ(jÅXD`ListMP Module `__jÒ}rö(UnameX ListMP ModulejX0index_Foundational_Components.html#listmp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjíjÞ]r÷jçX ListMP Modulerø…�rù}rú(jÅUjÆjôubajÐjÿubjçX, rû…�rü}rý(jÅX, jÆjíubjû)�rþ}rÿ(jÅXD`GateMP Module `__jÒ}r(UnameX GateMP ModulejX0index_Foundational_Components.html#gatemp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjíjÞ]rjçX GateMP Moduler…�r}r(jÅUjÆjþubajÐjÿubjçX, r…�r}r(jÅX, jÆjíubjû)�r}r (jÅXQ`SharedRegion Module `__jÒ}r (UnameXSharedRegion ModulejX7index_Foundational_Components.html#shared-region-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjíjÞ]r jçXSharedRegion Moduler …�r }r(jÅUjÆjubajÐjÿubjçX, and r…�r}r(jÅX, and jÆjíubjû)�r}r(jÅXL`NameServer Module `__jÒ}r(UnameXNameServer ModulejX4index_Foundational_Components.html#nameserver-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjíjÞ]rjçXNameServer Moduler…�r}r(jÅUjÆjubajÐjÿubjçX.…�r}r(jÅX.jÆjíubeubeubjÇ)�r}r(jÅUjÆj�jÎj“jÐjÑjÒ}r(jÔ]jÕ]jÖ]j×]rU-dynamic-allocation-scenario-bios-to-bios-onlyrajÚ]r j‰aujÜKbjÝhjÞ]r!(jà)�r"}r#(jÅX/Dynamic Allocation Scenario (BIOS-to-BIOS only)r$jÆjjÎj“jÐjäjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÝhjÞ]r&jçX/Dynamic Allocation Scenario (BIOS-to-BIOS only)r'…�r(}r)(jÅj$jÆj"ubaubjò)�r*}r+(jÅXmTo the previous scenario, you can add dynamic allocation of ListMP elements using one of the Heap*MP modules.r,jÆjjÎj“jÐjõjÒ}r-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÝhjÞ]r.jçXmTo the previous scenario, you can add dynamic allocation of ListMP elements using one of the Heap*MP modules.r/…�r0}r1(jÅj,jÆj*ubaubjR)�r2}r3(jÅX*.. Image:: ../images/IpcUG_over_1_2_3.png jÆjjÎj“jÐjZjÒ}r4(UuriX#rtos/../images/IpcUG_over_1_2_3.pngr5j×]jÖ]jÔ]jÕ]jX}r6U*j5sjÚ]ujÜKhjÝhjÞ]ubjò)�r7}r8(jÅX[In this scenario, you make API calls to the Notify and ListMP modules and a Heap*MP module.r9jÆjjÎj“jÐjõjÒ}r:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÝhjÞ]r;jçX[In this scenario, you make API calls to the Notify and ListMP modules and a Heap*MP module.r<…�r=}r>(jÅj9jÆj7ubaubjò)�r?}r@(jÅX¸In addition to the modules that you configured for the previous scenario, the Heap*MP modules use a GateMP that you must configure. You may use the same GateMP instance used by ListMP.rAjÆjjÎj“jÐjõjÒ}rB(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÝhjÞ]rCjçX¸In addition to the modules that you configured for the previous scenario, the Heap*MP modules use a GateMP that you must configure. You may use the same GateMP instance used by ListMP.rD…�rE}rF(jÅjAjÆj?ubaubjò)�rG}rH(jÅX”See `Heap*MP Modules `__ and `GateMP Module `__.jÆjjÎj“jÐjõjÒ}rI(jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÝhjÞ]rJ(jçXSee rK…�rL}rM(jÅXSee jÆjGubjû)�rN}rO(jÅXF`Heap*MP Modules `__jÒ}rP(UnameXHeap*MP ModulesjX0index_Foundational_Components.html#heapmp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjGjÞ]rQjçXHeap*MP ModulesrR…�rS}rT(jÅUjÆjNubajÐjÿubjçX and rU…�rV}rW(jÅX and jÆjGubjû)�rX}rY(jÅXD`GateMP Module `__jÒ}rZ(UnameX GateMP ModulejX0index_Foundational_Components.html#gatemp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjGjÞ]r[jçX GateMP Moduler\…�r]}r^(jÅUjÆjXubajÐjÿubjçX.…�r_}r`(jÅX.jÆjGubeubeubjÇ)�ra}rb(jÅUjÆj�jÎj“jÐjÑjÒ}rc(jÔ]jÕ]jÖ]j×]rdU>powerful-but-easy-to-use-messaging-with-messageq-hlos-and-biosreajÚ]rfh;aujÜKujÝhjÞ]rg(jà)�rh}ri(jÅX@Powerful But Easy-to-Use Messaging with MessageQ (HLOS and BIOS)rjjÆjajÎj“jÐjäjÒ}rk(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÝhjÞ]rljçX@Powerful But Easy-to-Use Messaging with MessageQ (HLOS and BIOS)rm…�rn}ro(jÅjjjÆjhubaubjò)�rp}rq(jÅXFinally, to use the most sophisticated inter-processor communication scenario supported by IPC, you can add the MessageQ module. Note that the following diagram shows one particular transport (TransportShm) and may not apply to all devices and/or environments.rrjÆjajÎj“jÐjõjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÝhjÞ]rtjçXFinally, to use the most sophisticated inter-processor communication scenario supported by IPC, you can add the MessageQ module. Note that the following diagram shows one particular transport (TransportShm) and may not apply to all devices and/or environments.ru…�rv}rw(jÅjrjÆjpubaubjR)�rx}ry(jÅX*.. Image:: ../images/IpcUG_over_1_2_4.png jÆjajÎj“jÐjZjÒ}rz(UuriX#rtos/../images/IpcUG_over_1_2_4.pngr{j×]jÖ]jÔ]jÕ]jX}r|U*j{sjÚ]ujÜK}jÝhjÞ]ubjò)�r}}r~(jÅX^In this scenario, you make API calls to the MessageQ module for inter-processor communication.rjÆjajÎj“jÐjõjÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÝhjÞ]r�jçX^In this scenario, you make API calls to the MessageQ module for inter-processor communication.r‚…�rƒ}r„(jÅjjÆj}ubaubjò)�r…}r†(jÅXôAPI calls made to the Notify, ListMP, and Heap*MP modules in the previous scenarios are not needed. Instead, your application only needs to configure the MultiProc and (if the underlying MessageQ transport requires it) the SharedRegion modules.r‡jÆjajÎj“jÐjõjÒ}rˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]r‰jçXôAPI calls made to the Notify, ListMP, and Heap*MP modules in the previous scenarios are not needed. Instead, your application only needs to configure the MultiProc and (if the underlying MessageQ transport requires it) the SharedRegion modules.rŠ…�r‹}rŒ(jÅj‡jÆj…ubaubjë)�r�}rŽ(jÅXSome MessageQ transports do not use SharedRegion, but instead copy the message payloads. This may be done because of hardware limitations (e.g. no shared memory is available) or software design (e.g. transports built on Linux kernel-friendly rpmsg drivers).jÆjajÎj“jÐjïjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�jò)�r‘}r’(jÅXSome MessageQ transports do not use SharedRegion, but instead copy the message payloads. This may be done because of hardware limitations (e.g. no shared memory is available) or software design (e.g. transports built on Linux kernel-friendly rpmsg drivers).r“jÆj�jÎj“jÐjõjÒ}r”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÞ]r•jçXSome MessageQ transports do not use SharedRegion, but instead copy the message payloads. This may be done because of hardware limitations (e.g. no shared memory is available) or software design (e.g. transports built on Linux kernel-friendly rpmsg drivers).r–…�r—}r˜(jÅj“jÆj‘ubaubaubjò)�r™}rš(jÅXûThe ``Ipc_start()`` API call configures all the necessary underlying modules (e.g. Notify, HeapMemMP, ListMP, TransportShm, NameServer, and GateMP). The actual details of what modules ``Ipc_start()`` initializes varies from environment to environment.jÆjajÎj“jÐjõjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÝhjÞ]rœ(jçXThe r�…�rž}rŸ(jÅXThe jÆj™ubcdocutils.nodes literal r )�r¡}r¢(jÅX``Ipc_start()``jÒ}r£(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™jÞ]r¤jçX Ipc_start()r¥…�r¦}r§(jÅUjÆj¡ubajÐUliteralr¨ubjçX¥ API call configures all the necessary underlying modules (e.g. Notify, HeapMemMP, ListMP, TransportShm, NameServer, and GateMP). The actual details of what modules r©…�rª}r«(jÅX¥ API call configures all the necessary underlying modules (e.g. Notify, HeapMemMP, ListMP, TransportShm, NameServer, and GateMP). The actual details of what modules jÆj™ubj )�r¬}r­(jÅX``Ipc_start()``jÒ}r®(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™jÞ]r¯jçX Ipc_start()r°…�r±}r²(jÅUjÆj¬ubajÐj¨ubjçX4 initializes varies from environment to environment.r³…�r´}rµ(jÅX4 initializes varies from environment to environment.jÆj™ubeubjò)�r¶}r·(jÅX»It is possible to use MessageQ in a single-processor SYS/BIOS application. In such a case, only API calls to MessageQ and configuration of any xdc.runtime.IHeap implementation are needed.r¸jÆjajÎj“jÐjõjÒ}r¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜK“jÝhjÞ]rºjçX»It is possible to use MessageQ in a single-processor SYS/BIOS application. In such a case, only API calls to MessageQ and configuration of any xdc.runtime.IHeap implementation are needed.r»…�r¼}r½(jÅj¸jÆj¶ubaubeubeubjÇ)�r¾}r¿(jÅUjÆjÌjÎjÏjÐjÑjÒ}rÀ(jÔ]jÕ]jÖ]j×]rÁU ipc-examplesrÂajÚ]rÃj»aujÜK%jÝhjÞ]rÄ(jà)�rÅ}rÆ(jÅX IPC ExamplesrÇjÆj¾jÎjÏjÐjäjÒ}rÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÝhjÞ]rÉjçX IPC ExamplesrÊ…�rË}rÌ(jÅjÇjÆjÅubaubj7)�rÍ}rÎ(jÅX@http://processors.wiki.ti.com/index.php/IPC_Users_Guide/ExamplesjÆj¾jÎj:X:source/rtos/PDK_Platform_Software/IPC/IPC_examples.rst.incrÏ…�rÐ}rÑbjÐj>jÒ}rÒ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rÓjçX@http://processors.wiki.ti.com/index.php/IPC_Users_Guide/ExamplesrÔ…�rÕ}rÖ(jÅUjÆjÍubaubjÇ)�r×}rØ(jÅUjÆj¾jÎjÐjÐjÑjÒ}rÙ(jÔ]jÕ]jÖ]j×]rÚUbuilding-ipc-examplesrÛajÚ]rÜj4aujÜKjÝhjÞ]rÝ(jà)�rÞ}rß(jÅXBuilding IPC ExamplesràjÆj×jÎjÐjÐjäjÒ}rá(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]râjçXBuilding IPC Examplesrã…�rä}rå(jÅjàjÆjÞubaubjò)�ræ}rç(jÅX­The IPC BIOS examples are located in the Processor SDK RTOS IPC directory within the examples folder. Please refer to the readme of each example for details on each example.rèjÆj×jÎjÐjÐjõjÒ}ré(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rêjçX­The IPC BIOS examples are located in the Processor SDK RTOS IPC directory within the examples folder. Please refer to the readme of each example for details on each example.rë…�rì}rí(jÅjèjÆjæubaubjò)�rî}rï(jÅX³The examples are makefile based and can be built using the top-level makefile provided in the Processor SDK RTOS folder. The following commands will build all of the IPC examples.rðjÆj×jÎjÐjÐjõjÒ}rñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ròjçX³The examples are makefile based and can be built using the top-level makefile provided in the Processor SDK RTOS folder. The following commands will build all of the IPC examples.ró…�rô}rõ(jÅjðjÆjîubaubjò)�rö}r÷(jÅX**Windows** ::jÆj×jÎjÐjÐjõjÒ}rø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rùjÚ)�rú}rû(jÅX **Windows**jÒ}rü(jÔ]jÕ]jÖ]j×]jÚ]ujÆjöjÞ]rýjçXWindowsrþ…�rÿ}r(jÅUjÆjúubajÐjâubaubcdocutils.nodes literal_block r)�r}r(jÅX>cd (Processor SDK RTOS folder) setupenv.bat gmake ipc_examplesjÆj×jÎjÐjÐU literal_blockrjÒ}r(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM5jÝhjÞ]rjçX>cd (Processor SDK RTOS folder) setupenv.bat gmake ipc_examplesr…�r}r (jÅUjÆjubaubjò)�r }r (jÅX **Linux** ::jÆj×jÎjÐjÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r jÚ)�r}r(jÅX **Linux**jÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆj jÞ]rjçXLinuxr…�r}r(jÅUjÆjubajÐjâubaubj)�r}r(jÅXEcd (Processor SDK RTOS folder) source ./setupenv.sh make ipc_examplesjÆj×jÎjÐjÐjjÒ}r(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM<jÝhjÞ]rjçXEcd (Processor SDK RTOS folder) source ./setupenv.sh make ipc_examplesr…�r}r(jÅUjÆjubaubeubjÇ)�r}r(jÅUjÆj¾jÎjÐjÐjÑjÒ}r(jÔ]jÕ]jÖ]j×]rUipc-examples-detailsr ajÚ]r!j�aujÜKjÝhjÞ]r"(jà)�r#}r$(jÅXIPC Examples: Detailsr%jÆjjÎjÐjÐjäjÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r'jçXIPC Examples: Detailsr(…�r)}r*(jÅj%jÆj#ubaubjò)�r+}r,(jÅXµThis section explains some of the common details about IPC examples. The sub-directories under the examples are organised into the code for each of the cores in the SOC. For exampler-jÆjjÎjÐjÐjõjÒ}r.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r/jçXµThis section explains some of the common details about IPC examples. The sub-directories under the examples are organised into the code for each of the cores in the SOC. For exampler0…�r1}r2(jÅj-jÆj+ubaubcdocutils.nodes block_quote r3)�r4}r5(jÅUjÆjjÎNjÐU block_quoter6jÒ}r7(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r8jt)�r9}r:(jÅUjÒ}r;(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj4jÞ]r<(j{)�r=}r>(jÅXHostr?jÒ}r@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9jÞ]rAjò)�rB}rC(jÅj?jÆj=jÎjÐjÐjõjÒ}rD(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rEjçXHostrF…�rG}rH(jÅj?jÆjBubaubajÐjubj{)�rI}rJ(jÅXDSP1rKjÒ}rL(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9jÞ]rMjò)�rN}rO(jÅjKjÆjIjÎjÐjÐjõjÒ}rP(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rQjçXDSP1rR…�rS}rT(jÅjKjÆjNubaubajÐjubj{)�rU}rV(jÅXDSP2rWjÒ}rX(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9jÞ]rYjò)�rZ}r[(jÅjWjÆjUjÎjÐjÐjõjÒ}r\(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]r]jçXDSP2r^…�r_}r`(jÅjWjÆjZubaubajÐjubj{)�ra}rb(jÅXIPU1rcjÒ}rd(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9jÞ]rejò)�rf}rg(jÅjcjÆjajÎjÐjÐjõjÒ}rh(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÞ]rijçXIPU1rj…�rk}rl(jÅjcjÆjfubaubajÐjubj{)�rm}rn(jÅXIPU2 jÒ}ro(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9jÞ]rpjò)�rq}rr(jÅXIPU2rsjÆjmjÎjÐjÐjõjÒ}rt(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]rujçXIPU2rv…�rw}rx(jÅjsjÆjqubaubajÐjubejÐjwubaubjò)�ry}rz(jÅX‘Typically we have a host core which is the main core in the SOC and other slave cores. The directory name of the slave cores have a base name (like DSP, IPU etc) which indicates the type of core and a core number. Depending on the example, the Host can run TI BIOS or Linux or QNX and the slave cores in general run TI BIOS only. So the specific build related files need to be interpreted accordingly.r{jÆjjÎjÐjÐjõjÒ}r|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÝhjÞ]r}jçX‘Typically we have a host core which is the main core in the SOC and other slave cores. The directory name of the slave cores have a base name (like DSP, IPU etc) which indicates the type of core and a core number. Depending on the example, the Host can run TI BIOS or Linux or QNX and the slave cores in general run TI BIOS only. So the specific build related files need to be interpreted accordingly.r~…�r}r€(jÅj{jÆjyubaubjÇ)�r�}r‚(jÅUjÆjjÎjÐjÐjÑjÒ}rƒ(jÔ]jÕ]jÖ]j×]r„U$bios-application-configuration-filesr…ajÚ]r†jcaujÜK+jÝhjÞ]r‡(jà)�rˆ}r‰(jÅX$BIOS Application Configuration FilesrŠjÆj�jÎjÐjÐjäjÒ}r‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÝhjÞ]rŒjçX$BIOS Application Configuration Filesr�…�rŽ}r�(jÅjŠjÆjˆubaubjò)�r�}r‘(jÅXpThe cores running BIOS in general has a config file which brings in all the modules needed to complete the application running on the specific core. This section explains the details of the entries in the config file. Note: The details here are just representative of a typical configuration. In general the configuration is customized based on the particular example.r’jÆj�jÎjÐjÐjõjÒ}r“(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÝhjÞ]r”jçXpThe cores running BIOS in general has a config file which brings in all the modules needed to complete the application running on the specific core. This section explains the details of the entries in the config file. Note: The details here are just representative of a typical configuration. In general the configuration is customized based on the particular example.r•…�r–}r—(jÅj’jÆj�ubaubjÇ)�r˜}r™(jÅUjÆj�jÎjÐjÐjÑjÒ}rš(jÔ]jÕ]jÖ]j×]r›Ubios-configurationrœajÚ]r�j^aujÜK1jÝhjÞ]rž(jà)�rŸ}r (jÅXBIOS Configurationr¡jÆj˜jÎjÐjÐjäjÒ}r¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÝhjÞ]r£jçXBIOS Configurationr¤…�r¥}r¦(jÅj¡jÆjŸubaubjò)�r§}r¨(jÅX>The following configuration are related to configuring BIOS ::jÆj˜jÎjÐjÐjõjÒ}r©(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÝhjÞ]rªjçX;The following configuration are related to configuring BIOSr«…�r¬}r­(jÅX;The following configuration are related to configuring BIOSjÆj§ubaubj)�r®}r¯(jÅXšvar BIOS = xdc.useModule('ti.sysbios.BIOS'); /* This adds ipc Startup to be done part of BIOS startup before main*/ BIOS.addUserStartupFunction('&IpcMgr_ipcStartup'); /* The following configures Debug libtype with Debug build */ if (Program.build.profile == "debug") { BIOS.libType = BIOS.LibType_Debug; } else { BIOS.libType = BIOS.LibType_Custom; } var Sem = xdc.useModule('ti.sysbios.knl.Semaphore'); var instSem0_Params = new Sem.Params(); instSem0_Params.mode = Sem.Mode_BINARY; Program.global.runOmpSem = Sem.create(0, instSem0_Params); Program.global.runOmpSem_complete = Sem.create(0, instSem0_Params); var Task = xdc.useModule('ti.sysbios.knl.Task'); Task.common$.namedInstance = true; /* default memory heap */ var Memory = xdc.useModule('xdc.runtime.Memory'); var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); var heapMemParams = new HeapMem.Params(); heapMemParams.size = 0x8000; Memory.defaultHeapInstance = HeapMem.create(heapMemParams); /* create a heap for MessageQ messages */ var HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf'); var params = new HeapBuf.Params; params.align = 8; params.blockSize = 512; params.numBlocks = 20;jÆj˜jÎjÐjÐjjÒ}r°(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM^jÝhjÞ]r±jçXšvar BIOS = xdc.useModule('ti.sysbios.BIOS'); /* This adds ipc Startup to be done part of BIOS startup before main*/ BIOS.addUserStartupFunction('&IpcMgr_ipcStartup'); /* The following configures Debug libtype with Debug build */ if (Program.build.profile == "debug") { BIOS.libType = BIOS.LibType_Debug; } else { BIOS.libType = BIOS.LibType_Custom; } var Sem = xdc.useModule('ti.sysbios.knl.Semaphore'); var instSem0_Params = new Sem.Params(); instSem0_Params.mode = Sem.Mode_BINARY; Program.global.runOmpSem = Sem.create(0, instSem0_Params); Program.global.runOmpSem_complete = Sem.create(0, instSem0_Params); var Task = xdc.useModule('ti.sysbios.knl.Task'); Task.common$.namedInstance = true; /* default memory heap */ var Memory = xdc.useModule('xdc.runtime.Memory'); var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); var heapMemParams = new HeapMem.Params(); heapMemParams.size = 0x8000; Memory.defaultHeapInstance = HeapMem.create(heapMemParams); /* create a heap for MessageQ messages */ var HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf'); var params = new HeapBuf.Params; params.align = 8; params.blockSize = 512; params.numBlocks = 20;r²…�r³}r´(jÅUjÆj®ubaubeubjÇ)�rµ}r¶(jÅUjÆj�jÎjÐjÐjÑjÒ}r·(jÔ]jÕ]jÖ]j×]r¸U xdc-runtimer¹ajÚ]rºhqaujÜKXjÝhjÞ]r»(jà)�r¼}r½(jÅX XDC Runtimer¾jÆjµjÎjÐjÐjäjÒ}r¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÝhjÞ]rÀjçX XDC RuntimerÁ…�rÂ}rÃ(jÅj¾jÆj¼ubaubjò)�rÄ}rÅ(jÅXPThe following configuration are in general used by an IPC application in BIOS ::jÆjµjÎjÐjÐjõjÒ}rÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÝhjÞ]rÇjçXMThe following configuration are in general used by an IPC application in BIOSrÈ…�rÉ}rÊ(jÅXMThe following configuration are in general used by an IPC application in BIOSjÆjÄubaubj)�rË}rÌ(jÅXA/* application uses the following modules and packages */ xdc.useModule('xdc.runtime.Assert'); xdc.useModule('xdc.runtime.Diags'); xdc.useModule('xdc.runtime.Error'); xdc.useModule('xdc.runtime.Log'); xdc.useModule('xdc.runtime.Registry'); xdc.useModule('ti.sysbios.knl.Semaphore'); xdc.useModule('ti.sysbios.knl.Task');jÆjµjÎjÐjÐjjÒ}rÍ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM…jÝhjÞ]rÎjçXA/* application uses the following modules and packages */ xdc.useModule('xdc.runtime.Assert'); xdc.useModule('xdc.runtime.Diags'); xdc.useModule('xdc.runtime.Error'); xdc.useModule('xdc.runtime.Log'); xdc.useModule('xdc.runtime.Registry'); xdc.useModule('ti.sysbios.knl.Semaphore'); xdc.useModule('ti.sysbios.knl.Task');rÏ…�rÐ}rÑ(jÅUjÆjËubaubeubjÇ)�rÒ}rÓ(jÅUjÆj�jÎjÐjÐjÑjÒ}rÔ(jÔ]jÕ]jÖ]j×]rÕUipc-configurationrÖajÚ]r×hVaujÜKgjÝhjÞ]rØ(jà)�rÙ}rÚ(jÅXIPC ConfigurationrÛjÆjÒjÎjÐjÐjäjÒ}rÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]rÝjçXIPC ConfigurationrÞ…�rß}rà(jÅjÛjÆjÙubaubjò)�rá}râ(jÅXCThe following IPC modules are used in a typical IPC application. ::jÆjÒjÎjÐjÐjõjÒ}rã(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÝhjÞ]räjçX@The following IPC modules are used in a typical IPC application.rå…�ræ}rç(jÅX@The following IPC modules are used in a typical IPC application.jÆjáubaubj)�rè}ré(jÅXˆxdc.useModule('ti.sdo.ipc.Ipc'); xdc.useModule('ti.ipc.ipcmgr.IpcMgr'); var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc'); /* The following configures the PROC List */ MultiProc.setConfig("CORE0", ["HOST", "CORE0"]); var msgHeap = HeapBuf.create(params); var MessageQ = xdc.useModule('ti.sdo.ipc.MessageQ'); /* Register msgHeap with messageQ */ MessageQ.registerHeapMeta(msgHeap, 0);jÆjÒjÎjÐjÐjjÒ}rê(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM”jÝhjÞ]rëjçXˆxdc.useModule('ti.sdo.ipc.Ipc'); xdc.useModule('ti.ipc.ipcmgr.IpcMgr'); var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc'); /* The following configures the PROC List */ MultiProc.setConfig("CORE0", ["HOST", "CORE0"]); var msgHeap = HeapBuf.create(params); var MessageQ = xdc.useModule('ti.sdo.ipc.MessageQ'); /* Register msgHeap with messageQ */ MessageQ.registerHeapMeta(msgHeap, 0);rì…�rí}rî(jÅUjÆjèubaubjò)�rï}rð(jÅX¹The following lines configure placement of Resource table in memory. Note that some platforms or applications the placement of memory can be in a different section in the memory map. ::jÆjÒjÎjÐjÐjõjÒ}rñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÝhjÞ]ròjçX¶The following lines configure placement of Resource table in memory. Note that some platforms or applications the placement of memory can be in a different section in the memory map.ró…�rô}rõ(jÅX¶The following lines configure placement of Resource table in memory. Note that some platforms or applications the placement of memory can be in a different section in the memory map.jÆjïubaubj)�rö}r÷(jÅXº/* Enable Memory Translation module that operates on the Resource Table */ var Resource = xdc.useModule('ti.ipc.remoteproc.Resource'); Resource.loadSegment = Program.platform.dataMemory;jÆjÒjÎjÐjÐjjÒ}rø(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¤jÝhjÞ]rùjçXº/* Enable Memory Translation module that operates on the Resource Table */ var Resource = xdc.useModule('ti.ipc.remoteproc.Resource'); Resource.loadSegment = Program.platform.dataMemory;rú…�rû}rü(jÅUjÆjöubaubeubjÇ)�rý}rþ(jÅUjKjÆj�jÎjÐjÐjÑjÒ}rÿ(jÔ]rXtransport configurationrajÕ]jÖ]j×]rUtransport-configurationrajÚ]ujÜK€jÝhjÞ]r(jà)�r}r(jÅXTransport ConfigurationrjÆjýjÎjÐjÐjäjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÝhjÞ]r jçXTransport Configurationr …�r }r (jÅjjÆjubaubjò)�r }r(jÅXwTypically the transport to be used by IPC is specified here. The following snippet configures RPMsg based transport. ::jÆjýjÎjÐjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rjçXtTypically the transport to be used by IPC is specified here. The following snippet configures RPMsg based transport.r…�r}r(jÅXtTypically the transport to be used by IPC is specified here. The following snippet configures RPMsg based transport.jÆj ubaubj)�r}r(jÅX”/* Setup MessageQ transport */ var VirtioSetup = xdc.useModule('ti.ipc.transports.TransportRpmsgSetup'); MessageQ.SetupTransportProxy = VirtioSetup;jÆjýjÎjÐjÐjjÒ}r(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM­jÝhjÞ]rjçX”/* Setup MessageQ transport */ var VirtioSetup = xdc.useModule('ti.ipc.transports.TransportRpmsgSetup'); MessageQ.SetupTransportProxy = VirtioSetup;r…�r}r(jÅUjÆjubaubeubjÇ)�r}r(jÅUjÆj�jÎjÐjÐjÑjÒ}r(jÔ]jÕ]jÖ]j×]rUnameserver-configurationrajÚ]r hÍaujÜK‰jÝhjÞ]r!(jà)�r"}r#(jÅXNameServer Configurationr$jÆjjÎjÐjÐjäjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‰jÝhjÞ]r&jçXNameServer Configurationr'…�r(}r)(jÅj$jÆj"ubaubjò)�r*}r+(jÅX0The Name server to be used is specified here. ::jÆjjÎjÐjÐjõjÒ}r,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÝhjÞ]r-jçX-The Name server to be used is specified here.r.…�r/}r0(jÅX-The Name server to be used is specified here.jÆj*ubaubj)�r1}r2(jÅXÆ/* Setup NameServer remote proxy */ var NameServer = xdc.useModule("ti.sdo.utils.NameServer"); var NsRemote = xdc.useModule("ti.ipc.namesrv.NameServerRemoteRpmsg"); NameServer.SetupProxy = NsRemote;jÆjjÎjÐjÐjjÒ}r3(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¶jÝhjÞ]r4jçXÆ/* Setup NameServer remote proxy */ var NameServer = xdc.useModule("ti.sdo.utils.NameServer"); var NsRemote = xdc.useModule("ti.ipc.namesrv.NameServerRemoteRpmsg"); NameServer.SetupProxy = NsRemote;r5…�r6}r7(jÅUjÆj1ubaubeubjÇ)�r8}r9(jÅUjÆj�jÎjÐjÐjÑjÒ}r:(jÔ]jÕ]jÖ]j×]r;Uinstrumentation-configurationr<ajÚ]r=j&aujÜK”jÝhjÞ]r>(jà)�r?}r@(jÅXInstrumentation ConfigurationrAjÆj8jÎjÐjÐjäjÒ}rB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK”jÝhjÞ]rCjçXInstrumentation ConfigurationrD…�rE}rF(jÅjAjÆj?ubaubjò)�rG}rH(jÅXOThe following configuration are required for system logging and diagnostics. ::jÆj8jÎjÐjÐjõjÒ}rI(jÔ]jÕ]jÖ]j×]jÚ]ujÜK•jÝhjÞ]rJjçXLThe following configuration are required for system logging and diagnostics.rK…�rL}rM(jÅXLThe following configuration are required for system logging and diagnostics.jÆjGubaubj)�rN}rO(jÅX& /* system logger */ var LoggerSys = xdc.useModule('xdc.runtime.LoggerSys'); var LoggerSysParams = new LoggerSys.Params(); var Defaults = xdc.useModule('xdc.runtime.Defaults'); Defaults.common$.logger = LoggerSys.create(LoggerSysParams); /* enable runtime Diags_setMask() for non-XDC spec'd modules */ var Diags = xdc.useModule('xdc.runtime.Diags'); Diags.setMaskEnabled = true; /* override diags mask for selected modules */ xdc.useModule('xdc.runtime.Main'); Diags.setMaskMeta("xdc.runtime.Main", Diags.ENTRY | Diags.EXIT | Diags.INFO, Diags.RUNTIME_ON); var Registry = xdc.useModule('xdc.runtime.Registry'); Registry.common$.diags_ENTRY = Diags.RUNTIME_OFF; Registry.common$.diags_EXIT = Diags.RUNTIME_OFF; Registry.common$.diags_INFO = Diags.RUNTIME_OFF; Registry.common$.diags_USER1 = Diags.RUNTIME_OFF; Registry.common$.diags_LIFECYCLE = Diags.RUNTIME_OFF; Registry.common$.diags_STATUS = Diags.RUNTIME_OFF; var Main = xdc.useModule('xdc.runtime.Main'); Main.common$.diags_ASSERT = Diags.ALWAYS_ON; Main.common$.diags_INTERNAL = Diags.ALWAYS_ON;jÆj8jÎjÐjÐjjÒ}rP(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÁjÝhjÞ]rQjçX& /* system logger */ var LoggerSys = xdc.useModule('xdc.runtime.LoggerSys'); var LoggerSysParams = new LoggerSys.Params(); var Defaults = xdc.useModule('xdc.runtime.Defaults'); Defaults.common$.logger = LoggerSys.create(LoggerSysParams); /* enable runtime Diags_setMask() for non-XDC spec'd modules */ var Diags = xdc.useModule('xdc.runtime.Diags'); Diags.setMaskEnabled = true; /* override diags mask for selected modules */ xdc.useModule('xdc.runtime.Main'); Diags.setMaskMeta("xdc.runtime.Main", Diags.ENTRY | Diags.EXIT | Diags.INFO, Diags.RUNTIME_ON); var Registry = xdc.useModule('xdc.runtime.Registry'); Registry.common$.diags_ENTRY = Diags.RUNTIME_OFF; Registry.common$.diags_EXIT = Diags.RUNTIME_OFF; Registry.common$.diags_INFO = Diags.RUNTIME_OFF; Registry.common$.diags_USER1 = Diags.RUNTIME_OFF; Registry.common$.diags_LIFECYCLE = Diags.RUNTIME_OFF; Registry.common$.diags_STATUS = Diags.RUNTIME_OFF; var Main = xdc.useModule('xdc.runtime.Main'); Main.common$.diags_ASSERT = Diags.ALWAYS_ON; Main.common$.diags_INTERNAL = Diags.ALWAYS_ON;rR…�rS}rT(jÅUjÆjNubaubeubjÇ)�rU}rV(jÅUjÆj�jÎjÐjÐjÑjÒ}rW(jÔ]jÕ]jÖ]j×]rXUother-optional-configurationsrYajÚ]rZj*aujÜK´jÝhjÞ]r[(jà)�r\}r](jÅXOther Optional Configurationsr^jÆjUjÎjÐjÐjäjÒ}r_(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÝhjÞ]r`jçXOther Optional Configurationsra…�rb}rc(jÅj^jÆj\ubaubjò)�rd}re(jÅX€In addition to the above configurations there are other platform specific configurations may be used to enable certain features.rfjÆjUjÎjÐjÐjõjÒ}rg(jÔ]jÕ]jÖ]j×]jÚ]ujÜKµjÝhjÞ]rhjçX€In addition to the above configurations there are other platform specific configurations may be used to enable certain features.ri…�rj}rk(jÅjfjÆjdubaubjò)�rl}rm(jÅX›For example the following sections shows the sections used to enable device exception handler. ( But the deh module may not be available on all devices) ::jÆjUjÎjÐjÐjõjÒ}rn(jÔ]jÕ]jÖ]j×]jÚ]ujÜK·jÝhjÞ]rojçX˜For example the following sections shows the sections used to enable device exception handler. ( But the deh module may not be available on all devices)rp…�rq}rr(jÅX˜For example the following sections shows the sections used to enable device exception handler. ( But the deh module may not be available on all devices)jÆjlubaubj)�rs}rt(jÅX¤var Idle = xdc.useModule('ti.sysbios.knl.Idle'); var Deh = xdc.useModule('ti.deh.Deh'); /* Must be placed before pwr mgmt */ Idle.addFunc('&ti_deh_Deh_idleBegin');jÆjUjÎjÐjÐjjÒ}ru(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMãjÝhjÞ]rvjçX¤var Idle = xdc.useModule('ti.sysbios.knl.Idle'); var Deh = xdc.useModule('ti.deh.Deh'); /* Must be placed before pwr mgmt */ Idle.addFunc('&ti_deh_Deh_idleBegin');rw…�rx}ry(jÅUjÆjsubaubeubeubeubjÇ)�rz}r{(jÅUjÆj¾jÎjÐjÐjÑjÒ}r|(jÔ]jÕ]jÖ]j×]r}U(building-ipc-examples-using-products-makr~ajÚ]rjaujÜKÁjÝhjÞ]r€(jà)�r�}r‚(jÅX(Building IPC examples using products.makrƒjÆjzjÎjÐjÐjäjÒ}r„(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÝhjÞ]r…jçX(Building IPC examples using products.makr†…�r‡}rˆ(jÅjƒjÆj�ubaubjò)�r‰}rŠ(jÅXlThe following sections discuss how to individually build the IPC examples by modifying the product.mak file.r‹jÆjzjÎjÐjÐjõjÒ}rŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÂjÝhjÞ]r�jçXlThe following sections discuss how to individually build the IPC examples by modifying the product.mak file.rŽ…�r�}r�(jÅj‹jÆj‰ubaubjò)�r‘}r’(jÅX!The IPC product contains an examples/archive directory with device-specific examples. Once identifying your device, the examples can be unzipped anywhere on your build host. Typically once unzipped, the user edits the example's individual **products.mak** file and simply invokes **make**.jÆjzjÎjÐjÐjõjÒ}r“(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÄjÝhjÞ]r”(jçXïThe IPC product contains an examples/archive directory with device-specific examples. Once identifying your device, the examples can be unzipped anywhere on your build host. Typically once unzipped, the user edits the example's individual r•…�r–}r—(jÅXïThe IPC product contains an examples/archive directory with device-specific examples. Once identifying your device, the examples can be unzipped anywhere on your build host. Typically once unzipped, the user edits the example's individual jÆj‘ubjÚ)�r˜}r™(jÅX**products.mak**jÒ}rš(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘jÞ]r›jçX products.makrœ…�r�}rž(jÅUjÆj˜ubajÐjâubjçX file and simply invokes rŸ…�r }r¡(jÅX file and simply invokes jÆj‘ubjÚ)�r¢}r£(jÅX**make**jÒ}r¤(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘jÞ]r¥jçXmaker¦…�r§}r¨(jÅUjÆj¢ubajÐjâubjçX.…�r©}rª(jÅX.jÆj‘ubeubjë)�r«}r¬(jÅX�A common place to unzip the examples is into the **IPC_INSTALL_DIR/examples/** directory. Each example's **products.mak** file is smart enough to look up two directories (in this case, into **IPC_INSTALL_DIR**) for a master **products.mak** file, and if found it uses those variables. This technique enables users to set the dependency variables in one place, namely **IPC_INSTALL_DIR/products.mak**.jÆjzjÎjÐjÐjïjÒ}r­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r®jò)�r¯}r°(jÅX�A common place to unzip the examples is into the **IPC_INSTALL_DIR/examples/** directory. Each example's **products.mak** file is smart enough to look up two directories (in this case, into **IPC_INSTALL_DIR**) for a master **products.mak** file, and if found it uses those variables. This technique enables users to set the dependency variables in one place, namely **IPC_INSTALL_DIR/products.mak**.jÆj«jÎjÐjÐjõjÒ}r±(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÉjÞ]r²(jçX1A common place to unzip the examples is into the r³…�r´}rµ(jÅX1A common place to unzip the examples is into the jÆj¯ubjÚ)�r¶}r·(jÅX**IPC_INSTALL_DIR/examples/**jÒ}r¸(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯jÞ]r¹jçXIPC_INSTALL_DIR/examples/rº…�r»}r¼(jÅUjÆj¶ubajÐjâubjçX directory. Each example's r½…�r¾}r¿(jÅX directory. Each example's jÆj¯ubjÚ)�rÀ}rÁ(jÅX**products.mak**jÒ}rÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯jÞ]rÃjçX products.makrÄ…�rÅ}rÆ(jÅUjÆjÀubajÐjâubjçXE file is smart enough to look up two directories (in this case, into rÇ…�rÈ}rÉ(jÅXE file is smart enough to look up two directories (in this case, into jÆj¯ubjÚ)�rÊ}rË(jÅX**IPC_INSTALL_DIR**jÒ}rÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯jÞ]rÍjçXIPC_INSTALL_DIRrÎ…�rÏ}rÐ(jÅUjÆjÊubajÐjâubjçX) for a master rÑ…�rÒ}rÓ(jÅX) for a master jÆj¯ubjÚ)�rÔ}rÕ(jÅX**products.mak**jÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯jÞ]r×jçX products.makrØ…�rÙ}rÚ(jÅUjÆjÔubajÐjâubjçX file, and if found it uses those variables. This technique enables users to set the dependency variables in one place, namely rÛ…�rÜ}rÝ(jÅX file, and if found it uses those variables. This technique enables users to set the dependency variables in one place, namely jÆj¯ubjÚ)�rÞ}rß(jÅX **IPC_INSTALL_DIR/products.mak**jÒ}rà(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯jÞ]rájçXIPC_INSTALL_DIR/products.makrâ…�rã}rä(jÅUjÆjÞubajÐjâubjçX.…�rå}ræ(jÅX.jÆj¯ubeubaubjò)�rç}rè(jÅXEEach example contains a **readme.txt** with example-specific details.réjÆjzjÎjÐjÐjõjÒ}rê(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÎjÝhjÞ]rë(jçXEach example contains a rì…�rí}rî(jÅXEach example contains a jÆjçubjÚ)�rï}rð(jÅX**readme.txt**jÒ}rñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçjÞ]ròjçX readme.txtró…�rô}rõ(jÅUjÆjïubajÐjâubjçX with example-specific details.rö…�r÷}rø(jÅX with example-specific details.jÆjçubeubjÇ)�rù}rú(jÅUjÆjzjÎjÐjÐjÑjÒ}rû(jÔ]jÕ]jÖ]j×]rüUgenerating-examplesrýajÚ]rþh aujÜKÑjÝhjÞ]rÿ(jà)�r }r (jÅXGenerating Examplesr jÆjùjÎjÐjÐjäjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKÑjÝhjÞ]r jçXGenerating Examplesr …�r }r (jÅj jÆj ubaubjò)�r }r (jÅXThe IPC product will come with the generated examples directory. The IPC product is what is typically delivered with SDKs such as Processor SDK. However, some SDKs point directly to the IPC git tree for the IPC source. In this case, the IPC Examples can be generated separately.r jÆjùjÎjÐjÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKÓjÝhjÞ]r jçXThe IPC product will come with the generated examples directory. The IPC product is what is typically delivered with SDKs such as Processor SDK. However, some SDKs point directly to the IPC git tree for the IPC source. In this case, the IPC Examples can be generated separately.r …�r }r (jÅj jÆj ubaubeubjÇ)�r }r (jÅUjKjÆjzjÎjÐjÐjÑjÒ}r (jÔ]r Xtoolsr ajÕ]jÖ]j×]r Utoolsr ajÚ]ujÜKÙjÝhjÞ]r (jà)�r }r (jÅXToolsr jÆj jÎjÐjÐjäjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙjÝhjÞ]r jçXToolsr …�r }r (jÅj jÆj ubaubcdocutils.nodes definition_list r )�r! }r" (jÅUjÆj jÎNjÐUdefinition_listr# jÒ}r$ (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r% cdocutils.nodes definition_list_item r& )�r' }r( (jÅXºThe following tools need to be installed: - `XDC tools `__ (check the IPC release notes for compatible version) jÆj! jÎjÐjÐUdefinition_list_itemr) jÒ}r* (jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÞ]r+ (cdocutils.nodes term r, )�r- }r. (jÅX)The following tools need to be installed:r/ jÆj' jÎjÐjÐUtermr0 jÒ}r1 (jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÞ]r2 jçX)The following tools need to be installed:r3 …�r4 }r5 (jÅj/ jÆj- ubaubcdocutils.nodes definition r6 )�r7 }r8 (jÅUjÒ}r9 (jÔ]jÕ]jÖ]j×]jÚ]ujÆj' jÞ]r: jt)�r; }r< (jÅUjÒ}r= (jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj7 jÞ]r> j{)�r? }r@ (jÅXŽ`XDC tools `__ (check the IPC release notes for compatible version) jÒ}rA (jÔ]jÕ]jÖ]j×]jÚ]ujÆj; jÞ]rB jò)�rC }rD (jÅX�`XDC tools `__ (check the IPC release notes for compatible version)jÆj? jÎjÐjÐjõjÒ}rE (jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÞ]rF (jû)�rG }rH (jÅXX`XDC tools `__jÒ}rI (UnameX XDC toolsjXHhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/rtsc/j×]jÖ]jÔ]jÕ]jÚ]ujÆjC jÞ]rJ jçX XDC toolsrK …�rL }rM (jÅUjÆjG ubajÐjÿubjçX5 (check the IPC release notes for compatible version)rN …�rO }rP (jÅX5 (check the IPC release notes for compatible version)jÆjC ubeubajÐjubajÐjwubajÐU definitionrQ ubeubaubeubjÇ)�rR }rS (jÅUjÆjzjÎjÐjÐjÑjÒ}rT (jÔ]jÕ]jÖ]j×]rU U source-coderV ajÚ]rW j aujÜKßjÝhjÞ]rX (jà)�rY }rZ (jÅX Source Coder[ jÆjR jÎjÐjÐjäjÒ}r\ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKßjÝhjÞ]r] jçX Source Coder^ …�r_ }r` (jÅj[ jÆjY ubaubj)�ra }rb (jÅXpmkdir ipc cd ipc git clone git://git.ti.com/ipc/ipc-metadata.git git clone git://git.ti.com/ipc/ipc-examples.gitjÆjR jÎjÐjÐjjÒ}rc (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rd jçXpmkdir ipc cd ipc git clone git://git.ti.com/ipc/ipc-metadata.git git clone git://git.ti.com/ipc/ipc-examples.gitre …�rf }rg (jÅUjÆja ubaubjò)�rh }ri (jÅXzThen checkout the IPC release tag that is associated with the IPC version being used. Do this for both repos. For example:rj jÆjR jÎjÐjÐjõjÒ}rk (jÔ]jÕ]jÖ]j×]jÚ]ujÜKèjÝhjÞ]rl jçXzThen checkout the IPC release tag that is associated with the IPC version being used. Do this for both repos. For example:rm …�rn }ro (jÅjj jÆjh ubaubj)�rp }rq (jÅXgit checkout 3.42.01.03jÆjR jÎjÐjÐjjÒ}rr (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]rs jçXgit checkout 3.42.01.03rt …�ru }rv (jÅUjÆjp ubaubeubjÇ)�rw }rx (jÅUjKjÆjzjÎjÐjÐjÑjÒ}ry (jÔ]rz Xbuildr{ ajÕ]jÖ]j×]r| Ubuildr} ajÚ]ujÜKïjÝhjÞ]r~ (jà)�r }r€ (jÅXBuildr� jÆjw jÎjÐjÐjäjÒ}r‚ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKïjÝhjÞ]rƒ jçXBuildr„ …�r… }r† (jÅj� jÆj ubaubj)�r‡ }rˆ (jÅXncd ipc-examples/src make .examples XDC_INSTALL_DIR= IPCTOOLS=/src/etcjÆjw jÎjÐjÐjjÒ}r‰ (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]rŠ jçXncd ipc-examples/src make .examples XDC_INSTALL_DIR= IPCTOOLS=/src/etcr‹ …�rŒ }r� (jÅUjÆj‡ ubaubjò)�rŽ }r� (jÅXFor example: ::jÆjw jÎjÐjÐjõjÒ}r� (jÔ]jÕ]jÖ]j×]jÚ]ujÜKöjÝhjÞ]r‘ jçX For example:r’ …�r“ }r” (jÅX For example:jÆjŽ ubaubj)�r• }r– (jÅXlmake .examples XDC_INSTALL_DIR=/opt/ti/xdctools_3_32_00_06_core IPCTOOLS=/home/user/ipc/ipc-metadata/src/etcjÆjw jÎjÐjÐjjÒ}r— (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM"jÝhjÞ]r˜ jçXlmake .examples XDC_INSTALL_DIR=/opt/ti/xdctools_3_32_00_06_core IPCTOOLS=/home/user/ipc/ipc-metadata/src/etcr™ …�rš }r› (jÅUjÆj• ubaubjò)�rœ }r� (jÅXMThe "examples" director will be generated in the path "ipc-examples/src/": ::jÆjw jÎjÐjÐjõjÒ}rž (jÔ]jÕ]jÖ]j×]jÚ]ujÜKûjÝhjÞ]rŸ jçXJThe "examples" director will be generated in the path "ipc-examples/src/":r  …�r¡ }r¢ (jÅXJThe "examples" director will be generated in the path "ipc-examples/src/":jÆjœ ubaubj)�r£ }r¤ (jÅXipc-examples/src/examplesjÆjw jÎXQinternal padding after source/rtos/PDK_Platform_Software/IPC/IPC_examples.rst.incr¥ jÐjjÒ}r¦ (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM'jÝhjÞ]r§ jçXipc-examples/src/examplesr¨ …�r© }rª (jÅUjÆj£ ubaubeubeubeubjÇ)�r« }r¬ (jÅUjÆjÌjÎjÏjÐjÑjÒ}r­ (jÔ]jÕ]jÖ]j×]r® U ipc-trainingr¯ ajÚ]r° hæaujÜK*jÝhjÞ]r± (jà)�r² }r³ (jÅX IPC Trainingr´ jÆj« jÎjÏjÐjäjÒ}rµ (jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÝhjÞ]r¶ jçX IPC Trainingr· …�r¸ }r¹ (jÅj´ jÆj² ubaubj7)�rº }r» (jÅX/http://processors.wiki.ti.com/index.php/IPC_3.xjÆj« jÎj:X&source/common/IPC/IPC_Training.rst.incr¼ …�r½ }r¾ bjÐj>jÒ}r¿ (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rÀ jçX/http://processors.wiki.ti.com/index.php/IPC_3.xrÁ …�r }rà (jÅUjÆjº ubaubjò)�rÄ }rÅ (jÅX `Introduction to Inter-Processor Communication (IPC) for KeyStone and Sitaraâ„¢ Devices `__ - The IPC software package is designed to hide the lower-layer hardware complexity of multi-core devices and help users to quickly develop applications for data transfer between cores or devices. IPC also maximizes application software reuse by providing a common API interface across all supported platforms, including AM65x, AM57x, 66AK2Gx, 66AK2Ex, 66AK2Hx, TCI663x, TDA3XX, OMAP-L138, OMAP54XX, DRA7XX, and more. This training video introduces the IPC features and modules, shows how to build the IPC libraries for your platform, examines the RPMsg framework, and provides a look at the included examples and benchmarks.jÆj« jÎj½ jÐjõjÒ}rÆ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÇ (jû)�rÈ }rÉ (jÅX™`Introduction to Inter-Processor Communication (IPC) for KeyStone and Sitaraâ„¢ Devices `__jÒ}rÊ (UnameXVIntroduction to Inter-Processor Communication (IPC) for KeyStone and Sitaraâ„¢ DevicesjX<https://training.ti.com/intro-to-ipc-for-keystone-and-sitaraj×]jÖ]jÔ]jÕ]jÚ]ujÆjÄ jÞ]rË jçXVIntroduction to Inter-Processor Communication (IPC) for KeyStone and Sitaraâ„¢ DevicesrÌ …�rÍ }rÎ (jÅUjÆjÈ ubajÐjÿubjçXq - The IPC software package is designed to hide the lower-layer hardware complexity of multi-core devices and help users to quickly develop applications for data transfer between cores or devices. IPC also maximizes application software reuse by providing a common API interface across all supported platforms, including AM65x, AM57x, 66AK2Gx, 66AK2Ex, 66AK2Hx, TCI663x, TDA3XX, OMAP-L138, OMAP54XX, DRA7XX, and more. This training video introduces the IPC features and modules, shows how to build the IPC libraries for your platform, examines the RPMsg framework, and provides a look at the included examples and benchmarks.rÏ …�rÐ }rÑ (jÅXq - The IPC software package is designed to hide the lower-layer hardware complexity of multi-core devices and help users to quickly develop applications for data transfer between cores or devices. IPC also maximizes application software reuse by providing a common API interface across all supported platforms, including AM65x, AM57x, 66AK2Gx, 66AK2Ex, 66AK2Hx, TCI663x, TDA3XX, OMAP-L138, OMAP54XX, DRA7XX, and more. This training video introduces the IPC features and modules, shows how to build the IPC libraries for your platform, examines the RPMsg framework, and provides a look at the included examples and benchmarks.jÆjÄ ubeubjc)�rÒ }rÓ (jÅUjÆj« jÎj½ jÐjfjÒ}rÔ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÕ ji)�rÖ }r× (jÅUjlKjÆjÒ jÎj½ jÐjÜjÒ}rØ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rÙ }rÚ (jÅX>`Building and Running Inter-Processor Communication (IPC) Examples on the AM572x GP EVM `__ - For TI embedded processors with heterogeneous multi-core architectures – like the AM57x family of devices, which have integrated ARM, DSP, and M4 cores – the TI Processor Software Development Kit (SDK) provides a software component called Inter-processor Communication (IPC). This video demonstrates how to build and run IPC examples on the AM572x General Purpose Evaluation Module (GP EVM) using Processor SDK for Linux.jÆj« jÎj½ jÐjõjÒ}rÛ (jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rÜ (jû)�rÝ }rÞ (jÅX’`Building and Running Inter-Processor Communication (IPC) Examples on the AM572x GP EVM `__jÒ}rß (UnameXVBuilding and Running Inter-Processor Communication (IPC) Examples on the AM572x GP EVMjX5https://training.ti.com/am572x-build-run-ipc-examplesj×]jÖ]jÔ]jÕ]jÚ]ujÆjÙ jÞ]rà jçXVBuilding and Running Inter-Processor Communication (IPC) Examples on the AM572x GP EVMrá …�râ }rã (jÅUjÆjÝ ubajÐjÿubjçX¬ - For TI embedded processors with heterogeneous multi-core architectures – like the AM57x family of devices, which have integrated ARM, DSP, and M4 cores – the TI Processor Software Development Kit (SDK) provides a software component called Inter-processor Communication (IPC). This video demonstrates how to build and run IPC examples on the AM572x General Purpose Evaluation Module (GP EVM) using Processor SDK for Linux.rä …�rå }ræ (jÅX¬ - For TI embedded processors with heterogeneous multi-core architectures – like the AM57x family of devices, which have integrated ARM, DSP, and M4 cores – the TI Processor Software Development Kit (SDK) provides a software component called Inter-processor Communication (IPC). This video demonstrates how to build and run IPC examples on the AM572x General Purpose Evaluation Module (GP EVM) using Processor SDK for Linux.jÆjÙ ubeubjc)�rç }rè (jÅUjÆj« jÎj½ jÐjfjÒ}ré (jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rê ji)�rë }rì (jÅUjlKjÆjç jÎj½ jÐjÜjÒ}rí (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rî }rï (jÅXàIPC Training v2.21 - IPC 3.x Full Training Material :download:`(PowerPoint) <../files/IPC_Training_2_21.pptx>` :download:`(PowerPointShow) <../files/IPC_Training_2_21.ppsx>` :download:`(PDF) <../files/IPC_Training_2_21.pdf>`rð jÆj« jÎj½ jÐjõjÒ}rñ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rò (jçX4IPC Training v2.21 - IPC 3.x Full Training Material ró …�rô }rõ (jÅX4IPC Training v2.21 - IPC 3.x Full Training Material jÆjî ubcsphinx.addnodes download_reference rö )�r÷ }rø (jÅX::download:`(PowerPoint) <../files/IPC_Training_2_21.pptx>`rù jÆjî jÎj½ jÐUdownload_referencerú jÒ}rû (UreftypeXdownloadrü Urefwarnrý ‰U reftargetrþ X../files/IPC_Training_2_21.pptxU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]Urefdocrÿ X"rtos/index_Foundational_Componentsr Ufilenamer XIPC_Training_2_21.pptxr ujÜKjÞ]r j )�r }r (jÅjù jÒ}r (jÔ]jÕ]r (Uxrefr jü ejÖ]j×]jÚ]ujÆj÷ jÞ]r jçX (PowerPoint)r …�r }r (jÅUjÆj ubajÐj¨ubaubjçX …�r }r (jÅX jÆjî ubjö )�r }r (jÅX>:download:`(PowerPointShow) <../files/IPC_Training_2_21.ppsx>`r jÆjî jÎj½ jÐjú jÒ}r (UreftypeXdownloadr jý ‰jþ X../files/IPC_Training_2_21.ppsxU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Training_2_21.ppsxr ujÜKjÞ]r j )�r }r (jÅj jÒ}r (jÔ]jÕ]r (j j ejÖ]j×]jÚ]ujÆj jÞ]r jçX(PowerPointShow)r …�r }r (jÅUjÆj ubajÐj¨ubaubjçX …�r }r (jÅX jÆjî ubjö )�r }r! (jÅX2:download:`(PDF) <../files/IPC_Training_2_21.pdf>`r" jÆjî jÎj½ jÐjú jÒ}r# (UreftypeXdownloadr$ jý ‰jþ X../files/IPC_Training_2_21.pdfU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Training_2_21.pdfr% ujÜKjÞ]r& j )�r' }r( (jÅj" jÒ}r) (jÔ]jÕ]r* (j j$ ejÖ]j×]jÚ]ujÆj jÞ]r+ jçX(PDF)r, …�r- }r. (jÅUjÆj' ubajÐj¨ubaubeubjc)�r/ }r0 (jÅUjÆj« jÎj½ jÐjfjÒ}r1 (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r2 ji)�r3 }r4 (jÅUjlKjÆj/ jÎj½ jÐjÜjÒ}r5 (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r6 }r7 (jÅX¸IPC Lab 1 - Hello :download:`(PowerPoint) <../files/IPC_Lab_1_Hello.pptx>` :download:`(PowerPointShow) <../files/IPC_Lab_1_Hello.ppsx>` :download:`(PDF) <../files/IPC_Lab_1_Hello.pdf>`r8 jÆj« jÎj½ jÐjõjÒ}r9 (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r: (jçXIPC Lab 1 - Hello r; …�r< }r= (jÅXIPC Lab 1 - Hello jÆj6 ubjö )�r> }r? (jÅX8:download:`(PowerPoint) <../files/IPC_Lab_1_Hello.pptx>`r@ jÆj6 jÎj½ jÐjú jÒ}rA (UreftypeXdownloadrB jý ‰jþ X../files/IPC_Lab_1_Hello.pptxU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Lab_1_Hello.pptxrC ujÜKjÞ]rD j )�rE }rF (jÅj@ jÒ}rG (jÔ]jÕ]rH (j jB ejÖ]j×]jÚ]ujÆj> jÞ]rI jçX (PowerPoint)rJ …�rK }rL (jÅUjÆjE ubajÐj¨ubaubjçX …�rM }rN (jÅX jÆj6 ubjö )�rO }rP (jÅX<:download:`(PowerPointShow) <../files/IPC_Lab_1_Hello.ppsx>`rQ jÆj6 jÎj½ jÐjú jÒ}rR (UreftypeXdownloadrS jý ‰jþ X../files/IPC_Lab_1_Hello.ppsxU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Lab_1_Hello.ppsxrT ujÜKjÞ]rU j )�rV }rW (jÅjQ jÒ}rX (jÔ]jÕ]rY (j jS ejÖ]j×]jÚ]ujÆjO jÞ]rZ jçX(PowerPointShow)r[ …�r\ }r] (jÅUjÆjV ubajÐj¨ubaubjçX …�r^ }r_ (jÅX jÆj6 ubjö )�r` }ra (jÅX0:download:`(PDF) <../files/IPC_Lab_1_Hello.pdf>`rb jÆj6 jÎj½ jÐjú jÒ}rc (UreftypeXdownloadrd jý ‰jþ X../files/IPC_Lab_1_Hello.pdfU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Lab_1_Hello.pdfre ujÜKjÞ]rf j )�rg }rh (jÅjb jÒ}ri (jÔ]jÕ]rj (j jd ejÖ]j×]jÚ]ujÆj` jÞ]rk jçX(PDF)rl …�rm }rn (jÅUjÆjg ubajÐj¨ubaubeubjò)�ro }rp (jÅXÄIPC Lab 2 - MessageQ :download:`(PowerPoint) <../files/IPC_Lab_2_MessageQ.pptx>` :download:`(PowerPointShow) <../files/IPC_Lab_2_MessageQ.ppsx>` :download:`(PDF) <../files/IPC_Lab_2_MessageQ.pdf>`rq jÆj« jÎj½ jÐjõjÒ}rr (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rs (jçXIPC Lab 2 - MessageQ rt …�ru }rv (jÅXIPC Lab 2 - MessageQ jÆjo ubjö )�rw }rx (jÅX;:download:`(PowerPoint) <../files/IPC_Lab_2_MessageQ.pptx>`ry jÆjo jÎj½ jÐjú jÒ}rz (UreftypeXdownloadr{ jý ‰jþ X ../files/IPC_Lab_2_MessageQ.pptxU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Lab_2_MessageQ.pptxr| ujÜKjÞ]r} j )�r~ }r (jÅjy jÒ}r€ (jÔ]jÕ]r� (j j{ ejÖ]j×]jÚ]ujÆjw jÞ]r‚ jçX (PowerPoint)rƒ …�r„ }r… (jÅUjÆj~ ubajÐj¨ubaubjçX …�r† }r‡ (jÅX jÆjo ubjö )�rˆ }r‰ (jÅX?:download:`(PowerPointShow) <../files/IPC_Lab_2_MessageQ.ppsx>`rŠ jÆjo jÎj½ jÐjú jÒ}r‹ (UreftypeXdownloadrŒ jý ‰jþ X ../files/IPC_Lab_2_MessageQ.ppsxU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Lab_2_MessageQ.ppsxr� ujÜKjÞ]rŽ j )�r� }r� (jÅjŠ jÒ}r‘ (jÔ]jÕ]r’ (j jŒ ejÖ]j×]jÚ]ujÆjˆ jÞ]r“ jçX(PowerPointShow)r” …�r• }r– (jÅUjÆj� ubajÐj¨ubaubjçX …�r— }r˜ (jÅX jÆjo ubjö )�r™ }rš (jÅX3:download:`(PDF) <../files/IPC_Lab_2_MessageQ.pdf>`r› jÆjo jÎj½ jÐjú jÒ}rœ (UreftypeXdownloadr� jý ‰jþ X../files/IPC_Lab_2_MessageQ.pdfU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Lab_2_MessageQ.pdfrž ujÜKjÞ]rŸ j )�r  }r¡ (jÅj› jÒ}r¢ (jÔ]jÕ]r£ (j j� ejÖ]j×]jÚ]ujÆj™ jÞ]r¤ jçX(PDF)r¥ …�r¦ }r§ (jÅUjÆj  ubajÐj¨ubaubeubjò)�r¨ }r© (jÅXÐIPC Lab 3 - Scalability :download:`(PowerPoint) <../files/IPC_Lab_3_Scalability.pptx>` :download:`(PowerPointShow) <../files/IPC_Lab_3_Scalability.ppsx>` :download:`(PDF) <../files/IPC_Lab_3_Scalability.pdf>`rª jÆj« jÎj½ jÐjõjÒ}r« (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r¬ (jçXIPC Lab 3 - Scalability r­ …�r® }r¯ (jÅXIPC Lab 3 - Scalability jÆj¨ ubjö )�r° }r± (jÅX>:download:`(PowerPoint) <../files/IPC_Lab_3_Scalability.pptx>`r² jÆj¨ jÎj½ jÐjú jÒ}r³ (UreftypeXdownloadr´ jý ‰jþ X#../files/IPC_Lab_3_Scalability.pptxU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Lab_3_Scalability.pptxrµ ujÜKjÞ]r¶ j )�r· }r¸ (jÅj² jÒ}r¹ (jÔ]jÕ]rº (j j´ ejÖ]j×]jÚ]ujÆj° jÞ]r» jçX (PowerPoint)r¼ …�r½ }r¾ (jÅUjÆj· ubajÐj¨ubaubjçX …�r¿ }rÀ (jÅX jÆj¨ ubjö )�rÁ }r (jÅXB:download:`(PowerPointShow) <../files/IPC_Lab_3_Scalability.ppsx>`rà jÆj¨ jÎj½ jÐjú jÒ}rÄ (UreftypeXdownloadrÅ jý ‰jþ X#../files/IPC_Lab_3_Scalability.ppsxU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Lab_3_Scalability.ppsxrÆ ujÜKjÞ]rÇ j )�rÈ }rÉ (jÅjà jÒ}rÊ (jÔ]jÕ]rË (j jÅ ejÖ]j×]jÚ]ujÆjÁ jÞ]rÌ jçX(PowerPointShow)rÍ …�rÎ }rÏ (jÅUjÆjÈ ubajÐj¨ubaubjçX …�rÐ }rÑ (jÅX jÆj¨ ubjö )�rÒ }rÓ (jÅX6:download:`(PDF) <../files/IPC_Lab_3_Scalability.pdf>`rÔ jÆj¨ jÎj½ jÐjú jÒ}rÕ (UreftypeXdownloadrÖ jý ‰jþ X"../files/IPC_Lab_3_Scalability.pdfU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j XIPC_Lab_3_Scalability.pdfr× ujÜKjÞ]rØ j )�rÙ }rÚ (jÅjÔ jÒ}rÛ (jÔ]jÕ]rÜ (j jÖ ejÖ]j×]jÚ]ujÆjÒ jÞ]rÝ jçX(PDF)rÞ …�rß }rà (jÅUjÆjÙ ubajÐj¨ubaubeubeubjÊjÇ)�rá }râ (jÅUjÆjÌjÎjÏjÐjÑjÒ}rã (jÔ]jÕ]jÖ]j×]rä Uti-sdo-utils-packagerå ajÚ]ræ huaujÜKUjÝhjÞ]rç (jà)�rè }ré (jÅXTI SDO Utils Packagerê jÆjá jÎjÏjÐjäjÒ}rë (jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÝhjÞ]rì jçXTI SDO Utils Packagerí …�rî }rï (jÅjê jÆjè ubaubj7)�rð }rñ (jÅXPhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/The_ti.sdo.utils_PackagejÆjá jÎj:XFsource/rtos/PDK_Platform_Software/IPC/The_ti.sdo.utils_Package.rst.incrò …�ró }rô bjÐj>jÒ}rõ (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rö jçXPhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/The_ti.sdo.utils_Packager÷ …�rø }rù (jÅUjÆjð ubaubjò)�rú }rû (jÅX=This page introduces the modules in the ti.sdo.utils package.rü jÆjá jÎjó jÐjõjÒ}rý (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rþ jçX=This page introduces the modules in the ti.sdo.utils package.rÿ …�r }r (jÅjü jÆjú ubaubjò)�r }r (jÅXiThe ti.sdo.utils package contains modules that are used as utilities by other modules in the IPC product.r jÆjá jÎjó jÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r jçXiThe ti.sdo.utils package contains modules that are used as utilities by other modules in the IPC product.r …�r }r (jÅj jÆj ubaubjt)�r }r (jÅUjÆjá jÎjó jÐjwjÒ}r (jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r (j{)�r }r (jÅXbList. This module provides a doubly-linked list manager for use by other modules. See List Module.r jÆj jÎjó jÐjjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r jò)�r }r (jÅj jÆj jÎjó jÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r jçXbList. This module provides a doubly-linked list manager for use by other modules. See List Module.r …�r }r (jÅj jÆj ubaubaubj{)�r }r (jÅX}MultiProc. This module stores processor IDs in a centralized location for multi-processor applications. See MultiProc Module.r jÆj jÎjó jÐjjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r jò)�r }r (jÅj jÆj jÎjó jÐjõjÒ}r! (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r" jçX}MultiProc. This module stores processor IDs in a centralized location for multi-processor applications. See MultiProc Module.r# …�r$ }r% (jÅj jÆj ubaubaubj{)�r& }r' (jÅXcNameServer. This module manages name/value pairs for use by other modules. See NameServer Module. jÆj jÎX]internal padding after source/rtos/PDK_Platform_Software/IPC/The_ti.sdo.utils_Package.rst.incr( jÐjjÒ}r) (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r* jò)�r+ }r, (jÅXaNameServer. This module manages name/value pairs for use by other modules. See NameServer Module.r- jÆj& jÎjó jÐjõjÒ}r. (jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r/ jçXaNameServer. This module manages name/value pairs for use by other modules. See NameServer Module.r0 …�r1 }r2 (jÅj- jÆj+ ubaubaubeubjÇ)�r3 }r4 (jÅUjÆjá jÎjÏjÐjÑjÒ}r5 (jÔ]jÕ]jÖ]j×]r6 U list-moduler7 ajÚ]r8 hRaujÜKYjÝhjÞ]r9 (jà)�r: }r; (jÅX List Moduler< jÆj3 jÎjÏjÐjäjÒ}r= (jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÝhjÞ]r> jçX List Moduler? …�r@ }rA (jÅj< jÆj: ubaubj7)�rB }rC (jÅXChttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/List_ModulejÆj3 jÎj:X9source/rtos/PDK_Platform_Software/IPC/List_Module.rst.incrD …�rE }rF bjÐj>jÒ}rG (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rH jçXChttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/List_ModulerI …�rJ }rK (jÅUjÆjB ubaubjÂ)�rL }rM (jÅX³.. |lisCfg_Img1| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆj3 jÎjE jÐjHjÒ}rN (jÔ]jÕ]jÖ]j×]jÚ]rO X lisCfg_Img1rP aujÜKjÝhjÞ]rQ jû)�rR }rS (jÅjP jÒ}rT (UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrU j×]jÖ]jÔ]jÕ]jÚ]ujÆjL jÞ]rV jR)�rW }rX (jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrY jÒ}rZ (UuriXrtos/../images/Book_cfg.pngr[ j×]jÖ]jÔ]jÕ]jX}r\ U*j[ sjÚ]UaltjP ujÆjR jÞ]jÐjZubajÐjÿubaubjÂ)�r] }r^ (jÅX´.. |lisRun_Img1| Image:: ../images/Book_run.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/latest/docs/html/_list_8h.html jÆj3 jÎjE jÐjHjÒ}r_ (jÔ]jÕ]jÖ]j×]jÚ]r` X lisRun_Img1ra aujÜKjÝhjÞ]rb jû)�rc }rd (jÅja jÒ}re (UrefuriXihttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/latest/docs/html/_list_8h.htmlrf j×]jÖ]jÔ]jÕ]jÚ]ujÆj] jÞ]rg jR)�rh }ri (jÅX¢Image:: ../images/Book_run.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/latest/docs/html/_list_8h.htmlrj jÒ}rk (UuriXrtos/../images/Book_run.pngrl j×]jÖ]jÔ]jÕ]jX}rm U*jl sjÚ]Ualtja ujÆjc jÞ]jÐjZubajÐjÿubaubjc)�rn }ro (jÅUjÆj3 jÎjE jÐjfjÒ}rp (jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rq ji)�rr }rs (jÅUjlKjÆjn jÎjE jÐjÜjÒ}rt (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubj3)�ru }rv (jÅUjÆj3 jÎjE jÐj6jÒ}rw (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rx cdocutils.nodes table ry )�rz }r{ (jÅUjÒ}r| (jÔ]jÕ]jÖ]j×]jÚ]ujÆju jÞ]r} cdocutils.nodes tgroup r~ )�r }r€ (jÅUjÒ}r� (j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjz jÞ]r‚ (cdocutils.nodes colspec rƒ )�r„ }r… (jÅUjÒ}r† (j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj jÞ]jÐUcolspecr‡ ubjƒ )�rˆ }r‰ (jÅUjÒ}rŠ (j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj jÞ]jÐj‡ ubcdocutils.nodes thead r‹ )�rŒ }r� (jÅUjÒ}rŽ (jÔ]jÕ]jÖ]j×]jÚ]ujÆj jÞ]r� cdocutils.nodes row r� )�r‘ }r’ (jÅUjÒ}r“ (jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒ jÞ]r” cdocutils.nodes entry r• )�r– }r— (jÅUjÒ}r˜ (j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆj‘ jÞ]r™ jò)�rš }r› (jÅXAPI Reference Linksrœ jÆj– jÎjE jÐjõjÒ}r� (jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rž jçXAPI Reference LinksrŸ …�r  }r¡ (jÅjœ jÆjš ubaubajÐUentryr¢ ubajÐUrowr£ ubajÐUtheadr¤ ubcdocutils.nodes tbody r¥ )�r¦ }r§ (jÅUjÒ}r¨ (jÔ]jÕ]jÖ]j×]jÚ]ujÆj jÞ]r© j� )�rª }r« (jÅUjÒ}r¬ (jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦ jÞ]r­ (j• )�r® }r¯ (jÅUjÒ}r° (jÔ]jÕ]jÖ]j×]jÚ]ujÆjª jÞ]r± jò)�r² }r³ (jÅX |lisCfg_Img1|r´ jÆj® jÎjE jÐjõjÒ}rµ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¶ jû)�r· }r¸ (jÅjP jÆj² jÎNjÐjÿjÒ}r¹ (UrefurijU j×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]rº jR)�r» }r¼ (jÅjY jÆj· jÎNjÐjZjÒ}r½ (UuriXrtos/../images/Book_cfg.pngr¾ j×]jÖ]jÔ]jÕ]jX}r¿ U*j¾ sjÚ]UaltjP ujÜNjÞ]ubaubaubajÐj¢ ubj• )�rÀ }rÁ (jÅUjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÆjª jÞ]rà jò)�rÄ }rÅ (jÅX |lisRun_Img1|rÆ jÆjÀ jÎjE jÐjõjÒ}rÇ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÈ jû)�rÉ }rÊ (jÅja jÆjÄ jÎNjÐjÿjÒ}rË (Urefurijf j×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]rÌ jR)�rÍ }rÎ (jÅjj jÆjÉ jÎNjÐjZjÒ}rÏ (UuriXrtos/../images/Book_run.pngrÐ j×]jÖ]jÔ]jÕ]jX}rÑ U*jÐ sjÚ]Ualtja ujÜNjÞ]ubaubaubajÐj¢ ubejÐj£ ubajÐUtbodyrÒ ubejÐUtgrouprÓ ubajÐUtablerÔ ubaubjò)�rÕ }rÖ (jÅXäThe ti.sdo.utils.List module provides support for creating lists of objects. A List is implemented as a doubly-linked list, so that elements can be inserted or removed from anywhere in the list. Lists do not have a maximum size.r× jÆj3 jÎjE jÐjõjÒ}rØ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÙ jçXäThe ti.sdo.utils.List module provides support for creating lists of objects. A List is implemented as a doubly-linked list, so that elements can be inserted or removed from anywhere in the list. Lists do not have a maximum size.rÚ …�rÛ }rÜ (jÅj× jÆjÕ ubaubjÇ)�rÝ }rÞ (jÅUjÆj3 jÎjE jÐjÑjÒ}rß (jÔ]jÕ]jÖ]j×]rà Ubasic-fifo-operation-of-a-listrá ajÚ]râ j%aujÜKjÝhjÞ]rã (jà)�rä }rå (jÅXBasic FIFO Operation of a Listræ jÆjÝ jÎjE jÐjäjÒ}rç (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rè jçXBasic FIFO Operation of a Listré …�rê }rë (jÅjæ jÆjä ubaubjò)�rì }rí (jÅXpTo add a structure to a List, its first field needs to be of type List_Elem. The following example shows a structure that can be added to a List. A List has a "head", which is the front of the list. List_put() adds elements to the back of the list, and List_get() removes and returns the element at the head of the list. Together, these functions support a FIFO queue.rî jÆjÝ jÎjE jÐjõjÒ}rï (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rð jçXpTo add a structure to a List, its first field needs to be of type List_Elem. The following example shows a structure that can be added to a List. A List has a "head", which is the front of the list. List_put() adds elements to the back of the list, and List_get() removes and returns the element at the head of the list. Together, these functions support a FIFO queue.rñ …�rò }ró (jÅjî jÆjì ubaubjò)�rô }rõ (jÅXn**Run-time example:** The following example demonstrates the basic List operations--List_put() and List_get().rö jÆjÝ jÎjE jÐjõjÒ}r÷ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rø (jÚ)�rù }rú (jÅX**Run-time example:**jÒ}rû (jÔ]jÕ]jÖ]j×]jÚ]ujÆjô jÞ]rü jçXRun-time example:rý …�rþ }rÿ (jÅUjÆjù ubajÐjâubjçXY The following example demonstrates the basic List operations--List_put() and List_get().r …�r }r (jÅXY The following example demonstrates the basic List operations--List_put() and List_get().jÆjô ubeubj)�r }r (jÅXP/* This structure can be added to a List because the first * field is a List_Elem. Declared globally. */ typedef struct Rec { List_Elem elem; Int data; } Rec; ... List_Handle myList; /* in main() */ Rec r1, r2; Rec* rp; r1.data = 100; r2.data = 200; /* No parameters are needed to create a List. */ myList = List_create(NULL, NULL); /* Add r1 and r2 to the back of myList. */ List_put(myList, &(r1.elem)); List_put(myList, &(r2.elem)); /* get the records and print their data */ while ((rp = List_get(myList)) != NULL) { System_printf("rec: %d\n", rp->data); }jÆjÝ jÎjE jÐjjÒ}r (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÛ jÝhjÞ]r jçXP/* This structure can be added to a List because the first * field is a List_Elem. Declared globally. */ typedef struct Rec { List_Elem elem; Int data; } Rec; ... List_Handle myList; /* in main() */ Rec r1, r2; Rec* rp; r1.data = 100; r2.data = 200; /* No parameters are needed to create a List. */ myList = List_create(NULL, NULL); /* Add r1 and r2 to the back of myList. */ List_put(myList, &(r1.elem)); List_put(myList, &(r2.elem)); /* get the records and print their data */ while ((rp = List_get(myList)) != NULL) { System_printf("rec: %d\n", rp->data); }r …�r }r (jÅUjÆj ubaubjò)�r }r (jÅX!The example prints the following:r jÆjÝ jÎjE jÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÝhjÞ]r jçX!The example prints the following:r …�r }r (jÅj jÆj ubaubj)�r }r (jÅXrec: 100 rec: 200jÆjÝ jÎjE jÐjjÒ}r (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMû jÝhjÞ]r jçXrec: 100 rec: 200r …�r }r (jÅUjÆj ubaubjc)�r }r (jÅUjÆjÝ jÎjE jÐjfjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÝhjÞ]r ji)�r }r (jÅUjlKjÆj jÎjE jÐjÜjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�r }r! (jÅUjÆj3 jÎjE jÐjÑjÒ}r" (jÔ]jÕ]jÖ]j×]r# Uiterating-over-a-listr$ ajÚ]r% j¯aujÜKHjÝhjÞ]r& (jà)�r' }r( (jÅXIterating Over a Listr) jÆj jÎjE jÐjäjÒ}r* (jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÝhjÞ]r+ jçXIterating Over a Listr, …�r- }r. (jÅj) jÆj' ubaubjò)�r/ }r0 (jÅXCThe List module also provides several APIs for looping over a List.r1 jÆj jÎjE jÐjõjÒ}r2 (jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÝhjÞ]r3 jçXCThe List module also provides several APIs for looping over a List.r4 …�r5 }r6 (jÅj1 jÆj/ ubaubjò)�r7 }r8 (jÅX¿List_next() with NULL returns the element at the front of the List (without removing it). List_next() with an elem returns the next elem. NULL is returned when the end of the List is reached.r9 jÆj jÎjE jÐjõjÒ}r: (jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÝhjÞ]r; jçX¿List_next() with NULL returns the element at the front of the List (without removing it). List_next() with an elem returns the next elem. NULL is returned when the end of the List is reached.r< …�r= }r> (jÅj9 jÆj7 ubaubjò)�r? }r@ (jÅX¢Similarly, List_prev() with NULL returns the tail. List_prev() with an elem returns the previous elem. NULL is returned when the beginning of the List is reached.rA jÆj jÎjE jÐjõjÒ}rB (jÔ]jÕ]jÖ]j×]jÚ]ujÜKNjÝhjÞ]rC jçX¢Similarly, List_prev() with NULL returns the tail. List_prev() with an elem returns the previous elem. NULL is returned when the beginning of the List is reached.rD …�rE }rF (jÅjA jÆj? ubaubjò)�rG }rH (jÅXŸ**Run-time example:** The following example demonstrates one way to iterate over a List once from beginning to end. In this example, "myList" is a List_Handle.jÆj jÎjE jÐjõjÒ}rI (jÔ]jÕ]jÖ]j×]jÚ]ujÜKQjÝhjÞ]rJ (jÚ)�rK }rL (jÅX**Run-time example:**jÒ}rM (jÔ]jÕ]jÖ]j×]jÚ]ujÆjG jÞ]rN jçXRun-time example:rO …�rP }rQ (jÅUjÆjK ubajÐjâubjçXŠ The following example demonstrates one way to iterate over a List once from beginning to end. In this example, "myList" is a List_Handle.rR …�rS }rT (jÅXŠ The following example demonstrates one way to iterate over a List once from beginning to end. In this example, "myList" is a List_Handle.jÆjG ubeubj)�rU }rV (jÅXkList_Elem *elem = NULL; Rec* rp; ... /* To start the search at the beginning of the List */ rp = NULL; /* Begin protection against modification of the List */ key = Gate_enterSystem(); while ((elem = List_next(myList, elem)) != NULL) { System_printf("rec: %d\n", rp->data); } /* End protection against modification of the List */ Gate_leaveSystem(key);jÆj jÎjE jÐjjÒ}rW (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rX jçXkList_Elem *elem = NULL; Rec* rp; ... /* To start the search at the beginning of the List */ rp = NULL; /* Begin protection against modification of the List */ key = Gate_enterSystem(); while ((elem = List_next(myList, elem)) != NULL) { System_printf("rec: %d\n", rp->data); } /* End protection against modification of the List */ Gate_leaveSystem(key);rY …�rZ }r[ (jÅUjÆjU ubaubjc)�r\ }r] (jÅUjÆj jÎjE jÐjfjÒ}r^ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]r_ ji)�r` }ra (jÅUjlKjÆj\ jÎjE jÐjÜjÒ}rb (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�rc }rd (jÅUjÆj3 jÎjE jÐjÑjÒ}re (jÔ]jÕ]jÖ]j×]rf U$inserting-and-removing-list-elementsrg ajÚ]rh hiaujÜKjjÝhjÞ]ri (jà)�rj }rk (jÅX$Inserting and Removing List Elementsrl jÆjc jÎjE jÐjäjÒ}rm (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÝhjÞ]rn jçX$Inserting and Removing List Elementsro …�rp }rq (jÅjl jÆjj ubaubjò)�rr }rs (jÅX4Elements can also be inserted or removed from anywhere in the middle of a List using List_insert() and List_remove(). List_insert() inserts an element in front of the specified element. Use List_putHead() to place an element at the front of the List and List_put() to place an element at the end of the List.rt jÆjc jÎjE jÐjõjÒ}ru (jÔ]jÕ]jÖ]j×]jÚ]ujÜKkjÝhjÞ]rv jçX4Elements can also be inserted or removed from anywhere in the middle of a List using List_insert() and List_remove(). List_insert() inserts an element in front of the specified element. Use List_putHead() to place an element at the front of the List and List_put() to place an element at the end of the List.rw …�rx }ry (jÅjt jÆjr ubaubjò)�rz }r{ (jÅXHList_remove() removes the specified element from whatever List it is in.r| jÆjc jÎjE jÐjõjÒ}r} (jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÝhjÞ]r~ jçXHList_remove() removes the specified element from whatever List it is in.r …�r€ }r� (jÅj| jÆjz ubaubjò)�r‚ }rƒ (jÅXiNote that List does not provide any APIs for inserting or removing elements at a given index in the List.r„ jÆjc jÎjE jÐjõjÒ}r… (jÔ]jÕ]jÖ]j×]jÚ]ujÜKrjÝhjÞ]r† jçXiNote that List does not provide any APIs for inserting or removing elements at a given index in the List.r‡ …�rˆ }r‰ (jÅj„ jÆj‚ ubaubjò)�rŠ }r‹ (jÅXY**Run-time example:** The following example demonstrates List_insert() and List_remove():rŒ jÆjc jÎjE jÐjõjÒ}r� (jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÝhjÞ]rŽ (jÚ)�r� }r� (jÅX**Run-time example:**jÒ}r‘ (jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠ jÞ]r’ jçXRun-time example:r“ …�r” }r• (jÅUjÆj� ubajÐjâubjçXD The following example demonstrates List_insert() and List_remove():r– …�r— }r˜ (jÅXD The following example demonstrates List_insert() and List_remove():jÆjŠ ubeubj)�r™ }rš (jÅX™/* Insert r2 in front of r1 in the List. */ List_insert(myList, &(r1.elem), &(r2.elem)); /* Remove r1 from the List. */ List_remove(myList, &(r1.elem));jÆjc jÎjE jÐjjÒ}r› (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM1 jÝhjÞ]rœ jçX™/* Insert r2 in front of r1 in the List. */ List_insert(myList, &(r1.elem), &(r2.elem)); /* Remove r1 from the List. */ List_remove(myList, &(r1.elem));r� …�rž }rŸ (jÅUjÆj™ ubaubjc)�r  }r¡ (jÅUjÆjc jÎjE jÐjfjÒ}r¢ (jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÝhjÞ]r£ ji)�r¤ }r¥ (jÅUjlKjÆj  jÎjE jÐjÜjÒ}r¦ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r§ }r¨ (jÅXp**Run-time example:** The following example treats the List as a LIFO stack using List_putHead() and List_get():r© jÆjc jÎjE jÐjõjÒ}rª (jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÝhjÞ]r« (jÚ)�r¬ }r­ (jÅX**Run-time example:**jÒ}r® (jÔ]jÕ]jÖ]j×]jÚ]ujÆj§ jÞ]r¯ jçXRun-time example:r° …�r± }r² (jÅUjÆj¬ ubajÐjâubjçX[ The following example treats the List as a LIFO stack using List_putHead() and List_get():r³ …�r´ }rµ (jÅX[ The following example treats the List as a LIFO stack using List_putHead() and List_get():jÆj§ ubeubj)�r¶ }r· (jÅX List_Elem elem[NUMELEM]; List_Elem *tmpElem; // push onto the top (i.e. head) for (i = 0; i < NUMELEM; i++) { List_putHead(listHandle, &(elem[i])); } // remove the buffers in FIFO order. while((tmpElem = List_get(listHandle)) != NULL) { // process tmpElem }jÆjc jÎjE jÐjjÒ}r¸ (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM= jÝhjÞ]r¹ jçX List_Elem elem[NUMELEM]; List_Elem *tmpElem; // push onto the top (i.e. head) for (i = 0; i < NUMELEM; i++) { List_putHead(listHandle, &(elem[i])); } // remove the buffers in FIFO order. while((tmpElem = List_get(listHandle)) != NULL) { // process tmpElem }rº …�r» }r¼ (jÅUjÆj¶ ubaubjc)�r½ }r¾ (jÅUjÆjc jÎjE jÐjfjÒ}r¿ (jÔ]jÕ]jÖ]j×]jÚ]ujÜK‘jÝhjÞ]rÀ ji)�rÁ }r (jÅUjlKjÆj½ jÎjE jÐjÜjÒ}rà (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�rÄ }rÅ (jÅUjÆj3 jÎjE jÐjÑjÒ}rÆ (jÔ]jÕ]jÖ]j×]rÇ Uatomic-list-operationsrÈ ajÚ]rÉ hîaujÜK”jÝhjÞ]rÊ (jà)�rË }rÌ (jÅXAtomic List OperationsrÍ jÆjÄ jÎjE jÐjäjÒ}rÎ (jÔ]jÕ]jÖ]j×]jÚ]ujÜK”jÝhjÞ]rÏ jçXAtomic List OperationsrÐ …�rÑ }rÒ (jÅjÍ jÆjË ubaubjò)�rÓ }rÔ (jÅXOLists are commonly shared across multiple threads in the system, which might lead to concurrent modifications of the List by different threads, which would corrupt the List. List provides several "atomic" APIs that disable interrupts before operating on the List. These APIs are List_get() List_put(), List_putHead(), and List_empty().rÕ jÆjÄ jÎjE jÐjõjÒ}rÖ (jÔ]jÕ]jÖ]j×]jÚ]ujÜK•jÝhjÞ]r× jçXOLists are commonly shared across multiple threads in the system, which might lead to concurrent modifications of the List by different threads, which would corrupt the List. List provides several "atomic" APIs that disable interrupts before operating on the List. These APIs are List_get() List_put(), List_putHead(), and List_empty().rØ …�rÙ }rÚ (jÅjÕ jÆjÓ ubaubjò)�rÛ }rÜ (jÅXöAn atomic API completes in core functionality without being interrupted. Therefore, atomic APIs are thread-safe. An example is List_put(). Multiple threads can call this API at the same time. The threads do not have to manage the synchronization.rÝ jÆjÄ jÎjE jÐjõjÒ}rÞ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKšjÝhjÞ]rß jçXöAn atomic API completes in core functionality without being interrupted. Therefore, atomic APIs are thread-safe. An example is List_put(). Multiple threads can call this API at the same time. The threads do not have to manage the synchronization.rà …�rá }râ (jÅjÝ jÆjÛ ubaubjò)�rã }rä (jÅXoOther APIs--List_prev(), List_next(), List_insert(), and List_remove()--should be protected by the application.rå jÆjÄ jÎjE jÐjõjÒ}ræ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKŸjÝhjÞ]rç jçXoOther APIs--List_prev(), List_next(), List_insert(), and List_remove()--should be protected by the application.rè …�ré }rê (jÅjå jÆjã ubaubeubeubjÇ)�rë }rì (jÅUjÆjá jÎjÏjÐjÑjÒ}rí (jÔ]jÕ]jÖ]j×]rî Umultiproc-modulerï ajÚ]rð jgaujÜK]jÝhjÞ]rñ (jà)�rò }ró (jÅXMultiProc Modulerô jÆjë jÎjÏjÐjäjÒ}rõ (jÔ]jÕ]jÖ]j×]jÚ]ujÜK]jÝhjÞ]rö jçXMultiProc Moduler÷ …�rø }rù (jÅjô jÆjò ubaubj7)�rú }rû (jÅXHhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/MultiProc_ModulejÆjë jÎj:X>source/rtos/PDK_Platform_Software/IPC/MultiProc_Module.rst.incrü …�rý }rþ bjÐj>jÒ}rÿ (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r jçXHhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/MultiProc_Moduler …�r }r (jÅUjÆjú ubaubjÂ)�r }r (jÅX³.. |mpmCfg_Img1| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆjë jÎjý jÐjHjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]r X mpmCfg_Img1r aujÜKjÝhjÞ]r jû)�r }r (jÅj jÒ}r (UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr j×]jÖ]jÔ]jÕ]jÚ]ujÆj jÞ]r jR)�r }r (jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr jÒ}r (UuriXrtos/../images/Book_cfg.pngr j×]jÖ]jÔ]jÕ]jX}r U*j sjÚ]Ualtj ujÆj jÞ]jÐjZubajÐjÿubaubjÂ)�r }r (jÅX´.. |mpmCfg_Img2| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆjë jÎjý jÐjHjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]r X mpmCfg_Img2r aujÜKjÝhjÞ]r jû)�r }r (jÅj jÒ}r (UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr j×]jÖ]jÔ]jÕ]jÚ]ujÆj jÞ]r jR)�r }r! (jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr" jÒ}r# (UuriXrtos/../images/Book_cfg.pngr$ j×]jÖ]jÔ]jÕ]jX}r% U*j$ sjÚ]Ualtj ujÆj jÞ]jÐjZubajÐjÿubaubjÂ)�r& }r' (jÅX¼.. |mpmRun_Img1| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.html jÆjë jÎjý jÐjHjÒ}r( (jÔ]jÕ]jÖ]j×]jÚ]r) X mpmRun_Img1r* aujÜK jÝhjÞ]r+ jû)�r, }r- (jÅj* jÒ}r. (UrefuriXqhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.htmlr/ j×]jÖ]jÔ]jÕ]jÚ]ujÆj& jÞ]r0 jR)�r1 }r2 (jÅXªImage:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.htmlr3 jÒ}r4 (UuriXrtos/../images/Book_run.pngr5 j×]jÖ]jÔ]jÕ]jX}r6 U*j5 sjÚ]Ualtj* ujÆj, jÞ]jÐjZubajÐjÿubaubjÂ)�r7 }r8 (jÅX¼.. |mpmRun_Img2| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.html jÆjë jÎjý jÐjHjÒ}r9 (jÔ]jÕ]jÖ]j×]jÚ]r: X mpmRun_Img2r; aujÜK jÝhjÞ]r< jû)�r= }r> (jÅj; jÒ}r? (UrefuriXqhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.htmlr@ j×]jÖ]jÔ]jÕ]jÚ]ujÆj7 jÞ]rA jR)�rB }rC (jÅXªImage:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.htmlrD jÒ}rE (UuriXrtos/../images/Book_run.pngrF j×]jÖ]jÔ]jÕ]jX}rG U*jF sjÚ]Ualtj; ujÆj= jÞ]jÐjZubajÐjÿubaubjc)�rH }rI (jÅUjÆjë jÎjý jÐjfjÒ}rJ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rK ji)�rL }rM (jÅUjlKjÆjH jÎjý jÐjÜjÒ}rN (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubj3)�rO }rP (jÅUjÆjë jÎjý jÐj6jÒ}rQ (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rR jy )�rS }rT (jÅUjÒ}rU (jÔ]jÕ]jÖ]j×]jÚ]ujÆjO jÞ]rV j~ )�rW }rX (jÅUjÒ}rY (j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjS jÞ]rZ (jƒ )�r[ }r\ (jÅUjÒ}r] (j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjW jÞ]jÐj‡ ubjƒ )�r^ }r_ (jÅUjÒ}r` (j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjW jÞ]jÐj‡ ubj‹ )�ra }rb (jÅUjÒ}rc (jÔ]jÕ]jÖ]j×]jÚ]ujÆjW jÞ]rd j� )�re }rf (jÅUjÒ}rg (jÔ]jÕ]jÖ]j×]jÚ]ujÆja jÞ]rh j• )�ri }rj (jÅUjÒ}rk (j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆje jÞ]rl jò)�rm }rn (jÅXAPI Reference Linksro jÆji jÎjý jÐjõjÒ}rp (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rq jçXAPI Reference Linksrr …�rs }rt (jÅjo jÆjm ubaubajÐj¢ ubajÐj£ ubajÐj¤ ubj¥ )�ru }rv (jÅUjÒ}rw (jÔ]jÕ]jÖ]j×]jÚ]ujÆjW jÞ]rx j� )�ry }rz (jÅUjÒ}r{ (jÔ]jÕ]jÖ]j×]jÚ]ujÆju jÞ]r| (j• )�r} }r~ (jÅUjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÆjy jÞ]r€ jò)�r� }r‚ (jÅX |mpmCfg_Img1|rƒ jÆj} jÎjý jÐjõjÒ}r„ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r… jû)�r† }r‡ (jÅj jÆj� jÎNjÐjÿjÒ}rˆ (Urefurij j×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]r‰ jR)�rŠ }r‹ (jÅj jÆj† jÎNjÐjZjÒ}rŒ (UuriXrtos/../images/Book_cfg.pngr� j×]jÖ]jÔ]jÕ]jX}rŽ U*j� sjÚ]Ualtj ujÜNjÞ]ubaubaubajÐj¢ ubj• )�r� }r� (jÅUjÒ}r‘ (jÔ]jÕ]jÖ]j×]jÚ]ujÆjy jÞ]r’ jò)�r“ }r” (jÅX |mpmRun_Img1|r• jÆj� jÎjý jÐjõjÒ}r– (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r— jû)�r˜ }r™ (jÅj* jÆj“ jÎNjÐjÿjÒ}rš (Urefurij/ j×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]r› jR)�rœ }r� (jÅj3 jÆj˜ jÎNjÐjZjÒ}rž (UuriXrtos/../images/Book_run.pngrŸ j×]jÖ]jÔ]jÕ]jX}r  U*jŸ sjÚ]Ualtj* ujÜNjÞ]ubaubaubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubajÐjÔ ubaubjÇ)�r¡ }r¢ (jÅUjKjÆjë jÎjý jÐjÑjÒ}r£ (jÔ]r¤ X introductionr¥ ajÕ]jÖ]j×]r¦ Uid6r§ ajÚ]ujÜKjÝhjÞ]r¨ (jà)�r© }rª (jÅX Introductionr« jÆj¡ jÎjý jÐjäjÒ}r¬ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r­ jçX Introductionr® …�r¯ }r° (jÅj« jÆj© ubaubjò)�r± }r² (jÅX|Many IPC modules require the ability to uniquely specify and identify processors in a multi-processor environment. The MultiProc module centralizes processor ID management into one module. Most multi-processor IPC applications require that you configure this module using the MultiProc.setConfig() function in the *.cfg script. The setConfig() function tells the MultiProc module:jÆj¡ jÎjý jÐjõjÒ}r³ (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r´ (jçX:Many IPC modules require the ability to uniquely specify and identify processors in a multi-processor environment. The MultiProc module centralizes processor ID management into one module. Most multi-processor IPC applications require that you configure this module using the MultiProc.setConfig() function in the rµ …�r¶ }r· (jÅX:Many IPC modules require the ability to uniquely specify and identify processors in a multi-processor environment. The MultiProc module centralizes processor ID management into one module. Most multi-processor IPC applications require that you configure this module using the MultiProc.setConfig() function in the jÆj± ubcdocutils.nodes problematic r¸ )�r¹ }rº (jÅX*jÒ}r» (j×]r¼ Uid8r½ ajÖ]jÔ]jÕ]jÚ]UrefidUid7r¾ ujÆj± jÞ]r¿ jçX*…�rÀ }rÁ (jÅUjÆj¹ ubajÐU problematicr ubjçXA.cfg script. The setConfig() function tells the MultiProc module:rà …�rÄ }rÅ (jÅXA.cfg script. The setConfig() function tells the MultiProc module:jÆj± ubeubjt)�rÆ }rÇ (jÅUjÆj¡ jÎjý jÐjwjÒ}rÈ (jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK jÝhjÞ]rÉ (j{)�rÊ }rË (jÅXAThe specific processor for which this application is being built.rÌ jÆjÆ jÎjý jÐjjÒ}rÍ (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÎ jò)�rÏ }rÐ (jÅjÌ jÆjÊ jÎjý jÐjõjÒ}rÑ (jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rÒ jçXAThe specific processor for which this application is being built.rÓ …�rÔ }rÕ (jÅjÌ jÆjÏ ubaubaubj{)�rÖ }r× (jÅXJThe processors in this cluster. A "cluster" is a set of processors within jÆjÆ jÎjý jÐjjÒ}rØ (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÙ jò)�rÚ }rÛ (jÅXIThe processors in this cluster. A "cluster" is a set of processors withinrÜ jÆjÖ jÎjý jÐjõjÒ}rÝ (jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]rÞ jçXIThe processors in this cluster. A "cluster" is a set of processors withinrß …�rà }rá (jÅjÜ jÆjÚ ubaubaubeubjò)�râ }rã (jÅX^a system that share some memory and for which notification between those processors is needed.rä jÆj¡ jÎjý jÐjõjÒ}rå (jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÝhjÞ]ræ jçX^a system that share some memory and for which notification between those processors is needed.rç …�rè }ré (jÅjä jÆjâ ubaubjò)�rê }rë (jÅX—Most systems contain a single cluster. For systems with multiple clusters, you also need to configure the numProcessors and baseIdOfCluster properties.rì jÆj¡ jÎjý jÐjõjÒ}rí (jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÝhjÞ]rî jçX—Most systems contain a single cluster. For systems with multiple clusters, you also need to configure the numProcessors and baseIdOfCluster properties.rï …�rð }rñ (jÅjì jÆjê ubaubjò)�rò }ró (jÅX¢Each processor reference by the MultiProc module can be uniquely identified by either its name string or an integer ranging from 0 to MultiProc.maxProcessors - 1.rô jÆj¡ jÎjý jÐjõjÒ}rõ (jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÝhjÞ]rö jçX¢Each processor reference by the MultiProc module can be uniquely identified by either its name string or an integer ranging from 0 to MultiProc.maxProcessors - 1.r÷ …�rø }rù (jÅjô jÆjò ubaubjò)�rú }rû (jÅXThe following XDCtools configuration statements set up a MultiProc array. At runtime, the "DSP" processor running this configuration gets assigned an ID value of 2. The other processors in the system are "VIDEO" with a processor ID of 0 and "DSS" with a processor ID of 1.rü jÆj¡ jÎjý jÐjõjÒ}rý (jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÝhjÞ]rþ jçXThe following XDCtools configuration statements set up a MultiProc array. At runtime, the "DSP" processor running this configuration gets assigned an ID value of 2. The other processors in the system are "VIDEO" with a processor ID of 0 and "DSS" with a processor ID of 1.rÿ …�r}r(jÅjü jÆjú ubaubj)�r}r(jÅX™/* DSP will get assigned processor id 2. */ var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc'); MultiProc.setConfig("DSP", ["VIDEO", "DSS", "DSP"]);jÆj¡ jÎjý jÐjjÒ}r(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM� jÝhjÞ]rjçX™/* DSP will get assigned processor id 2. */ var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc'); MultiProc.setConfig("DSP", ["VIDEO", "DSS", "DSP"]);r…�r}r(jÅUjÆjubaubjc)�r }r (jÅUjÆj¡ jÎjý jÐjfjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÝhjÞ]r ji)�r }r(jÅUjlKjÆj jÎjý jÐjÜjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r}r(jÅX®The ID is a software-only setting. It does not correlate to hardware core IDs or any other type of hardware identification. For devices with more than one core, each core must have its own unique processor ID. The ID is also independent of any OS setting. The processor ID is not always known at configuration time. It might need to be determined at initialization time via a GPIO pin, flash setting, or some other method. You can call the MultiProc_setLocalId() API (with the restriction that it must be called before module startup) to set the processor ID. However, other modules that use MultiProc need to know that the static ID will be changed during initialization. Setting the local name to NULL in the MultiProc.setConfig statement in the configuration indicates that the MultiProc_setLocalId() API will be used at runtime. Other modules that use MultiProc should act accordingly by deferring processing until the actual ID is known.rjÆj¡ jÎjý jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÝhjÞ]rjçX®The ID is a software-only setting. It does not correlate to hardware core IDs or any other type of hardware identification. For devices with more than one core, each core must have its own unique processor ID. The ID is also independent of any OS setting. The processor ID is not always known at configuration time. It might need to be determined at initialization time via a GPIO pin, flash setting, or some other method. You can call the MultiProc_setLocalId() API (with the restriction that it must be called before module startup) to set the processor ID. However, other modules that use MultiProc need to know that the static ID will be changed during initialization. Setting the local name to NULL in the MultiProc.setConfig statement in the configuration indicates that the MultiProc_setLocalId() API will be used at runtime. Other modules that use MultiProc should act accordingly by deferring processing until the actual ID is known.r…�r}r(jÅjjÆjubaubjò)�r}r(jÅX For example, the following fragment of configuration code requires that the MultiProc_setLocalId() API be run during startup to fill in the NULL processor name.rjÆj¡ jÎjý jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK9jÝhjÞ]rjçX For example, the following fragment of configuration code requires that the MultiProc_setLocalId() API be run during startup to fill in the NULL processor name.r…�r}r(jÅjjÆjubaubj)�r }r!(jÅX"/* Specify startup function */ var Startup = xdc.useModule('xdc.runtime.Startup'); Startup.firstFxns.$add('&setMyId'); /* Specify MultiProc config; current processor unknown */ var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc'); MultiProc.setConfig(null, ["CORE0", "CORE1", "CORE2"]);jÆj¡ jÎjý jÐjjÒ}r"(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM� jÝhjÞ]r#jçX"/* Specify startup function */ var Startup = xdc.useModule('xdc.runtime.Startup'); Startup.firstFxns.$add('&setMyId'); /* Specify MultiProc config; current processor unknown */ var MultiProc = xdc.useModule('ti.sdo.utils.MultiProc'); MultiProc.setConfig(null, ["CORE0", "CORE1", "CORE2"]);r$…�r%}r&(jÅUjÆj ubaubjc)�r'}r((jÅUjÆj¡ jÎjý jÐjfjÒ}r)(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÝhjÞ]r*ji)�r+}r,(jÅUjlKjÆj'jÎjý jÐjÜjÒ}r-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r.}r/(jÅX_Then, the application code could contain the following setMyID() function to be run at startup:r0jÆj¡ jÎjý jÐjõjÒ}r1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÝhjÞ]r2jçX_Then, the application code could contain the following setMyID() function to be run at startup:r3…�r4}r5(jÅj0jÆj.ubaubj)�r6}r7(jÅX3Void setMyId() { UInt16 procId; Int status; // // Board specific determination of processor id. // Example: GPIO_READ reads register of GPIO pin 5 // if (GPIO_READ(5) == 0) { procId = 0; } else { procId = 1; } MultiProc_setLocalId(procId); }jÆj¡ jÎjý jÐjjÒ}r8(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM« jÝhjÞ]r9jçX3Void setMyId() { UInt16 procId; Int status; // // Board specific determination of processor id. // Example: GPIO_READ reads register of GPIO pin 5 // if (GPIO_READ(5) == 0) { procId = 0; } else { procId = 1; } MultiProc_setLocalId(procId); }r:…�r;}r<(jÅUjÆj6ubaubjc)�r=}r>(jÅUjÆj¡ jÎjý jÐjfjÒ}r?(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÝhjÞ]r@ji)�rA}rB(jÅUjlKjÆj=jÎjý jÐjÜjÒ}rC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rD}rE(jÅXöYour application can query the MultiProc table using various runtime APIs. At runtime, the MultiProc_getId() call returns the MultiProc ID for any processor name. At config-time, the MultiProc.getIdMeta() call returns the same value. For example:rFjÆj¡ jÎjý jÐjõjÒ}rG(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÝhjÞ]rHjçXöYour application can query the MultiProc table using various runtime APIs. At runtime, the MultiProc_getId() call returns the MultiProc ID for any processor name. At config-time, the MultiProc.getIdMeta() call returns the same value. For example:rI…�rJ}rK(jÅjFjÆjDubaubj)�rL}rM(jÅX'core1ProcId = MultiProc_getId("CORE1");jÆj¡ jÎjý jÐjjÒ}rN(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÅ jÝhjÞ]rOjçX'core1ProcId = MultiProc_getId("CORE1");rP…�rQ}rR(jÅUjÆjLubaubjc)�rS}rT(jÅUjÆj¡ jÎjý jÐjfjÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]rVji)�rW}rX(jÅUjlKjÆjSjÎjý jÐjÜjÒ}rY(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rZ}r[(jÅXXMultiProc_self() returns the processor ID of the processor running the API. For example:r\jÆj¡ jÎjý jÐjõjÒ}r](jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÝhjÞ]r^jçXXMultiProc_self() returns the processor ID of the processor running the API. For example:r_…�r`}ra(jÅj\jÆjZubaubj)�rb}rc(jÅX:System_printf("My MultiProc id = %d\n", MultiProc_self());jÆj¡ jÎjý jÐjjÒ}rd(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÍ jÝhjÞ]rejçX:System_printf("My MultiProc id = %d\n", MultiProc_self());rf…�rg}rh(jÅUjÆjbubaubjc)�ri}rj(jÅUjÆj¡ jÎjý jÐjfjÒ}rk(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÝhjÞ]rlji)�rm}rn(jÅUjlKjÆjijÎjý jÐjÜjÒ}ro(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rp}rq(jÅXÝMultiProc_getBaseIdOfCluster() returns the MultiProc ID of the base processor in the cluster to which this processor belongs. The MultiProc_getName() API returns that processor name if given the MultiProc ID. For example:rrjÆj¡ jÎjý jÐjõjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÝhjÞ]rtjçXÝMultiProc_getBaseIdOfCluster() returns the MultiProc ID of the base processor in the cluster to which this processor belongs. The MultiProc_getName() API returns that processor name if given the MultiProc ID. For example:ru…�rv}rw(jÅjrjÆjpubaubj)�rx}ry(jÅX!core0Name = MultiProc_getName(0);jÆj¡ jÎjý jÐjjÒ}rz(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÖ jÝhjÞ]r{jçX!core0Name = MultiProc_getName(0);r|…�r}}r~(jÅUjÆjxubaubjc)�r}r€(jÅUjÆj¡ jÎjý jÐjfjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÝhjÞ]r‚ji)�rƒ}r„(jÅUjlKjÆjjÎjý jÐjÜjÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r†}r‡(jÅXIMultiProc_getNumProcessors() evaluates to the total number of processors.rˆjÆj¡ jÎjý jÐjõjÒ}r‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÝhjÞ]rŠjçXIMultiProc_getNumProcessors() evaluates to the total number of processors.r‹…�rŒ}r�(jÅjˆjÆj†ubaubj)�rŽ}r�(jÅXhSystem_printf("Number of processors in the system = %d\n", MultiProc_getNumProcessors() );jÆj¡ jÎjý jÐjjÒ}r�(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÞ jÝhjÞ]r‘jçXhSystem_printf("Number of processors in the system = %d\n", MultiProc_getNumProcessors() );r’…�r“}r”(jÅUjÆjŽubaubjc)�r•}r–(jÅUjÆj¡ jÎjý jÐjfjÒ}r—(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]r˜ji)�r™}rš(jÅUjlKjÆj•jÎjý jÐjÜjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rœ}r�(jÅXÝMultiProc_getBaseIdOfCluster() returns the MultiProc ID of the base processor in the cluster to which this processor belongs. The MultiProc_getName() API returns that processor name if given the MultiProc ID. For example:ržjÆj¡ jÎjý jÐjõjÒ}rŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÝhjÞ]r jçXÝMultiProc_getBaseIdOfCluster() returns the MultiProc ID of the base processor in the cluster to which this processor belongs. The MultiProc_getName() API returns that processor name if given the MultiProc ID. For example:r¡…�r¢}r£(jÅjžjÆjœubaubj)�r¤}r¥(jÅX!core0Name = MultiProc_getName(0);jÆj¡ jÎjý jÐjjÒ}r¦(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMè jÝhjÞ]r§jçX!core0Name = MultiProc_getName(0);r¨…�r©}rª(jÅUjÆj¤ubaubjc)�r«}r¬(jÅUjÆj¡ jÎjý jÐjfjÒ}r­(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÝhjÞ]r®ji)�r¯}r°(jÅUjlKjÆj«jÎjý jÐjÜjÒ}r±(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r²}r³(jÅXIMultiProc_getNumProcessors() evaluates to the total number of processors.r´jÆj¡ jÎjý jÐjõjÒ}rµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÝhjÞ]r¶jçXIMultiProc_getNumProcessors() evaluates to the total number of processors.r·…�r¸}r¹(jÅj´jÆj²ubaubj)�rº}r»(jÅXhSystem_printf("Number of processors in the system = %d\n", MultiProc_getNumProcessors() );jÆj¡ jÎjý jÐjjÒ}r¼(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMð jÝhjÞ]r½jçXhSystem_printf("Number of processors in the system = %d\n", MultiProc_getNumProcessors() );r¾…�r¿}rÀ(jÅUjÆjºubaubjc)�rÁ}rÂ(jÅUjÆj¡ jÎjý jÐjfjÒ}rÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK“jÝhjÞ]rÄji)�rÅ}rÆ(jÅUjlKjÆjÁjÎjý jÐjÜjÒ}rÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rÈ}rÉ(jÅXqMultiProc_getNumProcsInCluster() returns the number of processors in the cluster to which this processor belongs.rÊjÆj¡ jÎjý jÐjõjÒ}rË(jÔ]jÕ]jÖ]j×]jÚ]ujÜK•jÝhjÞ]rÌjçXqMultiProc_getNumProcsInCluster() returns the number of processors in the cluster to which this processor belongs.rÍ…�rÎ}rÏ(jÅjÊjÆjÈubaubeubjÇ)�rÐ}rÑ(jÅUjÆjë jÎjý jÐjÑjÒ}rÒ(jÔ]jÕ]jÖ]j×]rÓU.configuring-clusters-with-the-multiproc-modulerÔajÚ]rÕjeaujÜK˜jÝhjÞ]rÖ(jà)�r×}rØ(jÅX.Configuring Clusters With the MultiProc ModulerÙjÆjÐjÎjý jÐjäjÒ}rÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK˜jÝhjÞ]rÛjçX.Configuring Clusters With the MultiProc ModulerÜ…�rÝ}rÞ(jÅjÙjÆj×ubaubjò)�rß}rà(jÅXCA "cluster" is a set of processors within a system that share some memory and for which notification between those processors is needed. If your system has multiple clusters, you need to configure the MultiProc module's numProcessors and baseIdOfCluster properties in addition to calling the MultiProc.setConfig() function.rájÆjÐjÎjý jÐjõjÒ}râ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKšjÝhjÞ]rãjçXCA "cluster" is a set of processors within a system that share some memory and for which notification between those processors is needed. If your system has multiple clusters, you need to configure the MultiProc module's numProcessors and baseIdOfCluster properties in addition to calling the MultiProc.setConfig() function.rä…�rå}ræ(jÅjájÆjßubaubjò)�rç}rè(jÅX;Notifications are not supported between different clusters.réjÆjÐjÎjý jÐjõjÒ}rê(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÝhjÞ]rëjçX;Notifications are not supported between different clusters.rì…�rí}rî(jÅjéjÆjçubaubjò)�rï}rð(jÅX�For example, in a system with two 'C6678 devices that each use eight homogeneous cores, you could configure the first 'C6678 device as follows:rñjÆjÐjÎjý jÐjõjÒ}rò(jÔ]jÕ]jÖ]j×]jÚ]ujÜKžjÝhjÞ]rójçX�For example, in a system with two 'C6678 devices that each use eight homogeneous cores, you could configure the first 'C6678 device as follows:rô…�rõ}rö(jÅjñjÆjïubaubj)�r÷}rø(jÅXãvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc'); MultiProc.baseIdOfCluster = 0; MultiProc.numProcessors = 16; MultiProc.setConfig(null, ["CORE0", "CORE1", "CORE2", "CORE3", "CORE4", "CORE5", "CORE6", "CORE7"]);jÆjÐjÎjý jÐjjÒ}rù(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rújçXãvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc'); MultiProc.baseIdOfCluster = 0; MultiProc.numProcessors = 16; MultiProc.setConfig(null, ["CORE0", "CORE1", "CORE2", "CORE3", "CORE4", "CORE5", "CORE6", "CORE7"]);rû…�rü}rý(jÅUjÆj÷ubaubjc)�rþ}rÿ(jÅUjÆjÐjÎjý jÐjfjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¨jÝhjÞ]rji)�r}r(jÅUjlKjÆjþjÎjý jÐjÜjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r}r(jÅX8You could configure the second 'C6678 device as follows:rjÆjÐjÎjý jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKªjÝhjÞ]r jçX8You could configure the second 'C6678 device as follows:r …�r }r (jÅjjÆjubaubj)�r }r(jÅXãvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc'); MultiProc.baseIdOfCluster = 8; MultiProc.numProcessors = 16; MultiProc.setConfig(null, ["CORE0", "CORE1", "CORE2", "CORE3", "CORE4", "CORE5", "CORE6", "CORE7"]);jÆjÐjÎjý jÐjjÒ}r(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rjçXãvar MultiProc = xdc.useModule('ti.sdo.utils.MultiProc'); MultiProc.baseIdOfCluster = 8; MultiProc.numProcessors = 16; MultiProc.setConfig(null, ["CORE0", "CORE1", "CORE2", "CORE3", "CORE4", "CORE5", "CORE6", "CORE7"]);r…�r}r(jÅUjÆj ubaubjc)�r}r(jÅUjÆjÐjÎjý jÐjfjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÝhjÞ]rji)�r}r(jÅUjlKjÆjjÎjý jÐjÜjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r}r(jÅXSNotice that the MultiProc.numProcessors property specifies the total number of processors in the system, while the length of the array passed to setConfig() specifies the number of processors in the cluster. (If you are not using multiple clusters, the numProcessors property is configured automatically.) The MultiProc.baseIdOfCluster property is set to the MultiProc ID number you want to use for the first processor in the array for this cluster. For example, if there are 8 processors in a cluster, the baseIdOfCluster property should be 0 for the first cluster and 8 for the second cluster.rjÆjÐjÎjý jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¶jÝhjÞ]rjçXSNotice that the MultiProc.numProcessors property specifies the total number of processors in the system, while the length of the array passed to setConfig() specifies the number of processors in the cluster. (If you are not using multiple clusters, the numProcessors property is configured automatically.) The MultiProc.baseIdOfCluster property is set to the MultiProc ID number you want to use for the first processor in the array for this cluster. For example, if there are 8 processors in a cluster, the baseIdOfCluster property should be 0 for the first cluster and 8 for the second cluster.r …�r!}r"(jÅjjÆjubaubjò)�r#}r$(jÅX÷|mpmCfg_Img2| The latest version of the MultiProc module configuration documentation is available in `MultiProc page `_jÆjÐjÎjý jÐjõjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¹jÝhjÞ]r&(jû)�r'}r((jÅj jÆj#jÎNjÐjÿjÒ}r)(Urefurij j×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]r*jR)�r+}r,(jÅj" jÆj'jÎNjÐjZjÒ}r-(UuriXrtos/../images/Book_cfg.pngr.j×]jÖ]jÔ]jÕ]jX}r/U*j.sjÚ]Ualtj ujÜNjÞ]ubaubjçXX The latest version of the MultiProc module configuration documentation is available in r0…�r1}r2(jÅXX The latest version of the MultiProc module configuration documentation is available in jÆj#ubjû)�r3}r4(jÅX’`MultiProc page `_jÒ}r5(UnameXMultiProc pagejX~http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/index.html#ti/sdo/utils/MultiProc.htmlr6j×]jÖ]jÔ]jÕ]jÚ]ujÆj#jÞ]r7jçXMultiProc pager8…�r9}r:(jÅUjÆj3ubajÐjÿubj)�r;}r<(jÅX� jKjÆj#jÐj jÒ}r=(Urefurij6j×]r>Umultiproc-pager?ajÖ]jÔ]jÕ]jÚ]r@jaujÞ]ubeubeubjÇ)�rA}rB(jÅUjÆjë jÎjý jÐjÑjÒ}rC(jÔ]jÕ]jÖ]j×]rDU#creating-connections-with-multiprocrEajÚ]rFj aujÜK¾jÝhjÞ]rG(jà)�rH}rI(jÅX#Creating Connections with MultiProcrJjÆjAjÎjý jÐjäjÒ}rK(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¾jÝhjÞ]rLjçX#Creating Connections with MultiProcrM…�rN}rO(jÅjJjÆjHubaubjò)�rP}rQ(jÅXvThe Ipc_start() and Ipc_attach() APIs can only be used to attach and synchronizes with processors in the same cluster.rRjÆjAjÎjý jÐjõjÒ}rS(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¿jÝhjÞ]rTjçXvThe Ipc_start() and Ipc_attach() APIs can only be used to attach and synchronizes with processors in the same cluster.rU…�rV}rW(jÅjRjÆjPubaubjò)�rX}rY(jÅXQTo create a connection between cores in different clusters, you must manually create a connection using the MessageQ and ti.sdo.ipc.NameServerMessageQ modules. The NameServerMessageQ module supports NameServer requests between different clusters by using MessageQ, which in turns uses the MessageQ transport to send a NameServer request.rZjÆjAjÎjý jÐjõjÒ}r[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÝhjÞ]r\jçXQTo create a connection between cores in different clusters, you must manually create a connection using the MessageQ and ti.sdo.ipc.NameServerMessageQ modules. The NameServerMessageQ module supports NameServer requests between different clusters by using MessageQ, which in turns uses the MessageQ transport to send a NameServer request.r]…�r^}r_(jÅjZjÆjXubaubjò)�r`}ra(jÅXzYou can control the timeout period for the NameServerMessageQ module by configuring its timeoutInMicroSecs parameter, which defaults to 1 second. If a response is not received within the timeout period, the NameServer request returns a failure status. The NameServerRemoteNotify module also has a timeoutInMicroSecs parameter that you can configure; it defaults to wait forever.rbjÆjAjÎjý jÐjõjÒ}rc(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÃjÝhjÞ]rdjçXzYou can control the timeout period for the NameServerMessageQ module by configuring its timeoutInMicroSecs parameter, which defaults to 1 second. If a response is not received within the timeout period, the NameServer request returns a failure status. The NameServerRemoteNotify module also has a timeoutInMicroSecs parameter that you can configure; it defaults to wait forever.re…�rf}rg(jÅjbjÆj`ubaubjò)�rh}ri(jÅXþCreating a connection between cores in different clusters allows you to call MessageQ_open() even for a core on a different cluster. Note that these calls must occur after the MessageQ heap has been registered, because they allocate memory from the heap.rjjÆjAjÎjý jÐjõjÒ}rk(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÅjÝhjÞ]rljçXþCreating a connection between cores in different clusters allows you to call MessageQ_open() even for a core on a different cluster. Note that these calls must occur after the MessageQ heap has been registered, because they allocate memory from the heap.rm…�rn}ro(jÅjjjÆjhubaubjò)�rp}rq(jÅX²Once the connection has been created, MessageQ can be used between different processors on different clusters just as it is used between different processors in the same cluster.rrjÆjAjÎjý jÐjõjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÇjÝhjÞ]rtjçX²Once the connection has been created, MessageQ can be used between different processors on different clusters just as it is used between different processors in the same cluster.ru…�rv}rw(jÅjrjÆjpubaubjò)�rx}ry(jÅXò|mpmRun_Img2| The latest version of the MultiProc module run-time API documentation is available in `MultiProc run-time API `_jÆjAjÎjý jÐjõjÒ}rz(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÉjÝhjÞ]r{(jû)�r|}r}(jÅj; jÆjxjÎNjÐjÿjÒ}r~(Urefurij@ j×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]rjR)�r€}r�(jÅjD jÆj|jÎNjÐjZjÒ}r‚(UuriXrtos/../images/Book_run.pngrƒj×]jÖ]jÔ]jÕ]jX}r„U*jƒsjÚ]Ualtj; ujÜNjÞ]ubaubjçXW The latest version of the MultiProc module run-time API documentation is available in r……�r†}r‡(jÅXW The latest version of the MultiProc module run-time API documentation is available in jÆjxubjû)�rˆ}r‰(jÅXŽ`MultiProc run-time API `_jÒ}rŠ(UnameXMultiProc run-time APIjXqhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.htmlr‹j×]jÖ]jÔ]jÕ]jÚ]ujÆjxjÞ]rŒjçXMultiProc run-time APIr�…�rŽ}r�(jÅUjÆjˆubajÐjÿubj)�r�}r‘(jÅXu jKjÆjxjÐj jÒ}r’(Urefurij‹j×]r“Umultiproc-run-time-apir”ajÖ]jÔ]jÕ]jÚ]r•jCaujÞ]ubeubeubjÇ)�r–}r—(jÅUjKjÆjë jÎjý jÐjÑjÒ}r˜(jÔ]r™XexampleršajÕ]jÖ]j×]r›UexamplerœajÚ]ujÜKÎjÝhjÞ]r�(jà)�rž}rŸ(jÅXExampler jÆj–jÎjý jÐjäjÒ}r¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÎjÝhjÞ]r¢jçXExampler£…�r¤}r¥(jÅj jÆjžubaubjò)�r¦}r§(jÅXŽThe following example function creates a NameServerMessageQ and TransportXXX to communicate remotely with a processor in a different cluster. The "remoteProcId" would be specified to be the MultiProc ID of the processor in the system. "TransportXXX" must be a copy-based transport that does not require any shared memory. You would need to create such a transport, because IPC does not provide one.r¨jÆj–jÎjý jÐjõjÒ}r©(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÝhjÞ]rªjçXŽThe following example function creates a NameServerMessageQ and TransportXXX to communicate remotely with a processor in a different cluster. The "remoteProcId" would be specified to be the MultiProc ID of the processor in the system. "TransportXXX" must be a copy-based transport that does not require any shared memory. You would need to create such a transport, because IPC does not provide one.r«…�r¬}r­(jÅj¨jÆj¦ubaubj)�r®}r¯(jÅXVoid myRemoteCreateFunction(Uint16 remoteProcId) { NameServerMessageQ_Params nsParams; NameServerMessageQ_Handle nsHandle; TransportXXX_Handle tranHandle; TransportXXX_Params tranParams; Error_Block eb; Error_init(&eb); /* * Note: You must register a MessageQ heap prior to * calling NameServerMessageQ_create(). */ /* init nsParams */ NameServerMessageQ_Params_init(&nsParams); /* create driver to remote processor */ nsHandle = NameServerMessageQ_create( remoteProcId, /* MultiProc ID of proc on 2nd cluster */ &nsParams, &eb); if (nsHandle == NULL) { SYS_abort("NameServerMessageQ_create() failed"); } /* initialize the transport parameters */ TransportXXX_Params_init(&tranParams); tranHandle = TransportXXX_create( remoteProcId, /* MultiProc ID of proc on 2nd cluster */ &tranParams, &eb); if (tranHandle == NULL) { SYS_abort("TransportXXX_create() failed"); } }jÆj–jÎjý jÐjjÒ}r°(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM3 jÝhjÞ]r±jçXVoid myRemoteCreateFunction(Uint16 remoteProcId) { NameServerMessageQ_Params nsParams; NameServerMessageQ_Handle nsHandle; TransportXXX_Handle tranHandle; TransportXXX_Params tranParams; Error_Block eb; Error_init(&eb); /* * Note: You must register a MessageQ heap prior to * calling NameServerMessageQ_create(). */ /* init nsParams */ NameServerMessageQ_Params_init(&nsParams); /* create driver to remote processor */ nsHandle = NameServerMessageQ_create( remoteProcId, /* MultiProc ID of proc on 2nd cluster */ &nsParams, &eb); if (nsHandle == NULL) { SYS_abort("NameServerMessageQ_create() failed"); } /* initialize the transport parameters */ TransportXXX_Params_init(&tranParams); tranHandle = TransportXXX_create( remoteProcId, /* MultiProc ID of proc on 2nd cluster */ &tranParams, &eb); if (tranHandle == NULL) { SYS_abort("TransportXXX_create() failed"); } }r²…�r³}r´(jÅUjÆj®ubaubjc)�rµ}r¶(jÅUjÆj–jÎjý jÐjfjÒ}r·(jÔ]jÕ]jÖ]j×]jÚ]ujÜKújÝhjÞ]r¸ji)�r¹}rº(jÅUjlKjÆjµjÎjý jÐjÜjÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�r¼}r½(jÅUjÆjá jÎjÏjÐjÑjÒ}r¾(jÔ]jÕ]jÖ]j×]r¿Unameserver-modulerÀajÚ]rÁjaaujÜKajÝhjÞ]rÂ(jà)�rÃ}rÄ(jÅXNameServer ModulerÅjÆj¼jÎjÏjÐjäjÒ}rÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÝhjÞ]rÇjçXNameServer ModulerÈ…�rÉ}rÊ(jÅjÅjÆjÃubaubj7)�rË}rÌ(jÅXIhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/NameServer_ModulejÆj¼jÎj:X;source/rtos/PDK_Platform_Software/IPC/NameServer_Module.incrÍ…�rÎ}rÏbjÐj>jÒ}rÐ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rÑjçXIhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/NameServer_ModulerÒ…�rÓ}rÔ(jÅUjÆjËubaubjÂ)�rÕ}rÖ(jÅXÊ.. |nsmCfg_Img1| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/index.html#ti/sdo/utils/NameServer.html jÆj¼jÎjÎjÐjHjÒ}r×(jÔ]jÕ]jÖ]j×]jÚ]rØX nsmCfg_Img1rÙaujÜKjÝhjÞ]rÚjû)�rÛ}rÜ(jÅjÙjÒ}rÝ(UrefuriXhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/index.html#ti/sdo/utils/NameServer.htmlrÞj×]jÖ]jÔ]jÕ]jÚ]ujÆjÕjÞ]rßjR)�rà}rá(jÅX¸Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/index.html#ti/sdo/utils/NameServer.htmlrâjÒ}rã(UuriXrtos/../images/Book_cfg.pngräj×]jÖ]jÔ]jÕ]jX}råU*jäsjÚ]UaltjÙujÆjÛjÞ]jÐjZubajÐjÿubaubjÂ)�ræ}rç(jÅX´.. |nsmCfg_Img2| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆj¼jÎjÎjÐjHjÒ}rè(jÔ]jÕ]jÖ]j×]jÚ]réX nsmCfg_Img2rêaujÜKjÝhjÞ]rëjû)�rì}rí(jÅjêjÒ}rî(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrïj×]jÖ]jÔ]jÕ]jÚ]ujÆjæjÞ]rðjR)�rñ}rò(jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrójÒ}rô(UuriXrtos/../images/Book_cfg.pngrõj×]jÖ]jÔ]jÕ]jX}röU*jõsjÚ]UaltjêujÆjìjÞ]jÐjZubajÐjÿubaubjÂ)�r÷}rø(jÅX½.. |nsmRun_Img1| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_name_server_8h.html jÆj¼jÎjÎjÐjHjÒ}rù(jÔ]jÕ]jÖ]j×]jÚ]rúX nsmRun_Img1rûaujÜK jÝhjÞ]rüjû)�rý}rþ(jÅjûjÒ}rÿ(UrefuriXrhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_name_server_8h.htmlrj×]jÖ]jÔ]jÕ]jÚ]ujÆj÷jÞ]rjR)�r}r(jÅX«Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_name_server_8h.htmlrjÒ}r(UuriXrtos/../images/Book_run.pngrj×]jÖ]jÔ]jÕ]jX}rU*jsjÚ]UaltjûujÆjýjÞ]jÐjZubajÐjÿubaubjÂ)�r}r (jÅX½.. |nsmRun_Img2| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_name_server_8h.html jÆj¼jÎjÎjÐjHjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]r X nsmRun_Img2r aujÜK jÝhjÞ]r jû)�r}r(jÅj jÒ}r(UrefuriXrhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_name_server_8h.htmlrj×]jÖ]jÔ]jÕ]jÚ]ujÆjjÞ]rjR)�r}r(jÅX«Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_name_server_8h.htmlrjÒ}r(UuriXrtos/../images/Book_run.pngrj×]jÖ]jÔ]jÕ]jX}rU*jsjÚ]Ualtj ujÆjjÞ]jÐjZubajÐjÿubaubjc)�r}r(jÅUjÆj¼jÎjÎjÐjfjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rji)�r}r(jÅUjlKjÆjjÎjÎjÐjÜjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubj3)�r }r!(jÅUjÆj¼jÎjÎjÐj6jÒ}r"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r#jy )�r$}r%(jÅUjÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj jÞ]r'j~ )�r(}r)(jÅUjÒ}r*(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj$jÞ]r+(jƒ )�r,}r-(jÅUjÒ}r.(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj(jÞ]jÐj‡ ubjƒ )�r/}r0(jÅUjÒ}r1(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj(jÞ]jÐj‡ ubj‹ )�r2}r3(jÅUjÒ}r4(jÔ]jÕ]jÖ]j×]jÚ]ujÆj(jÞ]r5j� )�r6}r7(jÅUjÒ}r8(jÔ]jÕ]jÖ]j×]jÚ]ujÆj2jÞ]r9j• )�r:}r;(jÅUjÒ}r<(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆj6jÞ]r=jò)�r>}r?(jÅXAPI Reference Linksr@jÆj:jÎjÎjÐjõjÒ}rA(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rBjçXAPI Reference LinksrC…�rD}rE(jÅj@jÆj>ubaubajÐj¢ ubajÐj£ ubajÐj¤ ubj¥ )�rF}rG(jÅUjÒ}rH(jÔ]jÕ]jÖ]j×]jÚ]ujÆj(jÞ]rIj� )�rJ}rK(jÅUjÒ}rL(jÔ]jÕ]jÖ]j×]jÚ]ujÆjFjÞ]rM(j• )�rN}rO(jÅUjÒ}rP(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJjÞ]rQjò)�rR}rS(jÅX |nsmCfg_Img1|rTjÆjNjÎjÎjÐjõjÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rVjû)�rW}rX(jÅjÙjÆjRjÎNjÐjÿjÒ}rY(UrefurijÞj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]rZjR)�r[}r\(jÅjâjÆjWjÎNjÐjZjÒ}r](UuriXrtos/../images/Book_cfg.pngr^j×]jÖ]jÔ]jÕ]jX}r_U*j^sjÚ]UaltjÙujÜNjÞ]ubaubaubajÐj¢ ubj• )�r`}ra(jÅUjÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJjÞ]rcjò)�rd}re(jÅX |nsmRun_Img1|rfjÆj`jÎjÎjÐjõjÒ}rg(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rhjû)�ri}rj(jÅjûjÆjdjÎNjÐjÿjÒ}rk(Urefurijj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]rljR)�rm}rn(jÅjjÆjijÎNjÐjZjÒ}ro(UuriXrtos/../images/Book_run.pngrpj×]jÖ]jÔ]jÕ]jX}rqU*jpsjÚ]UaltjûujÜNjÞ]ubaubaubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubajÐjÔ ubaubjò)�rr}rs(jÅXUThe NameServer module manages local name/value pairs. This enables an application and other modules to store and retrieve values based on a name. The NameServer module maintains thread-safety for its APIs. However, NameServer APIs cannot be called from an interrupt (that is, Hwi context). They can be called from Swis (BIOS-only) and Tasks.rtjÆj¼jÎjÎjÐjõjÒ}ru(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rvjçXUThe NameServer module manages local name/value pairs. This enables an application and other modules to store and retrieve values based on a name. The NameServer module maintains thread-safety for its APIs. However, NameServer APIs cannot be called from an interrupt (that is, Hwi context). They can be called from Swis (BIOS-only) and Tasks.rw…�rx}ry(jÅjtjÆjrubaubjò)�rz}r{(jÅXÚThis module supports different lengths of values. The NameServer_add() and NameServer_get() functions support variable-length values. The NameServer_addUInt32() function is optimized for UInt32 variables and constants.r|jÆj¼jÎjÎjÐjõjÒ}r}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r~jçXÚThis module supports different lengths of values. The NameServer_add() and NameServer_get() functions support variable-length values. The NameServer_addUInt32() function is optimized for UInt32 variables and constants.r…�r€}r�(jÅj|jÆjzubaubjò)�r‚}rƒ(jÅXˆThe NameServer module currently does not perform any endian or word size conversion. Also there is no asynchronous support at this time.r„jÆj¼jÎjÎjÐjõjÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r†jçXˆThe NameServer module currently does not perform any endian or word size conversion. Also there is no asynchronous support at this time.r‡…�rˆ}r‰(jÅj„jÆj‚ubaubjò)�rŠ}r‹(jÅXnYou can create NameServer instances dynamically. On BIOS, you can also create NameServer instances statically.rŒjÆj¼jÎjÎjÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rŽjçXnYou can create NameServer instances dynamically. On BIOS, you can also create NameServer instances statically.r�…�r�}r‘(jÅjŒjÆjŠubaubjÇ)�r’}r“(jÅUjÆj¼jÎjÎjÐjÑjÒ}r”(jÔ]jÕ]jÖ]j×]r•U2creating-nameserver-instances-statically-bios-onlyr–ajÚ]r—hÖaujÜK#jÝhjÞ]r˜(jà)�r™}rš(jÅX4Creating NameServer Instances Statically (BIOS-only)r›jÆj’jÎjÎjÐjäjÒ}rœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÝhjÞ]r�jçX4Creating NameServer Instances Statically (BIOS-only)rž…�rŸ}r (jÅj›jÆj™ubaubjò)�r¡}r¢(jÅX‚To create a NameServer instance statically, you can add statements similar to the following to your XDCtools configuration script:r£jÆj’jÎjÎjÐjõjÒ}r¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÝhjÞ]r¥jçX‚To create a NameServer instance statically, you can add statements similar to the following to your XDCtools configuration script:r¦…�r§}r¨(jÅj£jÆj¡ubaubj)�r©}rª(jÅXüvar NameServer = xdc.useModule('ti.sdo.utils.NameServer'); var nameServerParams = new NameServer.Params; nameServerParams.maxRuntimeEntries = 10; nameServerParams.maxNameLen = 32; var nameServer0 = NameServer.create("nameServer0"Â�, nameServerParams);jÆj’jÎjÎjÐjjÒ}r«(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM‹ jÝhjÞ]r¬jçXüvar NameServer = xdc.useModule('ti.sdo.utils.NameServer'); var nameServerParams = new NameServer.Params; nameServerParams.maxRuntimeEntries = 10; nameServerParams.maxNameLen = 32; var nameServer0 = NameServer.create("nameServer0"Â�, nameServerParams);r­…�r®}r¯(jÅUjÆj©ubaubjò)�r°}r±(jÅX•If you want to specify the heap to be used by the NameServer module and a NameServer instance, use configuration statements similar to the following:r²jÆj’jÎjÎjÐjõjÒ}r³(jÔ]jÕ]jÖ]j×]jÚ]ujÜK/jÝhjÞ]r´jçX•If you want to specify the heap to be used by the NameServer module and a NameServer instance, use configuration statements similar to the following:rµ…�r¶}r·(jÅj²jÆj°ubaubj)�r¸}r¹(jÅXzvar NameServer = xdc.useModule('ti.sdo.utils.NameServer'); var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); var heapParams = new HeapMem.Params; heapParams.size = 1024; var heapMem = HeapMem.create(heapParams); var nameServerParams = new NameServer.Params; nameServerParams.tableHeap = heapMem; var nameServer = NameServer.create("staticNameServer", nameServerParams);jÆj’jÎjÎjÐjjÒ}rº(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM— jÝhjÞ]r»jçXzvar NameServer = xdc.useModule('ti.sdo.utils.NameServer'); var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); var heapParams = new HeapMem.Params; heapParams.size = 1024; var heapMem = HeapMem.create(heapParams); var nameServerParams = new NameServer.Params; nameServerParams.tableHeap = heapMem; var nameServer = NameServer.create("staticNameServer", nameServerParams);r¼…�r½}r¾(jÅUjÆj¸ubaubjò)�r¿}rÀ(jÅX½To create a NameServer instance dynamically, initialize a NameServer_Params structure with NameServer_Params_init() and customize the values as needed. The parameters include the following:rÁjÆj’jÎjÎjÐjõjÒ}rÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK?jÝhjÞ]rÃjçX½To create a NameServer instance dynamically, initialize a NameServer_Params structure with NameServer_Params_init() and customize the values as needed. The parameters include the following:rÄ…�rÅ}rÆ(jÅjÁjÆj¿ubaubjt)�rÇ}rÈ(jÅUjÆj’jÎjÎjÐjwjÒ}rÉ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKCjÝhjÞ]rÊ(j{)�rË}rÌ(jÅXv**checkExisting.** If true, NameServer check to see if a name already exists in the name/value table before adding it.rÍjÆjÇjÎjÎjÐjjÒ}rÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÏjò)�rÐ}rÑ(jÅjÍjÆjËjÎjÎjÐjõjÒ}rÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÞ]rÓ(jÚ)�rÔ}rÕ(jÅX**checkExisting.**jÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐjÞ]r×jçXcheckExisting.rØ…�rÙ}rÚ(jÅUjÆjÔubajÐjâubjçXd If true, NameServer check to see if a name already exists in the name/value table before adding it.rÛ…�rÜ}rÝ(jÅXd If true, NameServer check to see if a name already exists in the name/value table before adding it.jÆjÐubeubaubj{)�rÞ}rß(jÅXZ**maxNameLen.** Specify the maximum length, in characters, of the name field in the table.ràjÆjÇjÎjÎjÐjjÒ}rá(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]râjò)�rã}rä(jÅjàjÆjÞjÎjÎjÐjõjÒ}rå(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]ræ(jÚ)�rç}rè(jÅX**maxNameLen.**jÒ}ré(jÔ]jÕ]jÖ]j×]jÚ]ujÆjãjÞ]rêjçX maxNameLen.rë…�rì}rí(jÅUjÆjçubajÐjâubjçXK Specify the maximum length, in characters, of the name field in the table.rî…�rï}rð(jÅXK Specify the maximum length, in characters, of the name field in the table.jÆjãubeubaubj{)�rñ}rò(jÅXÃ**maxRuntimeEntries.** Specify the maximum number of name/value pairs this table can hold. If you set this parameter to NameServer_ALLOWGROWTH, then NameServer allows dynamic growth of the table.rójÆjÇjÎjÎjÐjjÒ}rô(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rõjò)�rö}r÷(jÅjójÆjñjÎjÎjÐjõjÒ}rø(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÞ]rù(jÚ)�rú}rû(jÅX**maxRuntimeEntries.**jÒ}rü(jÔ]jÕ]jÖ]j×]jÚ]ujÆjöjÞ]rýjçXmaxRuntimeEntries.rþ…�rÿ}r(jÅUjÆjúubajÐjâubjçX­ Specify the maximum number of name/value pairs this table can hold. If you set this parameter to NameServer_ALLOWGROWTH, then NameServer allows dynamic growth of the table.r…�r}r(jÅX­ Specify the maximum number of name/value pairs this table can hold. If you set this parameter to NameServer_ALLOWGROWTH, then NameServer allows dynamic growth of the table.jÆjöubeubaubj{)�r}r(jÅXV**maxValueLen.** Specify the maximum length, in MAUs, of the value field in the table.rjÆjÇjÎjÎjÐjjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rjò)�r }r (jÅjjÆjjÎjÎjÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]r (jÚ)�r }r(jÅX**maxValueLen.**jÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆj jÞ]rjçX maxValueLen.r…�r}r(jÅUjÆj ubajÐjâubjçXF Specify the maximum length, in MAUs, of the value field in the table.r…�r}r(jÅXF Specify the maximum length, in MAUs, of the value field in the table.jÆj ubeubaubj{)�r}r(jÅX­**tableHeap.** The heap to allocate the name/value table from when allocating dynamically. If this parameter is NULL, the heap used for object allocation is also used here. jÆjÇjÎjÎjÐjjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rjò)�r}r(jÅX¬**tableHeap.** The heap to allocate the name/value table from when allocating dynamically. If this parameter is NULL, the heap used for object allocation is also used here.jÆjjÎjÎjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÞ]r(jÚ)�r}r (jÅX**tableHeap.**jÒ}r!(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r"jçX tableHeap.r#…�r$}r%(jÅUjÆjubajÐjâubjçXž The heap to allocate the name/value table from when allocating dynamically. If this parameter is NULL, the heap used for object allocation is also used here.r&…�r'}r((jÅXž The heap to allocate the name/value table from when allocating dynamically. If this parameter is NULL, the heap used for object allocation is also used here.jÆjubeubaubeubjò)�r)}r*(jÅXƒAfter setting parameters, use NameServer_create() to create an instance. Each NameServer instance manages its own name/value table.r+jÆj’jÎjÎjÐjõjÒ}r,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÝhjÞ]r-jçXƒAfter setting parameters, use NameServer_create() to create an instance. Each NameServer instance manages its own name/value table.r.…�r/}r0(jÅj+jÆj)ubaubjò)�r1}r2(jÅXØ|nsmCfg_Img2| The latest version of the NameServer module configuration documentation is available `online `_.jÆj’jÎjÎjÐjõjÒ}r3(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÝhjÞ]r4(jû)�r5}r6(jÅjêjÆj1jÎNjÐjÿjÒ}r7(Urefurijïj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]r8jR)�r9}r:(jÅjójÆj5jÎNjÐjZjÒ}r;(UuriXrtos/../images/Book_cfg.pngr<j×]jÖ]jÔ]jÕ]jX}r=U*j<sjÚ]UaltjêujÜNjÞ]ubaubjçXV The latest version of the NameServer module configuration documentation is available r>…�r?}r@(jÅXV The latest version of the NameServer module configuration documentation is available jÆj1ubjû)�rA}rB(jÅXt`online `_jÒ}rC(UnameXonlinerDjXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrEj×]jÖ]jÔ]jÕ]jÚ]ujÆj1jÞ]rFjçXonlinerG…�rH}rI(jÅUjÆjAubajÐjÿubj)�rJ}rK(jÅXk jKjÆj1jÐj jÒ}rL(UrefurijEj×]rMUid9rNajÖ]jÔ]rOjDajÕ]jÚ]ujÞ]ubjçX.…�rP}rQ(jÅX.jÆj1ubeubeubjÇ)�rR}rS(jÅUjÆj¼jÎjÎjÐjÑjÒ}rT(jÔ]jÕ]jÖ]j×]rUU6creating-and-removing-nameserver-instances-dynamicallyrVajÚ]rWh„aujÜKPjÝhjÞ]rX(jà)�rY}rZ(jÅX6Creating and Removing NameServer Instances Dynamicallyr[jÆjRjÎjÎjÐjäjÒ}r\(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÝhjÞ]r]jçX6Creating and Removing NameServer Instances Dynamicallyr^…�r_}r`(jÅj[jÆjYubaubjò)�ra}rb(jÅXThe following C example creates a NameServer instance dynamically. The instance allows a maximum of 10 runtime entries (instead of using ALLOWGROWTH). This example also specifies where to allocate the memory needed for the tables (instead of using the default).rcjÆjRjÎjÎjÐjõjÒ}rd(jÔ]jÕ]jÖ]j×]jÚ]ujÜKQjÝhjÞ]rejçXThe following C example creates a NameServer instance dynamically. The instance allows a maximum of 10 runtime entries (instead of using ALLOWGROWTH). This example also specifies where to allocate the memory needed for the tables (instead of using the default).rf…�rg}rh(jÅjcjÆjaubaubj)�ri}rj(jÅXNameServer_Handle NSHandle; NameServer_Params params; NameServer_Params_init(¶ms); params.tableHeap = HeapStd_Handle_upCast(myHeap); params.maxRuntimeEntries = 10; NSHandle = NameServer_create("myTable", ¶ms); if (NSHandle == NULL) { // manage error }jÆjRjÎjÎjÐjjÒ}rk(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMº jÝhjÞ]rljçXNameServer_Handle NSHandle; NameServer_Params params; NameServer_Params_init(¶ms); params.tableHeap = HeapStd_Handle_upCast(myHeap); params.maxRuntimeEntries = 10; NSHandle = NameServer_create("myTable", ¶ms); if (NSHandle == NULL) { // manage error }rm…�rn}ro(jÅUjÆjiubaubjò)�rp}rq(jÅX9This example C code adds and removes entries at run-time:rrjÆjRjÎjÎjÐjõjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÝhjÞ]rtjçX9This example C code adds and removes entries at run-time:ru…�rv}rw(jÅjrjÆjpubaubj)�rx}ry(jÅXºPtr key; key = NameServer_addUInt32(NSHandle, "volume", 5); if (key == NULL) { // manage error } NameServer_removeEntry(NSHandle, key); // or NameServer_remove(NSHandle, "volume");jÆjRjÎjÎjÐjjÒ}rz(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÉ jÝhjÞ]r{jçXºPtr key; key = NameServer_addUInt32(NSHandle, "volume", 5); if (key == NULL) { // manage error } NameServer_removeEntry(NSHandle, key); // or NameServer_remove(NSHandle, "volume");r|…�r}}r~(jÅUjÆjxubaubjò)�r}r€(jÅXá|nsmRun_Img2| The latest version of the NameServer module run-time API documentation is available `online `_.jÆjRjÎjÎjÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜKrjÝhjÞ]r‚(jû)�rƒ}r„(jÅj jÆjjÎNjÐjÿjÒ}r…(Urefurijj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]r†jR)�r‡}rˆ(jÅjjÆjƒjÎNjÐjZjÒ}r‰(UuriXrtos/../images/Book_run.pngrŠj×]jÖ]jÔ]jÕ]jX}r‹U*jŠsjÚ]Ualtj ujÜNjÞ]ubaubjçXU The latest version of the NameServer module run-time API documentation is available rŒ…�r�}rŽ(jÅXU The latest version of the NameServer module run-time API documentation is available jÆjubjû)�r�}r�(jÅX~`online `_jÒ}r‘(UnameXonliner’jXrhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_name_server_8h.htmlr“j×]jÖ]jÔ]jÕ]jÚ]ujÆjjÞ]r”jçXonliner•…�r–}r—(jÅUjÆj�ubajÐjÿubj)�r˜}r™(jÅXu jKjÆjjÐj jÒ}rš(Urefurij“j×]r›Uid10rœajÖ]jÔ]r�j’ajÕ]jÚ]ujÞ]ubjçX.…�rž}rŸ(jÅX.jÆjubeubeubjÇ)�r }r¡(jÅUjÆj¼jÎjÎjÐjÑjÒ}r¢(jÔ]jÕ]jÖ]j×]r£Usearching-nameserver-instancesr¤ajÚ]r¥haujÜKwjÝhjÞ]r¦(jà)�r§}r¨(jÅXSearching NameServer Instancesr©jÆj jÎjÎjÐjäjÒ}rª(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÝhjÞ]r«jçXSearching NameServer Instancesr¬…�r­}r®(jÅj©jÆj§ubaubjò)�r¯}r°(jÅXÐThe following example searches the NameServer instance pointed to by "handle" on the specified processor for a name-value pair with the name stored in nameToFind. It returns the value of the pair to valueBuf.r±jÆj jÎjÎjÐjõjÒ}r²(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÝhjÞ]r³jçXÐThe following example searches the NameServer instance pointed to by "handle" on the specified processor for a name-value pair with the name stored in nameToFind. It returns the value of the pair to valueBuf.r´…�rµ}r¶(jÅj±jÆj¯ubaubj)�r·}r¸(jÅXh/* Search NameServer */ status = NameServer_get(NSHandle, nameToFind, valueBuf, sizeof(UInt32), procId);jÆj jÎjÎjÐjjÒ}r¹(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMá jÝhjÞ]rºjçXh/* Search NameServer */ status = NameServer_get(NSHandle, nameToFind, valueBuf, sizeof(UInt32), procId);r»…�r¼}r½(jÅUjÆj·ubaubjò)�r¾}r¿(jÅXlUsing different parameters for different table instances allows you to meet requirements like the following:rÀjÆj jÎjÎjÐjõjÒ}rÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rÂjçXlUsing different parameters for different table instances allows you to meet requirements like the following:rÃ…�rÄ}rÅ(jÅjÀjÆj¾ubaubjt)�rÆ}rÇ(jÅUjÆj jÎjÎjÐjwjÒ}rÈ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK„jÝhjÞ]rÉ(j{)�rÊ}rË(jÅX**Size differences.** The maxValueLen parameter specifies the maximum length, in MAUs, of the value field in the table. One table could allow long values (for example, > 32 bits), while another table could be used to store integers. This customization enables better memory usage.rÌjÆjÆjÎjÎjÐjjÒ}rÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÎjò)�rÏ}rÐ(jÅjÌjÆjÊjÎjÎjÐjõjÒ}rÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]rÒ(jÚ)�rÓ}rÔ(jÅX**Size differences.**jÒ}rÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÏjÞ]rÖjçXSize differences.r×…�rØ}rÙ(jÅUjÆjÓubajÐjâubjçX The maxValueLen parameter specifies the maximum length, in MAUs, of the value field in the table. One table could allow long values (for example, > 32 bits), while another table could be used to store integers. This customization enables better memory usage.rÚ…�rÛ}rÜ(jÅX The maxValueLen parameter specifies the maximum length, in MAUs, of the value field in the table. One table could allow long values (for example, > 32 bits), while another table could be used to store integers. This customization enables better memory usage.jÆjÏubeubaubj{)�rÝ}rÞ(jÅXj**Performance.** Multiple NameServer tables can improve the search time when retrieving a name/value pair.rßjÆjÆjÎjÎjÐjjÒ}rà(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rájò)�râ}rã(jÅjßjÆjÝjÎjÎjÐjõjÒ}rä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÞ]rå(jÚ)�ræ}rç(jÅX**Performance.**jÒ}rè(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâjÞ]réjçX Performance.rê…�rë}rì(jÅUjÆjæubajÐjâubjçXZ Multiple NameServer tables can improve the search time when retrieving a name/value pair.rí…�rî}rï(jÅXZ Multiple NameServer tables can improve the search time when retrieving a name/value pair.jÆjâubeubaubj{)�rð}rñ(jÅXx**Relax name uniqueness.** Names in a specific table must be unique, but the same name can be used in different tables. jÆjÆjÎjÎjÐjjÒ}rò(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rójò)�rô}rõ(jÅXw**Relax name uniqueness.** Names in a specific table must be unique, but the same name can be used in different tables.jÆjðjÎjÎjÐjõjÒ}rö(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]r÷(jÚ)�rø}rù(jÅX**Relax name uniqueness.**jÒ}rú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjôjÞ]rûjçXRelax name uniqueness.rü…�rý}rþ(jÅUjÆjøubajÐjâubjçX] Names in a specific table must be unique, but the same name can be used in different tables.rÿ…�r}r(jÅX] Names in a specific table must be unique, but the same name can be used in different tables.jÆjôubeubaubeubjò)�r}r(jÅX³When you call NameServer_delete(), the memory for the name/values pairs is freed. You do not need to call NameServer_remove() on the entries before deleting a NameServer instance.rjÆj jÎjÎjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÝhjÞ]rjçX³When you call NameServer_delete(), the memory for the name/values pairs is freed. You do not need to call NameServer_remove() on the entries before deleting a NameServer instance.r…�r}r (jÅjjÆjubaubeubjÇ)�r }r (jÅUjÆj¼jÎjÎjÐjÑjÒ}r (jÔ]jÕ]jÖ]j×]r Uother-nameserver-apisrajÚ]rj6aujÜKŒjÝhjÞ]r(jà)�r}r(jÅXOther NameServer APIsrjÆj jÎjÎjÐjäjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÝhjÞ]rjçXOther NameServer APIsr…�r}r(jÅjjÆjubaubjò)�r}r(jÅX`In addition to the functions mentioned above, the NameServer module provides the following APIs:rjÆj jÎjÎjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rjçX`In addition to the functions mentioned above, the NameServer module provides the following APIs:r…�r}r (jÅjjÆjubaubjt)�r!}r"(jÅUjÆj jÎjÎjÐjwjÒ}r#(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK�jÝhjÞ]r$(j{)�r%}r&(jÅXi**NameServer_get()** Retrieves the value portion of a local name/value pair from the specified processor.r'jÆj!jÎjÎjÐjjÒ}r((jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r)jò)�r*}r+(jÅj'jÆj%jÎjÎjÐjõjÒ}r,(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]r-(jÚ)�r.}r/(jÅX**NameServer_get()**jÒ}r0(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*jÞ]r1jçXNameServer_get()r2…�r3}r4(jÅUjÆj.ubajÐjâubjçXU Retrieves the value portion of a local name/value pair from the specified processor.r5…�r6}r7(jÅXU Retrieves the value portion of a local name/value pair from the specified processor.jÆj*ubeubaubj{)�r8}r9(jÅXQ**NameServer_getLocal()** Retrieves the value portion of a local name/value pair.r:jÆj!jÎjÎjÐjjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r<jò)�r=}r>(jÅj:jÆj8jÎjÎjÐjõjÒ}r?(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]r@(jÚ)�rA}rB(jÅX**NameServer_getLocal()**jÒ}rC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj=jÞ]rDjçXNameServer_getLocal()rE…�rF}rG(jÅUjÆjAubajÐjâubjçX8 Retrieves the value portion of a local name/value pair.rH…�rI}rJ(jÅX8 Retrieves the value portion of a local name/value pair.jÆj=ubeubaubj{)�rK}rL(jÅXN**NameServer_remove()** Removes a name/value pair from the table given a name.rMjÆj!jÎjÎjÐjjÒ}rN(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rOjò)�rP}rQ(jÅjMjÆjKjÎjÎjÐjõjÒ}rR(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‘jÞ]rS(jÚ)�rT}rU(jÅX**NameServer_remove()**jÒ}rV(jÔ]jÕ]jÖ]j×]jÚ]ujÆjPjÞ]rWjçXNameServer_remove()rX…�rY}rZ(jÅUjÆjTubajÐjâubjçX7 Removes a name/value pair from the table given a name.r[…�r\}r](jÅX7 Removes a name/value pair from the table given a name.jÆjPubeubaubj{)�r^}r_(jÅXZ**NameServer_removeEntry()** Removes an entry from the table given a pointer to an entry. jÆj!jÎjÎjÐjjÒ}r`(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rajò)�rb}rc(jÅXY**NameServer_removeEntry()** Removes an entry from the table given a pointer to an entry.jÆj^jÎjÎjÐjõjÒ}rd(jÔ]jÕ]jÖ]j×]jÚ]ujÜK’jÞ]re(jÚ)�rf}rg(jÅX**NameServer_removeEntry()**jÒ}rh(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbjÞ]rijçXNameServer_removeEntry()rj…�rk}rl(jÅUjÆjfubajÐjâubjçX= Removes an entry from the table given a pointer to an entry.rm…�rn}ro(jÅX= Removes an entry from the table given a pointer to an entry.jÆjbubeubaubeubjò)�rp}rq(jÅXìNameServer maintains the name/values table in local memory, not in shared memory. However the NameServer module can be used in a multiprocessor system. The module communicates with other processors via NameServer Remote drivers, which are implementations of the INameServerRemote interface. The communication to the other processors is dependent on the Remote drivers implementation. When a remote driver is created, it registers with NameServer via the NameServer_registerRemoteDriver() API.rrjÆj jÎjÎjÐjõjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÜK”jÝhjÞ]rtjçXìNameServer maintains the name/values table in local memory, not in shared memory. However the NameServer module can be used in a multiprocessor system. The module communicates with other processors via NameServer Remote drivers, which are implementations of the INameServerRemote interface. The communication to the other processors is dependent on the Remote drivers implementation. When a remote driver is created, it registers with NameServer via the NameServer_registerRemoteDriver() API.ru…�rv}rw(jÅjrjÆjpubaubjò)�rx}ry(jÅXåThe NameServer module uses the MultiProc module to identify different processors. Which remote processors to query and the order in which they are queried is determined by the procId array passed to the NameServer_get() function.rzjÆj jÎjÎjÐjõjÒ}r{(jÔ]jÕ]jÖ]j×]jÚ]ujÜK›jÝhjÞ]r|jçXåThe NameServer module uses the MultiProc module to identify different processors. Which remote processors to query and the order in which they are queried is determined by the procId array passed to the NameServer_get() function.r}…�r~}r(jÅjzjÆjxubaubeubeubeubjÇ)�r€}r�(jÅUjÆjÌjÎjÏjÐjÑjÒ}r‚(jÔ]jÕ]jÖ]j×]rƒUoptimizing-ipc-applicationsr„ajÚ]r…h—aujÜKfjÝhjÞ]r†(jà)�r‡}rˆ(jÅXOptimizing IPC Applicationsr‰jÆj€jÎjÏjÐjäjÒ}rŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÝhjÞ]r‹jçXOptimizing IPC ApplicationsrŒ…�r�}rŽ(jÅj‰jÆj‡ubaubj7)�r�}r�(jÅXShttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/Optimizing_IPC_ApplicationsjÆj€jÎj:XIsource/rtos/PDK_Platform_Software/IPC/Optimizing_IPC_Applications.rst.incr‘…�r’}r“bjÐj>jÒ}r”(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r•jçXShttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/Optimizing_IPC_Applicationsr–…�r—}r˜(jÅUjÆj�ubaubjÇ)�r™}rš(jÅUjÆj€jÎj’jÐjÑjÒ}r›(jÔ]jÕ]jÖ]j×]rœU compiler-and-linker-optimizationr�ajÚ]ržh…�r?}r@(jÅj;jÆj9ubaubajÐj¢ ubj• )�rA}rB(jÅUjÒ}rC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%jÞ]rDjò)�rE}rF(jÅXLoggingrGjÆjAjÎj’jÐjõjÒ}rH(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rIjçXLoggingrJ…�rK}rL(jÅjGjÆjEubaubajÐj¢ ubj• )�rM}rN(jÅUjÒ}rO(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%jÞ]rPjò)�rQ}rR(jÅX Code SizerSjÆjMjÎj’jÐjõjÒ}rT(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rUjçX Code SizerV…�rW}rX(jÅjSjÆjQubaubajÐj¢ ubj• )�rY}rZ(jÅUjÒ}r[(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%jÞ]r\jò)�r]}r^(jÅXRun-Time Performancer_jÆjYjÎj’jÐjõjÒ}r`(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rajçXRun-Time Performancerb…�rc}rd(jÅj_jÆj]ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�re}rf(jÅUjÒ}rg(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rh(j� )�ri}rj(jÅUjÒ}rk(jÔ]jÕ]jÖ]j×]jÚ]ujÆjejÞ]rl(j• )�rm}rn(jÅUjÒ}ro(jÔ]jÕ]jÖ]j×]jÚ]ujÆjijÞ]rpjò)�rq}rr(jÅX+Instrumente d (BIOS.LibTy pe_Instrume nted)rsjÆjmjÎj’jÐjõjÒ}rt(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÞ]rujçX+Instrumente d (BIOS.LibTy pe_Instrume nted)rv…�rw}rx(jÅjsjÆjqubaubajÐj¢ ubj• )�ry}rz(jÅUjÒ}r{(jÔ]jÕ]jÖ]j×]jÚ]ujÆjijÞ]r|jò)�r}}r~(jÅXFastrjÆjyjÎj’jÐjõjÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÞ]r�jçXFastr‚…�rƒ}r„(jÅjjÆj}ubaubajÐj¢ ubj• )�r…}r†(jÅUjÒ}r‡(jÔ]jÕ]jÖ]j×]jÚ]ujÆjijÞ]rˆjò)�r‰}rŠ(jÅXOnr‹jÆj…jÎj’jÐjõjÒ}rŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÞ]r�jçXOnrŽ…�r�}r�(jÅj‹jÆj‰ubaubajÐj¢ ubj• )�r‘}r’(jÅUjÒ}r“(jÔ]jÕ]jÖ]j×]jÚ]ujÆjijÞ]r”jò)�r•}r–(jÅXGoodr—jÆj‘jÎj’jÐjõjÒ}r˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÞ]r™jçXGoodrš…�r›}rœ(jÅj—jÆj•ubaubajÐj¢ ubj• )�r�}rž(jÅUjÒ}rŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjijÞ]r jò)�r¡}r¢(jÅXGoodr£jÆj�jÎj’jÐjõjÒ}r¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÞ]r¥jçXGoodr¦…�r§}r¨(jÅj£jÆj¡ubaubajÐj¢ ubejÐj£ ubj� )�r©}rª(jÅUjÒ}r«(jÔ]jÕ]jÖ]j×]jÚ]ujÆjejÞ]r¬(j• )�r­}r®(jÅUjÒ}r¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©jÞ]r°jò)�r±}r²(jÅX2Non-Instrum ented (BIOS.LibTy pe_NonInstr umented)r³jÆj­jÎj’jÐjõjÒ}r´(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÞ]rµjçX2Non-Instrum ented (BIOS.LibTy pe_NonInstr umented)r¶…�r·}r¸(jÅj³jÆj±ubaubajÐj¢ ubj• )�r¹}rº(jÅUjÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©jÞ]r¼jò)�r½}r¾(jÅXFastr¿jÆj¹jÎj’jÐjõjÒ}rÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÞ]rÁjçXFastrÂ…�rÃ}rÄ(jÅj¿jÆj½ubaubajÐj¢ ubj• )�rÅ}rÆ(jÅUjÒ}rÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©jÞ]rÈjò)�rÉ}rÊ(jÅXOffrËjÆjÅjÎj’jÐjõjÒ}rÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÞ]rÍjçXOffrÎ…�rÏ}rÐ(jÅjËjÆjÉubaubajÐj¢ ubj• )�rÑ}rÒ(jÅUjÒ}rÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©jÞ]rÔjò)�rÕ}rÖ(jÅXBetterr×jÆjÑjÎj’jÐjõjÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÞ]rÙjçXBetterrÚ…�rÛ}rÜ(jÅj×jÆjÕubaubajÐj¢ ubj• )�rÝ}rÞ(jÅUjÒ}rß(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©jÞ]ràjò)�rá}râ(jÅXBetterrãjÆjÝjÎj’jÐjõjÒ}rä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÞ]råjçXBetterræ…�rç}rè(jÅjãjÆjáubaubajÐj¢ ubejÐj£ ubj� )�ré}rê(jÅUjÒ}rë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjejÞ]rì(j• )�rí}rî(jÅUjÒ}rï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéjÞ]rðjò)�rñ}rò(jÅXCustom (BIOS.LibTy pe_Custom)rójÆjíjÎj’jÐjõjÒ}rô(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÞ]rõjçXCustom (BIOS.LibTy pe_Custom)rö…�r÷}rø(jÅjójÆjñubaubajÐj¢ ubj• )�rù}rú(jÅUjÒ}rû(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéjÞ]rüjò)�rý}rþ(jÅXFast (slow first time)rÿjÆjùjÎj’jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÞ]rjçXFast (slow first time)r…�r}r(jÅjÿjÆjýubaubajÐj¢ ubj• )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéjÞ]rjò)�r }r (jÅX As configuredr jÆjjÎj’jÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÞ]r jçX As configuredr…�r}r(jÅj jÆj ubaubajÐj¢ ubj• )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéjÞ]rjò)�r}r(jÅXBestrjÆjjÎj’jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÞ]rjçXBestr…�r}r(jÅjjÆjubaubajÐj¢ ubj• )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéjÞ]r jò)�r!}r"(jÅXBestr#jÆjjÎj’jÐjõjÒ}r$(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÞ]r%jçXBestr&…�r'}r((jÅj#jÆj!ubaubajÐj¢ ubejÐj£ ubj� )�r)}r*(jÅUjÒ}r+(jÔ]jÕ]jÖ]j×]jÚ]ujÆjejÞ]r,(j• )�r-}r.(jÅUjÒ}r/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)jÞ]r0jò)�r1}r2(jÅXDebug (BIOS.LibTy pe_Debug)r3jÆj-jÎj’jÐjõjÒ}r4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÞ]r5jçXDebug (BIOS.LibTy pe_Debug)r6…�r7}r8(jÅj3jÆj1ubaubajÐj¢ ubj• )�r9}r:(jÅUjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)jÞ]r<jò)�r=}r>(jÅXSlowerr?jÆj9jÎj’jÐjõjÒ}r@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÞ]rAjçXSlowerrB…�rC}rD(jÅj?jÆj=ubaubajÐj¢ ubj• )�rE}rF(jÅUjÒ}rG(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)jÞ]rHjò)�rI}rJ(jÅX As configuredrKjÆjEjÎj’jÐjõjÒ}rL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÞ]rMjçX As configuredrN…�rO}rP(jÅjKjÆjIubaubajÐj¢ ubj• )�rQ}rR(jÅUjÒ}rS(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)jÞ]jÐj¢ ubj• )�rT}rU(jÅUjÒ}rV(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)jÞ]jÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjt)�rW}rX(jÅUjÆj™jÎj’jÐjwjÒ}rY(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKFjÝhjÞ]rZ(j{)�r[}r\(jÅX€**Instrumented.** (default) This option links with pre-built SYS/BIOS (and IPC) libraries that have instrumentation available. All Asserts and Diags settings are checked. Your configuration file can enable or disable various Diags and logging related settings. However, note that the checks to see if Diags are enabled before outputting a Log event are always performed, which has an impact on performance even if you use the ALWAYS_ON or ALWAYS_OFF setting. The resulting code size when using this option may be too large to fit on some targets, such as C28x and MSP430. This option is easy to use and debug and provides a fast build time.jÆjWjÎj’jÐjjÒ}r](jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r^jò)�r_}r`(jÅX€**Instrumented.** (default) This option links with pre-built SYS/BIOS (and IPC) libraries that have instrumentation available. All Asserts and Diags settings are checked. Your configuration file can enable or disable various Diags and logging related settings. However, note that the checks to see if Diags are enabled before outputting a Log event are always performed, which has an impact on performance even if you use the ALWAYS_ON or ALWAYS_OFF setting. The resulting code size when using this option may be too large to fit on some targets, such as C28x and MSP430. This option is easy to use and debug and provides a fast build time.jÆj[jÎj’jÐjõjÒ}ra(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]rb(jÚ)�rc}rd(jÅX**Instrumented.**jÒ}re(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_jÞ]rfjçX Instrumented.rg…�rh}ri(jÅUjÆjcubajÐjâubjçXo (default) This option links with pre-built SYS/BIOS (and IPC) libraries that have instrumentation available. All Asserts and Diags settings are checked. Your configuration file can enable or disable various Diags and logging related settings. However, note that the checks to see if Diags are enabled before outputting a Log event are always performed, which has an impact on performance even if you use the ALWAYS_ON or ALWAYS_OFF setting. The resulting code size when using this option may be too large to fit on some targets, such as C28x and MSP430. This option is easy to use and debug and provides a fast build time.rj…�rk}rl(jÅXo (default) This option links with pre-built SYS/BIOS (and IPC) libraries that have instrumentation available. All Asserts and Diags settings are checked. Your configuration file can enable or disable various Diags and logging related settings. However, note that the checks to see if Diags are enabled before outputting a Log event are always performed, which has an impact on performance even if you use the ALWAYS_ON or ALWAYS_OFF setting. The resulting code size when using this option may be too large to fit on some targets, such as C28x and MSP430. This option is easy to use and debug and provides a fast build time.jÆj_ubeubaubj{)�rm}rn(jÅXò**Non-Instrumented.** This option links with pre-built SYS/BIOS (and IPC) libraries that have instrumentation turned off. No Assert or Diag settings are checked, and logging information is not available at run-time. The checking for Asserts and Diags is compiled out of the libraries, so run-time performance and code size are optimized. Checking of Error_Blocks and handling errors in ways other than logging an event are still supported. This option is easy to use and provides a fast build time.jÆjWjÎj’jÐjjÒ}ro(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rpjò)�rq}rr(jÅXò**Non-Instrumented.** This option links with pre-built SYS/BIOS (and IPC) libraries that have instrumentation turned off. No Assert or Diag settings are checked, and logging information is not available at run-time. The checking for Asserts and Diags is compiled out of the libraries, so run-time performance and code size are optimized. Checking of Error_Blocks and handling errors in ways other than logging an event are still supported. This option is easy to use and provides a fast build time.jÆjmjÎj’jÐjõjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÞ]rt(jÚ)�ru}rv(jÅX**Non-Instrumented.**jÒ}rw(jÔ]jÕ]jÖ]j×]jÚ]ujÆjqjÞ]rxjçXNon-Instrumented.ry…�rz}r{(jÅUjÆjuubajÐjâubjçXÝ This option links with pre-built SYS/BIOS (and IPC) libraries that have instrumentation turned off. No Assert or Diag settings are checked, and logging information is not available at run-time. The checking for Asserts and Diags is compiled out of the libraries, so run-time performance and code size are optimized. Checking of Error_Blocks and handling errors in ways other than logging an event are still supported. This option is easy to use and provides a fast build time.r|…�r}}r~(jÅXÝ This option links with pre-built SYS/BIOS (and IPC) libraries that have instrumentation turned off. No Assert or Diag settings are checked, and logging information is not available at run-time. The checking for Asserts and Diags is compiled out of the libraries, so run-time performance and code size are optimized. Checking of Error_Blocks and handling errors in ways other than logging an event are still supported. This option is easy to use and provides a fast build time.jÆjqubeubaubj{)�r}r€(jÅXÓ**Custom.** This option builds custom versions of the SYS/BIOS (and IPC) libraries that contain the modules and APIs that your application needs to access. If you have not used a particular module in your .cfg file or your C code (and it is not required internally by a SYS/BIOS module that is used), that module is not contained in the custom libraries compiled for your application. This option provides the best run-time performance and best code size given the needs of your application. Instrumentation is available to whatever extent your application configures it. The first time you build a project with the custom libType, the build will be longer. The custom libraries are stored in the "src" directory of your project. Subsequent builds may be faster; libraries do not need to be rebuilt unless you change one of the few configuration properties that affect the build settings, or you use an additional module that wasn't already used in the previous configuration.: jÆjWjÎj’jÐjjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‚(jò)�rƒ}r„(jÅX;**Custom.** This option builds custom versions of the SYS/BIOS (and IPC) libraries that contain the modules and APIs that your application needs to access. If you have not used a particular module in your .cfg file or your C code (and it is not required internally by a SYS/BIOS module that is used), that module is not contained in the custom libraries compiled for your application. This option provides the best run-time performance and best code size given the needs of your application. Instrumentation is available to whatever extent your application configures it.jÆjjÎj’jÐjõjÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]r†(jÚ)�r‡}rˆ(jÅX **Custom.**jÒ}r‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆjƒjÞ]rŠjçXCustom.r‹…�rŒ}r�(jÅUjÆj‡ubajÐjâubjçX0 This option builds custom versions of the SYS/BIOS (and IPC) libraries that contain the modules and APIs that your application needs to access. If you have not used a particular module in your .cfg file or your C code (and it is not required internally by a SYS/BIOS module that is used), that module is not contained in the custom libraries compiled for your application. This option provides the best run-time performance and best code size given the needs of your application. Instrumentation is available to whatever extent your application configures it.rŽ…�r�}r�(jÅX0 This option builds custom versions of the SYS/BIOS (and IPC) libraries that contain the modules and APIs that your application needs to access. If you have not used a particular module in your .cfg file or your C code (and it is not required internally by a SYS/BIOS module that is used), that module is not contained in the custom libraries compiled for your application. This option provides the best run-time performance and best code size given the needs of your application. Instrumentation is available to whatever extent your application configures it.jÆjƒubeubjò)�r‘}r’(jÅX•The first time you build a project with the custom libType, the build will be longer. The custom libraries are stored in the "src" directory of your project. Subsequent builds may be faster; libraries do not need to be rebuilt unless you change one of the few configuration properties that affect the build settings, or you use an additional module that wasn't already used in the previous configuration.:r“jÆjjÎj’jÐjõjÒ}r”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]r•jçX•The first time you build a project with the custom libType, the build will be longer. The custom libraries are stored in the "src" directory of your project. Subsequent builds may be faster; libraries do not need to be rebuilt unless you change one of the few configuration properties that affect the build settings, or you use an additional module that wasn't already used in the previous configuration.:r–…�r—}r˜(jÅj“jÆj‘ubaubeubeubjë)�r™}rš(jÅX,If you disable SYS/BIOS Task or Swi scheduling, you must use the "custom" option in order to successfully link your application. The custom option uses program optimization that removes many initialized constants and small code fragments (often "glue" code) from the final executable image. Such classic optimizations as constant folding and function inlining are used, including across module boundaries. The custom build preserves enough debug information to make it still possible to step through the optimized code in CCS and locate global variables.:jÆj™jÎj’jÐjïjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rœ(jò)�r�}rž(jÅX€If you disable SYS/BIOS Task or Swi scheduling, you must use the "custom" option in order to successfully link your application.rŸjÆj™jÎj’jÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]r¡jçX€If you disable SYS/BIOS Task or Swi scheduling, you must use the "custom" option in order to successfully link your application.r¢…�r£}r¤(jÅjŸjÆj�ubaubjò)�r¥}r¦(jÅXªThe custom option uses program optimization that removes many initialized constants and small code fragments (often "glue" code) from the final executable image. Such classic optimizations as constant folding and function inlining are used, including across module boundaries. The custom build preserves enough debug information to make it still possible to step through the optimized code in CCS and locate global variables.:r§jÆj™jÎj’jÐjõjÒ}r¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]r©jçXªThe custom option uses program optimization that removes many initialized constants and small code fragments (often "glue" code) from the final executable image. Such classic optimizations as constant folding and function inlining are used, including across module boundaries. The custom build preserves enough debug information to make it still possible to step through the optimized code in CCS and locate global variables.:rª…�r«}r¬(jÅj§jÆj¥ubaubeubjt)�r­}r®(jÅUjÆj™jÎj’jÐjwjÒ}r¯(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKwjÝhjÞ]r°j{)�r±}r²(jÅXl**Debug.** This option is not recommended; it is intended for internal use by Texas Instruments developers. jÆj­jÎj’jÐjjÒ}r³(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r´jò)�rµ}r¶(jÅXk**Debug.** This option is not recommended; it is intended for internal use by Texas Instruments developers.jÆj±jÎj’jÐjõjÒ}r·(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]r¸(jÚ)�r¹}rº(jÅX **Debug.**jÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµjÞ]r¼jçXDebug.r½…�r¾}r¿(jÅUjÆj¹ubajÐjâubjçXa This option is not recommended; it is intended for internal use by Texas Instruments developers.rÀ…�rÁ}rÂ(jÅXa This option is not recommended; it is intended for internal use by Texas Instruments developers.jÆjµubeubaubaubjò)�rÃ}rÄ(jÅXMThe following example statements set the BIOS.libType configuration property:rÅjÆj™jÎj’jÐjõjÒ}rÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÝhjÞ]rÇjçXMThe following example statements set the BIOS.libType configuration property:rÈ…�rÉ}rÊ(jÅjÅjÆjÃubaubj)�rË}rÌ(jÅXPvar BIOS = xdc.useModule('ti.sysbios.BIOS'); BIOS.libType = BIOS.LibType_Custom;jÆj™jÎj’jÐjjÒ}rÍ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMˆ jÝhjÞ]rÎjçXPvar BIOS = xdc.useModule('ti.sysbios.BIOS'); BIOS.libType = BIOS.LibType_Custom;rÏ…�rÐ}rÑ(jÅUjÆjËubaubjò)�rÒ}rÓ(jÅXìIf you use the custom option for the BIOS.libType, you can also set the BIOS.customCCOpts property to customize the C compiler command-line options used when compiling the SYS/BIOS libraries. If you want to change this property, it is important to first examine and understand the default command-line options used to compile the SYS/BIOS libraries for your target. You can see the default in XGCONF or by placing the following statement in your configuration script and building the project:rÔjÆj™jÎj’jÐjõjÒ}rÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‚jÝhjÞ]rÖjçXìIf you use the custom option for the BIOS.libType, you can also set the BIOS.customCCOpts property to customize the C compiler command-line options used when compiling the SYS/BIOS libraries. If you want to change this property, it is important to first examine and understand the default command-line options used to compile the SYS/BIOS libraries for your target. You can see the default in XGCONF or by placing the following statement in your configuration script and building the project:r×…�rØ}rÙ(jÅjÔjÆjÒubaubj)�rÚ}rÛ(jÅX+print("customCCOpts =", BIOS.customCCOpts);jÆj™jÎj’jÐjjÒ}rÜ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM– jÝhjÞ]rÝjçX+print("customCCOpts =", BIOS.customCCOpts);rÞ…�rß}rà(jÅUjÆjÚubaubjò)�rá}râ(jÅXòBe careful not to cause problems for the SYS/BIOS compilation when you modify this property. For example, the --program_level_compile option is required. (Some --define and --include_path options are used on the compiler command line but are not listed in the customCCOpts definition; these also cannot be removed.) For example, to create a debuggable custom library, you can remove the -o3 option from the BIOS.customCCOpts definition by specifying it with the following string for a C64x+ target:rãjÆj™jÎj’jÐjõjÒ}rä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]råjçXòBe careful not to cause problems for the SYS/BIOS compilation when you modify this property. For example, the --program_level_compile option is required. (Some --define and --include_path options are used on the compiler command line but are not listed in the customCCOpts definition; these also cannot be removed.) For example, to create a debuggable custom library, you can remove the -o3 option from the BIOS.customCCOpts definition by specifying it with the following string for a C64x+ target:ræ…�rç}rè(jÅjãjÆjáubaubj)�ré}rê(jÅX‘BIOS.customCCOpts = "-mv64p --abi=eabi -q -mi10 -mo -pdr -pden -pds=238 -pds=880 -pds1110 --embed_inline_assembly --program_level_compile -g";jÆj™jÎj’jÐjjÒ}rë(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM£ jÝhjÞ]rìjçX‘BIOS.customCCOpts = "-mv64p --abi=eabi -q -mi10 -mo -pdr -pden -pds=238 -pds=880 -pds1110 --embed_inline_assembly --program_level_compile -g";rí…�rî}rï(jÅUjÆjéubaubeubjÇ)�rð}rñ(jÅUjÆj€jÎj’jÐjÑjÒ}rò(jÔ]jÕ]jÖ]j×]róUoptimizing-runtime-performancerôajÚ]rõhºaujÜKŸjÝhjÞ]rö(jà)�r÷}rø(jÅXOptimizing Runtime PerformancerùjÆjðjÎj’jÐjäjÒ}rú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŸjÝhjÞ]rûjçXOptimizing Runtime Performancerü…�rý}rþ(jÅjùjÆj÷ubaubjò)�rÿ}r(jÅXkYou can use one or more of the following techniques to improve the runtime performance of IPC applications:rjÆjðjÎj’jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÝhjÞ]rjçXkYou can use one or more of the following techniques to improve the runtime performance of IPC applications:r…�r}r(jÅjjÆjÿubaubjt)�r}r(jÅUjÆjðjÎj’jÐjwjÒ}r (jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK¤jÝhjÞ]r j{)�r }r (jÅXƒAfter you have finished debugging an application, you can disable asserts and logging with the following configuration statements: jÆjjÎj’jÐjjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rjò)�r}r(jÅX‚After you have finished debugging an application, you can disable asserts and logging with the following configuration statements:rjÆj jÎj’jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÞ]rjçX‚After you have finished debugging an application, you can disable asserts and logging with the following configuration statements:r…�r}r(jÅjjÆjubaubaubaubj)�r}r(jÅX·var Diags = xdc.useModule("xdc.runtime.Diags"); var Defaults = xdc.useModule('xdc.runtime.Defaults'); Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF; Defaults.common$.logger = null;jÆjðjÎj’jÐjjÒ}r(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM² jÝhjÞ]rjçX·var Diags = xdc.useModule("xdc.runtime.Diags"); var Defaults = xdc.useModule('xdc.runtime.Defaults'); Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF; Defaults.common$.logger = null;r…�r}r(jÅUjÆjubaubjt)�r}r(jÅUjÆjðjÎj’jÐjwjÒ}r (jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK®jÝhjÞ]r!j{)�r"}r#(jÅX!If shared memory has the same address on all processors, you can use the following configuration statement to set the SharedRegion.translate property to false. See `SharedRegion Module `__ for more about SharedRegion configuration. jÆjjÎj’jÐjjÒ}r$(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r%jò)�r&}r'(jÅX If shared memory has the same address on all processors, you can use the following configuration statement to set the SharedRegion.translate property to false. See `SharedRegion Module `__ for more about SharedRegion configuration.jÆj"jÎj’jÐjõjÒ}r((jÔ]jÕ]jÖ]j×]jÚ]ujÜK®jÞ]r)(jçX¤If shared memory has the same address on all processors, you can use the following configuration statement to set the SharedRegion.translate property to false. See r*…�r+}r,(jÅX¤If shared memory has the same address on all processors, you can use the following configuration statement to set the SharedRegion.translate property to false. See jÆj&ubjû)�r-}r.(jÅXQ`SharedRegion Module `__jÒ}r/(UnameXSharedRegion ModulejX7index_Foundational_Components.html#shared-region-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆj&jÞ]r0jçXSharedRegion Moduler1…�r2}r3(jÅUjÆj-ubajÐjÿubjçX+ for more about SharedRegion configuration.r4…�r5}r6(jÅX+ for more about SharedRegion configuration.jÆj&ubeubaubaubj)�r7}r8(jÅXSharedRegion.translate = false;jÆjðjÎj’jÐjjÒ}r9(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¿ jÝhjÞ]r:jçXSharedRegion.translate = false;r;…�r<}r=(jÅUjÆj7ubaubjt)�r>}r?(jÅUjÆjðjÎj’jÐjwjÒ}r@(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK¸jÝhjÞ]rA(j{)�rB}rC(jÅX Ensure that code, data, and shared data are all placed in cacheable memory. Refer to the SYS/BIOS documentation for information on how to configure a cache. See the *TI SYS/BIOS Real-time* *Operating System v6.x User's Guide* (`SPRUEX3 `__) for details.jÆj>jÎj’jÐjjÒ}rD(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rEjò)�rF}rG(jÅX Ensure that code, data, and shared data are all placed in cacheable memory. Refer to the SYS/BIOS documentation for information on how to configure a cache. See the *TI SYS/BIOS Real-time* *Operating System v6.x User's Guide* (`SPRUEX3 `__) for details.jÆjBjÎj’jÐjõjÒ}rH(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¸jÞ]rI(jçX¥Ensure that code, data, and shared data are all placed in cacheable memory. Refer to the SYS/BIOS documentation for information on how to configure a cache. See the rJ…�rK}rL(jÅX¥Ensure that code, data, and shared data are all placed in cacheable memory. Refer to the SYS/BIOS documentation for information on how to configure a cache. See the jÆjFubcdocutils.nodes emphasis rM)�rN}rO(jÅX*TI SYS/BIOS Real-time*jÒ}rP(jÔ]jÕ]jÖ]j×]jÚ]ujÆjFjÞ]rQjçXTI SYS/BIOS Real-timerR…�rS}rT(jÅUjÆjNubajÐUemphasisrUubjçX …�rV}rW(jÅX jÆjFubjM)�rX}rY(jÅX$*Operating System v6.x User's Guide*jÒ}rZ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjFjÞ]r[jçX"Operating System v6.x User's Guider\…�r]}r^(jÅUjÆjXubajÐjUubjçX (r_…�r`}ra(jÅX (jÆjFubjû)�rb}rc(jÅX/`SPRUEX3 `__jÒ}rd(UnameXSPRUEX3jX!http://www.ti.com/lit/pdf/SPRUEX3j×]jÖ]jÔ]jÕ]jÚ]ujÆjFjÞ]rejçXSPRUEX3rf…�rg}rh(jÅUjÆjbubajÐjÿubjçX) for details.ri…�rj}rk(jÅX) for details.jÆjFubeubaubj{)�rl}rm(jÅXßYou can reduce contention between multiple processors and multiple threads by creating a new gate for use by a new IPC module instance. Leaving the params.gate property set to NULL causes the default system GateMP instance to be used for context protection. However, in some cases it may be optimal to create a new GateMP instance and supply it to the instance creation. See `GateMP Module `__ for more information. For example: jÆj>jÎj’jÐjjÒ}rn(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rojò)�rp}rq(jÅXÞYou can reduce contention between multiple processors and multiple threads by creating a new gate for use by a new IPC module instance. Leaving the params.gate property set to NULL causes the default system GateMP instance to be used for context protection. However, in some cases it may be optimal to create a new GateMP instance and supply it to the instance creation. See `GateMP Module `__ for more information. For example:jÆjljÎj’jÐjõjÒ}rr(jÔ]jÕ]jÖ]j×]jÚ]ujÜK½jÞ]rs(jçXwYou can reduce contention between multiple processors and multiple threads by creating a new gate for use by a new IPC module instance. Leaving the params.gate property set to NULL causes the default system GateMP instance to be used for context protection. However, in some cases it may be optimal to create a new GateMP instance and supply it to the instance creation. See rt…�ru}rv(jÅXwYou can reduce contention between multiple processors and multiple threads by creating a new gate for use by a new IPC module instance. Leaving the params.gate property set to NULL causes the default system GateMP instance to be used for context protection. However, in some cases it may be optimal to create a new GateMP instance and supply it to the instance creation. See jÆjpubjû)�rw}rx(jÅXD`GateMP Module `__jÒ}ry(UnameX GateMP ModulejX0index_Foundational_Components.html#gatemp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjpjÞ]rzjçX GateMP Moduler{…�r|}r}(jÅUjÆjwubajÐjÿubjçX# for more information. For example:r~…�r}r€(jÅX# for more information. For example:jÆjpubeubaubeubj)�r�}r‚(jÅXÞGateMP_Params gateParams; GateMP_Handle gateHandle; HeapBufMP_Params heapParams; GateMP_Params_init(&gateParams); gateHandle = GateMP_create(&gateParams); HeapBufMP_Params_init(&heapParams); heapParams.gate = gateHandle;jÆjðjÎj’jÐjjÒ}rƒ(Ulinenosr„‰Ulanguager…Xcj@jAj×]jÖ]jÔ]Uhighlight_argsr†}jÕ]jÚ]ujÜKÆjÝhjÞ]r‡jçXÞGateMP_Params gateParams; GateMP_Handle gateHandle; HeapBufMP_Params heapParams; GateMP_Params_init(&gateParams); gateHandle = GateMP_create(&gateParams); HeapBufMP_Params_init(&heapParams); heapParams.gate = gateHandle;rˆ…�r‰}rŠ(jÅUjÆj�ubaubjt)�r‹}rŒ(jÅUjÆjðjÎj’jÐjwjÒ}r�(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKÓjÝhjÞ]rŽj{)�r�}r�(jÅX If a unicache is shared between two cores in shared memory and you expect to share certain IPC instances (such as a GateMP or ListMP) solely between those two cores, you may be able to improve performance by creating a SharedRegion with cache disabled for use between those two cores only. Since region 0 needs to be accessible by all cores on a system, region 1 can be created with a cache line size of 0 and a cacheEnable configuration of FALSE. Any IPC instance created within a SharedRegion inherits the cache settings (the cacheEnabled flag and the cacheLineSize) from this region. Therefore, unnecessary cache operations can be avoided by creating an instance in region 1. The following configuration statements create a SharedRegion with the cache disabled (on OMAP4430): jÆj‹jÎj’jÐjjÒ}r‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r’(jò)�r“}r”(jÅX¦If a unicache is shared between two cores in shared memory and you expect to share certain IPC instances (such as a GateMP or ListMP) solely between those two cores, you may be able to improve performance by creating a SharedRegion with cache disabled for use between those two cores only. Since region 0 needs to be accessible by all cores on a system, region 1 can be created with a cache line size of 0 and a cacheEnable configuration of FALSE. Any IPC instance created within a SharedRegion inherits the cache settings (the cacheEnabled flag and the cacheLineSize) from this region. Therefore, unnecessary cache operations can be avoided by creating an instance in region 1.r•jÆj�jÎj’jÐjõjÒ}r–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÓjÞ]r—jçX¦If a unicache is shared between two cores in shared memory and you expect to share certain IPC instances (such as a GateMP or ListMP) solely between those two cores, you may be able to improve performance by creating a SharedRegion with cache disabled for use between those two cores only. Since region 0 needs to be accessible by all cores on a system, region 1 can be created with a cache line size of 0 and a cacheEnable configuration of FALSE. Any IPC instance created within a SharedRegion inherits the cache settings (the cacheEnabled flag and the cacheLineSize) from this region. Therefore, unnecessary cache operations can be avoided by creating an instance in region 1.r˜…�r™}rš(jÅj•jÆj“ubaubjò)�r›}rœ(jÅXcThe following configuration statements create a SharedRegion with the cache disabled (on OMAP4430):r�jÆj�jÎj’jÐjõjÒ}rž(jÔ]jÕ]jÖ]j×]jÚ]ujÜKßjÞ]rŸjçXcThe following configuration statements create a SharedRegion with the cache disabled (on OMAP4430):r …�r¡}r¢(jÅj�jÆj›ubaubeubaubj)�r£}r¤(jÅX™ SharedRegion.setEntryMeta(1, /* Create shared region 1 */ { base: 0x86000000, len: 0x10000, ownerProcId: 0, isValid: true, cacheEnabled: false, /* Cache operations unneeded */ cacheLineSize: 0, /* Cache padding unneeded */ name: "DDR2", }); The following C code creates a HeapBufMP instance in this SharedRegion::jÆjðjÎj’jÐjjÒ}r¥(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜKâjÝhjÞ]r¦jçX™ SharedRegion.setEntryMeta(1, /* Create shared region 1 */ { base: 0x86000000, len: 0x10000, ownerProcId: 0, isValid: true, cacheEnabled: false, /* Cache operations unneeded */ cacheLineSize: 0, /* Cache padding unneeded */ name: "DDR2", }); The following C code creates a HeapBufMP instance in this SharedRegion::r§…�r¨}r©(jÅUjÆj£ubaubj)�rª}r«(jÅXØ HeapBufMP_Params heapParams; HeapBufMP_Handle heapHandle; HeapBufMP_Params_init(&heapParams); heapParams.regionId = 1; heapHandle = HeapBufMP_create(&heapParams); This heap can be used by either of the Cortex M3 cores on an OMAP4430, because they both share a unicache. Do not use this heap (or anything else belonging to a SharedRegion with caching disabled) from any other processor if the shared memory belonging to the SharedRegion is cacheable.jÆjðjÎj’jÐjjÒ}r¬(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜKòjÝhjÞ]r­jçXØ HeapBufMP_Params heapParams; HeapBufMP_Handle heapHandle; HeapBufMP_Params_init(&heapParams); heapParams.regionId = 1; heapHandle = HeapBufMP_create(&heapParams); This heap can be used by either of the Cortex M3 cores on an OMAP4430, because they both share a unicache. Do not use this heap (or anything else belonging to a SharedRegion with caching disabled) from any other processor if the shared memory belonging to the SharedRegion is cacheable.r®…�r¯}r°(jÅUjÆjªubaubeubjÇ)�r±}r²(jÅUjÆj€jÎj’jÐjÑjÒ}r³(jÔ]jÕ]jÖ]j×]r´U&optimizing-notify-and-messageq-latencyrµajÚ]r¶háaujÜMjÝhjÞ]r·(jà)�r¸}r¹(jÅX&Optimizing Notify and MessageQ LatencyrºjÆj±jÎj’jÐjäjÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r¼jçX&Optimizing Notify and MessageQ Latencyr½…�r¾}r¿(jÅjºjÆj¸ubaubjò)�rÀ}rÁ(jÅX†By default, IPC applications are configured to use the ti.sdo.ipc.notifyDrivers.NotifyDriverShm Notify driver and the ti.sdo.ipc.transports.TransportShm MessageQ transport. These modules are used by default because they offer backward compatibility with older IPC/SysLink releases. In addition, these modules may offer functionality not supported by their newer, lower-latency counterparts.rÂjÆj±jÎj’jÐjõjÒ}rÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rÄjçX†By default, IPC applications are configured to use the ti.sdo.ipc.notifyDrivers.NotifyDriverShm Notify driver and the ti.sdo.ipc.transports.TransportShm MessageQ transport. These modules are used by default because they offer backward compatibility with older IPC/SysLink releases. In addition, these modules may offer functionality not supported by their newer, lower-latency counterparts.rÅ…�rÆ}rÇ(jÅjÂjÆjÀubaubjò)�rÈ}rÉ(jÅXÔIf your application does not need functionality provided only by the default Notify drivers or MessageQ transport, you can reduce the latency by switching to alternative MessageQ transports and/or Notify drivers.rÊjÆj±jÎj’jÐjõjÒ}rË(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rÌjçXÔIf your application does not need functionality provided only by the default Notify drivers or MessageQ transport, you can reduce the latency by switching to alternative MessageQ transports and/or Notify drivers.rÍ…�rÎ}rÏ(jÅjÊjÆjÈubaubeubjÇ)�rÐ}rÑ(jÅUjÆj€jÎj’jÐjÑjÒ}rÒ(jÔ]jÕ]jÖ]j×]rÓU'choosing-and-configuring-notify-driversrÔajÚ]rÕh¹aujÜMjÝhjÞ]rÖ(jà)�r×}rØ(jÅX'Choosing and Configuring Notify DriversrÙjÆjÐjÎj’jÐjäjÒ}rÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rÛjçX'Choosing and Configuring Notify DriversrÜ…�rÝ}rÞ(jÅjÙjÆj×ubaubjò)�rß}rà(jÅXüTo switch to a different Notify driver, set the Notify.SetupProxy configuration to the family-specific Notify setup module. For example, the following statements configure an application on the DM6446 to use the NotifyDriverCirc driver for that device:rájÆjÐjÎj’jÐjõjÒ}râ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rãjçXüTo switch to a different Notify driver, set the Notify.SetupProxy configuration to the family-specific Notify setup module. For example, the following statements configure an application on the DM6446 to use the NotifyDriverCirc driver for that device:rä…�rå}ræ(jÅjájÆjßubaubj)�rç}rè(jÅXvar Notify = xdc.useModule('ti.sdo.ipc.Notify'); Notify.SetupProxy = xdc.useModule('ti.sdo.ipc.family.dm6446.NotifyCircSetup');jÆjÐjÎj’jÐjjÒ}ré(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM# jÝhjÞ]rêjçXvar Notify = xdc.useModule('ti.sdo.ipc.Notify'); Notify.SetupProxy = xdc.useModule('ti.sdo.ipc.family.dm6446.NotifyCircSetup');rë…�rì}rí(jÅUjÆjçubaubjc)�rî}rï(jÅUjÆjÐjÎj’jÐjfjÒ}rð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rñji)�rò}ró(jÅUjlKjÆjîjÎj’jÐjÜjÒ}rô(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rõ}rö(jÅX…IPC provides the following Notify drivers. Each has a corresponding setup module that should be used as the Notify.SetupProxy module.r÷jÆjÐjÎj’jÐjõjÒ}rø(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rùjçX…IPC provides the following Notify drivers. Each has a corresponding setup module that should be used as the Notify.SetupProxy module.rú…�rû}rü(jÅj÷jÆjõubaubjy )�rý}rþ(jÅUjÆjÐjÎj’jÐjÔ jÒ}rÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rj~ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjýjÞ]r(jƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK/ujÆjjÞ]jÐj‡ ubjƒ )�r}r (jÅUjÒ}r (j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubjƒ )�r }r (jÅUjÒ}r (j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubj‹ )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rj� )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r(j• )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rjò)�r}r(jÅXModules and DescriptionrjÆjjÎj’jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜM$jÞ]rjçXModules and Descriptionr…�r }r!(jÅjjÆjubaubajÐj¢ ubj• )�r"}r#(jÅUjÒ}r$(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r%jò)�r&}r'(jÅX&Supports Disabling and Enabling Eventsr(jÆj"jÎj’jÐjõjÒ}r)(jÔ]jÕ]jÖ]j×]jÚ]ujÜM$jÞ]r*jçX&Supports Disabling and Enabling Eventsr+…�r,}r-(jÅj(jÆj&ubaubajÐj¢ ubj• )�r.}r/(jÅUjÒ}r0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r1jò)�r2}r3(jÅXLatencyr4jÆj.jÎj’jÐjõjÒ}r5(jÔ]jÕ]jÖ]j×]jÚ]ujÜM$jÞ]r6jçXLatencyr7…�r8}r9(jÅj4jÆj2ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r:}r;(jÅUjÒ}r<(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r=(j� )�r>}r?(jÅUjÒ}r@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj:jÞ]rA(j• )�rB}rC(jÅUjÒ}rD(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>jÞ]rE(jò)�rF}rG(jÅXOti.sdo.ipc.notifyDrivers.NotifyDriverShm ti.sdo.ipc.family..NotifySetuprHjÆjBjÎj’jÐjõjÒ}rI(jÔ]jÕ]jÖ]j×]jÚ]ujÜM'jÞ]rJjçXOti.sdo.ipc.notifyDrivers.NotifyDriverShm ti.sdo.ipc.family..NotifySetuprK…�rL}rM(jÅjHjÆjFubaubjc)�rN}rO(jÅUjÒ}rP(jÔ]jÕ]jÖ]j×]jÚ]ujÆjBjÞ]rQji)�rR}rS(jÅUjlKjÆjNjÎj’jÐjÜjÒ}rT(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ubajÐjfubjò)�rU}rV(jÅXjThis shared-memory Notify driver offers room for a single pending notification in shared memory per event.rWjÆjBjÎj’jÐjõjÒ}rX(jÔ]jÕ]jÖ]j×]jÚ]ujÜM,jÞ]rYjçXjThis shared-memory Notify driver offers room for a single pending notification in shared memory per event.rZ…�r[}r\(jÅjWjÆjUubaubejÐj¢ ubj• )�r]}r^(jÅUjÒ}r_(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>jÞ]r`jò)�ra}rb(jÅXYesrcjÆj]jÎj’jÐjõjÒ}rd(jÔ]jÕ]jÖ]j×]jÚ]ujÜM'jÞ]rejçXYesrf…�rg}rh(jÅjcjÆjaubaubajÐj¢ ubj• )�ri}rj(jÅUjÒ}rk(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>jÞ]rljò)�rm}rn(jÅXDefaultrojÆjijÎj’jÐjõjÒ}rp(jÔ]jÕ]jÖ]j×]jÚ]ujÜM'jÞ]rqjçXDefaultrr…�rs}rt(jÅjojÆjmubaubajÐj¢ ubejÐj£ ubj� )�ru}rv(jÅUjÒ}rw(jÔ]jÕ]jÖ]j×]jÚ]ujÆj:jÞ]rx(j• )�ry}rz(jÅUjÒ}r{(jÔ]jÕ]jÖ]j×]jÚ]ujÆjujÞ]r|(jò)�r}}r~(jÅXTti.sdo.ipc.notifyDrivers.NotifyDriverCirc ti.sdo.ipc.family..NotifyCircSetuprjÆjyjÎj’jÐjõjÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÜM1jÞ]r�jçXTti.sdo.ipc.notifyDrivers.NotifyDriverCirc ti.sdo.ipc.family..NotifyCircSetupr‚…�rƒ}r„(jÅjjÆj}ubaubjc)�r…}r†(jÅUjÒ}r‡(jÔ]jÕ]jÖ]j×]jÚ]ujÆjyjÞ]rˆji)�r‰}rŠ(jÅUjlKjÆj…jÎj’jÐjÜjÒ}r‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ubajÐjfubjò)�rŒ}r�(jÅXÆThis shared-memory Notify driver uses a circular buffer to store notifications. Unlike NotifyDriverShm, this driver stores all notifications in the same circular buffer (whose size is configurable).rŽjÆjyjÎj’jÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM6jÞ]r�jçXÆThis shared-memory Notify driver uses a circular buffer to store notifications. Unlike NotifyDriverShm, this driver stores all notifications in the same circular buffer (whose size is configurable).r‘…�r’}r“(jÅjŽjÆjŒubaubejÐj¢ ubj• )�r”}r•(jÅUjÒ}r–(jÔ]jÕ]jÖ]j×]jÚ]ujÆjujÞ]r—jò)�r˜}r™(jÅXNoršjÆj”jÎj’jÐjõjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÜM1jÞ]rœjçXNor�…�rž}rŸ(jÅjšjÆj˜ubaubajÐj¢ ubj• )�r }r¡(jÅUjÒ}r¢(jÔ]jÕ]jÖ]j×]jÚ]ujÆjujÞ]r£jò)�r¤}r¥(jÅXBetter than NotifyDriverShmr¦jÆj jÎj’jÐjõjÒ}r§(jÔ]jÕ]jÖ]j×]jÚ]ujÜM1jÞ]r¨jçXBetter than NotifyDriverShmr©…�rª}r«(jÅj¦jÆj¤ubaubajÐj¢ ubejÐj£ ubj� )�r¬}r­(jÅUjÒ}r®(jÔ]jÕ]jÖ]j×]jÚ]ujÆj:jÞ]r¯(j• )�r°}r±(jÅUjÒ}r²(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬jÞ]r³(jò)�r´}rµ(jÅXYti.sdo.ipc.family.ti8 1xx.\ **NotifyDriverM bx** ti.sdo.ipc.family.ti8 1xx.NotifyMbxSetupjÆj°jÎj’jÐjõjÒ}r¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜMBjÞ]r·(jçXti.sdo.ipc.family.ti8 1xx.r¸…�r¹}rº(jÅXti.sdo.ipc.family.ti8 1xx.\ jÆj´ubjÚ)�r»}r¼(jÅX**NotifyDriverM bx**jÒ}r½(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´jÞ]r¾jçXNotifyDriverM bxr¿…�rÀ}rÁ(jÅUjÆj»ubajÐjâubjçX) ti.sdo.ipc.family.ti8 1xx.NotifyMbxSetuprÂ…�rÃ}rÄ(jÅX) ti.sdo.ipc.family.ti8 1xx.NotifyMbxSetupjÆj´ubeubjc)�rÅ}rÆ(jÅUjÒ}rÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°jÞ]rÈji)�rÉ}rÊ(jÅUjlKjÆjÅjÎj’jÐjÜjÒ}rË(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ubajÐjfubjò)�rÌ}rÍ(jÅX´This TI81xx-only Notify driver uses the hardware mailbox. This driver is not usable by other devices. Notifications are stored in hardware mailbox queues present on TI81xx devices.rÎjÆj°jÎj’jÐjõjÒ}rÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMJjÞ]rÐjçX´This TI81xx-only Notify driver uses the hardware mailbox. This driver is not usable by other devices. Notifications are stored in hardware mailbox queues present on TI81xx devices.rÑ…�rÒ}rÓ(jÅjÎjÆjÌubaubejÐj¢ ubj• )�rÔ}rÕ(jÅUjÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬jÞ]r×jò)�rØ}rÙ(jÅXNorÚjÆjÔjÎj’jÐjõjÒ}rÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMBjÞ]rÜjçXNorÝ…�rÞ}rß(jÅjÚjÆjØubaubajÐj¢ ubj• )�rà}rá(jÅUjÒ}râ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬jÞ]rãjò)�rä}rå(jÅX0Better than NotifyDriverCirc and NotifyDriverShmræjÆjàjÎj’jÐjõjÒ}rç(jÔ]jÕ]jÖ]j×]jÚ]ujÜMBjÞ]rèjçX0Better than NotifyDriverCirc and NotifyDriverShmré…�rê}rë(jÅjæjÆjäubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubjÇ)�rì}rí(jÅUjÆj€jÎj’jÐjÑjÒ}rî(jÔ]jÕ]jÖ]j×]rïU,choosing-and-configuring-messageq-transportsrðajÚ]rñhoaujÜMXjÝhjÞ]rò(jà)�ró}rô(jÅX,Choosing and Configuring MessageQ TransportsrõjÆjìjÎj’jÐjäjÒ}rö(jÔ]jÕ]jÖ]j×]jÚ]ujÜMXjÝhjÞ]r÷jçX,Choosing and Configuring MessageQ Transportsrø…�rù}rú(jÅjõjÆjóubaubjò)�rû}rü(jÅXøSimilarly, to use an alternative MessageQ transport, configure the MessageQ.SetupTransportProxy property to use the transport's corresponding Transport Setup proxy. For example, to use the TransportShmNotify module, use the following configuration:rýjÆjìjÎj’jÐjõjÒ}rþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMZjÝhjÞ]rÿjçXøSimilarly, to use an alternative MessageQ transport, configure the MessageQ.SetupTransportProxy property to use the transport's corresponding Transport Setup proxy. For example, to use the TransportShmNotify module, use the following configuration:r…�r}r(jÅjýjÆjûubaubj)�r}r(jÅX“var MessageQ = xdc.module('ti.sdo.ipc.MessageQ'); MessageQ.SetupTransportProxy = xdc.module('ti.sdo.ipc.transports.TransportShmNotifySetup');jÆjìjÎj’jÐjjÒ}r(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMj jÝhjÞ]rjçX“var MessageQ = xdc.module('ti.sdo.ipc.MessageQ'); MessageQ.SetupTransportProxy = xdc.module('ti.sdo.ipc.transports.TransportShmNotifySetup');r…�r}r (jÅUjÆjubaubjò)�r }r (jÅXUnlike the Notify setup modules, Transport setup modules are generally not family-specific; most are located in the ti.sdo.ipc.transports package. IPC provides the following transports. Each has a corresponding setup module for use as the MessageQ.SetupTransportProxy module.r jÆjìjÎj’jÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜMejÝhjÞ]rjçXUnlike the Notify setup modules, Transport setup modules are generally not family-specific; most are located in the ti.sdo.ipc.transports package. IPC provides the following transports. Each has a corresponding setup module for use as the MessageQ.SetupTransportProxy module.r…�r}r(jÅj jÆj ubaubjy )�r}r(jÅUjÆjìjÎj’jÐjÔ jÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rj~ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjjÞ]r(jƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆjjÞ]jÐj‡ ubjƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆjjÞ]jÐj‡ ubj‹ )�r }r!(jÅUjÒ}r"(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r#j� )�r$}r%(jÅUjÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj jÞ]r'(j• )�r(}r)(jÅUjÒ}r*(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$jÞ]r+jò)�r,}r-(jÅXModules and Descriptionr.jÆj(jÎj’jÐjõjÒ}r/(jÔ]jÕ]jÖ]j×]jÚ]ujÜMljÞ]r0jçXModules and Descriptionr1…�r2}r3(jÅj.jÆj,ubaubajÐj¢ ubj• )�r4}r5(jÅUjÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$jÞ]r7jò)�r8}r9(jÅXTransport Speedr:jÆj4jÎj’jÐjõjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÜMljÞ]r<jçXTransport Speedr=…�r>}r?(jÅj:jÆj8ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r@}rA(jÅUjÒ}rB(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rC(j� )�rD}rE(jÅUjÒ}rF(jÔ]jÕ]jÖ]j×]jÚ]ujÆj@jÞ]rG(j• )�rH}rI(jÅUjÒ}rJ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjDjÞ]rK(jò)�rL}rM(jÅXRti.sdo.ipc.transports.\ **Transpo rtShm** ti.sdo.ipc.transports.TransportSh mSetupjÆjHjÎj’jÐjõjÒ}rN(jÔ]jÕ]jÖ]j×]jÚ]ujÜMnjÞ]rO(jçXti.sdo.ipc.transports.rP…�rQ}rR(jÅXti.sdo.ipc.transports.\ jÆjLubjÚ)�rS}rT(jÅX**Transpo rtShm**jÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjLjÞ]rVjçX Transpo rtShmrW…�rX}rY(jÅUjÆjSubajÐjâubjçX) ti.sdo.ipc.transports.TransportSh mSetuprZ…�r[}r\(jÅX) ti.sdo.ipc.transports.TransportSh mSetupjÆjLubeubjc)�r]}r^(jÅUjÒ}r_(jÔ]jÕ]jÖ]j×]jÚ]ujÆjHjÞ]r`ji)�ra}rb(jÅUjlKjÆj]jÎj’jÐjÜjÒ}rc(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ubajÐjfubjò)�rd}re(jÅX%This shared-memory MessageQ transport uses ListMP to temporarily queue messages in shared memory before the messages are moved to the destination queue. This transport is typically slowest because of the overhead of queuing messages using a linked list. This is the default MessageQ transport.rfjÆjHjÎj’jÐjõjÒ}rg(jÔ]jÕ]jÖ]j×]jÚ]ujÜMujÞ]rhjçX%This shared-memory MessageQ transport uses ListMP to temporarily queue messages in shared memory before the messages are moved to the destination queue. This transport is typically slowest because of the overhead of queuing messages using a linked list. This is the default MessageQ transport.ri…�rj}rk(jÅjfjÆjdubaubejÐj¢ ubj• )�rl}rm(jÅUjÒ}rn(jÔ]jÕ]jÖ]j×]jÚ]ujÆjDjÞ]rojò)�rp}rq(jÅXSlowestrrjÆjljÎj’jÐjõjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÜMnjÞ]rtjçXSlowestru…�rv}rw(jÅjrjÆjpubaubajÐj¢ ubejÐj£ ubj� )�rx}ry(jÅUjÒ}rz(jÔ]jÕ]jÖ]j×]jÚ]ujÆj@jÞ]r{(j• )�r|}r}(jÅUjÒ}r~(jÔ]jÕ]jÖ]j×]jÚ]ujÆjxjÞ]r(jò)�r€}r�(jÅXZti.sdo.ipc.transports.\ **Transpo rtShmCirc** ti.sdo.ipc.transports.TransportSh mCircSetupjÆj|jÎj’jÐjõjÒ}r‚(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]rƒ(jçXti.sdo.ipc.transports.r„…�r…}r†(jÅXti.sdo.ipc.transports.\ jÆj€ubjÚ)�r‡}rˆ(jÅX**Transpo rtShmCirc**jÒ}r‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj€jÞ]rŠjçXTranspo rtShmCircr‹…�rŒ}r�(jÅUjÆj‡ubajÐjâubjçX- ti.sdo.ipc.transports.TransportSh mCircSetuprŽ…�r�}r�(jÅX- ti.sdo.ipc.transports.TransportSh mCircSetupjÆj€ubeubjc)�r‘}r’(jÅUjÒ}r“(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|jÞ]r”ji)�r•}r–(jÅUjlKjÆj‘jÎj’jÐjÜjÒ}r—(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ubajÐjfubjò)�r˜}r™(jÅX=This shared-memory MessageQ transport uses a fixed-length circular buffer to temporarily queue messages in shared memory before the messages are moved to the destination queue. This transport is typically faster than TransportShm because of the efficiencies gained by using a circular buffer instead of a linked list.ršjÆj|jÎj’jÐjõjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÜMˆjÞ]rœjçX=This shared-memory MessageQ transport uses a fixed-length circular buffer to temporarily queue messages in shared memory before the messages are moved to the destination queue. This transport is typically faster than TransportShm because of the efficiencies gained by using a circular buffer instead of a linked list.r�…�rž}rŸ(jÅjšjÆj˜ubaubejÐj¢ ubj• )�r }r¡(jÅUjÒ}r¢(jÔ]jÕ]jÖ]j×]jÚ]ujÆjxjÞ]r£jò)�r¤}r¥(jÅXMediumr¦jÆj jÎj’jÐjõjÒ}r§(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]r¨jçXMediumr©…�rª}r«(jÅj¦jÆj¤ubaubajÐj¢ ubejÐj£ ubj� )�r¬}r­(jÅUjÒ}r®(jÔ]jÕ]jÖ]j×]jÚ]ujÆj@jÞ]r¯(j• )�r°}r±(jÅUjÒ}r²(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬jÞ]r³(jò)�r´}rµ(jÅX^ti.sdo.ipc.transports.\ **Transpo rtShmNotify** ti.sdo.ipc.transports.TransportSh mNotifySetupjÆj°jÎj’jÐjõjÒ}r¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜM”jÞ]r·(jçXti.sdo.ipc.transports.r¸…�r¹}rº(jÅXti.sdo.ipc.transports.\ jÆj´ubjÚ)�r»}r¼(jÅX**Transpo rtShmNotify**jÒ}r½(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´jÞ]r¾jçXTranspo rtShmNotifyr¿…�rÀ}rÁ(jÅUjÆj»ubajÐjâubjçX/ ti.sdo.ipc.transports.TransportSh mNotifySetuprÂ…�rÃ}rÄ(jÅX/ ti.sdo.ipc.transports.TransportSh mNotifySetupjÆj´ubeubjc)�rÅ}rÆ(jÅUjÒ}rÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°jÞ]rÈji)�rÉ}rÊ(jÅUjlKjÆjÅjÎj’jÐjÜjÒ}rË(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ubajÐjfubjò)�rÌ}rÍ(jÅX�This shared-memory MessageQ transport does no buffering before the messages are moved to the destination queue. Because of the lack of buffering, this transport tends to offer lower MessageQ latency than either TransportShm or TransportShm. However, If messages aren't received quickly enough by the receiver, the sender may spin while waiting for the receiver to move the message to its local queue.rÎjÆj°jÎj’jÐjõjÒ}rÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM›jÞ]rÐjçX�This shared-memory MessageQ transport does no buffering before the messages are moved to the destination queue. Because of the lack of buffering, this transport tends to offer lower MessageQ latency than either TransportShm or TransportShm. However, If messages aren't received quickly enough by the receiver, the sender may spin while waiting for the receiver to move the message to its local queue.rÑ…�rÒ}rÓ(jÅjÎjÆjÌubaubejÐj¢ ubj• )�rÔ}rÕ(jÅUjÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬jÞ]r×jò)�rØ}rÙ(jÅX?Fastest, but depends on fast processing of messages by receiverrÚjÆjÔjÎj’jÐjõjÒ}rÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM”jÞ]rÜjçX?Fastest, but depends on fast processing of messages by receiverrÝ…�rÞ}rß(jÅjÚjÆjØubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubjÇ)�rà}rá(jÅUjÆj€jÎj’jÐjÑjÒ}râ(jÔ]jÕ]jÖ]j×]rãUoptimizing-shared-memory-usageräajÚ]råhŠaujÜM¬jÝhjÞ]ræ(jà)�rç}rè(jÅXOptimizing Shared Memory UsageréjÆjàjÎj’jÐjäjÒ}rê(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¬jÝhjÞ]rëjçXOptimizing Shared Memory Usagerì…�rí}rî(jÅjéjÆjçubaubjò)�rï}rð(jÅXnYou can use one or more of the following techniques to reduce the shared memory footprint of IPC applications:rñjÆjàjÎj’jÐjõjÒ}rò(jÔ]jÕ]jÖ]j×]jÚ]ujÜM®jÝhjÞ]rójçXnYou can use one or more of the following techniques to reduce the shared memory footprint of IPC applications:rô…�rõ}rö(jÅjñjÆjïubaubjt)�r÷}rø(jÅUjÆjàjÎj’jÐjwjÒ}rù(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM±jÝhjÞ]rúj{)�rû}rü(jÅXÎIf some connections between processors are not needed, it is not necessary to attach to those cores. To selectively attach between cores, use pair-wise synchronization as described in `Ipc Module `__. Your C code must call Ipc_attach() for processors you want to connect to if you are using pair-wise synchronization. The following configuration statement causes the Ipc module to expect pair-wise synchronization. jÆj÷jÎj’jÐjjÒ}rý(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rþjò)�rÿ}r(jÅXÍIf some connections between processors are not needed, it is not necessary to attach to those cores. To selectively attach between cores, use pair-wise synchronization as described in `Ipc Module `__. Your C code must call Ipc_attach() for processors you want to connect to if you are using pair-wise synchronization. The following configuration statement causes the Ipc module to expect pair-wise synchronization.jÆjûjÎj’jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜM±jÞ]r(jçX¸If some connections between processors are not needed, it is not necessary to attach to those cores. To selectively attach between cores, use pair-wise synchronization as described in r…�r}r(jÅX¸If some connections between processors are not needed, it is not necessary to attach to those cores. To selectively attach between cores, use pair-wise synchronization as described in jÆjÿubjû)�r}r(jÅX>`Ipc Module `__jÒ}r(UnameX Ipc ModulejX-index_Foundational_Components.html#ipc-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjÿjÞ]r jçX Ipc Moduler …�r }r (jÅUjÆjubajÐjÿubjçX×. Your C code must call Ipc_attach() for processors you want to connect to if you are using pair-wise synchronization. The following configuration statement causes the Ipc module to expect pair-wise synchronization.r …�r}r(jÅX×. Your C code must call Ipc_attach() for processors you want to connect to if you are using pair-wise synchronization. The following configuration statement causes the Ipc module to expect pair-wise synchronization.jÆjÿubeubaubaubj)�r}r(jÅX!Ipc.procSync = Ipc.ProcSync_PAIR;jÆjàjÎj’jÐjjÒ}r(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÄ jÝhjÞ]rjçX!Ipc.procSync = Ipc.ProcSync_PAIR;r…�r}r(jÅUjÆjubaubjc)�r}r(jÅUjÆjàjÎj’jÐjfjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜM½jÝhjÞ]rji)�r}r(jÅUjlKjÆjjÎj’jÐjÜjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r}r(jÅXnAt run-time, only call Ipc_attach() to a remote processor if one or more of the following conditions is true::jÆjàjÎj’jÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜM¿jÝhjÞ]r!jçXmAt run-time, only call Ipc_attach() to a remote processor if one or more of the following conditions is true:r"…�r#}r$(jÅXmAt run-time, only call Ipc_attach() to a remote processor if one or more of the following conditions is true:jÆjubaubj)�r%}r&(jÅX’- The remote processor is the owner of region 0. - It is necessary to send Notifications between this processor and the remote processor. - It is necessary to send MessageQ messages between this processor and the remote processor. - It is necessary for either the local or remote processor to open a module instance using *MODULE*\ \_open() that has been created on the other processor.jÆjàjÎj’jÐjjÒ}r'(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMË jÝhjÞ]r(jçX’- The remote processor is the owner of region 0. - It is necessary to send Notifications between this processor and the remote processor. - It is necessary to send MessageQ messages between this processor and the remote processor. - It is necessary for either the local or remote processor to open a module instance using *MODULE*\ \_open() that has been created on the other processor.r)…�r*}r+(jÅUjÆj%ubaubjt)�r,}r-(jÅUjÆjàjÎj’jÐjwjÒ}r.(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMËjÝhjÞ]r/j{)�r0}r1(jÅXìConfigure the Ipc.setEntryMeta property to disable components of IPC that are not required. For example, if an application uses Notify but not MessageQ, disabling MessageQ avoids the creation of MessageQ transports during Ipc_attach(). jÆj,jÎj’jÐjjÒ}r2(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r3jò)�r4}r5(jÅXëConfigure the Ipc.setEntryMeta property to disable components of IPC that are not required. For example, if an application uses Notify but not MessageQ, disabling MessageQ avoids the creation of MessageQ transports during Ipc_attach().r6jÆj0jÎj’jÐjõjÒ}r7(jÔ]jÕ]jÖ]j×]jÚ]ujÜMËjÞ]r8jçXëConfigure the Ipc.setEntryMeta property to disable components of IPC that are not required. For example, if an application uses Notify but not MessageQ, disabling MessageQ avoids the creation of MessageQ transports during Ipc_attach().r9…�r:}r;(jÅj6jÆj4ubaubaubaubj)�r<}r=(jÅXÅ/* To avoid wasting shared mem for MessageQ transports */ for (var i = 0; i < MultiProc.numProcessors; i++) { Ipc.setEntryMeta({ remoteProcId: 1, setupMessageQ: false, }); }jÆjàjÎj’jÐjjÒ}r>(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜMÐjÝhjÞ]r?jçXÅ/* To avoid wasting shared mem for MessageQ transports */ for (var i = 0; i < MultiProc.numProcessors; i++) { Ipc.setEntryMeta({ remoteProcId: 1, setupMessageQ: false, }); }r@…�rA}rB(jÅUjÆj<ubaubjt)�rC}rD(jÅUjÆjàjÎj’jÐjwjÒ}rE(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMÚjÝhjÞ]rFj{)�rG}rH(jÅXÈConfigure Notify.numEvents to a lower number. The default value of 32 is often significantly more than the total number of Notify events required on a system. See `Notify Module `__ for more information. For example, a simple MessageQ application may simply use two events (one for NameServer and one for the MessageQ transport). In this case, we can optimize memory use with the following configuration: jÆjCjÎj’jÐjjÒ}rI(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rJ(jò)�rK}rL(jÅXýConfigure Notify.numEvents to a lower number. The default value of 32 is often significantly more than the total number of Notify events required on a system. See `Notify Module `__ for more information.jÆjGjÎj’jÐjõjÒ}rM(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÞ]rN(jçX£Configure Notify.numEvents to a lower number. The default value of 32 is often significantly more than the total number of Notify events required on a system. See rO…�rP}rQ(jÅX£Configure Notify.numEvents to a lower number. The default value of 32 is often significantly more than the total number of Notify events required on a system. See jÆjKubjû)�rR}rS(jÅXD`Notify Module `__jÒ}rT(UnameX Notify ModulejX0index_Foundational_Components.html#notify-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjKjÞ]rUjçX Notify ModulerV…�rW}rX(jÅUjÆjRubajÐjÿubjçX for more information.rY…�rZ}r[(jÅX for more information.jÆjKubeubjò)�r\}r](jÅXÈFor example, a simple MessageQ application may simply use two events (one for NameServer and one for the MessageQ transport). In this case, we can optimize memory use with the following configuration:r^jÆjGjÎj’jÐjõjÒ}r_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMàjÞ]r`jçXÈFor example, a simple MessageQ application may simply use two events (one for NameServer and one for the MessageQ transport). In this case, we can optimize memory use with the following configuration:ra…�rb}rc(jÅj^jÆj\ubaubeubaubj)�rd}re(jÅXkvar Notify = xdc.useModule('ti.sdo.ipc.Notify'); /* Reduce the total number of supported events from 32 to 2 */ Notify.numEvents = 2; var NameServerRemoteNotify = xdc.useModule('ti.sdo.ipc.NameServerRemoteNotify'); NameServerRemoteNotify.notifyEventId = 1; var TransportShm = xdc.useModule('ti.sdo.ipc.transports.TransportShm'); TransportShm.notifyEventId = 0;jÆjàjÎj’jÐjjÒ}rf(j„‰j…X javascriptj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜMäjÝhjÞ]rgjçXkvar Notify = xdc.useModule('ti.sdo.ipc.Notify'); /* Reduce the total number of supported events from 32 to 2 */ Notify.numEvents = 2; var NameServerRemoteNotify = xdc.useModule('ti.sdo.ipc.NameServerRemoteNotify'); NameServerRemoteNotify.notifyEventId = 1; var TransportShm = xdc.useModule('ti.sdo.ipc.transports.TransportShm'); TransportShm.notifyEventId = 0;rh…�ri}rj(jÅUjÆjdubaubjt)�rk}rl(jÅUjÆjàjÎj’jÐjwjÒ}rm(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMñjÝhjÞ]rnj{)�ro}rp(jÅXúReduce the cacheLineSize property of a SharedRegion to reflect the actual size of the cache line. IPC uses the cacheLineSize setting to pad data structures in shared memory. Padding is required so that cache write-back and invalidate operations on data in shared memory do not affect the cache status of adjacent data. The larger the cacheLineSize setting, the more shared memory is used for the sole purpose of padding. Therefore, the cacheLineSize setting should optimally be set to the actual size of the cache line. The default cacheLineSize for SharedRegion is 128. Using the correct size has both performance and size benefits. The following example (for C6472) sets the cacheLineSize property to 64 because the shared L2 memory has this cache line size. jÆjkjÎj’jÐjjÒ}rq(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rr(jò)�rs}rt(jÅXyReduce the cacheLineSize property of a SharedRegion to reflect the actual size of the cache line. IPC uses the cacheLineSize setting to pad data structures in shared memory. Padding is required so that cache write-back and invalidate operations on data in shared memory do not affect the cache status of adjacent data. The larger the cacheLineSize setting, the more shared memory is used for the sole purpose of padding. Therefore, the cacheLineSize setting should optimally be set to the actual size of the cache line. The default cacheLineSize for SharedRegion is 128. Using the correct size has both performance and size benefits.rujÆjojÎj’jÐjõjÒ}rv(jÔ]jÕ]jÖ]j×]jÚ]ujÜMñjÞ]rwjçXyReduce the cacheLineSize property of a SharedRegion to reflect the actual size of the cache line. IPC uses the cacheLineSize setting to pad data structures in shared memory. Padding is required so that cache write-back and invalidate operations on data in shared memory do not affect the cache status of adjacent data. The larger the cacheLineSize setting, the more shared memory is used for the sole purpose of padding. Therefore, the cacheLineSize setting should optimally be set to the actual size of the cache line. The default cacheLineSize for SharedRegion is 128. Using the correct size has both performance and size benefits.rx…�ry}rz(jÅjujÆjsubaubjò)�r{}r|(jÅX~The following example (for C6472) sets the cacheLineSize property to 64 because the shared L2 memory has this cache line size.r}jÆjojÎj’jÐjõjÒ}r~(jÔ]jÕ]jÖ]j×]jÚ]ujÜMüjÞ]rjçX~The following example (for C6472) sets the cacheLineSize property to 64 because the shared L2 memory has this cache line size.r€…�r�}r‚(jÅj}jÆj{ubaubeubaubj)�rƒ}r„(jÅXÏSharedRegion.setEntryMeta(0, { base: SHAREDMEM, len: SHAREDMEMSIZE, ownerProcId: 0, isValid: true, cacheLineSize: 64, /* SL2 cache line size = 64 */ name: "SL2_RAM", });jÆjàjÎj’jÐjjÒ}r…(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜMÿjÝhjÞ]r†jçXÏSharedRegion.setEntryMeta(0, { base: SHAREDMEM, len: SHAREDMEMSIZE, ownerProcId: 0, isValid: true, cacheLineSize: 64, /* SL2 cache line size = 64 */ name: "SL2_RAM", });r‡…�rˆ}r‰(jÅUjÆjƒubaubeubjÇ)�rŠ}r‹(jÅUjÆj€jÎj’jÐjÑjÒ}rŒ(jÔ]jÕ]jÖ]j×]r�Uoptimizing-local-memory-usagerŽajÚ]r�h�aujÜM jÝhjÞ]r�(jà)�r‘}r’(jÅXOptimizing Local Memory Usager“jÆjŠjÎj’jÐjäjÒ}r”(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r•jçXOptimizing Local Memory Usager–…�r—}r˜(jÅj“jÆj‘ubaubjò)�r™}rš(jÅX¹If the Custom1 and Custom2 GateMP proxies will never be used, make sure they are both plugged with the ti.sdo.ipc.gates.GateMPSupportNull GateMP delegate. By default, GateMP plugs the Custom1 proxy with the GatePeterson delegate. A considerable amount of local memory is reserved for use by GatePeterson. You can plug the Custom1 proxy with the GateMPSupportNull delegate by adding the following configuration statements to your application:r›jÆjŠjÎj’jÐjõjÒ}rœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r�jçX¹If the Custom1 and Custom2 GateMP proxies will never be used, make sure they are both plugged with the ti.sdo.ipc.gates.GateMPSupportNull GateMP delegate. By default, GateMP plugs the Custom1 proxy with the GatePeterson delegate. A considerable amount of local memory is reserved for use by GatePeterson. You can plug the Custom1 proxy with the GateMPSupportNull delegate by adding the following configuration statements to your application:rž…�rŸ}r (jÅj›jÆj™ubaubj)�r¡}r¢(jÅX�var GateMP = xdc.useModule('ti.sdo.ipc.GateMP'); GateMP.RemoteCustom1Proxy = xdc.useModule('ti.sdo.ipc.gates.GateMPSupportNull');jÆjŠjÎj’jÐjjÒ}r£(j„‰j…X javascriptj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜMjÝhjÞ]r¤jçX�var GateMP = xdc.useModule('ti.sdo.ipc.GateMP'); GateMP.RemoteCustom1Proxy = xdc.useModule('ti.sdo.ipc.gates.GateMPSupportNull');r¥…�r¦}r§(jÅUjÆj¡ubaubeubjÇ)�r¨}r©(jÅUjÆj€jÎj’jÐjÑjÒ}rª(jÔ]jÕ]jÖ]j×]r«Uoptimizing-code-sizer¬ajÚ]r­j<aujÜMjÝhjÞ]r®(jà)�r¯}r°(jÅXOptimizing Code Sizer±jÆj¨jÎj’jÐjäjÒ}r²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r³jçXOptimizing Code Sizer´…�rµ}r¶(jÅj±jÆj¯ubaubjò)�r·}r¸(jÅXvThis section provides tips and suggestions for minimizing the code size of a SYS/BIOS-based application that uses IPC.r¹jÆj¨jÎj’jÐjõjÒ}rº(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r»jçXvThis section provides tips and suggestions for minimizing the code size of a SYS/BIOS-based application that uses IPC.r¼…�r½}r¾(jÅj¹jÆj·ubaubjt)�r¿}rÀ(jÅUjÆj¨jÎj’jÐjwjÒ}rÁ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rÂj{)�rÃ}rÄ(jÅX‡For a number of ways to configure SYS/BIOS that reduce code size by using custom built SYS/BIOS libraries and by disabling various features, see Section E.3 of the *TI SYS/BIOS Real-time Operating* *System v6.x User's Guide* (`SPRUEX3 `__). In particular, after you have debugged your code, disabling Asserts as follows helps reduce the size of your code. jÆj¿jÎj’jÐjjÒ}rÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÆjò)�rÇ}rÈ(jÅX†For a number of ways to configure SYS/BIOS that reduce code size by using custom built SYS/BIOS libraries and by disabling various features, see Section E.3 of the *TI SYS/BIOS Real-time Operating* *System v6.x User's Guide* (`SPRUEX3 `__). In particular, after you have debugged your code, disabling Asserts as follows helps reduce the size of your code.jÆjÃjÎj’jÐjõjÒ}rÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rÊ(jçX¤For a number of ways to configure SYS/BIOS that reduce code size by using custom built SYS/BIOS libraries and by disabling various features, see Section E.3 of the rË…�rÌ}rÍ(jÅX¤For a number of ways to configure SYS/BIOS that reduce code size by using custom built SYS/BIOS libraries and by disabling various features, see Section E.3 of the jÆjÇubjM)�rÎ}rÏ(jÅX!*TI SYS/BIOS Real-time Operating*jÒ}rÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇjÞ]rÑjçXTI SYS/BIOS Real-time OperatingrÒ…�rÓ}rÔ(jÅUjÆjÎubajÐjUubjçX …�rÕ}rÖ(jÅX jÆjÇubjM)�r×}rØ(jÅX*System v6.x User's Guide*jÒ}rÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇjÞ]rÚjçXSystem v6.x User's GuiderÛ…�rÜ}rÝ(jÅUjÆj×ubajÐjUubjçX (rÞ…�rß}rà(jÅX (jÆjÇubjû)�rá}râ(jÅX/`SPRUEX3 `__jÒ}rã(UnameXSPRUEX3jX!http://www.ti.com/lit/pdf/SPRUEX3j×]jÖ]jÔ]jÕ]jÚ]ujÆjÇjÞ]räjçXSPRUEX3rå…�ræ}rç(jÅUjÆjáubajÐjÿubjçXu). In particular, after you have debugged your code, disabling Asserts as follows helps reduce the size of your code.rè…�ré}rê(jÅXu). In particular, after you have debugged your code, disabling Asserts as follows helps reduce the size of your code.jÆjÇubeubaubaubj )�rë}rì(jÅUjÆj¨jÎj’jÐj# jÒ}rí(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rîj& )�rï}rð(jÅX›:: var Defaults = xdc.useModule('xdc.runtime.Defaults'); var Diags = xdc.useModule('xdc.runtimg.Diags'); Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF; jÆjëjÎj’jÐj) jÒ}rñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÞ]rò(j, )�ró}rô(jÅX::rõjÆjïjÎj’jÐj0 jÒ}rö(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÞ]r÷jçX::rø…�rù}rú(jÅjõjÆjóubaubj6 )�rû}rü(jÅUjÒ}rý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjïjÞ]rþjò)�rÿ}r(jÅX—var Defaults = xdc.useModule('xdc.runtime.Defaults'); var Diags = xdc.useModule('xdc.runtimg.Diags'); Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF;rjÆjûjÎj’jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜM)jÞ]rjçX—var Defaults = xdc.useModule('xdc.runtime.Defaults'); var Diags = xdc.useModule('xdc.runtimg.Diags'); Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF;r…�r}r(jÅjjÆjÿubaubajÐjQ ubeubaubjt)�r}r(jÅUjÆj¨jÎj’jÐjwjÒ}r (jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM-jÝhjÞ]r (j{)�r }r (jÅXãThe NotifyDriverCirc notification driver and the TransportShmNotify or TransportShmCirc MessageQ transports described in **Optimizing IPC Applications** use less code space than the default Notify driver and MessageQ transport.jÆjjÎj’jÐjjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rjò)�r}r(jÅXãThe NotifyDriverCirc notification driver and the TransportShmNotify or TransportShmCirc MessageQ transports described in **Optimizing IPC Applications** use less code space than the default Notify driver and MessageQ transport.jÆj jÎj’jÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜM-jÞ]r(jçXyThe NotifyDriverCirc notification driver and the TransportShmNotify or TransportShmCirc MessageQ transports described in r…�r}r(jÅXyThe NotifyDriverCirc notification driver and the TransportShmNotify or TransportShmCirc MessageQ transports described in jÆjubjÚ)�r}r(jÅX**Optimizing IPC Applications**jÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rjçXOptimizing IPC Applicationsr…�r}r(jÅUjÆjubajÐjâubjçXK use less code space than the default Notify driver and MessageQ transport.r…�r}r(jÅXK use less code space than the default Notify driver and MessageQ transport.jÆjubeubaubj{)�r }r!(jÅX¿You can reduce code size by not using the HeapBufMP Heap implementation. Since IPC uses the HeapMemMP implementation internally, using HeapMemMP in your application does not increase the code size. However, you should be aware that, depending on how your application uses heaps, HeapMemMP may lead to problems with heap fragmentation. See `Heap*MP Modules `__ for more about Heap implementations. jÆjjÎj’jÐjjÒ}r"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r#jò)�r$}r%(jÅX¾You can reduce code size by not using the HeapBufMP Heap implementation. Since IPC uses the HeapMemMP implementation internally, using HeapMemMP in your application does not increase the code size. However, you should be aware that, depending on how your application uses heaps, HeapMemMP may lead to problems with heap fragmentation. See `Heap*MP Modules `__ for more about Heap implementations.jÆj jÎj’jÐjõjÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÜM1jÞ]r'(jçXSYou can reduce code size by not using the HeapBufMP Heap implementation. Since IPC uses the HeapMemMP implementation internally, using HeapMemMP in your application does not increase the code size. However, you should be aware that, depending on how your application uses heaps, HeapMemMP may lead to problems with heap fragmentation. See r(…�r)}r*(jÅXSYou can reduce code size by not using the HeapBufMP Heap implementation. Since IPC uses the HeapMemMP implementation internally, using HeapMemMP in your application does not increase the code size. However, you should be aware that, depending on how your application uses heaps, HeapMemMP may lead to problems with heap fragmentation. See jÆj$ubjû)�r+}r,(jÅXF`Heap*MP Modules `__jÒ}r-(UnameXHeap*MP ModulesjX0index_Foundational_Components.html#heapmp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆj$jÞ]r.jçXHeap*MP Modulesr/…�r0}r1(jÅUjÆj+ubajÐjÿubjçX% for more about Heap implementations.r2…�r3}r4(jÅX% for more about Heap implementations.jÆj$ubeubaubeubjc)�r5}r6(jÅUjÆj¨jÎj’jÐjfjÒ}r7(jÔ]jÕ]jÖ]j×]jÚ]ujÜM:jÝhjÞ]r8ji)�r9}r:(jÅUjlKjÆj5jÎj’jÐjÜjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�r<}r=(jÅUjÆjÌjÎjÏjÐjÑjÒ}r>(jÔ]jÕ]jÖ]j×]r?Urebuilding-ipcr@ajÚ]rAhaujÜKjjÝhjÞ]rB(jà)�rC}rD(jÅXRebuilding IPCrEjÆj<jÎjÏjÐjäjÒ}rF(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÝhjÞ]rGjçXRebuilding IPCrH…�rI}rJ(jÅjEjÆjCubaubj7)�rK}rL(jÅXFhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/Rebuilding_IPCjÆj<jÎj:X<source/rtos/PDK_Platform_Software/IPC/Rebuilding_IPC.rst.incrM…�rN}rObjÐj>jÒ}rP(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rQjçXFhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/Rebuilding_IPCrR…�rS}rT(jÅUjÆjKubaubjò)�rU}rV(jÅX7This page describes how to rebuild the IPC source code.rWjÆj<jÎjNjÐjõjÒ}rX(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rYjçX7This page describes how to rebuild the IPC source code.rZ…�r[}r\(jÅjWjÆjUubaubjò)�r]}r^(jÅX\The IPC product includes source files and build scripts that allow you to modify the IPC sources and rebuild its libraries. You can do this in order to modify, update, or add functionality. If you edit the IPC source code and/or corresponding build scripts, you must also rebuild IPC in order to create new libraries containing these modifications.r_jÆj<jÎjNjÐjõjÒ}r`(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rajçX\The IPC product includes source files and build scripts that allow you to modify the IPC sources and rebuild its libraries. You can do this in order to modify, update, or add functionality. If you edit the IPC source code and/or corresponding build scripts, you must also rebuild IPC in order to create new libraries containing these modifications.rb…�rc}rd(jÅj_jÆj]ubaubjò)�re}rf(jÅX˜Note that you can cause the BIOS-side IPC (and BIOS) libraries to be rebuilt as part of the application build - this is called a 'Custom Build'. The custom-built libraries will be stored with other output from executing your config script, and will contain only modules and APIs that your application needs to access. You can cause such a Custom Build to occur using the BIOS.libType config param as follows.rgjÆj<jÎjNjÐjõjÒ}rh(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rijçX˜Note that you can cause the BIOS-side IPC (and BIOS) libraries to be rebuilt as part of the application build - this is called a 'Custom Build'. The custom-built libraries will be stored with other output from executing your config script, and will contain only modules and APIs that your application needs to access. You can cause such a Custom Build to occur using the BIOS.libType config param as follows.rj…�rk}rl(jÅjgjÆjeubaubj)�rm}rn(jÅXPvar BIOS = xdc.useModule('ti.sysbios.BIOS'); BIOS.libType = BIOS.LibType_Custom;jÆj<jÎjNjÐjjÒ}ro(j@jAj×]jÖ]jÔ]jÕ]rp(UcoderqXcejÚ]ujÜK jÝhjÞ]rr(cdocutils.nodes inline rs)�rt}ru(jÅXvarjÒ}rv(jÔ]jÕ]rwUnamerxajÖ]j×]jÚ]ujÆjmjÞ]ryjçXvarrz…�r{}r|(jÅUjÆjtubajÐUinliner}ubjçX …�r~}r(jÅX jÆjmubjs)�r€}r�(jÅXBIOSjÒ}r‚(jÔ]jÕ]rƒUnamer„ajÖ]j×]jÚ]ujÆjmjÞ]r…jçXBIOSr†…�r‡}rˆ(jÅUjÆj€ubajÐj}ubjçX …�r‰}rŠ(jÅX jÆjmubjs)�r‹}rŒ(jÅX=jÒ}r�(jÔ]jÕ]rŽUoperatorr�ajÖ]j×]jÚ]ujÆjmjÞ]r�jçX=…�r‘}r’(jÅUjÆj‹ubajÐj}ubjçX …�r“}r”(jÅX jÆjmubjs)�r•}r–(jÅXxdcjÒ}r—(jÔ]jÕ]r˜Unamer™ajÖ]j×]jÚ]ujÆjmjÞ]ršjçXxdcr›…�rœ}r�(jÅUjÆj•ubajÐj}ubjs)�rž}rŸ(jÅX.jÒ}r (jÔ]jÕ]r¡U punctuationr¢ajÖ]j×]jÚ]ujÆjmjÞ]r£jçX.…�r¤}r¥(jÅUjÆjžubajÐj}ubjs)�r¦}r§(jÅX useModulejÒ}r¨(jÔ]jÕ]r©UnamerªajÖ]j×]jÚ]ujÆjmjÞ]r«jçX useModuler¬…�r­}r®(jÅUjÆj¦ubajÐj}ubjs)�r¯}r°(jÅX(jÒ}r±(jÔ]jÕ]r²U punctuationr³ajÖ]j×]jÚ]ujÆjmjÞ]r´jçX(…�rµ}r¶(jÅUjÆj¯ubajÐj}ubjs)�r·}r¸(jÅX'jÒ}r¹(jÔ]jÕ]rºUerrorr»ajÖ]j×]jÚ]ujÆjmjÞ]r¼jçX'…�r½}r¾(jÅUjÆj·ubajÐj}ubjs)�r¿}rÀ(jÅXtijÒ}rÁ(jÔ]jÕ]rÂUnamerÃajÖ]j×]jÚ]ujÆjmjÞ]rÄjçXtirÅ…�rÆ}rÇ(jÅUjÆj¿ubajÐj}ubjs)�rÈ}rÉ(jÅX.jÒ}rÊ(jÔ]jÕ]rËU punctuationrÌajÖ]j×]jÚ]ujÆjmjÞ]rÍjçX.…�rÎ}rÏ(jÅUjÆjÈubajÐj}ubjs)�rÐ}rÑ(jÅXsysbiosjÒ}rÒ(jÔ]jÕ]rÓUnamerÔajÖ]j×]jÚ]ujÆjmjÞ]rÕjçXsysbiosrÖ…�r×}rØ(jÅUjÆjÐubajÐj}ubjs)�rÙ}rÚ(jÅX.jÒ}rÛ(jÔ]jÕ]rÜU punctuationrÝajÖ]j×]jÚ]ujÆjmjÞ]rÞjçX.…�rß}rà(jÅUjÆjÙubajÐj}ubjs)�rá}râ(jÅXBIOSjÒ}rã(jÔ]jÕ]räUnameråajÖ]j×]jÚ]ujÆjmjÞ]ræjçXBIOSrç…�rè}ré(jÅUjÆjáubajÐj}ubjs)�rê}rë(jÅX'jÒ}rì(jÔ]jÕ]ríUerrorrîajÖ]j×]jÚ]ujÆjmjÞ]rïjçX'…�rð}rñ(jÅUjÆjêubajÐj}ubjs)�rò}ró(jÅX);jÒ}rô(jÔ]jÕ]rõU punctuationröajÖ]j×]jÚ]ujÆjmjÞ]r÷jçX);rø…�rù}rú(jÅUjÆjòubajÐj}ubjçX …�rû}rü(jÅX jÆjmubjs)�rý}rþ(jÅXBIOSjÒ}rÿ(jÔ]jÕ]rUnamerajÖ]j×]jÚ]ujÆjmjÞ]rjçXBIOSr…�r}r(jÅUjÆjýubajÐj}ubjs)�r}r(jÅX.jÒ}r(jÔ]jÕ]r U punctuationr ajÖ]j×]jÚ]ujÆjmjÞ]r jçX.…�r }r (jÅUjÆjubajÐj}ubjs)�r}r(jÅXlibTypejÒ}r(jÔ]jÕ]rUnamerajÖ]j×]jÚ]ujÆjmjÞ]rjçXlibTyper…�r}r(jÅUjÆjubajÐj}ubjçX …�r}r(jÅX jÆjmubjs)�r}r(jÅX=jÒ}r(jÔ]jÕ]rUoperatorrajÖ]j×]jÚ]ujÆjmjÞ]rjçX=…�r}r (jÅUjÆjubajÐj}ubjçX …�r!}r"(jÅX jÆjmubjs)�r#}r$(jÅXBIOSjÒ}r%(jÔ]jÕ]r&Unamer'ajÖ]j×]jÚ]ujÆjmjÞ]r(jçXBIOSr)…�r*}r+(jÅUjÆj#ubajÐj}ubjs)�r,}r-(jÅX.jÒ}r.(jÔ]jÕ]r/U punctuationr0ajÖ]j×]jÚ]ujÆjmjÞ]r1jçX.…�r2}r3(jÅUjÆj,ubajÐj}ubjs)�r4}r5(jÅXLibType_CustomjÒ}r6(jÔ]jÕ]r7Unamer8ajÖ]j×]jÚ]ujÆjmjÞ]r9jçXLibType_Customr:…�r;}r<(jÅUjÆj4ubajÐj}ubjs)�r=}r>(jÅX;jÒ}r?(jÔ]jÕ]r@U punctuationrAajÖ]j×]jÚ]ujÆjmjÞ]rBjçX;…�rC}rD(jÅUjÆj=ubajÐj}ubeubjë)�rE}rF(jÅXçThis page provides details about rebuilding the IPC source code. We strongly recommend that you copy the IPC installation to a directory with a different name and rebuild that copy, rather than rebuilding the original installation.rGjÆj<jÎjNjÐjïjÒ}rH(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rIjò)�rJ}rK(jÅjGjÆjEjÎjNjÐjõjÒ}rL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rMjçXçThis page provides details about rebuilding the IPC source code. We strongly recommend that you copy the IPC installation to a directory with a different name and rebuild that copy, rather than rebuilding the original installation.rN…�rO}rP(jÅjGjÆjJubaubaubjÇ)�rQ}rR(jÅUjÆj<jÎjNjÐjÑjÒ}rS(jÔ]jÕ]jÖ]j×]rTUbuild-procedurerUajÚ]rVhaujÜKjÝhjÞ]rW(jà)�rX}rY(jÅXBuild ProcedurerZjÆjQjÎjNjÐjäjÒ}r[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r\jçXBuild Procedurer]…�r^}r_(jÅjZjÆjXubaubjò)�r`}ra(jÅXÐThe IPC package now comes bundled with Processor SDK RTOS and can be rebuilt using the top-level makefile located in the Processor SDK RTOS folder. The following commands will build the BIOS-side IPC package.rbjÆjQjÎjNjÐjõjÒ}rc(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rdjçXÐThe IPC package now comes bundled with Processor SDK RTOS and can be rebuilt using the top-level makefile located in the Processor SDK RTOS folder. The following commands will build the BIOS-side IPC package.re…�rf}rg(jÅjbjÆj`ubaubjò)�rh}ri(jÅX Windows ::jÆjQjÎjNjÐjõjÒ}rj(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rkjçXWindowsrl…�rm}rn(jÅXWindowsjÆjhubaubj)�ro}rp(jÅX:cd (Processor SDK RTOS folder) setupenv.bat gmake ipc_biosjÆjQjÎjNjÐjjÒ}rq(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMdjÝhjÞ]rrjçX:cd (Processor SDK RTOS folder) setupenv.bat gmake ipc_biosrs…�rt}ru(jÅUjÆjoubaubjò)�rv}rw(jÅXLinux ::jÆjQjÎjNjÐjõjÒ}rx(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ryjçXLinuxrz…�r{}r|(jÅXLinuxjÆjvubaubj)�r}}r~(jÅXAcd (Processor SDK RTOS folder) source ./setupenv.sh make ipc_biosjÆjQjÎjNjÐjjÒ}r(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMkjÝhjÞ]r€jçXAcd (Processor SDK RTOS folder) source ./setupenv.sh make ipc_biosr�…�r‚}rƒ(jÅUjÆj}ubaubjò)�r„}r…(jÅXAThe IPC package can also be cleaned using the following commands.r†jÆjQjÎjNjÐjõjÒ}r‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÝhjÞ]rˆjçXAThe IPC package can also be cleaned using the following commands.r‰…�rŠ}r‹(jÅj†jÆj„ubaubjò)�rŒ}r�(jÅX Windows ::jÆjQjÎjNjÐjõjÒ}rŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÝhjÞ]r�jçXWindowsr�…�r‘}r’(jÅXWindowsjÆjŒubaubj)�r“}r”(jÅXCcd (Processor SDK RTOS folder) setupenv.bat gmake ipc_cleanjÆjQjÎjNjÐjjÒ}r•(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMtjÝhjÞ]r–jçXCcd (Processor SDK RTOS folder) setupenv.bat gmake ipc_cleanr—…�r˜}r™(jÅUjÆj“ubaubjò)�rš}r›(jÅXLinux ::jÆjQjÎjNjÐjõjÒ}rœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÝhjÞ]r�jçXLinuxrž…�rŸ}r (jÅXLinuxjÆjšubaubj)�r¡}r¢(jÅXBcd (Processor SDK RTOS folder) source ./setupenv.sh make ipc_cleanjÆjQjÎjNjÐjjÒ}r£(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM{jÝhjÞ]r¤jçXBcd (Processor SDK RTOS folder) source ./setupenv.sh make ipc_cleanr¥…�r¦}r§(jÅUjÆj¡ubaubjò)�r¨}r©(jÅXtThe install guides below have been kept here for those using older, legacy versions of IPC outside of Processor SDK.rªjÆjQjÎjNjÐjõjÒ}r«(jÔ]jÕ]jÖ]j×]jÚ]ujÜK3jÝhjÞ]r¬jçXtThe install guides below have been kept here for those using older, legacy versions of IPC outside of Processor SDK.r­…�r®}r¯(jÅjªjÆj¨ubaubjò)�r°}r±(jÅX•The various IPC Install Guides describe the mechanics of rebuilding IPC libraries. Please consult the Install Guide appropriate for your environment.r²jÆjQjÎjNjÐjõjÒ}r³(jÔ]jÕ]jÖ]j×]jÚ]ujÜK5jÝhjÞ]r´jçX•The various IPC Install Guides describe the mechanics of rebuilding IPC libraries. Please consult the Install Guide appropriate for your environment.rµ…�r¶}r·(jÅj²jÆj°ubaubjt)�r¸}r¹(jÅUjÆjQjÎjNjÐjwjÒ}rº(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK9jÝhjÞ]r»(j{)�r¼}r½(jÅXn`IPC Install Guide BIOS `__ - for all-BIOS environmentsjÆj¸jÎjNjÐjjÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¿jò)�rÀ}rÁ(jÅXn`IPC Install Guide BIOS `__ - for all-BIOS environmentsjÆj¼jÎjNjÐjõjÒ}rÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK9jÞ]rÃ(jû)�rÄ}rÅ(jÅXR`IPC Install Guide BIOS `__jÒ}rÆ(UnameXIPC Install Guide BIOSjX5index_Foundational_Components.html#bios-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjÀjÞ]rÇjçXIPC Install Guide BIOSrÈ…�rÉ}rÊ(jÅUjÆjÄubajÐjÿubjçX - for all-BIOS environmentsrË…�rÌ}rÍ(jÅX - for all-BIOS environmentsjÆjÀubeubaubj{)�rÎ}rÏ(jÅXŒ`IPC Install Guide Linux `__ - for environments with a combination of Linux and BIOSjÆj¸jÎjNjÐjjÒ}rÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÑjò)�rÒ}rÓ(jÅXŒ`IPC Install Guide Linux `__ - for environments with a combination of Linux and BIOSjÆjÎjÎjNjÐjõjÒ}rÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÞ]rÕ(jû)�rÖ}r×(jÅXT`IPC Install Guide Linux `__jÒ}rØ(UnameXIPC Install Guide LinuxjX6index_Foundational_Components.html#linux-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjÒjÞ]rÙjçXIPC Install Guide LinuxrÚ…�rÛ}rÜ(jÅUjÆjÖubajÐjÿubjçX8 - for environments with a combination of Linux and BIOSrÝ…�rÞ}rß(jÅX8 - for environments with a combination of Linux and BIOSjÆjÒubeubaubj{)�rà}rá(jÅX‡`IPC Install Guide QNX `__ - for environments with a combination of QNX and BIOS jÆj¸jÎjNjÐjjÒ}râ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rãjò)�rä}rå(jÅX†`IPC Install Guide QNX `__ - for environments with a combination of QNX and BIOSjÆjàjÎjNjÐjõjÒ}ræ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÞ]rç(jû)�rè}ré(jÅXP`IPC Install Guide QNX `__jÒ}rê(UnameXIPC Install Guide QNXjX4index_Foundational_Components.html#qnx-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjäjÞ]rëjçXIPC Install Guide QNXrì…�rí}rî(jÅUjÆjèubajÐjÿubjçX6 - for environments with a combination of QNX and BIOSrï…�rð}rñ(jÅX6 - for environments with a combination of QNX and BIOSjÆjäubeubaubeubeubjÇ)�rò}ró(jÅUjÆj<jÎjNjÐjÑjÒ}rô(jÔ]jÕ]jÖ]j×]rõU'pointing-a-ccs-project-at-a-rebuilt-ipcröajÚ]r÷j+aujÜKAjÝhjÞ]rø(jà)�rù}rú(jÅX'Pointing a CCS Project at a Rebuilt IPCrûjÆjòjÎjNjÐjäjÒ}rü(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÝhjÞ]rýjçX'Pointing a CCS Project at a Rebuilt IPCrþ…�rÿ}r(jÅjûjÆjùubaubjò)�r}r(jÅX’To build your application using the version of IPC you have rebuilt, you must point your project to this rebuilt version by following these steps:rjÆjòjÎjNjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÝhjÞ]rjçX’To build your application using the version of IPC you have rebuilt, you must point your project to this rebuilt version by following these steps:r…�r}r(jÅjjÆjubaubcdocutils.nodes enumerated_list r )�r }r (jÅUjÆjòjÎjNjÐUenumerated_listr jÒ}r (UsuffixrU.j×]jÖ]jÔ]UprefixrUjÕ]jÚ]UenumtyperUarabicrujÜKGjÝhjÞ]r(j{)�r}r(jÅX@Open CCS and select the application project you want to rebuild.rjÆj jÎjNjÐjjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rjò)�r}r(jÅjjÆjjÎjNjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÞ]rjçX@Open CCS and select the application project you want to rebuild.r…�r}r(jÅjjÆjubaubaubj{)�r}r (jÅXÉRight-click on your project and choose **Build Properties**. If you have a configuration project that is separate from your application project, open the build properties for the configuration project.jÆj jÎjNjÐjjÒ}r!(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r"jò)�r#}r$(jÅXÉRight-click on your project and choose **Build Properties**. If you have a configuration project that is separate from your application project, open the build properties for the configuration project.jÆjjÎjNjÐjõjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]r&(jçX'Right-click on your project and choose r'…�r(}r)(jÅX'Right-click on your project and choose jÆj#ubjÚ)�r*}r+(jÅX**Build Properties**jÒ}r,(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#jÞ]r-jçXBuild Propertiesr.…�r/}r0(jÅUjÆj*ubajÐjâubjçXŽ. If you have a configuration project that is separate from your application project, open the build properties for the configuration project.r1…�r2}r3(jÅXŽ. If you have a configuration project that is separate from your application project, open the build properties for the configuration project.jÆj#ubeubaubj{)�r4}r5(jÅXPIn the **CCS Build** category of the Properties dialog, choose the **RTSC** tab.jÆj jÎjNjÐjjÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r7jò)�r8}r9(jÅXPIn the **CCS Build** category of the Properties dialog, choose the **RTSC** tab.jÆj4jÎjNjÐjõjÒ}r:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÞ]r;(jçXIn the r<…�r=}r>(jÅXIn the jÆj8ubjÚ)�r?}r@(jÅX **CCS Build**jÒ}rA(jÔ]jÕ]jÖ]j×]jÚ]ujÆj8jÞ]rBjçX CCS BuildrC…�rD}rE(jÅUjÆj?ubajÐjâubjçX/ category of the Properties dialog, choose the rF…�rG}rH(jÅX/ category of the Properties dialog, choose the jÆj8ubjÚ)�rI}rJ(jÅX**RTSC**jÒ}rK(jÔ]jÕ]jÖ]j×]jÚ]ujÆj8jÞ]rLjçXRTSCrM…�rN}rO(jÅUjÆjIubajÐjâubjçX tab.rP…�rQ}rR(jÅX tab.jÆj8ubeubaubj{)�rS}rT(jÅX£Under the **Products and Repositories** tab, uncheck *all* the boxes for IPC. This ensures that no version is selected. .. image:: ../images/Rebuild_deselect.png jÆj jÎNjÐjjÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rV(jò)�rW}rX(jÅXwUnder the **Products and Repositories** tab, uncheck *all* the boxes for IPC. This ensures that no version is selected.jÆjSjÎjNjÐjõjÒ}rY(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÞ]rZ(jçX Under the r[…�r\}r](jÅX Under the jÆjWubjÚ)�r^}r_(jÅX**Products and Repositories**jÒ}r`(jÔ]jÕ]jÖ]j×]jÚ]ujÆjWjÞ]rajçXProducts and Repositoriesrb…�rc}rd(jÅUjÆj^ubajÐjâubjçX tab, uncheck re…�rf}rg(jÅX tab, uncheck jÆjWubjM)�rh}ri(jÅX*all*jÒ}rj(jÔ]jÕ]jÖ]j×]jÚ]ujÆjWjÞ]rkjçXallrl…�rm}rn(jÅUjÆjhubajÐjUubjçX= the boxes for IPC. This ensures that no version is selected.ro…�rp}rq(jÅX= the boxes for IPC. This ensures that no version is selected.jÆjWubeubjR)�rr}rs(jÅX*.. image:: ../images/Rebuild_deselect.png jÒ}rt(UuriX#rtos/../images/Rebuild_deselect.pngruj×]jÖ]jÔ]jÕ]jX}rvU*jusjÚ]ujÆjSjÞ]jÐjZubeubj{)�rw}rx(jÅXGClick the **Add** button next to the **Products and Repositories** tab.jÆj jÎjNjÐjjÒ}ry(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rzjò)�r{}r|(jÅXGClick the **Add** button next to the **Products and Repositories** tab.jÆjwjÎjNjÐjõjÒ}r}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÞ]r~(jçX Click the r…�r€}r�(jÅX Click the jÆj{ubjÚ)�r‚}rƒ(jÅX**Add**jÒ}r„(jÔ]jÕ]jÖ]j×]jÚ]ujÆj{jÞ]r…jçXAddr†…�r‡}rˆ(jÅUjÆj‚ubajÐjâubjçX button next to the r‰…�rŠ}r‹(jÅX button next to the jÆj{ubjÚ)�rŒ}r�(jÅX**Products and Repositories**jÒ}rŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj{jÞ]r�jçXProducts and Repositoriesr�…�r‘}r’(jÅUjÆjŒubajÐjâubjçX tab.r“…�r”}r•(jÅX tab.jÆj{ubeubaubj{)�r–}r—(jÅXChoose **Select repository from file-system**, and browse to the "packages" directory of the location where you copied and rebuilt IPC. For example, the location may be C:\myIpcBuilds\custom_ipc_1_22_##-##\packages. .. image:: ../images/Rebuild_addrep.png jÆj jÎNjÐjjÒ}r˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r™(jò)�rš}r›(jÅX×Choose **Select repository from file-system**, and browse to the "packages" directory of the location where you copied and rebuilt IPC. For example, the location may be C:\myIpcBuilds\custom_ipc_1_22_##-##\packages.jÆj–jÎjNjÐjõjÒ}rœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]r�(jçXChoose rž…�rŸ}r (jÅXChoose jÆjšubjÚ)�r¡}r¢(jÅX&**Select repository from file-system**jÒ}r£(jÔ]jÕ]jÖ]j×]jÚ]ujÆjšjÞ]r¤jçX"Select repository from file-systemr¥…�r¦}r§(jÅUjÆj¡ubajÐjâubjçX§, and browse to the "packages" directory of the location where you copied and rebuilt IPC. For example, the location may be C:myIpcBuildscustom_ipc_1_22_##-##packages.r¨…�r©}rª(jÅXª, and browse to the "packages" directory of the location where you copied and rebuilt IPC. For example, the location may be C:\myIpcBuilds\custom_ipc_1_22_##-##\packages.jÆjšubeubjR)�r«}r¬(jÅX(.. image:: ../images/Rebuild_addrep.png jÒ}r­(UuriX!rtos/../images/Rebuild_addrep.pngr®j×]jÖ]jÔ]jÕ]jX}r¯U*j®sjÚ]ujÆj–jÞ]jÐjZubeubj{)�r°}r±(jÅX3Click **OK** to apply these changes to the project.r²jÆj jÎjNjÐjjÒ}r³(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r´jò)�rµ}r¶(jÅj²jÆj°jÎjNjÐjõjÒ}r·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÞ]r¸(jçXClick r¹…�rº}r»(jÅXClick jÆjµubjÚ)�r¼}r½(jÅX**OK**jÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµjÞ]r¿jçXOKrÀ…�rÁ}rÂ(jÅUjÆj¼ubajÐjâubjçX' to apply these changes to the project.rÃ…�rÄ}rÅ(jÅX' to apply these changes to the project.jÆjµubeubaubj{)�rÆ}rÇ(jÅXDYou may now rebuild your project using the re-built version of IPC. jÆj jÎjNjÐjjÒ}rÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÉjò)�rÊ}rË(jÅXCYou may now rebuild your project using the re-built version of IPC.rÌjÆjÆjÎjNjÐjõjÒ}rÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]rÎjçXCYou may now rebuild your project using the re-built version of IPC.rÏ…�rÐ}rÑ(jÅjÌjÆjÊubaubaubeubjc)�rÒ}rÓ(jÅUjÆjòjÎjNjÐjfjÒ}rÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÝhjÞ]rÕji)�rÖ}r×(jÅUjlKjÆjÒjÎjNjÐjÜjÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjc)�rÙ}rÚ(jÅUjÆjòjÎjÏjÐjfjÒ}rÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKnjÝhjÞ]rÜji)�rÝ}rÞ(jÅUjlKjÆjÙjÎjÏjÐjÜjÒ}rß(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�rà}rá(jÅUjÆjÌjÎjÏjÐjÑjÒ}râ(jÔ]jÕ]jÖ]j×]rãUipc-transportsräajÚ]råhþaujÜKqjÝhjÞ]ræ(jà)�rç}rè(jÅXIPC TransportsréjÆjàjÎjÏjÐjäjÒ}rê(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÝhjÞ]rëjçXIPC Transportsrì…�rí}rî(jÅjéjÆjçubaubj7)�rï}rð(jÅXIhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_IPC_TransportsjÆjàjÎj:X(source/common/IPC/IPC_Transports.rst.incrñ…�rò}róbjÐj>jÒ}rô(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rõjçXIhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_IPC_Transportsrö…�r÷}rø(jÅUjÆjïubaubjÇ)�rù}rú(jÅUjKjÆjàjÎjòjÐjÑjÒ}rû(jÔ]rüX introductionrýajÕ]jÖ]j×]rþUid11rÿajÚ]ujÜKjÝhjÞ]r(jà)�r}r(jÅX IntroductionrjÆjùjÎjòjÐjäjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rjçX Introductionr…�r}r(jÅjjÆjubaubjò)�r }r (jÅX›IPC transports are the underlying configurable data paths over shared memory and hardware resources, which implement the IPC MessageQ APIs. MessageQ provides a common IPC interface between processors within a system containing a single or multiple KeyStone devices. Communication between the processors is enabled through the use of IPC transports. The transports supplied with the IPC component are shared memory based, capable of intra-device communication. Additional transports, utilizing the QMSS and SRIO LLDs, are supplied via Yocto/bitbake for ARMv7 Linux IPC and PROCSDK PDK for SYS/BIOS DSP IPC, enabling intra-SoC and inter-SoC communication, respectively.r jÆjùjÎjòjÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r jçX›IPC transports are the underlying configurable data paths over shared memory and hardware resources, which implement the IPC MessageQ APIs. MessageQ provides a common IPC interface between processors within a system containing a single or multiple KeyStone devices. Communication between the processors is enabled through the use of IPC transports. The transports supplied with the IPC component are shared memory based, capable of intra-device communication. Additional transports, utilizing the QMSS and SRIO LLDs, are supplied via Yocto/bitbake for ARMv7 Linux IPC and PROCSDK PDK for SYS/BIOS DSP IPC, enabling intra-SoC and inter-SoC communication, respectively.r…�r}r(jÅj jÆj ubaubjò)�r}r(jÅXuThe below table gives an overview of the transport offerings, their location, and the communication path they enable.rjÆjùjÎjòjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rjçXuThe below table gives an overview of the transport offerings, their location, and the communication path they enable.r…�r}r(jÅjjÆjubaubjy )�r}r(jÅUjÆjùjÎNjÐjÔ jÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rj~ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjjÞ]r (jƒ )�r!}r"(jÅUjÒ}r#(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubjƒ )�r$}r%(jÅUjÒ}r&(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubjƒ )�r'}r((jÅUjÒ}r)(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubjƒ )�r*}r+(jÅUjÒ}r,(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubjƒ )�r-}r.(jÅUjÒ}r/(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubjƒ )�r0}r1(jÅUjÒ}r2(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubj¥ )�r3}r4(jÅUjÒ}r5(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r6(j� )�r7}r8(jÅUjÒ}r9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3jÞ]r:(j• )�r;}r<(jÅUjÒ}r=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj7jÞ]r>jò)�r?}r@(jÅX **Transport**rAjÆj;jÎjòjÐjõjÒ}rB(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rCjÚ)�rD}rE(jÅjAjÒ}rF(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?jÞ]rGjçX TransportrH…�rI}rJ(jÅUjÆjDubajÐjâubaubajÐj¢ ubj• )�rK}rL(jÅUjÒ}rM(jÔ]jÕ]jÖ]j×]jÚ]ujÆj7jÞ]rNjò)�rO}rP(jÅX**MessageQ Interface Type**rQjÆjKjÎjòjÐjõjÒ}rR(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rSjÚ)�rT}rU(jÅjQjÒ}rV(jÔ]jÕ]jÖ]j×]jÚ]ujÆjOjÞ]rWjçXMessageQ Interface TyperX…�rY}rZ(jÅUjÆjTubajÐjâubaubajÐj¢ ubj• )�r[}r\(jÅUjÒ}r](jÔ]jÕ]jÖ]j×]jÚ]ujÆj7jÞ]r^jò)�r_}r`(jÅX **Location**rajÆj[jÎjòjÐjõjÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rcjÚ)�rd}re(jÅjajÒ}rf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_jÞ]rgjçXLocationrh…�ri}rj(jÅUjÆjdubajÐjâubaubajÐj¢ ubj• )�rk}rl(jÅUjÒ}rm(jÔ]jÕ]jÖ]j×]jÚ]ujÆj7jÞ]rnjò)�ro}rp(jÅX**Communication Route**rqjÆjkjÎjòjÐjõjÒ}rr(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rsjÚ)�rt}ru(jÅjqjÒ}rv(jÔ]jÕ]jÖ]j×]jÚ]ujÆjojÞ]rwjçXCommunication Routerx…�ry}rz(jÅUjÆjtubajÐjâubaubajÐj¢ ubj• )�r{}r|(jÅUjÒ}r}(jÔ]jÕ]jÖ]j×]jÚ]ujÆj7jÞ]r~jò)�r}r€(jÅX**Enabled Communication Path**r�jÆj{jÎjòjÐjõjÒ}r‚(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rƒjÚ)�r„}r…(jÅj�jÒ}r†(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r‡jçXEnabled Communication Pathrˆ…�r‰}rŠ(jÅUjÆj„ubajÐjâubaubajÐj¢ ubj• )�r‹}rŒ(jÅUjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj7jÞ]rŽjò)�r�}r�(jÅX**Special Considerations**r‘jÆj‹jÎjòjÐjõjÒ}r’(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r“jÚ)�r”}r•(jÅj‘jÒ}r–(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�jÞ]r—jçXSpecial Considerationsr˜…�r™}rš(jÅUjÆj”ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r›}rœ(jÅUjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3jÞ]rž(j• )�rŸ}r (jÅUjÒ}r¡(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›jÞ]r¢jò)�r£}r¤(jÅXTransport Shm...r¥jÆjŸjÎjòjÐjõjÒ}r¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r§jçXTransport Shm...r¨…�r©}rª(jÅj¥jÆj£ubaubajÐj¢ ubj• )�r«}r¬(jÅUjÒ}r­(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›jÞ]r®jò)�r¯}r°(jÅXMessageQ (priority based)r±jÆj«jÎjòjÐjõjÒ}r²(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r³jçXMessageQ (priority based)r´…�rµ}r¶(jÅj±jÆj¯ubaubajÐj¢ ubj• )�r·}r¸(jÅUjÒ}r¹(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›jÞ]rºjò)�r»}r¼(jÅX(IPC component - SYS/BIOS subdirect oriesr½jÆj·jÎjòjÐjõjÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¿jçX(IPC component - SYS/BIOS subdirect oriesrÀ…�rÁ}rÂ(jÅj½jÆj»ubaubajÐj¢ ubj• )�rÃ}rÄ(jÅUjÒ}rÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›jÞ]rÆjò)�rÇ}rÈ(jÅX Shared memoryrÉjÆjÃjÎjòjÐjõjÒ}rÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rËjçX Shared memoryrÌ…�rÍ}rÎ(jÅjÉjÆjÇubaubajÐj¢ ubj• )�rÏ}rÐ(jÅUjÒ}rÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›jÞ]rÒjò)�rÓ}rÔ(jÅXSYS/BIOS DSP to DSPrÕjÆjÏjÎjòjÐjõjÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r×jçXSYS/BIOS DSP to DSPrØ…�rÙ}rÚ(jÅjÕjÆjÓubaubajÐj¢ ubj• )�rÛ}rÜ(jÅUjÒ}rÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›jÞ]rÞjò)�rß}rà(jÅX×There are multiple implementations of Transport Shm delivered within the IPC component Please see the IPC documentation provided with the component for more information on these shared memory transport implementionsrájÆjÛjÎjòjÐjõjÒ}râ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rãjçX×There are multiple implementations of Transport Shm delivered within the IPC component Please see the IPC documentation provided with the component for more information on these shared memory transport implementionsrä…�rå}ræ(jÅjájÆjßubaubajÐj¢ ubejÐj£ ubj� )�rç}rè(jÅUjÒ}ré(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3jÞ]rê(j• )�rë}rì(jÅUjÒ}rí(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçjÞ]rîjò)�rï}rð(jÅXTransport RpmsgrñjÆjëjÎjòjÐjõjÒ}rò(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]rójçXTransport Rpmsgrô…�rõ}rö(jÅjñjÆjïubaubajÐj¢ ubj• )�r÷}rø(jÅUjÒ}rù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçjÞ]rújò)�rû}rü(jÅXMessageQ (priority based)rýjÆj÷jÎjòjÐjõjÒ}rþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]rÿjçXMessageQ (priority based)r…�r}r(jÅjýjÆjûubaubajÐj¢ ubj• )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçjÞ]rjt)�r}r(jÅUjÒ}r (jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjjÞ]r (j{)�r }r (jÅX+IPC component - ARMv7 Linux subdirect oriesjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rjò)�r}r(jÅX+IPC component - ARMv7 Linux subdirect oriesrjÆj jÎjòjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]rjçX+IPC component - ARMv7 Linux subdirect oriesr…�r}r(jÅjjÆjubaubajÐjubj{)�r}r(jÅX(IPC component - SYS/BIOS subdirect oriesjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rjò)�r}r(jÅX(IPC component - SYS/BIOS subdirect oriesrjÆjjÎjòjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÞ]rjçX(IPC component - SYS/BIOS subdirect oriesr …�r!}r"(jÅjjÆjubaubajÐjubj{)�r#}r$(jÅX'Yocto/ bitbake ti-ipc recipe jÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r&jò)�r'}r((jÅXYocto/ bitbake ti-ipc reciper)jÆj#jÎjòjÐjõjÒ}r*(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r+jçXYocto/ bitbake ti-ipc reciper,…�r-}r.(jÅj)jÆj'ubaubajÐjubejÐjwubajÐj¢ ubj• )�r/}r0(jÅUjÒ}r1(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçjÞ]r2jò)�r3}r4(jÅX Shared memoryr5jÆj/jÎjòjÐjõjÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]r7jçX Shared memoryr8…�r9}r:(jÅj5jÆj3ubaubajÐj¢ ubj• )�r;}r<(jÅUjÒ}r=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçjÞ]r>jt)�r?}r@(jÅUjÒ}rA(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj;jÞ]rBj{)�rC}rD(jÅX6ARMv7 Linux to/from SYS/BIOS DSP jÒ}rE(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?jÞ]rFjò)�rG}rH(jÅX ARMv7 Linux to/from SYS/BIOS DSPrIjÆjCjÎjòjÐjõjÒ}rJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]rKjçX ARMv7 Linux to/from SYS/BIOS DSPrL…�rM}rN(jÅjIjÆjGubaubajÐjubajÐjwubajÐj¢ ubj• )�rO}rP(jÅUjÒ}rQ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçjÞ]rRjò)�rS}rT(jÅX[MessageQ messages sent over Transport Rpmsg traveling from/to ARMv7 user space go through the Linux kernel before reaching the DSP. This provides *clean* partitioning between user memory and DSP memory. However, Transport Rpmsg is considered a *slow path* since the user space MessageQ messages must be copied from/to DSP memory by kernel and DSP.jÆjOjÎjòjÐjõjÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]rV(jçX’MessageQ messages sent over Transport Rpmsg traveling from/to ARMv7 user space go through the Linux kernel before reaching the DSP. This provides rW…�rX}rY(jÅX’MessageQ messages sent over Transport Rpmsg traveling from/to ARMv7 user space go through the Linux kernel before reaching the DSP. This provides jÆjSubjM)�rZ}r[(jÅX*clean*jÒ}r\(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]r]jçXcleanr^…�r_}r`(jÅUjÆjZubajÐjUubjçX[ partitioning between user memory and DSP memory. However, Transport Rpmsg is considered a ra…�rb}rc(jÅX[ partitioning between user memory and DSP memory. However, Transport Rpmsg is considered a jÆjSubjM)�rd}re(jÅX *slow path*jÒ}rf(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]rgjçX slow pathrh…�ri}rj(jÅUjÆjdubajÐjUubjçX\ since the user space MessageQ messages must be copied from/to DSP memory by kernel and DSP.rk…�rl}rm(jÅX\ since the user space MessageQ messages must be copied from/to DSP memory by kernel and DSP.jÆjSubeubajÐj¢ ubejÐj£ ubj� )�rn}ro(jÅUjÒ}rp(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3jÞ]rq(j• )�rr}rs(jÅUjÒ}rt(jÔ]jÕ]jÖ]j×]jÚ]ujÆjnjÞ]rujò)�rv}rw(jÅXSYS/BIOS DSP Transport SriorxjÆjrjÎjòjÐjõjÒ}ry(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]rzjçXSYS/BIOS DSP Transport Srior{…�r|}r}(jÅjxjÆjvubaubajÐj¢ ubj• )�r~}r(jÅUjÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÆjnjÞ]r�jò)�r‚}rƒ(jÅXNetworkr„jÆj~jÎjòjÐjõjÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]r†jçXNetworkr‡…�rˆ}r‰(jÅj„jÆj‚ubaubajÐj¢ ubj• )�rŠ}r‹(jÅUjÒ}rŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjnjÞ]r�jò)�rŽ}r�(jÅXPROCSDK RTOS PDKr�jÆjŠjÎjòjÐjõjÒ}r‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]r’jçXPROCSDK RTOS PDKr“…�r”}r•(jÅj�jÆjŽubaubajÐj¢ ubj• )�r–}r—(jÅUjÒ}r˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆjnjÞ]r™jò)�rš}r›(jÅXSRIO LLDrœjÆj–jÎjòjÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]ržjçXSRIO LLDrŸ…�r }r¡(jÅjœjÆjšubaubajÐj¢ ubj• )�r¢}r£(jÅUjÒ}r¤(jÔ]jÕ]jÖ]j×]jÚ]ujÆjnjÞ]r¥jt)�r¦}r§(jÅUjÒ}r¨(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj¢jÞ]r©(j{)�rª}r«(jÅX:SYS/BIOS DSP to/from SYS/BIOS DSP (intra and inter-device)jÒ}r¬(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦jÞ]r­jò)�r®}r¯(jÅX:SYS/BIOS DSP to/from SYS/BIOS DSP (intra and inter-device)r°jÆjªjÎjòjÐjõjÒ}r±(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]r²jçX:SYS/BIOS DSP to/from SYS/BIOS DSP (intra and inter-device)r³…�r´}rµ(jÅj°jÆj®ubaubajÐjubj{)�r¶}r·(jÅX]SYS/BIOS DSP to/from ARMv7 Linux (intra- and inter- device) jÒ}r¸(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦jÞ]r¹jò)�rº}r»(jÅX;SYS/BIOS DSP to/from ARMv7 Linux (intra- and inter- device)r¼jÆj¶jÎjòjÐjõjÒ}r½(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÞ]r¾jçX;SYS/BIOS DSP to/from ARMv7 Linux (intra- and inter- device)r¿…�rÀ}rÁ(jÅj¼jÆjºubaubajÐjubejÐjwubajÐj¢ ubj• )�rÂ}rÃ(jÅUjÒ}rÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjnjÞ]rÅ(jò)�rÆ}rÇ(jÅXTransportSrio can send MessageQ messages to ARMv7 and DSP processors on remote devices in a multiple device system. IPC MultiProc must be configured to be aware of all processors existing on all devices and all devices must be connected over a SRIO interconnect.rÈjÆjÂjÎjòjÐjõjÒ}rÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]rÊjçXTransportSrio can send MessageQ messages to ARMv7 and DSP processors on remote devices in a multiple device system. IPC MultiProc must be configured to be aware of all processors existing on all devices and all devices must be connected over a SRIO interconnect.rË…�rÌ}rÍ(jÅjÈjÆjÆubaubjò)�rÎ}rÏ(jÅX8The main purpose of TransportSrio is for multi-device communication over MessageQ. The transmission latency is greater for this transport due to the latter capability Therefore it is recommended a shared memory or other LLD-based transport is used for intra-device communication due to their lower latency costs.rÐjÆjÂjÎjòjÐjõjÒ}rÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]rÒjçX8The main purpose of TransportSrio is for multi-device communication over MessageQ. The transmission latency is greater for this transport due to the latter capability Therefore it is recommended a shared memory or other LLD-based transport is used for intra-device communication due to their lower latency costs.rÓ…�rÔ}rÕ(jÅjÐjÆjÎubaubejÐj¢ ubejÐj£ ubj� )�rÖ}r×(jÅUjÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3jÞ]rÙ(j• )�rÚ}rÛ(jÅUjÒ}rÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖjÞ]rÝjò)�rÞ}rß(jÅXARMv7 Linux Transport SrioràjÆjÚjÎjòjÐjõjÒ}rá(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]râjçXARMv7 Linux Transport Sriorã…�rä}rå(jÅjàjÆjÞubaubajÐj¢ ubj• )�ræ}rç(jÅUjÒ}rè(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖjÞ]réjò)�rê}rë(jÅXNetworkrìjÆjæjÎjòjÐjõjÒ}rí(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]rîjçXNetworkrï…�rð}rñ(jÅjìjÆjêubaubajÐj¢ ubj• )�rò}ró(jÅUjÒ}rô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖjÞ]rõjò)�rö}r÷(jÅX(Yocto/bit bake ti-transp ort-srio reciperøjÆjòjÎjòjÐjõjÒ}rù(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]rújçX(Yocto/bit bake ti-transp ort-srio reciperû…�rü}rý(jÅjøjÆjöubaubajÐj¢ ubj• )�rþ}rÿ(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖjÞ]rjò)�r}r(jÅXSRIO LLDrjÆjþjÎjòjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]rjçXSRIO LLDr…�r}r (jÅjjÆjubaubajÐj¢ ubj• )�r }r (jÅUjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖjÞ]r jt)�r}r(jÅUjÒ}r(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj jÞ]r(j{)�r}r(jÅX9ARMv7 Linux to/from ARMv7 Linux (intra- and inter-device)jÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rjò)�r}r(jÅX9ARMv7 Linux to/from ARMv7 Linux (intra- and inter-device)rjÆjjÎjòjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]rjçX9ARMv7 Linux to/from ARMv7 Linux (intra- and inter-device)r…�r}r(jÅjjÆjubaubajÐjubj{)�r}r(jÅX]SYS/BIOS DSP to/from ARMv7 Linux (intra- and inter-device) jÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r!jò)�r"}r#(jÅX:SYS/BIOS DSP to/from ARMv7 Linux (intra- and inter-device)r$jÆjjÎjòjÐjõjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÞ]r&jçX:SYS/BIOS DSP to/from ARMv7 Linux (intra- and inter-device)r'…�r(}r)(jÅj$jÆj"ubaubajÐjubejÐjwubajÐj¢ ubj• )�r*}r+(jÅUjÒ}r,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖjÞ]r-(jò)�r.}r/(jÅXTransportSrio can send MessageQ messages to ARMv7 and DSP processors on remote devices in a multiple device system. IPC MultiProc must be configured to be aware of all processors existing on all devices and all devices must be connected over a SRIO interconnect.r0jÆj*jÎjòjÐjõjÒ}r1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]r2jçXTransportSrio can send MessageQ messages to ARMv7 and DSP processors on remote devices in a multiple device system. IPC MultiProc must be configured to be aware of all processors existing on all devices and all devices must be connected over a SRIO interconnect.r3…�r4}r5(jÅj0jÆj.ubaubjò)�r6}r7(jÅX:The main purpose of TransportSrio is for multi-device communication over MessageQ. The transmission latency is greater for this transport due to the latter capability. Therefore, it is recommended a shared memory or other LLD-based transport is used for intra-device communication due to their lower latency costs.r8jÆj*jÎjòjÐjõjÒ}r9(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÞ]r:jçX:The main purpose of TransportSrio is for multi-device communication over MessageQ. The transmission latency is greater for this transport due to the latter capability. Therefore, it is recommended a shared memory or other LLD-based transport is used for intra-device communication due to their lower latency costs.r;…�r<}r=(jÅj8jÆj6ubaubejÐj¢ ubejÐj£ ubj� )�r>}r?(jÅUjÒ}r@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3jÞ]rA(j• )�rB}rC(jÅUjÒ}rD(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>jÞ]rEjò)�rF}rG(jÅXSYS/BIOS DSP Transport QmssrHjÆjBjÎjòjÐjõjÒ}rI(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rJjçXSYS/BIOS DSP Transport QmssrK…�rL}rM(jÅjHjÆjFubaubajÐj¢ ubj• )�rN}rO(jÅUjÒ}rP(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>jÞ]rQjò)�rR}rS(jÅXNetworkrTjÆjNjÎjòjÐjõjÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rVjçXNetworkrW…�rX}rY(jÅjTjÆjRubaubajÐj¢ ubj• )�rZ}r[(jÅUjÒ}r\(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>jÞ]jÐj¢ ubj• )�r]}r^(jÅUjÒ}r_(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>jÞ]r`jò)�ra}rb(jÅXQMSS LLDrcjÆj]jÎjòjÐjõjÒ}rd(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rejçXQMSS LLDrf…�rg}rh(jÅjcjÆjaubaubajÐj¢ ubj• )�ri}rj(jÅUjÒ}rk(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>jÞ]rljt)�rm}rn(jÅUjÒ}ro(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjijÞ]rp(j{)�rq}rr(jÅX!SYS/BIOS DSP to/from SYS/BIOS DSPjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmjÞ]rtjò)�ru}rv(jÅX!SYS/BIOS DSP to/from SYS/BIOS DSPrwjÆjqjÎjòjÐjõjÒ}rx(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]ryjçX!SYS/BIOS DSP to/from SYS/BIOS DSPrz…�r{}r|(jÅjwjÆjuubaubajÐjubj{)�r}}r~(jÅX SYS/BIOS DSP to/from ARMv7 LinuxjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmjÞ]r€jò)�r�}r‚(jÅX SYS/BIOS DSP to/from ARMv7 LinuxrƒjÆj}jÎjòjÐjõjÒ}r„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r…jçX SYS/BIOS DSP to/from ARMv7 Linuxr†…�r‡}rˆ(jÅjƒjÆj�ubaubajÐjubejÐjwubajÐj¢ ubj• )�r‰}rŠ(jÅUjÒ}r‹(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>jÞ]jÐj¢ ubejÐj£ ubj� )�rŒ}r�(jÅUjÒ}rŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3jÞ]r�(j• )�r�}r‘(jÅUjÒ}r’(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒjÞ]jÐj¢ ubj• )�r“}r”(jÅUjÒ}r•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒjÞ]jÐj¢ ubj• )�r–}r—(jÅUjÒ}r˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒjÞ]jÐj¢ ubj• )�r™}rš(jÅUjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒjÞ]jÐj¢ ubj• )�rœ}r�(jÅUjÒ}rž(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒjÞ]rŸjt)�r }r¡(jÅUjÒ}r¢(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjœjÞ]r£(j{)�r¤}r¥(jÅXARMv7 Linux process to process.jÒ}r¦(jÔ]jÕ]jÖ]j×]jÚ]ujÆj jÞ]r§jò)�r¨}r©(jÅXARMv7 Linux process to process.rªjÆj¤jÎjòjÐjõjÒ}r«(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÞ]r¬jçXARMv7 Linux process to process.r­…�r®}r¯(jÅjªjÆj¨ubaubajÐjubj{)�r°}r±(jÅX ARMv7 Linux to/from SYS/BIOS DSPjÒ}r²(jÔ]jÕ]jÖ]j×]jÚ]ujÆj jÞ]r³jò)�r´}rµ(jÅX ARMv7 Linux to/from SYS/BIOS DSPr¶jÆj°jÎjòjÐjõjÒ}r·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK§jÞ]r¸jçX ARMv7 Linux to/from SYS/BIOS DSPr¹…�rº}r»(jÅj¶jÆj´ubaubajÐjubejÐjwubajÐj¢ ubj• )�r¼}r½(jÅUjÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒjÞ]jÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r¿}rÀ(jÅX—The IPC component (ARMv7 and SYS/BIOS) is available in PROCSDK RTOS and Linux installations. It will be installed in /ipc_#_##_##_##. Additionally, the IPC component's ARMv7 source is packaged in a Yocto/bitbake recipe. A user can develop ARMv7 Linux user-space applications with IPC on Keystone I and KeyStone II devices by building the ti-ipc package in Yocto.rÁjÆjùjÎjòjÐjõjÒ}rÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¬jÝhjÞ]rÃjçX—The IPC component (ARMv7 and SYS/BIOS) is available in PROCSDK RTOS and Linux installations. It will be installed in /ipc_#_##_##_##. Additionally, the IPC component's ARMv7 source is packaged in a Yocto/bitbake recipe. A user can develop ARMv7 Linux user-space applications with IPC on Keystone I and KeyStone II devices by building the ti-ipc package in Yocto.rÄ…�rÅ}rÆ(jÅjÁjÆj¿ubaubeubjÇ)�rÇ}rÈ(jÅUjÆjàjÎjòjÐjÑjÒ}rÉ(jÔ]jÕ]jÖ]j×]rÊUmodes-of-operationrËajÚ]rÌh¸aujÜK´jÝhjÞ]rÍ(jà)�rÎ}rÏ(jÅXModes of OperationrÐjÆjÇjÎjòjÐjäjÒ}rÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÝhjÞ]rÒjçXModes of OperationrÓ…�rÔ}rÕ(jÅjÐjÆjÎubaubjÇ)�rÖ}r×(jÅUjKjÆjÇjÎjòjÐjÑjÒ}rØ(jÔ]rÙXsys/bios dsp transportsriorÚajÕ]jÖ]j×]rÛUsys-bios-dsp-transportsriorÜajÚ]ujÜK·jÝhjÞ]rÝ(jà)�rÞ}rß(jÅXSYS/BIOS DSP TransportSrioràjÆjÖjÎjòjÐjäjÒ}rá(jÔ]jÕ]jÖ]j×]jÚ]ujÜK·jÝhjÞ]râjçXSYS/BIOS DSP TransportSriorã…�rä}rå(jÅjàjÆjÞubaubjò)�ræ}rç(jÅX.The following SRIO socket types are supported:rèjÆjÖjÎjòjÐjõjÒ}ré(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¹jÝhjÞ]rêjçX.The following SRIO socket types are supported:rë…�rì}rí(jÅjèjÆjæubaubjò)�rî}rï(jÅX›**TransportSrio_srioSockType_TYPE_9**: In this mode, the SRIO IPC transport will use Type 9 sockets to communicate with other SRIO IPC transport endpoints.jÆjÖjÎjòjÐjõjÒ}rð(jÔ]jÕ]jÖ]j×]jÚ]ujÜK»jÝhjÞ]rñ(jÚ)�rò}ró(jÅX%**TransportSrio_srioSockType_TYPE_9**jÒ}rô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjîjÞ]rõjçX!TransportSrio_srioSockType_TYPE_9rö…�r÷}rø(jÅUjÆjòubajÐjâubjçXv: In this mode, the SRIO IPC transport will use Type 9 sockets to communicate with other SRIO IPC transport endpoints.rù…�rú}rû(jÅXv: In this mode, the SRIO IPC transport will use Type 9 sockets to communicate with other SRIO IPC transport endpoints.jÆjîubeubjò)�rü}rý(jÅX�**TransportSrio_srioSockType_TYPE_11**: In this mode, the SRIO IPC transport will use Type 11 sockets to communicate with other SRIO IPC transport endpoints.jÆjÖjÎjòjÐjõjÒ}rþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¿jÝhjÞ]rÿ(jÚ)�r}r(jÅX&**TransportSrio_srioSockType_TYPE_11**jÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjüjÞ]rjçX"TransportSrio_srioSockType_TYPE_11r…�r}r(jÅUjÆjubajÐjâubjçXw: In this mode, the SRIO IPC transport will use Type 11 sockets to communicate with other SRIO IPC transport endpoints.r…�r}r (jÅXw: In this mode, the SRIO IPC transport will use Type 11 sockets to communicate with other SRIO IPC transport endpoints.jÆjüubeubeubjÇ)�r }r (jÅUjKjÆjÇjÎjòjÐjÑjÒ}r (jÔ]r Xarm linux transportsriorajÕ]jÖ]j×]rUarm-linux-transportsriorajÚ]ujÜKÄjÝhjÞ]r(jà)�r}r(jÅXARM Linux TransportSriorjÆj jÎjòjÐjäjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÄjÝhjÞ]rjçXARM Linux TransportSrior…�r}r(jÅjjÆjubaubjò)�r}r(jÅX.The following SRIO socket types are supported:rjÆj jÎjòjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÆjÝhjÞ]rjçX.The following SRIO socket types are supported:r…�r }r!(jÅjjÆjubaubjò)�r"}r#(jÅX�**sock_TYPE_9**: In this mode, the ARM Linux SRIO IPC transport will use Type 9 sockets to communicate with other SRIO IPC transport endpoints.jÆj jÎjòjÐjõjÒ}r$(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÈjÝhjÞ]r%(jÚ)�r&}r'(jÅX**sock_TYPE_9**jÒ}r((jÔ]jÕ]jÖ]j×]jÚ]ujÆj"jÞ]r)jçX sock_TYPE_9r*…�r+}r,(jÅUjÆj&ubajÐjâubjçX€: In this mode, the ARM Linux SRIO IPC transport will use Type 9 sockets to communicate with other SRIO IPC transport endpoints.r-…�r.}r/(jÅX€: In this mode, the ARM Linux SRIO IPC transport will use Type 9 sockets to communicate with other SRIO IPC transport endpoints.jÆj"ubeubjò)�r0}r1(jÅX‘**sock_TYPE_11**: In this mode, the ARM Linux SRIO IPC transport will use Type 11 sockets to communicate with other SRIO IPC transport endpoints.jÆj jÎjòjÐjõjÒ}r2(jÔ]jÕ]jÖ]j×]jÚ]ujÜKËjÝhjÞ]r3(jÚ)�r4}r5(jÅX**sock_TYPE_11**jÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0jÞ]r7jçX sock_TYPE_11r8…�r9}r:(jÅUjÆj4ubajÐjâubjçX�: In this mode, the ARM Linux SRIO IPC transport will use Type 11 sockets to communicate with other SRIO IPC transport endpoints.r;…�r<}r=(jÅX�: In this mode, the ARM Linux SRIO IPC transport will use Type 11 sockets to communicate with other SRIO IPC transport endpoints.jÆj0ubeubeubjÇ)�r>}r?(jÅUjKjÆjÇjÎjòjÐjÑjÒ}r@(jÔ]rAXsys/bios dsp transportqmssrBajÕ]jÖ]j×]rCUsys-bios-dsp-transportqmssrDajÚ]ujÜKÐjÝhjÞ]rE(jà)�rF}rG(jÅXSYS/BIOS DSP TransportQmssrHjÆj>jÎjòjÐjäjÒ}rI(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÐjÝhjÞ]rJjçXSYS/BIOS DSP TransportQmssrK…�rL}rM(jÅjHjÆjFubaubjò)�rN}rO(jÅX5The following QMSS receive queue types are supported:rPjÆj>jÎjòjÐjõjÒ}rQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÒjÝhjÞ]rRjçX5The following QMSS receive queue types are supported:rS…�rT}rU(jÅjPjÆjNubaubjò)�rV}rW(jÅX�**TransportQmss_queueRcvType_ACCUMULATOR**: In this mode, the QMSS accumulator logic is used as the reception mechanism for the QMSS Transport.jÆj>jÎjòjÐjõjÒ}rX(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÔjÝhjÞ]rY(jÚ)�rZ}r[(jÅX***TransportQmss_queueRcvType_ACCUMULATOR**jÒ}r\(jÔ]jÕ]jÖ]j×]jÚ]ujÆjVjÞ]r]jçX&TransportQmss_queueRcvType_ACCUMULATORr^…�r_}r`(jÅUjÆjZubajÐjâubjçXe: In this mode, the QMSS accumulator logic is used as the reception mechanism for the QMSS Transport.ra…�rb}rc(jÅXe: In this mode, the QMSS accumulator logic is used as the reception mechanism for the QMSS Transport.jÆjVubeubjò)�rd}re(jÅX”**TransportQmss_queueRcvType_QPEND**: In this mode, a QMSS QPEND (direct interrupt) queue is used as the reception mechanism for the QMSS Transport.jÆj>jÎjòjÐjõjÒ}rf(jÔ]jÕ]jÖ]j×]jÚ]ujÜKØjÝhjÞ]rg(jÚ)�rh}ri(jÅX$**TransportQmss_queueRcvType_QPEND**jÒ}rj(jÔ]jÕ]jÖ]j×]jÚ]ujÆjdjÞ]rkjçX TransportQmss_queueRcvType_QPENDrl…�rm}rn(jÅUjÆjhubajÐjâubjçXp: In this mode, a QMSS QPEND (direct interrupt) queue is used as the reception mechanism for the QMSS Transport.ro…�rp}rq(jÅXp: In this mode, a QMSS QPEND (direct interrupt) queue is used as the reception mechanism for the QMSS Transport.jÆjdubeubeubjÇ)�rr}rs(jÅUjKjÆjÇjÎjòjÐjÑjÒ}rt(jÔ]ruXarm linux transportqmssrvajÕ]jÖ]j×]rwUarm-linux-transportqmssrxajÚ]ujÜKÝjÝhjÞ]ry(jà)�rz}r{(jÅXARM Linux TransportQmssr|jÆjrjÎjòjÐjäjÒ}r}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÝjÝhjÞ]r~jçXARM Linux TransportQmssr…�r€}r�(jÅj|jÆjzubaubjò)�r‚}rƒ(jÅXcA QMSS QPEND queue will always be used as the reception mechanism for the ARM Linux QMSS Transport.r„jÆjrjÎjòjÐjõjÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKßjÝhjÞ]r†jçXcA QMSS QPEND queue will always be used as the reception mechanism for the ARM Linux QMSS Transport.r‡…�rˆ}r‰(jÅj„jÆj‚ubaubeubeubjÇ)�rŠ}r‹(jÅUjKjÆjàjÎjòjÐjÑjÒ}rŒ(jÔ]r�jajÕ]jÖ]j×]rŽUid12r�ajÚ]ujÜKãjÝhjÞ]r�(jà)�r‘}r’(jÅXTransport Configurationr“jÆjŠjÎjòjÐjäjÒ}r”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÝhjÞ]r•jçXTransport Configurationr–…�r—}r˜(jÅj“jÆj‘ubaubjÇ)�r™}rš(jÅUjKjÆjŠjÎjòjÐjÑjÒ}r›(jÔ]rœjÚajÕ]jÖ]j×]r�Uid13ržajÚ]ujÜKæjÝhjÞ]rŸ(jà)�r }r¡(jÅXSYS/BIOS DSP TransportSrior¢jÆj™jÎjòjÐjäjÒ}r£(jÔ]jÕ]jÖ]j×]jÚ]ujÜKæjÝhjÞ]r¤jçXSYS/BIOS DSP TransportSrior¥…�r¦}r§(jÅj¢jÆj ubaubjÇ)�r¨}r©(jÅUjKjÆj™jÎjòjÐjÑjÒ}rª(jÔ]r«X"srio serdes and lane configurationr¬ajÕ]jÖ]j×]r­U"srio-serdes-and-lane-configurationr®ajÚ]ujÜKéjÝhjÞ]r¯(jà)�r°}r±(jÅX"SRIO SERDES and Lane Configurationr²jÆj¨jÎjòjÐjäjÒ}r³(jÔ]jÕ]jÖ]j×]jÚ]ujÜKéjÝhjÞ]r´jçX"SRIO SERDES and Lane Configurationrµ…�r¶}r·(jÅj²jÆj°ubaubjò)�r¸}r¹(jÅX2Configuration of the SRIO SERDES and lanes are required before calling any driver APIs. Examples of the initialization sequences for supported EVMs are provided in the TransportSrio example folder. The examples call the SrioDevice_init() API prior to configuring the transport. SrioDevice_init() reference:rºjÆj¨jÎjòjÐjõjÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÜKëjÝhjÞ]r¼jçX2Configuration of the SRIO SERDES and lanes are required before calling any driver APIs. Examples of the initialization sequences for supported EVMs are provided in the TransportSrio example folder. The examples call the SrioDevice_init() API prior to configuring the transport. SrioDevice_init() reference:r½…�r¾}r¿(jÅjºjÆj¸ubaubj)�rÀ}rÁ(jÅX3ti/transport/ipc/c66/srio/example/src/device_srio.cjÆj¨jÎjòjÐjjÒ}rÂ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¦jÝhjÞ]rÃjçX3ti/transport/ipc/c66/srio/example/src/device_srio.crÄ…�rÅ}rÆ(jÅUjÆjÀubaubjò)�rÇ}rÈ(jÅX›Developers can modify the configurations made in the stock device_srio.c to change SRIO endpoint IDs, routing information, lane rates, loopback modes, etc.rÉjÆj¨jÎjòjÐjõjÒ}rÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKõjÝhjÞ]rËjçX›Developers can modify the configurations made in the stock device_srio.c to change SRIO endpoint IDs, routing information, lane rates, loopback modes, etc.rÌ…�rÍ}rÎ(jÅjÉjÆjÇubaubeubjÇ)�rÏ}rÐ(jÅUjKjÆj™jÎjòjÐjÑjÒ}rÑ(jÔ]rÒXapisrÓajÕ]jÖ]j×]rÔUapisrÕajÚ]ujÜKújÝhjÞ]rÖ(jà)�r×}rØ(jÅXAPIsrÙjÆjÏjÎjòjÐjäjÒ}rÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKújÝhjÞ]rÛjçXAPIsrÜ…�rÝ}rÞ(jÅjÙjÆj×ubaubjò)�rß}rà(jÅXAPI reference for application:rájÆjÏjÎjòjÐjõjÒ}râ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKüjÝhjÞ]rãjçXAPI reference for application:rä…�rå}ræ(jÅjájÆjßubaubj)�rç}rè(jÅX4#include jÆjÏjÎjòjÐjjÒ}ré(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM³jÝhjÞ]rêjçX4#include rë…�rì}rí(jÅUjÆjçubaubeubeubjÇ)�rî}rï(jÅUjKjÆjŠjÎjòjÐjÑjÒ}rð(jÔ]rñjajÕ]jÖ]j×]ròUid14róajÚ]ujÜMjÝhjÞ]rô(jà)�rõ}rö(jÅXARM Linux TransportSrior÷jÆjîjÎjòjÐjäjÒ}rø(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rùjçXARM Linux TransportSriorú…�rû}rü(jÅj÷jÆjõubaubjÇ)�rý}rþ(jÅUjKjÆjîjÎjòjÐjÑjÒ}rÿ(jÔ]r j¬ajÕ]jÖ]j×]r Uid15r ajÚ]ujÜMjÝhjÞ]r (jà)�r }r (jÅX"SRIO SERDES and Lane Configurationr jÆjýjÎjòjÐjäjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r jçX"SRIO SERDES and Lane Configurationr …�r }r (jÅj jÆj ubaubjò)�r }r (jÅX`Configuration of the SRIO SERDES and lanes are required before calling any driver APIs. Examples of the initialization sequences for supported EVMs are provided in the TransportSrio test folder. The examples call the SrioDevice_init() API prior to configuring the transport. SrioDevice_init() reference from keystone-linux/ipc-transport git repository:r jÆjýjÎjòjÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r jçX`Configuration of the SRIO SERDES and lanes are required before calling any driver APIs. Examples of the initialization sequences for supported EVMs are provided in the TransportSrio test folder. The examples call the SrioDevice_init() API prior to configuring the transport. SrioDevice_init() reference from keystone-linux/ipc-transport git repository:r …�r }r (jÅj jÆj ubaubj)�r }r (jÅX4linux/srio/test/[consumer or producer]_device_srio.cjÆjýjÎjòjÐjjÒ}r (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÄjÝhjÞ]r jçX4linux/srio/test/[consumer or producer]_device_srio.cr …�r }r (jÅUjÆj ubaubjò)�r }r (jÅX›Developers can modify the configurations made in the stock device_srio.c to change SRIO endpoint IDs, routing information, lane rates, loopback modes, etc.r jÆjýjÎjòjÐjõjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r jçX›Developers can modify the configurations made in the stock device_srio.c to change SRIO endpoint IDs, routing information, lane rates, loopback modes, etc.r …�r! }r" (jÅj jÆj ubaubeubjÇ)�r# }r$ (jÅUjÆjîjÎjòjÐjÑjÒ}r% (jÔ]jÕ]jÖ]j×]r& U mpm-transport-srio-configurationr' ajÚ]r( hAaujÜMjÝhjÞ]r) (jà)�r* }r+ (jÅX MPM Transport SRIO Configurationr, jÆj# jÎjòjÐjäjÒ}r- (jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r. jçX MPM Transport SRIO Configurationr/ …�r0 }r1 (jÅj, jÆj* ubaubjò)�r2 }r3 (jÅXjTransportSrio leverages MPM Transport in order to manage configuration of the QMSS, CPPI, and SRIO LLDs. As a result, the transport's descriptor and descriptor buffer management is pushed to MPM Transport in the ARM Linux version of TransportSrio. The MPM Transport JSON configuration file can be modified to change QMSS descriptor and buffer related parameters.r4 jÆj# jÎjòjÐjõjÒ}r5 (jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r6 jçXjTransportSrio leverages MPM Transport in order to manage configuration of the QMSS, CPPI, and SRIO LLDs. As a result, the transport's descriptor and descriptor buffer management is pushed to MPM Transport in the ARM Linux version of TransportSrio. The MPM Transport JSON configuration file can be modified to change QMSS descriptor and buffer related parameters.r7 …�r8 }r9 (jÅj4 jÆj2 ubaubjò)�r: }r; (jÅXiThe MPM Transport JSON configuration file is located in the Linux file system at /etc/mpm/mpm_config.jsonr< jÆj# jÎjòjÐjõjÒ}r= (jÔ]jÕ]jÖ]j×]jÚ]ujÜM!jÝhjÞ]r> jçXiThe MPM Transport JSON configuration file is located in the Linux file system at /etc/mpm/mpm_config.jsonr? …�r@ }rA (jÅj< jÆj: ubaubeubjÇ)�rB }rC (jÅUjKjÆjîjÎjòjÐjÑjÒ}rD (jÔ]rE jÓajÕ]jÖ]j×]rF Uid16rG ajÚ]ujÜM%jÝhjÞ]rH (jà)�rI }rJ (jÅXAPIsrK jÆjB jÎjòjÐjäjÒ}rL (jÔ]jÕ]jÖ]j×]jÚ]ujÜM%jÝhjÞ]rM jçXAPIsrN …�rO }rP (jÅjK jÆjI ubaubjò)�rQ }rR (jÅXOAPI reference for application from keystone-linux/ipc-transport git repository:rS jÆjB jÎjòjÐjõjÒ}rT (jÔ]jÕ]jÖ]j×]jÚ]ujÜM'jÝhjÞ]rU jçXOAPI reference for application from keystone-linux/ipc-transport git repository:rV …�rW }rX (jÅjS jÆjQ ubaubj)�rY }rZ (jÅX%#include jÆjB jÎjòjÐjjÒ}r[ (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMßjÝhjÞ]r\ jçX%#include r] …�r^ }r_ (jÅUjÆjY ubaubeubeubjÇ)�r` }ra (jÅUjKjÆjŠjÎjòjÐjÑjÒ}rb (jÔ]rc jBajÕ]jÖ]j×]rd Uid17re ajÚ]ujÜM/jÝhjÞ]rf (jà)�rg }rh (jÅXSYS/BIOS DSP TransportQmssri jÆj` jÎjòjÐjäjÒ}rj (jÔ]jÕ]jÖ]j×]jÚ]ujÜM/jÝhjÞ]rk jçXSYS/BIOS DSP TransportQmssrl …�rm }rn (jÅji jÆjg ubaubjÇ)�ro }rp (jÅUjKjÆj` jÎjòjÐjÑjÒ}rq (jÔ]rr Xapisrs ajÕ]jÖ]j×]rt Uid18ru ajÚ]ujÜM2jÝhjÞ]rv (jà)�rw }rx (jÅXAPIsry jÆjo jÎjòjÐjäjÒ}rz (jÔ]jÕ]jÖ]j×]jÚ]ujÜM2jÝhjÞ]r{ jçXAPIsr| …�r} }r~ (jÅjy jÆjw ubaubjò)�r }r€ (jÅXAPI reference for application:r� jÆjo jÎjòjÐjõjÒ}r‚ (jÔ]jÕ]jÖ]j×]jÚ]ujÜM4jÝhjÞ]rƒ jçXAPI reference for application:r„ …�r… }r† (jÅj� jÆj ubaubj)�r‡ }rˆ (jÅX4#include jÆjo jÎjòjÐjjÒ}r‰ (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMëjÝhjÞ]rŠ jçX4#include r‹ …�rŒ }r� (jÅUjÆj‡ ubaubeubeubjÇ)�rŽ }r� (jÅUjKjÆjŠjÎjòjÐjÑjÒ}r� (jÔ]r‘ jvajÕ]jÖ]j×]r’ Uid19r“ ajÚ]ujÜM;jÝhjÞ]r” (jà)�r• }r– (jÅXARM Linux TransportQmssr— jÆjŽ jÎjòjÐjäjÒ}r˜ (jÔ]jÕ]jÖ]j×]jÚ]ujÜM;jÝhjÞ]r™ jçXARM Linux TransportQmssrš …�r› }rœ (jÅj— jÆj• ubaubjÇ)�r� }rž (jÅUjÆjŽ jÎjòjÐjÑjÒ}rŸ (jÔ]jÕ]jÖ]j×]r  U mpm-transport-qmss-configurationr¡ ajÚ]r¢ j~aujÜM>jÝhjÞ]r£ (jà)�r¤ }r¥ (jÅX MPM Transport QMSS Configurationr¦ jÆj� jÎjòjÐjäjÒ}r§ (jÔ]jÕ]jÖ]j×]jÚ]ujÜM>jÝhjÞ]r¨ jçX MPM Transport QMSS Configurationr© …�rª }r« (jÅj¦ jÆj¤ ubaubjò)�r¬ }r­ (jÅXcTransportQmss leverages MPM Transport in order to manage configuration of the QMSS and CPPI LLDs. As a result, the transport's descriptor and descriptor buffer management is pushed to MPM Transport in the ARM Linux version of TransportQmss. The MPM Transport JSON configuration file can be modified to change QMSS descriptor and buffer related parameters.r® jÆj� jÎjòjÐjõjÒ}r¯ (jÔ]jÕ]jÖ]j×]jÚ]ujÜM@jÝhjÞ]r° jçXcTransportQmss leverages MPM Transport in order to manage configuration of the QMSS and CPPI LLDs. As a result, the transport's descriptor and descriptor buffer management is pushed to MPM Transport in the ARM Linux version of TransportQmss. The MPM Transport JSON configuration file can be modified to change QMSS descriptor and buffer related parameters.r± …�r² }r³ (jÅj® jÆj¬ ubaubjò)�r´ }rµ (jÅXiThe MPM Transport JSON configuration file is located in the Linux file system at /etc/mpm/mpm_config.jsonr¶ jÆj� jÎjòjÐjõjÒ}r· (jÔ]jÕ]jÖ]j×]jÚ]ujÜMFjÝhjÞ]r¸ jçXiThe MPM Transport JSON configuration file is located in the Linux file system at /etc/mpm/mpm_config.jsonr¹ …�rº }r» (jÅj¶ jÆj´ ubaubeubjÇ)�r¼ }r½ (jÅUjKjÆjŽ jÎjòjÐjÑjÒ}r¾ (jÔ]r¿ XapisrÀ ajÕ]jÖ]j×]rÁ Uid20r ajÚ]ujÜMJjÝhjÞ]rà (jà)�rÄ }rÅ (jÅXAPIsrÆ jÆj¼ jÎjòjÐjäjÒ}rÇ (jÔ]jÕ]jÖ]j×]jÚ]ujÜMJjÝhjÞ]rÈ jçXAPIsrÉ …�rÊ }rË (jÅjÆ jÆjÄ ubaubjò)�rÌ }rÍ (jÅXOAPI reference for application from keystone-linux/ipc-transport git repository:rÎ jÆj¼ jÎjòjÐjõjÒ}rÏ (jÔ]jÕ]jÖ]j×]jÚ]ujÜMLjÝhjÞ]rÐ jçXOAPI reference for application from keystone-linux/ipc-transport git repository:rÑ …�rÒ }rÓ (jÅjÎ jÆjÌ ubaubj)�rÔ }rÕ (jÅX%#include jÆj¼ jÎjòjÐjjÒ}rÖ (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]r× jçX%#include rØ …�rÙ }rÚ (jÅUjÆjÔ ubaubeubeubeubjÇ)�rÛ }rÜ (jÅUjÆjàjÎjòjÐjÑjÒ}rÝ (jÔ]jÕ]jÖ]j×]rÞ U!source-delivery-and-recompilationrß ajÚ]rà jZaujÜMTjÝhjÞ]rá (jà)�râ }rã (jÅX!Source Delivery and Recompilationrä jÆjÛ jÎjòjÐjäjÒ}rå (jÔ]jÕ]jÖ]j×]jÚ]ujÜMTjÝhjÞ]ræ jçX!Source Delivery and Recompilationrç …�rè }ré (jÅjä jÆjâ ubaubjÇ)�rê }rë (jÅUjKjÆjÛ jÎjòjÐjÑjÒ}rì (jÔ]rí Xsys/bios dsp transportsriorî ajÕ]jÖ]j×]rï Uid21rð ajÚ]ujÜMWjÝhjÞ]rñ (jà)�rò }ró (jÅXSYS/BIOS DSP TransportSriorô jÆjê jÎjòjÐjäjÒ}rõ (jÔ]jÕ]jÖ]j×]jÚ]ujÜMWjÝhjÞ]rö jçXSYS/BIOS DSP TransportSrior÷ …�rø }rù (jÅjô jÆjò ubaubjò)�rú }rû (jÅX~The SYS/BIOS DSP TransportSrio source code and examples are delivered within the PROCSDK RTOS PDK component. DSP TransportSrio can be rebuilt using the environment setup scripts provided with the PDK package. DSP TransportSrio example applications are created as part of the pdkProjectCreate scripts. They can be imported and built the same as PDK LLD example and test CCS projects.rü jÆjê jÎjòjÐjõjÒ}rý (jÔ]jÕ]jÖ]j×]jÚ]ujÜMYjÝhjÞ]rþ jçX~The SYS/BIOS DSP TransportSrio source code and examples are delivered within the PROCSDK RTOS PDK component. DSP TransportSrio can be rebuilt using the environment setup scripts provided with the PDK package. DSP TransportSrio example applications are created as part of the pdkProjectCreate scripts. They can be imported and built the same as PDK LLD example and test CCS projects.rÿ …�r!}r!(jÅjü jÆjú ubaubjÇ)�r!}r!(jÅUjKjÆjê jÎjòjÐjÑjÒ}r!(jÔ]r!Xrecompiling on windowsr!ajÕ]jÖ]j×]r!Urecompiling-on-windowsr!ajÚ]ujÜMajÝhjÞ]r !(jà)�r !}r !(jÅXRecompiling on Windowsr !jÆj!jÎjòjÐjäjÒ}r !(jÔ]jÕ]jÖ]j×]jÚ]ujÜMajÝhjÞ]r!jçXRecompiling on Windowsr!…�r!}r!(jÅj !jÆj !ubaubj )�r!}r!(jÅUjÆj!jÎjòjÐj jÒ}r!(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMcjÝhjÞ]r!(j{)�r!}r!(jÅXKOpen a Windows command terminal and navigate to /packages.jÆj!jÎjòjÐjjÒ}r!(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r!jò)�r!}r!(jÅXKOpen a Windows command terminal and navigate to /packages.r!jÆj!jÎjòjÐjõjÒ}r!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMcjÞ]r!jçXKOpen a Windows command terminal and navigate to /packages.r!…�r !}r!!(jÅj!jÆj!ubaubaubj{)�r"!}r#!(jÅX$Run pdksetupenv.bat >pdksetupenv.batjÆj!jÎjòjÐjjÒ}r$!(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r%!jò)�r&!}r'!(jÅX$Run pdksetupenv.bat >pdksetupenv.batr(!jÆj"!jÎjòjÐjõjÒ}r)!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMejÞ]r*!jçX$Run pdksetupenv.bat >pdksetupenv.batr+!…�r,!}r-!(jÅj(!jÆj&!ubaubaubj{)�r.!}r/!(jÅXBNavigate to /packages/ti/transport/ipc/c66/srio/r0!jÆj!jÎjòjÐjjÒ}r1!(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r2!jò)�r3!}r4!(jÅj0!jÆj.!jÎjòjÐjõjÒ}r5!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMgjÞ]r6!jçXBNavigate to /packages/ti/transport/ipc/c66/srio/r7!…�r8!}r9!(jÅj0!jÆj3!ubaubaubj{)�r:!}r;!(jÅX,Build the IPC SRIO Transport library >gmake jÆj!jÎjòjÐjjÒ}r!}r?!(jÅX+Build the IPC SRIO Transport library >gmaker@!jÆj:!jÎjòjÐjõjÒ}rA!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMhjÞ]rB!jçX+Build the IPC SRIO Transport library >gmakerC!…�rD!}rE!(jÅj@!jÆj>!ubaubaubeubjò)�rF!}rG!(jÅXLIssue the following commands if the SRIO transport ever needs to be rebuilt:rH!jÆj!jÎjòjÐjõjÒ}rI!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMkjÝhjÞ]rJ!jçXLIssue the following commands if the SRIO transport ever needs to be rebuilt:rK!…�rL!}rM!(jÅjH!jÆjF!ubaubjò)�rN!}rO!(jÅX>gmake clean >gmakerP!jÆj!jÎjòjÐjõjÒ}rQ!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMnjÝhjÞ]rR!jçX>gmake clean >gmakerS!…�rT!}rU!(jÅjP!jÆjN!ubaubeubjÇ)�rV!}rW!(jÅUjKjÆjê jÎjòjÐjÑjÒ}rX!(jÔ]rY!Xrecompiling on linuxrZ!ajÕ]jÖ]j×]r[!Urecompiling-on-linuxr\!ajÚ]ujÜMrjÝhjÞ]r]!(jà)�r^!}r_!(jÅXRecompiling on Linuxr`!jÆjV!jÎjòjÐjäjÒ}ra!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMrjÝhjÞ]rb!jçXRecompiling on Linuxrc!…�rd!}re!(jÅj`!jÆj^!ubaubj )�rf!}rg!(jÅUjÆjV!jÎjòjÐj jÒ}rh!(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMtjÝhjÞ]ri!(j{)�rj!}rk!(jÅXFOpen a Linux bash terminal and navigate to /packages.jÆjf!jÎjòjÐjjÒ}rl!(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rm!jò)�rn!}ro!(jÅXFOpen a Linux bash terminal and navigate to /packages.rp!jÆjj!jÎjòjÐjõjÒ}rq!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMtjÞ]rr!jçXFOpen a Linux bash terminal and navigate to /packages.rs!…�rt!}ru!(jÅjp!jÆjn!ubaubaubj{)�rv!}rw!(jÅX*Run pdksetupenv.sh $ source pdksetupenv.shjÆjf!jÎjòjÐjjÒ}rx!(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ry!jò)�rz!}r{!(jÅX*Run pdksetupenv.sh $ source pdksetupenv.shr|!jÆjv!jÎjòjÐjõjÒ}r}!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMvjÞ]r~!jçX*Run pdksetupenv.sh $ source pdksetupenv.shr!…�r€!}r�!(jÅj|!jÆjz!ubaubaubj{)�r‚!}rƒ!(jÅXBNavigate to /packages/ti/transport/ipc/c66/srio/r„!jÆjf!jÎjòjÐjjÒ}r…!(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r†!jò)�r‡!}rˆ!(jÅj„!jÆj‚!jÎjòjÐjõjÒ}r‰!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMxjÞ]rŠ!jçXBNavigate to /packages/ti/transport/ipc/c66/srio/r‹!…�rŒ!}r�!(jÅj„!jÆj‡!ubaubaubj{)�rŽ!}r�!(jÅX,Build the IPC SRIO Transport library $ make jÆjf!jÎjòjÐjjÒ}r�!(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‘!jò)�r’!}r“!(jÅX+Build the IPC SRIO Transport library $ maker”!jÆjŽ!jÎjòjÐjõjÒ}r•!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMyjÞ]r–!jçX+Build the IPC SRIO Transport library $ maker—!…�r˜!}r™!(jÅj”!jÆj’!ubaubaubeubjò)�rš!}r›!(jÅXLIssue the following commands if the SRIO transport ever needs to be rebuilt:rœ!jÆjV!jÎjòjÐjõjÒ}r�!(jÔ]jÕ]jÖ]j×]jÚ]ujÜM|jÝhjÞ]rž!jçXLIssue the following commands if the SRIO transport ever needs to be rebuilt:rŸ!…�r !}r¡!(jÅjœ!jÆjš!ubaubjò)�r¢!}r£!(jÅX$ make clean $ maker¤!jÆjV!jÎjòjÐjõjÒ}r¥!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r¦!jçX$ make clean $ maker§!…�r¨!}r©!(jÅj¤!jÆj¢!ubaubeubeubjÇ)�rª!}r«!(jÅUjÆjÛ jÎjòjÐjÑjÒ}r¬!(jÔ]jÕ]jÖ]j×]r­!U9arm-linux-transportsrio-source-delivery-and-recompilationr®!ajÚ]r¯!h‹aujÜMƒjÝhjÞ]r°!(jà)�r±!}r²!(jÅX9ARM Linux TransportSrio Source Delivery and Recompilationr³!jÆjª!jÎjòjÐjäjÒ}r´!(jÔ]jÕ]jÖ]j×]jÚ]ujÜMƒjÝhjÞ]rµ!jçX9ARM Linux TransportSrio Source Delivery and Recompilationr¶!…�r·!}r¸!(jÅj³!jÆj±!ubaubjò)�r¹!}rº!(jÅXëThe ARM Linux TransportSrio source code can be downloaded and built two ways. The transport source code is delivered and built as part of Yocto/bitbake. The source code can also be downloaded and built directly from the GIT repository.r»!jÆjª!jÎjòjÐjõjÒ}r¼!(jÔ]jÕ]jÖ]j×]jÚ]ujÜM…jÝhjÞ]r½!jçXëThe ARM Linux TransportSrio source code can be downloaded and built two ways. The transport source code is delivered and built as part of Yocto/bitbake. The source code can also be downloaded and built directly from the GIT repository.r¾!…�r¿!}rÀ!(jÅj»!jÆj¹!ubaubjÇ)�rÁ!}rÂ!(jÅUjKjÆjª!jÎjòjÐjÑjÒ}rÃ!(jÔ]rÄ!X!recompiling through yocto/bitbakerÅ!ajÕ]jÖ]j×]rÆ!U!recompiling-through-yocto-bitbakerÇ!ajÚ]ujÜM‹jÝhjÞ]rÈ!(jà)�rÉ!}rÊ!(jÅX!Recompiling Through Yocto/bitbakerË!jÆjÁ!jÎjòjÐjäjÒ}rÌ!(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‹jÝhjÞ]rÍ!jçX!Recompiling Through Yocto/bitbakerÎ!…�rÏ!}rÐ!(jÅjË!jÆjÉ!ubaubj )�rÑ!}rÒ!(jÅUjÆjÁ!jÎjòjÐj jÒ}rÓ!(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM�jÝhjÞ]rÔ!(j{)�rÕ!}rÖ!(jÅX¹Follow the instructions in the Exploring section of the user guide to configure the `Yocto build environment `__. The tisdk-server-rootfs-image does not need to be built. Instead look at the section for `building other components `__jÆjÑ!jÎjòjÐjjÒ}r×!(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rØ!jò)�rÙ!}rÚ!(jÅX¹Follow the instructions in the Exploring section of the user guide to configure the `Yocto build environment `__. The tisdk-server-rootfs-image does not need to be built. Instead look at the section for `building other components `__jÆjÕ!jÎjòjÐjõjÒ}rÛ!(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]rÜ!(jçXTFollow the instructions in the Exploring section of the user guide to configure the rÝ!…�rÞ!}rß!(jÅXTFollow the instructions in the Exploring section of the user guide to configure the jÆjÙ!ubjû)�rà!}rá!(jÅX€`Yocto build environment `__jÒ}râ!(UnameXYocto build environmentjXbhttp://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Overview_Building_the_SDK.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆjÙ!jÞ]rã!jçXYocto build environmenträ!…�rå!}ræ!(jÅUjÆjà!ubajÐjÿubjçX[. The tisdk-server-rootfs-image does not need to be built. Instead look at the section for rç!…�rè!}ré!(jÅX[. The tisdk-server-rootfs-image does not need to be built. Instead look at the section for jÆjÙ!ubjû)�rê!}rë!(jÅXŠ`building other components `__jÒ}rì!(UnameXbuilding other componentsjXjhttp://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Overview_Building_the_SDK.html#recipesj×]jÖ]jÔ]jÕ]jÚ]ujÆjÙ!jÞ]rí!jçXbuilding other componentsrî!…�rï!}rð!(jÅUjÆjê!ubajÐjÿubeubaubj{)�rñ!}rò!(jÅX2Build the TransportSrio libraries, ipc-transport-srio recipe, and user-space tests, ipc-transport-srio-test recipe: $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-srio $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-srio-test .. note:: The initial build may take quite some time since the kernel is built as a dependency .. note:: Building with just the ipc-transport-srio-test recipe will also build the ipc-transport-srio recipe since the test recipe depends on the library recipe. jÆjÑ!jÎNjÐjjÒ}ró!(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rô!(jò)�rõ!}rö!(jÅX&Build the TransportSrio libraries, ipc-transport-srio recipe, and user-space tests, ipc-transport-srio-test recipe: $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-srio $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-srio-testr÷!jÆjñ!jÎjòjÐjõjÒ}rø!(jÔ]jÕ]jÖ]j×]jÚ]ujÜM“jÞ]rù!jçX&Build the TransportSrio libraries, ipc-transport-srio recipe, and user-space tests, ipc-transport-srio-test recipe: $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-srio $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-srio-testrú!…�rû!}rü!(jÅj÷!jÆjõ!ubaubjë)�rý!}rþ!(jÅXTThe initial build may take quite some time since the kernel is built as a dependencyrÿ!jÒ}r"(jÔ]jÕ]jÖ]j×]jÚ]ujÆjñ!jÞ]r"jò)�r"}r"(jÅjÿ!jÆjý!jÎjòjÐjõjÒ}r"(jÔ]jÕ]jÖ]j×]jÚ]ujÜM›jÞ]r"jçXTThe initial build may take quite some time since the kernel is built as a dependencyr"…�r"}r"(jÅjÿ!jÆj"ubaubajÐjïubjë)�r "}r "(jÅX˜Building with just the ipc-transport-srio-test recipe will also build the ipc-transport-srio recipe since the test recipe depends on the library recipe.jÒ}r "(jÔ]jÕ]jÖ]j×]jÚ]ujÆjñ!jÞ]r "jò)�r "}r"(jÅX˜Building with just the ipc-transport-srio-test recipe will also build the ipc-transport-srio recipe since the test recipe depends on the library recipe.r"jÆj "jÎjòjÐjõjÒ}r"(jÔ]jÕ]jÖ]j×]jÚ]ujÜMžjÞ]r"jçX˜Building with just the ipc-transport-srio-test recipe will also build the ipc-transport-srio recipe since the test recipe depends on the library recipe.r"…�r"}r"(jÅj"jÆj "ubaubajÐjïubeubj{)�r"}r"(jÅX4The built TransportSrio static library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-srio//packages-split/ipc-transport-srio-staticdev/usr/lib/libTransportSrio.a The built TransportSrio shared library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-srio//packages-split/ipc-transport-srio/usr/lib/libTransportSrio.so.1.0.0jÆjÑ!jÎjòjÐjjÒ}r"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r"jò)�r"}r"(jÅX4The built TransportSrio static library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-srio//packages-split/ipc-transport-srio-staticdev/usr/lib/libTransportSrio.a The built TransportSrio shared library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-srio//packages-split/ipc-transport-srio/usr/lib/libTransportSrio.so.1.0.0r"jÆj"jÎjòjÐjõjÒ}r"(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¡jÞ]r"jçX4The built TransportSrio static library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-srio//packages-split/ipc-transport-srio-staticdev/usr/lib/libTransportSrio.a The built TransportSrio shared library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-srio//packages-split/ipc-transport-srio/usr/lib/libTransportSrio.so.1.0.0r"…�r"}r "(jÅj"jÆj"ubaubaubj{)�r!"}r""(jÅXfThe ipc-transport-srio-test recipe will build test static and shared library executables for all supported devices. The executables will be located in base_path>/oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-srio-test//packages-split/ipc-transport-srio-test/usr/bin/ jÆjÑ!jÎjòjÐjjÒ}r#"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r$"jò)�r%"}r&"(jÅXeThe ipc-transport-srio-test recipe will build test static and shared library executables for all supported devices. The executables will be located in base_path>/oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-srio-test//packages-split/ipc-transport-srio-test/usr/bin/r'"jÆj!"jÎjòjÐjõjÒ}r("(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¥jÞ]r)"jçXeThe ipc-transport-srio-test recipe will build test static and shared library executables for all supported devices. The executables will be located in base_path>/oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-srio-test//packages-split/ipc-transport-srio-test/usr/bin/r*"…�r+"}r,"(jÅj'"jÆj%"ubaubaubeubeubjÇ)�r-"}r."(jÅUjKjÆjª!jÎjòjÐjÑjÒ}r/"(jÔ]r0"X"recompiling through git repositoryr1"ajÕ]jÖ]j×]r2"U"recompiling-through-git-repositoryr3"ajÚ]ujÜM«jÝhjÞ]r4"(jà)�r5"}r6"(jÅX"Recompiling Through GIT Repositoryr7"jÆj-"jÎjòjÐjäjÒ}r8"(jÔ]jÕ]jÖ]j×]jÚ]ujÜM«jÝhjÞ]r9"jçX"Recompiling Through GIT Repositoryr:"…�r;"}r<"(jÅj7"jÆj5"ubaubjò)�r="}r>"(jÅX4Recompiling through the ARM Linux TransportSrio GIT repository requires that the latest PROCSDK Linux installation. The PROCSDK Linux PDK component and the Linux devkit must be installed. The Linux devkit installation script can be found in /procsdk_linux_3_XX_YY_ZZ/linux-devkit/r?"jÆj-"jÎjòjÐjõjÒ}r@"(jÔ]jÕ]jÖ]j×]jÚ]ujÜM­jÝhjÞ]rA"jçX4Recompiling through the ARM Linux TransportSrio GIT repository requires that the latest PROCSDK Linux installation. The PROCSDK Linux PDK component and the Linux devkit must be installed. The Linux devkit installation script can be found in /procsdk_linux_3_XX_YY_ZZ/linux-devkit/rB"…�rC"}rD"(jÅj?"jÆj="ubaubj )�rE"}rF"(jÅUjÆj-"jÎjòjÐj jÒ}rG"(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM³jÝhjÞ]rH"(j{)�rI"}rJ"(jÅXClone the keystone-linux/ipc-transport repository from git.ti.com $ git clone git://git.ti.com/keystone-linux/ipc-transport.gitjÆjE"jÎjòjÐjjÒ}rK"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rL"jò)�rM"}rN"(jÅXClone the keystone-linux/ipc-transport repository from git.ti.com $ git clone git://git.ti.com/keystone-linux/ipc-transport.gitrO"jÆjI"jÎjòjÐjõjÒ}rP"(jÔ]jÕ]jÖ]j×]jÚ]ujÜM³jÞ]rQ"jçXClone the keystone-linux/ipc-transport repository from git.ti.com $ git clone git://git.ti.com/keystone-linux/ipc-transport.gitrR"…�rS"}rT"(jÅjO"jÆjM"ubaubaubj{)�rU"}rV"(jÅXúNavigate to the PROCSDK Linux installation of pdk_3_XX_YY_ZZ/packages and source armv7setupenv.sh. .. note:: The armv7setupenv.sh script must be modified to point to the linaro toolchain and installed devkit path $ source armv7setupenv.sh jÆjE"jÎNjÐjjÒ}rW"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rX"(jò)�rY"}rZ"(jÅXbNavigate to the PROCSDK Linux installation of pdk_3_XX_YY_ZZ/packages and source armv7setupenv.sh.r["jÆjU"jÎjòjÐjõjÒ}r\"(jÔ]jÕ]jÖ]j×]jÚ]ujÜMµjÞ]r]"jçXbNavigate to the PROCSDK Linux installation of pdk_3_XX_YY_ZZ/packages and source armv7setupenv.sh.r^"…�r_"}r`"(jÅj["jÆjY"ubaubjë)�ra"}rb"(jÅX‚The armv7setupenv.sh script must be modified to point to the linaro toolchain and installed devkit path $ source armv7setupenv.shjÒ}rc"(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU"jÞ]rd"(jò)�re"}rf"(jÅXgThe armv7setupenv.sh script must be modified to point to the linaro toolchain and installed devkit pathrg"jÆja"jÎjòjÐjõjÒ}rh"(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¹jÞ]ri"jçXgThe armv7setupenv.sh script must be modified to point to the linaro toolchain and installed devkit pathrj"…�rk"}rl"(jÅjg"jÆje"ubaubjò)�rm"}rn"(jÅX$ source armv7setupenv.shro"jÆja"jÎjòjÐjõjÒ}rp"(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¼jÞ]rq"jçX$ source armv7setupenv.shrr"…�rs"}rt"(jÅjo"jÆjm"ubaubejÐjïubeubj{)�ru"}rv"(jÅX€Navigate back to the SRIO transport directory in the ipc-transport GIT repository $ cd /ipc-transport/linus/sriojÆjE"jÎjòjÐjjÒ}rw"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rx"jò)�ry"}rz"(jÅX€Navigate back to the SRIO transport directory in the ipc-transport GIT repository $ cd /ipc-transport/linus/srior{"jÆju"jÎjòjÐjõjÒ}r|"(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¾jÞ]r}"jçX€Navigate back to the SRIO transport directory in the ipc-transport GIT repository $ cd /ipc-transport/linus/srior~"…�r"}r€"(jÅj{"jÆjy"ubaubaubj{)�r�"}r‚"(jÅXXBuild the TransportSrio library and user-space test executables: $ make lib $ make testsjÆjE"jÎjòjÐjjÒ}rƒ"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r„"jò)�r…"}r†"(jÅXXBuild the TransportSrio library and user-space test executables: $ make lib $ make testsr‡"jÆj�"jÎjòjÐjõjÒ}rˆ"(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÁjÞ]r‰"jçXXBuild the TransportSrio library and user-space test executables: $ make lib $ make testsrŠ"…�r‹"}rŒ"(jÅj‡"jÆj…"ubaubaubj{)�r�"}rŽ"(jÅXÑThe TransportSrio static and shared libraries will be copied directly into the Linux devkit's /usr/lib folder as long as the devkit install path was setup correctly prior to running the armv7setupenv.sh scriptjÆjE"jÎjòjÐjjÒ}r�"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�"jò)�r‘"}r’"(jÅXÑThe TransportSrio static and shared libraries will be copied directly into the Linux devkit's /usr/lib folder as long as the devkit install path was setup correctly prior to running the armv7setupenv.sh scriptr“"jÆj�"jÎjòjÐjõjÒ}r”"(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÄjÞ]r•"jçXÑThe TransportSrio static and shared libraries will be copied directly into the Linux devkit's /usr/lib folder as long as the devkit install path was setup correctly prior to running the armv7setupenv.sh scriptr–"…�r—"}r˜"(jÅj“"jÆj‘"ubaubaubj{)�r™"}rš"(jÅX¬The test executables will be generated in the /ipc-transport/bin//test/ folder. Only the device specified in the armv7setupenv.sh will be built. jÆjE"jÎjòjÐjjÒ}r›"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rœ"jò)�r�"}rž"(jÅX«The test executables will be generated in the /ipc-transport/bin//test/ folder. Only the device specified in the armv7setupenv.sh will be built.rŸ"jÆj™"jÎjòjÐjõjÒ}r "(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÇjÞ]r¡"jçX«The test executables will be generated in the /ipc-transport/bin//test/ folder. Only the device specified in the armv7setupenv.sh will be built.r¢"…�r£"}r¤"(jÅjŸ"jÆj�"ubaubaubeubjë)�r¥"}r¦"(jÅX‡Setting the USEDYNAMIC_LIB environment variable to "yes" will generate the shared library test executables $ export USEDYNAMIC_LIB=yesjÆj-"jÎjòjÐjïjÒ}r§"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¨"(jò)�r©"}rª"(jÅXjSetting the USEDYNAMIC_LIB environment variable to "yes" will generate the shared library test executablesr«"jÆj¥"jÎjòjÐjõjÒ}r¬"(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÌjÞ]r­"jçXjSetting the USEDYNAMIC_LIB environment variable to "yes" will generate the shared library test executablesr®"…�r¯"}r°"(jÅj«"jÆj©"ubaubjò)�r±"}r²"(jÅX$ export USEDYNAMIC_LIB=yesr³"jÆj¥"jÎjòjÐjõjÒ}r´"(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÏjÞ]rµ"jçX$ export USEDYNAMIC_LIB=yesr¶"…�r·"}r¸"(jÅj³"jÆj±"ubaubeubeubeubjÇ)�r¹"}rº"(jÅUjÆjÛ jÎjòjÐjÑjÒ}r»"(jÔ]jÕ]jÖ]j×]r¼"U/packages.jÆjß"jÎjòjÐjjÒ}rå"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ræ"jò)�rç"}rè"(jÅXKOpen a Windows command terminal and navigate to /packages.ré"jÆjã"jÎjòjÐjõjÒ}rê"(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÞjÞ]rë"jçXKOpen a Windows command terminal and navigate to /packages.rì"…�rí"}rî"(jÅjé"jÆjç"ubaubaubj{)�rï"}rð"(jÅX$Run pdksetupenv.bat >pdksetupenv.batjÆjß"jÎjòjÐjjÒ}rñ"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rò"jò)�ró"}rô"(jÅX$Run pdksetupenv.bat >pdksetupenv.batrõ"jÆjï"jÎjòjÐjõjÒ}rö"(jÔ]jÕ]jÖ]j×]jÚ]ujÜMàjÞ]r÷"jçX$Run pdksetupenv.bat >pdksetupenv.batrø"…�rù"}rú"(jÅjõ"jÆjó"ubaubaubj{)�rû"}rü"(jÅXBNavigate to /packages/ti/transport/ipc/c66/qmss/rý"jÆjß"jÎjòjÐjjÒ}rþ"(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÿ"jò)�r#}r#(jÅjý"jÆjû"jÎjòjÐjõjÒ}r#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMâjÞ]r#jçXBNavigate to /packages/ti/transport/ipc/c66/qmss/r#…�r#}r#(jÅjý"jÆj#ubaubaubj{)�r#}r#(jÅX,Build the IPC QMSS Transport library >gmake jÆjß"jÎjòjÐjjÒ}r #(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r #jò)�r #}r #(jÅX+Build the IPC QMSS Transport library >gmaker #jÆj#jÎjòjÐjõjÒ}r#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMãjÞ]r#jçX+Build the IPC QMSS Transport library >gmaker#…�r#}r#(jÅj #jÆj #ubaubaubeubjò)�r#}r#(jÅXLIssue the following commands if the QMSS transport ever needs to be rebuilt:r#jÆjÐ"jÎjòjÐjõjÒ}r#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMæjÝhjÞ]r#jçXLIssue the following commands if the QMSS transport ever needs to be rebuilt:r#…�r#}r#(jÅj#jÆj#ubaubjò)�r#}r#(jÅX>gmake clean >gmaker#jÆjÐ"jÎjòjÐjõjÒ}r#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMéjÝhjÞ]r#jçX>gmake clean >gmaker #…�r!#}r"#(jÅj#jÆj#ubaubeubjÇ)�r##}r$#(jÅUjKjÆj¹"jÎjòjÐjÑjÒ}r%#(jÔ]r&#jZ!ajÕ]jÖ]j×]r'#Uid23r(#ajÚ]ujÜMíjÝhjÞ]r)#(jà)�r*#}r+#(jÅXRecompiling on Linuxr,#jÆj##jÎjòjÐjäjÒ}r-#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMíjÝhjÞ]r.#jçXRecompiling on Linuxr/#…�r0#}r1#(jÅj,#jÆj*#ubaubj )�r2#}r3#(jÅUjÆj##jÎjòjÐj jÒ}r4#(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMïjÝhjÞ]r5#(j{)�r6#}r7#(jÅXFOpen a Linux bash terminal and navigate to /packages.jÆj2#jÎjòjÐjjÒ}r8#(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r9#jò)�r:#}r;#(jÅXFOpen a Linux bash terminal and navigate to /packages.r<#jÆj6#jÎjòjÐjõjÒ}r=#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMïjÞ]r>#jçXFOpen a Linux bash terminal and navigate to /packages.r?#…�r@#}rA#(jÅj<#jÆj:#ubaubaubj{)�rB#}rC#(jÅX*Run pdksetupenv.sh $ source pdksetupenv.shjÆj2#jÎjòjÐjjÒ}rD#(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rE#jò)�rF#}rG#(jÅX*Run pdksetupenv.sh $ source pdksetupenv.shrH#jÆjB#jÎjòjÐjõjÒ}rI#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMñjÞ]rJ#jçX*Run pdksetupenv.sh $ source pdksetupenv.shrK#…�rL#}rM#(jÅjH#jÆjF#ubaubaubj{)�rN#}rO#(jÅXBNavigate to /packages/ti/transport/ipc/c66/qmss/rP#jÆj2#jÎjòjÐjjÒ}rQ#(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rR#jò)�rS#}rT#(jÅjP#jÆjN#jÎjòjÐjõjÒ}rU#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMójÞ]rV#jçXBNavigate to /packages/ti/transport/ipc/c66/qmss/rW#…�rX#}rY#(jÅjP#jÆjS#ubaubaubj{)�rZ#}r[#(jÅX,Build the IPC QMSS Transport library $ make jÆj2#jÎjòjÐjjÒ}r\#(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r]#jò)�r^#}r_#(jÅX+Build the IPC QMSS Transport library $ maker`#jÆjZ#jÎjòjÐjõjÒ}ra#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMôjÞ]rb#jçX+Build the IPC QMSS Transport library $ makerc#…�rd#}re#(jÅj`#jÆj^#ubaubaubeubjò)�rf#}rg#(jÅXLIssue the following commands if the QMSS transport ever needs to be rebuilt:rh#jÆj##jÎjòjÐjõjÒ}ri#(jÔ]jÕ]jÖ]j×]jÚ]ujÜM÷jÝhjÞ]rj#jçXLIssue the following commands if the QMSS transport ever needs to be rebuilt:rk#…�rl#}rm#(jÅjh#jÆjf#ubaubjò)�rn#}ro#(jÅX$ make clean $ makerp#jÆj##jÎjòjÐjõjÒ}rq#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMújÝhjÞ]rr#jçX$ make clean $ makers#…�rt#}ru#(jÅjp#jÆjn#ubaubeubeubjÇ)�rv#}rw#(jÅUjÆjÛ jÎjòjÐjÑjÒ}rx#(jÔ]jÕ]jÖ]j×]ry#U9arm-linux-transportqmss-source-delivery-and-recompilationrz#ajÚ]r{#hÿaujÜMþjÝhjÞ]r|#(jà)�r}#}r~#(jÅX9ARM Linux TransportQmss Source Delivery and Recompilationr#jÆjv#jÎjòjÐjäjÒ}r€#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMþjÝhjÞ]r�#jçX9ARM Linux TransportQmss Source Delivery and Recompilationr‚#…�rƒ#}r„#(jÅj#jÆj}#ubaubjò)�r…#}r†#(jÅXëThe ARM Linux TransportQmss source code can be downloaded and built two ways. The transport source code is delivered and built as part of Yocto/bitbake. The source code can also be downloaded and built directly from the GIT repository.r‡#jÆjv#jÎjòjÐjõjÒ}rˆ#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r‰#jçXëThe ARM Linux TransportQmss source code can be downloaded and built two ways. The transport source code is delivered and built as part of Yocto/bitbake. The source code can also be downloaded and built directly from the GIT repository.rŠ#…�r‹#}rŒ#(jÅj‡#jÆj…#ubaubjÇ)�r�#}rŽ#(jÅUjKjÆjv#jÎjòjÐjÑjÒ}r�#(jÔ]r�#jÅ!ajÕ]jÖ]j×]r‘#Uid24r’#ajÚ]ujÜMjÝhjÞ]r“#(jà)�r”#}r•#(jÅX!Recompiling Through Yocto/bitbaker–#jÆj�#jÎjòjÐjäjÒ}r—#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r˜#jçX!Recompiling Through Yocto/bitbaker™#…�rš#}r›#(jÅj–#jÆj”#ubaubj )�rœ#}r�#(jÅUjÆj�#jÎjòjÐj jÒ}rž#(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMjÝhjÞ]rŸ#(j{)�r #}r¡#(jÅXšFollow the instructions in the Exploring section of the user guide to configure the `Yocto build environment `__. The tisdk-server-rootfs-image does not need to be built. Instead look at the section for `building other components `__jÆjœ#jÎjòjÐjjÒ}r¢#(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r£#jò)�r¤#}r¥#(jÅXšFollow the instructions in the Exploring section of the user guide to configure the `Yocto build environment `__. The tisdk-server-rootfs-image does not need to be built. Instead look at the section for `building other components `__jÆj #jÎjòjÐjõjÒ}r¦#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r§#(jçXTFollow the instructions in the Exploring section of the user guide to configure the r¨#…�r©#}rª#(jÅXTFollow the instructions in the Exploring section of the user guide to configure the jÆj¤#ubjû)�r«#}r¬#(jÅXf`Yocto build environment `__jÒ}r­#(UnameXYocto build environmentjXHhttp://processors.wiki.ti.com/index.php/MCSDK_UG_Chapter_Exploring#Yoctoj×]jÖ]jÔ]jÕ]jÚ]ujÆj¤#jÞ]r®#jçXYocto build environmentr¯#…�r°#}r±#(jÅUjÆj«#ubajÐjÿubjçX[. The tisdk-server-rootfs-image does not need to be built. Instead look at the section for r²#…�r³#}r´#(jÅX[. The tisdk-server-rootfs-image does not need to be built. Instead look at the section for jÆj¤#ubjû)�rµ#}r¶#(jÅX…`building other components `__jÒ}r·#(UnameXbuilding other componentsjXehttp://processors.wiki.ti.com/index.php/MCSDK_UG_Chapter_Exploring#Building_other_components_in_Yoctoj×]jÖ]jÔ]jÕ]jÚ]ujÆj¤#jÞ]r¸#jçXbuilding other componentsr¹#…�rº#}r»#(jÅUjÆjµ#ubajÐjÿubeubaubj{)�r¼#}r½#(jÅX5Build the TransportQmss libraries, ipc-transport-qmss recipe, and user-space tests, ipc-transport-qmss-test recipe: $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-qmss $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-qmss-test .. note:: The initial build may take quite some time since the kernel is built as a dependency .. note:: Building with just the ipc-transport-qmss-test recipe will also build the ipc-transport-qmss recipe since the test recipe depends on the library recipe. jÆjœ#jÎNjÐjjÒ}r¾#(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¿#(jò)�rÀ#}rÁ#(jÅX&Build the TransportQmss libraries, ipc-transport-qmss recipe, and user-space tests, ipc-transport-qmss-test recipe: $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-qmss $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-qmss-testrÂ#jÆj¼#jÎjòjÐjõjÒ}rÃ#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÄ#jçX&Build the TransportQmss libraries, ipc-transport-qmss recipe, and user-space tests, ipc-transport-qmss-test recipe: $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-qmss $ MACHINE=k2hk-evm TOOLCHAIN_BRAND=linaro ARAGO_BRAND=mcsdk bitbake ipc-transport-qmss-testrÅ#…�rÆ#}rÇ#(jÅjÂ#jÆjÀ#ubaubjë)�rÈ#}rÉ#(jÅXTThe initial build may take quite some time since the kernel is built as a dependencyjÒ}rÊ#(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼#jÞ]rË#jò)�rÌ#}rÍ#(jÅXTThe initial build may take quite some time since the kernel is built as a dependencyrÎ#jÆjÈ#jÎjòjÐjõjÒ}rÏ#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÐ#jçXTThe initial build may take quite some time since the kernel is built as a dependencyrÑ#…�rÒ#}rÓ#(jÅjÎ#jÆjÌ#ubaubajÐjïubjë)�rÔ#}rÕ#(jÅX˜Building with just the ipc-transport-qmss-test recipe will also build the ipc-transport-qmss recipe since the test recipe depends on the library recipe.jÒ}rÖ#(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼#jÞ]r×#jò)�rØ#}rÙ#(jÅX˜Building with just the ipc-transport-qmss-test recipe will also build the ipc-transport-qmss recipe since the test recipe depends on the library recipe.rÚ#jÆjÔ#jÎjòjÐjõjÒ}rÛ#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÜ#jçX˜Building with just the ipc-transport-qmss-test recipe will also build the ipc-transport-qmss recipe since the test recipe depends on the library recipe.rÝ#…�rÞ#}rß#(jÅjÚ#jÆjØ#ubaubajÐjïubeubj{)�rà#}rá#(jÅX4The built TransportQmss static library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-qmss//packages-split/ipc-transport-qmss-staticdev/usr/lib/libTransportQmss.a The built TransportQmss shared library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-qmss//packages-split/ipc-transport-qmss/usr/lib/libTransportQmss.so.1.0.0jÆjœ#jÎjòjÐjjÒ}râ#(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rã#jò)�rä#}rå#(jÅX4The built TransportQmss static library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-qmss//packages-split/ipc-transport-qmss-staticdev/usr/lib/libTransportQmss.a The built TransportQmss shared library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-qmss//packages-split/ipc-transport-qmss/usr/lib/libTransportQmss.so.1.0.0ræ#jÆjà#jÎjòjÐjõjÒ}rç#(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rè#jçX4The built TransportQmss static library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-qmss//packages-split/ipc-transport-qmss-staticdev/usr/lib/libTransportQmss.a The built TransportQmss shared library will be located in /oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-qmss//packages-split/ipc-transport-qmss/usr/lib/libTransportQmss.so.1.0.0ré#…�rê#}rë#(jÅjæ#jÆjä#ubaubaubj{)�rì#}rí#(jÅXfThe ipc-transport-qmss-test recipe will build test static and shared library executables for all supported devices. The executables will be located in base_path>/oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-qmss-test//packages-split/ipc-transport-qmss-test/usr/bin/ jÆjœ#jÎjòjÐjjÒ}rî#(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rï#jò)�rð#}rñ#(jÅXeThe ipc-transport-qmss-test recipe will build test static and shared library executables for all supported devices. The executables will be located in base_path>/oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-qmss-test//packages-split/ipc-transport-qmss-test/usr/bin/rò#jÆjì#jÎjòjÐjõjÒ}ró#(jÔ]jÕ]jÖ]j×]jÚ]ujÜM"jÞ]rô#jçXeThe ipc-transport-qmss-test recipe will build test static and shared library executables for all supported devices. The executables will be located in base_path>/oe-layersetup/build/arago-tmp-external-linaro-toolchain/work/cortexa15hf-vfp-neon-3.8-oe-linux-gnueabi/ipc-transport-qmss-test//packages-split/ipc-transport-qmss-test/usr/bin/rõ#…�rö#}r÷#(jÅjò#jÆjð#ubaubaubeubeubjÇ)�rø#}rù#(jÅUjKjÆjv#jÎjòjÐjÑjÒ}rú#(jÔ]rû#j1"ajÕ]jÖ]j×]rü#Uid25rý#ajÚ]ujÜM(jÝhjÞ]rþ#(jà)�rÿ#}r$(jÅX"Recompiling Through GIT Repositoryr$jÆjø#jÎjòjÐjäjÒ}r$(jÔ]jÕ]jÖ]j×]jÚ]ujÜM(jÝhjÞ]r$jçX"Recompiling Through GIT Repositoryr$…�r$}r$(jÅj$jÆjÿ#ubaubjò)�r$}r$(jÅX<Recompiling through the ARMv7 Linux TransportQmss GIT repository requires that the latest PROCSDK Linux installation. The PROCSDK Linux PDK component and the Linux devkit must be installed. The Linux devkit installation script can be found in /processor_sdk_linux_3_XX_YY_ZZ/linux-devkit/r $jÆjø#jÎjòjÐjõjÒ}r $(jÔ]jÕ]jÖ]j×]jÚ]ujÜM*jÝhjÞ]r $jçX<Recompiling through the ARMv7 Linux TransportQmss GIT repository requires that the latest PROCSDK Linux installation. The PROCSDK Linux PDK component and the Linux devkit must be installed. The Linux devkit installation script can be found in /processor_sdk_linux_3_XX_YY_ZZ/linux-devkit/r $…�r $}r$(jÅj $jÆj$ubaubj )�r$}r$(jÅUjÆjø#jÎjòjÐj jÒ}r$(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM0jÝhjÞ]r$(j{)�r$}r$(jÅXClone the keystone-linux/ipc-transport repository from git.ti.com $ git clone git://git.ti.com/keystone-linux/ipc-transport.gitjÆj$jÎjòjÐjjÒ}r$(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r$jò)�r$}r$(jÅXClone the keystone-linux/ipc-transport repository from git.ti.com $ git clone git://git.ti.com/keystone-linux/ipc-transport.gitr$jÆj$jÎjòjÐjõjÒ}r$(jÔ]jÕ]jÖ]j×]jÚ]ujÜM0jÞ]r$jçXClone the keystone-linux/ipc-transport repository from git.ti.com $ git clone git://git.ti.com/keystone-linux/ipc-transport.gitr$…�r$}r$(jÅj$jÆj$ubaubaubj{)�r$}r $(jÅXNavigate to the PROCSDK Linux installation of pdk_3_XX_YY_ZZ/packages and source armv7setupenv.sh. .. note:: The armv7setupenv.sh script must be modified build for the correct K2 device, and to point to the linaro toolchain and installed devkit path $ source armv7setupenv.sh jÆj$jÎNjÐjjÒ}r!$(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r"$(jò)�r#$}r$$(jÅXbNavigate to the PROCSDK Linux installation of pdk_3_XX_YY_ZZ/packages and source armv7setupenv.sh.r%$jÆj$jÎjòjÐjõjÒ}r&$(jÔ]jÕ]jÖ]j×]jÚ]ujÜM2jÞ]r'$jçXbNavigate to the PROCSDK Linux installation of pdk_3_XX_YY_ZZ/packages and source armv7setupenv.sh.r($…�r)$}r*$(jÅj%$jÆj#$ubaubjë)�r+$}r,$(jÅX§The armv7setupenv.sh script must be modified build for the correct K2 device, and to point to the linaro toolchain and installed devkit path $ source armv7setupenv.shjÒ}r-$(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$jÞ]r.$(jò)�r/$}r0$(jÅXŒThe armv7setupenv.sh script must be modified build for the correct K2 device, and to point to the linaro toolchain and installed devkit pathr1$jÆj+$jÎjòjÐjõjÒ}r2$(jÔ]jÕ]jÖ]j×]jÚ]ujÜM6jÞ]r3$jçXŒThe armv7setupenv.sh script must be modified build for the correct K2 device, and to point to the linaro toolchain and installed devkit pathr4$…�r5$}r6$(jÅj1$jÆj/$ubaubjò)�r7$}r8$(jÅX$ source armv7setupenv.shr9$jÆj+$jÎjòjÐjõjÒ}r:$(jÔ]jÕ]jÖ]j×]jÚ]ujÜM:jÞ]r;$jçX$ source armv7setupenv.shr<$…�r=$}r>$(jÅj9$jÆj7$ubaubejÐjïubeubj{)�r?$}r@$(jÅX€Navigate back to the QMSS transport directory in the ipc-transport GIT repository $ cd /ipc-transport/linus/qmssjÆj$jÎjòjÐjjÒ}rA$(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rB$jò)�rC$}rD$(jÅX€Navigate back to the QMSS transport directory in the ipc-transport GIT repository $ cd /ipc-transport/linus/qmssrE$jÆj?$jÎjòjÐjõjÒ}rF$(jÔ]jÕ]jÖ]j×]jÚ]ujÜM<jÞ]rG$jçX€Navigate back to the QMSS transport directory in the ipc-transport GIT repository $ cd /ipc-transport/linus/qmssrH$…�rI$}rJ$(jÅjE$jÆjC$ubaubaubj{)�rK$}rL$(jÅXXBuild the TransportQmss library and user-space test executables: $ make lib $ make testsjÆj$jÎjòjÐjjÒ}rM$(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rN$jò)�rO$}rP$(jÅXXBuild the TransportQmss library and user-space test executables: $ make lib $ make testsrQ$jÆjK$jÎjòjÐjõjÒ}rR$(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÞ]rS$jçXXBuild the TransportQmss library and user-space test executables: $ make lib $ make testsrT$…�rU$}rV$(jÅjQ$jÆjO$ubaubaubj{)�rW$}rX$(jÅXÑThe TransportQmss static and shared libraries will be copied directly into the Linux devkit's /usr/lib folder as long as the devkit install path was setup correctly prior to running the armv7setupenv.sh scriptjÆj$jÎjòjÐjjÒ}rY$(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rZ$jò)�r[$}r\$(jÅXÑThe TransportQmss static and shared libraries will be copied directly into the Linux devkit's /usr/lib folder as long as the devkit install path was setup correctly prior to running the armv7setupenv.sh scriptr]$jÆjW$jÎjòjÐjõjÒ}r^$(jÔ]jÕ]jÖ]j×]jÚ]ujÜMBjÞ]r_$jçXÑThe TransportQmss static and shared libraries will be copied directly into the Linux devkit's /usr/lib folder as long as the devkit install path was setup correctly prior to running the armv7setupenv.sh scriptr`$…�ra$}rb$(jÅj]$jÆj[$ubaubaubj{)�rc$}rd$(jÅX¬The test executables will be generated in the /ipc-transport/bin//test/ folder. Only the device specified in the armv7setupenv.sh will be built. jÆj$jÎjòjÐjjÒ}re$(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rf$jò)�rg$}rh$(jÅX«The test executables will be generated in the /ipc-transport/bin//test/ folder. Only the device specified in the armv7setupenv.sh will be built.ri$jÆjc$jÎjòjÐjõjÒ}rj$(jÔ]jÕ]jÖ]j×]jÚ]ujÜMEjÞ]rk$jçX«The test executables will be generated in the /ipc-transport/bin//test/ folder. Only the device specified in the armv7setupenv.sh will be built.rl$…�rm$}rn$(jÅji$jÆjg$ubaubaubeubjë)�ro$}rp$(jÅXˆSetting the USEDYNAMIC_LIB environment variable to "yes" will generate the shared library test executables $ export USEDYNAMIC_LIB=yesjÆjø#jÎjòjÐjïjÒ}rq$(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rr$(jò)�rs$}rt$(jÅXjSetting the USEDYNAMIC_LIB environment variable to "yes" will generate the shared library test executablesru$jÆjo$jÎjòjÐjõjÒ}rv$(jÔ]jÕ]jÖ]j×]jÚ]ujÜMJjÞ]rw$jçXjSetting the USEDYNAMIC_LIB environment variable to "yes" will generate the shared library test executablesrx$…�ry$}rz$(jÅju$jÆjs$ubaubj3)�r{$}r|$(jÅUjÒ}r}$(jÔ]jÕ]jÖ]j×]jÚ]ujÆjo$jÞ]r~$jò)�r$}r€$(jÅX$ export USEDYNAMIC_LIB=yesr�$jÆj{$jÎjòjÐjõjÒ}r‚$(jÔ]jÕ]jÖ]j×]jÚ]ujÜMMjÞ]rƒ$jçX$ export USEDYNAMIC_LIB=yesr„$…�r…$}r†$(jÅj�$jÆj$ubaubajÐj6ubeubeubeubeubjÇ)�r‡$}rˆ$(jÅUjÆjàjÎjòjÐjÑjÒ}r‰$(jÔ]jÕ]jÖ]j×]rŠ$Utests-examplesr‹$ajÚ]rŒ$h aujÜMPjÝhjÞ]r�$(jà)�rŽ$}r�$(jÅXTests & Examplesr�$jÆj‡$jÎjòjÐjäjÒ}r‘$(jÔ]jÕ]jÖ]j×]jÚ]ujÜMPjÝhjÞ]r’$jçXTests & Examplesr“$…�r”$}r•$(jÅj�$jÆjŽ$ubaubjÇ)�r–$}r—$(jÅUjKjÆj‡$jÎjòjÐjÑjÒ}r˜$(jÔ]r™$Xsys/bios dsp transportsriorš$ajÕ]jÖ]j×]r›$Uid26rœ$ajÚ]ujÜMSjÝhjÞ]r�$(jà)�rž$}rŸ$(jÅXSYS/BIOS DSP TransportSrior $jÆj–$jÎjòjÐjäjÒ}r¡$(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÝhjÞ]r¢$jçXSYS/BIOS DSP TransportSrior£$…�r¤$}r¥$(jÅj $jÆjž$ubaubjy )�r¦$}r§$(jÅUjÆj–$jÎjòjÐjÔ jÒ}r¨$(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r©$j~ )�rª$}r«$(jÅUjÒ}r¬$(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj¦$jÞ]r­$(jƒ )�r®$}r¯$(jÅUjÒ}r°$(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjª$jÞ]jÐj‡ ubjƒ )�r±$}r²$(jÅUjÒ}r³$(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjª$jÞ]jÐj‡ ubjƒ )�r´$}rµ$(jÅUjÒ}r¶$(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjª$jÞ]jÐj‡ ubj‹ )�r·$}r¸$(jÅUjÒ}r¹$(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª$jÞ]rº$j� )�r»$}r¼$(jÅUjÒ}r½$(jÔ]jÕ]jÖ]j×]jÚ]ujÆj·$jÞ]r¾$(j• )�r¿$}rÀ$(jÅUjÒ}rÁ$(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»$jÞ]rÂ$jò)�rÃ$}rÄ$(jÅXNamerÅ$jÆj¿$jÎjòjÐjõjÒ}rÆ$(jÔ]jÕ]jÖ]j×]jÚ]ujÜMVjÞ]rÇ$jçXNamerÈ$…�rÉ$}rÊ$(jÅjÅ$jÆjÃ$ubaubajÐj¢ ubj• )�rË$}rÌ$(jÅUjÒ}rÍ$(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»$jÞ]rÎ$jò)�rÏ$}rÐ$(jÅX DescriptionrÑ$jÆjË$jÎjòjÐjõjÒ}rÒ$(jÔ]jÕ]jÖ]j×]jÚ]ujÜMVjÞ]rÓ$jçX DescriptionrÔ$…�rÕ$}rÖ$(jÅjÑ$jÆjÏ$ubaubajÐj¢ ubj• )�r×$}rØ$(jÅUjÒ}rÙ$(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»$jÞ]rÚ$jò)�rÛ$}rÜ$(jÅXExpected ResultsrÝ$jÆj×$jÎjòjÐjõjÒ}rÞ$(jÔ]jÕ]jÖ]j×]jÚ]ujÜMVjÞ]rß$jçXExpected Resultsrà$…�rá$}râ$(jÅjÝ$jÆjÛ$ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rã$}rä$(jÅUjÒ}rå$(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª$jÞ]ræ$(j� )�rç$}rè$(jÅUjÒ}ré$(jÔ]jÕ]jÖ]j×]jÚ]ujÆjã$jÞ]rê$(j• )�rë$}rì$(jÅUjÒ}rí$(jÔ]jÕ]jÖ]j×]jÚ]ujÆjç$jÞ]rî$jò)�rï$}rð$(jÅX,SYS/BIOS DSP TransportSrio Benchmark Examplerñ$jÆjë$jÎjòjÐjõjÒ}rò$(jÔ]jÕ]jÖ]j×]jÚ]ujÜMXjÞ]ró$jçX,SYS/BIOS DSP TransportSrio Benchmark Examplerô$…�rõ$}rö$(jÅjñ$jÆjï$ubaubajÐj¢ ubj• )�r÷$}rø$(jÅUjÒ}rù$(jÔ]jÕ]jÖ]j×]jÚ]ujÆjç$jÞ]rú$jc)�rû$}rü$(jÅUjÒ}rý$(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷$jÞ]rþ$ji)�rÿ$}r%(jÅX Example demonstrating intra-SoC, DSP to DSP, transport over SRIO use while also measuring latency and throughput performance. The example consists of multiple iterations where each iteration runs SRIO with different lane configurations. Reference example for developersr%jlKjÆjû$jÎjòjÐjÜjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r%jçX Example demonstrating intra-SoC, DSP to DSP, transport over SRIO use while also measuring latency and throughput performance. The example consists of multiple iterations where each iteration runs SRIO with different lane configurations. Reference example for developersr%…�r%}r%(jÅj%jÆjÿ$ubaubajÐjfubajÐj¢ ubj• )�r%}r%(jÅUjÒ}r %(jÔ]jÕ]jÖ]j×]jÚ]ujÆjç$jÞ]r %jc)�r %}r %(jÅUjÒ}r %(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%jÞ]r%ji)�r%}r%(jÅXBSuccessful completion on two DSP cores for all example iterations.r%jlKjÆj %jÎjòjÐjÜjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r%jçXBSuccessful completion on two DSP cores for all example iterations.r%…�r%}r%(jÅj%jÆj%ubaubajÐjfubajÐj¢ ubejÐj£ ubj� )�r%}r%(jÅUjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjã$jÞ]r%(j• )�r%}r%(jÅUjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%jÞ]r%jò)�r%}r %(jÅX4SYS/BIOS DSP TransportSrio Producer/Consumer Exampler!%jÆj%jÎjòjÐjõjÒ}r"%(jÔ]jÕ]jÖ]j×]jÚ]ujÜMijÞ]r#%jçX4SYS/BIOS DSP TransportSrio Producer/Consumer Exampler$%…�r%%}r&%(jÅj!%jÆj%ubaubajÐj¢ ubj• )�r'%}r(%(jÅUjÒ}r)%(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%jÞ]r*%jc)�r+%}r,%(jÅUjÒ}r-%(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'%jÞ]r.%ji)�r/%}r0%(jÅX¯Example demonstrates inter-SoC, DSP to DSP, transport over SRIO. The example consists of multiple iterations where each iteration runs SRIO with different lane configurations.r1%jlKjÆj+%jÎjòjÐjÜjÒ}r2%(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r3%jçX¯Example demonstrates inter-SoC, DSP to DSP, transport over SRIO. The example consists of multiple iterations where each iteration runs SRIO with different lane configurations.r4%…�r5%}r6%(jÅj1%jÆj/%ubaubajÐjfubajÐj¢ ubj• )�r7%}r8%(jÅUjÒ}r9%(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%jÞ]r:%jò)�r;%}r<%(jÅXdSuccessful completion for all example iterations on two DSP cores per producer and consumer devices.r=%jÆj7%jÎjòjÐjõjÒ}r>%(jÔ]jÕ]jÖ]j×]jÚ]ujÜMijÞ]r?%jçXdSuccessful completion for all example iterations on two DSP cores per producer and consumer devices.r@%…�rA%}rB%(jÅj=%jÆj;%ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubjÇ)�rC%}rD%(jÅUjKjÆj‡$jÎjòjÐjÑjÒ}rE%(jÔ]rF%Xarm linux transportsriorG%ajÕ]jÖ]j×]rH%Uid27rI%ajÚ]ujÜMwjÝhjÞ]rJ%(jà)�rK%}rL%(jÅXARM Linux TransportSriorM%jÆjC%jÎjòjÐjäjÒ}rN%(jÔ]jÕ]jÖ]j×]jÚ]ujÜMwjÝhjÞ]rO%jçXARM Linux TransportSriorP%…�rQ%}rR%(jÅjM%jÆjK%ubaubjy )�rS%}rT%(jÅUjÆjC%jÎjòjÐjÔ jÒ}rU%(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rV%j~ )�rW%}rX%(jÅUjÒ}rY%(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjS%jÞ]rZ%(jƒ )�r[%}r\%(jÅUjÒ}r]%(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjW%jÞ]jÐj‡ ubjƒ )�r^%}r_%(jÅUjÒ}r`%(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjW%jÞ]jÐj‡ ubjƒ )�ra%}rb%(jÅUjÒ}rc%(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjW%jÞ]jÐj‡ ubj‹ )�rd%}re%(jÅUjÒ}rf%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjW%jÞ]rg%j� )�rh%}ri%(jÅUjÒ}rj%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjd%jÞ]rk%(j• )�rl%}rm%(jÅUjÒ}rn%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjh%jÞ]ro%jò)�rp%}rq%(jÅXNamerr%jÆjl%jÎjòjÐjõjÒ}rs%(jÔ]jÕ]jÖ]j×]jÚ]ujÜMzjÞ]rt%jçXNameru%…�rv%}rw%(jÅjr%jÆjp%ubaubajÐj¢ ubj• )�rx%}ry%(jÅUjÒ}rz%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjh%jÞ]r{%jò)�r|%}r}%(jÅX Descriptionr~%jÆjx%jÎjòjÐjõjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÜMzjÞ]r€%jçX Descriptionr�%…�r‚%}rƒ%(jÅj~%jÆj|%ubaubajÐj¢ ubj• )�r„%}r…%(jÅUjÒ}r†%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjh%jÞ]r‡%jò)�rˆ%}r‰%(jÅXExpected ResultsrŠ%jÆj„%jÎjòjÐjõjÒ}r‹%(jÔ]jÕ]jÖ]j×]jÚ]ujÜMzjÞ]rŒ%jçXExpected Resultsr�%…�rŽ%}r�%(jÅjŠ%jÆjˆ%ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r�%}r‘%(jÅUjÒ}r’%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjW%jÞ]r“%j� )�r”%}r•%(jÅUjÒ}r–%(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�%jÞ]r—%(j• )�r˜%}r™%(jÅUjÒ}rš%(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”%jÞ]r›%jò)�rœ%}r�%(jÅX1ARM Linux TransportSrio Producer/Consumer Examplerž%jÆj˜%jÎjòjÐjõjÒ}rŸ%(jÔ]jÕ]jÖ]j×]jÚ]ujÜM|jÞ]r %jçX1ARM Linux TransportSrio Producer/Consumer Exampler¡%…�r¢%}r£%(jÅjž%jÆjœ%ubaubajÐj¢ ubj• )�r¤%}r¥%(jÅUjÒ}r¦%(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”%jÞ]r§%jc)�r¨%}r©%(jÅUjÒ}rª%(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¤%jÞ]r«%ji)�r¬%}r­%(jÅX»Example demonstrates inter-SoC, ARM Linux to ARM Linux, transport over SRIO. The example consists of multiple iterations where each iteration runs SRIO with different lane configurations.r®%jlKjÆj¨%jÎjòjÐjÜjÒ}r¯%(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r°%jçX»Example demonstrates inter-SoC, ARM Linux to ARM Linux, transport over SRIO. The example consists of multiple iterations where each iteration runs SRIO with different lane configurations.r±%…�r²%}r³%(jÅj®%jÆj¬%ubaubajÐjfubajÐj¢ ubj• )�r´%}rµ%(jÅUjÒ}r¶%(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”%jÞ]r·%jò)�r¸%}r¹%(jÅXjSuccessful completion for all example iterations on two Linux processes per producer and consumer devices.rº%jÆj´%jÎjòjÐjõjÒ}r»%(jÔ]jÕ]jÖ]j×]jÚ]ujÜM|jÞ]r¼%jçXjSuccessful completion for all example iterations on two Linux processes per producer and consumer devices.r½%…�r¾%}r¿%(jÅjº%jÆj¸%ubaubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubaubeubjÇ)�rÀ%}rÁ%(jÅUjKjÆj‡$jÎjòjÐjÑjÒ}rÂ%(jÔ]rÃ%Xsys/bios dsp transportqmssrÄ%ajÕ]jÖ]j×]rÅ%Uid28rÆ%ajÚ]ujÜM‹jÝhjÞ]rÇ%(jà)�rÈ%}rÉ%(jÅXSYS/BIOS DSP TransportQmssrÊ%jÆjÀ%jÎjòjÐjäjÒ}rË%(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‹jÝhjÞ]rÌ%jçXSYS/BIOS DSP TransportQmssrÍ%…�rÎ%}rÏ%(jÅjÊ%jÆjÈ%ubaubjy )�rÐ%}rÑ%(jÅUjÆjÀ%jÎjòjÐjÔ jÒ}rÒ%(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÓ%j~ )�rÔ%}rÕ%(jÅUjÒ}rÖ%(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjÐ%jÞ]r×%(jƒ )�rØ%}rÙ%(jÅUjÒ}rÚ%(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÔ%jÞ]jÐj‡ ubjƒ )�rÛ%}rÜ%(jÅUjÒ}rÝ%(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÔ%jÞ]jÐj‡ ubjƒ )�rÞ%}rß%(jÅUjÒ}rà%(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÔ%jÞ]jÐj‡ ubj‹ )�rá%}râ%(jÅUjÒ}rã%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÔ%jÞ]rä%j� )�rå%}ræ%(jÅUjÒ}rç%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjá%jÞ]rè%(j• )�ré%}rê%(jÅUjÒ}rë%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå%jÞ]rì%jò)�rí%}rî%(jÅXNamerï%jÆjé%jÎjòjÐjõjÒ}rð%(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŽjÞ]rñ%jçXNamerò%…�ró%}rô%(jÅjï%jÆjí%ubaubajÐj¢ ubj• )�rõ%}rö%(jÅUjÒ}r÷%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå%jÞ]rø%jò)�rù%}rú%(jÅX Descriptionrû%jÆjõ%jÎjòjÐjõjÒ}rü%(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŽjÞ]rý%jçX Descriptionrþ%…�rÿ%}r&(jÅjû%jÆjù%ubaubajÐj¢ ubj• )�r&}r&(jÅUjÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå%jÞ]r&jò)�r&}r&(jÅXExpected Resultsr&jÆj&jÎjòjÐjõjÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŽjÞ]r &jçXExpected Resultsr &…�r &}r &(jÅj&jÆj&ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r &}r&(jÅUjÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÔ%jÞ]r&(j� )�r&}r&(jÅUjÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj &jÞ]r&(j• )�r&}r&(jÅUjÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj&jÞ]r&jò)�r&}r&(jÅX,SYS/BIOS DSP TransportQmss Benchmark Exampler&jÆj&jÎjòjÐjõjÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]r&jçX,SYS/BIOS DSP TransportQmss Benchmark Exampler&…�r&}r &(jÅj&jÆj&ubaubajÐj¢ ubj• )�r!&}r"&(jÅUjÒ}r#&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj&jÞ]r$&jc)�r%&}r&&(jÅUjÒ}r'&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!&jÞ]r(&ji)�r)&}r*&(jÅX+Example demonstrating intra-SoC, DSP to DSP, transport over QMSS use while also measuring latency and throughput performance. The example consists of multiple iterations where each iteration runs QMSS with different reception mechanisms (accumulator or QPEND queue). Reference example for developersr+&jlKjÆj%&jÎjòjÐjÜjÒ}r,&(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r-&jçX+Example demonstrating intra-SoC, DSP to DSP, transport over QMSS use while also measuring latency and throughput performance. The example consists of multiple iterations where each iteration runs QMSS with different reception mechanisms (accumulator or QPEND queue). Reference example for developersr.&…�r/&}r0&(jÅj+&jÆj)&ubaubajÐjfubajÐj¢ ubj• )�r1&}r2&(jÅUjÒ}r3&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj&jÞ]r4&jc)�r5&}r6&(jÅUjÒ}r7&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj1&jÞ]r8&ji)�r9&}r:&(jÅXBSuccessful completion on two DSP cores for all example iterations.r;&jlKjÆj5&jÎjòjÐjÜjÒ}r<&(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r=&jçXBSuccessful completion on two DSP cores for all example iterations.r>&…�r?&}r@&(jÅj;&jÆj9&ubaubajÐjfubajÐj¢ ubejÐj£ ubj� )�rA&}rB&(jÅUjÒ}rC&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj &jÞ]rD&(j• )�rE&}rF&(jÅUjÒ}rG&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjA&jÞ]rH&jò)�rI&}rJ&(jÅXCSYS/BIOS DSP TransportQmss DSP-Side of Heterogeneous Processor TestrK&jÆjE&jÎjòjÐjõjÒ}rL&(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¤jÞ]rM&jçXCSYS/BIOS DSP TransportQmss DSP-Side of Heterogeneous Processor TestrN&…�rO&}rP&(jÅjK&jÆjI&ubaubajÐj¢ ubj• )�rQ&}rR&(jÅUjÒ}rS&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjA&jÞ]rT&jc)�rU&}rV&(jÅUjÒ}rW&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjQ&jÞ]rX&ji)�rY&}rZ&(jÅXUTests inter-SoC, ARM Linux to DSP, transport over QMSS. Reference test for developersr[&jlKjÆjU&jÎjòjÐjÜjÒ}r\&(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r]&jçXUTests inter-SoC, ARM Linux to DSP, transport over QMSS. Reference test for developersr^&…�r_&}r`&(jÅj[&jÆjY&ubaubajÐjfubajÐj¢ ubj• )�ra&}rb&(jÅUjÒ}rc&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjA&jÞ]rd&jò)�re&}rf&(jÅX?Successful completion on two DSP cores and two Linux processes.rg&jÆja&jÎjòjÐjõjÒ}rh&(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¤jÞ]ri&jçX?Successful completion on two DSP cores and two Linux processes.rj&…�rk&}rl&(jÅjg&jÆje&ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubjÇ)�rm&}rn&(jÅUjKjÆj‡$jÎjòjÐjÑjÒ}ro&(jÔ]rp&Xarm linux transportqmssrq&ajÕ]jÖ]j×]rr&Uid29rs&ajÚ]ujÜM¬jÝhjÞ]rt&(jà)�ru&}rv&(jÅXARM Linux TransportQmssrw&jÆjm&jÎjòjÐjäjÒ}rx&(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¬jÝhjÞ]ry&jçXARM Linux TransportQmssrz&…�r{&}r|&(jÅjw&jÆju&ubaubjy )�r}&}r~&(jÅUjÆjm&jÎjòjÐjÔ jÒ}r&(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r€&j~ )�r�&}r‚&(jÅUjÒ}rƒ&(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj}&jÞ]r„&(jƒ )�r…&}r†&(jÅUjÒ}r‡&(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj�&jÞ]jÐj‡ ubjƒ )�rˆ&}r‰&(jÅUjÒ}rŠ&(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj�&jÞ]jÐj‡ ubjƒ )�r‹&}rŒ&(jÅUjÒ}r�&(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj�&jÞ]jÐj‡ ubj‹ )�rŽ&}r�&(jÅUjÒ}r�&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�&jÞ]r‘&j� )�r’&}r“&(jÅUjÒ}r”&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽ&jÞ]r•&(j• )�r–&}r—&(jÅUjÒ}r˜&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj’&jÞ]r™&jò)�rš&}r›&(jÅXNamerœ&jÆj–&jÎjòjÐjõjÒ}r�&(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¯jÞ]rž&jçXNamerŸ&…�r &}r¡&(jÅjœ&jÆjš&ubaubajÐj¢ ubj• )�r¢&}r£&(jÅUjÒ}r¤&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj’&jÞ]r¥&jò)�r¦&}r§&(jÅX Descriptionr¨&jÆj¢&jÎjòjÐjõjÒ}r©&(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¯jÞ]rª&jçX Descriptionr«&…�r¬&}r­&(jÅj¨&jÆj¦&ubaubajÐj¢ ubj• )�r®&}r¯&(jÅUjÒ}r°&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj’&jÞ]r±&jò)�r²&}r³&(jÅXExpected Resultsr´&jÆj®&jÎjòjÐjõjÒ}rµ&(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¯jÞ]r¶&jçXExpected Resultsr·&…�r¸&}r¹&(jÅj´&jÆj²&ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rº&}r»&(jÅUjÒ}r¼&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�&jÞ]r½&(j� )�r¾&}r¿&(jÅUjÒ}rÀ&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjº&jÞ]rÁ&(j• )�rÂ&}rÃ&(jÅUjÒ}rÄ&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾&jÞ]rÅ&jò)�rÆ&}rÇ&(jÅX*ARM Linux TransportQmss Multi-Process TestrÈ&jÆjÂ&jÎjòjÐjõjÒ}rÉ&(jÔ]jÕ]jÖ]j×]jÚ]ujÜM±jÞ]rÊ&jçX*ARM Linux TransportQmss Multi-Process TestrË&…�rÌ&}rÍ&(jÅjÈ&jÆjÆ&ubaubajÐj¢ ubj• )�rÎ&}rÏ&(jÅUjÒ}rÐ&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾&jÞ]rÑ&jc)�rÒ&}rÓ&(jÅUjÒ}rÔ&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÎ&jÞ]rÕ&ji)�rÖ&}r×&(jÅXbTests Linux inter-process communication via IPC transport over QMSS. Reference test for developersrØ&jlKjÆjÒ&jÎjòjÐjÜjÒ}rÙ&(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÚ&jçXbTests Linux inter-process communication via IPC transport over QMSS. Reference test for developersrÛ&…�rÜ&}rÝ&(jÅjØ&jÆjÖ&ubaubajÐjfubajÐj¢ ubj• )�rÞ&}rß&(jÅUjÒ}rà&(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾&jÞ]rá&jc)�râ&}rã&(jÅUjÒ}rä&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÞ&jÞ]rå&ji)�ræ&}rç&(jÅX.Successful completion on four Linux processes.rè&jlKjÆjâ&jÎjòjÐjÜjÒ}ré&(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rê&jçX.Successful completion on four Linux processes.rë&…�rì&}rí&(jÅjè&jÆjæ&ubaubajÐjfubajÐj¢ ubejÐj£ ubj� )�rî&}rï&(jÅUjÒ}rð&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjº&jÞ]rñ&(j• )�rò&}ró&(jÅUjÒ}rô&(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî&jÞ]rõ&jò)�rö&}r÷&(jÅXBARM Linux TransportQmss Linux-Side of Heterogeneous Processor Testrø&jÆjò&jÎjòjÐjõjÒ}rù&(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¸jÞ]rú&jçXBARM Linux TransportQmss Linux-Side of Heterogeneous Processor Testrû&…�rü&}rý&(jÅjø&jÆjö&ubaubajÐj¢ ubj• )�rþ&}rÿ&(jÅUjÒ}r'(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî&jÞ]r'jc)�r'}r'(jÅUjÒ}r'(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ&jÞ]r'ji)�r'}r'(jÅXUTests inter-SoC, ARM Linux to DSP, transport over QMSS. Reference test for developersr'jlKjÆj'jÎjòjÐjÜjÒ}r '(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r 'jçXUTests inter-SoC, ARM Linux to DSP, transport over QMSS. Reference test for developersr '…�r '}r '(jÅj'jÆj'ubaubajÐjfubajÐj¢ ubj• )�r'}r'(jÅUjÒ}r'(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî&jÞ]r'jò)�r'}r'(jÅX?Successful completion on two DSP cores and two Linux processes.r'jÆj'jÎjòjÐjõjÒ}r'(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¸jÞ]r'jçX?Successful completion on two DSP cores and two Linux processes.r'…�r'}r'(jÅj'jÆj'ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubeubjÇ)�r'}r'(jÅUjKjÆjàjÎjòjÐjÑjÒ}r'(jÔ]r'Xadditional referencesr'ajÕ]jÖ]j×]r'Uadditional-referencesr 'ajÚ]ujÜMÀjÝhjÞ]r!'(jà)�r"'}r#'(jÅXAdditional Referencesr$'jÆj'jÎjòjÐjäjÒ}r%'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÀjÝhjÞ]r&'jçXAdditional Referencesr''…�r('}r)'(jÅj$'jÆj"'ubaubjy )�r*'}r+'(jÅUjÆj'jÎjòjÐjÔ jÒ}r,'(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r-'j~ )�r.'}r/'(jÅUjÒ}r0'(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj*'jÞ]r1'(jƒ )�r2'}r3'(jÅUjÒ}r4'(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆj.'jÞ]jÐj‡ ubjƒ )�r5'}r6'(jÅUjÒ}r7'(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆj.'jÞ]jÐj‡ ubj¥ )�r8'}r9'(jÅUjÒ}r:'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.'jÞ]r;'(j� )�r<'}r='(jÅUjÒ}r>'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj8'jÞ]r?'(j• )�r@'}rA'(jÅUjÒ}rB'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<'jÞ]rC'jò)�rD'}rE'(jÅX **Document**rF'jÆj@'jÎjòjÐjõjÒ}rG'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÃjÞ]rH'jÚ)�rI'}rJ'(jÅjF'jÒ}rK'(jÔ]jÕ]jÖ]j×]jÚ]ujÆjD'jÞ]rL'jçXDocumentrM'…�rN'}rO'(jÅUjÆjI'ubajÐjâubaubajÐj¢ ubj• )�rP'}rQ'(jÅUjÒ}rR'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<'jÞ]rS'jò)�rT'}rU'(jÅX **Location**rV'jÆjP'jÎjòjÐjõjÒ}rW'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÃjÞ]rX'jÚ)�rY'}rZ'(jÅjV'jÒ}r['(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT'jÞ]r\'jçXLocationr]'…�r^'}r_'(jÅUjÆjY'ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r`'}ra'(jÅUjÒ}rb'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj8'jÞ]rc'(j• )�rd'}re'(jÅUjÒ}rf'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`'jÞ]rg'jò)�rh'}ri'(jÅX"TransportQmss API Reference Manualrj'jÆjd'jÎjòjÐjõjÒ}rk'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÅjÞ]rl'jçX"TransportQmss API Reference Manualrm'…�rn'}ro'(jÅjj'jÆjh'ubaubajÐj¢ ubj• )�rp'}rq'(jÅUjÒ}rr'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`'jÞ]rs'jò)�rt'}ru'(jÅXW$(TI_PDK_INSTALL_DIR)/packages/ti /transport/ipc/c66/qmss/docs/doxy gen/html/index.htmlrv'jÆjp'jÎjòjÐjõjÒ}rw'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÅjÞ]rx'jçXW$(TI_PDK_INSTALL_DIR)/packages/ti /transport/ipc/c66/qmss/docs/doxy gen/html/index.htmlry'…�rz'}r{'(jÅjv'jÆjt'ubaubajÐj¢ ubejÐj£ ubj� )�r|'}r}'(jÅUjÒ}r~'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj8'jÞ]r'(j• )�r€'}r�'(jÅUjÒ}r‚'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|'jÞ]rƒ'jò)�r„'}r…'(jÅXTransportQmss Release Notesr†'jÆj€'jÎjòjÐjõjÒ}r‡'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÉjÞ]rˆ'jçXTransportQmss Release Notesr‰'…�rŠ'}r‹'(jÅj†'jÆj„'ubaubajÐj¢ ubj• )�rŒ'}r�'(jÅUjÒ}rŽ'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|'jÞ]r�'jò)�r�'}r‘'(jÅX^$(TI_PDK_INSTALL_DIR)/packages/ti /transport/ipc/c66/qmss/docs/Rele aseNotes_TransportQmss.pdfr’'jÆjŒ'jÎjòjÐjõjÒ}r“'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÉjÞ]r”'jçX^$(TI_PDK_INSTALL_DIR)/packages/ti /transport/ipc/c66/qmss/docs/Rele aseNotes_TransportQmss.pdfr•'…�r–'}r—'(jÅj’'jÆj�'ubaubajÐj¢ ubejÐj£ ubj� )�r˜'}r™'(jÅUjÒ}rš'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj8'jÞ]r›'(j• )�rœ'}r�'(jÅUjÒ}rž'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜'jÞ]rŸ'jò)�r '}r¡'(jÅX"TransportSrio API Reference Manualr¢'jÆjœ'jÎjòjÐjõjÒ}r£'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÍjÞ]r¤'jçX"TransportSrio API Reference Manualr¥'…�r¦'}r§'(jÅj¢'jÆj 'ubaubajÐj¢ ubj• )�r¨'}r©'(jÅUjÒ}rª'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜'jÞ]r«'jò)�r¬'}r­'(jÅXW$(TI_PDK_INSTALL_DIR)/packages/ti /transport/ipc/c66/srio/docs/doxy gen/html/index.htmlr®'jÆj¨'jÎjòjÐjõjÒ}r¯'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÍjÞ]r°'jçXW$(TI_PDK_INSTALL_DIR)/packages/ti /transport/ipc/c66/srio/docs/doxy gen/html/index.htmlr±'…�r²'}r³'(jÅj®'jÆj¬'ubaubajÐj¢ ubejÐj£ ubj� )�r´'}rµ'(jÅUjÒ}r¶'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj8'jÞ]r·'(j• )�r¸'}r¹'(jÅUjÒ}rº'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´'jÞ]r»'jò)�r¼'}r½'(jÅXTransportSrio Release Notesr¾'jÆj¸'jÎjòjÐjõjÒ}r¿'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÑjÞ]rÀ'jçXTransportSrio Release NotesrÁ'…�rÂ'}rÃ'(jÅj¾'jÆj¼'ubaubajÐj¢ ubj• )�rÄ'}rÅ'(jÅUjÒ}rÆ'(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´'jÞ]rÇ'jò)�rÈ'}rÉ'(jÅX^$(TI_PDK_INSTALL_DIR)/packages/ti /transport/ipc/c66/srio/docs/Rele aseNotes_TransportSrio.pdfrÊ'jÆjÄ'jÎjòjÐjõjÒ}rË'(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÑjÞ]rÌ'jçX^$(TI_PDK_INSTALL_DIR)/packages/ti /transport/ipc/c66/srio/docs/Rele aseNotes_TransportSrio.pdfrÍ'…�rÎ'}rÏ'(jÅjÊ'jÆjÈ'ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubeubjÇ)�rÐ'}rÑ'(jÅUjÆjÌjÎjÏjÐjÑjÒ}rÒ'(jÔ]jÕ]jÖ]j×]rÓ'Uipc-benchmarkingrÔ'ajÚ]rÕ'håaujÜKujÝhjÞ]rÖ'(jà)�r×'}rØ'(jÅXIPC BenchmarkingrÙ'jÆjÐ'jÎjÏjÐjäjÒ}rÚ'(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÝhjÞ]rÛ'jçXIPC BenchmarkingrÜ'…�rÝ'}rÞ'(jÅjÙ'jÆj×'ubaubj7)�rß'}rà'(jÅX8http://processors.wiki.ti.com/index.php/IPC_BenchMarkingjÆjÐ'jÎj:X>source/rtos/PDK_Platform_Software/IPC/IPC_BenchMarking.rst.incrá'…�râ'}rã'bjÐj>jÒ}rä'(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rå'jçX8http://processors.wiki.ti.com/index.php/IPC_BenchMarkingræ'…�rç'}rè'(jÅUjÆjß'ubaubjÇ)�ré'}rê'(jÅUjÆjÐ'jÎjâ'jÐjÑjÒ}rë'(jÔ]jÕ]jÖ]j×]rì'U&rtos-ipc-benchmark-applications-in-sdkrí'ajÚ]rî'jpaujÜKjÝhjÞ]rï'(jà)�rð'}rñ'(jÅX&RTOS IPC Benchmark applications in SDKrò'jÆjé'jÎjâ'jÐjäjÒ}ró'(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rô'jçX&RTOS IPC Benchmark applications in SDKrõ'…�rö'}r÷'(jÅjò'jÆjð'ubaubjò)�rø'}rù'(jÅX8Processor SDK RTOS includes a ping_benchmark_example under processor_sdk_rtos__/demos/ipc-examples/ping_benchmark_example. This example shows multiple cores running RTOS communicating with each other through the IPC MessageQ API. The example measures and displays the round trip delay numbers for the IPC. Note the main example sends multiple messages from each of the cores, with all the cores sending messages simultaneously. The example can be built with option to just R5F0 as the originator and all the other cores just respond back with reply.rú'jÆjé'jÎjâ'jÐjõjÒ}rû'(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rü'jçX8Processor SDK RTOS includes a ping_benchmark_example under processor_sdk_rtos__/demos/ipc-examples/ping_benchmark_example. This example shows multiple cores running RTOS communicating with each other through the IPC MessageQ API. The example measures and displays the round trip delay numbers for the IPC. Note the main example sends multiple messages from each of the cores, with all the cores sending messages simultaneously. The example can be built with option to just R5F0 as the originator and all the other cores just respond back with reply.rý'…�rþ'}rÿ'(jÅjú'jÆjø'ubaubjÇ)�r(}r((jÅUjKjÆjé'jÎjâ'jÐjÑjÒ}r((jÔ]r(j{ ajÕ]jÖ]j×]r(Uid30r(ajÚ]ujÜK jÝhjÞ]r((jà)�r(}r((jÅXBuildr (jÆj(jÎjâ'jÐjäjÒ}r ((jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]r (jçXBuildr (…�r (}r((jÅj (jÆj(ubaubjò)�r(}r((jÅXrThe example can be built by running the top level make from the processor_sdk_rtos__ directory.r(jÆj(jÎjâ'jÐjõjÒ}r((jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r(jçXrThe example can be built by running the top level make from the processor_sdk_rtos__ directory.r(…�r(}r((jÅj(jÆj(ubaubjÇ)�r(}r((jÅUjÆj(jÎjâ'jÐjÑjÒ}r((jÔ]jÕ]jÖ]j×]r(U linux-hostr(ajÚ]r(jaujÜKjÝhjÞ]r((jà)�r(}r((jÅX Linux Hostr (jÆj(jÎjâ'jÐjäjÒ}r!((jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r"(jçX Linux Hostr#(…�r$(}r%((jÅj (jÆj(ubaubj)�r&(}r'((jÅXDcd processor_sdk_rtos__ make sdk_ipc_examples_alljÆj(jÎjâ'jÐjjÒ}r(((j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM£jÝhjÞ]r)(jçXDcd processor_sdk_rtos__ make sdk_ipc_examples_allr*(…�r+(}r,((jÅUjÆj&(ubaubeubjÇ)�r-(}r.((jÅUjÆj(jÎjâ'jÐjÑjÒ}r/((jÔ]jÕ]jÖ]j×]r0(U windows-hostr1(ajÚ]r2(h&aujÜKjÝhjÞ]r3((jà)�r4(}r5((jÅX Windows Hostr6(jÆj-(jÎjâ'jÐjäjÒ}r7((jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r8(jçX Windows Hostr9(…�r:(}r;((jÅj6(jÆj4(ubaubjò)�r<(}r=((jÅXRcd processor_sdk_rtos__ setupenv.bat gmake sdk_ipc_examples_allr>(jÆj-(jÎjâ'jÐjõjÒ}r?((jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r@(jçXRcd processor_sdk_rtos__ setupenv.bat gmake sdk_ipc_examples_allrA(…�rB(}rC((jÅj>(jÆj<(ubaubjò)�rD(}rE((jÅXfOnce the build commands are executed, the binaries will be in their respective directories as follows.rF(jÆj-(jÎjâ'jÐjõjÒ}rG((jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rH(jçXfOnce the build commands are executed, the binaries will be in their respective directories as follows.rI(…�rJ(}rK((jÅjF(jÆjD(ubaubjò)�rL(}rM((jÅXAM65X:rN(jÆj-(jÎjâ'jÐjõjÒ}rO((jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rP(jçXAM65X:rQ(…�rR(}rS((jÅjN(jÆjL(ubaubj)�rT(}rU((jÅX3Host A53: ./demos/ipc-examples/ping_benchmark_example/hosta53/bin/am65xx_evm/release/server_host.xa53fg R5F-0: ./demos/ipc-examples/ping_benchmark_example/r5f-0/bin/am65xx_evm/release/server_r5f-0.xer5f R5F-1: ./demos/ipc-examples/ping_benchmark_example/r5f-1/bin/am65xx_evm/release/server_r5f-1.xer5fjÆj-(jÎjâ'jÐjjÒ}rV((j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM³jÝhjÞ]rW(jçX3Host A53: ./demos/ipc-examples/ping_benchmark_example/hosta53/bin/am65xx_evm/release/server_host.xa53fg R5F-0: ./demos/ipc-examples/ping_benchmark_example/r5f-0/bin/am65xx_evm/release/server_r5f-0.xer5f R5F-1: ./demos/ipc-examples/ping_benchmark_example/r5f-1/bin/am65xx_evm/release/server_r5f-1.xer5frX(…�rY(}rZ((jÅUjÆjT(ubaubjò)�r[(}r\((jÅX1And also the R5F0 only as sender images are here:r](jÆj-(jÎjâ'jÐjõjÒ}r^((jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÝhjÞ]r_(jçX1And also the R5F0 only as sender images are here:r`(…�ra(}rb((jÅj](jÆj[(ubaubj)�rc(}rd((jÅX]Host A53: ./demos/ipc-examples/ping_benchmark_example/hosta53/bin/am65xx_evm/app_r5f0_only/release/server_host.xa53fg R5F-0: ./demos/ipc-examples/ping_benchmark_example/r5f-0/bin/am65xx_evm/app_r5f0_only/release/server_r5f-0.xer5f R5F-1: ./demos/ipc-examples/ping_benchmark_example/r5f-1/bin/am65xx_evm/app_r5f0_only/release/server_r5f-1.xer5fjÆj-(jÎjâ'jÐjjÒ}re((j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¼jÝhjÞ]rf(jçX]Host A53: ./demos/ipc-examples/ping_benchmark_example/hosta53/bin/am65xx_evm/app_r5f0_only/release/server_host.xa53fg R5F-0: ./demos/ipc-examples/ping_benchmark_example/r5f-0/bin/am65xx_evm/app_r5f0_only/release/server_r5f-0.xer5f R5F-1: ./demos/ipc-examples/ping_benchmark_example/r5f-1/bin/am65xx_evm/app_r5f0_only/release/server_r5f-1.xer5frg(…�rh(}ri((jÅUjÆjc(ubaubjò)�rj(}rk((jÅXKAlso the SBL bootable images can be created by using the following commandsrl(jÆj-(jÎjâ'jÐjõjÒ}rm((jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÝhjÞ]rn(jçXKAlso the SBL bootable images can be created by using the following commandsro(…�rp(}rq((jÅjl(jÆjj(ubaubjò)�rr(}rs((jÅX Linux Host:rt(jÆj-(jÎjâ'jÐjõjÒ}ru((jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÝhjÞ]rv(jçX Linux Host:rw(…�rx(}ry((jÅjt(jÆjr(ubaubj)�rz(}r{((jÅX=make sdk_ipc_examples_app make sdk_ipc_examples_app_r5f0_onlyjÆj-(jÎjâ'jÐjjÒ}r|((j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÇjÝhjÞ]r}(jçX=make sdk_ipc_examples_app make sdk_ipc_examples_app_r5f0_onlyr~(…�r(}r€((jÅUjÆjz(ubaubjò)�r�(}r‚((jÅX Windows host:rƒ(jÆj-(jÎjâ'jÐjõjÒ}r„((jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÝhjÞ]r…(jçX Windows host:r†(…�r‡(}rˆ((jÅjƒ(jÆj�(ubaubj )�r‰(}rŠ((jÅUjÆj-(jÎjâ'jÐj# jÒ}r‹((jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŒ(j& )�r�(}rŽ((jÅXC:: gmake sdk_ipc_examples_app gmake sdk_ipc_examples_app_r5f0_only jÆj‰(jÎjâ'jÐj) jÒ}r�((jÔ]jÕ]jÖ]j×]jÚ]ujÜK?jÞ]r�((j, )�r‘(}r’((jÅX::r“(jÆj�(jÎjâ'jÐj0 jÒ}r”((jÔ]jÕ]jÖ]j×]jÚ]ujÜK?jÞ]r•(jçX::r–(…�r—(}r˜((jÅj“(jÆj‘(ubaubj6 )�r™(}rš((jÅUjÒ}r›((jÔ]jÕ]jÖ]j×]jÚ]ujÆj�(jÞ]rœ(jò)�r�(}rž((jÅX?gmake sdk_ipc_examples_app gmake sdk_ipc_examples_app_r5f0_onlyrŸ(jÆj™(jÎjâ'jÐjõjÒ}r ((jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]r¡(jçX?gmake sdk_ipc_examples_app gmake sdk_ipc_examples_app_r5f0_onlyr¢(…�r£(}r¤((jÅjŸ(jÆj�(ubaubajÐjQ ubeubaubjò)�r¥(}r¦((jÅX-The application images will be located under:r§(jÆj-(jÎjâ'jÐjõjÒ}r¨((jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÝhjÞ]r©(jçX-The application images will be located under:rª(…�r«(}r¬((jÅj§(jÆj¥(ubaubj)�r­(}r®((jÅXŒdemos/ipc-examples/ping_benchmark_example/output.appimage demos/ipc-examples/ping_benchmark_example/am65xx_evm/app_r5f0_only/output.appimagejÆj-(jÎjâ'jÐjjÒ}r¯((j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÔjÝhjÞ]r°(jçXŒdemos/ipc-examples/ping_benchmark_example/output.appimage demos/ipc-examples/ping_benchmark_example/am65xx_evm/app_r5f0_only/output.appimager±(…�r²(}r³((jÅUjÆj­(ubaubeubeubjÇ)�r´(}rµ((jÅUjKjÆjé'jÎjâ'jÐjÑjÒ}r¶((jÔ]r·(Xrunr¸(ajÕ]jÖ]j×]r¹(Urunrº(ajÚ]ujÜKIjÝhjÞ]r»((jà)�r¼(}r½((jÅXRunr¾(jÆj´(jÎjâ'jÐjäjÒ}r¿((jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÝhjÞ]rÀ(jçXRunrÁ(…�rÂ(}rÃ((jÅj¾(jÆj¼(ubaubjò)�rÄ(}rÅ((jÅX1Pre-requisites: Bootable SD card loaded with SBL.rÆ(jÆj´(jÎjâ'jÐjõjÒ}rÇ((jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÝhjÞ]rÈ(jçX1Pre-requisites: Bootable SD card loaded with SBL.rÉ(…�rÊ(}rË((jÅjÆ(jÆjÄ(ubaubjÇ)�rÌ(}rÍ((jÅUjÆj´(jÎjâ'jÐjÑjÒ}rÎ((jÔ]jÕ]jÖ]j×]rÏ(Uam65xrÐ(ajÚ]rÑ(jUaujÜKNjÝhjÞ]rÒ((jà)�rÓ(}rÔ((jÅXAM65xrÕ(jÆjÌ(jÎjâ'jÐjäjÒ}rÖ((jÔ]jÕ]jÖ]j×]jÚ]ujÜKNjÝhjÞ]r×(jçXAM65xrØ(…�rÙ(}rÚ((jÅjÕ(jÆjÓ(ubaubjò)�rÛ(}rÜ((jÅXÃLoad the app from this directory into the SD card with filename "app" and load into the EVM to boot. (Note: Make sure the UART port is connected to the terminal to observe the application prints)rÝ(jÆjÌ(jÎjâ'jÐjõjÒ}rÞ((jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÝhjÞ]rß(jçXÃLoad the app from this directory into the SD card with filename "app" and load into the EVM to boot. (Note: Make sure the UART port is connected to the terminal to observe the application prints)rà(…�rá(}râ((jÅjÝ(jÆjÛ(ubaubjò)�rã(}rä((jÅXQOn running the application the benchmark data will be displayed on the UART port.rå(jÆjÌ(jÎjâ'jÐjõjÒ}ræ((jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÝhjÞ]rç(jçXQOn running the application the benchmark data will be displayed on the UART port.rè(…�ré(}rê((jÅjå(jÆjã(ubaubjò)�rë(}rì((jÅXLFor the main application the benchmark data will be displayed on UART port0:rí(jÆjÌ(jÎjâ'jÐjõjÒ}rî((jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÝhjÞ]rï(jçXLFor the main application the benchmark data will be displayed on UART port0:rð(…�rñ(}rò((jÅjí(jÆjë(ubaubj)�ró(}rô((jÅXjOverhead:34 Payload Size: 176 Proc id 0, Delta count: 3829025 Proc id 0 to Proc Id 0: Average Roundtrip time is: 19 us Proc id 1, Delta count: 8920087 Proc id 0 to Proc Id 1: Average Roundtrip time is: 44 us Proc id 2, Delta count: 7091251 Proc id 0 to Proc Id 2: Average Roundtrip time is: 35 us AppHost_run: Test Passed MainHost_appTskFxn: Test PassedjÆjÌ(jÎjâ'jÐjjÒ}rõ((j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMèjÝhjÞ]rö(jçXjOverhead:34 Payload Size: 176 Proc id 0, Delta count: 3829025 Proc id 0 to Proc Id 0: Average Roundtrip time is: 19 us Proc id 1, Delta count: 8920087 Proc id 0 to Proc Id 1: Average Roundtrip time is: 44 us Proc id 2, Delta count: 7091251 Proc id 0 to Proc Id 2: Average Roundtrip time is: 35 us AppHost_run: Test Passed MainHost_appTskFxn: Test Passedr÷(…�rø(}rù((jÅUjÆjó(ubaubjò)�rú(}rû((jÅXPFor the R5F0 app only build, the benchmark data will be displayed on UART port1:rü(jÆjÌ(jÎjâ'jÐjõjÒ}rý((jÔ]jÕ]jÖ]j×]jÚ]ujÜKnjÝhjÞ]rþ(jçXPFor the R5F0 app only build, the benchmark data will be displayed on UART port1:rÿ(…�r)}r)(jÅjü(jÆjú(ubaubj)�r)}r)(jÅXJOverhead:144 Payload Size: 176 Proc id 0, Delta count: 8460883 Proc id 1 to Proc Id 0: Average Roundtrip time is: 42 us Proc id 1, Delta count: 1046906 Proc id 1 to Proc Id 1: Average Roundtrip time is: 5 us Proc id 2, Delta count: 6297313 Proc id 1 to Proc Id 2: Average Roundtrip time is: 31 us AppR5f_0_run: Test PassedjÆjÌ(jÎjâ'jÐjjÒ}r)(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]r)jçXJOverhead:144 Payload Size: 176 Proc id 0, Delta count: 8460883 Proc id 1 to Proc Id 0: Average Roundtrip time is: 42 us Proc id 1, Delta count: 1046906 Proc id 1 to Proc Id 1: Average Roundtrip time is: 5 us Proc id 2, Delta count: 6297313 Proc id 1 to Proc Id 2: Average Roundtrip time is: 31 us AppR5f_0_run: Test Passedr)…�r)}r)(jÅUjÆj)ubaubeubeubeubjÇ)�r )}r )(jÅUjÆjÐ'jÎjâ'jÐjÑjÒ}r )(jÔ]jÕ]jÖ]j×]r )U"linux-benchmark-test-messageqbenchr )ajÚ]r)h$aujÜK…jÝhjÞ]r)(jà)�r)}r)(jÅX#Linux Benchmark test: MessageQBenchr)jÆj )jÎjâ'jÐjäjÒ}r)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÝhjÞ]r)jçX#Linux Benchmark test: MessageQBenchr)…�r)}r)(jÅj)jÆj)ubaubjò)�r)}r)(jÅXThe application utilizes the IPC 3.x stack to communicate from the main processor to the slave core via the MessageQ interface. The application measures the time taken to accomplish this. The MessageQBench binaries are included in the Linux file system and they are located in:r)jÆj )jÎjâ'jÐjõjÒ}r)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÝhjÞ]r)jçXThe application utilizes the IPC 3.x stack to communicate from the main processor to the slave core via the MessageQ interface. The application measures the time taken to accomplish this. The MessageQBench binaries are included in the Linux file system and they are located in:r)…�r)}r)(jÅj)jÆj)ubaubjc)�r )}r!)(jÅUjÆj )jÎjâ'jÐjfjÒ}r")(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÝhjÞ]r#)(ji)�r$)}r%)(jÅX)Linux Application: /usr/bin/MessageQBenchr&)jlKjÆj )jÎjâ'jÐjÜjÒ}r')(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÝhjÞ]r()jçX)Linux Application: /usr/bin/MessageQBenchr))…�r*)}r+)(jÅj&)jÆj$)ubaubji)�r,)}r-)(jÅXWDSP binary: /lib/firmware/ipc/ti_platforms_[platform]_core0/messageq_single.xe66r.)jlKjÆj )jÎjâ'jÐjÜjÒ}r/)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]r0)jçXWDSP binary: /lib/firmware/ipc/ti_platforms_[platform]_core0/messageq_single.xe66r1)…�r2)}r3)(jÅj.)jÆj,)ubaubji)�r4)}r5)(jÅUjlKjÆj )jÎjâ'jÐjÜjÒ}r6)(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubeubjò)�r7)}r8)(jÅX6The MessageQBench can be built following the instruction described in the below Build section or using high level build in Linux Processor SDK as described in `IPC Quick Start Guide `__jÆj )jÎjâ'jÐjõjÒ}r9)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]r:)(jçXŸThe MessageQBench can be built following the instruction described in the below Build section or using high level build in Linux Processor SDK as described in r;)…�r<)}r=)(jÅXŸThe MessageQBench can be built following the instruction described in the below Build section or using high level build in Linux Processor SDK as described in jÆj7)ubjû)�r>)}r?)(jÅX—`IPC Quick Start Guide `__jÒ}r@)(UnameXIPC Quick Start GuidejXzhttp://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_IPC.html#ipc-quick-start-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj7)jÞ]rA)jçXIPC Quick Start GuiderB)…�rC)}rD)(jÅUjÆj>)ubajÐjÿubeubjÇ)�rE)}rF)(jÅUjKjÆj )jÎjâ'jÐjÑjÒ}rG)(jÔ]rH)XbuildrI)ajÕ]jÖ]j×]rJ)Uid31rK)ajÚ]ujÜK—jÝhjÞ]rL)(jà)�rM)}rN)(jÅXBuildrO)jÆjE)jÎjâ'jÐjäjÒ}rP)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÝhjÞ]rQ)jçXBuildrR)…�rS)}rT)(jÅjO)jÆjM)ubaubjò)�rU)}rV)(jÅXJThis section outlines the build process for the MessageQBench application.rW)jÆjE)jÎjâ'jÐjõjÒ}rX)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK™jÝhjÞ]rY)jçXJThis section outlines the build process for the MessageQBench application.rZ)…�r[)}r\)(jÅjW)jÆjU)ubaubjÇ)�r])}r^)(jÅUjKjÆjE)jÎjâ'jÐjÑjÒ}r_)(jÔ]r`)Xlinuxra)ajÕ]jÖ]j×]rb)Ulinuxrc)ajÚ]ujÜK�jÝhjÞ]rd)(jà)�re)}rf)(jÅXLinuxrg)jÆj])jÎjâ'jÐjäjÒ}rh)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]ri)jçXLinuxrj)…�rk)}rl)(jÅjg)jÆje)ubaubjò)�rm)}rn)(jÅXTo build the application, follow the `Linux IPC Install Guide `__ to configure and build the Linux-side applications for your device. You'll also need to build the corresponding BIOS side of IPC as indicated in the guide.jÆj])jÎjâ'jÐjõjÒ}ro)(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŸjÝhjÞ]rp)(jçX%To build the application, follow the rq)…�rr)}rs)(jÅX%To build the application, follow the jÆjm)ubjû)�rt)}ru)(jÅXT`Linux IPC Install Guide `__jÒ}rv)(UnameXLinux IPC Install GuidejX6index_Foundational_Components.html#linux-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjm)jÞ]rw)jçXLinux IPC Install Guiderx)…�ry)}rz)(jÅUjÆjt)ubajÐjÿubjçXœ to configure and build the Linux-side applications for your device. You'll also need to build the corresponding BIOS side of IPC as indicated in the guide.r{)…�r|)}r})(jÅXœ to configure and build the Linux-side applications for your device. You'll also need to build the corresponding BIOS side of IPC as indicated in the guide.jÆjm)ubeubeubjÇ)�r~)}r)(jÅUjKjÆjE)jÎjâ'jÐjÑjÒ}r€)(jÔ]r�)Xqnxr‚)ajÕ]jÖ]j×]rƒ)Uqnxr„)ajÚ]ujÜK¥jÝhjÞ]r…)(jà)�r†)}r‡)(jÅXQNXrˆ)jÆj~)jÎjâ'jÐjäjÒ}r‰)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¥jÝhjÞ]rŠ)jçXQNXr‹)…�rŒ)}r�)(jÅjˆ)jÆj†)ubaubjò)�rŽ)}r�)(jÅXTo build the application, follow the `QNX IPC Install Guide `__ to configure and build the QNX-side test applications for your device. You'll also need to build the corresponding BIOS side of IPC as indicated in the guide.jÆj~)jÎjâ'jÐjõjÒ}r�)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK§jÝhjÞ]r‘)(jçX%To build the application, follow the r’)…�r“)}r”)(jÅX%To build the application, follow the jÆjŽ)ubjû)�r•)}r–)(jÅXP`QNX IPC Install Guide `__jÒ}r—)(UnameXQNX IPC Install GuidejX4index_Foundational_Components.html#qnx-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjŽ)jÞ]r˜)jçXQNX IPC Install Guider™)…�rš)}r›)(jÅUjÆj•)ubajÐjÿubjçXŸ to configure and build the QNX-side test applications for your device. You'll also need to build the corresponding BIOS side of IPC as indicated in the guide.rœ)…�r�)}rž)(jÅXŸ to configure and build the QNX-side test applications for your device. You'll also need to build the corresponding BIOS side of IPC as indicated in the guide.jÆjŽ)ubeubeubjÇ)�rŸ)}r )(jÅUjÆjE)jÎjâ'jÐjÑjÒ}r¡)(jÔ]jÕ]jÖ]j×]r¢)Uandroidr£)ajÚ]r¤)hœaujÜK­jÝhjÞ]r¥)(jà)�r¦)}r§)(jÅXAndroidr¨)jÆjŸ)jÎjâ'jÐjäjÒ}r©)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK­jÝhjÞ]rª)jçXAndroidr«)…�r¬)}r­)(jÅj¨)jÆj¦)ubaubjò)�r®)}r¯)(jÅXÍThe IPC development sources should be included in the Android Filesystem (AFS) indicated by the manifest provided in your AFS distribution. The sources are located in $(AFS_ROOT)/hardware/ti/ipc directory.r°)jÆjŸ)jÎjâ'jÐjõjÒ}r±)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¯jÝhjÞ]r²)jçXÍThe IPC development sources should be included in the Android Filesystem (AFS) indicated by the manifest provided in your AFS distribution. The sources are located in $(AFS_ROOT)/hardware/ti/ipc directory.r³)…�r´)}rµ)(jÅj°)jÆj®)ubaubjò)�r¶)}r·)(jÅXETo build the IPC applications, follow the same procedure to build the entire AFS. If you want to specifically build the IPC content, you can issue the following command to build the needed IPC libraries and application from the top your AFS installation (must configure and pick the correct **lunch** target for your device).jÆjŸ)jÎjâ'jÐjõjÒ}r¸)(jÔ]jÕ]jÖ]j×]jÚ]ujÜK³jÝhjÞ]r¹)(jçX#To build the IPC applications, follow the same procedure to build the entire AFS. If you want to specifically build the IPC content, you can issue the following command to build the needed IPC libraries and application from the top your AFS installation (must configure and pick the correct rº)…�r»)}r¼)(jÅX#To build the IPC applications, follow the same procedure to build the entire AFS. If you want to specifically build the IPC content, you can issue the following command to build the needed IPC libraries and application from the top your AFS installation (must configure and pick the correct jÆj¶)ubjÚ)�r½)}r¾)(jÅX **lunch**jÒ}r¿)(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¶)jÞ]rÀ)jçXlunchrÁ)…�rÂ)}rÃ)(jÅUjÆj½)ubajÐjâubjçX target for your device).rÄ)…�rÅ)}rÆ)(jÅX target for your device).jÆj¶)ubeubj)�rÇ)}rÈ)(jÅXñ$buildhost make -j messageQApp \ messageQBench \ messageQMulti \ nameServerApp \ ping_rpmsg \ lad_dra7xx \ libmmrpcjÆjŸ)jÎjâ'jÐjjÒ}rÉ)(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMJjÝhjÞ]rÊ)jçXñ$buildhost make -j messageQApp \ messageQBench \ messageQMulti \ nameServerApp \ ping_rpmsg \ lad_dra7xx \ libmmrpcrË)…�rÌ)}rÍ)(jÅUjÆjÇ)ubaubjò)�rÎ)}rÏ)(jÅX‰To build the corresponding SysBios side of IPC follow the `IPC Install Guide `__.jÆjŸ)jÎjâ'jÐjõjÒ}rÐ)(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÃjÝhjÞ]rÑ)(jçX:To build the corresponding SysBios side of IPC follow the rÒ)…�rÓ)}rÔ)(jÅX:To build the corresponding SysBios side of IPC follow the jÆjÎ)ubjû)�rÕ)}rÖ)(jÅXN`IPC Install Guide `__jÒ}r×)(UnameXIPC Install GuidejX6index_Foundational_Components.html#linux-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjÎ)jÞ]rØ)jçXIPC Install GuiderÙ)…�rÚ)}rÛ)(jÅUjÆjÕ)ubajÐjÿubjçX.…�rÜ)}rÝ)(jÅX.jÆjÎ)ubeubeubeubjÇ)�rÞ)}rß)(jÅUjKjÆj )jÎjâ'jÐjÑjÒ}rà)(jÔ]rá)j¸(ajÕ]jÖ]j×]râ)Uid32rã)ajÚ]ujÜKÇjÝhjÞ]rä)(jà)�rå)}ræ)(jÅXRunrç)jÆjÞ)jÎjâ'jÐjäjÒ}rè)(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÇjÝhjÞ]ré)jçXRunrê)…�rë)}rì)(jÅjç)jÆjå)ubaubjò)�rí)}rî)(jÅXHThis section illustrates the steps to run the MessageQBench application.rï)jÆjÞ)jÎjâ'jÐjõjÒ}rð)(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÉjÝhjÞ]rñ)jçXHThis section illustrates the steps to run the MessageQBench application.rò)…�ró)}rô)(jÅjï)jÆjí)ubaubjÇ)�rõ)}rö)(jÅUjÆjÞ)jÎjâ'jÐjÑjÒ}r÷)(jÔ]jÕ]jÖ]j×]rø)U linux-androidrù)ajÚ]rú)j­aujÜKÌjÝhjÞ]rû)(jà)�rü)}rý)(jÅX Linux/Androidrþ)jÆjõ)jÎjâ'jÐjäjÒ}rÿ)(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÌjÝhjÞ]r*jçX Linux/Androidr*…�r*}r*(jÅjþ)jÆjü)ubaubjò)�r*}r*(jÅXaThe built IPC libraries and applications must be copied (installed) onto the devices filesystem. The LAD Daemon must be running and application's corresponding slave-side binary must be loaded via the remoteproc kernel module. The slave-side binary (messageq_single.x), is located in the $(IPC_ROOT)/packages/ti/ipc/tests/bin/ directory.r*jÆjõ)jÎjâ'jÐjõjÒ}r*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÎjÝhjÞ]r*jçXaThe built IPC libraries and applications must be copied (installed) onto the devices filesystem. The LAD Daemon must be running and application's corresponding slave-side binary must be loaded via the remoteproc kernel module. The slave-side binary (messageq_single.x), is located in the $(IPC_ROOT)/packages/ti/ipc/tests/bin/ directory.r *…�r *}r *(jÅj*jÆj*ubaubjc)�r *}r *(jÅUjÆjõ)jÎjâ'jÐjfjÒ}r*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÔjÝhjÞ]r*(ji)�r*}r*(jÅUjlKjÆj *jÎjâ'jÐjÜjÒ}r*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubji)�r*}r*(jÅXËDetailed information regarding this can be found in the **Installing Tests** and **IPC Daemons and Drivers** section of the `IPC Install Guide `__.jlKjÆj *jÎjâ'jÐjÜjÒ}r*(jÔ]jÕ]jÖ]j×]jÚ]ujÜK×jÝhjÞ]r*(jçX8Detailed information regarding this can be found in the r*…�r*}r*(jÅX8Detailed information regarding this can be found in the jÆj*ubjÚ)�r*}r*(jÅX**Installing Tests**jÒ}r*(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*jÞ]r*jçXInstalling Testsr*…�r*}r *(jÅUjÆj*ubajÐjâubjçX and r!*…�r"*}r#*(jÅX and jÆj*ubjÚ)�r$*}r%*(jÅX**IPC Daemons and Drivers**jÒ}r&*(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*jÞ]r'*jçXIPC Daemons and Driversr(*…�r)*}r**(jÅUjÆj$*ubajÐjâubjçX section of the r+*…�r,*}r-*(jÅX section of the jÆj*ubjû)�r.*}r/*(jÅXN`IPC Install Guide `__jÒ}r0*(UnameXIPC Install GuidejX6index_Foundational_Components.html#linux-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj*jÞ]r1*jçXIPC Install Guider2*…�r3*}r4*(jÅUjÆj.*ubajÐjÿubjçX.…�r5*}r6*(jÅX.jÆj*ubeubeubjc)�r7*}r8*(jÅUjÆjõ)jÎjâ'jÐjfjÒ}r9*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙjÝhjÞ]r:*ji)�r;*}r<*(jÅUjlKjÆj7*jÎjâ'jÐjÜjÒ}r=*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjë)�r>*}r?*(jÅX„Android users - The Android binaries (lad_dra7xx and messageQBench) will be located in the $(AFS_ROOT)/out/target/product//system/binary directory. There are also dependent libraries (libtiipc.so, libtiipcutils.so, and libtiipcutils_lad.so) in the $(AFS_ROOT)/out/target/product//system/lib directory. These files need to be copied to your device filesystem for execution.jÆjõ)jÎjâ'jÐjïjÒ}r@*(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rA*jò)�rB*}rC*(jÅX„Android users - The Android binaries (lad_dra7xx and messageQBench) will be located in the $(AFS_ROOT)/out/target/product//system/binary directory. There are also dependent libraries (libtiipc.so, libtiipcutils.so, and libtiipcutils_lad.so) in the $(AFS_ROOT)/out/target/product//system/lib directory. These files need to be copied to your device filesystem for execution.rD*jÆj>*jÎjâ'jÐjõjÒ}rE*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÞ]rF*jçX„Android users - The Android binaries (lad_dra7xx and messageQBench) will be located in the $(AFS_ROOT)/out/target/product//system/binary directory. There are also dependent libraries (libtiipc.so, libtiipcutils.so, and libtiipcutils_lad.so) in the $(AFS_ROOT)/out/target/product//system/lib directory. These files need to be copied to your device filesystem for execution.rG*…�rH*}rI*(jÅjD*jÆjB*ubaubaubjc)�rJ*}rK*(jÅUjÆjõ)jÎjâ'jÐjfjÒ}rL*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÝhjÞ]rM*(ji)�rN*}rO*(jÅUjlKjÆjJ*jÎjâ'jÐjÜjÒ}rP*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubji)�rQ*}rR*(jÅXOnce the LAD daemon is running and the slave core binary has been loaded. You can execute the following to run the application:rS*jlKjÆjJ*jÎjâ'jÐjÜjÒ}rT*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKåjÝhjÞ]rU*jçXOnce the LAD daemon is running and the slave core binary has been loaded. You can execute the following to run the application:rV*…�rW*}rX*(jÅjS*jÆjQ*ubaubeubj)�rY*}rZ*(jÅXtarget# /usr/bin/MessageQBenchjÆjõ)jÎjâ'jÐjjÒ}r[*(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMxjÝhjÞ]r\*jçXtarget# /usr/bin/MessageQBenchr]*…�r^*}r_*(jÅUjÆjY*ubaubjò)�r`*}ra*(jÅX²The application will exchange 1000 messages with a payload of 8 by default with an average round trip time per message. The following is the usage parameters for the application.rb*jÆjõ)jÎjâ'jÐjõjÒ}rc*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKëjÝhjÞ]rd*jçX²The application will exchange 1000 messages with a payload of 8 by default with an average round trip time per message. The following is the usage parameters for the application.re*…�rf*}rg*(jÅjb*jÆj`*ubaubj)�rh*}ri*(jÅX}Usage: ./bin/MessageQBench [] [] [] Defaults: numLoops: 1000; payloadSize: 8, ProcId: 1jÆjõ)jÎjâ'jÐjjÒ}rj*(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM€jÝhjÞ]rk*jçX}Usage: ./bin/MessageQBench [] [] [] Defaults: numLoops: 1000; payloadSize: 8, ProcId: 1rl*…�rm*}rn*(jÅUjÆjh*ubaubeubjÇ)�ro*}rp*(jÅUjKjÆjÞ)jÎjâ'jÐjÑjÒ}rq*(jÔ]rr*j‚)ajÕ]jÖ]j×]rs*Uid33rt*ajÚ]ujÜKõjÝhjÞ]ru*(jà)�rv*}rw*(jÅXQNXrx*jÆjo*jÎjâ'jÐjäjÒ}ry*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKõjÝhjÞ]rz*jçXQNXr{*…�r|*}r}*(jÅjx*jÆjv*ubaubjò)�r~*}r*(jÅXnThe built IPC libraries and test applications must be copied (installed) onto the devices filesystem. The IPC resource manager must be running and the application's corresponding slave-side binary must be loaded using the resource manager. The slave-side binary (messageq_single.x), is located in the $(IPC_ROOT)/packages/ti/ipc/tests/bin/ directory.r€*jÆjo*jÎjâ'jÐjõjÒ}r�*(jÔ]jÕ]jÖ]j×]jÚ]ujÜK÷jÝhjÞ]r‚*jçXnThe built IPC libraries and test applications must be copied (installed) onto the devices filesystem. The IPC resource manager must be running and the application's corresponding slave-side binary must be loaded using the resource manager. The slave-side binary (messageq_single.x), is located in the $(IPC_ROOT)/packages/ti/ipc/tests/bin/ directory.rƒ*…�r„*}r…*(jÅj€*jÆj~*ubaubjc)�r†*}r‡*(jÅUjÆjo*jÎjâ'jÐjfjÒ}rˆ*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKþjÝhjÞ]r‰*(ji)�rŠ*}r‹*(jÅUjlKjÆj†*jÎjâ'jÐjÜjÒ}rŒ*(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubji)�r�*}rŽ*(jÅXíDetailed information regarding this can be found in the **Installing Tests in QNX**, **IPC resource manager** and **Running Test Applications** sections of the `IPC Install Guide `__.jlKjÆj†*jÎjâ'jÐjÜjÒ}r�*(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r�*(jçX8Detailed information regarding this can be found in the r‘*…�r’*}r“*(jÅX8Detailed information regarding this can be found in the jÆj�*ubjÚ)�r”*}r•*(jÅX**Installing Tests in QNX**jÒ}r–*(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�*jÞ]r—*jçXInstalling Tests in QNXr˜*…�r™*}rš*(jÅUjÆj”*ubajÐjâubjçX, r›*…�rœ*}r�*(jÅX, jÆj�*ubjÚ)�rž*}rŸ*(jÅX**IPC resource manager**jÒ}r *(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�*jÞ]r¡*jçXIPC resource managerr¢*…�r£*}r¤*(jÅUjÆjž*ubajÐjâubjçX and r¥*…�r¦*}r§*(jÅX and jÆj�*ubjÚ)�r¨*}r©*(jÅX**Running Test Applications**jÒ}rª*(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�*jÞ]r«*jçXRunning Test Applicationsr¬*…�r­*}r®*(jÅUjÆj¨*ubajÐjâubjçX sections of the r¯*…�r°*}r±*(jÅX sections of the jÆj�*ubjû)�r²*}r³*(jÅXL`IPC Install Guide `__jÒ}r´*(UnameXIPC Install GuidejX4index_Foundational_Components.html#qnx-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj�*jÞ]rµ*jçXIPC Install Guider¶*…�r·*}r¸*(jÅUjÆj²*ubajÐjÿubjçX.…�r¹*}rº*(jÅX.jÆj�*ubeubeubjò)�r»*}r¼*(jÅX‰Once the IPC resource manager is running and the slave core binary has been loaded. You can execute the following to run the application:r½*jÆjo*jÎjâ'jÐjõjÒ}r¾*(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r¿*jçX‰Once the IPC resource manager is running and the slave core binary has been loaded. You can execute the following to run the application:rÀ*…�rÁ*}rÂ*(jÅj½*jÆj»*ubaubj)�rÃ*}rÄ*(jÅX7target# tests/MessageQBench 1000 8 jÆjo*jÎjâ'jÐjjÒ}rÅ*(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM˜jÝhjÞ]rÆ*jçX7target# tests/MessageQBench 1000 8 rÇ*…�rÈ*}rÉ*(jÅUjÆjÃ*ubaubjò)�rÊ*}rË*(jÅXÓThe application will exchange 1000 messages with a payload of 8 with the core identified by 'procId' and show an average round trip time per message. The following shows the usage parameters for the application.rÌ*jÆjo*jÎjâ'jÐjõjÒ}rÍ*(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rÎ*jçXÓThe application will exchange 1000 messages with a payload of 8 with the core identified by 'procId' and show an average round trip time per message. The following shows the usage parameters for the application.rÏ*…�rÐ*}rÑ*(jÅjÌ*jÆjÊ*ubaubj)�rÒ*}rÓ*(jÅX?Syntax: MessageQBench [] [] []jÆjo*jÎjâ'jÐjjÒ}rÔ*(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rÕ*jçX?Syntax: MessageQBench [] [] []rÖ*…�r×*}rØ*(jÅUjÆjÒ*ubaubeubeubeubjÇ)�rÙ*}rÚ*(jÅUjÆjÐ'jÎjâ'jÐjÑjÒ}rÛ*(jÔ]jÕ]jÖ]j×]rÜ*Uipc-performancerÝ*ajÚ]rÞ*hsaujÜMjÝhjÞ]rß*(jà)�rà*}rá*(jÅXIPC Performancerâ*jÆjÙ*jÎjâ'jÐjäjÒ}rã*(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rä*jçXIPC Performancerå*…�ræ*}rç*(jÅjâ*jÆjà*ubaubjò)�rè*}ré*(jÅXUThe performance numbers in this section are gathered using Processor SDK 5.2 release.rê*jÆjÙ*jÎjâ'jÐjõjÒ}rë*(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rì*jçXUThe performance numbers in this section are gathered using Processor SDK 5.2 release.rí*…�rî*}rï*(jÅjê*jÆjè*ubaubjÇ)�rð*}rñ*(jÅUjÆjÙ*jÎjâ'jÐjÑjÒ}rò*(jÔ]jÕ]jÖ]j×]ró*Uipc-average-round-trip-timerô*ajÚ]rõ*j,aujÜMjÝhjÞ]rö*(jà)�r÷*}rø*(jÅXIPC Average Round Trip Timerù*jÆjð*jÎjâ'jÐjäjÒ}rú*(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rû*jçXIPC Average Round Trip Timerü*…�rý*}rþ*(jÅjù*jÆj÷*ubaubjò)�rÿ*}r+(jÅXÈThe average round trip time is measured using MessageQBench which calculates the time for sending 1000 messages from the main processor to slave core and divided by the number of messages sent (1000).r+jÆjð*jÎjâ'jÐjõjÒ}r+(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r+jçXÈThe average round trip time is measured using MessageQBench which calculates the time for sending 1000 messages from the main processor to slave core and divided by the number of messages sent (1000).r+…�r+}r+(jÅj+jÆjÿ*ubaubjò)�r+}r+(jÅX=Average Round Trip Time (ARTT) for K2H/E/G and OMAP-L138 EVMsr +jÆjð*jÎjâ'jÐjõjÒ}r +(jÔ]jÕ]jÖ]j×]jÚ]ujÜM"jÝhjÞ]r +jçX=Average Round Trip Time (ARTT) for K2H/E/G and OMAP-L138 EVMsr +…�r +}r+(jÅj +jÆj+ubaubjy )�r+}r+(jÅUjÆjð*jÎjâ'jÐjÔ jÒ}r+(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r+j~ )�r+}r+(jÅUjÒ}r+(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj+jÞ]r+(jƒ )�r+}r+(jÅUjÒ}r+(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj+jÞ]jÐj‡ ubjƒ )�r+}r+(jÅUjÒ}r+(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj+jÞ]jÐj‡ ubjƒ )�r+}r+(jÅUjÒ}r+(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj+jÞ]jÐj‡ ubjƒ )�r +}r!+(jÅUjÒ}r"+(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj+jÞ]jÐj‡ ubjƒ )�r#+}r$+(jÅUjÒ}r%+(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj+jÞ]jÐj‡ ubj‹ )�r&+}r'+(jÅUjÒ}r(+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj+jÞ]r)+j� )�r*+}r++(jÅUjÒ}r,+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj&+jÞ]r-+(j• )�r.+}r/+(jÅUjÒ}r0+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*+jÞ]r1+jò)�r2+}r3+(jÅX PLSDK 5.2r4+jÆj.+jÎjâ'jÐjõjÒ}r5+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r6+jçX PLSDK 5.2r7+…�r8+}r9+(jÅj4+jÆj2+ubaubajÐj¢ ubj• )�r:+}r;+(jÅUjÒ}r<+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*+jÞ]r=+jò)�r>+}r?+(jÅXK2Hr@+jÆj:+jÎjâ'jÐjõjÒ}rA+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rB+jçXK2HrC+…�rD+}rE+(jÅj@+jÆj>+ubaubajÐj¢ ubj• )�rF+}rG+(jÅUjÒ}rH+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*+jÞ]rI+jò)�rJ+}rK+(jÅXK2ErL+jÆjF+jÎjâ'jÐjõjÒ}rM+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rN+jçXK2ErO+…�rP+}rQ+(jÅjL+jÆjJ+ubaubajÐj¢ ubj• )�rR+}rS+(jÅUjÒ}rT+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*+jÞ]rU+jò)�rV+}rW+(jÅXK2GrX+jÆjR+jÎjâ'jÐjõjÒ}rY+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rZ+jçXK2Gr[+…�r\+}r]+(jÅjX+jÆjV+ubaubajÐj¢ ubj• )�r^+}r_+(jÅUjÒ}r`+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*+jÞ]ra+jò)�rb+}rc+(jÅX OMAP-L138rd+jÆj^+jÎjâ'jÐjõjÒ}re+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rf+jçX OMAP-L138rg+…�rh+}ri+(jÅjd+jÆjb+ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rj+}rk+(jÅUjÒ}rl+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj+jÞ]rm+(j� )�rn+}ro+(jÅUjÒ}rp+(jÔ]jÕ]jÖ]j×]jÚ]ujÆjj+jÞ]rq+(j• )�rr+}rs+(jÅUjÒ}rt+(jÔ]jÕ]jÖ]j×]jÚ]ujÆjn+jÞ]ru+jò)�rv+}rw+(jÅX CPU Speedrx+jÆjr+jÎjâ'jÐjõjÒ}ry+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rz+jçX CPU Speedr{+…�r|+}r}+(jÅjx+jÆjv+ubaubajÐj¢ ubj• )�r~+}r+(jÅUjÒ}r€+(jÔ]jÕ]jÖ]j×]jÚ]ujÆjn+jÞ]r�+jò)�r‚+}rƒ+(jÅX1.2GHzr„+jÆj~+jÎjâ'jÐjõjÒ}r…+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r†+jçX1.2GHzr‡+…�rˆ+}r‰+(jÅj„+jÆj‚+ubaubajÐj¢ ubj• )�rŠ+}r‹+(jÅUjÒ}rŒ+(jÔ]jÕ]jÖ]j×]jÚ]ujÆjn+jÞ]r�+jò)�rŽ+}r�+(jÅX1.4GHzr�+jÆjŠ+jÎjâ'jÐjõjÒ}r‘+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r’+jçX1.4GHzr“+…�r”+}r•+(jÅj�+jÆjŽ+ubaubajÐj¢ ubj• )�r–+}r—+(jÅUjÒ}r˜+(jÔ]jÕ]jÖ]j×]jÚ]ujÆjn+jÞ]r™+jò)�rš+}r›+(jÅX1GHzrœ+jÆj–+jÎjâ'jÐjõjÒ}r�+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rž+jçX1GHzrŸ+…�r +}r¡+(jÅjœ+jÆjš+ubaubajÐj¢ ubj• )�r¢+}r£+(jÅUjÒ}r¤+(jÔ]jÕ]jÖ]j×]jÚ]ujÆjn+jÞ]r¥+jò)�r¦+}r§+(jÅX456MHzr¨+jÆj¢+jÎjâ'jÐjõjÒ}r©+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rª+jçX456MHzr«+…�r¬+}r­+(jÅj¨+jÆj¦+ubaubajÐj¢ ubejÐj£ ubj� )�r®+}r¯+(jÅUjÒ}r°+(jÔ]jÕ]jÖ]j×]jÚ]ujÆjj+jÞ]r±+(j• )�r²+}r³+(jÅUjÒ}r´+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®+jÞ]rµ+jò)�r¶+}r·+(jÅX ARTT (us)r¸+jÆj²+jÎjâ'jÐjõjÒ}r¹+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rº+jçX ARTT (us)r»+…�r¼+}r½+(jÅj¸+jÆj¶+ubaubajÐj¢ ubj• )�r¾+}r¿+(jÅUjÒ}rÀ+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®+jÞ]rÁ+jò)�rÂ+}rÃ+(jÅX115rÄ+jÆj¾+jÎjâ'jÐjõjÒ}rÅ+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÆ+jçX115rÇ+…�rÈ+}rÉ+(jÅjÄ+jÆjÂ+ubaubajÐj¢ ubj• )�rÊ+}rË+(jÅUjÒ}rÌ+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®+jÞ]rÍ+jò)�rÎ+}rÏ+(jÅX68rÐ+jÆjÊ+jÎjâ'jÐjõjÒ}rÑ+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÒ+jçX68rÓ+…�rÔ+}rÕ+(jÅjÐ+jÆjÎ+ubaubajÐj¢ ubj• )�rÖ+}r×+(jÅUjÒ}rØ+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®+jÞ]rÙ+jò)�rÚ+}rÛ+(jÅX81rÜ+jÆjÖ+jÎjâ'jÐjõjÒ}rÝ+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÞ+jçX81rß+…�rà+}rá+(jÅjÜ+jÆjÚ+ubaubajÐj¢ ubj• )�râ+}rã+(jÅUjÒ}rä+(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®+jÞ]rå+jò)�ræ+}rç+(jÅX904rè+jÆjâ+jÎjâ'jÐjõjÒ}ré+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rê+jçX904rë+…�rì+}rí+(jÅjè+jÆjæ+ubaubajÐj¢ ubejÐj£ ubj� )�rî+}rï+(jÅUjÒ}rð+(jÔ]jÕ]jÖ]j×]jÚ]ujÆjj+jÞ]rñ+(j• )�rò+}ró+(jÅUjÒ}rô+(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî+jÞ]rõ+jò)�rö+}r÷+(jÅXARTT @ 1GHz (us)rø+jÆjò+jÎjâ'jÐjõjÒ}rù+(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rú+jçXARTT @ 1GHz (us)rû+…�rü+}rý+(jÅjø+jÆjö+ubaubajÐj¢ ubj• )�rþ+}rÿ+(jÅUjÒ}r,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî+jÞ]r,jò)�r,}r,(jÅX121r,jÆjþ+jÎjâ'jÐjõjÒ}r,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r,jçX121r,…�r,}r ,(jÅj,jÆj,ubaubajÐj¢ ubj• )�r ,}r ,(jÅUjÒ}r ,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî+jÞ]r ,jò)�r,}r,(jÅX94r,jÆj ,jÎjâ'jÐjõjÒ}r,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r,jçX94r,…�r,}r,(jÅj,jÆj,ubaubajÐj¢ ubj• )�r,}r,(jÅUjÒ}r,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî+jÞ]r,jò)�r,}r,(jÅX81r,jÆj,jÎjâ'jÐjõjÒ}r,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r,jçX81r,…�r ,}r!,(jÅj,jÆj,ubaubajÐj¢ ubj• )�r",}r#,(jÅUjÒ}r$,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî+jÞ]r%,jò)�r&,}r',(jÅXN/Ar(,jÆj",jÎjâ'jÐjõjÒ}r),(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r*,jçXN/Ar+,…�r,,}r-,(jÅj(,jÆj&,ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r.,}r/,(jÅX)Table: IPC Average Round Trip Time (ARTT)r0,jÆjð*jÎjâ'jÐjõjÒ}r1,(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÝhjÞ]r2,jçX)Table: IPC Average Round Trip Time (ARTT)r3,…�r4,}r5,(jÅj0,jÆj.,ubaubjë)�r6,}r7,(jÅXThe MessageQBench is a user space application which needs to call into kernel space and involves linux context switch, process priority, and multiple copies during the delivery of a message. Each message may show different latency deviated from the average round trip time.jÆjð*jÎjâ'jÐjïjÒ}r8,(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r9,jò)�r:,}r;,(jÅXThe MessageQBench is a user space application which needs to call into kernel space and involves linux context switch, process priority, and multiple copies during the delivery of a message. Each message may show different latency deviated from the average round trip time.r<,jÆj6,jÎjâ'jÐjõjÒ}r=,(jÔ]jÕ]jÖ]j×]jÚ]ujÜM.jÞ]r>,jçXThe MessageQBench is a user space application which needs to call into kernel space and involves linux context switch, process priority, and multiple copies during the delivery of a message. Each message may show different latency deviated from the average round trip time.r?,…�r@,}rA,(jÅj<,jÆj:,ubaubaubeubjÇ)�rB,}rC,(jÅUjÆjÙ*jÎjâ'jÐjÑjÒ}rD,(jÔ]jÕ]jÖ]j×]rE,U throughputrF,ajÚ]rG,hHaujÜM5jÝhjÞ]rH,(jà)�rI,}rJ,(jÅX ThroughputrK,jÆjB,jÎjâ'jÐjäjÒ}rL,(jÔ]jÕ]jÖ]j×]jÚ]ujÜM5jÝhjÞ]rM,jçX ThroughputrN,…�rO,}rP,(jÅjK,jÆjI,ubaubjò)�rQ,}rR,(jÅXThroughput benchmark uses a max transmit window of 130 outstanding messages to get the maximum throughput. Beyond the max transit window of 130, there won't be enough resource to allocate additional messages before the resource is returned by the outstanding messages. In this case, the benchmark application will fail to run. Different payload sizes from 8 bytes to max of 448 bytes are measured for each direction, and the numbers apply to either direction. The throughput are measured with ARM/DSP running at 1 GHz.rS,jÆjB,jÎjâ'jÐjõjÒ}rT,(jÔ]jÕ]jÖ]j×]jÚ]ujÜM7jÝhjÞ]rU,jçXThroughput benchmark uses a max transmit window of 130 outstanding messages to get the maximum throughput. Beyond the max transit window of 130, there won't be enough resource to allocate additional messages before the resource is returned by the outstanding messages. In this case, the benchmark application will fail to run. Different payload sizes from 8 bytes to max of 448 bytes are measured for each direction, and the numbers apply to either direction. The throughput are measured with ARM/DSP running at 1 GHz.rV,…�rW,}rX,(jÅjS,jÆjQ,ubaubjò)�rY,}rZ,(jÅX)Throughput for K2H/E/G and OMAP-L138 EVMsr[,jÆjB,jÎjâ'jÐjõjÒ}r\,(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÝhjÞ]r],jçX)Throughput for K2H/E/G and OMAP-L138 EVMsr^,…�r_,}r`,(jÅj[,jÆjY,ubaubjy )�ra,}rb,(jÅUjÆjB,jÎjâ'jÐjÔ jÒ}rc,(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rd,j~ )�re,}rf,(jÅUjÒ}rg,(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆja,jÞ]rh,(jƒ )�ri,}rj,(jÅUjÒ}rk,(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje,jÞ]jÐj‡ ubjƒ )�rl,}rm,(jÅUjÒ}rn,(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje,jÞ]jÐj‡ ubjƒ )�ro,}rp,(jÅUjÒ}rq,(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje,jÞ]jÐj‡ ubjƒ )�rr,}rs,(jÅUjÒ}rt,(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje,jÞ]jÐj‡ ubjƒ )�ru,}rv,(jÅUjÒ}rw,(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje,jÞ]jÐj‡ ubj‹ )�rx,}ry,(jÅUjÒ}rz,(jÔ]jÕ]jÖ]j×]jÚ]ujÆje,jÞ]r{,j� )�r|,}r},(jÅUjÒ}r~,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjx,jÞ]r,(j• )�r€,}r�,(jÅUjÒ}r‚,(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|,jÞ]rƒ,jò)�r„,}r…,(jÅXPayload (Bytes)r†,jÆj€,jÎjâ'jÐjõjÒ}r‡,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rˆ,jçXPayload (Bytes)r‰,…�rŠ,}r‹,(jÅj†,jÆj„,ubaubajÐj¢ ubj• )�rŒ,}r�,(jÅUjÒ}rŽ,(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|,jÞ]r�,jò)�r�,}r‘,(jÅX K2H (MB/s)r’,jÆjŒ,jÎjâ'jÐjõjÒ}r“,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r”,jçX K2H (MB/s)r•,…�r–,}r—,(jÅj’,jÆj�,ubaubajÐj¢ ubj• )�r˜,}r™,(jÅUjÒ}rš,(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|,jÞ]r›,jò)�rœ,}r�,(jÅX K2E (MB/s)rž,jÆj˜,jÎjâ'jÐjõjÒ}rŸ,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r ,jçX K2E (MB/s)r¡,…�r¢,}r£,(jÅjž,jÆjœ,ubaubajÐj¢ ubj• )�r¤,}r¥,(jÅUjÒ}r¦,(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|,jÞ]r§,jò)�r¨,}r©,(jÅX K2G (MB/s)rª,jÆj¤,jÎjâ'jÐjõjÒ}r«,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¬,jçX K2G (MB/s)r­,…�r®,}r¯,(jÅjª,jÆj¨,ubaubajÐj¢ ubj• )�r°,}r±,(jÅUjÒ}r²,(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|,jÞ]r³,jò)�r´,}rµ,(jÅXOMAP-L138 (MB/s)r¶,jÆj°,jÎjâ'jÐjõjÒ}r·,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¸,jçXOMAP-L138 (MB/s)r¹,…�rº,}r»,(jÅj¶,jÆj´,ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r¼,}r½,(jÅUjÒ}r¾,(jÔ]jÕ]jÖ]j×]jÚ]ujÆje,jÞ]r¿,(j� )�rÀ,}rÁ,(jÅUjÒ}rÂ,(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼,jÞ]rÃ,(j• )�rÄ,}rÅ,(jÅUjÒ}rÆ,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÀ,jÞ]rÇ,jò)�rÈ,}rÉ,(jÅX8jÆjÄ,jÎjâ'jÐjõjÒ}rÊ,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rË,jçX8…�rÌ,}rÍ,(jÅX8jÆjÈ,ubaubajÐj¢ ubj• )�rÎ,}rÏ,(jÅUjÒ}rÐ,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÀ,jÞ]rÑ,jò)�rÒ,}rÓ,(jÅX0.234rÔ,jÆjÎ,jÎjâ'jÐjõjÒ}rÕ,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÖ,jçX0.234r×,…�rØ,}rÙ,(jÅjÔ,jÆjÒ,ubaubajÐj¢ ubj• )�rÚ,}rÛ,(jÅUjÒ}rÜ,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÀ,jÞ]rÝ,jò)�rÞ,}rß,(jÅX0.442rà,jÆjÚ,jÎjâ'jÐjõjÒ}rá,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]râ,jçX0.442rã,…�rä,}rå,(jÅjà,jÆjÞ,ubaubajÐj¢ ubj• )�ræ,}rç,(jÅUjÒ}rè,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÀ,jÞ]ré,jò)�rê,}rë,(jÅX0.265rì,jÆjæ,jÎjâ'jÐjõjÒ}rí,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rî,jçX0.265rï,…�rð,}rñ,(jÅjì,jÆjê,ubaubajÐj¢ ubj• )�rò,}ró,(jÅUjÒ}rô,(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÀ,jÞ]rõ,jò)�rö,}r÷,(jÅX0.065rø,jÆjò,jÎjâ'jÐjõjÒ}rù,(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rú,jçX0.065rû,…�rü,}rý,(jÅjø,jÆjö,ubaubajÐj¢ ubejÐj£ ubj� )�rþ,}rÿ,(jÅUjÒ}r-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼,jÞ]r-(j• )�r-}r-(jÅUjÒ}r-(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ,jÞ]r-jò)�r-}r-(jÅX16r-jÆj-jÎjâ'jÐjõjÒ}r -(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r -jçX16r -…�r -}r -(jÅj-jÆj-ubaubajÐj¢ ubj• )�r-}r-(jÅUjÒ}r-(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ,jÞ]r-jò)�r-}r-(jÅX0.362r-jÆj-jÎjâ'jÐjõjÒ}r-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r-jçX0.362r-…�r-}r-(jÅj-jÆj-ubaubajÐj¢ ubj• )�r-}r-(jÅUjÒ}r-(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ,jÞ]r-jò)�r-}r-(jÅX0.681r -jÆj-jÎjâ'jÐjõjÒ}r!-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r"-jçX0.681r#-…�r$-}r%-(jÅj -jÆj-ubaubajÐj¢ ubj• )�r&-}r'-(jÅUjÒ}r(-(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ,jÞ]r)-jò)�r*-}r+-(jÅX0.333r,-jÆj&-jÎjâ'jÐjõjÒ}r--(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r.-jçX0.333r/-…�r0-}r1-(jÅj,-jÆj*-ubaubajÐj¢ ubj• )�r2-}r3-(jÅUjÒ}r4-(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ,jÞ]r5-jò)�r6-}r7-(jÅX0.099r8-jÆj2-jÎjâ'jÐjõjÒ}r9-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r:-jçX0.099r;-…�r<-}r=-(jÅj8-jÆj6-ubaubajÐj¢ ubejÐj£ ubj� )�r>-}r?-(jÅUjÒ}r@-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼,jÞ]rA-(j• )�rB-}rC-(jÅUjÒ}rD-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>-jÞ]rE-jò)�rF-}rG-(jÅX32rH-jÆjB-jÎjâ'jÐjõjÒ}rI-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rJ-jçX32rK-…�rL-}rM-(jÅjH-jÆjF-ubaubajÐj¢ ubj• )�rN-}rO-(jÅUjÒ}rP-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>-jÞ]rQ-jò)�rR-}rS-(jÅX0.599rT-jÆjN-jÎjâ'jÐjõjÒ}rU-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rV-jçX0.599rW-…�rX-}rY-(jÅjT-jÆjR-ubaubajÐj¢ ubj• )�rZ-}r[-(jÅUjÒ}r\-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>-jÞ]r]-jò)�r^-}r_-(jÅX1.078r`-jÆjZ-jÎjâ'jÐjõjÒ}ra-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rb-jçX1.078rc-…�rd-}re-(jÅj`-jÆj^-ubaubajÐj¢ ubj• )�rf-}rg-(jÅUjÒ}rh-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>-jÞ]ri-jò)�rj-}rk-(jÅX0.548rl-jÆjf-jÎjâ'jÐjõjÒ}rm-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rn-jçX0.548ro-…�rp-}rq-(jÅjl-jÆjj-ubaubajÐj¢ ubj• )�rr-}rs-(jÅUjÒ}rt-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>-jÞ]ru-jò)�rv-}rw-(jÅX0.163rx-jÆjr-jÎjâ'jÐjõjÒ}ry-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rz-jçX0.163r{-…�r|-}r}-(jÅjx-jÆjv-ubaubajÐj¢ ubejÐj£ ubj� )�r~-}r-(jÅUjÒ}r€-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼,jÞ]r�-(j• )�r‚-}rƒ-(jÅUjÒ}r„-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~-jÞ]r…-jò)�r†-}r‡-(jÅX64rˆ-jÆj‚-jÎjâ'jÐjõjÒ}r‰-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rŠ-jçX64r‹-…�rŒ-}r�-(jÅjˆ-jÆj†-ubaubajÐj¢ ubj• )�rŽ-}r�-(jÅUjÒ}r�-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~-jÞ]r‘-jò)�r’-}r“-(jÅX1.073r”-jÆjŽ-jÎjâ'jÐjõjÒ}r•-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r–-jçX1.073r—-…�r˜-}r™-(jÅj”-jÆj’-ubaubajÐj¢ ubj• )�rš-}r›-(jÅUjÒ}rœ-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~-jÞ]r�-jò)�rž-}rŸ-(jÅX1.928r -jÆjš-jÎjâ'jÐjõjÒ}r¡-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¢-jçX1.928r£-…�r¤-}r¥-(jÅj -jÆjž-ubaubajÐj¢ ubj• )�r¦-}r§-(jÅUjÒ}r¨-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~-jÞ]r©-jò)�rª-}r«-(jÅX1.101r¬-jÆj¦-jÎjâ'jÐjõjÒ}r­-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r®-jçX1.101r¯-…�r°-}r±-(jÅj¬-jÆjª-ubaubajÐj¢ ubj• )�r²-}r³-(jÅUjÒ}r´-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~-jÞ]rµ-jò)�r¶-}r·-(jÅX0.286r¸-jÆj²-jÎjâ'jÐjõjÒ}r¹-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rº-jçX0.286r»-…�r¼-}r½-(jÅj¸-jÆj¶-ubaubajÐj¢ ubejÐj£ ubj� )�r¾-}r¿-(jÅUjÒ}rÀ-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼,jÞ]rÁ-(j• )�rÂ-}rÃ-(jÅUjÒ}rÄ-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾-jÞ]rÅ-jò)�rÆ-}rÇ-(jÅX128rÈ-jÆjÂ-jÎjâ'jÐjõjÒ}rÉ-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÊ-jçX128rË-…�rÌ-}rÍ-(jÅjÈ-jÆjÆ-ubaubajÐj¢ ubj• )�rÎ-}rÏ-(jÅUjÒ}rÐ-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾-jÞ]rÑ-jò)�rÒ-}rÓ-(jÅX1.833rÔ-jÆjÎ-jÎjâ'jÐjõjÒ}rÕ-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÖ-jçX1.833r×-…�rØ-}rÙ-(jÅjÔ-jÆjÒ-ubaubajÐj¢ ubj• )�rÚ-}rÛ-(jÅUjÒ}rÜ-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾-jÞ]rÝ-jò)�rÞ-}rß-(jÅX3.57rà-jÆjÚ-jÎjâ'jÐjõjÒ}rá-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]râ-jçX3.57rã-…�rä-}rå-(jÅjà-jÆjÞ-ubaubajÐj¢ ubj• )�ræ-}rç-(jÅUjÒ}rè-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾-jÞ]ré-jò)�rê-}rë-(jÅX2.116rì-jÆjæ-jÎjâ'jÐjõjÒ}rí-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rî-jçX2.116rï-…�rð-}rñ-(jÅjì-jÆjê-ubaubajÐj¢ ubj• )�rò-}ró-(jÅUjÒ}rô-(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾-jÞ]rõ-jò)�rö-}r÷-(jÅX0.524rø-jÆjò-jÎjâ'jÐjõjÒ}rù-(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rú-jçX0.524rû-…�rü-}rý-(jÅjø-jÆjö-ubaubajÐj¢ ubejÐj£ ubj� )�rþ-}rÿ-(jÅUjÒ}r.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼,jÞ]r.(j• )�r.}r.(jÅUjÒ}r.(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ-jÞ]r.jò)�r.}r.(jÅX256r.jÆj.jÎjâ'jÐjõjÒ}r .(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r .jçX256r .…�r .}r .(jÅj.jÆj.ubaubajÐj¢ ubj• )�r.}r.(jÅUjÒ}r.(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ-jÞ]r.jò)�r.}r.(jÅX3.288r.jÆj.jÎjâ'jÐjõjÒ}r.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r.jçX3.288r.…�r.}r.(jÅj.jÆj.ubaubajÐj¢ ubj• )�r.}r.(jÅUjÒ}r.(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ-jÞ]r.jò)�r.}r.(jÅX6.693r .jÆj.jÎjâ'jÐjõjÒ}r!.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r".jçX6.693r#.…�r$.}r%.(jÅj .jÆj.ubaubajÐj¢ ubj• )�r&.}r'.(jÅUjÒ}r(.(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ-jÞ]r).jò)�r*.}r+.(jÅX5.855r,.jÆj&.jÎjâ'jÐjõjÒ}r-.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r..jçX5.855r/.…�r0.}r1.(jÅj,.jÆj*.ubaubajÐj¢ ubj• )�r2.}r3.(jÅUjÒ}r4.(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ-jÞ]r5.jò)�r6.}r7.(jÅX0.988r8.jÆj2.jÎjâ'jÐjõjÒ}r9.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r:.jçX0.988r;.…�r<.}r=.(jÅj8.jÆj6.ubaubajÐj¢ ubejÐj£ ubj� )�r>.}r?.(jÅUjÒ}r@.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼,jÞ]rA.(j• )�rB.}rC.(jÅUjÒ}rD.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>.jÞ]rE.jò)�rF.}rG.(jÅX448(Max)rH.jÆjB.jÎjâ'jÐjõjÒ}rI.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rJ.jçX448(Max)rK.…�rL.}rM.(jÅjH.jÆjF.ubaubajÐj¢ ubj• )�rN.}rO.(jÅUjÒ}rP.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>.jÞ]rQ.jò)�rR.}rS.(jÅX5.038rT.jÆjN.jÎjâ'jÐjõjÒ}rU.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rV.jçX5.038rW.…�rX.}rY.(jÅjT.jÆjR.ubaubajÐj¢ ubj• )�rZ.}r[.(jÅUjÒ}r\.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>.jÞ]r].jò)�r^.}r_.(jÅX11.056r`.jÆjZ.jÎjâ'jÐjõjÒ}ra.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rb.jçX11.056rc.…�rd.}re.(jÅj`.jÆj^.ubaubajÐj¢ ubj• )�rf.}rg.(jÅUjÒ}rh.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>.jÞ]ri.jò)�rj.}rk.(jÅX18.967rl.jÆjf.jÎjâ'jÐjõjÒ}rm.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rn.jçX18.967ro.…�rp.}rq.(jÅjl.jÆjj.ubaubajÐj¢ ubj• )�rr.}rs.(jÅUjÒ}rt.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>.jÞ]ru.jò)�rv.}rw.(jÅX1.676rx.jÆjr.jÎjâ'jÐjõjÒ}ry.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rz.jçX1.676r{.…�r|.}r}.(jÅjx.jÆjv.ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r~.}r.(jÅXTable: IPC Throughputr€.jÆjB,jÎjâ'jÐjõjÒ}r�.(jÔ]jÕ]jÖ]j×]jÚ]ujÜMLjÝhjÞ]r‚.jçXTable: IPC Throughputrƒ.…�r„.}r….(jÅj€.jÆj~.ubaubeubjÇ)�r†.}r‡.(jÅUjÆjÙ*jÎjâ'jÐjÑjÒ}rˆ.(jÔ]jÕ]jÖ]j×]r‰.Uipc-throughput-cpu-utilizationrŠ.ajÚ]r‹.hÒaujÜMOjÝhjÞ]rŒ.(jà)�r�.}rŽ.(jÅXIPC Throughput CPU Utilizationr�.jÆj†.jÎjâ'jÐjäjÒ}r�.(jÔ]jÕ]jÖ]j×]jÚ]ujÜMOjÝhjÞ]r‘.jçXIPC Throughput CPU Utilizationr’.…�r“.}r”.(jÅj�.jÆj�.ubaubjò)�r•.}r–.(jÅXiThe CPU utilization is measured using max payload size of 448 bytes with transmit window of 130 messages.r—.jÆj†.jÎjâ'jÐjõjÒ}r˜.(jÔ]jÕ]jÖ]j×]jÚ]ujÜMQjÝhjÞ]r™.jçXiThe CPU utilization is measured using max payload size of 448 bytes with transmit window of 130 messages.rš.…�r›.}rœ.(jÅj—.jÆj•.ubaubjy )�r�.}rž.(jÅUjÆj†.jÎjâ'jÐjÔ jÒ}rŸ.(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r .j~ )�r¡.}r¢.(jÅUjÒ}r£.(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj�.jÞ]r¤.(jƒ )�r¥.}r¦.(jÅUjÒ}r§.(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj¡.jÞ]jÐj‡ ubjƒ )�r¨.}r©.(jÅUjÒ}rª.(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj¡.jÞ]jÐj‡ ubjƒ )�r«.}r¬.(jÅUjÒ}r­.(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj¡.jÞ]jÐj‡ ubjƒ )�r®.}r¯.(jÅUjÒ}r°.(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj¡.jÞ]jÐj‡ ubjƒ )�r±.}r².(jÅUjÒ}r³.(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj¡.jÞ]jÐj‡ ubjƒ )�r´.}rµ.(jÅUjÒ}r¶.(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj¡.jÞ]jÐj‡ ubjƒ )�r·.}r¸.(jÅUjÒ}r¹.(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj¡.jÞ]jÐj‡ ubj‹ )�rº.}r».(jÅUjÒ}r¼.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡.jÞ]r½.j� )�r¾.}r¿.(jÅUjÒ}rÀ.(jÔ]jÕ]jÖ]j×]jÚ]ujÆjº.jÞ]rÁ.(j• )�rÂ.}rÃ.(jÅUjÒ}rÄ.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾.jÞ]jÐj¢ ubj• )�rÅ.}rÆ.(jÅUjÒ}rÇ.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾.jÞ]rÈ.jò)�rÉ.}rÊ.(jÅX K2H (1.2GHz)rË.jÆjÅ.jÎjâ'jÐjõjÒ}rÌ.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÍ.jçX K2H (1.2GHz)rÎ.…�rÏ.}rÐ.(jÅjË.jÆjÉ.ubaubajÐj¢ ubj• )�rÑ.}rÒ.(jÅUjÒ}rÓ.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾.jÞ]rÔ.jò)�rÕ.}rÖ.(jÅX K2E (1.4GHz)r×.jÆjÑ.jÎjâ'jÐjõjÒ}rØ.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÙ.jçX K2E (1.4GHz)rÚ.…�rÛ.}rÜ.(jÅj×.jÆjÕ.ubaubajÐj¢ ubj• )�rÝ.}rÞ.(jÅUjÒ}rß.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾.jÞ]rà.jò)�rá.}râ.(jÅX K2H (1GHz)rã.jÆjÝ.jÎjâ'jÐjõjÒ}rä.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rå.jçX K2H (1GHz)ræ.…�rç.}rè.(jÅjã.jÆjá.ubaubajÐj¢ ubj• )�ré.}rê.(jÅUjÒ}rë.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾.jÞ]rì.jò)�rí.}rî.(jÅX K2E (1GHz)rï.jÆjé.jÎjâ'jÐjõjÒ}rð.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rñ.jçX K2E (1GHz)rò.…�ró.}rô.(jÅjï.jÆjí.ubaubajÐj¢ ubj• )�rõ.}rö.(jÅUjÒ}r÷.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾.jÞ]rø.jò)�rù.}rú.(jÅXK2Grû.jÆjõ.jÎjâ'jÐjõjÒ}rü.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rý.jçXK2Grþ.…�rÿ.}r/(jÅjû.jÆjù.ubaubajÐj¢ ubj• )�r/}r/(jÅUjÒ}r/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾.jÞ]r/jò)�r/}r/(jÅX OMAP-L138r/jÆj/jÎjâ'jÐjõjÒ}r/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r /jçX OMAP-L138r /…�r /}r /(jÅj/jÆj/ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r /}r/(jÅUjÒ}r/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡.jÞ]r/j� )�r/}r/(jÅUjÒ}r/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj /jÞ]r/(j• )�r/}r/(jÅUjÒ}r/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/jÞ]r/jò)�r/}r/(jÅXCPU Utilizationr/jÆj/jÎjâ'jÐjõjÒ}r/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r/jçXCPU Utilizationr/…�r/}r /(jÅj/jÆj/ubaubajÐj¢ ubj• )�r!/}r"/(jÅUjÒ}r#/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/jÞ]r$/jò)�r%/}r&/(jÅX42%r'/jÆj!/jÎjâ'jÐjõjÒ}r(/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r)/jçX42%r*/…�r+/}r,/(jÅj'/jÆj%/ubaubajÐj¢ ubj• )�r-/}r./(jÅUjÒ}r//(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/jÞ]r0/jò)�r1/}r2/(jÅX47%r3/jÆj-/jÎjâ'jÐjõjÒ}r4/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r5/jçX47%r6/…�r7/}r8/(jÅj3/jÆj1/ubaubajÐj¢ ubj• )�r9/}r:/(jÅUjÒ}r;/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/jÞ]r/(jÅX44%r?/jÆj9/jÎjâ'jÐjõjÒ}r@/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rA/jçX44%rB/…�rC/}rD/(jÅj?/jÆj=/ubaubajÐj¢ ubj• )�rE/}rF/(jÅUjÒ}rG/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/jÞ]rH/jò)�rI/}rJ/(jÅX49%rK/jÆjE/jÎjâ'jÐjõjÒ}rL/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rM/jçX49%rN/…�rO/}rP/(jÅjK/jÆjI/ubaubajÐj¢ ubj• )�rQ/}rR/(jÅUjÒ}rS/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/jÞ]rT/jò)�rU/}rV/(jÅX89.5%rW/jÆjQ/jÎjâ'jÐjõjÒ}rX/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rY/jçX89.5%rZ/…�r[/}r\/(jÅjW/jÆjU/ubaubajÐj¢ ubj• )�r]/}r^/(jÅUjÒ}r_/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/jÞ]r`/jò)�ra/}rb/(jÅX100%rc/jÆj]/jÎjâ'jÐjõjÒ}rd/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]re/jçX100%rf/…�rg/}rh/(jÅjc/jÆja/ubaubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubaubjò)�ri/}rj/(jÅX%Table: IPC Throughput CPU Utilizationrk/jÆj†.jÎjâ'jÐjõjÒ}rl/(jÔ]jÕ]jÖ]j×]jÚ]ujÜMYjÝhjÞ]rm/jçX%Table: IPC Throughput CPU Utilizationrn/…�ro/}rp/(jÅjk/jÆji/ubaubeubeubeubjÇ)�rq/}rr/(jÅUjÆjÌjÎjÏjÐjÑjÒ}rs/(jÔ]jÕ]jÖ]j×]rt/Uipc-3-xru/ajÚ]rv/h«aujÜKyjÝhjÞ]rw/(jà)�rx/}ry/(jÅXIPC 3.xrz/jÆjq/jÎjÏjÐjäjÒ}r{/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÝhjÞ]r|/jçXIPC 3.xr}/…�r~/}r/(jÅjz/jÆjx/ubaubj7)�r€/}r�/(jÅX/http://processors.wiki.ti.com/index.php/IPC_3.xjÆjq/jÎj:X5source/rtos/PDK_Platform_Software/IPC/IPC_3.x.rst.incr‚/…�rƒ/}r„/bjÐj>jÒ}r…/(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r†/jçX/http://processors.wiki.ti.com/index.php/IPC_3.xr‡/…�rˆ/}r‰/(jÅUjÆj€/ubaubjÇ)�rŠ/}r‹/(jÅUjKjÆjq/jÎjƒ/jÐjÑjÒ}rŒ/(jÔ]r�/X introductionrŽ/ajÕ]jÖ]j×]r�/Uid34r�/ajÚ]ujÜKjÝhjÞ]r‘/(jà)�r’/}r“/(jÅX Introductionr”/jÆjŠ/jÎjƒ/jÐjäjÒ}r•/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r–/jçX Introductionr—/…�r˜/}r™/(jÅj”/jÆj’/ubaubjò)�rš/}r›/(jÅX›This page contains details about the IPC 3.x product, TI's solution for interprocessor communication between cores on homogenous and heterogeneous devices.rœ/jÆjŠ/jÎjƒ/jÐjõjÒ}r�/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rž/jçX›This page contains details about the IPC 3.x product, TI's solution for interprocessor communication between cores on homogenous and heterogeneous devices.rŸ/…�r /}r¡/(jÅjœ/jÆjš/ubaubjò)�r¢/}r£/(jÅXhIPC 3.x is an evolution of the IPC product, so it helps to understand the scope of previous generations.r¤/jÆjŠ/jÎjƒ/jÐjõjÒ}r¥/(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]r¦/jçXhIPC 3.x is an evolution of the IPC product, so it helps to understand the scope of previous generations.r§/…�r¨/}r©/(jÅj¤/jÆj¢/ubaubjt)�rª/}r«/(jÅUjÆjŠ/jÎjƒ/jÐjwjÒ}r¬/(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK jÝhjÞ]r­/(j{)�r®/}r¯/(jÅX`The IPC product `__ defines `several interfaces `__ to facilitate multiprocessor communication.jÆjª/jÎjƒ/jÐjjÒ}r°/(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r±/jò)�r²/}r³/(jÅX`The IPC product `__ defines `several interfaces `__ to facilitate multiprocessor communication.jÆj®/jÎjƒ/jÐjõjÒ}r´/(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rµ/(jû)�r¶/}r·/(jÅXg`The IPC product `__jÒ}r¸/(UnameXThe IPC productjXQhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/index.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆj²/jÞ]r¹/jçXThe IPC productrº/…�r»/}r¼/(jÅUjÆj¶/ubajÐjÿubjçX defines r½/…�r¾/}r¿/(jÅX defines jÆj²/ubjû)�rÀ/}rÁ/(jÅXƒ`several interfaces `__jÒ}rÂ/(UnameXseveral interfacesjXjhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/index.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆj²/jÞ]rÃ/jçXseveral interfacesrÄ/…�rÅ/}rÆ/(jÅUjÆjÀ/ubajÐjÿubjçX, to facilitate multiprocessor communication.rÇ/…�rÈ/}rÉ/(jÅX, to facilitate multiprocessor communication.jÆj²/ubeubaubj{)�rÊ/}rË/(jÅXÁThe IPC 1.x product includes implementations of those interfaces for the SYS/BIOS RTOS. It supports communicating between cores running SYS/BIOS, as well to HLOS processors running SysLink 2.x.jÆjª/jÎjƒ/jÐjjÒ}rÌ/(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÍ/jò)�rÎ/}rÏ/(jÅXÁThe IPC 1.x product includes implementations of those interfaces for the SYS/BIOS RTOS. It supports communicating between cores running SYS/BIOS, as well to HLOS processors running SysLink 2.x.rÐ/jÆjÊ/jÎjƒ/jÐjõjÒ}rÑ/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÒ/jçXÁThe IPC 1.x product includes implementations of those interfaces for the SYS/BIOS RTOS. It supports communicating between cores running SYS/BIOS, as well to HLOS processors running SysLink 2.x.rÓ/…�rÔ/}rÕ/(jÅjÐ/jÆjÎ/ubaubaubj{)�rÖ/}r×/(jÅXThe SysLink 2.x provides services to control slave processors (e.g. load, start, stop). It also provides an implementation of the IPC interfaces for High Level OSs (HLOS) like Linux and QNX. SysLink 2.x supports communicating with slave processors running SYS/BIOS and IPC 1.x. jÆjª/jÎjƒ/jÐjjÒ}rØ/(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÙ/jò)�rÚ/}rÛ/(jÅXThe SysLink 2.x provides services to control slave processors (e.g. load, start, stop). It also provides an implementation of the IPC interfaces for High Level OSs (HLOS) like Linux and QNX. SysLink 2.x supports communicating with slave processors running SYS/BIOS and IPC 1.x.rÜ/jÆjÖ/jÎjƒ/jÐjõjÒ}rÝ/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÞ/jçXThe SysLink 2.x provides services to control slave processors (e.g. load, start, stop). It also provides an implementation of the IPC interfaces for High Level OSs (HLOS) like Linux and QNX. SysLink 2.x supports communicating with slave processors running SYS/BIOS and IPC 1.x.rß/…�rà/}rá/(jÅjÜ/jÆjÚ/ubaubaubeubjò)�râ/}rã/(jÅXËIPC 3.x merges the IPC 1.x and SysLink 2.x products, creating a single product that defines multiprocessor communication APIs and provides implementations for several OS's, including SYS/BIOS and HLOS's.rä/jÆjŠ/jÎjƒ/jÐjõjÒ}rå/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ræ/jçXËIPC 3.x merges the IPC 1.x and SysLink 2.x products, creating a single product that defines multiprocessor communication APIs and provides implementations for several OS's, including SYS/BIOS and HLOS's.rç/…�rè/}ré/(jÅjä/jÆjâ/ubaubjë)�rê/}rë/(jÅX°The SysLink name is being retired. The SysLink 2.x product will not be supported on existing devices, and development has stopped and support for new devices will not be added.jÆjŠ/jÎjƒ/jÐjïjÒ}rì/(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rí/jò)�rî/}rï/(jÅX°The SysLink name is being retired. The SysLink 2.x product will not be supported on existing devices, and development has stopped and support for new devices will not be added.rð/jÆjê/jÎjƒ/jÐjõjÒ}rñ/(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rò/jçX°The SysLink name is being retired. The SysLink 2.x product will not be supported on existing devices, and development has stopped and support for new devices will not be added.ró/…�rô/}rõ/(jÅjð/jÆjî/ubaubaubeubjÇ)�rö/}r÷/(jÅUjÆjq/jÎjƒ/jÐjÑjÒ}rø/(jÔ]jÕ]jÖ]j×]rù/Uchangesrú/ajÚ]rû/hIaujÜK%jÝhjÞ]rü/(jà)�rý/}rþ/(jÅXChangesrÿ/jÆjö/jÎjƒ/jÐjäjÒ}r0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÝhjÞ]r0jçXChangesr0…�r0}r0(jÅjÿ/jÆjý/ubaubjò)�r0}r0(jÅX³The key changes between IPC 1.x/SysLink 2.x and IPC 3.x is the HLOS implementation. This table summarizes the IPC 1.x/SysLink 2.x supported APIs against those provided in IPC 3.x.r0jÆjö/jÎjƒ/jÐjõjÒ}r0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÝhjÞ]r 0jçX³The key changes between IPC 1.x/SysLink 2.x and IPC 3.x is the HLOS implementation. This table summarizes the IPC 1.x/SysLink 2.x supported APIs against those provided in IPC 3.x.r 0…�r 0}r 0(jÅj0jÆj0ubaubjy )�r 0}r0(jÅUjÆjö/jÎjƒ/jÐjÔ jÒ}r0(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r0j~ )�r0}r0(jÅUjÒ}r0(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj 0jÞ]r0(jƒ )�r0}r0(jÅUjÒ}r0(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj0jÞ]jÐj‡ ubjƒ )�r0}r0(jÅUjÒ}r0(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj0jÞ]jÐj‡ ubjƒ )�r0}r0(jÅUjÒ}r0(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj0jÞ]jÐj‡ ubj‹ )�r0}r0(jÅUjÒ}r 0(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0jÞ]r!0j� )�r"0}r#0(jÅUjÒ}r$0(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0jÞ]r%0(j• )�r&0}r'0(jÅUjÒ}r(0(jÔ]jÕ]jÖ]j×]jÚ]ujÆj"0jÞ]r)0jò)�r*0}r+0(jÅXFeaturer,0jÆj&0jÎjƒ/jÐjõjÒ}r-0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]r.0jçXFeaturer/0…�r00}r10(jÅj,0jÆj*0ubaubajÐj¢ ubj• )�r20}r30(jÅUjÒ}r40(jÔ]jÕ]jÖ]j×]jÚ]ujÆj"0jÞ]r50jò)�r60}r70(jÅXIPC 1.x/SysLink 2.xr80jÆj20jÎjƒ/jÐjõjÒ}r90(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]r:0jçXIPC 1.x/SysLink 2.xr;0…�r<0}r=0(jÅj80jÆj60ubaubajÐj¢ ubj• )�r>0}r?0(jÅUjÒ}r@0(jÔ]jÕ]jÖ]j×]jÚ]ujÆj"0jÞ]rA0jò)�rB0}rC0(jÅXIPC 3.xrD0jÆj>0jÎjƒ/jÐjõjÒ}rE0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]rF0jçXIPC 3.xrG0…�rH0}rI0(jÅjD0jÆjB0ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rJ0}rK0(jÅUjÒ}rL0(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0jÞ]rM0(j� )�rN0}rO0(jÅUjÒ}rP0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ0jÞ]rQ0(j• )�rR0}rS0(jÅUjÒ}rT0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjN0jÞ]rU0jò)�rV0}rW0(jÅX Slave loadingrX0jÆjR0jÎjƒ/jÐjõjÒ}rY0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rZ0jçX Slave loadingr[0…�r\0}r]0(jÅjX0jÆjV0ubaubajÐj¢ ubj• )�r^0}r_0(jÅUjÒ}r`0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjN0jÞ]ra0jò)�rb0}rc0(jÅXProcMgrrd0jÆj^0jÎjƒ/jÐjõjÒ}re0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rf0jçXProcMgrrg0…�rh0}ri0(jÅjd0jÆjb0ubaubajÐj¢ ubj• )�rj0}rk0(jÅUjÒ}rl0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjN0jÞ]rm0jò)�rn0}ro0(jÅX9Slaves are loaded on demand, currently without a user APIrp0jÆjj0jÎjƒ/jÐjõjÒ}rq0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rr0jçX9Slaves are loaded on demand, currently without a user APIrs0…�rt0}ru0(jÅjp0jÆjn0ubaubajÐj¢ ubejÐj£ ubj� )�rv0}rw0(jÅUjÒ}rx0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ0jÞ]ry0(j• )�rz0}r{0(jÅUjÒ}r|0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjv0jÞ]r}0jò)�r~0}r0(jÅXLow-level primitivesr€0jÆjz0jÎjƒ/jÐjõjÒ}r�0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r‚0jçXLow-level primitivesrƒ0…�r„0}r…0(jÅj€0jÆj~0ubaubajÐj¢ ubj• )�r†0}r‡0(jÅUjÒ}rˆ0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjv0jÞ]r‰0jò)�rŠ0}r‹0(jÅX2Notify, Heap*MP, Gate*MP, SharedRegion, NameServerrŒ0jÆj†0jÎjƒ/jÐjõjÒ}r�0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]rŽ0jçX2Notify, Heap*MP, Gate*MP, SharedRegion, NameServerr�0…�r�0}r‘0(jÅjŒ0jÆjŠ0ubaubajÐj¢ ubj• )�r’0}r“0(jÅUjÒ}r”0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjv0jÞ]r•0jò)�r–0}r—0(jÅXGAvailable for BIOS-to-BIOS communication, only GateMP available on HLOSr˜0jÆj’0jÎjƒ/jÐjõjÒ}r™0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]rš0jçXGAvailable for BIOS-to-BIOS communication, only GateMP available on HLOSr›0…�rœ0}r�0(jÅj˜0jÆj–0ubaubajÐj¢ ubejÐj£ ubj� )�rž0}rŸ0(jÅUjÒ}r 0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ0jÞ]r¡0(j• )�r¢0}r£0(jÅUjÒ}r¤0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjž0jÞ]r¥0jò)�r¦0}r§0(jÅX Messagingr¨0jÆj¢0jÎjƒ/jÐjõjÒ}r©0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rª0jçX Messagingr«0…�r¬0}r­0(jÅj¨0jÆj¦0ubaubajÐj¢ ubj• )�r®0}r¯0(jÅUjÒ}r°0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjž0jÞ]r±0jò)�r²0}r³0(jÅXMessageQr´0jÆj®0jÎjƒ/jÐjõjÒ}rµ0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]r¶0jçXMessageQr·0…�r¸0}r¹0(jÅj´0jÆj²0ubaubajÐj¢ ubj• )�rº0}r»0(jÅUjÒ}r¼0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjž0jÞ]r½0jò)�r¾0}r¿0(jÅXMessageQrÀ0jÆjº0jÎjƒ/jÐjõjÒ}rÁ0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rÂ0jçXMessageQrÃ0…�rÄ0}rÅ0(jÅjÀ0jÆj¾0ubaubajÐj¢ ubejÐj£ ubj� )�rÆ0}rÇ0(jÅUjÒ}rÈ0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ0jÞ]rÉ0(j• )�rÊ0}rË0(jÅUjÒ}rÌ0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ0jÞ]rÍ0jò)�rÎ0}rÏ0(jÅXHigher level data passingrÐ0jÆjÊ0jÎjƒ/jÐjõjÒ}rÑ0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]rÒ0jçXHigher level data passingrÓ0…�rÔ0}rÕ0(jÅjÐ0jÆjÎ0ubaubajÐj¢ ubj• )�rÖ0}r×0(jÅUjÒ}rØ0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ0jÞ]rÙ0jò)�rÚ0}rÛ0(jÅXRingIO, FrameQrÜ0jÆjÖ0jÎjƒ/jÐjõjÒ}rÝ0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]rÞ0jçXRingIO, FrameQrß0…�rà0}rá0(jÅjÜ0jÆjÚ0ubaubajÐj¢ ubj• )�râ0}rã0(jÅUjÒ}rä0(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ0jÞ]rå0jò)�ræ0}rç0(jÅXFNone, though IPC provides primitives to enable higher level frameworksrè0jÆjâ0jÎjƒ/jÐjõjÒ}ré0(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]rê0jçXFNone, though IPC provides primitives to enable higher level frameworksrë0…�rì0}rí0(jÅjè0jÆjæ0ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjÇ)�rî0}rï0(jÅUjÆjö/jÎjƒ/jÐjÑjÒ}rð0(jÔ]jÕ]jÖ]j×]rñ0Ubiosrò0ajÚ]ró0jšaujÜKAjÝhjÞ]rô0(jà)�rõ0}rö0(jÅXBIOSr÷0jÆjî0jÎjƒ/jÐjäjÒ}rø0(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÝhjÞ]rù0jçXBIOSrú0…�rû0}rü0(jÅj÷0jÆjõ0ubaubjò)�rý0}rþ0(jÅX`For BIOS-to-BIOS communication, the same features available in IPC 1.x are available in IPC 3.x.rÿ0jÆjî0jÎjƒ/jÐjõjÒ}r1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÝhjÞ]r1jçX`For BIOS-to-BIOS communication, the same features available in IPC 1.x are available in IPC 3.x.r1…�r1}r1(jÅjÿ0jÆjý0ubaubeubjÇ)�r1}r1(jÅUjKjÆjö/jÎjƒ/jÐjÑjÒ}r1(jÔ]r1ja)ajÕ]jÖ]j×]r 1Uid35r 1ajÚ]ujÜKGjÝhjÞ]r 1(jà)�r 1}r 1(jÅXLinuxr1jÆj1jÎjƒ/jÐjäjÒ}r1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÝhjÞ]r1jçXLinuxr1…�r1}r1(jÅj1jÆj 1ubaubjò)�r1}r1(jÅX™On Linux, IPC 3.x is built upon services available (and evolving!) in the mainline Linux kernel (3.4+). These core services include remoteproc and rpmsg.r1jÆj1jÎjƒ/jÐjõjÒ}r1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÝhjÞ]r1jçX™On Linux, IPC 3.x is built upon services available (and evolving!) in the mainline Linux kernel (3.4+). These core services include remoteproc and rpmsg.r1…�r1}r1(jÅj1jÆj1ubaubjò)�r1}r1(jÅXjAbove those Linux services, a few key services from the IPC API (e.g. MessageQ) are provided in user mode.r1jÆj1jÎjƒ/jÐjõjÒ}r1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÝhjÞ]r 1jçXjAbove those Linux services, a few key services from the IPC API (e.g. MessageQ) are provided in user mode.r!1…�r"1}r#1(jÅj1jÆj1ubaubeubjÇ)�r$1}r%1(jÅUjKjÆjö/jÎjƒ/jÐjÑjÒ}r&1(jÔ]r'1Xqnxr(1ajÕ]jÖ]j×]r)1Uid36r*1ajÚ]ujÜKQjÝhjÞ]r+1(jà)�r,1}r-1(jÅXQNXr.1jÆj$1jÎjƒ/jÐjäjÒ}r/1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKQjÝhjÞ]r01jçXQNXr11…�r21}r31(jÅj.1jÆj,1ubaubjò)�r41}r51(jÅXbOn QNX, IPC 3.x provides feature parity to Linux. The QNX OS doesn't inherently provide primitives like Linux's 'remoteproc' and 'rpmsg', so IPC 3.x also includes a loader and rpmsg-compatible communication infrastructure. This rpmsg-compatible MessageQ implementation enables the same BIOS-side image to communicate with either Linux or QNX on the HLOS.r61jÆj$1jÎjƒ/jÐjõjÒ}r71(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÝhjÞ]r81jçXbOn QNX, IPC 3.x provides feature parity to Linux. The QNX OS doesn't inherently provide primitives like Linux's 'remoteproc' and 'rpmsg', so IPC 3.x also includes a loader and rpmsg-compatible communication infrastructure. This rpmsg-compatible MessageQ implementation enables the same BIOS-side image to communicate with either Linux or QNX on the HLOS.r91…�r:1}r;1(jÅj61jÆj41ubaubeubeubjÇ)�r<1}r=1(jÅUjÆjq/jÎjƒ/jÐjÑjÒ}r>1(jÔ]jÕ]jÖ]j×]r?1U developmentr@1ajÚ]rA1j=aujÜK[jÝhjÞ]rB1(jà)�rC1}rD1(jÅX DevelopmentrE1jÆj<1jÎjƒ/jÐjäjÒ}rF1(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÝhjÞ]rG1jçX DevelopmentrH1…�rI1}rJ1(jÅjE1jÆjC1ubaubjò)�rK1}rL1(jÅX?IPC 3.x development is being managed at https://git.ti.com/ipc.rM1jÆj<1jÎjƒ/jÐjõjÒ}rN1(jÔ]jÕ]jÖ]j×]jÚ]ujÜK]jÝhjÞ]rO1(jçX(IPC 3.x development is being managed at rP1…�rQ1}rR1(jÅX(IPC 3.x development is being managed at jÆjK1ubjû)�rS1}rT1(jÅXhttps://git.ti.com/ipcrU1jÒ}rV1(UrefurijU1j×]jÖ]jÔ]jÕ]jÚ]ujÆjK1jÞ]rW1jçXhttps://git.ti.com/ipcrX1…�rY1}rZ1(jÅUjÆjS1ubajÐjÿubjçX.…�r[1}r\1(jÅX.jÆjK1ubeubeubjÇ)�r]1}r^1(jÅUjÆjq/jÎjÏjÐjÑjÒ}r_1(jÔ]jÕ]jÖ]j×]r`1Uresource-custom-tablera1ajÚ]rb1h†aujÜK}jÝhjÞ]rc1(jà)�rd1}re1(jÅXResource Custom Tablerf1jÆj]1jÎjÏjÐjäjÒ}rg1(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÝhjÞ]rh1jçXResource Custom Tableri1…�rj1}rk1(jÅjf1jÆjd1ubaubj7)�rl1}rm1(jÅX@http://processors.wiki.ti.com/index.php/IPC_Resource_customTablejÆj]1jÎj:XFsource/rtos/PDK_Platform_Software/IPC/IPC_Resource_customTable.rst.incrn1…�ro1}rp1bjÐj>jÒ}rq1(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rr1jçX@http://processors.wiki.ti.com/index.php/IPC_Resource_customTablers1…�rt1}ru1(jÅUjÆjl1ubaubjÇ)�rv1}rw1(jÅUjKjÆj]1jÎjo1jÐjÑjÒ}rx1(jÔ]ry1X introductionrz1ajÕ]jÖ]j×]r{1Uid37r|1ajÚ]ujÜKjÝhjÞ]r}1(jà)�r~1}r1(jÅX Introductionr€1jÆjv1jÎjo1jÐjäjÒ}r�1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r‚1jçX Introductionrƒ1…�r„1}r…1(jÅj€1jÆj~1ubaubjò)�r†1}r‡1(jÅX¨The IPC 3.x product introduced support for loading slave images which include a `Linux-defined resource table `__. In IPC 3.00.01, `IPC added the ability `__ for users to override the default resource table with their own. This article describes the mechanics involved to do that.jÆjv1jÎjo1jÐjõjÒ}rˆ1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r‰1(jçXPThe IPC 3.x product introduced support for loading slave images which include a rŠ1…�r‹1}rŒ1(jÅXPThe IPC 3.x product introduced support for loading slave images which include a jÆj†1ubjû)�r�1}rŽ1(jÅXB`Linux-defined resource table `__jÒ}r�1(UnameXLinux-defined resource tablejXhttp://lwn.net/Articles/489009/j×]jÖ]jÔ]jÕ]jÚ]ujÆj†1jÞ]r�1jçXLinux-defined resource tabler‘1…�r’1}r“1(jÅUjÆj�1ubajÐjÿubjçX. In IPC 3.00.01, r”1…�r•1}r–1(jÅX. In IPC 3.00.01, jÆj†1ubjû)�r—1}r˜1(jÅX‰`IPC added the ability `__jÒ}r™1(UnameXIPC added the abilityjXmhttp://git.ti.com/cgit/cgit.cgi/ipc/ipcdev.git/commit/?h=ipc-next&id=44169db6cd6f02193acf7ee97c13f956f599431dj×]jÖ]jÔ]jÕ]jÚ]ujÆj†1jÞ]rš1jçXIPC added the abilityr›1…�rœ1}r�1(jÅUjÆj—1ubajÐjÿubjçX{ for users to override the default resource table with their own. This article describes the mechanics involved to do that.rž1…�rŸ1}r 1(jÅX{ for users to override the default resource table with their own. This article describes the mechanics involved to do that.jÆj†1ubeubjë)�r¡1}r¢1(jÅXoAlthough the Linux community defined the resource table, the IPC port to QNX also uses the same resource table.jÆjv1jÎjo1jÐjïjÒ}r£1(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¤1jò)�r¥1}r¦1(jÅXoAlthough the Linux community defined the resource table, the IPC port to QNX also uses the same resource table.r§1jÆj¡1jÎjo1jÐjõjÒ}r¨1(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r©1jçXoAlthough the Linux community defined the resource table, the IPC port to QNX also uses the same resource table.rª1…�r«1}r¬1(jÅj§1jÆj¥1ubaubaubjë)�r­1}r®1(jÅXYThis is an expert technique. Most users do not need to modify the default resource table.jÆjv1jÎjo1jÐjïjÒ}r¯1(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r°1jò)�r±1}r²1(jÅXYThis is an expert technique. Most users do not need to modify the default resource table.r³1jÆj­1jÎjo1jÐjõjÒ}r´1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rµ1jçXYThis is an expert technique. Most users do not need to modify the default resource table.r¶1…�r·1}r¸1(jÅj³1jÆj±1ubaubaubeubjÇ)�r¹1}rº1(jÅUjKjÆj]1jÎjo1jÐjÑjÒ}r»1(jÔ]r¼1Xconfigr½1ajÕ]jÖ]j×]r¾1Uid38r¿1ajÚ]ujÜKjÝhjÞ]rÀ1(jà)�rÁ1}rÂ1(jÅXConfigrÃ1jÆj¹1jÎjo1jÐjäjÒ}rÄ1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÅ1jçXConfigrÆ1…�rÇ1}rÈ1(jÅjÃ1jÆjÁ1ubaubjò)�rÉ1}rÊ1(jÅX€To indicate you want to provide your own resource table, you need to set the ``Resource.customTable`` config parameter ``true``.jÆj¹1jÎjo1jÐjõjÒ}rË1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÌ1(jçXMTo indicate you want to provide your own resource table, you need to set the rÍ1…�rÎ1}rÏ1(jÅXMTo indicate you want to provide your own resource table, you need to set the jÆjÉ1ubj )�rÐ1}rÑ1(jÅX``Resource.customTable``jÒ}rÒ1(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÉ1jÞ]rÓ1jçXResource.customTablerÔ1…�rÕ1}rÖ1(jÅUjÆjÐ1ubajÐj¨ubjçX config parameter r×1…�rØ1}rÙ1(jÅX config parameter jÆjÉ1ubj )�rÚ1}rÛ1(jÅX``true``jÒ}rÜ1(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÉ1jÞ]rÝ1jçXtruerÞ1…�rß1}rà1(jÅUjÆjÚ1ubajÐj¨ubjçX.…�rá1}râ1(jÅX.jÆjÉ1ubeubj)�rã1}rä1(jÅXŽ/* Override the default resource table with my own */ var Resource = xdc.useModule('ti.ipc.remoteproc.Resource'); Resource.customTable = true;jÆj¹1jÎjo1jÐjjÒ}rå1(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMojÝhjÞ]ræ1jçXŽ/* Override the default resource table with my own */ var Resource = xdc.useModule('ti.ipc.remoteproc.Resource'); Resource.customTable = true;rç1…�rè1}ré1(jÅUjÆjã1ubaubjò)�rê1}rë1(jÅXÙWhen ``Resource.customtable`` is set to ``true``, IPC will no longer generate a default table, and the user will be able to supply their own table using a specially-named C struct, ``ti_ipc_remoteproc_ResourceTable``.jÆj¹1jÎjo1jÐjõjÒ}rì1(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rí1(jçXWhen rî1…�rï1}rð1(jÅXWhen jÆjê1ubj )�rñ1}rò1(jÅX``Resource.customtable``jÒ}ró1(jÔ]jÕ]jÖ]j×]jÚ]ujÆjê1jÞ]rô1jçXResource.customtablerõ1…�rö1}r÷1(jÅUjÆjñ1ubajÐj¨ubjçX is set to rø1…�rù1}rú1(jÅX is set to jÆjê1ubj )�rû1}rü1(jÅX``true``jÒ}rý1(jÔ]jÕ]jÖ]j×]jÚ]ujÆjê1jÞ]rþ1jçXtruerÿ1…�r2}r2(jÅUjÆjû1ubajÐj¨ubjçX…, IPC will no longer generate a default table, and the user will be able to supply their own table using a specially-named C struct, r2…�r2}r2(jÅX…, IPC will no longer generate a default table, and the user will be able to supply their own table using a specially-named C struct, jÆjê1ubj )�r2}r2(jÅX#``ti_ipc_remoteproc_ResourceTable``jÒ}r2(jÔ]jÕ]jÖ]j×]jÚ]ujÆjê1jÞ]r2jçXti_ipc_remoteproc_ResourceTabler 2…�r 2}r 2(jÅUjÆj2ubajÐj¨ubjçX.…�r 2}r 2(jÅX.jÆjê1ubeubeubjÇ)�r2}r2(jÅUjÆj]1jÎjo1jÐjÑjÒ}r2(jÔ]jÕ]jÖ]j×]r2Uc-coder2ajÚ]r2haujÜK%jÝhjÞ]r2(jà)�r2}r2(jÅXC Coder2jÆj2jÎjo1jÐjäjÒ}r2(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÝhjÞ]r2jçXC Coder2…�r2}r2(jÅj2jÆj2ubaubjò)�r2}r2(jÅX,The user-supplied resource table is a C structure named ``ti_ipc_remoteproc_ResourceTable`` that needs to be linked into the slave executable. The platform-specific default resource tables are provided in IPC's **packages/ti/ip/remoteproc/rsc_table_*.h**, and are the recommended place to start from.jÆj2jÎjo1jÐjõjÒ}r2(jÔ]jÕ]jÖ]j×]jÚ]ujÜK&jÝhjÞ]r 2(jçX8The user-supplied resource table is a C structure named r!2…�r"2}r#2(jÅX8The user-supplied resource table is a C structure named jÆj2ubj )�r$2}r%2(jÅX#``ti_ipc_remoteproc_ResourceTable``jÒ}r&2(jÔ]jÕ]jÖ]j×]jÚ]ujÆj2jÞ]r'2jçXti_ipc_remoteproc_ResourceTabler(2…�r)2}r*2(jÅUjÆj$2ubajÐj¨ubjçXx that needs to be linked into the slave executable. The platform-specific default resource tables are provided in IPC's r+2…�r,2}r-2(jÅXx that needs to be linked into the slave executable. The platform-specific default resource tables are provided in IPC's jÆj2ubjÚ)�r.2}r/2(jÅX+**packages/ti/ip/remoteproc/rsc_table_*.h**jÒ}r02(jÔ]jÕ]jÖ]j×]jÚ]ujÆj2jÞ]r12jçX'packages/ti/ip/remoteproc/rsc_table_*.hr22…�r32}r42(jÅUjÆj.2ubajÐjâubjçX., and are the recommended place to start from.r52…�r62}r72(jÅX., and are the recommended place to start from.jÆj2ubeubjò)�r82}r92(jÅXŸAfter finding the default resource table for your platform, you can copy the entirety of it into your own C file, compile it, and link it into your executable.r:2jÆj2jÎjo1jÐjõjÒ}r;2(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÝhjÞ]r<2jçXŸAfter finding the default resource table for your platform, you can copy the entirety of it into your own C file, compile it, and link it into your executable.r=2…�r>2}r?2(jÅj:2jÆj82ubaubjë)�r@2}rA2(jÅX~When configuring in a TYPE_TRACE element (a trace buffer) you must explicitly declare the symbol as an extern (as below). The trace buffer is generated during config, and unfortunately there is no header to #include that declares the name of this symbol. Also note the size of the trace buffer declared in the resource table must match the size you've specified in your .cfg script.jÆj2jÎjo1jÐjïjÒ}rB2(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rC2jò)�rD2}rE2(jÅX~When configuring in a TYPE_TRACE element (a trace buffer) you must explicitly declare the symbol as an extern (as below). The trace buffer is generated during config, and unfortunately there is no header to #include that declares the name of this symbol. Also note the size of the trace buffer declared in the resource table must match the size you've specified in your .cfg script.rF2jÆj@2jÎjo1jÐjõjÒ}rG2(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÞ]rH2jçX~When configuring in a TYPE_TRACE element (a trace buffer) you must explicitly declare the symbol as an extern (as below). The trace buffer is generated during config, and unfortunately there is no header to #include that declares the name of this symbol. Also note the size of the trace buffer declared in the resource table must match the size you've specified in your .cfg script.rI2…�rJ2}rK2(jÅjF2jÆjD2ubaubaubjò)�rL2}rM2(jÅXFor reference, here is an Vayu compatible resource table derived from **packages/ti/ipc/remoteproc/rsc_table_vayu_ipu.h**\ ( Disclaimer: This is a reference design only, and it is subject to enhancements, improvements and other changes without notifications).jÆj2jÎjo1jÐjõjÒ}rN2(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÝhjÞ]rO2(jçXFFor reference, here is an Vayu compatible resource table derived from rP2…�rQ2}rR2(jÅXFFor reference, here is an Vayu compatible resource table derived from jÆjL2ubjÚ)�rS2}rT2(jÅX3**packages/ti/ipc/remoteproc/rsc_table_vayu_ipu.h**jÒ}rU2(jÔ]jÕ]jÖ]j×]jÚ]ujÆjL2jÞ]rV2jçX/packages/ti/ipc/remoteproc/rsc_table_vayu_ipu.hrW2…�rX2}rY2(jÅUjÆjS2ubajÐjâubjçXˆ( Disclaimer: This is a reference design only, and it is subject to enhancements, improvements and other changes without notifications).rZ2…�r[2}r\2(jÅXŠ\ ( Disclaimer: This is a reference design only, and it is subject to enhancements, improvements and other changes without notifications).jÆjL2ubeubj)�r]2}r^2(jÅXÎ!#include "rsc_types.h" /* IPU Memory Map */ #define L4_DRA7XX_BASE 0x4A000000 /* L4_CFG & L4_WKUP */ #define L4_PERIPHERAL_L4CFG (L4_DRA7XX_BASE) #define IPU_PERIPHERAL_L4CFG 0x6A000000 #define L4_PERIPHERAL_L4PER1 0x48000000 #define IPU_PERIPHERAL_L4PER1 0x68000000 #define L4_PERIPHERAL_L4PER2 0x48400000 #define IPU_PERIPHERAL_L4PER2 0x68400000 #define L4_PERIPHERAL_L4PER3 0x48800000 #define IPU_PERIPHERAL_L4PER3 0x68800000 #define L4_PERIPHERAL_L4EMU 0x54000000 #define IPU_PERIPHERAL_L4EMU 0x74000000 #define L3_PERIPHERAL_PRUSS 0x4B200000 #define IPU_PERIPHERAL_PRUSS 0x6B200000 #define L3_PERIPHERAL_DMM 0x4E000000 #define IPU_PERIPHERAL_DMM 0x6E000000 #define L3_IVAHD_CONFIG 0x5A000000 #define IPU_IVAHD_CONFIG 0x7A000000 #define L3_IVAHD_SL2 0x5B000000 #define IPU_IVAHD_SL2 0x7B000000 #define L3_TILER_MODE_0_1 0x60000000 #define IPU_TILER_MODE_0_1 0xA0000000 #define L3_TILER_MODE_2 0x70000000 #define IPU_TILER_MODE_2 0xB0000000 #define L3_TILER_MODE_3 0x78000000 #define IPU_TILER_MODE_3 0xB8000000 #define L3_OCMC_RAM 0x40300000 #define IPU_OCMC_RAM 0x60300000 #define L3_EMIF_SDRAM 0xA0000000 #define IPU_EMIF_SDRAM 0x10000000 #define IPU_MEM_TEXT 0x0 #define IPU_MEM_DATA 0x80000000 #define IPU_MEM_IOBUFS 0x90000000 #define IPU_MEM_IPC_DATA 0x9F000000 #define IPU_MEM_IPC_VRING 0x60000000 #define IPU_MEM_RPMSG_VRING0 0x60000000 #define IPU_MEM_RPMSG_VRING1 0x60004000 #define IPU_MEM_VRING_BUFS0 0x60040000 #define IPU_MEM_VRING_BUFS1 0x60080000 #define IPU_MEM_IPC_VRING_SIZE SZ_1M #define IPU_MEM_IPC_DATA_SIZE SZ_1M #if defined(VAYU_IPU_1) #define IPU_MEM_TEXT_SIZE (SZ_1M) #elif defined(VAYU_IPU_2) #define IPU_MEM_TEXT_SIZE (SZ_1M * 6) #endif #if defined(VAYU_IPU_1) #define IPU_MEM_DATA_SIZE (SZ_1M * 5) #elif defined(VAYU_IPU_2) #define IPU_MEM_DATA_SIZE (SZ_1M * 48) #endif #define IPU_MEM_IOBUFS_SIZE (SZ_1M * 90) /* * Assign fixed RAM addresses to facilitate a fixed MMU table. * PHYS_MEM_IPC_VRING & PHYS_MEM_IPC_DATA MUST be together. */ /* See CMA BASE addresses in Linux side: arch/arm/mach-omap2/remoteproc.c */ #if defined(VAYU_IPU_1) #define PHYS_MEM_IPC_VRING 0x9D000000 #elif defined (VAYU_IPU_2) #define PHYS_MEM_IPC_VRING 0x95800000 #endif #define PHYS_MEM_IOBUFS 0xBA300000 /* * Sizes of the virtqueues (expressed in number of buffers supported, * and must be power of 2) */ #define IPU_RPMSG_VQ0_SIZE 256 #define IPU_RPMSG_VQ1_SIZE 256 /* flip up bits whose indices represent features we support */ #define RPMSG_IPU_C0_FEATURES 1 struct my_resource_table { struct resource_table base; UInt32 offset[21]; /* Should match 'num' in actual definition */ /* rpmsg vdev entry */ struct fw_rsc_vdev rpmsg_vdev; struct fw_rsc_vdev_vring rpmsg_vring0; struct fw_rsc_vdev_vring rpmsg_vring1; /* text carveout entry */ struct fw_rsc_carveout text_cout; /* data carveout entry */ struct fw_rsc_carveout data_cout; /* ipcdata carveout entry */ struct fw_rsc_carveout ipcdata_cout; /* trace entry */ struct fw_rsc_trace trace; /* devmem entry */ struct fw_rsc_devmem devmem0; /* devmem entry */ struct fw_rsc_devmem devmem1; /* devmem entry */ struct fw_rsc_devmem devmem2; /* devmem entry */ struct fw_rsc_devmem devmem3; /* devmem entry */ struct fw_rsc_devmem devmem4; /* devmem entry */ struct fw_rsc_devmem devmem5; /* devmem entry */ struct fw_rsc_devmem devmem6; /* devmem entry */ struct fw_rsc_devmem devmem7; /* devmem entry */ struct fw_rsc_devmem devmem8; /* devmem entry */ struct fw_rsc_devmem devmem9; /* devmem entry */ struct fw_rsc_devmem devmem10; /* devmem entry */ struct fw_rsc_devmem devmem11; /* devmem entry */ struct fw_rsc_devmem devmem12; /* devmem entry */ struct fw_rsc_devmem devmem13; /* devmem entry */ struct fw_rsc_devmem devmem14; /* devmem entry */ struct fw_rsc_devmem devmem15; }; extern char ti_trace_SysMin_Module_State_0_outbuf__A; #define TRACEBUFADDR (UInt32)&ti_trace_SysMin_Module_State_0_outbuf__A #pragma DATA_SECTION(ti_ipc_remoteproc_ResourceTable, ".resource_table") #pragma DATA_ALIGN(ti_ipc_remoteproc_ResourceTable, 4096) struct my_resource_table ti_ipc_remoteproc_ResourceTable = { 1, /* we're the first version that implements this */ 21, /* number of entries in the table */ 0, 0, /* reserved, must be zero */ /* offsets to entries */ { offsetof(struct my_resource_table, rpmsg_vdev), offsetof(struct my_resource_table, text_cout), offsetof(struct my_resource_table, data_cout), offsetof(struct my_resource_table, ipcdata_cout), offsetof(struct my_resource_table, trace), offsetof(struct my_resource_table, devmem0), offsetof(struct my_resource_table, devmem1), offsetof(struct my_resource_table, devmem2), offsetof(struct my_resource_table, devmem3), offsetof(struct my_resource_table, devmem4), offsetof(struct my_resource_table, devmem5), offsetof(struct my_resource_table, devmem6), offsetof(struct my_resource_table, devmem7), offsetof(struct my_resource_table, devmem8), offsetof(struct my_resource_table, devmem9), offsetof(struct my_resource_table, devmem10), offsetof(struct my_resource_table, devmem11), offsetof(struct my_resource_table, devmem12), offsetof(struct my_resource_table, devmem13), offsetof(struct my_resource_table, devmem14), offsetof(struct my_resource_table, devmem15), }, /* rpmsg vdev entry */ { TYPE_VDEV, VIRTIO_ID_RPMSG, 0, RPMSG_IPU_C0_FEATURES, 0, 0, 0, 2, { 0, 0 }, /* no config data */ }, /* the two vrings */ { IPU_MEM_RPMSG_VRING0, 4096, IPU_RPMSG_VQ0_SIZE, 1, 0 }, { IPU_MEM_RPMSG_VRING1, 4096, IPU_RPMSG_VQ1_SIZE, 2, 0 }, { TYPE_CARVEOUT, IPU_MEM_TEXT, 0, IPU_MEM_TEXT_SIZE, 0, 0, "IPU_MEM_TEXT", }, { TYPE_CARVEOUT, IPU_MEM_DATA, 0, IPU_MEM_DATA_SIZE, 0, 0, "IPU_MEM_DATA", }, { TYPE_CARVEOUT, IPU_MEM_IPC_DATA, 0, IPU_MEM_IPC_DATA_SIZE, 0, 0, "IPU_MEM_IPC_DATA", }, { TYPE_TRACE, TRACEBUFADDR, 0x8000, 0, "trace:sysm3", }, { TYPE_DEVMEM, IPU_MEM_IPC_VRING, PHYS_MEM_IPC_VRING, IPU_MEM_IPC_VRING_SIZE, 0, 0, "IPU_MEM_IPC_VRING", }, { TYPE_DEVMEM, IPU_MEM_IOBUFS, PHYS_MEM_IOBUFS, IPU_MEM_IOBUFS_SIZE, 0, 0, "IPU_MEM_IOBUFS", }, { TYPE_DEVMEM, IPU_TILER_MODE_0_1, L3_TILER_MODE_0_1, SZ_256M, 0, 0, "IPU_TILER_MODE_0_1", }, { TYPE_DEVMEM, IPU_TILER_MODE_2, L3_TILER_MODE_2, SZ_128M, 0, 0, "IPU_TILER_MODE_2", }, { TYPE_DEVMEM, IPU_TILER_MODE_3, L3_TILER_MODE_3, SZ_128M, 0, 0, "IPU_TILER_MODE_3", }, { TYPE_DEVMEM, IPU_PERIPHERAL_L4CFG, L4_PERIPHERAL_L4CFG, SZ_16M, 0, 0, "IPU_PERIPHERAL_L4CFG", }, { TYPE_DEVMEM, IPU_PERIPHERAL_L4PER1, L4_PERIPHERAL_L4PER1, SZ_2M, 0, 0, "IPU_PERIPHERAL_L4PER1", }, { TYPE_DEVMEM, IPU_PERIPHERAL_L4PER2, L4_PERIPHERAL_L4PER2, SZ_4M, 0, 0, "IPU_PERIPHERAL_L4PER2", }, { TYPE_DEVMEM, IPU_PERIPHERAL_L4PER3, L4_PERIPHERAL_L4PER3, SZ_8M, 0, 0, "IPU_PERIPHERAL_L4PER3", }, { TYPE_DEVMEM, IPU_PERIPHERAL_L4EMU, L4_PERIPHERAL_L4EMU, SZ_16M, 0, 0, "IPU_PERIPHERAL_L4EMU", }, { TYPE_DEVMEM, IPU_PERIPHERAL_PRUSS, L3_PERIPHERAL_PRUSS, SZ_1M, 0, 0, "IPU_PERIPHERAL_PRUSS", }, { TYPE_DEVMEM, IPU_IVAHD_CONFIG, L3_IVAHD_CONFIG, SZ_16M, 0, 0, "IPU_IVAHD_CONFIG", }, { TYPE_DEVMEM, IPU_IVAHD_SL2, L3_IVAHD_SL2, SZ_16M, 0, 0, "IPU_IVAHD_SL2", }, { TYPE_DEVMEM, IPU_PERIPHERAL_DMM, L3_PERIPHERAL_DMM, SZ_1M, 0, 0, "IPU_PERIPHERAL_DMM", }, { TYPE_DEVMEM, IPU_OCMC_RAM, L3_OCMC_RAM, SZ_4M, 0, 0, "IPU_OCMC_RAM", }, { TYPE_DEVMEM, IPU_EMIF_SDRAM, L3_EMIF_SDRAM, SZ_256M, 0, 0, "IPU_EMIF_SDRAM", }, };jÆj2jÎjo1jÐjjÒ}r_2(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜK=jÝhjÞ]r`2jçXÎ!#include "rsc_types.h" /* IPU Memory Map */ #define L4_DRA7XX_BASE 0x4A000000 /* L4_CFG & L4_WKUP */ #define L4_PERIPHERAL_L4CFG (L4_DRA7XX_BASE) #define IPU_PERIPHERAL_L4CFG 0x6A000000 #define L4_PERIPHERAL_L4PER1 0x48000000 #define IPU_PERIPHERAL_L4PER1 0x68000000 #define L4_PERIPHERAL_L4PER2 0x48400000 #define IPU_PERIPHERAL_L4PER2 0x68400000 #define L4_PERIPHERAL_L4PER3 0x48800000 #define IPU_PERIPHERAL_L4PER3 0x68800000 #define L4_PERIPHERAL_L4EMU 0x54000000 #define IPU_PERIPHERAL_L4EMU 0x74000000 #define L3_PERIPHERAL_PRUSS 0x4B200000 #define IPU_PERIPHERAL_PRUSS 0x6B200000 #define L3_PERIPHERAL_DMM 0x4E000000 #define IPU_PERIPHERAL_DMM 0x6E000000 #define L3_IVAHD_CONFIG 0x5A000000 #define IPU_IVAHD_CONFIG 0x7A000000 #define L3_IVAHD_SL2 0x5B000000 #define IPU_IVAHD_SL2 0x7B000000 #define L3_TILER_MODE_0_1 0x60000000 #define IPU_TILER_MODE_0_1 0xA0000000 #define L3_TILER_MODE_2 0x70000000 #define IPU_TILER_MODE_2 0xB0000000 #define L3_TILER_MODE_3 0x78000000 #define IPU_TILER_MODE_3 0xB8000000 #define L3_OCMC_RAM 0x40300000 #define IPU_OCMC_RAM 0x60300000 #define L3_EMIF_SDRAM 0xA0000000 #define IPU_EMIF_SDRAM 0x10000000 #define IPU_MEM_TEXT 0x0 #define IPU_MEM_DATA 0x80000000 #define IPU_MEM_IOBUFS 0x90000000 #define IPU_MEM_IPC_DATA 0x9F000000 #define IPU_MEM_IPC_VRING 0x60000000 #define IPU_MEM_RPMSG_VRING0 0x60000000 #define IPU_MEM_RPMSG_VRING1 0x60004000 #define IPU_MEM_VRING_BUFS0 0x60040000 #define IPU_MEM_VRING_BUFS1 0x60080000 #define IPU_MEM_IPC_VRING_SIZE SZ_1M #define IPU_MEM_IPC_DATA_SIZE SZ_1M #if defined(VAYU_IPU_1) #define IPU_MEM_TEXT_SIZE (SZ_1M) #elif defined(VAYU_IPU_2) #define IPU_MEM_TEXT_SIZE (SZ_1M * 6) #endif #if defined(VAYU_IPU_1) #define IPU_MEM_DATA_SIZE (SZ_1M * 5) #elif defined(VAYU_IPU_2) #define IPU_MEM_DATA_SIZE (SZ_1M * 48) #endif #define IPU_MEM_IOBUFS_SIZE (SZ_1M * 90) /* * Assign fixed RAM addresses to facilitate a fixed MMU table. * PHYS_MEM_IPC_VRING & PHYS_MEM_IPC_DATA MUST be together. */ /* See CMA BASE addresses in Linux side: arch/arm/mach-omap2/remoteproc.c */ #if defined(VAYU_IPU_1) #define PHYS_MEM_IPC_VRING 0x9D000000 #elif defined (VAYU_IPU_2) #define PHYS_MEM_IPC_VRING 0x95800000 #endif #define PHYS_MEM_IOBUFS 0xBA300000 /* * Sizes of the virtqueues (expressed in number of buffers supported, * and must be power of 2) */ #define IPU_RPMSG_VQ0_SIZE 256 #define IPU_RPMSG_VQ1_SIZE 256 /* flip up bits whose indices represent features we support */ #define RPMSG_IPU_C0_FEATURES 1 struct my_resource_table { struct resource_table base; UInt32 offset[21]; /* Should match 'num' in actual definition */ /* rpmsg vdev entry */ struct fw_rsc_vdev rpmsg_vdev; struct fw_rsc_vdev_vring rpmsg_vring0; struct fw_rsc_vdev_vring rpmsg_vring1; /* text carveout entry */ struct fw_rsc_carveout text_cout; /* data carveout entry */ struct fw_rsc_carveout data_cout; /* ipcdata carveout entry */ struct fw_rsc_carveout ipcdata_cout; /* trace entry */ struct fw_rsc_trace trace; /* devmem entry */ struct fw_rsc_devmem devmem0; /* devmem entry */ struct fw_rsc_devmem devmem1; /* devmem entry */ struct fw_rsc_devmem devmem2; /* devmem entry */ struct fw_rsc_devmem devmem3; /* devmem entry */ struct fw_rsc_devmem devmem4; /* devmem entry */ struct fw_rsc_devmem devmem5; /* devmem entry */ struct fw_rsc_devmem devmem6; /* devmem entry */ struct fw_rsc_devmem devmem7; /* devmem entry */ struct fw_rsc_devmem devmem8; /* devmem entry */ struct fw_rsc_devmem devmem9; /* devmem entry */ struct fw_rsc_devmem devmem10; /* devmem entry */ struct fw_rsc_devmem devmem11; /* devmem entry */ struct fw_rsc_devmem devmem12; /* devmem entry */ struct fw_rsc_devmem devmem13; /* devmem entry */ struct fw_rsc_devmem devmem14; /* devmem entry */ struct fw_rsc_devmem devmem15; }; extern char ti_trace_SysMin_Module_State_0_outbuf__A; #define TRACEBUFADDR (UInt32)&ti_trace_SysMin_Module_State_0_outbuf__A #pragma DATA_SECTION(ti_ipc_remoteproc_ResourceTable, ".resource_table") #pragma DATA_ALIGN(ti_ipc_remoteproc_ResourceTable, 4096) struct my_resource_table ti_ipc_remoteproc_ResourceTable = { 1, /* we're the first version that implements this */ 21, /* number of entries in the table */ 0, 0, /* reserved, must be zero */ /* offsets to entries */ { offsetof(struct my_resource_table, rpmsg_vdev), offsetof(struct my_resource_table, text_cout), offsetof(struct my_resource_table, data_cout), offsetof(struct my_resource_table, ipcdata_cout), offsetof(struct my_resource_table, trace), offsetof(struct my_resource_table, devmem0), offsetof(struct my_resource_table, devmem1), offsetof(struct my_resource_table, devmem2), offsetof(struct my_resource_table, devmem3), offsetof(struct my_resource_table, devmem4), offsetof(struct my_resource_table, devmem5), offsetof(struct my_resource_table, devmem6), offsetof(struct my_resource_table, devmem7), offsetof(struct my_resource_table, devmem8), offsetof(struct my_resource_table, devmem9), offsetof(struct my_resource_table, devmem10), offsetof(struct my_resource_table, devmem11), offsetof(struct my_resource_table, devmem12), offsetof(struct my_resource_table, devmem13), offsetof(struct my_resource_table, devmem14), offsetof(struct my_resource_table, devmem15), }, /* rpmsg vdev entry */ { TYPE_VDEV, VIRTIO_ID_RPMSG, 0, RPMSG_IPU_C0_FEATURES, 0, 0, 0, 2, { 0, 0 }, /* no config data */ }, /* the two vrings */ { IPU_MEM_RPMSG_VRING0, 4096, IPU_RPMSG_VQ0_SIZE, 1, 0 }, { IPU_MEM_RPMSG_VRING1, 4096, IPU_RPMSG_VQ1_SIZE, 2, 0 }, { TYPE_CARVEOUT, IPU_MEM_TEXT, 0, IPU_MEM_TEXT_SIZE, 0, 0, "IPU_MEM_TEXT", }, { TYPE_CARVEOUT, IPU_MEM_DATA, 0, IPU_MEM_DATA_SIZE, 0, 0, "IPU_MEM_DATA", }, { TYPE_CARVEOUT, IPU_MEM_IPC_DATA, 0, IPU_MEM_IPC_DATA_SIZE, 0, 0, "IPU_MEM_IPC_DATA", }, { TYPE_TRACE, TRACEBUFADDR, 0x8000, 0, "trace:sysm3", }, { TYPE_DEVMEM, IPU_MEM_IPC_VRING, PHYS_MEM_IPC_VRING, IPU_MEM_IPC_VRING_SIZE, 0, 0, "IPU_MEM_IPC_VRING", }, { TYPE_DEVMEM, IPU_MEM_IOBUFS, PHYS_MEM_IOBUFS, IPU_MEM_IOBUFS_SIZE, 0, 0, "IPU_MEM_IOBUFS", }, { TYPE_DEVMEM, IPU_TILER_MODE_0_1, L3_TILER_MODE_0_1, SZ_256M, 0, 0, "IPU_TILER_MODE_0_1", }, { TYPE_DEVMEM, IPU_TILER_MODE_2, L3_TILER_MODE_2, SZ_128M, 0, 0, "IPU_TILER_MODE_2", }, { TYPE_DEVMEM, IPU_TILER_MODE_3, L3_TILER_MODE_3, SZ_128M, 0, 0, "IPU_TILER_MODE_3", }, { TYPE_DEVMEM, IPU_PERIPHERAL_L4CFG, L4_PERIPHERAL_L4CFG, SZ_16M, 0, 0, "IPU_PERIPHERAL_L4CFG", }, { TYPE_DEVMEM, IPU_PERIPHERAL_L4PER1, L4_PERIPHERAL_L4PER1, SZ_2M, 0, 0, "IPU_PERIPHERAL_L4PER1", }, { TYPE_DEVMEM, IPU_PERIPHERAL_L4PER2, L4_PERIPHERAL_L4PER2, SZ_4M, 0, 0, "IPU_PERIPHERAL_L4PER2", }, { TYPE_DEVMEM, IPU_PERIPHERAL_L4PER3, L4_PERIPHERAL_L4PER3, SZ_8M, 0, 0, "IPU_PERIPHERAL_L4PER3", }, { TYPE_DEVMEM, IPU_PERIPHERAL_L4EMU, L4_PERIPHERAL_L4EMU, SZ_16M, 0, 0, "IPU_PERIPHERAL_L4EMU", }, { TYPE_DEVMEM, IPU_PERIPHERAL_PRUSS, L3_PERIPHERAL_PRUSS, SZ_1M, 0, 0, "IPU_PERIPHERAL_PRUSS", }, { TYPE_DEVMEM, IPU_IVAHD_CONFIG, L3_IVAHD_CONFIG, SZ_16M, 0, 0, "IPU_IVAHD_CONFIG", }, { TYPE_DEVMEM, IPU_IVAHD_SL2, L3_IVAHD_SL2, SZ_16M, 0, 0, "IPU_IVAHD_SL2", }, { TYPE_DEVMEM, IPU_PERIPHERAL_DMM, L3_PERIPHERAL_DMM, SZ_1M, 0, 0, "IPU_PERIPHERAL_DMM", }, { TYPE_DEVMEM, IPU_OCMC_RAM, L3_OCMC_RAM, SZ_4M, 0, 0, "IPU_OCMC_RAM", }, { TYPE_DEVMEM, IPU_EMIF_SDRAM, L3_EMIF_SDRAM, SZ_256M, 0, 0, "IPU_EMIF_SDRAM", }, };ra2…�rb2}rc2(jÅUjÆj]2ubaubjò)�rd2}re2(jÅXEYou can find 3 new TYPE_DEVMEM entries added in above resource table.rf2jÆj2jÎjo1jÐjõjÒ}rg2(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŽjÝhjÞ]rh2jçXEYou can find 3 new TYPE_DEVMEM entries added in above resource table.ri2…�rj2}rk2(jÅjf2jÆjd2ubaubjt)�rl2}rm2(jÅUjÆj2jÎjo1jÐjwjÒ}rn2(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM�jÝhjÞ]ro2(j{)�rp2}rq2(jÅXL3_PERIPHERAL_PRUSSrr2jÆjl2jÎjo1jÐjjÒ}rs2(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rt2jò)�ru2}rv2(jÅjr2jÆjp2jÎjo1jÐjõjÒ}rw2(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]rx2jçXL3_PERIPHERAL_PRUSSry2…�rz2}r{2(jÅjr2jÆju2ubaubaubj{)�r|2}r}2(jÅX IPU_OCMC_RAMr~2jÆjl2jÎjo1jÐjjÒ}r2(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r€2jò)�r�2}r‚2(jÅj~2jÆj|2jÎjo1jÐjõjÒ}rƒ2(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‘jÞ]r„2jçX IPU_OCMC_RAMr…2…�r†2}r‡2(jÅj~2jÆj�2ubaubaubj{)�rˆ2}r‰2(jÅXIPU_EMIF_SDRAM jÆjl2jÎjo1jÐjjÒ}rŠ2(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‹2jò)�rŒ2}r�2(jÅXIPU_EMIF_SDRAMrŽ2jÆjˆ2jÎjo1jÐjõjÒ}r�2(jÔ]jÕ]jÖ]j×]jÚ]ujÜM’jÞ]r�2jçXIPU_EMIF_SDRAMr‘2…�r’2}r“2(jÅjŽ2jÆjŒ2ubaubaubeubjò)�r”2}r•2(jÅXáAll ELF section placements (as well as the VRINGS, which aren’t in an ELF section) are placed in memory allocated from the remoteproc CMA area and are mapped to the virtual address as specified in the TYPE_CARVEOUT entries.r–2jÆj2jÎjo1jÐjõjÒ}r—2(jÔ]jÕ]jÖ]j×]jÚ]ujÜM”jÝhjÞ]r˜2jçXáAll ELF section placements (as well as the VRINGS, which aren’t in an ELF section) are placed in memory allocated from the remoteproc CMA area and are mapped to the virtual address as specified in the TYPE_CARVEOUT entries.r™2…�rš2}r›2(jÅj–2jÆj”2ubaubjò)�rœ2}r�2(jÅX#The virtual addresses #defined are:rž2jÆj2jÎjo1jÐjõjÒ}rŸ2(jÔ]jÕ]jÖ]j×]jÚ]ujÜM™jÝhjÞ]r 2jçX#The virtual addresses #defined are:r¡2…�r¢2}r£2(jÅjž2jÆjœ2ubaubj)�r¤2}r¥2(jÅXÑ#define IPU_MEM_TEXT 0x0 #define IPU_MEM_DATA 0x80000000 #define IPU_MEM_IOBUFS 0x90000000 #define IPU_MEM_IPC_DATA 0x9F000000 #define IPU_MEM_IPC_VRING 0x60000000jÆj2jÎjo1jÐjjÒ}r¦2(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜM›jÝhjÞ]r§2jçXÑ#define IPU_MEM_TEXT 0x0 #define IPU_MEM_DATA 0x80000000 #define IPU_MEM_IOBUFS 0x90000000 #define IPU_MEM_IPC_DATA 0x9F000000 #define IPU_MEM_IPC_VRING 0x60000000r¨2…�r©2}rª2(jÅUjÆj¤2ubaubjò)�r«2}r¬2(jÅXJThe followings are fixed physical address to facilitate a fixed MMU table.r­2jÆj2jÎjo1jÐjõjÒ}r®2(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¥jÝhjÞ]r¯2jçXJThe followings are fixed physical address to facilitate a fixed MMU table.r°2…�r±2}r²2(jÅj­2jÆj«2ubaubj)�r³2}r´2(jÅX�#if defined(VAYU_IPU_1) #define PHYS_MEM_IPC_VRING 0x9D000000 #elif defined (VAYU_IPU_2) #define PHYS_MEM_IPC_VRING 0x95800000 #endifjÆj2jÎjo1jÐjjÒ}rµ2(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜM¨jÝhjÞ]r¶2jçX�#if defined(VAYU_IPU_1) #define PHYS_MEM_IPC_VRING 0x9D000000 #elif defined (VAYU_IPU_2) #define PHYS_MEM_IPC_VRING 0x95800000 #endifr·2…�r¸2}r¹2(jÅUjÆj³2ubaubjò)�rº2}r»2(jÅXpThese PHYS_MEM values match exactly the physical address specified in the remoteproc CMA area in Linux DTS file:r¼2jÆj2jÎjo1jÐjõjÒ}r½2(jÔ]jÕ]jÖ]j×]jÚ]ujÜM°jÝhjÞ]r¾2jçXpThese PHYS_MEM values match exactly the physical address specified in the remoteproc CMA area in Linux DTS file:r¿2…�rÀ2}rÁ2(jÅj¼2jÆjº2ubaubj)�rÂ2}rÃ2(jÅX>ipu2_cma_pool: ipu2_cma@95800000 { compatible = "shared-dma-pool"; reg = <0x95800000 0x3800000>; reusable; status = "okay"; }; ipu1_cma_pool: ipu1_cma@9d000000 { compatible = "shared-dma-pool"; reg = <0x9d000000 0x2000000>; reusable; status = "okay"; };jÆj2jÎjo1jÐjjÒ}rÄ2(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rÅ2jçX>ipu2_cma_pool: ipu2_cma@95800000 { compatible = "shared-dma-pool"; reg = <0x95800000 0x3800000>; reusable; status = "okay"; }; ipu1_cma_pool: ipu1_cma@9d000000 { compatible = "shared-dma-pool"; reg = <0x9d000000 0x2000000>; reusable; status = "okay"; };rÆ2…�rÇ2}rÈ2(jÅUjÆjÂ2ubaubjò)�rÉ2}rÊ2(jÅX'The 1st entry in the resource table is:rË2jÆj2jÎjo1jÐjõjÒ}rÌ2(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÄjÝhjÞ]rÍ2jçX'The 1st entry in the resource table is:rÎ2…�rÏ2}rÐ2(jÅjË2jÆjÉ2ubaubj)�rÑ2}rÒ2(jÅX/* rpmsg vdev entry */ { TYPE_VDEV, VIRTIO_ID_RPMSG, 0, RPMSG_IPU_C0_FEATURES, 0, 0, 0, 2, { 0, 0 }, /* no config data */ }, /* the two vrings */ { IPU_MEM_RPMSG_VRING0, 4096, IPU_RPMSG_VQ0_SIZE, 1, 0 }, { IPU_MEM_RPMSG_VRING1, 4096, IPU_RPMSG_VQ1_SIZE, 2, 0 },jÆj2jÎjo1jÐjjÒ}rÓ2(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜMÆjÝhjÞ]rÔ2jçX/* rpmsg vdev entry */ { TYPE_VDEV, VIRTIO_ID_RPMSG, 0, RPMSG_IPU_C0_FEATURES, 0, 0, 0, 2, { 0, 0 }, /* no config data */ }, /* the two vrings */ { IPU_MEM_RPMSG_VRING0, 4096, IPU_RPMSG_VQ0_SIZE, 1, 0 }, { IPU_MEM_RPMSG_VRING1, 4096, IPU_RPMSG_VQ1_SIZE, 2, 0 },rÕ2…�rÖ2}r×2(jÅUjÆjÑ2ubaubjò)�rØ2}rÙ2(jÅXmThis tells remoteproc to allocate the vrings and vring buffers, and the remoteproc CMA area is used for this.rÚ2jÆj2jÎjo1jÐjõjÒ}rÛ2(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÒjÝhjÞ]rÜ2jçXmThis tells remoteproc to allocate the vrings and vring buffers, and the remoteproc CMA area is used for this.rÝ2…�rÞ2}rß2(jÅjÚ2jÆjØ2ubaubjò)�rà2}rá2(jÅXThe 2nd-4th entries are:râ2jÆj2jÎjo1jÐjõjÒ}rã2(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÕjÝhjÞ]rä2jçXThe 2nd-4th entries are:rå2…�ræ2}rç2(jÅjâ2jÆjà2ubaubj)�rè2}ré2(jÅX{ TYPE_CARVEOUT, IPU_MEM_TEXT, 0, IPU_MEM_TEXT_SIZE, 0, 0, "IPU_MEM_TEXT", }, { TYPE_CARVEOUT, IPU_MEM_DATA, 0, IPU_MEM_DATA_SIZE, 0, 0, "IPU_MEM_DATA", }, { TYPE_CARVEOUT, IPU_MEM_IPC_DATA, 0, IPU_MEM_IPC_DATA_SIZE, 0, 0, "IPU_MEM_IPC_DATA", },jÆj2jÎjo1jÐjjÒ}rê2(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜM×jÝhjÞ]rë2jçX{ TYPE_CARVEOUT, IPU_MEM_TEXT, 0, IPU_MEM_TEXT_SIZE, 0, 0, "IPU_MEM_TEXT", }, { TYPE_CARVEOUT, IPU_MEM_DATA, 0, IPU_MEM_DATA_SIZE, 0, 0, "IPU_MEM_DATA", }, { TYPE_CARVEOUT, IPU_MEM_IPC_DATA, 0, IPU_MEM_IPC_DATA_SIZE, 0, 0, "IPU_MEM_IPC_DATA", },rì2…�rí2}rî2(jÅUjÆjè2ubaubjò)�rï2}rð2(jÅXNThese carveouts tell remoteproc to allocate memory from its CMA area and map the allocated physical address to the virtual address specified in the carveout (the 1st field after TYPE_CARVEOUT), in the IPU’s MMU (“iommuâ€� in Linux kernel parlance). These are for the ELF sections that are placed (mapped) in those virtual address.rñ2jÆj2jÎjo1jÐjõjÒ}rò2(jÔ]jÕ]jÖ]j×]jÚ]ujÜMéjÝhjÞ]ró2jçXNThese carveouts tell remoteproc to allocate memory from its CMA area and map the allocated physical address to the virtual address specified in the carveout (the 1st field after TYPE_CARVEOUT), in the IPU’s MMU (“iommuâ€� in Linux kernel parlance). These are for the ELF sections that are placed (mapped) in those virtual address.rô2…�rõ2}rö2(jÅjñ2jÆjï2ubaubjò)�r÷2}rø2(jÅXjThe TYPE_TRACE entry tells remoteproc where the remote executable’s trace buffer is, using its C symbol.rù2jÆj2jÎjo1jÐjõjÒ}rú2(jÔ]jÕ]jÖ]j×]jÚ]ujÜMïjÝhjÞ]rû2jçXjThe TYPE_TRACE entry tells remoteproc where the remote executable’s trace buffer is, using its C symbol.rü2…�rý2}rþ2(jÅjù2jÆj÷2ubaubjò)�rÿ2}r3(jÅXñThe TYPE_DEVMEM entries are virtual <-> physical mappings. remoteproc just creates an IPU MMU mapping for the entry. The 1st TYPE_DEVMEM entry corresponds to the vrings and creates the IPU MMU mapping needed to access them from the IPU core:r3jÆj2jÎjo1jÐjõjÒ}r3(jÔ]jÕ]jÖ]j×]jÚ]ujÜMòjÝhjÞ]r3jçXñThe TYPE_DEVMEM entries are virtual <-> physical mappings. remoteproc just creates an IPU MMU mapping for the entry. The 1st TYPE_DEVMEM entry corresponds to the vrings and creates the IPU MMU mapping needed to access them from the IPU core:r3…�r3}r3(jÅj3jÆjÿ2ubaubj)�r3}r3(jÅXw{ TYPE_DEVMEM, IPU_MEM_IPC_VRING, PHYS_MEM_IPC_VRING, IPU_MEM_IPC_VRING_SIZE, 0, 0, "IPU_MEM_IPC_VRING", },jÆj2jÎjo1jÐjjÒ}r 3(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜM÷jÝhjÞ]r 3jçXw{ TYPE_DEVMEM, IPU_MEM_IPC_VRING, PHYS_MEM_IPC_VRING, IPU_MEM_IPC_VRING_SIZE, 0, 0, "IPU_MEM_IPC_VRING", },r 3…�r 3}r 3(jÅUjÆj3ubaubeubjÇ)�r3}r3(jÅUjÆj]1jÎjo1jÐjÑjÒ}r3(jÔ]jÕ]jÖ]j×]r3Unew-type-devmem-entryr3ajÚ]r3h aujÜMjÝhjÞ]r3(jà)�r3}r3(jÅXNew TYPE_DEVMEM entryr3jÆj3jÎjo1jÐjäjÒ}r3(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r3jçXNew TYPE_DEVMEM entryr3…�r3}r3(jÅj3jÆj3ubaubjò)�r3}r3(jÅXHTo add a new TYPE_DEVMEM entry, for example, to access PRU-ICSS from IPUr3jÆj3jÎjo1jÐjõjÒ}r 3(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r!3jçXHTo add a new TYPE_DEVMEM entry, for example, to access PRU-ICSS from IPUr"3…�r#3}r$3(jÅj3jÆj3ubaubjt)�r%3}r&3(jÅUjÆj3jÎjo1jÐjwjÒ}r'3(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]r(3j{)�r)3}r*3(jÅXE1. specify the physical address of PRU-ICSS and its virutal address. jÆj%3jÎNjÐjjÒ}r+3(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r,3j )�r-3}r.3(jÅUjÒ}r/3(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÆj)3jÞ]r03j{)�r13}r23(jÅXBspecify the physical address of PRU-ICSS and its virutal address. jÒ}r33(jÔ]jÕ]jÖ]j×]jÚ]ujÆj-3jÞ]r43jò)�r53}r63(jÅXAspecify the physical address of PRU-ICSS and its virutal address.r73jÆj13jÎjo1jÐjõjÒ}r83(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r93jçXAspecify the physical address of PRU-ICSS and its virutal address.r:3…�r;3}r<3(jÅj73jÆj53ubaubajÐjubajÐj ubaubaubj)�r=3}r>3(jÅXU#define L3_PERIPHERAL_PRUSS 0x4B200000 #define IPU_PERIPHERAL_PRUSS 0x6B200000jÆj3jÎjo1jÐjjÒ}r?3(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM\jÝhjÞ]r@3jçXU#define L3_PERIPHERAL_PRUSS 0x4B200000 #define IPU_PERIPHERAL_PRUSS 0x6B200000rA3…�rB3}rC3(jÅUjÆj=3ubaubjt)�rD3}rE3(jÅUjÆj3jÎjo1jÐjwjÒ}rF3(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rG3(j{)�rH3}rI3(jÅXD2. increase size of **offset[X]** array in struct my_resource_table.jÆjD3jÎNjÐjjÒ}rJ3(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rK3j )�rL3}rM3(jÅUjÒ}rN3(jU.UstartrO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÆjH3jÞ]rP3j{)�rQ3}rR3(jÅXAincrease size of **offset[X]** array in struct my_resource_table.rS3jÒ}rT3(jÔ]jÕ]jÖ]j×]jÚ]ujÆjL3jÞ]rU3jò)�rV3}rW3(jÅjS3jÆjQ3jÎjo1jÐjõjÒ}rX3(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rY3(jçXincrease size of rZ3…�r[3}r\3(jÅXincrease size of jÆjV3ubjÚ)�r]3}r^3(jÅX **offset[X]**jÒ}r_3(jÔ]jÕ]jÖ]j×]jÚ]ujÆjV3jÞ]r`3jçX offset[X]ra3…�rb3}rc3(jÅUjÆj]3ubajÐjâubjçX# array in struct my_resource_table.rd3…�re3}rf3(jÅX# array in struct my_resource_table.jÆjV3ubeubajÐjubajÐj ubaubj{)�rg3}rh3(jÅXN3. add new **struct fw_rsc_devmem devmemY** entry in struct my_resource_table.jÆjD3jÎjo1jÐjjÒ}ri3(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rj3jò)�rk3}rl3(jÅXN3. add new **struct fw_rsc_devmem devmemY** entry in struct my_resource_table.jÆjg3jÎjo1jÐjõjÒ}rm3(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rn3(jçX 3. add new ro3…�rp3}rq3(jÅX 3. add new jÆjk3ubjÚ)�rr3}rs3(jÅX **struct fw_rsc_devmem devmemY**jÒ}rt3(jÔ]jÕ]jÖ]j×]jÚ]ujÆjk3jÞ]ru3jçXstruct fw_rsc_devmem devmemYrv3…�rw3}rx3(jÅUjÆjr3ubajÐjâubjçX# entry in struct my_resource_table.ry3…�rz3}r{3(jÅX# entry in struct my_resource_table.jÆjk3ubeubaubj{)�r|3}r}3(jÅXE4. increase **number** of entries in ti_ipc_remoteproc_ResourceTable.jÆjD3jÎNjÐjjÒ}r~3(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r3j )�r€3}r�3(jÅUjÒ}r‚3(jU.jO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÆj|3jÞ]rƒ3j{)�r„3}r…3(jÅXBincrease **number** of entries in ti_ipc_remoteproc_ResourceTable.r†3jÒ}r‡3(jÔ]jÕ]jÖ]j×]jÚ]ujÆj€3jÞ]rˆ3jò)�r‰3}rŠ3(jÅj†3jÆj„3jÎjo1jÐjõjÒ}r‹3(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rŒ3(jçX increase r�3…�rŽ3}r�3(jÅX increase jÆj‰3ubjÚ)�r�3}r‘3(jÅX **number**jÒ}r’3(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰3jÞ]r“3jçXnumberr”3…�r•3}r–3(jÅUjÆj�3ubajÐjâubjçX/ of entries in ti_ipc_remoteproc_ResourceTable.r—3…�r˜3}r™3(jÅX/ of entries in ti_ipc_remoteproc_ResourceTable.jÆj‰3ubeubajÐjubajÐj ubaubj{)�rš3}r›3(jÅX\5. add a **offsetof(struct my_resource_table, devmemY)** in ti_ipc_remoteproc_ResourceTable.jÆjD3jÎjo1jÐjjÒ}rœ3(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�3jò)�rž3}rŸ3(jÅX\5. add a **offsetof(struct my_resource_table, devmemY)** in ti_ipc_remoteproc_ResourceTable.jÆjš3jÎjo1jÐjõjÒ}r 3(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r¡3(jçX 5. add a r¢3…�r£3}r¤3(jÅX 5. add a jÆjž3ubjÚ)�r¥3}r¦3(jÅX/**offsetof(struct my_resource_table, devmemY)**jÒ}r§3(jÔ]jÕ]jÖ]j×]jÚ]ujÆjž3jÞ]r¨3jçX+offsetof(struct my_resource_table, devmemY)r©3…�rª3}r«3(jÅUjÆj¥3ubajÐjâubjçX$ in ti_ipc_remoteproc_ResourceTable.r¬3…�r­3}r®3(jÅX$ in ti_ipc_remoteproc_ResourceTable.jÆjž3ubeubaubj{)�r¯3}r°3(jÅX86. add actual entry in ti_ipc_remoteproc_ResourceTable. jÆjD3jÎNjÐjjÒ}r±3(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r²3j )�r³3}r´3(jÅUjÒ}rµ3(jU.jO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÆj¯3jÞ]r¶3j{)�r·3}r¸3(jÅX5add actual entry in ti_ipc_remoteproc_ResourceTable. jÒ}r¹3(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³3jÞ]rº3jò)�r»3}r¼3(jÅX4add actual entry in ti_ipc_remoteproc_ResourceTable.r½3jÆj·3jÎjo1jÐjõjÒ}r¾3(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r¿3jçX4add actual entry in ti_ipc_remoteproc_ResourceTable.rÀ3…�rÁ3}rÂ3(jÅj½3jÆj»3ubaubajÐjubajÐj ubaubeubj)�rÃ3}rÄ3(jÅXm{ TYPE_DEVMEM, IPU_PERIPHERAL_PRUSS, L3_PERIPHERAL_PRUSS, SZ_1M, 0, 0, "IPU_PERIPHERAL_PRUSS", },jÆj3jÎjo1jÐjjÒ}rÅ3(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜMjÝhjÞ]rÆ3jçXm{ TYPE_DEVMEM, IPU_PERIPHERAL_PRUSS, L3_PERIPHERAL_PRUSS, SZ_1M, 0, 0, "IPU_PERIPHERAL_PRUSS", },rÇ3…�rÈ3}rÉ3(jÅUjÆjÃ3ubaubjò)�rÊ3}rË3(jÅX×Note, when MMU is enabled, even though it is a one-to-one mapping, you need to have an entry mapped in the MMU for that, e.g. to access PRU-ICSS from DSP, you must add the following entry in **rsc_table_vayu_dsp.h**jÆj3jÎjo1jÐjõjÒ}rÌ3(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rÍ3(jçX¿Note, when MMU is enabled, even though it is a one-to-one mapping, you need to have an entry mapped in the MMU for that, e.g. to access PRU-ICSS from DSP, you must add the following entry in rÎ3…�rÏ3}rÐ3(jÅX¿Note, when MMU is enabled, even though it is a one-to-one mapping, you need to have an entry mapped in the MMU for that, e.g. to access PRU-ICSS from DSP, you must add the following entry in jÆjÊ3ubjÚ)�rÑ3}rÒ3(jÅX**rsc_table_vayu_dsp.h**jÒ}rÓ3(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊ3jÞ]rÔ3jçXrsc_table_vayu_dsp.hrÕ3…�rÖ3}r×3(jÅUjÆjÑ3ubajÐjâubeubj)�rØ3}rÙ3(jÅXU#define L3_PRU_ICSS 0x4B200000 #define DSP_PRU_ICSS 0x4B200000jÆj3jÎjo1jÐjjÒ}rÚ3(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMvjÝhjÞ]rÛ3jçXU#define L3_PRU_ICSS 0x4B200000 #define DSP_PRU_ICSS 0x4B200000rÜ3…�rÝ3}rÞ3(jÅUjÆjØ3ubaubjò)�rß3}rà3(jÅXkThe MMU pagetable can be dumped through debugfs - "cat /sys/kernel/debug/omap_iommu//pagetable"rá3jÆj3jÎjo1jÐjõjÒ}râ3(jÔ]jÕ]jÖ]j×]jÚ]ujÜM%jÝhjÞ]rã3jçXkThe MMU pagetable can be dumped through debugfs - "cat /sys/kernel/debug/omap_iommu//pagetable"rä3…�rå3}ræ3(jÅjá3jÆjß3ubaubeubeubjÇ)�rç3}rè3(jÅUjÆjq/jÎjÏjÐjÑjÒ}ré3(jÔ]jÕ]jÖ]j×]rê3Uresource-usagerë3ajÚ]rì3juaujÜK�jÝhjÞ]rí3(jà)�rî3}rï3(jÅXResource Usagerð3jÆjç3jÎjÏjÐjäjÒ}rñ3(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rò3jçXResource Usageró3…�rô3}rõ3(jÅjð3jÆjî3ubaubjÇ)�rö3}r÷3(jÅUjKjÆjç3jÎj:X@source/rtos/PDK_Platform_Software/IPC/IPC_Resource_Usage.rst.incrø3…�rù3}rú3bjÐjÑjÒ}rû3(jÔ]rü3jªajÕ]jÖ]j×]rý3Uid39rþ3ajÚ]ujÜKjÝhjÞ]rÿ3(jà)�r4}r4(jÅXOverviewr4jÆjö3jÎjù3jÐjäjÒ}r4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r4jçXOverviewr4…�r4}r4(jÅj4jÆj4ubaubjò)�r4}r 4(jÅXfThe main aim of this page is to capture details about the different resources used in the IPC drivers.r 4jÆjö3jÎjù3jÐjõjÒ}r 4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r 4jçXfThe main aim of this page is to capture details about the different resources used in the IPC drivers.r 4…�r4}r4(jÅj 4jÆj4ubaubjë)�r4}r4(jÅXThis page is under constructionr4jÆjö3jÎjù3jÐjïjÒ}r4(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r4jò)�r4}r4(jÅj4jÆj4jÎjù3jÐjõjÒ}r4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r4jçXThis page is under constructionr4…�r4}r4(jÅj4jÆj4ubaubaubeubjÇ)�r4}r4(jÅUjÆjç3jÎjù3jÐjÑjÒ}r4(jÔ]jÕ]jÖ]j×]r4Uinterrupt-map-usager 4ajÚ]r!4j aujÜK jÝhjÞ]r"4(jà)�r#4}r$4(jÅXInterrupt map usager%4jÆj4jÎjù3jÐjäjÒ}r&4(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]r'4jçXInterrupt map usager(4…�r)4}r*4(jÅj%4jÆj#4ubaubjÇ)�r+4}r,4(jÅUjÆj4jÎjù3jÐjÑjÒ}r-4(jÔ]jÕ]jÖ]j×]r.4Uam57xx-interrupt-resourcesr/4ajÚ]r04h4aujÜKjÝhjÞ]r14(jà)�r24}r34(jÅXAM57xx Interrupt resourcesr44jÆj+4jÎjù3jÐjäjÒ}r54(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r64jçXAM57xx Interrupt resourcesr74…�r84}r94(jÅj44jÆj24ubaubjò)�r:4}r;4(jÅXûThe following table captures the interrupt resources used by IPC associated with different cores for the AM57xx platform. If customer wants to use any of the interrupt resources, it is better to make sure any of the resources listed here are not used.r<4jÆj+4jÎjù3jÐjõjÒ}r=4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r>4jçXûThe following table captures the interrupt resources used by IPC associated with different cores for the AM57xx platform. If customer wants to use any of the interrupt resources, it is better to make sure any of the resources listed here are not used.r?4…�r@4}rA4(jÅj<4jÆj:4ubaubjò)�rB4}rC4(jÅX**A15 Interrupt Mapping**rD4jÆj+4jÎjù3jÐjõjÒ}rE4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rF4jÚ)�rG4}rH4(jÅjD4jÒ}rI4(jÔ]jÕ]jÖ]j×]jÚ]ujÆjB4jÞ]rJ4jçXA15 Interrupt MappingrK4…�rL4}rM4(jÅUjÆjG4ubajÐjâubaubjy )�rN4}rO4(jÅUjÆj+4jÎjù3jÐjÔ jÒ}rP4(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rQ4j~ )�rR4}rS4(jÅUjÒ}rT4(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjN4jÞ]rU4(jƒ )�rV4}rW4(jÅUjÒ}rX4(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjR4jÞ]jÐj‡ ubjƒ )�rY4}rZ4(jÅUjÒ}r[4(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjR4jÞ]jÐj‡ ubjƒ )�r\4}r]4(jÅUjÒ}r^4(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjR4jÞ]jÐj‡ ubjƒ )�r_4}r`4(jÅUjÒ}ra4(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjR4jÞ]jÐj‡ ubjƒ )�rb4}rc4(jÅUjÒ}rd4(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjR4jÞ]jÐj‡ ubjƒ )�re4}rf4(jÅUjÒ}rg4(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK$ujÆjR4jÞ]jÐj‡ ubj‹ )�rh4}ri4(jÅUjÒ}rj4(jÔ]jÕ]jÖ]j×]jÚ]ujÆjR4jÞ]rk4j� )�rl4}rm4(jÅUjÒ}rn4(jÔ]jÕ]jÖ]j×]jÚ]ujÆjh4jÞ]ro4(j• )�rp4}rq4(jÅUjÒ}rr4(jÔ]jÕ]jÖ]j×]jÚ]ujÆjl4jÞ]rs4jò)�rt4}ru4(jÅXIndexrv4jÆjp4jÎjù3jÐjõjÒ}rw4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rx4jçXIndexry4…�rz4}r{4(jÅjv4jÆjt4ubaubajÐj¢ ubj• )�r|4}r}4(jÅUjÒ}r~4(jÔ]jÕ]jÖ]j×]jÚ]ujÆjl4jÞ]r4jò)�r€4}r�4(jÅXAddrr‚4jÆj|4jÎjù3jÐjõjÒ}rƒ4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r„4jçXAddrr…4…�r†4}r‡4(jÅj‚4jÆj€4ubaubajÐj¢ ubj• )�rˆ4}r‰4(jÅUjÒ}rŠ4(jÔ]jÕ]jÖ]j×]jÚ]ujÆjl4jÞ]r‹4jò)�rŒ4}r�4(jÅXValuerŽ4jÆjˆ4jÎjù3jÐjõjÒ}r�4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�4jçXValuer‘4…�r’4}r“4(jÅjŽ4jÆjŒ4ubaubajÐj¢ ubj• )�r”4}r•4(jÅUjÒ}r–4(jÔ]jÕ]jÖ]j×]jÚ]ujÆjl4jÞ]r—4jò)�r˜4}r™4(jÅXNamerš4jÆj”4jÎjù3jÐjõjÒ}r›4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rœ4jçXNamer�4…�rž4}rŸ4(jÅjš4jÆj˜4ubaubajÐj¢ ubj• )�r 4}r¡4(jÅUjÒ}r¢4(jÔ]jÕ]jÖ]j×]jÚ]ujÆjl4jÞ]r£4jò)�r¤4}r¥4(jÅXSourcer¦4jÆj 4jÎjù3jÐjõjÒ}r§4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¨4jçXSourcer©4…�rª4}r«4(jÅj¦4jÆj¤4ubaubajÐj¢ ubj• )�r¬4}r­4(jÅUjÒ}r®4(jÔ]jÕ]jÖ]j×]jÚ]ujÆjl4jÞ]r¯4jò)�r°4}r±4(jÅX Descriptionr²4jÆj¬4jÎjù3jÐjõjÒ}r³4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r´4jçX Descriptionrµ4…�r¶4}r·4(jÅj²4jÆj°4ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r¸4}r¹4(jÅUjÒ}rº4(jÔ]jÕ]jÖ]j×]jÚ]ujÆjR4jÞ]r»4(j� )�r¼4}r½4(jÅUjÒ}r¾4(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸4jÞ]r¿4(j• )�rÀ4}rÁ4(jÅUjÒ}rÂ4(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼4jÞ]rÃ4jò)�rÄ4}rÅ4(jÅX134rÆ4jÆjÀ4jÎjù3jÐjõjÒ}rÇ4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÈ4jçX134rÉ4…�rÊ4}rË4(jÅjÆ4jÆjÄ4ubaubajÐj¢ ubj• )�rÌ4}rÍ4(jÅUjÒ}rÎ4(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼4jÞ]rÏ4jò)�rÐ4}rÑ4(jÅX 0x4A002B44rÒ4jÆjÌ4jÎjù3jÐjõjÒ}rÓ4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÔ4jçX 0x4A002B44rÕ4…�rÖ4}r×4(jÅjÒ4jÆjÐ4ubaubajÐj¢ ubj• )�rØ4}rÙ4(jÅUjÒ}rÚ4(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼4jÞ]rÛ4jò)�rÜ4}rÝ4(jÅX127rÞ4jÆjØ4jÎjù3jÐjõjÒ}rß4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rà4jçX127rá4…�râ4}rã4(jÅjÞ4jÆjÜ4ubaubajÐj¢ ubj• )�rä4}rå4(jÅUjÒ}ræ4(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼4jÞ]rç4jò)�rè4}ré4(jÅXEVE1_IRQ_MBX0_USER3rê4jÆjä4jÎjù3jÐjõjÒ}rë4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rì4jçXEVE1_IRQ_MBX0_USER3rí4…�rî4}rï4(jÅjê4jÆjè4ubaubajÐj¢ ubj• )�rð4}rñ4(jÅUjÒ}rò4(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼4jÞ]ró4jò)�rô4}rõ4(jÅX EVE1_MAILBOX0rö4jÆjð4jÎjù3jÐjõjÒ}r÷4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rø4jçX EVE1_MAILBOX0rù4…�rú4}rû4(jÅjö4jÆjô4ubaubajÐj¢ ubj• )�rü4}rý4(jÅUjÒ}rþ4(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼4jÞ]rÿ4jò)�r5}r5(jÅXEve1 Mailbox 0 user 3 interruptr5jÆjü4jÎjù3jÐjõjÒ}r5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r5jçXEve1 Mailbox 0 user 3 interruptr5…�r5}r5(jÅj5jÆj5ubaubajÐj¢ ubejÐj£ ubj� )�r5}r 5(jÅUjÒ}r 5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸4jÞ]r 5(j• )�r 5}r 5(jÅUjÒ}r5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5jÞ]r5jò)�r5}r5(jÅX135r5jÆj 5jÎjù3jÐjõjÒ}r5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r5jçX135r5…�r5}r5(jÅj5jÆj5ubaubajÐj¢ ubj• )�r5}r5(jÅUjÒ}r5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5jÞ]r5jò)�r5}r5(jÅX 0x4A002B44r5jÆj5jÎjù3jÐjõjÒ}r5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r 5jçX 0x4A002B44r!5…�r"5}r#5(jÅj5jÆj5ubaubajÐj¢ ubj• )�r$5}r%5(jÅUjÒ}r&5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5jÞ]r'5jò)�r(5}r)5(jÅX128r*5jÆj$5jÎjù3jÐjõjÒ}r+5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r,5jçX128r-5…�r.5}r/5(jÅj*5jÆj(5ubaubajÐj¢ ubj• )�r05}r15(jÅUjÒ}r25(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5jÞ]r35jò)�r45}r55(jÅXEVE2_IRQ_MBX0_USER3r65jÆj05jÎjù3jÐjõjÒ}r75(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r85jçXEVE2_IRQ_MBX0_USER3r95…�r:5}r;5(jÅj65jÆj45ubaubajÐj¢ ubj• )�r<5}r=5(jÅUjÒ}r>5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5jÞ]r?5jò)�r@5}rA5(jÅX EVE2_MAILBOX0rB5jÆj<5jÎjù3jÐjõjÒ}rC5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rD5jçX EVE2_MAILBOX0rE5…�rF5}rG5(jÅjB5jÆj@5ubaubajÐj¢ ubj• )�rH5}rI5(jÅUjÒ}rJ5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5jÞ]rK5jò)�rL5}rM5(jÅXEve2 Mailbox 0 user 3 interruptrN5jÆjH5jÎjù3jÐjõjÒ}rO5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rP5jçXEve2 Mailbox 0 user 3 interruptrQ5…�rR5}rS5(jÅjN5jÆjL5ubaubajÐj¢ ubejÐj£ ubj� )�rT5}rU5(jÅUjÒ}rV5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸4jÞ]rW5(j• )�rX5}rY5(jÅUjÒ}rZ5(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT5jÞ]r[5jò)�r\5}r]5(jÅX136r^5jÆjX5jÎjù3jÐjõjÒ}r_5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r`5jçX136ra5…�rb5}rc5(jÅj^5jÆj\5ubaubajÐj¢ ubj• )�rd5}re5(jÅUjÒ}rf5(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT5jÞ]rg5jò)�rh5}ri5(jÅX 0x4A002B48rj5jÆjd5jÎjù3jÐjõjÒ}rk5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rl5jçX 0x4A002B48rm5…�rn5}ro5(jÅjj5jÆjh5ubaubajÐj¢ ubj• )�rp5}rq5(jÅUjÒ}rr5(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT5jÞ]rs5jò)�rt5}ru5(jÅX129rv5jÆjp5jÎjù3jÐjõjÒ}rw5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rx5jçX129ry5…�rz5}r{5(jÅjv5jÆjt5ubaubajÐj¢ ubj• )�r|5}r}5(jÅUjÒ}r~5(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT5jÞ]r5jò)�r€5}r�5(jÅXMAILBOX5_IRQ_USER2r‚5jÆj|5jÎjù3jÐjõjÒ}rƒ5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r„5jçXMAILBOX5_IRQ_USER2r…5…�r†5}r‡5(jÅj‚5jÆj€5ubaubajÐj¢ ubj• )�rˆ5}r‰5(jÅUjÒ}rŠ5(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT5jÞ]r‹5jò)�rŒ5}r�5(jÅXMAILBOX5rŽ5jÆjˆ5jÎjù3jÐjõjÒ}r�5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�5jçXMAILBOX5r‘5…�r’5}r“5(jÅjŽ5jÆjŒ5ubaubajÐj¢ ubj• )�r”5}r•5(jÅUjÒ}r–5(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT5jÞ]r—5jò)�r˜5}r™5(jÅXMailbox 5 user 2 interruptrš5jÆj”5jÎjù3jÐjõjÒ}r›5(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rœ5jçXMailbox 5 user 2 interruptr�5…�rž5}rŸ5(jÅjš5jÆj˜5ubaubajÐj¢ ubejÐj£ ubj� )�r 5}r¡5(jÅUjÒ}r¢5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸4jÞ]r£5(j• )�r¤5}r¥5(jÅUjÒ}r¦5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj 5jÞ]r§5jò)�r¨5}r©5(jÅX137rª5jÆj¤5jÎjù3jÐjõjÒ}r«5(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r¬5jçX137r­5…�r®5}r¯5(jÅjª5jÆj¨5ubaubajÐj¢ ubj• )�r°5}r±5(jÅUjÒ}r²5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj 5jÞ]r³5jò)�r´5}rµ5(jÅX 0x4A002B48r¶5jÆj°5jÎjù3jÐjõjÒ}r·5(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r¸5jçX 0x4A002B48r¹5…�rº5}r»5(jÅj¶5jÆj´5ubaubajÐj¢ ubj• )�r¼5}r½5(jÅUjÒ}r¾5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj 5jÞ]r¿5jò)�rÀ5}rÁ5(jÅX130rÂ5jÆj¼5jÎjù3jÐjõjÒ}rÃ5(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rÄ5jçX130rÅ5…�rÆ5}rÇ5(jÅjÂ5jÆjÀ5ubaubajÐj¢ ubj• )�rÈ5}rÉ5(jÅUjÒ}rÊ5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj 5jÞ]rË5jò)�rÌ5}rÍ5(jÅXEVE3_IRQ_MBX0_USER3rÎ5jÆjÈ5jÎjù3jÐjõjÒ}rÏ5(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rÐ5jçXEVE3_IRQ_MBX0_USER3rÑ5…�rÒ5}rÓ5(jÅjÎ5jÆjÌ5ubaubajÐj¢ ubj• )�rÔ5}rÕ5(jÅUjÒ}rÖ5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj 5jÞ]r×5jò)�rØ5}rÙ5(jÅX EVE3_MAILBOX0rÚ5jÆjÔ5jÎjù3jÐjõjÒ}rÛ5(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rÜ5jçX EVE3_MAILBOX0rÝ5…�rÞ5}rß5(jÅjÚ5jÆjØ5ubaubajÐj¢ ubj• )�rà5}rá5(jÅUjÒ}râ5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj 5jÞ]rã5jò)�rä5}rå5(jÅX Eve 3 Mailbox 0 user 3 interruptræ5jÆjà5jÎjù3jÐjõjÒ}rç5(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rè5jçX Eve 3 Mailbox 0 user 3 interruptré5…�rê5}rë5(jÅjæ5jÆjä5ubaubajÐj¢ ubejÐj£ ubj� )�rì5}rí5(jÅUjÒ}rî5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸4jÞ]rï5(j• )�rð5}rñ5(jÅUjÒ}rò5(jÔ]jÕ]jÖ]j×]jÚ]ujÆjì5jÞ]ró5jò)�rô5}rõ5(jÅX138rö5jÆjð5jÎjù3jÐjõjÒ}r÷5(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÞ]rø5jçX138rù5…�rú5}rû5(jÅjö5jÆjô5ubaubajÐj¢ ubj• )�rü5}rý5(jÅUjÒ}rþ5(jÔ]jÕ]jÖ]j×]jÚ]ujÆjì5jÞ]rÿ5jò)�r6}r6(jÅX 0x4A002B4Cr6jÆjü5jÎjù3jÐjõjÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÞ]r6jçX 0x4A002B4Cr6…�r6}r6(jÅj6jÆj6ubaubajÐj¢ ubj• )�r6}r 6(jÅUjÒ}r 6(jÔ]jÕ]jÖ]j×]jÚ]ujÆjì5jÞ]r 6jò)�r 6}r 6(jÅX131r6jÆj6jÎjù3jÐjõjÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÞ]r6jçX131r6…�r6}r6(jÅj6jÆj 6ubaubajÐj¢ ubj• )�r6}r6(jÅUjÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÆjì5jÞ]r6jò)�r6}r6(jÅXEVE4_IRQ_MBX0_USER3r6jÆj6jÎjù3jÐjõjÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÞ]r6jçXEVE4_IRQ_MBX0_USER3r6…�r6}r6(jÅj6jÆj6ubaubajÐj¢ ubj• )�r 6}r!6(jÅUjÒ}r"6(jÔ]jÕ]jÖ]j×]jÚ]ujÆjì5jÞ]r#6jò)�r$6}r%6(jÅX EVE4_MAILBOX0r&6jÆj 6jÎjù3jÐjõjÒ}r'6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÞ]r(6jçX EVE4_MAILBOX0r)6…�r*6}r+6(jÅj&6jÆj$6ubaubajÐj¢ ubj• )�r,6}r-6(jÅUjÒ}r.6(jÔ]jÕ]jÖ]j×]jÚ]ujÆjì5jÞ]r/6jò)�r06}r16(jÅXEve4 Mailbox 0 user 3 interruptr26jÆj,6jÎjù3jÐjõjÒ}r36(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÞ]r46jçXEve4 Mailbox 0 user 3 interruptr56…�r66}r76(jÅj26jÆj06ubaubajÐj¢ ubejÐj£ ubj� )�r86}r96(jÅUjÒ}r:6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸4jÞ]r;6(j• )�r<6}r=6(jÅUjÒ}r>6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj86jÞ]r?6jò)�r@6}rA6(jÅX141rB6jÆj<6jÎjù3jÐjõjÒ}rC6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]rD6jçX141rE6…�rF6}rG6(jÅjB6jÆj@6ubaubajÐj¢ ubj• )�rH6}rI6(jÅUjÒ}rJ6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj86jÞ]rK6jò)�rL6}rM6(jÅX 0x4A002B50rN6jÆjH6jÎjù3jÐjõjÒ}rO6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]rP6jçX 0x4A002B50rQ6…�rR6}rS6(jÅjN6jÆjL6ubaubajÐj¢ ubj• )�rT6}rU6(jÅUjÒ}rV6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj86jÞ]rW6jò)�rX6}rY6(jÅX134rZ6jÆjT6jÎjù3jÐjõjÒ}r[6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]r\6jçX134r]6…�r^6}r_6(jÅjZ6jÆjX6ubaubajÐj¢ ubj• )�r`6}ra6(jÅUjÒ}rb6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj86jÞ]rc6jò)�rd6}re6(jÅXMAILBOX6_IRQ_USER2rf6jÆj`6jÎjù3jÐjõjÒ}rg6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]rh6jçXMAILBOX6_IRQ_USER2ri6…�rj6}rk6(jÅjf6jÆjd6ubaubajÐj¢ ubj• )�rl6}rm6(jÅUjÒ}rn6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj86jÞ]ro6jò)�rp6}rq6(jÅXMAILBOX6rr6jÆjl6jÎjù3jÐjõjÒ}rs6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]rt6jçXMAILBOX6ru6…�rv6}rw6(jÅjr6jÆjp6ubaubajÐj¢ ubj• )�rx6}ry6(jÅUjÒ}rz6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj86jÞ]r{6jò)�r|6}r}6(jÅXMailbox 6 user 2 interruptr~6jÆjx6jÎjù3jÐjõjÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]r€6jçXMailbox 6 user 2 interruptr�6…�r‚6}rƒ6(jÅj~6jÆj|6ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r„6}r…6(jÅX**DSP1 Interrupt Mapping**r†6jÆj+4jÎjù3jÐjõjÒ}r‡6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÝhjÞ]rˆ6jÚ)�r‰6}rŠ6(jÅj†6jÒ}r‹6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj„6jÞ]rŒ6jçXDSP1 Interrupt Mappingr�6…�rŽ6}r�6(jÅUjÆj‰6ubajÐjâubaubjy )�r�6}r‘6(jÅUjÆj+4jÎjù3jÐjÔ jÒ}r’6(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r“6j~ )�r”6}r•6(jÅUjÒ}r–6(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj�6jÞ]r—6(jƒ )�r˜6}r™6(jÅUjÒ}rš6(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj”6jÞ]jÐj‡ ubjƒ )�r›6}rœ6(jÅUjÒ}r�6(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj”6jÞ]jÐj‡ ubjƒ )�rž6}rŸ6(jÅUjÒ}r 6(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj”6jÞ]jÐj‡ ubjƒ )�r¡6}r¢6(jÅUjÒ}r£6(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj”6jÞ]jÐj‡ ubjƒ )�r¤6}r¥6(jÅUjÒ}r¦6(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj”6jÞ]jÐj‡ ubjƒ )�r§6}r¨6(jÅUjÒ}r©6(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK$ujÆj”6jÞ]jÐj‡ ubj‹ )�rª6}r«6(jÅUjÒ}r¬6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”6jÞ]r­6j� )�r®6}r¯6(jÅUjÒ}r°6(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª6jÞ]r±6(j• )�r²6}r³6(jÅUjÒ}r´6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®6jÞ]rµ6jò)�r¶6}r·6(jÅXIndexr¸6jÆj²6jÎjù3jÐjõjÒ}r¹6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]rº6jçXIndexr»6…�r¼6}r½6(jÅj¸6jÆj¶6ubaubajÐj¢ ubj• )�r¾6}r¿6(jÅUjÒ}rÀ6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®6jÞ]rÁ6jò)�rÂ6}rÃ6(jÅXAddrrÄ6jÆj¾6jÎjù3jÐjõjÒ}rÅ6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]rÆ6jçXAddrrÇ6…�rÈ6}rÉ6(jÅjÄ6jÆjÂ6ubaubajÐj¢ ubj• )�rÊ6}rË6(jÅUjÒ}rÌ6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®6jÞ]rÍ6jò)�rÎ6}rÏ6(jÅXValuerÐ6jÆjÊ6jÎjù3jÐjõjÒ}rÑ6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]rÒ6jçXValuerÓ6…�rÔ6}rÕ6(jÅjÐ6jÆjÎ6ubaubajÐj¢ ubj• )�rÖ6}r×6(jÅUjÒ}rØ6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®6jÞ]rÙ6jò)�rÚ6}rÛ6(jÅXNamerÜ6jÆjÖ6jÎjù3jÐjõjÒ}rÝ6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]rÞ6jçXNamerß6…�rà6}rá6(jÅjÜ6jÆjÚ6ubaubajÐj¢ ubj• )�râ6}rã6(jÅUjÒ}rä6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®6jÞ]rå6jò)�ræ6}rç6(jÅXSourcerè6jÆjâ6jÎjù3jÐjõjÒ}ré6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]rê6jçXSourcerë6…�rì6}rí6(jÅjè6jÆjæ6ubaubajÐj¢ ubj• )�rî6}rï6(jÅUjÒ}rð6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®6jÞ]rñ6jò)�rò6}ró6(jÅX Descriptionrô6jÆjî6jÎjù3jÐjõjÒ}rõ6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]rö6jçX Descriptionr÷6…�rø6}rù6(jÅjô6jÆjò6ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rú6}rû6(jÅUjÒ}rü6(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”6jÞ]rý6(j� )�rþ6}rÿ6(jÅUjÒ}r7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjú6jÞ]r7(j• )�r7}r7(jÅUjÒ}r7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ6jÞ]r7jò)�r7}r7(jÅX55r7jÆj7jÎjù3jÐjõjÒ}r 7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]r 7jçX55r 7…�r 7}r 7(jÅj7jÆj7ubaubajÐj¢ ubj• )�r7}r7(jÅUjÒ}r7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ6jÞ]r7jò)�r7}r7(jÅX 0x4A002974r7jÆj7jÎjù3jÐjõjÒ}r7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]r7jçX 0x4A002974r7…�r7}r7(jÅj7jÆj7ubaubajÐj¢ ubj• )�r7}r7(jÅUjÒ}r7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ6jÞ]r7jò)�r7}r7(jÅX24r 7jÆj7jÎjù3jÐjõjÒ}r!7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]r"7jçX24r#7…�r$7}r%7(jÅj 7jÆj7ubaubajÐj¢ ubj• )�r&7}r'7(jÅUjÒ}r(7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ6jÞ]r)7jò)�r*7}r+7(jÅXEVE1_IRQ_MBX0_USER1r,7jÆj&7jÎjù3jÐjõjÒ}r-7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]r.7jçXEVE1_IRQ_MBX0_USER1r/7…�r07}r17(jÅj,7jÆj*7ubaubajÐj¢ ubj• )�r27}r37(jÅUjÒ}r47(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ6jÞ]r57jò)�r67}r77(jÅX EVE1_MAILBOX0r87jÆj27jÎjù3jÐjõjÒ}r97(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]r:7jçX EVE1_MAILBOX0r;7…�r<7}r=7(jÅj87jÆj67ubaubajÐj¢ ubj• )�r>7}r?7(jÅUjÒ}r@7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ6jÞ]rA7jò)�rB7}rC7(jÅXEve1 Mailbox 0 user 1 interruptrD7jÆj>7jÎjù3jÐjõjÒ}rE7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]rF7jçXEve1 Mailbox 0 user 1 interruptrG7…�rH7}rI7(jÅjD7jÆjB7ubaubajÐj¢ ubejÐj£ ubj� )�rJ7}rK7(jÅUjÒ}rL7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjú6jÞ]rM7(j• )�rN7}rO7(jÅUjÒ}rP7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ7jÞ]rQ7jò)�rR7}rS7(jÅX56rT7jÆjN7jÎjù3jÐjõjÒ}rU7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rV7jçX56rW7…�rX7}rY7(jÅjT7jÆjR7ubaubajÐj¢ ubj• )�rZ7}r[7(jÅUjÒ}r\7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ7jÞ]r]7jò)�r^7}r_7(jÅX 0x4A002978r`7jÆjZ7jÎjù3jÐjõjÒ}ra7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rb7jçX 0x4A002978rc7…�rd7}re7(jÅj`7jÆj^7ubaubajÐj¢ ubj• )�rf7}rg7(jÅUjÒ}rh7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ7jÞ]ri7jò)�rj7}rk7(jÅX25rl7jÆjf7jÎjù3jÐjõjÒ}rm7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rn7jçX25ro7…�rp7}rq7(jÅjl7jÆjj7ubaubajÐj¢ ubj• )�rr7}rs7(jÅUjÒ}rt7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ7jÞ]ru7jò)�rv7}rw7(jÅXEVE2_IRQ_MBX0_USER1rx7jÆjr7jÎjù3jÐjõjÒ}ry7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rz7jçXEVE2_IRQ_MBX0_USER1r{7…�r|7}r}7(jÅjx7jÆjv7ubaubajÐj¢ ubj• )�r~7}r7(jÅUjÒ}r€7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ7jÞ]r�7jò)�r‚7}rƒ7(jÅX EVE2_MAILBOX0r„7jÆj~7jÎjù3jÐjõjÒ}r…7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]r†7jçX EVE2_MAILBOX0r‡7…�rˆ7}r‰7(jÅj„7jÆj‚7ubaubajÐj¢ ubj• )�rŠ7}r‹7(jÅUjÒ}rŒ7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ7jÞ]r�7jò)�rŽ7}r�7(jÅXEve2 Mailbox 0 user 1 interruptr�7jÆjŠ7jÎjù3jÐjõjÒ}r‘7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]r’7jçXEve2 Mailbox 0 user 1 interruptr“7…�r”7}r•7(jÅj�7jÆjŽ7ubaubajÐj¢ ubejÐj£ ubj� )�r–7}r—7(jÅUjÒ}r˜7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjú6jÞ]r™7(j• )�rš7}r›7(jÅUjÒ}rœ7(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–7jÞ]r�7jò)�rž7}rŸ7(jÅX57r 7jÆjš7jÎjù3jÐjõjÒ}r¡7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]r¢7jçX57r£7…�r¤7}r¥7(jÅj 7jÆjž7ubaubajÐj¢ ubj• )�r¦7}r§7(jÅUjÒ}r¨7(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–7jÞ]r©7jò)�rª7}r«7(jÅX 0x4A002978r¬7jÆj¦7jÎjù3jÐjõjÒ}r­7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]r®7jçX 0x4A002978r¯7…�r°7}r±7(jÅj¬7jÆjª7ubaubajÐj¢ ubj• )�r²7}r³7(jÅUjÒ}r´7(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–7jÞ]rµ7jò)�r¶7}r·7(jÅX26r¸7jÆj²7jÎjù3jÐjõjÒ}r¹7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rº7jçX26r»7…�r¼7}r½7(jÅj¸7jÆj¶7ubaubajÐj¢ ubj• )�r¾7}r¿7(jÅUjÒ}rÀ7(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–7jÞ]rÁ7jò)�rÂ7}rÃ7(jÅXMAILBOX5_IRQ_USER0rÄ7jÆj¾7jÎjù3jÐjõjÒ}rÅ7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rÆ7jçXMAILBOX5_IRQ_USER0rÇ7…�rÈ7}rÉ7(jÅjÄ7jÆjÂ7ubaubajÐj¢ ubj• )�rÊ7}rË7(jÅUjÒ}rÌ7(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–7jÞ]rÍ7jò)�rÎ7}rÏ7(jÅXMAILBOX5rÐ7jÆjÊ7jÎjù3jÐjõjÒ}rÑ7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rÒ7jçXMAILBOX5rÓ7…�rÔ7}rÕ7(jÅjÐ7jÆjÎ7ubaubajÐj¢ ubj• )�rÖ7}r×7(jÅUjÒ}rØ7(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–7jÞ]rÙ7jò)�rÚ7}rÛ7(jÅXMailbox 5 user 0 interruptrÜ7jÆjÖ7jÎjù3jÐjõjÒ}rÝ7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rÞ7jçXMailbox 5 user 0 interruptrß7…�rà7}rá7(jÅjÜ7jÆjÚ7ubaubajÐj¢ ubejÐj£ ubj� )�râ7}rã7(jÅUjÒ}rä7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjú6jÞ]rå7(j• )�ræ7}rç7(jÅUjÒ}rè7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ7jÞ]ré7jò)�rê7}rë7(jÅX58rì7jÆjæ7jÎjù3jÐjõjÒ}rí7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]rî7jçX58rï7…�rð7}rñ7(jÅjì7jÆjê7ubaubajÐj¢ ubj• )�rò7}ró7(jÅUjÒ}rô7(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ7jÞ]rõ7jò)�rö7}r÷7(jÅX 0x4A00297Crø7jÆjò7jÎjù3jÐjõjÒ}rù7(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]rú7jçX 0x4A00297Crû7…�rü7}rý7(jÅjø7jÆjö7ubaubajÐj¢ ubj• )�rþ7}rÿ7(jÅUjÒ}r8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ7jÞ]r8jò)�r8}r8(jÅX27r8jÆjþ7jÎjù3jÐjõjÒ}r8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r8jçX27r8…�r8}r 8(jÅj8jÆj8ubaubajÐj¢ ubj• )�r 8}r 8(jÅUjÒ}r 8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ7jÞ]r 8jò)�r8}r8(jÅXEVE3_IRQ_MBX0_USER1r8jÆj 8jÎjù3jÐjõjÒ}r8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r8jçXEVE3_IRQ_MBX0_USER1r8…�r8}r8(jÅj8jÆj8ubaubajÐj¢ ubj• )�r8}r8(jÅUjÒ}r8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ7jÞ]r8jò)�r8}r8(jÅX EVE3_MAILBOX0r8jÆj8jÎjù3jÐjõjÒ}r8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r8jçX EVE3_MAILBOX0r8…�r 8}r!8(jÅj8jÆj8ubaubajÐj¢ ubj• )�r"8}r#8(jÅUjÒ}r$8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ7jÞ]r%8jò)�r&8}r'8(jÅX Eve 3 Mailbox 0 user 1 interruptr(8jÆj"8jÎjù3jÐjõjÒ}r)8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r*8jçX Eve 3 Mailbox 0 user 1 interruptr+8…�r,8}r-8(jÅj(8jÆj&8ubaubajÐj¢ ubejÐj£ ubj� )�r.8}r/8(jÅUjÒ}r08(jÔ]jÕ]jÖ]j×]jÚ]ujÆjú6jÞ]r18(j• )�r28}r38(jÅUjÒ}r48(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.8jÞ]r58jò)�r68}r78(jÅX59r88jÆj28jÎjù3jÐjõjÒ}r98(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]r:8jçX59r;8…�r<8}r=8(jÅj88jÆj68ubaubajÐj¢ ubj• )�r>8}r?8(jÅUjÒ}r@8(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.8jÞ]rA8jò)�rB8}rC8(jÅX 0x4A00297CrD8jÆj>8jÎjù3jÐjõjÒ}rE8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]rF8jçX 0x4A00297CrG8…�rH8}rI8(jÅjD8jÆjB8ubaubajÐj¢ ubj• )�rJ8}rK8(jÅUjÒ}rL8(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.8jÞ]rM8jò)�rN8}rO8(jÅX28rP8jÆjJ8jÎjù3jÐjõjÒ}rQ8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]rR8jçX28rS8…�rT8}rU8(jÅjP8jÆjN8ubaubajÐj¢ ubj• )�rV8}rW8(jÅUjÒ}rX8(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.8jÞ]rY8jò)�rZ8}r[8(jÅXEVE4_IRQ_MBX0_USER1r\8jÆjV8jÎjù3jÐjõjÒ}r]8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]r^8jçXEVE4_IRQ_MBX0_USER1r_8…�r`8}ra8(jÅj\8jÆjZ8ubaubajÐj¢ ubj• )�rb8}rc8(jÅUjÒ}rd8(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.8jÞ]re8jò)�rf8}rg8(jÅXEVE4_MAILBOX0irh8jÆjb8jÎjù3jÐjõjÒ}ri8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]rj8jçXEVE4_MAILBOX0irk8…�rl8}rm8(jÅjh8jÆjf8ubaubajÐj¢ ubj• )�rn8}ro8(jÅUjÒ}rp8(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.8jÞ]rq8jò)�rr8}rs8(jÅXEve4 Mailbox 0 user 1 interruptrt8jÆjn8jÎjù3jÐjõjÒ}ru8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]rv8jçXEve4 Mailbox 0 user 1 interruptrw8…�rx8}ry8(jÅjt8jÆjr8ubaubajÐj¢ ubejÐj£ ubj� )�rz8}r{8(jÅUjÒ}r|8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjú6jÞ]r}8(j• )�r~8}r8(jÅUjÒ}r€8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz8jÞ]r�8jò)�r‚8}rƒ8(jÅX60r„8jÆj~8jÎjù3jÐjõjÒ}r…8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]r†8jçX60r‡8…�rˆ8}r‰8(jÅj„8jÆj‚8ubaubajÐj¢ ubj• )�rŠ8}r‹8(jÅUjÒ}rŒ8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz8jÞ]r�8jò)�rŽ8}r�8(jÅX 0x4A002980r�8jÆjŠ8jÎjù3jÐjõjÒ}r‘8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]r’8jçX 0x4A002980r“8…�r”8}r•8(jÅj�8jÆjŽ8ubaubajÐj¢ ubj• )�r–8}r—8(jÅUjÒ}r˜8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz8jÞ]r™8jò)�rš8}r›8(jÅX29rœ8jÆj–8jÎjù3jÐjõjÒ}r�8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]rž8jçX29rŸ8…�r 8}r¡8(jÅjœ8jÆjš8ubaubajÐj¢ ubj• )�r¢8}r£8(jÅUjÒ}r¤8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz8jÞ]r¥8jò)�r¦8}r§8(jÅXMAILBOX7_IRQ_USER0r¨8jÆj¢8jÎjù3jÐjõjÒ}r©8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]rª8jçXMAILBOX7_IRQ_USER0r«8…�r¬8}r­8(jÅj¨8jÆj¦8ubaubajÐj¢ ubj• )�r®8}r¯8(jÅUjÒ}r°8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz8jÞ]r±8jò)�r²8}r³8(jÅXMAILBOX7r´8jÆj®8jÎjù3jÐjõjÒ}rµ8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]r¶8jçXMAILBOX7r·8…�r¸8}r¹8(jÅj´8jÆj²8ubaubajÐj¢ ubj• )�rº8}r»8(jÅUjÒ}r¼8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz8jÞ]r½8jò)�r¾8}r¿8(jÅXMailbox 7 user 0 interruptrÀ8jÆjº8jÎjù3jÐjõjÒ}rÁ8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]rÂ8jçXMailbox 7 user 0 interruptrÃ8…�rÄ8}rÅ8(jÅjÀ8jÆj¾8ubaubajÐj¢ ubejÐj£ ubj� )�rÆ8}rÇ8(jÅUjÒ}rÈ8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjú6jÞ]rÉ8(j• )�rÊ8}rË8(jÅUjÒ}rÌ8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ8jÞ]rÍ8jò)�rÎ8}rÏ8(jÅX61rÐ8jÆjÊ8jÎjù3jÐjõjÒ}rÑ8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rÒ8jçX61rÓ8…�rÔ8}rÕ8(jÅjÐ8jÆjÎ8ubaubajÐj¢ ubj• )�rÖ8}r×8(jÅUjÒ}rØ8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ8jÞ]rÙ8jò)�rÚ8}rÛ8(jÅX 0x4A002980rÜ8jÆjÖ8jÎjù3jÐjõjÒ}rÝ8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rÞ8jçX 0x4A002980rß8…�rà8}rá8(jÅjÜ8jÆjÚ8ubaubajÐj¢ ubj• )�râ8}rã8(jÅUjÒ}rä8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ8jÞ]rå8jò)�ræ8}rç8(jÅX30rè8jÆjâ8jÎjù3jÐjõjÒ}ré8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rê8jçX30rë8…�rì8}rí8(jÅjè8jÆjæ8ubaubajÐj¢ ubj• )�rî8}rï8(jÅUjÒ}rð8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ8jÞ]rñ8jò)�rò8}ró8(jÅXMAILBOX8_IRQ_USER0rô8jÆjî8jÎjù3jÐjõjÒ}rõ8(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rö8jçXMAILBOX8_IRQ_USER0r÷8…�rø8}rù8(jÅjô8jÆjò8ubaubajÐj¢ ubj• )�rú8}rû8(jÅUjÒ}rü8(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ8jÞ]rý8jò)�rþ8}rÿ8(jÅXMAILBOX8r9jÆjú8jÎjù3jÐjõjÒ}r9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]r9jçXMAILBOX8r9…�r9}r9(jÅj9jÆjþ8ubaubajÐj¢ ubj• )�r9}r9(jÅUjÒ}r9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ8jÞ]r 9jò)�r 9}r 9(jÅXMailbox 8 user 0 interruptr 9jÆj9jÎjù3jÐjõjÒ}r 9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]r9jçXMailbox 8 user 0 interruptr9…�r9}r9(jÅj 9jÆj 9ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r9}r9(jÅX**DSP2 Interrupt Mapping**r9jÆj+4jÎjù3jÐjõjÒ}r9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÝhjÞ]r9jÚ)�r9}r9(jÅj9jÒ}r9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9jÞ]r9jçXDSP2 Interrupt Mappingr9…�r9}r9(jÅUjÆj9ubajÐjâubaubjy )�r9}r9(jÅUjÆj+4jÎjù3jÐjÔ jÒ}r 9(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r!9j~ )�r"9}r#9(jÅUjÒ}r$9(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj9jÞ]r%9(jƒ )�r&9}r'9(jÅUjÒ}r(9(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj"9jÞ]jÐj‡ ubjƒ )�r)9}r*9(jÅUjÒ}r+9(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj"9jÞ]jÐj‡ ubjƒ )�r,9}r-9(jÅUjÒ}r.9(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj"9jÞ]jÐj‡ ubjƒ )�r/9}r09(jÅUjÒ}r19(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj"9jÞ]jÐj‡ ubjƒ )�r29}r39(jÅUjÒ}r49(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj"9jÞ]jÐj‡ ubjƒ )�r59}r69(jÅUjÒ}r79(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK$ujÆj"9jÞ]jÐj‡ ubj‹ )�r89}r99(jÅUjÒ}r:9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj"9jÞ]r;9j� )�r<9}r=9(jÅUjÒ}r>9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj89jÞ]r?9(j• )�r@9}rA9(jÅUjÒ}rB9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<9jÞ]rC9jò)�rD9}rE9(jÅXIndexrF9jÆj@9jÎjù3jÐjõjÒ}rG9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]rH9jçXIndexrI9…�rJ9}rK9(jÅjF9jÆjD9ubaubajÐj¢ ubj• )�rL9}rM9(jÅUjÒ}rN9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<9jÞ]rO9jò)�rP9}rQ9(jÅXAddrrR9jÆjL9jÎjù3jÐjõjÒ}rS9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]rT9jçXAddrrU9…�rV9}rW9(jÅjR9jÆjP9ubaubajÐj¢ ubj• )�rX9}rY9(jÅUjÒ}rZ9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<9jÞ]r[9jò)�r\9}r]9(jÅXValuer^9jÆjX9jÎjù3jÐjõjÒ}r_9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]r`9jçXValuera9…�rb9}rc9(jÅj^9jÆj\9ubaubajÐj¢ ubj• )�rd9}re9(jÅUjÒ}rf9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<9jÞ]rg9jò)�rh9}ri9(jÅXNamerj9jÆjd9jÎjù3jÐjõjÒ}rk9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]rl9jçXNamerm9…�rn9}ro9(jÅjj9jÆjh9ubaubajÐj¢ ubj• )�rp9}rq9(jÅUjÒ}rr9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<9jÞ]rs9jò)�rt9}ru9(jÅXSourcerv9jÆjp9jÎjù3jÐjõjÒ}rw9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]rx9jçXSourcery9…�rz9}r{9(jÅjv9jÆjt9ubaubajÐj¢ ubj• )�r|9}r}9(jÅUjÒ}r~9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<9jÞ]r9jò)�r€9}r�9(jÅX Descriptionr‚9jÆj|9jÎjù3jÐjõjÒ}rƒ9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]r„9jçX Descriptionr…9…�r†9}r‡9(jÅj‚9jÆj€9ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rˆ9}r‰9(jÅUjÒ}rŠ9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj"9jÞ]r‹9(j� )�rŒ9}r�9(jÅUjÒ}rŽ9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆ9jÞ]r�9(j• )�r�9}r‘9(jÅUjÒ}r’9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒ9jÞ]r“9jò)�r”9}r•9(jÅX55r–9jÆj�9jÎjù3jÐjõjÒ}r—9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]r˜9jçX55r™9…�rš9}r›9(jÅj–9jÆj”9ubaubajÐj¢ ubj• )�rœ9}r�9(jÅUjÒ}rž9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒ9jÞ]rŸ9jò)�r 9}r¡9(jÅX 0x4A0029F4r¢9jÆjœ9jÎjù3jÐjõjÒ}r£9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]r¤9jçX 0x4A0029F4r¥9…�r¦9}r§9(jÅj¢9jÆj 9ubaubajÐj¢ ubj• )�r¨9}r©9(jÅUjÒ}rª9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒ9jÞ]r«9jò)�r¬9}r­9(jÅX24r®9jÆj¨9jÎjù3jÐjõjÒ}r¯9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]r°9jçX24r±9…�r²9}r³9(jÅj®9jÆj¬9ubaubajÐj¢ ubj• )�r´9}rµ9(jÅUjÒ}r¶9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒ9jÞ]r·9jò)�r¸9}r¹9(jÅXEVE1_IRQ_MBX1_USER1rº9jÆj´9jÎjù3jÐjõjÒ}r»9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]r¼9jçXEVE1_IRQ_MBX1_USER1r½9…�r¾9}r¿9(jÅjº9jÆj¸9ubaubajÐj¢ ubj• )�rÀ9}rÁ9(jÅUjÒ}rÂ9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒ9jÞ]rÃ9jò)�rÄ9}rÅ9(jÅX EVE1_MAILBOX1rÆ9jÆjÀ9jÎjù3jÐjõjÒ}rÇ9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]rÈ9jçX EVE1_MAILBOX1rÉ9…�rÊ9}rË9(jÅjÆ9jÆjÄ9ubaubajÐj¢ ubj• )�rÌ9}rÍ9(jÅUjÒ}rÎ9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒ9jÞ]rÏ9jò)�rÐ9}rÑ9(jÅXEve1 Mailbox 1 user 1 interruptrÒ9jÆjÌ9jÎjù3jÐjõjÒ}rÓ9(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]rÔ9jçXEve1 Mailbox 1 user 1 interruptrÕ9…�rÖ9}r×9(jÅjÒ9jÆjÐ9ubaubajÐj¢ ubejÐj£ ubj� )�rØ9}rÙ9(jÅUjÒ}rÚ9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆ9jÞ]rÛ9(j• )�rÜ9}rÝ9(jÅUjÒ}rÞ9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjØ9jÞ]rß9jò)�rà9}rá9(jÅX56râ9jÆjÜ9jÎjù3jÐjõjÒ}rã9(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]rä9jçX56rå9…�ræ9}rç9(jÅjâ9jÆjà9ubaubajÐj¢ ubj• )�rè9}ré9(jÅUjÒ}rê9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjØ9jÞ]rë9jò)�rì9}rí9(jÅX 0x4A0029F8rî9jÆjè9jÎjù3jÐjõjÒ}rï9(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]rð9jçX 0x4A0029F8rñ9…�rò9}ró9(jÅjî9jÆjì9ubaubajÐj¢ ubj• )�rô9}rõ9(jÅUjÒ}rö9(jÔ]jÕ]jÖ]j×]jÚ]ujÆjØ9jÞ]r÷9jò)�rø9}rù9(jÅX25rú9jÆjô9jÎjù3jÐjõjÒ}rû9(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]rü9jçX25rý9…�rþ9}rÿ9(jÅjú9jÆjø9ubaubajÐj¢ ubj• )�r:}r:(jÅUjÒ}r:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjØ9jÞ]r:jò)�r:}r:(jÅXEVE2_IRQ_MBX1_USER1r:jÆj:jÎjù3jÐjõjÒ}r:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]r:jçXEVE2_IRQ_MBX1_USER1r :…�r :}r :(jÅj:jÆj:ubaubajÐj¢ ubj• )�r :}r :(jÅUjÒ}r:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjØ9jÞ]r:jò)�r:}r:(jÅX EVE2_MAILBOX1r:jÆj :jÎjù3jÐjõjÒ}r:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]r:jçX EVE2_MAILBOX1r:…�r:}r:(jÅj:jÆj:ubaubajÐj¢ ubj• )�r:}r:(jÅUjÒ}r:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjØ9jÞ]r:jò)�r:}r:(jÅXEve2 Mailbox 1 user 1 interruptr:jÆj:jÎjù3jÐjõjÒ}r:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]r :jçXEve2 Mailbox 1 user 1 interruptr!:…�r":}r#:(jÅj:jÆj:ubaubajÐj¢ ubejÐj£ ubj� )�r$:}r%:(jÅUjÒ}r&:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆ9jÞ]r':(j• )�r(:}r):(jÅUjÒ}r*:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$:jÞ]r+:jò)�r,:}r-:(jÅX57r.:jÆj(:jÎjù3jÐjõjÒ}r/:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]r0:jçX57r1:…�r2:}r3:(jÅj.:jÆj,:ubaubajÐj¢ ubj• )�r4:}r5:(jÅUjÒ}r6:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$:jÞ]r7:jò)�r8:}r9:(jÅX 0x4A0029F8r::jÆj4:jÎjù3jÐjõjÒ}r;:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]r<:jçX 0x4A0029F8r=:…�r>:}r?:(jÅj::jÆj8:ubaubajÐj¢ ubj• )�r@:}rA:(jÅUjÒ}rB:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$:jÞ]rC:jò)�rD:}rE:(jÅX26rF:jÆj@:jÎjù3jÐjõjÒ}rG:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]rH:jçX26rI:…�rJ:}rK:(jÅjF:jÆjD:ubaubajÐj¢ ubj• )�rL:}rM:(jÅUjÒ}rN:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$:jÞ]rO:jò)�rP:}rQ:(jÅXMAILBOX6_IRQ_USER0rR:jÆjL:jÎjù3jÐjõjÒ}rS:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]rT:jçXMAILBOX6_IRQ_USER0rU:…�rV:}rW:(jÅjR:jÆjP:ubaubajÐj¢ ubj• )�rX:}rY:(jÅUjÒ}rZ:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$:jÞ]r[:jò)�r\:}r]:(jÅXMAILBOX6r^:jÆjX:jÎjù3jÐjõjÒ}r_:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]r`:jçXMAILBOX6ra:…�rb:}rc:(jÅj^:jÆj\:ubaubajÐj¢ ubj• )�rd:}re:(jÅUjÒ}rf:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$:jÞ]rg:jò)�rh:}ri:(jÅXMailbox 6 user 0 interruptrj:jÆjd:jÎjù3jÐjõjÒ}rk:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]rl:jçXMailbox 6 user 0 interruptrm:…�rn:}ro:(jÅjj:jÆjh:ubaubajÐj¢ ubejÐj£ ubj� )�rp:}rq:(jÅUjÒ}rr:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆ9jÞ]rs:(j• )�rt:}ru:(jÅUjÒ}rv:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjp:jÞ]rw:jò)�rx:}ry:(jÅX58rz:jÆjt:jÎjù3jÐjõjÒ}r{:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]r|:jçX58r}:…�r~:}r:(jÅjz:jÆjx:ubaubajÐj¢ ubj• )�r€:}r�:(jÅUjÒ}r‚:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjp:jÞ]rƒ:jò)�r„:}r…:(jÅX 0x4A0029FCr†:jÆj€:jÎjù3jÐjõjÒ}r‡:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]rˆ:jçX 0x4A0029FCr‰:…�rŠ:}r‹:(jÅj†:jÆj„:ubaubajÐj¢ ubj• )�rŒ:}r�:(jÅUjÒ}rŽ:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjp:jÞ]r�:jò)�r�:}r‘:(jÅX27r’:jÆjŒ:jÎjù3jÐjõjÒ}r“:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]r”:jçX27r•:…�r–:}r—:(jÅj’:jÆj�:ubaubajÐj¢ ubj• )�r˜:}r™:(jÅUjÒ}rš:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjp:jÞ]r›:jò)�rœ:}r�:(jÅXEVE3_IRQ_MLBX1_USER1rž:jÆj˜:jÎjù3jÐjõjÒ}rŸ:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]r :jçXEVE3_IRQ_MLBX1_USER1r¡:…�r¢:}r£:(jÅjž:jÆjœ:ubaubajÐj¢ ubj• )�r¤:}r¥:(jÅUjÒ}r¦:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjp:jÞ]r§:jò)�r¨:}r©:(jÅX EVE3_MAILBOX1rª:jÆj¤:jÎjù3jÐjõjÒ}r«:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]r¬:jçX EVE3_MAILBOX1r­:…�r®:}r¯:(jÅjª:jÆj¨:ubaubajÐj¢ ubj• )�r°:}r±:(jÅUjÒ}r²:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjp:jÞ]r³:jò)�r´:}rµ:(jÅX Eve 3 Mailbox 1 user 1 interruptr¶:jÆj°:jÎjù3jÐjõjÒ}r·:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]r¸:jçX Eve 3 Mailbox 1 user 1 interruptr¹:…�rº:}r»:(jÅj¶:jÆj´:ubaubajÐj¢ ubejÐj£ ubj� )�r¼:}r½:(jÅUjÒ}r¾:(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆ9jÞ]r¿:(j• )�rÀ:}rÁ:(jÅUjÒ}rÂ:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼:jÞ]rÃ:jò)�rÄ:}rÅ:(jÅX59rÆ:jÆjÀ:jÎjù3jÐjõjÒ}rÇ:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]rÈ:jçX59rÉ:…�rÊ:}rË:(jÅjÆ:jÆjÄ:ubaubajÐj¢ ubj• )�rÌ:}rÍ:(jÅUjÒ}rÎ:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼:jÞ]rÏ:jò)�rÐ:}rÑ:(jÅX 0x4A0029FCrÒ:jÆjÌ:jÎjù3jÐjõjÒ}rÓ:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]rÔ:jçX 0x4A0029FCrÕ:…�rÖ:}r×:(jÅjÒ:jÆjÐ:ubaubajÐj¢ ubj• )�rØ:}rÙ:(jÅUjÒ}rÚ:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼:jÞ]rÛ:jò)�rÜ:}rÝ:(jÅX28rÞ:jÆjØ:jÎjù3jÐjõjÒ}rß:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]rà:jçX28rá:…�râ:}rã:(jÅjÞ:jÆjÜ:ubaubajÐj¢ ubj• )�rä:}rå:(jÅUjÒ}ræ:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼:jÞ]rç:jò)�rè:}ré:(jÅXEVE4_IRQ_MBX1_USER1rê:jÆjä:jÎjù3jÐjõjÒ}rë:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]rì:jçXEVE4_IRQ_MBX1_USER1rí:…�rî:}rï:(jÅjê:jÆjè:ubaubajÐj¢ ubj• )�rð:}rñ:(jÅUjÒ}rò:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼:jÞ]ró:jò)�rô:}rõ:(jÅX EVE4_MAILBOX1rö:jÆjð:jÎjù3jÐjõjÒ}r÷:(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]rø:jçX EVE4_MAILBOX1rù:…�rú:}rû:(jÅjö:jÆjô:ubaubajÐj¢ ubj• )�rü:}rý:(jÅUjÒ}rþ:(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼:jÞ]rÿ:jò)�r;}r;(jÅXEve4 Mailbox 1 user 1 interruptr;jÆjü:jÎjù3jÐjõjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]r;jçXEve4 Mailbox 1 user 1 interruptr;…�r;}r;(jÅj;jÆj;ubaubajÐj¢ ubejÐj£ ubj� )�r;}r ;(jÅUjÒ}r ;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆ9jÞ]r ;(j• )�r ;}r ;(jÅUjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;jÞ]r;jò)�r;}r;(jÅX60r;jÆj ;jÎjù3jÐjõjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]r;jçX60r;…�r;}r;(jÅj;jÆj;ubaubajÐj¢ ubj• )�r;}r;(jÅUjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;jÞ]r;jò)�r;}r;(jÅX 0x4A002A00r;jÆj;jÎjù3jÐjõjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]r ;jçX 0x4A002A00r!;…�r";}r#;(jÅj;jÆj;ubaubajÐj¢ ubj• )�r$;}r%;(jÅUjÒ}r&;(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;jÞ]r';jò)�r(;}r);(jÅX29r*;jÆj$;jÎjù3jÐjõjÒ}r+;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]r,;jçX29r-;…�r.;}r/;(jÅj*;jÆj(;ubaubajÐj¢ ubj• )�r0;}r1;(jÅUjÒ}r2;(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;jÞ]r3;jò)�r4;}r5;(jÅXMAILBOX7_IRQ_USER1r6;jÆj0;jÎjù3jÐjõjÒ}r7;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]r8;jçXMAILBOX7_IRQ_USER1r9;…�r:;}r;;(jÅj6;jÆj4;ubaubajÐj¢ ubj• )�r<;}r=;(jÅUjÒ}r>;(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;jÞ]r?;jò)�r@;}rA;(jÅXMAILBOX7rB;jÆj<;jÎjù3jÐjõjÒ}rC;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]rD;jçXMAILBOX7rE;…�rF;}rG;(jÅjB;jÆj@;ubaubajÐj¢ ubj• )�rH;}rI;(jÅUjÒ}rJ;(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;jÞ]rK;jò)�rL;}rM;(jÅXMailbox 7 user 1 interruptrN;jÆjH;jÎjù3jÐjõjÒ}rO;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]rP;jçXMailbox 7 user 1 interruptrQ;…�rR;}rS;(jÅjN;jÆjL;ubaubajÐj¢ ubejÐj£ ubj� )�rT;}rU;(jÅUjÒ}rV;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆ9jÞ]rW;(j• )�rX;}rY;(jÅUjÒ}rZ;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT;jÞ]r[;jò)�r\;}r];(jÅX61r^;jÆjX;jÎjù3jÐjõjÒ}r_;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]r`;jçX61ra;…�rb;}rc;(jÅj^;jÆj\;ubaubajÐj¢ ubj• )�rd;}re;(jÅUjÒ}rf;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT;jÞ]rg;jò)�rh;}ri;(jÅX 0x4A002A00rj;jÆjd;jÎjù3jÐjõjÒ}rk;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]rl;jçX 0x4A002A00rm;…�rn;}ro;(jÅjj;jÆjh;ubaubajÐj¢ ubj• )�rp;}rq;(jÅUjÒ}rr;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT;jÞ]rs;jò)�rt;}ru;(jÅX30rv;jÆjp;jÎjù3jÐjõjÒ}rw;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]rx;jçX30ry;…�rz;}r{;(jÅjv;jÆjt;ubaubajÐj¢ ubj• )�r|;}r};(jÅUjÒ}r~;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT;jÞ]r;jò)�r€;}r�;(jÅXMAILBOX8_IRQ_USER1r‚;jÆj|;jÎjù3jÐjõjÒ}rƒ;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]r„;jçXMAILBOX8_IRQ_USER1r…;…�r†;}r‡;(jÅj‚;jÆj€;ubaubajÐj¢ ubj• )�rˆ;}r‰;(jÅUjÒ}rŠ;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT;jÞ]r‹;jò)�rŒ;}r�;(jÅXMAILBOX8rŽ;jÆjˆ;jÎjù3jÐjõjÒ}r�;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]r�;jçXMAILBOX8r‘;…�r’;}r“;(jÅjŽ;jÆjŒ;ubaubajÐj¢ ubj• )�r”;}r•;(jÅUjÒ}r–;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT;jÞ]r—;jò)�r˜;}r™;(jÅXMailbox 8 user 1 interruptrš;jÆj”;jÎjù3jÐjõjÒ}r›;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]rœ;jçXMailbox 8 user 1 interruptr�;…�rž;}rŸ;(jÅjš;jÆj˜;ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r ;}r¡;(jÅX**IPU1 Interrupt Mapping**r¢;jÆj+4jÎjù3jÐjõjÒ}r£;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÝhjÞ]r¤;jÚ)�r¥;}r¦;(jÅj¢;jÒ}r§;(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ;jÞ]r¨;jçXIPU1 Interrupt Mappingr©;…�rª;}r«;(jÅUjÆj¥;ubajÐjâubaubjy )�r¬;}r­;(jÅUjÆj+4jÎjù3jÐjÔ jÒ}r®;(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¯;j~ )�r°;}r±;(jÅUjÒ}r²;(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj¬;jÞ]r³;(jƒ )�r´;}rµ;(jÅUjÒ}r¶;(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj°;jÞ]jÐj‡ ubjƒ )�r·;}r¸;(jÅUjÒ}r¹;(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj°;jÞ]jÐj‡ ubjƒ )�rº;}r»;(jÅUjÒ}r¼;(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj°;jÞ]jÐj‡ ubjƒ )�r½;}r¾;(jÅUjÒ}r¿;(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj°;jÞ]jÐj‡ ubjƒ )�rÀ;}rÁ;(jÅUjÒ}rÂ;(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj°;jÞ]jÐj‡ ubjƒ )�rÃ;}rÄ;(jÅUjÒ}rÅ;(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK$ujÆj°;jÞ]jÐj‡ ubj‹ )�rÆ;}rÇ;(jÅUjÒ}rÈ;(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°;jÞ]rÉ;j� )�rÊ;}rË;(jÅUjÒ}rÌ;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ;jÞ]rÍ;(j• )�rÎ;}rÏ;(jÅUjÒ}rÐ;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊ;jÞ]rÑ;jò)�rÒ;}rÓ;(jÅXIndexrÔ;jÆjÎ;jÎjù3jÐjõjÒ}rÕ;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÞ]rÖ;jçXIndexr×;…�rØ;}rÙ;(jÅjÔ;jÆjÒ;ubaubajÐj¢ ubj• )�rÚ;}rÛ;(jÅUjÒ}rÜ;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊ;jÞ]rÝ;jò)�rÞ;}rß;(jÅXAddrrà;jÆjÚ;jÎjù3jÐjõjÒ}rá;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÞ]râ;jçXAddrrã;…�rä;}rå;(jÅjà;jÆjÞ;ubaubajÐj¢ ubj• )�ræ;}rç;(jÅUjÒ}rè;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊ;jÞ]ré;jò)�rê;}rë;(jÅXValuerì;jÆjæ;jÎjù3jÐjõjÒ}rí;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÞ]rî;jçXValuerï;…�rð;}rñ;(jÅjì;jÆjê;ubaubajÐj¢ ubj• )�rò;}ró;(jÅUjÒ}rô;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊ;jÞ]rõ;jò)�rö;}r÷;(jÅXNamerø;jÆjò;jÎjù3jÐjõjÒ}rù;(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÞ]rú;jçXNamerû;…�rü;}rý;(jÅjø;jÆjö;ubaubajÐj¢ ubj• )�rþ;}rÿ;(jÅUjÒ}r<(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊ;jÞ]r<jò)�r<}r<(jÅXSourcer<jÆjþ;jÎjù3jÐjõjÒ}r<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÞ]r<jçXSourcer<…�r<}r <(jÅj<jÆj<ubaubajÐj¢ ubj• )�r <}r <(jÅUjÒ}r <(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊ;jÞ]r <jò)�r<}r<(jÅX Descriptionr<jÆj <jÎjù3jÐjõjÒ}r<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÞ]r<jçX Descriptionr<…�r<}r<(jÅj<jÆj<ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r<}r<(jÅUjÒ}r<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°;jÞ]r<(j� )�r<}r<(jÅUjÒ}r<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r<(j• )�r<}r<(jÅUjÒ}r <(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r!<jò)�r"<}r#<(jÅX64r$<jÆj<jÎjù3jÐjõjÒ}r%<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]r&<jçX64r'<…�r(<}r)<(jÅj$<jÆj"<ubaubajÐj¢ ubj• )�r*<}r+<(jÅUjÒ}r,<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r-<jò)�r.<}r/<(jÅX 0x4A002830r0<jÆj*<jÎjù3jÐjõjÒ}r1<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]r2<jçX 0x4A002830r3<…�r4<}r5<(jÅj0<jÆj.<ubaubajÐj¢ ubj• )�r6<}r7<(jÅUjÒ}r8<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r9<jò)�r:<}r;<(jÅX42r<<jÆj6<jÎjù3jÐjõjÒ}r=<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]r><jçX42r?<…�r@<}rA<(jÅj<<jÆj:<ubaubajÐj¢ ubj• )�rB<}rC<(jÅUjÒ}rD<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]rE<jò)�rF<}rG<(jÅXEVE1_IRQ_MBX0_USER2rH<jÆjB<jÎjù3jÐjõjÒ}rI<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]rJ<jçXEVE1_IRQ_MBX0_USER2rK<…�rL<}rM<(jÅjH<jÆjF<ubaubajÐj¢ ubj• )�rN<}rO<(jÅUjÒ}rP<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]rQ<jò)�rR<}rS<(jÅX EVE1_MAILBOX0rT<jÆjN<jÎjù3jÐjõjÒ}rU<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]rV<jçX EVE1_MAILBOX0rW<…�rX<}rY<(jÅjT<jÆjR<ubaubajÐj¢ ubj• )�rZ<}r[<(jÅUjÒ}r\<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r]<jò)�r^<}r_<(jÅXEve1 Mailbox 0 user 2 interruptr`<jÆjZ<jÎjù3jÐjõjÒ}ra<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]rb<jçXEve1 Mailbox 0 user 2 interruptrc<…�rd<}re<(jÅj`<jÆj^<ubaubajÐj¢ ubejÐj£ ubj� )�rf<}rg<(jÅUjÒ}rh<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]ri<(j• )�rj<}rk<(jÅUjÒ}rl<(jÔ]jÕ]jÖ]j×]jÚ]ujÆjf<jÞ]rm<jò)�rn<}ro<(jÅX65rp<jÆjj<jÎjù3jÐjõjÒ}rq<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]rr<jçX65rs<…�rt<}ru<(jÅjp<jÆjn<ubaubajÐj¢ ubj• )�rv<}rw<(jÅUjÒ}rx<(jÔ]jÕ]jÖ]j×]jÚ]ujÆjf<jÞ]ry<jò)�rz<}r{<(jÅX 0x4A002834r|<jÆjv<jÎjù3jÐjõjÒ}r}<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]r~<jçX 0x4A002834r<…�r€<}r�<(jÅj|<jÆjz<ubaubajÐj¢ ubj• )�r‚<}rƒ<(jÅUjÒ}r„<(jÔ]jÕ]jÖ]j×]jÚ]ujÆjf<jÞ]r…<jò)�r†<}r‡<(jÅX43rˆ<jÆj‚<jÎjù3jÐjõjÒ}r‰<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]rŠ<jçX43r‹<…�rŒ<}r�<(jÅjˆ<jÆj†<ubaubajÐj¢ ubj• )�rŽ<}r�<(jÅUjÒ}r�<(jÔ]jÕ]jÖ]j×]jÚ]ujÆjf<jÞ]r‘<jò)�r’<}r“<(jÅXEVE2_IRQ_MBX0_USER2r”<jÆjŽ<jÎjù3jÐjõjÒ}r•<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]r–<jçXEVE2_IRQ_MBX0_USER2r—<…�r˜<}r™<(jÅj”<jÆj’<ubaubajÐj¢ ubj• )�rš<}r›<(jÅUjÒ}rœ<(jÔ]jÕ]jÖ]j×]jÚ]ujÆjf<jÞ]r�<jò)�rž<}rŸ<(jÅX EVE2_MAILBOX0r <jÆjš<jÎjù3jÐjõjÒ}r¡<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]r¢<jçX EVE2_MAILBOX0r£<…�r¤<}r¥<(jÅj <jÆjž<ubaubajÐj¢ ubj• )�r¦<}r§<(jÅUjÒ}r¨<(jÔ]jÕ]jÖ]j×]jÚ]ujÆjf<jÞ]r©<jò)�rª<}r«<(jÅXEve2 Mailbox 0 user 2 interruptr¬<jÆj¦<jÎjù3jÐjõjÒ}r­<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]r®<jçXEve2 Mailbox 0 user 2 interruptr¯<…�r°<}r±<(jÅj¬<jÆjª<ubaubajÐj¢ ubejÐj£ ubj� )�r²<}r³<(jÅUjÒ}r´<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]rµ<(j• )�r¶<}r·<(jÅUjÒ}r¸<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²<jÞ]r¹<jò)�rº<}r»<(jÅX66r¼<jÆj¶<jÎjù3jÐjõjÒ}r½<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]r¾<jçX66r¿<…�rÀ<}rÁ<(jÅj¼<jÆjº<ubaubajÐj¢ ubj• )�rÂ<}rÃ<(jÅUjÒ}rÄ<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²<jÞ]rÅ<jò)�rÆ<}rÇ<(jÅX 0x4A002834rÈ<jÆjÂ<jÎjù3jÐjõjÒ}rÉ<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]rÊ<jçX 0x4A002834rË<…�rÌ<}rÍ<(jÅjÈ<jÆjÆ<ubaubajÐj¢ ubj• )�rÎ<}rÏ<(jÅUjÒ}rÐ<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²<jÞ]rÑ<jò)�rÒ<}rÓ<(jÅX44rÔ<jÆjÎ<jÎjù3jÐjõjÒ}rÕ<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]rÖ<jçX44r×<…�rØ<}rÙ<(jÅjÔ<jÆjÒ<ubaubajÐj¢ ubj• )�rÚ<}rÛ<(jÅUjÒ}rÜ<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²<jÞ]rÝ<jò)�rÞ<}rß<(jÅXMAILBOX5_IRQ_USER1rà<jÆjÚ<jÎjù3jÐjõjÒ}rá<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]râ<jçXMAILBOX5_IRQ_USER1rã<…�rä<}rå<(jÅjà<jÆjÞ<ubaubajÐj¢ ubj• )�ræ<}rç<(jÅUjÒ}rè<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²<jÞ]ré<jò)�rê<}rë<(jÅXMAILBOX5rì<jÆjæ<jÎjù3jÐjõjÒ}rí<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]rî<jçXMAILBOX5rï<…�rð<}rñ<(jÅjì<jÆjê<ubaubajÐj¢ ubj• )�rò<}ró<(jÅUjÒ}rô<(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²<jÞ]rõ<jò)�rö<}r÷<(jÅXMailbox 5 user 1 interruptrø<jÆjò<jÎjù3jÐjõjÒ}rù<(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]rú<jçXMailbox 5 user 1 interruptrû<…�rü<}rý<(jÅjø<jÆjö<ubaubajÐj¢ ubejÐj£ ubj� )�rþ<}rÿ<(jÅUjÒ}r=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r=(j• )�r=}r=(jÅUjÒ}r=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ<jÞ]r=jò)�r=}r=(jÅX67r=jÆj=jÎjù3jÐjõjÒ}r =(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]r =jçX67r =…�r =}r =(jÅj=jÆj=ubaubajÐj¢ ubj• )�r=}r=(jÅUjÒ}r=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ<jÞ]r=jò)�r=}r=(jÅX 0x4A002838r=jÆj=jÎjù3jÐjõjÒ}r=(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]r=jçX 0x4A002838r=…�r=}r=(jÅj=jÆj=ubaubajÐj¢ ubj• )�r=}r=(jÅUjÒ}r=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ<jÞ]r=jò)�r=}r=(jÅX45r =jÆj=jÎjù3jÐjõjÒ}r!=(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]r"=jçX45r#=…�r$=}r%=(jÅj =jÆj=ubaubajÐj¢ ubj• )�r&=}r'=(jÅUjÒ}r(=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ<jÞ]r)=jò)�r*=}r+=(jÅXEVE3_IRQ_MBX0_USER2r,=jÆj&=jÎjù3jÐjõjÒ}r-=(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]r.=jçXEVE3_IRQ_MBX0_USER2r/=…�r0=}r1=(jÅj,=jÆj*=ubaubajÐj¢ ubj• )�r2=}r3=(jÅUjÒ}r4=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ<jÞ]r5=jò)�r6=}r7=(jÅX EVE3_MAILBOX0r8=jÆj2=jÎjù3jÐjõjÒ}r9=(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]r:=jçX EVE3_MAILBOX0r;=…�r<=}r==(jÅj8=jÆj6=ubaubajÐj¢ ubj• )�r>=}r?=(jÅUjÒ}r@=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ<jÞ]rA=jò)�rB=}rC=(jÅX Eve 3 Mailbox 0 user 2 interruptrD=jÆj>=jÎjù3jÐjõjÒ}rE=(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]rF=jçX Eve 3 Mailbox 0 user 2 interruptrG=…�rH=}rI=(jÅjD=jÆjB=ubaubajÐj¢ ubejÐj£ ubj� )�rJ=}rK=(jÅUjÒ}rL=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]rM=(j• )�rN=}rO=(jÅUjÒ}rP=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ=jÞ]rQ=jò)�rR=}rS=(jÅX68rT=jÆjN=jÎjù3jÐjõjÒ}rU=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]rV=jçX68rW=…�rX=}rY=(jÅjT=jÆjR=ubaubajÐj¢ ubj• )�rZ=}r[=(jÅUjÒ}r\=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ=jÞ]r]=jò)�r^=}r_=(jÅX 0x4A002838r`=jÆjZ=jÎjù3jÐjõjÒ}ra=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]rb=jçX 0x4A002838rc=…�rd=}re=(jÅj`=jÆj^=ubaubajÐj¢ ubj• )�rf=}rg=(jÅUjÒ}rh=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ=jÞ]ri=jò)�rj=}rk=(jÅX46rl=jÆjf=jÎjù3jÐjõjÒ}rm=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]rn=jçX46ro=…�rp=}rq=(jÅjl=jÆjj=ubaubajÐj¢ ubj• )�rr=}rs=(jÅUjÒ}rt=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ=jÞ]ru=jò)�rv=}rw=(jÅXEVE4_IRQ_MBX0_USER2rx=jÆjr=jÎjù3jÐjõjÒ}ry=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]rz=jçXEVE4_IRQ_MBX0_USER2r{=…�r|=}r}=(jÅjx=jÆjv=ubaubajÐj¢ ubj• )�r~=}r=(jÅUjÒ}r€=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ=jÞ]r�=jò)�r‚=}rƒ=(jÅX EVE4_MAILBOX0r„=jÆj~=jÎjù3jÐjõjÒ}r…=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]r†=jçX EVE4_MAILBOX0r‡=…�rˆ=}r‰=(jÅj„=jÆj‚=ubaubajÐj¢ ubj• )�rŠ=}r‹=(jÅUjÒ}rŒ=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ=jÞ]r�=jò)�rŽ=}r�=(jÅXEve4 Mailbox 0 user 2 interruptr�=jÆjŠ=jÎjù3jÐjõjÒ}r‘=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]r’=jçXEve4 Mailbox 0 user 2 interruptr“=…�r”=}r•=(jÅj�=jÆjŽ=ubaubajÐj¢ ubejÐj£ ubj� )�r–=}r—=(jÅUjÒ}r˜=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r™=(j• )�rš=}r›=(jÅUjÒ}rœ=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–=jÞ]r�=jò)�rž=}rŸ=(jÅX69r =jÆjš=jÎjù3jÐjõjÒ}r¡=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]r¢=jçX69r£=…�r¤=}r¥=(jÅj =jÆjž=ubaubajÐj¢ ubj• )�r¦=}r§=(jÅUjÒ}r¨=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–=jÞ]r©=jò)�rª=}r«=(jÅX 0x4A00283Cr¬=jÆj¦=jÎjù3jÐjõjÒ}r­=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]r®=jçX 0x4A00283Cr¯=…�r°=}r±=(jÅj¬=jÆjª=ubaubajÐj¢ ubj• )�r²=}r³=(jÅUjÒ}r´=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–=jÞ]rµ=jò)�r¶=}r·=(jÅX47r¸=jÆj²=jÎjù3jÐjõjÒ}r¹=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]rº=jçX47r»=…�r¼=}r½=(jÅj¸=jÆj¶=ubaubajÐj¢ ubj• )�r¾=}r¿=(jÅUjÒ}rÀ=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–=jÞ]rÁ=jò)�rÂ=}rÃ=(jÅXMAILBOX7_IRQ_USER2rÄ=jÆj¾=jÎjù3jÐjõjÒ}rÅ=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]rÆ=jçXMAILBOX7_IRQ_USER2rÇ=…�rÈ=}rÉ=(jÅjÄ=jÆjÂ=ubaubajÐj¢ ubj• )�rÊ=}rË=(jÅUjÒ}rÌ=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–=jÞ]rÍ=jò)�rÎ=}rÏ=(jÅXMAILBOX7rÐ=jÆjÊ=jÎjù3jÐjõjÒ}rÑ=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]rÒ=jçXMAILBOX7rÓ=…�rÔ=}rÕ=(jÅjÐ=jÆjÎ=ubaubajÐj¢ ubj• )�rÖ=}r×=(jÅUjÒ}rØ=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–=jÞ]rÙ=jò)�rÚ=}rÛ=(jÅXMailbox 7 user 2 interruptrÜ=jÆjÖ=jÎjù3jÐjõjÒ}rÝ=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]rÞ=jçXMailbox 7 user 2 interruptrß=…�rà=}rá=(jÅjÜ=jÆjÚ=ubaubajÐj¢ ubejÐj£ ubj� )�râ=}rã=(jÅUjÒ}rä=(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]rå=(j• )�ræ=}rç=(jÅUjÒ}rè=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ=jÞ]ré=jò)�rê=}rë=(jÅX70rì=jÆjæ=jÎjù3jÐjõjÒ}rí=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]rî=jçX70rï=…�rð=}rñ=(jÅjì=jÆjê=ubaubajÐj¢ ubj• )�rò=}ró=(jÅUjÒ}rô=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ=jÞ]rõ=jò)�rö=}r÷=(jÅX 0x4A00283Crø=jÆjò=jÎjù3jÐjõjÒ}rù=(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]rú=jçX 0x4A00283Crû=…�rü=}rý=(jÅjø=jÆjö=ubaubajÐj¢ ubj• )�rþ=}rÿ=(jÅUjÒ}r>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ=jÞ]r>jò)�r>}r>(jÅX48r>jÆjþ=jÎjù3jÐjõjÒ}r>(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]r>jçX48r>…�r>}r >(jÅj>jÆj>ubaubajÐj¢ ubj• )�r >}r >(jÅUjÒ}r >(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ=jÞ]r >jò)�r>}r>(jÅXMAILBOX8_IRQ_USER2r>jÆj >jÎjù3jÐjõjÒ}r>(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]r>jçXMAILBOX8_IRQ_USER2r>…�r>}r>(jÅj>jÆj>ubaubajÐj¢ ubj• )�r>}r>(jÅUjÒ}r>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ=jÞ]r>jò)�r>}r>(jÅXMAILBOX8r>jÆj>jÎjù3jÐjõjÒ}r>(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]r>jçXMAILBOX8r>…�r >}r!>(jÅj>jÆj>ubaubajÐj¢ ubj• )�r">}r#>(jÅUjÒ}r$>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ=jÞ]r%>jò)�r&>}r'>(jÅXMailbox 8 user 2 interruptr(>jÆj">jÎjù3jÐjõjÒ}r)>(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]r*>jçXMailbox 8 user 2 interruptr+>…�r,>}r->(jÅj(>jÆj&>ubaubajÐj¢ ubejÐj£ ubj� )�r.>}r/>(jÅUjÒ}r0>(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r1>(j• )�r2>}r3>(jÅUjÒ}r4>(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.>jÞ]r5>jò)�r6>}r7>(jÅX71r8>jÆj2>jÎjù3jÐjõjÒ}r9>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]r:>jçX71r;>…�r<>}r=>(jÅj8>jÆj6>ubaubajÐj¢ ubj• )�r>>}r?>(jÅUjÒ}r@>(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.>jÞ]rA>jò)�rB>}rC>(jÅX 0x4A002840rD>jÆj>>jÎjù3jÐjõjÒ}rE>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]rF>jçX 0x4A002840rG>…�rH>}rI>(jÅjD>jÆjB>ubaubajÐj¢ ubj• )�rJ>}rK>(jÅUjÒ}rL>(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.>jÞ]rM>jò)�rN>}rO>(jÅX49rP>jÆjJ>jÎjù3jÐjõjÒ}rQ>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]rR>jçX49rS>…�rT>}rU>(jÅjP>jÆjN>ubaubajÐj¢ ubj• )�rV>}rW>(jÅUjÒ}rX>(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.>jÞ]rY>jò)�rZ>}r[>(jÅXEVE1_IRQ_MBX1_USER3r\>jÆjV>jÎjù3jÐjõjÒ}r]>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]r^>jçXEVE1_IRQ_MBX1_USER3r_>…�r`>}ra>(jÅj\>jÆjZ>ubaubajÐj¢ ubj• )�rb>}rc>(jÅUjÒ}rd>(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.>jÞ]re>jò)�rf>}rg>(jÅX EVE1_MAILBOX1rh>jÆjb>jÎjù3jÐjõjÒ}ri>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]rj>jçX EVE1_MAILBOX1rk>…�rl>}rm>(jÅjh>jÆjf>ubaubajÐj¢ ubj• )�rn>}ro>(jÅUjÒ}rp>(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.>jÞ]rq>jò)�rr>}rs>(jÅXEve1 Mailbox 1 user 3 interruptrt>jÆjn>jÎjù3jÐjõjÒ}ru>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]rv>jçXEve1 Mailbox 1 user 3 interruptrw>…�rx>}ry>(jÅjt>jÆjr>ubaubajÐj¢ ubejÐj£ ubj� )�rz>}r{>(jÅUjÒ}r|>(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r}>(j• )�r~>}r>(jÅUjÒ}r€>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz>jÞ]r�>jò)�r‚>}rƒ>(jÅX72r„>jÆj~>jÎjù3jÐjõjÒ}r…>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÞ]r†>jçX72r‡>…�rˆ>}r‰>(jÅj„>jÆj‚>ubaubajÐj¢ ubj• )�rŠ>}r‹>(jÅUjÒ}rŒ>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz>jÞ]r�>jò)�rŽ>}r�>(jÅX 0x4A002840r�>jÆjŠ>jÎjù3jÐjõjÒ}r‘>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÞ]r’>jçX 0x4A002840r“>…�r”>}r•>(jÅj�>jÆjŽ>ubaubajÐj¢ ubj• )�r–>}r—>(jÅUjÒ}r˜>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz>jÞ]r™>jò)�rš>}r›>(jÅX50rœ>jÆj–>jÎjù3jÐjõjÒ}r�>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÞ]rž>jçX50rŸ>…�r >}r¡>(jÅjœ>jÆjš>ubaubajÐj¢ ubj• )�r¢>}r£>(jÅUjÒ}r¤>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz>jÞ]r¥>jò)�r¦>}r§>(jÅXEVE2_IRQ_MBX1_USER3r¨>jÆj¢>jÎjù3jÐjõjÒ}r©>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÞ]rª>jçXEVE2_IRQ_MBX1_USER3r«>…�r¬>}r­>(jÅj¨>jÆj¦>ubaubajÐj¢ ubj• )�r®>}r¯>(jÅUjÒ}r°>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz>jÞ]r±>jò)�r²>}r³>(jÅX EVE2_MAILBOX1r´>jÆj®>jÎjù3jÐjõjÒ}rµ>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÞ]r¶>jçX EVE2_MAILBOX1r·>…�r¸>}r¹>(jÅj´>jÆj²>ubaubajÐj¢ ubj• )�rº>}r»>(jÅUjÒ}r¼>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjz>jÞ]r½>jò)�r¾>}r¿>(jÅXEve2 Mailbox 1 user 3 interruptrÀ>jÆjº>jÎjù3jÐjõjÒ}rÁ>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÞ]rÂ>jçXEve2 Mailbox 1 user 3 interruptrÃ>…�rÄ>}rÅ>(jÅjÀ>jÆj¾>ubaubajÐj¢ ubejÐj£ ubj� )�rÆ>}rÇ>(jÅUjÒ}rÈ>(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]rÉ>(j• )�rÊ>}rË>(jÅUjÒ}rÌ>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ>jÞ]rÍ>jò)�rÎ>}rÏ>(jÅX73rÐ>jÆjÊ>jÎjù3jÐjõjÒ}rÑ>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÞ]rÒ>jçX73rÓ>…�rÔ>}rÕ>(jÅjÐ>jÆjÎ>ubaubajÐj¢ ubj• )�rÖ>}r×>(jÅUjÒ}rØ>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ>jÞ]rÙ>jò)�rÚ>}rÛ>(jÅX 0x4A002844rÜ>jÆjÖ>jÎjù3jÐjõjÒ}rÝ>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÞ]rÞ>jçX 0x4A002844rß>…�rà>}rá>(jÅjÜ>jÆjÚ>ubaubajÐj¢ ubj• )�râ>}rã>(jÅUjÒ}rä>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ>jÞ]rå>jò)�ræ>}rç>(jÅX51rè>jÆjâ>jÎjù3jÐjõjÒ}ré>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÞ]rê>jçX51rë>…�rì>}rí>(jÅjè>jÆjæ>ubaubajÐj¢ ubj• )�rî>}rï>(jÅUjÒ}rð>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ>jÞ]rñ>jò)�rò>}ró>(jÅXMAILBOX5_IRQ_USER3rô>jÆjî>jÎjù3jÐjõjÒ}rõ>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÞ]rö>jçXMAILBOX5_IRQ_USER3r÷>…�rø>}rù>(jÅjô>jÆjò>ubaubajÐj¢ ubj• )�rú>}rû>(jÅUjÒ}rü>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ>jÞ]rý>jò)�rþ>}rÿ>(jÅXMAILBOX5r?jÆjú>jÎjù3jÐjõjÒ}r?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÞ]r?jçXMAILBOX5r?…�r?}r?(jÅj?jÆjþ>ubaubajÐj¢ ubj• )�r?}r?(jÅUjÒ}r?(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆ>jÞ]r ?jò)�r ?}r ?(jÅXMailbox 5 user 3 interruptr ?jÆj?jÎjù3jÐjõjÒ}r ?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÞ]r?jçXMailbox 5 user 3 interruptr?…�r?}r?(jÅj ?jÆj ?ubaubajÐj¢ ubejÐj£ ubj� )�r?}r?(jÅUjÒ}r?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r?(j• )�r?}r?(jÅUjÒ}r?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?jÞ]r?jò)�r?}r?(jÅX74r?jÆj?jÎjù3jÐjõjÒ}r?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÞ]r?jçX74r?…�r ?}r!?(jÅj?jÆj?ubaubajÐj¢ ubj• )�r"?}r#?(jÅUjÒ}r$?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?jÞ]r%?jò)�r&?}r'?(jÅX 0x4A002844r(?jÆj"?jÎjù3jÐjõjÒ}r)?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÞ]r*?jçX 0x4A002844r+?…�r,?}r-?(jÅj(?jÆj&?ubaubajÐj¢ ubj• )�r.?}r/?(jÅUjÒ}r0?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?jÞ]r1?jò)�r2?}r3?(jÅX52r4?jÆj.?jÎjù3jÐjõjÒ}r5?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÞ]r6?jçX52r7?…�r8?}r9?(jÅj4?jÆj2?ubaubajÐj¢ ubj• )�r:?}r;?(jÅUjÒ}r?}r??(jÅXEVE3_IRQ_MBX1_USER3r@?jÆj:?jÎjù3jÐjõjÒ}rA?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÞ]rB?jçXEVE3_IRQ_MBX1_USER3rC?…�rD?}rE?(jÅj@?jÆj>?ubaubajÐj¢ ubj• )�rF?}rG?(jÅUjÒ}rH?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?jÞ]rI?jò)�rJ?}rK?(jÅX EVE3_MAILBOX1rL?jÆjF?jÎjù3jÐjõjÒ}rM?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÞ]rN?jçX EVE3_MAILBOX1rO?…�rP?}rQ?(jÅjL?jÆjJ?ubaubajÐj¢ ubj• )�rR?}rS?(jÅUjÒ}rT?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?jÞ]rU?jò)�rV?}rW?(jÅX Eve 3 Mailbox 1 user 3 interruptrX?jÆjR?jÎjù3jÐjõjÒ}rY?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÞ]rZ?jçX Eve 3 Mailbox 1 user 3 interruptr[?…�r\?}r]?(jÅjX?jÆjV?ubaubajÐj¢ ubejÐj£ ubj� )�r^?}r_?(jÅUjÒ}r`?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]ra?(j• )�rb?}rc?(jÅUjÒ}rd?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj^?jÞ]re?jò)�rf?}rg?(jÅX75rh?jÆjb?jÎjù3jÐjõjÒ}ri?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]rj?jçX75rk?…�rl?}rm?(jÅjh?jÆjf?ubaubajÐj¢ ubj• )�rn?}ro?(jÅUjÒ}rp?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj^?jÞ]rq?jò)�rr?}rs?(jÅX 0x4A002848rt?jÆjn?jÎjù3jÐjõjÒ}ru?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]rv?jçX 0x4A002848rw?…�rx?}ry?(jÅjt?jÆjr?ubaubajÐj¢ ubj• )�rz?}r{?(jÅUjÒ}r|?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj^?jÞ]r}?jò)�r~?}r?(jÅX53r€?jÆjz?jÎjù3jÐjõjÒ}r�?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]r‚?jçX53rƒ?…�r„?}r…?(jÅj€?jÆj~?ubaubajÐj¢ ubj• )�r†?}r‡?(jÅUjÒ}rˆ?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj^?jÞ]r‰?jò)�rŠ?}r‹?(jÅXEVE4_IRQ_MBX1_USER3rŒ?jÆj†?jÎjù3jÐjõjÒ}r�?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]rŽ?jçXEVE4_IRQ_MBX1_USER3r�?…�r�?}r‘?(jÅjŒ?jÆjŠ?ubaubajÐj¢ ubj• )�r’?}r“?(jÅUjÒ}r”?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj^?jÞ]r•?jò)�r–?}r—?(jÅX EVE4_MAILBOX1r˜?jÆj’?jÎjù3jÐjõjÒ}r™?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]rš?jçX EVE4_MAILBOX1r›?…�rœ?}r�?(jÅj˜?jÆj–?ubaubajÐj¢ ubj• )�rž?}rŸ?(jÅUjÒ}r ?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj^?jÞ]r¡?jò)�r¢?}r£?(jÅXEve4 Mailbox 1 user 3 interruptr¤?jÆjž?jÎjù3jÐjõjÒ}r¥?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]r¦?jçXEve4 Mailbox 1 user 3 interruptr§?…�r¨?}r©?(jÅj¤?jÆj¢?ubaubajÐj¢ ubejÐj£ ubj� )�rª?}r«?(jÅUjÒ}r¬?(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]r­?(j• )�r®?}r¯?(jÅUjÒ}r°?(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª?jÞ]r±?jò)�r²?}r³?(jÅX76r´?jÆj®?jÎjù3jÐjõjÒ}rµ?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]r¶?jçX76r·?…�r¸?}r¹?(jÅj´?jÆj²?ubaubajÐj¢ ubj• )�rº?}r»?(jÅUjÒ}r¼?(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª?jÞ]r½?jò)�r¾?}r¿?(jÅX 0x4A002848rÀ?jÆjº?jÎjù3jÐjõjÒ}rÁ?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]rÂ?jçX 0x4A002848rÃ?…�rÄ?}rÅ?(jÅjÀ?jÆj¾?ubaubajÐj¢ ubj• )�rÆ?}rÇ?(jÅUjÒ}rÈ?(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª?jÞ]rÉ?jò)�rÊ?}rË?(jÅX54rÌ?jÆjÆ?jÎjù3jÐjõjÒ}rÍ?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]rÎ?jçX54rÏ?…�rÐ?}rÑ?(jÅjÌ?jÆjÊ?ubaubajÐj¢ ubj• )�rÒ?}rÓ?(jÅUjÒ}rÔ?(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª?jÞ]rÕ?jò)�rÖ?}r×?(jÅXMAILBOX8_IRQ_USER2rØ?jÆjÒ?jÎjù3jÐjõjÒ}rÙ?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]rÚ?jçXMAILBOX8_IRQ_USER2rÛ?…�rÜ?}rÝ?(jÅjØ?jÆjÖ?ubaubajÐj¢ ubj• )�rÞ?}rß?(jÅUjÒ}rà?(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª?jÞ]rá?jò)�râ?}rã?(jÅXMAILBOX8rä?jÆjÞ?jÎjù3jÐjõjÒ}rå?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]ræ?jçXMAILBOX8rç?…�rè?}ré?(jÅjä?jÆjâ?ubaubajÐj¢ ubj• )�rê?}rë?(jÅUjÒ}rì?(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª?jÞ]rí?jò)�rî?}rï?(jÅXMailbox 8 user 2 interruptrð?jÆjê?jÎjù3jÐjõjÒ}rñ?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]rò?jçXMailbox 8 user 2 interruptró?…�rô?}rõ?(jÅjð?jÆjî?ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjc)�rö?}r÷?(jÅUjÆj+4jÎjù3jÐjfjÒ}rø?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÝhjÞ]rù?ji)�rú?}rû?(jÅUjlKjÆjö?jÎjù3jÐjÜjÒ}rü?(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rý?}rþ?(jÅX**IPU2 Interrupt Mapping**rÿ?jÆj+4jÎjù3jÐjõjÒ}r@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÝhjÞ]r@jÚ)�r@}r@(jÅjÿ?jÒ}r@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjý?jÞ]r@jçXIPU2 Interrupt Mappingr@…�r@}r@(jÅUjÆj@ubajÐjâubaubjy )�r @}r @(jÅUjÆj+4jÎjù3jÐjÔ jÒ}r @(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r @j~ )�r @}r@(jÅUjÒ}r@(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj @jÞ]r@(jƒ )�r@}r@(jÅUjÒ}r@(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj @jÞ]jÐj‡ ubjƒ )�r@}r@(jÅUjÒ}r@(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj @jÞ]jÐj‡ ubjƒ )�r@}r@(jÅUjÒ}r@(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj @jÞ]jÐj‡ ubjƒ )�r@}r@(jÅUjÒ}r@(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj @jÞ]jÐj‡ ubjƒ )�r@}r@(jÅUjÒ}r@(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj @jÞ]jÐj‡ ubjƒ )�r @}r!@(jÅUjÒ}r"@(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK$ujÆj @jÞ]jÐj‡ ubj‹ )�r#@}r$@(jÅUjÒ}r%@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj @jÞ]r&@j� )�r'@}r(@(jÅUjÒ}r)@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#@jÞ]r*@(j• )�r+@}r,@(jÅUjÒ}r-@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'@jÞ]r.@jò)�r/@}r0@(jÅXIndexr1@jÆj+@jÎjù3jÐjõjÒ}r2@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÞ]r3@jçXIndexr4@…�r5@}r6@(jÅj1@jÆj/@ubaubajÐj¢ ubj• )�r7@}r8@(jÅUjÒ}r9@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'@jÞ]r:@jò)�r;@}r<@(jÅXAddrr=@jÆj7@jÎjù3jÐjõjÒ}r>@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÞ]r?@jçXAddrr@@…�rA@}rB@(jÅj=@jÆj;@ubaubajÐj¢ ubj• )�rC@}rD@(jÅUjÒ}rE@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'@jÞ]rF@jò)�rG@}rH@(jÅXValuerI@jÆjC@jÎjù3jÐjõjÒ}rJ@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÞ]rK@jçXValuerL@…�rM@}rN@(jÅjI@jÆjG@ubaubajÐj¢ ubj• )�rO@}rP@(jÅUjÒ}rQ@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'@jÞ]rR@jò)�rS@}rT@(jÅXNamerU@jÆjO@jÎjù3jÐjõjÒ}rV@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÞ]rW@jçXNamerX@…�rY@}rZ@(jÅjU@jÆjS@ubaubajÐj¢ ubj• )�r[@}r\@(jÅUjÒ}r]@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'@jÞ]r^@jò)�r_@}r`@(jÅXSourcera@jÆj[@jÎjù3jÐjõjÒ}rb@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÞ]rc@jçXSourcerd@…�re@}rf@(jÅja@jÆj_@ubaubajÐj¢ ubj• )�rg@}rh@(jÅUjÒ}ri@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'@jÞ]rj@jò)�rk@}rl@(jÅX Descriptionrm@jÆjg@jÎjù3jÐjõjÒ}rn@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÞ]ro@jçX Descriptionrp@…�rq@}rr@(jÅjm@jÆjk@ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rs@}rt@(jÅUjÒ}ru@(jÔ]jÕ]jÖ]j×]jÚ]ujÆj @jÞ]rv@(j� )�rw@}rx@(jÅUjÒ}ry@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]rz@(j• )�r{@}r|@(jÅUjÒ}r}@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjw@jÞ]r~@jò)�r@}r€@(jÅX64r�@jÆj{@jÎjù3jÐjõjÒ}r‚@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKvjÞ]rƒ@jçX64r„@…�r…@}r†@(jÅj�@jÆj@ubaubajÐj¢ ubj• )�r‡@}rˆ@(jÅUjÒ}r‰@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjw@jÞ]rŠ@jò)�r‹@}rŒ@(jÅX 0x4A0028A4r�@jÆj‡@jÎjù3jÐjõjÒ}rŽ@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKvjÞ]r�@jçX 0x4A0028A4r�@…�r‘@}r’@(jÅj�@jÆj‹@ubaubajÐj¢ ubj• )�r“@}r”@(jÅUjÒ}r•@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjw@jÞ]r–@jò)�r—@}r˜@(jÅX42r™@jÆj“@jÎjù3jÐjõjÒ}rš@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKvjÞ]r›@jçX42rœ@…�r�@}rž@(jÅj™@jÆj—@ubaubajÐj¢ ubj• )�rŸ@}r @(jÅUjÒ}r¡@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjw@jÞ]r¢@jò)�r£@}r¤@(jÅXEVE1_IRQ_MBX1_USER2r¥@jÆjŸ@jÎjù3jÐjõjÒ}r¦@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKvjÞ]r§@jçXEVE1_IRQ_MBX1_USER2r¨@…�r©@}rª@(jÅj¥@jÆj£@ubaubajÐj¢ ubj• )�r«@}r¬@(jÅUjÒ}r­@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjw@jÞ]r®@jò)�r¯@}r°@(jÅX EVE1_MAILBOX1r±@jÆj«@jÎjù3jÐjõjÒ}r²@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKvjÞ]r³@jçX EVE1_MAILBOX1r´@…�rµ@}r¶@(jÅj±@jÆj¯@ubaubajÐj¢ ubj• )�r·@}r¸@(jÅUjÒ}r¹@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjw@jÞ]rº@jò)�r»@}r¼@(jÅXEve1 Mailbox 1 user 2 interruptr½@jÆj·@jÎjù3jÐjõjÒ}r¾@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKvjÞ]r¿@jçXEve1 Mailbox 1 user 2 interruptrÀ@…�rÁ@}rÂ@(jÅj½@jÆj»@ubaubajÐj¢ ubejÐj£ ubj� )�rÃ@}rÄ@(jÅUjÒ}rÅ@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]rÆ@(j• )�rÇ@}rÈ@(jÅUjÒ}rÉ@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÃ@jÞ]rÊ@jò)�rË@}rÌ@(jÅX65rÍ@jÆjÇ@jÎjù3jÐjõjÒ}rÎ@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÞ]rÏ@jçX65rÐ@…�rÑ@}rÒ@(jÅjÍ@jÆjË@ubaubajÐj¢ ubj• )�rÓ@}rÔ@(jÅUjÒ}rÕ@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÃ@jÞ]rÖ@jò)�r×@}rØ@(jÅX 0x4A0028A8rÙ@jÆjÓ@jÎjù3jÐjõjÒ}rÚ@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÞ]rÛ@jçX 0x4A0028A8rÜ@…�rÝ@}rÞ@(jÅjÙ@jÆj×@ubaubajÐj¢ ubj• )�rß@}rà@(jÅUjÒ}rá@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÃ@jÞ]râ@jò)�rã@}rä@(jÅX43rå@jÆjß@jÎjù3jÐjõjÒ}ræ@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÞ]rç@jçX43rè@…�ré@}rê@(jÅjå@jÆjã@ubaubajÐj¢ ubj• )�rë@}rì@(jÅUjÒ}rí@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÃ@jÞ]rî@jò)�rï@}rð@(jÅXEVE2_IRQ_MBX1_USER2rñ@jÆjë@jÎjù3jÐjõjÒ}rò@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÞ]ró@jçXEVE2_IRQ_MBX1_USER2rô@…�rõ@}rö@(jÅjñ@jÆjï@ubaubajÐj¢ ubj• )�r÷@}rø@(jÅUjÒ}rù@(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÃ@jÞ]rú@jò)�rû@}rü@(jÅX EVE2_MAILBOX1rý@jÆj÷@jÎjù3jÐjõjÒ}rþ@(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÞ]rÿ@jçX EVE2_MAILBOX1rA…�rA}rA(jÅjý@jÆjû@ubaubajÐj¢ ubj• )�rA}rA(jÅUjÒ}rA(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÃ@jÞ]rAjò)�rA}rA(jÅXEve2 Mailbox 1 user 2 interruptr AjÆjAjÎjù3jÐjõjÒ}r A(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÞ]r AjçXEve2 Mailbox 1 user 2 interruptr A…�r A}rA(jÅj AjÆjAubaubajÐj¢ ubejÐj£ ubj� )�rA}rA(jÅUjÒ}rA(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]rA(j• )�rA}rA(jÅUjÒ}rA(jÔ]jÕ]jÖ]j×]jÚ]ujÆjAjÞ]rAjò)�rA}rA(jÅX66rAjÆjAjÎjù3jÐjõjÒ}rA(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÞ]rAjçX66rA…�rA}rA(jÅjAjÆjAubaubajÐj¢ ubj• )�rA}r A(jÅUjÒ}r!A(jÔ]jÕ]jÖ]j×]jÚ]ujÆjAjÞ]r"Ajò)�r#A}r$A(jÅX 0x4A0028A8r%AjÆjAjÎjù3jÐjõjÒ}r&A(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÞ]r'AjçX 0x4A0028A8r(A…�r)A}r*A(jÅj%AjÆj#AubaubajÐj¢ ubj• )�r+A}r,A(jÅUjÒ}r-A(jÔ]jÕ]jÖ]j×]jÚ]ujÆjAjÞ]r.Ajò)�r/A}r0A(jÅX44r1AjÆj+AjÎjù3jÐjõjÒ}r2A(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÞ]r3AjçX44r4A…�r5A}r6A(jÅj1AjÆj/AubaubajÐj¢ ubj• )�r7A}r8A(jÅUjÒ}r9A(jÔ]jÕ]jÖ]j×]jÚ]ujÆjAjÞ]r:Ajò)�r;A}rA(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÞ]r?AjçXMAILBOX6_IRQ_USER1r@A…�rAA}rBA(jÅj=AjÆj;AubaubajÐj¢ ubj• )�rCA}rDA(jÅUjÒ}rEA(jÔ]jÕ]jÖ]j×]jÚ]ujÆjAjÞ]rFAjò)�rGA}rHA(jÅXMAILBOX6rIAjÆjCAjÎjù3jÐjõjÒ}rJA(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÞ]rKAjçXMAILBOX6rLA…�rMA}rNA(jÅjIAjÆjGAubaubajÐj¢ ubj• )�rOA}rPA(jÅUjÒ}rQA(jÔ]jÕ]jÖ]j×]jÚ]ujÆjAjÞ]rRAjò)�rSA}rTA(jÅXMailbox 6 user 1 interruptrUAjÆjOAjÎjù3jÐjõjÒ}rVA(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÞ]rWAjçXMailbox 6 user 1 interruptrXA…�rYA}rZA(jÅjUAjÆjSAubaubajÐj¢ ubejÐj£ ubj� )�r[A}r\A(jÅUjÒ}r]A(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]r^A(j• )�r_A}r`A(jÅUjÒ}raA(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[AjÞ]rbAjò)�rcA}rdA(jÅX67reAjÆj_AjÎjù3jÐjõjÒ}rfA(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÞ]rgAjçX67rhA…�riA}rjA(jÅjeAjÆjcAubaubajÐj¢ ubj• )�rkA}rlA(jÅUjÒ}rmA(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[AjÞ]rnAjò)�roA}rpA(jÅX 0x4A0028ACrqAjÆjkAjÎjù3jÐjõjÒ}rrA(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÞ]rsAjçX 0x4A0028ACrtA…�ruA}rvA(jÅjqAjÆjoAubaubajÐj¢ ubj• )�rwA}rxA(jÅUjÒ}ryA(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[AjÞ]rzAjò)�r{A}r|A(jÅX45r}AjÆjwAjÎjù3jÐjõjÒ}r~A(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÞ]rAjçX45r€A…�r�A}r‚A(jÅj}AjÆj{AubaubajÐj¢ ubj• )�rƒA}r„A(jÅUjÒ}r…A(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[AjÞ]r†Ajò)�r‡A}rˆA(jÅXEVE3_IRQ_MBX1_USER2r‰AjÆjƒAjÎjù3jÐjõjÒ}rŠA(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÞ]r‹AjçXEVE3_IRQ_MBX1_USER2rŒA…�r�A}rŽA(jÅj‰AjÆj‡AubaubajÐj¢ ubj• )�r�A}r�A(jÅUjÒ}r‘A(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[AjÞ]r’Ajò)�r“A}r”A(jÅX EVE3_MAILBOX1r•AjÆj�AjÎjù3jÐjõjÒ}r–A(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÞ]r—AjçX EVE3_MAILBOX1r˜A…�r™A}ršA(jÅj•AjÆj“AubaubajÐj¢ ubj• )�r›A}rœA(jÅUjÒ}r�A(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[AjÞ]ržAjò)�rŸA}r A(jÅX Eve 3 Mailbox 1 user 2 interruptr¡AjÆj›AjÎjù3jÐjõjÒ}r¢A(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÞ]r£AjçX Eve 3 Mailbox 1 user 2 interruptr¤A…�r¥A}r¦A(jÅj¡AjÆjŸAubaubajÐj¢ ubejÐj£ ubj� )�r§A}r¨A(jÅUjÒ}r©A(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]rªA(j• )�r«A}r¬A(jÅUjÒ}r­A(jÔ]jÕ]jÖ]j×]jÚ]ujÆj§AjÞ]r®Ajò)�r¯A}r°A(jÅX68r±AjÆj«AjÎjù3jÐjõjÒ}r²A(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÞ]r³AjçX68r´A…�rµA}r¶A(jÅj±AjÆj¯AubaubajÐj¢ ubj• )�r·A}r¸A(jÅUjÒ}r¹A(jÔ]jÕ]jÖ]j×]jÚ]ujÆj§AjÞ]rºAjò)�r»A}r¼A(jÅX 0x4A0028ACr½AjÆj·AjÎjù3jÐjõjÒ}r¾A(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÞ]r¿AjçX 0x4A0028ACrÀA…�rÁA}rÂA(jÅj½AjÆj»AubaubajÐj¢ ubj• )�rÃA}rÄA(jÅUjÒ}rÅA(jÔ]jÕ]jÖ]j×]jÚ]ujÆj§AjÞ]rÆAjò)�rÇA}rÈA(jÅX46rÉAjÆjÃAjÎjù3jÐjõjÒ}rÊA(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÞ]rËAjçX46rÌA…�rÍA}rÎA(jÅjÉAjÆjÇAubaubajÐj¢ ubj• )�rÏA}rÐA(jÅUjÒ}rÑA(jÔ]jÕ]jÖ]j×]jÚ]ujÆj§AjÞ]rÒAjò)�rÓA}rÔA(jÅXEVE4_IRQ_MBX1_USER2rÕAjÆjÏAjÎjù3jÐjõjÒ}rÖA(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÞ]r×AjçXEVE4_IRQ_MBX1_USER2rØA…�rÙA}rÚA(jÅjÕAjÆjÓAubaubajÐj¢ ubj• )�rÛA}rÜA(jÅUjÒ}rÝA(jÔ]jÕ]jÖ]j×]jÚ]ujÆj§AjÞ]rÞAjò)�rßA}ràA(jÅX EVE4_MAILBOX1ráAjÆjÛAjÎjù3jÐjõjÒ}râA(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÞ]rãAjçX EVE4_MAILBOX1räA…�råA}ræA(jÅjáAjÆjßAubaubajÐj¢ ubj• )�rçA}rèA(jÅUjÒ}réA(jÔ]jÕ]jÖ]j×]jÚ]ujÆj§AjÞ]rêAjò)�rëA}rìA(jÅXEve4 Mailbox 1 user 2 interruptríAjÆjçAjÎjù3jÐjõjÒ}rîA(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÞ]rïAjçXEve4 Mailbox 1 user 2 interruptrðA…�rñA}ròA(jÅjíAjÆjëAubaubajÐj¢ ubejÐj£ ubj� )�róA}rôA(jÅUjÒ}rõA(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]röA(j• )�r÷A}røA(jÅUjÒ}rùA(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóAjÞ]rúAjò)�rûA}rüA(jÅX69rýAjÆj÷AjÎjù3jÐjõjÒ}rþA(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÞ]rÿAjçX69rB…�rB}rB(jÅjýAjÆjûAubaubajÐj¢ ubj• )�rB}rB(jÅUjÒ}rB(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóAjÞ]rBjò)�rB}rB(jÅX 0x4A0028B0r BjÆjBjÎjù3jÐjõjÒ}r B(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÞ]r BjçX 0x4A0028B0r B…�r B}rB(jÅj BjÆjBubaubajÐj¢ ubj• )�rB}rB(jÅUjÒ}rB(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóAjÞ]rBjò)�rB}rB(jÅX47rBjÆjBjÎjù3jÐjõjÒ}rB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÞ]rBjçX47rB…�rB}rB(jÅjBjÆjBubaubajÐj¢ ubj• )�rB}rB(jÅUjÒ}rB(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóAjÞ]rBjò)�rB}r B(jÅXMAILBOX7_IRQ_USER3r!BjÆjBjÎjù3jÐjõjÒ}r"B(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÞ]r#BjçXMAILBOX7_IRQ_USER3r$B…�r%B}r&B(jÅj!BjÆjBubaubajÐj¢ ubj• )�r'B}r(B(jÅUjÒ}r)B(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóAjÞ]r*Bjò)�r+B}r,B(jÅXMAILBOX7r-BjÆj'BjÎjù3jÐjõjÒ}r.B(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÞ]r/BjçXMAILBOX7r0B…�r1B}r2B(jÅj-BjÆj+BubaubajÐj¢ ubj• )�r3B}r4B(jÅUjÒ}r5B(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóAjÞ]r6Bjò)�r7B}r8B(jÅXMailbox 7 user 3 interruptr9BjÆj3BjÎjù3jÐjõjÒ}r:B(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÞ]r;BjçXMailbox 7 user 3 interruptrB(jÅj9BjÆj7BubaubajÐj¢ ubejÐj£ ubj� )�r?B}r@B(jÅUjÒ}rAB(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]rBB(j• )�rCB}rDB(jÅUjÒ}rEB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?BjÞ]rFBjò)�rGB}rHB(jÅX70rIBjÆjCBjÎjù3jÐjõjÒ}rJB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‚jÞ]rKBjçX70rLB…�rMB}rNB(jÅjIBjÆjGBubaubajÐj¢ ubj• )�rOB}rPB(jÅUjÒ}rQB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?BjÞ]rRBjò)�rSB}rTB(jÅX 0x4A0028B0rUBjÆjOBjÎjù3jÐjõjÒ}rVB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‚jÞ]rWBjçX 0x4A0028B0rXB…�rYB}rZB(jÅjUBjÆjSBubaubajÐj¢ ubj• )�r[B}r\B(jÅUjÒ}r]B(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?BjÞ]r^Bjò)�r_B}r`B(jÅX48raBjÆj[BjÎjù3jÐjõjÒ}rbB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‚jÞ]rcBjçX48rdB…�reB}rfB(jÅjaBjÆj_BubaubajÐj¢ ubj• )�rgB}rhB(jÅUjÒ}riB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?BjÞ]rjBjò)�rkB}rlB(jÅXMAILBOX8_IRQ_USER3rmBjÆjgBjÎjù3jÐjõjÒ}rnB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‚jÞ]roBjçXMAILBOX8_IRQ_USER3rpB…�rqB}rrB(jÅjmBjÆjkBubaubajÐj¢ ubj• )�rsB}rtB(jÅUjÒ}ruB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?BjÞ]rvBjò)�rwB}rxB(jÅXMAILBOX8ryBjÆjsBjÎjù3jÐjõjÒ}rzB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‚jÞ]r{BjçXMAILBOX8r|B…�r}B}r~B(jÅjyBjÆjwBubaubajÐj¢ ubj• )�rB}r€B(jÅUjÒ}r�B(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?BjÞ]r‚Bjò)�rƒB}r„B(jÅXMailbox 8 user 3 interruptr…BjÆjBjÎjù3jÐjõjÒ}r†B(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‚jÞ]r‡BjçXMailbox 8 user 3 interruptrˆB…�r‰B}rŠB(jÅj…BjÆjƒBubaubajÐj¢ ubejÐj£ ubj� )�r‹B}rŒB(jÅUjÒ}r�B(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]rŽB(j• )�r�B}r�B(jÅUjÒ}r‘B(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹BjÞ]r’Bjò)�r“B}r”B(jÅX71r•BjÆj�BjÎjù3jÐjõjÒ}r–B(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]r—BjçX71r˜B…�r™B}ršB(jÅj•BjÆj“BubaubajÐj¢ ubj• )�r›B}rœB(jÅUjÒ}r�B(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹BjÞ]ržBjò)�rŸB}r B(jÅX 0x4A0028B4r¡BjÆj›BjÎjù3jÐjõjÒ}r¢B(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]r£BjçX 0x4A0028B4r¤B…�r¥B}r¦B(jÅj¡BjÆjŸBubaubajÐj¢ ubj• )�r§B}r¨B(jÅUjÒ}r©B(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹BjÞ]rªBjò)�r«B}r¬B(jÅX49r­BjÆj§BjÎjù3jÐjõjÒ}r®B(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]r¯BjçX49r°B…�r±B}r²B(jÅj­BjÆj«BubaubajÐj¢ ubj• )�r³B}r´B(jÅUjÒ}rµB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹BjÞ]r¶Bjò)�r·B}r¸B(jÅXEVE1_IRQ_MBX1_USER3r¹BjÆj³BjÎjù3jÐjõjÒ}rºB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]r»BjçXEVE1_IRQ_MBX1_USER3r¼B…�r½B}r¾B(jÅj¹BjÆj·BubaubajÐj¢ ubj• )�r¿B}rÀB(jÅUjÒ}rÁB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹BjÞ]rÂBjò)�rÃB}rÄB(jÅX EVE1_MAILBOX1rÅBjÆj¿BjÎjù3jÐjõjÒ}rÆB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]rÇBjçX EVE1_MAILBOX1rÈB…�rÉB}rÊB(jÅjÅBjÆjÃBubaubajÐj¢ ubj• )�rËB}rÌB(jÅUjÒ}rÍB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹BjÞ]rÎBjò)�rÏB}rÐB(jÅXEve1 Mailbox 1 user 3 interruptrÑBjÆjËBjÎjù3jÐjõjÒ}rÒB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]rÓBjçXEve1 Mailbox 1 user 3 interruptrÔB…�rÕB}rÖB(jÅjÑBjÆjÏBubaubajÐj¢ ubejÐj£ ubj� )�r×B}rØB(jÅUjÒ}rÙB(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]rÚB(j• )�rÛB}rÜB(jÅUjÒ}rÝB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×BjÞ]rÞBjò)�rßB}ràB(jÅX72ráBjÆjÛBjÎjù3jÐjõjÒ}râB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]rãBjçX72räB…�råB}ræB(jÅjáBjÆjßBubaubajÐj¢ ubj• )�rçB}rèB(jÅUjÒ}réB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×BjÞ]rêBjò)�rëB}rìB(jÅX 0x4A0028B4ríBjÆjçBjÎjù3jÐjõjÒ}rîB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]rïBjçX 0x4A0028B4rðB…�rñB}ròB(jÅjíBjÆjëBubaubajÐj¢ ubj• )�róB}rôB(jÅUjÒ}rõB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×BjÞ]röBjò)�r÷B}røB(jÅX50rùBjÆjóBjÎjù3jÐjõjÒ}rúB(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]rûBjçX50rüB…�rýB}rþB(jÅjùBjÆj÷BubaubajÐj¢ ubj• )�rÿB}rC(jÅUjÒ}rC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×BjÞ]rCjò)�rC}rC(jÅXEVE2_IRQ_MBX1_USER3rCjÆjÿBjÎjù3jÐjõjÒ}rC(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]rCjçXEVE2_IRQ_MBX1_USER3rC…�r C}r C(jÅjCjÆjCubaubajÐj¢ ubj• )�r C}r C(jÅUjÒ}r C(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×BjÞ]rCjò)�rC}rC(jÅX EVE2_MAILBOX1rCjÆj CjÎjù3jÐjõjÒ}rC(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]rCjçX EVE2_MAILBOX1rC…�rC}rC(jÅjCjÆjCubaubajÐj¢ ubj• )�rC}rC(jÅUjÒ}rC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×BjÞ]rCjò)�rC}rC(jÅXEve2 Mailbox 1 user 3 interruptrCjÆjCjÎjù3jÐjõjÒ}rC(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]rCjçXEve2 Mailbox 1 user 3 interruptr C…�r!C}r"C(jÅjCjÆjCubaubajÐj¢ ubejÐj£ ubj� )�r#C}r$C(jÅUjÒ}r%C(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]r&C(j• )�r'C}r(C(jÅUjÒ}r)C(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#CjÞ]r*Cjò)�r+C}r,C(jÅX73r-CjÆj'CjÎjù3jÐjõjÒ}r.C(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÞ]r/CjçX73r0C…�r1C}r2C(jÅj-CjÆj+CubaubajÐj¢ ubj• )�r3C}r4C(jÅUjÒ}r5C(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#CjÞ]r6Cjò)�r7C}r8C(jÅX 0x4A0028B8r9CjÆj3CjÎjù3jÐjõjÒ}r:C(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÞ]r;CjçX 0x4A0028B8rC(jÅj9CjÆj7CubaubajÐj¢ ubj• )�r?C}r@C(jÅUjÒ}rAC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#CjÞ]rBCjò)�rCC}rDC(jÅX51rECjÆj?CjÎjù3jÐjõjÒ}rFC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÞ]rGCjçX51rHC…�rIC}rJC(jÅjECjÆjCCubaubajÐj¢ ubj• )�rKC}rLC(jÅUjÒ}rMC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#CjÞ]rNCjò)�rOC}rPC(jÅXMAILBOX6_IRQ_USER3rQCjÆjKCjÎjù3jÐjõjÒ}rRC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÞ]rSCjçXMAILBOX6_IRQ_USER3rTC…�rUC}rVC(jÅjQCjÆjOCubaubajÐj¢ ubj• )�rWC}rXC(jÅUjÒ}rYC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#CjÞ]rZCjò)�r[C}r\C(jÅXMAILBOX6r]CjÆjWCjÎjù3jÐjõjÒ}r^C(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÞ]r_CjçXMAILBOX6r`C…�raC}rbC(jÅj]CjÆj[CubaubajÐj¢ ubj• )�rcC}rdC(jÅUjÒ}reC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#CjÞ]rfCjò)�rgC}rhC(jÅXMailbox 6 user 3 interruptriCjÆjcCjÎjù3jÐjõjÒ}rjC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÞ]rkCjçXMailbox 6 user 3 interruptrlC…�rmC}rnC(jÅjiCjÆjgCubaubajÐj¢ ubejÐj£ ubj� )�roC}rpC(jÅUjÒ}rqC(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]rrC(j• )�rsC}rtC(jÅUjÒ}ruC(jÔ]jÕ]jÖ]j×]jÚ]ujÆjoCjÞ]rvCjò)�rwC}rxC(jÅX74ryCjÆjsCjÎjù3jÐjõjÒ}rzC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÞ]r{CjçX74r|C…�r}C}r~C(jÅjyCjÆjwCubaubajÐj¢ ubj• )�rC}r€C(jÅUjÒ}r�C(jÔ]jÕ]jÖ]j×]jÚ]ujÆjoCjÞ]r‚Cjò)�rƒC}r„C(jÅX 0x4A0028B8r…CjÆjCjÎjù3jÐjõjÒ}r†C(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÞ]r‡CjçX 0x4A0028B8rˆC…�r‰C}rŠC(jÅj…CjÆjƒCubaubajÐj¢ ubj• )�r‹C}rŒC(jÅUjÒ}r�C(jÔ]jÕ]jÖ]j×]jÚ]ujÆjoCjÞ]rŽCjò)�r�C}r�C(jÅX52r‘CjÆj‹CjÎjù3jÐjõjÒ}r’C(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÞ]r“CjçX52r”C…�r•C}r–C(jÅj‘CjÆj�CubaubajÐj¢ ubj• )�r—C}r˜C(jÅUjÒ}r™C(jÔ]jÕ]jÖ]j×]jÚ]ujÆjoCjÞ]ršCjò)�r›C}rœC(jÅXEVE3_IRQ_MBX1_USER3r�CjÆj—CjÎjù3jÐjõjÒ}ržC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÞ]rŸCjçXEVE3_IRQ_MBX1_USER3r C…�r¡C}r¢C(jÅj�CjÆj›CubaubajÐj¢ ubj• )�r£C}r¤C(jÅUjÒ}r¥C(jÔ]jÕ]jÖ]j×]jÚ]ujÆjoCjÞ]r¦Cjò)�r§C}r¨C(jÅX EVE3_MAILBOX1r©CjÆj£CjÎjù3jÐjõjÒ}rªC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÞ]r«CjçX EVE3_MAILBOX1r¬C…�r­C}r®C(jÅj©CjÆj§CubaubajÐj¢ ubj• )�r¯C}r°C(jÅUjÒ}r±C(jÔ]jÕ]jÖ]j×]jÚ]ujÆjoCjÞ]r²Cjò)�r³C}r´C(jÅX Eve 3 Mailbox 1 user 3 interruptrµCjÆj¯CjÎjù3jÐjõjÒ}r¶C(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÞ]r·CjçX Eve 3 Mailbox 1 user 3 interruptr¸C…�r¹C}rºC(jÅjµCjÆj³CubaubajÐj¢ ubejÐj£ ubj� )�r»C}r¼C(jÅUjÒ}r½C(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]r¾C(j• )�r¿C}rÀC(jÅUjÒ}rÁC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»CjÞ]rÂCjò)�rÃC}rÄC(jÅX75rÅCjÆj¿CjÎjù3jÐjõjÒ}rÆC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÞ]rÇCjçX75rÈC…�rÉC}rÊC(jÅjÅCjÆjÃCubaubajÐj¢ ubj• )�rËC}rÌC(jÅUjÒ}rÍC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»CjÞ]rÎCjò)�rÏC}rÐC(jÅX 0x4A0028BCrÑCjÆjËCjÎjù3jÐjõjÒ}rÒC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÞ]rÓCjçX 0x4A0028BCrÔC…�rÕC}rÖC(jÅjÑCjÆjÏCubaubajÐj¢ ubj• )�r×C}rØC(jÅUjÒ}rÙC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»CjÞ]rÚCjò)�rÛC}rÜC(jÅX53rÝCjÆj×CjÎjù3jÐjõjÒ}rÞC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÞ]rßCjçX53ràC…�ráC}râC(jÅjÝCjÆjÛCubaubajÐj¢ ubj• )�rãC}räC(jÅUjÒ}råC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»CjÞ]ræCjò)�rçC}rèC(jÅXEVE4_IRQ_MBX1_USER3réCjÆjãCjÎjù3jÐjõjÒ}rêC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÞ]rëCjçXEVE4_IRQ_MBX1_USER3rìC…�ríC}rîC(jÅjéCjÆjçCubaubajÐj¢ ubj• )�rïC}rðC(jÅUjÒ}rñC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»CjÞ]ròCjò)�róC}rôC(jÅX EVE4_MAILBOX1rõCjÆjïCjÎjù3jÐjõjÒ}röC(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÞ]r÷CjçX EVE4_MAILBOX1røC…�rùC}rúC(jÅjõCjÆjóCubaubajÐj¢ ubj• )�rûC}rüC(jÅUjÒ}rýC(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»CjÞ]rþCjò)�rÿC}rD(jÅXEve4 Mailbox 1 user 3 interruptrDjÆjûCjÎjù3jÐjõjÒ}rD(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÞ]rDjçXEve4 Mailbox 1 user 3 interruptrD…�rD}rD(jÅjDjÆjÿCubaubajÐj¢ ubejÐj£ ubj� )�rD}rD(jÅUjÒ}r D(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs@jÞ]r D(j• )�r D}r D(jÅUjÒ}r D(jÔ]jÕ]jÖ]j×]jÚ]ujÆjDjÞ]rDjò)�rD}rD(jÅX76rDjÆj DjÎjù3jÐjõjÒ}rD(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÞ]rDjçX76rD…�rD}rD(jÅjDjÆjDubaubajÐj¢ ubj• )�rD}rD(jÅUjÒ}rD(jÔ]jÕ]jÖ]j×]jÚ]ujÆjDjÞ]rDjò)�rD}rD(jÅX 0x4A0028BCrDjÆjDjÎjù3jÐjõjÒ}rD(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÞ]rDjçX 0x4A0028BCr D…�r!D}r"D(jÅjDjÆjDubaubajÐj¢ ubj• )�r#D}r$D(jÅUjÒ}r%D(jÔ]jÕ]jÖ]j×]jÚ]ujÆjDjÞ]r&Djò)�r'D}r(D(jÅX54r)DjÆj#DjÎjù3jÐjõjÒ}r*D(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÞ]r+DjçX54r,D…�r-D}r.D(jÅj)DjÆj'DubaubajÐj¢ ubj• )�r/D}r0D(jÅUjÒ}r1D(jÔ]jÕ]jÖ]j×]jÚ]ujÆjDjÞ]r2Djò)�r3D}r4D(jÅXMAILBOX8_IRQ_USER3r5DjÆj/DjÎjù3jÐjõjÒ}r6D(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÞ]r7DjçXMAILBOX8_IRQ_USER3r8D…�r9D}r:D(jÅj5DjÆj3DubaubajÐj¢ ubj• )�r;D}rDjò)�r?D}r@D(jÅXMAILBOX8rADjÆj;DjÎjù3jÐjõjÒ}rBD(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÞ]rCDjçXMAILBOX8rDD…�rED}rFD(jÅjADjÆj?DubaubajÐj¢ ubj• )�rGD}rHD(jÅUjÒ}rID(jÔ]jÕ]jÖ]j×]jÚ]ujÆjDjÞ]rJDjò)�rKD}rLD(jÅXMailbox 8 user 3 interruptrMDjÆjGDjÎjù3jÐjõjÒ}rND(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÞ]rODjçXMailbox 8 user 3 interruptrPD…�rQD}rRD(jÅjMDjÆjKDubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubeubeubeubjÇ)�rSD}rTD(jÅUjKjÆjÌjÎjÏjÐjÑjÒ}rUD(jÔ]jÕ]jÖ]j×]rVDjajÚ]rWDh aujÜK…jÝhjÞ]rXD(jà)�rYD}rZD(jÅXIPC 3.x vs IPC LLDr[DjÆjSDjÎjÏjÐjäjÒ}r\D(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÝhjÞ]r]DjçXIPC 3.x vs IPC LLDr^D…�r_D}r`D(jÅj[DjÆjYDubaubjò)�raD}rbD(jÅXLIPC 3.x APIs provide High level IPC APIs that scale across all TI platforms.rcDjÆjSDjÎjÏjÐjõjÒ}rdD(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÝhjÞ]reDjçXLIPC 3.x APIs provide High level IPC APIs that scale across all TI platforms.rfD…�rgD}rhD(jÅjcDjÆjaDubaubjò)�riD}rjD(jÅXmInstead of the IPC 3.x APIs, in certain cases customers can choose to use the IPC Low level Driver (IPC LLD).rkDjÆjSDjÎjÏjÐjõjÒ}rlD(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‰jÝhjÞ]rmDjçXmInstead of the IPC 3.x APIs, in certain cases customers can choose to use the IPC Low level Driver (IPC LLD).rnD…�roD}rpD(jÅjkDjÆjiDubaubjò)�rqD}rrD(jÅXfIn general, the IPC LLD can be used, if the customer application falls under the following categories.rsDjÆjSDjÎjÏjÐjõjÒ}rtD(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‹jÝhjÞ]ruDjçXfIn general, the IPC LLD can be used, if the customer application falls under the following categories.rvD…�rwD}rxD(jÅjsDjÆjqDubaubj )�ryD}rzD(jÅUjÆjSDjÎjÏjÐj jÒ}r{D(jU)j×]jÖ]jÔ]jUjÕ]jÚ]jU loweralphar|DujÜK�jÝhjÞ]r}D(j{)�r~D}rD(jÅX_Non-RTOS bare metal applications (Note: IPC 3.x is closely coupled with SYSBIOS and XDC tools)r€DjÆjyDjÎjÏjÐjjÒ}r�D(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‚Djò)�rƒD}r„D(jÅj€DjÆj~DjÎjÏjÐjõjÒ}r…D(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]r†DjçX_Non-RTOS bare metal applications (Note: IPC 3.x is closely coupled with SYSBIOS and XDC tools)r‡D…�rˆD}r‰D(jÅj€DjÆjƒDubaubaubj{)�rŠD}r‹D(jÅXÅApplications does not need the high level API abstraction and all the features (like GateMP etc) and would like to call the low level driver to just establish basic communication between the cores.rŒDjÆjyDjÎjÏjÐjjÒ}r�D(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŽDjò)�r�D}r�D(jÅjŒDjÆjŠDjÎjÏjÐjõjÒ}r‘D(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÞ]r’DjçXÅApplications does not need the high level API abstraction and all the features (like GateMP etc) and would like to call the low level driver to just establish basic communication between the cores.r“D…�r”D}r•D(jÅjŒDjÆj�Dubaubaubj{)�r–D}r—D(jÅX–Application needs the same RPMSG/Virtio transport mechanism to communicate with a core running linux and other cores running other operating systems. jÆjyDjÎjÏjÐjjÒ}r˜D(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r™Djò)�ršD}r›D(jÅX•Application needs the same RPMSG/Virtio transport mechanism to communicate with a core running linux and other cores running other operating systems.rœDjÆj–DjÎjÏjÐjõjÒ}r�D(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]ržDjçX•Application needs the same RPMSG/Virtio transport mechanism to communicate with a core running linux and other cores running other operating systems.rŸD…�r D}r¡D(jÅjœDjÆjšDubaubaubeubjò)�r¢D}r£D(jÅXxPlease refer to the following page for details on the IPC LLD: `IPC LLD for AM65x/J721E `_r¤DjÆjSDjÎjÏjÐjõjÒ}r¥D(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‘jÝhjÞ]r¦D(jçX?Please refer to the following page for details on the IPC LLD: r§D…�r¨D}r©D(jÅX?Please refer to the following page for details on the IPC LLD: jÆj¢Dubjû)�rªD}r«D(jÅX9`IPC LLD for AM65x/J721E `_jÒ}r¬D(UnameXIPC LLD for AM65x/J721EjXindex_device_drv.html#ipclldr­Dj×]jÖ]jÔ]jÕ]jÚ]ujÆj¢DjÞ]r®DjçXIPC LLD for AM65x/J721Er¯D…�r°D}r±D(jÅUjÆjªDubajÐjÿubj)�r²D}r³D(jÅX jKjÆj¢DjÐj jÒ}r´D(Urefurij­Dj×]rµDUid40r¶DajÖ]jÔ]r·DXipc lld for am65x/j721er¸DajÕ]jÚ]ujÞ]ubeubeubjÇ)�r¹D}rºD(jÅUjÆjÌjÎjÏjÐjÑjÒ}r»D(jÔ]jÕ]jÖ]j×]r¼DUipc-faqr½DajÚ]r¾DjaujÜK”jÝhjÞ]r¿D(jà)�rÀD}rÁD(jÅXIPC FAQrÂDjÆj¹DjÎjÏjÐjäjÒ}rÃD(jÔ]jÕ]jÖ]j×]jÚ]ujÜK”jÝhjÞ]rÄDjçXIPC FAQrÅD…�rÆD}rÇD(jÅjÂDjÆjÀDubaubj7)�rÈD}rÉD(jÅX3http://processors.wiki.ti.com/index.php/IPC_3.x_FAQjÆj¹DjÎj:X9source/rtos/PDK_Platform_Software/IPC/IPC_3.x_FAQ.rst.incrÊD…�rËD}rÌDbjÐj>jÒ}rÍD(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rÎDjçX3http://processors.wiki.ti.com/index.php/IPC_3.x_FAQrÏD…�rÐD}rÑD(jÅUjÆjÈDubaubjÇ)�rÒD}rÓD(jÅUjÆj¹DjÎjËDjÐjÑjÒ}rÔD(jÔ]jÕ]jÖ]j×]rÕDU3i-have-a-question-that-s-not-answered-here-what-nowrÖDajÚ]r×DjyaujÜKjÝhjÞ]rØD(jà)�rÙD}rÚD(jÅX5I have a question that's not answered here, what now?rÛDjÆjÒDjÎjËDjÐjäjÒ}rÜD(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÝDjçX5I have a question that's not answered here, what now?rÞD…�rßD}ràD(jÅjÛDjÆjÙDubaubjt)�ráD}râD(jÅUjÆjÒDjÎjËDjÐjwjÒ}rãD(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]räD(j{)�råD}ræD(jÅXnThere are lots of knowledgeable experts on the `TI E2E Support Forums `__ - posts welcome!jÆjáDjÎjËDjÐjjÒ}rçD(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rèDjò)�réD}rêD(jÅXnThere are lots of knowledgeable experts on the `TI E2E Support Forums `__ - posts welcome!jÆjåDjÎjËDjÐjõjÒ}rëD(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rìD(jçX/There are lots of knowledgeable experts on the ríD…�rîD}rïD(jÅX/There are lots of knowledgeable experts on the jÆjéDubjû)�rðD}rñD(jÅX.`TI E2E Support Forums `__jÒ}ròD(UnameXTI E2E Support ForumsjXhttp://e2e.ti.com/j×]jÖ]jÔ]jÕ]jÚ]ujÆjéDjÞ]róDjçXTI E2E Support ForumsrôD…�rõD}röD(jÅUjÆjðDubajÐjÿubjçX - posts welcome!r÷D…�røD}rùD(jÅX - posts welcome!jÆjéDubeubaubj{)�rúD}rûD(jÅXwHave you tried `Google `__? IPC's been around a while, and Google has lots of details about it. jÆjáDjÎjËDjÐjjÒ}rüD(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rýDjò)�rþD}rÿD(jÅXvHave you tried `Google `__? IPC's been around a while, and Google has lots of details about it.jÆjúDjÎjËDjÐjõjÒ}rE(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rE(jçXHave you tried rE…�rE}rE(jÅXHave you tried jÆjþDubjû)�rE}rE(jÅX"`Google `__jÒ}rE(UnameXGooglejXhttp://www.google.comj×]jÖ]jÔ]jÕ]jÚ]ujÆjþDjÞ]rEjçXGoogler E…�r E}r E(jÅUjÆjEubajÐjÿubjçXE? IPC's been around a while, and Google has lots of details about it.r E…�r E}rE(jÅXE? IPC's been around a while, and Google has lots of details about it.jÆjþDubeubaubeubeubjÇ)�rE}rE(jÅUjÆj¹DjÎjËDjÐjÑjÒ}rE(jÔ]jÕ]jÖ]j×]rEUdoes-ipc-3-x-support-smp-biosrEajÚ]rEhÁaujÜK jÝhjÞ]rE(jà)�rE}rE(jÅXDoes IPC 3.x support SMP BIOS?rEjÆjEjÎjËDjÐjäjÒ}rE(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rEjçXDoes IPC 3.x support SMP BIOS?rE…�rE}rE(jÅjEjÆjEubaubjò)�rE}rE(jÅX¼`SMP BIOS is described here `__. It is currently only available for dual-core ARM M-class devices, sometimes called "Benelli" or "Ducati".jÆjEjÎjËDjÐjõjÒ}r E(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r!E(jû)�r"E}r#E(jÅXQ`SMP BIOS is described here `__jÒ}r$E(UnameXSMP BIOS is described herejX0http://processors.wiki.ti.com/index.php/SMP/BIOSj×]jÖ]jÔ]jÕ]jÚ]ujÆjEjÞ]r%EjçXSMP BIOS is described herer&E…�r'E}r(E(jÅUjÆj"EubajÐjÿubjçXk. It is currently only available for dual-core ARM M-class devices, sometimes called "Benelli" or "Ducati".r)E…�r*E}r+E(jÅXk. It is currently only available for dual-core ARM M-class devices, sometimes called "Benelli" or "Ducati".jÆjEubeubjò)�r,E}r-E(jÅXdSpecifically where IPC 3.x is concerned, SMP BIOS is only applicable to the following cores/devices:r.EjÆjEjÎjËDjÐjõjÒ}r/E(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r0EjçXdSpecifically where IPC 3.x is concerned, SMP BIOS is only applicable to the following cores/devices:r1E…�r2E}r3E(jÅj.EjÆj,Eubaubjt)�r4E}r5E(jÅUjÆjEjÎjËDjÐjwjÒ}r6E(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r7E(j{)�r8E}r9E(jÅXIPU on OMAP54XXr:EjÆj4EjÎjËDjÐjjÒ}r;E(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rE(jÅj:EjÆj8EjÎjËDjÐjõjÒ}r?E(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r@EjçXIPU on OMAP54XXrAE…�rBE}rCE(jÅj:EjÆj=Eubaubaubj{)�rDE}rEE(jÅX2IPU1 (and IPU2, if present) on DRA7XX (e.g. Vayu) jÆj4EjÎjËDjÐjjÒ}rFE(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rGEjò)�rHE}rIE(jÅX1IPU1 (and IPU2, if present) on DRA7XX (e.g. Vayu)rJEjÆjDEjÎjËDjÐjõjÒ}rKE(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rLEjçX1IPU1 (and IPU2, if present) on DRA7XX (e.g. Vayu)rME…�rNE}rOE(jÅjJEjÆjHEubaubaubeubjò)�rPE}rQE(jÅXeThe answer to this question depends on whether you are developing an HLOS-based or BIOS-based system.rREjÆjEjÎjËDjÐjõjÒ}rSE(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rTEjçXeThe answer to this question depends on whether you are developing an HLOS-based or BIOS-based system.rUE…�rVE}rWE(jÅjREjÆjPEubaubjy )�rXE}rYE(jÅUjÆjEjÎjËDjÐjÔ jÒ}rZE(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r[Ej~ )�r\E}r]E(jÅUjÒ}r^E(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjXEjÞ]r_E(jƒ )�r`E}raE(jÅUjÒ}rbE(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆj\EjÞ]jÐj‡ ubjƒ )�rcE}rdE(jÅUjÒ}reE(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆj\EjÞ]jÐj‡ ubj‹ )�rfE}rgE(jÅUjÒ}rhE(jÔ]jÕ]jÖ]j×]jÚ]ujÆj\EjÞ]riEj� )�rjE}rkE(jÅUjÒ}rlE(jÔ]jÕ]jÖ]j×]jÚ]ujÆjfEjÞ]rmE(j• )�rnE}roE(jÅUjÒ}rpE(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjEjÞ]rqEjò)�rrE}rsE(jÅX5HLOS-Based (e.g. Linux, QNX, Android on the Cortex-A)rtEjÆjnEjÎjËDjÐjõjÒ}ruE(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rvEjçX5HLOS-Based (e.g. Linux, QNX, Android on the Cortex-A)rwE…�rxE}ryE(jÅjtEjÆjrEubaubajÐj¢ ubj• )�rzE}r{E(jÅUjÒ}r|E(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjEjÞ]r}Ejò)�r~E}rE(jÅX&BIOS-Based (i.e. BIOS on the Cortex-A)r€EjÆjzEjÎjËDjÐjõjÒ}r�E(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r‚EjçX&BIOS-Based (i.e. BIOS on the Cortex-A)rƒE…�r„E}r…E(jÅj€EjÆj~EubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r†E}r‡E(jÅUjÒ}rˆE(jÔ]jÕ]jÖ]j×]jÚ]ujÆj\EjÞ]r‰Ej� )�rŠE}r‹E(jÅUjÒ}rŒE(jÔ]jÕ]jÖ]j×]jÚ]ujÆj†EjÞ]r�E(j• )�rŽE}r�E(jÅUjÒ}r�E(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠEjÞ]r‘E(jò)�r’E}r“E(jÅXƒIPC 3.x **only** supports SMP BIOS on the IPU(s). In an HLOS-based system, the IPU(s) are loaded and managed as slaves (not peers).jÆjŽEjÎjËDjÐjõjÒ}r”E(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]r•E(jçXIPC 3.x r–E…�r—E}r˜E(jÅXIPC 3.x jÆj’EubjÚ)�r™E}ršE(jÅX**only**jÒ}r›E(jÔ]jÕ]jÖ]j×]jÚ]ujÆj’EjÞ]rœEjçXonlyr�E…�ržE}rŸE(jÅUjÆj™EubajÐjâubjçXs supports SMP BIOS on the IPU(s). In an HLOS-based system, the IPU(s) are loaded and managed as slaves (not peers).r E…�r¡E}r¢E(jÅXs supports SMP BIOS on the IPU(s). In an HLOS-based system, the IPU(s) are loaded and managed as slaves (not peers).jÆj’Eubeubjò)�r£E}r¤E(jÅX2When managing the IPU as a slave, issues like power management, loading/resetting, and error recovery are key features. Because the 2 cores in a single IPU can't easily be seen as truly independent (e.g. they share a power domain), treating them as one slave (running SMP BIOS) is simpler and more natural.r¥EjÆjŽEjÎjËDjÐjõjÒ}r¦E(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]r§EjçX2When managing the IPU as a slave, issues like power management, loading/resetting, and error recovery are key features. Because the 2 cores in a single IPU can't easily be seen as truly independent (e.g. they share a power domain), treating them as one slave (running SMP BIOS) is simpler and more natural.r¨E…�r©E}rªE(jÅj¥EjÆj£EubaubejÐj¢ ubj• )�r«E}r¬E(jÅUjÒ}r­E(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠEjÞ]r®E(jò)�r¯E}r°E(jÅX—IPC 3.x supports either SMP BIOS or non-SMP BIOS. Note that specifically on DRA7XX's **IPU2**, IPC 3.x only supports SMP BIOS (to reduce the number of core-to-core permutations and thus reduce the number of mailboxes required). In a BIOS-based environment, the IPU(s) are treated as peers (not slaves), and as such some of the concerns about power management, loading, error recovery are no longer an issue.jÆj«EjÎjËDjÐjõjÒ}r±E(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]r²E(jçXUIPC 3.x supports either SMP BIOS or non-SMP BIOS. Note that specifically on DRA7XX's r³E…�r´E}rµE(jÅXUIPC 3.x supports either SMP BIOS or non-SMP BIOS. Note that specifically on DRA7XX's jÆj¯EubjÚ)�r¶E}r·E(jÅX**IPU2**jÒ}r¸E(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯EjÞ]r¹EjçXIPU2rºE…�r»E}r¼E(jÅUjÆj¶EubajÐjâubjçX:, IPC 3.x only supports SMP BIOS (to reduce the number of core-to-core permutations and thus reduce the number of mailboxes required). In a BIOS-based environment, the IPU(s) are treated as peers (not slaves), and as such some of the concerns about power management, loading, error recovery are no longer an issue.r½E…�r¾E}r¿E(jÅX:, IPC 3.x only supports SMP BIOS (to reduce the number of core-to-core permutations and thus reduce the number of mailboxes required). In a BIOS-based environment, the IPU(s) are treated as peers (not slaves), and as such some of the concerns about power management, loading, error recovery are no longer an issue.jÆj¯Eubeubjò)�rÀE}rÁE(jÅXjNote that the MultiProc configuration used on all cores reflects your SMP-or-not-SMP decision. When using non-SMP BIOS, you must include "IPU1-0" and "IPU1-1" (rather than "IPU1" used when running SMP BIOS) in your MultiProc configuration. See the ex11_ping example provided with the IPC product for an example that supports either "IPU1" or "IPU1-0 and IPU1-1".rÂEjÆj«EjÎjËDjÐjõjÒ}rÃE(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rÄEjçXjNote that the MultiProc configuration used on all cores reflects your SMP-or-not-SMP decision. When using non-SMP BIOS, you must include "IPU1-0" and "IPU1-1" (rather than "IPU1" used when running SMP BIOS) in your MultiProc configuration. See the ex11_ping example provided with the IPC product for an example that supports either "IPU1" or "IPU1-0 and IPU1-1".rÅE…�rÆE}rÇE(jÅjÂEjÆjÀEubaubejÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubaubjò)�rÈE}rÉE(jÅX½Finally, there are a few notable benefits to using SMP BIOS. Many are described in the `SMP/BIOS `__ article, but two are highlighted here:jÆjEjÎjËDjÐjõjÒ}rÊE(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÝhjÞ]rËE(jçXWFinally, there are a few notable benefits to using SMP BIOS. Many are described in the rÌE…�rÍE}rÎE(jÅXWFinally, there are a few notable benefits to using SMP BIOS. Many are described in the jÆjÈEubjû)�rÏE}rÐE(jÅX?`SMP/BIOS `__jÒ}rÑE(UnameXSMP/BIOSjX0http://processors.wiki.ti.com/index.php/SMP/BIOSj×]jÖ]jÔ]jÕ]jÚ]ujÆjÈEjÞ]rÒEjçXSMP/BIOSrÓE…�rÔE}rÕE(jÅUjÆjÏEubajÐjÿubjçX' article, but two are highlighted here:rÖE…�r×E}rØE(jÅX' article, but two are highlighted here:jÆjÈEubeubjt)�rÙE}rÚE(jÅUjÆjEjÎjËDjÐjwjÒ}rÛE(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKBjÝhjÞ]rÜE(j{)�rÝE}rÞE(jÅXF**Free load balancing** - SMP BIOS schedules tasks to run on the less-loaded core to balance IPU usage. Without SMP BIOS, when one of the cores became heavily loaded, users had to repartition the resources; often this meant moving tasks/code from one core to the other, which can affect memory maps, build/config scripts, etc.jÆjÙEjÎjËDjÐjjÒ}rßE(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ràEjò)�ráE}râE(jÅXF**Free load balancing** - SMP BIOS schedules tasks to run on the less-loaded core to balance IPU usage. Without SMP BIOS, when one of the cores became heavily loaded, users had to repartition the resources; often this meant moving tasks/code from one core to the other, which can affect memory maps, build/config scripts, etc.jÆjÝEjÎjËDjÐjõjÒ}rãE(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]räE(jÚ)�råE}ræE(jÅX**Free load balancing**jÒ}rçE(jÔ]jÕ]jÖ]j×]jÚ]ujÆjáEjÞ]rèEjçXFree load balancingréE…�rêE}rëE(jÅUjÆjåEubajÐjâubjçX/ - SMP BIOS schedules tasks to run on the less-loaded core to balance IPU usage. Without SMP BIOS, when one of the cores became heavily loaded, users had to repartition the resources; often this meant moving tasks/code from one core to the other, which can affect memory maps, build/config scripts, etc.rìE…�ríE}rîE(jÅX/ - SMP BIOS schedules tasks to run on the less-loaded core to balance IPU usage. Without SMP BIOS, when one of the cores became heavily loaded, users had to repartition the resources; often this meant moving tasks/code from one core to the other, which can affect memory maps, build/config scripts, etc.jÆjáEubeubaubj{)�rïE}rðE(jÅX**Simpler system integration** - there's one fewer core to manage the memory map and resource allocation for. Without SMP BIOS, the single unicache needed to understand AMMU and cache needs for both cores, and often confusing and error-prone integration issue. jÆjÙEjÎjËDjÐjjÒ}rñE(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ròEjò)�róE}rôE(jÅX**Simpler system integration** - there's one fewer core to manage the memory map and resource allocation for. Without SMP BIOS, the single unicache needed to understand AMMU and cache needs for both cores, and often confusing and error-prone integration issue.jÆjïEjÎjËDjÐjõjÒ}rõE(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÞ]röE(jÚ)�r÷E}røE(jÅX**Simpler system integration**jÒ}rùE(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóEjÞ]rúEjçXSimpler system integrationrûE…�rüE}rýE(jÅUjÆj÷EubajÐjâubjçXæ - there's one fewer core to manage the memory map and resource allocation for. Without SMP BIOS, the single unicache needed to understand AMMU and cache needs for both cores, and often confusing and error-prone integration issue.rþE…�rÿE}rF(jÅXæ - there's one fewer core to manage the memory map and resource allocation for. Without SMP BIOS, the single unicache needed to understand AMMU and cache needs for both cores, and often confusing and error-prone integration issue.jÆjóEubeubaubeubeubjÇ)�rF}rF(jÅUjÆj¹DjÎjËDjÐjÑjÒ}rF(jÔ]jÕ]jÖ]j×]rFUbuild-questionsrFajÚ]rFh“aujÜKMjÝhjÞ]rF(jà)�rF}r F(jÅXBuild Questionsr FjÆjFjÎjËDjÐjäjÒ}r F(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÝhjÞ]r FjçXBuild Questionsr F…�rF}rF(jÅj FjÆjFubaubjÇ)�rF}rF(jÅUjÆjFjÎjËDjÐjÑjÒ}rF(jÔ]jÕ]jÖ]j×]rFUbios-side-buildrFajÚ]rFh¥aujÜKPjÝhjÞ]rF(jà)�rF}rF(jÅXBIOS-side BuildrFjÆjFjÎjËDjÐjäjÒ}rF(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÝhjÞ]rFjçXBIOS-side BuildrF…�rF}rF(jÅjFjÆjFubaubjÇ)�rF}r F(jÅUjKjÆjFjÎjËDjÐjÑjÒ}r!F(jÔ]r"FXhow do i change the memory map?r#FajÕ]jÖ]j×]r$FUhow-do-i-change-the-memory-mapr%FajÚ]ujÜKSjÝhjÞ]r&F(jà)�r'F}r(F(jÅXHow do I change the Memory Map?r)FjÆjFjÎjËDjÐjäjÒ}r*F(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÝhjÞ]r+FjçXHow do I change the Memory Map?r,F…�r-F}r.F(jÅj)FjÆj'Fubaubjò)�r/F}r0F(jÅXŸStandard techniques for changing the memory map of any BIOS executable generally apply (e.g. `creating your own custom platform `__, `creating an instance of an existing platform `__, etc). However when building an executable which is loaded by an HLOS, you also need to ensure the resource table is aligned with the memory map. The `IPC Resource customTable `__ article describes how to override the default resource table, which among other things, includes the memory map.jÆjFjÎjËDjÐjõjÒ}r1F(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÝhjÞ]r2F(jçX]Standard techniques for changing the memory map of any BIOS executable generally apply (e.g. r3F…�r4F}r5F(jÅX]Standard techniques for changing the memory map of any BIOS executable generally apply (e.g. jÆj/Fubjû)�r6F}r7F(jÅXr`creating your own custom platform `__jÒ}r8F(UnameX!creating your own custom platformjXJhttp://rtsc.eclipse.org/docs-tip/Demo_of_the_RTSC_Platform_Wizard_in_CCSv4j×]jÖ]jÔ]jÕ]jÚ]ujÆj/FjÞ]r9FjçX!creating your own custom platformr:F…�r;F}rF}r?F(jÅX, jÆj/Fubjû)�r@F}rAF(jÅXo`creating an instance of an existing platform `__jÒ}rBF(UnameX,creating an instance of an existing platformjX<http://rtsc.eclipse.org/docs-tip/Using_Targets_and_Platformsj×]jÖ]jÔ]jÕ]jÚ]ujÆj/FjÞ]rCFjçX,creating an instance of an existing platformrDF…�rEF}rFF(jÅUjÆj@FubajÐjÿubjçX—, etc). However when building an executable which is loaded by an HLOS, you also need to ensure the resource table is aligned with the memory map. The rGF…�rHF}rIF(jÅX—, etc). However when building an executable which is loaded by an HLOS, you also need to ensure the resource table is aligned with the memory map. The jÆj/Fubjû)�rJF}rKF(jÅXW`IPC Resource customTable `__jÒ}rLF(UnameXIPC Resource customTablejX8index_Foundational_Components.html#resource-custom-tablej×]jÖ]jÔ]jÕ]jÚ]ujÆj/FjÞ]rMFjçXIPC Resource customTablerNF…�rOF}rPF(jÅUjÆjJFubajÐjÿubjçXq article describes how to override the default resource table, which among other things, includes the memory map.rQF…�rRF}rSF(jÅXq article describes how to override the default resource table, which among other things, includes the memory map.jÆj/Fubeubjò)�rTF}rUF(jÅXjObviously be sure to also ensure changes to the memory map don't collide with memory usage on other cores.rVFjÆjFjÎjËDjÐjõjÒ}rWF(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÝhjÞ]rXFjçXjObviously be sure to also ensure changes to the memory map don't collide with memory usage on other cores.rYF…�rZF}r[F(jÅjVFjÆjTFubaubeubjÇ)�r\F}r]F(jÅUjÆjFjÎjËDjÐjÑjÒ}r^F(jÔ]jÕ]jÖ]j×]r_FUZwhy-are-the-peripherals-mapped-to-0x6xxx-xxxx-virtual-memory-for-ipu-cortex-m4-test-imagesr`FajÚ]raFh-aujÜKejÝhjÞ]rbF(jà)�rcF}rdF(jÅX]Why are the peripherals mapped to 0x6XXX:XXXX virtual memory for IPU (Cortex-M4) test images?reFjÆj\FjÎjËDjÐjäjÒ}rfF(jÔ]jÕ]jÖ]j×]jÚ]ujÜKejÝhjÞ]rgFjçX]Why are the peripherals mapped to 0x6XXX:XXXX virtual memory for IPU (Cortex-M4) test images?rhF…�riF}rjF(jÅjeFjÆjcFubaubjò)�rkF}rlF(jÅXµThe ARM Cortex-M4 memory map includes a bit-banding region of memory from 0x4000:0000 to 0x400F:FFFF and 0x4200:0000 to 0x43FF:FFFF. Here is a Cortex-M4 memory map picture from ARM:rmFjÆj\FjÎjËDjÐjõjÒ}rnF(jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]roFjçXµThe ARM Cortex-M4 memory map includes a bit-banding region of memory from 0x4000:0000 to 0x400F:FFFF and 0x4200:0000 to 0x43FF:FFFF. Here is a Cortex-M4 memory map picture from ARM:rpF…�rqF}rrF(jÅjmFjÆjkFubaubj)�rsF}rtF(jÅXRhttp://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0553a/CHDBIJJE.htmljÆj\FjÎjËDjÐjjÒ}ruF(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM”jÝhjÞ]rvFjçXRhttp://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0553a/CHDBIJJE.htmlrwF…�rxF}ryF(jÅUjÆjsFubaubjò)�rzF}r{F(jÅXõMany Vayu components running on the IPUs, including IPC, must access peripherals physically located in this bit-banding region. As a result, these accesses must be performed indirectly using a virtual memory address, mapped using the IPU's AMMU.r|FjÆj\FjÎjËDjÐjõjÒ}r}F(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÝhjÞ]r~FjçXõMany Vayu components running on the IPUs, including IPC, must access peripherals physically located in this bit-banding region. As a result, these accesses must be performed indirectly using a virtual memory address, mapped using the IPU's AMMU.rF…�r€F}r�F(jÅj|FjÆjzFubaubjò)�r‚F}rƒF(jÅXMany of the components aligned on mapping this memory using one Large AMMU page that maps 512M of physical memory beginning at 0x4000:0000 to virtual memory beginning at 0x6000:0000. Then the components (by default) access the peripherals using the 0x6XXX:XXXX address space.r„FjÆj\FjÎjËDjÐjõjÒ}r…F(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÝhjÞ]r†FjçXMany of the components aligned on mapping this memory using one Large AMMU page that maps 512M of physical memory beginning at 0x4000:0000 to virtual memory beginning at 0x6000:0000. Then the components (by default) access the peripherals using the 0x6XXX:XXXX address space.r‡F…�rˆF}r‰F(jÅj„FjÆj‚Fubaubjt)�rŠF}r‹F(jÅUjÆj\FjÎjËDjÐjwjÒ}rŒF(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKyjÝhjÞ]r�Fj{)�rŽF}r�F(jÅXIPC specifics: jÆjŠFjÎjËDjÐjjÒ}r�F(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‘Fjò)�r’F}r“F(jÅXIPC specifics:r”FjÆjŽFjÎjËDjÐjõjÒ}r•F(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÞ]r–FjçXIPC specifics:r—F…�r˜F}r™F(jÅj”FjÆj’Fubaubaubaubjò)�ršF}r›F(jÅXðIPC follows the convention of, by default, accessing memory physically located at 0x4XXX:XXXX using virtual memory at 0x6XXX:XXXX. You can see an example of this here - note the mailbox addresses configured here are in the 06XXX:XXXX range:rœFjÆj\FjÎjËDjÐjõjÒ}r�F(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÝhjÞ]ržFjçXðIPC follows the convention of, by default, accessing memory physically located at 0x4XXX:XXXX using virtual memory at 0x6XXX:XXXX. You can see an example of this here - note the mailbox addresses configured here are in the 06XXX:XXXX range:rŸF…�r F}r¡F(jÅjœFjÆjšFubaubj)�r¢F}r£F(jÅXchttp://git.ti.com/cgit/cgit.cgi/ipc/ipcdev.git/tree/packages/ti/sdo/ipc/family/vayu/InterruptIpu.xsjÆj\FjÎjËDjÐjjÒ}r¤F(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM©jÝhjÞ]r¥FjçXchttp://git.ti.com/cgit/cgit.cgi/ipc/ipcdev.git/tree/packages/ti/sdo/ipc/family/vayu/InterruptIpu.xsr¦F…�r§F}r¨F(jÅUjÆj¢Fubaubjò)�r©F}rªF(jÅXrIn that same file, you can see that these addresses are configurable, and the default 0x6XXX:XXXX addresses are only used if other addresses haven't already been configured by the system integrator (e.g. in a .cfg script). Users can override these default mailbox addresses using the ti.sdo.ipc.family.vayu.InterruptIpu module's mailboxBaseAddr[] array, documented here:r«FjÆj\FjÎjËDjÐjõjÒ}r¬F(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÝhjÞ]r­FjçXrIn that same file, you can see that these addresses are configurable, and the default 0x6XXX:XXXX addresses are only used if other addresses haven't already been configured by the system integrator (e.g. in a .cfg script). Users can override these default mailbox addresses using the ti.sdo.ipc.family.vayu.InterruptIpu module's mailboxBaseAddr[] array, documented here:r®F…�r¯F}r°F(jÅj«FjÆj©Fubaubjò)�r±F}r²F(jÅX–http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/ti/sdo/ipc/family/vayu/InterruptIpu.html#metamailbox.Base.Addrr³FjÆj\FjÎjËDjÐjõjÒ}r´F(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‹jÝhjÞ]rµFjû)�r¶F}r·F(jÅj³FjÒ}r¸F(Urefurij³Fj×]jÖ]jÔ]jÕ]jÚ]ujÆj±FjÞ]r¹FjçX–http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/ti/sdo/ipc/family/vayu/InterruptIpu.html#metamailbox.Base.AddrrºF…�r»F}r¼F(jÅUjÆj¶FubajÐjÿubaubeubeubjÇ)�r½F}r¾F(jÅUjÆjFjÎjËDjÐjÑjÒ}r¿F(jÔ]jÕ]jÖ]j×]rÀFU linux-buildrÁFajÚ]rÂFhßaujÜKŽjÝhjÞ]rÃF(jà)�rÄF}rÅF(jÅX Linux BuildrÆFjÆj½FjÎjËDjÐjäjÒ}rÇF(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÝhjÞ]rÈFjçX Linux BuildrÉF…�rÊF}rËF(jÅjÆFjÆjÄFubaubjò)�rÌF}rÍF(jÅXˆFor details on the Linux build process see the `IPC Install Guide for Linux `__.jÆj½FjÎjËDjÐjõjÒ}rÎF(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rÏF(jçX/For details on the Linux build process see the rÐF…�rÑF}rÒF(jÅX/For details on the Linux build process see the jÆjÌFubjû)�rÓF}rÔF(jÅXX`IPC Install Guide for Linux `__jÒ}rÕF(UnameXIPC Install Guide for LinuxjX6index_Foundational_Components.html#linux-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjÌFjÞ]rÖFjçXIPC Install Guide for Linuxr×F…�rØF}rÙF(jÅUjÆjÓFubajÐjÿubjçX.…�rÚF}rÛF(jÅX.jÆjÌFubeubjÇ)�rÜF}rÝF(jÅUjÆj½FjÎjËDjÐjÑjÒ}rÞF(jÔ]jÕ]jÖ]j×]rßFUtry-cleaning-firstràFajÚ]ráFj/aujÜK”jÝhjÞ]râF(jà)�rãF}räF(jÅXTry Cleaning FirstråFjÆjÜFjÎjËDjÐjäjÒ}ræF(jÔ]jÕ]jÖ]j×]jÚ]ujÜK”jÝhjÞ]rçFjçXTry Cleaning FirstrèF…�réF}rêF(jÅjåFjÆjãFubaubjò)�rëF}rìF(jÅXÞSometimes the generated autotools makefiles can get confused, especially if your often switching from one platform to another, between static and dynamic libraries, etc. And sometimes simply cleaning and retrying can help.ríFjÆjÜFjÎjËDjÐjõjÒ}rîF(jÔ]jÕ]jÖ]j×]jÚ]ujÜK–jÝhjÞ]rïFjçXÞSometimes the generated autotools makefiles can get confused, especially if your often switching from one platform to another, between static and dynamic libraries, etc. And sometimes simply cleaning and retrying can help.rðF…�rñF}ròF(jÅjíFjÆjëFubaubjò)�róF}rôF(jÅXp"make clean" does a 'light' cleaning, leaving the autotools-generated config files so you can just retry 'make':rõFjÆjÜFjÎjËDjÐjõjÒ}röF(jÔ]jÕ]jÖ]j×]jÚ]ujÜK›jÝhjÞ]r÷FjçXp"make clean" does a 'light' cleaning, leaving the autotools-generated config files so you can just retry 'make':røF…�rùF}rúF(jÅjõFjÆjóFubaubj)�rûF}rüF(jÅX# make clean # # makejÆjÜFjÎjËDjÐjjÒ}rýF(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÇjÝhjÞ]rþFjçX# make clean # # makerÿF…�rG}rG(jÅUjÆjûFubaubjò)�rG}rG(jÅXh"make distclean" does a more aggressive clean, requiring you to re-run the config before running 'make':rGjÆjÜFjÎjËDjÐjõjÒ}rG(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÝhjÞ]rGjçXh"make distclean" does a more aggressive clean, requiring you to re-run the config before running 'make':rG…�rG}r G(jÅjGjÆjGubaubj)�r G}r G(jÅX1# make distclean # # make -f ipc-linux.mak # makejÆjÜFjÎjËDjÐjjÒ}r G(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÐjÝhjÞ]r GjçX1# make distclean # # make -f ipc-linux.mak # makerG…�rG}rG(jÅUjÆj GubaubeubeubjÇ)�rG}rG(jÅUjÆjFjÎjËDjÐjÑjÒ}rG(jÔ]jÕ]jÖ]j×]rGU qnx-buildrGajÚ]rGj`aujÜK¯jÝhjÞ]rG(jà)�rG}rG(jÅX QNX BuildrGjÆjGjÎjËDjÐjäjÒ}rG(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¯jÝhjÞ]rGjçX QNX BuildrG…�rG}rG(jÅjGjÆjGubaubjò)�r G}r!G(jÅX‚For details on the QNX build process see the `IPC Install Guide for QNX `__.jÆjGjÎjËDjÐjõjÒ}r"G(jÔ]jÕ]jÖ]j×]jÚ]ujÜK±jÝhjÞ]r#G(jçX-For details on the QNX build process see the r$G…�r%G}r&G(jÅX-For details on the QNX build process see the jÆj Gubjû)�r'G}r(G(jÅXT`IPC Install Guide for QNX `__jÒ}r)G(UnameXIPC Install Guide for QNXjX4index_Foundational_Components.html#qnx-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj GjÞ]r*GjçXIPC Install Guide for QNXr+G…�r,G}r-G(jÅUjÆj'GubajÐjÿubjçX.…�r.G}r/G(jÅX.jÆj GubeubjÇ)�r0G}r1G(jÅUjKjÆjGjÎjËDjÐjÑjÒ}r2G(jÔ]r3Gj#FajÕ]jÖ]j×]r4GUid41r5GajÚ]ujÜKµjÝhjÞ]r6G(jà)�r7G}r8G(jÅXHow do I change the Memory Map?r9GjÆj0GjÎjËDjÐjäjÒ}r:G(jÔ]jÕ]jÖ]j×]jÚ]ujÜKµjÝhjÞ]r;GjçXHow do I change the Memory Map?rG(jÅj9GjÆj7Gubaubjò)�r?G}r@G(jÅXCFor the standpoint of the QNX OS, it owns all external memory by default. When the 'ipc' resource manager is launched and the slave cores are loaded, the resource table in each slave executable is read and interpreted. All resource entries of type CARVEOUT are automatically allocated from QNX-owned memory. Similarly, the first DEVMEM entry always corresponds to the vring memory used by MessageQ and rpmsg_rpc, and is also automatically allocated from QNX-owned memory, regardless of which physical memory address is specified in the resource table entry. If any other DEVMEM resource entry resides in external memory, QNX would need to be told to not use that particular range. This is usually done using the '-r' flag in the startup command in the 'build' file of the QNX IFS (refer to your QNX BSP documentation for more details):rAGjÆj0GjÎjËDjÐjõjÒ}rBG(jÔ]jÕ]jÖ]j×]jÚ]ujÜK·jÝhjÞ]rCGjçXCFor the standpoint of the QNX OS, it owns all external memory by default. When the 'ipc' resource manager is launched and the slave cores are loaded, the resource table in each slave executable is read and interpreted. All resource entries of type CARVEOUT are automatically allocated from QNX-owned memory. Similarly, the first DEVMEM entry always corresponds to the vring memory used by MessageQ and rpmsg_rpc, and is also automatically allocated from QNX-owned memory, regardless of which physical memory address is specified in the resource table entry. If any other DEVMEM resource entry resides in external memory, QNX would need to be told to not use that particular range. This is usually done using the '-r' flag in the startup command in the 'build' file of the QNX IFS (refer to your QNX BSP documentation for more details):rDG…�rEG}rFG(jÅjAGjÆj?Gubaubj)�rGG}rHG(jÅXAstartup-dra74x-vayu-evm -r0xBA300000,0x5A00000 -v -n852,668 -W -GjÆj0GjÎjËDjÐjjÒ}rIG(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMíjÝhjÞ]rJGjçXAstartup-dra74x-vayu-evm -r0xBA300000,0x5A00000 -v -n852,668 -W -GrKG…�rLG}rMG(jÅUjÆjGGubaubjò)�rNG}rOG(jÅX{For example, the above '-r' flag would reserve 0x5A00000 bytes starting at physical address 0xBA300000 from being used by the QNX OS on the DRA74x. This technique is often used for the memory range used by shmemallocator (resource table entry PHYS_MEM_IOBUFS) and/or by SharedRegions. After modifying the startup flags, rebuild the QNX IFS and use the new one to boot your board.rPGjÆj0GjÎjËDjÐjõjÒ}rQG(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÈjÝhjÞ]rRGjçX{For example, the above '-r' flag would reserve 0x5A00000 bytes starting at physical address 0xBA300000 from being used by the QNX OS on the DRA74x. This technique is often used for the memory range used by shmemallocator (resource table entry PHYS_MEM_IOBUFS) and/or by SharedRegions. After modifying the startup flags, rebuild the QNX IFS and use the new one to boot your board.rSG…�rTG}rUG(jÅjPGjÆjNGubaubeubjÇ)�rVG}rWG(jÅUjÆjGjÎjËDjÐjÑjÒ}rXG(jÔ]jÕ]jÖ]j×]rYGU4how-do-i-configure-the-memory-used-by-shmemallocatorrZGajÚ]r[GhðaujÜKÐjÝhjÞ]r\G(jà)�r]G}r^G(jÅX5How do I configure the memory used by shmemallocator?r_GjÆjVGjÎjËDjÐjäjÒ}r`G(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÐjÝhjÞ]raGjçX5How do I configure the memory used by shmemallocator?rbG…�rcG}rdG(jÅj_GjÆj]Gubaubjò)�reG}rfG(jÅXºshmemallocator stands for "Shared Memory Allocator". It is a utility that is built alongside the core IPC driver whenever the IPC product is built. The user can optionally use this utility to allocate contiguous shared memory for exchanging data between the host and the slave cores. The memory it allocates from is defined in \qnx\src\ipc3x_dev\sharedmemallocator\resmgr\SharedMemoryAllocator.c thru some #define statements:jÆjVGjÎjËDjÐjõjÒ}rgG(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÒjÝhjÞ]rhGjçX´shmemallocator stands for "Shared Memory Allocator". It is a utility that is built alongside the core IPC driver whenever the IPC product is built. The user can optionally use this utility to allocate contiguous shared memory for exchanging data between the host and the slave cores. The memory it allocates from is defined in qnxsrcipc3x_devsharedmemallocatorresmgrSharedMemoryAllocator.c thru some #define statements:riG…�rjG}rkG(jÅXºshmemallocator stands for "Shared Memory Allocator". It is a utility that is built alongside the core IPC driver whenever the IPC product is built. The user can optionally use this utility to allocate contiguous shared memory for exchanging data between the host and the slave cores. The memory it allocates from is defined in \qnx\src\ipc3x_dev\sharedmemallocator\resmgr\SharedMemoryAllocator.c thru some #define statements:jÆjeGubaubj)�rlG}rmG(jÅXL#define SH_MEM_BLOCK1_START 0xBA300000 #define SH_MEM_BLOCK1_SIZE 0x5A00000jÆjVGjÎjËDjÐjjÒ}rnG(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]roGjçXL#define SH_MEM_BLOCK1_START 0xBA300000 #define SH_MEM_BLOCK1_SIZE 0x5A00000rpG…�rqG}rrG(jÅUjÆjlGubaubjò)�rsG}rtG(jÅX*Typically, even though the code base (as of IPC 3.35) supports up to two blocks, only block 1 is used when allocating memory using the function SHM_alloc(), as shown in the IPC examples. When adjusting this block, It is important that the memory matches a corresponding DEVMEM entry (PHYS_MEM_IOBUFS) in the resource table so that this memory is mapped to the slave core's MMU, and that the memory is reserved in the QNX IFS startup command as per `"How do I change the Memory Map?" `__.jÆjVGjÎjËDjÐjõjÒ}ruG(jÔ]jÕ]jÖ]j×]jÚ]ujÜKßjÝhjÞ]rvG(jçXÀTypically, even though the code base (as of IPC 3.35) supports up to two blocks, only block 1 is used when allocating memory using the function SHM_alloc(), as shown in the IPC examples. When adjusting this block, It is important that the memory matches a corresponding DEVMEM entry (PHYS_MEM_IOBUFS) in the resource table so that this memory is mapped to the slave core's MMU, and that the memory is reserved in the QNX IFS startup command as per rwG…�rxG}ryG(jÅXÀTypically, even though the code base (as of IPC 3.35) supports up to two blocks, only block 1 is used when allocating memory using the function SHM_alloc(), as shown in the IPC examples. When adjusting this block, It is important that the memory matches a corresponding DEVMEM entry (PHYS_MEM_IOBUFS) in the resource table so that this memory is mapped to the slave core's MMU, and that the memory is reserved in the QNX IFS startup command as per jÆjsGubjû)�rzG}r{G(jÅXi`"How do I change the Memory Map?" `__jÒ}r|G(UnameX!"How do I change the Memory Map?"jXAindex_Foundational_Components.html#how-do-i-change-the-memory-mapj×]jÖ]jÔ]jÕ]jÚ]ujÆjsGjÞ]r}GjçX!"How do I change the Memory Map?"r~G…�rG}r€G(jÅUjÆjzGubajÐjÿubjçX.…�r�G}r‚G(jÅX.jÆjsGubeubeubeubjÇ)�rƒG}r„G(jÅUjÆjFjÎjËDjÐjÑjÒ}r…G(jÔ]jÕ]jÖ]j×]r†GUruntime-troubleshootingr‡GajÚ]rˆGhaujÜKéjÝhjÞ]r‰G(jà)�rŠG}r‹G(jÅXRuntime TroubleshootingrŒGjÆjƒGjÎjËDjÐjäjÒ}r�G(jÔ]jÕ]jÖ]j×]jÚ]ujÜKéjÝhjÞ]rŽGjçXRuntime Troubleshootingr�G…�r�G}r‘G(jÅjŒGjÆjŠGubaubjÇ)�r’G}r“G(jÅUjÆjƒGjÎjËDjÐjÑjÒ}r”G(jÔ]jÕ]jÖ]j×]r•GU-linux-spurious-msg-received-with-no-recepientr–GajÚ]r—Gj€aujÜKìjÝhjÞ]r˜G(jà)�r™G}ršG(jÅX/Linux spurious "msg received with no recepient"r›GjÆj’GjÎjËDjÐjäjÒ}rœG(jÔ]jÕ]jÖ]j×]jÚ]ujÜKìjÝhjÞ]r�GjçX/Linux spurious "msg received with no recepient"ržG…�rŸG}r G(jÅj›GjÆj™Gubaubjò)�r¡G}r¢G(jÅXPWhen a Linux-loaded slave communicates to the Linux host, it sends a msg using an rpmsg "channel". Sometimes there's no one listening on that channel, for example if there are no host-side IPC applications running. When a host-side application calls Ipc_start(), these channels start to be monitored, but until then, no one's listening.r£GjÆj’GjÎjËDjÐjõjÒ}r¤G(jÔ]jÕ]jÖ]j×]jÚ]ujÜKîjÝhjÞ]r¥GjçXPWhen a Linux-loaded slave communicates to the Linux host, it sends a msg using an rpmsg "channel". Sometimes there's no one listening on that channel, for example if there are no host-side IPC applications running. When a host-side application calls Ipc_start(), these channels start to be monitored, but until then, no one's listening.r¦G…�r§G}r¨G(jÅj£GjÆj¡Gubaubjò)�r©G}rªG(jÅXiWhen, for example, a slave does a NameServer lookup, this query is often sent to all cores in the system. If there's no host-side application running, there's no one listening for these msgs, and when the underlying rpmsg driver detects an arriving msg that no one's listening for, it issues a dev_warn() call to report this, drops the message, and moves along.r«GjÆj’GjÎjËDjÐjõjÒ}r¬G(jÔ]jÕ]jÖ]j×]jÚ]ujÜKôjÝhjÞ]r­GjçXiWhen, for example, a slave does a NameServer lookup, this query is often sent to all cores in the system. If there's no host-side application running, there's no one listening for these msgs, and when the underlying rpmsg driver detects an arriving msg that no one's listening for, it issues a dev_warn() call to report this, drops the message, and moves along.r®G…�r¯G}r°G(jÅj«GjÆj©Gubaubjò)�r±G}r²G(jÅX˜These warnings are often benign, and sometimes just reflect chatter between the various slaves. Perhaps the dev_warn() should be changed to a dev_dbg().r³GjÆj’GjÎjËDjÐjõjÒ}r´G(jÔ]jÕ]jÖ]j×]jÚ]ujÜKûjÝhjÞ]rµGjçX˜These warnings are often benign, and sometimes just reflect chatter between the various slaves. Perhaps the dev_warn() should be changed to a dev_dbg().r¶G…�r·G}r¸G(jÅj³GjÆj±Gubaubjò)�r¹G}rºG(jÅX„And yes, that's a typo - 'recepient' is really spelled 'recipient'. Submit a patch and get your initials into the Linux kernel.  :)r»GjÆj’GjÎjËDjÐjõjÒ}r¼G(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÿjÝhjÞ]r½GjçX„And yes, that's a typo - 'recepient' is really spelled 'recipient'. Submit a patch and get your initials into the Linux kernel.  :)r¾G…�r¿G}rÀG(jÅj»GjÆj¹GubaubeubjÇ)�rÁG}rÂG(jÅUjÆjƒGjÎjËDjÐjÑjÒ}rÃG(jÔ]jÕ]jÖ]j×]rÄGUdisabling-auto-recoveryrÅGajÚ]rÆGjaujÜMjÝhjÞ]rÇG(jà)�rÈG}rÉG(jÅXDisabling auto-recoveryrÊGjÆjÁGjÎjËDjÐjäjÒ}rËG(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rÌGjçXDisabling auto-recoveryrÍG…�rÎG}rÏG(jÅjÊGjÆjÈGubaubjò)�rÐG}rÑG(jÅXÿWhen the HLOS detects a fault on a slave (e.g. an MMU fault), it reloads and restarts the slave. Sometimes, especially when debugging slave-side errors, it's useful to disable this feature so the state of the crashed slave isn't reset and can be examined.rÒGjÆjÁGjÎjËDjÐjõjÒ}rÓG(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rÔGjçXÿWhen the HLOS detects a fault on a slave (e.g. an MMU fault), it reloads and restarts the slave. Sometimes, especially when debugging slave-side errors, it's useful to disable this feature so the state of the crashed slave isn't reset and can be examined.rÕG…�rÖG}r×G(jÅjÒGjÆjÐGubaubjÇ)�rØG}rÙG(jÅUjKjÆjÁGjÎjËDjÐjÑjÒ}rÚG(jÔ]rÛGXlinuxrÜGajÕ]jÖ]j×]rÝGUid42rÞGajÚ]ujÜM jÝhjÞ]rßG(jà)�ràG}ráG(jÅXLinuxrâGjÆjØGjÎjËDjÐjäjÒ}rãG(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]räGjçXLinuxråG…�ræG}rçG(jÅjâGjÆjàGubaubjò)�rèG}réG(jÅXæYou can disable recovery of a given remote processor using remoteproc's debugfs features. First, find the slave you want to disable (e.g. ``cat /debug/remoteproc/remoteproc0/name``) and then echo "disabled" to the "recovery" file.jÆjØGjÎjËDjÐjõjÒ}rêG(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rëG(jçXŠYou can disable recovery of a given remote processor using remoteproc's debugfs features. First, find the slave you want to disable (e.g. rìG…�ríG}rîG(jÅXŠYou can disable recovery of a given remote processor using remoteproc's debugfs features. First, find the slave you want to disable (e.g. jÆjèGubj )�rïG}rðG(jÅX*``cat /debug/remoteproc/remoteproc0/name``jÒ}rñG(jÔ]jÕ]jÖ]j×]jÚ]ujÆjèGjÞ]ròGjçX&cat /debug/remoteproc/remoteproc0/nameróG…�rôG}rõG(jÅUjÆjïGubajÐj¨ubjçX2) and then echo "disabled" to the "recovery" file.röG…�r÷G}røG(jÅX2) and then echo "disabled" to the "recovery" file.jÆjèGubeubjò)�rùG}rúG(jÅX>For example, if "remoteproc0" is the core you want to disable:rûGjÆjØGjÎjËDjÐjõjÒ}rüG(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rýGjçX>For example, if "remoteproc0" is the core you want to disable:rþG…�rÿG}rH(jÅjûGjÆjùGubaubj)�rH}rH(jÅX@target# echo "disabled" > /debug/remoteproc/remoteproc0/recoveryjÆjØGjÎjËDjÐjjÒ}rH(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM=jÝhjÞ]rHjçX@target# echo "disabled" > /debug/remoteproc/remoteproc0/recoveryrH…�rH}rH(jÅUjÆjHubaubeubjÇ)�rH}r H(jÅUjKjÆjÁGjÎjËDjÐjÑjÒ}r H(jÔ]r HXqnxr HajÕ]jÖ]j×]r HUid43rHajÚ]ujÜMjÝhjÞ]rH(jà)�rH}rH(jÅXQNXrHjÆjHjÎjËDjÐjäjÒ}rH(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rHjçXQNXrH…�rH}rH(jÅjHjÆjHubaubjò)�rH}rH(jÅX…Starting in IPC 3.22, you can simply throw the '-d' option when launching the ipc resource manager to disable the recovery mechanism.rHjÆjHjÎjËDjÐjõjÒ}rH(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rHjçX…Starting in IPC 3.22, you can simply throw the '-d' option when launching the ipc resource manager to disable the recovery mechanism.rH…�rH}rH(jÅjHjÆjHubaubjò)�r H}r!H(jÅX‡If you are using IPC 3.21 or older, there are a couple of tricks to prevent the slaves from being automatically reloaded and restarted:r"HjÆjHjÎjËDjÐjõjÒ}r#H(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r$HjçX‡If you are using IPC 3.21 or older, there are a couple of tricks to prevent the slaves from being automatically reloaded and restarted:r%H…�r&H}r'H(jÅj"HjÆj Hubaubjt)�r(H}r)H(jÅUjÆjHjÎjËDjÐjwjÒ}r*H(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM!jÝhjÞ]r+H(j{)�r,H}r-H(jÅXÊIf you have the QNX Momentics IDE installed, you can set a breakpoint on the entry of ipc_recover() in /qnx/src/ipc3x_dev/ti/syslink/build/Qnx/resmgr/syslink_main.c. This function is the callback that is invoked when an MMU fault occurs to perform the reload. Halting the host at that point would prevent it from reloading the DSP, and gives you time to inspect the DSP memory. This is nice because it does not necessitate a rebuild of IPC. jÆj(HjÎjËDjÐjjÒ}r.H(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r/Hjò)�r0H}r1H(jÅXÉIf you have the QNX Momentics IDE installed, you can set a breakpoint on the entry of ipc_recover() in /qnx/src/ipc3x_dev/ti/syslink/build/Qnx/resmgr/syslink_main.c. This function is the callback that is invoked when an MMU fault occurs to perform the reload. Halting the host at that point would prevent it from reloading the DSP, and gives you time to inspect the DSP memory. This is nice because it does not necessitate a rebuild of IPC.r2HjÆj,HjÎjËDjÐjõjÒ}r3H(jÔ]jÕ]jÖ]j×]jÚ]ujÜM!jÞ]r4HjçXÉIf you have the QNX Momentics IDE installed, you can set a breakpoint on the entry of ipc_recover() in /qnx/src/ipc3x_dev/ti/syslink/build/Qnx/resmgr/syslink_main.c. This function is the callback that is invoked when an MMU fault occurs to perform the reload. Halting the host at that point would prevent it from reloading the DSP, and gives you time to inspect the DSP memory. This is nice because it does not necessitate a rebuild of IPC.r5H…�r6H}r7H(jÅj2HjÆj0Hubaubaubj{)�r8H}r9H(jÅXâIf you do not have access to the QNX debugger, you can rebuild IPC after commenting out the lines in ipc_recover(), and use the modified IPC resource manager binary for debugging. That would prevent it from reloading the DSP. jÆj(HjÎjËDjÐjjÒ}r:H(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r;Hjò)�rHjÆj8HjÎjËDjÐjõjÒ}r?H(jÔ]jÕ]jÖ]j×]jÚ]ujÜM*jÞ]r@HjçXáIf you do not have access to the QNX debugger, you can rebuild IPC after commenting out the lines in ipc_recover(), and use the modified IPC resource manager binary for debugging. That would prevent it from reloading the DSP.rAH…�rBH}rCH(jÅj>HjÆjI(jÅUjÆj9IubajÐjâubjçX lad_dra7xx -l log.txt -p 777r?I…�r@I}rAI(jÅX lad_dra7xx -l log.txt -p 777jÆj5Iubeubaubaubjò)�rBI}rCI(jÅXYou can also run both LAD and user application as root(su), thus not requiring permission to be properly set when starting LAD.rDIjÆjÌHjÎjËDjÐjõjÒ}rEI(jÔ]jÕ]jÖ]j×]jÚ]ujÜM~jÝhjÞ]rFIjçXYou can also run both LAD and user application as root(su), thus not requiring permission to be properly set when starting LAD.rGI…�rHI}rII(jÅjDIjÆjBIubaubeubjÇ)�rJI}rKI(jÅUjÆjrHjÎjËDjÐjÑjÒ}rLI(jÔ]jÕ]jÖ]j×]rMIU%lad-reports-gatemp-ti-dgate-not-foundrNIajÚ]rOIj'aujÜM‚jÝhjÞ]rPI(jà)�rQI}rRI(jÅX'LAD reports \_GateMP_TI_dGate not foundrSIjÆjJIjÎjËDjÐjäjÒ}rTI(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‚jÝhjÞ]rUIjçX&LAD reports _GateMP_TI_dGate not foundrVI…�rWI}rXI(jÅX'LAD reports \_GateMP_TI_dGate not foundrYIjÆjQIubaubjò)�rZI}r[I(jÅXkWhen the -g option is thrown, the LAD log may show an error about not finding the symbol \_GateMP_TI_dGate:jÆjJIjÎjËDjÐjõjÒ}r\I(jÔ]jÕ]jÖ]j×]jÚ]ujÜM„jÝhjÞ]r]IjçXjWhen the -g option is thrown, the LAD log may show an error about not finding the symbol _GateMP_TI_dGate:r^I…�r_I}r`I(jÅXkWhen the -g option is thrown, the LAD log may show an error about not finding the symbol \_GateMP_TI_dGate:jÆjZIubaubj)�raI}rbI(jÅX¾[22.583839] NameServer_getRemote: value for GateMP:_GateMP_TI_dGate not found. [22.583852] GateMP_attach: failed to open default gate on procId 4 [22.583862] status = -5 [22.583871] DONEjÆjJIjÎjËDjÐjjÒ}rcI(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM°jÝhjÞ]rdIjçX¾[22.583839] NameServer_getRemote: value for GateMP:_GateMP_TI_dGate not found. [22.583852] GateMP_attach: failed to open default gate on procId 4 [22.583862] status = -5 [22.583871] DONEreI…�rfI}rgI(jÅUjÆjaIubaubjò)�rhI}riI(jÅXjThis is because LAD is looking for the default GateMP instance, and did not find it. On the DRA7xx, verifyrjIjÆjJIjÎjËDjÐjõjÒ}rkI(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŽjÝhjÞ]rlIjçXjThis is because LAD is looking for the default GateMP instance, and did not find it. On the DRA7xx, verifyrmI…�rnI}roI(jÅjjIjÆjhIubaubj )�rpI}rqI(jÅUjÆjJIjÎjËDjÐj jÒ}rrI(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM‘jÝhjÞ]rsI(j{)�rtI}ruI(jÅXaSharedRegion 0 is defined on DSP1. GateMP implementation on the host requires use of SharedRegionjÆjpIjÎjËDjÐjjÒ}rvI(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rwIjò)�rxI}ryI(jÅXaSharedRegion 0 is defined on DSP1. GateMP implementation on the host requires use of SharedRegionrzIjÆjtIjÎjËDjÐjõjÒ}r{I(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‘jÞ]r|IjçXaSharedRegion 0 is defined on DSP1. GateMP implementation on the host requires use of SharedRegionr}I…�r~I}rI(jÅjzIjÆjxIubaubaubj{)�r€I}r�I(jÅX#DSP1 is the owner of SharedRegion 0r‚IjÆjpIjÎjËDjÐjjÒ}rƒI(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r„Ijò)�r…I}r†I(jÅj‚IjÆj€IjÎjËDjÐjõjÒ}r‡I(jÔ]jÕ]jÖ]j×]jÚ]ujÜM“jÞ]rˆIjçX#DSP1 is the owner of SharedRegion 0r‰I…�rŠI}r‹I(jÅj‚IjÆj…Iubaubaubj{)�rŒI}r�I(jÅXTIpc_start() is called on DSP1. This ensures the default GateMP instance is created. jÆjpIjÎjËDjÐjjÒ}rŽI(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�Ijò)�r�I}r‘I(jÅXSIpc_start() is called on DSP1. This ensures the default GateMP instance is created.r’IjÆjŒIjÎjËDjÐjõjÒ}r“I(jÔ]jÕ]jÖ]j×]jÚ]ujÜM”jÞ]r”IjçXSIpc_start() is called on DSP1. This ensures the default GateMP instance is created.r•I…�r–I}r—I(jÅj’IjÆj�Iubaubaubeubjc)�r˜I}r™I(jÅUjÆjJIjÎjËDjÐjfjÒ}ršI(jÔ]jÕ]jÖ]j×]jÚ]ujÜM—jÝhjÞ]r›Iji)�rœI}r�I(jÅUjlKjÆj˜IjÎjËDjÐjÜjÒ}ržI(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�rŸI}r I(jÅUjÆj¹DjÎjËDjÐjÑjÒ}r¡I(jÔ]jÕ]jÖ]j×]r¢IUhlos-loading-failuresr£IajÚ]r¤IjMaujÜMšjÝhjÞ]r¥I(jà)�r¦I}r§I(jÅXHLOS loading failuresr¨IjÆjŸIjÎjËDjÐjäjÒ}r©I(jÔ]jÕ]jÖ]j×]jÚ]ujÜMšjÝhjÞ]rªIjçXHLOS loading failuresr«I…�r¬I}r­I(jÅj¨IjÆj¦IubaubjÇ)�r®I}r¯I(jÅUjÆjŸIjÎjËDjÐjÑjÒ}r°I(jÔ]jÕ]jÖ]j×]r±IUbios-side-virtqueue-assertionsr²IajÚ]r³IjaujÜM�jÝhjÞ]r´I(jà)�rµI}r¶I(jÅXBIOS-side VirtQueue assertionsr·IjÆj®IjÎjËDjÐjäjÒ}r¸I(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÝhjÞ]r¹IjçXBIOS-side VirtQueue assertionsrºI…�r»I}r¼I(jÅj·IjÆjµIubaubjò)�r½I}r¾I(jÅXŽThe slave loads ok, but communication fails, and in the slave trace output you find the following assert (line number and timestamp may vary):r¿IjÆj®IjÎjËDjÐjõjÒ}rÀI(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŸjÝhjÞ]rÁIjçXŽThe slave loads ok, but communication fails, and in the slave trace output you find the following assert (line number and timestamp may vary):rÂI…�rÃI}rÄI(jÅj¿IjÆj½Iubaubj)�rÅI}rÆI(jÅXÜ[ 0.000] [t=0x00d090ce] ti.ipc.family.vayu.VirtQueue: ERROR: "VirtQueue.c", line 296: [ 0.000] ti.ipc.family.vayu.VirtQueue: "VirtQueue.c", line 296: [ 0.000] xdc.runtime.Error.raise: terminating executionjÆj®IjÎjËDjÐjjÒ}rÇI(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÌjÝhjÞ]rÈIjçXÜ[ 0.000] [t=0x00d090ce] ti.ipc.family.vayu.VirtQueue: ERROR: "VirtQueue.c", line 296: [ 0.000] ti.ipc.family.vayu.VirtQueue: "VirtQueue.c", line 296: [ 0.000] xdc.runtime.Error.raise: terminating executionrÉI…�rÊI}rËI(jÅUjÆjÅIubaubjò)�rÌI}rÍI(jÅXThis error often indicates a mismatch in VRING addresses between the HLOS side and the slave. Often this is because a `custom resource table `__ was provided and the VRING addresses specified don't match the HLOS-side addresses.jÆj®IjÎjËDjÐjõjÒ}rÎI(jÔ]jÕ]jÖ]j×]jÚ]ujÜM©jÝhjÞ]rÏI(jçXvThis error often indicates a mismatch in VRING addresses between the HLOS side and the slave. Often this is because a rÐI…�rÑI}rÒI(jÅXvThis error often indicates a mismatch in VRING addresses between the HLOS side and the slave. Often this is because a jÆjÌIubjû)�rÓI}rÔI(jÅXT`custom resource table `__jÒ}rÕI(UnameXcustom resource tablejX8index_Foundational_Components.html#resource-custom-tablej×]jÖ]jÔ]jÕ]jÚ]ujÆjÌIjÞ]rÖIjçXcustom resource tabler×I…�rØI}rÙI(jÅUjÆjÓIubajÐjÿubjçXT was provided and the VRING addresses specified don't match the HLOS-side addresses.rÚI…�rÛI}rÜI(jÅXT was provided and the VRING addresses specified don't match the HLOS-side addresses.jÆjÌIubeubeubjÇ)�rÝI}rÞI(jÅUjÆjŸIjÎjËDjÐjÑjÒ}rßI(jÔ]jÕ]jÖ]j×]ràIUPqnx-ipc-driver-takes-a-long-time-to-load-the-slave-executable-s-when-g-is-thrownráIajÚ]râIjWaujÜM¯jÝhjÞ]rãI(jà)�räI}råI(jÅXTQNX IPC driver takes a long time to load the slave executable(s) when '-g' is thrownræIjÆjÝIjÎjËDjÐjäjÒ}rçI(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¯jÝhjÞ]rèIjçXTQNX IPC driver takes a long time to load the slave executable(s) when '-g' is thrownréI…�rêI}rëI(jÅjæIjÆjäIubaubjò)�rìI}ríI(jÅXThe '-g' option to the IPC driver is used to enable optional support for GateMP on the host processor. During the setup of GateMP module, it polls the slave processors for the default gate instance, which is created by the owner of SharedRegion 0. If none of the cores loaded has created the default gate, the driver will continue polling and eventually timeout after 2 seconds, which means the loading procedure may be delayed by 2 seconds as a consequence. To better suit a given application, one can adjust the polling interval and the timeout duration in the file /qnx/src/ipc3x_dev/ti/syslink/ipc/hlos/knl/GateMP_daemon.c (this code excerpt may look slightly different depending on the version of IPC you are looking at, but the idea is the same):rîIjÆjÝIjÎjËDjÐjõjÒ}rïI(jÔ]jÕ]jÖ]j×]jÚ]ujÜM±jÝhjÞ]rðIjçXThe '-g' option to the IPC driver is used to enable optional support for GateMP on the host processor. During the setup of GateMP module, it polls the slave processors for the default gate instance, which is created by the owner of SharedRegion 0. If none of the cores loaded has created the default gate, the driver will continue polling and eventually timeout after 2 seconds, which means the loading procedure may be delayed by 2 seconds as a consequence. To better suit a given application, one can adjust the polling interval and the timeout duration in the file /qnx/src/ipc3x_dev/ti/syslink/ipc/hlos/knl/GateMP_daemon.c (this code excerpt may look slightly different depending on the version of IPC you are looking at, but the idea is the same):rñI…�ròI}róI(jÅjîIjÆjìIubaubj)�rôI}rõI(jÅXî// Timeout duration is SETUP_TIMEOUT * polling interval #define SETUP_TIMEOUT 2 Int GateMP_setup(Int32 * sr0ProcId) { ... UInt timeout = SETUP_TIMEOUT; ... if (status == GateMP_S_SUCCESS) { /* The default gate creator is the owner of SR0 */ while (((status = GateMP_openDefaultGate(&GateMP_module->defaultGate, &procId)) == GateMP_E_NOTFOUND) && (timeout > 0)) { sleep(1); // polling interval timeout--; } ... }jÆjÝIjÎjËDjÐjjÒ}röI(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜM¾jÝhjÞ]r÷IjçXî// Timeout duration is SETUP_TIMEOUT * polling interval #define SETUP_TIMEOUT 2 Int GateMP_setup(Int32 * sr0ProcId) { ... UInt timeout = SETUP_TIMEOUT; ... if (status == GateMP_S_SUCCESS) { /* The default gate creator is the owner of SR0 */ while (((status = GateMP_openDefaultGate(&GateMP_module->defaultGate, &procId)) == GateMP_E_NOTFOUND) && (timeout > 0)) { sleep(1); // polling interval timeout--; } ... }røI…�rùI}rúI(jÅUjÆjôIubaubjò)�rûI}rüI(jÅXßIn the case where the owner of SharedRegion 0 is not being loaded by the IPC driver, reducing the timeout duration (SETUP_TIMEOUT) may be useful to reduce the delay that results when the driver cannot find the default gate.rýIjÆjÝIjÎjËDjÐjõjÒ}rþI(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÒjÝhjÞ]rÿIjçXßIn the case where the owner of SharedRegion 0 is not being loaded by the IPC driver, reducing the timeout duration (SETUP_TIMEOUT) may be useful to reduce the delay that results when the driver cannot find the default gate.rJ…�rJ}rJ(jÅjýIjÆjûIubaubjò)�rJ}rJ(jÅXþIn the case where the owner of SharedRegion 0 is indeed loaded by the IPC driver, using usleep() instead of sleep() to reduce the polling interval can be beneficial in cases where the initial poll happens before the slave core (owner of SR0) has even got to the point in its initialization to create the default gate. A faster polling rate would ensure that a second or a third poll is performed more quickly thereby giving a chance for the driver to move on. On the other hand, reducing the polling interval too much may cause the driver to swamp the slave cores with gate lookup requests, counterproductively slowing down the loading process. As a rule of thumb, it is recommended to keep the polling interval above 1 ms in modern platforms at the time of writing.rJjÆjÝIjÎjËDjÐjõjÒ}rJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM×jÝhjÞ]rJjçXþIn the case where the owner of SharedRegion 0 is indeed loaded by the IPC driver, using usleep() instead of sleep() to reduce the polling interval can be beneficial in cases where the initial poll happens before the slave core (owner of SR0) has even got to the point in its initialization to create the default gate. A faster polling rate would ensure that a second or a third poll is performed more quickly thereby giving a chance for the driver to move on. On the other hand, reducing the polling interval too much may cause the driver to swamp the slave cores with gate lookup requests, counterproductively slowing down the loading process. As a rule of thumb, it is recommended to keep the polling interval above 1 ms in modern platforms at the time of writing.rJ…�r J}r J(jÅjJjÆjJubaubjc)�r J}r J(jÅUjÆjÝIjÎjËDjÐjfjÒ}r J(jÔ]jÕ]jÖ]j×]jÚ]ujÜMãjÝhjÞ]rJji)�rJ}rJ(jÅUjlKjÆj JjÎjËDjÐjÜjÒ}rJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�rJ}rJ(jÅUjÆj¹DjÎjËDjÐjÑjÒ}rJ(jÔ]jÕ]jÖ]j×]rJUdisabling-runtime-auto-suspendrJajÚ]rJj›aujÜMæjÝhjÞ]rJ(jà)�rJ}rJ(jÅXDisabling runtime auto-suspendrJjÆjJjÎjËDjÐjäjÒ}rJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMæjÝhjÞ]rJjçXDisabling runtime auto-suspendrJ…�rJ}r J(jÅjJjÆjJubaubjò)�r!J}r"J(jÅX™When the HLOS detects that there has been no communication with the slave for a defined amount of time and the slave is idled and in standby state, then it can initiate suspend of the slave. Sometimes, the slave may be performing some tasks that don't require communication with the HLOS and does not wish to enter suspend. Or, it may be useful to temporarily disable auto-suspend while debugging some errors.r#JjÆjJjÎjËDjÐjõjÒ}r$J(jÔ]jÕ]jÖ]j×]jÚ]ujÜMèjÝhjÞ]r%JjçX™When the HLOS detects that there has been no communication with the slave for a defined amount of time and the slave is idled and in standby state, then it can initiate suspend of the slave. Sometimes, the slave may be performing some tasks that don't require communication with the HLOS and does not wish to enter suspend. Or, it may be useful to temporarily disable auto-suspend while debugging some errors.r&J…�r'J}r(J(jÅj#JjÆj!JubaubjÇ)�r)J}r*J(jÅUjKjÆjJjÎjËDjÐjÑjÒ}r+J(jÔ]r,JXlinuxr-JajÕ]jÖ]j×]r.JUid44r/JajÚ]ujÜMðjÝhjÞ]r0J(jà)�r1J}r2J(jÅXLinuxr3JjÆj)JjÎjËDjÐjäjÒ}r4J(jÔ]jÕ]jÖ]j×]jÚ]ujÜMðjÝhjÞ]r5JjçXLinuxr6J…�r7J}r8J(jÅj3JjÆj1Jubaubjò)�r9J}r:J(jÅX%The runtime suspend feature can be enabled or disabled by writing 'auto' or 'on' to the device's 'control' power field. The default is enabled. First, find the slave you want to disable (e.g. ``cat /debug/remoteproc/remoteproc0/name``) and then echo "on" to the device's "control" power field.jÆj)JjÎjËDjÐjõjÒ}r;J(jÔ]jÕ]jÖ]j×]jÚ]ujÜMòjÝhjÞ]rJ}r?J(jÅXÀThe runtime suspend feature can be enabled or disabled by writing 'auto' or 'on' to the device's 'control' power field. The default is enabled. First, find the slave you want to disable (e.g. jÆj9Jubj )�r@J}rAJ(jÅX*``cat /debug/remoteproc/remoteproc0/name``jÒ}rBJ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9JjÞ]rCJjçX&cat /debug/remoteproc/remoteproc0/namerDJ…�rEJ}rFJ(jÅUjÆj@JubajÐj¨ubjçX;) and then echo "on" to the device's "control" power field.rGJ…�rHJ}rIJ(jÅX;) and then echo "on" to the device's "control" power field.jÆj9Jubeubjò)�rJJ}rKJ(jÅX>For example, if "remoteproc0" is the core you want to disable:rLJjÆj)JjÎjËDjÐjõjÒ}rMJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMøjÝhjÞ]rNJjçX>For example, if "remoteproc0" is the core you want to disable:rOJ…�rPJ}rQJ(jÅjLJjÆjJJubaubj)�rRJ}rSJ(jÅXHtarget# echo "on" > /sys/bus/platform/devices/58820000.ipu/power/controljÆj)JjÎjËDjÐjjÒ}rTJ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM#jÝhjÞ]rUJjçXHtarget# echo "on" > /sys/bus/platform/devices/58820000.ipu/power/controlrVJ…�rWJ}rXJ(jÅUjÆjRJubaubeubjÇ)�rYJ}rZJ(jÅUjÆjJjÎjËDjÐjÑjÒ}r[J(jÔ]jÕ]jÖ]j×]r\JUsys-biosr]JajÚ]r^JjhaujÜMÿjÝhjÞ]r_J(jà)�r`J}raJ(jÅXSYS/BIOSrbJjÆjYJjÎjËDjÐjäjÒ}rcJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÿjÝhjÞ]rdJjçXSYS/BIOSreJ…�rfJ}rgJ(jÅjbJjÆj`Jubaubjò)�rhJ}riJ(jÅX‘Alternatively, the slave can choose to deny the runtime suspend request, preventing suspend. To prevent the slave from suspending, add the `IpcPower_hibernateLock() `__ call to the slave software. When you wish to allow suspend again, call `IpcPower_hibernateUnlock() `__. As long as the lock is held, the slave will deny all suspend requests from the HLOS.jÆjYJjÎjËDjÐjõjÒ}rjJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rkJ(jçX‹Alternatively, the slave can choose to deny the runtime suspend request, preventing suspend. To prevent the slave from suspending, add the rlJ…�rmJ}rnJ(jÅX‹Alternatively, the slave can choose to deny the runtime suspend request, preventing suspend. To prevent the slave from suspending, add the jÆjhJubjû)�roJ}rpJ(jÅX³`IpcPower_hibernateLock() `__jÒ}rqJ(UnameXIpcPower_hibernateLock()jX”http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_ipc_power_8h.html#aef7ede8453ad5a6a52623188c412f2fcj×]jÖ]jÔ]jÕ]jÚ]ujÆjhJjÞ]rrJjçXIpcPower_hibernateLock()rsJ…�rtJ}ruJ(jÅUjÆjoJubajÐjÿubjçXH call to the slave software. When you wish to allow suspend again, call rvJ…�rwJ}rxJ(jÅXH call to the slave software. When you wish to allow suspend again, call jÆjhJubjû)�ryJ}rzJ(jÅXµ`IpcPower_hibernateUnlock() `__jÒ}r{J(UnameXIpcPower_hibernateUnlock()jX”http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_ipc_power_8h.html#a2aa7348faba4bccb24da503fed3274f9j×]jÖ]jÔ]jÕ]jÚ]ujÆjhJjÞ]r|JjçXIpcPower_hibernateUnlock()r}J…�r~J}rJ(jÅUjÆjyJubajÐjÿubjçXV. As long as the lock is held, the slave will deny all suspend requests from the HLOS.r€J…�r�J}r‚J(jÅXV. As long as the lock is held, the slave will deny all suspend requests from the HLOS.jÆjhJubeubj)�rƒJ}r„J(jÅXNIpcPower_hibernateLock(); ... // Perform tasks ... IpcPower_hibernateUnlock();jÆjYJjÎjËDjÐjjÒ}r…J(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM2jÝhjÞ]r†JjçXNIpcPower_hibernateLock(); ... // Perform tasks ... IpcPower_hibernateUnlock();r‡J…�rˆJ}r‰J(jÅUjÆjƒJubaubjò)�rŠJ}r‹J(jÅXMIn this case, it is not necessary to also disable auto-suspend from the HLOS.rŒJjÆjYJjÎjËDjÐjõjÒ}r�J(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rŽJjçXMIn this case, it is not necessary to also disable auto-suspend from the HLOS.r�J…�r�J}r‘J(jÅjŒJjÆjŠJubaubeubjÇ)�r’J}r“J(jÅUjKjÆjJjÎjËDjÐjÑjÒ}r”J(jÔ]r•JXqnxr–JajÕ]jÖ]j×]r—JUid45r˜JajÚ]ujÜMjÝhjÞ]r™J(jà)�ršJ}r›J(jÅXQNXrœJjÆj’JjÎjËDjÐjäjÒ}r�J(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]ržJjçXQNXrŸJ…�r J}r¡J(jÅjœJjÆjšJubaubjò)�r¢J}r£J(jÅX-Runtime auto-suspend is not supported in QNX.r¤JjÆj’JjÎjËDjÐjõjÒ}r¥J(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r¦JjçX-Runtime auto-suspend is not supported in QNX.r§J…�r¨J}r©J(jÅj¤JjÆj¢Jubaubjc)�rªJ}r«J(jÅUjÆj’JjÎjËDjÐjfjÒ}r¬J(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r­Jji)�r®J}r¯J(jÅUjlKjÆjªJjÎjËDjÐjÜjÒ}r°J(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�r±J}r²J(jÅUjÆj¹DjÎjÏjÐjÑjÒ}r³J(jÔ]jÕ]jÖ]j×]r´JUfaq-for-keystone-devicesrµJajÚ]r¶Jj�aujÜK˜jÝhjÞ]r·J(jà)�r¸J}r¹J(jÅXFAQ For Keystone DevicesrºJjÆj±JjÎjÏjÐjäjÒ}r»J(jÔ]jÕ]jÖ]j×]jÚ]ujÜK˜jÝhjÞ]r¼JjçXFAQ For Keystone Devicesr½J…�r¾J}r¿J(jÅjºJjÆj¸Jubaubj7)�rÀJ}rÁJ(jÅXDhttp://processors.wiki.ti.com/index.php/IPC_FAQ_for_Keystone_DevicesjÆj±JjÎj:XJsource/rtos/PDK_Platform_Software/IPC/IPC_FAQ_for_Keystone_Devices.rst.incrÂJ…�rÃJ}rÄJbjÐj>jÒ}rÅJ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rÆJjçXDhttp://processors.wiki.ti.com/index.php/IPC_FAQ_for_Keystone_DevicesrÇJ…�rÈJ}rÉJ(jÅUjÆjÀJubaubjÇ)�rÊJ}rËJ(jÅUjKjÆj±JjÎjÃJjÐjÑjÒ}rÌJ(jÔ]rÍJXoverviewrÎJajÕ]jÖ]j×]rÏJUid46rÐJajÚ]ujÜKjÝhjÞ]rÑJ(jà)�rÒJ}rÓJ(jÅXOverviewrÔJjÆjÊJjÎjÃJjÐjäjÒ}rÕJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÖJjçXOverviewr×J…�rØJ}rÙJ(jÅjÔJjÆjÒJubaubjò)�rÚJ}rÛJ(jÅX­This wiki article is a collection of frequently asked questions (FAQ) on IPC on Keystone family of devices , along with some useful collateral and software reference links.rÜJjÆjÊJjÎjÃJjÐjõjÒ}rÝJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÞJjçX­This wiki article is a collection of frequently asked questions (FAQ) on IPC on Keystone family of devices , along with some useful collateral and software reference links.rßJ…�ràJ}ráJ(jÅjÜJjÆjÚJubaubjc)�râJ}rãJ(jÅUjÆjÊJjÎjÃJjÐjfjÒ}räJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]råJji)�ræJ}rçJ(jÅUjlKjÆjâJjÎjÃJjÐjÜjÒ}rèJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�réJ}rêJ(jÅUjÆj±JjÎjÃJjÐjÑjÒ}rëJ(jÔ]jÕ]jÖ]j×]rìJU?guide-on-building-and-running-the-ipc-examples-of-processor-sdkríJajÚ]rîJhÎaujÜK jÝhjÞ]rïJ(jà)�rðJ}rñJ(jÅX?Guide on building and running the IPC examples of Processor SDKròJjÆjéJjÎjÃJjÐjäjÒ}róJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rôJjçX?Guide on building and running the IPC examples of Processor SDKrõJ…�röJ}r÷J(jÅjòJjÆjðJubaubjc)�røJ}rùJ(jÅUjÆjéJjÎjÃJjÐjfjÒ}rúJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rûJji)�rüJ}rýJ(jÅX˜This guide will give step by step instruction on how to bring up the target EVMs and how to run the run the IPC examples of processor SDK on target EVM.rþJjlKjÆjøJjÎjÃJjÐjÜjÒ}rÿJ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rKjçX˜This guide will give step by step instruction on how to bring up the target EVMs and how to run the run the IPC examples of processor SDK on target EVM.rK…�rK}rK(jÅjþJjÆjüJubaubaubjc)�rK}rK(jÅUjÆjéJjÎjÃJjÐjfjÒ}rK(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rKji)�rK}r K(jÅXkDownload the guide from :download:`Keystone II IPC Examples <../files/Guide_Keystone_II_IPC_examples_.zip>`jlKjÆjKjÎjÃJjÐjÜjÒ}r K(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r K(jçXDownload the guide from r K…�r K}rK(jÅXDownload the guide from jÆjKubjö )�rK}rK(jÅXS:download:`Keystone II IPC Examples <../files/Guide_Keystone_II_IPC_examples_.zip>`rKjÆjKjÎjÃJjÐjú jÒ}rK(UreftypeXdownloadrKjý ‰jþ X,../files/Guide_Keystone_II_IPC_examples_.zipU refdomainUj×]jÖ]U refexplicitˆjÔ]jÕ]jÚ]jÿ j j X#Guide_Keystone_II_IPC_examples_.ziprKujÜKjÞ]rKj )�rK}rK(jÅjKjÒ}rK(jÔ]jÕ]rK(j jKejÖ]j×]jÚ]ujÆjKjÞ]rKjçXKeystone II IPC ExamplesrK…�rK}rK(jÅUjÆjKubajÐj¨ubaubeubaubjc)�rK}rK(jÅUjÆjéJjÎjÃJjÐjfjÒ}r K(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r!K(ji)�r"K}r#K(jÅXThis guide will have steps onr$KjlKjÆjKjÎjÃJjÐjÜjÒ}r%K(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r&KjçXThis guide will have steps onr'K…�r(K}r)K(jÅj$KjÆj"Kubaubji)�r*K}r+K(jÅX'1. Flashing the u-boot and boot u-boot.r,KjlKjÆjKjÎjÃJjÐjÜjÒ}r-K(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r.KjçX'1. Flashing the u-boot and boot u-boot.r/K…�r0K}r1K(jÅj,KjÆj*Kubaubji)�r2K}r3K(jÅXS2. Flashing the UBIFS image ( Linux and root filesystem ) into NAND and boot Linux.r4KjlKjÆjKjÎjÃJjÐjÜjÒ}r5K(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r6KjçXS2. Flashing the UBIFS image ( Linux and root filesystem ) into NAND and boot Linux.r7K…�r8K}r9K(jÅj4KjÆj2Kubaubji)�r:K}r;K(jÅX3. Building the IPC package.rKjçX3. Building the IPC package.r?K…�r@K}rAK(jÅjQ: Where do I look for the list of IPC API reference document?rkKjÆjYKjÎjÃJjÐUrubricrlKjÒ}rmK(j×]rnKUQ: Where do I look for the list of IPC API reference document?rrK…�rsK}rtK(jÅjkKjÆjiKubaubjò)�ruK}rvK(jÅX**Ans:**rwKjÆjYKjÎjÃJjÐjõjÒ}rxK(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÝhjÞ]ryKjÚ)�rzK}r{K(jÅjwKjÒ}r|K(jÔ]jÕ]jÖ]j×]jÚ]ujÆjuKjÞ]r}KjçXAns:r~K…�rK}r€K(jÅUjÆjzKubajÐjâubaubjò)�r�K}r‚K(jÅXxPlease visit : http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/index.htmljÆjYKjÎjÃJjÐjõjÒ}rƒK(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÝhjÞ]r„K(jçXPlease visit : r…K…�r†K}r‡K(jÅXPlease visit : jÆj�Kubjû)�rˆK}r‰K(jÅXhhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/index.htmlrŠKjÒ}r‹K(UrefurijŠKj×]jÖ]jÔ]jÕ]jÚ]ujÆj�KjÞ]rŒKjçXhhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/index.htmlr�K…�rŽK}r�K(jÅUjÆjˆKubajÐjÿubeubjò)�r�K}r‘K(jÅX,The IPC product contains the following APIs:r’KjÆjYKjÎjÃJjÐjõjÒ}r“K(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÝhjÞ]r”KjçX,The IPC product contains the following APIs:r•K…�r–K}r—K(jÅj’KjÆj�Kubaubj)�r˜K}r™K(jÅX#•GateMP (BIOS, Linux, QNX) •HeapBufMP (BIOS) •HeapMemMP (BIOS) •HeapMultiBufMP (BIOS) •Ipc (BIOS, Linux, QNX) •ListMP (BIOS) •MessageQ (BIOS, Linux, QNX) •MultiProc (BIOS, Linux, QNX) •NameServer (BIOS, Linux, QNX) •Notify (BIOS) •SharedRegion (BIOS) •IpcPower (BIOS)jÆjYKjÎjÃJjÐjjÒ}ršK(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMxjÝhjÞ]r›KjçX#•GateMP (BIOS, Linux, QNX) •HeapBufMP (BIOS) •HeapMemMP (BIOS) •HeapMultiBufMP (BIOS) •Ipc (BIOS, Linux, QNX) •ListMP (BIOS) •MessageQ (BIOS, Linux, QNX) •MultiProc (BIOS, Linux, QNX) •NameServer (BIOS, Linux, QNX) •Notify (BIOS) •SharedRegion (BIOS) •IpcPower (BIOS)rœK…�r�K}ržK(jÅUjÆj˜Kubaubjò)�rŸK}r K(jÅXƒSome environments also provide a "Multimedia RPC" interface. Currently this is limited to OMAP5 and DRA7XX devices running an HLOS.r¡KjÆjYKjÎjÃJjÐjõjÒ}r¢K(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÝhjÞ]r£KjçXƒSome environments also provide a "Multimedia RPC" interface. Currently this is limited to OMAP5 and DRA7XX devices running an HLOS.r¤K…�r¥K}r¦K(jÅj¡KjÆjŸKubaubj)�r§K}r¨K(jÅX,•MmRpc (Linux, QNX) •MmServiceMgr (BIOS)jÆjYKjÎjÃJjÐjjÒ}r©K(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMŠjÝhjÞ]rªKjçX,•MmRpc (Linux, QNX) •MmServiceMgr (BIOS)r«K…�r¬K}r­K(jÅUjÆj§KubaubjhK)�r®K}r¯K(jÅX5Q: How to re-build the IPC package and its libraries?r°KjÆjYKjÎjÃJjÐjlKjÒ}r±K(j×]r²KU3q-how-to-re-build-the-ipc-package-and-its-librariesr³KajÖ]jÔ]jÕ]jÚ]r´KhúaujÜNjÝhjÞ]rµKjçX5Q: How to re-build the IPC package and its libraries?r¶K…�r·K}r¸K(jÅj°KjÆj®Kubaubjò)�r¹K}rºK(jÅX**Ans:**r»KjÆjYKjÎjÃJjÐjõjÒ}r¼K(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÝhjÞ]r½KjÚ)�r¾K}r¿K(jÅj»KjÒ}rÀK(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¹KjÞ]rÁKjçXAns:rÂK…�rÃK}rÄK(jÅUjÆj¾KubajÐjâubaubjò)�rÅK}rÆK(jÅXDActually, the user guide which comes along with the IPC package ( under docs folder) is sufficient to build the IPC package. However, we have extracted below steps from user guide. For building IPC package, you can use either Cygwin/Command-line utility in windows machine or Linux machine. This cannot be built through CCS.rÇKjÆjYKjÎjÃJjÐjõjÒ}rÈK(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÝhjÞ]rÉKjçXDActually, the user guide which comes along with the IPC package ( under docs folder) is sufficient to build the IPC package. However, we have extracted below steps from user guide. For building IPC package, you can use either Cygwin/Command-line utility in windows machine or Linux machine. This cannot be built through CCS.rÊK…�rËK}rÌK(jÅjÇKjÆjÅKubaubjc)�rÍK}rÎK(jÅUjÆjYKjÎjÃJjÐjfjÒ}rÏK(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÝhjÞ]rÐK(ji)�rÑK}rÒK(jÅX_1. Install the mcsdk_bios_3_xx_xx_xx which will install the IPC package version, ipc_3_xx_xx_xxrÓKjlKjÆjÍKjÎjÃJjÐjÜjÒ}rÔK(jÔ]jÕ]jÖ]j×]jÚ]ujÜKQjÝhjÞ]rÕKjçX_1. Install the mcsdk_bios_3_xx_xx_xx which will install the IPC package version, ipc_3_xx_xx_xxrÖK…�r×K}rØK(jÅjÓKjÆjÑKubaubji)�rÙK}rÚK(jÅX:2. Go to the directory where the IPC package is installed.rÛKjlKjÆjÍKjÎjÃJjÐjÜjÒ}rÜK(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÝhjÞ]rÝKjçX:2. Go to the directory where the IPC package is installed.rÞK…�rßK}ràK(jÅjÛKjÆjÙKubaubji)�ráK}râK(jÅX[3. Open the products.mak file and make sure the following parameters are set appropriately.rãKjlKjÆjÍKjÎjÃJjÐjÜjÒ}räK(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÝhjÞ]råKjçX[3. Open the products.mak file and make sure the following parameters are set appropriately.ræK…�rçK}rèK(jÅjãKjÆjáKubaubeubjc)�réK}rêK(jÅUjÆjYKjÎjÃJjÐjfjÒ}rëK(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÝhjÞ]rìKji)�ríK}rîK(jÅX%For example:- ( For ipc-linux build )rïKjlKjÆjéKjÎjÃJjÐjÜjÒ}rðK(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÝhjÞ]rñKjçX%For example:- ( For ipc-linux build )ròK…�róK}rôK(jÅjïKjÆjíKubaubaubj)�rõK}röK(jÅXFPLATFORM = TCI6638 DESTDIR = /opt/ti/ipc_3_xx_xx_xx/ipc_3_xx_xx_xx_libjÆjYKjÎjÃJjÐjjÒ}r÷K(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¢jÝhjÞ]røKjçXFPLATFORM = TCI6638 DESTDIR = /opt/ti/ipc_3_xx_xx_xx/ipc_3_xx_xx_xx_librùK…�rúK}rûK(jÅUjÆjõKubaubj)�rüK}rýK(jÅX–XDC_INSTALL_DIR = /opt/ti/xdctools_3_xx_xx_xx BIOS_INSTALL_DIR = /opt/ti/bios_6_xx_xx_xx ti.targets.elf.C66 = /opt/ti/ccsv5/tools/compiler/C6000_7.4.5jÆjYKjÎjÃJjÐjjÒ}rþK(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM§jÝhjÞ]rÿKjçX–XDC_INSTALL_DIR = /opt/ti/xdctools_3_xx_xx_xx BIOS_INSTALL_DIR = /opt/ti/bios_6_xx_xx_xx ti.targets.elf.C66 = /opt/ti/ccsv5/tools/compiler/C6000_7.4.5rL…�rL}rL(jÅUjÆjüKubaubjc)�rL}rL(jÅUjÆjYKjÎjÃJjÐjfjÒ}rL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKcjÝhjÞ]rL(ji)�rL}rL(jÅX4. $cd /opt/ti/ ipc_3_xx_xx_xxr LjlKjÆjLjÎjÃJjÐjÜjÒ}r L(jÔ]jÕ]jÖ]j×]jÚ]ujÜKcjÝhjÞ]r LjçX4. $cd /opt/ti/ ipc_3_xx_xx_xxr L…�r L}rL(jÅj LjÆjLubaubji)�rL}rL(jÅX5. $make distcleanrLjlKjÆjLjÎjÃJjÐjÜjÒ}rL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÝhjÞ]rLjçX5. $make distcleanrL…�rL}rL(jÅjLjÆjLubaubji)�rL}rL(jÅX"6. $make –f ipc-linux.mak configrLjlKjÆjLjÎjÃJjÐjÜjÒ}rL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKejÝhjÞ]rLjçX"6. $make –f ipc-linux.mak configrL…�rL}rL(jÅjLjÆjLubaubji)�rL}r L(jÅX7. $maker!LjlKjÆjLjÎjÃJjÐjÜjÒ}r"L(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÝhjÞ]r#LjçX7. $maker$L…�r%L}r&L(jÅj!LjÆjLubaubji)�r'L}r(L(jÅX8. $make installr)LjlKjÆjLjÎjÃJjÐjÜjÒ}r*L(jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]r+LjçX8. $make installr,L…�r-L}r.L(jÅj)LjÆj'Lubaubeubjc)�r/L}r0L(jÅUjÆjYKjÎjÃJjÐjfjÒ}r1L(jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÝhjÞ]r2Lji)�r3L}r4L(jÅUjlKjÆj/LjÎjÃJjÐjÜjÒ}r5L(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�r6L}r7L(jÅXeQ: Is there any simple example to demonstrate IPC methods like message Q or notify for Keystone-II ?r8LjÆjYKjÎjÃJjÐjlKjÒ}r9L(j×]r:LUaq-is-there-any-simple-example-to-demonstrate-ipc-methods-like-message-q-or-notify-for-keystone-iir;LajÖ]jÔ]jÕ]jÚ]rL…�r?L}r@L(jÅj8LjÆj6Lubaubjò)�rAL}rBL(jÅX**Ans:**rCLjÆjYKjÎjÃJjÐjõjÒ}rDL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÝhjÞ]rELjÚ)�rFL}rGL(jÅjCLjÒ}rHL(jÔ]jÕ]jÖ]j×]jÚ]ujÆjALjÞ]rILjçXAns:rJL…�rKL}rLL(jÅUjÆjFLubajÐjâubaubjc)�rML}rNL(jÅUjÆjYKjÎjÃJjÐjfjÒ}rOL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÝhjÞ]rPLji)�rQL}rRL(jÅXWPlease look at the ex44_compute.zip in :~/ti/ipc_3_3x_xx_xx/examples/TCI6638_linux_elfrSLjlKjÆjMLjÎjÃJjÐjÜjÒ}rTL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKrjÝhjÞ]rULjçXWPlease look at the ex44_compute.zip in :~/ti/ipc_3_3x_xx_xx/examples/TCI6638_linux_elfrVL…�rWL}rXL(jÅjSLjÆjQLubaubaubj)�rYL}rZL(jÅXê~/ti/ipc_3_3x_xx_xx/examples$ ls C6472_bios_elf C6A8149_bios_elf DRA7XX_android_elf DRA7XX_linux_elf makefile TCI6638_linux_elf TI814X_bios_elf C6678_bios_elf dosrc.bat DRA7XX_bios_elf DRA7XX_qnx_elf OMAPL138_linux_elf TDA3XX_bios_elfjÆjYKjÎjÃJjÐjjÒ}r[L(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¾jÝhjÞ]r\LjçXê~/ti/ipc_3_3x_xx_xx/examples$ ls C6472_bios_elf C6A8149_bios_elf DRA7XX_android_elf DRA7XX_linux_elf makefile TCI6638_linux_elf TI814X_bios_elf C6678_bios_elf dosrc.bat DRA7XX_bios_elf DRA7XX_qnx_elf OMAPL138_linux_elf TDA3XX_bios_elfr]L…�r^L}r_L(jÅUjÆjYLubaubjò)�r`L}raL(jÅX…Please refer the readme.txt to run and build the example according to the target used. For K2, use the cluster ID as 0 instead of 18.rbLjÆjYKjÎjÃJjÐjõjÒ}rcL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÝhjÞ]rdLjçX…Please refer the readme.txt to run and build the example according to the target used. For K2, use the cluster ID as 0 instead of 18.reL…�rfL}rgL(jÅjbLjÆj`Lubaubj )�rhL}riL(jÅUjÆjYKjÎjÃJjÐj jÒ}rjL(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK}jÝhjÞ]rkL(j{)�rlL}rmL(jÅX?perl patchExec.pl 0 compute_dspN.xe66 compute_dspN_patched.xe66rnLjÆjhLjÎjÃJjÐjjÒ}roL(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rpLjò)�rqL}rrL(jÅjnLjÆjlLjÎjÃJjÐjõjÒ}rsL(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]rtLjçX?perl patchExec.pl 0 compute_dspN.xe66 compute_dspN_patched.xe66ruL…�rvL}rwL(jÅjnLjÆjqLubaubaubj{)�rxL}ryL(jÅX&lad_tci6638 -r 8 -n 9 -b 0 -l log.txt jÆjhLjÎjÃJjÐjjÒ}rzL(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r{Ljò)�r|L}r}L(jÅX%lad_tci6638 -r 8 -n 9 -b 0 -l log.txtr~LjÆjxLjÎjÃJjÐjõjÒ}rL(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÞ]r€LjçX%lad_tci6638 -r 8 -n 9 -b 0 -l log.txtr�L…�r‚L}rƒL(jÅj~LjÆj|Lubaubaubeubjc)�r„L}r…L(jÅUjÆjYKjÎjÃJjÐjfjÒ}r†L(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÝhjÞ]r‡Lji)�rˆL}r‰L(jÅUjlKjÆj„LjÎjÃJjÐjÜjÒ}rŠL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�r‹L}rŒL(jÅXjQ: For Keystone II, is there any CCS based examples to demonstrate a simple communication between ARM-DSP?r�LjÆjYKjÎjÃJjÐjlKjÒ}rŽL(j×]r�LUgq-for-keystone-ii-is-there-any-ccs-based-examples-to-demonstrate-a-simple-communication-between-arm-dspr�LajÖ]jÔ]jÕ]jÚ]r‘LhªaujÜNjÝhjÞ]r’LjçXjQ: For Keystone II, is there any CCS based examples to demonstrate a simple communication between ARM-DSP?r“L…�r”L}r•L(jÅj�LjÆj‹Lubaubjò)�r–L}r—L(jÅX**Ans:**r˜LjÆjYKjÎjÃJjÐjõjÒ}r™L(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÝhjÞ]ršLjÚ)�r›L}rœL(jÅj˜LjÒ}r�L(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–LjÞ]ržLjçXAns:rŸL…�r L}r¡L(jÅUjÆj›LubajÐjâubaubjò)�r¢L}r£L(jÅX'No. We have only Image Processing Demo.r¤LjÆjYKjÎjÃJjÐjõjÒ}r¥L(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÝhjÞ]r¦LjçX'No. We have only Image Processing Demo.r§L…�r¨L}r©L(jÅj¤LjÆj¢Lubaubjò)�rªL}r«L(jÅX¯In MCSDK 3.x, the ARM core only runs Linux kernel and User Space applications. There isn't any Linux application example using CCS and if any, it will be using Linux commands.r¬LjÆjYKjÎjÃJjÐjõjÒ}r­L(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÝhjÞ]r®LjçX¯In MCSDK 3.x, the ARM core only runs Linux kernel and User Space applications. There isn't any Linux application example using CCS and if any, it will be using Linux commands.r¯L…�r°L}r±L(jÅj¬LjÆjªLubaubjhK)�r²L}r³L(jÅXªQ: In IPC packages, there are lot of test example(sample.c) code given in the path: "~\ipc_3_3x_xx_xx\packages\ti\ipc\tests". But there is only command line option to build the whole IPC package. No option available to build the test examples individually. This is time consuming to build the whole IPC package. Customers were asking for CCS based environment to build and test as individual example for both DSP and ARM side.jÆjYKjÎjÃJjÐjlKjÒ}r´L(j×]rµLT˜q-in-ipc-packages-there-are-lot-of-test-examplesample-c-code-given-in-the-path-ipc-3-3x-xx-xxpackagestiipctests-but-there-is-only-command-line-option-to-build-the-whole-ipc-package-no-option-available-to-build-the-test-examples-individually-this-is-time-consuming-to-build-the-whole-ipc-package-customers-were-asking-for-ccs-based-environment-to-build-and-test-as-individual-example-for-both-dsp-and-arm-sider¶LajÖ]jÔ]jÕ]jÚ]r·LhŒaujÜNjÝhjÞ]r¸LjçX¥Q: In IPC packages, there are lot of test example(sample.c) code given in the path: "~ipc_3_3x_xx_xxpackagestiipctests". But there is only command line option to build the whole IPC package. No option available to build the test examples individually. This is time consuming to build the whole IPC package. Customers were asking for CCS based environment to build and test as individual example for both DSP and ARM side.r¹L…�rºL}r»L(jÅXªQ: In IPC packages, there are lot of test example(sample.c) code given in the path: "~\ipc_3_3x_xx_xx\packages\ti\ipc\tests". But there is only command line option to build the whole IPC package. No option available to build the test examples individually. This is time consuming to build the whole IPC package. Customers were asking for CCS based environment to build and test as individual example for both DSP and ARM side.jÆj²Lubaubjò)�r¼L}r½L(jÅX**Ans:**r¾LjÆjYKjÎjÃJjÐjõjÒ}r¿L(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÝhjÞ]rÀLjÚ)�rÁL}rÂL(jÅj¾LjÒ}rÃL(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼LjÞ]rÄLjçXAns:rÅL…�rÆL}rÇL(jÅUjÆjÁLubajÐjâubaubjò)�rÈL}rÉL(jÅXúThe IPC package has been developed to work on multiple platforms like Linux, Android, QNX and TI-RTOS(SYS/BIOS) so the command line build is selected which is common across all these platforms and we do not have CCS based projects for these examples.rÊLjÆjYKjÎjÃJjÐjõjÒ}rËL(jÔ]jÕ]jÖ]j×]jÚ]ujÜK™jÝhjÞ]rÌLjçXúThe IPC package has been developed to work on multiple platforms like Linux, Android, QNX and TI-RTOS(SYS/BIOS) so the command line build is selected which is common across all these platforms and we do not have CCS based projects for these examples.rÍL…�rÎL}rÏL(jÅjÊLjÆjÈLubaubjc)�rÐL}rÑL(jÅUjÆjYKjÎjÃJjÐjfjÒ}rÒL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKžjÝhjÞ]rÓLji)�rÔL}rÕL(jÅUjlKjÆjÐLjÎjÃJjÐjÜjÒ}rÖL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�r×L}rØL(jÅX¥Q: For keystone-II devices, where do I find the source code of the image processing demo and how to I re-build them? Using ARM core as a master, DSP cores as slaves.rÙLjÆjYKjÎjÃJjÐjlKjÒ}rÚL(j×]rÛLU q-for-keystone-ii-devices-where-do-i-find-the-source-code-of-the-image-processing-demo-and-how-to-i-re-build-them-using-arm-core-as-a-master-dsp-cores-as-slavesrÜLajÖ]jÔ]jÕ]jÚ]rÝLhÄaujÜNjÝhjÞ]rÞLjçX¥Q: For keystone-II devices, where do I find the source code of the image processing demo and how to I re-build them? Using ARM core as a master, DSP cores as slaves.rßL…�ràL}ráL(jÅjÙLjÆj×Lubaubjò)�râL}rãL(jÅX**Ans:**räLjÆjYKjÎjÃJjÐjõjÒ}råL(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¥jÝhjÞ]ræLjÚ)�rçL}rèL(jÅjäLjÒ}réL(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâLjÞ]rêLjçXAns:rëL…�rìL}ríL(jÅUjÆjçLubajÐjâubaubjò)�rîL}rïL(jÅXƒTested version : "mcsdk_bios_3_00_03_15". The Image processing demo was tested multiple times with this version and it works fine.rðLjÆjYKjÎjÃJjÐjõjÒ}rñL(jÔ]jÕ]jÖ]j×]jÚ]ujÜK§jÝhjÞ]ròLjçXƒTested version : "mcsdk_bios_3_00_03_15". The Image processing demo was tested multiple times with this version and it works fine.róL…�rôL}rõL(jÅjðLjÆjîLubaubjò)�röL}r÷L(jÅXAThe image processing demo source code can be found in below path.røLjÆjYKjÎjÃJjÐjõjÒ}rùL(jÔ]jÕ]jÖ]j×]jÚ]ujÜKªjÝhjÞ]rúLjçXAThe image processing demo source code can be found in below path.rûL…�rüL}rýL(jÅjøLjÆjöLubaubjò)�rþL}rÿL(jÅXg**PATH:** C:\ti\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc (master, slave and common directories)jÆjYKjÎjÃJjÐjõjÒ}rM(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¬jÝhjÞ]rM(jÚ)�rM}rM(jÅX **PATH:**jÒ}rM(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþLjÞ]rMjçXPATH:rM…�rM}rM(jÅUjÆjMubajÐjâubjçXY C:timcsdk_bios_3_0x_0x_0xdemosimage_processingipc (master, slave and common directories)r M…�r M}r M(jÅX^ C:\ti\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc (master, slave and common directories)jÆjþLubeubjò)�r M}r M(jÅXQ**Building Slave Code:** The project can be imported into CCS and can be rebuilt.jÆjYKjÎjÃJjÐjõjÒ}rM(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¯jÝhjÞ]rM(jÚ)�rM}rM(jÅX**Building Slave Code:**jÒ}rM(jÔ]jÕ]jÖ]j×]jÚ]ujÆj MjÞ]rMjçXBuilding Slave Code:rM…�rM}rM(jÅUjÆjMubajÐjâubjçX9 The project can be imported into CCS and can be rebuilt.rM…�rM}rM(jÅX9 The project can be imported into CCS and can be rebuilt.jÆj Mubeubjò)�rM}rM(jÅXS*For K2E:* “~\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\evm66ak2e\slaveâ€�jÆjYKjÎjÃJjÐjõjÒ}rM(jÔ]jÕ]jÖ]j×]jÚ]ujÜK²jÝhjÞ]rM(jM)�rM}rM(jÅX *For K2E:*jÒ}r M(jÔ]jÕ]jÖ]j×]jÚ]ujÆjMjÞ]r!MjçXFor K2E:r"M…�r#M}r$M(jÅUjÆjMubajÐjUubjçXC “~mcsdk_bios_3_0x_0x_0xdemosimage_processingipcevm66ak2eslaveâ€�r%M…�r&M}r'M(jÅXI “~\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\evm66ak2e\slaveâ€�jÆjMubeubjò)�r(M}r)M(jÅXW*For K2K:* “~\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\evmtci6638k2k\slaveâ€�jÆjYKjÎjÃJjÐjõjÒ}r*M(jÔ]jÕ]jÖ]j×]jÚ]ujÜKµjÝhjÞ]r+M(jM)�r,M}r-M(jÅX *For K2K:*jÒ}r.M(jÔ]jÕ]jÖ]j×]jÚ]ujÆj(MjÞ]r/MjçXFor K2K:r0M…�r1M}r2M(jÅUjÆj,MubajÐjUubjçXG “~mcsdk_bios_3_0x_0x_0xdemosimage_processingipcevmtci6638k2kslaveâ€�r3M…�r4M}r5M(jÅXM “~\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\evmtci6638k2k\slaveâ€�jÆj(Mubeubjò)�r6M}r7M(jÅXW*For K2L:* “~\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\evmtci6630k2l\slaveâ€�jÆjYKjÎjÃJjÐjõjÒ}r8M(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¸jÝhjÞ]r9M(jM)�r:M}r;M(jÅX *For K2L:*jÒ}rM…�r?M}r@M(jÅUjÆj:MubajÐjUubjçXG “~mcsdk_bios_3_0x_0x_0xdemosimage_processingipcevmtci6630k2lslaveâ€�rAM…�rBM}rCM(jÅXM “~\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\evmtci6630k2l\slaveâ€�jÆj6Mubeubjò)�rDM}rEM(jÅX**Building Master Code:**rFMjÆjYKjÎjÃJjÐjõjÒ}rGM(jÔ]jÕ]jÖ]j×]jÚ]ujÜK»jÝhjÞ]rHMjÚ)�rIM}rJM(jÅjFMjÒ}rKM(jÔ]jÕ]jÖ]j×]jÚ]ujÆjDMjÞ]rLMjçXBuilding Master Code:rMM…�rNM}rOM(jÅUjÆjIMubajÐjâubaubjò)�rPM}rQM(jÅXIThis can be built in the linux environment using the makefile provided atrRMjÆjYKjÎjÃJjÐjõjÒ}rSM(jÔ]jÕ]jÖ]j×]jÚ]ujÜK½jÝhjÞ]rTMjçXIThis can be built in the linux environment using the makefile provided atrUM…�rVM}rWM(jÅjRMjÆjPMubaubjò)�rXM}rYM(jÅX´(~\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\evm66ak2x\master\make ) which in turn uses the makefile located at ~\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\master\srcjÆjYKjÎjÃJjÐjõjÒ}rZM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÀjÝhjÞ]r[MjçX§(~mcsdk_bios_3_0x_0x_0xdemosimage_processingipcevm66ak2xmastermake ) which in turn uses the makefile located at ~mcsdk_bios_3_0x_0x_0xdemosimage_processingipcmastersrcr\M…�r]M}r^M(jÅX´(~\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\evm66ak2x\master\make ) which in turn uses the makefile located at ~\mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\master\srcjÆjXMubaubjc)�r_M}r`M(jÅUjÆjYKjÎjÃJjÐjfjÒ}raM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÄjÝhjÞ]rbMji)�rcM}rdM(jÅUjlKjÆj_MjÎjÃJjÐjÜjÒ}reM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�rfM}rgM(jÅXPQ: How to import the slave code of Image processing demo and how do I build it?rhMjÆjYKjÎjÃJjÐjlKjÒ}riM(j×]rjMULqhow-to-import-the-slave-code-of-image-processing-demo-and-how-do-i-build-itrkMajÖ]jÔ]jÕ]jÚ]rlMh’aujÜNjÝhjÞ]rmMjçXPQ: How to import the slave code of Image processing demo and how do I build it?rnM…�roM}rpM(jÅjhMjÆjfMubaubjò)�rqM}rrM(jÅX**Ans:**rsMjÆjYKjÎjÃJjÐjõjÒ}rtM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÊjÝhjÞ]ruMjÚ)�rvM}rwM(jÅjsMjÒ}rxM(jÔ]jÕ]jÖ]j×]jÚ]ujÆjqMjÞ]ryMjçXAns:rzM…�r{M}r|M(jÅUjÆjvMubajÐjâubaubjò)�r}M}r~M(jÅX¿Refer the screenshot below in which the correct path should be provided to pick up the project and its sources. Note that the option for “Copy projects into work space" should be unchecked.rMjÆjYKjÎjÃJjÐjõjÒ}r€M(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÌjÝhjÞ]r�MjçX¿Refer the screenshot below in which the correct path should be provided to pick up the project and its sources. Note that the option for “Copy projects into work space" should be unchecked.r‚M…�rƒM}r„M(jÅjMjÆj}MubaubjR)�r…M}r†M(jÅX#.. Image:: ../images/ImportPjt.jpg jÆjYKjÎjÃJjÐjZjÒ}r‡M(UuriXrtos/../images/ImportPjt.jpgrˆMj×]jÖ]jÔ]jÕ]jX}r‰MU*jˆMsjÚ]ujÜKÑjÝhjÞ]ubjc)�rŠM}r‹M(jÅUjÆjYKjÎjÃJjÐjfjÒ}rŒM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÒjÝhjÞ]r�Mji)�rŽM}r�M(jÅUjlKjÆjŠMjÎjÃJjÐjÜjÒ}r�M(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r‘M}r’M(jÅXšIn the project explorer screen, check whether you are able to see the folders, slave --> src --> \*.c files.... Right click on the project and give build.jÆjYKjÎjÃJjÐjõjÒ}r“M(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÔjÝhjÞ]r”MjçX™In the project explorer screen, check whether you are able to see the folders, slave --> src --> *.c files.... Right click on the project and give build.r•M…�r–M}r—M(jÅXšIn the project explorer screen, check whether you are able to see the folders, slave --> src --> \*.c files.... Right click on the project and give build.jÆj‘MubaubjR)�r˜M}r™M(jÅX'.. Image:: ../images/Sourcefilepjt.jpg jÆjYKjÎjÃJjÐjZjÒ}ršM(UuriX rtos/../images/Sourcefilepjt.jpgr›Mj×]jÖ]jÔ]jÕ]jX}rœMU*j›MsjÚ]ujÜKÙjÝhjÞ]ubjhK)�r�M}ržM(jÅX€Q: After building the slave code of the Image processing demo using CCS, where it needs to be replaced in the linux file system?rŸMjÆjYKjÎjÃJjÐjlKjÒ}r M(j×]r¡MU}q-after-building-the-slave-code-of-the-image-processing-demo-using-ccs-where-it-needs-to-be-replaced-in-the-linux-file-systemr¢MajÖ]jÔ]jÕ]jÚ]r£MjDaujÜNjÝhjÞ]r¤MjçX€Q: After building the slave code of the Image processing demo using CCS, where it needs to be replaced in the linux file system?r¥M…�r¦M}r§M(jÅjŸMjÆj�Mubaubjò)�r¨M}r©M(jÅX**Ans:**rªMjÆjYKjÎjÃJjÐjõjÒ}r«M(jÔ]jÕ]jÖ]j×]jÚ]ujÜKßjÝhjÞ]r¬MjÚ)�r­M}r®M(jÅjªMjÒ}r¯M(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨MjÞ]r°MjçXAns:r±M…�r²M}r³M(jÅUjÆj­MubajÐjâubaubjò)�r´M}rµM(jÅX©Take the binary file, image_processing_evmtci66xxk2x_slave.out and replace it in the path target Linux filesystem, “/usr/share/matrix-gui-2.0/apps/demo_imageproc/bin/"r¶MjÆjYKjÎjÃJjÐjõjÒ}r·M(jÔ]jÕ]jÖ]j×]jÚ]ujÜKájÝhjÞ]r¸MjçX©Take the binary file, image_processing_evmtci66xxk2x_slave.out and replace it in the path target Linux filesystem, “/usr/share/matrix-gui-2.0/apps/demo_imageproc/bin/"r¹M…�rºM}r»M(jÅj¶MjÆj´MubaubjhK)�r¼M}r½M(jÅX¯Q:  While building the ARM(master) side code of Image processing demo, I see a compilation error message about Std.h as below when I make it with or without BUILD_LOCAL=true.r¾MjÆjYKjÎjÃJjÐjlKjÒ}r¿M(j×]rÀMU§q-while-building-the-armmaster-side-code-of-image-processing-demo-i-see-a-compilation-error-message-about-std-h-as-below-when-i-make-it-with-or-without-build-localtruerÁMajÖ]jÔ]jÕ]jÚ]rÂMjaujÜNjÝhjÞ]rÃMjçX¯Q:  While building the ARM(master) side code of Image processing demo, I see a compilation error message about Std.h as below when I make it with or without BUILD_LOCAL=true.rÄM…�rÅM}rÆM(jÅj¾MjÆj¼Mubaubjc)�rÇM}rÈM(jÅUjÆjYKjÎjÃJjÐjfjÒ}rÉM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKêjÝhjÞ]rÊM(ji)�rËM}rÌM(jÅX*Error:*rÍMjlKjÆjÇMjÎjÃJjÐjÜjÒ}rÎM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKêjÝhjÞ]rÏMjM)�rÐM}rÑM(jÅjÍMjÒ}rÒM(jÔ]jÕ]jÖ]j×]jÚ]ujÆjËMjÞ]rÓMjçXError:rÔM…�rÕM}rÖM(jÅUjÆjÐMubajÐjUubaubji)�r×M}rØM(jÅX^***user@ubuntu:~/ti/mcsdk_bios_3_0x_0x_0x/demos/image_processing/ipc/evm66ak2x/master$*** makejlKjÆjÇMjÎjÃJjÐjÜjÒ}rÙM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKìjÝhjÞ]rÚM(jÚ)�rÛM}rÜM(jÅXY***user@ubuntu:~/ti/mcsdk_bios_3_0x_0x_0x/demos/image_processing/ipc/evm66ak2x/master$***jÒ}rÝM(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×MjÞ]rÞMjçXU*user@ubuntu:~/ti/mcsdk_bios_3_0x_0x_0x/demos/image_processing/ipc/evm66ak2x/master$*rßM…�ràM}ráM(jÅUjÆjÛMubajÐjâubjçX makerâM…�rãM}räM(jÅX makejÆj×Mubeubeubjc)�råM}ræM(jÅUjÆjYKjÎjÃJjÐjfjÒ}rçM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKîjÝhjÞ]rèMji)�réM}rêM(jÅXè*make[1]: Entering directory \`/home/user/ti/mcsdk_bios_3_0x_0x_0x/demos/image_processing/ipc/master/src' mcip_mem_mgmt.c:53:24: fatal error: ti/ipc/Std.h: No such file or directory #include  Compilation terminated.*jlKjÆjåMjÎjÃJjÐjÜjÒ}rëM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKñjÝhjÞ]rìMjM)�ríM}rîM(jÅXè*make[1]: Entering directory \`/home/user/ti/mcsdk_bios_3_0x_0x_0x/demos/image_processing/ipc/master/src' mcip_mem_mgmt.c:53:24: fatal error: ti/ipc/Std.h: No such file or directory #include  Compilation terminated.*jÒ}rïM(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéMjÞ]rðMjçXåmake[1]: Entering directory `/home/user/ti/mcsdk_bios_3_0x_0x_0x/demos/image_processing/ipc/master/src' mcip_mem_mgmt.c:53:24: fatal error: ti/ipc/Std.h: No such file or directory #include  Compilation terminated.rñM…�ròM}róM(jÅUjÆjíMubajÐjUubaubaubjc)�rôM}rõM(jÅUjÆjYKjÎjÃJjÐjfjÒ}röM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKójÝhjÞ]r÷M(ji)�røM}rùM(jÅX**Ans:**rúMjlKjÆjôMjÎjÃJjÐjÜjÒ}rûM(jÔ]jÕ]jÖ]j×]jÚ]ujÜKójÝhjÞ]rüMjÚ)�rýM}rþM(jÅjúMjÒ}rÿM(jÔ]jÕ]jÖ]j×]jÚ]ujÆjøMjÞ]rNjçXAns:rN…�rN}rN(jÅUjÆjýMubajÐjâubaubji)�rN}rN(jÅX¯There is an error in the Makefile. Make file needs to be updated for including the appropriate search path for "Std.h". You will find it at "../ti/ipc_3_3x_0x_0x/linux/includerNjlKjÆjôMjÎjÃJjÐjÜjÒ}rN(jÔ]jÕ]jÖ]j×]jÚ]ujÜKöjÝhjÞ]rNjçX¯There is an error in the Makefile. Make file needs to be updated for including the appropriate search path for "Std.h". You will find it at "../ti/ipc_3_3x_0x_0x/linux/includer N…�r N}r N(jÅjNjÆjNubaubeubjò)�r N}r N(jÅXoUpdate the Makefile located at "mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\master\src\makefile" as below,jÆjYKjÎjÃJjÐjõjÒ}rN(jÔ]jÕ]jÖ]j×]jÚ]ujÜKøjÝhjÞ]rNjçXiUpdate the Makefile located at "mcsdk_bios_3_0x_0x_0xdemosimage_processingipcmastersrcmakefile" as below,rN…�rN}rN(jÅXoUpdate the Makefile located at "mcsdk_bios_3_0x_0x_0x\demos\image_processing\ipc\master\src\makefile" as below,jÆj Nubaubjc)�rN}rN(jÅUjÆjYKjÎjÃJjÐjfjÒ}rN(jÔ]jÕ]jÖ]j×]jÚ]ujÜKüjÝhjÞ]rNji)�rN}rN(jÅX*For example:*rNjlKjÆjNjÎjÃJjÐjÜjÒ}rN(jÔ]jÕ]jÖ]j×]jÚ]ujÜKüjÝhjÞ]rNjM)�rN}rN(jÅjNjÒ}rN(jÔ]jÕ]jÖ]j×]jÚ]ujÆjNjÞ]rNjçX For example:r N…�r!N}r"N(jÅUjÆjNubajÐjUubaubaubj)�r#N}r$N(jÅX«IPC_INSTALL_DIR := /opt/ti/ipc_3_xx_0x_0x CFLAGS  := -Wall -I$(COMMON_INC) -I$(MASTER_INC) -I$(IPC_INSTALL_DIR)/linux/include -I$(IPC_INSTALL_DIR)/packages -D_GNU_SOURCEjÆjYKjÎjÃJjÐjjÒ}r%N(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMHjÝhjÞ]r&NjçX«IPC_INSTALL_DIR := /opt/ti/ipc_3_xx_0x_0x CFLAGS  := -Wall -I$(COMMON_INC) -I$(MASTER_INC) -I$(IPC_INSTALL_DIR)/linux/include -I$(IPC_INSTALL_DIR)/packages -D_GNU_SOURCEr'N…�r(N}r)N(jÅUjÆj#NubaubjhK)�r*N}r+N(jÅXnQ: While building the ARM(master) side code of Image processing demo, I see a linker error message like below.r,NjÆjYKjÎjÃJjÐjlKjÒ}r-N(j×]r.NUiq-while-building-the-armmaster-side-code-of-image-processing-demo-i-see-a-linker-error-message-like-belowr/NajÖ]jÔ]jÕ]jÚ]r0NjaujÜNjÝhjÞ]r1NjçXnQ: While building the ARM(master) side code of Image processing demo, I see a linker error message like below.r2N…�r3N}r4N(jÅj,NjÆj*Nubaubjc)�r5N}r6N(jÅUjÆjYKjÎjÃJjÐjfjÒ}r7N(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r8N(ji)�r9N}r:N(jÅX*Error:*r;NjlKjÆj5NjÎjÃJjÐjÜjÒ}rN}r?N(jÅj;NjÒ}r@N(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9NjÞ]rANjçXError:rBN…�rCN}rDN(jÅUjÆj>NubajÐjUubaubji)�rEN}rFN(jÅX×*/usr/bin/ld: skipping incompatible /opt/ti/ipc_3_35_01_07/examples/TCI6638_linux_elf /ex44_compute_bkp/lib//libtitransportrpmsg.a when searching for -ltitransportrpmsg /usr/bin/ld: cannot find –ltitransportrpmsg*rGNjlKjÆj5NjÎjÃJjÐjÜjÒ}rHN(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rINjM)�rJN}rKN(jÅjGNjÒ}rLN(jÔ]jÕ]jÖ]j×]jÚ]ujÆjENjÞ]rMNjçXÕ/usr/bin/ld: skipping incompatible /opt/ti/ipc_3_35_01_07/examples/TCI6638_linux_elf /ex44_compute_bkp/lib//libtitransportrpmsg.a when searching for -ltitransportrpmsg /usr/bin/ld: cannot find –ltitransportrpmsgrNN…�rON}rPN(jÅUjÆjJNubajÐjUubaubji)�rQN}rRN(jÅX$usr/bin/ld: cannot find -ltiipcutilsrSNjlKjÆj5NjÎjÃJjÐjÜjÒ}rTN(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rUNjçX$usr/bin/ld: cannot find -ltiipcutilsrVN…�rWN}rXN(jÅjSNjÆjQNubaubji)�rYN}rZN(jÅX*collect2: error: ld returned 1 exit statusr[NjlKjÆj5NjÎjÃJjÐjÜjÒ}r\N(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r]NjçX*collect2: error: ld returned 1 exit statusr^N…�r_N}r`N(jÅj[NjÆjYNubaubji)�raN}rbN(jÅX>make: \**\* [../../master/image_processing_master.out] Error 1jlKjÆj5NjÎjÃJjÐjÜjÒ}rcN(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rdNjçX<make: *** [../../master/image_processing_master.out] Error 1reN…�rfN}rgN(jÅX>make: \**\* [../../master/image_processing_master.out] Error 1jÆjaNubaubji)�rhN}riN(jÅXRroot@e2e:/opt/ti/mcsdk_bios_3_0x_xx_xx/demos/image_processing/ipc/master/src#\ * *jlKjÆj5NjÎjÃJjÐjÜjÒ}rjN(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rkN(jû)�rlN}rmN(jÅXroot@e2ejÒ}rnN(UrefuriXmailto:root@e2ej×]jÖ]jÔ]jÕ]jÚ]ujÆjhNjÞ]roNjçXroot@e2erpN…�rqN}rrN(jÅUjÆjlNubajÐjÿubjçXH:/opt/ti/mcsdk_bios_3_0x_xx_xx/demos/image_processing/ipc/master/src#* *rsN…�rtN}ruN(jÅXJ:/opt/ti/mcsdk_bios_3_0x_xx_xx/demos/image_processing/ipc/master/src#\ * *jÆjhNubeubeubjc)�rvN}rwN(jÅUjÆjYKjÎjÃJjÐjfjÒ}rxN(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]ryN(ji)�rzN}r{N(jÅX**Ans:**r|NjlKjÆjvNjÎjÃJjÐjÜjÒ}r}N(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r~NjÚ)�rN}r€N(jÅj|NjÒ}r�N(jÔ]jÕ]jÖ]j×]jÚ]ujÆjzNjÞ]r‚NjçXAns:rƒN…�r„N}r…N(jÅUjÆjNubajÐjâubaubji)�r†N}r‡N(jÅXíFor these errors, please make sure you already built the Whole IPC package and installed the libraries such as transportrpmsg in a destination directory. This destination directory should be given in the makefile to find those libraries.rˆNjlKjÆjvNjÎjÃJjÐjÜjÒ}r‰N(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rŠNjçXíFor these errors, please make sure you already built the Whole IPC package and installed the libraries such as transportrpmsg in a destination directory. This destination directory should be given in the makefile to find those libraries.r‹N…�rŒN}r�N(jÅjˆNjÆj†Nubaubeubjc)�rŽN}r�N(jÅUjÆjYKjÎjÃJjÐjfjÒ}r�N(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r‘Nji)�r’N}r“N(jÅXlFor example, in the makefile located at mcsdk_bios_3_0x_xx_xx\demos\image_processing\ipc\master\src\makefilejlKjÆjŽNjÎjÃJjÐjÜjÒ}r”N(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r•NjçXfFor example, in the makefile located at mcsdk_bios_3_0x_xx_xxdemosimage_processingipcmastersrcmakefiler–N…�r—N}r˜N(jÅXlFor example, in the makefile located at mcsdk_bios_3_0x_xx_xx\demos\image_processing\ipc\master\src\makefilejÆj’Nubaubaubj)�r™N}ršN(jÅX¸IPC_INSTALL_DIR := /opt/ti/ipc_3_3x_xx_xx #The location where the libraries are installed after building the IPC package SIPC_LINUX_DIR := /opt/ti/ipc_3_3x_xx_xx/IPC_Linux_librariesjÆjYKjÎjÃJjÐjjÒ}r›N(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMfjÝhjÞ]rœNjçX¸IPC_INSTALL_DIR := /opt/ti/ipc_3_3x_xx_xx #The location where the libraries are installed after building the IPC package SIPC_LINUX_DIR := /opt/ti/ipc_3_3x_xx_xx/IPC_Linux_librariesr�N…�ržN}rŸN(jÅUjÆj™Nubaubj)�r N}r¡N(jÅXVCROSS_COMPILE ?= arm-linux-gnueabihf- CC  := $(CROSS_COMPILE)gcc CFLAGS  := -Wall -I$(COMMON_INC) -I$(MASTER_INC) -I$(IPC_INSTALL_DIR)/linux/include -I$(IPC_INSTALL_DIR)/packages -D_GNU_SOURCE LFLAGS  := -lpthread -L$(SIPC_LINUX_DIR)/ -ltitransportrpmsg -L$(SIPC_LINUX_DIR)/ -ltiipc -L$(SIPC_LINUX_DIR)/ -ltiipcutilsjÆjYKjÎjÃJjÐjjÒ}r¢N(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMmjÝhjÞ]r£NjçXVCROSS_COMPILE ?= arm-linux-gnueabihf- CC  := $(CROSS_COMPILE)gcc CFLAGS  := -Wall -I$(COMMON_INC) -I$(MASTER_INC) -I$(IPC_INSTALL_DIR)/linux/include -I$(IPC_INSTALL_DIR)/packages -D_GNU_SOURCE LFLAGS  := -lpthread -L$(SIPC_LINUX_DIR)/ -ltitransportrpmsg -L$(SIPC_LINUX_DIR)/ -ltiipc -L$(SIPC_LINUX_DIR)/ -ltiipcutilsr¤N…�r¥N}r¦N(jÅUjÆj Nubaubjc)�r§N}r¨N(jÅUjÆjYKjÎjÃJjÐjfjÒ}r©N(jÔ]jÕ]jÖ]j×]jÚ]ujÜM*jÝhjÞ]rªNji)�r«N}r¬N(jÅUjlKjÆj§NjÎjÃJjÐjÜjÒ}r­N(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�r®N}r¯N(jÅXÃQ: The Image processing demo does not work on the version of MCSDK, V3.0x.xx.x on both the K2H and K2E EVMs. The earlier version of MCSDK works on both the EVMs. Will it be fixed on next version?r°NjÆjYKjÎjÃJjÐjlKjÒ}r±N(j×]r²NU¾q-the-image-processing-demo-does-not-work-on-the-version-of-mcsdk-v3-0x-xx-x-on-both-the-k2h-and-k2e-evms-the-earlier-version-of-mcsdk-works-on-both-the-evms-will-it-be-fixed-on-next-versionr³NajÖ]jÔ]jÕ]jÚ]r´NjwaujÜNjÝhjÞ]rµNjçXÃQ: The Image processing demo does not work on the version of MCSDK, V3.0x.xx.x on both the K2H and K2E EVMs. The earlier version of MCSDK works on both the EVMs. Will it be fixed on next version?r¶N…�r·N}r¸N(jÅj°NjÆj®Nubaubjò)�r¹N}rºN(jÅX**Ans:**r»NjÆjYKjÎjÃJjÐjõjÒ}r¼N(jÔ]jÕ]jÖ]j×]jÚ]ujÜM1jÝhjÞ]r½NjÚ)�r¾N}r¿N(jÅj»NjÒ}rÀN(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¹NjÞ]rÁNjçXAns:rÂN…�rÃN}rÄN(jÅUjÆj¾NubajÐjâubaubjc)�rÅN}rÆN(jÅUjÆjYKjÎjÃJjÐjfjÒ}rÇN(jÔ]jÕ]jÖ]j×]jÚ]ujÜM3jÝhjÞ]rÈNji)�rÉN}rÊN(jÅXGMake sure the u-boot environments is set as below to work on MCSDK 3.x.rËNjlKjÆjÅNjÎjÃJjÐjÜjÒ}rÌN(jÔ]jÕ]jÖ]j×]jÚ]ujÜM4jÝhjÞ]rÍNjçXGMake sure the u-boot environments is set as below to work on MCSDK 3.x.rÎN…�rÏN}rÐN(jÅjËNjÆjÉNubaubaubj)�rÑN}rÒN(jÅXNu-boot# env default –f –a u-boot# setenv mem_reserve 1536M u-boot# saveenvjÆjYKjÎjÃJjÐjjÒ}rÓN(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM€jÝhjÞ]rÔNjçXNu-boot# env default –f –a u-boot# setenv mem_reserve 1536M u-boot# saveenvrÕN…�rÖN}r×N(jÅUjÆjÑNubaubjc)�rØN}rÙN(jÅUjÆjYKjÎjÃJjÐjfjÒ}rÚN(jÔ]jÕ]jÖ]j×]jÚ]ujÜM<jÝhjÞ]rÛNji)�rÜN}rÝN(jÅUjlKjÆjØNjÎjÃJjÐjÜjÒ}rÞN(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�rßN}ràN(jÅX:Q: How to build and run the qmssIpcBenchmark on C6678 EVM?ráNjÆjYKjÎjÃJjÐjlKjÒ}râN(j×]rãNU8q-how-to-build-and-run-the-qmssipcbenchmark-on-c6678-evmräNajÖ]jÔ]jÕ]jÚ]råNhdaujÜNjÝhjÞ]ræNjçX:Q: How to build and run the qmssIpcBenchmark on C6678 EVM?rçN…�rèN}réN(jÅjáNjÆjßNubaubjò)�rêN}rëN(jÅX**Ans:**rìNjÆjYKjÎjÃJjÐjõjÒ}ríN(jÔ]jÕ]jÖ]j×]jÚ]ujÜMAjÝhjÞ]rîNjÚ)�rïN}rðN(jÅjìNjÒ}rñN(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêNjÞ]ròNjçXAns:róN…�rôN}rõN(jÅUjÆjïNubajÐjâubaubjò)�röN}r÷N(jÅX**Hardware set up:**røNjÆjYKjÎjÃJjÐjõjÒ}rùN(jÔ]jÕ]jÖ]j×]jÚ]ujÜMCjÝhjÞ]rúNjÚ)�rûN}rüN(jÅjøNjÒ}rýN(jÔ]jÕ]jÖ]j×]jÚ]ujÆjöNjÞ]rþNjçXHardware set up:rÿN…�rO}rO(jÅUjÆjûNubajÐjâubaubj)�rO}rO(jÅX]Set the boot mode dip switch to no boot/EMIF16 mode, Connect power and emulator to C6678 EVM.jÆjYKjÎjÃJjÐjjÒ}rO(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM�jÝhjÞ]rOjçX]Set the boot mode dip switch to no boot/EMIF16 mode, Connect power and emulator to C6678 EVM.rO…�rO}rO(jÅUjÆjOubaubjò)�r O}r O(jÅXy**Software setup:** 1. After power ON the EVM, create and launch the target configuration file(.ccxml) for CCS debugging.jÆjYKjÎjÃJjÐjõjÒ}r O(jÔ]jÕ]jÖ]j×]jÚ]ujÜMIjÝhjÞ]r O(jÚ)�r O}rO(jÅX**Software setup:**jÒ}rO(jÔ]jÕ]jÖ]j×]jÚ]ujÆj OjÞ]rOjçXSoftware setup:rO…�rO}rO(jÅUjÆj OubajÐjâubjçXf 1. After power ON the EVM, create and launch the target configuration file(.ccxml) for CCS debugging.rO…�rO}rO(jÅXf 1. After power ON the EVM, create and launch the target configuration file(.ccxml) for CCS debugging.jÆj Oubeubj )�rO}rO(jÅUjÆjYKjÎjÃJjÐj jÒ}rO(jU.jO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMMjÝhjÞ]rO(j{)�rO}rO(jÅX Group Core 0 and Core 1 in CCS. jÆjOjÎjÃJjÐjjÒ}rO(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rOjò)�rO}r O(jÅXGroup Core 0 and Core 1 in CCS.r!OjÆjOjÎjÃJjÐjõjÒ}r"O(jÔ]jÕ]jÖ]j×]jÚ]ujÜMMjÞ]r#OjçXGroup Core 0 and Core 1 in CCS.r$O…�r%O}r&O(jÅj!OjÆjOubaubaubj{)�r'O}r(O(jÅX%Connect to both cores via the group. jÆjOjÎjÃJjÐjjÒ}r)O(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r*Ojò)�r+O}r,O(jÅX$Connect to both cores via the group.r-OjÆj'OjÎjÃJjÐjõjÒ}r.O(jÔ]jÕ]jÖ]j×]jÚ]ujÜMOjÞ]r/OjçX$Connect to both cores via the group.r0O…�r1O}r2O(jÅj-OjÆj+Oubaubaubeubjò)�r3O}r4O(jÅX-4. Load the evmc66xxl.gel to initialize the DDR. The GEL can be found in the "CCS install dir"\ccsv5\ccs_base_x.x.x.xxxxx\emulation\boards\evmc66xxl\gel directory. Once loaded execute the default setup script on each core. In the CCS menu go to Scripts->EVMC6678L Init Functions->Global_Default_Setup.jÆjYKjÎjÃJjÐjõjÒ}r5O(jÔ]jÕ]jÖ]j×]jÚ]ujÜMQjÝhjÞ]r6OjçX'4. Load the evmc66xxl.gel to initialize the DDR. The GEL can be found in the "CCS install dir"ccsv5ccs_base_x.x.x.xxxxxemulationboardsevmc66xxlgel directory. Once loaded execute the default setup script on each core. In the CCS menu go to Scripts->EVMC6678L Init Functions->Global_Default_Setup.r7O…�r8O}r9O(jÅX-4. Load the evmc66xxl.gel to initialize the DDR. The GEL can be found in the "CCS install dir"\ccsv5\ccs_base_x.x.x.xxxxx\emulation\boards\evmc66xxl\gel directory. Once loaded execute the default setup script on each core. In the CCS menu go to Scripts->EVMC6678L Init Functions->Global_Default_Setup.jÆj3Oubaubjò)�r:O}r;O(jÅX�5. Highlighting the Group in the CCS Debug window, load transport\ipc\examples\qmssIpcBenchmark\Debug\qmssIpcBenchmark_c66xx.out on each corejÆjYKjÎjÃJjÐjõjÒ}rO…�r?O}r@O(jÅX�5. Highlighting the Group in the CCS Debug window, load transport\ipc\examples\qmssIpcBenchmark\Debug\qmssIpcBenchmark_c66xx.out on each corejÆj:Oubaubjò)�rAO}rBO(jÅXN6. Highlighting the Group in CCS Debug window, run the program in CCS on both cores simultaneously, qmssIpcBenchmark_c66xx will send messageQ messages between the cores via the QMSS transport. The messages will be used to measure the transport's performance. The test will be complete after the throughput (msg/s) has been calculated.rCOjÆjYKjÎjÃJjÐjõjÒ}rDO(jÔ]jÕ]jÖ]j×]jÚ]ujÜM\jÝhjÞ]rEOjçXN6. Highlighting the Group in CCS Debug window, run the program in CCS on both cores simultaneously, qmssIpcBenchmark_c66xx will send messageQ messages between the cores via the QMSS transport. The messages will be used to measure the transport's performance. The test will be complete after the throughput (msg/s) has been calculated.rFO…�rGO}rHO(jÅjCOjÆjAOubaubjR)�rIO}rJO(jÅX".. Image:: ../images/Qmss_IPC.png jÆjYKjÎjÃJjÐjZjÒ}rKO(UuriXrtos/../images/Qmss_IPC.pngrLOj×]jÖ]jÔ]jÕ]jX}rMOU*jLOsjÚ]ujÜMcjÝhjÞ]ubjhK)�rNO}rOO(jÅXrQ: How can I build the qmssIpcbenchmark of pdk_C6678_1_1_2_x pdk_C6678_1_1_2_x with release build configuration ?rPOjÆjYKjÎjÃJjÐjlKjÒ}rQO(j×]rROUnq-how-can-i-build-the-qmssipcbenchmark-of-pdk-c6678-1-1-2-x-pdk-c6678-1-1-2-x-with-release-build-configurationrSOajÖ]jÔ]jÕ]jÚ]rTOh}aujÜNjÝhjÞ]rUOjçXrQ: How can I build the qmssIpcbenchmark of pdk_C6678_1_1_2_x pdk_C6678_1_1_2_x with release build configuration ?rVO…�rWO}rXO(jÅjPOjÆjNOubaubjò)�rYO}rZO(jÅX**Ans:**r[OjÆjYKjÎjÃJjÐjõjÒ}r\O(jÔ]jÕ]jÖ]j×]jÚ]ujÜMhjÝhjÞ]r]OjÚ)�r^O}r_O(jÅj[OjÒ}r`O(jÔ]jÕ]jÖ]j×]jÚ]ujÆjYOjÞ]raOjçXAns:rbO…�rcO}rdO(jÅUjÆj^OubajÐjâubaubjc)�reO}rfO(jÅUjÆjYKjÎjÃJjÐjfjÒ}rgO(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjjÝhjÞ]rhO(ji)�riO}rjO(jÅXÑActually the option, "-mo -o3 -q -k -eo.o" works for building the IPC-QMSS transport library in release mode and the option "-mo -g -q -k -eo.o" works for building the IPC-QMSS transport library in debug mode.rkOjlKjÆjeOjÎjÃJjÐjÜjÒ}rlO(jÔ]jÕ]jÖ]j×]jÚ]ujÜMljÝhjÞ]rmOjçXÑActually the option, "-mo -o3 -q -k -eo.o" works for building the IPC-QMSS transport library in release mode and the option "-mo -g -q -k -eo.o" works for building the IPC-QMSS transport library in debug mode.rnO…�roO}rpO(jÅjkOjÆjiOubaubji)�rqO}rrO(jÅX�But the common.bld script of IPC doesnot create a "release" folder. By default it always creates the "debug" folder and dumps all the binaries.rsOjlKjÆjeOjÎjÃJjÐjÜjÒ}rtO(jÔ]jÕ]jÖ]j×]jÚ]ujÜMojÝhjÞ]ruOjçX�But the common.bld script of IPC doesnot create a "release" folder. By default it always creates the "debug" folder and dumps all the binaries.rvO…�rwO}rxO(jÅjsOjÆjqOubaubji)�ryO}rzO(jÅX…By tweaking the common.bld, release folder can be made and hence the the IPC - qmssIpcBenchmark project can be built in release mode.r{OjlKjÆjeOjÎjÃJjÐjÜjÒ}r|O(jÔ]jÕ]jÖ]j×]jÚ]ujÜMqjÝhjÞ]r}OjçX…By tweaking the common.bld, release folder can be made and hence the the IPC - qmssIpcBenchmark project can be built in release mode.r~O…�rO}r€O(jÅj{OjÆjyOubaubji)�r�O}r‚O(jÅX!**How to change the Common.bld:**rƒOjlKjÆjeOjÎjÃJjÐjÜjÒ}r„O(jÔ]jÕ]jÖ]j×]jÚ]ujÜMrjÝhjÞ]r…OjÚ)�r†O}r‡O(jÅjƒOjÒ}rˆO(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�OjÞ]r‰OjçXHow to change the Common.bld:rŠO…�r‹O}rŒO(jÅUjÆj†OubajÐjâubaubji)�r�O}rŽO(jÅX¹1. Go to C:\ti\ipc_3_00_xx_xx\packages\ti\sdo\ipc\build\Common.bld ( Note: Go to the IPC version you use for building the transport library. Here, it refers to IPC version : 3.00.4.29)jlKjÆjeOjÎjÃJjÐjÜjÒ}r�O(jÔ]jÕ]jÖ]j×]jÚ]ujÜMujÝhjÞ]r�OjçX±1. Go to C:tiipc_3_00_xx_xxpackagestisdoipcbuildCommon.bld ( Note: Go to the IPC version you use for building the transport library. Here, it refers to IPC version : 3.00.4.29)r‘O…�r’O}r“O(jÅX¹1. Go to C:\ti\ipc_3_00_xx_xx\packages\ti\sdo\ipc\build\Common.bld ( Note: Go to the IPC version you use for building the transport library. Here, it refers to IPC version : 3.00.4.29)jÆj�Oubaubji)�r”O}r•O(jÅX 2. Modifyr–OjlKjÆjeOjÎjÃJjÐjÜjÒ}r—O(jÔ]jÕ]jÖ]j×]jÚ]ujÜMvjÝhjÞ]r˜OjçX 2. Modifyr™O…�ršO}r›O(jÅj–OjÆj”Oubaubji)�rœO}r�O(jÅX#Line No:88 profiles[0] = "release";ržOjlKjÆjeOjÎjÃJjÐjÜjÒ}rŸO(jÔ]jÕ]jÖ]j×]jÚ]ujÜMwjÝhjÞ]r OjçX#Line No:88 profiles[0] = "release";r¡O…�r¢O}r£O(jÅjžOjÆjœOubaubji)�r¤O}r¥O(jÅX-Line No: 99 var libPath = "lib/ipc/release/";r¦OjlKjÆjeOjÎjÃJjÐjÜjÒ}r§O(jÔ]jÕ]jÖ]j×]jÚ]ujÜMxjÝhjÞ]r¨OjçX-Line No: 99 var libPath = "lib/ipc/release/";r©O…�rªO}r«O(jÅj¦OjÆj¤Oubaubji)�r¬O}r­O(jÅX�3. Build with option : -mo -o3 -q -k -eo.o in config.bld of transport library located at "..\ti\pdk_C6678_1_1_2_x\packages\ti\transport\ipc\qmss\transports"jlKjÆjeOjÎjÃJjÐjÜjÒ}r®O(jÔ]jÕ]jÖ]j×]jÚ]ujÜM{jÝhjÞ]r¯OjçX•3. Build with option : -mo -o3 -q -k -eo.o in config.bld of transport library located at "..tipdk_C6678_1_1_2_xpackagestitransportipcqmsstransports"r°O…�r±O}r²O(jÅX�3. Build with option : -mo -o3 -q -k -eo.o in config.bld of transport library located at "..\ti\pdk_C6678_1_1_2_x\packages\ti\transport\ipc\qmss\transports"jÆj¬Oubaubji)�r³O}r´O(jÅX&4. Now build qmssIpcBenchmark project.rµOjlKjÆjeOjÎjÃJjÐjÜjÒ}r¶O(jÔ]jÕ]jÖ]j×]jÚ]ujÜM|jÝhjÞ]r·OjçX&4. Now build qmssIpcBenchmark project.r¸O…�r¹O}rºO(jÅjµOjÆj³Oubaubji)�r»O}r¼O(jÅXGScreenshot of the successful release build of qmssIpcBenchmark project.r½OjlKjÆjeOjÎjÃJjÐjÜjÒ}r¾O(jÔ]jÕ]jÖ]j×]jÚ]ujÜM~jÝhjÞ]r¿OjçXGScreenshot of the successful release build of qmssIpcBenchmark project.rÀO…�rÁO}rÂO(jÅj½OjÆj»OubaubeubjR)�rÃO}rÄO(jÅX*.. Image:: ../images/QMSSIPC_project1.png jÆjYKjÎjÃJjÐjZjÒ}rÅO(UuriX#rtos/../images/QMSSIPC_project1.pngrÆOj×]jÖ]jÔ]jÕ]jX}rÇOU*jÆOsjÚ]ujÜM€jÝhjÞ]ubjc)�rÈO}rÉO(jÅUjÆjYKjÎjÃJjÐjfjÒ}rÊO(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÝhjÞ]rËOji)�rÌO}rÍO(jÅUjlKjÆjÈOjÎjÃJjÐjÜjÒ}rÎO(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�rÏO}rÐO(jÅXoQ: How to re-build the IPC - QMSS transport library and generate “ti.transport.ipc.qmss.transports.ae66â€� ?rÑOjÆjYKjÎjÃJjÐjlKjÒ}rÒO(j×]rÓOUcq-how-to-re-build-the-ipc-qmss-transport-library-and-generate-ti-transport-ipc-qmss-transports-ae66rÔOajÖ]jÔ]jÕ]jÚ]rÕOj¶aujÜNjÝhjÞ]rÖOjçXoQ: How to re-build the IPC - QMSS transport library and generate “ti.transport.ipc.qmss.transports.ae66â€� ?r×O…�rØO}rÙO(jÅjÑOjÆjÏOubaubjò)�rÚO}rÛO(jÅX**Ans:**rÜOjÆjYKjÎjÃJjÐjõjÒ}rÝO(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‡jÝhjÞ]rÞOjÚ)�rßO}ràO(jÅjÜOjÒ}ráO(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÚOjÞ]râOjçXAns:rãO…�räO}råO(jÅUjÆjßOubajÐjâubaubjò)�ræO}rçO(jÅXgAfter installing PDK, go to path “~\ti\pdk_C6678_1_1_2_x\packages\ti\transport\ipc\qmss\transportsâ€�jÆjYKjÎjÃJjÐjõjÒ}rèO(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‰jÝhjÞ]réOjçX_After installing PDK, go to path “~tipdk_C6678_1_1_2_xpackagestitransportipcqmsstransportsâ€�rêO…�rëO}rìO(jÅXgAfter installing PDK, go to path “~\ti\pdk_C6678_1_1_2_x\packages\ti\transport\ipc\qmss\transportsâ€�jÆjæOubaubjò)�ríO}rîO(jÅX�1. [Optional - Required for debug single stepping] Modify the transports config.bld file C66LE/BE.ccOpts.prefix to remove optimization and add symbolic debugrïOjÆjYKjÎjÃJjÐjõjÒ}rðO(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŒjÝhjÞ]rñOjçX�1. [Optional - Required for debug single stepping] Modify the transports config.bld file C66LE/BE.ccOpts.prefix to remove optimization and add symbolic debugròO…�róO}rôO(jÅjïOjÆjíOubaubj)�rõO}röO(jÅX4From: "-mo -o3 -q -k -eo.o" To: "-mo -g -q -k -eo.o"jÆjYKjÎjÃJjÐjjÒ}r÷O(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÚjÝhjÞ]røOjçX4From: "-mo -o3 -q -k -eo.o" To: "-mo -g -q -k -eo.o"rùO…�rúO}rûO(jÅUjÆjõOubaubjò)�rüO}rýO(jÅXµ2. From a command prompt navigate to the pdk\packages\ti\transport\ipc\(qmss or srio) directory 3 Configure the XDCPATH environment variable with the BIOS and IPC install locations:jÆjYKjÎjÃJjÐjõjÒ}rþO(jÔ]jÕ]jÖ]j×]jÚ]ujÜM•jÝhjÞ]rÿOjçX°2. From a command prompt navigate to the pdkpackagestitransportipc(qmss or srio) directory 3 Configure the XDCPATH environment variable with the BIOS and IPC install locations:rP…�rP}rP(jÅXµ2. From a command prompt navigate to the pdk\packages\ti\transport\ipc\(qmss or srio) directory 3 Configure the XDCPATH environment variable with the BIOS and IPC install locations:jÆjüOubaubj)�rP}rP(jÅX`set XDCPATH=c:\ti\bios_w_xx_yy_zz\packages\ set XDCPATH=%XDCPATH%;c:\ti\ipc_w_xx_yy_zz\packages\jÆjYKjÎjÃJjÐjjÒ}rP(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMãjÝhjÞ]rPjçX`set XDCPATH=c:\ti\bios_w_xx_yy_zz\packages\ set XDCPATH=%XDCPATH%;c:\ti\ipc_w_xx_yy_zz\packages\rP…�rP}r P(jÅUjÆjPubaubjò)�r P}r P(jÅX†4 Configure the XDCCGROOT environment variable with the compiler install path (Using CGT 7.2.4 installed as part of CCS as an example)r PjÆjYKjÎjÃJjÐjõjÒ}r P(jÔ]jÕ]jÖ]j×]jÚ]ujÜMžjÝhjÞ]rPjçX†4 Configure the XDCCGROOT environment variable with the compiler install path (Using CGT 7.2.4 installed as part of CCS as an example)rP…�rP}rP(jÅj PjÆj Pubaubj)�rP}rP(jÅX4set XDCCGROOT=c:\ti\ccsv5\tools\compiler\c6000_7.2.4jÆjYKjÎjÃJjÐjjÒ}rP(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMëjÝhjÞ]rPjçX4set XDCCGROOT=c:\ti\ccsv5\tools\compiler\c6000_7.2.4rP…�rP}rP(jÅUjÆjPubaubjò)�rP}rP(jÅX'5 Add the XDC Tools to your system PATHrPjÆjYKjÎjÃJjÐjõjÒ}rP(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¥jÝhjÞ]rPjçX'5 Add the XDC Tools to your system PATHrP…�rP}r P(jÅjPjÆjPubaubj)�r!P}r"P(jÅX*set PATH=%PATH%;c:\ti\xdctools_w_xx_yy_zz\jÆjYKjÎjÃJjÐjjÒ}r#P(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMñjÝhjÞ]r$PjçX*set PATH=%PATH%;c:\ti\xdctools_w_xx_yy_zz\r%P…�r&P}r'P(jÅUjÆj!Pubaubjò)�r(P}r)P(jÅX6 Clean the transportr*PjÆjYKjÎjÃJjÐjõjÒ}r+P(jÔ]jÕ]jÖ]j×]jÚ]ujÜM«jÝhjÞ]r,PjçX6 Clean the transportr-P…�r.P}r/P(jÅj*PjÆj(Pubaubj)�r0P}r1P(jÅX>xdc clean -PR .jÆjYKjÎjÃJjÐjjÒ}r2P(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM÷jÝhjÞ]r3PjçX>xdc clean -PR .r4P…�r5P}r6P(jÅUjÆj0Pubaubjò)�r7P}r8P(jÅX7 Build the transportr9PjÆjYKjÎjÃJjÐjõjÒ}r:P(jÔ]jÕ]jÖ]j×]jÚ]ujÜM±jÝhjÞ]r;PjçX7 Build the transportrP(jÅj9PjÆj7Pubaubj)�r?P}r@P(jÅX >xdc -PR .jÆjYKjÎjÃJjÐjjÒ}rAP(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMýjÝhjÞ]rBPjçX >xdc -PR .rCP…�rDP}rEP(jÅUjÆj?Pubaubjò)�rFP}rGP(jÅXIf we try this option, we should be able to build in releasemode. Note: To allow single-step debug of the IPC and BIOS source rebuild the example projects with the following command added to the example's .cfg file BIOS.libType = BIOS.LibType_Debug; <--- here.rHPjÆjYKjÎjÃJjÐjõjÒ}rIP(jÔ]jÕ]jÖ]j×]jÚ]ujÜM·jÝhjÞ]rJPjçXIf we try this option, we should be able to build in releasemode. Note: To allow single-step debug of the IPC and BIOS source rebuild the example projects with the following command added to the example's .cfg file BIOS.libType = BIOS.LibType_Debug; <--- here.rKP…�rLP}rMP(jÅjHPjÆjFPubaubjR)�rNP}rOP(jÅX+.. Image:: ../images/Qmss_transports.png jÆjYKjÎXainternal padding after source/rtos/PDK_Platform_Software/IPC/IPC_FAQ_for_Keystone_Devices.rst.incrPPjÐjZjÒ}rQP(UuriX"rtos/../images/Qmss_transports.pngrRPj×]jÖ]jÔ]jÕ]jX}rSPU*jRPsjÚ]ujÜM¿jÝhjÞ]ubeubeubeubjÇ)�rTP}rUP(jÅUjÆjÌjÎjÏjÐjÑjÒ}rVP(jÔ]jÕ]jÖ]j×]rWPUipc-install-guidesrXPajÚ]rYPj�aujÜKœjÝhjÞ]rZP(jà)�r[P}r\P(jÅXIPC Install Guidesr]PjÆjTPjÎjÏjÐjäjÒ}r^P(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÝhjÞ]r_PjçXIPC Install Guidesr`P…�raP}rbP(jÅj]PjÆj[Pubaubjò)�rcP}rdP(jÅXéThe IPC package now comes bundled with Processor SDK RTOS and can be built using the top-level makefile located in the Processor SDK RTOS folder. These install guides have been kept here for those using older, legacy versions of IPC.rePjÆjTPjÎjÏjÐjõjÒ}rfP(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rgPjçXéThe IPC package now comes bundled with Processor SDK RTOS and can be built using the top-level makefile located in the Processor SDK RTOS folder. These install guides have been kept here for those using older, legacy versions of IPC.rhP…�riP}rjP(jÅjePjÆjcPubaubjÇ)�rkP}rlP(jÅUjÆjTPjÎjÏjÐjÑjÒ}rmP(jÔ]jÕ]jÖ]j×]rnPUbios-install-guideroPajÚ]rpPh)aujÜK jÝhjÞ]rqP(jà)�rrP}rsP(jÅXBIOS Install GuidertPjÆjkPjÎjÏjÐjäjÒ}ruP(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rvPjçXBIOS Install GuiderwP…�rxP}ryP(jÅjtPjÆjrPubaubj7)�rzP}r{P(jÅX>http://processors.wiki.ti.com/index.php/IPC_Install_Guide_BIOSjÆjkPjÎj:XDsource/rtos/PDK_Platform_Software/IPC/IPC_Install_Guide_BIOS.rst.incr|P…�r}P}r~PbjÐj>jÒ}rP(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r€PjçX>http://processors.wiki.ti.com/index.php/IPC_Install_Guide_BIOSr�P…�r‚P}rƒP(jÅUjÆjzPubaubjÇ)�r„P}r…P(jÅUjKjÆjkPjÎj}PjÐjÑjÒ}r†P(jÔ]r‡PX introductionrˆPajÕ]jÖ]j×]r‰PUid47rŠPajÚ]ujÜKjÝhjÞ]r‹P(jà)�rŒP}r�P(jÅX IntroductionrŽPjÆj„PjÎj}PjÐjäjÒ}r�P(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r�PjçX Introductionr‘P…�r’P}r“P(jÅjŽPjÆjŒPubaubjò)�r”P}r•P(jÅXðInter/Intra Processor Communication (IPC) is a product designed to enable communication between processors in a multi-processor environment. Features of IPC include message passing, multi-processor gates, shared memory primitives, and more.r–PjÆj„PjÎj}PjÐjõjÒ}r—P(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r˜PjçXðInter/Intra Processor Communication (IPC) is a product designed to enable communication between processors in a multi-processor environment. Features of IPC include message passing, multi-processor gates, shared memory primitives, and more.r™P…�ršP}r›P(jÅj–PjÆj”Pubaubjò)�rœP}r�P(jÅX<IPC is designed for use with processors running SYS/BIOS applications. This is typically an ARM or DSP. IPC includes support for High Level Operating Systems (HLOS) like Linux, as well as the SYS/BIOS RTOS. The breadth of IPC features supported in an HLOS environment is reduced in an effort to simplify the product.ržPjÆj„PjÎj}PjÐjõjÒ}rŸP(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]r PjçX<IPC is designed for use with processors running SYS/BIOS applications. This is typically an ARM or DSP. IPC includes support for High Level Operating Systems (HLOS) like Linux, as well as the SYS/BIOS RTOS. The breadth of IPC features supported in an HLOS environment is reduced in an effort to simplify the product.r¡P…�r¢P}r£P(jÅjžPjÆjœPubaubeubjÇ)�r¤P}r¥P(jÅUjKjÆjkPjÎj}PjÐjÑjÒ}r¦P(jÔ]r§PXinstallr¨PajÕ]jÖ]j×]r©PUinstallrªPajÚ]ujÜKjÝhjÞ]r«P(jà)�r¬P}r­P(jÅXInstallr®PjÆj¤PjÎj}PjÐjäjÒ}r¯P(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r°PjçXInstallr±P…�r²P}r³P(jÅj®PjÆj¬Pubaubjò)�r´P}rµP(jÅXhIPC is often distributed and installed within a larger SDK. In those cases, no installation is required.r¶PjÆj¤PjÎj}PjÐjõjÒ}r·P(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r¸PjçXhIPC is often distributed and installed within a larger SDK. In those cases, no installation is required.r¹P…�rºP}r»P(jÅj¶PjÆj´Pubaubjò)�r¼P}r½P(jÅXÊOutside of an SDK, `IPC can be downloaded here `__, and is released as a zip file. To install, simply extract the file.jÆj¤PjÎj}PjÐjõjÒ}r¾P(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r¿P(jçXOutside of an SDK, rÀP…�rÁP}rÂP(jÅXOutside of an SDK, jÆj¼Pubjû)�rÃP}rÄP(jÅXr`IPC can be downloaded here `__jÒ}rÅP(UnameXIPC can be downloaded herejXQhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/index.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆj¼PjÞ]rÆPjçXIPC can be downloaded hererÇP…�rÈP}rÉP(jÅUjÆjÃPubajÐjÿubjçXE, and is released as a zip file. To install, simply extract the file.rÊP…�rËP}rÌP(jÅXE, and is released as a zip file. To install, simply extract the file.jÆj¼Pubeubj)�rÍP}rÎP(jÅX"buildhost$ unzip ipc_.zipjÆj¤PjÎj}PjÐjjÒ}rÏP(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM-jÝhjÞ]rÐPjçX"buildhost$ unzip ipc_.ziprÑP…�rÒP}rÓP(jÅUjÆjÍPubaubjò)�rÔP}rÕP(jÅX}This will extract the IPC product in a directory with its product name and version information (e.g. **c:/ti/ipc_**)jÆj¤PjÎj}PjÐjõjÒ}rÖP(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r×P(jçXeThis will extract the IPC product in a directory with its product name and version information (e.g. rØP…�rÙP}rÚP(jÅXeThis will extract the IPC product in a directory with its product name and version information (e.g. jÆjÔPubjÚ)�rÛP}rÜP(jÅX**c:/ti/ipc_**jÒ}rÝP(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÔPjÞ]rÞPjçXc:/ti/ipc_rßP…�ràP}ráP(jÅUjÆjÛPubajÐjâubjçX)…�râP}rãP(jÅX)jÆjÔPubeubjë)�räP}råP(jÅXE- This document assumes the IPC install path to be the user's home directory on a Linux host machine (**/home/**) or the user's main drive on a Windows host machine (**C:\\**). The variable **IPC_INSTALL_DIR** will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands. - Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.jÆj¤PjÎNjÐjïjÒ}ræP(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rçPjt)�rèP}réP(jÅUjÒ}rêP(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjäPjÞ]rëP(j{)�rìP}ríP(jÅXOThis document assumes the IPC install path to be the user's home directory on a Linux host machine (**/home/**) or the user's main drive on a Windows host machine (**C:\\**). The variable **IPC_INSTALL_DIR** will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.jÒ}rîP(jÔ]jÕ]jÖ]j×]jÚ]ujÆjèPjÞ]rïPjò)�rðP}rñP(jÅXOThis document assumes the IPC install path to be the user's home directory on a Linux host machine (**/home/**) or the user's main drive on a Windows host machine (**C:\\**). The variable **IPC_INSTALL_DIR** will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.jÆjìPjÎj}PjÐjõjÒ}ròP(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]róP(jçXdThis document assumes the IPC install path to be the user's home directory on a Linux host machine (rôP…�rõP}röP(jÅXdThis document assumes the IPC install path to be the user's home directory on a Linux host machine (jÆjðPubjÚ)�r÷P}røP(jÅX**/home/**jÒ}rùP(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðPjÞ]rúPjçX /home/rûP…�rüP}rýP(jÅUjÆj÷PubajÐjâubjçX6) or the user's main drive on a Windows host machine (rþP…�rÿP}rQ(jÅX6) or the user's main drive on a Windows host machine (jÆjðPubjÚ)�rQ}rQ(jÅX**C:\\**jÒ}rQ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðPjÞ]rQjçXC:\rQ…�rQ}rQ(jÅUjÆjQubajÐjâubjçX). The variable rQ…�r Q}r Q(jÅX). The variable jÆjðPubjÚ)�r Q}r Q(jÅX**IPC_INSTALL_DIR**jÒ}r Q(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðPjÞ]rQjçXIPC_INSTALL_DIRrQ…�rQ}rQ(jÅUjÆj QubajÐjâubjçXz will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.rQ…�rQ}rQ(jÅXz will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.jÆjðPubeubajÐjubj{)�rQ}rQ(jÅX×Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.jÒ}rQ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjèPjÞ]rQjò)�rQ}rQ(jÅX×Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.rQjÆjQjÎj}PjÐjõjÒ}rQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]rQjçX×Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.rQ…�rQ}r Q(jÅjQjÆjQubaubajÐjubejÐjwubaubeubjÇ)�r!Q}r"Q(jÅUjKjÆjkPjÎj}PjÐjÑjÒ}r#Q(jÔ]r$QXbuildr%QajÕ]jÖ]j×]r&QUid48r'QajÚ]ujÜK/jÝhjÞ]r(Q(jà)�r)Q}r*Q(jÅXBuildr+QjÆj!QjÎj}PjÐjäjÒ}r,Q(jÔ]jÕ]jÖ]j×]jÚ]ujÜK/jÝhjÞ]r-QjçXBuildr.Q…�r/Q}r0Q(jÅj+QjÆj)Qubaubjò)�r1Q}r2Q(jÅXùThe IPC product often comes with prebuilt libraries, so rebuilding them isn't necessary. The IPC product downloads contain prebuilt libraries, and when provided with an SDK, IPC is typically rebuilt to contain only libraries appropriate for the SDK.r3QjÆj!QjÎj}PjÐjõjÒ}r4Q(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÝhjÞ]r5QjçXùThe IPC product often comes with prebuilt libraries, so rebuilding them isn't necessary. The IPC product downloads contain prebuilt libraries, and when provided with an SDK, IPC is typically rebuilt to contain only libraries appropriate for the SDK.r6Q…�r7Q}r8Q(jÅj3QjÆj1Qubaubjò)�r9Q}r:Q(jÅX¯However, if you want to rebuild its libraries, IPC provides GNU makefile(s) at the base of the product. This section describes the steps required to rebuild the IPC libraries.r;QjÆj!QjÎj}PjÐjõjÒ}rQ…�r?Q}r@Q(jÅj;QjÆj9Qubaubjë)�rAQ}rBQ(jÅX¹GNU make version 3.81 or greater is required. The XDC tools (provided with most SDKs and CCS distributions) includes a pre-compiled version of GNU make 3.81 in $(XDC_INSTALL_DIR)/gmake.jÆj!QjÎj}PjÐjïjÒ}rCQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rDQjò)�rEQ}rFQ(jÅX¹GNU make version 3.81 or greater is required. The XDC tools (provided with most SDKs and CCS distributions) includes a pre-compiled version of GNU make 3.81 in $(XDC_INSTALL_DIR)/gmake.rGQjÆjAQjÎj}PjÐjõjÒ}rHQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÞ]rIQjçX¹GNU make version 3.81 or greater is required. The XDC tools (provided with most SDKs and CCS distributions) includes a pre-compiled version of GNU make 3.81 in $(XDC_INSTALL_DIR)/gmake.rJQ…�rKQ}rLQ(jÅjGQjÆjEQubaubaubjÇ)�rMQ}rNQ(jÅUjKjÆj!QjÎj}PjÐjÑjÒ}rOQ(jÔ]rPQX products.makrQQajÕ]jÖ]j×]rRQU products-makrSQajÚ]ujÜK@jÝhjÞ]rTQ(jà)�rUQ}rVQ(jÅX products.makrWQjÆjMQjÎj}PjÐjäjÒ}rXQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÝhjÞ]rYQjçX products.makrZQ…�r[Q}r\Q(jÅjWQjÆjUQubaubjò)�r]Q}r^Q(jÅX—IPC contains a **products.mak** file at the root of the product that specifies the necessary paths and options to build IPC for the various OS support.jÆjMQjÎj}PjÐjõjÒ}r_Q(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÝhjÞ]r`Q(jçXIPC contains a raQ…�rbQ}rcQ(jÅXIPC contains a jÆj]QubjÚ)�rdQ}reQ(jÅX**products.mak**jÒ}rfQ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]QjÞ]rgQjçX products.makrhQ…�riQ}rjQ(jÅUjÆjdQubajÐjâubjçXx file at the root of the product that specifies the necessary paths and options to build IPC for the various OS support.rkQ…�rlQ}rmQ(jÅXx file at the root of the product that specifies the necessary paths and options to build IPC for the various OS support.jÆj]Qubeubjò)�rnQ}roQ(jÅX6Edit **products.mak** and set the following variables:rpQjÆjMQjÎj}PjÐjõjÒ}rqQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÝhjÞ]rrQ(jçXEdit rsQ…�rtQ}ruQ(jÅXEdit jÆjnQubjÚ)�rvQ}rwQ(jÅX**products.mak**jÒ}rxQ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjnQjÞ]ryQjçX products.makrzQ…�r{Q}r|Q(jÅUjÆjvQubajÐjâubjçX! and set the following variables:r}Q…�r~Q}rQ(jÅX! and set the following variables:jÆjnQubeubjë)�r€Q}r�Q(jÅXYPlease make sure the complete path is specified. (e.g) Don't use ~ in the path specified.r‚QjÆjMQjÎj}PjÐjïjÒ}rƒQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r„Qjò)�r…Q}r†Q(jÅj‚QjÆj€QjÎj}PjÐjõjÒ}r‡Q(jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÞ]rˆQjçXYPlease make sure the complete path is specified. (e.g) Don't use ~ in the path specified.r‰Q…�rŠQ}r‹Q(jÅj‚QjÆj…Qubaubaubjt)�rŒQ}r�Q(jÅUjÆjMQjÎj}PjÐjwjÒ}rŽQ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKKjÝhjÞ]r�Q(j{)�r�Q}r‘Q(jÅX8**XDC_INSTALL_DIR** - Path to TI's XDCTools installationr’QjÆjŒQjÎj}PjÐjjÒ}r“Q(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r”Qjò)�r•Q}r–Q(jÅj’QjÆj�QjÎj}PjÐjõjÒ}r—Q(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÞ]r˜Q(jÚ)�r™Q}ršQ(jÅX**XDC_INSTALL_DIR**jÒ}r›Q(jÔ]jÕ]jÖ]j×]jÚ]ujÆj•QjÞ]rœQjçXXDC_INSTALL_DIRr�Q…�ržQ}rŸQ(jÅUjÆj™QubajÐjâubjçX% - Path to TI's XDCTools installationr Q…�r¡Q}r¢Q(jÅX% - Path to TI's XDCTools installationjÆj•Qubeubaubj{)�r£Q}r¤Q(jÅX9**BIOS_INSTALL_DIR** - Path to TI's SYS/BIOS installationr¥QjÆjŒQjÎj}PjÐjjÒ}r¦Q(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r§Qjò)�r¨Q}r©Q(jÅj¥QjÆj£QjÎj}PjÐjõjÒ}rªQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]r«Q(jÚ)�r¬Q}r­Q(jÅX**BIOS_INSTALL_DIR**jÒ}r®Q(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨QjÞ]r¯QjçXBIOS_INSTALL_DIRr°Q…�r±Q}r²Q(jÅUjÆj¬QubajÐjâubjçX% - Path to TI's SYS/BIOS installationr³Q…�r´Q}rµQ(jÅX% - Path to TI's SYS/BIOS installationjÆj¨Qubeubaubj{)�r¶Q}r·Q(jÅX°**ti.targets.** - Path to TI toolchain for the device. - Set only the variables to the targets your device supports to minimize build time. jÆjŒQjÎNjÐjjÒ}r¸Q(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¹Q(jò)�rºQ}r»Q(jÅXU**ti.targets.** - Path to TI toolchain for the device.jÆj¶QjÎj}PjÐjõjÒ}r¼Q(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÞ]r½Q(jÚ)�r¾Q}r¿Q(jÅX.**ti.targets.**jÒ}rÀQ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjºQjÞ]rÁQjçX*ti.targets.rÂQ…�rÃQ}rÄQ(jÅUjÆj¾QubajÐjâubjçX' - Path to TI toolchain for the device.rÅQ…�rÆQ}rÇQ(jÅX' - Path to TI toolchain for the device.jÆjºQubeubjt)�rÈQ}rÉQ(jÅUjÒ}rÊQ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj¶QjÞ]rËQj{)�rÌQ}rÍQ(jÅXSSet only the variables to the targets your device supports to minimize build time. jÒ}rÎQ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÈQjÞ]rÏQjò)�rÐQ}rÑQ(jÅXRSet only the variables to the targets your device supports to minimize build time.rÒQjÆjÌQjÎj}PjÐjõjÒ}rÓQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÞ]rÔQjçXRSet only the variables to the targets your device supports to minimize build time.rÕQ…�rÖQ}r×Q(jÅjÒQjÆjÐQubaubajÐjubajÐjwubeubj{)�rØQ}rÙQ(jÅX¶**gnu.targets.arm.** - Path to GNU toolchain for the device. - Set only the variables to the targets your device supports to minimize build time. jÆjŒQjÎNjÐjjÒ}rÚQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÛQ(jò)�rÜQ}rÝQ(jÅX[**gnu.targets.arm.** - Path to GNU toolchain for the device.jÆjØQjÎj}PjÐjõjÒ}rÞQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÞ]rßQ(jÚ)�ràQ}ráQ(jÅX3**gnu.targets.arm.**jÒ}râQ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÜQjÞ]rãQjçX/gnu.targets.arm.räQ…�råQ}ræQ(jÅUjÆjàQubajÐjâubjçX( - Path to GNU toolchain for the device.rçQ…�rèQ}réQ(jÅX( - Path to GNU toolchain for the device.jÆjÜQubeubjt)�rêQ}rëQ(jÅUjÒ}rìQ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjØQjÞ]ríQj{)�rîQ}rïQ(jÅXSSet only the variables to the targets your device supports to minimize build time. jÒ}rðQ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêQjÞ]rñQjò)�ròQ}róQ(jÅXRSet only the variables to the targets your device supports to minimize build time.rôQjÆjîQjÎj}PjÐjõjÒ}rõQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]röQjçXRSet only the variables to the targets your device supports to minimize build time.r÷Q…�røQ}rùQ(jÅjôQjÆjòQubaubajÐjubajÐjwubeubj{)�rúQ}rûQ(jÅX**PLATFORM** - (Optional) platform for which to build executables - Introduced in IPC 3.10. Prior releases build executables for **all** platforms based on that targets/toolchains set above - If not set, only libraries will be built (not executables) jÆjŒQjÎNjÐjjÒ}rüQ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rýQ(jò)�rþQ}rÿQ(jÅXA**PLATFORM** - (Optional) platform for which to build executablesjÆjúQjÎj}PjÐjõjÒ}rR(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÞ]rR(jÚ)�rR}rR(jÅX **PLATFORM**jÒ}rR(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþQjÞ]rRjçXPLATFORMrR…�rR}rR(jÅUjÆjRubajÐjâubjçX5 - (Optional) platform for which to build executablesr R…�r R}r R(jÅX5 - (Optional) platform for which to build executablesjÆjþQubeubjt)�r R}r R(jÅUjÒ}rR(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjúQjÞ]rR(j{)�rR}rR(jÅXyIntroduced in IPC 3.10. Prior releases build executables for **all** platforms based on that targets/toolchains set abovejÒ}rR(jÔ]jÕ]jÖ]j×]jÚ]ujÆj RjÞ]rRjò)�rR}rR(jÅXyIntroduced in IPC 3.10. Prior releases build executables for **all** platforms based on that targets/toolchains set abovejÆjRjÎj}PjÐjõjÒ}rR(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÞ]rR(jçX=Introduced in IPC 3.10. Prior releases build executables for rR…�rR}rR(jÅX=Introduced in IPC 3.10. Prior releases build executables for jÆjRubjÚ)�rR}rR(jÅX**all**jÒ}rR(jÔ]jÕ]jÖ]j×]jÚ]ujÆjRjÞ]rRjçXallrR…�r R}r!R(jÅUjÆjRubajÐjâubjçX5 platforms based on that targets/toolchains set abover"R…�r#R}r$R(jÅX5 platforms based on that targets/toolchains set abovejÆjRubeubajÐjubj{)�r%R}r&R(jÅX;If not set, only libraries will be built (not executables) jÒ}r'R(jÔ]jÕ]jÖ]j×]jÚ]ujÆj RjÞ]r(Rjò)�r)R}r*R(jÅX:If not set, only libraries will be built (not executables)r+RjÆj%RjÎj}PjÐjõjÒ}r,R(jÔ]jÕ]jÖ]j×]jÚ]ujÜK]jÞ]r-RjçX:If not set, only libraries will be built (not executables)r.R…�r/R}r0R(jÅj+RjÆj)RubaubajÐjubejÐjwubeubeubjë)�r1R}r2R(jÅXbThe versions used during validation can be found in the IPC Release Notes provided in the product.jÆjMQjÎj}PjÐjïjÒ}r3R(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r4Rjò)�r5R}r6R(jÅXbThe versions used during validation can be found in the IPC Release Notes provided in the product.r7RjÆj1RjÎj}PjÐjõjÒ}r8R(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]r9RjçXbThe versions used during validation can be found in the IPC Release Notes provided in the product.r:R…�r;R}rR(jÅUjKjÆj!QjÎj}PjÐjÑjÒ}r?R(jÔ]r@RX ipc-bios.makrARajÕ]jÖ]j×]rBRU ipc-bios-makrCRajÚ]ujÜKdjÝhjÞ]rDR(jà)�rER}rFR(jÅX ipc-bios.makrGRjÆj=RjÎj}PjÐjäjÒ}rHR(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÝhjÞ]rIRjçX ipc-bios.makrJR…�rKR}rLR(jÅjGRjÆjERubaubjò)�rMR}rNR(jÅX^IPC is built with a GNU makefile. After editing **products.mak**, issue the following command:jÆj=RjÎj}PjÐjõjÒ}rOR(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÝhjÞ]rPR(jçX0IPC is built with a GNU makefile. After editing rQR…�rRR}rSR(jÅX0IPC is built with a GNU makefile. After editing jÆjMRubjÚ)�rTR}rUR(jÅX**products.mak**jÒ}rVR(jÔ]jÕ]jÖ]j×]jÚ]ujÆjMRjÞ]rWRjçX products.makrXR…�rYR}rZR(jÅUjÆjTRubajÐjâubjçX, issue the following command:r[R…�r\R}r]R(jÅX, issue the following command:jÆjMRubeubj)�r^R}r_R(jÅX$ make -f ipc-bios.mak alljÆj=RjÎj}PjÐjjÒ}r`R(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM{jÝhjÞ]raRjçX$ make -f ipc-bios.mak allrbR…�rcR}rdR(jÅUjÆj^Rubaubjò)�reR}rfR(jÅXLBased on the number of targets you're building for, this may take some time.rgRjÆj=RjÎj}PjÐjõjÒ}rhR(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÝhjÞ]riRjçXLBased on the number of targets you're building for, this may take some time.rjR…�rkR}rlR(jÅjgRjÆjeRubaubeubeubjÇ)�rmR}rnR(jÅUjKjÆjkPjÎj}PjÐjÑjÒ}roR(jÔ]rpRXexamplesrqRajÕ]jÖ]j×]rrRUexamplesrsRajÚ]ujÜKqjÝhjÞ]rtR(jà)�ruR}rvR(jÅXExamplesrwRjÆjmRjÎj}PjÐjäjÒ}rxR(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÝhjÞ]ryRjçXExamplesrzR…�r{R}r|R(jÅjwRjÆjuRubaubjò)�r}R}r~R(jÅX!The IPC product contains an examples/archive directory with device-specific examples. Once identifying your device, the examples can be unzipped anywhere on your build host. Typically once unzipped, the user edits the example's individual **products.mak** file and simply invokes **make**.jÆjmRjÎj}PjÐjõjÒ}rR(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÝhjÞ]r€R(jçXïThe IPC product contains an examples/archive directory with device-specific examples. Once identifying your device, the examples can be unzipped anywhere on your build host. Typically once unzipped, the user edits the example's individual r�R…�r‚R}rƒR(jÅXïThe IPC product contains an examples/archive directory with device-specific examples. Once identifying your device, the examples can be unzipped anywhere on your build host. Typically once unzipped, the user edits the example's individual jÆj}RubjÚ)�r„R}r…R(jÅX**products.mak**jÒ}r†R(jÔ]jÕ]jÖ]j×]jÚ]ujÆj}RjÞ]r‡RjçX products.makrˆR…�r‰R}rŠR(jÅUjÆj„RubajÐjâubjçX file and simply invokes r‹R…�rŒR}r�R(jÅX file and simply invokes jÆj}RubjÚ)�rŽR}r�R(jÅX**make**jÒ}r�R(jÔ]jÕ]jÖ]j×]jÚ]ujÆj}RjÞ]r‘RjçXmaker’R…�r“R}r”R(jÅUjÆjŽRubajÐjâubjçX.…�r•R}r–R(jÅX.jÆj}Rubeubjë)�r—R}r˜R(jÅX�A common place to unzip the examples is into the **IPC_INSTALL_DIR/examples/** directory. Each example's **products.mak** file is smart enough to look up two directories (in this case, into **IPC_INSTALL_DIR**) for a master **products.mak** file, and if found it uses those variables. This technique enables users to set the dependency variables in one place, namely **IPC_INSTALL_DIR/products.mak**.jÆjmRjÎj}PjÐjïjÒ}r™R(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ršRjò)�r›R}rœR(jÅX�A common place to unzip the examples is into the **IPC_INSTALL_DIR/examples/** directory. Each example's **products.mak** file is smart enough to look up two directories (in this case, into **IPC_INSTALL_DIR**) for a master **products.mak** file, and if found it uses those variables. This technique enables users to set the dependency variables in one place, namely **IPC_INSTALL_DIR/products.mak**.jÆj—RjÎj}PjÐjõjÒ}r�R(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÞ]ržR(jçX1A common place to unzip the examples is into the rŸR…�r R}r¡R(jÅX1A common place to unzip the examples is into the jÆj›RubjÚ)�r¢R}r£R(jÅX**IPC_INSTALL_DIR/examples/**jÒ}r¤R(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›RjÞ]r¥RjçXIPC_INSTALL_DIR/examples/r¦R…�r§R}r¨R(jÅUjÆj¢RubajÐjâubjçX directory. Each example's r©R…�rªR}r«R(jÅX directory. Each example's jÆj›RubjÚ)�r¬R}r­R(jÅX**products.mak**jÒ}r®R(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›RjÞ]r¯RjçX products.makr°R…�r±R}r²R(jÅUjÆj¬RubajÐjâubjçXE file is smart enough to look up two directories (in this case, into r³R…�r´R}rµR(jÅXE file is smart enough to look up two directories (in this case, into jÆj›RubjÚ)�r¶R}r·R(jÅX**IPC_INSTALL_DIR**jÒ}r¸R(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›RjÞ]r¹RjçXIPC_INSTALL_DIRrºR…�r»R}r¼R(jÅUjÆj¶RubajÐjâubjçX) for a master r½R…�r¾R}r¿R(jÅX) for a master jÆj›RubjÚ)�rÀR}rÁR(jÅX**products.mak**jÒ}rÂR(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›RjÞ]rÃRjçX products.makrÄR…�rÅR}rÆR(jÅUjÆjÀRubajÐjâubjçX file, and if found it uses those variables. This technique enables users to set the dependency variables in one place, namely rÇR…�rÈR}rÉR(jÅX file, and if found it uses those variables. This technique enables users to set the dependency variables in one place, namely jÆj›RubjÚ)�rÊR}rËR(jÅX **IPC_INSTALL_DIR/products.mak**jÒ}rÌR(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›RjÞ]rÍRjçXIPC_INSTALL_DIR/products.makrÎR…�rÏR}rÐR(jÅUjÆjÊRubajÐjâubjçX.…�rÑR}rÒR(jÅX.jÆj›Rubeubaubjò)�rÓR}rÔR(jÅXEEach example contains a **readme.txt** with example-specific details.rÕRjÆjmRjÎj}PjÐjõjÒ}rÖR(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]r×R(jçXEach example contains a rØR…�rÙR}rÚR(jÅXEach example contains a jÆjÓRubjÚ)�rÛR}rÜR(jÅX**readme.txt**jÒ}rÝR(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÓRjÞ]rÞRjçX readme.txtrßR…�ràR}ráR(jÅUjÆjÛRubajÐjâubjçX with example-specific details.râR…�rãR}räR(jÅX with example-specific details.jÆjÓRubeubeubjÇ)�råR}ræR(jÅUjKjÆjkPjÎj}PjÐjÑjÒ}rçR(jÔ]rèRXsee alsoréRajÕ]jÖ]j×]rêRUsee-alsorëRajÚ]ujÜK„jÝhjÞ]rìR(jà)�ríR}rîR(jÅXSee AlsorïRjÆjåRjÎj}PjÐjäjÒ}rðR(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÝhjÞ]rñRjçXSee AlsoròR…�róR}rôR(jÅjïRjÆjíRubaubjt)�rõR}röR(jÅUjÆjåRjÎj}PjÐjwjÒ}r÷R(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK†jÝhjÞ]røR(j{)�rùR}rúR(jÅX8`IPC 3.x `__rûRjÆjõRjÎj}PjÐjjÒ}rüR(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rýRjò)�rþR}rÿR(jÅjûRjÆjùRjÎj}PjÐjõjÒ}rS(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]rSjû)�rS}rS(jÅjûRjÒ}rS(UnameXIPC 3.xjX*index_Foundational_Components.html#ipc-3-xj×]jÖ]jÔ]jÕ]jÚ]ujÆjþRjÞ]rSjçXIPC 3.xrS…�rS}rS(jÅUjÆjSubajÐjÿubaubaubj{)�r S}r S(jÅXG`IPC Users Guide `__r SjÆjõRjÎj}PjÐjjÒ}r S(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r Sjò)�rS}rS(jÅj SjÆj SjÎj}PjÐjõjÒ}rS(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÞ]rSjû)�rS}rS(jÅj SjÒ}rS(UnameXIPC Users GuidejX1index_Foundational_Components.html#ipc-user-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjSjÞ]rSjçXIPC Users GuiderS…�rS}rS(jÅUjÆjSubajÐjÿubaubaubj{)�rS}rS(jÅX<`IPC 3.x FAQ `__rSjÆjõRjÎj}PjÐjjÒ}rS(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rSjò)�rS}rS(jÅjSjÆjSjÎj}PjÐjõjÒ}r S(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÞ]r!Sjû)�r"S}r#S(jÅjSjÒ}r$S(UnameX IPC 3.x FAQjX*index_Foundational_Components.html#ipc-faqj×]jÖ]jÔ]jÕ]jÚ]ujÆjSjÞ]r%SjçX IPC 3.x FAQr&S…�r'S}r(S(jÅUjÆj"SubajÐjÿubaubaubj{)�r)S}r*S(jÅXT`IPC Install Guide Linux `__r+SjÆjõRjÎj}PjÐjjÒ}r,S(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r-Sjò)�r.S}r/S(jÅj+SjÆj)SjÎj}PjÐjõjÒ}r0S(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‰jÞ]r1Sjû)�r2S}r3S(jÅj+SjÒ}r4S(UnameXIPC Install Guide LinuxjX6index_Foundational_Components.html#linux-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj.SjÞ]r5SjçXIPC Install Guide Linuxr6S…�r7S}r8S(jÅUjÆj2SubajÐjÿubaubaubj{)�r9S}r:S(jÅXS`IPC Install Guide QNX `__ jÆjõRjÎX[internal padding after source/rtos/PDK_Platform_Software/IPC/IPC_Install_Guide_BIOS.rst.incr;SjÐjjÒ}rS}r?S(jÅXP`IPC Install Guide QNX `__r@SjÆj9SjÎj}PjÐjõjÒ}rAS(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÞ]rBSjû)�rCS}rDS(jÅj@SjÒ}rES(UnameXIPC Install Guide QNXjX4index_Foundational_Components.html#qnx-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj>SjÞ]rFSjçXIPC Install Guide QNXrGS…�rHS}rIS(jÅUjÆjCSubajÐjÿubaubaubeubeubeubjÇ)�rJS}rKS(jÅUjÆjTPjÎjÏjÐjÑjÒ}rLS(jÔ]jÕ]jÖ]j×]rMSUlinux-install-guiderNSajÚ]rOSheaujÜK¤jÝhjÞ]rPS(jà)�rQS}rRS(jÅXLinux Install GuiderSSjÆjJSjÎjÏjÐjäjÒ}rTS(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÝhjÞ]rUSjçXLinux Install GuiderVS…�rWS}rXS(jÅjSSjÆjQSubaubj7)�rYS}rZS(jÅX?http://processors.wiki.ti.com/index.php/IPC_Install_Guide_LinuxjÆjJSjÎj:XEsource/rtos/PDK_Platform_Software/IPC/IPC_Install_Guide_Linux.rst.incr[S…�r\S}r]SbjÐj>jÒ}r^S(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r_SjçX?http://processors.wiki.ti.com/index.php/IPC_Install_Guide_Linuxr`S…�raS}rbS(jÅUjÆjYSubaubjÇ)�rcS}rdS(jÅUjKjÆjJSjÎj\SjÐjÑjÒ}reS(jÔ]rfSX introductionrgSajÕ]jÖ]j×]rhSUid49riSajÚ]ujÜKjÝhjÞ]rjS(jà)�rkS}rlS(jÅX IntroductionrmSjÆjcSjÎj\SjÐjäjÒ}rnS(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]roSjçX IntroductionrpS…�rqS}rrS(jÅjmSjÆjkSubaubjò)�rsS}rtS(jÅXðInter/Intra Processor Communication (IPC) is a product designed to enable communication between processors in a multi-processor environment. Features of IPC include message passing, multi-processor gates, shared memory primitives, and more.ruSjÆjcSjÎj\SjÐjõjÒ}rvS(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rwSjçXðInter/Intra Processor Communication (IPC) is a product designed to enable communication between processors in a multi-processor environment. Features of IPC include message passing, multi-processor gates, shared memory primitives, and more.rxS…�ryS}rzS(jÅjuSjÆjsSubaubjò)�r{S}r|S(jÅX<IPC is designed for use with processors running SYS/BIOS applications. This is typically an ARM or DSP. IPC includes support for High Level Operating Systems (HLOS) like Linux, as well as the SYS/BIOS RTOS. The breadth of IPC features supported in an HLOS environment is reduced in an effort to simplify the product.r}SjÆjcSjÎj\SjÐjõjÒ}r~S(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rSjçX<IPC is designed for use with processors running SYS/BIOS applications. This is typically an ARM or DSP. IPC includes support for High Level Operating Systems (HLOS) like Linux, as well as the SYS/BIOS RTOS. The breadth of IPC features supported in an HLOS environment is reduced in an effort to simplify the product.r€S…�r�S}r‚S(jÅj}SjÆj{SubaubeubjÇ)�rƒS}r„S(jÅUjKjÆjJSjÎj\SjÐjÑjÒ}r…S(jÔ]r†Sj¨PajÕ]jÖ]j×]r‡SUid50rˆSajÚ]ujÜKjÝhjÞ]r‰S(jà)�rŠS}r‹S(jÅXInstallrŒSjÆjƒSjÎj\SjÐjäjÒ}r�S(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rŽSjçXInstallr�S…�r�S}r‘S(jÅjŒSjÆjŠSubaubjò)�r’S}r“S(jÅXhIPC is often distributed and installed within a larger SDK. In those cases, no installation is required.r”SjÆjƒSjÎj\SjÐjõjÒ}r•S(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r–SjçXhIPC is often distributed and installed within a larger SDK. In those cases, no installation is required.r—S…�r˜S}r™S(jÅj”SjÆj’Subaubjò)�ršS}r›S(jÅXÊOutside of an SDK, `IPC can be downloaded here `__, and is released as a zip file. To install, simply extract the file.jÆjƒSjÎj\SjÐjõjÒ}rœS(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r�S(jçXOutside of an SDK, ržS…�rŸS}r S(jÅXOutside of an SDK, jÆjšSubjû)�r¡S}r¢S(jÅXr`IPC can be downloaded here `__jÒ}r£S(UnameXIPC can be downloaded herejXQhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/index.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆjšSjÞ]r¤SjçXIPC can be downloaded herer¥S…�r¦S}r§S(jÅUjÆj¡SubajÐjÿubjçXE, and is released as a zip file. To install, simply extract the file.r¨S…�r©S}rªS(jÅXE, and is released as a zip file. To install, simply extract the file.jÆjšSubeubj)�r«S}r¬S(jÅX"buildhost$ unzip ipc_.zipjÆjƒSjÎj\SjÐjjÒ}r­S(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¿jÝhjÞ]r®SjçX"buildhost$ unzip ipc_.zipr¯S…�r°S}r±S(jÅUjÆj«Subaubjò)�r²S}r³S(jÅX}This will extract the IPC product in a directory with its product name and version information (e.g. **c:/ti/ipc_**)jÆjƒSjÎj\SjÐjõjÒ}r´S(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rµS(jçXeThis will extract the IPC product in a directory with its product name and version information (e.g. r¶S…�r·S}r¸S(jÅXeThis will extract the IPC product in a directory with its product name and version information (e.g. jÆj²SubjÚ)�r¹S}rºS(jÅX**c:/ti/ipc_**jÒ}r»S(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²SjÞ]r¼SjçXc:/ti/ipc_r½S…�r¾S}r¿S(jÅUjÆj¹SubajÐjâubjçX)…�rÀS}rÁS(jÅX)jÆj²Subeubjë)�rÂS}rÃS(jÅXE- This document assumes the IPC install path to be the user's home directory on a Linux host machine (**/home/**) or the user's main drive on a Windows host machine (**C:\\**). The variable **IPC_INSTALL_DIR** will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands. - Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.jÆjƒSjÎNjÐjïjÒ}rÄS(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÅSjt)�rÆS}rÇS(jÅUjÒ}rÈS(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjÂSjÞ]rÉS(j{)�rÊS}rËS(jÅXOThis document assumes the IPC install path to be the user's home directory on a Linux host machine (**/home/**) or the user's main drive on a Windows host machine (**C:\\**). The variable **IPC_INSTALL_DIR** will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.jÒ}rÌS(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆSjÞ]rÍSjò)�rÎS}rÏS(jÅXOThis document assumes the IPC install path to be the user's home directory on a Linux host machine (**/home/**) or the user's main drive on a Windows host machine (**C:\\**). The variable **IPC_INSTALL_DIR** will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.jÆjÊSjÎj\SjÐjõjÒ}rÐS(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]rÑS(jçXdThis document assumes the IPC install path to be the user's home directory on a Linux host machine (rÒS…�rÓS}rÔS(jÅXdThis document assumes the IPC install path to be the user's home directory on a Linux host machine (jÆjÎSubjÚ)�rÕS}rÖS(jÅX**/home/**jÒ}r×S(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÎSjÞ]rØSjçX /home/rÙS…�rÚS}rÛS(jÅUjÆjÕSubajÐjâubjçX6) or the user's main drive on a Windows host machine (rÜS…�rÝS}rÞS(jÅX6) or the user's main drive on a Windows host machine (jÆjÎSubjÚ)�rßS}ràS(jÅX**C:\\**jÒ}ráS(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÎSjÞ]râSjçXC:\rãS…�räS}råS(jÅUjÆjßSubajÐjâubjçX). The variable ræS…�rçS}rèS(jÅX). The variable jÆjÎSubjÚ)�réS}rêS(jÅX**IPC_INSTALL_DIR**jÒ}rëS(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÎSjÞ]rìSjçXIPC_INSTALL_DIRríS…�rîS}rïS(jÅUjÆjéSubajÐjâubjçXz will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.rðS…�rñS}ròS(jÅXz will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.jÆjÎSubeubajÐjubj{)�róS}rôS(jÅX×Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.jÒ}rõS(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆSjÞ]röSjò)�r÷S}røS(jÅX×Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.rùSjÆjóSjÎj\SjÐjõjÒ}rúS(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]rûSjçX×Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.rüS…�rýS}rþS(jÅjùSjÆj÷SubaubajÐjubejÐjwubaubeubjÇ)�rÿS}rT(jÅUjKjÆjJSjÎj\SjÐjÑjÒ}rT(jÔ]rTXbuildrTajÕ]jÖ]j×]rTUid51rTajÚ]ujÜK0jÝhjÞ]rT(jà)�rT}rT(jÅXBuildr TjÆjÿSjÎj\SjÐjäjÒ}r T(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÝhjÞ]r TjçXBuildr T…�r T}rT(jÅj TjÆjTubaubjò)�rT}rT(jÅXðThe IPC product often comes with prebuilt SYS/BIOS-side libraries, so rebuilding them isn't necessary. The Linux-side user libraries may also be provided prebuilt, but customers often want to change the configuration (e.g. static, dynamic).rTjÆjÿSjÎj\SjÐjõjÒ}rT(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÝhjÞ]rTjçXðThe IPC product often comes with prebuilt SYS/BIOS-side libraries, so rebuilding them isn't necessary. The Linux-side user libraries may also be provided prebuilt, but customers often want to change the configuration (e.g. static, dynamic).rT…�rT}rT(jÅjTjÆjTubaubjò)�rT}rT(jÅXhIPC provides GNU makefile(s) to rebuild all its libraries at the base of the product, details are below.rTjÆjÿSjÎj\SjÐjõjÒ}rT(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÝhjÞ]rTjçXhIPC provides GNU makefile(s) to rebuild all its libraries at the base of the product, details are below.rT…�rT}rT(jÅjTjÆjTubaubjë)�rT}r T(jÅX¹GNU make version 3.81 or greater is required. The XDC tools (provided with most SDKs and CCS distributions) includes a pre-compiled version of GNU make 3.81 in $(XDC_INSTALL_DIR)/gmake.jÆjÿSjÎj\SjÐjïjÒ}r!T(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r"Tjò)�r#T}r$T(jÅX¹GNU make version 3.81 or greater is required. The XDC tools (provided with most SDKs and CCS distributions) includes a pre-compiled version of GNU make 3.81 in $(XDC_INSTALL_DIR)/gmake.r%TjÆjTjÎj\SjÐjõjÒ}r&T(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÞ]r'TjçX¹GNU make version 3.81 or greater is required. The XDC tools (provided with most SDKs and CCS distributions) includes a pre-compiled version of GNU make 3.81 in $(XDC_INSTALL_DIR)/gmake.r(T…�r)T}r*T(jÅj%TjÆj#TubaubaubjÇ)�r+T}r,T(jÅUjKjÆjÿSjÎj\SjÐjÑjÒ}r-T(jÔ]r.TjQQajÕ]jÖ]j×]r/TUid52r0TajÚ]ujÜK@jÝhjÞ]r1T(jà)�r2T}r3T(jÅX products.makr4TjÆj+TjÎj\SjÐjäjÒ}r5T(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÝhjÞ]r6TjçX products.makr7T…�r8T}r9T(jÅj4TjÆj2Tubaubjò)�r:T}r;T(jÅX—IPC contains a **products.mak** file at the root of the product that specifies the necessary paths and options to build IPC for the various OS support.jÆj+TjÎj\SjÐjõjÒ}rT…�r?T}r@T(jÅXIPC contains a jÆj:TubjÚ)�rAT}rBT(jÅX**products.mak**jÒ}rCT(jÔ]jÕ]jÖ]j×]jÚ]ujÆj:TjÞ]rDTjçX products.makrET…�rFT}rGT(jÅUjÆjATubajÐjâubjçXx file at the root of the product that specifies the necessary paths and options to build IPC for the various OS support.rHT…�rIT}rJT(jÅXx file at the root of the product that specifies the necessary paths and options to build IPC for the various OS support.jÆj:Tubeubjò)�rKT}rLT(jÅX6Edit **products.mak** and set the following variables:rMTjÆj+TjÎj\SjÐjõjÒ}rNT(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÝhjÞ]rOT(jçXEdit rPT…�rQT}rRT(jÅXEdit jÆjKTubjÚ)�rST}rTT(jÅX**products.mak**jÒ}rUT(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKTjÞ]rVTjçX products.makrWT…�rXT}rYT(jÅUjÆjSTubajÐjâubjçX! and set the following variables:rZT…�r[T}r\T(jÅX! and set the following variables:jÆjKTubeubjt)�r]T}r^T(jÅUjÆj+TjÎj\SjÐjwjÒ}r_T(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKHjÝhjÞ]r`T(j{)�raT}rbT(jÅX®Variables used by **both Linux-side and BIOS-side** build scripts - **PLATFORM** - (Optional) Device to build for - To find the supported list of platforms, run: **./configure --help** - If not set, Linux libraries and executables for all supported platforms will be built. - If not set, BIOS libraries for all toolchains specified (see below) will be built, but no BIOS-side executables will be built. - BIOS-side builds started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for **all** supported platforms based on that targets/toolchains set above (which can take a while!) jÆj]TjÎNjÐjjÒ}rcT(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rdT(jò)�reT}rfT(jÅXAVariables used by **both Linux-side and BIOS-side** build scriptsrgTjÆjaTjÎj\SjÐjõjÒ}rhT(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]riT(jçXVariables used by rjT…�rkT}rlT(jÅXVariables used by jÆjeTubjÚ)�rmT}rnT(jÅX!**both Linux-side and BIOS-side**jÒ}roT(jÔ]jÕ]jÖ]j×]jÚ]ujÆjeTjÞ]rpTjçXboth Linux-side and BIOS-siderqT…�rrT}rsT(jÅUjÆjmTubajÐjâubjçX build scriptsrtT…�ruT}rvT(jÅX build scriptsjÆjeTubeubjt)�rwT}rxT(jÅUjÒ}ryT(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjaTjÞ]rzTj{)�r{T}r|T(jÅXG**PLATFORM** - (Optional) Device to build for - To find the supported list of platforms, run: **./configure --help** - If not set, Linux libraries and executables for all supported platforms will be built. - If not set, BIOS libraries for all toolchains specified (see below) will be built, but no BIOS-side executables will be built. - BIOS-side builds started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for **all** supported platforms based on that targets/toolchains set above (which can take a while!) jÒ}r}T(jÔ]jÕ]jÖ]j×]jÚ]ujÆjwTjÞ]r~T(jò)�rT}r€T(jÅX-**PLATFORM** - (Optional) Device to build forr�TjÆj{TjÎj\SjÐjõjÒ}r‚T(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]rƒT(jÚ)�r„T}r…T(jÅX **PLATFORM**jÒ}r†T(jÔ]jÕ]jÖ]j×]jÚ]ujÆjTjÞ]r‡TjçXPLATFORMrˆT…�r‰T}rŠT(jÅUjÆj„TubajÐjâubjçX! - (Optional) Device to build forr‹T…�rŒT}r�T(jÅX! - (Optional) Device to build forjÆjTubeubjt)�rŽT}r�T(jÅUjÒ}r�T(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj{TjÞ]r‘T(j{)�r’T}r“T(jÅXDTo find the supported list of platforms, run: **./configure --help**jÒ}r”T(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽTjÞ]r•Tjò)�r–T}r—T(jÅXDTo find the supported list of platforms, run: **./configure --help**jÆj’TjÎj\SjÐjõjÒ}r˜T(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]r™T(jçX.To find the supported list of platforms, run: ršT…�r›T}rœT(jÅX.To find the supported list of platforms, run: jÆj–TubjÚ)�r�T}ržT(jÅX**./configure --help**jÒ}rŸT(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–TjÞ]r TjçX./configure --helpr¡T…�r¢T}r£T(jÅUjÆj�TubajÐjâubeubajÐjubj{)�r¤T}r¥T(jÅXVIf not set, Linux libraries and executables for all supported platforms will be built.jÒ}r¦T(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽTjÞ]r§Tjò)�r¨T}r©T(jÅXVIf not set, Linux libraries and executables for all supported platforms will be built.rªTjÆj¤TjÎj\SjÐjõjÒ}r«T(jÔ]jÕ]jÖ]j×]jÚ]ujÜKNjÞ]r¬TjçXVIf not set, Linux libraries and executables for all supported platforms will be built.r­T…�r®T}r¯T(jÅjªTjÆj¨TubaubajÐjubj{)�r°T}r±T(jÅX[If not set, BIOS libraries for all toolchains specified (see below) will be built, but no BIOS-side executables will be built. - BIOS-side builds started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for **all** supported platforms based on that targets/toolchains set above (which can take a while!) jÒ}r²T(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽTjÞ]r³T(jò)�r´T}rµT(jÅX~If not set, BIOS libraries for all toolchains specified (see below) will be built, but no BIOS-side executables will be built.r¶TjÆj°TjÎj\SjÐjõjÒ}r·T(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÞ]r¸TjçX~If not set, BIOS libraries for all toolchains specified (see below) will be built, but no BIOS-side executables will be built.r¹T…�rºT}r»T(jÅj¶TjÆj´Tubaubjt)�r¼T}r½T(jÅUjÒ}r¾T(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj°TjÞ]r¿Tj{)�rÀT}rÁT(jÅXÏBIOS-side builds started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for **all** supported platforms based on that targets/toolchains set above (which can take a while!) jÒ}rÂT(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼TjÞ]rÃTjò)�rÄT}rÅT(jÅXÎBIOS-side builds started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for **all** supported platforms based on that targets/toolchains set above (which can take a while!)jÆjÀTjÎj\SjÐjõjÒ}rÆT(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]rÇT(jçXnBIOS-side builds started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for rÈT…�rÉT}rÊT(jÅXnBIOS-side builds started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for jÆjÄTubjÚ)�rËT}rÌT(jÅX**all**jÒ}rÍT(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄTjÞ]rÎTjçXallrÏT…�rÐT}rÑT(jÅUjÆjËTubajÐjâubjçXY supported platforms based on that targets/toolchains set above (which can take a while!)rÒT…�rÓT}rÔT(jÅXY supported platforms based on that targets/toolchains set above (which can take a while!)jÆjÄTubeubajÐjubajÐjwubejÐjubejÐjwubejÐjubajÐjwubeubj{)�rÕT}rÖT(jÅXÌVariables used by **Linux-side** build scripts - **TOOLCHAIN_INSTALL_DIR** - Path to the devices ARM Linux cross-compiler toolchain - **TOOLCHAIN_LONGNAME** - Long name of the devices toolchain (e.g. arm-none-linux-gnueabi) - **KERNEL_INSTALL_DIR** - Location of your Linux kernel installation - In old releases, this variable was optional, and only needed for platforms that support the MmRpc API (e.g. OMAP5, DRA7XX). In IPC 3.00.04, 3.10.02, and 3.20+, all platforms began requiring this variable to interrogate your kernel's version (via KERNEL_INSTALL_DIR/linux/version.h) and accommodate different kernels. - **DRM_PREFIX** - (Optional) Location of your libdrm installation, used by some MmRpc tests - This is only used by MmRpc tests, and therefore only should be set for platforms that support the MmRpc API - If set, additional MmRpc tests may be built. - **CMEM_INSTALL_DIR** - (Optional) Path to TI Linux Utils package to locate the pre-built `CMEM `__ libraries used by some MessageQ tests - If set, additional test applications for select platforms may be built. jÆj]TjÎNjÐjjÒ}r×T(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rØT(jò)�rÙT}rÚT(jÅX.Variables used by **Linux-side** build scriptsjÆjÕTjÎj\SjÐjõjÒ}rÛT(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÞ]rÜT(jçXVariables used by rÝT…�rÞT}rßT(jÅXVariables used by jÆjÙTubjÚ)�ràT}ráT(jÅX**Linux-side**jÒ}râT(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙTjÞ]rãTjçX Linux-sideräT…�råT}ræT(jÅUjÆjàTubajÐjâubjçX build scriptsrçT…�rèT}réT(jÅX build scriptsjÆjÙTubeubjt)�rêT}rëT(jÅUjÒ}rìT(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjÕTjÞ]ríT(j{)�rîT}rïT(jÅXR**TOOLCHAIN_INSTALL_DIR** - Path to the devices ARM Linux cross-compiler toolchainjÒ}rðT(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêTjÞ]rñTjò)�ròT}róT(jÅXR**TOOLCHAIN_INSTALL_DIR** - Path to the devices ARM Linux cross-compiler toolchainjÆjîTjÎj\SjÐjõjÒ}rôT(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÞ]rõT(jÚ)�röT}r÷T(jÅX**TOOLCHAIN_INSTALL_DIR**jÒ}røT(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòTjÞ]rùTjçXTOOLCHAIN_INSTALL_DIRrúT…�rûT}rüT(jÅUjÆjöTubajÐjâubjçX9 - Path to the devices ARM Linux cross-compiler toolchainrýT…�rþT}rÿT(jÅX9 - Path to the devices ARM Linux cross-compiler toolchainjÆjòTubeubajÐjubj{)�rU}rU(jÅXY**TOOLCHAIN_LONGNAME** - Long name of the devices toolchain (e.g. arm-none-linux-gnueabi)jÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêTjÞ]rUjò)�rU}rU(jÅXY**TOOLCHAIN_LONGNAME** - Long name of the devices toolchain (e.g. arm-none-linux-gnueabi)jÆjUjÎj\SjÐjõjÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÜK]jÞ]rU(jÚ)�rU}r U(jÅX**TOOLCHAIN_LONGNAME**jÒ}r U(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUjÞ]r UjçXTOOLCHAIN_LONGNAMEr U…�r U}rU(jÅUjÆjUubajÐjâubjçXC - Long name of the devices toolchain (e.g. arm-none-linux-gnueabi)rU…�rU}rU(jÅXC - Long name of the devices toolchain (e.g. arm-none-linux-gnueabi)jÆjUubeubajÐjubj{)�rU}rU(jÅX”**KERNEL_INSTALL_DIR** - Location of your Linux kernel installation - In old releases, this variable was optional, and only needed for platforms that support the MmRpc API (e.g. OMAP5, DRA7XX). In IPC 3.00.04, 3.10.02, and 3.20+, all platforms began requiring this variable to interrogate your kernel's version (via KERNEL_INSTALL_DIR/linux/version.h) and accommodate different kernels. jÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêTjÞ]rU(jò)�rU}rU(jÅXC**KERNEL_INSTALL_DIR** - Location of your Linux kernel installationjÆjUjÎj\SjÐjõjÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÜK_jÞ]rU(jÚ)�rU}rU(jÅX**KERNEL_INSTALL_DIR**jÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUjÞ]rUjçXKERNEL_INSTALL_DIRrU…�rU}r U(jÅUjÆjUubajÐjâubjçX- - Location of your Linux kernel installationr!U…�r"U}r#U(jÅX- - Location of your Linux kernel installationjÆjUubeubjt)�r$U}r%U(jÅUjÒ}r&U(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjUjÞ]r'Uj{)�r(U}r)U(jÅX=In old releases, this variable was optional, and only needed for platforms that support the MmRpc API (e.g. OMAP5, DRA7XX). In IPC 3.00.04, 3.10.02, and 3.20+, all platforms began requiring this variable to interrogate your kernel's version (via KERNEL_INSTALL_DIR/linux/version.h) and accommodate different kernels. jÒ}r*U(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$UjÞ]r+Ujò)�r,U}r-U(jÅX<In old releases, this variable was optional, and only needed for platforms that support the MmRpc API (e.g. OMAP5, DRA7XX). In IPC 3.00.04, 3.10.02, and 3.20+, all platforms began requiring this variable to interrogate your kernel's version (via KERNEL_INSTALL_DIR/linux/version.h) and accommodate different kernels.r.UjÆj(UjÎj\SjÐjõjÒ}r/U(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]r0UjçX<In old releases, this variable was optional, and only needed for platforms that support the MmRpc API (e.g. OMAP5, DRA7XX). In IPC 3.00.04, 3.10.02, and 3.20+, all platforms began requiring this variable to interrogate your kernel's version (via KERNEL_INSTALL_DIR/linux/version.h) and accommodate different kernels.r1U…�r2U}r3U(jÅj.UjÆj,UubaubajÐjubajÐjwubejÐjubj{)�r4U}r5U(jÅXþ**DRM_PREFIX** - (Optional) Location of your libdrm installation, used by some MmRpc tests - This is only used by MmRpc tests, and therefore only should be set for platforms that support the MmRpc API - If set, additional MmRpc tests may be built. jÒ}r6U(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêTjÞ]r7U(jò)�r8U}r9U(jÅXZ**DRM_PREFIX** - (Optional) Location of your libdrm installation, used by some MmRpc testsjÆj4UjÎj\SjÐjõjÒ}r:U(jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÞ]r;U(jÚ)�rU(jÔ]jÕ]jÖ]j×]jÚ]ujÆj8UjÞ]r?UjçX DRM_PREFIXr@U…�rAU}rBU(jÅUjÆj`__ libraries used by some MessageQ tests - If set, additional test applications for select platforms may be built. jÒ}rdU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêTjÞ]reU(jò)�rfU}rgU(jÅXÆ**CMEM_INSTALL_DIR** - (Optional) Path to TI Linux Utils package to locate the pre-built `CMEM `__ libraries used by some MessageQ testsjÆjbUjÎj\SjÐjõjÒ}rhU(jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÞ]riU(jÚ)�rjU}rkU(jÅX**CMEM_INSTALL_DIR**jÒ}rlU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjfUjÞ]rmUjçXCMEM_INSTALL_DIRrnU…�roU}rpU(jÅUjÆjjUubajÐjâubjçXE - (Optional) Path to TI Linux Utils package to locate the pre-built rqU…�rrU}rsU(jÅXE - (Optional) Path to TI Linux Utils package to locate the pre-built jÆjfUubjû)�rtU}ruU(jÅXG`CMEM `__jÒ}rvU(UnameXCMEMjX<http://processors.wiki.ti.com/index.php/Linux_Utils_Overviewj×]jÖ]jÔ]jÕ]jÚ]ujÆjfUjÞ]rwUjçXCMEMrxU…�ryU}rzU(jÅUjÆjtUubajÐjÿubjçX& libraries used by some MessageQ testsr{U…�r|U}r}U(jÅX& libraries used by some MessageQ testsjÆjfUubeubjt)�r~U}rU(jÅUjÒ}r€U(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjbUjÞ]r�Uj{)�r‚U}rƒU(jÅXHIf set, additional test applications for select platforms may be built. jÒ}r„U(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~UjÞ]r…Ujò)�r†U}r‡U(jÅXGIf set, additional test applications for select platforms may be built.rˆUjÆj‚UjÎj\SjÐjõjÒ}r‰U(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÞ]rŠUjçXGIf set, additional test applications for select platforms may be built.r‹U…�rŒU}r�U(jÅjˆUjÆj†UubaubajÐjubajÐjwubejÐjubejÐjwubeubj{)�rŽU}r�U(jÅXíVariables used by **BIOS-side** build scripts - **XDC_INSTALL_DIR** - Path to TI's XDCTools installation (e.g. **c:/ti/xdctools_**) - **BIOS_INSTALL_DIR** - Path to TI's SYS/BIOS installation (e.g. **c:/ti/bios_**) - **ti.targets.** - Path to TI toolchain for the device. (e.g. **c:/ti/CCS/ccsbase/tools/compiler/c6000_**) - Set only the variables to the targets your device supports to minimize build time. jÆj]TjÎNjÐjjÒ}r�U(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‘U(jò)�r’U}r“U(jÅX-Variables used by **BIOS-side** build scriptsjÆjŽUjÎj\SjÐjõjÒ}r”U(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÞ]r•U(jçXVariables used by r–U…�r—U}r˜U(jÅXVariables used by jÆj’UubjÚ)�r™U}ršU(jÅX **BIOS-side**jÒ}r›U(jÔ]jÕ]jÖ]j×]jÚ]ujÆj’UjÞ]rœUjçX BIOS-sider�U…�ržU}rŸU(jÅUjÆj™UubajÐjâubjçX build scriptsr U…�r¡U}r¢U(jÅX build scriptsjÆj’Uubeubjt)�r£U}r¤U(jÅUjÒ}r¥U(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjŽUjÞ]r¦U(j{)�r§U}r¨U(jÅX\**XDC_INSTALL_DIR** - Path to TI's XDCTools installation (e.g. **c:/ti/xdctools_**)jÒ}r©U(jÔ]jÕ]jÖ]j×]jÚ]ujÆj£UjÞ]rªUjò)�r«U}r¬U(jÅX\**XDC_INSTALL_DIR** - Path to TI's XDCTools installation (e.g. **c:/ti/xdctools_**)jÆj§UjÎj\SjÐjõjÒ}r­U(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÞ]r®U(jÚ)�r¯U}r°U(jÅX**XDC_INSTALL_DIR**jÒ}r±U(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«UjÞ]r²UjçXXDC_INSTALL_DIRr³U…�r´U}rµU(jÅUjÆj¯UubajÐjâubjçX, - Path to TI's XDCTools installation (e.g. r¶U…�r·U}r¸U(jÅX, - Path to TI's XDCTools installation (e.g. jÆj«UubjÚ)�r¹U}rºU(jÅX**c:/ti/xdctools_**jÒ}r»U(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«UjÞ]r¼UjçXc:/ti/xdctools_r½U…�r¾U}r¿U(jÅUjÆj¹UubajÐjâubjçX)…�rÀU}rÁU(jÅX)jÆj«UubeubajÐjubj{)�rÂU}rÃU(jÅXY**BIOS_INSTALL_DIR** - Path to TI's SYS/BIOS installation (e.g. **c:/ti/bios_**)jÒ}rÄU(jÔ]jÕ]jÖ]j×]jÚ]ujÆj£UjÞ]rÅUjò)�rÆU}rÇU(jÅXY**BIOS_INSTALL_DIR** - Path to TI's SYS/BIOS installation (e.g. **c:/ti/bios_**)jÆjÂUjÎj\SjÐjõjÒ}rÈU(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÞ]rÉU(jÚ)�rÊU}rËU(jÅX**BIOS_INSTALL_DIR**jÒ}rÌU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆUjÞ]rÍUjçXBIOS_INSTALL_DIRrÎU…�rÏU}rÐU(jÅUjÆjÊUubajÐjâubjçX, - Path to TI's SYS/BIOS installation (e.g. rÑU…�rÒU}rÓU(jÅX, - Path to TI's SYS/BIOS installation (e.g. jÆjÆUubjÚ)�rÔU}rÕU(jÅX**c:/ti/bios_**jÒ}rÖU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆUjÞ]r×UjçXc:/ti/bios_rØU…�rÙU}rÚU(jÅUjÆjÔUubajÐjâubjçX)…�rÛU}rÜU(jÅX)jÆjÆUubeubajÐjubj{)�rÝU}rÞU(jÅXì**ti.targets.** - Path to TI toolchain for the device. (e.g. **c:/ti/CCS/ccsbase/tools/compiler/c6000_**) - Set only the variables to the targets your device supports to minimize build time. jÒ}rßU(jÔ]jÕ]jÖ]j×]jÚ]ujÆj£UjÞ]ràU(jò)�ráU}râU(jÅX‘**ti.targets.** - Path to TI toolchain for the device. (e.g. **c:/ti/CCS/ccsbase/tools/compiler/c6000_**)jÆjÝUjÎj\SjÐjõjÒ}rãU(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÞ]räU(jÚ)�råU}ræU(jÅX.**ti.targets.**jÒ}rçU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjáUjÞ]rèUjçX*ti.targets.réU…�rêU}rëU(jÅUjÆjåUubajÐjâubjçX. - Path to TI toolchain for the device. (e.g. rìU…�ríU}rîU(jÅX. - Path to TI toolchain for the device. (e.g. jÆjáUubjÚ)�rïU}rðU(jÅX4**c:/ti/CCS/ccsbase/tools/compiler/c6000_**jÒ}rñU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjáUjÞ]ròUjçX0c:/ti/CCS/ccsbase/tools/compiler/c6000_róU…�rôU}rõU(jÅUjÆjïUubajÐjâubjçX)…�röU}r÷U(jÅX)jÆjáUubeubjt)�røU}rùU(jÅUjÒ}rúU(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjÝUjÞ]rûUj{)�rüU}rýU(jÅXSSet only the variables to the targets your device supports to minimize build time. jÒ}rþU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjøUjÞ]rÿUjò)�rV}rV(jÅXRSet only the variables to the targets your device supports to minimize build time.rVjÆjüUjÎj\SjÐjõjÒ}rV(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‚jÞ]rVjçXRSet only the variables to the targets your device supports to minimize build time.rV…�rV}rV(jÅjVjÆjVubaubajÐjubajÐjwubejÐjubejÐjwubeubeubjë)�rV}r V(jÅXmThe specific versions of dependent components can be found in the IPC Release Notes, provided in the product.jÆj+TjÎj\SjÐjïjÒ}r V(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r Vjò)�r V}r V(jÅXmThe specific versions of dependent components can be found in the IPC Release Notes, provided in the product.rVjÆjVjÎj\SjÐjõjÒ}rV(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]rVjçXmThe specific versions of dependent components can be found in the IPC Release Notes, provided in the product.rV…�rV}rV(jÅjVjÆj VubaubaubeubjÇ)�rV}rV(jÅUjÆjÿSjÎj\SjÐjÑjÒ}rV(jÔ]jÕ]jÖ]j×]rVU ipc-linux-makrVajÚ]rVhOaujÜKŠjÝhjÞ]rV(jà)�rV}rV(jÅX ipc-linux.makrVjÆjVjÎj\SjÐjäjÒ}rV(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÝhjÞ]rVjçX ipc-linux.makr V…�r!V}r"V(jÅjVjÆjVubaubjò)�r#V}r$V(jÅXþThe Linux-side build is provided as a GNU Autotools (Autoconf, Automake, Libtool) project. If you are familiar with Autoconf GNU projects, you can proceed with using the **./configure** script directly to cross-compile the Linux user libraries and tests.jÆjVjÎj\SjÐjõjÒ}r%V(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÝhjÞ]r&V(jçXªThe Linux-side build is provided as a GNU Autotools (Autoconf, Automake, Libtool) project. If you are familiar with Autoconf GNU projects, you can proceed with using the r'V…�r(V}r)V(jÅXªThe Linux-side build is provided as a GNU Autotools (Autoconf, Automake, Libtool) project. If you are familiar with Autoconf GNU projects, you can proceed with using the jÆj#VubjÚ)�r*V}r+V(jÅX**./configure**jÒ}r,V(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#VjÞ]r-VjçX ./configurer.V…�r/V}r0V(jÅUjÆj*VubajÐjâubjçXE script directly to cross-compile the Linux user libraries and tests.r1V…�r2V}r3V(jÅXE script directly to cross-compile the Linux user libraries and tests.jÆj#Vubeubjò)�r4V}r5V(jÅXFor those that require some assistance, the IPC package provides a GNU makefile (**ipc-linux.mak**) to configure the Linux-side build, using the options and component paths set in the **products.mak** file. To configure the build using these files, issue the following command:jÆjVjÎj\SjÐjõjÒ}r6V(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‘jÝhjÞ]r7V(jçXQFor those that require some assistance, the IPC package provides a GNU makefile (r8V…�r9V}r:V(jÅXQFor those that require some assistance, the IPC package provides a GNU makefile (jÆj4VubjÚ)�r;V}rVjçX ipc-linux.makr?V…�r@V}rAV(jÅUjÆj;VubajÐjâubjçXV) to configure the Linux-side build, using the options and component paths set in the rBV…�rCV}rDV(jÅXV) to configure the Linux-side build, using the options and component paths set in the jÆj4VubjÚ)�rEV}rFV(jÅX**products.mak**jÒ}rGV(jÔ]jÕ]jÖ]j×]jÚ]ujÆj4VjÞ]rHVjçX products.makrIV…�rJV}rKV(jÅUjÆjEVubajÐjâubjçXM file. To configure the build using these files, issue the following command:rLV…�rMV}rNV(jÅXM file. To configure the build using these files, issue the following command:jÆj4Vubeubj)�rOV}rPV(jÅX( make -f ipc-linux.mak configjÆjVjÎj\SjÐjjÒ}rQV(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM:jÝhjÞ]rRVjçX( make -f ipc-linux.mak configrSV…�rTV}rUV(jÅUjÆjOVubaubjò)�rVV}rWV(jÅXThere are few additional target goals provided in the ipc-linux.mak file for commonly used configurations. These goals include:rXVjÆjVjÎj\SjÐjõjÒ}rYV(jÔ]jÕ]jÖ]j×]jÚ]ujÜKšjÝhjÞ]rZVjçXThere are few additional target goals provided in the ipc-linux.mak file for commonly used configurations. These goals include:r[V…�r\V}r]V(jÅjXVjÆjVVubaubjt)�r^V}r_V(jÅUjÆjVjÎj\SjÐjwjÒ}r`V(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK�jÝhjÞ]raV(j{)�rbV}rcV(jÅX›config - (Default) Configure both static and shared (dynamic) Linux IPC user libraries. Executables (e.g. lad and tests) link against the shared libraries.jÆj^VjÎj\SjÐjjÒ}rdV(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]reVjò)�rfV}rgV(jÅX›config - (Default) Configure both static and shared (dynamic) Linux IPC user libraries. Executables (e.g. lad and tests) link against the shared libraries.rhVjÆjbVjÎj\SjÐjõjÒ}riV(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rjVjçX›config - (Default) Configure both static and shared (dynamic) Linux IPC user libraries. Executables (e.g. lad and tests) link against the shared libraries.rkV…�rlV}rmV(jÅjhVjÆjfVubaubaubj{)�rnV}roV(jÅX@config-static - Configure static only libraries and executables.rpVjÆj^VjÎj\SjÐjjÒ}rqV(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rrVjò)�rsV}rtV(jÅjpVjÆjnVjÎj\SjÐjõjÒ}ruV(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rvVjçX@config-static - Configure static only libraries and executables.rwV…�rxV}ryV(jÅjpVjÆjsVubaubaubj{)�rzV}r{V(jÅXKconfig-shared - Configure shared (dynamic) only libraries and executables. jÆj^VjÎj\SjÐjjÒ}r|V(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r}Vjò)�r~V}rV(jÅXJconfig-shared - Configure shared (dynamic) only libraries and executables.r€VjÆjzVjÎj\SjÐjõjÒ}r�V(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÞ]r‚VjçXJconfig-shared - Configure shared (dynamic) only libraries and executables.rƒV…�r„V}r…V(jÅj€VjÆj~Vubaubaubeubjò)�r†V}r‡V(jÅX“Once the 'config' is complete, and the autotools-generated Makefile has been created, you can build the Linux side of IPC by issuing the following:rˆVjÆjVjÎj\SjÐjõjÒ}r‰V(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÝhjÞ]rŠVjçX“Once the 'config' is complete, and the autotools-generated Makefile has been created, you can build the Linux side of IPC by issuing the following:r‹V…�rŒV}r�V(jÅjˆVjÆj†Vubaubj)�rŽV}r�V(jÅX makejÆjVjÎj\SjÐjjÒ}r�V(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMLjÝhjÞ]r‘VjçX maker’V…�r“V}r”V(jÅUjÆjŽVubaubjò)�r•V}r–V(jÅX�You can also specify a PLATFORM to (re)configure for on the command line which overrides any options set in the products.mak file as follows:r—VjÆjVjÎj\SjÐjõjÒ}r˜V(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¬jÝhjÞ]r™VjçX�You can also specify a PLATFORM to (re)configure for on the command line which overrides any options set in the products.mak file as follows:ršV…�r›V}rœV(jÅj—VjÆj•Vubaubj)�r�V}ržV(jÅXK make -f ipc-linux.mak config PLATFORM=omapl138 makejÆjVjÎj\SjÐjjÒ}rŸV(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMSjÝhjÞ]r VjçXK make -f ipc-linux.mak config PLATFORM=omapl138 maker¡V…�r¢V}r£V(jÅUjÆj�Vubaubjò)�r¤V}r¥V(jÅXxNote that before reconfiguring for a new Linux toolchain or platform, the autotools-generated files should be clean(ed):r¦VjÆjVjÎj\SjÐjõjÒ}r§V(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÝhjÞ]r¨VjçXxNote that before reconfiguring for a new Linux toolchain or platform, the autotools-generated files should be clean(ed):r©V…�rªV}r«V(jÅj¦VjÆj¤Vubaubj)�r¬V}r­V(jÅX make distcleanjÆjVjÎj\SjÐjjÒ}r®V(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM[jÝhjÞ]r¯VjçX make distcleanr°V…�r±V}r²V(jÅUjÆj¬Vubaubjc)�r³V}r´V(jÅUjÆjVjÎj\SjÐjfjÒ}rµV(jÔ]jÕ]jÖ]j×]jÚ]ujÜK»jÝhjÞ]r¶Vji)�r·V}r¸V(jÅUjlKjÆj³VjÎj\SjÐjÜjÒ}r¹V(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�rºV}r»V(jÅUjKjÆjÿSjÎj\SjÐjÑjÒ}r¼V(jÔ]r½VjARajÕ]jÖ]j×]r¾VUid53r¿VajÚ]ujÜK¾jÝhjÞ]rÀV(jà)�rÁV}rÂV(jÅX ipc-bios.makrÃVjÆjºVjÎj\SjÐjäjÒ}rÄV(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¾jÝhjÞ]rÅVjçX ipc-bios.makrÆV…�rÇV}rÈV(jÅjÃVjÆjÁVubaubjò)�rÉV}rÊV(jÅXpThe SYS/BIOS-side IPC is built with a GNU makefile. After editing **products.mak**, issue the following command:jÆjºVjÎj\SjÐjõjÒ}rËV(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÀjÝhjÞ]rÌV(jçXBThe SYS/BIOS-side IPC is built with a GNU makefile. After editing rÍV…�rÎV}rÏV(jÅXBThe SYS/BIOS-side IPC is built with a GNU makefile. After editing jÆjÉVubjÚ)�rÐV}rÑV(jÅX**products.mak**jÒ}rÒV(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÉVjÞ]rÓVjçX products.makrÔV…�rÕV}rÖV(jÅUjÆjÐVubajÐjâubjçX, issue the following command:r×V…�rØV}rÙV(jÅX, issue the following command:jÆjÉVubeubj)�rÚV}rÛV(jÅX$ make -f ipc-bios.mak alljÆjºVjÎj\SjÐjjÒ}rÜV(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMgjÝhjÞ]rÝVjçX$ make -f ipc-bios.mak allrÞV…�rßV}ràV(jÅUjÆjÚVubaubjò)�ráV}râV(jÅXLBased on the number of targets you're building for, this may take some time.rãVjÆjºVjÎj\SjÐjõjÒ}räV(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÇjÝhjÞ]råVjçXLBased on the number of targets you're building for, this may take some time.ræV…�rçV}rèV(jÅjãVjÆjáVubaubjë)�réV}rêV(jÅX�The BIOS-side libraries often come pre-built, so in many cases, rebuilding the BIOS-side is not necessary. Some reasons you may want to rebuild:jÆjºVjÎj\SjÐjïjÒ}rëV(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rìVjò)�ríV}rîV(jÅX�The BIOS-side libraries often come pre-built, so in many cases, rebuilding the BIOS-side is not necessary. Some reasons you may want to rebuild:rïVjÆjéVjÎj\SjÐjõjÒ}rðV(jÔ]jÕ]jÖ]j×]jÚ]ujÜKËjÞ]rñVjçX�The BIOS-side libraries often come pre-built, so in many cases, rebuilding the BIOS-side is not necessary. Some reasons you may want to rebuild:ròV…�róV}rôV(jÅjïVjÆjíVubaubaubjt)�rõV}röV(jÅUjÆjºVjÎj\SjÐjwjÒ}r÷V(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKÏjÝhjÞ]røV(j{)�rùV}rúV(jÅXOYour distribution of IPC **didn't** come with the necessary pre-built librariesjÆjõVjÎj\SjÐjjÒ}rûV(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rüVjò)�rýV}rþV(jÅXOYour distribution of IPC **didn't** come with the necessary pre-built librariesjÆjùVjÎj\SjÐjõjÒ}rÿV(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÞ]rW(jçXYour distribution of IPC rW…�rW}rW(jÅXYour distribution of IPC jÆjýVubjÚ)�rW}rW(jÅX **didn't**jÒ}rW(jÔ]jÕ]jÖ]j×]jÚ]ujÆjýVjÞ]rWjçXdidn'trW…�r W}r W(jÅUjÆjWubajÐjâubjçX, come with the necessary pre-built librariesr W…�r W}r W(jÅX, come with the necessary pre-built librariesjÆjýVubeubaubj{)�rW}rW(jÅXKYou intend to run the 'test' executables (which often don't come pre-built)jÆjõVjÎj\SjÐjjÒ}rW(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rWjò)�rW}rW(jÅXKYou intend to run the 'test' executables (which often don't come pre-built)rWjÆjWjÎj\SjÐjõjÒ}rW(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÑjÞ]rWjçXKYou intend to run the 'test' executables (which often don't come pre-built)rW…�rW}rW(jÅjWjÆjWubaubaubj{)�rW}rW(jÅX:You want to use a specific toolchain or dependency versionrWjÆjõVjÎj\SjÐjjÒ}rW(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rWjò)�rW}r W(jÅjWjÆjWjÎj\SjÐjõjÒ}r!W(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÓjÞ]r"WjçX:You want to use a specific toolchain or dependency versionr#W…�r$W}r%W(jÅjWjÆjWubaubaubj{)�r&W}r'W(jÅX-You want to tune some of the compile options jÆjõVjÎj\SjÐjjÒ}r(W(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r)Wjò)�r*W}r+W(jÅX,You want to tune some of the compile optionsr,WjÆj&WjÎj\SjÐjõjÒ}r-W(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÔjÞ]r.WjçX,You want to tune some of the compile optionsr/W…�r0W}r1W(jÅj,WjÆj*WubaubaubeubeubeubjÇ)�r2W}r3W(jÅUjKjÆjJSjÎj\SjÐjÑjÒ}r4W(jÔ]r5WXrunr6WajÕ]jÖ]j×]r7WUid54r8WajÚ]ujÜK×jÝhjÞ]r9W(jà)�r:W}r;W(jÅXRunrWjçXRunr?W…�r@W}rAW(jÅj`__.jÆjaWjÎj\SjÐjõjÒ}rrW(jÔ]jÕ]jÖ]j×]jÚ]ujÜKèjÝhjÞ]rsW(jçX3The kernel for the OMAP-L138, can be obtained from rtW…�ruW}rvW(jÅX3The kernel for the OMAP-L138, can be obtained from jÆjpWubjû)�rwW}rxW(jÅXH`Gitorious linux-davinci project `__jÒ}ryW(UnameXGitorious linux-davinci projectjX"http://gitorious.org/linux-davincij×]jÖ]jÔ]jÕ]jÚ]ujÆjpWjÞ]rzWjçXGitorious linux-davinci projectr{W…�r|W}r}W(jÅUjÆjwWubajÐjÿubjçX.…�r~W}rW(jÅX.jÆjpWubeubjò)�r€W}r�W(jÅXZThe patches apply to the following commit id: **595ab716fc6e648b7dc79a58a01917ebb67b9508**jÆjaWjÎj\SjÐjõjÒ}r‚W(jÔ]jÕ]jÖ]j×]jÚ]ujÜKëjÝhjÞ]rƒW(jçX.The patches apply to the following commit id: r„W…�r…W}r†W(jÅX.The patches apply to the following commit id: jÆj€WubjÚ)�r‡W}rˆW(jÅX,**595ab716fc6e648b7dc79a58a01917ebb67b9508**jÒ}r‰W(jÔ]jÕ]jÖ]j×]jÚ]ujÆj€WjÞ]rŠWjçX(595ab716fc6e648b7dc79a58a01917ebb67b9508r‹W…�rŒW}r�W(jÅUjÆj‡WubajÐjâubeubjò)�rŽW}r�W(jÅXqThe specific patches needed for this kernel can be found in the **linux/patches/3.8.0** of your IPC installation.jÆjaWjÎj\SjÐjõjÒ}r�W(jÔ]jÕ]jÖ]j×]jÚ]ujÜKîjÝhjÞ]r‘W(jçX@The specific patches needed for this kernel can be found in the r’W…�r“W}r”W(jÅX@The specific patches needed for this kernel can be found in the jÆjŽWubjÚ)�r•W}r–W(jÅX**linux/patches/3.8.0**jÒ}r—W(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽWjÞ]r˜WjçXlinux/patches/3.8.0r™W…�ršW}r›W(jÅUjÆj•WubajÐjâubjçX of your IPC installation.rœW…�r�W}ržW(jÅX of your IPC installation.jÆjŽWubeubjò)�rŸW}r W(jÅXuOnce the patches are applied, there are a few key config parameters needed for rpmsg and socket driver to build/work.r¡WjÆjaWjÎj\SjÐjõjÒ}r¢W(jÔ]jÕ]jÖ]j×]jÚ]ujÜKñjÝhjÞ]r£WjçXuOnce the patches are applied, there are a few key config parameters needed for rpmsg and socket driver to build/work.r¤W…�r¥W}r¦W(jÅj¡WjÆjŸWubaubjò)�r§W}r¨W(jÅX—CONFIG_REMOTEPROC=m CONFIG_DA8XX_REMOTEPROC=m CONFIG_RPMSG=m CONFIG_VIRTIO=m It is also recommended to compile a Linux kernel with the debugfs facilityr©WjÆjaWjÎj\SjÐjõjÒ}rªW(jÔ]jÕ]jÖ]j×]jÚ]ujÜKôjÝhjÞ]r«WjçX—CONFIG_REMOTEPROC=m CONFIG_DA8XX_REMOTEPROC=m CONFIG_RPMSG=m CONFIG_VIRTIO=m It is also recommended to compile a Linux kernel with the debugfs facilityr¬W…�r­W}r®W(jÅj©WjÆj§Wubaubjò)�r¯W}r°W(jÅX3CONFIG_DEBUG_FS=y Re-build the kernel. For example:r±WjÆjaWjÎj\SjÐjõjÒ}r²W(jÔ]jÕ]jÖ]j×]jÚ]ujÜKûjÝhjÞ]r³WjçX3CONFIG_DEBUG_FS=y Re-build the kernel. For example:r´W…�rµW}r¶W(jÅj±WjÆj¯Wubaubj)�r·W}r¸W(jÅXFbuildhost$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImagejÆjaWjÎj\SjÐjjÒ}r¹W(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¢jÝhjÞ]rºWjçXFbuildhost$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImager»W…�r¼W}r½W(jÅUjÆj·Wubaubjò)�r¾W}r¿W(jÅXmYou will also need to re-build the kernel modules and install them on your target's file system. For example:rÀWjÆjaWjÎj\SjÐjõjÒ}rÁW(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rÂWjçXmYou will also need to re-build the kernel modules and install them on your target's file system. For example:rÃW…�rÄW}rÅW(jÅjÀWjÆj¾Wubaubj)�rÆW}rÇW(jÅX»buildhost$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules buildhost$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- INSTALL_MOD_PATH= modules_installjÆjaWjÎj\SjÐjjÒ}rÈW(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM©jÝhjÞ]rÉWjçX»buildhost$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules buildhost$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- INSTALL_MOD_PATH= modules_installrÊW…�rËW}rÌW(jÅUjÆjÆWubaubeubeubjÇ)�rÍW}rÎW(jÅUjÆj2WjÎj\SjÐjÑjÒ}rÏW(jÔ]jÕ]jÖ]j×]rÐWUkernel-boot-up-parametersrÑWajÚ]rÒWjvaujÜM jÝhjÞ]rÓW(jà)�rÔW}rÕW(jÅXKernel Boot-up ParametersrÖWjÆjÍWjÎj\SjÐjäjÒ}r×W(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rØWjçXKernel Boot-up ParametersrÙW…�rÚW}rÛW(jÅjÖWjÆjÔWubaubjò)�rÜW}rÝW(jÅX¤IPC requires an argument to be passed to the Linux kernel during boot up to properly run the tests. The remote processor(s) (rproc) memory location needs to be set.rÞWjÆjÍWjÎj\SjÐjõjÒ}rßW(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]ràWjçX¤IPC requires an argument to be passed to the Linux kernel during boot up to properly run the tests. The remote processor(s) (rproc) memory location needs to be set.ráW…�râW}rãW(jÅjÞWjÆjÜWubaubjt)�räW}råW(jÅUjÆjÍWjÎj\SjÐjwjÒ}ræW(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]rçWj{)�rèW}réW(jÅX For example, jÆjäWjÎj\SjÐjjÒ}rêW(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rëWjò)�rìW}ríW(jÅX For example,rîWjÆjèWjÎj\SjÐjõjÒ}rïW(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rðWjçX For example,rñW…�ròW}róW(jÅjîWjÆjìWubaubaubaubj)�rôW}rõW(jÅXnbootargs console=ttyS2,115200n8 root=/dev/nfs nfsroot=HOST:nfs_root,nolock rw ip=dhcp rproc_mem=16M@0xC3000000jÆjÍWjÎj\SjÐjjÒ}röW(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM·jÝhjÞ]r÷WjçXnbootargs console=ttyS2,115200n8 root=/dev/nfs nfsroot=HOST:nfs_root,nolock rw ip=dhcp rproc_mem=16M@0xC3000000røW…�rùW}rúW(jÅUjÆjôWubaubjò)�rûW}rüW(jÅXÃ*This is just an example, bootargs may vary depending on available setup* Depending on the memory map used in the final system configuration, the memory to be reserved for rproc usage may differ.jÆjÍWjÎj\SjÐjõjÒ}rýW(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rþW(jM)�rÿW}rX(jÅXI*This is just an example, bootargs may vary depending on available setup*jÒ}rX(jÔ]jÕ]jÖ]j×]jÚ]ujÆjûWjÞ]rXjçXGThis is just an example, bootargs may vary depending on available setuprX…�rX}rX(jÅUjÆjÿWubajÐjUubjçXz Depending on the memory map used in the final system configuration, the memory to be reserved for rproc usage may differ.rX…�rX}rX(jÅXz Depending on the memory map used in the final system configuration, the memory to be reserved for rproc usage may differ.jÆjûWubeubeubjÇ)�r X}r X(jÅUjÆj2WjÎj\SjÐjÑjÒ}r X(jÔ]jÕ]jÖ]j×]r XUinstalling-testsr XajÚ]rXj{aujÜMjÝhjÞ]rX(jà)�rX}rX(jÅXInstalling TestsrXjÆj XjÎj\SjÐjäjÒ}rX(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rXjçXInstalling TestsrX…�rX}rX(jÅjXjÆjXubaubjò)�rX}rX(jÅX¹To assemble the IPC test executables and libraries into a directory structure suitable for running on the target's file-system, issue the following command in the IPC install directory:rXjÆj XjÎj\SjÐjõjÒ}rX(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rXjçX¹To assemble the IPC test executables and libraries into a directory structure suitable for running on the target's file-system, issue the following command in the IPC install directory:rX…�rX}rX(jÅjXjÆjXubaubj)�r X}r!X(jÅX6buildhost$ make install prefix=/usrjÆj XjÎj\SjÐjjÒ}r"X(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÆjÝhjÞ]r#XjçX6buildhost$ make install prefix=/usrr$X…�r%X}r&X(jÅUjÆj Xubaubjò)�r'X}r(X(jÅXŒ*Depending on you target's filesystem directory privileges, you may be required to run **sudo make install** to properly install the files *jÆj XjÎj\SjÐjõjÒ}r)X(jÔ]jÕ]jÖ]j×]jÚ]ujÜM&jÝhjÞ]r*X(jM)�r+X}r,X(jÅXl*Depending on you target's filesystem directory privileges, you may be required to run **sudo make install**jÒ}r-X(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'XjÞ]r.XjçXjDepending on you target's filesystem directory privileges, you may be required to run **sudo make install*r/X…�r0X}r1X(jÅUjÆj+XubajÐjUubjçX to properly install the files *r2X…�r3X}r4X(jÅX to properly install the files *jÆj'Xubeubjë)�r5X}r6X(jÅX‚The test executables and libraries will be installed in the location path set by the **prefix** variable. If you are installing directly on a host mounted Network Filesystem(NFS), make sure to specify **usr** at the end of the **prefix** variable path. As with other variables, you can override this on the command line: :: buildhost$ sudo make install prefix=/usrjÆj XjÎj\SjÐjïjÒ}r7X(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r8X(jò)�r9X}r:X(jÅXCThe test executables and libraries will be installed in the location path set by the **prefix** variable. If you are installing directly on a host mounted Network Filesystem(NFS), make sure to specify **usr** at the end of the **prefix** variable path. As with other variables, you can override this on the command line: ::jÆj5XjÎj\SjÐjõjÒ}r;X(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÞ]rX}r?X(jÅXUThe test executables and libraries will be installed in the location path set by the jÆj9XubjÚ)�r@X}rAX(jÅX **prefix**jÒ}rBX(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9XjÞ]rCXjçXprefixrDX…�rEX}rFX(jÅUjÆj@XubajÐjâubjçXj variable. If you are installing directly on a host mounted Network Filesystem(NFS), make sure to specify rGX…�rHX}rIX(jÅXj variable. If you are installing directly on a host mounted Network Filesystem(NFS), make sure to specify jÆj9XubjÚ)�rJX}rKX(jÅX**usr**jÒ}rLX(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9XjÞ]rMXjçXusrrNX…�rOX}rPX(jÅUjÆjJXubajÐjâubjçX at the end of the rQX…�rRX}rSX(jÅX at the end of the jÆj9XubjÚ)�rTX}rUX(jÅX **prefix**jÒ}rVX(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9XjÞ]rWXjçXprefixrXX…�rYX}rZX(jÅUjÆjTXubajÐjâubjçXS variable path. As with other variables, you can override this on the command line:r[X…�r\X}r]X(jÅXS variable path. As with other variables, you can override this on the command line:jÆj9Xubeubj)�r^X}r_X(jÅX;buildhost$ sudo make install prefix=/usrjÆj5XjÐjjÒ}r`X(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÔjÞ]raXjçX;buildhost$ sudo make install prefix=/usrrbX…�rcX}rdX(jÅUjÆj^Xubaubeubjc)�reX}rfX(jÅUjÆj XjÎj\SjÐjfjÒ}rgX(jÔ]jÕ]jÖ]j×]jÚ]ujÜM4jÝhjÞ]rhXji)�riX}rjX(jÅUjlKjÆjeXjÎj\SjÐjÜjÒ}rkX(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rlX}rmX(jÅX The remote processor's applications will be loaded via the remote_proc kernel module but they need to reside on the devices target filesystem in **/lib/firmware** directory. The location of the remote core application within the IPC product various based on device.jÆj XjÎj\SjÐjõjÒ}rnX(jÔ]jÕ]jÖ]j×]jÚ]ujÜM6jÝhjÞ]roX(jçX‘The remote processor's applications will be loaded via the remote_proc kernel module but they need to reside on the devices target filesystem in rpX…�rqX}rrX(jÅX‘The remote processor's applications will be loaded via the remote_proc kernel module but they need to reside on the devices target filesystem in jÆjlXubjÚ)�rsX}rtX(jÅX**/lib/firmware**jÒ}ruX(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlXjÞ]rvXjçX /lib/firmwarerwX…�rxX}ryX(jÅUjÆjsXubajÐjâubjçXg directory. The location of the remote core application within the IPC product various based on device.rzX…�r{X}r|X(jÅXg directory. The location of the remote core application within the IPC product various based on device.jÆjlXubeubjÇ)�r}X}r~X(jÅUjÆj XjÎj\SjÐjÑjÒ}rX(jÔ]jÕ]jÖ]j×]r€XUslave-binariesr�XajÚ]r‚XhäaujÜM<jÝhjÞ]rƒX(jà)�r„X}r…X(jÅXSlave Binariesr†XjÆj}XjÎj\SjÐjäjÒ}r‡X(jÔ]jÕ]jÖ]j×]jÚ]ujÜM<jÝhjÞ]rˆXjçXSlave Binariesr‰X…�rŠX}r‹X(jÅj†XjÆj„Xubaubjò)�rŒX}r�X(jÅX‚The slave-side test binaries, once built, are found in your IPC_INSTALL_DIR/packages/ti/ipc/tests/bin/_ directory.rŽXjÆj}XjÎj\SjÐjõjÒ}r�X(jÔ]jÕ]jÖ]j×]jÚ]ujÜM>jÝhjÞ]r�XjçX‚The slave-side test binaries, once built, are found in your IPC_INSTALL_DIR/packages/ti/ipc/tests/bin/_ directory.r‘X…�r’X}r“X(jÅjŽXjÆjŒXubaubjò)�r”X}r•X(jÅX¤Copy the appropriate slave-side executable onto the devices target filesystem into the **/lib/firmware** directory. For example, OMAP-L138 developers would do this:jÆj}XjÎj\SjÐjõjÒ}r–X(jÔ]jÕ]jÖ]j×]jÚ]ujÜMAjÝhjÞ]r—X(jçXWCopy the appropriate slave-side executable onto the devices target filesystem into the r˜X…�r™X}ršX(jÅXWCopy the appropriate slave-side executable onto the devices target filesystem into the jÆj”XubjÚ)�r›X}rœX(jÅX**/lib/firmware**jÒ}r�X(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”XjÞ]ržXjçX /lib/firmwarerŸX…�r X}r¡X(jÅUjÆj›XubajÐjâubjçX< directory. For example, OMAP-L138 developers would do this:r¢X…�r£X}r¤X(jÅX< directory. For example, OMAP-L138 developers would do this:jÆj”Xubeubj)�r¥X}r¦X(jÅXxbuildhost$ cp IPC_INSTALL_DIR/packages/ti/ipc/tests/bin/ti_platforms_evmOMAPL138_DSP/ /lib/firmware/.jÆj}XjÎj\SjÐjjÒ}r§X(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMéjÝhjÞ]r¨XjçXxbuildhost$ cp IPC_INSTALL_DIR/packages/ti/ipc/tests/bin/ti_platforms_evmOMAPL138_DSP/ /lib/firmware/.r©X…�rªX}r«X(jÅUjÆj¥XubaubeubjÇ)�r¬X}r­X(jÅUjÆj XjÎj\SjÐjÑjÒ}r®X(jÔ]jÕ]jÖ]j×]r¯XUipc-daemons-and-driversr°XajÚ]r±Xh(aujÜMJjÝhjÞ]r²X(jà)�r³X}r´X(jÅXIPC Daemons and DriversrµXjÆj¬XjÎj\SjÐjäjÒ}r¶X(jÔ]jÕ]jÖ]j×]jÚ]ujÜMJjÝhjÞ]r·XjçXIPC Daemons and Driversr¸X…�r¹X}rºX(jÅjµXjÆj³Xubaubjò)�r»X}r¼X(jÅXïIPC provides system-wide services across multiple applications, and utilizes low-level system hardware (e.g. interrupts and shared memory). To facilitate these services, IPC uses a user-space daemon (LAD) and several kernel device drivers.r½XjÆj¬XjÎj\SjÐjõjÒ}r¾X(jÔ]jÕ]jÖ]j×]jÚ]ujÜMLjÝhjÞ]r¿XjçXïIPC provides system-wide services across multiple applications, and utilizes low-level system hardware (e.g. interrupts and shared memory). To facilitate these services, IPC uses a user-space daemon (LAD) and several kernel device drivers.rÀX…�rÁX}rÂX(jÅj½XjÆj»XubaubjhK)�rÃX}rÄX(jÅXLADrÅXjÆj¬XjÎj\SjÐjlKjÒ}rÆX(j×]rÇXUladrÈXajÖ]jÔ]jÕ]jÚ]rÉXh€aujÜNjÝhjÞ]rÊXjçXLADrËX…�rÌX}rÍX(jÅjÅXjÆjÃXubaubjò)�rÎX}rÏX(jÅXESystem-wide IPC state is managed by a user-space daemon (LAD). This daemon is specific to a given device, and is named lad_. It will reside on the target's filesystem (typically in /usr/bin/) after following the `#Installing Tests `__ section. To run LAD, execute:jÆj¬XjÎj\SjÐjõjÒ}rÐX(jÔ]jÕ]jÖ]j×]jÚ]ujÜMTjÝhjÞ]rÑX(jçXÜSystem-wide IPC state is managed by a user-space daemon (LAD). This daemon is specific to a given device, and is named lad_. It will reside on the target's filesystem (typically in /usr/bin/) after following the rÒX…�rÓX}rÔX(jÅXÜSystem-wide IPC state is managed by a user-space daemon (LAD). This daemon is specific to a given device, and is named lad_. It will reside on the target's filesystem (typically in /usr/bin/) after following the jÆjÎXubjû)�rÕX}rÖX(jÅXK`#Installing Tests `__jÒ}r×X(UnameX#Installing TestsjX3index_Foundational_Components.html#installing-testsj×]jÖ]jÔ]jÕ]jÚ]ujÆjÎXjÞ]rØXjçX#Installing TestsrÙX…�rÚX}rÛX(jÅUjÆjÕXubajÐjÿubjçX section. To run LAD, execute:rÜX…�rÝX}rÞX(jÅX section. To run LAD, execute:jÆjÎXubeubj)�rßX}ràX(jÅXtarget# /usr/bin/lad_jÆj¬XjÎj\SjÐjjÒ}ráX(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMþjÝhjÞ]râXjçXtarget# /usr/bin/lad_rãX…�räX}råX(jÅUjÆjßXubaubjò)�ræX}rçX(jÅXBThis forks the LAD daemon and leaves it running in the background.rèXjÆj¬XjÎj\SjÐjõjÒ}réX(jÔ]jÕ]jÖ]j×]jÚ]ujÜM^jÝhjÞ]rêXjçXBThis forks the LAD daemon and leaves it running in the background.rëX…�rìX}ríX(jÅjèXjÆjæXubaubjò)�rîX}rïX(jÅX:LAD takes an optional argument to indicate a filename into which log statements should be emitted. This file will be created in the **/tmp/LAD/** directory. How to specify the filename varies based on your IPC release. For example, to instruct LAD to emit log statements into a 'lad.txt' file, start LAD like this:jÆj¬XjÎj\SjÐjõjÒ}rðX(jÔ]jÕ]jÖ]j×]jÚ]ujÜM`jÝhjÞ]rñX(jçX„LAD takes an optional argument to indicate a filename into which log statements should be emitted. This file will be created in the ròX…�róX}rôX(jÅX„LAD takes an optional argument to indicate a filename into which log statements should be emitted. This file will be created in the jÆjîXubjÚ)�rõX}röX(jÅX **/tmp/LAD/**jÒ}r÷X(jÔ]jÕ]jÖ]j×]jÚ]ujÆjîXjÞ]røXjçX /tmp/LAD/rùX…�rúX}rûX(jÅUjÆjõXubajÐjâubjçX© directory. How to specify the filename varies based on your IPC release. For example, to instruct LAD to emit log statements into a 'lad.txt' file, start LAD like this:rüX…�rýX}rþX(jÅX© directory. How to specify the filename varies based on your IPC release. For example, to instruct LAD to emit log statements into a 'lad.txt' file, start LAD like this:jÆjîXubeubjt)�rÿX}rY(jÅUjÆj¬XjÎj\SjÐjwjÒ}rY(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMfjÝhjÞ]rYj{)�rY}rY(jÅXReleases before IPC 3.21: jÆjÿXjÎj\SjÐjjÒ}rY(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rYjò)�rY}rY(jÅXReleases before IPC 3.21:r YjÆjYjÎj\SjÐjõjÒ}r Y(jÔ]jÕ]jÖ]j×]jÚ]ujÜMfjÞ]r YjçXReleases before IPC 3.21:r Y…�r Y}rY(jÅj YjÆjYubaubaubaubj)�rY}rY(jÅX%target# /usr/bin/lad_ lad.txtjÆj¬XjÎj\SjÐjjÒ}rY(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rYjçX%target# /usr/bin/lad_ lad.txtrY…�rY}rY(jÅUjÆjYubaubjt)�rY}rY(jÅUjÆj¬XjÎj\SjÐjwjÒ}rY(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMljÝhjÞ]rYj{)�rY}rY(jÅXIPC 3.21 and after: jÆjYjÎj\SjÐjjÒ}rY(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rYjò)�rY}rY(jÅXIPC 3.21 and after:r YjÆjYjÎj\SjÐjõjÒ}r!Y(jÔ]jÕ]jÖ]j×]jÚ]ujÜMljÞ]r"YjçXIPC 3.21 and after:r#Y…�r$Y}r%Y(jÅj YjÆjYubaubaubaubj)�r&Y}r'Y(jÅX(target# /usr/bin/lad_ -l lad.txtjÆj¬XjÎj\SjÐjjÒ}r(Y(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]r)YjçX(target# /usr/bin/lad_ -l lad.txtr*Y…�r+Y}r,Y(jÅUjÆj&Yubaubjc)�r-Y}r.Y(jÅUjÆj¬XjÎj\SjÐjfjÒ}r/Y(jÔ]jÕ]jÖ]j×]jÚ]ujÜMrjÝhjÞ]r0Yji)�r1Y}r2Y(jÅUjlKjÆj-YjÎj\SjÐjÜjÒ}r3Y(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�r4Y}r5Y(jÅXDriversr6YjÆj¬XjÎj\SjÐjlKjÒ}r7Y(j×]r8YUdriversr9YajÖ]jÔ]jÕ]jÚ]r:Yj°aujÜNjÝhjÞ]r;YjçXDriversrY(jÅj6YjÆj4Yubaubjò)�r?Y}r@Y(jÅX;The kernel drivers/modules added by the Linux patches must be inserted into the kernel for IPC applications to run correctly. Refer to the `#Configuring Kernel `__ section. The required modules must be configured, built and loaded onto the target's filesystem.jÆj¬XjÎj\SjÐjõjÒ}rAY(jÔ]jÕ]jÖ]j×]jÚ]ujÜMwjÝhjÞ]rBY(jçX‹The kernel drivers/modules added by the Linux patches must be inserted into the kernel for IPC applications to run correctly. Refer to the rCY…�rDY}rEY(jÅX‹The kernel drivers/modules added by the Linux patches must be inserted into the kernel for IPC applications to run correctly. Refer to the jÆj?Yubjû)�rFY}rGY(jÅXO`#Configuring Kernel `__jÒ}rHY(UnameX#Configuring KerneljX5index_Foundational_Components.html#configuring-kernelj×]jÖ]jÔ]jÕ]jÚ]ujÆj?YjÞ]rIYjçX#Configuring KernelrJY…�rKY}rLY(jÅUjÆjFYubajÐjÿubjçXa section. The required modules must be configured, built and loaded onto the target's filesystem.rMY…�rNY}rOY(jÅXa section. The required modules must be configured, built and loaded onto the target's filesystem.jÆj?Yubeubjò)�rPY}rQY(jÅX\Prior to loading the modules, a directory (/debug) must be created at the root of your devices filesystem. This directory will be mounted as a debugfs (debug filesystem) which the kernel modules will use to provide details about the slaves (e.g. running state, trace output, etc). If the /debug directory doesn't exist, simply create it as follows:rRYjÆj¬XjÎj\SjÐjõjÒ}rSY(jÔ]jÕ]jÖ]j×]jÚ]ujÜM}jÝhjÞ]rTYjçX\Prior to loading the modules, a directory (/debug) must be created at the root of your devices filesystem. This directory will be mounted as a debugfs (debug filesystem) which the kernel modules will use to provide details about the slaves (e.g. running state, trace output, etc). If the /debug directory doesn't exist, simply create it as follows:rUY…�rVY}rWY(jÅjRYjÆjPYubaubj)�rXY}rYY(jÅXtarget# mkdir /debugjÆj¬XjÎj\SjÐjjÒ}rZY(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM'jÝhjÞ]r[YjçXtarget# mkdir /debugr\Y…�r]Y}r^Y(jÅUjÆjXYubaubjhK)�r_Y}r`Y(jÅX OMAP-L138raYjÆj¬XjÎj\SjÐjlKjÒ}rbY(j×]rcYU omap-l138-1rdYajÖ]jÔ]jÕ]jÚ]reYh1aujÜNjÝhjÞ]rfYjçX OMAP-L138rgY…�rhY}riY(jÅjaYjÆj_Yubaubjò)�rjY}rkY(jÅXfOn OMAP-L138, the kernel modules can be loaded with the following command on the target's file-system:rlYjÆj¬XjÎj\SjÐjõjÒ}rmY(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŠjÝhjÞ]rnYjçXfOn OMAP-L138, the kernel modules can be loaded with the following command on the target's file-system:roY…�rpY}rqY(jÅjlYjÆjjYubaubj)�rrY}rsY(jÅX×target# depmod -a target# mount -t debugfs none /debug target# modprobe remoteproc target# modprobe da8xx_remoteproc da8xx_fw_name=messageq_single.xe674 target# modprobe virtio_rpmsg_bus target# modprobe rpmsg_protojÆj¬XjÎj\SjÐjjÒ}rtY(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM1jÝhjÞ]ruYjçX×target# depmod -a target# mount -t debugfs none /debug target# modprobe remoteproc target# modprobe da8xx_remoteproc da8xx_fw_name=messageq_single.xe674 target# modprobe virtio_rpmsg_bus target# modprobe rpmsg_protorvY…�rwY}rxY(jÅUjÆjrYubaubjò)�ryY}rzY(jÅX`The kernel modules can be unloaded by issuing the following command on the target's file-system:r{YjÆj¬XjÎj\SjÐjõjÒ}r|Y(jÔ]jÕ]jÖ]j×]jÚ]ujÜM–jÝhjÞ]r}YjçX`The kernel modules can be unloaded by issuing the following command on the target's file-system:r~Y…�rY}r€Y(jÅj{YjÆjyYubaubj)�r�Y}r‚Y(jÅX†target# umount /debug target# rmmod rpmsg_proto target# rmmod virtio_rpmsg_bus target# rmmod da8xx_remoteproc target# rmmod remoteprocjÆj¬XjÎj\SjÐjjÒ}rƒY(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM=jÝhjÞ]r„YjçX†target# umount /debug target# rmmod rpmsg_proto target# rmmod virtio_rpmsg_bus target# rmmod da8xx_remoteproc target# rmmod remoteprocr…Y…�r†Y}r‡Y(jÅUjÆj�YubaubjhK)�rˆY}r‰Y(jÅXOMAP54XXrŠYjÆj¬XjÎj\SjÐjlKjÒ}r‹Y(j×]rŒYUomap54xxr�YajÖ]jÔ]jÕ]jÚ]rŽYj aujÜNjÝhjÞ]r�YjçXOMAP54XXr�Y…�r‘Y}r’Y(jÅjŠYjÆjˆYubaubjò)�r“Y}r”Y(jÅXeOn OMAP54XX, the kernel modules can be loaded with the following command on the target's file-system:r•YjÆj¬XjÎj\SjÐjõjÒ}r–Y(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¤jÝhjÞ]r—YjçXeOn OMAP54XX, the kernel modules can be loaded with the following command on the target's file-system:r˜Y…�r™Y}ršY(jÅj•YjÆj“Yubaubj)�r›Y}rœY(jÅX²target# depmod -a target# mount -t debugfs none /debug target# modprobe remoteproc target# modprobe omap_remoteproc target# modprobe virtio_rpmsg_bus target# modprobe rpmsg_protojÆj¬XjÎj\SjÐjjÒ}r�Y(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMKjÝhjÞ]ržYjçX²target# depmod -a target# mount -t debugfs none /debug target# modprobe remoteproc target# modprobe omap_remoteproc target# modprobe virtio_rpmsg_bus target# modprobe rpmsg_protorŸY…�r Y}r¡Y(jÅUjÆj›YubaubeubjÇ)�r¢Y}r£Y(jÅUjKjÆj XjÎj\SjÐjÑjÒ}r¤Y(jÔ]r¥YXrunning test applicationsr¦YajÕ]jÖ]j×]r§YUrunning-test-applicationsr¨YajÚ]ujÜM±jÝhjÞ]r©Y(jà)�rªY}r«Y(jÅXRunning Test Applicationsr¬YjÆj¢YjÎj\SjÐjäjÒ}r­Y(jÔ]jÕ]jÖ]j×]jÚ]ujÜM±jÝhjÞ]r®YjçXRunning Test Applicationsr¯Y…�r°Y}r±Y(jÅj¬YjÆjªYubaubjò)�r²Y}r³Y(jÅX¼The test applications are already on the target's filesystem in /usr/bin assuming the `#Installing Tests `__ section has been followed.jÆj¢YjÎj\SjÐjõjÒ}r´Y(jÔ]jÕ]jÖ]j×]jÚ]ujÜM³jÝhjÞ]rµY(jçXVThe test applications are already on the target's filesystem in /usr/bin assuming the r¶Y…�r·Y}r¸Y(jÅXVThe test applications are already on the target's filesystem in /usr/bin assuming the jÆj²Yubjû)�r¹Y}rºY(jÅXK`#Installing Tests `__jÒ}r»Y(UnameX#Installing TestsjX3index_Foundational_Components.html#installing-testsj×]jÖ]jÔ]jÕ]jÚ]ujÆj²YjÞ]r¼YjçX#Installing Testsr½Y…�r¾Y}r¿Y(jÅUjÆj¹YubajÐjÿubjçX section has been followed.rÀY…�rÁY}rÂY(jÅX section has been followed.jÆj²Yubeubjò)�rÃY}rÄY(jÅXPTo run the test application's, execute the following on the target's filesystem:rÅYjÆj¢YjÎj\SjÐjõjÒ}rÆY(jÔ]jÕ]jÖ]j×]jÚ]ujÜM·jÝhjÞ]rÇYjçXPTo run the test application's, execute the following on the target's filesystem:rÈY…�rÉY}rÊY(jÅjÅYjÆjÃYubaubj)�rËY}rÌY(jÅX%target# /usr/bin/MessageQApp_jÆj¢YjÎj\SjÐjjÒ}rÍY(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM^jÝhjÞ]rÎYjçX%target# /usr/bin/MessageQApp_rÏY…�rÐY}rÑY(jÅUjÆjËYubaubjhK)�rÒY}rÓY(jÅX OMAP-L138rÔYjÆj¢YjÎj\SjÐjlKjÒ}rÕY(j×]rÖYU omap-l138-2r×YajÖ]jÔ]jÕ]jÚ]rØYh2aujÜNjÝhjÞ]rÙYjçX OMAP-L138rÚY…�rÛY}rÜY(jÅjÔYjÆjÒYubaubjò)�rÝY}rÞY(jÅX0The expected output on the Linux-side should be:rßYjÆj¢YjÎj\SjÐjõjÒ}ràY(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÁjÝhjÞ]ráYjçX0The expected output on the Linux-side should be:râY…�rãY}räY(jÅjßYjÆjÝYubaubj)�råY}ræY(jÅXÛUsing numLoops: 100; procId : 1 Entered MessageQApp_execute Local MessageQId: 0x1 Remote queueId [0x10000] Exchanging 100 messages with remote processor DSP... MessageQ_get #0 Msg = 0x15328 Exchanged 1 messages with remote processor DSP MessageQ_get #1 Msg = 0x15328 ... ... Exchanged 99 messages with remote processor DSP MessageQ_get #99 Msg = 0x15328 Exchanged 100 messages with remote processor DSP Sample application successfully completed! Leaving MessageQApp_executejÆj¢YjÎj\SjÐjjÒ}rçY(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMgjÝhjÞ]rèYjçXÛUsing numLoops: 100; procId : 1 Entered MessageQApp_execute Local MessageQId: 0x1 Remote queueId [0x10000] Exchanging 100 messages with remote processor DSP... MessageQ_get #0 Msg = 0x15328 Exchanged 1 messages with remote processor DSP MessageQ_get #1 Msg = 0x15328 ... ... Exchanged 99 messages with remote processor DSP MessageQ_get #99 Msg = 0x15328 Exchanged 100 messages with remote processor DSP Sample application successfully completed! Leaving MessageQApp_executeréY…�rêY}rëY(jÅUjÆjåYubaubjò)�rìY}ríY(jÅXfThe output on the remote processor, can be obtained by running the following on the target filesystem:rîYjÆj¢YjÎj\SjÐjõjÒ}rïY(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÕjÝhjÞ]rðYjçXfThe output on the remote processor, can be obtained by running the following on the target filesystem:rñY…�ròY}róY(jÅjîYjÆjìYubaubj)�rôY}rõY(jÅX0target# cat /debug/remoteproc/remoteproc0/trace0jÆj¢YjÎj\SjÐjjÒ}röY(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM|jÝhjÞ]r÷YjçX0target# cat /debug/remoteproc/remoteproc0/trace0røY…�rùY}rúY(jÅUjÆjôYubaubjò)�rûY}rüY(jÅX6The expected output on the remote processor should be:rýYjÆj¢YjÎj\SjÐjõjÒ}rþY(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÜjÝhjÞ]rÿYjçX6The expected output on the remote processor should be:rZ…�rZ}rZ(jÅjýYjÆjûYubaubj)�rZ}rZ(jÅXó3 Resource entries at 0xc3100000 messageq_single.c:main: MultiProc id = 1 registering rpmsg-proto service on 61 with HOST tsk1Fxn: created MessageQ: SLAVE_DSP; QueueID: 0x10000 Awaiting sync message from host... [t=0x00000001:67984156] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53 [t=0x00000001:67f626ed] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53 Received msg from (procId:remoteQueueId): 0x0:0x1 payload: 8 bytes; loops: 100 with printing. Got msg #0 (40 bytes) from procId 0 Sending msg Id #0 to procId 0 Got msg #1 (40 bytes) from procId 0 Sending msg Id #1 to procId 0 ... ... Got msg #98 (40 bytes) from procId 0 Sending msg Id #98 to procId 0 Got msg #99 (40 bytes) from procId 0 Sending msg Id #99 to procId 0 Awaiting sync message from host... [t=0x00000015:7b46c4c2] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53 [t=0x00000015:7b6315fb] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53jÆj¢YjÎj\SjÐjjÒ}rZ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM‚jÝhjÞ]rZjçXó3 Resource entries at 0xc3100000 messageq_single.c:main: MultiProc id = 1 registering rpmsg-proto service on 61 with HOST tsk1Fxn: created MessageQ: SLAVE_DSP; QueueID: 0x10000 Awaiting sync message from host... [t=0x00000001:67984156] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53 [t=0x00000001:67f626ed] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53 Received msg from (procId:remoteQueueId): 0x0:0x1 payload: 8 bytes; loops: 100 with printing. Got msg #0 (40 bytes) from procId 0 Sending msg Id #0 to procId 0 Got msg #1 (40 bytes) from procId 0 Sending msg Id #1 to procId 0 ... ... Got msg #98 (40 bytes) from procId 0 Sending msg Id #98 to procId 0 Got msg #99 (40 bytes) from procId 0 Sending msg Id #99 to procId 0 Awaiting sync message from host... [t=0x00000015:7b46c4c2] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53 [t=0x00000015:7b6315fb] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53rZ…�rZ}r Z(jÅUjÆjZubaubeubeubeubjÇ)�r Z}r Z(jÅUjKjÆjJSjÎj\SjÐjÑjÒ}r Z(jÔ]r ZjéRajÕ]jÖ]j×]rZUid55rZajÚ]ujÜMøjÝhjÞ]rZ(jà)�rZ}rZ(jÅXSee AlsorZjÆj ZjÎj\SjÐjäjÒ}rZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMøjÝhjÞ]rZjçXSee AlsorZ…�rZ}rZ(jÅjZjÆjZubaubjt)�rZ}rZ(jÅUjÆj ZjÎj\SjÐjwjÒ}rZ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMújÝhjÞ]rZ(j{)�rZ}rZ(jÅX8`IPC 3.x `__rZjÆjZjÎj\SjÐjjÒ}r Z(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r!Zjò)�r"Z}r#Z(jÅjZjÆjZjÎj\SjÐjõjÒ}r$Z(jÔ]jÕ]jÖ]j×]jÚ]ujÜMújÞ]r%Zjû)�r&Z}r'Z(jÅjZjÒ}r(Z(UnameXIPC 3.xjX*index_Foundational_Components.html#ipc-3-xj×]jÖ]jÔ]jÕ]jÚ]ujÆj"ZjÞ]r)ZjçXIPC 3.xr*Z…�r+Z}r,Z(jÅUjÆj&ZubajÐjÿubaubaubj{)�r-Z}r.Z(jÅXG`IPC Users Guide `__r/ZjÆjZjÎj\SjÐjjÒ}r0Z(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r1Zjò)�r2Z}r3Z(jÅj/ZjÆj-ZjÎj\SjÐjõjÒ}r4Z(jÔ]jÕ]jÖ]j×]jÚ]ujÜMûjÞ]r5Zjû)�r6Z}r7Z(jÅj/ZjÒ}r8Z(UnameXIPC Users GuidejX1index_Foundational_Components.html#ipc-user-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj2ZjÞ]r9ZjçXIPC Users Guider:Z…�r;Z}rZ(jÅX<`IPC 3.x FAQ `__r?ZjÆjZjÎj\SjÐjjÒ}r@Z(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rAZjò)�rBZ}rCZ(jÅj?ZjÆj=ZjÎj\SjÐjõjÒ}rDZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMüjÞ]rEZjû)�rFZ}rGZ(jÅj?ZjÒ}rHZ(UnameX IPC 3.x FAQjX*index_Foundational_Components.html#ipc-faqj×]jÖ]jÔ]jÕ]jÚ]ujÆjBZjÞ]rIZjçX IPC 3.x FAQrJZ…�rKZ}rLZ(jÅUjÆjFZubajÐjÿubaubaubj{)�rMZ}rNZ(jÅXP`IPC Install Guide QNX `__rOZjÆjZjÎj\SjÐjjÒ}rPZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rQZjò)�rRZ}rSZ(jÅjOZjÆjMZjÎj\SjÐjõjÒ}rTZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMýjÞ]rUZjû)�rVZ}rWZ(jÅjOZjÒ}rXZ(UnameXIPC Install Guide QNXjX4index_Foundational_Components.html#qnx-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjRZjÞ]rYZjçXIPC Install Guide QNXrZZ…�r[Z}r\Z(jÅUjÆjVZubajÐjÿubaubaubj{)�r]Z}r^Z(jÅXU`IPC Install Guide BIOS `__ jÆjZjÎX\internal padding after source/rtos/PDK_Platform_Software/IPC/IPC_Install_Guide_Linux.rst.incr_ZjÐjjÒ}r`Z(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]raZjò)�rbZ}rcZ(jÅXR`IPC Install Guide BIOS `__rdZjÆj]ZjÎj\SjÐjõjÒ}reZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMþjÞ]rfZjû)�rgZ}rhZ(jÅjdZjÒ}riZ(UnameXIPC Install Guide BIOSjX5index_Foundational_Components.html#bios-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjbZjÞ]rjZjçXIPC Install Guide BIOSrkZ…�rlZ}rmZ(jÅUjÆjgZubajÐjÿubaubaubeubeubeubjÇ)�rnZ}roZ(jÅUjÆjTPjÎjÏjÐjÑjÒ}rpZ(jÔ]jÕ]jÖ]j×]rqZUqnx-install-guiderrZajÚ]rsZjbaujÜK¨jÝhjÞ]rtZ(jà)�ruZ}rvZ(jÅXQNX Install GuiderwZjÆjnZjÎjÏjÐjäjÒ}rxZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¨jÝhjÞ]ryZjçXQNX Install GuiderzZ…�r{Z}r|Z(jÅjwZjÆjuZubaubj7)�r}Z}r~Z(jÅX=http://processors.wiki.ti.com/index.php/IPC_Install_Guide_QNXjÆjnZjÎj:XCsource/rtos/PDK_Platform_Software/IPC/IPC_Install_Guide_QNX.rst.incrZ…�r€Z}r�ZbjÐj>jÒ}r‚Z(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rƒZjçX=http://processors.wiki.ti.com/index.php/IPC_Install_Guide_QNXr„Z…�r…Z}r†Z(jÅUjÆj}ZubaubjÇ)�r‡Z}rˆZ(jÅUjKjÆjnZjÎj€ZjÐjÑjÒ}r‰Z(jÔ]rŠZX introductionr‹ZajÕ]jÖ]j×]rŒZUid56r�ZajÚ]ujÜKjÝhjÞ]rŽZ(jà)�r�Z}r�Z(jÅX Introductionr‘ZjÆj‡ZjÎj€ZjÐjäjÒ}r’Z(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r“ZjçX Introductionr”Z…�r•Z}r–Z(jÅj‘ZjÆj�Zubaubjò)�r—Z}r˜Z(jÅXðInter/Intra Processor Communication (IPC) is a product designed to enable communication between processors in a multi-processor environment. Features of IPC include message passing, multi-processor gates, shared memory primitives, and more.r™ZjÆj‡ZjÎj€ZjÐjõjÒ}ršZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r›ZjçXðInter/Intra Processor Communication (IPC) is a product designed to enable communication between processors in a multi-processor environment. Features of IPC include message passing, multi-processor gates, shared memory primitives, and more.rœZ…�r�Z}ržZ(jÅj™ZjÆj—Zubaubjò)�rŸZ}r Z(jÅX<IPC is designed for use with processors running SYS/BIOS applications. This is typically an ARM or DSP. IPC includes support for High Level Operating Systems (HLOS) like Linux, as well as the SYS/BIOS RTOS. The breadth of IPC features supported in an HLOS environment is reduced in an effort to simplify the product.r¡ZjÆj‡ZjÎj€ZjÐjõjÒ}r¢Z(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]r£ZjçX<IPC is designed for use with processors running SYS/BIOS applications. This is typically an ARM or DSP. IPC includes support for High Level Operating Systems (HLOS) like Linux, as well as the SYS/BIOS RTOS. The breadth of IPC features supported in an HLOS environment is reduced in an effort to simplify the product.r¤Z…�r¥Z}r¦Z(jÅj¡ZjÆjŸZubaubeubjÇ)�r§Z}r¨Z(jÅUjKjÆjnZjÎj€ZjÐjÑjÒ}r©Z(jÔ]rªZXinstallr«ZajÕ]jÖ]j×]r¬ZUid57r­ZajÚ]ujÜKjÝhjÞ]r®Z(jà)�r¯Z}r°Z(jÅXInstallr±ZjÆj§ZjÎj€ZjÐjäjÒ}r²Z(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r³ZjçXInstallr´Z…�rµZ}r¶Z(jÅj±ZjÆj¯Zubaubjò)�r·Z}r¸Z(jÅXhIPC is often distributed and installed within a larger SDK. In those cases, no installation is required.r¹ZjÆj§ZjÎj€ZjÐjõjÒ}rºZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r»ZjçXhIPC is often distributed and installed within a larger SDK. In those cases, no installation is required.r¼Z…�r½Z}r¾Z(jÅj¹ZjÆj·Zubaubjò)�r¿Z}rÀZ(jÅXÊOutside of an SDK, `IPC can be downloaded here `__, and is released as a zip file. To install, simply extract the file.jÆj§ZjÎj€ZjÐjõjÒ}rÁZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÂZ(jçXOutside of an SDK, rÃZ…�rÄZ}rÅZ(jÅXOutside of an SDK, jÆj¿Zubjû)�rÆZ}rÇZ(jÅXr`IPC can be downloaded here `__jÒ}rÈZ(UnameXIPC can be downloaded herejXQhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/index.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆj¿ZjÞ]rÉZjçXIPC can be downloaded hererÊZ…�rËZ}rÌZ(jÅUjÆjÆZubajÐjÿubjçXE, and is released as a zip file. To install, simply extract the file.rÍZ…�rÎZ}rÏZ(jÅXE, and is released as a zip file. To install, simply extract the file.jÆj¿Zubeubj)�rÐZ}rÑZ(jÅX"buildhost$ unzip ipc_.zipjÆj§ZjÎj€ZjÐjjÒ}rÒZ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÆjÝhjÞ]rÓZjçX"buildhost$ unzip ipc_.ziprÔZ…�rÕZ}rÖZ(jÅUjÆjÐZubaubjò)�r×Z}rØZ(jÅX}This will extract the IPC product in a directory with its product name and version information (e.g. **c:/ti/ipc_**)jÆj§ZjÎj€ZjÐjõjÒ}rÙZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÚZ(jçXeThis will extract the IPC product in a directory with its product name and version information (e.g. rÛZ…�rÜZ}rÝZ(jÅXeThis will extract the IPC product in a directory with its product name and version information (e.g. jÆj×ZubjÚ)�rÞZ}rßZ(jÅX**c:/ti/ipc_**jÒ}ràZ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×ZjÞ]ráZjçXc:/ti/ipc_râZ…�rãZ}räZ(jÅUjÆjÞZubajÐjâubjçX)…�råZ}ræZ(jÅX)jÆj×Zubeubjë)�rçZ}rèZ(jÅXE- This document assumes the IPC install path to be the user's home directory on a Linux host machine (**/home/**) or the user's main drive on a Windows host machine (**C:\\**). The variable **IPC_INSTALL_DIR** will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands. - Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.jÆj§ZjÎNjÐjïjÒ}réZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rêZjt)�rëZ}rìZ(jÅUjÒ}ríZ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjçZjÞ]rîZ(j{)�rïZ}rðZ(jÅXOThis document assumes the IPC install path to be the user's home directory on a Linux host machine (**/home/**) or the user's main drive on a Windows host machine (**C:\\**). The variable **IPC_INSTALL_DIR** will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.jÒ}rñZ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëZjÞ]ròZjò)�róZ}rôZ(jÅXOThis document assumes the IPC install path to be the user's home directory on a Linux host machine (**/home/**) or the user's main drive on a Windows host machine (**C:\\**). The variable **IPC_INSTALL_DIR** will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.jÆjïZjÎj€ZjÐjõjÒ}rõZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]röZ(jçXdThis document assumes the IPC install path to be the user's home directory on a Linux host machine (r÷Z…�røZ}rùZ(jÅXdThis document assumes the IPC install path to be the user's home directory on a Linux host machine (jÆjóZubjÚ)�rúZ}rûZ(jÅX**/home/**jÒ}rüZ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóZjÞ]rýZjçX /home/rþZ…�rÿZ}r[(jÅUjÆjúZubajÐjâubjçX6) or the user's main drive on a Windows host machine (r[…�r[}r[(jÅX6) or the user's main drive on a Windows host machine (jÆjóZubjÚ)�r[}r[(jÅX**C:\\**jÒ}r[(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóZjÞ]r[jçXC:\r[…�r [}r [(jÅUjÆj[ubajÐjâubjçX). The variable r […�r [}r [(jÅX). The variable jÆjóZubjÚ)�r[}r[(jÅX**IPC_INSTALL_DIR**jÒ}r[(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóZjÞ]r[jçXIPC_INSTALL_DIRr[…�r[}r[(jÅUjÆj[ubajÐjâubjçXz will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.r[…�r[}r[(jÅXz will be used throughout the document. If IPC was installed at a different location, make appropriate changes to commands.jÆjóZubeubajÐjubj{)�r[}r[(jÅX×Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.jÒ}r[(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëZjÞ]rò)�r[}r[(jÅX×Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.r[jÆj[jÎj€ZjÐjõjÒ}r[(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]r [jçX×Some customers find value in archiving the released sources in a configuration management system. This can help in identifying any changes made to the original sources - often useful when updating to newer releases.r![…�r"[}r#[(jÅj[jÆj[ubaubajÐjubejÐjwubaubeubjÇ)�r$[}r%[(jÅUjKjÆjnZjÎj€ZjÐjÑjÒ}r&[(jÔ]r'[Xbuildr([ajÕ]jÖ]j×]r)[Uid58r*[ajÚ]ujÜK0jÝhjÞ]r+[(jà)�r,[}r-[(jÅXBuildr.[jÆj$[jÎj€ZjÐjäjÒ}r/[(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÝhjÞ]r0[jçXBuildr1[…�r2[}r3[(jÅj.[jÆj,[ubaubjò)�r4[}r5[(jÅX÷The IPC product often comes with prebuilt SYS/BIOS-side libraries, so rebuilding them isn't necessary. The QNX-side libraries/binaries may also be provided prebuilt by SDK programs, but the standalone IPC release does not currently pre-build them.r6[jÆj$[jÎj€ZjÐjõjÒ}r7[(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÝhjÞ]r8[jçX÷The IPC product often comes with prebuilt SYS/BIOS-side libraries, so rebuilding them isn't necessary. The QNX-side libraries/binaries may also be provided prebuilt by SDK programs, but the standalone IPC release does not currently pre-build them.r9[…�r:[}r;[(jÅj6[jÆj4[ubaubjò)�r<[}r=[(jÅXhIPC provides GNU makefile(s) to rebuild all its libraries at the base of the product, details are below.r>[jÆj$[jÎj€ZjÐjõjÒ}r?[(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÝhjÞ]r@[jçXhIPC provides GNU makefile(s) to rebuild all its libraries at the base of the product, details are below.rA[…�rB[}rC[(jÅj>[jÆj<[ubaubjë)�rD[}rE[(jÅX¹GNU make version 3.81 or greater is required. The XDC tools (provided with most SDKs and CCS distributions) includes a pre-compiled version of GNU make 3.81 in $(XDC_INSTALL_DIR)/gmake.jÆj$[jÎj€ZjÐjïjÒ}rF[(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rG[jò)�rH[}rI[(jÅX¹GNU make version 3.81 or greater is required. The XDC tools (provided with most SDKs and CCS distributions) includes a pre-compiled version of GNU make 3.81 in $(XDC_INSTALL_DIR)/gmake.rJ[jÆjD[jÎj€ZjÐjõjÒ}rK[(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÞ]rL[jçX¹GNU make version 3.81 or greater is required. The XDC tools (provided with most SDKs and CCS distributions) includes a pre-compiled version of GNU make 3.81 in $(XDC_INSTALL_DIR)/gmake.rM[…�rN[}rO[(jÅjJ[jÆjH[ubaubaubjÇ)�rP[}rQ[(jÅUjKjÆj$[jÎj€ZjÐjÑjÒ}rR[(jÔ]rS[X products.makrT[ajÕ]jÖ]j×]rU[Uid59rV[ajÚ]ujÜK@jÝhjÞ]rW[(jà)�rX[}rY[(jÅX products.makrZ[jÆjP[jÎj€ZjÐjäjÒ}r[[(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÝhjÞ]r\[jçX products.makr][…�r^[}r_[(jÅjZ[jÆjX[ubaubjò)�r`[}ra[(jÅX—IPC contains a **products.mak** file at the root of the product that specifies the necessary paths and options to build IPC for the various OS support.jÆjP[jÎj€ZjÐjõjÒ}rb[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÝhjÞ]rc[(jçXIPC contains a rd[…�re[}rf[(jÅXIPC contains a jÆj`[ubjÚ)�rg[}rh[(jÅX**products.mak**jÒ}ri[(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`[jÞ]rj[jçX products.makrk[…�rl[}rm[(jÅUjÆjg[ubajÐjâubjçXx file at the root of the product that specifies the necessary paths and options to build IPC for the various OS support.rn[…�ro[}rp[(jÅXx file at the root of the product that specifies the necessary paths and options to build IPC for the various OS support.jÆj`[ubeubjò)�rq[}rr[(jÅX6Edit **products.mak** and set the following variables:rs[jÆjP[jÎj€ZjÐjõjÒ}rt[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÝhjÞ]ru[(jçXEdit rv[…�rw[}rx[(jÅXEdit jÆjq[ubjÚ)�ry[}rz[(jÅX**products.mak**jÒ}r{[(jÔ]jÕ]jÖ]j×]jÚ]ujÆjq[jÞ]r|[jçX products.makr}[…�r~[}r[(jÅUjÆjy[ubajÐjâubjçX! and set the following variables:r€[…�r�[}r‚[(jÅX! and set the following variables:jÆjq[ubeubjt)�rƒ[}r„[(jÅUjÆjP[jÎj€ZjÐjwjÒ}r…[(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKHjÝhjÞ]r†[(j{)�r‡[}rˆ[(jÅXáVariables used by both QNX and BIOS - **PLATFORM** - Device to build for - QNX started using this variable in IPC 3.20. Prior releases required setting "DEVICE" for QNX and "PLATFORM" for BIOS. The two variables were consolidated in IPC 3.20. - BIOS started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for **all** supported platforms based on that targets/toolchains set above (which can take a while!) jÆjƒ[jÎNjÐjjÒ}r‰[(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŠ[(jò)�r‹[}rŒ[(jÅX#Variables used by both QNX and BIOSr�[jÆj‡[jÎj€ZjÐjõjÒ}rŽ[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]r�[jçX#Variables used by both QNX and BIOSr�[…�r‘[}r’[(jÅj�[jÆj‹[ubaubjt)�r“[}r”[(jÅUjÒ}r•[(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj‡[jÞ]r–[j{)�r—[}r˜[(jÅX¤**PLATFORM** - Device to build for - QNX started using this variable in IPC 3.20. Prior releases required setting "DEVICE" for QNX and "PLATFORM" for BIOS. The two variables were consolidated in IPC 3.20. - BIOS started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for **all** supported platforms based on that targets/toolchains set above (which can take a while!) jÒ}r™[(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“[jÞ]rš[(jò)�r›[}rœ[(jÅX"**PLATFORM** - Device to build forjÆj—[jÎj€ZjÐjõjÒ}r�[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]rž[(jÚ)�rŸ[}r [(jÅX **PLATFORM**jÒ}r¡[(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›[jÞ]r¢[jçXPLATFORMr£[…�r¤[}r¥[(jÅUjÆjŸ[ubajÐjâubjçX - Device to build forr¦[…�r§[}r¨[(jÅX - Device to build forjÆj›[ubeubjt)�r©[}rª[(jÅUjÒ}r«[(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj—[jÞ]r¬[(j{)�r­[}r®[(jÅX§QNX started using this variable in IPC 3.20. Prior releases required setting "DEVICE" for QNX and "PLATFORM" for BIOS. The two variables were consolidated in IPC 3.20.jÒ}r¯[(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©[jÞ]r°[jò)�r±[}r²[(jÅX§QNX started using this variable in IPC 3.20. Prior releases required setting "DEVICE" for QNX and "PLATFORM" for BIOS. The two variables were consolidated in IPC 3.20.r³[jÆj­[jÎj€ZjÐjõjÒ}r´[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]rµ[jçX§QNX started using this variable in IPC 3.20. Prior releases required setting "DEVICE" for QNX and "PLATFORM" for BIOS. The two variables were consolidated in IPC 3.20.r¶[…�r·[}r¸[(jÅj³[jÆj±[ubaubajÐjubj{)�r¹[}rº[(jÅXÃBIOS started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for **all** supported platforms based on that targets/toolchains set above (which can take a while!) jÒ}r»[(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©[jÞ]r¼[jò)�r½[}r¾[(jÅXÂBIOS started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for **all** supported platforms based on that targets/toolchains set above (which can take a while!)jÆj¹[jÎj€ZjÐjõjÒ}r¿[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÞ]rÀ[(jçXbBIOS started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for rÁ[…�rÂ[}rÃ[(jÅXbBIOS started leveraging this variable in IPC 3.10. Prior releases built BIOS-side executables for jÆj½[ubjÚ)�rÄ[}rÅ[(jÅX**all**jÒ}rÆ[(jÔ]jÕ]jÖ]j×]jÚ]ujÆj½[jÞ]rÇ[jçXallrÈ[…�rÉ[}rÊ[(jÅUjÆjÄ[ubajÐjâubjçXY supported platforms based on that targets/toolchains set above (which can take a while!)rË[…�rÌ[}rÍ[(jÅXY supported platforms based on that targets/toolchains set above (which can take a while!)jÆj½[ubeubajÐjubejÐjwubejÐjubajÐjwubeubj{)�rÎ[}rÏ[(jÅXQNX - **QNX_INSTALL_DIR** - Path to your QNX installation directory. - **DESTDIR** - Path to which target binaries will be exported when running the 'make install' goal. - **DEVICE** - (only required for releases prior to IPC 3.20) Device to build for jÆjƒ[jÎNjÐjjÒ}rÐ[(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÑ[(jò)�rÒ[}rÓ[(jÅXQNXrÔ[jÆjÎ[jÎj€ZjÐjõjÒ}rÕ[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]rÖ[jçXQNXr×[…�rØ[}rÙ[(jÅjÔ[jÆjÒ[ubaubjt)�rÚ[}rÛ[(jÅUjÒ}rÜ[(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjÎ[jÞ]rÝ[(j{)�rÞ[}rß[(jÅX>**QNX_INSTALL_DIR** - Path to your QNX installation directory.rà[jÒ}rá[(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÚ[jÞ]râ[jò)�rã[}rä[(jÅjà[jÆjÞ[jÎj€ZjÐjõjÒ}rå[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]ræ[(jÚ)�rç[}rè[(jÅX**QNX_INSTALL_DIR**jÒ}ré[(jÔ]jÕ]jÖ]j×]jÚ]ujÆjã[jÞ]rê[jçXQNX_INSTALL_DIRrë[…�rì[}rí[(jÅUjÆjç[ubajÐjâubjçX+ - Path to your QNX installation directory.rî[…�rï[}rð[(jÅX+ - Path to your QNX installation directory.jÆjã[ubeubajÐjubj{)�rñ[}rò[(jÅXb**DESTDIR** - Path to which target binaries will be exported when running the 'make install' goal.jÒ}ró[(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÚ[jÞ]rô[jò)�rõ[}rö[(jÅXb**DESTDIR** - Path to which target binaries will be exported when running the 'make install' goal.jÆjñ[jÎj€ZjÐjõjÒ}r÷[(jÔ]jÕ]jÖ]j×]jÚ]ujÜKWjÞ]rø[(jÚ)�rù[}rú[(jÅX **DESTDIR**jÒ}rû[(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ[jÞ]rü[jçXDESTDIRrý[…�rþ[}rÿ[(jÅUjÆjù[ubajÐjâubjçXW - Path to which target binaries will be exported when running the 'make install' goal.r\…�r\}r\(jÅXW - Path to which target binaries will be exported when running the 'make install' goal.jÆjõ[ubeubajÐjubj{)�r\}r\(jÅXP**DEVICE** - (only required for releases prior to IPC 3.20) Device to build for jÒ}r\(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÚ[jÞ]r\jò)�r\}r\(jÅXO**DEVICE** - (only required for releases prior to IPC 3.20) Device to build forjÆj\jÎj€ZjÐjõjÒ}r \(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÞ]r \(jÚ)�r \}r \(jÅX **DEVICE**jÒ}r \(jÔ]jÕ]jÖ]j×]jÚ]ujÆj\jÞ]r\jçXDEVICEr\…�r\}r\(jÅUjÆj \ubajÐjâubjçXE - (only required for releases prior to IPC 3.20) Device to build forr\…�r\}r\(jÅXE - (only required for releases prior to IPC 3.20) Device to build forjÆj\ubeubajÐjubejÐjwubeubj{)�r\}r\(jÅXSYS/BIOS - **XDC_INSTALL_DIR** - Path to TI's XDCTools installation - **BIOS_INSTALL_DIR** - Path to TI's SYS/BIOS installation - **ti.targets.** - Path to TI toolchain for the device. - Set only the variables to the targets your device supports to minimize build time. - **gnu.targets.arm.** - Path to GNU toolchain for the device. - Set only the variables to the targets your device supports to minimize build time. jÆjƒ[jÎNjÐjjÒ}r\(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r\(jò)�r\}r\(jÅXSYS/BIOSr\jÆj\jÎj€ZjÐjõjÒ}r\(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]r\jçXSYS/BIOSr\…�r\}r \(jÅj\jÆj\ubaubjt)�r!\}r"\(jÅUjÒ}r#\(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj\jÞ]r$\(j{)�r%\}r&\(jÅX8**XDC_INSTALL_DIR** - Path to TI's XDCTools installationr'\jÒ}r(\(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!\jÞ]r)\jò)�r*\}r+\(jÅj'\jÆj%\jÎj€ZjÐjõjÒ}r,\(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]r-\(jÚ)�r.\}r/\(jÅX**XDC_INSTALL_DIR**jÒ}r0\(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*\jÞ]r1\jçXXDC_INSTALL_DIRr2\…�r3\}r4\(jÅUjÆj.\ubajÐjâubjçX% - Path to TI's XDCTools installationr5\…�r6\}r7\(jÅX% - Path to TI's XDCTools installationjÆj*\ubeubajÐjubj{)�r8\}r9\(jÅX9**BIOS_INSTALL_DIR** - Path to TI's SYS/BIOS installationr:\jÒ}r;\(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!\jÞ]r<\jò)�r=\}r>\(jÅj:\jÆj8\jÎj€ZjÐjõjÒ}r?\(jÔ]jÕ]jÖ]j×]jÚ]ujÜK_jÞ]r@\(jÚ)�rA\}rB\(jÅX**BIOS_INSTALL_DIR**jÒ}rC\(jÔ]jÕ]jÖ]j×]jÚ]ujÆj=\jÞ]rD\jçXBIOS_INSTALL_DIRrE\…�rF\}rG\(jÅUjÆjA\ubajÐjâubjçX% - Path to TI's SYS/BIOS installationrH\…�rI\}rJ\(jÅX% - Path to TI's SYS/BIOS installationjÆj=\ubeubajÐjubj{)�rK\}rL\(jÅX°**ti.targets.** - Path to TI toolchain for the device. - Set only the variables to the targets your device supports to minimize build time. jÒ}rM\(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!\jÞ]rN\(jò)�rO\}rP\(jÅXU**ti.targets.** - Path to TI toolchain for the device.jÆjK\jÎj€ZjÐjõjÒ}rQ\(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]rR\(jÚ)�rS\}rT\(jÅX.**ti.targets.**jÒ}rU\(jÔ]jÕ]jÖ]j×]jÚ]ujÆjO\jÞ]rV\jçX*ti.targets.rW\…�rX\}rY\(jÅUjÆjS\ubajÐjâubjçX' - Path to TI toolchain for the device.rZ\…�r[\}r\\(jÅX' - Path to TI toolchain for the device.jÆjO\ubeubjt)�r]\}r^\(jÅUjÒ}r_\(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjK\jÞ]r`\j{)�ra\}rb\(jÅXSSet only the variables to the targets your device supports to minimize build time. jÒ}rc\(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]\jÞ]rd\jò)�re\}rf\(jÅXRSet only the variables to the targets your device supports to minimize build time.rg\jÆja\jÎj€ZjÐjõjÒ}rh\(jÔ]jÕ]jÖ]j×]jÚ]ujÜKcjÞ]ri\jçXRSet only the variables to the targets your device supports to minimize build time.rj\…�rk\}rl\(jÅjg\jÆje\ubaubajÐjubajÐjwubejÐjubj{)�rm\}rn\(jÅX¶**gnu.targets.arm.** - Path to GNU toolchain for the device. - Set only the variables to the targets your device supports to minimize build time. jÒ}ro\(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!\jÞ]rp\(jò)�rq\}rr\(jÅX[**gnu.targets.arm.** - Path to GNU toolchain for the device.jÆjm\jÎj€ZjÐjõjÒ}rs\(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÞ]rt\(jÚ)�ru\}rv\(jÅX3**gnu.targets.arm.**jÒ}rw\(jÔ]jÕ]jÖ]j×]jÚ]ujÆjq\jÞ]rx\jçX/gnu.targets.arm.ry\…�rz\}r{\(jÅUjÆju\ubajÐjâubjçX( - Path to GNU toolchain for the device.r|\…�r}\}r~\(jÅX( - Path to GNU toolchain for the device.jÆjq\ubeubjt)�r\}r€\(jÅUjÒ}r�\(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjm\jÞ]r‚\j{)�rƒ\}r„\(jÅXSSet only the variables to the targets your device supports to minimize build time. jÒ}r…\(jÔ]jÕ]jÖ]j×]jÚ]ujÆj\jÞ]r†\jò)�r‡\}rˆ\(jÅXRSet only the variables to the targets your device supports to minimize build time.r‰\jÆjƒ\jÎj€ZjÐjõjÒ}rŠ\(jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÞ]r‹\jçXRSet only the variables to the targets your device supports to minimize build time.rŒ\…�r�\}rŽ\(jÅj‰\jÆj‡\ubaubajÐjubajÐjwubejÐjubejÐjwubeubeubjë)�r�\}r�\(jÅXbThe versions used during validation can be found in the IPC Release Notes provided in the product.jÆjP[jÎj€ZjÐjïjÒ}r‘\(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r’\jò)�r“\}r”\(jÅXbThe versions used during validation can be found in the IPC Release Notes provided in the product.r•\jÆj�\jÎj€ZjÐjõjÒ}r–\(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÞ]r—\jçXbThe versions used during validation can be found in the IPC Release Notes provided in the product.r˜\…�r™\}rš\(jÅj•\jÆj“\ubaubaubjhK)�r›\}rœ\(jÅX ipc-qnx.makr�\jÆjP[jÎj€ZjÐjlKjÒ}rž\(j×]rŸ\U ipc-qnx-makr \ajÖ]jÔ]jÕ]jÚ]r¡\hzaujÜNjÝhjÞ]r¢\jçX ipc-qnx.makr£\…�r¤\}r¥\(jÅj�\jÆj›\ubaubjò)�r¦\}r§\(jÅX—The QNX-side build is performed using QNX makefiles. To build using the components paths set in the **products.mak** file, issue the following command:jÆjP[jÎj€ZjÐjõjÒ}r¨\(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÝhjÞ]r©\(jçXdThe QNX-side build is performed using QNX makefiles. To build using the components paths set in the rª\…�r«\}r¬\(jÅXdThe QNX-side build is performed using QNX makefiles. To build using the components paths set in the jÆj¦\ubjÚ)�r­\}r®\(jÅX**products.mak**jÒ}r¯\(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦\jÞ]r°\jçX products.makr±\…�r²\}r³\(jÅUjÆj­\ubajÐjâubjçX# file, issue the following command:r´\…�rµ\}r¶\(jÅX# file, issue the following command:jÆj¦\ubeubj)�r·\}r¸\(jÅX# make -f ipc-qnx.mak alljÆjP[jÎj€ZjÐjjÒ}r¹\(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM"jÝhjÞ]rº\jçX# make -f ipc-qnx.mak allr»\…�r¼\}r½\(jÅUjÆj·\ubaubeubjÇ)�r¾\}r¿\(jÅUjKjÆj$[jÎj€ZjÐjÑjÒ}rÀ\(jÔ]rÁ\X ipc-bios.makrÂ\ajÕ]jÖ]j×]rÃ\Uid60rÄ\ajÚ]ujÜK|jÝhjÞ]rÅ\(jà)�rÆ\}rÇ\(jÅX ipc-bios.makrÈ\jÆj¾\jÎj€ZjÐjäjÒ}rÉ\(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÝhjÞ]rÊ\jçX ipc-bios.makrË\…�rÌ\}rÍ\(jÅjÈ\jÆjÆ\ubaubjò)�rÎ\}rÏ\(jÅXpThe SYS/BIOS-side IPC is built with a GNU makefile. After editing **products.mak**, issue the following command:jÆj¾\jÎj€ZjÐjõjÒ}rÐ\(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÝhjÞ]rÑ\(jçXBThe SYS/BIOS-side IPC is built with a GNU makefile. After editing rÒ\…�rÓ\}rÔ\(jÅXBThe SYS/BIOS-side IPC is built with a GNU makefile. After editing jÆjÎ\ubjÚ)�rÕ\}rÖ\(jÅX**products.mak**jÒ}r×\(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÎ\jÞ]rØ\jçX products.makrÙ\…�rÚ\}rÛ\(jÅUjÆjÕ\ubajÐjâubjçX, issue the following command:rÜ\…�rÝ\}rÞ\(jÅX, issue the following command:jÆjÎ\ubeubj)�rß\}rà\(jÅX$ make -f ipc-bios.mak alljÆj¾\jÎj€ZjÐjjÒ}rá\(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM,jÝhjÞ]râ\jçX$ make -f ipc-bios.mak allrã\…�rä\}rå\(jÅUjÆjß\ubaubjò)�ræ\}rç\(jÅXLBased on the number of targets you're building for, this may take some time.rè\jÆj¾\jÎj€ZjÐjõjÒ}ré\(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÝhjÞ]rê\jçXLBased on the number of targets you're building for, this may take some time.rë\…�rì\}rí\(jÅjè\jÆjæ\ubaubjò)�rî\}rï\(jÅX **Note for Windows users:** If you are building with a Windows host machine and it has the QNX tools installed, you will instead need to run the following in a separate command prompt window (cmd.exe) to build the SYS/BIOS side outside of the QNX build environment:jÆj¾\jÎj€ZjÐjõjÒ}rð\(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÝhjÞ]rñ\(jÚ)�rò\}ró\(jÅX**Note for Windows users:**jÒ}rô\(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî\jÞ]rõ\jçXNote for Windows users:rö\…�r÷\}rø\(jÅUjÆjò\ubajÐjâubjçXî If you are building with a Windows host machine and it has the QNX tools installed, you will instead need to run the following in a separate command prompt window (cmd.exe) to build the SYS/BIOS side outside of the QNX build environment:rù\…�rú\}rû\(jÅXî If you are building with a Windows host machine and it has the QNX tools installed, you will instead need to run the following in a separate command prompt window (cmd.exe) to build the SYS/BIOS side outside of the QNX build environment:jÆjî\ubeubj)�rü\}rý\(jÅX„ set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem \gmake -f ipc-bios.mak alljÆj¾\jÎj€ZjÐjjÒ}rþ\(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM8jÝhjÞ]rÿ\jçX„ set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem \gmake -f ipc-bios.mak allr]…�r]}r](jÅUjÆjü\ubaubjò)�r]}r](jÅX�where should be replaced with the installation directory of your XDC tools, same as the path you have used in products.mak.r]jÆj¾\jÎj€ZjÐjõjÒ}r](jÔ]jÕ]jÖ]j×]jÚ]ujÜK’jÝhjÞ]r]jçX�where should be replaced with the installation directory of your XDC tools, same as the path you have used in products.mak.r]…�r ]}r ](jÅj]jÆj]ubaubeubeubjÇ)�r ]}r ](jÅUjKjÆjnZjÎj€ZjÐjÑjÒ}r ](jÔ]r]Xrunr]ajÕ]jÖ]j×]r]Uid61r]ajÚ]ujÜK—jÝhjÞ]r](jà)�r]}r](jÅXRunr]jÆj ]jÎj€ZjÐjäjÒ}r](jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÝhjÞ]r]jçXRunr]…�r]}r](jÅj]jÆj]ubaubjò)�r]}r](jÅXThe IPC product provides a way to install (copy) the necessary IPC executables and libraries onto the device's target file-system to simplify the execution of the applications. The details can vary across OS's, so this description has been separated into OS-specific sections.r]jÆj ]jÎj€ZjÐjõjÒ}r](jÔ]jÕ]jÖ]j×]jÚ]ujÜK™jÝhjÞ]r]jçXThe IPC product provides a way to install (copy) the necessary IPC executables and libraries onto the device's target file-system to simplify the execution of the applications. The details can vary across OS's, so this description has been separated into OS-specific sections.r ]…�r!]}r"](jÅj]jÆj]ubaubjÇ)�r#]}r$](jÅUjÆj ]jÎj€ZjÐjÑjÒ}r%](jÔ]jÕ]jÖ]j×]r&]Uconfiguring-the-bspr']ajÚ]r(]j aujÜKŸjÝhjÞ]r)](jà)�r*]}r+](jÅXConfiguring the BSPr,]jÆj#]jÎj€ZjÐjäjÒ}r-](jÔ]jÕ]jÖ]j×]jÚ]ujÜKŸjÝhjÞ]r.]jçXConfiguring the BSPr/]…�r0]}r1](jÅj,]jÆj*]ubaubjò)�r2]}r3](jÅX4Some of the provided IPC tests that use a utility called SharedMemoryAllocator require a carveout to be created in the QNX-owned memory. To reserve this memory, you must make the following change in the file \src\hardware\startup\boards\\build in the QNX BSP. E.g.jÆj#]jÎj€ZjÐjõjÒ}r4](jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÝhjÞ]r5]jçX.Some of the provided IPC tests that use a utility called SharedMemoryAllocator require a carveout to be created in the QNX-owned memory. To reserve this memory, you must make the following change in the file srchardwarestartupboardsbuild in the QNX BSP. E.g.r6]…�r7]}r8](jÅX4Some of the provided IPC tests that use a utility called SharedMemoryAllocator require a carveout to be created in the QNX-owned memory. To reserve this memory, you must make the following change in the file \src\hardware\startup\boards\\build in the QNX BSP. E.g.jÆj2]ubaubj)�r9]}r:](jÅX:startup-omap5432uevm -r 0xBA300000,0x5A00000 -vvvvv -P2 -WjÆj#]jÎj€ZjÐjjÒ}r;](j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMSjÝhjÞ]r<]jçX:startup-omap5432uevm -r 0xBA300000,0x5A00000 -vvvvv -P2 -Wr=]…�r>]}r?](jÅUjÆj9]ubaubjò)�r@]}rA](jÅXhSave the file, then rebuild the QNX OS image (ifs-*.bin) and replace your existing one with the new one.jÆj#]jÎj€ZjÐjõjÒ}rB](jÔ]jÕ]jÖ]j×]jÚ]ujÜK¬jÝhjÞ]rC](jçX2Save the file, then rebuild the QNX OS image (ifs-rD]…�rE]}rF](jÅX2Save the file, then rebuild the QNX OS image (ifs-jÆj@]ubj¸ )�rG]}rH](jÅX*jÒ}rI](j×]rJ]Uid63rK]ajÖ]jÔ]jÕ]jÚ]UrefidUid62rL]ujÆj@]jÞ]rM]jçX*…�rN]}rO](jÅUjÆjG]ubajÐj ubjçX5.bin) and replace your existing one with the new one.rP]…�rQ]}rR](jÅX5.bin) and replace your existing one with the new one.jÆj@]ubeubeubjÇ)�rS]}rT](jÅUjÆj ]jÎj€ZjÐjÑjÒ}rU](jÔ]jÕ]jÖ]j×]rV]Uinstalling-tests-in-qnxrW]ajÚ]rX]h aujÜK°jÝhjÞ]rY](jà)�rZ]}r[](jÅXInstalling Tests in QNXr\]jÆjS]jÎj€ZjÐjäjÒ}r]](jÔ]jÕ]jÖ]j×]jÚ]ujÜK°jÝhjÞ]r^]jçXInstalling Tests in QNXr_]…�r`]}ra](jÅj\]jÆjZ]ubaubjò)�rb]}rc](jÅXÖTo assemble the IPC resource manager, shared libraries and test executables into a directory structure suitable for running on the device's file-system, issue the following command in the IPC_INSTALL_DIR directory:rd]jÆjS]jÎj€ZjÐjõjÒ}re](jÔ]jÕ]jÖ]j×]jÚ]ujÜK²jÝhjÞ]rf]jçXÖTo assemble the IPC resource manager, shared libraries and test executables into a directory structure suitable for running on the device's file-system, issue the following command in the IPC_INSTALL_DIR directory:rg]…�rh]}ri](jÅjd]jÆjb]ubaubj)�rj]}rk](jÅX&buildhost$ make -f ipc-qnx.mak installjÆjS]jÎj€ZjÐjjÒ}rl](j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMbjÝhjÞ]rm]jçX&buildhost$ make -f ipc-qnx.mak installrn]…�ro]}rp](jÅUjÆjj]ubaubjò)�rq]}rr](jÅXThis will install the binaries into the directory specified by DESTDIR in products.mak. It this assumed that DESTDIR is a directory visible to the target filesystem. If not, you should copy its contents to such a location (e.g. onto an SD card that can be accessed by the EVM).rs]jÆjS]jÎj€ZjÐjõjÒ}rt](jÔ]jÕ]jÖ]j×]jÚ]ujÜK»jÝhjÞ]ru]jçXThis will install the binaries into the directory specified by DESTDIR in products.mak. It this assumed that DESTDIR is a directory visible to the target filesystem. If not, you should copy its contents to such a location (e.g. onto an SD card that can be accessed by the EVM).rv]…�rw]}rx](jÅjs]jÆjq]ubaubjò)�ry]}rz](jÅXgWhen building in Windows, some users might get build messages that report a version mismatch in cygwin:r{]jÆjS]jÎj€ZjÐjõjÒ}r|](jÔ]jÕ]jÖ]j×]jÚ]ujÜKÀjÝhjÞ]r}]jçXgWhen building in Windows, some users might get build messages that report a version mismatch in cygwin:r~]…�r]}r€](jÅj{]jÆjy]ubaubj)�r�]}r‚](jÅX}C:/QNX650/host/win32/x86/usr/bin/make -j 1 -Cle.v7 -fMakefile install 1 [main] ? (5984) C:\QNX650\host\win32\x86\usr\photon\bin\find.exe: *** fa tal error - system shared memory version mismatch detected - 0x8A88009C/0x2D1E009C. This problem is probably due to using incompatible versions of the cygwin DLL. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested if you are unable to find another cygwin DLL.jÆjS]jÎj€ZjÐjjÒ}rƒ](j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMnjÝhjÞ]r„]jçX}C:/QNX650/host/win32/x86/usr/bin/make -j 1 -Cle.v7 -fMakefile install 1 [main] ? (5984) C:\QNX650\host\win32\x86\usr\photon\bin\find.exe: *** fa tal error - system shared memory version mismatch detected - 0x8A88009C/0x2D1E009C. This problem is probably due to using incompatible versions of the cygwin DLL. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested if you are unable to find another cygwin DLL.r…]…�r†]}r‡](jÅUjÆj�]ubaubjò)�rˆ]}r‰](jÅXFBased on what we observed the binaries are still exported correctly despite the messages. If you do want to eliminate them, you should replace the file cygwin1.dll in \host\win32\x86\usr\photon\bin with the newest cygwin1.dll you can find on your host machine (do a search on your PC's filesystem in Windows).jÆjS]jÎj€ZjÐjõjÒ}rŠ](jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÝhjÞ]r‹]jçX@Based on what we observed the binaries are still exported correctly despite the messages. If you do want to eliminate them, you should replace the file cygwin1.dll in hostwin32x86usrphotonbin with the newest cygwin1.dll you can find on your host machine (do a search on your PC's filesystem in Windows).rŒ]…�r�]}rŽ](jÅXFBased on what we observed the binaries are still exported correctly despite the messages. If you do want to eliminate them, you should replace the file cygwin1.dll in \host\win32\x86\usr\photon\bin with the newest cygwin1.dll you can find on your host machine (do a search on your PC's filesystem in Windows).jÆjˆ]ubaubjò)�r�]}r�](jÅXHSome of the tests rely on corresponding remote core applications to be run on the slave processor(s). The remote processor's applications are loaded when launching the resource manager. See section `#IPC_resource_manager `__ for details on launching the resource manager.jÆjS]jÎj€ZjÐjõjÒ}r‘](jÔ]jÕ]jÖ]j×]jÚ]ujÜKÖjÝhjÞ]r’](jçXÆSome of the tests rely on corresponding remote core applications to be run on the slave processor(s). The remote processor's applications are loaded when launching the resource manager. See section r“]…�r”]}r•](jÅXÆSome of the tests rely on corresponding remote core applications to be run on the slave processor(s). The remote processor's applications are loaded when launching the resource manager. See section jÆj�]ubjû)�r–]}r—](jÅXS`#IPC_resource_manager `__jÒ}r˜](UnameX#IPC_resource_managerjX7index_Foundational_Components.html#ipc-resource-managerj×]jÖ]jÔ]jÕ]jÚ]ujÆj�]jÞ]r™]jçX#IPC_resource_managerrš]…�r›]}rœ](jÅUjÆj–]ubajÐjÿubjçX/ for details on launching the resource manager.r�]…�rž]}rŸ](jÅX/ for details on launching the resource manager.jÆj�]ubeubjò)�r ]}r¡](jÅX[The location of the remote core applications within the IPC product varies based on device.r¢]jÆjS]jÎj€ZjÐjõjÒ}r£](jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÝhjÞ]r¤]jçX[The location of the remote core applications within the IPC product varies based on device.r¥]…�r¦]}r§](jÅj¢]jÆj ]ubaubjÇ)�r¨]}r©](jÅUjÆjS]jÎj€ZjÐjÑjÒ}rª](jÔ]jÕ]jÖ]j×]r«]U#installing-remote-core-applicationsr¬]ajÚ]r­]j-aujÜKàjÝhjÞ]r®](jà)�r¯]}r°](jÅX#Installing remote core applicationsr±]jÆj¨]jÎj€ZjÐjäjÒ}r²](jÔ]jÕ]jÖ]j×]jÚ]ujÜKàjÝhjÞ]r³]jçX#Installing remote core applicationsr´]…�rµ]}r¶](jÅj±]jÆj¯]ubaubjò)�r·]}r¸](jÅX…Remote core applications can be found in /packages/ti/ipc/tests/bin/ti_platform__\* directories.jÆj¨]jÎj€ZjÐjõjÒ}r¹](jÔ]jÕ]jÖ]j×]jÚ]ujÜKâjÝhjÞ]rº]jçX„Remote core applications can be found in /packages/ti/ipc/tests/bin/ti_platform__* directories.r»]…�r¼]}r½](jÅX…Remote core applications can be found in /packages/ti/ipc/tests/bin/ti_platform__\* directories.jÆj·]ubaubjò)�r¾]}r¿](jÅX•For example, you can copy the messageq_single.xem4 for OMAP54xx uEVM's IPU onto the device's target filesystem into the **bin** directory as follows:jÆj¨]jÎj€ZjÐjõjÒ}rÀ](jÔ]jÕ]jÖ]j×]jÚ]ujÜKæjÝhjÞ]rÁ](jçXxFor example, you can copy the messageq_single.xem4 for OMAP54xx uEVM's IPU onto the device's target filesystem into the rÂ]…�rÃ]}rÄ](jÅXxFor example, you can copy the messageq_single.xem4 for OMAP54xx uEVM's IPU onto the device's target filesystem into the jÆj¾]ubjÚ)�rÅ]}rÆ](jÅX**bin**jÒ}rÇ](jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾]jÞ]rÈ]jçXbinrÉ]…�rÊ]}rË](jÅUjÆjÅ]ubajÐjâubjçX directory as follows:rÌ]…�rÍ]}rÎ](jÅX directory as follows:jÆj¾]ubeubj)�rÏ]}rÐ](jÅX€buildhost$ copy /packages/ti/ipc/tests/bin/ti_platform_omap54xx_ipu/messageq_single.xem4 /armle-v7/binjÆj¨]jÎj€ZjÐjjÒ}rÑ](j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM•jÝhjÞ]rÒ]jçX€buildhost$ copy /packages/ti/ipc/tests/bin/ti_platform_omap54xx_ipu/messageq_single.xem4 /armle-v7/binrÓ]…�rÔ]}rÕ](jÅUjÆjÏ]ubaubjò)�rÖ]}r×](jÅX 'ti_platform_omap54xx_ipu' indicates the platform is 'omap54xx' and the remote core name is 'IPU'. You only need to copy the binaries relevant to your platform.rØ]jÆj¨]jÎj€ZjÐjõjÒ}rÙ](jÔ]jÕ]jÖ]j×]jÚ]ujÜKîjÝhjÞ]rÚ]jçX 'ti_platform_omap54xx_ipu' indicates the platform is 'omap54xx' and the remote core name is 'IPU'. You only need to copy the binaries relevant to your platform.rÛ]…�rÜ]}rÝ](jÅjØ]jÆjÖ]ubaubeubeubjÇ)�rÞ]}rß](jÅUjÆj ]jÎj€ZjÐjÑjÒ}rà](jÔ]jÕ]jÖ]j×]rá]Uipc-resource-managerrâ]ajÚ]rã]hÆaujÜKójÝhjÞ]rä](jà)�rå]}ræ](jÅXIPC resource managerrç]jÆjÞ]jÎj€ZjÐjäjÒ}rè](jÔ]jÕ]jÖ]j×]jÚ]ujÜKójÝhjÞ]ré]jçXIPC resource managerrê]…�rë]}rì](jÅjç]jÆjå]ubaubjò)�rí]}rî](jÅXdMuch of the functionality of IPC is provided by the resource manager. It can be launched as follows:rï]jÆjÞ]jÎj€ZjÐjõjÒ}rð](jÔ]jÕ]jÖ]j×]jÚ]ujÜKõjÝhjÞ]rñ]jçXdMuch of the functionality of IPC is provided by the resource manager. It can be launched as follows:rò]…�ró]}rô](jÅjï]jÆjí]ubaubj)�rõ]}rö](jÅXütarget# cd /armle-v7/bin target# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/armle-v7/usr/lib target# ipc ...jÆjÞ]jÎj€ZjÐjjÒ}r÷](j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM£jÝhjÞ]rø]jçXütarget# cd /armle-v7/bin target# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/armle-v7/usr/lib target# ipc ...rù]…�rú]}rû](jÅUjÆjõ]ubaubjò)�rü]}rý](jÅX  should correspond to the name of the remote core on which you want the remote executable to be loaded. As a rule of thumb, it is the capitalized version of the core name specified by the name of the directory from which the executable was copied in the `#Installing remote core applications `__ section. For example, if the executable is copied from "ti_platform_omap54xx\_**ipu**/test_omx_ipu_omap5.xem4", then you should load it as follows:jÆjÞ]jÎj€ZjÐjõjÒ}rþ](jÔ]jÕ]jÖ]j×]jÚ]ujÜKþjÝhjÞ]rÿ](jçX should correspond to the name of the remote core on which you want the remote executable to be loaded. As a rule of thumb, it is the capitalized version of the core name specified by the name of the directory from which the executable was copied in the r^…�r^}r^(jÅX should correspond to the name of the remote core on which you want the remote executable to be loaded. As a rule of thumb, it is the capitalized version of the core name specified by the name of the directory from which the executable was copied in the jÆjü]ubjû)�r^}r^(jÅXq`#Installing remote core applications `__jÒ}r^(UnameX$#Installing remote core applicationsjXFindex_Foundational_Components.html#installing-remote-core-applicationsj×]jÖ]jÔ]jÕ]jÚ]ujÆjü]jÞ]r^jçX$#Installing remote core applicationsr^…�r^}r ^(jÅUjÆj^ubajÐjÿubjçX“ section. For example, if the executable is copied from "ti_platform_omap54xx_**ipu**/test_omx_ipu_omap5.xem4", then you should load it as follows:r ^…�r ^}r ^(jÅX” section. For example, if the executable is copied from "ti_platform_omap54xx\_**ipu**/test_omx_ipu_omap5.xem4", then you should load it as follows:jÆjü]ubeubj)�r ^}r^(jÅX'target# ipc IPU test_omx_ipu_omap5.xem4jÆjÞ]jÎj€ZjÐjjÒ}r^(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM²jÝhjÞ]r^jçX'target# ipc IPU test_omx_ipu_omap5.xem4r^…�r^}r^(jÅUjÆj ^ubaubjò)�r^}r^(jÅXThe resource manager will register devices in the pathname space for communicating with the IPC. Communication with the IPC is only possible once the needed devices are registered. The following devices are registered by default when the IPC resource manager is launched:r^jÆjÞ]jÎj€ZjÐjõjÒ}r^(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r^jçXThe resource manager will register devices in the pathname space for communicating with the IPC. Communication with the IPC is only possible once the needed devices are registered. The following devices are registered by default when the IPC resource manager is launched:r^…�r^}r^(jÅj^jÆj^ubaubjy )�r^}r^(jÅUjÆjÞ]jÎj€ZjÐjÔ jÒ}r^(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r^j~ )�r ^}r!^(jÅUjÒ}r"^(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj^jÞ]r#^(jƒ )�r$^}r%^(jÅUjÒ}r&^(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj ^jÞ]jÐj‡ ubjƒ )�r'^}r(^(jÅUjÒ}r)^(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK?ujÆj ^jÞ]jÐj‡ ubj‹ )�r*^}r+^(jÅUjÒ}r,^(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ^jÞ]r-^j� )�r.^}r/^(jÅUjÒ}r0^(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*^jÞ]r1^(j• )�r2^}r3^(jÅUjÒ}r4^(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.^jÞ]r5^jò)�r6^}r7^(jÅXDevicer8^jÆj2^jÎj€ZjÐjõjÒ}r9^(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r:^jçXDevicer;^…�r<^}r=^(jÅj8^jÆj6^ubaubajÐj¢ ubj• )�r>^}r?^(jÅUjÒ}r@^(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.^jÞ]rA^jò)�rB^}rC^(jÅX DescriptionrD^jÆj>^jÎj€ZjÐjõjÒ}rE^(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rF^jçX DescriptionrG^…�rH^}rI^(jÅjD^jÆjB^ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rJ^}rK^(jÅUjÒ}rL^(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ^jÞ]rM^(j� )�rN^}rO^(jÅUjÒ}rP^(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ^jÞ]rQ^(j• )�rR^}rS^(jÅUjÒ}rT^(jÔ]jÕ]jÖ]j×]jÚ]ujÆjN^jÞ]rU^jò)�rV^}rW^(jÅX /dev/tiipcrX^jÆjR^jÎj€ZjÐjõjÒ}rY^(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rZ^jçX /dev/tiipcr[^…�r\^}r]^(jÅjX^jÆjV^ubaubajÐj¢ ubj• )�r^^}r_^(jÅUjÒ}r`^(jÔ]jÕ]jÖ]j×]jÚ]ujÆjN^jÞ]ra^jò)�rb^}rc^(jÅX8Provides the "ti-ipc" protocol. Needed by MessageQ APIs.rd^jÆj^^jÎj€ZjÐjõjÒ}re^(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rf^jçX8Provides the "ti-ipc" protocol. Needed by MessageQ APIs.rg^…�rh^}ri^(jÅjd^jÆjb^ubaubajÐj¢ ubejÐj£ ubj� )�rj^}rk^(jÅUjÒ}rl^(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJ^jÞ]rm^(j• )�rn^}ro^(jÅUjÒ}rp^(jÔ]jÕ]jÖ]j×]jÚ]ujÆjj^jÞ]rq^jò)�rr^}rs^(jÅX/dev/ipcrt^jÆjn^jÎj€ZjÐjõjÒ}ru^(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rv^jçX/dev/ipcrw^…�rx^}ry^(jÅjt^jÆjr^ubaubajÐj¢ ubj• )�rz^}r{^(jÅUjÒ}r|^(jÔ]jÕ]jÖ]j×]jÚ]ujÆjj^jÞ]r}^jò)�r~^}r^(jÅX=Provides the HWSpinLock functionality. Needed by GateMP APIs.r€^jÆjz^jÎj€ZjÐjõjÒ}r�^(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r‚^jçX=Provides the HWSpinLock functionality. Needed by GateMP APIs.rƒ^…�r„^}r…^(jÅj€^jÆj~^ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r†^}r‡^(jÅXÏAdditionally, more devices may be registered by the remote core firmware if using the "rpmsg-rpc" protocol. In that case, the name that appears in the pathname space is specified by the remote core firmware.rˆ^jÆjÞ]jÎj€ZjÐjõjÒ}r‰^(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rŠ^jçXÏAdditionally, more devices may be registered by the remote core firmware if using the "rpmsg-rpc" protocol. In that case, the name that appears in the pathname space is specified by the remote core firmware.r‹^…�rŒ^}r�^(jÅjˆ^jÆj†^ubaubjò)�rŽ^}r�^(jÅX„Later, when you are done running applications that use IPC and no longer need the resource manager, it can be terminated as follows:r�^jÆjÞ]jÎj€ZjÐjõjÒ}r‘^(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r’^jçX„Later, when you are done running applications that use IPC and no longer need the resource manager, it can be terminated as follows:r“^…�r”^}r•^(jÅj�^jÆjŽ^ubaubj)�r–^}r—^(jÅXTtarget# cd /armle-v7/bin target# slay ipcjÆjÞ]jÎj€ZjÐjjÒ}r˜^(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÊjÝhjÞ]r™^jçXTtarget# cd /armle-v7/bin target# slay ipcrš^…�r›^}rœ^(jÅUjÆj–^ubaubeubjÇ)�r�^}rž^(jÅUjKjÆj ]jÎj€ZjÐjÑjÒ}rŸ^(jÔ]r ^j¦YajÕ]jÖ]j×]r¡^Uid64r¢^ajÚ]ujÜM%jÝhjÞ]r£^(jà)�r¤^}r¥^(jÅXRunning Test Applicationsr¦^jÆj�^jÎj€ZjÐjäjÒ}r§^(jÔ]jÕ]jÖ]j×]jÚ]ujÜM%jÝhjÞ]r¨^jçXRunning Test Applicationsr©^…�rª^}r«^(jÅj¦^jÆj¤^ubaubjò)�r¬^}r­^(jÅX$The QNX-side of the test applications are already on the target's filesystem in /armle-v7/bin and /armle-v7/bin/tests, assuming the `#Installing Tests in QNX `__ and `#IPC resource manager `__ sections have been followed and that the resource manager has loaded the remote core(s) with the executable corresponding to the test you'd like to run.jÆj�^jÎj€ZjÐjõjÒ}r®^(jÔ]jÕ]jÖ]j×]jÚ]ujÜM'jÝhjÞ]r¯^(jçXÚThe QNX-side of the test applications are already on the target's filesystem in /armle-v7/bin and /armle-v7/bin/tests, assuming the r°^…�r±^}r²^(jÅXÚThe QNX-side of the test applications are already on the target's filesystem in /armle-v7/bin and /armle-v7/bin/tests, assuming the jÆj¬^ubjû)�r³^}r´^(jÅXY`#Installing Tests in QNX `__jÒ}rµ^(UnameX#Installing Tests in QNXjX:index_Foundational_Components.html#installing-tests-in-qnxj×]jÖ]jÔ]jÕ]jÚ]ujÆj¬^jÞ]r¶^jçX#Installing Tests in QNXr·^…�r¸^}r¹^(jÅUjÆj³^ubajÐjÿubjçX and rº^…�r»^}r¼^(jÅX and jÆj¬^ubjû)�r½^}r¾^(jÅXS`#IPC resource manager `__jÒ}r¿^(UnameX#IPC resource managerjX7index_Foundational_Components.html#ipc-resource-managerj×]jÖ]jÔ]jÕ]jÚ]ujÆj¬^jÞ]rÀ^jçX#IPC resource managerrÁ^…�rÂ^}rÃ^(jÅUjÆj½^ubajÐjÿubjçX™ sections have been followed and that the resource manager has loaded the remote core(s) with the executable corresponding to the test you'd like to run.rÄ^…�rÅ^}rÆ^(jÅX™ sections have been followed and that the resource manager has loaded the remote core(s) with the executable corresponding to the test you'd like to run.jÆj¬^ubeubjò)�rÇ^}rÈ^(jÅXITo find out the syntax to use for running the test (say MessageQApp), runrÉ^jÆj�^jÎj€ZjÐjõjÒ}rÊ^(jÔ]jÕ]jÖ]j×]jÚ]ujÜM/jÝhjÞ]rË^jçXITo find out the syntax to use for running the test (say MessageQApp), runrÌ^…�rÍ^}rÎ^(jÅjÉ^jÆjÇ^ubaubj)�rÏ^}rÐ^(jÅXatarget# cd /armle-v7/bin/tests target# use MessageQAppjÆj�^jÎj€ZjÐjjÒ}rÑ^(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÝjÝhjÞ]rÒ^jçXatarget# cd /armle-v7/bin/tests target# use MessageQApprÓ^…�rÔ^}rÕ^(jÅUjÆjÏ^ubaubjò)�rÖ^}r×^(jÅXATo run a test application, execute it on the target's filesystem:rØ^jÆj�^jÎj€ZjÐjõjÒ}rÙ^(jÔ]jÕ]jÖ]j×]jÚ]ujÜM7jÝhjÞ]rÚ^jçXATo run a test application, execute it on the target's filesystem:rÛ^…�rÜ^}rÝ^(jÅjØ^jÆjÖ^ubaubj)�rÞ^}rß^(jÅXbtarget# cd /armle-v7/bin/tests target# ./MessageQApp 10jÆj�^jÎj€ZjÐjjÒ}rà^(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMäjÝhjÞ]rá^jçXbtarget# cd /armle-v7/bin/tests target# ./MessageQApp 10râ^…�rã^}rä^(jÅUjÆjÞ^ubaubjò)�rå^}ræ^(jÅXGHere is a list of the main tests that are available in the IPC product:rç^jÆj�^jÎj€ZjÐjõjÒ}rè^(jÔ]jÕ]jÖ]j×]jÚ]ujÜM>jÝhjÞ]ré^jçXGHere is a list of the main tests that are available in the IPC product:rê^…�rë^}rì^(jÅjç^jÆjå^ubaubjt)�rí^}rî^(jÅUjÆj�^jÎj€ZjÐjwjÒ}rï^(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM@jÝhjÞ]rð^(j{)�rñ^}rò^(jÅX­MessageQApp: Test that creates a single thread that sends messages from host to remote core using MessageQ - messageq_single.x\* need to be loaded by the resource manager jÆjí^jÎNjÐjjÒ}ró^(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rô^(jò)�rõ^}rö^(jÅXjMessageQApp: Test that creates a single thread that sends messages from host to remote core using MessageQr÷^jÆjñ^jÎj€ZjÐjõjÒ}rø^(jÔ]jÕ]jÖ]j×]jÚ]ujÜM@jÞ]rù^jçXjMessageQApp: Test that creates a single thread that sends messages from host to remote core using MessageQrú^…�rû^}rü^(jÅj÷^jÆjõ^ubaubjt)�rý^}rþ^(jÅUjÒ}rÿ^(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjñ^jÞ]r_j{)�r_}r_(jÅX>messageq_single.x\* need to be loaded by the resource manager jÒ}r_(jÔ]jÕ]jÖ]j×]jÚ]ujÆjý^jÞ]r_jò)�r_}r_(jÅX=messageq_single.x\* need to be loaded by the resource managerjÆj_jÎj€ZjÐjõjÒ}r_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMCjÞ]r_jçX<messageq_single.x* need to be loaded by the resource managerr _…�r _}r _(jÅX=messageq_single.x\* need to be loaded by the resource managerjÆj_ubaubajÐjubajÐjwubeubj{)�r _}r _(jÅX¯MessageQMulti: Test that creates multiple threads which send messages from host to remote core using MessageQ - messageq_multi.x\* need to be loaded by the resource manager jÆjí^jÎNjÐjjÒ}r_(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r_(jò)�r_}r_(jÅXmMessageQMulti: Test that creates multiple threads which send messages from host to remote core using MessageQr_jÆj _jÎj€ZjÐjõjÒ}r_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMEjÞ]r_jçXmMessageQMulti: Test that creates multiple threads which send messages from host to remote core using MessageQr_…�r_}r_(jÅj_jÆj_ubaubjt)�r_}r_(jÅUjÒ}r_(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj _jÞ]r_j{)�r_}r_(jÅX=messageq_multi.x\* need to be loaded by the resource manager jÒ}r_(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_jÞ]r_jò)�r _}r!_(jÅX<messageq_multi.x\* need to be loaded by the resource managerjÆj_jÎj€ZjÐjõjÒ}r"_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMHjÞ]r#_jçX;messageq_multi.x* need to be loaded by the resource managerr$_…�r%_}r&_(jÅX<messageq_multi.x\* need to be loaded by the resource managerjÆj _ubaubajÐjubajÐjwubeubj{)�r'_}r(_(jÅXòmmrpc_test: Test that exercises MMRPC - test_omx_ipu_.x\* need to be loaded by the resource manager - Aside from the IPC resource manager, this test also needs the shmemallocator resource manager to be launched beforehand: jÆjí^jÎNjÐjjÒ}r)_(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r*_(jò)�r+_}r,_(jÅX%mmrpc_test: Test that exercises MMRPCr-_jÆj'_jÎj€ZjÐjõjÒ}r._(jÔ]jÕ]jÖ]j×]jÚ]ujÜMJjÞ]r/_jçX%mmrpc_test: Test that exercises MMRPCr0_…�r1_}r2_(jÅj-_jÆj+_ubaubjt)�r3_}r4_(jÅUjÒ}r5_(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj'_jÞ]r6_(j{)�r7_}r8_(jÅXEtest_omx_ipu_.x\* need to be loaded by the resource managerjÒ}r9_(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3_jÞ]r:_jò)�r;_}r<_(jÅXEtest_omx_ipu_.x\* need to be loaded by the resource managerjÆj7_jÎj€ZjÐjõjÒ}r=_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMLjÞ]r>_jçXDtest_omx_ipu_.x* need to be loaded by the resource managerr?_…�r@_}rA_(jÅXEtest_omx_ipu_.x\* need to be loaded by the resource managerjÆj;_ubaubajÐjubj{)�rB_}rC_(jÅXyAside from the IPC resource manager, this test also needs the shmemallocator resource manager to be launched beforehand: jÒ}rD_(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3_jÞ]rE_jò)�rF_}rG_(jÅXxAside from the IPC resource manager, this test also needs the shmemallocator resource manager to be launched beforehand:rH_jÆjB_jÎj€ZjÐjõjÒ}rI_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMNjÞ]rJ_jçXxAside from the IPC resource manager, this test also needs the shmemallocator resource manager to be launched beforehand:rK_…�rL_}rM_(jÅjH_jÆjF_ubaubajÐjubejÐjwubeubeubj)�rN_}rO_(jÅX€target# cd /armle-v7/bin target# shmemallocator target# cd tests target# mmrpc_test 1jÆj�^jÎj€ZjÐjjÒ}rP_(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMüjÝhjÞ]rQ_jçX€target# cd /armle-v7/bin target# shmemallocator target# cd tests target# mmrpc_test 1rR_…�rS_}rT_(jÅUjÆjN_ubaubjhK)�rU_}rV_(jÅXExpected outputrW_jÆj�^jÎj€ZjÐjlKjÒ}rX_(j×]rY_Uexpected-outputrZ_ajÖ]jÔ]jÕ]jÚ]r[_h�aujÜNjÝhjÞ]r\_jçXExpected outputr]_…�r^_}r__(jÅjW_jÆjU_ubaubjò)�r`_}ra_(jÅXeTo give you an idea, the expected output for MessageQApp on the QNX-side should look similar to this:rb_jÆj�^jÎj€ZjÐjõjÒ}rc_(jÔ]jÕ]jÖ]j×]jÚ]ujÜM[jÝhjÞ]rd_jçXeTo give you an idea, the expected output for MessageQApp on the QNX-side should look similar to this:re_…�rf_}rg_(jÅjb_jÆj`_ubaubj)�rh_}ri_(jÅX'Using numLoops: 10; procId : 1 Entered MessageQApp_execute Local MessageQId: 0x1 Remote queueId [0x10000] Exchanging 10 messages with remote processor IPU... MessageQ_get #0 Msg = 0x11c9f0 Exchanged 1 messages with remote processor IPU MessageQ_get #1 Msg = 0x11c9f0 Exchanged 2 messages with remote processor IPU MessageQ_get #2 Msg = 0x11c9f0 ... ... Exchanged 9 messages with remote processor IPU MessageQ_get #9 Msg = 0x11c9f0 Exchanged 10 messages with remote processor IPU Sample application successfully completed! Leaving MessageQApp_executejÆj�^jÎj€ZjÐjjÒ}rj_(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rk_jçX'Using numLoops: 10; procId : 1 Entered MessageQApp_execute Local MessageQId: 0x1 Remote queueId [0x10000] Exchanging 10 messages with remote processor IPU... MessageQ_get #0 Msg = 0x11c9f0 Exchanged 1 messages with remote processor IPU MessageQ_get #1 Msg = 0x11c9f0 Exchanged 2 messages with remote processor IPU MessageQ_get #2 Msg = 0x11c9f0 ... ... Exchanged 9 messages with remote processor IPU MessageQ_get #9 Msg = 0x11c9f0 Exchanged 10 messages with remote processor IPU Sample application successfully completed! Leaving MessageQApp_executerl_…�rm_}rn_(jÅUjÆjh_ubaubjò)�ro_}rp_(jÅXeThe output on the remote processor can be obtained by running the following on the target filesystem:rq_jÆj�^jÎj€ZjÐjõjÒ}rr_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMrjÝhjÞ]rs_jçXeThe output on the remote processor can be obtained by running the following on the target filesystem:rt_…�ru_}rv_(jÅjq_jÆjo_ubaubj)�rw_}rx_(jÅXtarget# cat /dev/ipc-trace/IPUjÆj�^jÎj€ZjÐjjÒ}ry_(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rz_jçXtarget# cat /dev/ipc-trace/IPUr{_…�r|_}r}_(jÅUjÆjw_ubaubjò)�r~_}r_(jÅXHThe expected output on the remote processor should look similar to this:r€_jÆj�^jÎj€ZjÐjõjÒ}r�_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMyjÝhjÞ]r‚_jçXHThe expected output on the remote processor should look similar to this:rƒ_…�r„_}r…_(jÅj€_jÆj~_ubaubj)�r†_}r‡_(jÅX[0][ 0.000] 16 Resource entries at 0x3000 [0][ 0.000] messageq_single.c:main: MultiProc id = 1 [0][ 0.000] [t=0x006c565d] ti.ipc.transports.TransportVirtioSetup: TransportVirtio Setup_attach: remoteProcId: 0 [0][ 0.000] registering rpmsg-proto:rpmsg-proto service on 61 with HOST [0][ 0.000] [t=0x0072625b] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_create: endPt c reated: 61 [0][ 0.000] [t=0x0073e8d9] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_toHost kicked [0][ 0.000] [t=0x00753771] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 0.000] [t=0x0076cb49] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 0.000] Received msg: from: 0x5a, to: 0x35, dataLen: 72 [0][ 0.000] [t=0x007872e9] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53 [0][ 0.000] tsk1Fxn: created MessageQ: SLAVE_CORE0; QueueID: 0x10000 [0][ 0.000] Awaiting sync message from host... [0][ 51.992] [t=0x0c475268] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 51.992] [t=0x0c48eb28] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 51.993] Received msg: from: 0x400, to: 0x3d, dataLen: 176 [0][ 51.993] [t=0x0c4ad220] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 176, from: 1024 [0][ 51.993] [0][ 52.995] [t=0x0c873ded] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 52.996] [t=0x0c88b029] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 52.996] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 52.996] [t=0x0c8a8a87] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 52.996] [0][ 52.996] Received msg from (procId:remoteQueueId): 0x0:0x1 [0][ 52.996] payload: 8 bytes; loops: 10 with printing. [0][ 52.997] [t=0x0c8eab7e] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 52.997] [t=0x0c9031bc] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 52.997] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 52.997] [t=0x0c9208fa] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 52.997] [0][ 52.997] Got msg #0 (40 bytes) from procId 0 [0][ 52.997] Sending msg Id #0 to procId 0 [0][ 52.998] [t=0x0c959f33] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 52.998] [t=0x0c971df7] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 52.998] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 52.998] [t=0x0c98f3e7] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 52.998] [0][ 52.999] Got msg #1 (40 bytes) from procId 0 [0][ 52.999] Sending msg Id #1 to procId 0 [0][ 52.999] [t=0x0c9c7a00] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 52.999] [t=0x0c9df7fc] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 52.999] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 52.999] [t=0x0c9fce5a] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 52.999] [0][ 53.000] Got msg #2 (40 bytes) from procId 0 [0][ 53.000] Sending msg Id #2 to procId 0 [0][ 53.000] [t=0x0ca36e79] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 53.000] [t=0x0ca4ea95] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 53.000] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 53.001] [t=0x0ca6c975] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 53.001] [0][ 53.001] Got msg #3 (40 bytes) from procId 0 [0][ 53.001] Sending msg Id #3 to procId 0 ... ... [0][ 53.007] Got msg #8 (40 bytes) from procId 0 [0][ 53.007] Sending msg Id #8 to procId 0 [0][ 53.007] [t=0x0cccd3d7] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 53.007] [t=0x0cce50ed] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 53.007] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 53.007] [t=0x0cd027bd] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 53.007] [0][ 53.008] Got msg #9 (40 bytes) from procId 0 [0][ 53.008] Sending msg Id #9 to procId 0 [0][ 53.008] Awaiting sync message from host...jÆj�^jÎj€ZjÐjjÒ}rˆ_(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM&jÝhjÞ]r‰_jçX[0][ 0.000] 16 Resource entries at 0x3000 [0][ 0.000] messageq_single.c:main: MultiProc id = 1 [0][ 0.000] [t=0x006c565d] ti.ipc.transports.TransportVirtioSetup: TransportVirtio Setup_attach: remoteProcId: 0 [0][ 0.000] registering rpmsg-proto:rpmsg-proto service on 61 with HOST [0][ 0.000] [t=0x0072625b] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_create: endPt c reated: 61 [0][ 0.000] [t=0x0073e8d9] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_toHost kicked [0][ 0.000] [t=0x00753771] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 0.000] [t=0x0076cb49] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 0.000] Received msg: from: 0x5a, to: 0x35, dataLen: 72 [0][ 0.000] [t=0x007872e9] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: no object for endpoint: 53 [0][ 0.000] tsk1Fxn: created MessageQ: SLAVE_CORE0; QueueID: 0x10000 [0][ 0.000] Awaiting sync message from host... [0][ 51.992] [t=0x0c475268] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 51.992] [t=0x0c48eb28] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 51.993] Received msg: from: 0x400, to: 0x3d, dataLen: 176 [0][ 51.993] [t=0x0c4ad220] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 176, from: 1024 [0][ 51.993] [0][ 52.995] [t=0x0c873ded] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 52.996] [t=0x0c88b029] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 52.996] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 52.996] [t=0x0c8a8a87] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 52.996] [0][ 52.996] Received msg from (procId:remoteQueueId): 0x0:0x1 [0][ 52.996] payload: 8 bytes; loops: 10 with printing. [0][ 52.997] [t=0x0c8eab7e] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 52.997] [t=0x0c9031bc] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 52.997] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 52.997] [t=0x0c9208fa] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 52.997] [0][ 52.997] Got msg #0 (40 bytes) from procId 0 [0][ 52.997] Sending msg Id #0 to procId 0 [0][ 52.998] [t=0x0c959f33] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 52.998] [t=0x0c971df7] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 52.998] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 52.998] [t=0x0c98f3e7] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 52.998] [0][ 52.999] Got msg #1 (40 bytes) from procId 0 [0][ 52.999] Sending msg Id #1 to procId 0 [0][ 52.999] [t=0x0c9c7a00] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 52.999] [t=0x0c9df7fc] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 52.999] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 52.999] [t=0x0c9fce5a] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 52.999] [0][ 53.000] Got msg #2 (40 bytes) from procId 0 [0][ 53.000] Sending msg Id #2 to procId 0 [0][ 53.000] [t=0x0ca36e79] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 53.000] [t=0x0ca4ea95] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 53.000] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 53.001] [t=0x0ca6c975] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 53.001] [0][ 53.001] Got msg #3 (40 bytes) from procId 0 [0][ 53.001] Sending msg Id #3 to procId 0 ... ... [0][ 53.007] Got msg #8 (40 bytes) from procId 0 [0][ 53.007] Sending msg Id #8 to procId 0 [0][ 53.007] [t=0x0cccd3d7] ti.ipc.rpmsg.MessageQCopy: callback_availBufReady: virt Queue_fromHost kicked [0][ 53.007] [t=0x0cce50ed] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_swiFxn: [0][ 53.007] Received msg: from: 0x406, to: 0x3d, dataLen: 40 [0][ 53.007] [t=0x0cd027bd] ti.ipc.rpmsg.MessageQCopy: MessageQCopy_send: calling c allback with data len: 40, from: 1030 [0][ 53.007] [0][ 53.008] Got msg #9 (40 bytes) from procId 0 [0][ 53.008] Sending msg Id #9 to procId 0 [0][ 53.008] Awaiting sync message from host...rŠ_…�r‹_}rŒ_(jÅUjÆj†_ubaubeubjÇ)�r�_}rŽ_(jÅUjÆj ]jÎj€ZjÐjÑjÒ}r�_(jÔ]jÕ]jÖ]j×]r�_Urunning-standalone-examplesr‘_ajÚ]r’_hìaujÜMÒjÝhjÞ]r“_(jà)�r”_}r•_(jÅXRunning standalone examplesr–_jÆj�_jÎj€ZjÐjäjÒ}r—_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÒjÝhjÞ]r˜_jçXRunning standalone examplesr™_…�rš_}r›_(jÅj–_jÆj”_ubaubjò)�rœ_}r�_(jÅXaOn some platforms, there are standalone examples provided to illustrate how to use specific features in IPC. These standalone examples are designed to be easily rebuilt outside of the IPC product, and represent a good starting point for development. If available, the examples are located in \examples\archive\.jÆj�_jÎj€ZjÐjõjÒ}rž_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÔjÝhjÞ]rŸ_jçX^On some platforms, there are standalone examples provided to illustrate how to use specific features in IPC. These standalone examples are designed to be easily rebuilt outside of the IPC product, and represent a good starting point for development. If available, the examples are located in examplesarchive.r _…�r¡_}r¢_(jÅXaOn some platforms, there are standalone examples provided to illustrate how to use specific features in IPC. These standalone examples are designed to be easily rebuilt outside of the IPC product, and represent a good starting point for development. If available, the examples are located in \examples\archive\.jÆjœ_ubaubjò)�r£_}r¤_(jÅXèTo use the examples, unzip the example you want in a working directory of your choice. Update the products.mak file in the example's directory with the installation locations of the various dependent components. Then build it. E.g.:r¥_jÆj�_jÎj€ZjÐjõjÒ}r¦_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÝhjÞ]r§_jçXèTo use the examples, unzip the example you want in a working directory of your choice. Update the products.mak file in the example's directory with the installation locations of the various dependent components. Then build it. E.g.:r¨_…�r©_}rª_(jÅj¥_jÆj£_ubaubj)�r«_}r¬_(jÅX|buildhost$ unzip ex02_messageq.zip buildhost$ cd ex02_messageq buildhost$ make clean buildhost$ make buildhost$ make installjÆj�_jÎj€ZjÐjjÒ}r­_(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMŠjÝhjÞ]r®_jçX|buildhost$ unzip ex02_messageq.zip buildhost$ cd ex02_messageq buildhost$ make clean buildhost$ make buildhost$ make installr¯_…�r°_}r±_(jÅUjÆj«_ubaubjò)�r²_}r³_(jÅXëThis would produce the host and remote core binaries in an 'install' subdirectory. **Tip**: Alternatively, for convenience, you can also extract and rebuild all examples available for your platform at once with this series of commands:jÆj�_jÎj€ZjÐjõjÒ}r´_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMçjÝhjÞ]rµ_(jçXSThis would produce the host and remote core binaries in an 'install' subdirectory. r¶_…�r·_}r¸_(jÅXSThis would produce the host and remote core binaries in an 'install' subdirectory. jÆj²_ubjÚ)�r¹_}rº_(jÅX**Tip**jÒ}r»_(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²_jÞ]r¼_jçXTipr½_…�r¾_}r¿_(jÅUjÆj¹_ubajÐjâubjçX‘: Alternatively, for convenience, you can also extract and rebuild all examples available for your platform at once with this series of commands:rÀ_…�rÁ_}rÂ_(jÅX‘: Alternatively, for convenience, you can also extract and rebuild all examples available for your platform at once with this series of commands:jÆj²_ubeubj)�rÃ_}rÄ_(jÅXhbuildhost$ cd /examples buildhost$ make extract buildhost$ make buildhost$ make installjÆj�_jÎj€ZjÐjjÒ}rÅ_(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM—jÝhjÞ]rÆ_jçXhbuildhost$ cd /examples buildhost$ make extract buildhost$ make buildhost$ make installrÇ_…�rÈ_}rÉ_(jÅUjÆjÃ_ubaubjò)�rÊ_}rË_(jÅX Next step is to copy the content of the 'install' subdirectory into a location accessible by your target board (e.g. SD card). Run the example on the target using IPC by loading the remote cores like you would with the test applications, then run the example. E.g.:rÌ_jÆj�_jÎj€ZjÐjõjÒ}rÍ_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMójÝhjÞ]rÎ_jçX Next step is to copy the content of the 'install' subdirectory into a location accessible by your target board (e.g. SD card). Run the example on the target using IPC by loading the remote cores like you would with the test applications, then run the example. E.g.:rÏ_…�rÐ_}rÑ_(jÅjÌ_jÆjÊ_ubaubj)�rÒ_}rÓ_(jÅX‘target# ipc IPU ex02_messageq/debug/server_ipu.xem4 DSP ex02_messageq/debug/server_dsp.xe64T target# cd ex02_messageq/debug/ target# app_host IPUjÆj�_jÎj€ZjÐjjÒ}rÔ_(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM£jÝhjÞ]rÕ_jçX‘target# ipc IPU ex02_messageq/debug/server_ipu.xem4 DSP ex02_messageq/debug/server_dsp.xe64T target# cd ex02_messageq/debug/ target# app_host IPUrÖ_…�r×_}rØ_(jÅUjÆjÒ_ubaubeubjÇ)�rÙ_}rÚ_(jÅUjÆj ]jÎj€ZjÐjÑjÒ}rÛ_(jÔ]jÕ]jÖ]j×]rÜ_Uadvanced-topicsrÝ_ajÚ]rÞ_h|aujÜMÿjÝhjÞ]rß_(jà)�rà_}rá_(jÅXAdvanced topicsrâ_jÆjÙ_jÎj€ZjÐjäjÒ}rã_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÿjÝhjÞ]rä_jçXAdvanced topicsrå_…�ræ_}rç_(jÅjâ_jÆjà_ubaubjÇ)�rè_}ré_(jÅUjÆjÙ_jÎj€ZjÐjÑjÒ}rê_(jÔ]jÕ]jÖ]j×]rë_UKload-and-unload-individual-cores-while-ipc-is-running-ipc-3-23-01-and-aboverì_ajÚ]rí_jGaujÜMjÝhjÞ]rî_(jà)�rï_}rð_(jÅXMLoad and unload individual cores while IPC is running (IPC 3.23.01 and above)rñ_jÆjè_jÎj€ZjÐjäjÒ}rò_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]ró_jçXMLoad and unload individual cores while IPC is running (IPC 3.23.01 and above)rô_…�rõ_}rö_(jÅjñ_jÆjï_ubaubjò)�r÷_}rø_(jÅX»In some applications, there may be a need to load or unload cores after the IPC resource manager is already up and running -- e.g. change the DSP executable while keeping the IPU running.rù_jÆjè_jÎj€ZjÐjõjÒ}rú_(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rû_jçX»In some applications, there may be a need to load or unload cores after the IPC resource manager is already up and running -- e.g. change the DSP executable while keeping the IPU running.rü_…�rý_}rþ_(jÅjù_jÆj÷_ubaubjò)�rÿ_}r`(jÅXzIn order to load and start a core with an executable, you can do the following after having launched the resource manager:r`jÆjè_jÎj€ZjÐjõjÒ}r`(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r`jçXzIn order to load and start a core with an executable, you can do the following after having launched the resource manager:r`…�r`}r`(jÅj`jÆjÿ_ubaubj)�r`}r`(jÅXqtarget# echo > /dev/ipc-file/ target# echo 1 > /dev/ipc-state/jÆjè_jÎj€ZjÐjjÒ}r `(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¶jÝhjÞ]r `jçXqtarget# echo > /dev/ipc-file/ target# echo 1 > /dev/ipc-state/r `…�r `}r `(jÅUjÆj`ubaubjò)�r`}r`(jÅX‰The first command sets the filename of an executable to be loaded, and the second command loads and starts the core with that executable.r`jÆjè_jÎj€ZjÐjõjÒ}r`(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r`jçX‰The first command sets the filename of an executable to be loaded, and the second command loads and starts the core with that executable.r`…�r`}r`(jÅj`jÆj`ubaubjò)�r`}r`(jÅX5To stop and unload a core, use the following command:r`jÆjè_jÎj€ZjÐjõjÒ}r`(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r`jçX5To stop and unload a core, use the following command:r`…�r`}r`(jÅj`jÆj`ubaubj)�r`}r`(jÅX+target# echo 0 > /dev/ipc-state/jÆjè_jÎj€ZjÐjjÒ}r `(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÀjÝhjÞ]r!`jçX+target# echo 0 > /dev/ipc-state/r"`…�r#`}r$`(jÅUjÆj`ubaubjò)�r%`}r&`(jÅX:Keep in mind that this simply puts the core into reset. If there is any on-going communication between the given core and the others, it is the responsibility of the user application to clean up and terminate IPC on the slave before unloading a core, thus to avoid causing any memory leaks or communication errors.r'`jÆjè_jÎj€ZjÐjõjÒ}r(`(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r)`jçX:Keep in mind that this simply puts the core into reset. If there is any on-going communication between the given core and the others, it is the responsibility of the user application to clean up and terminate IPC on the slave before unloading a core, thus to avoid causing any memory leaks or communication errors.r*`…�r+`}r,`(jÅj'`jÆj%`ubaubeubjÇ)�r-`}r.`(jÅUjÆjÙ_jÎj€ZjÐjÑjÒ}r/`(jÔ]jÕ]jÖ]j×]r0`U7inspect-the-state-of-a-slave-core-ipc-3-23-01-and-abover1`ajÚ]r2`h›aujÜM jÝhjÞ]r3`(jà)�r4`}r5`(jÅX9Inspect the state of a slave core (IPC 3.23.01 and above)r6`jÆj-`jÎj€ZjÐjäjÒ}r7`(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r8`jçX9Inspect the state of a slave core (IPC 3.23.01 and above)r9`…�r:`}r;`(jÅj6`jÆj4`ubaubjò)�r<`}r=`(jÅXgTo find out the state of a slave core (whether it is running or in reset), issue the following command:r>`jÆj-`jÎj€ZjÐjõjÒ}r?`(jÔ]jÕ]jÖ]j×]jÚ]ujÜM"jÝhjÞ]r@`jçXgTo find out the state of a slave core (whether it is running or in reset), issue the following command:rA`…�rB`}rC`(jÅj>`jÆj<`ubaubj)�rD`}rE`(jÅX&target# cat /dev/ipc-state/jÆj-`jÎj€ZjÐjjÒ}rF`(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÐjÝhjÞ]rG`jçX&target# cat /dev/ipc-state/rH`…�rI`}rJ`(jÅUjÆjD`ubaubeubjÇ)�rK`}rL`(jÅUjÆjÙ_jÎj€ZjÐjÑjÒ}rM`(jÔ]jÕ]jÖ]j×]rN`UtracingrO`ajÚ]rP`jˆaujÜM*jÝhjÞ]rQ`(jà)�rR`}rS`(jÅXTracingrT`jÆjK`jÎj€ZjÐjäjÒ}rU`(jÔ]jÕ]jÖ]j×]jÚ]ujÜM*jÝhjÞ]rV`jçXTracingrW`…�rX`}rY`(jÅjT`jÆjR`ubaubjò)�rZ`}r[`(jÅXÌWhen an issue arises, sometimes it is useful to see the output of internal traces from IPC. This section talks about how to view IPC trace from both the host and the slave cores on the QNX command prompt.r\`jÆjK`jÎj€ZjÐjõjÒ}r]`(jÔ]jÕ]jÖ]j×]jÚ]ujÜM,jÝhjÞ]r^`jçXÌWhen an issue arises, sometimes it is useful to see the output of internal traces from IPC. This section talks about how to view IPC trace from both the host and the slave cores on the QNX command prompt.r_`…�r``}ra`(jÅj\`jÆjZ`ubaubjhK)�rb`}rc`(jÅXHost-side trace outputrd`jÆjK`jÎj€ZjÐjlKjÒ}re`(j×]rf`Uhost-side-trace-outputrg`ajÖ]jÔ]jÕ]jÚ]rh`hlaujÜNjÝhjÞ]ri`jçXHost-side trace outputrj`…�rk`}rl`(jÅjd`jÆjb`ubaubjhK)�rm`}rn`(jÅX2Trace from IPC user libraries (IPC 3.35 and above)ro`jÆjK`jÎj€ZjÐjlKjÒ}rp`(j×]rq`U0trace-from-ipc-user-libraries-ipc-3-35-and-aboverr`ajÖ]jÔ]jÕ]jÚ]rs`jPaujÜNjÝhjÞ]rt`jçX2Trace from IPC user libraries (IPC 3.35 and above)ru`…�rv`}rw`(jÅjo`jÆjm`ubaubjò)�rx`}ry`(jÅX•Trace output from the IPC user libraries is controlled using the environment variable *IPC_DEBUG*, when launching an application that uses IPC. E.g.:jÆjK`jÎj€ZjÐjõjÒ}rz`(jÔ]jÕ]jÖ]j×]jÚ]ujÜM6jÝhjÞ]r{`(jçXVTrace output from the IPC user libraries is controlled using the environment variable r|`…�r}`}r~`(jÅXVTrace output from the IPC user libraries is controlled using the environment variable jÆjx`ubjM)�r`}r€`(jÅX *IPC_DEBUG*jÒ}r�`(jÔ]jÕ]jÖ]j×]jÚ]ujÆjx`jÞ]r‚`jçX IPC_DEBUGrƒ`…�r„`}r…`(jÅUjÆj`ubajÐjUubjçX4, when launching an application that uses IPC. E.g.:r†`…�r‡`}rˆ`(jÅX4, when launching an application that uses IPC. E.g.:jÆjx`ubeubj)�r‰`}rŠ`(jÅX"target# IPC_DEBUG= app_hostjÆjK`jÎj€ZjÐjjÒ}r‹`(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMåjÝhjÞ]rŒ`jçX"target# IPC_DEBUG= app_hostr�`…�rŽ`}r�`(jÅUjÆj‰`ubaubjò)�r�`}r‘`(jÅXSwhere can be set to a value between 1 and 3, with 3 being the most verbose.r’`jÆjK`jÎj€ZjÐjõjÒ}r“`(jÔ]jÕ]jÖ]j×]jÚ]ujÜM>jÝhjÞ]r”`jçXSwhere can be set to a value between 1 and 3, with 3 being the most verbose.r•`…�r–`}r—`(jÅj’`jÆj�`ubaubjhK)�r˜`}r™`(jÅX4Trace from IPC resource manager (IPC 3.35 and above)rš`jÆjK`jÎj€ZjÐjlKjÒ}r›`(j×]rœ`U2trace-from-ipc-resource-manager-ipc-3-35-and-abover�`ajÖ]jÔ]jÕ]jÚ]rž`h�aujÜNjÝhjÞ]rŸ`jçX4Trace from IPC resource manager (IPC 3.35 and above)r `…�r¡`}r¢`(jÅjš`jÆj˜`ubaubjò)�r£`}r¤`(jÅXfTo show the trace output of the IPC resource manager in the QNX system log, run the following command:r¥`jÆjK`jÎj€ZjÐjõjÒ}r¦`(jÔ]jÕ]jÖ]j×]jÚ]ujÜMDjÝhjÞ]r§`jçXfTo show the trace output of the IPC resource manager in the QNX system log, run the following command:r¨`…�r©`}rª`(jÅj¥`jÆj£`ubaubj)�r«`}r¬`(jÅXtarget# sloginfo -m42jÆjK`jÎj€ZjÐjjÒ}r­`(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMòjÝhjÞ]r®`jçXtarget# sloginfo -m42r¯`…�r°`}r±`(jÅUjÆj«`ubaubjò)�r²`}r³`(jÅX‘The verbosity of the trace can be controlled using the environment variable *IPC_DEBUG_SLOG_LEVEL* when launching the IPC resource manager. E.g.:jÆjK`jÎj€ZjÐjõjÒ}r´`(jÔ]jÕ]jÖ]j×]jÚ]ujÜMKjÝhjÞ]rµ`(jçXLThe verbosity of the trace can be controlled using the environment variable r¶`…�r·`}r¸`(jÅXLThe verbosity of the trace can be controlled using the environment variable jÆj²`ubjM)�r¹`}rº`(jÅX*IPC_DEBUG_SLOG_LEVEL*jÒ}r»`(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²`jÞ]r¼`jçXIPC_DEBUG_SLOG_LEVELr½`…�r¾`}r¿`(jÅUjÆj¹`ubajÐjUubjçX/ when launching the IPC resource manager. E.g.:rÀ`…�rÁ`}rÂ`(jÅX/ when launching the IPC resource manager. E.g.:jÆj²`ubeubj)�rÃ`}rÄ`(jÅXRtarget# IPC_DEBUG_SLOG_LEVEL= ipc DSP1 ex02_messageq/debug/server_dsp1.xe66jÆjK`jÎj€ZjÐjjÒ}rÅ`(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMújÝhjÞ]rÆ`jçXRtarget# IPC_DEBUG_SLOG_LEVEL= ipc DSP1 ex02_messageq/debug/server_dsp1.xe66rÇ`…�rÈ`}rÉ`(jÅUjÆjÃ`ubaubjò)�rÊ`}rË`(jÅXkwhere can be set to a value between 0 and 7, with 7 being the most verbose. The default level is 2.rÌ`jÆjK`jÎj€ZjÐjõjÒ}rÍ`(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÝhjÞ]rÎ`jçXkwhere can be set to a value between 0 and 7, with 7 being the most verbose. The default level is 2.rÏ`…�rÐ`}rÑ`(jÅjÌ`jÆjÊ`ubaubjc)�rÒ`}rÓ`(jÅUjÆjK`jÎj€ZjÐjfjÒ}rÔ`(jÔ]jÕ]jÖ]j×]jÚ]ujÜMVjÝhjÞ]rÕ`ji)�rÖ`}r×`(jÅUjlKjÆjÒ`jÎj€ZjÐjÜjÒ}rØ`(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�rÙ`}rÚ`(jÅXSlave-side trace outputrÛ`jÆjK`jÎj€ZjÐjlKjÒ}rÜ`(j×]rÝ`Uslave-side-trace-outputrÞ`ajÖ]jÔ]jÕ]jÚ]rß`hFaujÜNjÝhjÞ]rà`jçXSlave-side trace outputrá`…�râ`}rã`(jÅjÛ`jÆjÙ`ubaubjò)�rä`}rå`(jÅXZTo show all trace output (including IPC's) on a given slave core, simply run the followingræ`jÆjK`jÎj€ZjÐjõjÒ}rç`(jÔ]jÕ]jÖ]j×]jÚ]ujÜM[jÝhjÞ]rè`jçXZTo show all trace output (including IPC's) on a given slave core, simply run the followingré`…�rê`}rë`(jÅjæ`jÆjä`ubaubj)�rì`}rí`(jÅX&target# cat /dev/ipc-trace/jÆjK`jÎj€ZjÐjjÒ}rî`(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rï`jçX&target# cat /dev/ipc-trace/rð`…�rñ`}rò`(jÅUjÆjì`ubaubjò)�ró`}rô`(jÅX‰where corresponds to the name of the slave core which trace output you are interested in (e.g. DSP1, IPU1 or IPU2 for DRA7xx)rõ`jÆjK`jÎj€ZjÐjõjÒ}rö`(jÔ]jÕ]jÖ]j×]jÚ]ujÜMbjÝhjÞ]r÷`jçX‰where corresponds to the name of the slave core which trace output you are interested in (e.g. DSP1, IPU1 or IPU2 for DRA7xx)rø`…�rù`}rú`(jÅjõ`jÆjó`ubaubjò)�rû`}rü`(jÅX�Note that older versions of IPC may use a slightly different path that is based on the MultiProc id of the core of interest: /dev/ipc-trace.rý`jÆjK`jÎj€ZjÐjõjÒ}rþ`(jÔ]jÕ]jÖ]j×]jÚ]ujÜMejÝhjÞ]rÿ`jçX�Note that older versions of IPC may use a slightly different path that is based on the MultiProc id of the core of interest: /dev/ipc-trace.ra…�ra}ra(jÅjý`jÆjû`ubaubeubjÇ)�ra}ra(jÅUjÆjÙ_jÎj€ZjÐjÑjÒ}ra(jÔ]jÕ]jÖ]j×]raUBbuilding-the-ipc-resource-manager-in-debug-mode-ipc-3-35-and-aboveraajÚ]rahaujÜMjjÝhjÞ]r a(jà)�r a}r a(jÅXDBuilding the IPC resource manager in debug mode (IPC 3.35 and above)r ajÆjajÎj€ZjÐjäjÒ}r a(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjjÝhjÞ]rajçXDBuilding the IPC resource manager in debug mode (IPC 3.35 and above)ra…�ra}ra(jÅj ajÆj aubaubjò)�ra}ra(jÅXAWhen debugging an issue, the user may wish to have the ability to step through the source code in the IPC resource manager. For this to happen, the IPC resource manager needs to be built in debug mode with debug symbols. Adding IPC_DEBUG=1 to the file /qnx/Makefile and rebuilding IPC would do the trick:rajÆjajÎj€ZjÐjõjÒ}ra(jÔ]jÕ]jÖ]j×]jÚ]ujÜMljÝhjÞ]rajçXAWhen debugging an issue, the user may wish to have the ability to step through the source code in the IPC resource manager. For this to happen, the IPC resource manager needs to be built in debug mode with debug symbols. Adding IPC_DEBUG=1 to the file /qnx/Makefile and rebuilding IPC would do the trick:ra…�ra}ra(jÅjajÆjaubaubj)�ra}ra(jÅX~ipc3x_dev: utils @cd src/ipc3x_dev; \ make IPC_PLATFORM=$(IPC_PLATFORM) SMP=1 QNX_CFLAGS=$(QNX_CFLAGS) IPC_DEBUG=1jÆjajÎj€ZjÐjjÒ}ra(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]rajçX~ipc3x_dev: utils @cd src/ipc3x_dev; \ make IPC_PLATFORM=$(IPC_PLATFORM) SMP=1 QNX_CFLAGS=$(QNX_CFLAGS) IPC_DEBUG=1ra…�ra}r a(jÅUjÆjaubaubj)�r!a}r"a(jÅXAtarget# make -f ipc-qnx.mak clean target# make -f ipc-qnx.mak alljÆjajÎj€ZjÐjjÒ}r#a(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM#jÝhjÞ]r$ajçXAtarget# make -f ipc-qnx.mak clean target# make -f ipc-qnx.mak allr%a…�r&a}r'a(jÅUjÆj!aubaubeubeubeubjÇ)�r(a}r)a(jÅUjKjÆjnZjÎj€ZjÐjÑjÒ}r*a(jÔ]r+aXsee alsor,aajÕ]jÖ]j×]r-aUid65r.aajÚ]ujÜM~jÝhjÞ]r/a(jà)�r0a}r1a(jÅXSee Alsor2ajÆj(ajÎj€ZjÐjäjÒ}r3a(jÔ]jÕ]jÖ]j×]jÚ]ujÜM~jÝhjÞ]r4ajçXSee Alsor5a…�r6a}r7a(jÅj2ajÆj0aubaubjt)�r8a}r9a(jÅUjÆj(ajÎj€ZjÐjwjÒ}r:a(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM€jÝhjÞ]r;a(j{)�r`__r>ajÆj8ajÎj€ZjÐjjÒ}r?a(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r@ajò)�rAa}rBa(jÅj>ajÆjajÒ}rGa(UnameXIPC 3.xjX*index_Foundational_Components.html#ipc-3-xj×]jÖ]jÔ]jÕ]jÚ]ujÆjAajÞ]rHajçXIPC 3.xrIa…�rJa}rKa(jÅUjÆjEaubajÐjÿubaubaubj{)�rLa}rMa(jÅXG`IPC Users Guide `__rNajÆj8ajÎj€ZjÐjjÒ}rOa(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rPajò)�rQa}rRa(jÅjNajÆjLajÎj€ZjÐjõjÒ}rSa(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]rTajû)�rUa}rVa(jÅjNajÒ}rWa(UnameXIPC Users GuidejX1index_Foundational_Components.html#ipc-user-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjQajÞ]rXajçXIPC Users GuiderYa…�rZa}r[a(jÅUjÆjUaubajÐjÿubaubaubj{)�r\a}r]a(jÅX<`IPC 3.x FAQ `__r^ajÆj8ajÎj€ZjÐjjÒ}r_a(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r`ajò)�raa}rba(jÅj^ajÆj\ajÎj€ZjÐjõjÒ}rca(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‚jÞ]rdajû)�rea}rfa(jÅj^ajÒ}rga(UnameX IPC 3.x FAQjX*index_Foundational_Components.html#ipc-faqj×]jÖ]jÔ]jÕ]jÚ]ujÆjaajÞ]rhajçX IPC 3.x FAQria…�rja}rka(jÅUjÆjeaubajÐjÿubaubaubj{)�rla}rma(jÅXT`IPC Install Guide Linux `__rnajÆj8ajÎj€ZjÐjjÒ}roa(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rpajò)�rqa}rra(jÅjnajÆjlajÎj€ZjÐjõjÒ}rsa(jÔ]jÕ]jÖ]j×]jÚ]ujÜMƒjÞ]rtajû)�rua}rva(jÅjnajÒ}rwa(UnameXIPC Install Guide LinuxjX6index_Foundational_Components.html#linux-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjqajÞ]rxajçXIPC Install Guide Linuxrya…�rza}r{a(jÅUjÆjuaubajÐjÿubaubaubj{)�r|a}r}a(jÅXU`IPC Install Guide BIOS `__ jÆj8ajÎXZinternal padding after source/rtos/PDK_Platform_Software/IPC/IPC_Install_Guide_QNX.rst.incr~ajÐjjÒ}ra(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r€ajò)�r�a}r‚a(jÅXR`IPC Install Guide BIOS `__rƒajÆj|ajÎj€ZjÐjõjÒ}r„a(jÔ]jÕ]jÖ]j×]jÚ]ujÜM„jÞ]r…ajû)�r†a}r‡a(jÅjƒajÒ}rˆa(UnameXIPC Install Guide BIOSjX5index_Foundational_Components.html#bios-install-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj�ajÞ]r‰ajçXIPC Install Guide BIOSrŠa…�r‹a}rŒa(jÅUjÆj†aubajÐjÿubaubaubeubeubeubeubeubjÎjÏjÐjÑjÒ}r�a(jÔ]jÕ]jÖ]j×]rŽaUti-sdo-ipc-packager�aajÚ]r�ahüaujÜK/jÝhjÞ]r‘a(jà)�r’a}r“a(jÅXTI SDO IPC Packager”ajÆjÊjÎjÏjÐjäjÒ}r•a(jÔ]jÕ]jÖ]j×]jÚ]ujÜK/jÝhjÞ]r–ajçXTI SDO IPC Packager—a…�r˜a}r™a(jÅj”ajÆj’aubaubj7)�rša}r›a(jÅXNhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/The_ti.sdo.ipc_PackagejÆjÊjÎj:XDsource/rtos/PDK_Platform_Software/IPC/The_ti.sdo.ipc_Package.rst.incrœa…�r�a}ržabjÐj>jÒ}rŸa(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r ajçXNhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/The_ti.sdo.ipc_Packager¡a…�r¢a}r£a(jÅUjÆjšaubaubjÂ)�r¤a}r¥a(jÅX¶.. |ipcSdoRun_Img1| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/files.html jÆjÊjÎj�ajÐjHjÒ}r¦a(jÔ]jÕ]jÖ]j×]jÚ]r§aXipcSdoRun_Img1r¨aaujÜKjÝhjÞ]r©ajû)�rªa}r«a(jÅj¨ajÒ}r¬a(UrefuriXhhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/files.htmlr­aj×]jÖ]jÔ]jÕ]jÚ]ujÆj¤ajÞ]r®ajR)�r¯a}r°a(jÅX¡Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/files.htmlr±ajÒ}r²a(UuriXrtos/../images/Book_run.pngr³aj×]jÖ]jÔ]jÕ]jX}r´aU*j³asjÚ]Ualtj¨aujÆjªajÞ]jÐjZubajÐjÿubaubjÇ)�rµa}r¶a(jÅUjKjÆjÊjÎj�ajÐjÑjÒ}r·a(jÔ]r¸aX introductionr¹aajÕ]jÖ]j×]rºaU introductionr»aajÚ]ujÜKjÝhjÞ]r¼a(jà)�r½a}r¾a(jÅX Introductionr¿ajÆjµajÎj�ajÐjäjÒ}rÀa(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÁajçX IntroductionrÂa…�rÃa}rÄa(jÅj¿ajÆj½aubaubjò)�rÅa}rÆa(jÅX;This page introduces the modules in the ti.sdo.ipc package.rÇajÆjµajÎj�ajÐjõjÒ}rÈa(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÉajçX;This page introduces the modules in the ti.sdo.ipc package.rÊa…�rËa}rÌa(jÅjÇajÆjÅaubaubjë)�rÍa}rÎa(jÅXíThis package is not used on HLOS-based cores. Although this is a BIOS-only package, note that the BIOS-side of a HLOS<->BIOS IPC-using application will need to bring in a subset of these packages into the BIOS-side configuration scripts.jÆjµajÎj�ajÐjïjÒ}rÏa(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÐajò)�rÑa}rÒa(jÅXíThis package is not used on HLOS-based cores. Although this is a BIOS-only package, note that the BIOS-side of a HLOS<->BIOS IPC-using application will need to bring in a subset of these packages into the BIOS-side configuration scripts.rÓajÆjÍajÎj�ajÐjõjÒ}rÔa(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rÕajçXíThis package is not used on HLOS-based cores. Although this is a BIOS-only package, note that the BIOS-side of a HLOS<->BIOS IPC-using application will need to bring in a subset of these packages into the BIOS-side configuration scripts.rÖa…�r×a}rØa(jÅjÓajÆjÑaubaubaubjò)�rÙa}rÚa(jÅX`The ``ti.sdo.ipc`` package contains the following modules that you may use in your applications:rÛajÆjµajÎj�ajÐjõjÒ}rÜa(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÝa(jçXThe rÞa…�rßa}ràa(jÅXThe jÆjÙaubj )�ráa}râa(jÅX``ti.sdo.ipc``jÒ}rãa(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙajÞ]räajçX ti.sdo.ipcråa…�ræa}rça(jÅUjÆjáaubajÐj¨ubjçXN package contains the following modules that you may use in your applications:rèa…�réa}rêa(jÅXN package contains the following modules that you may use in your applications:jÆjÙaubeubj3)�rëa}rìa(jÅUjÆjµajÎj�ajÐj6jÒ}ría(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rîajy )�rïa}rða(jÅUjÒ}rña(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëajÞ]ròaj~ )�róa}rôa(jÅUjÒ}rõa(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjïajÞ]röa(jƒ )�r÷a}røa(jÅUjÒ}rùa(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjóajÞ]jÐj‡ ubjƒ )�rúa}rûa(jÅUjÒ}rüa(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK$ujÆjóajÞ]jÐj‡ ubjƒ )�rýa}rþa(jÅUjÒ}rÿa(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK"ujÆjóajÞ]jÐj‡ ubj‹ )�rb}rb(jÅUjÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóajÞ]rbj� )�rb}rb(jÅUjÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbjÞ]rb(j• )�rb}r b(jÅUjÒ}r b(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbjÞ]r bjò)�r b}r b(jÅXModulerbjÆjbjÎj�ajÐjõjÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rbjçXModulerb…�rb}rb(jÅjbjÆj bubaubajÐj¢ ubj• )�rb}rb(jÅUjÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbjÞ]rbjò)�rb}rb(jÅX Module PathrbjÆjbjÎj�ajÐjõjÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rbjçX Module Pathrb…�rb}rb(jÅjbjÆjbubaubajÐj¢ ubj• )�r b}r!b(jÅUjÒ}r"b(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbjÞ]r#bjò)�r$b}r%b(jÅX Descriptionr&bjÆj bjÎj�ajÐjõjÒ}r'b(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r(bjçX Descriptionr)b…�r*b}r+b(jÅj&bjÆj$bubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r,b}r-b(jÅUjÒ}r.b(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóajÞ]r/b(j� )�r0b}r1b(jÅUjÒ}r2b(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]r3b(j• )�r4b}r5b(jÅUjÒ}r6b(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0bjÞ]r7bjò)�r8b}r9b(jÅXG`GateMP Module `__r:bjÆj4bjÎj�ajÐjõjÒ}r;b(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rb(jÅj:bjÒ}r?b(UnameX GateMP ModulejX0index_Foundational_Components.html#gatemp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆj8bjÞ]r@bjçX GateMP ModulerAb…�rBb}rCb(jÅUjÆj=bubajÐjÿubaubajÐj¢ ubj• )�rDb}rEb(jÅUjÒ}rFb(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0bjÞ]rGbjò)�rHb}rIb(jÅXGateMPrJbjÆjDbjÎj�ajÐjõjÒ}rKb(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rLbjçXGateMPrMb…�rNb}rOb(jÅjJbjÆjHbubaubajÐj¢ ubj• )�rPb}rQb(jÅUjÒ}rRb(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0bjÞ]rSbjò)�rTb}rUb(jÅX¦Manages gates for mutual exclusion of shared resources by multiple processors and threads. See `GateMP Module `__jÆjPbjÎj�ajÐjõjÒ}rVb(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rWb(jçX_Manages gates for mutual exclusion of shared resources by multiple processors and threads. See rXb…�rYb}rZb(jÅX_Manages gates for mutual exclusion of shared resources by multiple processors and threads. See jÆjTbubjû)�r[b}r\b(jÅXG`GateMP Module `__jÒ}r]b(UnameX GateMP ModulejX0index_Foundational_Components.html#gatemp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjTbjÞ]r^bjçX GateMP Moduler_b…�r`b}rab(jÅUjÆj[bubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�rbb}rcb(jÅUjÒ}rdb(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]reb(j• )�rfb}rgb(jÅUjÒ}rhb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbbjÞ]ribjò)�rjb}rkb(jÅXJ`HeapBufMP Module `__rlbjÆjfbjÎj�ajÐjõjÒ}rmb(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rnbjû)�rob}rpb(jÅjlbjÒ}rqb(UnameXHeapBufMP ModulejX0index_Foundational_Components.html#heapmp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjjbjÞ]rrbjçXHeapBufMP Modulersb…�rtb}rub(jÅUjÆjobubajÐjÿubaubajÐj¢ ubj• )�rvb}rwb(jÅUjÒ}rxb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbbjÞ]rybjò)�rzb}r{b(jÅXti.sdo.ipc.heaps.HeapBufMPr|bjÆjvbjÎj�ajÐjõjÒ}r}b(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r~bjçXti.sdo.ipc.heaps.HeapBufMPrb…�r€b}r�b(jÅj|bjÆjzbubaubajÐj¢ ubj• )�r‚b}rƒb(jÅUjÒ}r„b(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbbjÞ]r…bjò)�r†b}r‡b(jÅXÌFixed-sized shared memory Heaps. Similar to SYS/BIOS's ti.sysbios.heaps.HeapBuf module, but with some configuration differences. See `HeapMP Module `__jÆj‚bjÎj�ajÐjõjÒ}rˆb(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r‰b(jçX…Fixed-sized shared memory Heaps. Similar to SYS/BIOS's ti.sysbios.heaps.HeapBuf module, but with some configuration differences. See rŠb…�r‹b}rŒb(jÅX…Fixed-sized shared memory Heaps. Similar to SYS/BIOS's ti.sysbios.heaps.HeapBuf module, but with some configuration differences. See jÆj†bubjû)�r�b}rŽb(jÅXG`HeapMP Module `__jÒ}r�b(UnameX HeapMP ModulejX0index_Foundational_Components.html#heapmp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆj†bjÞ]r�bjçX HeapMP Moduler‘b…�r’b}r“b(jÅUjÆj�bubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�r”b}r•b(jÅUjÒ}r–b(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]r—b(j• )�r˜b}r™b(jÅUjÒ}ršb(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”bjÞ]r›bjò)�rœb}r�b(jÅXJ`HeapMemMP Module `__ržbjÆj˜bjÎj�ajÐjõjÒ}rŸb(jÔ]jÕ]jÖ]j×]jÚ]ujÜK&jÞ]r bjû)�r¡b}r¢b(jÅjžbjÒ}r£b(UnameXHeapMemMP ModulejX0index_Foundational_Components.html#heapmp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjœbjÞ]r¤bjçXHeapMemMP Moduler¥b…�r¦b}r§b(jÅUjÆj¡bubajÐjÿubaubajÐj¢ ubj• )�r¨b}r©b(jÅUjÒ}rªb(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”bjÞ]r«bjò)�r¬b}r­b(jÅXti.sdo.ipc.heaps.HeapMemMPr®bjÆj¨bjÎj�ajÐjõjÒ}r¯b(jÔ]jÕ]jÖ]j×]jÚ]ujÜK&jÞ]r°bjçXti.sdo.ipc.heaps.HeapMemMPr±b…�r²b}r³b(jÅj®bjÆj¬bubaubajÐj¢ ubj• )�r´b}rµb(jÅUjÒ}r¶b(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”bjÞ]r·bjò)�r¸b}r¹b(jÅXoVariable-sized shared memory Heaps. See `HeapMP Module `__jÆj´bjÎj�ajÐjõjÒ}rºb(jÔ]jÕ]jÖ]j×]jÚ]ujÜK&jÞ]r»b(jçX(Variable-sized shared memory Heaps. See r¼b…�r½b}r¾b(jÅX(Variable-sized shared memory Heaps. See jÆj¸bubjû)�r¿b}rÀb(jÅXG`HeapMP Module `__jÒ}rÁb(UnameX HeapMP ModulejX0index_Foundational_Components.html#heapmp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆj¸bjÞ]rÂbjçX HeapMP ModulerÃb…�rÄb}rÅb(jÅUjÆj¿bubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�rÆb}rÇb(jÅUjÒ}rÈb(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]rÉb(j• )�rÊb}rËb(jÅUjÒ}rÌb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆbjÞ]rÍbjò)�rÎb}rÏb(jÅXN`HeapMultiBufMP Module `__rÐbjÆjÊbjÎj�ajÐjõjÒ}rÑb(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÞ]rÒbjû)�rÓb}rÔb(jÅjÐbjÒ}rÕb(UnameXHeapMultiBufMP ModulejX0index_Foundational_Components.html#heapmp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjÎbjÞ]rÖbjçXHeapMultiBufMP Moduler×b…�rØb}rÙb(jÅUjÆjÓbubajÐjÿubaubajÐj¢ ubj• )�rÚb}rÛb(jÅUjÒ}rÜb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆbjÞ]rÝbjò)�rÞb}rßb(jÅXti.sdo.ipc.heaps.HeapMultiBufMPràbjÆjÚbjÎj�ajÐjõjÒ}ráb(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÞ]râbjçXti.sdo.ipc.heaps.HeapMultiBufMPrãb…�räb}råb(jÅjàbjÆjÞbubaubajÐj¢ ubj• )�ræb}rçb(jÅUjÒ}rèb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆbjÞ]rébjò)�rêb}rëb(jÅXuMultiple fixed-sized shared memory Heaps. See `HeapMP Module `__jÆjæbjÎj�ajÐjõjÒ}rìb(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÞ]ríb(jçX.Multiple fixed-sized shared memory Heaps. See rîb…�rïb}rðb(jÅX.Multiple fixed-sized shared memory Heaps. See jÆjêbubjû)�rñb}ròb(jÅXG`HeapMP Module `__jÒ}rób(UnameX HeapMP ModulejX0index_Foundational_Components.html#heapmp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjêbjÞ]rôbjçX HeapMP Modulerõb…�röb}r÷b(jÅUjÆjñbubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�røb}rùb(jÅUjÒ}rúb(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]rûb(j• )�rüb}rýb(jÅUjÒ}rþb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjøbjÞ]rÿbjò)�rc}rc(jÅXA`Ipc Module `__rcjÆjübjÎj�ajÐjõjÒ}rc(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]rcjû)�rc}rc(jÅjcjÒ}rc(UnameX Ipc ModulejX-index_Foundational_Components.html#ipc-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjcjÞ]rcjçX Ipc Moduler c…�r c}r c(jÅUjÆjcubajÐjÿubaubajÐj¢ ubj• )�r c}r c(jÅUjÒ}rc(jÔ]jÕ]jÖ]j×]jÚ]ujÆjøbjÞ]rcjò)�rc}rc(jÅXti.sdo.ipc.IpcrcjÆj cjÎj�ajÐjõjÒ}rc(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]rcjçXti.sdo.ipc.Ipcrc…�rc}rc(jÅjcjÆjcubaubajÐj¢ ubj• )�rc}rc(jÅUjÒ}rc(jÔ]jÕ]jÖ]j×]jÚ]ujÆjøbjÞ]rcjò)�rc}rc(jÅXŽProvides Ipc_start() function and allows startup sequence configuration. See `IPC Module `__jÆjcjÎj�ajÐjõjÒ}rc(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]rc(jçXMProvides Ipc_start() function and allows startup sequence configuration. See r c…�r!c}r"c(jÅXMProvides Ipc_start() function and allows startup sequence configuration. See jÆjcubjû)�r#c}r$c(jÅXA`IPC Module `__jÒ}r%c(UnameX IPC ModulejX-index_Foundational_Components.html#ipc-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjcjÞ]r&cjçX IPC Moduler'c…�r(c}r)c(jÅUjÆj#cubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�r*c}r+c(jÅUjÒ}r,c(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]r-c(j• )�r.c}r/c(jÅUjÒ}r0c(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*cjÞ]r1cjò)�r2c}r3c(jÅXG`ListMP Module `__r4cjÆj.cjÎj�ajÐjõjÒ}r5c(jÔ]jÕ]jÖ]j×]jÚ]ujÜKc}r?c(jÅUjÒ}r@c(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*cjÞ]rAcjò)�rBc}rCc(jÅXti.sdo.ipc.ListMPrDcjÆj>cjÎj�ajÐjõjÒ}rEc(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`__jÆjJcjÎj�ajÐjõjÒ}rPc(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`__jÒ}rWc(UnameX ListMP ModulejX0index_Foundational_Components.html#listmp-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjNcjÞ]rXcjçX ListMP ModulerYc…�rZc}r[c(jÅUjÆjUcubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�r\c}r]c(jÅUjÒ}r^c(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]r_c(j• )�r`c}rac(jÅUjÒ}rbc(jÔ]jÕ]jÖ]j×]jÚ]ujÆj\cjÞ]rccjò)�rdc}rec(jÅXK`MessageQ Module `__rfcjÆj`cjÎj�ajÐjõjÒ}rgc(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÞ]rhcjû)�ric}rjc(jÅjfcjÒ}rkc(UnameXMessageQ ModulejX2index_Foundational_Components.html#messageq-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjdcjÞ]rlcjçXMessageQ Modulermc…�rnc}roc(jÅUjÆjicubajÐjÿubaubajÐj¢ ubj• )�rpc}rqc(jÅUjÒ}rrc(jÔ]jÕ]jÖ]j×]jÚ]ujÆj\cjÞ]rscjò)�rtc}ruc(jÅXti.sdo.ipc.MessageQrvcjÆjpcjÎj�ajÐjõjÒ}rwc(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÞ]rxcjçXti.sdo.ipc.MessageQryc…�rzc}r{c(jÅjvcjÆjtcubaubajÐj¢ ubj• )�r|c}r}c(jÅUjÒ}r~c(jÔ]jÕ]jÖ]j×]jÚ]ujÆj\cjÞ]rcjò)�r€c}r�c(jÅXoVariable size messaging module. See `MessageQ Module `__jÆj|cjÎj�ajÐjõjÒ}r‚c(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÞ]rƒc(jçX$Variable size messaging module. See r„c…�r…c}r†c(jÅX$Variable size messaging module. See jÆj€cubjû)�r‡c}rˆc(jÅXK`MessageQ Module `__jÒ}r‰c(UnameXMessageQ ModulejX2index_Foundational_Components.html#messageq-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆj€cjÞ]rŠcjçXMessageQ Moduler‹c…�rŒc}r�c(jÅUjÆj‡cubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�rŽc}r�c(jÅUjÒ}r�c(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]r‘c(j• )�r’c}r“c(jÅUjÒ}r”c(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽcjÞ]r•cjò)�r–c}r—c(jÅX TransportShmr˜cjÆj’cjÎj�ajÐjõjÒ}r™c(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]ršcjçX TransportShmr›c…�rœc}r�c(jÅj˜cjÆj–cubaubajÐj¢ ubj• )�ržc}rŸc(jÅUjÒ}r c(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽcjÞ]r¡cjò)�r¢c}r£c(jÅX"ti.sdo.ipc.transports.TransportShmr¤cjÆjžcjÎj�ajÐjõjÒ}r¥c(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]r¦cjçX"ti.sdo.ipc.transports.TransportShmr§c…�r¨c}r©c(jÅj¤cjÆj¢cubaubajÐj¢ ubj• )�rªc}r«c(jÅUjÒ}r¬c(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽcjÞ]r­cjò)�r®c}r¯c(jÅX¬Transport used by MessageQ for remote communication with other processors via shared memory. See `MessageQ Module `__jÆjªcjÎj�ajÐjõjÒ}r°c(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]r±c(jçXaTransport used by MessageQ for remote communication with other processors via shared memory. See r²c…�r³c}r´c(jÅXaTransport used by MessageQ for remote communication with other processors via shared memory. See jÆj®cubjû)�rµc}r¶c(jÅXK`MessageQ Module `__jÒ}r·c(UnameXMessageQ ModulejX2index_Foundational_Components.html#messageq-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆj®cjÞ]r¸cjçXMessageQ Moduler¹c…�rºc}r»c(jÅUjÆjµcubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�r¼c}r½c(jÅUjÒ}r¾c(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]r¿c(j• )�rÀc}rÁc(jÅUjÒ}rÂc(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼cjÞ]rÃcjò)�rÄc}rÅc(jÅXG`Notify Module `__rÆcjÆjÀcjÎj�ajÐjõjÒ}rÇc(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÞ]rÈcjû)�rÉc}rÊc(jÅjÆcjÒ}rËc(UnameX Notify ModulejX0index_Foundational_Components.html#notify-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjÄcjÞ]rÌcjçX Notify ModulerÍc…�rÎc}rÏc(jÅUjÆjÉcubajÐjÿubaubajÐj¢ ubj• )�rÐc}rÑc(jÅUjÒ}rÒc(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼cjÞ]rÓcjò)�rÔc}rÕc(jÅXti.sdo.ipc.NotifyrÖcjÆjÐcjÎj�ajÐjõjÒ}r×c(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÞ]rØcjçXti.sdo.ipc.NotifyrÙc…�rÚc}rÛc(jÅjÖcjÆjÔcubaubajÐj¢ ubj• )�rÜc}rÝc(jÅUjÒ}rÞc(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼cjÞ]rßcjò)�ràc}rác(jÅXsLow-level interrupt mux/demuxer module. See `Notify Module `__jÆjÜcjÎj�ajÐjõjÒ}râc(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÞ]rãc(jçX,Low-level interrupt mux/demuxer module. See räc…�råc}ræc(jÅX,Low-level interrupt mux/demuxer module. See jÆjàcubjû)�rçc}rèc(jÅXG`Notify Module `__jÒ}réc(UnameX Notify ModulejX0index_Foundational_Components.html#notify-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjàcjÞ]rêcjçX Notify Modulerëc…�rìc}ríc(jÅUjÆjçcubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�rîc}rïc(jÅUjÒ}rðc(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]rñc(j• )�ròc}róc(jÅUjÒ}rôc(jÔ]jÕ]jÖ]j×]jÚ]ujÆjîcjÞ]rõcjò)�röc}r÷c(jÅXNotifyDriverShmrøcjÆjòcjÎj�ajÐjõjÒ}rùc(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]rúcjçXNotifyDriverShmrûc…�rüc}rýc(jÅjøcjÆjöcubaubajÐj¢ ubj• )�rþc}rÿc(jÅUjÒ}rd(jÔ]jÕ]jÖ]j×]jÚ]ujÆjîcjÞ]rdjò)�rd}rd(jÅX)ti.sdo.ipc.notifyDrivers. NotifyDriverShmrdjÆjþcjÎj�ajÐjõjÒ}rd(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]rdjçX)ti.sdo.ipc.notifyDrivers. NotifyDriverShmrd…�rd}r d(jÅjdjÆjdubaubajÐj¢ ubj• )�r d}r d(jÅUjÒ}r d(jÔ]jÕ]jÖ]j×]jÚ]ujÆjîcjÞ]r djò)�rd}rd(jÅX´Shared memory notification driver used by the Notify module to communicate between a pair of processors. See `Notify Module `__jÆj djÎj�ajÐjõjÒ}rd(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]rd(jçXmShared memory notification driver used by the Notify module to communicate between a pair of processors. See rd…�rd}rd(jÅXmShared memory notification driver used by the Notify module to communicate between a pair of processors. See jÆjdubjû)�rd}rd(jÅXG`Notify Module `__jÒ}rd(UnameX Notify ModulejX0index_Foundational_Components.html#notify-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆjdjÞ]rdjçX Notify Modulerd…�rd}rd(jÅUjÆjdubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�rd}rd(jÅUjÒ}rd(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,bjÞ]rd(j• )�r d}r!d(jÅUjÒ}r"d(jÔ]jÕ]jÖ]j×]jÚ]ujÆjdjÞ]r#djò)�r$d}r%d(jÅXT`SharedRegion Module `__r&djÆj djÎj�ajÐjõjÒ}r'd(jÔ]jÕ]jÖ]j×]jÚ]ujÜKejÞ]r(djû)�r)d}r*d(jÅj&djÒ}r+d(UnameXSharedRegion ModulejX7index_Foundational_Components.html#shared-region-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆj$djÞ]r,djçXSharedRegion Moduler-d…�r.d}r/d(jÅUjÆj)dubajÐjÿubaubajÐj¢ ubj• )�r0d}r1d(jÅUjÒ}r2d(jÔ]jÕ]jÖ]j×]jÚ]ujÆjdjÞ]r3djò)�r4d}r5d(jÅXti.sdo.ipc.SharedRegionr6djÆj0djÎj�ajÐjõjÒ}r7d(jÔ]jÕ]jÖ]j×]jÚ]ujÜKejÞ]r8djçXti.sdo.ipc.SharedRegionr9d…�r:d}r;d(jÅj6djÆj4dubaubajÐj¢ ubj• )�rd(jÔ]jÕ]jÖ]j×]jÚ]ujÆjdjÞ]r?djò)�r@d}rAd(jÅX�Maintains shared memory for multiple shared regions. See `SharedRegion Module `__jÆj`__jÒ}rId(UnameXSharedRegion ModulejX7index_Foundational_Components.html#shared-region-modulej×]jÖ]jÔ]jÕ]jÚ]ujÆj@djÞ]rJdjçXSharedRegion ModulerKd…�rLd}rMd(jÅUjÆjGdubajÐjÿubeubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubajÐjÔ ubaubjò)�rNd}rOd(jÅX¸Additional modules in the subfolders of the ti.sdo.ipc package contain specific implementations of gates, heaps, notify drivers, transports, and various device family-specific modules.rPdjÆjµajÎj�ajÐjõjÒ}rQd(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÝhjÞ]rRdjçX¸Additional modules in the subfolders of the ti.sdo.ipc package contain specific implementations of gates, heaps, notify drivers, transports, and various device family-specific modules.rSd…�rTd}rUd(jÅjPdjÆjNdubaubjò)�rVd}rWd(jÅXwIn addition, the ti.sdo.ipc package defines the following interfaces that you may implement as your own custom modules:rXdjÆjµajÎj�ajÐjõjÒ}rYd(jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÝhjÞ]rZdjçXwIn addition, the ti.sdo.ipc package defines the following interfaces that you may implement as your own custom modules:r[d…�r\d}r]d(jÅjXdjÆjVdubaubj3)�r^d}r_d(jÅUjÆjµajÎj�ajÐj6jÒ}r`d(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]radjy )�rbd}rcd(jÅUjÒ}rdd(jÔ]jÕ]jÖ]j×]jÚ]ujÆj^djÞ]redj~ )�rfd}rgd(jÅUjÒ}rhd(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjbdjÞ]rid(jƒ )�rjd}rkd(jÅUjÒ}rld(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjfdjÞ]jÐj‡ ubjƒ )�rmd}rnd(jÅUjÒ}rod(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK*ujÆjfdjÞ]jÐj‡ ubj‹ )�rpd}rqd(jÅUjÒ}rrd(jÔ]jÕ]jÖ]j×]jÚ]ujÆjfdjÞ]rsdj� )�rtd}rud(jÅUjÒ}rvd(jÔ]jÕ]jÖ]j×]jÚ]ujÆjpdjÞ]rwd(j• )�rxd}ryd(jÅUjÒ}rzd(jÔ]jÕ]jÖ]j×]jÚ]ujÆjtdjÞ]r{djò)�r|d}r}d(jÅXModuler~djÆjxdjÎj�ajÐjõjÒ}rd(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÞ]r€djçXModuler�d…�r‚d}rƒd(jÅj~djÆj|dubaubajÐj¢ ubj• )�r„d}r…d(jÅUjÒ}r†d(jÔ]jÕ]jÖ]j×]jÚ]ujÆjtdjÞ]r‡djò)�rˆd}r‰d(jÅX Module PathrŠdjÆj„djÎj�ajÐjõjÒ}r‹d(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÞ]rŒdjçX Module Pathr�d…�rŽd}r�d(jÅjŠdjÆjˆdubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r�d}r‘d(jÅUjÒ}r’d(jÔ]jÕ]jÖ]j×]jÚ]ujÆjfdjÞ]r“d(j� )�r”d}r•d(jÅUjÒ}r–d(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�djÞ]r—d(j• )�r˜d}r™d(jÅUjÒ}ršd(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”djÞ]r›djò)�rœd}r�d(jÅXIGateMPSupportrždjÆj˜djÎj�ajÐjõjÒ}rŸd(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÞ]r djçXIGateMPSupportr¡d…�r¢d}r£d(jÅjždjÆjœdubaubajÐj¢ ubj• )�r¤d}r¥d(jÅUjÒ}r¦d(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”djÞ]r§djò)�r¨d}r©d(jÅX$ti.sdo.ipc.interfaces.IGateMPSupportrªdjÆj¤djÎj�ajÐjõjÒ}r«d(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÞ]r¬djçX$ti.sdo.ipc.interfaces.IGateMPSupportr­d…�r®d}r¯d(jÅjªdjÆj¨dubaubajÐj¢ ubejÐj£ ubj� )�r°d}r±d(jÅUjÒ}r²d(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�djÞ]r³d(j• )�r´d}rµd(jÅUjÒ}r¶d(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°djÞ]r·djò)�r¸d}r¹d(jÅX IInterruptrºdjÆj´djÎj�ajÐjõjÒ}r»d(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]r¼djçX IInterruptr½d…�r¾d}r¿d(jÅjºdjÆj¸dubaubajÐj¢ ubj• )�rÀd}rÁd(jÅUjÒ}rÂd(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°djÞ]rÃdjò)�rÄd}rÅd(jÅX#ti.sdo.ipc.notifyDrivers.IInterruptrÆdjÆjÀdjÎj�ajÐjõjÒ}rÇd(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]rÈdjçX#ti.sdo.ipc.notifyDrivers.IInterruptrÉd…�rÊd}rËd(jÅjÆdjÆjÄdubaubajÐj¢ ubejÐj£ ubj� )�rÌd}rÍd(jÅUjÒ}rÎd(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�djÞ]rÏd(j• )�rÐd}rÑd(jÅUjÒ}rÒd(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÌdjÞ]rÓdjò)�rÔd}rÕd(jÅXIMessageQTransportrÖdjÆjÐdjÎj�ajÐjõjÒ}r×d(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÞ]rØdjçXIMessageQTransportrÙd…�rÚd}rÛd(jÅjÖdjÆjÔdubaubajÐj¢ ubj• )�rÜd}rÝd(jÅUjÒ}rÞd(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÌdjÞ]rßdjò)�ràd}rád(jÅX(ti.sdo.ipc.interfaces.IMessageQTransportrâdjÆjÜdjÎj�ajÐjõjÒ}rãd(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÞ]rädjçX(ti.sdo.ipc.interfaces.IMessageQTransportråd…�ræd}rçd(jÅjâdjÆjàdubaubajÐj¢ ubejÐj£ ubj� )�rèd}réd(jÅUjÒ}rêd(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�djÞ]rëd(j• )�rìd}ríd(jÅUjÒ}rîd(jÔ]jÕ]jÖ]j×]jÚ]ujÆjèdjÞ]rïdjò)�rðd}rñd(jÅX INotifyDriverròdjÆjìdjÎj�ajÐjõjÒ}ród(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÞ]rôdjçX INotifyDriverrõd…�röd}r÷d(jÅjòdjÆjðdubaubajÐj¢ ubj• )�rød}rùd(jÅUjÒ}rúd(jÔ]jÕ]jÖ]j×]jÚ]ujÆjèdjÞ]rûdjò)�rüd}rýd(jÅX#ti.sdo.ipc.interfaces.INotifyDriverrþdjÆjødjÎj�ajÐjõjÒ}rÿd(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÞ]rejçX#ti.sdo.ipc.interfaces.INotifyDriverre…�re}re(jÅjþdjÆjüdubaubajÐj¢ ubejÐj£ ubj� )�re}re(jÅUjÒ}re(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�djÞ]re(j• )�re}r e(jÅUjÒ}r e(jÔ]jÕ]jÖ]j×]jÚ]ujÆjejÞ]r ejò)�r e}r e(jÅX INotifySetuprejÆjejÎj�ajÐjõjÒ}re(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]rejçX INotifySetupre…�re}re(jÅjejÆj eubaubajÐj¢ ubj• )�re}re(jÅUjÒ}re(jÔ]jÕ]jÖ]j×]jÚ]ujÆjejÞ]rejò)�re}re(jÅX"ti.sdo.ipc.interfaces.INotifySetuprejÆjejÎj�ajÐjõjÒ}re(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]rejçX"ti.sdo.ipc.interfaces.INotifySetupre…�re}re(jÅjejÆjeubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubajÐjÔ ubaubjò)�r e}r!e(jÅXxThe ``/packages/ti/sdo/ipc`` directory contains the following packages that you may need to know about:r"ejÆjµajÎj�ajÐjõjÒ}r#e(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÝhjÞ]r$e(jçXThe r%e…�r&e}r'e(jÅXThe jÆj eubj )�r(e}r)e(jÅX)``/packages/ti/sdo/ipc``jÒ}r*e(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ejÞ]r+ejçX%/packages/ti/sdo/ipcr,e…�r-e}r.e(jÅUjÆj(eubajÐj¨ubjçXK directory contains the following packages that you may need to know about:r/e…�r0e}r1e(jÅXK directory contains the following packages that you may need to know about:jÆj eubeubj3)�r2e}r3e(jÅUjÆjµajÎNjÐj6jÒ}r4e(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r5ejt)�r6e}r7e(jÅUjÒ}r8e(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj2ejÞ]r9e(j{)�r:e}r;e(jÅX **examples.** Contains examples.rejò)�r?e}r@e(jÅj/packages/ti/ipc/``. These header files offer a common API for both SYS/BIOS and HLOS users of IPC.jÆj¾ejÎj�ajÐjõjÒ}rÏe(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rÐe(jçX€BIOS applications that use modules in the ti.sdo.ipc or ti.sdo.utils package should include the common header files provided in rÑe…�rÒe}rÓe(jÅX€BIOS applications that use modules in the ti.sdo.ipc or ti.sdo.utils package should include the common header files provided in jÆjÍeubj )�rÔe}rÕe(jÅX&``/packages/ti/ipc/``jÒ}rÖe(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÍejÞ]r×ejçX"/packages/ti/ipc/rØe…�rÙe}rÚe(jÅUjÆjÔeubajÐj¨ubjçXP. These header files offer a common API for both SYS/BIOS and HLOS users of IPC.rÛe…�rÜe}rÝe(jÅXP. These header files offer a common API for both SYS/BIOS and HLOS users of IPC.jÆjÍeubeubjò)�rÞe}rße(jÅXÌThe following example C code includes header files applications may need to use. Depending on the APIs used in your application code, you may need to include different XDC, IPC, and SYS/BIOS header files.ràejÆj¾ejÎj�ajÐjõjÒ}ráe(jÔ]jÕ]jÖ]j×]jÚ]ujÜK’jÝhjÞ]râejçXÌThe following example C code includes header files applications may need to use. Depending on the APIs used in your application code, you may need to include different XDC, IPC, and SYS/BIOS header files.rãe…�räe}råe(jÅjàejÆjÞeubaubj)�ræe}rçe(jÅX#include #include /* ---- XDC.RUNTIME module Headers */ #include #include #include /* ----- IPC module Headers */ #include #include #include #include #include /* ---- BIOS6 module Headers */ #include #include /* ---- Get globals from .cfg Header */ #include jÆj¾ejÎj�ajÐjjÒ}rèe(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMåjÝhjÞ]réejçX#include #include /* ---- XDC.RUNTIME module Headers */ #include #include #include /* ----- IPC module Headers */ #include #include #include #include #include /* ---- BIOS6 module Headers */ #include #include /* ---- Get globals from .cfg Header */ #include rêe…�rëe}rìe(jÅUjÆjæeubaubjò)�ríe}rîe(jÅX®Note that the appropriate include file location has changed from previous versions of IPC. The XDCtools-generated header files are still available in ``/packages/ti/sdo/ipc/``, but these should not directly be included in runtime .c code. You should search your applications for "ti/sdo/ipc" and "ti/sdo/utils" and change the header file references found as needed. Additional changes to API calls will be needed.jÆj¾ejÎj�ajÐjõjÒ}rïe(jÔ]jÕ]jÖ]j×]jÚ]ujÜK®jÝhjÞ]rðe(jçX–Note that the appropriate include file location has changed from previous versions of IPC. The XDCtools-generated header files are still available in rñe…�ròe}róe(jÅX–Note that the appropriate include file location has changed from previous versions of IPC. The XDCtools-generated header files are still available in jÆjíeubj )�rôe}rõe(jÅX*``/packages/ti/sdo/ipc/``jÒ}röe(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíejÞ]r÷ejçX&/packages/ti/sdo/ipc/røe…�rùe}rúe(jÅUjÆjôeubajÐj¨ubjçXî, but these should not directly be included in runtime .c code. You should search your applications for "ti/sdo/ipc" and "ti/sdo/utils" and change the header file references found as needed. Additional changes to API calls will be needed.rûe…�rüe}rýe(jÅXî, but these should not directly be included in runtime .c code. You should search your applications for "ti/sdo/ipc" and "ti/sdo/utils" and change the header file references found as needed. Additional changes to API calls will be needed.jÆjíeubeubjò)�rþe}rÿe(jÅXT|ipcSdoRun_Img1| Documentation for all common-header APIs is provided in Doxygen format in your IPC installation at ``/docs/doxygen/html/index.html``. The latest version of that documentation is available `online `__.jÆj¾ejÎj�ajÐjõjÒ}rf(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¶jÝhjÞ]rf(jû)�rf}rf(jÅj¨ajÆjþejÎNjÐjÿjÒ}rf(Urefurij­aj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]rfjR)�rf}rf(jÅj±ajÆjfjÎNjÐjZjÒ}rf(UuriXrtos/../images/Book_run.pngr fj×]jÖ]jÔ]jÕ]jX}r fU*j fsjÚ]Ualtj¨aujÜNjÞ]ubaubjçXd Documentation for all common-header APIs is provided in Doxygen format in your IPC installation at r f…�r f}r f(jÅXd Documentation for all common-header APIs is provided in Doxygen format in your IPC installation at jÆjþeubj )�rf}rf(jÅX2``/docs/doxygen/html/index.html``jÒ}rf(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþejÞ]rfjçX./docs/doxygen/html/index.htmlrf…�rf}rf(jÅUjÆjfubajÐj¨ubjçX8. The latest version of that documentation is available rf…�rf}rf(jÅX8. The latest version of that documentation is available jÆjþeubjû)�rf}rf(jÅXu`online `__jÒ}rf(UnameXonlinejXhhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/files.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆjþejÞ]rfjçXonlinerf…�rf}rf(jÅUjÆjfubajÐjÿubjçX.…�rf}r f(jÅX.jÆjþeubeubeubjÇ)�r!f}r"f(jÅUjÆjµajÎj�ajÐjÑjÒ}r#f(jÔ]jÕ]jÖ]j×]r$fU#standard-ipc-function-call-sequencer%fajÚ]r&fhaujÜK¾jÝhjÞ]r'f(jà)�r(f}r)f(jÅX#Standard IPC Function Call Sequencer*fjÆj!fjÎj�ajÐjäjÒ}r+f(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¾jÝhjÞ]r,fjçX#Standard IPC Function Call Sequencer-f…�r.f}r/f(jÅj*fjÆj(fubaubjò)�r0f}r1f(jÅXvFor instance-based modules in IPC, the standard IPC methodology when creating object dynamically (that is, in C code) is to have the creator thread first initialize a *MODULE*\ \_Params structure to its default values via a *MODULE*\ \_Params_init() function. The creator thread can then set individual parameter fields in this structure as needed. After setting up the *MODULE*\ \_Params structure, the creator thread calls the *MODULE*\ \_create() function to creates the instance and initializes any shared memory used by the instance. If the instance is to be opened remotely, a unique name must be supplied in the parameters.jÆj!fjÎj�ajÐjõjÒ}r2f(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÀjÝhjÞ]r3f(jçX§For instance-based modules in IPC, the standard IPC methodology when creating object dynamically (that is, in C code) is to have the creator thread first initialize a r4f…�r5f}r6f(jÅX§For instance-based modules in IPC, the standard IPC methodology when creating object dynamically (that is, in C code) is to have the creator thread first initialize a jÆj0fubjM)�r7f}r8f(jÅX*MODULE*jÒ}r9f(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0fjÞ]r:fjçXMODULEr;f…�rf…�r?f}r@f(jÅX1\ \_Params structure to its default values via a jÆj0fubjM)�rAf}rBf(jÅX*MODULE*jÒ}rCf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0fjÞ]rDfjçXMODULErEf…�rFf}rGf(jÅUjÆjAfubajÐjUubjçX‡_Params_init() function. The creator thread can then set individual parameter fields in this structure as needed. After setting up the rHf…�rIf}rJf(jÅXŠ\ \_Params_init() function. The creator thread can then set individual parameter fields in this structure as needed. After setting up the jÆj0fubjM)�rKf}rLf(jÅX*MODULE*jÒ}rMf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0fjÞ]rNfjçXMODULErOf…�rPf}rQf(jÅUjÆjKfubajÐjUubjçX0_Params structure, the creator thread calls the rRf…�rSf}rTf(jÅX3\ \_Params structure, the creator thread calls the jÆj0fubjM)�rUf}rVf(jÅX*MODULE*jÒ}rWf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0fjÞ]rXfjçXMODULErYf…�rZf}r[f(jÅUjÆjUfubajÐjUubjçX¾_create() function to creates the instance and initializes any shared memory used by the instance. If the instance is to be opened remotely, a unique name must be supplied in the parameters.r\f…�r]f}r^f(jÅXÁ\ \_create() function to creates the instance and initializes any shared memory used by the instance. If the instance is to be opened remotely, a unique name must be supplied in the parameters.jÆj0fubeubjò)�r_f}r`f(jÅXÝOther threads can access this instance via the *MODULE\_*\ open() function, which returns a handle with access to the instance. The name that was used for instance creation must be used in the *MODULE*\ \_open() function.jÆj!fjÎj�ajÐjõjÒ}raf(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÊjÝhjÞ]rbf(jçX/Other threads can access this instance via the rcf…�rdf}ref(jÅX/Other threads can access this instance via the jÆj_fubjM)�rff}rgf(jÅX *MODULE\_*jÒ}rhf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_fjÞ]rifjçXMODULE_rjf…�rkf}rlf(jÅUjÆjffubajÐjUubjçX†open() function, which returns a handle with access to the instance. The name that was used for instance creation must be used in the rmf…�rnf}rof(jÅXˆ\ open() function, which returns a handle with access to the instance. The name that was used for instance creation must be used in the jÆj_fubjM)�rpf}rqf(jÅX*MODULE*jÒ}rrf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_fjÞ]rsfjçXMODULErtf…�ruf}rvf(jÅUjÆjpfubajÐjUubjçX_open() function.rwf…�rxf}ryf(jÅX\ \_open() function.jÆj_fubeubjò)�rzf}r{f(jÅXIn most cases, MODULE_open() functions must be called in the context of a Task. This is because the thread running the MODULE_open() function needs to be able to block (to pend on a Semaphore in this case) while waiting for the remote processor to respond. The response from the remote processor triggers a hardware interrupt, which then posts a Semaphore to allow to Task to resume execution. The exception to this rule is that MODULE_open() functions do not need to be able to block when opening an instance on the local processor.r|fjÆj!fjÎj�ajÐjõjÒ}r}f(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÝhjÞ]r~fjçXIn most cases, MODULE_open() functions must be called in the context of a Task. This is because the thread running the MODULE_open() function needs to be able to block (to pend on a Semaphore in this case) while waiting for the remote processor to respond. The response from the remote processor triggers a hardware interrupt, which then posts a Semaphore to allow to Task to resume execution. The exception to this rule is that MODULE_open() functions do not need to be able to block when opening an instance on the local processor.rf…�r€f}r�f(jÅj|fjÆjzfubaubjò)�r‚f}rƒf(jÅXôWhen the threads have finished using an instance, all threads that called *MODULE\_*\ open() must call *MODULE*\ \_close(). Then, the thread that called *MODULE*\ \_create() can call *MODULE*\ \_delete() to free the memory used by the instance.jÆj!fjÎj�ajÐjõjÒ}r„f(jÔ]jÕ]jÖ]j×]jÚ]ujÜKØjÝhjÞ]r…f(jçXJWhen the threads have finished using an instance, all threads that called r†f…�r‡f}rˆf(jÅXJWhen the threads have finished using an instance, all threads that called jÆj‚fubjM)�r‰f}rŠf(jÅX *MODULE\_*jÒ}r‹f(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚fjÞ]rŒfjçXMODULE_r�f…�rŽf}r�f(jÅUjÆj‰fubajÐjUubjçXopen() must call r�f…�r‘f}r’f(jÅX\ open() must call jÆj‚fubjM)�r“f}r”f(jÅX*MODULE*jÒ}r•f(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚fjÞ]r–fjçXMODULEr—f…�r˜f}r™f(jÅUjÆj“fubajÐjUubjçX'_close(). Then, the thread that called ršf…�r›f}rœf(jÅX*\ \_close(). Then, the thread that called jÆj‚fubjM)�r�f}ržf(jÅX*MODULE*jÒ}rŸf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚fjÞ]r fjçXMODULEr¡f…�r¢f}r£f(jÅUjÆj�fubajÐjUubjçX_create() can call r¤f…�r¥f}r¦f(jÅX\ \_create() can call jÆj‚fubjM)�r§f}r¨f(jÅX*MODULE*jÒ}r©f(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚fjÞ]rªfjçXMODULEr«f…�r¬f}r­f(jÅUjÆj§fubajÐjUubjçX2_delete() to free the memory used by the instance.r®f…�r¯f}r°f(jÅX5\ \_delete() to free the memory used by the instance.jÆj‚fubeubjò)�r±f}r²f(jÅXNote that *all* threads that opened an instance must close that instance before the thread that created it can delete it. Also, a thread that calls *MODULE*\ \_create() cannot call *MODULE*\ \_close(). Likewise, a thread that calls *MODULE\_*\ open() cannot call *MODULE*\ \_delete().jÆj!fjÎj�ajÐjõjÒ}r³f(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÝjÝhjÞ]r´f(jçX Note that rµf…�r¶f}r·f(jÅX Note that jÆj±fubjM)�r¸f}r¹f(jÅX*all*jÒ}rºf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±fjÞ]r»fjçXallr¼f…�r½f}r¾f(jÅUjÆj¸fubajÐjUubjçX… threads that opened an instance must close that instance before the thread that created it can delete it. Also, a thread that calls r¿f…�rÀf}rÁf(jÅX… threads that opened an instance must close that instance before the thread that created it can delete it. Also, a thread that calls jÆj±fubjM)�rÂf}rÃf(jÅX*MODULE*jÒ}rÄf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±fjÞ]rÅfjçXMODULErÆf…�rÇf}rÈf(jÅUjÆjÂfubajÐjUubjçX_create() cannot call rÉf…�rÊf}rËf(jÅX\ \_create() cannot call jÆj±fubjM)�rÌf}rÍf(jÅX*MODULE*jÒ}rÎf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±fjÞ]rÏfjçXMODULErÐf…�rÑf}rÒf(jÅUjÆjÌfubajÐjUubjçX(_close(). Likewise, a thread that calls rÓf…�rÔf}rÕf(jÅX+\ \_close(). Likewise, a thread that calls jÆj±fubjM)�rÖf}r×f(jÅX *MODULE\_*jÒ}rØf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±fjÞ]rÙfjçXMODULE_rÚf…�rÛf}rÜf(jÅUjÆjÖfubajÐjUubjçXopen() cannot call rÝf…�rÞf}rßf(jÅX\ open() cannot call jÆj±fubjM)�ràf}ráf(jÅX*MODULE*jÒ}râf(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±fjÞ]rãfjçXMODULEräf…�råf}ræf(jÅUjÆjàfubajÐjUubjçX _delete().rçf…�rèf}réf(jÅX \ \_delete().jÆj±fubeubeubjÇ)�rêf}rëf(jÅUjÆjµajÎj�ajÐjÑjÒ}rìf(jÔ]jÕ]jÖ]j×]rífUerror-handling-in-ipcrîfajÚ]rïfj‘aujÜKãjÝhjÞ]rðf(jà)�rñf}ròf(jÅXError Handling in IPCrófjÆjêfjÎj�ajÐjäjÒ}rôf(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÝhjÞ]rõfjçXError Handling in IPCröf…�r÷f}røf(jÅjófjÆjñfubaubjò)�rùf}rúf(jÅX³Many of the APIs provided by IPC return an integer as a status code. Your application can test the status value returned against any of the provided status constants. For example:rûfjÆjêfjÎj�ajÐjõjÒ}rüf(jÔ]jÕ]jÖ]j×]jÚ]ujÜKåjÝhjÞ]rýfjçX³Many of the APIs provided by IPC return an integer as a status code. Your application can test the status value returned against any of the provided status constants. For example:rþf…�rÿf}rg(jÅjûfjÆjùfubaubj)�rg}rg(jÅXÐMessageQ_Msg msg; MessageQ_Handle messageQ; Int status; ... status = MessageQ_get(messageQ, &msg, MessageQ_FOREVER); if (status < 0) { System_abort("Should not happen\n"); }jÆjêfjÎj�ajÐjjÒ}rg(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM8jÝhjÞ]rgjçXÐMessageQ_Msg msg; MessageQ_Handle messageQ; Int status; ... status = MessageQ_get(messageQ, &msg, MessageQ_FOREVER); if (status < 0) { System_abort("Should not happen\n"); }rg…�rg}rg(jÅUjÆjgubaubjò)�rg}r g(jÅXStatus constants have the following format: ``MODULE_[S|E]_CONDITION``. For example, Ipc_S_SUCCESS, MessageQ_E_FAIL, and SharedRegion_E_MEMORY are status codes that may be returned by functions in the corresponding modules. Success codes always have values greater or equal to zero. For example, Ipc_S_SUCCESS=0 and Ipc_S_ALREADYSETUP=1; both are success codes. Failure codes always have values less than zero. Therefore, the presence of an error can be detected by simply checking whether the return value is negative.jÆjêfjÎj�ajÐjõjÒ}r g(jÔ]jÕ]jÖ]j×]jÚ]ujÜKõjÝhjÞ]r g(jçX,Status constants have the following format: r g…�r g}rg(jÅX,Status constants have the following format: jÆjgubj )�rg}rg(jÅX``MODULE_[S|E]_CONDITION``jÒ}rg(jÔ]jÕ]jÖ]j×]jÚ]ujÆjgjÞ]rgjçXMODULE_[S|E]_CONDITIONrg…�rg}rg(jÅUjÆjgubajÐj¨ubjçXÁ. For example, Ipc_S_SUCCESS, MessageQ_E_FAIL, and SharedRegion_E_MEMORY are status codes that may be returned by functions in the corresponding modules. Success codes always have values greater or equal to zero. For example, Ipc_S_SUCCESS=0 and Ipc_S_ALREADYSETUP=1; both are success codes. Failure codes always have values less than zero. Therefore, the presence of an error can be detected by simply checking whether the return value is negative.rg…�rg}rg(jÅXÁ. For example, Ipc_S_SUCCESS, MessageQ_E_FAIL, and SharedRegion_E_MEMORY are status codes that may be returned by functions in the corresponding modules. Success codes always have values greater or equal to zero. For example, Ipc_S_SUCCESS=0 and Ipc_S_ALREADYSETUP=1; both are success codes. Failure codes always have values less than zero. Therefore, the presence of an error can be detected by simply checking whether the return value is negative.jÆjgubeubjò)�rg}rg(jÅX�Other APIs provided by IPC return a handle to a created object. If the handle is NULL, an error occurred when creating the object. For example:rgjÆjêfjÎj�ajÐjõjÒ}rg(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÿjÝhjÞ]rgjçX�Other APIs provided by IPC return a handle to a created object. If the handle is NULL, an error occurred when creating the object. For example:rg…�rg}r g(jÅjgjÆjgubaubj)�r!g}r"g(jÅX{messageQ = MessageQ_create(DSP_MESSAGEQNAME, NULL); if (messageQ == NULL) { System_abort("MessageQ_create failed\n"); }jÆjêfjÎj�ajÐjjÒ}r#g(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMQjÝhjÞ]r$gjçX{messageQ = MessageQ_create(DSP_MESSAGEQNAME, NULL); if (messageQ == NULL) { System_abort("MessageQ_create failed\n"); }r%g…�r&g}r'g(jÅUjÆj!gubaubjò)�r(g}r)g(jÅXNRefer to the Doxygen documentation for status codes returned by IPC functions.r*gjÆjêfjÎj�ajÐjõjÒ}r+g(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r,gjçXNRefer to the Doxygen documentation for status codes returned by IPC functions.r-g…�r.g}r/g(jÅj*gjÆj(gubaubeubeubjÇ)�r0g}r1g(jÅUjÆjÊjÎjÏjÐjÑjÒ}r2g(jÔ]jÕ]jÖ]j×]r3gU ipc-moduler4gajÚ]r5gjaujÜK3jÝhjÞ]r6g(jà)�r7g}r8g(jÅX IPC Moduler9gjÆj0gjÎjÏjÐjäjÒ}r:g(jÔ]jÕ]jÖ]j×]jÚ]ujÜK3jÝhjÞ]r;gjçX IPC Modulerg(jÅj9gjÆj7gubaubj7)�r?g}r@g(jÅXBhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/Ipc_ModulejÆj0gjÎj:X8source/rtos/PDK_Platform_Software/IPC/IPC_Module.rst.incrAg…�rBg}rCgbjÐj>jÒ}rDg(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rEgjçXBhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/Ipc_ModulerFg…�rGg}rHg(jÅUjÆj?gubaubjÂ)�rIg}rJg(jÅXÅ.. |ipcCfg_Ipc_Img1| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/index.html#ti/sdo/ipc/Ipc.html jÆj0gjÎjBgjÐjHjÒ}rKg(jÔ]jÕ]jÖ]j×]jÚ]rLgXipcCfg_Ipc_Img1rMgaujÜKjÝhjÞ]rNgjû)�rOg}rPg(jÅjMgjÒ}rQg(UrefuriXvhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/index.html#ti/sdo/ipc/Ipc.htmlrRgj×]jÖ]jÔ]jÕ]jÚ]ujÆjIgjÞ]rSgjR)�rTg}rUg(jÅX¯Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/index.html#ti/sdo/ipc/Ipc.htmlrVgjÒ}rWg(UuriXrtos/../images/Book_cfg.pngrXgj×]jÖ]jÔ]jÕ]jX}rYgU*jXgsjÚ]UaltjMgujÆjOgjÞ]jÐjZubajÐjÿubaubjÂ)�rZg}r[g(jÅX¸.. |ipcCfg_Ipc_Img2| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆj0gjÎjBgjÐjHjÒ}r\g(jÔ]jÕ]jÖ]j×]jÚ]r]gXipcCfg_Ipc_Img2r^gaujÜKjÝhjÞ]r_gjû)�r`g}rag(jÅj^gjÒ}rbg(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrcgj×]jÖ]jÔ]jÕ]jÚ]ujÆjZgjÞ]rdgjR)�reg}rfg(jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrggjÒ}rhg(UuriXrtos/../images/Book_cfg.pngrigj×]jÖ]jÔ]jÕ]jX}rjgU*jigsjÚ]Ualtj^gujÆj`gjÞ]jÐjZubajÐjÿubaubjÂ)�rkg}rlg(jÅX¹.. |ipcRun_Ipc_Img1| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_ipc_8h.html jÆj0gjÎjBgjÐjHjÒ}rmg(jÔ]jÕ]jÖ]j×]jÚ]rngXipcRun_Ipc_Img1rogaujÜK jÝhjÞ]rpgjû)�rqg}rrg(jÅjogjÒ}rsg(UrefuriXjhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_ipc_8h.htmlrtgj×]jÖ]jÔ]jÕ]jÚ]ujÆjkgjÞ]rugjR)�rvg}rwg(jÅX£Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_ipc_8h.htmlrxgjÒ}ryg(UuriXrtos/../images/Book_run.pngrzgj×]jÖ]jÔ]jÕ]jX}r{gU*jzgsjÚ]UaltjogujÆjqgjÞ]jÐjZubajÐjÿubaubjÂ)�r|g}r}g(jÅX¹.. |ipcRun_Ipc_Img2| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_ipc_8h.html jÆj0gjÎjBgjÐjHjÒ}r~g(jÔ]jÕ]jÖ]j×]jÚ]rgXipcRun_Ipc_Img2r€gaujÜK jÝhjÞ]r�gjû)�r‚g}rƒg(jÅj€gjÒ}r„g(UrefuriXjhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_ipc_8h.htmlr…gj×]jÖ]jÔ]jÕ]jÚ]ujÆj|gjÞ]r†gjR)�r‡g}rˆg(jÅX£Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_ipc_8h.htmlr‰gjÒ}rŠg(UuriXrtos/../images/Book_run.pngr‹gj×]jÖ]jÔ]jÕ]jX}rŒgU*j‹gsjÚ]Ualtj€gujÆj‚gjÞ]jÐjZubajÐjÿubaubjc)�r�g}rŽg(jÅUjÆj0gjÎjBgjÐjfjÒ}r�g(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r�gji)�r‘g}r’g(jÅUjlKjÆj�gjÎjBgjÐjÜjÒ}r“g(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubj3)�r”g}r•g(jÅUjÆj0gjÎjBgjÐj6jÒ}r–g(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r—gjy )�r˜g}r™g(jÅUjÒ}ršg(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”gjÞ]r›gj~ )�rœg}r�g(jÅUjÒ}ržg(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj˜gjÞ]rŸg(jƒ )�r g}r¡g(jÅUjÒ}r¢g(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjœgjÞ]jÐj‡ ubjƒ )�r£g}r¤g(jÅUjÒ}r¥g(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjœgjÞ]jÐj‡ ubj‹ )�r¦g}r§g(jÅUjÒ}r¨g(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœgjÞ]r©gj� )�rªg}r«g(jÅUjÒ}r¬g(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦gjÞ]r­gj• )�r®g}r¯g(jÅUjÒ}r°g(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjªgjÞ]r±gjò)�r²g}r³g(jÅXAPI Reference Linksr´gjÆj®gjÎjBgjÐjõjÒ}rµg(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¶gjçXAPI Reference Linksr·g…�r¸g}r¹g(jÅj´gjÆj²gubaubajÐj¢ ubajÐj£ ubajÐj¤ ubj¥ )�rºg}r»g(jÅUjÒ}r¼g(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœgjÞ]r½gj� )�r¾g}r¿g(jÅUjÒ}rÀg(jÔ]jÕ]jÖ]j×]jÚ]ujÆjºgjÞ]rÁg(j• )�rÂg}rÃg(jÅUjÒ}rÄg(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾gjÞ]rÅgjò)�rÆg}rÇg(jÅX|ipcCfg_Ipc_Img1|rÈgjÆjÂgjÎjBgjÐjõjÒ}rÉg(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÊgjû)�rËg}rÌg(jÅjMgjÆjÆgjÎNjÐjÿjÒ}rÍg(UrefurijRgj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]rÎgjR)�rÏg}rÐg(jÅjVgjÆjËgjÎNjÐjZjÒ}rÑg(UuriXrtos/../images/Book_cfg.pngrÒgj×]jÖ]jÔ]jÕ]jX}rÓgU*jÒgsjÚ]UaltjMgujÜNjÞ]ubaubaubajÐj¢ ubj• )�rÔg}rÕg(jÅUjÒ}rÖg(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾gjÞ]r×gjò)�rØg}rÙg(jÅX|ipcRun_Ipc_Img1|rÚgjÆjÔgjÎjBgjÐjõjÒ}rÛg(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÜgjû)�rÝg}rÞg(jÅjogjÆjØgjÎNjÐjÿjÒ}rßg(Urefurijtgj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]ràgjR)�rág}râg(jÅjxgjÆjÝgjÎNjÐjZjÒ}rãg(UuriXrtos/../images/Book_run.pngrägj×]jÖ]jÔ]jÕ]jX}rågU*jägsjÚ]UaltjogujÜNjÞ]ubaubaubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubajÐjÔ ubaubjò)�ræg}rçg(jÅX±The main purpose of the Ipc module is to initialize the various subsystems of IPC. All applications that use IPC modules must call the Ipc_start() API, which does the following:règjÆj0gjÎjBgjÐjõjÒ}rég(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rêgjçX±The main purpose of the Ipc module is to initialize the various subsystems of IPC. All applications that use IPC modules must call the Ipc_start() API, which does the following:rëg…�rìg}ríg(jÅjègjÆjægubaubjt)�rîg}rïg(jÅUjÆj0gjÎjBgjÐjwjÒ}rðg(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rñg(j{)�ròg}róg(jÅX7Initializes a number of objects and modules used by IPCrôgjÆjîgjÎjBgjÐjjÒ}rõg(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rögjò)�r÷g}røg(jÅjôgjÆjògjÎjBgjÐjõjÒ}rùg(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rúgjçX7Initializes a number of objects and modules used by IPCrûg…�rüg}rýg(jÅjôgjÆj÷gubaubaubj{)�rþg}rÿg(jÅX?Synchronizes multiple processors so they can boot in any order jÆjîgjÎjBgjÐjjÒ}rh(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rhjò)�rh}rh(jÅX>Synchronizes multiple processors so they can boot in any orderrhjÆjþgjÎjBgjÐjõjÒ}rh(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rhjçX>Synchronizes multiple processors so they can boot in any orderrh…�rh}r h(jÅjhjÆjhubaubaubeubjò)�r h}r h(jÅX¯An application that uses IPC APIs--such as MessageQ--must include the Ipc module header file and call Ipc_start() before any calls to IPC modules. Here is a BIOS-side example:r hjÆj0gjÎjBgjÐjõjÒ}r h(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rhjçX¯An application that uses IPC APIs--such as MessageQ--must include the Ipc module header file and call Ipc_start() before any calls to IPC modules. Here is a BIOS-side example:rh…�rh}rh(jÅj hjÆj hubaubj)�rh}rh(jÅX÷ #include int main(int argc, char* argv[]) { Int status; /* Call Ipc_start() */ status = Ipc_start(); if (status < 0) { System_abort("Ipc_start failed\n"); } BIOS_start(); return (0); }jÆj0gjÎjBgjÐjjÒ}rh(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜK jÝhjÞ]rhjçX÷ #include int main(int argc, char* argv[]) { Int status; /* Call Ipc_start() */ status = Ipc_start(); if (status < 0) { System_abort("Ipc_start failed\n"); } BIOS_start(); return (0); }rh…�rh}rh(jÅUjÆjhubaubjc)�rh}rh(jÅUjÆj0gjÎjBgjÐjfjÒ}rh(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÝhjÞ]rhji)�rh}rh(jÅUjlKjÆjhjÎjBgjÐjÜjÒ}rh(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r h}r!h(jÅX9By default, the BIOS implementation of Ipc_start() internally calls Notify_start() if it has not already been called, then loops through the defined SharedRegions so that it can set up the HeapMemMP and GateMP instances used internally by the IPC modules. It also sets up MessageQ transports to remote processors.r"hjÆj0gjÎjBgjÐjõjÒ}r#h(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÝhjÞ]r$hjçX9By default, the BIOS implementation of Ipc_start() internally calls Notify_start() if it has not already been called, then loops through the defined SharedRegions so that it can set up the HeapMemMP and GateMP instances used internally by the IPC modules. It also sets up MessageQ transports to remote processors.r%h…�r&h}r'h(jÅj"hjÆj hubaubjò)�r(h}r)h(jÅXThe SharedRegion with an index of 0 (zero) is often used by BIOS-side IPC_start() to create resource management tables for internal use by other IPC modules. Thus SharedRegion "0" must be accessible by all processors. See SharedRegion Module for more about the SharedRegion module.r*hjÆj0gjÎjBgjÐjõjÒ}r+h(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÝhjÞ]r,hjçXThe SharedRegion with an index of 0 (zero) is often used by BIOS-side IPC_start() to create resource management tables for internal use by other IPC modules. Thus SharedRegion "0" must be accessible by all processors. See SharedRegion Module for more about the SharedRegion module.r-h…�r.h}r/h(jÅj*hjÆj(hubaubjÇ)�r0h}r1h(jÅUjÆj0gjÎjBgjÐjÑjÒ}r2h(jÔ]jÕ]jÖ]j×]r3hU'ipc-module-configuration-bios-side-onlyr4hajÚ]r5hj²aujÜK=jÝhjÞ]r6h(jà)�r7h}r8h(jÅX)Ipc Module Configuration (BIOS-side only)r9hjÆj0hjÎjBgjÐjäjÒ}r:h(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÝhjÞ]r;hjçX)Ipc Module Configuration (BIOS-side only)rh(jÅj9hjÆj7hubaubjò)�r?h}r@h(jÅXSIn an XDCtools configuration file, you configure the Ipc module for use as follows:rAhjÆj0hjÎjBgjÐjõjÒ}rBh(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÝhjÞ]rChjçXSIn an XDCtools configuration file, you configure the Ipc module for use as follows:rDh…�rEh}rFh(jÅjAhjÆj?hubaubj)�rGh}rHh(jÅX&Ipc = xdc.useModule('ti.sdo.ipc.Ipc');jÆj0hjÎjBgjÐjjÒ}rIh(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rJhjçX&Ipc = xdc.useModule('ti.sdo.ipc.Ipc');rKh…�rLh}rMh(jÅUjÆjGhubaubjò)�rNh}rOh(jÅXÑYou can configure what the Ipc_start() API will do--which modules it will start and which objects it will create--by using the Ipc.setEntryMeta method in the configuration file to set the following properties:rPhjÆj0hjÎjBgjÐjõjÒ}rQh(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÝhjÞ]rRhjçXÑYou can configure what the Ipc_start() API will do--which modules it will start and which objects it will create--by using the Ipc.setEntryMeta method in the configuration file to set the following properties:rSh…�rTh}rUh(jÅjPhjÆjNhubaubjt)�rVh}rWh(jÅUjÆj0hjÎjBgjÐjwjÒ}rXh(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKHjÝhjÞ]rYh(j{)�rZh}r[h(jÅXW**setupNotify.** If set to false, the Notify module is not set up. The default is true.r\hjÆjVhjÎjBgjÐjjÒ}r]h(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r^hjò)�r_h}r`h(jÅj\hjÆjZhjÎjBgjÐjõjÒ}rah(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]rbh(jÚ)�rch}rdh(jÅX**setupNotify.**jÒ}reh(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_hjÞ]rfhjçX setupNotify.rgh…�rhh}rih(jÅUjÆjchubajÐjâubjçXG If set to false, the Notify module is not set up. The default is true.rjh…�rkh}rlh(jÅXG If set to false, the Notify module is not set up. The default is true.jÆj_hubeubaubj{)�rmh}rnh(jÅX¼**setupMessageQ.** If set to false, the MessageQ transport instances to remote processors are not set up and the MessageQ module does not attach to remote processors. The default is true. jÆjVhjÎjBgjÐjjÒ}roh(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rphjò)�rqh}rrh(jÅX»**setupMessageQ.** If set to false, the MessageQ transport instances to remote processors are not set up and the MessageQ module does not attach to remote processors. The default is true.jÆjmhjÎjBgjÐjõjÒ}rsh(jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÞ]rth(jÚ)�ruh}rvh(jÅX**setupMessageQ.**jÒ}rwh(jÔ]jÕ]jÖ]j×]jÚ]ujÆjqhjÞ]rxhjçXsetupMessageQ.ryh…�rzh}r{h(jÅUjÆjuhubajÐjâubjçX© If set to false, the MessageQ transport instances to remote processors are not set up and the MessageQ module does not attach to remote processors. The default is true.r|h…�r}h}r~h(jÅX© If set to false, the MessageQ transport instances to remote processors are not set up and the MessageQ module does not attach to remote processors. The default is true.jÆjqhubeubaubeubjò)�rh}r€h(jÅXŸFor example, the following statements from the notify example configuration turn off the setup of the MessageQ transports and connections to remote processors:r�hjÆj0hjÎjBgjÐjõjÒ}r‚h(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÝhjÞ]rƒhjçXŸFor example, the following statements from the notify example configuration turn off the setup of the MessageQ transports and connections to remote processors:r„h…�r…h}r†h(jÅj�hjÆjhubaubj)�r‡h}rˆh(jÅXÈ/* To avoid wasting shared memory for MessageQ transports */ for (var i = 0; i < MultiProc.numProcessors; i++) { Ipc.setEntryMeta({ remoteProcId: i, setupMessageQ: false, }); }jÆj0hjÎjBgjÐjjÒ}r‰h(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜKNjÝhjÞ]rŠhjçXÈ/* To avoid wasting shared memory for MessageQ transports */ for (var i = 0; i < MultiProc.numProcessors; i++) { Ipc.setEntryMeta({ remoteProcId: i, setupMessageQ: false, }); }r‹h…�rŒh}r�h(jÅUjÆj‡hubaubjò)�rŽh}r�h(jÅXsYou can configure how the IPC module synchronizes processors by configuring the Ipc.procSync property. For example:r�hjÆj0hjÎjBgjÐjõjÒ}r‘h(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÝhjÞ]r’hjçXsYou can configure how the IPC module synchronizes processors by configuring the Ipc.procSync property. For example:r“h…�r”h}r•h(jÅj�hjÆjŽhubaubj)�r–h}r—h(jÅX Ipc.procSync = Ipc.ProcSync_ALL;jÆj0hjÎjBgjÐjjÒ}r˜h(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMºjÝhjÞ]r™hjçX Ipc.procSync = Ipc.ProcSync_ALL;ršh…�r›h}rœh(jÅUjÆj–hubaubjò)�r�h}ržh(jÅXThe options are:rŸhjÆj0hjÎjBgjÐjõjÒ}r h(jÔ]jÕ]jÖ]j×]jÚ]ujÜK_jÝhjÞ]r¡hjçXThe options are:r¢h…�r£h}r¤h(jÅjŸhjÆj�hubaubjt)�r¥h}r¦h(jÅUjÆj0hjÎjBgjÐjwjÒ}r§h(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKajÝhjÞ]r¨h(j{)�r©h}rªh(jÅXeIpc.ProcSync_ALL. If you use this option, the Ipc_start() API automatically attaches to and synchronizes all remote processors. If you use this option, your application should never call Ipc_attach(). Use this option if all IPC processors on a device start up at the same time and connections should be established between every possible pair of processors.jÆj¥hjÎjBgjÐjjÒ}r«h(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¬hjò)�r­h}r®h(jÅXeIpc.ProcSync_ALL. If you use this option, the Ipc_start() API automatically attaches to and synchronizes all remote processors. If you use this option, your application should never call Ipc_attach(). Use this option if all IPC processors on a device start up at the same time and connections should be established between every possible pair of processors.r¯hjÆj©hjÎjBgjÐjõjÒ}r°h(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÞ]r±hjçXeIpc.ProcSync_ALL. If you use this option, the Ipc_start() API automatically attaches to and synchronizes all remote processors. If you use this option, your application should never call Ipc_attach(). Use this option if all IPC processors on a device start up at the same time and connections should be established between every possible pair of processors.r²h…�r³h}r´h(jÅj¯hjÆj­hubaubaubj{)�rµh}r¶h(jÅX»Ipc.ProcSync_PAIR. (Default) If you use this option, you must explicitly call Ipc_attach() to attach to a specific remote processor. If you use this option, Ipc_start() performs system-wide IPC initialization, but does not make connections to remote processors. Use this option if any or all of the following are true: - You need to control when synchronization with each remote processor occurs. - Useful work can be done while trying to synchronize with a remote processor by yielding a thread after each attempt to Ipc_attach() to the processor. - Connections to some remote processors are unnecessary and should be made selectively to save memory. - Ipc.ProcSync_NONE. If you use this option, Ipc_start() doesn't synchronize any processors before setting up the objects needed by other modules. Use this option with caution. It is intended for use in cases where the application performs its own synchronization and you want to avoid a potential deadlock situation with the IPC synchronization. If you use the ProcSync_NONE option, Ipc_start() works exactly as it does with ProcSync_PAIR. : However, in this case, Ipc_attach() does not synchronize with the remote processor. As with other ProcSync options, Ipc_attach() still sets up access to GateMP, SharedRegion, Notify, NameServer, and MessageQ transports, so your application must still call Ipc_attach() for each remote processor that will be accessed. Note that an Ipc_attach() call for a remote processor whose ID is less than the local processor's ID must occur after the corresponding remote processor has called Ipc_attach() to the local processor. For example, processor #2 can call Ipc_attach(1) only after processor #1 has called Ipc_attach(2).: jÆj¥hjÎjBgjÐjjÒ}r·h(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¸h(jò)�r¹h}rºh(jÅX„Ipc.ProcSync_PAIR. (Default) If you use this option, you must explicitly call Ipc_attach() to attach to a specific remote processor.r»hjÆjµhjÎjBgjÐjõjÒ}r¼h(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÞ]r½hjçX„Ipc.ProcSync_PAIR. (Default) If you use this option, you must explicitly call Ipc_attach() to attach to a specific remote processor.r¾h…�r¿h}rÀh(jÅj»hjÆj¹hubaubj3)�rÁh}rÂh(jÅUjÒ}rÃh(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµhjÞ]rÄhjò)�rÅh}rÆh(jÅX™If you use this option, Ipc_start() performs system-wide IPC initialization, but does not make connections to remote processors. Use this option if any or all of the following are true: - You need to control when synchronization with each remote processor occurs. - Useful work can be done while trying to synchronize with a remote processor by yielding a thread after each attempt to Ipc_attach() to the processor. - Connections to some remote processors are unnecessary and should be made selectively to save memory. - Ipc.ProcSync_NONE. If you use this option, Ipc_start() doesn't synchronize any processors before setting up the objects needed by other modules.rÇhjÆjÁhjÎjBgjÐjõjÒ}rÈh(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÞ]rÉhjçX™If you use this option, Ipc_start() performs system-wide IPC initialization, but does not make connections to remote processors. Use this option if any or all of the following are true: - You need to control when synchronization with each remote processor occurs. - Useful work can be done while trying to synchronize with a remote processor by yielding a thread after each attempt to Ipc_attach() to the processor. - Connections to some remote processors are unnecessary and should be made selectively to save memory. - Ipc.ProcSync_NONE. If you use this option, Ipc_start() doesn't synchronize any processors before setting up the objects needed by other modules.rÊh…�rËh}rÌh(jÅjÇhjÆjÅhubaubajÐj6ubjò)�rÍh}rÎh(jÅXÇUse this option with caution. It is intended for use in cases where the application performs its own synchronization and you want to avoid a potential deadlock situation with the IPC synchronization.rÏhjÆjµhjÎjBgjÐjõjÒ}rÐh(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÞ]rÑhjçXÇUse this option with caution. It is intended for use in cases where the application performs its own synchronization and you want to avoid a potential deadlock situation with the IPC synchronization.rÒh…�rÓh}rÔh(jÅjÏhjÆjÍhubaubjò)�rÕh}rÖh(jÅXÊIf you use the ProcSync_NONE option, Ipc_start() works exactly as it does with ProcSync_PAIR. : However, in this case, Ipc_attach() does not synchronize with the remote processor. As with other ProcSync options, Ipc_attach() still sets up access to GateMP, SharedRegion, Notify, NameServer, and MessageQ transports, so your application must still call Ipc_attach() for each remote processor that will be accessed. Note that an Ipc_attach() call for a remote processor whose ID is less than the local processor's ID must occur after the corresponding remote processor has called Ipc_attach() to the local processor. For example, processor #2 can call Ipc_attach(1) only after processor #1 has called Ipc_attach(2).:r×hjÆjµhjÎjBgjÐjõjÒ}rØh(jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÞ]rÙhjçXÊIf you use the ProcSync_NONE option, Ipc_start() works exactly as it does with ProcSync_PAIR. : However, in this case, Ipc_attach() does not synchronize with the remote processor. As with other ProcSync options, Ipc_attach() still sets up access to GateMP, SharedRegion, Notify, NameServer, and MessageQ transports, so your application must still call Ipc_attach() for each remote processor that will be accessed. Note that an Ipc_attach() call for a remote processor whose ID is less than the local processor's ID must occur after the corresponding remote processor has called Ipc_attach() to the local processor. For example, processor #2 can call Ipc_attach(1) only after processor #1 has called Ipc_attach(2).:rÚh…�rÛh}rÜh(jÅj×hjÆjÕhubaubeubeubjò)�rÝh}rÞh(jÅXÍYou can configure a function to perform custom actions in addition to the default actions performed when attaching to or detaching from a remote processor. These functions run near the end of Ipc_attach() and near the beginning of Ipc_detach(), respectively. Such functions must be non-blocking and must run to completion. The following example configures two attach functions and two detach functions. Each set of functions will be passed a different argument:rßhjÆj0hjÎjBgjÐjõjÒ}ràh(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÝhjÞ]ráhjçXÍYou can configure a function to perform custom actions in addition to the default actions performed when attaching to or detaching from a remote processor. These functions run near the end of Ipc_attach() and near the beginning of Ipc_detach(), respectively. Such functions must be non-blocking and must run to completion. The following example configures two attach functions and two detach functions. Each set of functions will be passed a different argument:râh…�rãh}räh(jÅjßhjÆjÝhubaubj)�råh}ræh(jÅXûvar Ipc = xdc.useModule('ti.sdo.ipc.Ipc'); var fxn = new Ipc.UserFxn; fxn.attach = '&userAttachFxn1'; fxn.detach = '&userDetachFxn1'; Ipc.addUserFxn(fxn, 0x1); fxn.attach = '&userAttachFxn2'; fxn.detach = '&userDetachFxn2'; Ipc.addUserFxn(fxn, 0x2);jÆj0hjÎjBgjÐjjÒ}rçh(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÝjÝhjÞ]rèhjçXûvar Ipc = xdc.useModule('ti.sdo.ipc.Ipc'); var fxn = new Ipc.UserFxn; fxn.attach = '&userAttachFxn1'; fxn.detach = '&userDetachFxn1'; Ipc.addUserFxn(fxn, 0x1); fxn.attach = '&userAttachFxn2'; fxn.detach = '&userDetachFxn2'; Ipc.addUserFxn(fxn, 0x2);réh…�rêh}rëh(jÅUjÆjåhubaubjò)�rìh}ríh(jÅXÒ|ipcCfg_Ipc_Img2| The latest version of the IPC module configuration documentation is available `here `_jÆj0hjÎjBgjÐjõjÒ}rîh(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÝhjÞ]rïh(jû)�rðh}rñh(jÅj^gjÆjìhjÎNjÐjÿjÒ}ròh(Urefurijcgj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]róhjR)�rôh}rõh(jÅjggjÆjðhjÎNjÐjZjÒ}röh(UuriXrtos/../images/Book_cfg.pngr÷hj×]jÖ]jÔ]jÕ]jX}røhU*j÷hsjÚ]Ualtj^gujÜNjÞ]ubaubjçXO The latest version of the IPC module configuration documentation is available rùh…�rúh}rûh(jÅXO The latest version of the IPC module configuration documentation is available jÆjìhubjû)�rüh}rýh(jÅXr`here `_jÒ}rþh(Unameh@jXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrÿhj×]jÖ]jÔ]jÕ]jÚ]ujÆjìhjÞ]rijçXhereri…�ri}ri(jÅUjÆjühubajÐjÿubj)�ri}ri(jÅXk jKjÆjìhjÐj jÒ}ri(Urefurijÿhj×]riUhereriajÖ]jÔ]jÕ]jÚ]r ih@aujÞ]ubeubeubjÇ)�r i}r i(jÅUjÆj0gjÎjBgjÐjÑjÒ}r i(jÔ]jÕ]jÖ]j×]r iUipc-module-apisriajÚ]rij?aujÜKŽjÝhjÞ]ri(jà)�ri}ri(jÅXIpc Module APIsrijÆj ijÎjBgjÐjäjÒ}ri(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÝhjÞ]rijçXIpc Module APIsri…�ri}ri(jÅjijÆjiubaubjò)�ri}ri(jÅX´In addition to the Ipc_start() API, which all applications that use IPC modules are required to call, the Ipc module also provides the following APIs for processor synchronization:rijÆj ijÎjBgjÐjõjÒ}ri(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rijçX´In addition to the Ipc_start() API, which all applications that use IPC modules are required to call, the Ipc module also provides the following APIs for processor synchronization:ri…�ri}r i(jÅjijÆjiubaubjt)�r!i}r"i(jÅUjÆj ijÎjBgjÐjwjÒ}r#i(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK’jÝhjÞ]r$i(j{)�r%i}r&i(jÅXDIpc_attach() Creates a connection to the specified remote processor.r'ijÆj!ijÎjBgjÐjjÒ}r(i(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r)ijò)�r*i}r+i(jÅj'ijÆj%ijÎjBgjÐjõjÒ}r,i(jÔ]jÕ]jÖ]j×]jÚ]ujÜK’jÞ]r-ijçXDIpc_attach() Creates a connection to the specified remote processor.r.i…�r/i}r0i(jÅj'ijÆj*iubaubaubj{)�r1i}r2i(jÅXGIpc_detach() Deletes the connection to the specified remote processor. jÆj!ijÎjBgjÐjjÒ}r3i(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r4ijò)�r5i}r6i(jÅXFIpc_detach() Deletes the connection to the specified remote processor.r7ijÆj1ijÎjBgjÐjõjÒ}r8i(jÔ]jÕ]jÖ]j×]jÚ]ujÜK“jÞ]r9ijçXFIpc_detach() Deletes the connection to the specified remote processor.r:i…�r;i}ri(jÅXEYou must call Ipc_start() on a processor before calling Ipc_attach().r?ijÆj ijÎjBgjÐjõjÒ}r@i(jÔ]jÕ]jÖ]j×]jÚ]ujÜK•jÝhjÞ]rAijçXEYou must call Ipc_start() on a processor before calling Ipc_attach().rBi…�rCi}rDi(jÅj?ijÆj=iubaubjë)�rEi}rFi(jÅX9Call Ipc_attach() to the processor that owns shared memory region 0--usually the processor with an id of 0--before making a connection to any other remote processor. For example, if there are three processors configured with MultiProc, processor 1 should attach to processor 0 before it can attach to processor 2.jÆj ijÎjBgjÐjïjÒ}rGi(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rHijò)�rIi}rJi(jÅX9Call Ipc_attach() to the processor that owns shared memory region 0--usually the processor with an id of 0--before making a connection to any other remote processor. For example, if there are three processors configured with MultiProc, processor 1 should attach to processor 0 before it can attach to processor 2.rKijÆjEijÎjBgjÐjõjÒ}rLi(jÔ]jÕ]jÖ]j×]jÚ]ujÜK˜jÞ]rMijçX9Call Ipc_attach() to the processor that owns shared memory region 0--usually the processor with an id of 0--before making a connection to any other remote processor. For example, if there are three processors configured with MultiProc, processor 1 should attach to processor 0 before it can attach to processor 2.rNi…�rOi}rPi(jÅjKijÆjIiubaubaubjò)�rQi}rRi(jÅXéUse these functions unless you are using the Ipc.ProcSync_ALL configuration setting. With that option, Ipc_start() automatically attaches to and synchronizes all remote processors, and your application should never call Ipc_attach().rSijÆj ijÎjBgjÐjõjÒ}rTi(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rUijçXéUse these functions unless you are using the Ipc.ProcSync_ALL configuration setting. With that option, Ipc_start() automatically attaches to and synchronizes all remote processors, and your application should never call Ipc_attach().rVi…�rWi}rXi(jÅjSijÆjQiubaubjò)�rYi}rZi(jÅX¦The Ipc.ProcSync_PAIR configuration option expects that your application will call Ipc_attach() for each remote processor with which it should be able to communicate.r[ijÆj ijÎjBgjÐjõjÒ}r\i(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÝhjÞ]r]ijçX¦The Ipc.ProcSync_PAIR configuration option expects that your application will call Ipc_attach() for each remote processor with which it should be able to communicate.r^i…�r_i}r`i(jÅj[ijÆjYiubaubjë)�rai}rbi(jÅX¢In ARM-Linux/DSP-RTOS scenario, Linux application gets the IPC configuration from LAD which has Ipc.ProcSync_ALL configured. DSP has Ipc.ProcSync_PAIR configured.jÆj ijÎjBgjÐjïjÒ}rci(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rdijò)�rei}rfi(jÅX¢In ARM-Linux/DSP-RTOS scenario, Linux application gets the IPC configuration from LAD which has Ipc.ProcSync_ALL configured. DSP has Ipc.ProcSync_PAIR configured.rgijÆjaijÎjBgjÐjõjÒ}rhi(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¥jÞ]riijçX¢In ARM-Linux/DSP-RTOS scenario, Linux application gets the IPC configuration from LAD which has Ipc.ProcSync_ALL configured. DSP has Ipc.ProcSync_PAIR configured.rji…�rki}rli(jÅjgijÆjeiubaubaubjò)�rmi}rni(jÅXProcessor synchronization means that one processor waits until the other processor signals that a particular module is ready for use. Within Ipc_attach(), this is done for the GateMP, SharedRegion (region 0), and Notify modules and the MessageQ transports.roijÆj ijÎjBgjÐjõjÒ}rpi(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¨jÝhjÞ]rqijçXProcessor synchronization means that one processor waits until the other processor signals that a particular module is ready for use. Within Ipc_attach(), this is done for the GateMP, SharedRegion (region 0), and Notify modules and the MessageQ transports.rri…�rsi}rti(jÅjoijÆjmiubaubjò)�rui}rvi(jÅX†You can call the Ipc_detach() API to delete internal instances created by Ipc_attach() and to free the memory used by these instances.rwijÆj ijÎjBgjÐjõjÒ}rxi(jÔ]jÕ]jÖ]j×]jÚ]ujÜK«jÝhjÞ]ryijçX†You can call the Ipc_detach() API to delete internal instances created by Ipc_attach() and to free the memory used by these instances.rzi…�r{i}r|i(jÅjwijÆjuiubaubjò)�r}i}r~i(jÅXÕ|ipcRun_Ipc_Img2| The latest version of the IPC module run-time API documentation is available `online `_jÆj ijÎjBgjÐjõjÒ}ri(jÔ]jÕ]jÖ]j×]jÚ]ujÜK­jÝhjÞ]r€i(jû)�r�i}r‚i(jÅj€gjÆj}ijÎNjÐjÿjÒ}rƒi(Urefurij…gj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]r„ijR)�r…i}r†i(jÅj‰gjÆj�ijÎNjÐjZjÒ}r‡i(UuriXrtos/../images/Book_run.pngrˆij×]jÖ]jÔ]jÕ]jX}r‰iU*jˆisjÚ]Ualtj€gujÜNjÞ]ubaubjçXN The latest version of the IPC module run-time API documentation is available rŠi…�r‹i}rŒi(jÅXN The latest version of the IPC module run-time API documentation is available jÆj}iubjû)�r�i}rŽi(jÅXv`online `_jÒ}r�i(UnamehÕjXjhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_ipc_8h.htmlr�ij×]jÖ]jÔ]jÕ]jÚ]ujÆj}ijÞ]r‘ijçXonliner’i…�r“i}r”i(jÅUjÆj�iubajÐjÿubj)�r•i}r–i(jÅXm jKjÆj}ijÐj jÒ}r—i(Urefurij�ij×]r˜iUonliner™iajÖ]jÔ]ršiXonliner›iajÕ]jÚ]ujÞ]ubeubeubeubjÇ)�rœi}r�i(jÅUjÆjÊjÎjÏjÐjÑjÒ}rži(jÔ]jÕ]jÖ]j×]rŸiUmessageq-moduler iajÚ]r¡ij2aujÜK7jÝhjÞ]r¢i(jà)�r£i}r¤i(jÅXMessageQ Moduler¥ijÆjœijÎjÏjÐjäjÒ}r¦i(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÝhjÞ]r§ijçXMessageQ Moduler¨i…�r©i}rªi(jÅj¥ijÆj£iubaubj7)�r«i}r¬i(jÅXGhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/MessageQ_ModulejÆjœijÎj:X=source/rtos/PDK_Platform_Software/IPC/MessageQ_Module.rst.incr­i…�r®i}r¯ibjÐj>jÒ}r°i(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r±ijçXGhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/MessageQ_Moduler²i…�r³i}r´i(jÅUjÆj«iubaubjÂ)�rµi}r¶i(jÅX³.. |msgCfg_Img1| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆjœijÎj®ijÐjHjÒ}r·i(jÔ]jÕ]jÖ]j×]jÚ]r¸iX msgCfg_Img1r¹iaujÜKjÝhjÞ]rºijû)�r»i}r¼i(jÅj¹ijÒ}r½i(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr¾ij×]jÖ]jÔ]jÕ]jÚ]ujÆjµijÞ]r¿ijR)�rÀi}rÁi(jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrÂijÒ}rÃi(UuriXrtos/../images/Book_cfg.pngrÄij×]jÖ]jÔ]jÕ]jX}rÅiU*jÄisjÚ]Ualtj¹iujÆj»ijÞ]jÐjZubajÐjÿubaubjÂ)�rÆi}rÇi(jÅX´.. |msgCfg_Img2| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆjœijÎj®ijÐjHjÒ}rÈi(jÔ]jÕ]jÖ]j×]jÚ]rÉiX msgCfg_Img2rÊiaujÜKjÝhjÞ]rËijû)�rÌi}rÍi(jÅjÊijÒ}rÎi(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrÏij×]jÖ]jÔ]jÕ]jÚ]ujÆjÆijÞ]rÐijR)�rÑi}rÒi(jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrÓijÒ}rÔi(UuriXrtos/../images/Book_cfg.pngrÕij×]jÖ]jÔ]jÕ]jX}rÖiU*jÕisjÚ]UaltjÊiujÆjÌijÞ]jÐjZubajÐjÿubaubjÂ)�r×i}rØi(jÅX».. |msgRun_Img1| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_message_q_8h.html jÆjœijÎj®ijÐjHjÒ}rÙi(jÔ]jÕ]jÖ]j×]jÚ]rÚiX msgRun_Img1rÛiaujÜK jÝhjÞ]rÜijû)�rÝi}rÞi(jÅjÛijÒ}rßi(UrefuriXphttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_message_q_8h.htmlràij×]jÖ]jÔ]jÕ]jÚ]ujÆj×ijÞ]ráijR)�râi}rãi(jÅX©Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_message_q_8h.htmlräijÒ}råi(UuriXrtos/../images/Book_run.pngræij×]jÖ]jÔ]jÕ]jX}rçiU*jæisjÚ]UaltjÛiujÆjÝijÞ]jÐjZubajÐjÿubaubjÂ)�rèi}réi(jÅX».. |msgRun_Img2| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_message_q_8h.html jÆjœijÎj®ijÐjHjÒ}rêi(jÔ]jÕ]jÖ]j×]jÚ]rëiX msgRun_Img2rìiaujÜK jÝhjÞ]ríijû)�rîi}rïi(jÅjìijÒ}rði(UrefuriXphttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_message_q_8h.htmlrñij×]jÖ]jÔ]jÕ]jÚ]ujÆjèijÞ]ròijR)�rói}rôi(jÅX©Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_message_q_8h.htmlrõijÒ}röi(UuriXrtos/../images/Book_run.pngr÷ij×]jÖ]jÔ]jÕ]jX}røiU*j÷isjÚ]UaltjìiujÆjîijÞ]jÐjZubajÐjÿubaubjc)�rùi}rúi(jÅUjÆjœijÎj®ijÐjfjÒ}rûi(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rüiji)�rýi}rþi(jÅUjlKjÆjùijÎj®ijÐjÜjÒ}rÿi(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubj3)�rj}rj(jÅUjÆjœijÎj®ijÐj6jÒ}rj(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rjjy )�rj}rj(jÅUjÒ}rj(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjjÞ]rjj~ )�rj}r j(jÅUjÒ}r j(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjjjÞ]r j(jƒ )�r j}r j(jÅUjÒ}rj(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjjÞ]jÐj‡ ubjƒ )�rj}rj(jÅUjÒ}rj(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjjÞ]jÐj‡ ubj‹ )�rj}rj(jÅUjÒ}rj(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjjÞ]rjj� )�rj}rj(jÅUjÒ}rj(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjjÞ]rjj• )�rj}rj(jÅUjÒ}rj(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjjjÞ]rjjò)�rj}rj(jÅXAPI Reference Linksr jjÆjjjÎj®ijÐjõjÒ}r!j(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r"jjçXAPI Reference Linksr#j…�r$j}r%j(jÅj jjÆjjubaubajÐj¢ ubajÐj£ ubajÐj¤ ubj¥ )�r&j}r'j(jÅUjÒ}r(j(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjjÞ]r)jj� )�r*j}r+j(jÅUjÒ}r,j(jÔ]jÕ]jÖ]j×]jÚ]ujÆj&jjÞ]r-j(j• )�r.j}r/j(jÅUjÒ}r0j(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*jjÞ]r1jjò)�r2j}r3j(jÅX |msgCfg_Img1|r4jjÆj.jjÎj®ijÐjõjÒ}r5j(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r6jjû)�r7j}r8j(jÅj¹ijÆj2jjÎNjÐjÿjÒ}r9j(Urefurij¾ij×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]r:jjR)�r;j}rjj×]jÖ]jÔ]jÕ]jX}r?jU*j>jsjÚ]Ualtj¹iujÜNjÞ]ubaubaubajÐj¢ ubj• )�r@j}rAj(jÅUjÒ}rBj(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*jjÞ]rCjjò)�rDj}rEj(jÅX |msgRun_Img1|rFjjÆj@jjÎj®ijÐjõjÒ}rGj(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rHjjû)�rIj}rJj(jÅjÛijÆjDjjÎNjÐjÿjÒ}rKj(Urefurijàij×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]rLjjR)�rMj}rNj(jÅjäijÆjIjjÎNjÐjZjÒ}rOj(UuriXrtos/../images/Book_run.pngrPjj×]jÖ]jÔ]jÕ]jX}rQjU*jPjsjÚ]UaltjÛiujÜNjÞ]ubaubaubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubajÐjÔ ubaubjò)�rRj}rSj(jÅXëThe MessageQ module supports the structured sending and receiving of variable length messages. It is OS independent and works with any threading model. For each MessageQ you create, there is a single reader and may be multiple writers.rTjjÆjœijÎj®ijÐjõjÒ}rUj(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rVjjçXëThe MessageQ module supports the structured sending and receiving of variable length messages. It is OS independent and works with any threading model. For each MessageQ you create, there is a single reader and may be multiple writers.rWj…�rXj}rYj(jÅjTjjÆjRjubaubjò)�rZj}r[j(jÅXÈMessageQ is the recommended messaging API for most applications. It can be used for both homogeneous and heterogeneous multi-processor messaging, along with single-processor messaging between threads.r\jjÆjœijÎj®ijÐjõjÒ}r]j(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r^jjçXÈMessageQ is the recommended messaging API for most applications. It can be used for both homogeneous and heterogeneous multi-processor messaging, along with single-processor messaging between threads.r_j…�r`j}raj(jÅj\jjÆjZjubaubjë)�rbj}rcj(jÅXZThe MessageQ module in IPC is similar in functionality to the MSGQ module in DSP/BIOS 5.x.rdjjÆjœijÎj®ijÐjïjÒ}rej(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rfjjò)�rgj}rhj(jÅjdjjÆjbjjÎj®ijÐjõjÒ}rij(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÞ]rjjjçXZThe MessageQ module in IPC is similar in functionality to the MSGQ module in DSP/BIOS 5.x.rkj…�rlj}rmj(jÅjdjjÆjgjubaubaubjò)�rnj}roj(jÅX6The following are key features of the MessageQ module:rpjjÆjœijÎj®ijÐjõjÒ}rqj(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÝhjÞ]rrjjçX6The following are key features of the MessageQ module:rsj…�rtj}ruj(jÅjpjjÆjnjubaubjt)�rvj}rwj(jÅUjÆjœijÎj®ijÐjwjÒ}rxj(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK&jÝhjÞ]ryj(j{)�rzj}r{j(jÅXWWriters and readers can be relocated to another processor with no runtime code changes.r|jjÆjvjjÎj®ijÐjjÒ}r}j(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r~jjò)�rj}r€j(jÅj|jjÆjzjjÎj®ijÐjõjÒ}r�j(jÔ]jÕ]jÖ]j×]jÚ]ujÜK&jÞ]r‚jjçXWWriters and readers can be relocated to another processor with no runtime code changes.rƒj…�r„j}r…j(jÅj|jjÆjjubaubaubj{)�r†j}r‡j(jÅX-Timeouts are allowed when receiving messages.rˆjjÆjvjjÎj®ijÐjjÒ}r‰j(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŠjjò)�r‹j}rŒj(jÅjˆjjÆj†jjÎj®ijÐjõjÒ}r�j(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]rŽjjçX-Timeouts are allowed when receiving messages.r�j…�r�j}r‘j(jÅjˆjjÆj‹jubaubaubj{)�r’j}r“j(jÅX0Readers can determine the writer and reply back.r”jjÆjvjjÎj®ijÐjjÒ}r•j(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r–jjò)�r—j}r˜j(jÅj”jjÆj’jjÎj®ijÐjõjÒ}r™j(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]ršjjçX0Readers can determine the writer and reply back.r›j…�rœj}r�j(jÅj”jjÆj—jubaubaubj{)�ržj}rŸj(jÅX>Receiving a message is deterministic when the timeout is zero.r jjÆjvjjÎj®ijÐjjÒ}r¡j(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¢jjò)�r£j}r¤j(jÅj jjÆjžjjÎj®ijÐjõjÒ}r¥j(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]r¦jjçX>Receiving a message is deterministic when the timeout is zero.r§j…�r¨j}r©j(jÅj jjÆj£jubaubaubj{)�rªj}r«j(jÅX)Messages can reside on any message queue.r¬jjÆjvjjÎj®ijÐjjÒ}r­j(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r®jjò)�r¯j}r°j(jÅj¬jjÆjªjjÎj®ijÐjõjÒ}r±j(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]r²jjçX)Messages can reside on any message queue.r³j…�r´j}rµj(jÅj¬jjÆj¯jubaubaubj{)�r¶j}r·j(jÅX(Supports zero-copy transfers (BIOS only)r¸jjÆjvjjÎj®ijÐjjÒ}r¹j(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rºjjò)�r»j}r¼j(jÅj¸jjÆj¶jjÎj®ijÐjõjÒ}r½j(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÞ]r¾jjçX(Supports zero-copy transfers (BIOS only)r¿j…�rÀj}rÁj(jÅj¸jjÆj»jubaubaubj{)�rÂj}rÃj(jÅX:Messages can be sent and received from any type of thread.rÄjjÆjvjjÎj®ijÐjjÒ}rÅj(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÆjjò)�rÇj}rÈj(jÅjÄjjÆjÂjjÎj®ijÐjõjÒ}rÉj(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]rÊjjçX:Messages can be sent and received from any type of thread.rËj…�rÌj}rÍj(jÅjÄjjÆjÇjubaubaubj{)�rÎj}rÏj(jÅXFThe notification mechanism is specified by the application (BIOS only)rÐjjÆjvjjÎj®ijÐjjÒ}rÑj(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÒjjò)�rÓj}rÔj(jÅjÐjjÆjÎjjÎj®ijÐjõjÒ}rÕj(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÞ]rÖjjçXFThe notification mechanism is specified by the application (BIOS only)r×j…�rØj}rÙj(jÅjÐjjÆjÓjubaubaubj{)�rÚj}rÛj(jÅX‹Allows QoS (quality of service) on message buffer pools. For example, using specific buffer pools for specific message queues. (BIOS only) jÆjvjjÎj®ijÐjjÒ}rÜj(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÝjjò)�rÞj}rßj(jÅXŠAllows QoS (quality of service) on message buffer pools. For example, using specific buffer pools for specific message queues. (BIOS only)ràjjÆjÚjjÎj®ijÐjõjÒ}ráj(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]râjjçXŠAllows QoS (quality of service) on message buffer pools. For example, using specific buffer pools for specific message queues. (BIOS only)rãj…�räj}råj(jÅjàjjÆjÞjubaubaubeubjò)�ræj}rçj(jÅX8Messages are sent and received via a message queue. A reader is a thread that gets (reads) messages from a message queue. A writer is a thread that puts (writes) a message to a message queue. Each message queue has one reader and can have many writers. A thread may read from or write to multiple message queues.rèjjÆjœijÎj®ijÐjõjÒ}réj(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÝhjÞ]rêjjçX8Messages are sent and received via a message queue. A reader is a thread that gets (reads) messages from a message queue. A writer is a thread that puts (writes) a message to a message queue. Each message queue has one reader and can have many writers. A thread may read from or write to multiple message queues.rëj…�rìj}ríj(jÅjèjjÆjæjubaubjt)�rîj}rïj(jÅUjÆjœijÎj®ijÐjwjÒ}rðj(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK5jÝhjÞ]rñj(j{)�ròj}rój(jÅXu**Reader.** The single reader thread calls MessageQ_create(), MessageQ_get(), MessageQ_free(), and MessageQ_delete().rôjjÆjîjjÎj®ijÐjjÒ}rõj(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]röjjò)�r÷j}røj(jÅjôjjÆjòjjÎj®ijÐjõjÒ}rùj(jÔ]jÕ]jÖ]j×]jÚ]ujÜK5jÞ]rúj(jÚ)�rûj}rüj(jÅX **Reader.**jÒ}rýj(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷jjÞ]rþjjçXReader.rÿj…�rk}rk(jÅUjÆjûjubajÐjâubjçXj The single reader thread calls MessageQ_create(), MessageQ_get(), MessageQ_free(), and MessageQ_delete().rk…�rk}rk(jÅXj The single reader thread calls MessageQ_create(), MessageQ_get(), MessageQ_free(), and MessageQ_delete().jÆj÷jubeubaubj{)�rk}rk(jÅXi**Writer.** Writer threads call MessageQ_open(), MessageQ_alloc(), MessageQ_put(), and MessageQ_close(). jÆjîjjÎj®ijÐjjÒ}rk(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rkjò)�r k}r k(jÅXh**Writer.** Writer threads call MessageQ_open(), MessageQ_alloc(), MessageQ_put(), and MessageQ_close().jÆjkjÎj®ijÐjõjÒ}r k(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]r k(jÚ)�r k}rk(jÅX **Writer.**jÒ}rk(jÔ]jÕ]jÖ]j×]jÚ]ujÆj kjÞ]rkjçXWriter.rk…�rk}rk(jÅUjÆj kubajÐjâubjçX] Writer threads call MessageQ_open(), MessageQ_alloc(), MessageQ_put(), and MessageQ_close().rk…�rk}rk(jÅX] Writer threads call MessageQ_open(), MessageQ_alloc(), MessageQ_put(), and MessageQ_close().jÆj kubeubaubeubjò)�rk}rk(jÅXgThe following figure shows the flow in which applications typically use the main runtime MessageQ APIs:rkjÆjœijÎj®ijÐjõjÒ}rk(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÝhjÞ]rkjçXgThe following figure shows the flow in which applications typically use the main runtime MessageQ APIs:rk…�rk}rk(jÅjkjÆjkubaubjR)�rk}r k(jÅX).. Image:: ../images/IpcUG_ipc_2_3_1.png jÆjœijÎj®ijÐjZjÒ}r!k(UuriX"rtos/../images/IpcUG_ipc_2_3_1.pngr"kj×]jÖ]jÔ]jÕ]jX}r#kU*j"ksjÚ]ujÜK;jÝhjÞ]ubjò)�r$k}r%k(jÅX‹Conceptually, the reader thread creates and owns the message queue. Writer threads then open a created message queue to get access to them.r&kjÆjœijÎj®ijÐjõjÒ}r'k(jÔ]jÕ]jÖ]j×]jÚ]ujÜKk(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÝhjÞ]r?kjçX}On BIOS-based systems, you can configure a number of module-wide properties for MessageQ in your XDCtools configuration file.r@k…�rAk}rBk(jÅj=kjÆj;kubaubjò)�rCk}rDk(jÅXÎ|msgCfg_Img2| A snapshot of the MessageQ module configuration documentation is available `online `_.jÆj,kjÎj®ijÐjõjÒ}rEk(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÝhjÞ]rFk(jû)�rGk}rHk(jÅjÊijÆjCkjÎNjÐjÿjÒ}rIk(UrefurijÏij×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]rJkjR)�rKk}rLk(jÅjÓijÆjGkjÎNjÐjZjÒ}rMk(UuriXrtos/../images/Book_cfg.pngrNkj×]jÖ]jÔ]jÕ]jX}rOkU*jNksjÚ]UaltjÊiujÜNjÞ]ubaubjçXL A snapshot of the MessageQ module configuration documentation is available rPk…�rQk}rRk(jÅXL A snapshot of the MessageQ module configuration documentation is available jÆjCkubjû)�rSk}rTk(jÅXt`online `_jÒ}rUk(Unamej›ijXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrVkj×]jÖ]jÔ]jÕ]jÚ]ujÆjCkjÞ]rWkjçXonlinerXk…�rYk}rZk(jÅUjÆjSkubajÐjÿubj)�r[k}r\k(jÅXk jKjÆjCkjÐj jÒ}r]k(UrefurijVkj×]r^kUid1r_kajÖ]jÔ]r`kj›iajÕ]jÚ]ujÞ]ubjçX.…�rak}rbk(jÅX.jÆjCkubeubjò)�rck}rdk(jÅXHTo configure the MessageQ module, you must enable the module as follows:rekjÆj,kjÎj®ijÐjõjÒ}rfk(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÝhjÞ]rgkjçXHTo configure the MessageQ module, you must enable the module as follows:rhk…�rik}rjk(jÅjekjÆjckubaubj)�rkk}rlk(jÅX4var MessageQ = xdc.useModule('ti.sdo.ipc.MessageQ');jÆj,kjÎj®ijÐjjÒ}rmk(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM\jÝhjÞ]rnkjçX4var MessageQ = xdc.useModule('ti.sdo.ipc.MessageQ');rok…�rpk}rqk(jÅUjÆjkkubaubjò)�rrk}rsk(jÅXqSome example Module-wide configuration properties you can set follow; refer to the IPC documentation for details.rtkjÆj,kjÎj®ijÐjõjÒ}ruk(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÝhjÞ]rvkjçXqSome example Module-wide configuration properties you can set follow; refer to the IPC documentation for details.rwk…�rxk}ryk(jÅjtkjÆjrkubaubj)�rzk}r{k(jÅXš// Maximum length of MessageQ names MessageQ.maxNameLen = 32; // Max number of MessageQs that can be dynamically created MessageQ.maxRuntimeEntries = 10;jÆj,kjÎj®ijÐjjÒ}r|k(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMbjÝhjÞ]r}kjçXš// Maximum length of MessageQ names MessageQ.maxNameLen = 32; // Max number of MessageQs that can be dynamically created MessageQ.maxRuntimeEntries = 10;r~k…�rk}r€k(jÅUjÆjzkubaubeubjÇ)�r�k}r‚k(jÅUjÆjœijÎj®ijÐjÑjÒ}rƒk(jÔ]jÕ]jÖ]j×]r„kUcreating-a-messageq-objectr…kajÚ]r†kj—aujÜKVjÝhjÞ]r‡k(jà)�rˆk}r‰k(jÅXCreating a MessageQ ObjectrŠkjÆj�kjÎj®ijÐjäjÒ}r‹k(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÝhjÞ]rŒkjçXCreating a MessageQ Objectr�k…�rŽk}r�k(jÅjŠkjÆjˆkubaubjò)�r�k}r‘k(jÅXÃYou can create message queues dynamically. Static creation is not supported. A MessageQ object is not a shared resource. That is, it resides on the processor, within the process, that creates it.r’kjÆj�kjÎj®ijÐjõjÒ}r“k(jÔ]jÕ]jÖ]j×]jÚ]ujÜKWjÝhjÞ]r”kjçXÃYou can create message queues dynamically. Static creation is not supported. A MessageQ object is not a shared resource. That is, it resides on the processor, within the process, that creates it.r•k…�r–k}r—k(jÅj’kjÆj�kubaubjò)�r˜k}r™k(jÅX”The reader thread creates a message queue. To create a MessageQ object dynamically, use the MessageQ_create() C API, which has the following syntax:rškjÆj�kjÎj®ijÐjõjÒ}r›k(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÝhjÞ]rœkjçX”The reader thread creates a message queue. To create a MessageQ object dynamically, use the MessageQ_create() C API, which has the following syntax:r�k…�ržk}rŸk(jÅjškjÆj˜kubaubj)�r k}r¡k(jÅXFMessageQ_Handle MessageQ_create(String name, MessageQ_Params *params);jÆj�kjÎj®ijÐjjÒ}r¢k(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMrjÝhjÞ]r£kjçXFMessageQ_Handle MessageQ_create(String name, MessageQ_Params *params);r¤k…�r¥k}r¦k(jÅUjÆj kubaubjò)�r§k}r¨k(jÅX?When you create a queue, you specify a name string. This name will be needed by the MessageQ_open() function, which is called by threads on the same or remote processors that want to send messages to the created message queue. While the name is not required (that is, it can be NULL), an unnamed queue cannot be opened.r©kjÆj�kjÎj®ijÐjõjÒ}rªk(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÝhjÞ]r«kjçX?When you create a queue, you specify a name string. This name will be needed by the MessageQ_open() function, which is called by threads on the same or remote processors that want to send messages to the created message queue. While the name is not required (that is, it can be NULL), an unnamed queue cannot be opened.r¬k…�r­k}r®k(jÅj©kjÆj§kubaubjò)�r¯k}r°k(jÅXTAn ISync handle is associated with the message queue via the synchronizer parameter.r±kjÆj�kjÎj®ijÐjõjÒ}r²k(jÔ]jÕ]jÖ]j×]jÚ]ujÜKejÝhjÞ]r³kjçXTAn ISync handle is associated with the message queue via the synchronizer parameter.r´k…�rµk}r¶k(jÅj±kjÆj¯kubaubjò)�r·k}r¸k(jÅX`If the call is successful, the MessageQ_Handle is returned. If the call fails, NULL is returned.r¹kjÆj�kjÎj®ijÐjõjÒ}rºk(jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]r»kjçX`If the call is successful, the MessageQ_Handle is returned. If the call fails, NULL is returned.r¼k…�r½k}r¾k(jÅj¹kjÆj·kubaubjò)�r¿k}rÀk(jÅXYou initialize the params struct by using the MessageQ_Params_init() function, which initializes the params structure with the default values. A NULL value for params can be passed into the create call, which results in the defaults being used. The default synchronizer is SyncSem.rÁkjÆj�kjÎj®ijÐjõjÒ}rÂk(jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÝhjÞ]rÃkjçXYou initialize the params struct by using the MessageQ_Params_init() function, which initializes the params structure with the default values. A NULL value for params can be passed into the create call, which results in the defaults being used. The default synchronizer is SyncSem.rÄk…�rÅk}rÆk(jÅjÁkjÆj¿kubaubjò)�rÇk}rÈk(jÅXOThe following code creates a MessageQ object using SyncSem as the synchronizer.rÉkjÆj�kjÎj®ijÐjõjÒ}rÊk(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÝhjÞ]rËkjçXOThe following code creates a MessageQ object using SyncSem as the synchronizer.rÌk…�rÍk}rÎk(jÅjÉkjÆjÇkubaubj)�rÏk}rÐk(jÅX<MessageQ_Handle messageQ; MessageQ_Params messageQParams; SyncSem_Handle syncSemHandle; ... syncSemHandle = SyncSem_create(NULL, NULL); MessageQ_Params_init(&messageQParams); messageQParams.synchronizer = SyncSem_Handle_upCast(syncSemHandle); messageQ = MessageQ_create(CORE0_MESSAGEQNAME, &messageQParams);jÆj�kjÎj®ijÐjjÒ}rÑk(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMƒjÝhjÞ]rÒkjçX<MessageQ_Handle messageQ; MessageQ_Params messageQParams; SyncSem_Handle syncSemHandle; ... syncSemHandle = SyncSem_create(NULL, NULL); MessageQ_Params_init(&messageQParams); messageQParams.synchronizer = SyncSem_Handle_upCast(syncSemHandle); messageQ = MessageQ_create(CORE0_MESSAGEQNAME, &messageQParams);rÓk…�rÔk}rÕk(jÅUjÆjÏkubaubjò)�rÖk}r×k(jÅXcIn this example, the CORE0_MESSAGEQNAME constant may be defined in header shared by multiple cores.rØkjÆj�kjÎj®ijÐjõjÒ}rÙk(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÝhjÞ]rÚkjçXcIn this example, the CORE0_MESSAGEQNAME constant may be defined in header shared by multiple cores.rÛk…�rÜk}rÝk(jÅjØkjÆjÖkubaubjò)�rÞk}rßk(jÅXÕ|msgRun_Img2| A snapshot of the MessageQ module run-time API documentation is available `online `_.jÆj�kjÎj®ijÐjõjÒ}ràk(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÝhjÞ]rák(jû)�râk}rãk(jÅjìijÆjÞkjÎNjÐjÿjÒ}räk(Urefurijñij×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]råkjR)�ræk}rçk(jÅjõijÆjâkjÎNjÐjZjÒ}rèk(UuriXrtos/../images/Book_run.pngrékj×]jÖ]jÔ]jÕ]jX}rêkU*jéksjÚ]UaltjìiujÜNjÞ]ubaubjçXK A snapshot of the MessageQ module run-time API documentation is available rëk…�rìk}rík(jÅXK A snapshot of the MessageQ module run-time API documentation is available jÆjÞkubjû)�rîk}rïk(jÅX|`online `_jÒ}rðk(UnameXonlinerñkjXphttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_message_q_8h.htmlròkj×]jÖ]jÔ]jÕ]jÚ]ujÆjÞkjÞ]rókjçXonlinerôk…�rõk}rök(jÅUjÆjîkubajÐjÿubj)�r÷k}røk(jÅXs jKjÆjÞkjÐj jÒ}rùk(Urefurijòkj×]rúkUid2rûkajÖ]jÔ]rükjñkajÕ]jÚ]ujÞ]ubjçX.…�rýk}rþk(jÅX.jÆjÞkubeubeubjÇ)�rÿk}rl(jÅUjÆjœijÎj®ijÐjÑjÒ}rl(jÔ]jÕ]jÖ]j×]rlUopening-a-message-queuerlajÚ]rlhWaujÜK‚jÝhjÞ]rl(jà)�rl}rl(jÅXOpening a Message QueuerljÆjÿkjÎj®ijÐjäjÒ}r l(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‚jÝhjÞ]r ljçXOpening a Message Queuer l…�r l}r l(jÅjljÆjlubaubjò)�rl}rl(jÅXÓWriter threads open a created message queue to get access to them. In order to obtain a handle to a message queue that has been created, a writer thread must call MessageQ_open(), which has the following syntax.rljÆjÿkjÎj®ijÐjõjÒ}rl(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÝhjÞ]rljçXÓWriter threads open a created message queue to get access to them. In order to obtain a handle to a message queue that has been created, a writer thread must call MessageQ_open(), which has the following syntax.rl…�rl}rl(jÅjljÆjlubaubj)�rl}rl(jÅX:Int MessageQ_open(String name, MessageQ_QueueId *queueId);jÆjÿkjÎj®ijÐjjÒ}rl(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMœjÝhjÞ]rljçX:Int MessageQ_open(String name, MessageQ_QueueId *queueId);rl…�rl}rl(jÅUjÆjlubaubjò)�rl}rl(jÅXðThis function expects a name, which must match with the name of the created object. Internally MessageQ calls NameServer_get() to find the 32-bit queueId associated with the created message queue. NameServer looks both locally and remotely.rljÆjÿkjÎj®ijÐjõjÒ}r l(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‹jÝhjÞ]r!ljçXðThis function expects a name, which must match with the name of the created object. Internally MessageQ calls NameServer_get() to find the 32-bit queueId associated with the created message queue. NameServer looks both locally and remotely.r"l…�r#l}r$l(jÅjljÆjlubaubjò)�r%l}r&l(jÅX´If no matching name is found on any processor, MessageQ_open() returns MessageQ_E_NOTFOUND. If the open is successful, the Queue ID is filled in and MessageQ_S_SUCCESS is returned.r'ljÆjÿkjÎj®ijÐjõjÒ}r(l(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]r)ljçX´If no matching name is found on any processor, MessageQ_open() returns MessageQ_E_NOTFOUND. If the open is successful, the Queue ID is filled in and MessageQ_S_SUCCESS is returned.r*l…�r+l}r,l(jÅj'ljÆj%lubaubjò)�r-l}r.l(jÅXFThe following code opens the MessageQ object created by the processor.r/ljÆjÿkjÎj®ijÐjõjÒ}r0l(jÔ]jÕ]jÖ]j×]jÚ]ujÜK’jÝhjÞ]r1ljçXFThe following code opens the MessageQ object created by the processor.r2l…�r3l}r4l(jÅj/ljÆj-lubaubj)�r5l}r6l(jÅXÙMessageQ_QueueId remoteQueueId; Int status; ... /* Open the remote message queue. Spin until it is ready. */ do { status = MessageQ_open(CORE0_MESSAGEQNAME, &remoteQueueId); } while (status < 0);jÆjÿkjÎj®ijÐjjÒ}r7l(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM©jÝhjÞ]r8ljçXÙMessageQ_QueueId remoteQueueId; Int status; ... /* Open the remote message queue. Spin until it is ready. */ do { status = MessageQ_open(CORE0_MESSAGEQNAME, &remoteQueueId); } while (status < 0);r9l…�r:l}r;l(jÅUjÆj5lubaubeubjÇ)�rl(jÔ]jÕ]jÖ]j×]r?lUallocating-a-messager@lajÚ]rAlh±aujÜK¢jÝhjÞ]rBl(jà)�rCl}rDl(jÅXAllocating a MessagerEljÆjm…�r?m}r@m(jÅj;mjÆj9mubaubjò)�rAm}rBm(jÅX\There can be multiple senders to a single message queue. MessageQ handles the thread safety.rCmjÆjõljÎj®ijÐjõjÒ}rDm(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rEmjçX\There can be multiple senders to a single message queue. MessageQ handles the thread safety.rFm…�rGm}rHm(jÅjCmjÆjAmubaubjò)�rIm}rJm(jÅX�Before you send a message, you can use the MessageQ_setMsgId() function to assign a numeric value to the message that can be checked by the receiving thread.rKmjÆjõljÎj®ijÐjõjÒ}rLm(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rMmjçX�Before you send a message, you can use the MessageQ_setMsgId() function to assign a numeric value to the message that can be checked by the receiving thread.rNm…�rOm}rPm(jÅjKmjÆjImubaubj)�rQm}rRm(jÅXY/* Increment...the remote side will check this */ msgId++; MessageQ_setMsgId(msg, msgId);jÆjõljÎj®ijÐjjÒ}rSm(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM7jÝhjÞ]rTmjçXY/* Increment...the remote side will check this */ msgId++; MessageQ_setMsgId(msg, msgId);rUm…�rVm}rWm(jÅUjÆjQmubaubjò)�rXm}rYm(jÅXQYou can use the MessageQ_setMsgPri() function to set the priority of the message.rZmjÆjõljÎj®ijÐjõjÒ}r[m(jÔ]jÕ]jÖ]j×]jÚ]ujÜM(jÝhjÞ]r\mjçXQYou can use the MessageQ_setMsgPri() function to set the priority of the message.r]m…�r^m}r_m(jÅjZmjÆjXmubaubeubjÇ)�r`m}ram(jÅUjÆjœijÎj®ijÐjÑjÒ}rbm(jÔ]jÕ]jÖ]j×]rcmUreceiving-a-messagerdmajÚ]remjsaujÜM+jÝhjÞ]rfm(jà)�rgm}rhm(jÅXReceiving a MessagerimjÆj`mjÎj®ijÐjäjÒ}rjm(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÝhjÞ]rkmjçXReceiving a Messagerlm…�rmm}rnm(jÅjimjÆjgmubaubjò)�rom}rpm(jÅXCTo receive a message, a reader thread calls the MessageQ_get() API.rqmjÆj`mjÎj®ijÐjõjÒ}rrm(jÔ]jÕ]jÖ]j×]jÚ]ujÜM,jÝhjÞ]rsmjçXCTo receive a message, a reader thread calls the MessageQ_get() API.rtm…�rum}rvm(jÅjqmjÆjomubaubj)�rwm}rxm(jÅXyInt MessageQ_get(MessageQ_Handle handle, MessageQ_Msg *msg, UInt timeout)jÆj`mjÎj®ijÐjjÒ}rym(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMCjÝhjÞ]rzmjçXyInt MessageQ_get(MessageQ_Handle handle, MessageQ_Msg *msg, UInt timeout)r{m…�r|m}r}m(jÅUjÆjwmubaubjò)�r~m}rm(jÅX{If a message is present, it returned by this function. In this case the ISync's wait() function is not called. For example:r€mjÆj`mjÎj®ijÐjõjÒ}r�m(jÔ]jÕ]jÖ]j×]jÚ]ujÜM4jÝhjÞ]r‚mjçX{If a message is present, it returned by this function. In this case the ISync's wait() function is not called. For example:rƒm…�r„m}r…m(jÅj€mjÆj~mubaubj)�r†m}r‡m(jÅXž/* Get a message */ status = MessageQ_get(messageQ, &msg, MessageQ_FOREVER); if (status < 0) { System_abort("Should not happen; timeout is forever\n"); }jÆj`mjÎj®ijÐjjÒ}rˆm(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMLjÝhjÞ]r‰mjçXž/* Get a message */ status = MessageQ_get(messageQ, &msg, MessageQ_FOREVER); if (status < 0) { System_abort("Should not happen; timeout is forever\n"); }rŠm…�r‹m}rŒm(jÅUjÆj†mubaubjò)�r�m}rŽm(jÅXöIf no message is present and no error occurs, this function blocks while waiting for the timeout period for the message to arrive. If the timeout period expires, MessageQ_E_FAIL is returned. If an error occurs, the msg argument will be unchanged.r�mjÆj`mjÎj®ijÐjõjÒ}r�m(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÝhjÞ]r‘mjçXöIf no message is present and no error occurs, this function blocks while waiting for the timeout period for the message to arrive. If the timeout period expires, MessageQ_E_FAIL is returned. If an error occurs, the msg argument will be unchanged.r’m…�r“m}r”m(jÅj�mjÆj�mubaubjò)�r•m}r–m(jÅXwAfter receiving a message, you can use the following APIs to get information about the message from the message header:r—mjÆj`mjÎj®ijÐjõjÒ}r˜m(jÔ]jÕ]jÖ]j×]jÚ]ujÜMBjÝhjÞ]r™mjçXwAfter receiving a message, you can use the following APIs to get information about the message from the message header:ršm…�r›m}rœm(jÅj—mjÆj•mubaubjt)�r�m}ržm(jÅUjÆj`mjÎj®ijÐjwjÒ}rŸm(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMDjÝhjÞ]r mj{)�r¡m}r¢m(jÅXOMessageQ_getMsgId() gets the ID value set by MessageQ_setMsgId(). For example: jÆj�mjÎj®ijÐjjÒ}r£m(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¤mjò)�r¥m}r¦m(jÅXNMessageQ_getMsgId() gets the ID value set by MessageQ_setMsgId(). For example:r§mjÆj¡mjÎj®ijÐjõjÒ}r¨m(jÔ]jÕ]jÖ]j×]jÚ]ujÜMDjÞ]r©mjçXNMessageQ_getMsgId() gets the ID value set by MessageQ_setMsgId(). For example:rªm…�r«m}r¬m(jÅj§mjÆj¥mubaubaubaubj)�r­m}r®m(jÅX‚/* Get the id and increment it to send back */ msgId = MessageQ_getMsgId(msg); msgId += NUMCLIENTS; MessageQ_setMsgId(msg, msgId);jÆj`mjÎj®ijÐjjÒ}r¯m(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM[jÝhjÞ]r°mjçX‚/* Get the id and increment it to send back */ msgId = MessageQ_getMsgId(msg); msgId += NUMCLIENTS; MessageQ_setMsgId(msg, msgId);r±m…�r²m}r³m(jÅUjÆj­mubaubjt)�r´m}rµm(jÅUjÆj`mjÎj®ijÐjwjÒ}r¶m(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMMjÝhjÞ]r·m(j{)�r¸m}r¹m(jÅXCMessageQ_getMsgPri() gets the priority set by MessageQ_setMsgPri().rºmjÆj´mjÎj®ijÐjjÒ}r»m(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¼mjò)�r½m}r¾m(jÅjºmjÆj¸mjÎj®ijÐjõjÒ}r¿m(jÔ]jÕ]jÖ]j×]jÚ]ujÜMMjÞ]rÀmjçXCMessageQ_getMsgPri() gets the priority set by MessageQ_setMsgPri().rÁm…�rÂm}rÃm(jÅjºmjÆj½mubaubaubj{)�rÄm}rÅm(jÅX<MessageQ_getMsgSize() gets the size of the message in bytes.rÆmjÆj´mjÎj®ijÐjjÒ}rÇm(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÈmjò)�rÉm}rÊm(jÅjÆmjÆjÄmjÎj®ijÐjõjÒ}rËm(jÔ]jÕ]jÖ]j×]jÚ]ujÜMNjÞ]rÌmjçX<MessageQ_getMsgSize() gets the size of the message in bytes.rÍm…�rÎm}rÏm(jÅjÆmjÆjÉmubaubaubj{)�rÐm}rÑm(jÅXXMessageQ_getReplyQueue() gets the ID of the queue provided by MessageQ_setReplyQueue(). jÆj´mjÎj®ijÐjjÒ}rÒm(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÓmjò)�rÔm}rÕm(jÅXWMessageQ_getReplyQueue() gets the ID of the queue provided by MessageQ_setReplyQueue().rÖmjÆjÐmjÎj®ijÐjõjÒ}r×m(jÔ]jÕ]jÖ]j×]jÚ]ujÜMOjÞ]rØmjçXWMessageQ_getReplyQueue() gets the ID of the queue provided by MessageQ_setReplyQueue().rÙm…�rÚm}rÛm(jÅjÖmjÆjÔmubaubaubeubeubjÇ)�rÜm}rÝm(jÅUjÆjœijÎj®ijÐjÑjÒ}rÞm(jÔ]jÕ]jÖ]j×]rßmUdeleting-a-messageq-objectràmajÚ]rámj§aujÜMRjÝhjÞ]râm(jà)�rãm}räm(jÅXDeleting a MessageQ ObjectråmjÆjÜmjÎj®ijÐjäjÒ}ræm(jÔ]jÕ]jÖ]j×]jÚ]ujÜMRjÝhjÞ]rçmjçXDeleting a MessageQ Objectrèm…�rém}rêm(jÅjåmjÆjãmubaubjò)�rëm}rìm(jÅXæMessageQ_delete() frees a MessageQ object stored in local memory. If any messages are still on the internal linked lists, they will be freed. The contents of the handle are nulled out by the function to prevent use after deleting.rímjÆjÜmjÎj®ijÐjõjÒ}rîm(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÝhjÞ]rïmjçXæMessageQ_delete() frees a MessageQ object stored in local memory. If any messages are still on the internal linked lists, they will be freed. The contents of the handle are nulled out by the function to prevent use after deleting.rðm…�rñm}ròm(jÅjímjÆjëmubaubj)�róm}rôm(jÅX.Void MessageQ_delete(MessageQ_Handle *handle);jÆjÜmjÎj®ijÐjjÒ}rõm(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMkjÝhjÞ]römjçX.Void MessageQ_delete(MessageQ_Handle *handle);r÷m…�røm}rùm(jÅUjÆjómubaubjò)�rúm}rûm(jÅX5The queue array entry is set to NULL to allow re-use.rümjÆjÜmjÎj®ijÐjõjÒ}rým(jÔ]jÕ]jÖ]j×]jÚ]ujÜMZjÝhjÞ]rþmjçX5The queue array entry is set to NULL to allow re-use.rÿm…�rn}rn(jÅjümjÆjúmubaubjò)�rn}rn(jÅXwOnce a message queue is deleted, no messages should be sent to it. A MessageQ_close() is recommended, but not required.rnjÆjÜmjÎj®ijÐjõjÒ}rn(jÔ]jÕ]jÖ]j×]jÚ]ujÜM\jÝhjÞ]rnjçXwOnce a message queue is deleted, no messages should be sent to it. A MessageQ_close() is recommended, but not required.rn…�rn}r n(jÅjnjÆjnubaubeubjÇ)�r n}r n(jÅUjÆjœijÎj®ijÐjÑjÒ}r n(jÔ]jÕ]jÖ]j×]r nUmessage-prioritiesrnajÚ]rnhLaujÜM_jÝhjÞ]rn(jà)�rn}rn(jÅXMessage PrioritiesrnjÆj njÎj®ijÐjäjÒ}rn(jÔ]jÕ]jÖ]j×]jÚ]ujÜM_jÝhjÞ]rnjçXMessage Prioritiesrn…�rn}rn(jÅjnjÆjnubaubjò)�rn}rn(jÅX6MessageQ supports three message priorities as follows:rnjÆj njÎj®ijÐjõjÒ}rn(jÔ]jÕ]jÖ]j×]jÚ]ujÜM`jÝhjÞ]rnjçX6MessageQ supports three message priorities as follows:rn…�rn}r n(jÅjnjÆjnubaubjt)�r!n}r"n(jÅUjÆj njÎj®ijÐjwjÒ}r#n(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMbjÝhjÞ]r$n(j{)�r%n}r&n(jÅXMessageQ_NORMALPRI = 0r'njÆj!njÎj®ijÐjjÒ}r(n(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r)njò)�r*n}r+n(jÅj'njÆj%njÎj®ijÐjõjÒ}r,n(jÔ]jÕ]jÖ]j×]jÚ]ujÜMbjÞ]r-njçXMessageQ_NORMALPRI = 0r.n…�r/n}r0n(jÅj'njÆj*nubaubaubj{)�r1n}r2n(jÅXMessageQ_HIGHPRI = 1r3njÆj!njÎj®ijÐjjÒ}r4n(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r5njò)�r6n}r7n(jÅj3njÆj1njÎj®ijÐjõjÒ}r8n(jÔ]jÕ]jÖ]j×]jÚ]ujÜMcjÞ]r9njçXMessageQ_HIGHPRI = 1r:n…�r;n}rn(jÅXMessageQ_URGENTPRI = 3 jÆj!njÎj®ijÐjjÒ}r?n(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r@njò)�rAn}rBn(jÅXMessageQ_URGENTPRI = 3rCnjÆj=njÎj®ijÐjõjÒ}rDn(jÔ]jÕ]jÖ]j×]jÚ]ujÜMdjÞ]rEnjçXMessageQ_URGENTPRI = 3rFn…�rGn}rHn(jÅjCnjÆjAnubaubaubeubjò)�rIn}rJn(jÅXjYou can set the priority level for a message before sending it by using the MessageQ_setMsgPri() function:rKnjÆj njÎj®ijÐjõjÒ}rLn(jÔ]jÕ]jÖ]j×]jÚ]ujÜMfjÝhjÞ]rMnjçXjYou can set the priority level for a message before sending it by using the MessageQ_setMsgPri() function:rNn…�rOn}rPn(jÅjKnjÆjInubaubj)�rQn}rRn(jÅXdVoid MessageQ_setMsgPri(MessageQ_Msg msg, MessageQ_Priority priority)jÆj njÎj®ijÐjjÒ}rSn(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM}jÝhjÞ]rTnjçXdVoid MessageQ_setMsgPri(MessageQ_Msg msg, MessageQ_Priority priority)rUn…�rVn}rWn(jÅUjÆjQnubaubjò)�rXn}rYn(jÅXAInternally a MessageQ object maintains two linked lists: normal and high-priority. A normal priority message is placed onto the "normal" linked list in FIFO manner. A high priority message is placed onto the "high-priority" linked list in FIFO manner. An urgent message is placed at the beginning of the high linked list.rZnjÆj njÎj®ijÐjõjÒ}r[n(jÔ]jÕ]jÖ]j×]jÚ]ujÜMmjÝhjÞ]r\njçXAInternally a MessageQ object maintains two linked lists: normal and high-priority. A normal priority message is placed onto the "normal" linked list in FIFO manner. A high priority message is placed onto the "high-priority" linked list in FIFO manner. An urgent message is placed at the beginning of the high linked list.r]n…�r^n}r_n(jÅjZnjÆjXnubaubjë)�r`n}ran(jÅXtSince multiple urgent messages may be sent before a message is read, the order of urgent messages is not guaranteed.rbnjÆj njÎj®ijÐjïjÒ}rcn(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rdnjò)�ren}rfn(jÅjbnjÆj`njÎj®ijÐjõjÒ}rgn(jÔ]jÕ]jÖ]j×]jÚ]ujÜMtjÞ]rhnjçXtSince multiple urgent messages may be sent before a message is read, the order of urgent messages is not guaranteed.rin…�rjn}rkn(jÅjbnjÆjenubaubaubjò)�rln}rmn(jÅXWhen getting a message, the reader checks the high priority linked list first. If a message is present on that list, it is returned. If not, the normal priority linked list is checked. If a message is present there, it is returned. Otherwise the synchronizer's wait function is called.rnnjÆj njÎj®ijÐjõjÒ}ron(jÔ]jÕ]jÖ]j×]jÚ]ujÜMvjÝhjÞ]rpnjçXWhen getting a message, the reader checks the high priority linked list first. If a message is present on that list, it is returned. If not, the normal priority linked list is checked. If a message is present there, it is returned. Otherwise the synchronizer's wait function is called.rqn…�rrn}rsn(jÅjnnjÆjlnubaubjë)�rtn}run(jÅXÓThe MessageQ priority feature is enabled by the selecting different MessageQ transports. Some MessageQ implementations (e.g. Linux) may not support multiple transports and therefore may not support this feature.jÆj njÎj®ijÐjïjÒ}rvn(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rwnjò)�rxn}ryn(jÅXÓThe MessageQ priority feature is enabled by the selecting different MessageQ transports. Some MessageQ implementations (e.g. Linux) may not support multiple transports and therefore may not support this feature.rznjÆjtnjÎj®ijÐjõjÒ}r{n(jÔ]jÕ]jÖ]j×]jÚ]ujÜM{jÞ]r|njçXÓThe MessageQ priority feature is enabled by the selecting different MessageQ transports. Some MessageQ implementations (e.g. Linux) may not support multiple transports and therefore may not support this feature.r}n…�r~n}rn(jÅjznjÆjxnubaubaubeubjÇ)�r€n}r�n(jÅUjÆjœijÎj®ijÐjÑjÒ}r‚n(jÔ]jÕ]jÖ]j×]rƒnU thread-synchronization-bios-onlyr„najÚ]r…nh3aujÜMjÝhjÞ]r†n(jà)�r‡n}rˆn(jÅX"Thread Synchronization (BIOS only)r‰njÆj€njÎj®ijÐjäjÒ}rŠn(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r‹njçX"Thread Synchronization (BIOS only)rŒn…�r�n}rŽn(jÅj‰njÆj‡nubaubjò)�r�n}r�n(jÅX”MessageQ supports reads and writes of different thread models. It can work with threading models that include SYS/BIOS's Hwi, Swi, and Task threads.r‘njÆj€njÎj®ijÐjõjÒ}r’n(jÔ]jÕ]jÖ]j×]jÚ]ujÜM€jÝhjÞ]r“njçX”MessageQ supports reads and writes of different thread models. It can work with threading models that include SYS/BIOS's Hwi, Swi, and Task threads.r”n…�r•n}r–n(jÅj‘njÆj�nubaubjò)�r—n}r˜n(jÅX5This flexibility is accomplished by using an implementation of the xdc.runtime.knl.ISync interface. The creator of the message queue must also create an object of the desired ISync implementation and assign that object as the "synchronizer" of the MessageQ. Each message queue has its own synchronizer object.r™njÆj€njÎj®ijÐjõjÒ}ršn(jÔ]jÕ]jÖ]j×]jÚ]ujÜMƒjÝhjÞ]r›njçX5This flexibility is accomplished by using an implementation of the xdc.runtime.knl.ISync interface. The creator of the message queue must also create an object of the desired ISync implementation and assign that object as the "synchronizer" of the MessageQ. Each message queue has its own synchronizer object.rœn…�r�n}ržn(jÅj™njÆj—nubaubjò)�rŸn}r n(jÅXsAn ISync object has two main functions: signal() and wait(). Whenever MessageQ_put() is called, the signal() function of the ISync implementation is called. If MessageQ_get() is called when there are no messages on the queue, the wait() function of the ISync implementation is called. The timeout passed into the MessageQ_get() is directly passed to the ISync wait() API.r¡njÆj€njÎj®ijÐjõjÒ}r¢n(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‡jÝhjÞ]r£njçXsAn ISync object has two main functions: signal() and wait(). Whenever MessageQ_put() is called, the signal() function of the ISync implementation is called. If MessageQ_get() is called when there are no messages on the queue, the wait() function of the ISync implementation is called. The timeout passed into the MessageQ_get() is directly passed to the ISync wait() API.r¤n…�r¥n}r¦n(jÅj¡njÆjŸnubaubjë)�r§n}r¨n(jÅXˆSince ISync implementations must be binary, the reader thread must drain the MessageQ of all messages before waiting for another signal.r©njÆj€njÎj®ijÐjïjÒ}rªn(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r«njò)�r¬n}r­n(jÅj©njÆj§njÎj®ijÐjõjÒ}r®n(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]r¯njçXˆSince ISync implementations must be binary, the reader thread must drain the MessageQ of all messages before waiting for another signal.r°n…�r±n}r²n(jÅj©njÆj¬nubaubaubjò)�r³n}r´n(jÅXpFor example, if the reader is a SYS/BIOS Swi, the instance could be a SyncSwi. When a MessageQ_put() is called, the Swi_post() API would be called. The Swi would run and it must call MessageQ_get() until no messages are returned. If the Swi does not get all the messages, the Swi will not run again, or at least will not run until a new message is placed on the queue.rµnjÆj€njÎj®ijÐjõjÒ}r¶n(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÝhjÞ]r·njçXpFor example, if the reader is a SYS/BIOS Swi, the instance could be a SyncSwi. When a MessageQ_put() is called, the Swi_post() API would be called. The Swi would run and it must call MessageQ_get() until no messages are returned. If the Swi does not get all the messages, the Swi will not run again, or at least will not run until a new message is placed on the queue.r¸n…�r¹n}rºn(jÅjµnjÆj³nubaubjò)�r»n}r¼n(jÅXüThe calls to ISync functions occurs directly in MessageQ_put() when the call occurs on the same processor where the queue was created. In the remote case, the transport calls MessageQ_put(), which is then a local put, and the signal function is called.r½njÆj€njÎj®ijÐjõjÒ}r¾n(jÔ]jÕ]jÖ]j×]jÚ]ujÜM”jÝhjÞ]r¿njçXüThe calls to ISync functions occurs directly in MessageQ_put() when the call occurs on the same processor where the queue was created. In the remote case, the transport calls MessageQ_put(), which is then a local put, and the signal function is called.rÀn…�rÁn}rÂn(jÅj½njÆj»nubaubjò)�rÃn}rÄn(jÅXJThe following are ISync implementations provided by XDCtools and SYS/BIOS:rÅnjÆj€njÎj®ijÐjõjÒ}rÆn(jÔ]jÕ]jÖ]j×]jÚ]ujÜM–jÝhjÞ]rÇnjçXJThe following are ISync implementations provided by XDCtools and SYS/BIOS:rÈn…�rÉn}rÊn(jÅjÅnjÆjÃnubaubjt)�rËn}rÌn(jÅUjÆj€njÎj®ijÐjwjÒ}rÍn(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM˜jÝhjÞ]rÎn(j{)�rÏn}rÐn(jÅX}**xdc.runtime.knl.SyncNull.** The signal() and wait() functions do nothing. Basically this implementation allows for polling.rÑnjÆjËnjÎj®ijÐjjÒ}rÒn(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÓnjò)�rÔn}rÕn(jÅjÑnjÆjÏnjÎj®ijÐjõjÒ}rÖn(jÔ]jÕ]jÖ]j×]jÚ]ujÜM˜jÞ]r×n(jÚ)�rØn}rÙn(jÅX**xdc.runtime.knl.SyncNull.**jÒ}rÚn(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÔnjÞ]rÛnjçXxdc.runtime.knl.SyncNull.rÜn…�rÝn}rÞn(jÅUjÆjØnubajÐjâubjçX` The signal() and wait() functions do nothing. Basically this implementation allows for polling.rßn…�ràn}rán(jÅX` The signal() and wait() functions do nothing. Basically this implementation allows for polling.jÆjÔnubeubaubj{)�rân}rãn(jÅXƒ**xdc.runtime.knl.SyncSemThread.** An implementation built using the xdc.runtime.knl.Semaphore module, which is a binary semaphore.ränjÆjËnjÎj®ijÐjjÒ}rån(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rænjò)�rçn}rèn(jÅjänjÆjânjÎj®ijÐjõjÒ}rén(jÔ]jÕ]jÖ]j×]jÚ]ujÜM™jÞ]rên(jÚ)�rën}rìn(jÅX"**xdc.runtime.knl.SyncSemThread.**jÒ}rín(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçnjÞ]rînjçXxdc.runtime.knl.SyncSemThread.rïn…�rðn}rñn(jÅUjÆjënubajÐjâubjçXa An implementation built using the xdc.runtime.knl.Semaphore module, which is a binary semaphore.ròn…�rón}rôn(jÅXa An implementation built using the xdc.runtime.knl.Semaphore module, which is a binary semaphore.jÆjçnubeubaubj{)�rõn}rön(jÅXz**xdc.runtime.knl.SyncGeneric.xdc.** This implementation allows you to use custom signal() and wait() functions as needed.r÷njÆjËnjÎj®ijÐjjÒ}røn(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rùnjò)�rún}rûn(jÅj÷njÆjõnjÎj®ijÐjõjÒ}rün(jÔ]jÕ]jÖ]j×]jÚ]ujÜMšjÞ]rýn(jÚ)�rþn}rÿn(jÅX$**xdc.runtime.knl.SyncGeneric.xdc.**jÒ}ro(jÔ]jÕ]jÖ]j×]jÚ]ujÆjúnjÞ]rojçX xdc.runtime.knl.SyncGeneric.xdc.ro…�ro}ro(jÅUjÆjþnubajÐjâubjçXV This implementation allows you to use custom signal() and wait() functions as needed.ro…�ro}ro(jÅXV This implementation allows you to use custom signal() and wait() functions as needed.jÆjúnubeubaubj{)�ro}r o(jÅX¼**ti.sysbios.syncs.SyncSem.** An implementation built using the ti.sysbios.ipc.Semaphore module. The signal() function runs a Semaphore_post(). The wait() function runs a Semaphore_pend().r ojÆjËnjÎj®ijÐjjÒ}r o(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r ojò)�r o}ro(jÅj ojÆjojÎj®ijÐjõjÒ}ro(jÔ]jÕ]jÖ]j×]jÚ]ujÜM›jÞ]ro(jÚ)�ro}ro(jÅX**ti.sysbios.syncs.SyncSem.**jÒ}ro(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ojÞ]rojçXti.sysbios.syncs.SyncSem.ro…�ro}ro(jÅUjÆjoubajÐjâubjçXŸ An implementation built using the ti.sysbios.ipc.Semaphore module. The signal() function runs a Semaphore_post(). The wait() function runs a Semaphore_pend().ro…�ro}ro(jÅXŸ An implementation built using the ti.sysbios.ipc.Semaphore module. The signal() function runs a Semaphore_post(). The wait() function runs a Semaphore_pend().jÆj oubeubaubj{)�ro}ro(jÅXÎ**ti.sysbios.syncs.SyncSwi.** An implementation built using the ti.sysbios.knl.Swi module. The signal() function runs a Swi_post(). The wait() function does nothing and returns FALSE if the timeout elapses.rojÆjËnjÎj®ijÐjjÒ}ro(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rojò)�r o}r!o(jÅjojÆjojÎj®ijÐjõjÒ}r"o(jÔ]jÕ]jÖ]j×]jÚ]ujÜMœjÞ]r#o(jÚ)�r$o}r%o(jÅX**ti.sysbios.syncs.SyncSwi.**jÒ}r&o(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ojÞ]r'ojçXti.sysbios.syncs.SyncSwi.r(o…�r)o}r*o(jÅUjÆj$oubajÐjâubjçX± An implementation built using the ti.sysbios.knl.Swi module. The signal() function runs a Swi_post(). The wait() function does nothing and returns FALSE if the timeout elapses.r+o…�r,o}r-o(jÅX± An implementation built using the ti.sysbios.knl.Swi module. The signal() function runs a Swi_post(). The wait() function does nothing and returns FALSE if the timeout elapses.jÆj oubeubaubj{)�r.o}r/o(jÅX **ti.sysbios.syncs.SyncEvent.** An implementation built using the ti.sysbios.ipc.Event module. The signal() function runs an Event_post(). The wait() function does nothing and returns FALSE if the timeout elapses. This implementation allows waiting on multiple events. jÆjËnjÎj®ijÐjjÒ}r0o(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r1ojò)�r2o}r3o(jÅX **ti.sysbios.syncs.SyncEvent.** An implementation built using the ti.sysbios.ipc.Event module. The signal() function runs an Event_post(). The wait() function does nothing and returns FALSE if the timeout elapses. This implementation allows waiting on multiple events.jÆj.ojÎj®ijÐjõjÒ}r4o(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]r5o(jÚ)�r6o}r7o(jÅX**ti.sysbios.syncs.SyncEvent.**jÒ}r8o(jÔ]jÕ]jÖ]j×]jÚ]ujÆj2ojÞ]r9ojçXti.sysbios.syncs.SyncEvent.r:o…�r;o}ro}r?o(jÅXí An implementation built using the ti.sysbios.ipc.Event module. The signal() function runs an Event_post(). The wait() function does nothing and returns FALSE if the timeout elapses. This implementation allows waiting on multiple events.jÆj2oubeubaubeubjò)�r@o}rAo(jÅX¹The following code from the "message" example creates a SyncSem instance and assigns it to the synchronizer field in the MessageQ_Params structure before creating the MessageQ instance:rBojÆj€njÎj®ijÐjõjÒ}rCo(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŸjÝhjÞ]rDojçX¹The following code from the "message" example creates a SyncSem instance and assigns it to the synchronizer field in the MessageQ_Params structure before creating the MessageQ instance:rEo…�rFo}rGo(jÅjBojÆj@oubaubj)�rHo}rIo(jÅX‡#include ... MessageQ_Params messageQParams; SyncSem_Handle syncSemHandle; /* Create a message queue using SyncSem as synchronizer */ syncSemHandle = SyncSem_create(NULL, NULL); MessageQ_Params_init(&messageQParams); messageQParams.synchronizer = SyncSem_Handle_upCast(syncSemHandle); messageQ = MessageQ_create(CORE1_MESSAGEQNAME, &messageQParams, NULL);jÆj€njÎj®ijÐjjÒ}rJo(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¶jÝhjÞ]rKojçX‡#include ... MessageQ_Params messageQParams; SyncSem_Handle syncSemHandle; /* Create a message queue using SyncSem as synchronizer */ syncSemHandle = SyncSem_create(NULL, NULL); MessageQ_Params_init(&messageQParams); messageQParams.synchronizer = SyncSem_Handle_upCast(syncSemHandle); messageQ = MessageQ_create(CORE1_MESSAGEQNAME, &messageQParams, NULL);rLo…�rMo}rNo(jÅUjÆjHoubaubeubjÇ)�rOo}rPo(jÅUjÆjœijÎj®ijÐjÑjÒ}rQo(jÔ]jÕ]jÖ]j×]rRoU replyqueuerSoajÚ]rTohÃaujÜM°jÝhjÞ]rUo(jà)�rVo}rWo(jÅX ReplyQueuerXojÆjOojÎj®ijÐjäjÒ}rYo(jÔ]jÕ]jÖ]j×]jÚ]ujÜM°jÝhjÞ]rZojçX ReplyQueuer[o…�r\o}r]o(jÅjXojÆjVoubaubjò)�r^o}r_o(jÅX(For some applications, doing a MessageQ_open() on a queue is not realistic. For example, a server may not want to open all the clients' queues for sending responses. To support this use case, the message sender can embed a reply queueId in the message using the MessageQ_setReplyQueue() function.r`ojÆjOojÎj®ijÐjõjÒ}rao(jÔ]jÕ]jÖ]j×]jÚ]ujÜM±jÝhjÞ]rbojçX(For some applications, doing a MessageQ_open() on a queue is not realistic. For example, a server may not want to open all the clients' queues for sending responses. To support this use case, the message sender can embed a reply queueId in the message using the MessageQ_setReplyQueue() function.rco…�rdo}reo(jÅj`ojÆj^oubaubj)�rfo}rgo(jÅX_Void MessageQ_setReplyQueue(MessageQ_Handle handle, MessageQ_Msg msg)jÆjOojÎj®ijÐjjÒ}rho(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMËjÝhjÞ]riojçX_Void MessageQ_setReplyQueue(MessageQ_Handle handle, MessageQ_Msg msg)rjo…�rko}rlo(jÅUjÆjfoubaubjò)�rmo}rno(jÅXIThis API stores the message queue's queueId into fields in the MsgHeader.roojÆjOojÎj®ijÐjõjÒ}rpo(jÔ]jÕ]jÖ]j×]jÚ]ujÜM»jÝhjÞ]rqojçXIThis API stores the message queue's queueId into fields in the MsgHeader.rro…�rso}rto(jÅjoojÆjmoubaubjò)�ruo}rvo(jÅXDThe MessageQ_getReplyQueue() function does the reverse. For example:rwojÆjOojÎj®ijÐjõjÒ}rxo(jÔ]jÕ]jÖ]j×]jÚ]ujÜM½jÝhjÞ]ryojçXDThe MessageQ_getReplyQueue() function does the reverse. For example:rzo…�r{o}r|o(jÅjwojÆjuoubaubj)�r}o}r~o(jÅXêMessageQ_QueueId replyQueue; MessageQ_Msg msg; ... /* Use the embedded reply destination */ replyMessageQ = MessageQ_getReplyQueue(msg); if (replyMessageQ == MessageQ_INVALIDMESSAGEQ) { System_abort("Invalid reply queue\n"); }jÆjOojÎj®ijÐjjÒ}ro(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÔjÝhjÞ]r€ojçXêMessageQ_QueueId replyQueue; MessageQ_Msg msg; ... /* Use the embedded reply destination */ replyMessageQ = MessageQ_getReplyQueue(msg); if (replyMessageQ == MessageQ_INVALIDMESSAGEQ) { System_abort("Invalid reply queue\n"); }r�o…�r‚o}rƒo(jÅUjÆj}oubaubjò)�r„o}r…o(jÅX_The MessageQ_QueueId value returned by this function can then be used in a MessageQ_put() call.r†ojÆjOojÎj®ijÐjõjÒ}r‡o(jÔ]jÕ]jÖ]j×]jÚ]ujÜMËjÝhjÞ]rˆojçX_The MessageQ_QueueId value returned by this function can then be used in a MessageQ_put() call.r‰o…�rŠo}r‹o(jÅj†ojÆj„oubaubjò)�rŒo}r�o(jÅXQThe queue that is embedded in the message does not have to be the sender's queue.rŽojÆjOojÎj®ijÐjõjÒ}r�o(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÍjÝhjÞ]r�ojçXQThe queue that is embedded in the message does not have to be the sender's queue.r‘o…�r’o}r“o(jÅjŽojÆjŒoubaubeubjÇ)�r”o}r•o(jÅUjÆjœijÎj®ijÐjÑjÒ}r–o(jÔ]jÕ]jÖ]j×]r—oU-remote-communication-via-transports-bios-onlyr˜oajÚ]r™ohUaujÜMÐjÝhjÞ]ršo(jà)�r›o}rœo(jÅX/Remote Communication via Transports (BIOS only)r�ojÆj”ojÎj®ijÐjäjÒ}ržo(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÐjÝhjÞ]rŸojçX/Remote Communication via Transports (BIOS only)r o…�r¡o}r¢o(jÅj�ojÆj›oubaubjò)�r£o}r¤o(jÅXvMessageQ is designed to support multiple processors. To allow this, different transports can be plugged into MessageQ.r¥ojÆj”ojÎj®ijÐjõjÒ}r¦o(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÒjÝhjÞ]r§ojçXvMessageQ is designed to support multiple processors. To allow this, different transports can be plugged into MessageQ.r¨o…�r©o}rªo(jÅj¥ojÆj£oubaubjò)�r«o}r¬o(jÅXIn a multi-processor system, MessageQ communicates with other processors via ti.sdo.ipc.interfaces.IMessageQTransport instances. There can be up to two IMessageQTransport instances for each processor to which communication is desired. One can be a normal-priority transport and the other for handling high-priority messages. This is done via the priority parameter in the transport create() function. If there is only one register to a remote processor (either normal or high), all messages go via that transport.r­ojÆj”ojÎj®ijÐjõjÒ}r®o(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÔjÝhjÞ]r¯ojçXIn a multi-processor system, MessageQ communicates with other processors via ti.sdo.ipc.interfaces.IMessageQTransport instances. There can be up to two IMessageQTransport instances for each processor to which communication is desired. One can be a normal-priority transport and the other for handling high-priority messages. This is done via the priority parameter in the transport create() function. If there is only one register to a remote processor (either normal or high), all messages go via that transport.r°o…�r±o}r²o(jÅj­ojÆj«oubaubjò)�r³o}r´o(jÅX”There can be different transports on a processor. For example, there may be a shared memory transport to processor A and an sRIO one to processor B.rµojÆj”ojÎj®ijÐjõjÒ}r¶o(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÝhjÞ]r·ojçX”There can be different transports on a processor. For example, there may be a shared memory transport to processor A and an sRIO one to processor B.r¸o…�r¹o}rºo(jÅjµojÆj³oubaubjò)�r»o}r¼o(jÅXúWhen your application calls Ipc_start(), the default transport instance used by MessageQ is created automatically. Internally, transport instances are responsible for registering themselves with MessageQ via the MessageQ_registerTransport() function.r½ojÆj”ojÎj®ijÐjõjÒ}r¾o(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÜjÝhjÞ]r¿ojçXúWhen your application calls Ipc_start(), the default transport instance used by MessageQ is created automatically. Internally, transport instances are responsible for registering themselves with MessageQ via the MessageQ_registerTransport() function.rÀo…�rÁo}rÂo(jÅj½ojÆj»oubaubjò)�rÃo}rÄo(jÅXµIPC provides an implementation of the IMessageQTransport interface called ti.sdo.ipc.transports.TransportShm (shared memory). You can write other implementations to meet your needs.rÅojÆj”ojÎj®ijÐjõjÒ}rÆo(jÔ]jÕ]jÖ]j×]jÚ]ujÜMßjÝhjÞ]rÇojçXµIPC provides an implementation of the IMessageQTransport interface called ti.sdo.ipc.transports.TransportShm (shared memory). You can write other implementations to meet your needs.rÈo…�rÉo}rÊo(jÅjÅojÆjÃoubaubjò)�rËo}rÌo(jÅX When a transport is created via a transport-specific create() call, a remote processor ID (defined via the MultiProc module) is specified. This ID denotes which processor this instance communicates with. Additionally there are configuration properties for the transport--such as the message priority handled--that can be defined in a Params structure. The transport takes these pieces of information and registers itself with MessageQ. MessageQ now knows which transport to call when sending a message to a remote processor.rÍojÆj”ojÎj®ijÐjõjÒ}rÎo(jÔ]jÕ]jÖ]j×]jÚ]ujÜMâjÝhjÞ]rÏojçX When a transport is created via a transport-specific create() call, a remote processor ID (defined via the MultiProc module) is specified. This ID denotes which processor this instance communicates with. Additionally there are configuration properties for the transport--such as the message priority handled--that can be defined in a Params structure. The transport takes these pieces of information and registers itself with MessageQ. MessageQ now knows which transport to call when sending a message to a remote processor.rÐo…�rÑo}rÒo(jÅjÍojÆjËoubaubjò)�rÓo}rÔo(jÅXHTrying to send to a processor that has no transport results in an error.rÕojÆj”ojÎj®ijÐjõjÒ}rÖo(jÔ]jÕ]jÖ]j×]jÚ]ujÜMèjÝhjÞ]r×ojçXHTrying to send to a processor that has no transport results in an error.rØo…�rÙo}rÚo(jÅjÕojÆjÓoubaubjÇ)�rÛo}rÜo(jÅUjÆj”ojÎj®ijÐjÑjÒ}rÝo(jÔ]jÕ]jÖ]j×]rÞoU custom-transport-implementationsrßoajÚ]ràoh'aujÜMëjÝhjÞ]ráo(jà)�râo}rão(jÅX Custom Transport ImplementationsräojÆjÛojÎj®ijÐjäjÒ}råo(jÔ]jÕ]jÖ]j×]jÚ]ujÜMëjÝhjÞ]ræojçX Custom Transport Implementationsrço…�rèo}réo(jÅjäojÆjâoubaubjò)�rêo}rëo(jÅX‘Transports can register and unregister themselves dynamically. That is, if the transport instance is deleted, it should unregister with MessageQ.rìojÆjÛojÎj®ijÐjõjÒ}río(jÔ]jÕ]jÖ]j×]jÚ]ujÜMìjÝhjÞ]rîojçX‘Transports can register and unregister themselves dynamically. That is, if the transport instance is deleted, it should unregister with MessageQ.rïo…�rðo}rño(jÅjìojÆjêoubaubjò)�ròo}róo(jÅX¨When receiving a message, transports need to form the MessageQ_QueueId that allows them to call MessageQ_put(). This is accomplished via the MessageQ_getDstQueue() API.rôojÆjÛojÎj®ijÐjõjÒ}rõo(jÔ]jÕ]jÖ]j×]jÚ]ujÜMïjÝhjÞ]röojçX¨When receiving a message, transports need to form the MessageQ_QueueId that allows them to call MessageQ_put(). This is accomplished via the MessageQ_getDstQueue() API.r÷o…�røo}rùo(jÅjôojÆjòoubaubj)�rúo}rûo(jÅX7MessageQ_QueueId MessageQ_getDstQueue(MessageQ_Msg msg)jÆjÛojÎj®ijÐjjÒ}rüo(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]rýojçX7MessageQ_QueueId MessageQ_getDstQueue(MessageQ_Msg msg)rþo…�rÿo}rp(jÅUjÆjúoubaubeubeubjÇ)�rp}rp(jÅUjKjÆjœijÎj®ijÐjÑjÒ}rp(jÔ]rpX%sample runtime program flow (dynamic)rpajÕ]jÖ]j×]rpU#sample-runtime-program-flow-dynamicrpajÚ]ujÜM÷jÝhjÞ]rp(jà)�r p}r p(jÅX%Sample Runtime Program Flow (Dynamic)r pjÆjpjÎj®ijÐjäjÒ}r p(jÔ]jÕ]jÖ]j×]jÚ]ujÜM÷jÝhjÞ]r pjçX%Sample Runtime Program Flow (Dynamic)rp…�rp}rp(jÅj pjÆj pubaubjò)�rp}rp(jÅX1The following figure shows the typical sequence of events when using a MessageQ. A message queue is created by a Task. An open on the same processor then occurs. Assume there is one message in the system. The opener allocates the message and sends it to the created message queue, which gets and frees it.rpjÆjpjÎj®ijÐjõjÒ}rp(jÔ]jÕ]jÖ]j×]jÚ]ujÜMøjÝhjÞ]rpjçX1The following figure shows the typical sequence of events when using a MessageQ. A message queue is created by a Task. An open on the same processor then occurs. Assume there is one message in the system. The opener allocates the message and sends it to the created message queue, which gets and frees it.rp…�rp}rp(jÅjpjÆjpubaubjR)�rp}rp(jÅX*.. Image:: ../images/IpcUG_ipc_2_3_2.png jÆjpjÎXTinternal padding after source/rtos/PDK_Platform_Software/IPC/MessageQ_Module.rst.incrpjÐjZjÒ}rp(UuriX"rtos/../images/IpcUG_ipc_2_3_2.pngrpj×]jÖ]jÔ]jÕ]jX}rpU*jpsjÚ]ujÜMÿjÝhjÞ]ubeubeubjÇ)�rp}r p(jÅUjÆjÊjÎjÏjÐjÑjÒ}r!p(jÔ]jÕ]jÖ]j×]r"pU listmp-moduler#pajÚ]r$ph¿aujÜK;jÝhjÞ]r%p(jà)�r&p}r'p(jÅX ListMP Moduler(pjÆjpjÎjÏjÐjäjÒ}r)p(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÝhjÞ]r*pjçX ListMP Moduler+p…�r,p}r-p(jÅj(pjÆj&pubaubj7)�r.p}r/p(jÅXEhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/ListMP_ModulejÆjpjÎj:X;source/rtos/PDK_Platform_Software/IPC/ListMP_Module.rst.incr0p…�r1p}r2pbjÐj>jÒ}r3p(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r4pjçXEhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/ListMP_Moduler5p…�r6p}r7p(jÅUjÆj.pubaubjÂ)�r8p}r9p(jÅX³.. |lmpCfg_Img1| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆjpjÎj1pjÐjHjÒ}r:p(jÔ]jÕ]jÖ]j×]jÚ]r;pX lmpCfg_Img1rp}r?p(jÅjpjÞ]jÐjZubajÐjÿubaubjÂ)�rIp}rJp(jÅXº.. |lmpRun_Img1| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_list_m_p_8h.html jÆjpjÎj1pjÐjHjÒ}rKp(jÔ]jÕ]jÖ]j×]jÚ]rLpX lmpRun_Img1rMpaujÜKjÝhjÞ]rNpjû)�rOp}rPp(jÅjMpjÒ}rQp(UrefuriXohttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_list_m_p_8h.htmlrRpj×]jÖ]jÔ]jÕ]jÚ]ujÆjIpjÞ]rSpjR)�rTp}rUp(jÅX¨Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_list_m_p_8h.htmlrVpjÒ}rWp(UuriXrtos/../images/Book_run.pngrXpj×]jÖ]jÔ]jÕ]jX}rYpU*jXpsjÚ]UaltjMpujÆjOpjÞ]jÐjZubajÐjÿubaubjc)�rZp}r[p(jÅUjÆjpjÎj1pjÐjfjÒ}r\p(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]r]pji)�r^p}r_p(jÅUjlKjÆjZpjÎj1pjÐjÜjÒ}r`p(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubj3)�rap}rbp(jÅUjÆjpjÎj1pjÐj6jÒ}rcp(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rdpjy )�rep}rfp(jÅUjÒ}rgp(jÔ]jÕ]jÖ]j×]jÚ]ujÆjapjÞ]rhpj~ )�rip}rjp(jÅUjÒ}rkp(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjepjÞ]rlp(jƒ )�rmp}rnp(jÅUjÒ}rop(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjipjÞ]jÐj‡ ubjƒ )�rpp}rqp(jÅUjÒ}rrp(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjipjÞ]jÐj‡ ubj‹ )�rsp}rtp(jÅUjÒ}rup(jÔ]jÕ]jÖ]j×]jÚ]ujÆjipjÞ]rvpj� )�rwp}rxp(jÅUjÒ}ryp(jÔ]jÕ]jÖ]j×]jÚ]ujÆjspjÞ]rzpj• )�r{p}r|p(jÅUjÒ}r}p(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjwpjÞ]r~pjò)�rp}r€p(jÅXAPI Reference Linksr�pjÆj{pjÎj1pjÐjõjÒ}r‚p(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rƒpjçXAPI Reference Linksr„p…�r…p}r†p(jÅj�pjÆjpubaubajÐj¢ ubajÐj£ ubajÐj¤ ubj¥ )�r‡p}rˆp(jÅUjÒ}r‰p(jÔ]jÕ]jÖ]j×]jÚ]ujÆjipjÞ]rŠpj� )�r‹p}rŒp(jÅUjÒ}r�p(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‡pjÞ]rŽp(j• )�r�p}r�p(jÅUjÒ}r‘p(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹pjÞ]r’pjò)�r“p}r”p(jÅX |lmpCfg_Img1|r•pjÆj�pjÎj1pjÐjõjÒ}r–p(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r—pjû)�r˜p}r™p(jÅjqjÆj8qjÎj1pjÐjjÒ}r?q(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r@qjò)�rAq}rBq(jÅj>qjÆj**ListMP_putTail().** Put an element at the end of the ListMP.rÃqjÆj8qjÎj1pjÐjjÒ}rÄq(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÅqjò)�rÆq}rÇq(jÅjÃqjÆjÁqjÎj1pjÐjõjÒ}rÈq(jÔ]jÕ]jÖ]j×]jÚ]ujÜKWjÞ]rÉq(jÚ)�rÊq}rËq(jÅX**ListMP_putTail().**jÒ}rÌq(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆqjÞ]rÍqjçXListMP_putTail().rÎq…�rÏq}rÐq(jÅUjÆjÊqubajÐjâubjçX) Put an element at the end of the ListMP.rÑq…�rÒq}rÓq(jÅX) Put an element at the end of the ListMP.jÆjÆqubeubaubj{)�rÔq}rÕq(jÅXO**ListMP_remove().** Remove the current element from the middle of the ListMP. jÆj8qjÎj1pjÐjjÒ}rÖq(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r×qjò)�rØq}rÙq(jÅXN**ListMP_remove().** Remove the current element from the middle of the ListMP.jÆjÔqjÎj1pjÐjõjÒ}rÚq(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]rÛq(jÚ)�rÜq}rÝq(jÅX**ListMP_remove().**jÒ}rÞq(jÔ]jÕ]jÖ]j×]jÚ]ujÆjØqjÞ]rßqjçXListMP_remove().ràq…�ráq}râq(jÅUjÆjÜqubajÐjâubjçX: Remove the current element from the middle of the ListMP.rãq…�räq}råq(jÅX: Remove the current element from the middle of the ListMP.jÆjØqubeubaubeubjò)�ræq}rçq(jÅXXThis example prints a "flag" field from the list elements in a ListMP instance in order:rèqjÆjpjÎj1pjÐjõjÒ}réq(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÝhjÞ]rêqjçXXThis example prints a "flag" field from the list elements in a ListMP instance in order:rëq…�rìq}ríq(jÅjèqjÆjæqubaubj)�rîq}rïq(jÅX¨System_printf("On the List: "); testElem = NULL; while ((testElem = ListMP_next(handle, (ListMP_Elem *)testElem)) != NULL) { System_printf("%d ", testElem->flag); }jÆjpjÎj1pjÐjjÒ}rðq(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMujÝhjÞ]rñqjçX¨System_printf("On the List: "); testElem = NULL; while ((testElem = ListMP_next(handle, (ListMP_Elem *)testElem)) != NULL) { System_printf("%d ", testElem->flag); }ròq…�róq}rôq(jÅUjÆjîqubaubjò)�rõq}röq(jÅX4This example prints the same items in reverse order:r÷qjÆjpjÎj1pjÐjõjÒ}røq(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÝhjÞ]rùqjçX4This example prints the same items in reverse order:rúq…�rûq}rüq(jÅj÷qjÆjõqubaubj)�rýq}rþq(jÅX•System_printf("in reverse: "); elem = NULL; while ((elem = ListMP_prev(handle, elem)) != NULL) { System_printf("%d ", ((Tester *)elem)->flag); }jÆjpjÎj1pjÐjjÒ}rÿq(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]rrjçX•System_printf("in reverse: "); elem = NULL; while ((elem = ListMP_prev(handle, elem)) != NULL) { System_printf("%d ", ((Tester *)elem)->flag); }rr…�rr}rr(jÅUjÆjýqubaubjò)�rr}rr(jÅX6This example determines if a ListMP instance is empty:rrjÆjpjÎj1pjÐjõjÒ}rr(jÔ]jÕ]jÖ]j×]jÚ]ujÜKnjÝhjÞ]rrjçX6This example determines if a ListMP instance is empty:r r…�r r}r r(jÅjrjÆjrubaubj)�r r}r r(jÅXRif (ListMP_empty(handle1) == TRUE) { System_printf("Yes, handle1 is empty\n"); }jÆjpjÎj1pjÐjjÒ}rr(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM‰jÝhjÞ]rrjçXRif (ListMP_empty(handle1) == TRUE) { System_printf("Yes, handle1 is empty\n"); }rr…�rr}rr(jÅUjÆj rubaubjò)�rr}rr(jÅXDThis example places a sequence of even numbers in a ListMP instance:rrjÆjpjÎj1pjÐjõjÒ}rr(jÔ]jÕ]jÖ]j×]jÚ]ujÜKvjÝhjÞ]rrjçXDThis example places a sequence of even numbers in a ListMP instance:rr…�rr}rr(jÅjrjÆjrubaubj)�rr}rr(jÅXt/* Add 0, 2, 4, 6, 8 */ for (i = 0; i < COUNT; i = i + 2) { ListMP_putTail(handle1, (ListMP_Elem *)&(buf[i])); }jÆjpjÎj1pjÐjjÒ}rr(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM‘jÝhjÞ]rrjçXt/* Add 0, 2, 4, 6, 8 */ for (i = 0; i < COUNT; i = i + 2) { ListMP_putTail(handle1, (ListMP_Elem *)&(buf[i])); }rr…�r r}r!r(jÅUjÆjrubaubjò)�r"r}r#r(jÅX?The instance state information contains a pointer to the head of the linked-list, which is stored in shared memory. Other attributes of the instance stored in shared memory include the version, status, and the size of the shared address. Other processors can obtain a handle to the linked list by calling ListMP_open().r$rjÆjpjÎj1pjÐjõjÒ}r%r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r&rjçX?The instance state information contains a pointer to the head of the linked-list, which is stored in shared memory. Other attributes of the instance stored in shared memory include the version, status, and the size of the shared address. Other processors can obtain a handle to the linked list by calling ListMP_open().r'r…�r(r}r)r(jÅj$rjÆj"rubaubjò)�r*r}r+r(jÅX¡The following figure shows local memory and shared memory for processors Proc 0 and Proc 1, in which Proc 0 calls ListMP_create() and Proc 1 calls ListMP_open().r,rjÆjpjÎj1pjÐjõjÒ}r-r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÝhjÞ]r.rjçX¡The following figure shows local memory and shared memory for processors Proc 0 and Proc 1, in which Proc 0 calls ListMP_create() and Proc 1 calls ListMP_open().r/r…�r0r}r1r(jÅj,rjÆj*rubaubjR)�r2r}r3r(jÅX*.. Image:: ../images/IpcUG_ipc_2_4_1.png jÆjpjÎj1pjÐjZjÒ}r4r(UuriX"rtos/../images/IpcUG_ipc_2_4_1.pngr5rj×]jÖ]jÔ]jÕ]jX}r6rU*j5rsjÚ]ujÜK‡jÝhjÞ]ubjò)�r7r}r8r(jÅXÁThe cache alignment used by the list is taken from the SharedRegion on a per-region basis. The alignment must be the same across all processors and should be the worst-case cache line boundary.r9rjÆjpjÎj1pjÐjõjÒ}r:r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÝhjÞ]r;rjçXÁThe cache alignment used by the list is taken from the SharedRegion on a per-region basis. The alignment must be the same across all processors and should be the worst-case cache line boundary.rr(jÅj9rjÆj7rubaubeubjÇ)�r?r}r@r(jÅUjÆjÊjÎjÏjÐjÑjÒ}rAr(jÔ]jÕ]jÖ]j×]rBrU heapmp-modulerCrajÚ]rDrj$aujÜK?jÝhjÞ]rEr(jà)�rFr}rGr(jÅX HeapMP ModulerHrjÆj?rjÎjÏjÐjäjÒ}rIr(jÔ]jÕ]jÖ]j×]jÚ]ujÜK?jÝhjÞ]rJrjçX HeapMP ModulerKr…�rLr}rMr(jÅjHrjÆjFrubaubj7)�rNr}rOr(jÅXFhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/HeapMP_ModulesjÆj?rjÎj:X<source/rtos/PDK_Platform_Software/IPC/HeapMP_Modules.rst.incrPr…�rQr}rRrbjÐj>jÒ}rSr(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rTrjçXFhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/HeapMP_ModulesrUr…�rVr}rWr(jÅUjÆjNrubaubjÂ)�rXr}rYr(jÅX³.. |hmpCfg_Img1| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆj?rjÎjQrjÐjHjÒ}rZr(jÔ]jÕ]jÖ]j×]jÚ]r[rX hmpCfg_Img1r\raujÜKjÝhjÞ]r]rjû)�r^r}r_r(jÅj\rjÒ}r`r(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrarj×]jÖ]jÔ]jÕ]jÚ]ujÆjXrjÞ]rbrjR)�rcr}rdr(jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrerjÒ}rfr(UuriXrtos/../images/Book_cfg.pngrgrj×]jÖ]jÔ]jÕ]jX}rhrU*jgrsjÚ]Ualtj\rujÆj^rjÞ]jÐjZubajÐjÿubaubjÂ)�rir}rjr(jÅX³.. |hmpCfg_Img2| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆj?rjÎjQrjÐjHjÒ}rkr(jÔ]jÕ]jÖ]j×]jÚ]rlrX hmpCfg_Img2rmraujÜKjÝhjÞ]rnrjû)�ror}rpr(jÅjmrjÒ}rqr(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrrrj×]jÖ]jÔ]jÕ]jÚ]ujÆjirjÞ]rsrjR)�rtr}rur(jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrvrjÒ}rwr(UuriXrtos/../images/Book_cfg.pngrxrj×]jÖ]jÔ]jÕ]jX}ryrU*jxrsjÚ]UaltjmrujÆjorjÞ]jÐjZubajÐjÿubaubjÂ)�rzr}r{r(jÅX³.. |hmpCfg_Img3| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆj?rjÎjQrjÐjHjÒ}r|r(jÔ]jÕ]jÖ]j×]jÚ]r}rX hmpCfg_Img3r~raujÜK jÝhjÞ]rrjû)�r€r}r�r(jÅj~rjÒ}r‚r(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrƒrj×]jÖ]jÔ]jÕ]jÚ]ujÆjzrjÞ]r„rjR)�r…r}r†r(jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr‡rjÒ}rˆr(UuriXrtos/../images/Book_cfg.pngr‰rj×]jÖ]jÔ]jÕ]jX}rŠrU*j‰rsjÚ]Ualtj~rujÆj€rjÞ]jÐjZubajÐjÿubaubjÂ)�r‹r}rŒr(jÅX¾.. |hmpRun_Img1| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_heap_buf_m_p_8h.html jÆj?rjÎjQrjÐjHjÒ}r�r(jÔ]jÕ]jÖ]j×]jÚ]rŽrX hmpRun_Img1r�raujÜK jÝhjÞ]r�rjû)�r‘r}r’r(jÅj�rjÒ}r“r(UrefuriXshttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_heap_buf_m_p_8h.htmlr”rj×]jÖ]jÔ]jÕ]jÚ]ujÆj‹rjÞ]r•rjR)�r–r}r—r(jÅX¬Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_heap_buf_m_p_8h.htmlr˜rjÒ}r™r(UuriXrtos/../images/Book_run.pngršrj×]jÖ]jÔ]jÕ]jX}r›rU*jšrsjÚ]Ualtj�rujÆj‘rjÞ]jÐjZubajÐjÿubaubjÂ)�rœr}r�r(jÅX¾.. |hmpRun_Img2| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_heap_mem_m_p_8h.html jÆj?rjÎjQrjÐjHjÒ}ržr(jÔ]jÕ]jÖ]j×]jÚ]rŸrX hmpRun_Img2r raujÜKjÝhjÞ]r¡rjû)�r¢r}r£r(jÅj rjÒ}r¤r(UrefuriXshttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_heap_mem_m_p_8h.htmlr¥rj×]jÖ]jÔ]jÕ]jÚ]ujÆjœrjÞ]r¦rjR)�r§r}r¨r(jÅX¬Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_heap_mem_m_p_8h.htmlr©rjÒ}rªr(UuriXrtos/../images/Book_run.pngr«rj×]jÖ]jÔ]jÕ]jX}r¬rU*j«rsjÚ]Ualtj rujÆj¢rjÞ]jÐjZubajÐjÿubaubjÂ)�r­r}r®r(jÅXÄ.. |hmpRun_Img3| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_heap_multi_buf_m_p_8h.html jÆj?rjÎjQrjÐjHjÒ}r¯r(jÔ]jÕ]jÖ]j×]jÚ]r°rX hmpRun_Img3r±raujÜKjÝhjÞ]r²rjû)�r³r}r´r(jÅj±rjÒ}rµr(UrefuriXyhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_heap_multi_buf_m_p_8h.htmlr¶rj×]jÖ]jÔ]jÕ]jÚ]ujÆj­rjÞ]r·rjR)�r¸r}r¹r(jÅX²Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_heap_multi_buf_m_p_8h.htmlrºrjÒ}r»r(UuriXrtos/../images/Book_run.pngr¼rj×]jÖ]jÔ]jÕ]jX}r½rU*j¼rsjÚ]Ualtj±rujÆj³rjÞ]jÐjZubajÐjÿubaubjc)�r¾r}r¿r(jÅUjÆj?rjÎjQrjÐjfjÒ}rÀr(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÁrji)�rÂr}rÃr(jÅUjlKjÆj¾rjÎjQrjÐjÜjÒ}rÄr(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubj3)�rÅr}rÆr(jÅUjÆj?rjÎjQrjÐj6jÒ}rÇr(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÈrjy )�rÉr}rÊr(jÅUjÒ}rËr(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÅrjÞ]rÌrj~ )�rÍr}rÎr(jÅUjÒ}rÏr(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjÉrjÞ]rÐr(jƒ )�rÑr}rÒr(jÅUjÒ}rÓr(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÍrjÞ]jÐj‡ ubjƒ )�rÔr}rÕr(jÅUjÒ}rÖr(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÍrjÞ]jÐj‡ ubjƒ )�r×r}rØr(jÅUjÒ}rÙr(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÍrjÞ]jÐj‡ ubj‹ )�rÚr}rÛr(jÅUjÒ}rÜr(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÍrjÞ]rÝrj� )�rÞr}rßr(jÅUjÒ}ràr(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÚrjÞ]rárj• )�râr}rãr(jÅUjÒ}rär(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjÞrjÞ]rårjò)�rær}rçr(jÅXAPI Reference LinksrèrjÆjârjÎjQrjÐjõjÒ}rér(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rêrjçXAPI Reference Linksrër…�rìr}rír(jÅjèrjÆjærubaubajÐj¢ ubajÐj£ ubajÐj¤ ubj¥ )�rîr}rïr(jÅUjÒ}rðr(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÍrjÞ]rñr(j� )�ròr}rór(jÅUjÒ}rôr(jÔ]jÕ]jÖ]j×]jÚ]ujÆjîrjÞ]rõr(j• )�rör}r÷r(jÅUjÒ}rør(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòrjÞ]rùrjò)�rúr}rûr(jÅX |hmpCfg_Img1|rürjÆjörjÎjQrjÐjõjÒ}rýr(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rþrjû)�rÿr}rs(jÅj\rjÆjúrjÎNjÐjÿjÒ}rs(Urefurijarj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]rsjR)�rs}rs(jÅjerjÆjÿrjÎNjÐjZjÒ}rs(UuriXrtos/../images/Book_cfg.pngrsj×]jÖ]jÔ]jÕ]jX}rsU*jssjÚ]Ualtj\rujÜNjÞ]ubaubaubajÐj¢ ubj• )�rs}r s(jÅUjÒ}r s(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòrjÞ]r sjò)�r s}r s(jÅX |hmpRun_Img1|rsjÆjsjÎjQrjÐjõjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rsjû)�rs}rs(jÅj�rjÆj sjÎNjÐjÿjÒ}rs(Urefurij”rj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]rsjR)�rs}rs(jÅj˜rjÆjsjÎNjÐjZjÒ}rs(UuriXrtos/../images/Book_run.pngrsj×]jÖ]jÔ]jÕ]jX}rsU*jssjÚ]Ualtj�rujÜNjÞ]ubaubaubajÐj¢ ubj• )�rs}rs(jÅUjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòrjÞ]rsjò)�rs}rs(jÅXHeapBufr sjÆjsjÎjQrjÐjõjÒ}r!s(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r"sjçXHeapBufr#s…�r$s}r%s(jÅj sjÆjsubaubajÐj¢ ubejÐj£ ubj� )�r&s}r's(jÅUjÒ}r(s(jÔ]jÕ]jÖ]j×]jÚ]ujÆjîrjÞ]r)s(j• )�r*s}r+s(jÅUjÒ}r,s(jÔ]jÕ]jÖ]j×]jÚ]ujÆj&sjÞ]r-sjò)�r.s}r/s(jÅX |hmpCfg_Img2|r0sjÆj*sjÎjQrjÐjõjÒ}r1s(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r2sjû)�r3s}r4s(jÅjmrjÆj.sjÎNjÐjÿjÒ}r5s(Urefurijrrj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]r6sjR)�r7s}r8s(jÅjvrjÆj3sjÎNjÐjZjÒ}r9s(UuriXrtos/../images/Book_cfg.pngr:sj×]jÖ]jÔ]jÕ]jX}r;sU*j:ssjÚ]UaltjmrujÜNjÞ]ubaubaubajÐj¢ ubj• )�rs(jÔ]jÕ]jÖ]j×]jÚ]ujÆj&sjÞ]r?sjò)�r@s}rAs(jÅX |hmpRun_Img2|rBsjÆj`_.jÆj?rjÎjQrjÐjõjÒ}r�s(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÝhjÞ]r‘s(jçXCThe ti.sdo.ipc.heaps package provides three implementations of the r’s…�r“s}r”s(jÅXCThe ti.sdo.ipc.heaps package provides three implementations of the jÆjŽsubjû)�r•s}r–s(jÅXZ`xdc.runtime.IHeap interface `_jÒ}r—s(UnameXxdc.runtime.IHeap interfacejX9http://rtsc.eclipse.org/docs-tip/Using_xdc.runtime_Memoryr˜sj×]jÖ]jÔ]jÕ]jÚ]ujÆjŽsjÞ]r™sjçXxdc.runtime.IHeap interfaceršs…�r›s}rœs(jÅUjÆj•subajÐjÿubj)�r�s}ržs(jÅX< jKjÆjŽsjÐj jÒ}rŸs(Urefurij˜sj×]r sUxdc-runtime-iheap-interfacer¡sajÖ]jÔ]jÕ]jÚ]r¢shòaujÞ]ubjçX.…�r£s}r¤s(jÅX.jÆjŽsubeubjt)�r¥s}r¦s(jÅUjÆj?rjÎjQrjÐjwjÒ}r§s(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK%jÝhjÞ]r¨s(j{)�r©s}rªs(jÅX(**HeapBufMP.** Fixed-size memory manager. All buffers allocated from a HeapBufMP instance are of the same size. There can be multiple instances of HeapBufMP that manage different sizes. The ti.sdo.ipc.heaps.HeapBufMP module is modeled after SYS/BIOS 6's HeapBuf module (ti.sysbios.heaps.HeapBuf).jÆj¥sjÎjQrjÐjjÒ}r«s(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¬sjò)�r­s}r®s(jÅX(**HeapBufMP.** Fixed-size memory manager. All buffers allocated from a HeapBufMP instance are of the same size. There can be multiple instances of HeapBufMP that manage different sizes. The ti.sdo.ipc.heaps.HeapBufMP module is modeled after SYS/BIOS 6's HeapBuf module (ti.sysbios.heaps.HeapBuf).jÆj©sjÎjQrjÐjõjÒ}r¯s(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÞ]r°s(jÚ)�r±s}r²s(jÅX**HeapBufMP.**jÒ}r³s(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­sjÞ]r´sjçX HeapBufMP.rµs…�r¶s}r·s(jÅUjÆj±subajÐjâubjçX Fixed-size memory manager. All buffers allocated from a HeapBufMP instance are of the same size. There can be multiple instances of HeapBufMP that manage different sizes. The ti.sdo.ipc.heaps.HeapBufMP module is modeled after SYS/BIOS 6's HeapBuf module (ti.sysbios.heaps.HeapBuf).r¸s…�r¹s}rºs(jÅX Fixed-size memory manager. All buffers allocated from a HeapBufMP instance are of the same size. There can be multiple instances of HeapBufMP that manage different sizes. The ti.sdo.ipc.heaps.HeapBufMP module is modeled after SYS/BIOS 6's HeapBuf module (ti.sysbios.heaps.HeapBuf).jÆj­subeubaubj{)�r»s}r¼s(jÅX•**HeapMultiBufMP.** Each instance supports up to 8 different fixed sizes of buffers. When an allocation request is made, the HeapMultiBufMP instance searches the different buckets to find the smallest one that satisfies the request. If that bucket is empty, the allocation fails. The ti.sdo.ipc.heaps.HeapMultiBufMP module is modeled after SYS/BIOS 6's HeapMultiBuf module (ti.sysbios.heaps.HeapMultiBuf).jÆj¥sjÎjQrjÐjjÒ}r½s(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¾sjò)�r¿s}rÀs(jÅX•**HeapMultiBufMP.** Each instance supports up to 8 different fixed sizes of buffers. When an allocation request is made, the HeapMultiBufMP instance searches the different buckets to find the smallest one that satisfies the request. If that bucket is empty, the allocation fails. The ti.sdo.ipc.heaps.HeapMultiBufMP module is modeled after SYS/BIOS 6's HeapMultiBuf module (ti.sysbios.heaps.HeapMultiBuf).jÆj»sjÎjQrjÐjõjÒ}rÁs(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]rÂs(jÚ)�rÃs}rÄs(jÅX**HeapMultiBufMP.**jÒ}rÅs(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¿sjÞ]rÆsjçXHeapMultiBufMP.rÇs…�rÈs}rÉs(jÅUjÆjÃsubajÐjâubjçX‚ Each instance supports up to 8 different fixed sizes of buffers. When an allocation request is made, the HeapMultiBufMP instance searches the different buckets to find the smallest one that satisfies the request. If that bucket is empty, the allocation fails. The ti.sdo.ipc.heaps.HeapMultiBufMP module is modeled after SYS/BIOS 6's HeapMultiBuf module (ti.sysbios.heaps.HeapMultiBuf).rÊs…�rËs}rÌs(jÅX‚ Each instance supports up to 8 different fixed sizes of buffers. When an allocation request is made, the HeapMultiBufMP instance searches the different buckets to find the smallest one that satisfies the request. If that bucket is empty, the allocation fails. The ti.sdo.ipc.heaps.HeapMultiBufMP module is modeled after SYS/BIOS 6's HeapMultiBuf module (ti.sysbios.heaps.HeapMultiBuf).jÆj¿subeubaubj{)�rÍs}rÎs(jÅX**HeapMemMP.** Variable-size memory manager. HeapMemMP manages a single buffer in shared memory from which blocks of user-specified length are allocated and freed. The ti.sdo.ipc.heaps.HeapMemMP module is modeled after SYS/BIOS 6's HeapMem module (ti.sysbios.heaps.HeapMem). jÆj¥sjÎjQrjÐjjÒ}rÏs(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÐsjò)�rÑs}rÒs(jÅX**HeapMemMP.** Variable-size memory manager. HeapMemMP manages a single buffer in shared memory from which blocks of user-specified length are allocated and freed. The ti.sdo.ipc.heaps.HeapMemMP module is modeled after SYS/BIOS 6's HeapMem module (ti.sysbios.heaps.HeapMem).jÆjÍsjÎjQrjÐjõjÒ}rÓs(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÞ]rÔs(jÚ)�rÕs}rÖs(jÅX**HeapMemMP.**jÒ}r×s(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÑsjÞ]rØsjçX HeapMemMP.rÙs…�rÚs}rÛs(jÅUjÆjÕsubajÐjâubjçX Variable-size memory manager. HeapMemMP manages a single buffer in shared memory from which blocks of user-specified length are allocated and freed. The ti.sdo.ipc.heaps.HeapMemMP module is modeled after SYS/BIOS 6's HeapMem module (ti.sysbios.heaps.HeapMem).rÜs…�rÝs}rÞs(jÅX Variable-size memory manager. HeapMemMP manages a single buffer in shared memory from which blocks of user-specified length are allocated and freed. The ti.sdo.ipc.heaps.HeapMemMP module is modeled after SYS/BIOS 6's HeapMem module (ti.sysbios.heaps.HeapMem).jÆjÑsubeubaubeubjò)�rßs}ràs(jÅXoThe main addition to these modules is the use of shared memory and the management of multi-processor exclusion.rásjÆj?rjÎjQrjÐjõjÒ}râs(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÝhjÞ]rãsjçXoThe main addition to these modules is the use of shared memory and the management of multi-processor exclusion.räs…�rås}ræs(jÅjásjÆjßsubaubjò)�rçs}rès(jÅX�The SharedRegion modules, and therefore the MessageQ module and other IPC modules that use SharedRegion, use a HeapMemMP instance internally.résjÆj?rjÎjQrjÐjõjÒ}rês(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÝhjÞ]rësjçX�The SharedRegion modules, and therefore the MessageQ module and other IPC modules that use SharedRegion, use a HeapMemMP instance internally.rìs…�rís}rîs(jÅjésjÆjçsubaubjò)�rïs}rðs(jÅXiThe following subsections use "Heap*MP" to refer to the HeapBufMP, HeapMultiBufMP, and HeapMemMP modules.rñsjÆj?rjÎjQrjÐjõjÒ}ròs(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÝhjÞ]rósjçXiThe following subsections use "Heap*MP" to refer to the HeapBufMP, HeapMultiBufMP, and HeapMemMP modules.rôs…�rõs}rös(jÅjñsjÆjïsubaubjë)�r÷s}røs(jÅX¢These Heap*MP Modules are only available on SYS/BIOS-based cores, they are not available when running an HLOS (e.g. Linux). As an HLOS shared memory solution, many Linux SDKs are recommending/providing CMEM. There are limitations (e.g. you cannot alloc on HLOS and free on RTOS), but these are in line with using the HLOS as a master (owning all resources) and RTOS as a slave (using resources provided by the master).jÆj?rjÎjQrjÐjïjÒ}rùs(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rúsjò)�rûs}rüs(jÅX¢These Heap*MP Modules are only available on SYS/BIOS-based cores, they are not available when running an HLOS (e.g. Linux). As an HLOS shared memory solution, many Linux SDKs are recommending/providing CMEM. There are limitations (e.g. you cannot alloc on HLOS and free on RTOS), but these are in line with using the HLOS as a master (owning all resources) and RTOS as a slave (using resources provided by the master).rýsjÆj÷sjÎjQrjÐjõjÒ}rþs(jÔ]jÕ]jÖ]j×]jÚ]ujÜK5jÞ]rÿsjçX¢These Heap*MP Modules are only available on SYS/BIOS-based cores, they are not available when running an HLOS (e.g. Linux). As an HLOS shared memory solution, many Linux SDKs are recommending/providing CMEM. There are limitations (e.g. you cannot alloc on HLOS and free on RTOS), but these are in line with using the HLOS as a master (owning all resources) and RTOS as a slave (using resources provided by the master).rt…�rt}rt(jÅjýsjÆjûsubaubaubjÇ)�rt}rt(jÅUjÆj?rjÎjQrjÐjÑjÒ}rt(jÔ]jÕ]jÖ]j×]rtUconfiguring-a-heap-mp-modulertajÚ]rtj}aujÜK;jÝhjÞ]r t(jà)�r t}r t(jÅXConfiguring a Heap*MP Moduler tjÆjtjÎjQrjÐjäjÒ}r t(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÝhjÞ]rtjçXConfiguring a Heap*MP Modulert…�rt}rt(jÅj tjÆj tubaubjò)�rt}rt(jÅXIn addition to configuring Heap*MP instances, you can set module-wide configuration properties. For example, the maxNameLen property lets you set the maximum length of heap names. The track[Max]Allocs module configuration property enables/disables tracking memory allocation statistics.rtjÆjtjÎjQrjÐjõjÒ}rt(jÔ]jÕ]jÖ]j×]jÚ]ujÜKt}r?t(jÅX.Both processors must have the same endianness.r@tjÆj:tjÎjQrjÐjõjÒ}rAt(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÞ]rBtjçX.Both processors must have the same endianness.rCt…�rDt}rEt(jÅj@tjÆj>tubaubaubeubeubjÇ)�rFt}rGt(jÅUjÆj?rjÎjQrjÐjÑjÒ}rHt(jÔ]jÕ]jÖ]j×]rItUcreating-a-heap-mp-instancerJtajÚ]rKthaujÜKJjÝhjÞ]rLt(jà)�rMt}rNt(jÅXCreating a Heap*MP InstancerOtjÆjFtjÎjQrjÐjäjÒ}rPt(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÝhjÞ]rQtjçXCreating a Heap*MP InstancerRt…�rSt}rTt(jÅjOtjÆjMtubaubjò)�rUt}rVt(jÅXÊHeaps can be created dynamically. You use the Heap*MP_create() functions to dynamically create Heap*MP instances. As with other IPC modules, before creating a Heap*MP instance, you initialize a Heap*MP_Params structure and set fields in the structure to the desired values. When you create a heap, the shared memory is initialized and the Heap*MP object is created in local memory. Only the actual buffers and some shared information reside in shared memory.rWtjÆjFtjÎjQrjÐjõjÒ}rXt(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÝhjÞ]rYtjçXÊHeaps can be created dynamically. You use the Heap*MP_create() functions to dynamically create Heap*MP instances. As with other IPC modules, before creating a Heap*MP instance, you initialize a Heap*MP_Params structure and set fields in the structure to the desired values. When you create a heap, the shared memory is initialized and the Heap*MP object is created in local memory. Only the actual buffers and some shared information reside in shared memory.rZt…�r[t}r\t(jÅjWtjÆjUtubaubjò)�r]t}r^t(jÅX�The following code example initializes a HeapBufMP_Params structure and sets fields in it. It then creates and registers an instance of the HeapBufMP module.r_tjÆjFtjÎjQrjÐjõjÒ}r`t(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÝhjÞ]ratjçX�The following code example initializes a HeapBufMP_Params structure and sets fields in it. It then creates and registers an instance of the HeapBufMP module.rbt…�rct}rdt(jÅj_tjÆj]tubaubj)�ret}rft(jÅXj/* Create the heap that will be used to allocate messages. */ HeapBufMP_Params_init(&heapBufMPParams); heapBufMPParams.regionId = 0; /* use default region */ heapBufMPParams.name = "myHeap"; heapBufMPParams.align = 256; heapBufMPParams.numBlocks = 40; heapBufMPParams.blockSize = 1024; heapBufMPParams.gate = NULL; /* use system gate */ heapHandle = HeapBufMP_create(&heapBufMPParams); if (heapHandle == NULL) { System_abort("HeapBufMP_create failed\n"); } /* Register this heap with MessageQ */ MessageQ_registerHeap(HeapBufMP_Handle_upCast(heapHandle), HEAPID);jÆjFtjÎjQrjÐjjÒ}rgt(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMüjÝhjÞ]rhtjçXj/* Create the heap that will be used to allocate messages. */ HeapBufMP_Params_init(&heapBufMPParams); heapBufMPParams.regionId = 0; /* use default region */ heapBufMPParams.name = "myHeap"; heapBufMPParams.align = 256; heapBufMPParams.numBlocks = 40; heapBufMPParams.blockSize = 1024; heapBufMPParams.gate = NULL; /* use system gate */ heapHandle = HeapBufMP_create(&heapBufMPParams); if (heapHandle == NULL) { System_abort("HeapBufMP_create failed\n"); } /* Register this heap with MessageQ */ MessageQ_registerHeap(HeapBufMP_Handle_upCast(heapHandle), HEAPID);rit…�rjt}rkt(jÅUjÆjetubaubjò)�rlt}rmt(jÅXÍThe parameters for the various Heap*MP implementations vary. For example, when you create a HeapBufMP instance, you can configure the following parameters after initializing the HeapBufMP_Params structure:rntjÆjFtjÎjQrjÐjõjÒ}rot(jÔ]jÕ]jÖ]j×]jÚ]ujÜKejÝhjÞ]rptjçXÍThe parameters for the various Heap*MP implementations vary. For example, when you create a HeapBufMP instance, you can configure the following parameters after initializing the HeapBufMP_Params structure:rqt…�rrt}rst(jÅjntjÆjltubaubjt)�rtt}rut(jÅUjÆjFtjÎjQrjÐjwjÒ}rvt(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKhjÝhjÞ]rwt(j{)�rxt}ryt(jÅXf**regionId.** The index corresponding to the shared region from which shared memory will be allocated.rztjÆjttjÎjQrjÐjjÒ}r{t(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r|tjò)�r}t}r~t(jÅjztjÆjxtjÎjQrjÐjõjÒ}rt(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÞ]r€t(jÚ)�r�t}r‚t(jÅX **regionId.**jÒ}rƒt(jÔ]jÕ]jÖ]j×]jÚ]ujÆj}tjÞ]r„tjçX regionId.r…t…�r†t}r‡t(jÅUjÆj�tubajÐjâubjçXY The index corresponding to the shared region from which shared memory will be allocated.rˆt…�r‰t}rŠt(jÅXY The index corresponding to the shared region from which shared memory will be allocated.jÆj}tubeubaubj{)�r‹t}rŒt(jÅX@**name.** A name of the heap instance for NameServer (optional).r�tjÆjttjÎjQrjÐjjÒ}rŽt(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�tjò)�r�t}r‘t(jÅj�tjÆj‹tjÎjQrjÐjõjÒ}r’t(jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÞ]r“t(jÚ)�r”t}r•t(jÅX **name.**jÒ}r–t(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�tjÞ]r—tjçXname.r˜t…�r™t}ršt(jÅUjÆj”tubajÐjâubjçX7 A name of the heap instance for NameServer (optional).r›t…�rœt}r�t(jÅX7 A name of the heap instance for NameServer (optional).jÆj�tubeubaubj{)�ržt}rŸt(jÅX.**align.** Requested alignment for each block.r tjÆjttjÎjQrjÐjjÒ}r¡t(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¢tjò)�r£t}r¤t(jÅj tjÆjžtjÎjQrjÐjõjÒ}r¥t(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]r¦t(jÚ)�r§t}r¨t(jÅX **align.**jÒ}r©t(jÔ]jÕ]jÖ]j×]jÚ]ujÆj£tjÞ]rªtjçXalign.r«t…�r¬t}r­t(jÅUjÆj§tubajÐjâubjçX$ Requested alignment for each block.r®t…�r¯t}r°t(jÅX$ Requested alignment for each block.jÆj£tubeubaubj{)�r±t}r²t(jÅX+**numBlocks.** Number of fixed size blocks.r³tjÆjttjÎjQrjÐjjÒ}r´t(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rµtjò)�r¶t}r·t(jÅj³tjÆj±tjÎjQrjÐjõjÒ}r¸t(jÔ]jÕ]jÖ]j×]jÚ]ujÜKkjÞ]r¹t(jÚ)�rºt}r»t(jÅX**numBlocks.**jÒ}r¼t(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¶tjÞ]r½tjçX numBlocks.r¾t…�r¿t}rÀt(jÅUjÆjºtubajÐjâubjçX Number of fixed size blocks.rÁt…�rÂt}rÃt(jÅX Number of fixed size blocks.jÆj¶tubeubaubj{)�rÄt}rÅt(jÅX3**blockSize.** Size of the blocks in this instance.rÆtjÆjttjÎjQrjÐjjÒ}rÇt(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÈtjò)�rÉt}rÊt(jÅjÆtjÆjÄtjÎjQrjÐjõjÒ}rËt(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]rÌt(jÚ)�rÍt}rÎt(jÅX**blockSize.**jÒ}rÏt(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÉtjÞ]rÐtjçX blockSize.rÑt…�rÒt}rÓt(jÅUjÆjÍtubajÐjâubjçX% Size of the blocks in this instance.rÔt…�rÕt}rÖt(jÅX% Size of the blocks in this instance.jÆjÉtubeubaubj{)�r×t}rØt(jÅX7**gate.** A multiprocessor gate for context protection.rÙtjÆjttjÎjQrjÐjjÒ}rÚt(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÛtjò)�rÜt}rÝt(jÅjÙtjÆj×tjÎjQrjÐjõjÒ}rÞt(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÞ]rßt(jÚ)�ràt}rát(jÅX **gate.**jÒ}rât(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÜtjÞ]rãtjçXgate.rät…�råt}ræt(jÅUjÆjàtubajÐjâubjçX. A multiprocessor gate for context protection.rçt…�rèt}rét(jÅX. A multiprocessor gate for context protection.jÆjÜtubeubaubj{)�rêt}rët(jÅX\**exact.** Only allocate a block if the requested size is an exact match. Default is false. jÆjttjÎjQrjÐjjÒ}rìt(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rítjò)�rît}rït(jÅX[**exact.** Only allocate a block if the requested size is an exact match. Default is false.jÆjêtjÎjQrjÐjõjÒ}rðt(jÔ]jÕ]jÖ]j×]jÚ]ujÜKnjÞ]rñt(jÚ)�ròt}rót(jÅX **exact.**jÒ}rôt(jÔ]jÕ]jÖ]j×]jÚ]ujÆjîtjÞ]rõtjçXexact.röt…�r÷t}røt(jÅUjÆjòtubajÐjâubjçXQ Only allocate a block if the requested size is an exact match. Default is false.rùt…�rút}rût(jÅXQ Only allocate a block if the requested size is an exact match. Default is false.jÆjîtubeubaubeubjò)�rüt}rýt(jÅXoOf these parameters, the ones that are common to all three Heap*MP implementations are gate, name and regionId.rþtjÆjFtjÎjQrjÐjõjÒ}rÿt(jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÝhjÞ]rujçXoOf these parameters, the ones that are common to all three Heap*MP implementations are gate, name and regionId.ru…�ru}ru(jÅjþtjÆjütubaubeubjÇ)�ru}ru(jÅUjÆj?rjÎjQrjÐjÑjÒ}ru(jÔ]jÕ]jÖ]j×]ruUopening-a-heap-mp-instanceruajÚ]r uhpaujÜKsjÝhjÞ]r u(jà)�r u}r u(jÅXOpening a Heap*MP Instancer ujÆjujÎjQrjÐjäjÒ}ru(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÝhjÞ]rujçXOpening a Heap*MP Instanceru…�ru}ru(jÅj ujÆj uubaubjò)�ru}ru(jÅX'Once a Heap*MP instance is created on a processor, the heap can be opened on another processor to obtain a local handle to the same shared instance. In order for a remote processor to obtain a handle to a Heap*MP that has been created, the remote processor needs to open it using Heap*MP_open().rujÆjujÎjQrjÐjõjÒ}ru(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÝhjÞ]rujçX'Once a Heap*MP instance is created on a processor, the heap can be opened on another processor to obtain a local handle to the same shared instance. In order for a remote processor to obtain a handle to a Heap*MP that has been created, the remote processor needs to open it using Heap*MP_open().ru…�ru}ru(jÅjujÆjuubaubjò)�ru}ru(jÅXïThe Heap*MP modules use a NameServer instance to allow a remote processor to address the local Heap*MP instance using a user-configurable string value as an identifier. The Heap*MP name is the sole parameter needed to identify an instance.rujÆjujÎjQrjÐjõjÒ}ru(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÝhjÞ]rujçXïThe Heap*MP modules use a NameServer instance to allow a remote processor to address the local Heap*MP instance using a user-configurable string value as an identifier. The Heap*MP name is the sole parameter needed to identify an instance.r u…�r!u}r"u(jÅjujÆjuubaubjò)�r#u}r$u(jÅX±The heap must be created before it can be opened. An open call matches the call's version number with the creator's version number in order to ensure compatibility. For example:r%ujÆjujÎjQrjÐjõjÒ}r&u(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÝhjÞ]r'ujçX±The heap must be created before it can be opened. An open call matches the call's version number with the creator's version number in order to ensure compatibility. For example:r(u…�r)u}r*u(jÅj%ujÆj#uubaubjò)�r+u}r,u(jÅX HeapBufMP_Handle heapHandle; ...r-ujÆjujÎjQrjÐjõjÒ}r.u(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÝhjÞ]r/ujçX HeapBufMP_Handle heapHandle; ...r0u…�r1u}r2u(jÅj-ujÆj+uubaubj)�r3u}r4u(jÅX÷/* Open heap created by other processor. Loop until open. */ do { status = HeapBufMP_open("myHeap", &heapHandle); } while (status < 0); /* Register this heap with MessageQ */ MessageQ_registerHeap(HeapBufMP_Handle_upCast(heapHandle), HEAPID);jÆjujÎjQrjÐjjÒ}r5u(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM)jÝhjÞ]r6ujçX÷/* Open heap created by other processor. Loop until open. */ do { status = HeapBufMP_open("myHeap", &heapHandle); } while (status < 0); /* Register this heap with MessageQ */ MessageQ_registerHeap(HeapBufMP_Handle_upCast(heapHandle), HEAPID);r7u…�r8u}r9u(jÅUjÆj3uubaubeubjÇ)�r:u}r;u(jÅUjÆj?rjÎjQrjÐjÑjÒ}ruajÚ]r?uj(aujÜKŒjÝhjÞ]r@u(jà)�rAu}rBu(jÅXClosing a Heap*MP InstancerCujÆj:ujÎjQrjÐjäjÒ}rDu(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÝhjÞ]rEujçXClosing a Heap*MP InstancerFu…�rGu}rHu(jÅjCujÆjAuubaubjò)�rIu}rJu(jÅXÁHeap*MP_close() frees an opened Heap*MP instance stored in local memory. Heap*MP_close() may only be used to finalize instances that were opened with Heap*MP_open() by this thread. For example:rKujÆj:ujÎjQrjÐjõjÒ}rLu(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rMujçXÁHeap*MP_close() frees an opened Heap*MP instance stored in local memory. Heap*MP_close() may only be used to finalize instances that were opened with Heap*MP_open() by this thread. For example:rNu…�rOu}rPu(jÅjKujÆjIuubaubj)�rQu}rRu(jÅXHeapBufMP_close(&heapHandle);jÆj:ujÎjQrjÐjjÒ}rSu(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM8jÝhjÞ]rTujçXHeapBufMP_close(&heapHandle);rUu…�rVu}rWu(jÅUjÆjQuubaubjò)�rXu}rYu(jÅXTNever call Heap*MP_close() if some other thread has already called Heap*MP_delete().rZujÆj:ujÎjQrjÐjõjÒ}r[u(jÔ]jÕ]jÖ]j×]jÚ]ujÜK“jÝhjÞ]r\ujçXTNever call Heap*MP_close() if some other thread has already called Heap*MP_delete().r]u…�r^u}r_u(jÅjZujÆjXuubaubeubjÇ)�r`u}rau(jÅUjÆj?rjÎjQrjÐjÑjÒ}rbu(jÔ]jÕ]jÖ]j×]rcuUdeleting-a-heap-mp-instancerduajÚ]reuh_aujÜK–jÝhjÞ]rfu(jà)�rgu}rhu(jÅXDeleting a Heap*MP InstanceriujÆj`ujÎjQrjÐjäjÒ}rju(jÔ]jÕ]jÖ]j×]jÚ]ujÜK–jÝhjÞ]rkujçXDeleting a Heap*MP Instancerlu…�rmu}rnu(jÅjiujÆjguubaubjò)�rou}rpu(jÅXOThe Heap*MP creator thread can use Heap*MP_delete() to free a Heap*MP object stored in local memory and to flag the shared memory to indicate that the heap is no longer initialized. Heap*MP_delete() may not be used to finalize a heap using a handle acquired using Heap*MP_open()--Heap*MP_close() should be used by such threads instead.rqujÆj`ujÎjQrjÐjõjÒ}rru(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÝhjÞ]rsujçXOThe Heap*MP creator thread can use Heap*MP_delete() to free a Heap*MP object stored in local memory and to flag the shared memory to indicate that the heap is no longer initialized. Heap*MP_delete() may not be used to finalize a heap using a handle acquired using Heap*MP_open()--Heap*MP_close() should be used by such threads instead.rtu…�ruu}rvu(jÅjqujÆjouubaubeubjÇ)�rwu}rxu(jÅUjÆj?rjÎjQrjÐjÑjÒ}ryu(jÔ]jÕ]jÖ]j×]rzuUallocating-memory-from-the-heapr{uajÚ]r|uh"aujÜK›jÝhjÞ]r}u(jà)�r~u}ru(jÅXAllocating Memory from the Heapr€ujÆjwujÎjQrjÐjäjÒ}r�u(jÔ]jÕ]jÖ]j×]jÚ]ujÜK›jÝhjÞ]r‚ujçXAllocating Memory from the Heaprƒu…�r„u}r…u(jÅj€ujÆj~uubaubjò)�r†u}r‡u(jÅXPThe HeapBufMP_alloc() function obtains the first buffer off the heap's freeList.rˆujÆjwujÎjQrjÐjõjÒ}r‰u(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÝhjÞ]rŠujçXPThe HeapBufMP_alloc() function obtains the first buffer off the heap's freeList.r‹u…�rŒu}r�u(jÅjˆujÆj†uubaubjò)�rŽu}r�u(jÅX¥The HeapMultiBufMP_alloc() function searches through the buckets to find the smallest size that honors the requested size. It obtains the first block on that bucket.r�ujÆjwujÎjQrjÐjõjÒ}r‘u(jÔ]jÕ]jÖ]j×]jÚ]ujÜKžjÝhjÞ]r’ujçX¥The HeapMultiBufMP_alloc() function searches through the buckets to find the smallest size that honors the requested size. It obtains the first block on that bucket.r“u…�r”u}r•u(jÅj�ujÆjŽuubaubjò)�r–u}r—u(jÅXóIf the "exact" field in the Heap*BufMP_Params structure was true when the heap was created, the alloc only returns the block if the blockSize for a bucket is the exact size requested. If no exact size is found, an allocation error is returned.r˜ujÆjwujÎjQrjÐjõjÒ}r™u(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÝhjÞ]ršujçXóIf the "exact" field in the Heap*BufMP_Params structure was true when the heap was created, the alloc only returns the block if the blockSize for a bucket is the exact size requested. If no exact size is found, an allocation error is returned.r›u…�rœu}r�u(jÅj˜ujÆj–uubaubjò)�ržu}rŸu(jÅX_The HeapMemMP_alloc() function allocates a block of memory of the requested size from the heap.r ujÆjwujÎjQrjÐjõjÒ}r¡u(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÝhjÞ]r¢ujçX_The HeapMemMP_alloc() function allocates a block of memory of the requested size from the heap.r£u…�r¤u}r¥u(jÅj ujÆjžuubaubjò)�r¦u}r§u(jÅX¨For all of these allocation functions, the cache coherency of the message is managed by the SharedRegion module that manages the shared memory region used for the heap.r¨ujÆjwujÎjQrjÐjõjÒ}r©u(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¦jÝhjÞ]rªujçX¨For all of these allocation functions, the cache coherency of the message is managed by the SharedRegion module that manages the shared memory region used for the heap.r«u…�r¬u}r­u(jÅj¨ujÆj¦uubaubeubjÇ)�r®u}r¯u(jÅUjÆj?rjÎjQrjÐjÑjÒ}r°u(jÔ]jÕ]jÖ]j×]r±uUfreeing-memory-to-the-heapr²uajÚ]r³uhÛaujÜK©jÝhjÞ]r´u(jà)�rµu}r¶u(jÅXFreeing Memory to the Heapr·ujÆj®ujÎjQrjÐjäjÒ}r¸u(jÔ]jÕ]jÖ]j×]jÚ]ujÜK©jÝhjÞ]r¹ujçXFreeing Memory to the Heaprºu…�r»u}r¼u(jÅj·ujÆjµuubaubjò)�r½u}r¾u(jÅXFThe HeapBufMP_free() function returns an allocated buffer to its heap.r¿ujÆj®ujÎjQrjÐjõjÒ}rÀu(jÔ]jÕ]jÖ]j×]jÚ]ujÜKªjÝhjÞ]rÁujçXFThe HeapBufMP_free() function returns an allocated buffer to its heap.rÂu…�rÃu}rÄu(jÅj¿ujÆj½uubaubjò)�rÅu}rÆu(jÅXThe HeapMultiBufMP_free() function searches through the buckets to determine on which bucket the block should be returned. This is determined by the same algorithm as the HeapMultiBufMP_alloc() function, namely the smallest blockSize that the block can fit into.rÇujÆj®ujÎjQrjÐjõjÒ}rÈu(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¬jÝhjÞ]rÉujçXThe HeapMultiBufMP_free() function searches through the buckets to determine on which bucket the block should be returned. This is determined by the same algorithm as the HeapMultiBufMP_alloc() function, namely the smallest blockSize that the block can fit into.rÊu…�rËu}rÌu(jÅjÇujÆjÅuubaubjò)�rÍu}rÎu(jÅX¹If the "exact" field in the Heap*BufMP_Params structure was true when the heap was created, and the size of the block to free does not match any bucket's blockSize, an assert is raised.rÏujÆj®ujÎjQrjÐjõjÒ}rÐu(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¯jÝhjÞ]rÑujçX¹If the "exact" field in the Heap*BufMP_Params structure was true when the heap was created, and the size of the block to free does not match any bucket's blockSize, an assert is raised.rÒu…�rÓu}rÔu(jÅjÏujÆjÍuubaubjò)�rÕu}rÖu(jÅXPThe HeapMemMP_free() function returns the allocated block of memory to its heap.r×ujÆj®ujÎjQrjÐjõjÒ}rØu(jÔ]jÕ]jÖ]j×]jÚ]ujÜK±jÝhjÞ]rÙujçXPThe HeapMemMP_free() function returns the allocated block of memory to its heap.rÚu…�rÛu}rÜu(jÅj×ujÆjÕuubaubjò)�rÝu}rÞu(jÅXhFor all of these deallocation functions, cache coherency is managed by the corresponding Heap*MP module.rßujÆj®ujÎjQrjÐjõjÒ}ràu(jÔ]jÕ]jÖ]j×]jÚ]ujÜK³jÝhjÞ]ráujçXhFor all of these deallocation functions, cache coherency is managed by the corresponding Heap*MP module.râu…�rãu}räu(jÅjßujÆjÝuubaubeubjÇ)�råu}ræu(jÅUjÆj?rjÎjQrjÐjÑjÒ}rçu(jÔ]jÕ]jÖ]j×]rèuUquerying-heap-statisticsréuajÚ]rêuhˆaujÜK¶jÝhjÞ]rëu(jà)�rìu}ríu(jÅXQuerying Heap StatisticsrîujÆjåujÎjQrjÐjäjÒ}rïu(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¶jÝhjÞ]rðujçXQuerying Heap Statisticsrñu…�ròu}róu(jÅjîujÆjìuubaubjò)�rôu}rõu(jÅX|Both heap modules support use of the xdc.runtime.Memory module's Memory_getStats() and Memory_query() functions on the heap.röujÆjåujÎjQrjÐjõjÒ}r÷u(jÔ]jÕ]jÖ]j×]jÚ]ujÜK·jÝhjÞ]røujçX|Both heap modules support use of the xdc.runtime.Memory module's Memory_getStats() and Memory_query() functions on the heap.rùu…�rúu}rûu(jÅjöujÆjôuubaubjò)�rüu}rýu(jÅX±In addition, the Heap*MP modules provide the Heap*MP_getStats(), Heap*MP_getExtendedStats(), and Heap*MP_isBlocking() functions to enable you to gather information about a heap.rþujÆjåujÎjQrjÐjõjÒ}rÿu(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¹jÝhjÞ]rvjçX±In addition, the Heap*MP modules provide the Heap*MP_getStats(), Heap*MP_getExtendedStats(), and Heap*MP_isBlocking() functions to enable you to gather information about a heap.rv…�rv}rv(jÅjþujÆjüuubaubjò)�rv}rv(jÅXIBy default, allocation tracking is often disabled in shared-heap modules for performance reasons. You can set the HeapBufMP.trackAllocs and HeapMultiBufMP.trackMaxAllocs configuration properties to true in order to turn on allocation tracking for their respective modules. Refer to the CDOC documentation for further information.rvjÆjåujÎjQrjÐjõjÒ}rv(jÔ]jÕ]jÖ]j×]jÚ]ujÜK»jÝhjÞ]rvjçXIBy default, allocation tracking is often disabled in shared-heap modules for performance reasons. You can set the HeapBufMP.trackAllocs and HeapMultiBufMP.trackMaxAllocs configuration properties to true in order to turn on allocation tracking for their respective modules. Refer to the CDOC documentation for further information.r v…�r v}r v(jÅjvjÆjvubaubjò)�r v}r v(jÅX²Sample Runtime Program Flow The following diagram shows the program flow for a two-processor (or two-thread) application. This application creates a Heap*MP instance dynamically.rvjÆjåujÎjQrjÐjõjÒ}rv(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¿jÝhjÞ]rvjçX²Sample Runtime Program Flow The following diagram shows the program flow for a two-processor (or two-thread) application. This application creates a Heap*MP instance dynamically.rv…�rv}rv(jÅjvjÆj vubaubjR)�rv}rv(jÅX(.. Image:: ../images/heapmp_bigfig.png jÆjåujÎXSinternal padding after source/rtos/PDK_Platform_Software/IPC/HeapMP_Modules.rst.incrvjÐjZjÒ}rv(UuriX rtos/../images/heapmp_bigfig.pngrvj×]jÖ]jÔ]jÕ]jX}rvU*jvsjÚ]ujÜKÅjÝhjÞ]ubeubeubjÇ)�rv}rv(jÅUjÆjÊjÎjÏjÐjÑjÒ}rv(jÔ]jÕ]jÖ]j×]rvU gatemp-modulervajÚ]rvh˜aujÜKCjÝhjÞ]r v(jà)�r!v}r"v(jÅX GateMP Moduler#vjÆjvjÎjÏjÐjäjÒ}r$v(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÝhjÞ]r%vjçX GateMP Moduler&v…�r'v}r(v(jÅj#vjÆj!vubaubj7)�r)v}r*v(jÅXEhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/GateMP_ModulejÆjvjÎj:X;source/rtos/PDK_Platform_Software/IPC/GateMP_Module.rst.incr+v…�r,v}r-vbjÐj>jÒ}r.v(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r/vjçXEhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/GateMP_Moduler0v…�r1v}r2v(jÅUjÆj)vubaubjÂ)�r3v}r4v(jÅX´.. |gpmCfg_Img1| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆjvjÎj,vjÐjHjÒ}r5v(jÔ]jÕ]jÖ]j×]jÚ]r6vX gpmCfg_Img1r7vaujÜKjÝhjÞ]r8vjû)�r9v}r:v(jÅj7vjÒ}r;v(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlrv}r?v(jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr@vjÒ}rAv(UuriXrtos/../images/Book_cfg.pngrBvj×]jÖ]jÔ]jÕ]jX}rCvU*jBvsjÚ]Ualtj7vujÆj9vjÞ]jÐjZubajÐjÿubaubjÂ)�rDv}rEv(jÅXº.. |gmpRun_Img1| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_gate_m_p_8h.html jÆjvjÎj,vjÐjHjÒ}rFv(jÔ]jÕ]jÖ]j×]jÚ]rGvX gmpRun_Img1rHvaujÜKjÝhjÞ]rIvjû)�rJv}rKv(jÅjHvjÒ}rLv(UrefuriXohttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_gate_m_p_8h.htmlrMvj×]jÖ]jÔ]jÕ]jÚ]ujÆjDvjÞ]rNvjR)�rOv}rPv(jÅX¨Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_gate_m_p_8h.htmlrQvjÒ}rRv(UuriXrtos/../images/Book_run.pngrSvj×]jÖ]jÔ]jÕ]jX}rTvU*jSvsjÚ]UaltjHvujÆjJvjÞ]jÐjZubajÐjÿubaubjÂ)�rUv}rVv(jÅXº.. |gmpRun_Img2| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_gate_m_p_8h.html jÆjvjÎj,vjÐjHjÒ}rWv(jÔ]jÕ]jÖ]j×]jÚ]rXvX gmpRun_Img2rYvaujÜK jÝhjÞ]rZvjû)�r[v}r\v(jÅjYvjÒ}r]v(UrefuriXohttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_gate_m_p_8h.htmlr^vj×]jÖ]jÔ]jÕ]jÚ]ujÆjUvjÞ]r_vjR)�r`v}rav(jÅX¨Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_gate_m_p_8h.htmlrbvjÒ}rcv(UuriXrtos/../images/Book_run.pngrdvj×]jÖ]jÔ]jÕ]jX}revU*jdvsjÚ]UaltjYvujÆj[vjÞ]jÐjZubajÐjÿubaubjc)�rfv}rgv(jÅUjÆjvjÎj,vjÐjfjÒ}rhv(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rivji)�rjv}rkv(jÅUjlKjÆjfvjÎj,vjÐjÜjÒ}rlv(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubj3)�rmv}rnv(jÅUjÆjvjÎj,vjÐj6jÒ}rov(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rpvjy )�rqv}rrv(jÅUjÒ}rsv(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmvjÞ]rtvj~ )�ruv}rvv(jÅUjÒ}rwv(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjqvjÞ]rxv(jƒ )�ryv}rzv(jÅUjÒ}r{v(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjuvjÞ]jÐj‡ ubjƒ )�r|v}r}v(jÅUjÒ}r~v(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjuvjÞ]jÐj‡ ubj‹ )�rv}r€v(jÅUjÒ}r�v(jÔ]jÕ]jÖ]j×]jÚ]ujÆjuvjÞ]r‚vj� )�rƒv}r„v(jÅUjÒ}r…v(jÔ]jÕ]jÖ]j×]jÚ]ujÆjvjÞ]r†vj• )�r‡v}rˆv(jÅUjÒ}r‰v(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjƒvjÞ]rŠvjò)�r‹v}rŒv(jÅXAPI Reference Linksr�vjÆj‡vjÎj,vjÐjõjÒ}rŽv(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�vjçXAPI Reference Linksr�v…�r‘v}r’v(jÅj�vjÆj‹vubaubajÐj¢ ubajÐj£ ubajÐj¤ ubj¥ )�r“v}r”v(jÅUjÒ}r•v(jÔ]jÕ]jÖ]j×]jÚ]ujÆjuvjÞ]r–vj� )�r—v}r˜v(jÅUjÒ}r™v(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“vjÞ]ršv(j• )�r›v}rœv(jÅUjÒ}r�v(jÔ]jÕ]jÖ]j×]jÚ]ujÆj—vjÞ]ržvjò)�rŸv}r v(jÅX |gpmCfg_Img1|r¡vjÆj›vjÎj,vjÐjõjÒ}r¢v(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r£vjû)�r¤v}r¥v(jÅj7vjÆjŸvjÎNjÐjÿjÒ}r¦v(Urefurijw…�r?w}r@w(jÅj;wjÆj9wubaubjò)�rAw}rBw(jÅXÊA gate can be configured to implement local protection at various levels. This is done via the params.localProtect configuration property (BIOS-only). The options for params.localProtect are as follows:rCwjÆjÓvjÎj,vjÐjõjÒ}rDw(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÝhjÞ]rEwjçXÊA gate can be configured to implement local protection at various levels. This is done via the params.localProtect configuration property (BIOS-only). The options for params.localProtect are as follows:rFw…�rGw}rHw(jÅjCwjÆjAwubaubjt)�rIw}rJw(jÅUjÆjÓvjÎj,vjÐjwjÒ}rKw(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKEjÝhjÞ]rLw(j{)�rMw}rNw(jÅXêGateMP_LocalProtect_NONE. Uses the XDCtools GateNull implementation, which does not offer any local context protection. For example, you might use this option for a single-threaded local application that still needs remote protection.jÆjIwjÎj,vjÐjjÒ}rOw(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rPwjò)�rQw}rRw(jÅXêGateMP_LocalProtect_NONE. Uses the XDCtools GateNull implementation, which does not offer any local context protection. For example, you might use this option for a single-threaded local application that still needs remote protection.rSwjÆjMwjÎj,vjÐjõjÒ}rTw(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÞ]rUwjçXêGateMP_LocalProtect_NONE. Uses the XDCtools GateNull implementation, which does not offer any local context protection. For example, you might use this option for a single-threaded local application that still needs remote protection.rVw…�rWw}rXw(jÅjSwjÆjQwubaubaubj{)�rYw}rZw(jÅXlGateMP_LocalProtect_INTERRUPT. Uses the SYS/BIOS GateHwi implementation, which disables hardware interrupts.r[wjÆjIwjÎj,vjÐjjÒ}r\w(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r]wjò)�r^w}r_w(jÅj[wjÆjYwjÎj,vjÐjõjÒ}r`w(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÞ]rawjçXlGateMP_LocalProtect_INTERRUPT. Uses the SYS/BIOS GateHwi implementation, which disables hardware interrupts.rbw…�rcw}rdw(jÅj[wjÆj^wubaubaubj{)�rew}rfw(jÅXjGateMP_LocalProtect_TASKLET. Uses the SYS/BIOS GateSwi implementation, which disables software interrupts.rgwjÆjIwjÎj,vjÐjjÒ}rhw(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]riwjò)�rjw}rkw(jÅjgwjÆjewjÎj,vjÐjõjÒ}rlw(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]rmwjçXjGateMP_LocalProtect_TASKLET. Uses the SYS/BIOS GateSwi implementation, which disables software interrupts.rnw…�row}rpw(jÅjgwjÆjjwubaubaubj{)�rqw}rrw(jÅXìGateMP_LocalProtect_THREAD. Uses the SYS/BIOS GateMutexPri implementation, which is based on Semaphores. This option may use a different gate than the following option on some operating systems. When using SYS/BIOS, they are equivalent.jÆjIwjÎj,vjÐjjÒ}rsw(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rtwjò)�ruw}rvw(jÅXìGateMP_LocalProtect_THREAD. Uses the SYS/BIOS GateMutexPri implementation, which is based on Semaphores. This option may use a different gate than the following option on some operating systems. When using SYS/BIOS, they are equivalent.rwwjÆjqwjÎj,vjÐjõjÒ}rxw(jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÞ]rywjçXìGateMP_LocalProtect_THREAD. Uses the SYS/BIOS GateMutexPri implementation, which is based on Semaphores. This option may use a different gate than the following option on some operating systems. When using SYS/BIOS, they are equivalent.rzw…�r{w}r|w(jÅjwwjÆjuwubaubaubj{)�r}w}r~w(jÅXjGateMP_LocalProtect_PROCESS. Uses the SYS/BIOS GateMutexPri implementation, which is based on Semaphores. jÆjIwjÎj,vjÐjjÒ}rw(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r€wjò)�r�w}r‚w(jÅXiGateMP_LocalProtect_PROCESS. Uses the SYS/BIOS GateMutexPri implementation, which is based on Semaphores.rƒwjÆj}wjÎj,vjÐjõjÒ}r„w(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÞ]r…wjçXiGateMP_LocalProtect_PROCESS. Uses the SYS/BIOS GateMutexPri implementation, which is based on Semaphores.r†w…�r‡w}rˆw(jÅjƒwjÆj�wubaubaubeubjò)�r‰w}rŠw(jÅX�This property is currently ignored (as of IPC 3.23) on non-BIOS OSes. A thread-level mutex is used for local protection independent of this property setting.r‹wjÆjÓvjÎj,vjÐjõjÒ}rŒw(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÝhjÞ]r�wjçX�This property is currently ignored (as of IPC 3.23) on non-BIOS OSes. A thread-level mutex is used for local protection independent of this property setting.rŽw…�r�w}r�w(jÅj‹wjÆj‰wubaubjò)�r‘w}r’w(jÅXHOther fields you are required to set in the GateMP_Params structure are:r“wjÆjÓvjÎj,vjÐjõjÒ}r”w(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÝhjÞ]r•wjçXHOther fields you are required to set in the GateMP_Params structure are:r–w…�r—w}r˜w(jÅj“wjÆj‘wubaubjt)�r™w}ršw(jÅUjÆjÓvjÎj,vjÐjwjÒ}r›w(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKRjÝhjÞ]rœw(j{)�r�w}ržw(jÅX&name. The name of the GateMP instance.rŸwjÆj™wjÎj,vjÐjjÒ}r w(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¡wjò)�r¢w}r£w(jÅjŸwjÆj�wjÎj,vjÐjõjÒ}r¤w(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÞ]r¥wjçX&name. The name of the GateMP instance.r¦w…�r§w}r¨w(jÅjŸwjÆj¢wubaubaubj{)�r©w}rªw(jÅXhregionId. The ID of the SharedRegion to use for shared memory used by this GateMP instance (BIOS-only). jÆj™wjÎj,vjÐjjÒ}r«w(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¬wjò)�r­w}r®w(jÅXgregionId. The ID of the SharedRegion to use for shared memory used by this GateMP instance (BIOS-only).r¯wjÆj©wjÎj,vjÐjõjÒ}r°w(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÞ]r±wjçXgregionId. The ID of the SharedRegion to use for shared memory used by this GateMP instance (BIOS-only).r²w…�r³w}r´w(jÅj¯wjÆj­wubaubaubeubjò)�rµw}r¶w(jÅXÙ|gmpRun_Img2| The latest version of the GateMP module run-time API documentation is available `online `_jÆjÓvjÎj,vjÐjõjÒ}r·w(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÝhjÞ]r¸w(jû)�r¹w}rºw(jÅjYvjÆjµwjÎNjÐjÿjÒ}r»w(Urefurij^vj×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]r¼wjR)�r½w}r¾w(jÅjbvjÆj¹wjÎNjÐjZjÒ}r¿w(UuriXrtos/../images/Book_run.pngrÀwj×]jÖ]jÔ]jÕ]jX}rÁwU*jÀwsjÚ]UaltjYvujÜNjÞ]ubaubjçXQ The latest version of the GateMP module run-time API documentation is available rÂw…�rÃw}rÄw(jÅXQ The latest version of the GateMP module run-time API documentation is available jÆjµwubjû)�rÅw}rÆw(jÅX{`online `_jÒ}rÇw(UnameXonlinerÈwjXohttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_gate_m_p_8h.htmlrÉwj×]jÖ]jÔ]jÕ]jÚ]ujÆjµwjÞ]rÊwjçXonlinerËw…�rÌw}rÍw(jÅUjÆjÅwubajÐjÿubj)�rÎw}rÏw(jÅXr jKjÆjµwjÐj jÒ}rÐw(UrefurijÉwj×]rÑwUid3rÒwajÖ]jÔ]rÓwjÈwajÕ]jÚ]ujÞ]ubeubeubjÇ)�rÔw}rÕw(jÅUjÆjvjÎj,vjÐjÑjÒ}rÖw(jÔ]jÕ]jÖ]j×]r×wUopening-a-gatemp-instancerØwajÚ]rÙwhmaujÜKYjÝhjÞ]rÚw(jà)�rÛw}rÜw(jÅXOpening a GateMP InstancerÝwjÆjÔwjÎj,vjÐjäjÒ}rÞw(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÝhjÞ]rßwjçXOpening a GateMP Instanceràw…�ráw}râw(jÅjÝwjÆjÛwubaubjò)�rãw}räw(jÅX†Once an instance is created on a processor, the gate can be opened on another processor to obtain a local handle to the same instance.råwjÆjÔwjÎj,vjÐjõjÒ}ræw(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÝhjÞ]rçwjçX†Once an instance is created on a processor, the gate can be opened on another processor to obtain a local handle to the same instance.rèw…�réw}rêw(jÅjåwjÆjãwubaubjò)�rëw}rìw(jÅXÖThe GateMP module uses a NameServer instance to allow a remote processor to address the local GateMP instance using a user-configurable string value as an identifier rather than a potentially dynamic address value.ríwjÆjÔwjÎj,vjÐjõjÒ}rîw(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÝhjÞ]rïwjçXÖThe GateMP module uses a NameServer instance to allow a remote processor to address the local GateMP instance using a user-configurable string value as an identifier rather than a potentially dynamic address value.rðw…�rñw}ròw(jÅjíwjÆjëwubaubj)�rów}rôw(jÅXkstatus = GateMP_open("myGate", &gateHandle); if (status < 0) { System_printf("GateMP_open failed\n"); }jÆjÔwjÎj,vjÐjjÒ}rõw(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÒjÝhjÞ]röwjçXkstatus = GateMP_open("myGate", &gateHandle); if (status < 0) { System_printf("GateMP_open failed\n"); }r÷w…�røw}rùw(jÅUjÆjówubaubeubjÇ)�rúw}rûw(jÅUjÆjvjÎj,vjÐjÑjÒ}rüw(jÔ]jÕ]jÖ]j×]rýwUclosing-a-gatemp-instancerþwajÚ]rÿwh[aujÜKgjÝhjÞ]rx(jà)�rx}rx(jÅXClosing a GateMP InstancerxjÆjúwjÎj,vjÐjäjÒ}rx(jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]rxjçXClosing a GateMP Instancerx…�rx}rx(jÅjxjÆjxubaubjò)�r x}r x(jÅX<GateMP_close() frees a GateMP object stored in local memory.r xjÆjúwjÎj,vjÐjõjÒ}r x(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÝhjÞ]r xjçX<GateMP_close() frees a GateMP object stored in local memory.rx…�rx}rx(jÅj xjÆj xubaubjò)�rx}rx(jÅXTGateMP_close() should never be called on an instance whose creator has been deleted.rxjÆjúwjÎj,vjÐjõjÒ}rx(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÝhjÞ]rxjçXTGateMP_close() should never be called on an instance whose creator has been deleted.rx…�rx}rx(jÅjxjÆjxubaubeubjÇ)�rx}rx(jÅUjÆjvjÎj,vjÐjÑjÒ}rx(jÔ]jÕ]jÖ]j×]rxUdeleting-a-gatemp-instancerxajÚ]rxjaujÜKmjÝhjÞ]rx(jà)�r x}r!x(jÅXDeleting a GateMP Instancer"xjÆjxjÎj,vjÐjäjÒ}r#x(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÝhjÞ]r$xjçXDeleting a GateMP Instancer%x…�r&x}r'x(jÅj"xjÆj xubaubjò)�r(x}r)x(jÅXŒGateMP_delete() frees a GateMP object stored in local memory and flags the shared memory to indicate that the gate is no longer initialized.r*xjÆjxjÎj,vjÐjõjÒ}r+x(jÔ]jÕ]jÖ]j×]jÚ]ujÜKnjÝhjÞ]r,xjçXŒGateMP_delete() frees a GateMP object stored in local memory and flags the shared memory to indicate that the gate is no longer initialized.r-x…�r.x}r/x(jÅj*xjÆj(xubaubjò)�r0x}r1x(jÅX�A thread may not use GateMP_delete() if it acquired the handle to the gate using GateMP_open(). Such threads should call GateMP_close() instead.r2xjÆjxjÎj,vjÐjõjÒ}r3x(jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÝhjÞ]r4xjçX�A thread may not use GateMP_delete() if it acquired the handle to the gate using GateMP_open(). Such threads should call GateMP_close() instead.r5x…�r6x}r7x(jÅj2xjÆj0xubaubeubjÇ)�r8x}r9x(jÅUjÆjvjÎj,vjÐjÑjÒ}r:x(jÔ]jÕ]jÖ]j×]r;xUentering-a-gatemp-instancerx(jà)�r?x}r@x(jÅXEntering a GateMP InstancerAxjÆj8xjÎj,vjÐjäjÒ}rBx(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÝhjÞ]rCxjçXEntering a GateMP InstancerDx…�rEx}rFx(jÅjAxjÆj?xubaubjò)�rGx}rHx(jÅXEither the GateMP creator or opener may call GateMP_enter() to enter a gate. While it is necessary for the opener to wait for a gate to be created to enter a created gate, it isn't necessary for a creator to wait for a gate to be opened before entering it.rIxjÆj8xjÎj,vjÐjõjÒ}rJx(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÝhjÞ]rKxjçXEither the GateMP creator or opener may call GateMP_enter() to enter a gate. While it is necessary for the opener to wait for a gate to be created to enter a created gate, it isn't necessary for a creator to wait for a gate to be opened before entering it.rLx…�rMx}rNx(jÅjIxjÆjGxubaubjò)�rOx}rPx(jÅXÜGateMP_enter() enters the caller's local gate. The local gate (if supplied) blocks if entered on the local processor. If entered by the remote processor, GateMP_enter() spins until the remote processor has left the gate.rQxjÆj8xjÎj,vjÐjõjÒ}rRx(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÝhjÞ]rSxjçXÜGateMP_enter() enters the caller's local gate. The local gate (if supplied) blocks if entered on the local processor. If entered by the remote processor, GateMP_enter() spins until the remote processor has left the gate.rTx…�rUx}rVx(jÅjQxjÆjOxubaubjò)�rWx}rXx(jÅX­No matter what the params.localProtection configuration property is set to, after GateMP_enter() returns, the caller has exclusive access to the data protected by this gate.rYxjÆj8xjÎj,vjÐjõjÒ}rZx(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÝhjÞ]r[xjçX­No matter what the params.localProtection configuration property is set to, after GateMP_enter() returns, the caller has exclusive access to the data protected by this gate.r\x…�r]x}r^x(jÅjYxjÆjWxubaubjò)�r_x}r`x(jÅX8A thread may reenter a gate without blocking or failing.raxjÆj8xjÎj,vjÐjõjÒ}rbx(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÝhjÞ]rcxjçX8A thread may reenter a gate without blocking or failing.rdx…�rex}rfx(jÅjaxjÆj_xubaubjò)�rgx}rhx(jÅX½GateMP_enter() returns a "key" that is used by GateMP_leave() to leave this gate; this value is used to restore thread preemption to the state that existed just prior to entering this gate.rixjÆj8xjÎj,vjÐjõjÒ}rjx(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÝhjÞ]rkxjçX½GateMP_enter() returns a "key" that is used by GateMP_leave() to leave this gate; this value is used to restore thread preemption to the state that existed just prior to entering this gate.rlx…�rmx}rnx(jÅjixjÆjgxubaubj)�rox}rpx(jÅX?IArg key; /* Enter the gate */ key = GateMP_enter(gateHandle);jÆj8xjÎj,vjÐjjÒ}rqx(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMöjÝhjÞ]rrxjçX?IArg key; /* Enter the gate */ key = GateMP_enter(gateHandle);rsx…�rtx}rux(jÅUjÆjoxubaubeubjÇ)�rvx}rwx(jÅUjÆjvjÎj,vjÐjÑjÒ}rxx(jÔ]jÕ]jÖ]j×]ryxUleaving-a-gatemp-instancerzxajÚ]r{xj¤aujÜK‹jÝhjÞ]r|x(jà)�r}x}r~x(jÅXLeaving a GateMP InstancerxjÆjvxjÎj,vjÐjäjÒ}r€x(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‹jÝhjÞ]r�xjçXLeaving a GateMP Instancer‚x…�rƒx}r„x(jÅjxjÆj}xubaubjò)�r…x}r†x(jÅXdGateMP_leave() may only called by a thread that has previously entered this gate via GateMP_enter().r‡xjÆjvxjÎj,vjÐjõjÒ}rˆx(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÝhjÞ]r‰xjçXdGateMP_leave() may only called by a thread that has previously entered this gate via GateMP_enter().rŠx…�r‹x}rŒx(jÅj‡xjÆj…xubaubjò)�r�x}rŽx(jÅXéAfter this method returns, the caller must not access the data structure protected by this gate (unless the caller has entered the gate more than once and other calls to leave remain to balance the number of previous calls to enter).r�xjÆjvxjÎj,vjÐjõjÒ}r�x(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÝhjÞ]r‘xjçXéAfter this method returns, the caller must not access the data structure protected by this gate (unless the caller has entered the gate more than once and other calls to leave remain to balance the number of previous calls to enter).r’x…�r“x}r”x(jÅj�xjÆj�xubaubj)�r•x}r–x(jÅX>IArg key; /* Leave the gate */ GateMP_leave(gateHandle, key);jÆjvxjÎj,vjÐjjÒ}r—x(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]r˜xjçX>IArg key; /* Leave the gate */ GateMP_leave(gateHandle, key);r™x…�ršx}r›x(jÅUjÆj•xubaubeubjÇ)�rœx}r�x(jÅUjÆjvjÎj,vjÐjÑjÒ}ržx(jÔ]jÕ]jÖ]j×]rŸxUquerying-a-gatemp-instancer xajÚ]r¡xj”aujÜK™jÝhjÞ]r¢x(jà)�r£x}r¤x(jÅXQuerying a GateMP Instancer¥xjÆjœxjÎj,vjÐjäjÒ}r¦x(jÔ]jÕ]jÖ]j×]jÚ]ujÜK™jÝhjÞ]r§xjçXQuerying a GateMP Instancer¨x…�r©x}rªx(jÅj¥xjÆj£xubaubjò)�r«x}r¬x(jÅXÆGateMP_query() returns TRUE if a gate has a given quality, and FALSE otherwise, including cases when the gate does not recognize the constant describing the quality. The qualities you can query are:r­xjÆjœxjÎj,vjÐjõjÒ}r®x(jÔ]jÕ]jÖ]j×]jÚ]ujÜKšjÝhjÞ]r¯xjçXÆGateMP_query() returns TRUE if a gate has a given quality, and FALSE otherwise, including cases when the gate does not recognize the constant describing the quality. The qualities you can query are:r°x…�r±x}r²x(jÅj­xjÆj«xubaubjt)�r³x}r´x(jÅUjÆjœxjÎj,vjÐjwjÒ}rµx(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKœjÝhjÞ]r¶x(j{)�r·x}r¸x(jÅXIGateMP_Q_BLOCKING. If GateMP_Q__BLOCKING is FALSE, the gate never blocks.r¹xjÆj³xjÎj,vjÐjjÒ}rºx(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r»xjò)�r¼x}r½x(jÅj¹xjÆj·xjÎj,vjÐjõjÒ}r¾x(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÞ]r¿xjçXIGateMP_Q_BLOCKING. If GateMP_Q__BLOCKING is FALSE, the gate never blocks.rÀx…�rÁx}rÂx(jÅj¹xjÆj¼xubaubaubj{)�rÃx}rÄx(jÅX•GateMP_Q_PREEMPTING. If GateMP_Q_PREEMPTING is FALSE, the gate does not allow other threads to preempt the thread that has already entered the gate. jÆj³xjÎj,vjÐjjÒ}rÅx(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÆxjò)�rÇx}rÈx(jÅX”GateMP_Q_PREEMPTING. If GateMP_Q_PREEMPTING is FALSE, the gate does not allow other threads to preempt the thread that has already entered the gate.rÉxjÆjÃxjÎj,vjÐjõjÒ}rÊx(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rËxjçX”GateMP_Q_PREEMPTING. If GateMP_Q_PREEMPTING is FALSE, the gate does not allow other threads to preempt the thread that has already entered the gate.rÌx…�rÍx}rÎx(jÅjÉxjÆjÇxubaubaubeubeubjÇ)�rÏx}rÐx(jÅUjÆjvjÎj,vjÐjÑjÒ}rÑx(jÔ]jÕ]jÖ]j×]rÒxUnameserver-interactionrÓxajÚ]rÔxhÂaujÜK jÝhjÞ]rÕx(jà)�rÖx}r×x(jÅXNameServer InteractionrØxjÆjÏxjÎj,vjÐjäjÒ}rÙx(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rÚxjçXNameServer InteractionrÛx…�rÜx}rÝx(jÅjØxjÆjÖxubaubjò)�rÞx}rßx(jÅX¢The GateMP module uses a ti.sdo.utils.NameServer instance to store instance information when an instance is created and the name parameter is non-NULL. The length of this name is limited to 16 characters (by default) including the null terminator ('\0'). This length can be increased by configuring the GateMP.maxNameLen module configuration property. If a name is supplied, it must be unique for all GateMP instances.jÆjÏxjÎj,vjÐjõjÒ}ràx(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÝhjÞ]ráxjçX¡The GateMP module uses a ti.sdo.utils.NameServer instance to store instance information when an instance is created and the name parameter is non-NULL. The length of this name is limited to 16 characters (by default) including the null terminator ('0'). This length can be increased by configuring the GateMP.maxNameLen module configuration property. If a name is supplied, it must be unique for all GateMP instances.râx…�rãx}räx(jÅX¢The GateMP module uses a ti.sdo.utils.NameServer instance to store instance information when an instance is created and the name parameter is non-NULL. The length of this name is limited to 16 characters (by default) including the null terminator ('\0'). This length can be increased by configuring the GateMP.maxNameLen module configuration property. If a name is supplied, it must be unique for all GateMP instances.jÆjÞxubaubjò)�råx}ræx(jÅXÖOther modules can use GateMP instances to protect access to their shared memory resources. For example, the NameServer name tables are protected by setting the "gate" property of the ti.sdo.utils.NameServer module.rçxjÆjÏxjÎj,vjÐjõjÒ}rèx(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¦jÝhjÞ]réxjçXÖOther modules can use GateMP instances to protect access to their shared memory resources. For example, the NameServer name tables are protected by setting the "gate" property of the ti.sdo.utils.NameServer module.rêx…�rëx}rìx(jÅjçxjÆjåxubaubjò)�ríx}rîx(jÅX;These examples set the "gate" property for various modules:rïxjÆjÏxjÎj,vjÐjõjÒ}rðx(jÔ]jÕ]jÖ]j×]jÚ]ujÜK©jÝhjÞ]rñxjçX;These examples set the "gate" property for various modules:ròx…�róx}rôx(jÅjïxjÆjíxubaubj)�rõx}röx(jÅXVheapBufMPParams.gate = GateMP_getDefaultRemote(); listMPParams.gate = gateHandle;jÆjÏxjÎj,vjÐjjÒ}r÷x(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]røxjçXVheapBufMPParams.gate = GateMP_getDefaultRemote(); listMPParams.gate = gateHandle;rùx…�rúx}rûx(jÅUjÆjõxubaubeubjÇ)�rüx}rýx(jÅUjKjÆjvjÎj,vjÐjÑjÒ}rþx(jÔ]rÿxjpajÕ]jÖ]j×]ryUid4ryajÚ]ujÜK±jÝhjÞ]ry(jà)�ry}ry(jÅX%Sample Runtime Program Flow (Dynamic)ryjÆjüxjÎj,vjÐjäjÒ}ry(jÔ]jÕ]jÖ]j×]jÚ]ujÜK±jÝhjÞ]ryjçX%Sample Runtime Program Flow (Dynamic)ry…�r y}r y(jÅjyjÆjyubaubjò)�r y}r y(jÅXŠThe following diagram shows the program flow for a two-processor (or two-thread) application. This application creates a Gate dynamically.r yjÆjüxjÎj,vjÐjõjÒ}ry(jÔ]jÕ]jÖ]j×]jÚ]ujÜK²jÝhjÞ]ryjçXŠThe following diagram shows the program flow for a two-processor (or two-thread) application. This application creates a Gate dynamically.ry…�ry}ry(jÅj yjÆj yubaubjR)�ry}ry(jÅX+.. Image:: ../images/IpcUG_ipc_2_6_1.png jÆjüxjÎXRinternal padding after source/rtos/PDK_Platform_Software/IPC/GateMP_Module.rst.incryjÐjZjÒ}ry(UuriX"rtos/../images/IpcUG_ipc_2_6_1.pngryj×]jÖ]jÔ]jÕ]jX}ryU*jysjÚ]ujÜK¸jÝhjÞ]ubeubeubjÇ)�ry}ry(jÅUjÆjÊjÎjÏjÐjÑjÒ}ry(jÔ]jÕ]jÖ]j×]ryU&gatemp-support-for-uio-and-misc-driverryajÚ]ryj1aujÜKGjÝhjÞ]ry(jà)�r y}r!y(jÅX&GateMP Support for UIO and Misc Driverr"yjÆjyjÎjÏjÐjäjÒ}r#y(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÝhjÞ]r$yjçX&GateMP Support for UIO and Misc Driverr%y…�r&y}r'y(jÅj"yjÆj yubaubj7)�r(y}r)y(jÅXRhttp://processors.wiki.ti.com/index.php/IPC_GateMP_Support_for_UIO_and_Misc_DriverjÆjyjÎj:XXsource/rtos/PDK_Platform_Software/IPC/IPC_GateMP_Support_for_UIO_and_Misc_Driver.rst.incr*y…�r+y}r,ybjÐj>jÒ}r-y(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r.yjçXRhttp://processors.wiki.ti.com/index.php/IPC_GateMP_Support_for_UIO_and_Misc_Driverr/y…�r0y}r1y(jÅUjÆj(yubaubjÇ)�r2y}r3y(jÅUjKjÆjyjÎj+yjÐjÑjÒ}r4y(jÔ]r5yj¹aajÕ]jÖ]j×]r6yUid5r7yajÚ]ujÜKjÝhjÞ]r8y(jà)�r9y}r:y(jÅX Introductionr;yjÆj2yjÎj+yjÐjäjÒ}ry…�r?y}r@y(jÅj;yjÆj9yubaubjò)�rAy}rBy(jÅX“Starting in IPC 3.42, the GateMP module added support for accessing device memory without using /dev/mem. Instead of accessing /dev/mem, a uio driver for Shared Region 0 access and a misc driver to expose a hwspinlock user interface can be used. These drivers are added in the Android SDK and GLSDK kernels. This feature was added because in some environments, /dev/mem may not be accessible to the LAD.rCyjÆj2yjÎj+yjÐjõjÒ}rDy(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rEyjçX“Starting in IPC 3.42, the GateMP module added support for accessing device memory without using /dev/mem. Instead of accessing /dev/mem, a uio driver for Shared Region 0 access and a misc driver to expose a hwspinlock user interface can be used. These drivers are added in the Android SDK and GLSDK kernels. This feature was added because in some environments, /dev/mem may not be accessible to the LAD.rFy…�rGy}rHy(jÅjCyjÆjAyubaubjë)�rIy}rJy(jÅXœThere is no change to how LAD is launched in this case, and if the uio and misc driver are not available in the kernel, it will fall back to using /dev/mem.jÆj2yjÎj+yjÐjïjÒ}rKy(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rLyjò)�rMy}rNy(jÅXœThere is no change to how LAD is launched in this case, and if the uio and misc driver are not available in the kernel, it will fall back to using /dev/mem.rOyjÆjIyjÎj+yjÐjõjÒ}rPy(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rQyjçXœThere is no change to how LAD is launched in this case, and if the uio and misc driver are not available in the kernel, it will fall back to using /dev/mem.rRy…�rSy}rTy(jÅjOyjÆjMyubaubaubjë)�rUy}rVy(jÅX'This applies only to Linux/Android IPC.rWyjÆj2yjÎj+yjÐjïjÒ}rXy(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rYyjò)�rZy}r[y(jÅjWyjÆjUyjÎj+yjÐjõjÒ}r\y(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r]yjçX'This applies only to Linux/Android IPC.r^y…�r_y}r`y(jÅjWyjÆjZyubaubaubeubjÇ)�ray}rby(jÅUjKjÆjyjÎj+yjÐjÑjÒ}rcy(jÔ]rdyj½1ajÕ]jÖ]j×]reyUconfigrfyajÚ]ujÜKjÝhjÞ]rgy(jà)�rhy}riy(jÅXConfigrjyjÆjayjÎj+yjÐjäjÒ}rky(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rlyjçXConfigrmy…�rny}roy(jÅjjyjÆjhyubaubjò)�rpy}rqy(jÅXWEnable the uio and misc drivers in the kernel by enabling the following config options:rryjÆjayjÎj+yjÐjõjÒ}rsy(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rtyjçXWEnable the uio and misc drivers in the kernel by enabling the following config options:ruy…�rvy}rwy(jÅjryjÆjpyubaubjò)�rxy}ryy(jÅXÃCONFIG_HWSPINLOCK_USER=y CONFIG_UIO=y CONFIG_UIO_PDRV_GENIRQ=y Update your dts file to define the hwspinlocks being used by the misc driver. Must start from hwspinlock "0" and go up sequentially:rzyjÆjayjÎj+yjÐjõjÒ}r{y(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r|yjçXÃCONFIG_HWSPINLOCK_USER=y CONFIG_UIO=y CONFIG_UIO_PDRV_GENIRQ=y Update your dts file to define the hwspinlocks being used by the misc driver. Must start from hwspinlock "0" and go up sequentially:r}y…�r~y}ry(jÅjzyjÆjxyubaubj)�r€y}r�y(jÅX‘gatemp { compatible = "hwspinlock-user"; hwlocks = <&hwspinlock 0>, <&hwspinlock 1>, <&hwspinlock 2>, <&hwspinlock 3>, <&hwspinlock 4>, <&hwspinlock 5>, <&hwspinlock 6>, <&hwspinlock 7>, <&hwspinlock 8>, <&hwspinlock 9>; };jÆjayjÎj+yjÐjjÒ}r‚y(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMRjÝhjÞ]rƒyjçX‘gatemp { compatible = "hwspinlock-user"; hwlocks = <&hwspinlock 0>, <&hwspinlock 1>, <&hwspinlock 2>, <&hwspinlock 3>, <&hwspinlock 4>, <&hwspinlock 5>, <&hwspinlock 6>, <&hwspinlock 7>, <&hwspinlock 8>, <&hwspinlock 9>; };r„y…�r…y}r†y(jÅUjÆj€yubaubjò)�r‡y}rˆy(jÅX÷The hwspinlock configuration in the dts file MUST match the BIOS-side IPC HWSpinlock configuration. Configuration the BIOS-side IPC module by adding the following to your cfg file (where is equal to the number of spinlocks in the dts listing):r‰yjÆjayjÎj+yjÐjõjÒ}rŠy(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÝhjÞ]r‹yjçX÷The hwspinlock configuration in the dts file MUST match the BIOS-side IPC HWSpinlock configuration. Configuration the BIOS-side IPC module by adding the following to your cfg file (where is equal to the number of spinlocks in the dts listing):rŒy…�r�y}rŽy(jÅj‰yjÆj‡yubaubj)�r�y}r�y(jÅXavar HWSpinlock = xdc.useModule(‘ti.sdo.ipc.gates.GateHWSpinlock’); HWSpinlock.numLocks = ;jÆjayjÎj+yjÐjjÒ}r‘y(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMgjÝhjÞ]r’yjçXavar HWSpinlock = xdc.useModule(‘ti.sdo.ipc.gates.GateHWSpinlock’); HWSpinlock.numLocks = ;r“y…�r”y}r•y(jÅUjÆj�yubaubjò)�r–y}r—y(jÅX¨Update your dts file to add the UIO-based node for Shared Region 0 (modify address and size so that it matches the Shared Region 0 definition in the remote core image):r˜yjÆjayjÎj+yjÐjõjÒ}r™y(jÔ]jÕ]jÖ]j×]jÚ]ujÜK; };jÆjayjÎj+yjÐjjÒ}r¨y(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMrjÝhjÞ]r©yjçXQsr0 { compatible = "generic-uio"; reg = <0xbfd00000 0x100000>; };rªy…�r«y}r¬y(jÅUjÆj¦yubaubjò)�r­y}r®y(jÅXKernel 4.4-based releases:r¯yjÆjayjÎj+yjÐjõjÒ}r°y(jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÝhjÞ]r±yjçXKernel 4.4-based releases:r²y…�r³y}r´y(jÅj¯yjÆj­yubaubj)�rµy}r¶y(jÅXYsr0 { compatible = "generic-uio"; reg = <0x0 0xbfb00000 0x0 0x100000>; };jÆjayjÎj+yjÐjjÒ}r·y(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM{jÝhjÞ]r¸yjçXYsr0 { compatible = "generic-uio"; reg = <0x0 0xbfb00000 0x0 0x100000>; };r¹y…�rºy}r»y(jÅUjÆjµyubaubjë)�r¼y}r½y(jÅX�Make sure that the "compatible" property in the sr0 dts node matches the UIO’s of_id string defined in the kernel command line.jÆjayjÎj+yjÐjïjÒ}r¾y(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¿yjò)�rÀy}rÁy(jÅX�Make sure that the "compatible" property in the sr0 dts node matches the UIO’s of_id string defined in the kernel command line.rÂyjÆj¼yjÎj+yjÐjõjÒ}rÃy(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÞ]rÄyjçX�Make sure that the "compatible" property in the sr0 dts node matches the UIO’s of_id string defined in the kernel command line.rÅy…�rÆy}rÇy(jÅjÂyjÆjÀyubaubaubjò)�rÈy}rÉy(jÅX4Append the following to the kernel's CONFIG_CMDLINE:rÊyjÆjayjÎj+yjÐjõjÒ}rËy(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÝhjÞ]rÌyjçX4Append the following to the kernel's CONFIG_CMDLINE:rÍy…�rÎy}rÏy(jÅjÊyjÆjÈyubaubj)�rÐy}rÑy(jÅX!uio_pdrv_genirq.of_id=generic-uiojÆjayjÎj+yjÐjjÒ}rÒy(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMˆjÝhjÞ]rÓyjçX!uio_pdrv_genirq.of_id=generic-uiorÔy…�rÕy}rÖy(jÅUjÆjÐyubaubjò)�r×y}rØy(jÅX For example:rÙyjÆjayjÎj+yjÐjõjÒ}rÚy(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÝhjÞ]rÛyjçX For example:rÜy…�rÝy}rÞy(jÅjÙyjÆj×yubaubj)�rßy}rày(jÅXCONFIG_CMDLINE="root=/dev/mmcblk0p2 rw console=ttyS0,119200 androidboot.console=ttyS0 init=/init rootfstype=ext4 rootwait drm.rnodes=1 snd.slots_reserved=1,1 androidboot.selinux=permissive androidboot.hardware=jacinto6evmboard uio_pdrv_genirq.of_id=generic-uio"jÆjayjÎj+yjÐjjÒ}ráy(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMŽjÝhjÞ]râyjçXCONFIG_CMDLINE="root=/dev/mmcblk0p2 rw console=ttyS0,119200 androidboot.console=ttyS0 init=/init rootfstype=ext4 rootwait drm.rnodes=1 snd.slots_reserved=1,1 androidboot.selinux=permissive androidboot.hardware=jacinto6evmboard uio_pdrv_genirq.of_id=generic-uio"rãy…�räy}råy(jÅUjÆjßyubaubjë)�ræy}rçy(jÅX´Changes for the command line are already present in the Android 6AM.1.0 release. For GLSDK, the command line comes from the bootargs set in the uenv.txt file in the boot partition.jÆjayjÎj+yjÐjïjÒ}rèy(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]réyjò)�rêy}rëy(jÅX´Changes for the command line are already present in the Android 6AM.1.0 release. For GLSDK, the command line comes from the bootargs set in the uenv.txt file in the boot partition.rìyjÆjæyjÎj+yjÐjõjÒ}ríy(jÔ]jÕ]jÖ]j×]jÚ]ujÜKcjÞ]rîyjçX´Changes for the command line are already present in the Android 6AM.1.0 release. For GLSDK, the command line comes from the bootargs set in the uenv.txt file in the boot partition.rïy…�rðy}rñy(jÅjìyjÆjêyubaubaubjò)�ròy}róy(jÅX?Also, specific owner/group must be set for the following files:rôyjÆjayjÎj+yjÐjõjÒ}rõy(jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]röyjçX?Also, specific owner/group must be set for the following files:r÷y…�røy}rùy(jÅjôyjÆjòyubaubjt)�rúy}rûy(jÅUjÆjayjÎj+yjÐjwjÒ}rüy(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKijÝhjÞ]rýy(j{)�rþy}rÿy(jÅX /dev/uio0rzjÆjúyjÎj+yjÐjjÒ}rz(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rzjò)�rz}rz(jÅjzjÆjþyjÎj+yjÐjõjÒ}rz(jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÞ]rzjçX /dev/uio0rz…�rz}r z(jÅjzjÆjzubaubaubj{)�r z}r z(jÅX/dev/hwspinlockr zjÆjúyjÎj+yjÐjjÒ}r z(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rzjò)�rz}rz(jÅj zjÆj zjÎj+yjÐjõjÒ}rz(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]rzjçX/dev/hwspinlockrz…�rz}rz(jÅj zjÆjzubaubaubj{)�rz}rz(jÅX%**Android:** /data/lad, /data/lad/LADrzjÆjúyjÎj+yjÐjjÒ}rz(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rzjò)�rz}rz(jÅjzjÆjzjÎj+yjÐjõjÒ}rz(jÔ]jÕ]jÖ]j×]jÚ]ujÜKkjÞ]rz(jÚ)�rz}r z(jÅX **Android:**jÒ}r!z(jÔ]jÕ]jÖ]j×]jÚ]ujÆjzjÞ]r"zjçXAndroid:r#z…�r$z}r%z(jÅUjÆjzubajÐjâubjçX /data/lad, /data/lad/LADr&z…�r'z}r(z(jÅX /data/lad, /data/lad/LADjÆjzubeubaubj{)�r)z}r*z(jÅX**Linux:** /tmp/LAD jÆjúyjÎXointernal padding after source/rtos/PDK_Platform_Software/IPC/IPC_GateMP_Support_for_UIO_and_Misc_Driver.rst.incr+zjÐjjÒ}r,z(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r-zjò)�r.z}r/z(jÅX**Linux:** /tmp/LADjÆj)zjÎj+yjÐjõjÒ}r0z(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]r1z(jÚ)�r2z}r3z(jÅX **Linux:**jÒ}r4z(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.zjÞ]r5zjçXLinux:r6z…�r7z}r8z(jÅUjÆj2zubajÐjâubjçX /tmp/LADr9z…�r:z}r;z(jÅX /tmp/LADjÆj.zubeubaubeubeubeubjÇ)�rz(jÔ]jÕ]jÖ]j×]r?zU notify-moduler@zajÚ]rAzh§aujÜKKjÝhjÞ]rBz(jà)�rCz}rDz(jÅX Notify ModulerEzjÆjjÒ}rPz(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rQzjçXEhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/Notify_ModulerRz…�rSz}rTz(jÅUjÆjKzubaubjÂ)�rUz}rVz(jÅX³.. |notCfg_Img1| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆjjÝhjÞ]r){jçXŒA specific event may be disabled or enabled using Notify_disableEvent() and Notify_enableEvent(). All notifications on an entire interrupt line may be disabled or restored using Notify_disable() and Notify_restore() calls. Notify_disable() does not alter the state of individual events. Instead, it just disables the ability of the Notify module to receive events on the specified interrupt line.r*{…�r+{}r,{(jÅj'{jÆj%{ubaubjò)�r-{}r.{(jÅX`"Loopback" mode, which is enabled by default, allows notifications to be registered and sent locally. This is accomplished by supplying the processor's own MultiProc ID to Notify APIs. Line ID 0 (zero) is always used for local notifications. It is important to be aware of some subtle (but important) differences between remote and local notifications:r/{jÆj{(jÅXLoopback callback functions execute in the context of the same thread that called Notify_sendEvent(). This is in contrast to callback functions called due to another processor's sent notification--such "remote" callback functions execute in an ISR context.r?{jÒ}r@{(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9{jÞ]rA{jò)�rB{}rC{(jÅj?{jÆj={jÎjNzjÐjõjÒ}rD{(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]rE{jçXLoopback callback functions execute in the context of the same thread that called Notify_sendEvent(). This is in contrast to callback functions called due to another processor's sent notification--such "remote" callback functions execute in an ISR context.rF{…�rG{}rH{(jÅj?{jÆjB{ubaubajÐjubj{)�rI{}rJ{(jÅX=Loopback callback functions execute with interrupts disabled.rK{jÒ}rL{(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9{jÞ]rM{jò)�rN{}rO{(jÅjK{jÆjI{jÎjNzjÐjõjÒ}rP{(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÞ]rQ{jçX=Loopback callback functions execute with interrupts disabled.rR{…�rS{}rT{(jÅjK{jÆjN{ubaubajÐjubj{)�rU{}rV{(jÅX9Disabling the local interrupt line causes all notifications that are sent to the local processor to be lost. By contrast, a notification sent to an enabled event on a remote processor that has called Notify_disableEvent() results in a pending notification until the disabled processor has called Notify_restore().rW{jÒ}rX{(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9{jÞ]rY{jò)�rZ{}r[{(jÅjW{jÆjU{jÎjNzjÐjõjÒ}r\{(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]r]{jçX9Disabling the local interrupt line causes all notifications that are sent to the local processor to be lost. By contrast, a notification sent to an enabled event on a remote processor that has called Notify_disableEvent() results in a pending notification until the disabled processor has called Notify_restore().r^{…�r_{}r`{(jÅjW{jÆjZ{ubaubajÐjubj{)�ra{}rb{(jÅXŸLocal notifications do not support events of different priorities. By contrast, Notify driver implementations may correlate event IDs with varying priorities. jÒ}rc{(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9{jÞ]rd{jò)�re{}rf{(jÅXžLocal notifications do not support events of different priorities. By contrast, Notify driver implementations may correlate event IDs with varying priorities.rg{jÆja{jÎjNzjÐjõjÒ}rh{(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÞ]ri{jçXžLocal notifications do not support events of different priorities. By contrast, Notify driver implementations may correlate event IDs with varying priorities.rj{…�rk{}rl{(jÅjg{jÆje{ubaubajÐjubejÐjwubaubjë)�rm{}rn{(jÅX[The Notify Module is only supported in SYS/BIOS environments. It is not provided on HLOS's.ro{jÆjjÒ}r‹{(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rŒ{jçXKhttp://processors.wiki.ti.com/index.php/IPC_Users_Guide/SharedRegion_Moduler�{…�rŽ{}r�{(jÅUjÆj†{ubaubjÂ)�r�{}r‘{(jÅX³.. |srmCfg_Img1| Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.html jÆjÈjÎj‰{jÐjHjÒ}r’{(jÔ]jÕ]jÖ]j×]jÚ]r“{X srmCfg_Img1r”{aujÜKjÝhjÞ]r•{jû)�r–{}r—{(jÅj”{jÒ}r˜{(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr™{j×]jÖ]jÔ]jÕ]jÚ]ujÆj�{jÞ]rš{jR)�r›{}rœ{(jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr�{jÒ}rž{(UuriXrtos/../images/Book_cfg.pngrŸ{j×]jÖ]jÔ]jÕ]jX}r {U*jŸ{sjÚ]Ualtj”{ujÆj–{jÞ]jÐjZubajÐjÿubaubjÃjÂ)�r¡{}r¢{(jÅX¼.. |srmRun_Img1| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.html jÆjÈjÎj‰{jÐjHjÒ}r£{(jÔ]jÕ]jÖ]j×]jÚ]r¤{X srmRun_Img1r¥{aujÜK jÝhjÞ]r¦{jû)�r§{}r¨{(jÅj¥{jÒ}r©{(UrefuriXqhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.htmlrª{j×]jÖ]jÔ]jÕ]jÚ]ujÆj¡{jÞ]r«{jR)�r¬{}r­{(jÅXªImage:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.htmlr®{jÒ}r¯{(UuriXrtos/../images/Book_run.pngr°{j×]jÖ]jÔ]jÕ]jX}r±{U*j°{sjÚ]Ualtj¥{ujÆj§{jÞ]jÐjZubajÐjÿubaubjÂ)�r²{}r³{(jÅX¼.. |srmRun_Img2| Image:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.html jÆjÈjÎj‰{jÐjHjÒ}r´{(jÔ]jÕ]jÖ]j×]jÚ]rµ{X srmRun_Img2r¶{aujÜK jÝhjÞ]r·{jû)�r¸{}r¹{(jÅj¶{jÒ}rº{(UrefuriXqhttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.htmlr»{j×]jÖ]jÔ]jÕ]jÚ]ujÆj²{jÞ]r¼{jR)�r½{}r¾{(jÅXªImage:: ../images/Book_run.png :target: http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_multi_proc_8h.htmlr¿{jÒ}rÀ{(UuriXrtos/../images/Book_run.pngrÁ{j×]jÖ]jÔ]jÕ]jX}rÂ{U*jÁ{sjÚ]Ualtj¶{ujÆj¸{jÞ]jÐjZubajÐjÿubaubjc)�rÃ{}rÄ{(jÅUjÆjÈjÎj‰{jÐjfjÒ}rÅ{(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÆ{ji)�rÇ{}rÈ{(jÅUjlKjÆjÃ{jÎj‰{jÐjÜjÒ}rÉ{(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubj3)�rÊ{}rË{(jÅUjÆjÈjÎj‰{jÐj6jÒ}rÌ{(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÍ{jy )�rÎ{}rÏ{(jÅUjÒ}rÐ{(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊ{jÞ]rÑ{j~ )�rÒ{}rÓ{(jÅUjÒ}rÔ{(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjÎ{jÞ]rÕ{(jƒ )�rÖ{}r×{(jÅUjÒ}rØ{(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÒ{jÞ]jÐj‡ ubjƒ )�rÙ{}rÚ{(jÅUjÒ}rÛ{(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÒ{jÞ]jÐj‡ ubj‹ )�rÜ{}rÝ{(jÅUjÒ}rÞ{(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÒ{jÞ]rß{j� )�rà{}rá{(jÅUjÒ}râ{(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÜ{jÞ]rã{j• )�rä{}rå{(jÅUjÒ}ræ{(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjà{jÞ]rç{jò)�rè{}ré{(jÅXAPI Reference Linksrê{jÆjä{jÎj‰{jÐjõjÒ}rë{(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rì{jçXAPI Reference Linksrí{…�rî{}rï{(jÅjê{jÆjè{ubaubajÐj¢ ubajÐj£ ubajÐj¤ ubj¥ )�rð{}rñ{(jÅUjÒ}rò{(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÒ{jÞ]ró{j� )�rô{}rõ{(jÅUjÒ}rö{(jÔ]jÕ]jÖ]j×]jÚ]ujÆjð{jÞ]r÷{(j• )�rø{}rù{(jÅUjÒ}rú{(jÔ]jÕ]jÖ]j×]jÚ]ujÆjô{jÞ]rû{jò)�rü{}rý{(jÅX |srmCfg_Img1|rþ{jÆjø{jÎj‰{jÐjõjÒ}rÿ{(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r|jû)�r|}r|(jÅj”{jÆjü{jÎNjÐjÿjÒ}r|(Urefurij™{j×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]r|jR)�r|}r|(jÅj�{jÆj|jÎNjÐjZjÒ}r|(UuriXrtos/../images/Book_cfg.pngr|j×]jÖ]jÔ]jÕ]jX}r |U*j|sjÚ]Ualtj”{ujÜNjÞ]ubaubaubajÐj¢ ubj• )�r |}r |(jÅUjÒ}r |(jÔ]jÕ]jÖ]j×]jÚ]ujÆjô{jÞ]r |jò)�r|}r|(jÅX |srmRun_Img1|r|jÆj |jÎj‰{jÐjõjÒ}r|(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r|jû)�r|}r|(jÅj¥{jÆj|jÎNjÐjÿjÒ}r|(Urefurijª{j×]jÖ]jÔ]jÕ]jÚ]ujÜNjÞ]r|jR)�r|}r|(jÅj®{jÆj|jÎNjÐjZjÒ}r|(UuriXrtos/../images/Book_run.pngr|j×]jÖ]jÔ]jÕ]jX}r|U*j|sjÚ]Ualtj¥{ujÜNjÞ]ubaubaubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubajÐjÔ ubaubjò)�r|}r|(jÅXþThe SharedRegion module is designed to be used in a multi-processor environment where there are memory regions that are shared and accessed across different processors. In an environment with shared memory regions, a common problem is that these shared regions are memory mapped to different address spaces on different processors. This is shown in the following figure. The shared memory region "DDR2" is mapped into Proc0's local memory space at base address 0x80000000 and Proc1's local memory space at base address 0x90000000. Therefore, the pointers in "DDR2" need to be translated in order for them to be portable between Proc0 and Proc1. The local memory regions for Proc0 and Proc1 are not shared thus they do not need to be added to the SharedRegion module.r|jÆjÈjÎj‰{jÐjõjÒ}r|(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r |jçXþThe SharedRegion module is designed to be used in a multi-processor environment where there are memory regions that are shared and accessed across different processors. In an environment with shared memory regions, a common problem is that these shared regions are memory mapped to different address spaces on different processors. This is shown in the following figure. The shared memory region "DDR2" is mapped into Proc0's local memory space at base address 0x80000000 and Proc1's local memory space at base address 0x90000000. Therefore, the pointers in "DDR2" need to be translated in order for them to be portable between Proc0 and Proc1. The local memory regions for Proc0 and Proc1 are not shared thus they do not need to be added to the SharedRegion module.r!|…�r"|}r#|(jÅj|jÆj|ubaubjR)�r$|}r%|(jÅX).. image:: ../images/IpcUG_ipc_2_8_1.png jÆjÈjÎj‰{jÐjZjÒ}r&|(UuriX"rtos/../images/IpcUG_ipc_2_8_1.pngr'|j×]jÖ]jÔ]jÕ]jX}r(|U*j'|sjÚ]ujÜKjÝhjÞ]ubjò)�r)|}r*|(jÅXlOn systems where address translation is not required, translation is a noop, so performance is not affected.r+|jÆjÈjÎj‰{jÐjõjÒ}r,|(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r-|jçXlOn systems where address translation is not required, translation is a noop, so performance is not affected.r.|…�r/|}r0|(jÅj+|jÆj)|ubaubjò)�r1|}r2|(jÅXžThe SharedRegion module itself does not use any shared memory, because all of its state is stored locally. The APIs use the system gate for thread protection.r3|jÆjÈjÎj‰{jÐjõjÒ}r4|(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r5|jçXžThe SharedRegion module itself does not use any shared memory, because all of its state is stored locally. The APIs use the system gate for thread protection.r6|…�r7|}r8|(jÅj3|jÆj1|ubaubjò)�r9|}r:|(jÅXBThis module creates a shared memory region lookup table. The lookup table contains the processor's view of every shared region in the system. In cases where a processor cannot view a certain shared memory region, that shared memory region should be left invalid for that processor. Each processor has its own lookup table.r;|jÆjÈjÎj‰{jÐjõjÒ}r<|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÝhjÞ]r=|jçXBThis module creates a shared memory region lookup table. The lookup table contains the processor's view of every shared region in the system. In cases where a processor cannot view a certain shared memory region, that shared memory region should be left invalid for that processor. Each processor has its own lookup table.r>|…�r?|}r@|(jÅj;|jÆj9|ubaubjò)�rA|}rB|(jÅXåEach processor's view of a particular shared memory region can be determined by the same region ID across all lookup tables. At runtime, this table, along with the shared region pointer, is used to do a quick address translation.rC|jÆjÈjÎj‰{jÐjõjÒ}rD|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÝhjÞ]rE|jçXåEach processor's view of a particular shared memory region can be determined by the same region ID across all lookup tables. At runtime, this table, along with the shared region pointer, is used to do a quick address translation.rF|…�rG|}rH|(jÅjC|jÆjA|ubaubjò)�rI|}rJ|(jÅXMThe lookup table contains the following information about each shared region:rK|jÆjÈjÎj‰{jÐjõjÒ}rL|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÝhjÞ]rM|jçXMThe lookup table contains the following information about each shared region:rN|…�rO|}rP|(jÅjK|jÆjI|ubaubj3)�rQ|}rR|(jÅUjÆjÈjÎNjÐj6jÒ}rS|(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rT|jt)�rU|}rV|(jÅUjÒ}rW|(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjQ|jÞ]rX|(j{)�rY|}rZ|(jÅX{base. The base address of the region. This may be different on different processors, depending on their addressing schemes.r[|jÒ}r\|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU|jÞ]r]|jò)�r^|}r_|(jÅj[|jÆjY|jÎj‰{jÐjõjÒ}r`|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]ra|jçX{base. The base address of the region. This may be different on different processors, depending on their addressing schemes.rb|…�rc|}rd|(jÅj[|jÆj^|ubaubajÐjubj{)�re|}rf|(jÅXWlen. The length of the region. This should be should be the same across all processors.rg|jÒ}rh|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU|jÞ]ri|jò)�rj|}rk|(jÅjg|jÆje|jÎj‰{jÐjõjÒ}rl|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]rm|jçXWlen. The length of the region. This should be should be the same across all processors.rn|…�ro|}rp|(jÅjg|jÆjj|ubaubajÐjubj{)�rq|}rr|(jÅXÃownerProcId. MultiProc ID of the processor that manages this region. If an owner is specified, the owner creates a HeapMemMP instance at runtime. The other cores open the same HeapMemMP instance.rs|jÒ}rt|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU|jÞ]ru|jò)�rv|}rw|(jÅjs|jÆjq|jÎj‰{jÐjõjÒ}rx|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]ry|jçXÃownerProcId. MultiProc ID of the processor that manages this region. If an owner is specified, the owner creates a HeapMemMP instance at runtime. The other cores open the same HeapMemMP instance.rz|…�r{|}r||(jÅjs|jÆjv|ubaubajÐjubj{)�r}|}r~|(jÅX^isValid. Boolean to specify whether the region is valid (accessible) or not on this processor.r|jÒ}r€|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU|jÞ]r�|jò)�r‚|}rƒ|(jÅj|jÆj}|jÎj‰{jÐjõjÒ}r„|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]r…|jçX^isValid. Boolean to specify whether the region is valid (accessible) or not on this processor.r†|…�r‡|}rˆ|(jÅj|jÆj‚|ubaubajÐjubj{)�r‰|}rŠ|(jÅXacacheEnable. Boolean to specify whether a cache is enabled for the region on the local processor.r‹|jÒ}rŒ|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU|jÞ]r�|jò)�rŽ|}r�|(jÅj‹|jÆj‰|jÎj‰{jÐjõjÒ}r�|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÞ]r‘|jçXacacheEnable. Boolean to specify whether a cache is enabled for the region on the local processor.r’|…�r“|}r”|(jÅj‹|jÆjŽ|ubaubajÐjubj{)�r•|}r–|(jÅX}cacheLineSize. The cache line size for the region. It is crucial that the value specified here be the same on all processors.r—|jÒ}r˜|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU|jÞ]r™|jò)�rš|}r›|(jÅj—|jÆj•|jÎj‰{jÐjõjÒ}rœ|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]r�|jçX}cacheLineSize. The cache line size for the region. It is crucial that the value specified here be the same on all processors.rž|…�rŸ|}r |(jÅj—|jÆjš|ubaubajÐjubj{)�r¡|}r¢|(jÅXCcreateHeap. Boolean to specify if a heap is created for the region.r£|jÒ}r¤|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU|jÞ]r¥|jò)�r¦|}r§|(jÅj£|jÆj¡|jÎj‰{jÐjõjÒ}r¨|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÞ]r©|jçXCcreateHeap. Boolean to specify if a heap is created for the region.rª|…�r«|}r¬|(jÅj£|jÆj¦|ubaubajÐjubj{)�r­|}r®|(jÅX+name. The name associated with the region. jÒ}r¯|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU|jÞ]r°|jò)�r±|}r²|(jÅX*name. The name associated with the region.r³|jÆj­|jÎj‰{jÐjõjÒ}r´|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rµ|jçX*name. The name associated with the region.r¶|…�r·|}r¸|(jÅj³|jÆj±|ubaubajÐjubejÐjwubaubjò)�r¹|}rº|(jÅX The maximum number of entries in the lookup table is statically configurable using the SharedRegion.numEntries property. Entries can be added during static configuration or at runtime. When you add or remove an entry in one processor's table, you must update all of the remaining processors' tables to keep them consistent. The larger the maximum number of entries, the longer it will take to traverse the lookup table when searching for the index. Therefore, keep the lookup table small for better performance and footprint.r»|jÆjÈjÎj‰{jÐjõjÒ}r¼|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÝhjÞ]r½|jçX The maximum number of entries in the lookup table is statically configurable using the SharedRegion.numEntries property. Entries can be added during static configuration or at runtime. When you add or remove an entry in one processor's table, you must update all of the remaining processors' tables to keep them consistent. The larger the maximum number of entries, the longer it will take to traverse the lookup table when searching for the index. Therefore, keep the lookup table small for better performance and footprint.r¾|…�r¿|}rÀ|(jÅj»|jÆj¹|ubaubjò)�rÁ|}rÂ|(jÅXBecause each processor stores information about the caching of a shared memory region in the SharedRegion lookup table, other modules can (and do) make use of this caching information to maintain coherency and alignment when using items stored in shared memory.rÃ|jÆjÈjÎj‰{jÐjõjÒ}rÄ|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÝhjÞ]rÅ|jçXBecause each processor stores information about the caching of a shared memory region in the SharedRegion lookup table, other modules can (and do) make use of this caching information to maintain coherency and alignment when using items stored in shared memory.rÆ|…�rÇ|}rÈ|(jÅjÃ|jÆjÁ|ubaubjò)�rÉ|}rÊ|(jÅXDIn order to use the SharedRegion module, the following must be true:rË|jÆjÈjÎj‰{jÐjõjÒ}rÌ|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÝhjÞ]rÍ|jçXDIn order to use the SharedRegion module, the following must be true:rÎ|…�rÏ|}rÐ|(jÅjË|jÆjÉ|ubaubj3)�rÑ|}rÒ|(jÅUjÆjÈjÎNjÐj6jÒ}rÓ|(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÔ|jt)�rÕ|}rÖ|(jÅUjÒ}r×|(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjÑ|jÞ]rØ|(j{)�rÙ|}rÚ|(jÅXHThe SharedRegion.numEntries property must be the same on all processors.rÛ|jÒ}rÜ|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÕ|jÞ]rÝ|jò)�rÞ|}rß|(jÅjÛ|jÆjÙ|jÎj‰{jÐjõjÒ}rà|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]rá|jçXHThe SharedRegion.numEntries property must be the same on all processors.râ|…�rã|}rä|(jÅjÛ|jÆjÞ|ubaubajÐjubj{)�rå|}ræ|(jÅX3The size of a SharedRegion pointer is 32-bits wide.rç|jÒ}rè|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÕ|jÞ]ré|jò)�rê|}rë|(jÅjç|jÆjå|jÎj‰{jÐjõjÒ}rì|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÞ]rí|jçX3The size of a SharedRegion pointer is 32-bits wide.rî|…�rï|}rð|(jÅjç|jÆjê|ubaubajÐjubj{)�rñ|}rò|(jÅX]The SharedRegion lookup table must contain at least 1 entry for address translation to occur.ró|jÒ}rô|(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÕ|jÞ]rõ|jò)�rö|}r÷|(jÅjó|jÆjñ|jÎj‰{jÐjõjÒ}rø|(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rù|jçX]The SharedRegion lookup table must contain at least 1 entry for address translation to occur.rú|…�rû|}rü|(jÅjó|jÆjö|ubaubajÐjubj{)�rý|}rþ|(jÅXVShared memory regions must not overlap each other from a single processor's viewpoint.rÿ|jÒ}r}(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÕ|jÞ]r}jò)�r}}r}(jÅjÿ|jÆjý|jÎj‰{jÐjõjÒ}r}(jÔ]jÕ]jÖ]j×]jÚ]ujÜK9jÞ]r}jçXVShared memory regions must not overlap each other from a single processor's viewpoint.r}…�r}}r}(jÅjÿ|jÆj}ubaubajÐjubj{)�r }}r }(jÅXCRegions are not allowed to overlap from a single processor's view. jÒ}r }(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÕ|jÞ]r }jò)�r }}r}(jÅXBRegions are not allowed to overlap from a single processor's view.r}jÆj }jÎj‰{jÐjõjÒ}r}(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]r}jçXBRegions are not allowed to overlap from a single processor's view.r}…�r}}r}(jÅj}jÆj }ubaubajÐjubejÐjwubaubjò)�r}}r}(jÅX+The SharedRegion with an index of 0 (zero) is used by IPC_start() to create resource management tables for internal use by other IPC modules. Thus SharedRegion "0" must be accessible by all processors. Your applications can also make use of SharedRegion "0", but must be aware of memory limitations.r}jÆjÈjÎj‰{jÐjõjÒ}r}(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}}r?}(jÅj:}jÆj8}ubaubjò)�r@}}rA}(jÅX For example:rB}jÆj}jÎj‰{jÐjõjÒ}rC}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÝhjÞ]rD}jçX For example:rE}…�rF}}rG}(jÅjB}jÆj@}ubaubj)�rH}}rI}(jÅX™var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion'); SharedRegion.cacheLineSize = 32; SharedRegion.numEntries = 4; SharedRegion.translate = true;jÆj}jÎj‰{jÐjjÒ}rJ}(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM< jÝhjÞ]rK}jçX™var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion'); SharedRegion.cacheLineSize = 32; SharedRegion.numEntries = 4; SharedRegion.translate = true;rL}…�rM}}rN}(jÅUjÆjH}ubaubjò)�rO}}rP}(jÅXrThen, use the SharedRegion.setEntryMeta() method in the configuration file to specify the parameters of the entry.rQ}jÆj}jÎj‰{jÐjõjÒ}rR}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKNjÝhjÞ]rS}jçXrThen, use the SharedRegion.setEntryMeta() method in the configuration file to specify the parameters of the entry.rT}…�rU}}rV}(jÅjQ}jÆjO}ubaubj)�rW}}rX}(jÅX,var SHAREDMEM = 0x0C000000; var SHAREDMEMSIZE = 0x00200000; SharedRegion.setEntryMeta(0, { base: SHAREDMEM, len: SHAREDMEMSIZE, ownerProcId: 0, isValid: true, cacheEnable: true, cacheLineSize: 128, createHeap: true, name: "internal_shared_mem" });jÆj}jÎj‰{jÐjjÒ}rY}(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜME jÝhjÞ]rZ}jçX,var SHAREDMEM = 0x0C000000; var SHAREDMEMSIZE = 0x00200000; SharedRegion.setEntryMeta(0, { base: SHAREDMEM, len: SHAREDMEMSIZE, ownerProcId: 0, isValid: true, cacheEnable: true, cacheLineSize: 128, createHeap: true, name: "internal_shared_mem" });r[}…�r\}}r]}(jÅUjÆjW}ubaubjò)�r^}}r_}(jÅXIf, during static configuration, you don't know the base address for every processor, you should set the "isValid" field for an entry for which you don't yet know the base address to "false". Storing this information will allow it to be completed at runtime.r`}jÆj}jÎj‰{jÐjõjÒ}ra}(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÝhjÞ]rb}jçXIf, during static configuration, you don't know the base address for every processor, you should set the "isValid" field for an entry for which you don't yet know the base address to "false". Storing this information will allow it to be completed at runtime.rc}…�rd}}re}(jÅj`}jÆj^}ubaubjò)�rf}}rg}(jÅXThe following figure shows the configuration of a SharedRegion table for the system in the following figure. This system has seven processors and two shared memory regions. Region 0 ("ext") is accessible by all processors. Region 1 ("local") is accessible only by processors 1 to 6.rh}jÆj}jÎj‰{jÐjõjÒ}ri}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÝhjÞ]rj}jçXThe following figure shows the configuration of a SharedRegion table for the system in the following figure. This system has seven processors and two shared memory regions. Region 0 ("ext") is accessible by all processors. Region 1 ("local") is accessible only by processors 1 to 6.rk}…�rl}}rm}(jÅjh}jÆjf}ubaubjR)�rn}}ro}(jÅX).. image:: ../images/IpcUG_ipc_2_8_2.png jÆj}jÎj‰{jÐjZjÒ}rp}(UuriX"rtos/../images/IpcUG_ipc_2_8_2.pngrq}j×]jÖ]jÔ]jÕ]jX}rr}U*jq}sjÚ]ujÜKejÝhjÞ]ubjò)�rs}}rt}(jÅXbIf the "createHeap" field is set to true, a HeapMemMP instance is created within the SharedRegion.ru}jÆj}jÎj‰{jÐjõjÒ}rv}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÝhjÞ]rw}jçXbIf the "createHeap" field is set to true, a HeapMemMP instance is created within the SharedRegion.rx}…�ry}}rz}(jÅju}jÆjs}ubaubjò)�r{}}r|}(jÅXò|srmCfg_Img2| The latest version of the SharedRegion module configuration documentation is available `online `__.jÆj}jÎj‰{jÐjõjÒ}r}}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÝhjÞ]r~}(jû)�r}}r€}(jÅjÁjÆj{}jÎNjÐjÿjÒ}r�}(UrefuriXhhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr‚}j×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]rƒ}jR)�r„}}r…}(jÅX¡Image:: ../images/Book_cfg.png :target: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/indexChrome.htmlr†}jÆj}jÎNjÐjZjÒ}r‡}(UuriXrtos/../images/Book_cfg.pngrˆ}j×]jÖ]jÔ]jÕ]jX}r‰}U*jˆ}sjÚ]UaltjÁujÜNjÞ]ubaubjçXX The latest version of the SharedRegion module configuration documentation is available rŠ}…�r‹}}rŒ}(jÅXX The latest version of the SharedRegion module configuration documentation is available jÆj{}ubjû)�r�}}rŽ}(jÅXŒ`online `__jÒ}r�}(UnameXonlinejXhttp://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/cdoc/index.html#ti/sdo/ipc/SharedRegion.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆj{}jÞ]r�}jçXonliner‘}…�r’}}r“}(jÅUjÆj�}ubajÐjÿubjçX.…�r”}}r•}(jÅX.jÆj{}ubeubeubjÇ)�r–}}r—}(jÅUjÆjÈjÎj‰{jÐjÑjÒ}r˜}(jÔ]jÕ]jÖ]j×]r™}U#modifying-table-entries-dynamicallyrš}ajÚ]r›}h–aujÜKljÝhjÞ]rœ}(jà)�r�}}rž}(jÅX#Modifying Table Entries DynamicallyrŸ}jÆj–}jÎj‰{jÐjäjÒ}r }(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÝhjÞ]r¡}jçX#Modifying Table Entries Dynamicallyr¢}…�r£}}r¤}(jÅjŸ}jÆj�}ubaubjò)�r¥}}r¦}(jÅX�In the application's C code, a shared memory region can be modified in the SharedRegion table by calling SharedRegion_setEntry().r§}jÆj–}jÎj‰{jÐjõjÒ}r¨}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKnjÝhjÞ]r©}jçX�In the application's C code, a shared memory region can be modified in the SharedRegion table by calling SharedRegion_setEntry().rª}…�r«}}r¬}(jÅj§}jÆj¥}ubaubjò)�r­}}r®}(jÅXýTypically, applications configure SharedRegion table entries statically as described in the previous section, and only modify the table entries dynamically in applications where it is possible for shared memory region availability to change dynamically.r¯}jÆj–}jÎj‰{jÐjõjÒ}r°}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÝhjÞ]r±}jçXýTypically, applications configure SharedRegion table entries statically as described in the previous section, and only modify the table entries dynamically in applications where it is possible for shared memory region availability to change dynamically.r²}…�r³}}r´}(jÅj¯}jÆj­}ubaubjò)�rµ}}r¶}(jÅX)The call to SharedRegion_setEntry() must specify all the fields in the SharedRegion_Entry structure. The index specified must be the same across all processors for the same shared memory region. The index also must be smaller than the maxNumEntries property, otherwise an assert will be triggered.r·}jÆj–}jÎj‰{jÐjõjÒ}r¸}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKrjÝhjÞ]r¹}jçX)The call to SharedRegion_setEntry() must specify all the fields in the SharedRegion_Entry structure. The index specified must be the same across all processors for the same shared memory region. The index also must be smaller than the maxNumEntries property, otherwise an assert will be triggered.rº}…�r»}}r¼}(jÅj·}jÆjµ}ubaubj)�r½}}r¾}(jÅXÅtypedef struct SharedRegion_Entry { Ptr base; SizeT len; UInt16 ownerProcId; Bool isValid; Bool cacheEnable; SizeT cacheLineSize; Bool createHeap; String name; } SharedRegion_Entry;jÆj–}jÎj‰{jÐjjÒ}r¿}(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMi jÝhjÞ]rÀ}jçXÅtypedef struct SharedRegion_Entry { Ptr base; SizeT len; UInt16 ownerProcId; Bool isValid; Bool cacheEnable; SizeT cacheLineSize; Bool createHeap; String name; } SharedRegion_Entry;rÁ}…�rÂ}}rÃ}(jÅUjÆj½}ubaubjò)�rÄ}}rÅ}(jÅXäYou can use SharedRegion_getEntry() to fill the fields in a SharedRegion_Entry structure. Then, you can modify fields in the structure and call SharedRegion_setEntry() to write the modified fields back to the SharedRegion table.rÆ}jÆj–}jÎj‰{jÐjõjÒ}rÇ}(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rÈ}jçXäYou can use SharedRegion_getEntry() to fill the fields in a SharedRegion_Entry structure. Then, you can modify fields in the structure and call SharedRegion_setEntry() to write the modified fields back to the SharedRegion table.rÉ}…�rÊ}}rË}(jÅjÆ}jÆjÄ}ubaubjò)�rÌ}}rÍ}(jÅX©If you want to reuse an index location in the SharedRegion table, you can call SharedRegion_clear() on all processors to erase the existing entry at that index location.rÎ}jÆj–}jÎj‰{jÐjõjÒ}rÏ}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÝhjÞ]rÐ}jçX©If you want to reuse an index location in the SharedRegion table, you can call SharedRegion_clear() on all processors to erase the existing entry at that index location.rÑ}…�rÒ}}rÓ}(jÅjÎ}jÆjÌ}ubaubjò)�rÔ}}rÕ}(jÅXæ|srmRun_Img2| The latest version of the SharedRegion module run-time API documentation is available `online `__.jÆj–}jÎj‰{jÐjõjÒ}rÖ}(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÝhjÞ]r×}(jû)�rØ}}rÙ}(jÅj¶{jÆjÔ}jÎNjÐjÿjÒ}rÚ}(Urefurij»{j×]jÖ]jÔ]jÕ]jÚ]ujÜNjÝhjÞ]rÛ}jR)�rÜ}}rÝ}(jÅj¿{jÆjØ}jÎNjÐjZjÒ}rÞ}(UuriXrtos/../images/Book_run.pngrß}j×]jÖ]jÔ]jÕ]jX}rà}U*jß}sjÚ]Ualtj¶{ujÜNjÞ]ubaubjçXW The latest version of the SharedRegion module run-time API documentation is available rá}…�râ}}rã}(jÅXW The latest version of the SharedRegion module run-time API documentation is available jÆjÔ}ubjû)�rä}}rå}(jÅX�`online `__jÒ}ræ}(UnameXonlinejXthttp://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipc/latest/docs/doxygen/html/_shared_region_8h.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆjÔ}jÞ]rç}jçXonlinerè}…�ré}}rê}(jÅUjÆjä}ubajÐjÿubjçX.…�rë}}rì}(jÅX.jÆjÔ}ubeubeubjÇ)�rí}}rî}(jÅUjÆjÈjÎj‰{jÐjÑjÒ}rï}(jÔ]jÕ]jÖ]j×]rð}Uusing-memory-in-a-shared-regionrñ}ajÚ]rò}hÅaujÜK‰jÝhjÞ]ró}(jà)�rô}}rõ}(jÅXUsing Memory in a Shared Regionrö}jÆjí}jÎj‰{jÐjäjÒ}r÷}(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‰jÝhjÞ]rø}jçXUsing Memory in a Shared Regionrù}…�rú}}rû}(jÅjö}jÆjô}ubaubjò)�rü}}rý}(jÅXìNote that the SharedRegion with an index of 0 (zero) is used by IPC_start() to create resource management tables for internal use by the GateMP, NameServer, and Notify modules. Thus SharedRegion "0" must be accessible by all processors.rþ}jÆjí}jÎj‰{jÐjõjÒ}rÿ}(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÝhjÞ]r~jçXìNote that the SharedRegion with an index of 0 (zero) is used by IPC_start() to create resource management tables for internal use by the GateMP, NameServer, and Notify modules. Thus SharedRegion "0" must be accessible by all processors.r~…�r~}r~(jÅjþ}jÆjü}ubaubjò)�r~}r~(jÅX2This example allocates memory from a SharedRegion:r~jÆjí}jÎj‰{jÐjõjÒ}r~(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÝhjÞ]r~jçX2This example allocates memory from a SharedRegion:r ~…�r ~}r ~(jÅj~jÆj~ubaubj)�r ~}r ~(jÅXObuf = Memory_alloc(SharedRegion_getHeap(0), sizeof(Tester) * COUNT, 128, NULL);jÆjí}jÎj‰{jÐjjÒ}r~(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMƒ jÝhjÞ]r~jçXObuf = Memory_alloc(SharedRegion_getHeap(0), sizeof(Tester) * COUNT, 128, NULL);r~…�r~}r~(jÅUjÆj ~ubaubeubjÇ)�r~}r~(jÅUjÆjÈjÎj‰{jÐjÑjÒ}r~(jÔ]jÕ]jÖ]j×]r~U)getting-information-about-a-shared-regionr~ajÚ]r~haujÜK”jÝhjÞ]r~(jà)�r~}r~(jÅX)Getting Information About a Shared Regionr~jÆj~jÎj‰{jÐjäjÒ}r~(jÔ]jÕ]jÖ]j×]jÚ]ujÜK”jÝhjÞ]r~jçX)Getting Information About a Shared Regionr~…�r ~}r!~(jÅj~jÆj~ubaubjò)�r"~}r#~(jÅXëThe shared region pointer (SRPtr) is a 32-bit portable pointer composed of an ID and offset. The most significant bits of a SRPtr are used for the ID. The ID corresponds to the index of the entry in the lookup table. The offset is the offset from the base of the shared memory region. The maximum number of table entries in the lookup table determines the number of bits to be used for the ID. An increase in the id means the range of the offset would decrease. The ID is limited to 16-bits.r$~jÆj~jÎj‰{jÐjõjÒ}r%~(jÔ]jÕ]jÖ]j×]jÚ]ujÜK•jÝhjÞ]r&~jçXëThe shared region pointer (SRPtr) is a 32-bit portable pointer composed of an ID and offset. The most significant bits of a SRPtr are used for the ID. The ID corresponds to the index of the entry in the lookup table. The offset is the offset from the base of the shared memory region. The maximum number of table entries in the lookup table determines the number of bits to be used for the ID. An increase in the id means the range of the offset would decrease. The ID is limited to 16-bits.r'~…�r(~}r)~(jÅj$~jÆj"~ubaubjò)�r*~}r+~(jÅXYHere is sample code for getting the SRPtr and then getting the real address pointer back.r,~jÆj~jÎj‰{jÐjõjÒ}r-~(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÝhjÞ]r.~jçXYHere is sample code for getting the SRPtr and then getting the real address pointer back.r/~…�r0~}r1~(jÅj,~jÆj*~ubaubjò)�r2~}r3~(jÅX$SharedRegion_SRPtr srptr; UInt16 id;r4~jÆj~jÎj‰{jÐjõjÒ}r5~(jÔ]jÕ]jÖ]j×]jÚ]ujÜK™jÝhjÞ]r6~jçX$SharedRegion_SRPtr srptr; UInt16 id;r7~…�r8~}r9~(jÅj4~jÆj2~ubaubj)�r:~}r;~(jÅX // Get the id of the address if id is not already known. id = SharedRegion_getId(addr); // Get the shared region pointer for the address srptr = SharedRegion_getSRPtr(addr, id); // Get the address back from the shared region pointer addr = SharedRegion_getPtr(srptr);jÆj~jÎj‰{jÐjjÒ}r<~(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM‘ jÝhjÞ]r=~jçX // Get the id of the address if id is not already known. id = SharedRegion_getId(addr); // Get the shared region pointer for the address srptr = SharedRegion_getSRPtr(addr, id); // Get the address back from the shared region pointer addr = SharedRegion_getPtr(srptr);r>~…�r?~}r@~(jÅUjÆj:~ubaubjò)�rA~}rB~(jÅXŒIn addition, you can use the SharedRegion_getIdByName() function to pass the name of a SharedRegion and receive the ID number of the region.rC~jÆj~jÎj‰{jÐjõjÒ}rD~(jÔ]jÕ]jÖ]j×]jÚ]ujÜK§jÝhjÞ]rE~jçXŒIn addition, you can use the SharedRegion_getIdByName() function to pass the name of a SharedRegion and receive the ID number of the region.rF~…�rG~}rH~(jÅjC~jÆjA~ubaubjò)�rI~}rJ~(jÅXjYou can use SharedRegion_getHeap() to get a handle to the heap associated with a region using the heap ID.rK~jÆj~jÎj‰{jÐjõjÒ}rL~(jÔ]jÕ]jÖ]j×]jÚ]ujÜK©jÝhjÞ]rM~jçXjYou can use SharedRegion_getHeap() to get a handle to the heap associated with a region using the heap ID.rN~…�rO~}rP~(jÅjK~jÆjI~ubaubjò)�rQ~}rR~(jÅX§You can retrieve a specific shared region's cache configuration from the SharedRegion table by using SharedRegion_isCacheEnabled() and SharedRegion_getCacheLineSize().rS~jÆj~jÎj‰{jÐjõjÒ}rT~(jÔ]jÕ]jÖ]j×]jÚ]ujÜK«jÝhjÞ]rU~jçX§You can retrieve a specific shared region's cache configuration from the SharedRegion table by using SharedRegion_isCacheEnabled() and SharedRegion_getCacheLineSize().rV~…�rW~}rX~(jÅjS~jÆjQ~ubaubjë)�rY~}rZ~(jÅXHThe SharedRegion Module is only supported in SYS/BIOS environments. It is not provided on HLOS's. For HLOS environments, we suggest using native shared memory APIs when available, for example ION on Android. Other alternatives include CMEM (for Linux) and the QNX-specific SharedMemoryAlloctor, provided in IPC's qnx/ directory.r[~jÆj~jÎj‰{jÐjïjÒ}r\~(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r]~jò)�r^~}r_~(jÅj[~jÆjY~jÎj‰{jÐjõjÒ}r`~(jÔ]jÕ]jÖ]j×]jÚ]ujÜK®jÞ]ra~jçXHThe SharedRegion Module is only supported in SYS/BIOS environments. It is not provided on HLOS's. For HLOS environments, we suggest using native shared memory APIs when available, for example ION on Android. Other alternatives include CMEM (for Linux) and the QNX-specific SharedMemoryAlloctor, provided in IPC's qnx/ directory.rb~…�rc~}rd~(jÅj[~jÆj^~ubaubaubeubeubjÎj‰{jÐjHjÒ}re~(jÔ]jÕ]jÖ]j×]jÚ]rf~jÁaujÜKjÝhjÞ]rg~jû)�rh~}ri~(jÅjÁjÒ}rj~(Urefurij‚}j×]jÖ]jÔ]jÕ]jÚ]ujÆjÃjÞ]rk~jR)�rl~}rm~(jÅj†}jÒ}rn~(UuriXrtos/../images/Book_cfg.pngro~j×]jÖ]jÔ]jÕ]jX}rp~U*jo~sjÚ]UaltjÁujÆjh~jÞ]jÐjZubajÐjÿubaubj j j_j[jmrjirj~rjzrjKjFj\rjXrj; j7 j�rj‹rj±rj­rj rjœrjMpjIpjYvjUvjHvjDvjjzjfzj j ja j] jjçX/Duplicate implicit target name: "introduction".r?…�r@}rA(jÅUjÆj;ubajÐjõubaubjs~)�rB}rC(jÅUjÆj¡ jÎjý jÐjv~jÒ}rD(jÔ]UlevelKj×]jÖ]rEj§ aUsourcejý jÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rFjò)�rG}rH(jÅX/Duplicate implicit target name: "introduction".jÒ}rI(jÔ]jÕ]jÖ]j×]jÚ]ujÆjBjÞ]rJjçX/Duplicate implicit target name: "introduction".rK…�rL}rM(jÅUjÆjGubajÐjõubaubjs~)�rN}rO(jÅUjÆj¡ jÎjý jÐjv~jÒ}rP(jÔ]UlevelKj×]rQj¾ ajÖ]rRj½ aUsourcejý jÕ]jÚ]UlineKUtypejx~ujÜKjÝhjÞ]rSjò)�rT}rU(jÅX0Inline emphasis start-string without end-string.jÒ}rV(jÔ]jÕ]jÖ]j×]jÚ]ujÆjNjÞ]rWjçX0Inline emphasis start-string without end-string.rX…�rY}rZ(jÅUjÆjTubajÐjõubaubjs~)�r[}r\(jÅUjÆj’jÎjÎjÐjv~jÒ}r](jÔ]UlevelKj×]jÖ]r^jNaUsourcejÏjÕ]jÚ]UlineKUtypejx~ujÜKMjÝhjÞ]r_jò)�r`}ra(jÅX)Duplicate explicit target name: "online".jÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[jÞ]rcjçX)Duplicate explicit target name: "online".rd…�re}rf(jÅUjÆj`ubajÐjõubaubjs~)�rg}rh(jÅUjÆjRjÎjÎjÐjv~jÒ}ri(jÔ]UlevelKj×]jÖ]rjjœaUsourcejÏjÕ]jÚ]UlineKUtypejx~ujÜKsjÝhjÞ]rkjò)�rl}rm(jÅX)Duplicate explicit target name: "online".jÒ}rn(jÔ]jÕ]jÖ]j×]jÚ]ujÆjgjÞ]rojçX)Duplicate explicit target name: "online".rp…�rq}rr(jÅUjÆjlubajÐjõubaubjs~)�rs}rt(jÅUjÆj¨jÎj’jÐjv~jÒ}ru(jÔ]UlevelKj×]jÖ]Usourcej’jÕ]jÚ]UlineM(Utypej„~ujÜM*jÝhjÞ]rvjò)�rw}rx(jÅX`Possible incomplete section title. Treating the overline as ordinary text because it's so short.jÒ}ry(jÔ]jÕ]jÖ]j×]jÚ]ujÆjsjÞ]rzjçX`Possible incomplete section title. Treating the overline as ordinary text because it's so short.r{…�r|}r}(jÅUjÆjwubajÐjõubaubjs~)�r~}r(jÅUjÒ}r€(jÔ]UlevelKj×]jÖ]Usourcej’jÕ]jÚ]UlineM,Utypej„~ujÆjûjÞ]r�jò)�r‚}rƒ(jÅX`Blank line missing before literal block (after the "::")? Interpreted as a definition list item.jÒ}r„(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~jÞ]r…jçX`Blank line missing before literal block (after the "::")? Interpreted as a definition list item.r†…�r‡}rˆ(jÅUjÆj‚ubajÐjõubajÐjv~ubjs~)�r‰}rŠ(jÅUjÆjQjÎjNjÐjv~jÒ}r‹(jÔ]UlevelKj×]jÖ]UsourcejNjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rŒjò)�r�}rŽ(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰jÞ]r�jçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.r‘…�r’}r“(jÅUjÆj�ubajÐjõubaubjs~)�r”}r•(jÅUjÆjQjÎjNjÐjv~jÒ}r–(jÔ]UlevelKj×]jÖ]UsourcejNjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r—jò)�r˜}r™(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}rš(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”jÞ]r›jçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rœ…�r�}rž(jÅUjÆj˜ubajÐjõubaubjs~)�rŸ}r (jÅUjÆjQjÎjNjÐjv~jÒ}r¡(jÔ]UlevelKj×]jÖ]UsourcejNjÕ]jÚ]UlineK&Utypej„~ujÜK&jÝhjÞ]r¢jò)�r£}r¤(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}r¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŸjÞ]r¦jçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.r§…�r¨}r©(jÅUjÆj£ubajÐjõubaubjs~)�rª}r«(jÅUjÆjQjÎjNjÐjv~jÒ}r¬(jÔ]UlevelKj×]jÖ]UsourcejNjÕ]jÚ]UlineK-Utypej„~ujÜK-jÝhjÞ]r­jò)�r®}r¯(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}r°(jÔ]jÕ]jÖ]j×]jÚ]ujÆjªjÞ]r±jçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.r²…�r³}r´(jÅUjÆj®ubajÐjõubaubjs~)�rµ}r¶(jÅUjÆjùjÎjòjÐjv~jÒ}r·(jÔ]UlevelKj×]jÖ]r¸jÿaUsourcejòjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r¹jò)�rº}r»(jÅX/Duplicate implicit target name: "introduction".jÒ}r¼(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµjÞ]r½jçX/Duplicate implicit target name: "introduction".r¾…�r¿}rÀ(jÅUjÆjºubajÐjõubaubjs~)�rÁ}rÂ(jÅUjÆjŠjÎjòjÐjv~jÒ}rÃ(jÔ]UlevelKj×]jÖ]rÄj�aUsourcejòjÕ]jÚ]UlineKãUtypej„~ujÜKãjÝhjÞ]rÅjò)�rÆ}rÇ(jÅX:Duplicate implicit target name: "transport configuration".jÒ}rÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÁjÞ]rÉjçX:Duplicate implicit target name: "transport configuration".rÊ…�rË}rÌ(jÅUjÆjÆubajÐjõubaubjs~)�rÍ}rÎ(jÅUjÆj™jÎjòjÐjv~jÒ}rÏ(jÔ]UlevelKj×]jÖ]rÐjžaUsourcejòjÕ]jÚ]UlineKæUtypej„~ujÜKæjÝhjÞ]rÑjò)�rÒ}rÓ(jÅX=Duplicate implicit target name: "sys/bios dsp transportsrio".jÒ}rÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÍjÞ]rÕjçX=Duplicate implicit target name: "sys/bios dsp transportsrio".rÖ…�r×}rØ(jÅUjÆjÒubajÐjõubaubjs~)�rÙ}rÚ(jÅUjÆjîjÎjòjÐjv~jÒ}rÛ(jÔ]UlevelKj×]jÖ]rÜjóaUsourcejòjÕ]jÚ]UlineMUtypej„~ujÜMjÝhjÞ]rÝjò)�rÞ}rß(jÅX:Duplicate implicit target name: "arm linux transportsrio".jÒ}rà(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙjÞ]rájçX:Duplicate implicit target name: "arm linux transportsrio".râ…�rã}rä(jÅUjÆjÞubajÐjõubaubjs~)�rå}ræ(jÅUjÆjýjÎjòjÐjv~jÒ}rç(jÔ]UlevelKj×]jÖ]rèj aUsourcejòjÕ]jÚ]UlineMUtypej„~ujÜMjÝhjÞ]réjò)�rê}rë(jÅXEDuplicate implicit target name: "srio serdes and lane configuration".jÒ}rì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjåjÞ]ríjçXEDuplicate implicit target name: "srio serdes and lane configuration".rî…�rï}rð(jÅUjÆjêubajÐjõubaubjs~)�rñ}rò(jÅUjÆjB jÎjòjÐjv~jÒ}ró(jÔ]UlevelKj×]jÖ]rôjG aUsourcejòjÕ]jÚ]UlineM%Utypej„~ujÜM%jÝhjÞ]rõjò)�rö}r÷(jÅX'Duplicate implicit target name: "apis".jÒ}rø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjñjÞ]rùjçX'Duplicate implicit target name: "apis".rú…�rû}rü(jÅUjÆjöubajÐjõubaubjs~)�rý}rþ(jÅUjÆj` jÎjòjÐjv~jÒ}rÿ(jÔ]UlevelKj×]jÖ]r€je aUsourcejòjÕ]jÚ]UlineM/Utypej„~ujÜM/jÝhjÞ]r€jò)�r€}r€(jÅX=Duplicate implicit target name: "sys/bios dsp transportqmss".jÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÆjýjÞ]r€jçX=Duplicate implicit target name: "sys/bios dsp transportqmss".r€…�r€}r€(jÅUjÆj€ubajÐjõubaubjs~)�r €}r €(jÅUjÆjo jÎjòjÐjv~jÒ}r €(jÔ]UlevelKj×]jÖ]r €ju aUsourcejòjÕ]jÚ]UlineM2Utypej„~ujÜM2jÝhjÞ]r €jò)�r€}r€(jÅX'Duplicate implicit target name: "apis".jÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj €jÞ]r€jçX'Duplicate implicit target name: "apis".r€…�r€}r€(jÅUjÆj€ubajÐjõubaubjs~)�r€}r€(jÅUjÆjŽ jÎjòjÐjv~jÒ}r€(jÔ]UlevelKj×]jÖ]r€j“ aUsourcejòjÕ]jÚ]UlineM;Utypej„~ujÜM;jÝhjÞ]r€jò)�r€}r€(jÅX:Duplicate implicit target name: "arm linux transportqmss".jÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj€jÞ]r€jçX:Duplicate implicit target name: "arm linux transportqmss".r€…�r€}r €(jÅUjÆj€ubajÐjõubaubjs~)�r!€}r"€(jÅUjÆj¼ jÎjòjÐjv~jÒ}r#€(jÔ]UlevelKj×]jÖ]r$€j aUsourcejòjÕ]jÚ]UlineMJUtypej„~ujÜMJjÝhjÞ]r%€jò)�r&€}r'€(jÅX'Duplicate implicit target name: "apis".jÒ}r(€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!€jÞ]r)€jçX'Duplicate implicit target name: "apis".r*€…�r+€}r,€(jÅUjÆj&€ubajÐjõubaubjs~)�r-€}r.€(jÅUjÆjê jÎjòjÐjv~jÒ}r/€(jÔ]UlevelKj×]jÖ]r0€jð aUsourcejòjÕ]jÚ]UlineMWUtypej„~ujÜMWjÝhjÞ]r1€jò)�r2€}r3€(jÅX=Duplicate implicit target name: "sys/bios dsp transportsrio".jÒ}r4€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj-€jÞ]r5€jçX=Duplicate implicit target name: "sys/bios dsp transportsrio".r6€…�r7€}r8€(jÅUjÆj2€ubajÐjõubaubjs~)�r9€}r:€(jÅUjÆjÐ"jÎjòjÐjv~jÒ}r;€(jÔ]UlevelKj×]jÖ]r<€jÕ"aUsourcejòjÕ]jÚ]UlineMÜUtypej„~ujÜMÜjÝhjÞ]r=€jò)�r>€}r?€(jÅX9Duplicate implicit target name: "recompiling on windows".jÒ}r@€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9€jÞ]rA€jçX9Duplicate implicit target name: "recompiling on windows".rB€…�rC€}rD€(jÅUjÆj>€ubajÐjõubaubjs~)�rE€}rF€(jÅUjÆj##jÎjòjÐjv~jÒ}rG€(jÔ]UlevelKj×]jÖ]rH€j(#aUsourcejòjÕ]jÚ]UlineMíUtypej„~ujÜMíjÝhjÞ]rI€jò)�rJ€}rK€(jÅX7Duplicate implicit target name: "recompiling on linux".jÒ}rL€(jÔ]jÕ]jÖ]j×]jÚ]ujÆjE€jÞ]rM€jçX7Duplicate implicit target name: "recompiling on linux".rN€…�rO€}rP€(jÅUjÆjJ€ubajÐjõubaubjs~)�rQ€}rR€(jÅUjÆj�#jÎjòjÐjv~jÒ}rS€(jÔ]UlevelKj×]jÖ]rT€j’#aUsourcejòjÕ]jÚ]UlineMUtypej„~ujÜMjÝhjÞ]rU€jò)�rV€}rW€(jÅXDDuplicate implicit target name: "recompiling through yocto/bitbake".jÒ}rX€(jÔ]jÕ]jÖ]j×]jÚ]ujÆjQ€jÞ]rY€jçXDDuplicate implicit target name: "recompiling through yocto/bitbake".rZ€…�r[€}r\€(jÅUjÆjV€ubajÐjõubaubjs~)�r]€}r^€(jÅUjÆjø#jÎjòjÐjv~jÒ}r_€(jÔ]UlevelKj×]jÖ]r`€jý#aUsourcejòjÕ]jÚ]UlineM(Utypej„~ujÜM(jÝhjÞ]ra€jò)�rb€}rc€(jÅXEDuplicate implicit target name: "recompiling through git repository".jÒ}rd€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]€jÞ]re€jçXEDuplicate implicit target name: "recompiling through git repository".rf€…�rg€}rh€(jÅUjÆjb€ubajÐjõubaubjs~)�ri€}rj€(jÅUjÆj–$jÎjòjÐjv~jÒ}rk€(jÔ]UlevelKj×]jÖ]rl€jœ$aUsourcejòjÕ]jÚ]UlineMSUtypej„~ujÜMSjÝhjÞ]rm€jò)�rn€}ro€(jÅX=Duplicate implicit target name: "sys/bios dsp transportsrio".jÒ}rp€(jÔ]jÕ]jÖ]j×]jÚ]ujÆji€jÞ]rq€jçX=Duplicate implicit target name: "sys/bios dsp transportsrio".rr€…�rs€}rt€(jÅUjÆjn€ubajÐjõubaubjs~)�ru€}rv€(jÅUjÆjC%jÎjòjÐjv~jÒ}rw€(jÔ]UlevelKj×]jÖ]rx€jI%aUsourcejòjÕ]jÚ]UlineMwUtypej„~ujÜMwjÝhjÞ]ry€jò)�rz€}r{€(jÅX:Duplicate implicit target name: "arm linux transportsrio".jÒ}r|€(jÔ]jÕ]jÖ]j×]jÚ]ujÆju€jÞ]r}€jçX:Duplicate implicit target name: "arm linux transportsrio".r~€…�r€}r€€(jÅUjÆjz€ubajÐjõubaubjs~)�r�€}r‚€(jÅUjÆjÀ%jÎjòjÐjv~jÒ}rƒ€(jÔ]UlevelKj×]jÖ]r„€jÆ%aUsourcejòjÕ]jÚ]UlineM‹Utypej„~ujÜM‹jÝhjÞ]r…€jò)�r†€}r‡€(jÅX=Duplicate implicit target name: "sys/bios dsp transportqmss".jÒ}rˆ€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�€jÞ]r‰€jçX=Duplicate implicit target name: "sys/bios dsp transportqmss".rŠ€…�r‹€}rŒ€(jÅUjÆj†€ubajÐjõubaubjs~)�r�€}rŽ€(jÅUjÆjm&jÎjòjÐjv~jÒ}r�€(jÔ]UlevelKj×]jÖ]r�€js&aUsourcejòjÕ]jÚ]UlineM¬Utypej„~ujÜM¬jÝhjÞ]r‘€jò)�r’€}r“€(jÅX:Duplicate implicit target name: "arm linux transportqmss".jÒ}r”€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�€jÞ]r•€jçX:Duplicate implicit target name: "arm linux transportqmss".r–€…�r—€}r˜€(jÅUjÆj’€ubajÐjõubaubjs~)�r™€}rš€(jÅUjÆj(jÎjâ'jÐjv~jÒ}r›€(jÔ]UlevelKj×]jÖ]rœ€j(aUsourcejâ'jÕ]jÚ]UlineK Utypej„~ujÜK jÝhjÞ]r�€jò)�rž€}rŸ€(jÅX(Duplicate implicit target name: "build".jÒ}r €(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™€jÞ]r¡€jçX(Duplicate implicit target name: "build".r¢€…�r£€}r¤€(jÅUjÆjž€ubajÐjõubaubjs~)�r¥€}r¦€(jÅUjÆj-(jÎjâ'jÐjv~jÒ}r§€(jÔ]UlevelKj×]jÖ]Usourcejâ'jÕ]jÚ]UlineK=Utypej„~ujÜK?jÝhjÞ]r¨€jò)�r©€}rª€(jÅX`Possible incomplete section title. Treating the overline as ordinary text because it's so short.jÒ}r«€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¥€jÞ]r¬€jçX`Possible incomplete section title. Treating the overline as ordinary text because it's so short.r­€…�r®€}r¯€(jÅUjÆj©€ubajÐjõubaubjs~)�r°€}r±€(jÅUjÒ}r²€(jÔ]UlevelKj×]jÖ]Usourcejâ'jÕ]jÚ]UlineK@Utypej„~ujÆj™(jÞ]r³€jò)�r´€}rµ€(jÅX`Blank line missing before literal block (after the "::")? Interpreted as a definition list item.jÒ}r¶€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°€jÞ]r·€jçX`Blank line missing before literal block (after the "::")? Interpreted as a definition list item.r¸€…�r¹€}rº€(jÅUjÆj´€ubajÐjõubajÐjv~ubjs~)�r»€}r¼€(jÅUjÆjE)jÎjâ'jÐjv~jÒ}r½€(jÔ]UlevelKj×]jÖ]r¾€jK)aUsourcejâ'jÕ]jÚ]UlineK—Utypej„~ujÜK—jÝhjÞ]r¿€jò)�rÀ€}rÁ€(jÅX(Duplicate implicit target name: "build".jÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»€jÞ]rÀjçX(Duplicate implicit target name: "build".rÄ€…�rÅ€}rÆ€(jÅUjÆjÀ€ubajÐjõubaubjs~)�rÇ€}rÈ€(jÅUjÆjÞ)jÎjâ'jÐjv~jÒ}rÉ€(jÔ]UlevelKj×]jÖ]rÊ€jã)aUsourcejâ'jÕ]jÚ]UlineKÇUtypej„~ujÜKÇjÝhjÞ]rË€jò)�rÌ€}rÍ€(jÅX&Duplicate implicit target name: "run".jÒ}r΀(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇ€jÞ]rÏ€jçX&Duplicate implicit target name: "run".rЀ…�rÑ€}rÒ€(jÅUjÆjÌ€ubajÐjõubaubjs~)�rÓ€}rÔ€(jÅUjÆjo*jÎjâ'jÐjv~jÒ}rÕ€(jÔ]UlevelKj×]jÖ]rÖ€jt*aUsourcejâ'jÕ]jÚ]UlineKõUtypej„~ujÜKõjÝhjÞ]r×€jò)�rØ€}rÙ€(jÅX&Duplicate implicit target name: "qnx".jÒ}rÚ€(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÓ€jÞ]rÛ€jçX&Duplicate implicit target name: "qnx".rÜ€…�rÝ€}rÞ€(jÅUjÆjØ€ubajÐjõubaubjs~)�r߀}rà€(jÅUjÆjŠ/jÎjƒ/jÐjv~jÒ}rá€(jÔ]UlevelKj×]jÖ]râ€j�/aUsourcejƒ/jÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rã€jò)�rä€}rå€(jÅX/Duplicate implicit target name: "introduction".jÒ}ræ€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj߀jÞ]rç€jçX/Duplicate implicit target name: "introduction".r者�ré€}rê€(jÅUjÆjä€ubajÐjõubaubjs~)�rë€}rì€(jÅUjÆj1jÎjƒ/jÐjv~jÒ}rí€(jÔ]UlevelKj×]jÖ]rî€j 1aUsourcejƒ/jÕ]jÚ]UlineKGUtypej„~ujÜKGjÝhjÞ]rï€jò)�rð€}rñ€(jÅX(Duplicate implicit target name: "linux".jÒ}rò€(jÔ]jÕ]jÖ]j×]jÚ]ujÆjë€jÞ]ró€jçX(Duplicate implicit target name: "linux".rô€…�rõ€}rö€(jÅUjÆjð€ubajÐjõubaubjs~)�r÷€}rø€(jÅUjÆj$1jÎjƒ/jÐjv~jÒ}rù€(jÔ]UlevelKj×]jÖ]rú€j*1aUsourcejƒ/jÕ]jÚ]UlineKQUtypej„~ujÜKQjÝhjÞ]rû€jò)�rü€}rý€(jÅX&Duplicate implicit target name: "qnx".jÒ}rþ€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷€jÞ]rÿ€jçX&Duplicate implicit target name: "qnx".r�…�r�}r�(jÅUjÆjü€ubajÐjõubaubjs~)�r�}r�(jÅUjÆjv1jÎjo1jÐjv~jÒ}r�(jÔ]UlevelKj×]jÖ]r�j|1aUsourcejo1jÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r�jò)�r�}r �(jÅX/Duplicate implicit target name: "introduction".jÒ}r �(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�jÞ]r �jçX/Duplicate implicit target name: "introduction".r �…�r �}r�(jÅUjÆj�ubajÐjõubaubjs~)�r�}r�(jÅUjÆj¹1jÎjo1jÐjv~jÒ}r�(jÔ]UlevelKj×]jÖ]r�j¿1aUsourcejo1jÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r�jò)�r�}r�(jÅX)Duplicate implicit target name: "config".jÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�jÞ]r�jçX)Duplicate implicit target name: "config".r�…�r�}r�(jÅUjÆj�ubajÐjõubaubjs~)�r�}r�(jÅUjÒ}r�(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineKUtypej„~ujÆjH3jÞ]r�jò)�r�}r �(jÅX:Enumerated list start value not ordinal-1: "2" (ordinal 2)jÒ}r!�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�jÞ]r"�jçX:Enumerated list start value not ordinal-1: "2" (ordinal 2)r#�…�r$�}r%�(jÅUjÆj�ubajÐjõubajÐjv~ubjs~)�r&�}r'�(jÅUjÒ}r(�(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineKUtypej„~ujÆj|3jÞ]r)�jò)�r*�}r+�(jÅX:Enumerated list start value not ordinal-1: "4" (ordinal 4)jÒ}r,�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj&�jÞ]r-�jçX:Enumerated list start value not ordinal-1: "4" (ordinal 4)r.�…�r/�}r0�(jÅUjÆj*�ubajÐjõubajÐjv~ubjs~)�r1�}r2�(jÅUjÒ}r3�(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineKUtypej„~ujÆj¯3jÞ]r4�jò)�r5�}r6�(jÅX:Enumerated list start value not ordinal-1: "6" (ordinal 6)jÒ}r7�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj1�jÞ]r8�jçX:Enumerated list start value not ordinal-1: "6" (ordinal 6)r9�…�r:�}r;�(jÅUjÆj5�ubajÐjõubajÐjv~ubjs~)�r<�}r=�(jÅUjÆjö3jÎjù3jÐjv~jÒ}r>�(jÔ]UlevelKj×]jÖ]r?�jþ3aUsourcejù3jÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r@�jò)�rA�}rB�(jÅX+Duplicate implicit target name: "overview".jÒ}rC�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<�jÞ]rD�jçX+Duplicate implicit target name: "overview".rE�…�rF�}rG�(jÅUjÆjA�ubajÐjõubaubjs~)�rH�}rI�(jÅUjÆjSDjÎjÏjÐjv~jÒ}rJ�(jÔ]UlevelKj×]jÖ]rK�j¶DaUsourcejÏjÕ]jÚ]UlineKUtypej„~ujÜK’jÝhjÞ]rL�jò)�rM�}rN�(jÅX:Duplicate explicit target name: "ipc lld for am65x/j721e".jÒ}rO�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjH�jÞ]rP�jçX:Duplicate explicit target name: "ipc lld for am65x/j721e".rQ�…�rR�}rS�(jÅUjÆjM�ubajÐjõubaubjs~)�rT�}rU�(jÅUjÆj0GjÎjËDjÐjv~jÒ}rV�(jÔ]UlevelKj×]jÖ]rW�j5GaUsourcejËDjÕ]jÚ]UlineKµUtypej„~ujÜKµjÝhjÞ]rX�jò)�rY�}rZ�(jÅXBDuplicate implicit target name: "how do i change the memory map?".jÒ}r[�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjT�jÞ]r\�jçXBDuplicate implicit target name: "how do i change the memory map?".r]�…�r^�}r_�(jÅUjÆjY�ubajÐjõubaubjs~)�r`�}ra�(jÅUjÆjØGjÎjËDjÐjv~jÒ}rb�(jÔ]UlevelKj×]jÖ]rc�jÞGaUsourcejËDjÕ]jÚ]UlineM Utypej„~ujÜM jÝhjÞ]rd�jò)�re�}rf�(jÅX(Duplicate implicit target name: "linux".jÒ}rg�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`�jÞ]rh�jçX(Duplicate implicit target name: "linux".ri�…�rj�}rk�(jÅUjÆje�ubajÐjõubaubjs~)�rl�}rm�(jÅUjÆjHjÎjËDjÐjv~jÒ}rn�(jÔ]UlevelKj×]jÖ]ro�jHaUsourcejËDjÕ]jÚ]UlineMUtypej„~ujÜMjÝhjÞ]rp�jò)�rq�}rr�(jÅX&Duplicate implicit target name: "qnx".jÒ}rs�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjl�jÞ]rt�jçX&Duplicate implicit target name: "qnx".ru�…�rv�}rw�(jÅUjÆjq�ubajÐjõubaubjs~)�rx�}ry�(jÅUjÆj)JjÎjËDjÐjv~jÒ}rz�(jÔ]UlevelKj×]jÖ]r{�j/JaUsourcejËDjÕ]jÚ]UlineMðUtypej„~ujÜMðjÝhjÞ]r|�jò)�r}�}r~�(jÅX(Duplicate implicit target name: "linux".jÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjx�jÞ]r€�jçX(Duplicate implicit target name: "linux".r��…�r‚�}rƒ�(jÅUjÆj}�ubajÐjõubaubjs~)�r„�}r…�(jÅUjÆj’JjÎjËDjÐjv~jÒ}r†�(jÔ]UlevelKj×]jÖ]r‡�j˜JaUsourcejËDjÕ]jÚ]UlineMUtypej„~ujÜMjÝhjÞ]rˆ�jò)�r‰�}rŠ�(jÅX&Duplicate implicit target name: "qnx".jÒ}r‹�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj„�jÞ]rŒ�jçX&Duplicate implicit target name: "qnx".r��…�rŽ�}r��(jÅUjÆj‰�ubajÐjõubaubjs~)�r��}r‘�(jÅUjÆjÊJjÎjÃJjÐjv~jÒ}r’�(jÔ]UlevelKj×]jÖ]r“�jÐJaUsourcejÃJjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r”�jò)�r•�}r–�(jÅX+Duplicate implicit target name: "overview".jÒ}r—�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj��jÞ]r˜�jçX+Duplicate implicit target name: "overview".r™�…�rš�}r›�(jÅUjÆj•�ubajÐjõubaubjs~)�rœ�}r��(jÅUjÆjYKjÎjÃJjÐjv~jÒ}rž�(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineKUtypej„~ujÜMMjÝhjÞ]rŸ�jò)�r �}r¡�(jÅX:Enumerated list start value not ordinal-1: "2" (ordinal 2)jÒ}r¢�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœ�jÞ]r£�jçX:Enumerated list start value not ordinal-1: "2" (ordinal 2)r¤�…�r¥�}r¦�(jÅUjÆj �ubajÐjõubaubjs~)�r§�}r¨�(jÅUjÆjYKjÎjÃJjÐjv~jÒ}r©�(jÔ]UlevelKj×]jÖ]UsourcejÃJjÕ]jÚ]UlineMkUtypejx~ujÜM~jÝhjÞ]rª�jò)�r«�}r¬�(jÅX%Line block ends without a blank line.jÒ}r­�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj§�jÞ]r®�jçX%Line block ends without a blank line.r¯�…�r°�}r±�(jÅUjÆj«�ubajÐjõubaubjs~)�r²�}r³�(jÅUjÆj„PjÎj}PjÐjv~jÒ}r´�(jÔ]UlevelKj×]jÖ]rµ�jŠPaUsourcej}PjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r¶�jò)�r·�}r¸�(jÅX/Duplicate implicit target name: "introduction".jÒ}r¹�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²�jÞ]rº�jçX/Duplicate implicit target name: "introduction".r»�…�r¼�}r½�(jÅUjÆj·�ubajÐjõubaubjs~)�r¾�}r¿�(jÅUjÆj!QjÎj}PjÐjv~jÒ}rÀ�(jÔ]UlevelKj×]jÖ]rÁ�j'QaUsourcej}PjÕ]jÚ]UlineK/Utypej„~ujÜK/jÝhjÞ]rÂ�jò)�rÃ�}rÄ�(jÅX(Duplicate implicit target name: "build".jÒ}rÅ�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾�jÞ]rÆ�jçX(Duplicate implicit target name: "build".rÇ�…�rÈ�}rÉ�(jÅUjÆjÃ�ubajÐjõubaubjs~)�rÊ�}rË�(jÅUjÆjcSjÎj\SjÐjv~jÒ}rÌ�(jÔ]UlevelKj×]jÖ]rÍ�jiSaUsourcej\SjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rÎ�jò)�rÏ�}rÐ�(jÅX/Duplicate implicit target name: "introduction".jÒ}rÑ�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊ�jÞ]rÒ�jçX/Duplicate implicit target name: "introduction".rÓ�…�rÔ�}rÕ�(jÅUjÆjÏ�ubajÐjõubaubjs~)�rÖ�}r×�(jÅUjÆjƒSjÎj\SjÐjv~jÒ}rØ�(jÔ]UlevelKj×]jÖ]rÙ�jˆSaUsourcej\SjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rÚ�jò)�rÛ�}rÜ�(jÅX*Duplicate implicit target name: "install".jÒ}rÝ�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖ�jÞ]rÞ�jçX*Duplicate implicit target name: "install".rß�…�rà�}rá�(jÅUjÆjÛ�ubajÐjõubaubjs~)�râ�}rã�(jÅUjÆjÿSjÎj\SjÐjv~jÒ}rä�(jÔ]UlevelKj×]jÖ]rå�jTaUsourcej\SjÕ]jÚ]UlineK0Utypej„~ujÜK0jÝhjÞ]ræ�jò)�rç�}rè�(jÅX(Duplicate implicit target name: "build".jÒ}ré�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâ�jÞ]rê�jçX(Duplicate implicit target name: "build".rë�…�rì�}rí�(jÅUjÆjç�ubajÐjõubaubjs~)�rî�}rï�(jÅUjÆj+TjÎj\SjÐjv~jÒ}rð�(jÔ]UlevelKj×]jÖ]rñ�j0TaUsourcej\SjÕ]jÚ]UlineK@Utypej„~ujÜK@jÝhjÞ]rò�jò)�ró�}rô�(jÅX/Duplicate implicit target name: "products.mak".jÒ}rõ�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî�jÞ]rö�jçX/Duplicate implicit target name: "products.mak".r÷�…�rø�}rù�(jÅUjÆjó�ubajÐjõubaubjs~)�rú�}rû�(jÅUjÆjºVjÎj\SjÐjv~jÒ}rü�(jÔ]UlevelKj×]jÖ]rý�j¿VaUsourcej\SjÕ]jÚ]UlineK¾Utypej„~ujÜK¾jÝhjÞ]rþ�jò)�rÿ�}r‚(jÅX/Duplicate implicit target name: "ipc-bios.mak".jÒ}r‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆjú�jÞ]r‚jçX/Duplicate implicit target name: "ipc-bios.mak".r‚…�r‚}r‚(jÅUjÆjÿ�ubajÐjõubaubjs~)�r‚}r‚(jÅUjÆj2WjÎj\SjÐjv~jÒ}r‚(jÔ]UlevelKj×]jÖ]r ‚j8WaUsourcej\SjÕ]jÚ]UlineK×Utypej„~ujÜK×jÝhjÞ]r ‚jò)�r ‚}r ‚(jÅX&Duplicate implicit target name: "run".jÒ}r ‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚jÞ]r‚jçX&Duplicate implicit target name: "run".r‚…�r‚}r‚(jÅUjÆj ‚ubajÐjõubaubjs~)�r‚}r‚(jÅUjÆj ZjÎj\SjÐjv~jÒ}r‚(jÔ]UlevelKj×]jÖ]r‚jZaUsourcej\SjÕ]jÚ]UlineMøUtypej„~ujÜMøjÝhjÞ]r‚jò)�r‚}r‚(jÅX+Duplicate implicit target name: "see also".jÒ}r‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚jÞ]r‚jçX+Duplicate implicit target name: "see also".r‚…�r‚}r‚(jÅUjÆj‚ubajÐjõubaubjs~)�r‚}r‚(jÅUjÆj‡ZjÎj€ZjÐjv~jÒ}r ‚(jÔ]UlevelKj×]jÖ]r!‚j�ZaUsourcej€ZjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r"‚jò)�r#‚}r$‚(jÅX/Duplicate implicit target name: "introduction".jÒ}r%‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚jÞ]r&‚jçX/Duplicate implicit target name: "introduction".r'‚…�r(‚}r)‚(jÅUjÆj#‚ubajÐjõubaubjs~)�r*‚}r+‚(jÅUjÆj§ZjÎj€ZjÐjv~jÒ}r,‚(jÔ]UlevelKj×]jÖ]r-‚j­ZaUsourcej€ZjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r.‚jò)�r/‚}r0‚(jÅX*Duplicate implicit target name: "install".jÒ}r1‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*‚jÞ]r2‚jçX*Duplicate implicit target name: "install".r3‚…�r4‚}r5‚(jÅUjÆj/‚ubajÐjõubaubjs~)�r6‚}r7‚(jÅUjÆj$[jÎj€ZjÐjv~jÒ}r8‚(jÔ]UlevelKj×]jÖ]r9‚j*[aUsourcej€ZjÕ]jÚ]UlineK0Utypej„~ujÜK0jÝhjÞ]r:‚jò)�r;‚}r<‚(jÅX(Duplicate implicit target name: "build".jÒ}r=‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆj6‚jÞ]r>‚jçX(Duplicate implicit target name: "build".r?‚…�r@‚}rA‚(jÅUjÆj;‚ubajÐjõubaubjs~)�rB‚}rC‚(jÅUjÆjP[jÎj€ZjÐjv~jÒ}rD‚(jÔ]UlevelKj×]jÖ]rE‚jV[aUsourcej€ZjÕ]jÚ]UlineK@Utypej„~ujÜK@jÝhjÞ]rF‚jò)�rG‚}rH‚(jÅX/Duplicate implicit target name: "products.mak".jÒ}rI‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆjB‚jÞ]rJ‚jçX/Duplicate implicit target name: "products.mak".rK‚…�rL‚}rM‚(jÅUjÆjG‚ubajÐjõubaubjs~)�rN‚}rO‚(jÅUjÆj¾\jÎj€ZjÐjv~jÒ}rP‚(jÔ]UlevelKj×]jÖ]rQ‚jÄ\aUsourcej€ZjÕ]jÚ]UlineK|Utypej„~ujÜK|jÝhjÞ]rR‚jò)�rS‚}rT‚(jÅX/Duplicate implicit target name: "ipc-bios.mak".jÒ}rU‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆjN‚jÞ]rV‚jçX/Duplicate implicit target name: "ipc-bios.mak".rW‚…�rX‚}rY‚(jÅUjÆjS‚ubajÐjõubaubjs~)�rZ‚}r[‚(jÅUjÆj ]jÎj€ZjÐjv~jÒ}r\‚(jÔ]UlevelKj×]jÖ]r]‚j]aUsourcej€ZjÕ]jÚ]UlineK—Utypej„~ujÜK—jÝhjÞ]r^‚jò)�r_‚}r`‚(jÅX&Duplicate implicit target name: "run".jÒ}ra‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆjZ‚jÞ]rb‚jçX&Duplicate implicit target name: "run".rc‚…�rd‚}re‚(jÅUjÆj_‚ubajÐjõubaubjs~)�rf‚}rg‚(jÅUjÆj#]jÎj€ZjÐjv~jÒ}rh‚(jÔ]UlevelKj×]ri‚jL]ajÖ]rj‚jK]aUsourcej€ZjÕ]jÚ]UlineK¬Utypejx~ujÜK­jÝhjÞ]rk‚jò)�rl‚}rm‚(jÅX0Inline emphasis start-string without end-string.jÒ}rn‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆjf‚jÞ]ro‚jçX0Inline emphasis start-string without end-string.rp‚…�rq‚}rr‚(jÅUjÆjl‚ubajÐjõubaubjs~)�rs‚}rt‚(jÅUjÆj�^jÎj€ZjÐjv~jÒ}ru‚(jÔ]UlevelKj×]jÖ]rv‚j¢^aUsourcej€ZjÕ]jÚ]UlineM%Utypej„~ujÜM%jÝhjÞ]rw‚jò)�rx‚}ry‚(jÅX<Duplicate implicit target name: "running test applications".jÒ}rz‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆjs‚jÞ]r{‚jçX<Duplicate implicit target name: "running test applications".r|‚…�r}‚}r~‚(jÅUjÆjx‚ubajÐjõubaubjs~)�r‚}r€‚(jÅUjÆj(ajÎj€ZjÐjv~jÒ}r�‚(jÔ]UlevelKj×]jÖ]r‚‚j.aaUsourcej€ZjÕ]jÚ]UlineM~Utypej„~ujÜM~jÝhjÞ]rƒ‚jò)�r„‚}r…‚(jÅX+Duplicate implicit target name: "see also".jÒ}r†‚(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚jÞ]r‡‚jçX+Duplicate implicit target name: "see also".rˆ‚…�r‰‚}rŠ‚(jÅUjÆj„‚ubajÐjõubaubjs~)�r‹‚}rŒ‚(jÅUjÆjÇ)�r�‚}rŽ‚(jÅUjKjÆjÇ)�r�‚}r�‚(jÅUjÆhjÎjÏjÐjÑjÒ}r‘‚(jÔ]jÕ]jÖ]j×]r’‚Ubootr“‚ajÚ]r”‚j±aujÜK´jÝhjÞ]r•‚(jà)�r–‚}r—‚(jÅXBootr˜‚jÆj�‚jÎjÏjÐjäjÒ}r™‚(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÝhjÞ]rš‚jçXBootr›‚…�rœ‚}r�‚(jÅj˜‚jÆj–‚ubaubj)�rž‚}rŸ‚(jÅX.. _FC-Boot-label:jÆj�‚jÎjÏjÐj jÒ}r ‚(j×]jÖ]jÔ]jÕ]jÚ]jU fc-boot-labelr¡‚ujÜM:jÝhjÞ]ubj�‚jÇ)�r¢‚}r£‚(jÅUjKjÆj�‚jÎj:Xsource/rtos/Boot.rst.incr¤‚…�r¥‚}r¦‚bjÐjÑjÒ}r§‚(jÔ]r¨‚X boot modesr©‚ajÕ]jÖ]j×]rª‚U boot-modesr«‚ajÚ]ujÜKjÝhjÞ]r¬‚(jà)�r­‚}r®‚(jÅX Boot Modesr¯‚jÆj¢‚jÎj¥‚jÐjäjÒ}r°‚(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r±‚jçX Boot Modesr²‚…�r³‚}r´‚(jÅj¯‚jÆj­‚ubaubjÇ)�rµ‚}r¶‚(jÅUjÆj¢‚jÎj¥‚jÐjÑjÒ}r·‚(jÔ]jÕ]jÖ]j×]r¸‚Ummcsdr¹‚ajÚ]rº‚j3aujÜKjÝhjÞ]r»‚(jà)�r¼‚}r½‚(jÅXMMCSDr¾‚jÆjµ‚jÎj¥‚jÐjäjÒ}r¿‚(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÀ‚jçXMMCSDrÁ‚…�r‚}rÂ(jÅj¾‚jÆj¼‚ubaubjò)�rÄ‚}rÅ‚(jÅXiMMCSD bootloader is required to boot target using an SD card containing bootloader and application images. When the board is powered ON the ROM bootloader detects the MMCSD bootloader image and loads it to the internal memory.The bootloader initializes the board, copies the application image from SD card to the DDR memory and gives control to the application.rÆ‚jÆjµ‚jÎj¥‚jÐjõjÒ}rÇ‚(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÈ‚jçXiMMCSD bootloader is required to boot target using an SD card containing bootloader and application images. When the board is powered ON the ROM bootloader detects the MMCSD bootloader image and loads it to the internal memory.The bootloader initializes the board, copies the application image from SD card to the DDR memory and gives control to the application.rÉ‚…�rÊ‚}rË‚(jÅjÆ‚jÆjÄ‚ubaubeubjÇ)�rÌ‚}rÍ‚(jÅUjÆj¢‚jÎj¥‚jÐjÑjÒ}r΂(jÔ]jÕ]jÖ]j×]rÏ‚UqspirЂajÚ]rÑ‚hÌaujÜKjÝhjÞ]rÒ‚(jà)�rÓ‚}rÔ‚(jÅXQSPIrÕ‚jÆjÌ‚jÎj¥‚jÐjäjÒ}rÖ‚(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rׂjçXQSPIrØ‚…�rÙ‚}rÚ‚(jÅjÕ‚jÆjÓ‚ubaubjò)�rÛ‚}rÜ‚(jÅXkA flash device interfaced with QSPI is flashed with QSPI bootloader and application images. When the board is powered ON the ROM bootloader detects the bootloader image from flash device and loads it to the internal memory. The Bootloader initializes the board, copies the application image from QSPI device to the DDR memory and gives control to the application.rÝ‚jÆjÌ‚jÎj¥‚jÐjõjÒ}rÞ‚(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rß‚jçXkA flash device interfaced with QSPI is flashed with QSPI bootloader and application images. When the board is powered ON the ROM bootloader detects the bootloader image from flash device and loads it to the internal memory. The Bootloader initializes the board, copies the application image from QSPI device to the DDR memory and gives control to the application.rà‚…�rá‚}râ‚(jÅjÝ‚jÆjÛ‚ubaubeubjÇ)�rã‚}rä‚(jÅUjÆj¢‚jÎj¥‚jÐjÑjÒ}rå‚(jÔ]jÕ]jÖ]j×]ræ‚Uuartrç‚ajÚ]rè‚j‡aujÜK%jÝhjÞ]ré‚(jà)�rê‚}rë‚(jÅXUARTrì‚jÆjã‚jÎj¥‚jÐjäjÒ}rí‚(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÝhjÞ]rî‚jçXUARTrï‚…�rð‚}rñ‚(jÅjì‚jÆjê‚ubaubjò)�rò‚}ró‚(jÅXcA Serial connection is used for transferring the bootloader binary from PC to target board through XMODEM protocol. The bootloader on execution prompts for application image to transfer through XMODEM. On providing the path, the application binary is transferred through serial connection to DDR memory and the control is passed to application to execute.rô‚jÆjã‚jÎj¥‚jÐjõjÒ}rõ‚(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÝhjÞ]rö‚jçXcA Serial connection is used for transferring the bootloader binary from PC to target board through XMODEM protocol. The bootloader on execution prompts for application image to transfer through XMODEM. On providing the path, the application binary is transferred through serial connection to DDR memory and the control is passed to application to execute.r÷‚…�rø‚}rù‚(jÅjô‚jÆjò‚ubaubeubjÇ)�rú‚}rû‚(jÅUjÆj¢‚jÎj¥‚jÐjÑjÒ}rü‚(jÔ]jÕ]jÖ]j×]rý‚U mcspi-spirþ‚ajÚ]rÿ‚j·aujÜK/jÝhjÞ]rƒ(jà)�rƒ}rƒ(jÅX MCSPI/SPIrƒjÆjú‚jÎj¥‚jÐjäjÒ}rƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK/jÝhjÞ]rƒjçX MCSPI/SPIrƒ…�rƒ}rƒ(jÅjƒjÆjƒubaubjò)�r ƒ}r ƒ(jÅXtA SPI flash device flashed with MCSPI/SPI bootloader and application images is used for booting the board. When the board is powered ON the ROM bootloader detects the bootloader image from flash device and loads it to the internal memory. The Bootloader initializes the board, copies the application image from flash to the DDR memory and gives control to the application.r ƒjÆjú‚jÎj¥‚jÐjõjÒ}r ƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÝhjÞ]r ƒjçXtA SPI flash device flashed with MCSPI/SPI bootloader and application images is used for booting the board. When the board is powered ON the ROM bootloader detects the bootloader image from flash device and loads it to the internal memory. The Bootloader initializes the board, copies the application image from flash to the DDR memory and gives control to the application.rƒ…�rƒ}rƒ(jÅj ƒjÆj ƒubaubeubjÇ)�rƒ}rƒ(jÅUjÆj¢‚jÎj¥‚jÐjÑjÒ}rƒ(jÔ]jÕ]jÖ]j×]rƒUnandrƒajÚ]rƒh5aujÜK9jÝhjÞ]rƒ(jà)�rƒ}rƒ(jÅXNANDrƒjÆjƒjÎj¥‚jÐjäjÒ}rƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK9jÝhjÞ]rƒjçXNANDrƒ…�rƒ}rƒ(jÅjƒjÆjƒubaubjò)�r ƒ}r!ƒ(jÅX^NAND flash with bootloader and and application images is used for booting the board. When the board is powered ON the ROM bootloader detects the bootloader image from flash device and loads it to the internal memory. The bootloader initializes the board, copies the application image from flash to the DDR memory and gives control to the application.r"ƒjÆjƒjÎj¥‚jÐjõjÒ}r#ƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÝhjÞ]r$ƒjçX^NAND flash with bootloader and and application images is used for booting the board. When the board is powered ON the ROM bootloader detects the bootloader image from flash device and loads it to the internal memory. The bootloader initializes the board, copies the application image from flash to the DDR memory and gives control to the application.r%ƒ…�r&ƒ}r'ƒ(jÅj"ƒjÆj ƒubaubjë)�r(ƒ}r)ƒ(jÅX“For information on boot mode setting, see the applicable `EVM Hardware User Guide `__r*ƒjÆjƒjÎj¥‚jÐjïjÒ}r+ƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r,ƒjò)�r-ƒ}r.ƒ(jÅj*ƒjÆj(ƒjÎj¥‚jÐjõjÒ}r/ƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÞ]r0ƒ(jçX9For information on boot mode setting, see the applicable r1ƒ…�r2ƒ}r3ƒ(jÅX9For information on boot mode setting, see the applicable jÆj-ƒubjû)�r4ƒ}r5ƒ(jÅXZ`EVM Hardware User Guide `__jÒ}r6ƒ(UnameXEVM Hardware User GuidejX<index_release_specific.html#supported-platforms-and-versionsj×]jÖ]jÔ]jÕ]jÚ]ujÆj-ƒjÞ]r7ƒjçXEVM Hardware User Guider8ƒ…�r9ƒ}r:ƒ(jÅUjÆj4ƒubajÐjÿubeubaubeubeubjÇ)�r;ƒ}r<ƒ(jÅUjÆj�‚jÎj¥‚jÐjÑjÒ}r=ƒ(jÔ]jÕ]jÖ]j×]r>ƒU platformsr?ƒajÚ]r@ƒjqaujÜKGjÝhjÞ]rAƒ(jà)�rBƒ}rCƒ(jÅX PlatformsrDƒjÆj;ƒjÎj¥‚jÐjäjÒ}rEƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÝhjÞ]rFƒjçX PlatformsrGƒ…�rHƒ}rIƒ(jÅjDƒjÆjBƒubaubjÇ)�rJƒ}rKƒ(jÅUjÆj;ƒjÎj¥‚jÐjÑjÒ}rLƒ(jÔ]jÕ]jÖ]j×]rMƒU am335x-am437xrNƒajÚ]rOƒhÓaujÜKJjÝhjÞ]rPƒ(jà)�rQƒ}rRƒ(jÅX AM335x/AM437xrSƒjÆjJƒjÎj¥‚jÐjäjÒ}rTƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÝhjÞ]rUƒjçX AM335x/AM437xrVƒ…�rWƒ}rXƒ(jÅjSƒjÆjQƒubaubj7)�rYƒ}rZƒ(jÅXMhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_AM335x/AM437xjÆjJƒjÎj:X\source/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_AM335x_AM437x.rst.incr[ƒ…�r\ƒ}r]ƒbjÐj>jÒ}r^ƒ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r_ƒjçXMhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_AM335x/AM437xr`ƒ…�raƒ}rbƒ(jÅUjÆjYƒubaubjÇ)�rcƒ}rdƒ(jÅUjKjÆjJƒjÎj\ƒjÐjÑjÒ}reƒ(jÔ]rfƒXoverviewrgƒajÕ]jÖ]j×]rhƒUid67riƒajÚ]ujÜKjÝhjÞ]rjƒ(jà)�rkƒ}rlƒ(jÅXOverviewrmƒjÆjcƒjÎj\ƒjÐjäjÒ}rnƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]roƒjçXOverviewrpƒ…�rqƒ}rrƒ(jÅjmƒjÆjkƒubaubjò)�rsƒ}rtƒ(jÅXBootloader supports power-on-reset bootstraps for the board. It initializes board, loads application from the memory device to DDR and transfers control to application. Section provides additional details including flashing and booting instructions across different media.ruƒjÆjcƒjÎj\ƒjÐjõjÒ}rvƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rwƒjçXBootloader supports power-on-reset bootstraps for the board. It initializes board, loads application from the memory device to DDR and transfers control to application. Section provides additional details including flashing and booting instructions across different media.rxƒ…�ryƒ}rzƒ(jÅjuƒjÆjsƒubaubeubjÇ)�r{ƒ}r|ƒ(jÅUjÆjJƒjÎj\ƒjÐjÑjÒ}r}ƒ(jÔ]jÕ]jÖ]j×]r~ƒUsource-referencerƒajÚ]r€ƒhEaujÜK jÝhjÞ]r�ƒ(jà)�r‚ƒ}rƒƒ(jÅXSource Referencer„ƒjÆj{ƒjÎj\ƒjÐjäjÒ}r…ƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]r†ƒjçXSource Referencer‡ƒ…�rˆƒ}r‰ƒ(jÅj„ƒjÆj‚ƒubaubj)�rŠƒ}r‹ƒ(jÅX5< BASE_DIR = PDK_INSTALL_DIR\packages\ti\starterware>jÆj{ƒjÎj\ƒjÐjjÒ}rŒƒ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMœjÝhjÞ]r�ƒjçX5< BASE_DIR = PDK_INSTALL_DIR\packages\ti\starterware>rŽƒ…�r�ƒ}r�ƒ(jÅUjÆjŠƒubaubjÇ)�r‘ƒ}r’ƒ(jÅUjÆj{ƒjÎj\ƒjÐjÑjÒ}r“ƒ(jÔ]jÕ]jÖ]j×]r”ƒU(bootloader-build-files-for-am335x-am437xr•ƒajÚ]r–ƒh]aujÜKjÝhjÞ]r—ƒ(jà)�r˜ƒ}r™ƒ(jÅX(Bootloader build files for AM335x/AM437xršƒjÆj‘ƒjÎj\ƒjÐjäjÒ}r›ƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rœƒjçX(Bootloader build files for AM335x/AM437xr�ƒ…�ržƒ}rŸƒ(jÅjšƒjÆj˜ƒubaubjò)�r ƒ}r¡ƒ(jÅX**Source files:**r¢ƒjÆj‘ƒjÎj\ƒjÐjõjÒ}r£ƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r¤ƒjÚ)�r¥ƒ}r¦ƒ(jÅj¢ƒjÒ}r§ƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ƒjÞ]r¨ƒjçX Source files:r©ƒ…�rªƒ}r«ƒ(jÅUjÆj¥ƒubajÐjâubaubjt)�r¬ƒ}r­ƒ(jÅUjÆj‘ƒjÎj\ƒjÐjwjÒ}r®ƒ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r¯ƒ(j{)�r°ƒ}r±ƒ(jÅXM**BASE_DIR/bootloader/src**: Common source files for bootloader functionalityjÆj¬ƒjÎj\ƒjÐjjÒ}r²ƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r³ƒjò)�r´ƒ}rµƒ(jÅXM**BASE_DIR/bootloader/src**: Common source files for bootloader functionalityjÆj°ƒjÎj\ƒjÐjõjÒ}r¶ƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r·ƒ(jÚ)�r¸ƒ}r¹ƒ(jÅX**BASE_DIR/bootloader/src**jÒ}rºƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´ƒjÞ]r»ƒjçXBASE_DIR/bootloader/srcr¼ƒ…�r½ƒ}r¾ƒ(jÅUjÆj¸ƒubajÐjâubjçX2: Common source files for bootloader functionalityr¿ƒ…�rÀƒ}rÁƒ(jÅX2: Common source files for bootloader functionalityjÆj´ƒubeubaubj{)�rƒ}rÃ(jÅXx**BASE_DIR/bootloader/src/**: Files specific to device to initialize platform features like PLL, pinmux and DDR jÆj¬ƒjÎj\ƒjÐjjÒ}ră(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŃjò)�rƃ}rǃ(jÅXw**BASE_DIR/bootloader/src/**: Files specific to device to initialize platform features like PLL, pinmux and DDRjÆjƒjÎj\ƒjÐjõjÒ}rȃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rɃ(jÚ)�rʃ}r˃(jÅX$**BASE_DIR/bootloader/src/**jÒ}r̃(jÔ]jÕ]jÖ]j×]jÚ]ujÆjƃjÞ]r̓jçX BASE_DIR/bootloader/src/r΃…�rσ}rЃ(jÅUjÆjʃubajÐjâubjçXS: Files specific to device to initialize platform features like PLL, pinmux and DDRrу…�rÒƒ}rÓƒ(jÅXS: Files specific to device to initialize platform features like PLL, pinmux and DDRjÆjƃubeubaubeubjò)�rÔƒ}rÕƒ(jÅX**Build Files:**rÖƒjÆj‘ƒjÎj\ƒjÐjõjÒ}r׃(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r؃jÚ)�rÙƒ}rÚƒ(jÅjÖƒjÒ}rÛƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÔƒjÞ]r܃jçX Build Files:r݃…�rÞƒ}r߃(jÅUjÆjÙƒubajÐjâubaubjt)�ràƒ}ráƒ(jÅUjÆj‘ƒjÎj\ƒjÐjwjÒ}râƒ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rãƒ(j{)�räƒ}råƒ(jÅXp**BASE_DIR/build/makerules/rules_a8.mk**: Common Compiler flags used for A8 cores. Applies to AMIC110 and AM335xjÆjàƒjÎj\ƒjÐjjÒ}ræƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rçƒjò)�rèƒ}réƒ(jÅXp**BASE_DIR/build/makerules/rules_a8.mk**: Common Compiler flags used for A8 cores. Applies to AMIC110 and AM335xjÆjäƒjÎj\ƒjÐjõjÒ}rêƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rëƒ(jÚ)�rìƒ}ríƒ(jÅX(**BASE_DIR/build/makerules/rules_a8.mk**jÒ}rîƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjèƒjÞ]rïƒjçX$BASE_DIR/build/makerules/rules_a8.mkrðƒ…�rñƒ}ròƒ(jÅUjÆjìƒubajÐjâubjçXH: Common Compiler flags used for A8 cores. Applies to AMIC110 and AM335xróƒ…�rôƒ}rõƒ(jÅXH: Common Compiler flags used for A8 cores. Applies to AMIC110 and AM335xjÆjèƒubeubaubj{)�röƒ}r÷ƒ(jÅXl**BASE_DIR/build/makerules/rules_a9.mk**: Common Compiler flags used for A9 cores. Applies to AM437x devicesjÆjàƒjÎj\ƒjÐjjÒ}røƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rùƒjò)�rúƒ}rûƒ(jÅXl**BASE_DIR/build/makerules/rules_a9.mk**: Common Compiler flags used for A9 cores. Applies to AM437x devicesjÆjöƒjÎj\ƒjÐjõjÒ}rüƒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]rýƒ(jÚ)�rþƒ}rÿƒ(jÅX(**BASE_DIR/build/makerules/rules_a9.mk**jÒ}r„(jÔ]jÕ]jÖ]j×]jÚ]ujÆjúƒjÞ]r„jçX$BASE_DIR/build/makerules/rules_a9.mkr„…�r„}r„(jÅUjÆjþƒubajÐjâubjçXD: Common Compiler flags used for A9 cores. Applies to AM437x devicesr„…�r„}r„(jÅXD: Common Compiler flags used for A9 cores. Applies to AM437x devicesjÆjúƒubeubaubj{)�r„}r „(jÅXg**BASE_DIR/build/makerules/platform.mk**: Global settings for all components for a particular platform.jÆjàƒjÎj\ƒjÐjjÒ}r „(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r „jò)�r „}r „(jÅXg**BASE_DIR/build/makerules/platform.mk**: Global settings for all components for a particular platform.jÆj„jÎj\ƒjÐjõjÒ}r„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]r„(jÚ)�r„}r„(jÅX(**BASE_DIR/build/makerules/platform.mk**jÒ}r„(jÔ]jÕ]jÖ]j×]jÚ]ujÆj „jÞ]r„jçX$BASE_DIR/build/makerules/platform.mkr„…�r„}r„(jÅUjÆj„ubajÐjâubjçX?: Global settings for all components for a particular platform.r„…�r„}r„(jÅX?: Global settings for all components for a particular platform.jÆj „ubeubaubj{)�r„}r„(jÅX[**BASE_DIR/build/makerules/components.mk**: Specific settings for components in starterwarejÆjàƒjÎj\ƒjÐjjÒ}r„(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r„jò)�r„}r„(jÅX[**BASE_DIR/build/makerules/components.mk**: Specific settings for components in starterwarejÆj„jÎj\ƒjÐjõjÒ}r „(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÞ]r!„(jÚ)�r"„}r#„(jÅX***BASE_DIR/build/makerules/components.mk**jÒ}r$„(jÔ]jÕ]jÖ]j×]jÚ]ujÆj„jÞ]r%„jçX&BASE_DIR/build/makerules/components.mkr&„…�r'„}r(„(jÅUjÆj"„ubajÐjâubjçX1: Specific settings for components in starterwarer)„…�r*„}r+„(jÅX1: Specific settings for components in starterwarejÆj„ubeubaubj{)�r,„}r-„(jÅXP**BASE_DIR/build/makerules/build_cfg.mk**: Flags to enable features in the buildjÆjàƒjÎj\ƒjÐjjÒ}r.„(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r/„jò)�r0„}r1„(jÅXP**BASE_DIR/build/makerules/build_cfg.mk**: Flags to enable features in the buildjÆj,„jÎj\ƒjÐjõjÒ}r2„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]r3„(jÚ)�r4„}r5„(jÅX)**BASE_DIR/build/makerules/build_cfg.mk**jÒ}r6„(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0„jÞ]r7„jçX%BASE_DIR/build/makerules/build_cfg.mkr8„…�r9„}r:„(jÅUjÆj4„ubajÐjâubjçX': Flags to enable features in the buildr;„…�r<„}r=„(jÅX': Flags to enable features in the buildjÆj0„ubeubaubj{)�r>„}r?„(jÅX†**BASE_DIR/bootloader/Makefile**: Makefile for bootloader that provides list of source files and library to create bootloader binary. jÆjàƒjÎj\ƒjÐjjÒ}r@„(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rA„jò)�rB„}rC„(jÅX…**BASE_DIR/bootloader/Makefile**: Makefile for bootloader that provides list of source files and library to create bootloader binary.jÆj>„jÎj\ƒjÐjõjÒ}rD„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]rE„(jÚ)�rF„}rG„(jÅX **BASE_DIR/bootloader/Makefile**jÒ}rH„(jÔ]jÕ]jÖ]j×]jÚ]ujÆjB„jÞ]rI„jçXBASE_DIR/bootloader/MakefilerJ„…�rK„}rL„(jÅUjÆjF„ubajÐjâubjçXe: Makefile for bootloader that provides list of source files and library to create bootloader binary.rM„…�rN„}rO„(jÅXe: Makefile for bootloader that provides list of source files and library to create bootloader binary.jÆjB„ubeubaubeubjò)�rP„}rQ„(jÅX**Boot and flashing tools:**rR„jÆj‘ƒjÎj\ƒjÐjõjÒ}rS„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÝhjÞ]rT„jÚ)�rU„}rV„(jÅjR„jÒ}rW„(jÔ]jÕ]jÖ]j×]jÚ]ujÆjP„jÞ]rX„jçXBoot and flashing tools:rY„…�rZ„}r[„(jÅUjÆjU„ubajÐjâubaubjt)�r\„}r]„(jÅUjÆj‘ƒjÎj\ƒjÐjwjÒ}r^„(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK/jÝhjÞ]r_„j{)�r`„}ra„(jÅXy**BASE_DIR/tools Contains tools to create boot images and flashing tools to program the boot binary on the boot media.** jÆj\„jÎj\ƒjÐjjÒ}rb„(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rc„jò)�rd„}re„(jÅXx**BASE_DIR/tools Contains tools to create boot images and flashing tools to program the boot binary on the boot media.**rf„jÆj`„jÎj\ƒjÐjõjÒ}rg„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK/jÞ]rh„jÚ)�ri„}rj„(jÅjf„jÒ}rk„(jÔ]jÕ]jÖ]j×]jÚ]ujÆjd„jÞ]rl„jçXtBASE_DIR/tools Contains tools to create boot images and flashing tools to program the boot binary on the boot media.rm„…�rn„}ro„(jÅUjÆji„ubajÐjâubaubaubaubjc)�rp„}rq„(jÅUjÆj‘ƒjÎj\ƒjÐjfjÒ}rr„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÝhjÞ]rs„ji)�rt„}ru„(jÅUjlKjÆjp„jÎj\ƒjÐjÜjÒ}rv„(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�rw„}rx„(jÅUjKjÆjJƒjÎj\ƒjÐjÑjÒ}ry„(jÔ]rz„Xbootloader execution sequencer{„ajÕ]jÖ]j×]r|„Ubootloader-execution-sequencer}„ajÚ]ujÜK5jÝhjÞ]r~„(jà)�r„}r€„(jÅXBootloader execution sequencer�„jÆjw„jÎj\ƒjÐjäjÒ}r‚„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK5jÝhjÞ]rƒ„jçXBootloader execution sequencer„„…�r…„}r†„(jÅj�„jÆj„ubaubjò)�r‡„}rˆ„(jÅX¬The Processor SDK RTOS boot loader uses a two stage boot process. The different stages of the application boot sequence using Processor SDK RTOS bootloader are shown below:r‰„jÆjw„jÎj\ƒjÐjõjÒ}rŠ„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÝhjÞ]r‹„jçX¬The Processor SDK RTOS boot loader uses a two stage boot process. The different stages of the application boot sequence using Processor SDK RTOS bootloader are shown below:rŒ„…�r�„}rŽ„(jÅj‰„jÆj‡„ubaubjÇ)�r�„}r�„(jÅUjÆjw„jÎj\ƒjÐjÑjÒ}r‘„(jÔ]jÕ]jÖ]j×]r’„U boot-sequencer“„ajÚ]r”„hQaujÜKjÝhjÞ]r¡„(j{)�r¢„}r£„(jÅXPower on Resetr¤„jÆjž„jÎj\ƒjÐjjÒ}r¥„(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¦„jò)�r§„}r¨„(jÅj¤„jÆj¢„jÎj\ƒjÐjõjÒ}r©„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]rª„jçXPower on Resetr«„…�r¬„}r­„(jÅj¤„jÆj§„ubaubaubj{)�r®„}r¯„(jÅXÉROM Bootloader (RBL) - Platform configuration and initialization. - DPLL and clock settings for MPU, I2C, MMCSD, USB, SPI, QSPI, Ethernet etc. - Checks Sysboot pins and choose booting device - If no valid bootloader found on booting device, RBL checks for next booting device. The sequence depends on RBL execution flow and Sysboot pins. - RBL gets image size and load address by checking TI Image Header appended on bootloader binary(.bin). Check `binary formats `__. - Loads the binary to internal OCMC memory at the Load address fetched from TI Image Header - Passes control to Secondary Bootloader(SBL) jÆjž„jÎNjÐjjÒ}r°„(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r±„(jò)�r²„}r³„(jÅXROM Bootloader (RBL)r´„jÆj®„jÎj\ƒjÐjõjÒ}rµ„(jÔ]jÕ]jÖ]j×]jÚ]ujÜK?jÞ]r¶„jçXROM Bootloader (RBL)r·„…�r¸„}r¹„(jÅj´„jÆj²„ubaubjt)�rº„}r»„(jÅUjÒ}r¼„(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj®„jÞ]r½„(j{)�r¾„}r¿„(jÅX}Platform configuration and initialization. - DPLL and clock settings for MPU, I2C, MMCSD, USB, SPI, QSPI, Ethernet etc. jÒ}rÀ„(jÔ]jÕ]jÖ]j×]jÚ]ujÆjº„jÞ]rÁ„(jò)�r„}rÄ(jÅX*Platform configuration and initialization.rÄ„jÆj¾„jÎj\ƒjÐjõjÒ}rÅ„(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÞ]rÆ„jçX*Platform configuration and initialization.rÇ„…�rÈ„}rÉ„(jÅjÄ„jÆj„ubaubjt)�rÊ„}rË„(jÅUjÒ}rÌ„(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj¾„jÞ]rÍ„j{)�r΄}rÏ„(jÅXKDPLL and clock settings for MPU, I2C, MMCSD, USB, SPI, QSPI, Ethernet etc. jÒ}rЄ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊ„jÞ]rÑ„jò)�rÒ„}rÓ„(jÅXJDPLL and clock settings for MPU, I2C, MMCSD, USB, SPI, QSPI, Ethernet etc.rÔ„jÆj΄jÎj\ƒjÐjõjÒ}rÕ„(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÞ]rÖ„jçXJDPLL and clock settings for MPU, I2C, MMCSD, USB, SPI, QSPI, Ethernet etc.rׄ…�rØ„}rÙ„(jÅjÔ„jÆjÒ„ubaubajÐjubajÐjwubejÐjubj{)�rÚ„}rÛ„(jÅXÉChecks Sysboot pins and choose booting device - If no valid bootloader found on booting device, RBL checks for next booting device. The sequence depends on RBL execution flow and Sysboot pins. jÒ}rÜ„(jÔ]jÕ]jÖ]j×]jÚ]ujÆjº„jÞ]rÝ„(jò)�rÞ„}rß„(jÅX-Checks Sysboot pins and choose booting devicerà„jÆjÚ„jÎj\ƒjÐjõjÒ}rá„(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]râ„jçX-Checks Sysboot pins and choose booting devicerã„…�rä„}rå„(jÅjà„jÆjÞ„ubaubjt)�ræ„}rç„(jÅUjÒ}rè„(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjÚ„jÞ]ré„j{)�rê„}rë„(jÅX‘If no valid bootloader found on booting device, RBL checks for next booting device. The sequence depends on RBL execution flow and Sysboot pins. jÒ}rì„(jÔ]jÕ]jÖ]j×]jÚ]ujÆjæ„jÞ]rí„jò)�rî„}rï„(jÅX�If no valid bootloader found on booting device, RBL checks for next booting device. The sequence depends on RBL execution flow and Sysboot pins.rð„jÆjê„jÎj\ƒjÐjõjÒ}rñ„(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]rò„jçX�If no valid bootloader found on booting device, RBL checks for next booting device. The sequence depends on RBL execution flow and Sysboot pins.ró„…�rô„}rõ„(jÅjð„jÆjî„ubaubajÐjubajÐjwubejÐjubj{)�rö„}r÷„(jÅX½RBL gets image size and load address by checking TI Image Header appended on bootloader binary(.bin). Check `binary formats `__.jÒ}rø„(jÔ]jÕ]jÖ]j×]jÚ]ujÆjº„jÞ]rù„jò)�rú„}rû„(jÅX½RBL gets image size and load address by checking TI Image Header appended on bootloader binary(.bin). Check `binary formats `__.jÆjö„jÎj\ƒjÐjõjÒ}rü„(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]rý„(jçXlRBL gets image size and load address by checking TI Image Header appended on bootloader binary(.bin). Check rþ„…�rÿ„}r…(jÅXlRBL gets image size and load address by checking TI Image Header appended on bootloader binary(.bin). Check jÆjú„ubjû)�r…}r…(jÅXP`binary formats `__jÒ}r…(UnameXbinary formatsjX;index_Foundational_Components.html#tools-and-binary-formatsj×]jÖ]jÔ]jÕ]jÚ]ujÆjú„jÞ]r…jçXbinary formatsr……�r…}r…(jÅUjÆj…ubajÐjÿubjçX.…�r…}r …(jÅX.jÆjú„ubeubajÐjubj{)�r …}r …(jÅXYLoads the binary to internal OCMC memory at the Load address fetched from TI Image HeaderjÒ}r …(jÔ]jÕ]jÖ]j×]jÚ]ujÆjº„jÞ]r …jò)�r…}r…(jÅXYLoads the binary to internal OCMC memory at the Load address fetched from TI Image Headerr…jÆj …jÎj\ƒjÐjõjÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÞ]r…jçXYLoads the binary to internal OCMC memory at the Load address fetched from TI Image Headerr……�r…}r…(jÅj…jÆj…ubaubajÐjubj{)�r…}r…(jÅX,Passes control to Secondary Bootloader(SBL) jÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÆjº„jÞ]r…jò)�r…}r…(jÅX+Passes control to Secondary Bootloader(SBL)r…jÆj…jÎj\ƒjÐjõjÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKQjÞ]r…jçX+Passes control to Secondary Bootloader(SBL)r……�r …}r!…(jÅj…jÆj…ubaubajÐjubejÐjwubeubj{)�r"…}r#…(jÅXÁSecondary Bootloader(SBL) - Configure PLL and Initialize DDR - Configure PRCM and PinMux  for Boot Peripherals - Copies application image to DDR - Passes execution control to Application jÆjž„jÎNjÐjjÒ}r$…(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r%…(jò)�r&…}r'…(jÅXSecondary Bootloader(SBL)r(…jÆj"…jÎj\ƒjÐjõjÒ}r)…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÞ]r*…jçXSecondary Bootloader(SBL)r+……�r,…}r-…(jÅj(…jÆj&…ubaubjt)�r.…}r/…(jÅUjÒ}r0…(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj"…jÞ]r1…(j{)�r2…}r3…(jÅX Configure PLL and Initialize DDRr4…jÒ}r5…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.…jÞ]r6…jò)�r7…}r8…(jÅj4…jÆj2…jÎj\ƒjÐjõjÒ}r9…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÞ]r:…jçX Configure PLL and Initialize DDRr;……�r<…}r=…(jÅj4…jÆj7…ubaubajÐjubj{)�r>…}r?…(jÅX0Configure PRCM and PinMux  for Boot Peripheralsr@…jÒ}rA…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.…jÞ]rB…jò)�rC…}rD…(jÅj@…jÆj>…jÎj\ƒjÐjõjÒ}rE…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]rF…jçX0Configure PRCM and PinMux  for Boot PeripheralsrG……�rH…}rI…(jÅj@…jÆjC…ubaubajÐjubj{)�rJ…}rK…(jÅXCopies application image to DDRrL…jÒ}rM…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.…jÞ]rN…jò)�rO…}rP…(jÅjL…jÆjJ…jÎj\ƒjÐjõjÒ}rQ…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKWjÞ]rR…jçXCopies application image to DDRrS……�rT…}rU…(jÅjL…jÆjO…ubaubajÐjubj{)�rV…}rW…(jÅX(Passes execution control to Application jÒ}rX…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.…jÞ]rY…jò)�rZ…}r[…(jÅX'Passes execution control to Applicationr\…jÆjV…jÎj\ƒjÐjõjÒ}r]…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]r^…jçX'Passes execution control to Applicationr_……�r`…}ra…(jÅj\…jÆjZ…ubaubajÐjubejÐjwubeubj{)�rb…}rc…(jÅXApplication execution jÆjž„jÎj\ƒjÐjjÒ}rd…(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]re…jò)�rf…}rg…(jÅXApplication executionrh…jÆjb…jÎj\ƒjÐjõjÒ}ri…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]rj…jçXApplication executionrk……�rl…}rm…(jÅjh…jÆjf…ubaubaubeubeubeubjÇ)�rn…}ro…(jÅUjKjÆjJƒjÎj\ƒjÐjÑjÒ}rp…(jÔ]rq…Xtools and binary formatsrr…ajÕ]jÖ]j×]rs…Utools-and-binary-formatsrt…ajÚ]ujÜK]jÝhjÞ]ru…(jà)�rv…}rw…(jÅXTools and Binary formatsrx…jÆjn…jÎj\ƒjÐjäjÒ}ry…(jÔ]jÕ]jÖ]j×]jÚ]ujÜK]jÝhjÞ]rz…jçXTools and Binary formatsr{……�r|…}r}…(jÅjx…jÆjv…ubaubjy )�r~…}r…(jÅUjÆjn…jÎj\ƒjÐjÔ jÒ}r€…(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�…j~ )�r‚…}rƒ…(jÅUjÒ}r„…(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj~…jÞ]r……(jƒ )�r†…}r‡…(jÅUjÒ}rˆ…(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj‚…jÞ]jÐj‡ ubjƒ )�r‰…}rŠ…(jÅUjÒ}r‹…(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj‚…jÞ]jÐj‡ ubjƒ )�rŒ…}r�…(jÅUjÒ}rŽ…(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj‚…jÞ]jÐj‡ ubj¥ )�r�…}r�…(jÅUjÒ}r‘…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚…jÞ]r’…(j� )�r“…}r”…(jÅUjÒ}r•…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�…jÞ]r–…(j• )�r—…}r˜…(jÅUjÒ}r™…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“…jÞ]rš…jò)�r›…}rœ…(jÅX Binary formatr�…jÆj—…jÎj\ƒjÐjõjÒ}rž…(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]rŸ…jçX Binary formatr ……�r¡…}r¢…(jÅj�…jÆj›…ubaubajÐj¢ ubj• )�r£…}r¤…(jÅUjÒ}r¥…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“…jÞ]r¦…jò)�r§…}r¨…(jÅX Requirementr©…jÆj£…jÎj\ƒjÐjõjÒ}rª…(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]r«…jçX Requirementr¬……�r­…}r®…(jÅj©…jÆj§…ubaubajÐj¢ ubj• )�r¯…}r°…(jÅUjÒ}r±…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“…jÞ]r²…jò)�r³…}r´…(jÅXDetailsrµ…jÆj¯…jÎj\ƒjÐjõjÒ}r¶…(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]r·…jçXDetailsr¸……�r¹…}rº…(jÅjµ…jÆj³…ubaubajÐj¢ ubejÐj£ ubj� )�r»…}r¼…(jÅUjÒ}r½…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�…jÞ]r¾…(j• )�r¿…}rÀ…(jÅUjÒ}rÁ…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»…jÞ]rÂ…jò)�rÃ…}rÄ…(jÅX.binrÅ…jÆj¿…jÎj\ƒjÐjõjÒ}rÆ…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]rÇ…jçX.binrÈ……�rÉ…}rÊ…(jÅjÅ…jÆjÃ…ubaubajÐj¢ ubj• )�rË…}rÌ…(jÅUjÒ}rÍ…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»…jÞ]rÎ…(jò)�rÏ…}rÐ…(jÅXQSPI bootloader,rÑ…jÆjË…jÎj\ƒjÐjõjÒ}rÒ…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]rÓ…jçXQSPI bootloader,rÔ……�rÕ…}rÖ…(jÅjÑ…jÆjÏ…ubaubjò)�r×…}rØ…(jÅXUART bootloader and apprÙ…jÆjË…jÎj\ƒjÐjõjÒ}rÚ…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÞ]rÛ…jçXUART bootloader and apprÜ……�rÝ…}rÞ…(jÅjÙ…jÆj×…ubaubejÐj¢ ubj• )�rß…}rà…(jÅUjÒ}rá…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»…jÞ]râ…(jò)�rã…}rä…(jÅXaQSPI bootloader binary should in .bin format and Application binary should be in \_ti.bin format.jÆjß…jÎj\ƒjÐjõjÒ}rå…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]ræ…jçX`QSPI bootloader binary should in .bin format and Application binary should be in _ti.bin format.rç……�rè…}ré…(jÅXaQSPI bootloader binary should in .bin format and Application binary should be in \_ti.bin format.jÆjã…ubaubjò)�rê…}rë…(jÅXVUART bootloader and applications are loaded in .bin format through XMODEM in terminal.rì…jÆjß…jÎj\ƒjÐjõjÒ}rí…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÞ]rî…jçXVUART bootloader and applications are loaded in .bin format through XMODEM in terminal.rï……�rð…}rñ…(jÅjì…jÆjê…ubaubejÐj¢ ubejÐj£ ubj� )�rò…}ró…(jÅUjÒ}rô…(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�…jÞ]rõ…(j• )�rö…}r÷…(jÅUjÒ}rø…(jÔ]jÕ]jÖ]j×]jÚ]ujÆjò…jÞ]rù…jò)�rú…}rû…(jÅX\_ti.binjÆjö…jÎj\ƒjÐjõjÒ}rü…(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]rý…jçX_ti.binrþ……�rÿ…}r†(jÅX\_ti.binjÆjú…ubaubajÐj¢ ubj• )�r†}r†(jÅUjÒ}r†(jÔ]jÕ]jÖ]j×]jÚ]ujÆjò…jÞ]r†(jò)�r†}r†(jÅXMMCSD bootloader and app,r†jÆj†jÎj\ƒjÐjõjÒ}r†(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]r †jçXMMCSD bootloader and app,r †…�r †}r †(jÅj†jÆj†ubaubjò)�r †}r†(jÅXNAND bootloader and app,r†jÆj†jÎj\ƒjÐjõjÒ}r†(jÔ]jÕ]jÖ]j×]jÚ]ujÜKrjÞ]r†jçXNAND bootloader and app,r†…�r†}r†(jÅj†jÆj †ubaubjò)�r†}r†(jÅXMCSPI boot loader and app,r†jÆj†jÎj\ƒjÐjõjÒ}r†(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÞ]r†jçXMCSPI boot loader and app,r†…�r†}r†(jÅj†jÆj†ubaubjò)�r†}r†(jÅX QSPI app.r†jÆj†jÎj\ƒjÐjõjÒ}r †(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÞ]r!†jçX QSPI app.r"†…�r#†}r$†(jÅj†jÆj†ubaubejÐj¢ ubj• )�r%†}r&†(jÅUjÒ}r'†(jÔ]jÕ]jÖ]j×]jÚ]ujÆjò…jÞ]r(†(jò)�r)†}r*†(jÅXÄ.bin binaries are converted to \_ti.bin format by adding Image size(4bytes) and Image load address(4bytes) as image header. Refer to Image format section in Initialization chapter of `AM437x TRM`_jÆj%†jÎj\ƒjÐjõjÒ}r+†(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]r,†(jçX¶.bin binaries are converted to _ti.bin format by adding Image size(4bytes) and Image load address(4bytes) as image header. Refer to Image format section in Initialization chapter of r-†…�r.†}r/†(jÅX·.bin binaries are converted to \_ti.bin format by adding Image size(4bytes) and Image load address(4bytes) as image header. Refer to Image format section in Initialization chapter of jÆj)†ubjû)�r0†}r1†(jÅX `AM437x TRM`_jþKjÆj)†jÐjÿjÒ}r2†(UnameX AM437x TRMjX.http://www.ti.com/lit/ug/spruhl7h/spruhl7h.pdfr3†j×]jÖ]jÔ]jÕ]jÚ]ujÞ]r4†jçX AM437x TRMr5†…�r6†}r7†(jÅUjÆj0†ubaubeubjò)�r8†}r9†(jÅXeMMCSD, NAND and MCSPI boot loaders and application binaries should be appended with ti image header.r:†jÆj%†jÎj\ƒjÐjõjÒ}r;†(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]r<†jçXeMMCSD, NAND and MCSPI boot loaders and application binaries should be appended with ti image header.r=†…�r>†}r?†(jÅj:†jÆj8†ubaubejÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubj)�r@†}rA†(jÅX>.. _AM437x TRM: http://www.ti.com/lit/ug/spruhl7h/spruhl7h.pdfjKjÆjn…jÎj\ƒjÐj jÒ}rB†(jj3†j×]rC†U am437x-trmrD†ajÖ]jÔ]jÕ]jÚ]rE†hãaujÜM jÝhjÞ]ubjc)�rF†}rG†(jÅUjÆjn…jÎj\ƒjÐjfjÒ}rH†(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÝhjÞ]rI†ji)�rJ†}rK†(jÅUjlKjÆjF†jÎj\ƒjÐjÜjÒ}rL†(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�rM†}rN†(jÅX**TI Boot image**rO†jÆjn…jÎj\ƒjÐjõjÒ}rP†(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‰jÝhjÞ]rQ†jÚ)�rR†}rS†(jÅjO†jÒ}rT†(jÔ]jÕ]jÖ]j×]jÚ]ujÆjM†jÞ]rU†jçX TI Boot imagerV†…�rW†}rX†(jÅUjÆjR†ubajÐjâubaubjy )�rY†}rZ†(jÅUjÆjn…jÎj\ƒjÐjÔ jÒ}r[†(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r\†j~ )�r]†}r^†(jÅUjÒ}r_†(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjY†jÞ]r`†(jƒ )�ra†}rb†(jÅUjÒ}rc†(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj]†jÞ]jÐj‡ ubjƒ )�rd†}re†(jÅUjÒ}rf†(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj]†jÞ]jÐj‡ ubj‹ )�rg†}rh†(jÅUjÒ}ri†(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]†jÞ]rj†j� )�rk†}rl†(jÅUjÒ}rm†(jÔ]jÕ]jÖ]j×]jÚ]ujÆjg†jÞ]rn†(j• )�ro†}rp†(jÅUjÒ}rq†(jÔ]jÕ]jÖ]j×]jÚ]ujÆjk†jÞ]rr†jò)�rs†}rt†(jÅXOffsetru†jÆjo†jÎj\ƒjÐjõjÒ}rv†(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÞ]rw†jçXOffsetrx†…�ry†}rz†(jÅju†jÆjs†ubaubajÐj¢ ubj• )�r{†}r|†(jÅUjÒ}r}†(jÔ]jÕ]jÖ]j×]jÚ]ujÆjk†jÞ]r~†jò)�r†}r€†(jÅX Binary valuer�†jÆj{†jÎj\ƒjÐjõjÒ}r‚†(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÞ]rƒ†jçX Binary valuer„†…�r…†}r††(jÅj�†jÆj†ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r‡†}rˆ†(jÅUjÒ}r‰†(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]†jÞ]rІ(j� )�r‹†}rŒ†(jÅUjÒ}r�†(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‡†jÞ]rކ(j• )�r�†}r�†(jÅUjÒ}r‘†(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹†jÞ]r’†jò)�r“†}r”†(jÅX 0x00000000r•†jÆj�†jÎj\ƒjÐjõjÒ}r–†(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÞ]r—†jçX 0x00000000r˜†…�r™†}rš†(jÅj•†jÆj“†ubaubajÐj¢ ubj• )�r›†}rœ†(jÅUjÒ}r�†(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹†jÞ]rž†jò)�rŸ†}r †(jÅX**Size**r¡†jÆj›†jÎj\ƒjÐjõjÒ}r¢†(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÞ]r£†jÚ)�r¤†}r¥†(jÅj¡†jÒ}r¦†(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŸ†jÞ]r§†jçXSizer¨†…�r©†}rª†(jÅUjÆj¤†ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r«†}r¬†(jÅUjÒ}r­†(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‡†jÞ]r®†(j• )�r¯†}r°†(jÅUjÒ}r±†(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«†jÞ]r²†jò)�r³†}r´†(jÅX 0x00000004rµ†jÆj¯†jÎj\ƒjÐjõjÒ}r¶†(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]r·†jçX 0x00000004r¸†…�r¹†}rº†(jÅjµ†jÆj³†ubaubajÐj¢ ubj• )�r»†}r¼†(jÅUjÒ}r½†(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«†jÞ]r¾†jò)�r¿†}rÀ†(jÅX**Entry Point (Location)**rÁ†jÆj»†jÎj\ƒjÐjõjÒ}r†(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rÆjÚ)�rĆ}rņ(jÅjÁ†jÒ}rƆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¿†jÞ]rdžjçXEntry Point (Location)rȆ…�rɆ}rʆ(jÅUjÆjĆubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rˆ}r̆(jÅUjÒ}r͆(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‡†jÞ]rΆ(j• )�rφ}rІ(jÅUjÒ}rц(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆjÞ]rÒ†jò)�rÓ†}rÔ†(jÅX 0x00000008rÕ†jÆjφjÎj\ƒjÐjõjÒ}rÖ†(jÔ]jÕ]jÖ]j×]jÚ]ujÜK’jÞ]r׆jçX 0x00000008r؆…�rÙ†}rÚ†(jÅjÕ†jÆjÓ†ubaubajÐj¢ ubj• )�rÛ†}r܆(jÅUjÒ}r݆(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆjÞ]rÞ†jò)�r߆}rà†(jÅX**Binary (.bin)**rá†jÆjÛ†jÎj\ƒjÐjõjÒ}râ†(jÔ]jÕ]jÖ]j×]jÚ]ujÜK’jÞ]rã†jÚ)�rä†}rå†(jÅjá†jÒ}ræ†(jÔ]jÕ]jÖ]j×]jÚ]ujÆj߆jÞ]rç†jçX Binary (.bin)r膅�ré†}rê†(jÅUjÆjä†ubajÐjâubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjë)�rë†}rì†(jÅXi- For bootloader, the entry point is usually 0x402f0000 - For app, the entry point is usually 0x80000000.jÆjn…jÎNjÐjïjÒ}rí†(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rî†jt)�rï†}rð†(jÅUjÒ}rñ†(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjë†jÞ]rò†(j{)�ró†}rô†(jÅX5For bootloader, the entry point is usually 0x402f0000rõ†jÒ}rö†(jÔ]jÕ]jÖ]j×]jÚ]ujÆjï†jÞ]r÷†jò)�rø†}rù†(jÅjõ†jÆjó†jÎj\ƒjÐjõjÒ}rú†(jÔ]jÕ]jÖ]j×]jÚ]ujÜK–jÞ]rû†jçX5For bootloader, the entry point is usually 0x402f0000rü†…�rý†}rþ†(jÅjõ†jÆjø†ubaubajÐjubj{)�rÿ†}r‡(jÅX/For app, the entry point is usually 0x80000000.r‡jÒ}r‡(jÔ]jÕ]jÖ]j×]jÚ]ujÆjï†jÞ]r‡jò)�r‡}r‡(jÅj‡jÆjÿ†jÎj\ƒjÐjõjÒ}r‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÞ]r‡jçX/For app, the entry point is usually 0x80000000.r‡…�r ‡}r ‡(jÅj‡jÆj‡ubaubajÐjubejÐjwubaubjÇ)�r ‡}r ‡(jÅUjÆjn…jÎj\ƒjÐjÑjÒ}r ‡(jÔ]jÕ]jÖ]j×]r‡U"binary-format-conversion-procedurer‡ajÚ]r‡jdaujÜK›jÝhjÞ]r‡(jà)�r‡}r‡(jÅX"Binary format conversion procedurer‡jÆj ‡jÎj\ƒjÐjäjÒ}r‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK›jÝhjÞ]r‡jçX"Binary format conversion procedurer‡…�r‡}r‡(jÅj‡jÆj‡ubaubjò)�r‡}r‡(jÅX¾The GCC tool chain, referred as GCC_TOOLCHAIN_PATH below, is installed during the Processor-SDK RTOS installation. For example, Processor-SDK RTOS 6.3 has gcc-arm-none-eabi-7-2018-q2-update.r‡jÆj ‡jÎj\ƒjÐjõjÒ}r‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]r‡jçX¾The GCC tool chain, referred as GCC_TOOLCHAIN_PATH below, is installed during the Processor-SDK RTOS installation. For example, Processor-SDK RTOS 6.3 has gcc-arm-none-eabi-7-2018-q2-update.r‡…�r ‡}r!‡(jÅj‡jÆj‡ubaubjÇ)�r"‡}r#‡(jÅUjÆj ‡jÎj\ƒjÐjÑjÒ}r$‡(jÔ]jÕ]jÖ]j×]r%‡U!binary-format-conversion-in-linuxr&‡ajÚ]r'‡j’aujÜK¢jÝhjÞ]r(‡(jà)�r)‡}r*‡(jÅX!Binary format conversion in Linuxr+‡jÆj"‡jÎj\ƒjÐjäjÒ}r,‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¢jÝhjÞ]r-‡jçX!Binary format conversion in Linuxr.‡…�r/‡}r0‡(jÅj+‡jÆj)‡ubaubj )�r1‡}r2‡(jÅUjÆj"‡jÎj\ƒjÐj jÒ}r3‡(jU)j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK£jÝhjÞ]r4‡j{)�r5‡}r6‡(jÅXTo convert from .out -> .bin jÆj1‡jÎj\ƒjÐjjÒ}r7‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r8‡jò)�r9‡}r:‡(jÅXTo convert from .out -> .binr;‡jÆj5‡jÎj\ƒjÐjõjÒ}r<‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK£jÞ]r=‡jçXTo convert from .out -> .binr>‡…�r?‡}r@‡(jÅj;‡jÆj9‡ubaubaubaubj)�rA‡}rB‡(jÅX\/bin/arm-none-eabi-objcopy -O binary .out .binjÆj"‡jÎj\ƒjÐjjÒ}rC‡(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM3 jÝhjÞ]rD‡jçX\/bin/arm-none-eabi-objcopy -O binary .out .binrE‡…�rF‡}rG‡(jÅUjÆjA‡ubaubj )�rH‡}rI‡(jÅUjÆj"‡jÎj\ƒjÐj jÒ}rJ‡(jU)jO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK©jÝhjÞ]rK‡j{)�rL‡}rM‡(jÅX5Build tiimage.out. Go to starterware/tools/ti_image/ jÆjH‡jÎj\ƒjÐjjÒ}rN‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rO‡jò)�rP‡}rQ‡(jÅX4Build tiimage.out. Go to starterware/tools/ti_image/rR‡jÆjL‡jÎj\ƒjÐjõjÒ}rS‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK©jÞ]rT‡jçX4Build tiimage.out. Go to starterware/tools/ti_image/rU‡…�rV‡}rW‡(jÅjR‡jÆjP‡ubaubaubaubj)�rX‡}rY‡(jÅXgcc tiimage.c –o tiimage.outjÆj"‡jÎj\ƒjÐjjÒ}rZ‡(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM9 jÝhjÞ]r[‡jçXgcc tiimage.c –o tiimage.outr\‡…�r]‡}r^‡(jÅUjÆjX‡ubaubj )�r_‡}r`‡(jÅUjÆj"‡jÎj\ƒjÐj jÒ}ra‡(jU)jO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK¯jÝhjÞ]rb‡j{)�rc‡}rd‡(jÅX!To convert from .bin -> \_ti.bin jÆj_‡jÎj\ƒjÐjjÒ}re‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rf‡jò)�rg‡}rh‡(jÅX To convert from .bin -> \_ti.binjÆjc‡jÎj\ƒjÐjõjÒ}ri‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¯jÞ]rj‡jçXTo convert from .bin -> _ti.binrk‡…�rl‡}rm‡(jÅX To convert from .bin -> \_ti.binjÆjg‡ubaubaubaubj)�rn‡}ro‡(jÅXLtiimage.out NONE .bin _ti.binjÆj"‡jÎj\ƒjÐjjÒ}rp‡(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM? jÝhjÞ]rq‡jçXLtiimage.out NONE .bin _ti.binrr‡…�rs‡}rt‡(jÅUjÆjn‡ubaubeubjÇ)�ru‡}rv‡(jÅUjÆj ‡jÎj\ƒjÐjÑjÒ}rw‡(jÔ]jÕ]jÖ]j×]rx‡U#binary-format-conversion-in-windowsry‡ajÚ]rz‡jlaujÜK¶jÝhjÞ]r{‡(jà)�r|‡}r}‡(jÅX#Binary format conversion in Windowsr~‡jÆju‡jÎj\ƒjÐjäjÒ}r‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¶jÝhjÞ]r€‡jçX#Binary format conversion in Windowsr�‡…�r‚‡}rƒ‡(jÅj~‡jÆj|‡ubaubj )�r„‡}r…‡(jÅUjÆju‡jÎj\ƒjÐj jÒ}r†‡(jU)j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK·jÝhjÞ]r‡‡j{)�rˆ‡}r‰‡(jÅXTo convert from .out -> .bin jÆj„‡jÎj\ƒjÐjjÒ}rЇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‹‡jò)�rŒ‡}r�‡(jÅXTo convert from .out -> .binrއjÆjˆ‡jÎj\ƒjÐjõjÒ}r�‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK·jÞ]r�‡jçXTo convert from .out -> .binr‘‡…�r’‡}r“‡(jÅjއjÆjŒ‡ubaubaubaubj)�r”‡}r•‡(jÅX\/bin/arm-none-eabi-objcopy -O binary .out .binjÆju‡jÎj\ƒjÐjjÒ}r–‡(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMG jÝhjÞ]r—‡jçX\/bin/arm-none-eabi-objcopy -O binary .out .binr˜‡…�r™‡}rš‡(jÅUjÆj”‡ubaubjò)�r›‡}rœ‡(jÅXn2) To convert from .bin -> \_ti.bin. tiimage.exe is provided as prebuilt binary in starterware/tools/ti_image.jÆju‡jÎj\ƒjÐjõjÒ}r�‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜK½jÝhjÞ]rž‡jçXm2) To convert from .bin -> _ti.bin. tiimage.exe is provided as prebuilt binary in starterware/tools/ti_image.rŸ‡…�r ‡}r¡‡(jÅXn2) To convert from .bin -> \_ti.bin. tiimage.exe is provided as prebuilt binary in starterware/tools/ti_image.jÆj›‡ubaubj)�r¢‡}r£‡(jÅXLtiimage.exe NONE .bin _ti.binjÆju‡jÎj\ƒjÐjjÒ}r¤‡(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMN jÝhjÞ]r¥‡jçXLtiimage.exe NONE .bin _ti.binr¦‡…�r§‡}r¨‡(jÅUjÆj¢‡ubaubjc)�r©‡}rª‡(jÅUjÆju‡jÎj\ƒjÐjfjÒ}r«‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÄjÝhjÞ]r¬‡ji)�r­‡}r®‡(jÅUjlKjÆj©‡jÎj\ƒjÐjÜjÒ}r¯‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubeubjÇ)�r°‡}r±‡(jÅUjÆjJƒjÎj\ƒjÐjÑjÒ}r²‡(jÔ]jÕ]jÖ]j×]r³‡Uboot-modes-supportedr´‡ajÚ]rµ‡jKaujÜKÇjÝhjÞ]r¶‡(jà)�r·‡}r¸‡(jÅXBoot Modes supportedr¹‡jÆj°‡jÎj\ƒjÐjäjÒ}rº‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÇjÝhjÞ]r»‡jçXBoot Modes supportedr¼‡…�r½‡}r¾‡(jÅj¹‡jÆj·‡ubaubjò)�r¿‡}rÀ‡(jÅX]Following are the Boot Modes supported through AM335x/AM437x bootloader for the various EVMs.rÁ‡jÆj°‡jÎj\ƒjÐjõjÒ}r‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÉjÝhjÞ]rÇjçX]Following are the Boot Modes supported through AM335x/AM437x bootloader for the various EVMs.rć…�rŇ}rƇ(jÅjÁ‡jÆj¿‡ubaubjy )�rLJ}rȇ(jÅUjÆj°‡jÎj\ƒjÐjÔ jÒ}rɇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rʇj~ )�rˇ}ṙ(jÅUjÒ}r͇(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjLJjÞ]r·(jƒ )�rχ}rЇ(jÅUjÒ}rч(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjˇjÞ]jÐj‡ ubjƒ )�rÒ‡}rÓ‡(jÅUjÒ}rÔ‡(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjˇjÞ]jÐj‡ ubjƒ )�rÕ‡}rÖ‡(jÅUjÒ}rׇ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjˇjÞ]jÐj‡ ubjƒ )�r؇}rÙ‡(jÅUjÒ}rÚ‡(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjˇjÞ]jÐj‡ ubjƒ )�rÛ‡}r܇(jÅUjÒ}r݇(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjˇjÞ]jÐj‡ ubjƒ )�rÞ‡}r߇(jÅUjÒ}rà‡(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjˇjÞ]jÐj‡ ubj¥ )�rá‡}râ‡(jÅUjÒ}rã‡(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˇjÞ]rä‡(j� )�rå‡}ræ‡(jÅUjÒ}rç‡(jÔ]jÕ]jÖ]j×]jÚ]ujÆjá‡jÞ]rè‡(j• )�ré‡}rê‡(jÅUjÒ}rë‡(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå‡jÞ]jÐj¢ ubj• )�rì‡}rí‡(jÅUjÒ}rî‡(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå‡jÞ]rï‡jò)�rð‡}rñ‡(jÅX **MMCSD**rò‡jÆjì‡jÎj\ƒjÐjõjÒ}ró‡(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÍjÞ]rô‡jÚ)�rõ‡}rö‡(jÅjò‡jÒ}r÷‡(jÔ]jÕ]jÖ]j×]jÚ]ujÆjð‡jÞ]rø‡jçXMMCSDrù‡…�rú‡}rû‡(jÅUjÆjõ‡ubajÐjâubaubajÐj¢ ubj• )�rü‡}rý‡(jÅUjÒ}rþ‡(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå‡jÞ]rÿ‡jò)�rˆ}rˆ(jÅX**NAND**rˆjÆjü‡jÎj\ƒjÐjõjÒ}rˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÍjÞ]rˆjÚ)�rˆ}rˆ(jÅjˆjÒ}rˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆjÞ]rˆjçXNANDr ˆ…�r ˆ}r ˆ(jÅUjÆjˆubajÐjâubaubajÐj¢ ubj• )�r ˆ}r ˆ(jÅUjÒ}rˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå‡jÞ]rˆjò)�rˆ}rˆ(jÅX **McSPI**rˆjÆj ˆjÎj\ƒjÐjõjÒ}rˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÍjÞ]rˆjÚ)�rˆ}rˆ(jÅjˆjÒ}rˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆjÞ]rˆjçXMcSPIrˆ…�rˆ}rˆ(jÅUjÆjˆubajÐjâubaubajÐj¢ ubj• )�rˆ}rˆ(jÅUjÒ}rˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå‡jÞ]rˆjò)�r ˆ}r!ˆ(jÅX**QSPI**r"ˆjÆjˆjÎj\ƒjÐjõjÒ}r#ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÍjÞ]r$ˆjÚ)�r%ˆ}r&ˆ(jÅj"ˆjÒ}r'ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ˆjÞ]r(ˆjçXQSPIr)ˆ…�r*ˆ}r+ˆ(jÅUjÆj%ˆubajÐjâubaubajÐj¢ ubj• )�r,ˆ}r-ˆ(jÅUjÒ}r.ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå‡jÞ]r/ˆjò)�r0ˆ}r1ˆ(jÅX**UART**r2ˆjÆj,ˆjÎj\ƒjÐjõjÒ}r3ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÍjÞ]r4ˆjÚ)�r5ˆ}r6ˆ(jÅj2ˆjÒ}r7ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0ˆjÞ]r8ˆjçXUARTr9ˆ…�r:ˆ}r;ˆ(jÅUjÆj5ˆubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r<ˆ}r=ˆ(jÅUjÒ}r>ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjá‡jÞ]r?ˆ(j• )�r@ˆ}rAˆ(jÅUjÒ}rBˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<ˆjÞ]rCˆjò)�rDˆ}rEˆ(jÅX**AM335x GPEVM**rFˆjÆj@ˆjÎj\ƒjÐjõjÒ}rGˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÞ]rHˆjÚ)�rIˆ}rJˆ(jÅjFˆjÒ}rKˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjDˆjÞ]rLˆjçX AM335x GPEVMrMˆ…�rNˆ}rOˆ(jÅUjÆjIˆubajÐjâubaubajÐj¢ ubj• )�rPˆ}rQˆ(jÅUjÒ}rRˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<ˆjÞ]rSˆjò)�rTˆ}rUˆ(jÅXYESrVˆjÆjPˆjÎj\ƒjÐjõjÒ}rWˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÞ]rXˆjçXYESrYˆ…�rZˆ}r[ˆ(jÅjVˆjÆjTˆubaubajÐj¢ ubj• )�r\ˆ}r]ˆ(jÅUjÒ}r^ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<ˆjÞ]r_ˆjò)�r`ˆ}raˆ(jÅXYESrbˆjÆj\ˆjÎj\ƒjÐjõjÒ}rcˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÞ]rdˆjçXYESreˆ…�rfˆ}rgˆ(jÅjbˆjÆj`ˆubaubajÐj¢ ubj• )�rhˆ}riˆ(jÅUjÒ}rjˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<ˆjÞ]rkˆjò)�rlˆ}rmˆ(jÅXYESrnˆjÆjhˆjÎj\ƒjÐjõjÒ}roˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÞ]rpˆjçXYESrqˆ…�rrˆ}rsˆ(jÅjnˆjÆjlˆubaubajÐj¢ ubj• )�rtˆ}ruˆ(jÅUjÒ}rvˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<ˆjÞ]rwˆjò)�rxˆ}ryˆ(jÅXNOrzˆjÆjtˆjÎj\ƒjÐjõjÒ}r{ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÞ]r|ˆjçXNOr}ˆ…�r~ˆ}rˆ(jÅjzˆjÆjxˆubaubajÐj¢ ubj• )�r€ˆ}r�ˆ(jÅUjÒ}r‚ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<ˆjÞ]rƒˆjò)�r„ˆ}r…ˆ(jÅXYESr†ˆjÆj€ˆjÎj\ƒjÐjõjÒ}r‡ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÞ]rˆˆjçXYESr‰ˆ…�rŠˆ}r‹ˆ(jÅj†ˆjÆj„ˆubaubajÐj¢ ubejÐj£ ubj� )�rŒˆ}r�ˆ(jÅUjÒ}rŽˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjá‡jÞ]r�ˆ(j• )�r�ˆ}r‘ˆ(jÅUjÒ}r’ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒˆjÞ]r“ˆjò)�r”ˆ}r•ˆ(jÅX**AM335x ICEv2**r–ˆjÆj�ˆjÎj\ƒjÐjõjÒ}r—ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÒjÞ]r˜ˆjÚ)�r™ˆ}ršˆ(jÅj–ˆjÒ}r›ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”ˆjÞ]rœˆjçX AM335x ICEv2r�ˆ…�ržˆ}rŸˆ(jÅUjÆj™ˆubajÐjâubaubajÐj¢ ubj• )�r ˆ}r¡ˆ(jÅUjÒ}r¢ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒˆjÞ]r£ˆjò)�r¤ˆ}r¥ˆ(jÅXYESr¦ˆjÆj ˆjÎj\ƒjÐjõjÒ}r§ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÒjÞ]r¨ˆjçXYESr©ˆ…�rªˆ}r«ˆ(jÅj¦ˆjÆj¤ˆubaubajÐj¢ ubj• )�r¬ˆ}r­ˆ(jÅUjÒ}r®ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒˆjÞ]r¯ˆjò)�r°ˆ}r±ˆ(jÅXNOr²ˆjÆj¬ˆjÎj\ƒjÐjõjÒ}r³ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÒjÞ]r´ˆjçXNOrµˆ…�r¶ˆ}r·ˆ(jÅj²ˆjÆj°ˆubaubajÐj¢ ubj• )�r¸ˆ}r¹ˆ(jÅUjÒ}rºˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒˆjÞ]r»ˆjò)�r¼ˆ}r½ˆ(jÅXYESr¾ˆjÆj¸ˆjÎj\ƒjÐjõjÒ}r¿ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÒjÞ]rÀˆjçXYESrÁˆ…�rˆ}rÈ(jÅj¾ˆjÆj¼ˆubaubajÐj¢ ubj• )�rĈ}rň(jÅUjÒ}rƈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒˆjÞ]rLjjò)�rȈ}rɈ(jÅXNOrʈjÆjĈjÎj\ƒjÐjõjÒ}rˈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÒjÞ]r̈jçXNOr͈…�rΈ}rψ(jÅjʈjÆjȈubaubajÐj¢ ubj• )�rЈ}rш(jÅUjÒ}rÒˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒˆjÞ]rÓˆjò)�rÔˆ}rÕˆ(jÅXNOrÖˆjÆjЈjÎj\ƒjÐjõjÒ}r׈(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÒjÞ]r؈jçXNOrÙˆ…�rÚˆ}rÛˆ(jÅjÖˆjÆjÔˆubaubajÐj¢ ubejÐj£ ubj� )�r܈}r݈(jÅUjÒ}rÞˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjá‡jÞ]r߈(j• )�ràˆ}ráˆ(jÅUjÒ}râˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj܈jÞ]rãˆjò)�räˆ}råˆ(jÅX**AM335x StarterKi t**ræˆjÆjàˆjÎj\ƒjÐjõjÒ}rçˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÕjÞ]rèˆjÚ)�réˆ}rêˆ(jÅjæˆjÒ}rëˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjäˆjÞ]rìˆjçXAM335x StarterKi tr툅�rîˆ}rïˆ(jÅUjÆjéˆubajÐjâubaubajÐj¢ ubj• )�rðˆ}rñˆ(jÅUjÒ}ròˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj܈jÞ]róˆjò)�rôˆ}rõˆ(jÅXYESröˆjÆjðˆjÎj\ƒjÐjõjÒ}r÷ˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÕjÞ]røˆjçXYESrùˆ…�rúˆ}rûˆ(jÅjöˆjÆjôˆubaubajÐj¢ ubj• )�rüˆ}rýˆ(jÅUjÒ}rþˆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj܈jÞ]rÿˆjò)�r‰}r‰(jÅXNOr‰jÆjüˆjÎj\ƒjÐjõjÒ}r‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÕjÞ]r‰jçXNOr‰…�r‰}r‰(jÅj‰jÆj‰ubaubajÐj¢ ubj• )�r‰}r ‰(jÅUjÒ}r ‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj܈jÞ]r ‰jò)�r ‰}r ‰(jÅXNOr‰jÆj‰jÎj\ƒjÐjõjÒ}r‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÕjÞ]r‰jçXNOr‰…�r‰}r‰(jÅj‰jÆj ‰ubaubajÐj¢ ubj• )�r‰}r‰(jÅUjÒ}r‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj܈jÞ]r‰jò)�r‰}r‰(jÅXNOr‰jÆj‰jÎj\ƒjÐjõjÒ}r‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÕjÞ]r‰jçXNOr‰…�r‰}r‰(jÅj‰jÆj‰ubaubajÐj¢ ubj• )�r ‰}r!‰(jÅUjÒ}r"‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj܈jÞ]r#‰jò)�r$‰}r%‰(jÅXYESr&‰jÆj ‰jÎj\ƒjÐjõjÒ}r'‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÕjÞ]r(‰jçXYESr)‰…�r*‰}r+‰(jÅj&‰jÆj$‰ubaubajÐj¢ ubejÐj£ ubj� )�r,‰}r-‰(jÅUjÒ}r.‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆjá‡jÞ]r/‰(j• )�r0‰}r1‰(jÅUjÒ}r2‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,‰jÞ]r3‰jò)�r4‰}r5‰(jÅX**AM335x BeagleBon eBlack**r6‰jÆj0‰jÎj\ƒjÐjõjÒ}r7‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙjÞ]r8‰jÚ)�r9‰}r:‰(jÅj6‰jÒ}r;‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj4‰jÞ]r<‰jçXAM335x BeagleBon eBlackr=‰…�r>‰}r?‰(jÅUjÆj9‰ubajÐjâubaubajÐj¢ ubj• )�r@‰}rA‰(jÅUjÒ}rB‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,‰jÞ]rC‰jò)�rD‰}rE‰(jÅXYESrF‰jÆj@‰jÎj\ƒjÐjõjÒ}rG‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙjÞ]rH‰jçXYESrI‰…�rJ‰}rK‰(jÅjF‰jÆjD‰ubaubajÐj¢ ubj• )�rL‰}rM‰(jÅUjÒ}rN‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,‰jÞ]rO‰jò)�rP‰}rQ‰(jÅXNOrR‰jÆjL‰jÎj\ƒjÐjõjÒ}rS‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙjÞ]rT‰jçXNOrU‰…�rV‰}rW‰(jÅjR‰jÆjP‰ubaubajÐj¢ ubj• )�rX‰}rY‰(jÅUjÒ}rZ‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,‰jÞ]r[‰jò)�r\‰}r]‰(jÅXNOr^‰jÆjX‰jÎj\ƒjÐjõjÒ}r_‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙjÞ]r`‰jçXNOra‰…�rb‰}rc‰(jÅj^‰jÆj\‰ubaubajÐj¢ ubj• )�rd‰}re‰(jÅUjÒ}rf‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,‰jÞ]rg‰jò)�rh‰}ri‰(jÅXNOrj‰jÆjd‰jÎj\ƒjÐjõjÒ}rk‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙjÞ]rl‰jçXNOrm‰…�rn‰}ro‰(jÅjj‰jÆjh‰ubaubajÐj¢ ubj• )�rp‰}rq‰(jÅUjÒ}rr‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,‰jÞ]rs‰jò)�rt‰}ru‰(jÅXYESrv‰jÆjp‰jÎj\ƒjÐjõjÒ}rw‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙjÞ]rx‰jçXYESry‰…�rz‰}r{‰(jÅjv‰jÆjt‰ubaubajÐj¢ ubejÐj£ ubj� )�r|‰}r}‰(jÅUjÒ}r~‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆjá‡jÞ]r‰(j• )�r€‰}r�‰(jÅUjÒ}r‚‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|‰jÞ]rƒ‰jò)�r„‰}r…‰(jÅX**AMIC110 ICE**r†‰jÆj€‰jÎj\ƒjÐjõjÒ}r‡‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÝjÞ]rˆ‰jÚ)�r‰‰}rЉ(jÅj†‰jÒ}r‹‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj„‰jÞ]rŒ‰jçX AMIC110 ICEr�‰…�rމ}r�‰(jÅUjÆj‰‰ubajÐjâubaubajÐj¢ ubj• )�r�‰}r‘‰(jÅUjÒ}r’‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|‰jÞ]r“‰jò)�r”‰}r•‰(jÅXNOr–‰jÆj�‰jÎj\ƒjÐjõjÒ}r—‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÝjÞ]r˜‰jçXNOr™‰…�rš‰}r›‰(jÅj–‰jÆj”‰ubaubajÐj¢ ubj• )�rœ‰}r�‰(jÅUjÒ}rž‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|‰jÞ]rŸ‰jò)�r ‰}r¡‰(jÅXNOr¢‰jÆjœ‰jÎj\ƒjÐjõjÒ}r£‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÝjÞ]r¤‰jçXNOr¥‰…�r¦‰}r§‰(jÅj¢‰jÆj ‰ubaubajÐj¢ ubj• )�r¨‰}r©‰(jÅUjÒ}rª‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|‰jÞ]r«‰jò)�r¬‰}r­‰(jÅXYESr®‰jÆj¨‰jÎj\ƒjÐjõjÒ}r¯‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÝjÞ]r°‰jçXYESr±‰…�r²‰}r³‰(jÅj®‰jÆj¬‰ubaubajÐj¢ ubj• )�r´‰}rµ‰(jÅUjÒ}r¶‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|‰jÞ]r·‰jò)�r¸‰}r¹‰(jÅXNOrº‰jÆj´‰jÎj\ƒjÐjõjÒ}r»‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÝjÞ]r¼‰jçXNOr½‰…�r¾‰}r¿‰(jÅjº‰jÆj¸‰ubaubajÐj¢ ubj• )�rÀ‰}rÁ‰(jÅUjÒ}r‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj|‰jÞ]rÉjò)�rĉ}rʼn(jÅXYESrƉjÆjÀ‰jÎj\ƒjÐjõjÒ}rlj(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÝjÞ]rȉjçXYESrɉ…�rʉ}rˉ(jÅjƉjÆjĉubaubajÐj¢ ubejÐj£ ubj� )�r̉}r͉(jÅUjÒ}rΉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjá‡jÞ]rω(j• )�rЉ}rщ(jÅUjÒ}rÒ‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj̉jÞ]rÓ‰jò)�rÔ‰}rÕ‰(jÅX**AM437x GPEVM**rÖ‰jÆjЉjÎj\ƒjÐjõjÒ}r׉(jÔ]jÕ]jÖ]j×]jÚ]ujÜKàjÞ]r؉jÚ)�rÙ‰}rÚ‰(jÅjÖ‰jÒ}rÛ‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÔ‰jÞ]r܉jçX AM437x GPEVMr݉…�rÞ‰}r߉(jÅUjÆjÙ‰ubajÐjâubaubajÐj¢ ubj• )�rà‰}rá‰(jÅUjÒ}râ‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj̉jÞ]rã‰jò)�rä‰}rå‰(jÅXYESræ‰jÆjà‰jÎj\ƒjÐjõjÒ}rç‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKàjÞ]rè‰jçXYESr鉅�rê‰}rë‰(jÅjæ‰jÆjä‰ubaubajÐj¢ ubj• )�rì‰}rí‰(jÅUjÒ}rî‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj̉jÞ]rï‰jò)�rð‰}rñ‰(jÅXNOrò‰jÆjì‰jÎj\ƒjÐjõjÒ}ró‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKàjÞ]rô‰jçXNOrõ‰…�rö‰}r÷‰(jÅjò‰jÆjð‰ubaubajÐj¢ ubj• )�rø‰}rù‰(jÅUjÒ}rú‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆj̉jÞ]rû‰jò)�rü‰}rý‰(jÅXNOrþ‰jÆjø‰jÎj\ƒjÐjõjÒ}rÿ‰(jÔ]jÕ]jÖ]j×]jÚ]ujÜKàjÞ]rŠjçXNOrŠ…�rŠ}rŠ(jÅjþ‰jÆjü‰ubaubajÐj¢ ubj• )�rŠ}rŠ(jÅUjÒ}rŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj̉jÞ]rŠjò)�rŠ}r Š(jÅXNOr ŠjÆjŠjÎj\ƒjÐjõjÒ}r Š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKàjÞ]r ŠjçXNOr Š…�rŠ}rŠ(jÅj ŠjÆjŠubaubajÐj¢ ubj• )�rŠ}rŠ(jÅUjÒ}rŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj̉jÞ]rŠjò)�rŠ}rŠ(jÅXYESrŠjÆjŠjÎj\ƒjÐjõjÒ}rŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKàjÞ]rŠjçXYESrŠ…�rŠ}rŠ(jÅjŠjÆjŠubaubajÐj¢ ubejÐj£ ubj� )�rŠ}rŠ(jÅUjÒ}rŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjá‡jÞ]rŠ(j• )�r Š}r!Š(jÅUjÒ}r"Š(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠjÞ]r#Šjò)�r$Š}r%Š(jÅX**AM437x IDK**r&ŠjÆj ŠjÎj\ƒjÐjõjÒ}r'Š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÞ]r(ŠjÚ)�r)Š}r*Š(jÅj&ŠjÒ}r+Š(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$ŠjÞ]r,ŠjçX AM437x IDKr-Š…�r.Š}r/Š(jÅUjÆj)ŠubajÐjâubaubajÐj¢ ubj• )�r0Š}r1Š(jÅUjÒ}r2Š(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠjÞ]r3Šjò)�r4Š}r5Š(jÅXYESr6ŠjÆj0ŠjÎj\ƒjÐjõjÒ}r7Š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÞ]r8ŠjçXYESr9Š…�r:Š}r;Š(jÅj6ŠjÆj4ŠubaubajÐj¢ ubj• )�r<Š}r=Š(jÅUjÒ}r>Š(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠjÞ]r?Šjò)�r@Š}rAŠ(jÅXNOrBŠjÆj<ŠjÎj\ƒjÐjõjÒ}rCŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÞ]rDŠjçXNOrEŠ…�rFŠ}rGŠ(jÅjBŠjÆj@ŠubaubajÐj¢ ubj• )�rHŠ}rIŠ(jÅUjÒ}rJŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠjÞ]rKŠjò)�rLŠ}rMŠ(jÅXNOrNŠjÆjHŠjÎj\ƒjÐjõjÒ}rOŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÞ]rPŠjçXNOrQŠ…�rRŠ}rSŠ(jÅjNŠjÆjLŠubaubajÐj¢ ubj• )�rTŠ}rUŠ(jÅUjÒ}rVŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠjÞ]rWŠjò)�rXŠ}rYŠ(jÅXYESrZŠjÆjTŠjÎj\ƒjÐjõjÒ}r[Š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÞ]r\ŠjçXYESr]Š…�r^Š}r_Š(jÅjZŠjÆjXŠubaubajÐj¢ ubj• )�r`Š}raŠ(jÅUjÒ}rbŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠjÞ]rcŠjò)�rdŠ}reŠ(jÅXNOrfŠjÆj`ŠjÎj\ƒjÐjõjÒ}rgŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÞ]rhŠjçXNOriŠ…�rjŠ}rkŠ(jÅjfŠjÆjdŠubaubajÐj¢ ubejÐj£ ubj� )�rlŠ}rmŠ(jÅUjÒ}rnŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjá‡jÞ]roŠ(j• )�rpŠ}rqŠ(jÅUjÒ}rrŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlŠjÞ]rsŠjò)�rtŠ}ruŠ(jÅX**AM437x StarterKi t**rvŠjÆjpŠjÎj\ƒjÐjõjÒ}rwŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKæjÞ]rxŠjÚ)�ryŠ}rzŠ(jÅjvŠjÒ}r{Š(jÔ]jÕ]jÖ]j×]jÚ]ujÆjtŠjÞ]r|ŠjçXAM437x StarterKi tr}Š…�r~Š}rŠ(jÅUjÆjyŠubajÐjâubaubajÐj¢ ubj• )�r€Š}r�Š(jÅUjÒ}r‚Š(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlŠjÞ]rƒŠjò)�r„Š}r…Š(jÅXYESr†ŠjÆj€ŠjÎj\ƒjÐjõjÒ}r‡Š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKæjÞ]rˆŠjçXYESr‰Š…�rŠŠ}r‹Š(jÅj†ŠjÆj„ŠubaubajÐj¢ ubj• )�rŒŠ}r�Š(jÅUjÒ}rŽŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlŠjÞ]r�Šjò)�r�Š}r‘Š(jÅXNOr’ŠjÆjŒŠjÎj\ƒjÐjõjÒ}r“Š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKæjÞ]r”ŠjçXNOr•Š…�r–Š}r—Š(jÅj’ŠjÆj�ŠubaubajÐj¢ ubj• )�r˜Š}r™Š(jÅUjÒ}ršŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlŠjÞ]r›Šjò)�rœŠ}r�Š(jÅXNOržŠjÆj˜ŠjÎj\ƒjÐjõjÒ}rŸŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKæjÞ]r ŠjçXNOr¡Š…�r¢Š}r£Š(jÅjžŠjÆjœŠubaubajÐj¢ ubj• )�r¤Š}r¥Š(jÅUjÒ}r¦Š(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlŠjÞ]r§Šjò)�r¨Š}r©Š(jÅXNOrªŠjÆj¤ŠjÎj\ƒjÐjõjÒ}r«Š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKæjÞ]r¬ŠjçXNOr­Š…�r®Š}r¯Š(jÅjªŠjÆj¨ŠubaubajÐj¢ ubj• )�r°Š}r±Š(jÅUjÒ}r²Š(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlŠjÞ]r³Šjò)�r´Š}rµŠ(jÅXNOr¶ŠjÆj°ŠjÎj\ƒjÐjõjÒ}r·Š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKæjÞ]r¸ŠjçXNOr¹Š…�rºŠ}r»Š(jÅj¶ŠjÆj´ŠubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjc)�r¼Š}r½Š(jÅUjÆj°‡jÎj\ƒjÐjfjÒ}r¾Š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKëjÝhjÞ]r¿Šji)�rÀŠ}rÁŠ(jÅUjlKjÆj¼ŠjÎj\ƒjÐjÜjÒ}rŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�rÊ}rÄŠ(jÅUjÆjJƒjÎj\ƒjÐjÑjÒ}rÅŠ(jÔ]jÕ]jÖ]j×]rÆŠUbuilding-the-bootloaderrÇŠajÚ]rÈŠhƒaujÜKîjÝhjÞ]rÉŠ(jà)�rÊŠ}rËŠ(jÅXBuilding the BootloaderrÌŠjÆjÊjÎj\ƒjÐjäjÒ}rÍŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKîjÝhjÞ]rΊjçXBuilding the BootloaderrÏŠ…�rЊ}rÑŠ(jÅjÌŠjÆjÊŠubaubj )�rÒŠ}rÓŠ(jÅUjÆjÊjÎj\ƒjÐj# jÒ}rÔŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÕŠ(j& )�rÖŠ}r׊(jÅX…**Pre-requisite:** Setup SDK build environment as described in article `Setup_Environment `__ jÆjÒŠjÎj\ƒjÐj) jÒ}rØŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKñjÞ]rÙŠ(j, )�rÚŠ}rÛŠ(jÅXF**Pre-requisite:** Setup SDK build environment as described in articlerÜŠjÆjÖŠjÎj\ƒjÐj0 jÒ}rÝŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKñjÞ]rÞŠ(jÚ)�rߊ}ràŠ(jÅX**Pre-requisite:**jÒ}ráŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÚŠjÞ]râŠjçXPre-requisite:r㊅�räŠ}råŠ(jÅUjÆjߊubajÐjâubjçX4 Setup SDK build environment as described in articler抅�rçŠ}rèŠ(jÅX4 Setup SDK build environment as described in articlejÆjÚŠubeubj6 )�réŠ}rêŠ(jÅUjÒ}rëŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖŠjÞ]rìŠjò)�ríŠ}rîŠ(jÅX=`Setup_Environment `__rïŠjÆjéŠjÎj\ƒjÐjõjÒ}rðŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKñjÞ]rñŠjû)�ròŠ}róŠ(jÅjïŠjÒ}rôŠ(UnameXSetup_EnvironmentjX%index_overview.html#setup-environmentj×]jÖ]jÔ]jÕ]jÚ]ujÆjíŠjÞ]rõŠjçXSetup_EnvironmentröŠ…�r÷Š}røŠ(jÅUjÆjòŠubajÐjÿubaubajÐjQ ubeubj& )�rùŠ}rúŠ(jÅX‡Change working directory to the packages/ti/starterware directory cd /pdk__/packages/ti/starterware jÆjÒŠjÎj\ƒjÐj) jÒ}rûŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKôjÝhjÞ]rüŠ(j, )�rýŠ}rþŠ(jÅXAChange working directory to the packages/ti/starterware directoryrÿŠjÆjùŠjÎj\ƒjÐj0 jÒ}r‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜKôjÞ]r‹jçXAChange working directory to the packages/ti/starterware directoryr‹…�r‹}r‹(jÅjÿŠjÆjýŠubaubj6 )�r‹}r‹(jÅUjÒ}r‹(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùŠjÞ]r‹jò)�r ‹}r ‹(jÅXDcd /pdk__/packages/ti/starterwarer ‹jÆj‹jÎj\ƒjÐjõjÒ}r ‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜKôjÞ]r ‹jçXDcd /pdk__/packages/ti/starterwarer‹…�r‹}r‹(jÅj ‹jÆj ‹ubaubajÐjQ ubeubeubjò)�r‹}r‹(jÅX£NOTE: For the starterware build targets below, the parallel make option (-j) is not supported. Please ensure that the below are built without parallel make option.r‹jÆjÊjÎj\ƒjÐjõjÒ}r‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜKöjÝhjÞ]r‹jçX£NOTE: For the starterware build targets below, the parallel make option (-j) is not supported. Please ensure that the below are built without parallel make option.r‹…�r‹}r‹(jÅj‹jÆj‹ubaubjÇ)�r‹}r‹(jÅUjÆjÊjÎj\ƒjÐjÑjÒ}r‹(jÔ]jÕ]jÖ]j×]r‹Unormal-operation-of-bootloaderr‹ajÚ]r‹h\aujÜKùjÝhjÞ]r‹(jà)�r ‹}r!‹(jÅXNormal Operation of Bootloader:r"‹jÆj‹jÎj\ƒjÐjäjÒ}r#‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜKùjÝhjÞ]r$‹jçXNormal Operation of Bootloader:r%‹…�r&‹}r'‹(jÅj"‹jÆj ‹ubaubjò)�r(‹}r)‹(jÅXBootloading an application from flash into DDR memory as in case of TI evaluation platforms is described as normal operation mode for the bootloader. This is the default behavior of the bootloader and can be built using the following command in starterware.r*‹jÆj‹jÎj\ƒjÐjõjÒ}r+‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜKûjÝhjÞ]r,‹jçXBootloading an application from flash into DDR memory as in case of TI evaluation platforms is described as normal operation mode for the bootloader. This is the default behavior of the bootloader and can be built using the following command in starterware.r-‹…�r.‹}r/‹(jÅj*‹jÆj(‹ubaubj)�r0‹}r1‹(jÅXigmake bootloader BUILDCFG=boot BOOTMODE= PLATFORM= PROFILE= -s KW_BUILD=nojÆj‹jÎj\ƒjÐjjÒ}r2‹(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMŽ jÝhjÞ]r3‹jçXigmake bootloader BUILDCFG=boot BOOTMODE= PLATFORM= PROFILE= -s KW_BUILD=nor4‹…�r5‹}r6‹(jÅUjÆj0‹ubaubjt)�r7‹}r8‹(jÅUjÆj‹jÎj\ƒjÐjwjÒ}r9‹(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]r:‹(j{)�r;‹}r<‹(jÅXcBOOT_MODE: mcspi, nand, qspi, mmcsd, uart (Check supported boot modes for your evaluation platform)jÆj7‹jÎj\ƒjÐjjÒ}r=‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r>‹jò)�r?‹}r@‹(jÅXcBOOT_MODE: mcspi, nand, qspi, mmcsd, uart (Check supported boot modes for your evaluation platform)rA‹jÆj;‹jÎj\ƒjÐjõjÒ}rB‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rC‹jçXcBOOT_MODE: mcspi, nand, qspi, mmcsd, uart (Check supported boot modes for your evaluation platform)rD‹…�rE‹}rF‹(jÅjA‹jÆj?‹ubaubaubj{)�rG‹}rH‹(jÅX_EVM: am335x-evm (for all AM335x/AMIC110 based boards), am43xx-evm (for all AM43xx based boards)rI‹jÆj7‹jÎj\ƒjÐjjÒ}rJ‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rK‹jò)�rL‹}rM‹(jÅjI‹jÆjG‹jÎj\ƒjÐjõjÒ}rN‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rO‹jçX_EVM: am335x-evm (for all AM335x/AMIC110 based boards), am43xx-evm (for all AM43xx based boards)rP‹…�rQ‹}rR‹(jÅjI‹jÆjL‹ubaubaubj{)�rS‹}rT‹(jÅXBUILD_PROFILE: debug, release jÆj7‹jÎj\ƒjÐjjÒ}rU‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rV‹jò)�rW‹}rX‹(jÅXBUILD_PROFILE: debug, releaserY‹jÆjS‹jÎj\ƒjÐjõjÒ}rZ‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r[‹jçXBUILD_PROFILE: debug, releaser\‹…�r]‹}r^‹(jÅjY‹jÆjW‹ubaubaubeubeubjÇ)�r_‹}r`‹(jÅUjÆjÊjÎj\ƒjÐjÑjÒ}ra‹(jÔ]jÕ]jÖ]j×]rb‹Uadditional-build-optionsrc‹ajÚ]rd‹j¼aujÜM jÝhjÞ]re‹(jà)�rf‹}rg‹(jÅXAdditional Build Optionsrh‹jÆj_‹jÎj\ƒjÐjäjÒ}ri‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rj‹jçXAdditional Build Optionsrk‹…�rl‹}rm‹(jÅjh‹jÆjf‹ubaubjò)�rn‹}ro‹(jÅXYThe build options listed below are currently supported only for AMIC110/AM335x ICE Users.rp‹jÆj_‹jÎj\ƒjÐjõjÒ}rq‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rr‹jçXYThe build options listed below are currently supported only for AMIC110/AM335x ICE Users.rs‹…�rt‹}ru‹(jÅjp‹jÆjn‹ubaubjt)�rv‹}rw‹(jÅUjÆj_‹jÎj\ƒjÐjwjÒ}rx‹(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]ry‹j{)�rz‹}r{‹(jÅX$**DDR less Application boot setup** jÆjv‹jÎj\ƒjÐjjÒ}r|‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r}‹jò)�r~‹}r‹(jÅX#**DDR less Application boot setup**r€‹jÆjz‹jÎj\ƒjÐjõjÒ}r�‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r‚‹jÚ)�rƒ‹}r„‹(jÅj€‹jÒ}r…‹(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~‹jÞ]r†‹jçXDDR less Application boot setupr‡‹…�rˆ‹}r‰‹(jÅUjÆjƒ‹ubajÐjâubaubaubaubj)�rŠ‹}r‹‹(jÅXßgmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=debug -s KW_BUILD=no USE_DDR=no gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=release -s KW_BUILD=no USE_DDR=nojÆj_‹jÎj\ƒjÐjjÒ}rŒ‹(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMž jÝhjÞ]r�‹jçXßgmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=debug -s KW_BUILD=no USE_DDR=no gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=release -s KW_BUILD=no USE_DDR=norŽ‹…�r�‹}r�‹(jÅUjÆjŠ‹ubaubjò)�r‘‹}r’‹(jÅX�This option builds an ultra light weight (<10 KB) bootloader for cost optimized application that doesn't use external DDR memory.r“‹jÆj_‹jÎj\ƒjÐjõjÒ}r”‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r•‹jçX�This option builds an ultra light weight (<10 KB) bootloader for cost optimized application that doesn't use external DDR memory.r–‹…�r—‹}r˜‹(jÅj“‹jÆj‘‹ubaubjt)�r™‹}rš‹(jÅUjÆj_‹jÎj\ƒjÐjwjÒ}r›‹(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]rœ‹j{)�r�‹}rž‹(jÅX**PRU/ICSS Enable in SBL** jÆj™‹jÎj\ƒjÐjjÒ}rŸ‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r ‹jò)�r¡‹}r¢‹(jÅX**PRU/ICSS Enable in SBL**r£‹jÆj�‹jÎj\ƒjÐjõjÒ}r¤‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r¥‹jÚ)�r¦‹}r§‹(jÅj£‹jÒ}r¨‹(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡‹jÞ]r©‹jçXPRU/ICSS Enable in SBLrª‹…�r«‹}r¬‹(jÅUjÆj¦‹ubajÐjâubaubaubaubj)�r­‹}r®‹(jÅXÝgmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=am335x-evm PROFILE=debug -s KW_BUILD=no ENABLE_PRU=yes gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=am335x-evm PROFILE=release -s KW_BUILD=no ENABLE_PRU=yesjÆj_‹jÎj\ƒjÐjjÒ}r¯‹(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¨ jÝhjÞ]r°‹jçXÝgmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=am335x-evm PROFILE=debug -s KW_BUILD=no ENABLE_PRU=yes gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=am335x-evm PROFILE=release -s KW_BUILD=no ENABLE_PRU=yesr±‹…�r²‹}r³‹(jÅUjÆj­‹ubaubjò)�r´‹}rµ‹(jÅX¿This feature is required in application that need to quick wake up of ICSS/PRU cores. The PRU cores can be woken up and loaded from the SBL by combining the ENABLE_PRU and BIN_LOAD arguments.r¶‹jÆj_‹jÎj\ƒjÐjõjÒ}r·‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r¸‹jçX¿This feature is required in application that need to quick wake up of ICSS/PRU cores. The PRU cores can be woken up and loaded from the SBL by combining the ENABLE_PRU and BIN_LOAD arguments.r¹‹…�rº‹}r»‹(jÅj¶‹jÆj´‹ubaubjt)�r¼‹}r½‹(jÅUjÆj_‹jÎj\ƒjÐjwjÒ}r¾‹(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM#jÝhjÞ]r¿‹j{)�rÀ‹}rÁ‹(jÅX(**Load additional binaries from flash** jÆj¼‹jÎj\ƒjÐjjÒ}r‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rËjò)�rÄ‹}rÅ‹(jÅX'**Load additional binaries from flash**rÆ‹jÆjÀ‹jÎj\ƒjÐjõjÒ}rÇ‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM#jÞ]rÈ‹jÚ)�rÉ‹}rÊ‹(jÅjÆ‹jÒ}rË‹(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄ‹jÞ]rÌ‹jçX#Load additional binaries from flashrÍ‹…�r΋}rÏ‹(jÅUjÆjÉ‹ubajÐjâubaubaubaubj)�rЋ}rÑ‹(jÅXÙgmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=am335x-evm PROFILE=debug -s KW_BUILD=no BIN_LOAD=yes gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=am335x-evm PROFILE=release -s KW_BUILD=no BIN_LOAD=yesjÆj_‹jÎj\ƒjÐjjÒ}rÒ‹(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM³ jÝhjÞ]rÓ‹jçXÙgmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=am335x-evm PROFILE=debug -s KW_BUILD=no BIN_LOAD=yes gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=am335x-evm PROFILE=release -s KW_BUILD=no BIN_LOAD=yesrÔ‹…�rÕ‹}rÖ‹(jÅUjÆjЋubaubjò)�r׋}rØ‹(jÅXÿThe location of binaries in offset is configured using sbl_flash_offset_cfg.h in the bootloader source. Users are required to use TIIMAGE tool to append an header to the binary so that the bootloader knows the location and size of the binary to be loaded.rÙ‹jÆj_‹jÎj\ƒjÐjõjÒ}rÚ‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM*jÝhjÞ]rÛ‹jçXÿThe location of binaries in offset is configured using sbl_flash_offset_cfg.h in the bootloader source. Users are required to use TIIMAGE tool to append an header to the binary so that the bootloader knows the location and size of the binary to be loaded.rÜ‹…�rÝ‹}rÞ‹(jÅjÙ‹jÆj׋ubaubeubjÇ)�rß‹}rà‹(jÅUjÆjÊjÎj\ƒjÐjÑjÒ}rá‹(jÔ]jÕ]jÖ]j×]râ‹U3special-build-option-for-industrial-ddrless-bootingrã‹ajÚ]rä‹hÊaujÜM0jÝhjÞ]rå‹(jà)�ræ‹}rç‹(jÅX3Special Build Option for Industrial DDRless Bootingrè‹jÆjß‹jÎj\ƒjÐjäjÒ}ré‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM0jÝhjÞ]rê‹jçX3Special Build Option for Industrial DDRless Bootingrë‹…�rì‹}rí‹(jÅjè‹jÆjæ‹ubaubjò)�rî‹}rï‹(jÅXÄThe AMIC110 DDRLESS platform provides a superset flag to enable all the above features and build the bootloader. The superset build is invoked using **BUILD_ICSS_DDRLESS_BOOT=yes** as shown below:jÆjß‹jÎj\ƒjÐjõjÒ}rð‹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM2jÝhjÞ]rñ‹(jçX•The AMIC110 DDRLESS platform provides a superset flag to enable all the above features and build the bootloader. The superset build is invoked using rò‹…�ró‹}rô‹(jÅX•The AMIC110 DDRLESS platform provides a superset flag to enable all the above features and build the bootloader. The superset build is invoked using jÆjî‹ubjÚ)�rõ‹}rö‹(jÅX**BUILD_ICSS_DDRLESS_BOOT=yes**jÒ}r÷‹(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî‹jÞ]rø‹jçXBUILD_ICSS_DDRLESS_BOOT=yesrù‹…�rú‹}rû‹(jÅUjÆjõ‹ubajÐjâubjçX as shown below:rü‹…�rý‹}rþ‹(jÅX as shown below:jÆjî‹ubeubj)�rÿ‹}rŒ(jÅXgmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=debug -s KW_BUILD=no BUILD_ICSS_DDRLESS_BOOT=yes gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=release -s KW_BUILD=no BUILD_ICSS_DDRLESS_BOOT=yesjÆjß‹jÎj\ƒjÐjjÒ}rŒ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÄ jÝhjÞ]rŒjçXgmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=debug -s KW_BUILD=no BUILD_ICSS_DDRLESS_BOOT=yes gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=release -s KW_BUILD=no BUILD_ICSS_DDRLESS_BOOT=yesrŒ…�rŒ}rŒ(jÅUjÆjÿ‹ubaubjò)�rŒ}rŒ(jÅX¤Prebuilt binaries inside the Processor SDK RTOS for AMIC110-DDRLESS will be configured using this option to allow for testing of cost optimized industrial use case.rŒjÆjß‹jÎj\ƒjÐjõjÒ}r Œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM<jÝhjÞ]r ŒjçX¤Prebuilt binaries inside the Processor SDK RTOS for AMIC110-DDRLESS will be configured using this option to allow for testing of cost optimized industrial use case.r Œ…�r Œ}r Œ(jÅjŒjÆjŒubaubjc)�rŒ}rŒ(jÅUjÆjß‹jÎj\ƒjÐjfjÒ}rŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM@jÝhjÞ]rŒji)�rŒ}rŒ(jÅUjlKjÆjŒjÎj\ƒjÐjÜjÒ}rŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�rŒ}rŒ(jÅUjÆjJƒjÎj\ƒjÐjÑjÒ}rŒ(jÔ]jÕ]jÖ]j×]rŒUboot-mode-settingsrŒajÚ]rŒh­aujÜMCjÝhjÞ]rŒ(jà)�rŒ}rŒ(jÅXBoot Mode settingsrŒjÆjŒjÎj\ƒjÐjäjÒ}rŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMCjÝhjÞ]r ŒjçXBoot Mode settingsr!Œ…�r"Œ}r#Œ(jÅjŒjÆjŒubaubjò)�r$Œ}r%Œ(jÅX¶Boot mode settings for supported AM335x and AM437x boards can be found in the applicable `EVM Hardware User's Guide `__.jÆjŒjÎj\ƒjÐjõjÒ}r&Œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMEjÝhjÞ]r'Œ(jçXYBoot mode settings for supported AM335x and AM437x boards can be found in the applicable r(Œ…�r)Œ}r*Œ(jÅXYBoot mode settings for supported AM335x and AM437x boards can be found in the applicable jÆj$Œubjû)�r+Œ}r,Œ(jÅX\`EVM Hardware User's Guide `__jÒ}r-Œ(UnameXEVM Hardware User's GuidejX<index_release_specific.html#supported-platforms-and-versionsj×]jÖ]jÔ]jÕ]jÚ]ujÆj$ŒjÞ]r.ŒjçXEVM Hardware User's Guider/Œ…�r0Œ}r1Œ(jÅUjÆj+ŒubajÐjÿubjçX.…�r2Œ}r3Œ(jÅX.jÆj$ŒubeubeubjÇ)�r4Œ}r5Œ(jÅUjKjÆjJƒjÎj\ƒjÐjÑjÒ}r6Œ(jÔ]r7Œj©‚ajÕ]jÖ]j×]r8ŒUid68r9ŒajÚ]ujÜMIjÝhjÞ]r:Œ(jà)�r;Œ}r<Œ(jÅX Boot Modesr=ŒjÆj4ŒjÎj\ƒjÐjäjÒ}r>Œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMIjÝhjÞ]r?ŒjçX Boot Modesr@Œ…�rAŒ}rBŒ(jÅj=ŒjÆj;ŒubaubjÇ)�rCŒ}rDŒ(jÅUjKjÆj4ŒjÎj\ƒjÐjÑjÒ}rEŒ(jÔ]rFŒXbooting via sd cardrGŒajÕ]jÖ]j×]rHŒUbooting-via-sd-cardrIŒajÚ]ujÜMLjÝhjÞ]rJŒ(jà)�rKŒ}rLŒ(jÅXBooting Via SD CardrMŒjÆjCŒjÎj\ƒjÐjäjÒ}rNŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMLjÝhjÞ]rOŒjçXBooting Via SD CardrPŒ…�rQŒ}rRŒ(jÅjMŒjÆjKŒubaubjò)�rSŒ}rTŒ(jÅX(Booting from SD Card involves two steps.rUŒjÆjCŒjÎj\ƒjÐjõjÒ}rVŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMNjÝhjÞ]rWŒjçX(Booting from SD Card involves two steps.rXŒ…�rYŒ}rZŒ(jÅjUŒjÆjSŒubaubj )�r[Œ}r\Œ(jÅUjÆjCŒjÎj\ƒjÐj jÒ}r]Œ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMPjÝhjÞ]r^Œ(j{)�r_Œ}r`Œ(jÅXPreparing SD card.raŒjÆj[ŒjÎj\ƒjÐjjÒ}rbŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rcŒjò)�rdŒ}reŒ(jÅjaŒjÆj_ŒjÎj\ƒjÐjõjÒ}rfŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMPjÞ]rgŒjçXPreparing SD card.rhŒ…�riŒ}rjŒ(jÅjaŒjÆjdŒubaubaubj{)�rkŒ}rlŒ(jÅXBooting target. jÆj[ŒjÎj\ƒjÐjjÒ}rmŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rnŒjò)�roŒ}rpŒ(jÅXBooting target.rqŒjÆjkŒjÎj\ƒjÐjõjÒ}rrŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMQjÞ]rsŒjçXBooting target.rtŒ…�ruŒ}rvŒ(jÅjqŒjÆjoŒubaubaubeubjÇ)�rwŒ}rxŒ(jÅUjÆjCŒjÎj\ƒjÐjÑjÒ}ryŒ(jÔ]jÕ]jÖ]j×]rzŒUpreparing-sd-cardr{ŒajÚ]r|ŒjaujÜMTjÝhjÞ]r}Œ(jà)�r~Œ}rŒ(jÅXPreparing SD cardr€ŒjÆjwŒjÎj\ƒjÐjäjÒ}r�Œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMTjÝhjÞ]r‚ŒjçXPreparing SD cardrƒŒ…�r„Œ}r…Œ(jÅj€ŒjÆj~Œubaubj )�r†Œ}r‡Œ(jÅUjÆjwŒjÎj\ƒjÐj jÒ}rˆŒ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMVjÝhjÞ]r‰Œ(j{)�rŠŒ}r‹Œ(jÅXþTo boot target the SD card should be bootable. Follow the steps at `Creating bootable SD card in windows `__ or `Creating bootable SD card in Linux `__.jÆj†ŒjÎj\ƒjÐjjÒ}rŒŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�Œjò)�rŽŒ}r�Œ(jÅXþTo boot target the SD card should be bootable. Follow the steps at `Creating bootable SD card in windows `__ or `Creating bootable SD card in Linux `__.jÆjŠŒjÎj\ƒjÐjõjÒ}r�Œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMVjÞ]r‘Œ(jçXCTo boot target the SD card should be bootable. Follow the steps at r’Œ…�r“Œ}r”Œ(jÅXCTo boot target the SD card should be bootable. Follow the steps at jÆjŽŒubjû)�r•Œ}r–Œ(jÅX]`Creating bootable SD card in windows `__jÒ}r—Œ(UnameX$Creating bootable SD card in windowsjX2index_overview.html#windows-sd-card-creation-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjŽŒjÞ]r˜ŒjçX$Creating bootable SD card in windowsr™Œ…�ršŒ}r›Œ(jÅUjÆj•ŒubajÐjÿubjçX or rœŒ…�r�Œ}ržŒ(jÅX or jÆjŽŒubjû)�rŸŒ}r Œ(jÅXY`Creating bootable SD card in Linux `__jÒ}r¡Œ(UnameX"Creating bootable SD card in LinuxjX0index_overview.html#linux-sd-card-creation-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjŽŒjÞ]r¢ŒjçX"Creating bootable SD card in Linuxr£Œ…�r¤Œ}r¥Œ(jÅUjÆjŸŒubajÐjÿubjçX.…�r¦Œ}r§Œ(jÅX.jÆjŽŒubeubaubj{)�r¨Œ}r©Œ(jÅXrDelete the "*MLO*" and "*app*" in the bootable SD card which are created in the process of making the SD bootable.jÆj†ŒjÎj\ƒjÐjjÒ}rªŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r«Œjò)�r¬Œ}r­Œ(jÅXrDelete the "*MLO*" and "*app*" in the bootable SD card which are created in the process of making the SD bootable.jÆj¨ŒjÎj\ƒjÐjõjÒ}r®Œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMYjÞ]r¯Œ(jçX Delete the "r°Œ…�r±Œ}r²Œ(jÅX Delete the "jÆj¬ŒubjM)�r³Œ}r´Œ(jÅX*MLO*jÒ}rµŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬ŒjÞ]r¶ŒjçXMLOr·Œ…�r¸Œ}r¹Œ(jÅUjÆj³ŒubajÐjUubjçX" and "rºŒ…�r»Œ}r¼Œ(jÅX" and "jÆj¬ŒubjM)�r½Œ}r¾Œ(jÅX*app*jÒ}r¿Œ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬ŒjÞ]rÀŒjçXapprÁŒ…�rÂŒ}rÃŒ(jÅUjÆj½ŒubajÐjUubjçXU" in the bootable SD card which are created in the process of making the SD bootable.rÄŒ…�rÅŒ}rÆŒ(jÅXU" in the bootable SD card which are created in the process of making the SD bootable.jÆj¬Œubeubaubj{)�rÇŒ}rÈŒ(jÅXÈBootloader images with ti header (_ti.bin)should be renamed to "*MLO*". Bootloader images are located at *jÆj†ŒjÎj\ƒjÐjjÒ}rÉŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÊŒjò)�rËŒ}rÌŒ(jÅXÈBootloader images with ti header (_ti.bin)should be renamed to "*MLO*". Bootloader images are located at *jÆjÇŒjÎj\ƒjÐjõjÒ}rÍŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM[jÞ]rÎŒ(jçXRBootloader images with ti header (_ti.bin)should be renamed to "rÏŒ…�rÐŒ}rÑŒ(jÅXRBootloader images with ti header (_ti.bin)should be renamed to "jÆjËŒubjM)�rÒŒ}rÓŒ(jÅX*MLO*jÒ}rÔŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjËŒjÞ]rÕŒjçXMLOrÖŒ…�r׌}rØŒ(jÅUjÆjÒŒubajÐjUubjçX$". Bootloader images are located at rÙŒ…�rÚŒ}rÛŒ(jÅX$". Bootloader images are located at jÆjËŒubjM)�rÜŒ}rÝŒ(jÅXL*…�rãŒ}räŒ(jÅX>jÆjËŒubeubaubj{)�råŒ}ræŒ(jÅXhSimilarly the converted application binary image has to be renamed to "*app*" from "*_ti.bin*"jÆj†ŒjÎj\ƒjÐjjÒ}rçŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rèŒjò)�réŒ}rêŒ(jÅXhSimilarly the converted application binary image has to be renamed to "*app*" from "*_ti.bin*"jÆjåŒjÎj\ƒjÐjõjÒ}rëŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM^jÞ]rìŒ(jçXGSimilarly the converted application binary image has to be renamed to "r팅�rîŒ}rïŒ(jÅXGSimilarly the converted application binary image has to be renamed to "jÆjéŒubjM)�rðŒ}rñŒ(jÅX*app*jÒ}ròŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéŒjÞ]róŒjçXapprôŒ…�rõŒ}röŒ(jÅUjÆjðŒubajÐjUubjçX" from "r÷Œ…�røŒ}rùŒ(jÅX" from "jÆjéŒubjM)�rúŒ}rûŒ(jÅX*_ti.bin*jÒ}rüŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéŒjÞ]rýŒjçX_ti.binrþŒ…�rÿŒ}r�(jÅUjÆjúŒubajÐjUubjçX"…�r�}r�(jÅX"jÆjéŒubeubaubj{)�r�}r�(jÅXYCopy both the boot loader image "*MLO*" and the application image "*app*" to the SD card.jÆj†ŒjÎj\ƒjÐjjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�jò)�r�}r�(jÅXYCopy both the boot loader image "*MLO*" and the application image "*app*" to the SD card.jÆj�jÎj\ƒjÐjõjÒ}r �(jÔ]jÕ]jÖ]j×]jÚ]ujÜM`jÞ]r �(jçX!Copy both the boot loader image "r �…�r �}r �(jÅX!Copy both the boot loader image "jÆj�ubjM)�r�}r�(jÅX*MLO*jÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�jÞ]r�jçXMLOr�…�r�}r�(jÅUjÆj�ubajÐjUubjçX" and the application image "r�…�r�}r�(jÅX" and the application image "jÆj�ubjM)�r�}r�(jÅX*app*jÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�jÞ]r�jçXappr�…�r�}r�(jÅUjÆj�ubajÐjUubjçX" to the SD card.r�…�r �}r!�(jÅX" to the SD card.jÆj�ubeubaubj{)�r"�}r#�(jÅX(The SD card is ready for use on target. jÆj†ŒjÎj\ƒjÐjjÒ}r$�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r%�jò)�r&�}r'�(jÅX'The SD card is ready for use on target.r(�jÆj"�jÎj\ƒjÐjõjÒ}r)�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMbjÞ]r*�jçX'The SD card is ready for use on target.r+�…�r,�}r-�(jÅj(�jÆj&�ubaubaubeubeubjÇ)�r.�}r/�(jÅUjÆjCŒjÎj\ƒjÐjÑjÒ}r0�(jÔ]jÕ]jÖ]j×]r1�Ubooting-targetr2�ajÚ]r3�h¬aujÜMejÝhjÞ]r4�(jà)�r5�}r6�(jÅXBooting targetr7�jÆj.�jÎj\ƒjÐjäjÒ}r8�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMejÝhjÞ]r9�jçXBooting targetr:�…�r;�}r<�(jÅj7�jÆj5�ubaubj )�r=�}r>�(jÅUjÆj.�jÎj\ƒjÐj jÒ}r?�(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMgjÝhjÞ]r@�(j{)�rA�}rB�(jÅXÇInsert SD card to the base board SD slot. Connect a UART cable to a host running a serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.jÆj=�jÎj\ƒjÐjjÒ}rC�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rD�jò)�rE�}rF�(jÅXÇInsert SD card to the base board SD slot. Connect a UART cable to a host running a serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.rG�jÆjA�jÎj\ƒjÐjõjÒ}rH�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMgjÞ]rI�jçXÇInsert SD card to the base board SD slot. Connect a UART cable to a host running a serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.rJ�…�rK�}rL�(jÅjG�jÆjE�ubaubaubj{)�rM�}rN�(jÅX<Configure the board for SD Boot mode #. SD instance 0 (on base board) is available in all profiles. #. SD instance 0 boot mode needs to appropriately set. For SD boot to be selected first, SD boot should appear first in the boot device list in the boot mode. If any other boot mode is selected, even if a SD boot card is inserted, and does not appear first in the list, the first available sane boot image (like NAND or SPI etc) is booted and SD is not selected. Only if no sane boot image is found in the first devices, SD boot image will be selected. jÆj=�jÎNjÐjjÒ}rO�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rP�(jò)�rQ�}rR�(jÅX$Configure the board for SD Boot moderS�jÆjM�jÎj\ƒjÐjõjÒ}rT�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjjÞ]rU�jçX$Configure the board for SD Boot moderV�…�rW�}rX�(jÅjS�jÆjQ�ubaubj )�rY�}rZ�(jÅUjÒ}r[�(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÆjM�jÞ]r\�(j{)�r]�}r^�(jÅX;SD instance 0 (on base board) is available in all profiles.r_�jÒ}r`�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjY�jÞ]ra�jò)�rb�}rc�(jÅj_�jÆj]�jÎj\ƒjÐjõjÒ}rd�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMljÞ]re�jçX;SD instance 0 (on base board) is available in all profiles.rf�…�rg�}rh�(jÅj_�jÆjb�ubaubajÐjubj{)�ri�}rj�(jÅXÂSD instance 0 boot mode needs to appropriately set. For SD boot to be selected first, SD boot should appear first in the boot device list in the boot mode. If any other boot mode is selected, even if a SD boot card is inserted, and does not appear first in the list, the first available sane boot image (like NAND or SPI etc) is booted and SD is not selected. Only if no sane boot image is found in the first devices, SD boot image will be selected. jÒ}rk�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjY�jÞ]rl�jò)�rm�}rn�(jÅXÁSD instance 0 boot mode needs to appropriately set. For SD boot to be selected first, SD boot should appear first in the boot device list in the boot mode. If any other boot mode is selected, even if a SD boot card is inserted, and does not appear first in the list, the first available sane boot image (like NAND or SPI etc) is booted and SD is not selected. Only if no sane boot image is found in the first devices, SD boot image will be selected.ro�jÆji�jÎj\ƒjÐjõjÒ}rp�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMmjÞ]rq�jçXÁSD instance 0 boot mode needs to appropriately set. For SD boot to be selected first, SD boot should appear first in the boot device list in the boot mode. If any other boot mode is selected, even if a SD boot card is inserted, and does not appear first in the list, the first available sane boot image (like NAND or SPI etc) is booted and SD is not selected. Only if no sane boot image is found in the first devices, SD boot image will be selected.rr�…�rs�}rt�(jÅjo�jÆjm�ubaubajÐjubejÐj ubeubj{)�ru�}rv�(jÅXDOnce SD boot image is chosen, the *MLO* is first detected and copied and executed from the OCMC0 RAM. The *MLO* then copies the application image (*app*) from the card to the SDRAM and passes the control to the application. If the process is successful, messages identifying board and SoC will appear on the serial console. jÆj=�jÎj\ƒjÐjjÒ}rw�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rx�jò)�ry�}rz�(jÅXCOnce SD boot image is chosen, the *MLO* is first detected and copied and executed from the OCMC0 RAM. The *MLO* then copies the application image (*app*) from the card to the SDRAM and passes the control to the application. If the process is successful, messages identifying board and SoC will appear on the serial console.jÆju�jÎj\ƒjÐjõjÒ}r{�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMujÞ]r|�(jçX"Once SD boot image is chosen, the r}�…�r~�}r�(jÅX"Once SD boot image is chosen, the jÆjy�ubjM)�r€�}r��(jÅX*MLO*jÒ}r‚�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjy�jÞ]rƒ�jçXMLOr„�…�r…�}r†�(jÅUjÆj€�ubajÐjUubjçXC is first detected and copied and executed from the OCMC0 RAM. The r‡�…�rˆ�}r‰�(jÅXC is first detected and copied and executed from the OCMC0 RAM. The jÆjy�ubjM)�rŠ�}r‹�(jÅX*MLO*jÒ}rŒ�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjy�jÞ]r��jçXMLOrŽ�…�r��}r��(jÅUjÆjŠ�ubajÐjUubjçX$ then copies the application image (r‘�…�r’�}r“�(jÅX$ then copies the application image (jÆjy�ubjM)�r”�}r•�(jÅX*app*jÒ}r–�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjy�jÞ]r—�jçXappr˜�…�r™�}rš�(jÅUjÆj”�ubajÐjUubjçX«) from the card to the SDRAM and passes the control to the application. If the process is successful, messages identifying board and SoC will appear on the serial console.r›�…�rœ�}r��(jÅX«) from the card to the SDRAM and passes the control to the application. If the process is successful, messages identifying board and SoC will appear on the serial console.jÆjy�ubeubaubeubjò)�rž�}rŸ�(jÅX9After this the application will take control and execute.r �jÆj.�jÎj\ƒjÐjõjÒ}r¡�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM{jÝhjÞ]r¢�jçX9After this the application will take control and execute.r£�…�r¤�}r¥�(jÅj �jÆjž�ubaubjò)�r¦�}r§�(jÅXx**NOTE:** If board has boot mode selection pins, choose proper boot mode selection pins from hardware reference manuals.jÆj.�jÎj\ƒjÐjõjÒ}r¨�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM}jÝhjÞ]r©�(jÚ)�rª�}r«�(jÅX **NOTE:**jÒ}r¬�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦�jÞ]r­�jçXNOTE:r®�…�r¯�}r°�(jÅUjÆjª�ubajÐjâubjçXo If board has boot mode selection pins, choose proper boot mode selection pins from hardware reference manuals.r±�…�r²�}r³�(jÅXo If board has boot mode selection pins, choose proper boot mode selection pins from hardware reference manuals.jÆj¦�ubeubjc)�r´�}rµ�(jÅUjÆj.�jÎj\ƒjÐjfjÒ}r¶�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM€jÝhjÞ]r·�ji)�r¸�}r¹�(jÅX]If the boards have no boot mode selection pins and a valid boot image is present on McSPI flash, booting will happen from McSPI flash. Erase McSPI flash in such cases to boot from SD card. Refer to `Booting Via McSPI `__ for how to rease McSPI flash. The boot sequence depends on ROM bootloader.jlKjÆj´�jÎj\ƒjÐjÜjÒ}rº�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM…jÝhjÞ]r»�(jçXÆIf the boards have no boot mode selection pins and a valid boot image is present on McSPI flash, booting will happen from McSPI flash. Erase McSPI flash in such cases to boot from SD card. Refer to r¼�…�r½�}r¾�(jÅXÆIf the boards have no boot mode selection pins and a valid boot image is present on McSPI flash, booting will happen from McSPI flash. Erase McSPI flash in such cases to boot from SD card. Refer to jÆj¸�ubjû)�r¿�}rÀ�(jÅXL`Booting Via McSPI `__jÒ}rÁ�(UnameXBooting Via McSPIjX4index_Foundational_Components.html#booting-via-mcspij×]jÖ]jÔ]jÕ]jÚ]ujÆj¸�jÞ]rÂ�jçXBooting Via McSPIrÃ�…�rÄ�}rÅ�(jÅUjÆj¿�ubajÐjÿubjçXK for how to rease McSPI flash. The boot sequence depends on ROM bootloader.rÆ�…�rÇ�}rÈ�(jÅXK for how to rease McSPI flash. The boot sequence depends on ROM bootloader.jÆj¸�ubeubaubeubeubjÇ)�rÉ�}rÊ�(jÅUjKjÆj4ŒjÎj\ƒjÐjÑjÒ}rË�(jÔ]rÌ�Xbooting via qspirÍ�ajÕ]jÖ]j×]rÎ�Ubooting-via-qspirÏ�ajÚ]ujÜM‰jÝhjÞ]rÐ�(jà)�rÑ�}rÒ�(jÅXBooting Via QSPIrÓ�jÆjÉ�jÎj\ƒjÐjäjÒ}rÔ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‰jÝhjÞ]rÕ�jçXBooting Via QSPIrÖ�…�r×�}rØ�(jÅjÓ�jÆjÑ�ubaubjò)�rÙ�}rÚ�(jÅX+Booting from QSPI flash involves two steps-rÛ�jÆjÉ�jÎj\ƒjÐjõjÒ}rÜ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‹jÝhjÞ]rÝ�jçX+Booting from QSPI flash involves two steps-rÞ�…�rß�}rà�(jÅjÛ�jÆjÙ�ubaubj )�rá�}râ�(jÅUjÆjÉ�jÎj\ƒjÐj jÒ}rã�(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM�jÝhjÞ]rä�(j{)�rå�}ræ�(jÅXPreparing Flash Devicerç�jÆjá�jÎj\ƒjÐjjÒ}rè�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ré�jò)�rê�}rë�(jÅjç�jÆjå�jÎj\ƒjÐjõjÒ}rì�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]rí�jçXPreparing Flash Devicerî�…�rï�}rð�(jÅjç�jÆjê�ubaubaubj{)�rñ�}rò�(jÅXBooting target. jÆjá�jÎj\ƒjÐjjÒ}ró�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rô�jò)�rõ�}rö�(jÅXBooting target.r÷�jÆjñ�jÎj\ƒjÐjõjÒ}rø�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŽjÞ]rù�jçXBooting target.rú�…�rû�}rü�(jÅj÷�jÆjõ�ubaubaubeubjÇ)�rý�}rþ�(jÅUjKjÆjÉ�jÎj\ƒjÐjÑjÒ}rÿ�(jÔ]rŽXpreparing flash devicerŽajÕ]jÖ]j×]rŽUpreparing-flash-devicerŽajÚ]ujÜM‘jÝhjÞ]rŽ(jà)�rŽ}rŽ(jÅXPreparing Flash DevicerŽjÆjý�jÎj\ƒjÐjäjÒ}rŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‘jÝhjÞ]r ŽjçXPreparing Flash Devicer Ž…�r Ž}r Ž(jÅjŽjÆjŽubaubjò)�r Ž}rŽ(jÅXOProcedure relies on contents being copied to SD card. Additional details below:rŽjÆjý�jÎj\ƒjÐjõjÒ}rŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM“jÝhjÞ]rŽjçXOProcedure relies on contents being copied to SD card. Additional details below:rŽ…�rŽ}rŽ(jÅjŽjÆj Žubaubj )�rŽ}rŽ(jÅUjÆjý�jÎj\ƒjÐj jÒ}rŽ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM–jÝhjÞ]rŽ(j{)�rŽ}rŽ(jÅXeCopy bootloader image(bootloader_boot_qspi_a9host_debug.bin rename) and app image("_ti.bin") into the SD card. The file names have to be renamed in such a way that the length of name is less than 9 characters. Any file name less than 9 characters can be used. Rename the bootloader file to 'boot' and application image to 'app' with no extensions.jÆjŽjÎj\ƒjÐjjÒ}rŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŽjò)�rŽ}rŽ(jÅXeCopy bootloader image(bootloader_boot_qspi_a9host_debug.bin rename) and app image("_ti.bin") into the SD card. The file names have to be renamed in such a way that the length of name is less than 9 characters. Any file name less than 9 characters can be used. Rename the bootloader file to 'boot' and application image to 'app' with no extensions.rŽjÆjŽjÎj\ƒjÐjõjÒ}r Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜM–jÞ]r!ŽjçXeCopy bootloader image(bootloader_boot_qspi_a9host_debug.bin rename) and app image("_ti.bin") into the SD card. The file names have to be renamed in such a way that the length of name is less than 9 characters. Any file name less than 9 characters can be used. Rename the bootloader file to 'boot' and application image to 'app' with no extensions.r"Ž…�r#Ž}r$Ž(jÅjŽjÆjŽubaubaubj{)�r%Ž}r&Ž(jÅX Copy the 'config' file into the SD card which will contain the names of the image to be flashed and the offset. A sample config file can be found at * directory*. Do not change name of the **config** file. **NOTE:** "config" file can be used without any modifications if bootloader and application images are renamed to "boot" and "app". **NOTE:** Do not rename bootloader to be copied to SD card as "*MLO*", as MMCSD bootloader expects "*MLO*" and "*app*" to boot.jÆjŽjÎj\ƒjÐjjÒ}r'Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r(Žjò)�r)Ž}r*Ž(jÅX Copy the 'config' file into the SD card which will contain the names of the image to be flashed and the offset. A sample config file can be found at * directory*. Do not change name of the **config** file. **NOTE:** "config" file can be used without any modifications if bootloader and application images are renamed to "boot" and "app". **NOTE:** Do not rename bootloader to be copied to SD card as "*MLO*", as MMCSD bootloader expects "*MLO*" and "*app*" to boot.jÆj%ŽjÎj\ƒjÐjõjÒ}r+Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]r,Ž(jçX•Copy the 'config' file into the SD card which will contain the names of the image to be flashed and the offset. A sample config file can be found at r-Ž…�r.Ž}r/Ž(jÅX•Copy the 'config' file into the SD card which will contain the names of the image to be flashed and the offset. A sample config file can be found at jÆj)ŽubjM)�r0Ž}r1Ž(jÅXH* directory*jÒ}r2Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)ŽjÞ]r3ŽjçXF directoryr4Ž…�r5Ž}r6Ž(jÅUjÆj0ŽubajÐjUubjçX. Do not change name of the r7Ž…�r8Ž}r9Ž(jÅX. Do not change name of the jÆj)ŽubjÚ)�r:Ž}r;Ž(jÅX **config**jÒ}r<Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)ŽjÞ]r=ŽjçXconfigr>Ž…�r?Ž}r@Ž(jÅUjÆj:ŽubajÐjâubjçX file. rAŽ…�rBŽ}rCŽ(jÅX file. jÆj)ŽubjÚ)�rDŽ}rEŽ(jÅX **NOTE:**jÒ}rFŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)ŽjÞ]rGŽjçXNOTE:rHŽ…�rIŽ}rJŽ(jÅUjÆjDŽubajÐjâubjçX{ "config" file can be used without any modifications if bootloader and application images are renamed to "boot" and "app". rKŽ…�rLŽ}rMŽ(jÅX{ "config" file can be used without any modifications if bootloader and application images are renamed to "boot" and "app". jÆj)ŽubjÚ)�rNŽ}rOŽ(jÅX **NOTE:**jÒ}rPŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)ŽjÞ]rQŽjçXNOTE:rRŽ…�rSŽ}rTŽ(jÅUjÆjNŽubajÐjâubjçX6 Do not rename bootloader to be copied to SD card as "rUŽ…�rVŽ}rWŽ(jÅX6 Do not rename bootloader to be copied to SD card as "jÆj)ŽubjM)�rXŽ}rYŽ(jÅX*MLO*jÒ}rZŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)ŽjÞ]r[ŽjçXMLOr\Ž…�r]Ž}r^Ž(jÅUjÆjXŽubajÐjUubjçX ", as MMCSD bootloader expects "r_Ž…�r`Ž}raŽ(jÅX ", as MMCSD bootloader expects "jÆj)ŽubjM)�rbŽ}rcŽ(jÅX*MLO*jÒ}rdŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)ŽjÞ]reŽjçXMLOrfŽ…�rgŽ}rhŽ(jÅUjÆjbŽubajÐjUubjçX" and "riŽ…�rjŽ}rkŽ(jÅX" and "jÆj)ŽubjM)�rlŽ}rmŽ(jÅX*app*jÒ}rnŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)ŽjÞ]roŽjçXapprpŽ…�rqŽ}rrŽ(jÅUjÆjlŽubajÐjUubjçX " to boot.rsŽ…�rtŽ}ruŽ(jÅX " to boot.jÆj)Žubeubaubj{)�rvŽ}rwŽ(jÅXªNow SD card contains 1)boot 2)app 3)config files. config file contains the address of boot image as **0x0** and app image as **0x80000**. Insert it into the SD card slot.jÆjŽjÎj\ƒjÐjjÒ}rxŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ryŽjò)�rzŽ}r{Ž(jÅXªNow SD card contains 1)boot 2)app 3)config files. config file contains the address of boot image as **0x0** and app image as **0x80000**. Insert it into the SD card slot.jÆjvŽjÎj\ƒjÐjõjÒ}r|Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¦jÞ]r}Ž(jçXdNow SD card contains 1)boot 2)app 3)config files. config file contains the address of boot image as r~Ž…�rŽ}r€Ž(jÅXdNow SD card contains 1)boot 2)app 3)config files. config file contains the address of boot image as jÆjzŽubjÚ)�r�Ž}r‚Ž(jÅX**0x0**jÒ}rƒŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjzŽjÞ]r„ŽjçX0x0r…Ž…�r†Ž}r‡Ž(jÅUjÆj�ŽubajÐjâubjçX and app image as rˆŽ…�r‰Ž}rŠŽ(jÅX and app image as jÆjzŽubjÚ)�r‹Ž}rŒŽ(jÅX **0x80000**jÒ}r�Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÆjzŽjÞ]rŽŽjçX0x80000r�Ž…�r�Ž}r‘Ž(jÅUjÆj‹ŽubajÐjâubjçX". Insert it into the SD card slot.r’Ž…�r“Ž}r”Ž(jÅX". Insert it into the SD card slot.jÆjzŽubeubaubj{)�r•Ž}r–Ž(jÅXªConnect the board with CCS and load the prebuilt qspi flash writer application from **jÆjŽjÎj\ƒjÐjjÒ}r—Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r˜Žjò)�r™Ž}ršŽ(jÅXªConnect the board with CCS and load the prebuilt qspi flash writer application from **jÆj•ŽjÎj\ƒjÐjõjÒ}r›Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMªjÞ]rœŽ(jçXTConnect the board with CCS and load the prebuilt qspi flash writer application from r�Ž…�ržŽ}rŸŽ(jÅXTConnect the board with CCS and load the prebuilt qspi flash writer application from jÆj™ŽubjM)�r Ž}r¡Ž(jÅXV**jÒ}r¢Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™ŽjÞ]r£ŽjçXTr¤Ž…�r¥Ž}r¦Ž(jÅUjÆj ŽubajÐjUubeubaubj{)�r§Ž}r¨Ž(jÅXKRun the QSPI flash writer application. Following logs expected on console. jÆjŽjÎj\ƒjÐjjÒ}r©Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rªŽjò)�r«Ž}r¬Ž(jÅXJRun the QSPI flash writer application. Following logs expected on console.r­ŽjÆj§ŽjÎj\ƒjÐjõjÒ}r®Ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜM­jÞ]r¯ŽjçXJRun the QSPI flash writer application. Following logs expected on console.r°Ž…�r±Ž}r²Ž(jÅj­ŽjÆj«Žubaubaubeubj)�r³Ž}r´Ž(jÅXsStarterWare QSPI Flash Writer!! BOARDInit status [0x0] SoC  : [AM43XX] Core  : [A9] Board Detected  : [IDKEVM] Base Board Revision  : [UNKNOWN] Daughter Card Revision: [UNKNOWN] Copying boot to QSPI Flash Copying app to QSPI Flash Changing read to quad mode Read mode has been changed to Quad mode SUCCESS!!! Flashing completedjÆjý�jÎj\ƒjÐjjÒ}rµŽ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM>!jÝhjÞ]r¶ŽjçXsStarterWare QSPI Flash Writer!! BOARDInit status [0x0] SoC  : [AM43XX] Core  : [A9] Board Detected  : [IDKEVM] Base Board Revision  : [UNKNOWN] Daughter Card Revision: [UNKNOWN] Copying boot to QSPI Flash Copying app to QSPI Flash Changing read to quad mode Read mode has been changed to Quad mode SUCCESS!!! Flashing completedr·Ž…�r¸Ž}r¹Ž(jÅUjÆj³ŽubaubeubjÇ)�rºŽ}r»Ž(jÅUjÆjÉ�jÎj\ƒjÐjÑjÒ}r¼Ž(jÔ]jÕ]jÖ]j×]r½ŽUbooting-the-targetr¾ŽajÚ]r¿Žh+aujÜMÁjÝhjÞ]rÀŽ(jà)�rÁŽ}rÂŽ(jÅXBooting the target.rÃŽjÆjºŽjÎj\ƒjÐjäjÒ}rÄŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÁjÝhjÞ]rÅŽjçXBooting the target.rÆŽ…�rÇŽ}rÈŽ(jÅjÃŽjÆjÁŽubaubj )�rÉŽ}rÊŽ(jÅUjÆjºŽjÎj\ƒjÐj jÒ}rËŽ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMÃjÝhjÞ]rÌŽ(j{)�rÍŽ}rÎŽ(jÅX™Connect UART cable to a host running serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.jÆjÉŽjÎj\ƒjÐjjÒ}rÏŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÐŽjò)�rÑŽ}rÒŽ(jÅX™Connect UART cable to a host running serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.rÓŽjÆjÍŽjÎj\ƒjÐjõjÒ}rÔŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÃjÞ]rÕŽjçX™Connect UART cable to a host running serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.rÖŽ…�r׎}rØŽ(jÅjÓŽjÆjÑŽubaubaubj{)�rÙŽ}rÚŽ(jÅXNAfter flashing successfully remove SD card and reboot to see following logs jÆjÉŽjÎj\ƒjÐjjÒ}rÛŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÜŽjò)�rÝŽ}rÞŽ(jÅXMAfter flashing successfully remove SD card and reboot to see following logsrߎjÆjÙŽjÎj\ƒjÐjõjÒ}ràŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÆjÞ]ráŽjçXMAfter flashing successfully remove SD card and reboot to see following logsr⎅�rãŽ}räŽ(jÅjߎjÆjÝŽubaubaubeubj)�råŽ}ræŽ(jÅXCStarterWare Boot Loader BOARDInit status [0x0] SoC  : [AM43XX] Core  : [A9] Board Detected  : [IDKEVM] Base Board Revision  : [UNKNOWN] Daughter Card Revision: [UNKNOWN] Copying Header of the application image Copying image from flash to DDR Jumping to StarterWare Application...jÆjºŽjÎj\ƒjÐjjÒ}rçŽ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMW!jÝhjÞ]rèŽjçXCStarterWare Boot Loader BOARDInit status [0x0] SoC  : [AM43XX] Core  : [A9] Board Detected  : [IDKEVM] Base Board Revision  : [UNKNOWN] Daughter Card Revision: [UNKNOWN] Copying Header of the application image Copying image from flash to DDR Jumping to StarterWare Application...r鎅�rêŽ}rëŽ(jÅUjÆjåŽubaubj)�rìŽ}ríŽ(jÅXDNOTE: Boot logs will appear approximately after 25 seconds on reset.jÆjºŽjÎj\ƒjÐjjÒ}rîŽ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMd!jÝhjÞ]rïŽjçXDNOTE: Boot logs will appear approximately after 25 seconds on reset.rðŽ…�rñŽ}ròŽ(jÅUjÆjìŽubaubj)�róŽ}rôŽ(jÅXñ NOTE:If there is no boot mode selection present on board, boot image will be loaded depending on ROM boot sequence Example: If QSPI flash and MMCSD has valid bootloaders, on reset MMCSD boot image will be loaded following ROM Boot sequence.jÆjºŽjÎj\ƒjÐjjÒ}rõŽ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMh!jÝhjÞ]röŽjçXñ NOTE:If there is no boot mode selection present on board, boot image will be loaded depending on ROM boot sequence Example: If QSPI flash and MMCSD has valid bootloaders, on reset MMCSD boot image will be loaded following ROM Boot sequence.r÷Ž…�røŽ}rùŽ(jÅUjÆjóŽubaubeubeubjÇ)�rúŽ}rûŽ(jÅUjÆj4ŒjÎj\ƒjÐjÑjÒ}rüŽ(jÔ]jÕ]jÖ]j×]rýŽUbooting-via-uartrþŽajÚ]rÿŽjYaujÜMàjÝhjÞ]r�(jà)�r�}r�(jÅXBooting Via UARTr�jÆjúŽjÎj\ƒjÐjäjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMàjÝhjÞ]r�jçXBooting Via UARTr�…�r�}r�(jÅj�jÆj�ubaubjò)�r �}r �(jÅXˆROM and Bootloader supports XMODEM protocol with images being binary not requiring any additional headers. Following are steps for boot:r �jÆjúŽjÎj\ƒjÐjõjÒ}r �(jÔ]jÕ]jÖ]j×]jÚ]ujÜMâjÝhjÞ]r �jçXˆROM and Bootloader supports XMODEM protocol with images being binary not requiring any additional headers. Following are steps for boot:r�…�r�}r�(jÅj �jÆj �ubaubj )�r�}r�(jÅUjÆjúŽjÎj\ƒjÐj jÒ}r�(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMåjÝhjÞ]r�(j{)�r�}r�(jÅXéConfigure board for UART boot mode : UART boot need to be first in the boot device list. Note: In case if any other boot mode is selected, the first available boot image (eg:NAND or MMCSD etc) will override. In case of no valid images, UART boot will be selected. - Select View->Memory Browser through CCS. - Select address 0x44e10040. - Write 0x19 to last 2 bytes of this memory address.(UART boot) - Soft reset the board. This is a volatile bit which gets reset after power on. jÆj�jÎNjÐjjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�(jò)�r�}r�(jÅXConfigure board for UART boot mode : UART boot need to be first in the boot device list. Note: In case if any other boot mode is selected, the first available boot image (eg:NAND or MMCSD etc) will override. In case of no valid images, UART boot will be selected.r�jÆj�jÎj\ƒjÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMåjÞ]r�jçXConfigure board for UART boot mode : UART boot need to be first in the boot device list. Note: In case if any other boot mode is selected, the first available boot image (eg:NAND or MMCSD etc) will override. In case of no valid images, UART boot will be selected.r�…�r�}r �(jÅj�jÆj�ubaubjt)�r!�}r"�(jÅUjÒ}r#�(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj�jÞ]r$�(j{)�r%�}r&�(jÅX(Select View->Memory Browser through CCS.r'�jÒ}r(�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!�jÞ]r)�jò)�r*�}r+�(jÅj'�jÆj%�jÎj\ƒjÐjõjÒ}r,�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMëjÞ]r-�jçX(Select View->Memory Browser through CCS.r.�…�r/�}r0�(jÅj'�jÆj*�ubaubajÐjubj{)�r1�}r2�(jÅXSelect address 0x44e10040.r3�jÒ}r4�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!�jÞ]r5�jò)�r6�}r7�(jÅj3�jÆj1�jÎj\ƒjÐjõjÒ}r8�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMìjÞ]r9�jçXSelect address 0x44e10040.r:�…�r;�}r<�(jÅj3�jÆj6�ubaubajÐjubj{)�r=�}r>�(jÅX=Write 0x19 to last 2 bytes of this memory address.(UART boot)r?�jÒ}r@�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!�jÞ]rA�jò)�rB�}rC�(jÅj?�jÆj=�jÎj\ƒjÐjõjÒ}rD�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMíjÞ]rE�jçX=Write 0x19 to last 2 bytes of this memory address.(UART boot)rF�…�rG�}rH�(jÅj?�jÆjB�ubaubajÐjubj{)�rI�}rJ�(jÅXNSoft reset the board. This is a volatile bit which gets reset after power on. jÒ}rK�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!�jÞ]rL�jò)�rM�}rN�(jÅXMSoft reset the board. This is a volatile bit which gets reset after power on.rO�jÆjI�jÎj\ƒjÐjõjÒ}rP�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMîjÞ]rQ�jçXMSoft reset the board. This is a volatile bit which gets reset after power on.rR�…�rS�}rT�(jÅjO�jÆjM�ubaubajÐjubejÐjwubeubj{)�rU�}rV�(jÅXœROM code will print "CC.." on UART console expecting Bootloader via XMODEM. File can be sent via xmodem through tera-term File-> Transfer -> XMODEM -> Send.jÆj�jÎj\ƒjÐjjÒ}rW�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rX�jò)�rY�}rZ�(jÅXœROM code will print "CC.." on UART console expecting Bootloader via XMODEM. File can be sent via xmodem through tera-term File-> Transfer -> XMODEM -> Send.r[�jÆjU�jÎj\ƒjÐjõjÒ}r\�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMñjÞ]r]�jçXœROM code will print "CC.." on UART console expecting Bootloader via XMODEM. File can be sent via xmodem through tera-term File-> Transfer -> XMODEM -> Send.r^�…�r_�}r`�(jÅj[�jÆjY�ubaubaubj{)�ra�}rb�(jÅX‹On transmitting bootloader image, bootloader_boot_uart_a9host_debug.bin via XMODEM, following message will be expected on serial console. jÆj�jÎj\ƒjÐjjÒ}rc�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rd�jò)�re�}rf�(jÅXŠOn transmitting bootloader image, bootloader_boot_uart_a9host_debug.bin via XMODEM, following message will be expected on serial console.rg�jÆja�jÎj\ƒjÐjõjÒ}rh�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMôjÞ]ri�jçXŠOn transmitting bootloader image, bootloader_boot_uart_a9host_debug.bin via XMODEM, following message will be expected on serial console.rj�…�rk�}rl�(jÅjg�jÆje�ubaubaubeubj)�rm�}rn�(jÅXWCCCCCCCCCCCCCCCCCCCCCCCCCCCC StarterWare Boot Loader BOARDInit status [0x0] SoC  : [AM43XX] Core  : [A9] Board Detected  : [IDKEVM] Base Board Revision  : [UNKNOWN] Daughter Card Revision: [UNKNOWN] GPIO Instance number: 0 Pin number: 22 Please transfer file: CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCjÆjúŽjÎj\ƒjÐjjÒ}ro�(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM†!jÝhjÞ]rp�jçXWCCCCCCCCCCCCCCCCCCCCCCCCCCCC StarterWare Boot Loader BOARDInit status [0x0] SoC  : [AM43XX] Core  : [A9] Board Detected  : [IDKEVM] Base Board Revision  : [UNKNOWN] Daughter Card Revision: [UNKNOWN] GPIO Instance number: 0 Pin number: 22 Please transfer file: CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCrq�…�rr�}rs�(jÅUjÆjm�ubaubjò)�rt�}ru�(jÅX„  4.  As  a next step application binary (without header) can be sent via XMODEM which will lead to application start executing.rv�jÆjúŽjÎj\ƒjÐjõjÒ}rw�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rx�jçX„  4.  As  a next step application binary (without header) can be sent via XMODEM which will lead to application start executing.ry�…�rz�}r{�(jÅjv�jÆjt�ubaubeubjÇ)�r|�}r}�(jÅUjÆj4ŒjÎj\ƒjÐjÑjÒ}r~�(jÔ]jÕ]jÖ]j×]r�Ubooting-via-mcspir€�ajÚ]r��h6aujÜM jÝhjÞ]r‚�(jà)�rƒ�}r„�(jÅXBooting Via McSPIr…�jÆj|�jÎj\ƒjÐjäjÒ}r†�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r‡�jçXBooting Via McSPIrˆ�…�r‰�}rŠ�(jÅj…�jÆjƒ�ubaubjò)�r‹�}rŒ�(jÅX&Booting from McSPI involves two steps.r��jÆj|�jÎj\ƒjÐjõjÒ}rŽ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r��jçX&Booting from McSPI involves two steps.r��…�r‘�}r’�(jÅj��jÆj‹�ubaubj )�r“�}r”�(jÅUjÆj|�jÎj\ƒjÐj jÒ}r•�(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMjÝhjÞ]r–�(j{)�r—�}r˜�(jÅXPreparing Flash Devicer™�jÆj“�jÎj\ƒjÐjjÒ}rš�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r›�jò)�rœ�}r��(jÅj™�jÆj—�jÎj\ƒjÐjõjÒ}rž�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rŸ�jçXPreparing Flash Devicer �…�r¡�}r¢�(jÅj™�jÆjœ�ubaubaubj{)�r£�}r¤�(jÅXBooting the target. jÆj“�jÎj\ƒjÐjjÒ}r¥�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¦�jò)�r§�}r¨�(jÅXBooting the target.r©�jÆj£�jÎj\ƒjÐjõjÒ}rª�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r«�jçXBooting the target.r¬�…�r­�}r®�(jÅj©�jÆj§�ubaubaubeubjhK)�r¯�}r°�(jÅXPreparing Flash Devicer±�jÆj|�jÎj\ƒjÐjlKjÒ}r²�(j×]r³�Upreparing-flash-device-1r´�ajÖ]jÔ]jÕ]jÚ]rµ�høaujÜNjÝhjÞ]r¶�jçXPreparing Flash Devicer·�…�r¸�}r¹�(jÅj±�jÆj¯�ubaubjt)�rº�}r»�(jÅUjÆj|�jÎj\ƒjÐjwjÒ}r¼�(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]r½�(j{)�r¾�}r¿�(jÅX²Set the appropriate bootmode if applicable for EVM. Refer to corresponding hardware user's guide for bootmode settings. **Note**: Most of the boards may not have switch settings.jÆjº�jÎj\ƒjÐjjÒ}rÀ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÁ�jò)�rÂ�}rÃ�(jÅX²Set the appropriate bootmode if applicable for EVM. Refer to corresponding hardware user's guide for bootmode settings. **Note**: Most of the boards may not have switch settings.jÆj¾�jÎj\ƒjÐjõjÒ}rÄ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÅ�(jçXxSet the appropriate bootmode if applicable for EVM. Refer to corresponding hardware user's guide for bootmode settings. rÆ�…�rÇ�}rÈ�(jÅXxSet the appropriate bootmode if applicable for EVM. Refer to corresponding hardware user's guide for bootmode settings. jÆjÂ�ubjÚ)�rÉ�}rÊ�(jÅX**Note**jÒ}rË�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÂ�jÞ]rÌ�jçXNoterÍ�…�rÎ�}rÏ�(jÅUjÆjÉ�ubajÐjâubjçX2: Most of the boards may not have switch settings.rÐ�…�rÑ�}rÒ�(jÅX2: Most of the boards may not have switch settings.jÆjÂ�ubeubaubj{)�rÓ�}rÔ�(jÅXUAdd a required target configuration in CCS depending on emulator and board connected.jÆjº�jÎj\ƒjÐjjÒ}rÕ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÖ�jò)�r×�}rØ�(jÅXUAdd a required target configuration in CCS depending on emulator and board connected.rÙ�jÆjÓ�jÎj\ƒjÐjõjÒ}rÚ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÛ�jçXUAdd a required target configuration in CCS depending on emulator and board connected.rÜ�…�rÝ�}rÞ�(jÅjÙ�jÆj×�ubaubaubj{)�rß�}rà�(jÅX(Connect target to required core. Ex: A8.rá�jÆjº�jÎj\ƒjÐjjÒ}râ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rã�jò)�rä�}rå�(jÅjá�jÆjß�jÎj\ƒjÐjõjÒ}ræ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rç�jçX(Connect target to required core. Ex: A8.rè�…�ré�}rê�(jÅjá�jÆjä�ubaubaubj{)�rë�}rì�(jÅX‚Load the flash writer from * To FLASH an Image Enter 2 ----> To ERASE Flash Enter 3 ----> To EXITjÆj|�jÎj\ƒjÐjjÒ}r�(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM®!jÝhjÞ]r�jçXxStarting SPIWriter. Choose Operation: Enter 1 ----> To FLASH an Image Enter 2 ----> To ERASE Flash Enter 3 ----> To EXITr�…�r�}r�(jÅUjÆj �ubaubjt)�r�}r�(jÅUjÆj|�jÎj\ƒjÐjwjÒ}r�(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM(jÝhjÞ]r�j{)�r�}r�(jÅX@When Flash option is chosen program prompts to enter file name. jÆj�jÎj\ƒjÐjjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�jò)�r�}r�(jÅX?When Flash option is chosen program prompts to enter file name.r�jÆj�jÎj\ƒjÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM(jÞ]r�jçX?When Flash option is chosen program prompts to enter file name.r �…�r!�}r"�(jÅj�jÆj�ubaubaubaubj)�r#�}r$�(jÅXEnter the File NamejÆj|�jÎj\ƒjÐjjÒ}r%�(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¸!jÝhjÞ]r&�jçXEnter the File Namer'�…�r(�}r)�(jÅUjÆj#�ubaubjt)�r*�}r+�(jÅUjÆj|�jÎj\ƒjÐjwjÒ}r,�(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM.jÝhjÞ]r-�j{)�r.�}r/�(jÅXšProvide the complete path of file *bootloader_boot_mcspi_a8host_release_ti.bin* at directory "binary/bootloader/bin///" and hit Enter. jÆj*�jÎj\ƒjÐjjÒ}r0�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r1�jò)�r2�}r3�(jÅX™Provide the complete path of file *bootloader_boot_mcspi_a8host_release_ti.bin* at directory "binary/bootloader/bin///" and hit Enter.jÆj.�jÎj\ƒjÐjõjÒ}r4�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM.jÞ]r5�(jçX"Provide the complete path of file r6�…�r7�}r8�(jÅX"Provide the complete path of file jÆj2�ubjM)�r9�}r:�(jÅX-*bootloader_boot_mcspi_a8host_release_ti.bin*jÒ}r;�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj2�jÞ]r<�jçX+bootloader_boot_mcspi_a8host_release_ti.binr=�…�r>�}r?�(jÅUjÆj9�ubajÐjUubjçXJ at directory "binary/bootloader/bin///" and hit Enter.r@�…�rA�}rB�(jÅXJ at directory "binary/bootloader/bin///" and hit Enter.jÆj2�ubeubaubaubj)�rC�}rD�(jÅX"Enter the Offset in bytes (in HEX)jÆj|�jÎj\ƒjÐjjÒ}rE�(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÀ!jÝhjÞ]rF�jçX"Enter the Offset in bytes (in HEX)rG�…�rH�}rI�(jÅUjÆjC�ubaubjt)�rJ�}rK�(jÅUjÆj|�jÎj\ƒjÐjwjÒ}rL�(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM6jÝhjÞ]rM�(j{)�rN�}rO�(jÅX)Provide **0x00000** to flash bootloader. jÆjJ�jÎj\ƒjÐjjÒ}rP�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rQ�jò)�rR�}rS�(jÅX(Provide **0x00000** to flash bootloader.jÆjN�jÎj\ƒjÐjõjÒ}rT�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM6jÞ]rU�(jçXProvide rV�…�rW�}rX�(jÅXProvide jÆjR�ubjÚ)�rY�}rZ�(jÅX **0x00000**jÒ}r[�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjR�jÞ]r\�jçX0x00000r]�…�r^�}r_�(jÅUjÆjY�ubajÐjâubjçX to flash bootloader.r`�…�ra�}rb�(jÅX to flash bootloader.jÆjR�ubeubaubj{)�rc�}rd�(jÅX6Wait for few minutes as flashing is a slower process. jÆjJ�jÎj\ƒjÐjjÒ}re�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rf�jò)�rg�}rh�(jÅX5Wait for few minutes as flashing is a slower process.ri�jÆjc�jÎj\ƒjÐjõjÒ}rj�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM8jÞ]rk�jçX5Wait for few minutes as flashing is a slower process.rl�…�rm�}rn�(jÅji�jÆjg�ubaubaubeubj)�ro�}rp�(jÅXÅErasing flash at byte offset: xx, byte length: xxxx SF: Successfully erased xxxx bytes @ xxxx Writing flash at page offset: x, number of pages: xxxx Flashing is in progress... Verifying... Success.jÆj|�jÎj\ƒjÐjjÒ}rq�(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÈ!jÝhjÞ]rr�jçXÅErasing flash at byte offset: xx, byte length: xxxx SF: Successfully erased xxxx bytes @ xxxx Writing flash at page offset: x, number of pages: xxxx Flashing is in progress... Verifying... Success.rs�…�rt�}ru�(jÅUjÆjo�ubaubjt)�rv�}rw�(jÅUjÆj|�jÎj\ƒjÐjwjÒ}rx�(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMBjÝhjÞ]ry�(j{)�rz�}r{�(jÅX½Repeat the steps to load and run the flash writer, then choose the application binary image _a8host_ti.bin and enter **0x20000** as the offset. Wait until the flashing completes. jÆjv�jÎj\ƒjÐjjÒ}r|�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r}�jò)�r~�}r�(jÅX¼Repeat the steps to load and run the flash writer, then choose the application binary image _a8host_ti.bin and enter **0x20000** as the offset. Wait until the flashing completes.jÆjz�jÎj\ƒjÐjõjÒ}r€�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMBjÞ]r��(jçXRepeat the steps to load and run the flash writer, then choose the application binary image _a8host_ti.bin and enter r‚�…�rƒ�}r„�(jÅXRepeat the steps to load and run the flash writer, then choose the application binary image _a8host_ti.bin and enter jÆj~�ubjÚ)�r…�}r†�(jÅX **0x20000**jÒ}r‡�(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~�jÞ]rˆ�jçX0x20000r‰�…�rŠ�}r‹�(jÅUjÆj…�ubajÐjâubjçX2 as the offset. Wait until the flashing completes.rŒ�…�r��}rŽ�(jÅX2 as the offset. Wait until the flashing completes.jÆj~�ubeubaubj{)�r��}r��(jÅX4Once SPI flash writing completes disconnect target. jÆjv�jÎj\ƒjÐjjÒ}r‘�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r’�jò)�r“�}r”�(jÅX3Once SPI flash writing completes disconnect target.r•�jÆj��jÎj\ƒjÐjõjÒ}r–�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMFjÞ]r—�jçX3Once SPI flash writing completes disconnect target.r˜�…�r™�}rš�(jÅj•�jÆj“�ubaubaubeubjhK)�r›�}rœ�(jÅXBooting the targetr��jÆj|�jÎj\ƒjÐjlKjÒ}rž�(j×]rŸ�Uid69r �ajÖ]jÔ]jÕ]jÚ]r¡�hnaujÜNjÝhjÞ]r¢�jçXBooting the targetr£�…�r¤�}r¥�(jÅj��jÆj›�ubaubj )�r¦�}r§�(jÅUjÆj|�jÎj\ƒjÐj jÒ}r¨�(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMKjÝhjÞ]r©�(j{)�rª�}r«�(jÅX Connect a serial cable to a host running a serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.jÆj¦�jÎj\ƒjÐjjÒ}r¬�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r­�jò)�r®�}r¯�(jÅX Connect a serial cable to a host running a serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.r°�jÆjª�jÎj\ƒjÐjõjÒ}r±�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMKjÞ]r²�jçX Connect a serial cable to a host running a serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.r³�…�r´�}rµ�(jÅj°�jÆj®�ubaubaubj{)�r¶�}r·�(jÅX&Configure the board for SPI boot mode.r¸�jÆj¦�jÎj\ƒjÐjjÒ}r¹�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rº�jò)�r»�}r¼�(jÅj¸�jÆj¶�jÎj\ƒjÐjõjÒ}r½�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMNjÞ]r¾�jçX&Configure the board for SPI boot mode.r¿�…�rÀ�}rÁ�(jÅj¸�jÆj»�ubaubaubj{)�rÂ�}rÃ�(jÅX¼On reset, ROM bootloader copies the bootloader from flash to internal memory. The bootloader then copies the application image from flash to DDR and passes the control to the application. jÆj¦�jÎj\ƒjÐjjÒ}rÄ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÅ�jò)�rÆ�}rÇ�(jÅX»On reset, ROM bootloader copies the bootloader from flash to internal memory. The bootloader then copies the application image from flash to DDR and passes the control to the application.rÈ�jÆjÂ�jÎj\ƒjÐjõjÒ}rÉ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMOjÞ]rÊ�jçX»On reset, ROM bootloader copies the bootloader from flash to internal memory. The bootloader then copies the application image from flash to DDR and passes the control to the application.rË�…�rÌ�}rÍ�(jÅjÈ�jÆjÆ�ubaubaubeubjc)�rÎ�}rÏ�(jÅUjÆj|�jÎj\ƒjÐjfjÒ}rÐ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÝhjÞ]rÑ�ji)�rÒ�}rÓ�(jÅUjlKjÆjÎ�jÎj\ƒjÐjÜjÒ}rÔ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�rÕ�}rÖ�(jÅUjÆj4ŒjÎj\ƒjÐjÑjÒ}r×�(jÔ]jÕ]jÖ]j×]rØ�Ubooting-via-nandrÙ�ajÚ]rÚ�h‘aujÜMVjÝhjÞ]rÛ�(jà)�rÜ�}rÝ�(jÅXBooting Via NANDrÞ�jÆjÕ�jÎj\ƒjÐjäjÒ}rß�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMVjÝhjÞ]rà�jçXBooting Via NANDrá�…�râ�}rã�(jÅjÞ�jÆjÜ�ubaubjò)�rä�}rå�(jÅX%Booting from NAND involves two steps.ræ�jÆjÕ�jÎj\ƒjÐjõjÒ}rç�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMXjÝhjÞ]rè�jçX%Booting from NAND involves two steps.ré�…�rê�}rë�(jÅjæ�jÆjä�ubaubj )�rì�}rí�(jÅUjÆjÕ�jÎj\ƒjÐj jÒ}rî�(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMZjÝhjÞ]rï�(j{)�rð�}rñ�(jÅXPreparing Flash Devicerò�jÆjì�jÎj\ƒjÐjjÒ}ró�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rô�jò)�rõ�}rö�(jÅjò�jÆjð�jÎj\ƒjÐjõjÒ}r÷�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMZjÞ]rø�jçXPreparing Flash Devicerù�…�rú�}rû�(jÅjò�jÆjõ�ubaubaubj{)�rü�}rý�(jÅXBooting the target. jÆjì�jÎj\ƒjÐjjÒ}rþ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÿ�jò)�r‘}r‘(jÅXBooting the target.r‘jÆjü�jÎj\ƒjÐjõjÒ}r‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜM[jÞ]r‘jçXBooting the target.r‘…�r‘}r‘(jÅj‘jÆj‘ubaubaubeubjhK)�r‘}r ‘(jÅXPreparing Flash Devicer ‘jÆjÕ�jÎj\ƒjÐjlKjÒ}r ‘(j×]r ‘Upreparing-flash-device-2r ‘ajÖ]jÔ]jÕ]jÚ]r‘h÷aujÜNjÝhjÞ]r‘jçXPreparing Flash Devicer‘…�r‘}r‘(jÅj ‘jÆj‘ubaubjt)�r‘}r‘(jÅUjÆjÕ�jÎj\ƒjÐjwjÒ}r‘(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM`jÝhjÞ]r‘(j{)�r‘}r‘(jÅXDConfigure BOOT pins for NAND according to the hardware user's guide.r‘jÆj‘jÎj\ƒjÐjjÒ}r‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‘jò)�r‘}r‘(jÅj‘jÆj‘jÎj\ƒjÐjõjÒ}r‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜM`jÞ]r‘jçXDConfigure BOOT pins for NAND according to the hardware user's guide.r ‘…�r!‘}r"‘(jÅj‘jÆj‘ubaubaubj{)�r#‘}r$‘(jÅXConnect target with CCS.r%‘jÆj‘jÎj\ƒjÐjjÒ}r&‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r'‘jò)�r(‘}r)‘(jÅj%‘jÆj#‘jÎj\ƒjÐjõjÒ}r*‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜMajÞ]r+‘jçXConnect target with CCS.r,‘…�r-‘}r.‘(jÅj%‘jÆj(‘ubaubaubj{)�r/‘}r0‘(jÅXóLoad the ** to target and Run. Flash writer will output messages to CCS console. When it prompts for inputs, proper inputs shall be given via CCS console.jÆj‘jÎj\ƒjÐjjÒ}r1‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r2‘jò)�r3‘}r4‘(jÅXóLoad the ** to target and Run. Flash writer will output messages to CCS console. When it prompts for inputs, proper inputs shall be given via CCS console.jÆj/‘jÎj\ƒjÐjõjÒ}r5‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜMbjÞ]r6‘(jçX Load the r7‘…�r8‘}r9‘(jÅX Load the jÆj3‘ubjM)�r:‘}r;‘(jÅX[**jÒ}r<‘(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3‘jÞ]r=‘jçXYr>‘…�r?‘}r@‘(jÅUjÆj:‘ubajÐjUubjçX� to target and Run. Flash writer will output messages to CCS console. When it prompts for inputs, proper inputs shall be given via CCS console.rA‘…�rB‘}rC‘(jÅX� to target and Run. Flash writer will output messages to CCS console. When it prompts for inputs, proper inputs shall be given via CCS console.jÆj3‘ubeubaubj{)�rD‘}rE‘(jÅXAWhen prompted for binary file name, update file with proper path.rF‘jÆj‘jÎj\ƒjÐjjÒ}rG‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rH‘jò)�rI‘}rJ‘(jÅjF‘jÆjD‘jÎj\ƒjÐjõjÒ}rK‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜMgjÞ]rL‘jçXAWhen prompted for binary file name, update file with proper path.rM‘…�rN‘}rO‘(jÅjF‘jÆjI‘ubaubaubj{)�rP‘}rQ‘(jÅXSelect option for flashing. jÆj‘jÎj\ƒjÐjjÒ}rR‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rS‘jò)�rT‘}rU‘(jÅXSelect option for flashing.rV‘jÆjP‘jÎj\ƒjÐjõjÒ}rW‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜMhjÞ]rX‘jçXSelect option for flashing.rY‘…�rZ‘}r[‘(jÅjV‘jÆjT‘ubaubaubeubj)�r\‘}r]‘(jÅXnChoose your operation Enter 1 ---> To Flash an Image Enter 2 ---> To ERASE the whole NAND Enter 3 ---> To EXITjÆjÕ�jÎj\ƒjÐjjÒ}r^‘(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMø!jÝhjÞ]r_‘jçXnChoose your operation Enter 1 ---> To Flash an Image Enter 2 ---> To ERASE the whole NAND Enter 3 ---> To EXITr`‘…�ra‘}rb‘(jÅUjÆj\‘ubaubjt)�rc‘}rd‘(jÅUjÆjÕ�jÎj\ƒjÐjwjÒ}re‘(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMqjÝhjÞ]rf‘j{)�rg‘}rh‘(jÅXQIf Option 1 is selected, enter image path to flash when prompted as shown below. jÆjc‘jÎj\ƒjÐjjÒ}ri‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rj‘jò)�rk‘}rl‘(jÅXPIf Option 1 is selected, enter image path to flash when prompted as shown below.rm‘jÆjg‘jÎj\ƒjÐjõjÒ}rn‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜMqjÞ]ro‘jçXPIf Option 1 is selected, enter image path to flash when prompted as shown below.rp‘…�rq‘}rr‘(jÅjm‘jÆjk‘ubaubaubaubj)�rs‘}rt‘(jÅXEnter image file pathjÆjÕ�jÎj\ƒjÐjjÒ}ru‘(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM"jÝhjÞ]rv‘jçXEnter image file pathrw‘…�rx‘}ry‘(jÅUjÆjs‘ubaubjò)�rz‘}r{‘(jÅX¸Â Â Â  Provide the complete path (e.g. //bootloader_boot_nand_a8host__ti.bin)r|‘jÆjÕ�jÎj\ƒjÐjõjÒ}r}‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜMxjÝhjÞ]r~‘jçX¸Â Â Â  Provide the complete path (e.g. //bootloader_boot_nand_a8host__ti.bin)r‘…�r€‘}r�‘(jÅj|‘jÆjz‘ubaubjt)�r‚‘}rƒ‘(jÅUjÆjÕ�jÎj\ƒjÐjwjÒ}r„‘(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM{jÝhjÞ]r…‘j{)�r†‘}r‡‘(jÅX+Enter offset when prompted as shown below. jÆj‚‘jÎj\ƒjÐjjÒ}rˆ‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‰‘jò)�rŠ‘}r‹‘(jÅX*Enter offset when prompted as shown below.rŒ‘jÆj†‘jÎj\ƒjÐjõjÒ}r�‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜM{jÞ]rŽ‘jçX*Enter offset when prompted as shown below.r�‘…�r�‘}r‘‘(jÅjŒ‘jÆjŠ‘ubaubaubaubj)�r’‘}r“‘(jÅXEnter offset (in hex):jÆjÕ�jÎj\ƒjÐjjÒ}r”‘(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM "jÝhjÞ]r•‘jçXEnter offset (in hex):r–‘…�r—‘}r˜‘(jÅUjÆj’‘ubaubjc)�r™‘}rš‘(jÅUjÆjÕ�jÎj\ƒjÐjfjÒ}r›‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÝhjÞ]rœ‘(ji)�r�‘}rž‘(jÅXL    This offset is start location from where the image should be flashed.rŸ‘jlKjÆj™‘jÎj\ƒjÐjÜjÒ}r ‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‚jÝhjÞ]r¡‘jçXL    This offset is start location from where the image should be flashed.r¢‘…�r£‘}r¤‘(jÅjŸ‘jÆj�‘ubaubji)�r¥‘}r¦‘(jÅXNOTE:r§‘jlKjÆj™‘jÎj\ƒjÐjÜjÒ}r¨‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜMƒjÝhjÞ]r©‘jçXNOTE:rª‘…�r«‘}r¬‘(jÅj§‘jÆj¥‘ubaubeubj )�r­‘}r®‘(jÅUjÆjÕ�jÎj\ƒjÐj jÒ}r¯‘(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM…jÝhjÞ]r°‘(j{)�r±‘}r²‘(jÅXUse hex formatr³‘jÆj­‘jÎj\ƒjÐjjÒ}r´‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rµ‘jò)�r¶‘}r·‘(jÅj³‘jÆj±‘jÎj\ƒjÐjõjÒ}r¸‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜM…jÞ]r¹‘jçXUse hex formatrº‘…�r»‘}r¼‘(jÅj³‘jÆj¶‘ubaubaubj{)�r½‘}r¾‘(jÅXbIf bootloader is to be flashed, provide **0x00000**. For application binary, provide **0x80000**. jÆj­‘jÎj\ƒjÐjjÒ}r¿‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÀ‘jò)�rÁ‘}r‘(jÅXaIf bootloader is to be flashed, provide **0x00000**. For application binary, provide **0x80000**.jÆj½‘jÎj\ƒjÐjõjÒ}rÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM†jÞ]rÄ‘(jçX(If bootloader is to be flashed, provide rÅ‘…�rÆ‘}rÇ‘(jÅX(If bootloader is to be flashed, provide jÆjÁ‘ubjÚ)�rÈ‘}rÉ‘(jÅX **0x00000**jÒ}rÊ‘(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÁ‘jÞ]rË‘jçX0x00000rÌ‘…�rÍ‘}rΑ(jÅUjÆjÈ‘ubajÐjâubjçX". For application binary, provide rÏ‘…�rБ}rÑ‘(jÅX". For application binary, provide jÆjÁ‘ubjÚ)�rÒ‘}rÓ‘(jÅX **0x80000**jÒ}rÔ‘(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÁ‘jÞ]rÕ‘jçX0x80000rÖ‘…�rב}rØ‘(jÅUjÆjÒ‘ubajÐjâubjçX.…�rÙ‘}rÚ‘(jÅX.jÆjÁ‘ubeubaubeubjt)�rÛ‘}rÜ‘(jÅUjÆjÕ�jÎj\ƒjÐjwjÒ}rÝ‘(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM‰jÝhjÞ]rÞ‘j{)�rß‘}rà‘(jÅXSelect ECC for flashing. jÆjÛ‘jÎj\ƒjÐjjÒ}rá‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]râ‘jò)�rã‘}rä‘(jÅXSelect ECC for flashing.rå‘jÆjß‘jÎj\ƒjÐjõjÒ}ræ‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‰jÞ]rç‘jçXSelect ECC for flashing.rè‘…�ré‘}rê‘(jÅjå‘jÆjã‘ubaubaubaubj)�rë‘}rì‘(jÅXƒChoose the ECC scheme from given options Enter 1 ---> BCH 8 bit Enter 2 ---> HAM Enter 3 ---> T0 EXIT Please enter ECC scheme type:jÆjÕ�jÎj\ƒjÐjjÒ}rí‘(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM"jÝhjÞ]rî‘jçXƒChoose the ECC scheme from given options Enter 1 ---> BCH 8 bit Enter 2 ---> HAM Enter 3 ---> T0 EXIT Please enter ECC scheme type:rï‘…�rð‘}rñ‘(jÅUjÆjë‘ubaubjò)�rò‘}ró‘(jÅXm    Always select BCH8 for bootloader and application as ROM code and bootloader uses the BCH8 ECC scheme.rô‘jÆjÕ�jÎj\ƒjÐjõjÒ}rõ‘(jÔ]jÕ]jÖ]j×]jÚ]ujÜM“jÝhjÞ]rö‘jçXm    Always select BCH8 for bootloader and application as ROM code and bootloader uses the BCH8 ECC scheme.r÷‘…�rø‘}rù‘(jÅjô‘jÆjò‘ubaubjt)�rú‘}rû‘(jÅUjÆjÕ�jÎj\ƒjÐjwjÒ}rü‘(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM–jÝhjÞ]rý‘(j{)�rþ‘}rÿ‘(jÅXCEnsure that flash info displayed by tool matches NAND flash in EVM.r’jÆjú‘jÎj\ƒjÐjjÒ}r’(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r’jò)�r’}r’(jÅj’jÆjþ‘jÎj\ƒjÐjõjÒ}r’(jÔ]jÕ]jÖ]j×]jÚ]ujÜM–jÞ]r’jçXCEnsure that flash info displayed by tool matches NAND flash in EVM.r’…�r’}r ’(jÅj’jÆj’ubaubaubj{)�r ’}r ’(jÅXbAfter this tool should first erase the required region in flash and then start flashing new image.jÆjú‘jÎj\ƒjÐjjÒ}r ’(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r ’jò)�r’}r’(jÅXbAfter this tool should first erase the required region in flash and then start flashing new image.r’jÆj ’jÎj\ƒjÐjõjÒ}r’(jÔ]jÕ]jÖ]j×]jÚ]ujÜM—jÞ]r’jçXbAfter this tool should first erase the required region in flash and then start flashing new image.r’…�r’}r’(jÅj’jÆj’ubaubaubj{)�r’}r’(jÅXIIf flashing procedure is complete following message should be displayed. jÆjú‘jÎj\ƒjÐjjÒ}r’(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r’jò)�r’}r’(jÅXHIf flashing procedure is complete following message should be displayed.r’jÆj’jÎj\ƒjÐjõjÒ}r’(jÔ]jÕ]jÖ]j×]jÚ]ujÜM™jÞ]r’jçXHIf flashing procedure is complete following message should be displayed.r’…�r ’}r!’(jÅj’jÆj’ubaubaubeubj)�r"’}r#’(jÅX=Application is successfully flashed NAND flashing successful!jÆjÕ�jÎj\ƒjÐjjÒ}r$’(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM*"jÝhjÞ]r%’jçX=Application is successfully flashed NAND flashing successful!r&’…�r'’}r(’(jÅUjÆj"’ubaubjt)�r)’}r*’(jÅUjÆjÕ�jÎj\ƒjÐjwjÒ}r+’(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM¡jÝhjÞ]r,’j{)�r-’}r.’(jÅX8Once NAND flash writing completes, disconnect from CCS. jÆj)’jÎj\ƒjÐjjÒ}r/’(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r0’jò)�r1’}r2’(jÅX7Once NAND flash writing completes, disconnect from CCS.r3’jÆj-’jÎj\ƒjÐjõjÒ}r4’(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¡jÞ]r5’jçX7Once NAND flash writing completes, disconnect from CCS.r6’…�r7’}r8’(jÅj3’jÆj1’ubaubaubaubjhK)�r9’}r:’(jÅXBooting the targetr;’jÆjÕ�jÎj\ƒjÐjlKjÒ}r<’(j×]r=’Ubooting-the-target-1r>’ajÖ]jÔ]jÕ]jÚ]r?’hÈaujÜNjÝhjÞ]r@’jçXBooting the targetrA’…�rB’}rC’(jÅj;’jÆj9’ubaubjt)�rD’}rE’(jÅUjÆjÕ�jÎj\ƒjÐjwjÒ}rF’(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM¦jÝhjÞ]rG’(j{)�rH’}rI’(jÅX�Connect a UART cable to a host running a serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.jÆjD’jÎj\ƒjÐjjÒ}rJ’(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rK’jò)�rL’}rM’(jÅX�Connect a UART cable to a host running a serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.rN’jÆjH’jÎj\ƒjÐjõjÒ}rO’(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¦jÞ]rP’jçX�Connect a UART cable to a host running a serial terminal application (teraterm/hyperterminal) with 115200 baud, 8bit, No parity and 1 STOP bit configuration.rQ’…�rR’}rS’(jÅjN’jÆjL’ubaubaubj{)�rT’}rU’(jÅXlConfigure the board for NAND boot mode. Refer to corresponding hardware user's guide for bootmode settings.jÆjD’jÎj\ƒjÐjjÒ}rV’(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rW’jò)�rX’}rY’(jÅXlConfigure the board for NAND boot mode. Refer to corresponding hardware user's guide for bootmode settings.rZ’jÆjT’jÎj\ƒjÐjõjÒ}r[’(jÔ]jÕ]jÖ]j×]jÚ]ujÜM©jÞ]r\’jçXlConfigure the board for NAND boot mode. Refer to corresponding hardware user's guide for bootmode settings.r]’…�r^’}r_’(jÅjZ’jÆjX’ubaubaubj{)�r`’}ra’(jÅXùOn reset, ROM detects bootloader from NAND and copies it to internal memory. Bootloader then copies application image from the NAND to DDR and passes control to application. If the process is successful, following messages appear in serial console. jÆjD’jÎj\ƒjÐjjÒ}rb’(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rc’jò)�rd’}re’(jÅXøOn reset, ROM detects bootloader from NAND and copies it to internal memory. Bootloader then copies application image from the NAND to DDR and passes control to application. If the process is successful, following messages appear in serial console.rf’jÆj`’jÎj\ƒjÐjõjÒ}rg’(jÔ]jÕ]jÖ]j×]jÚ]ujÜM«jÞ]rh’jçXøOn reset, ROM detects bootloader from NAND and copies it to internal memory. Bootloader then copies application image from the NAND to DDR and passes control to application. If the process is successful, following messages appear in serial console.ri’…�rj’}rk’(jÅjf’jÆjd’ubaubaubeubj)�rl’}rm’(jÅX' StarterWare Boot Loader BOARDInit status [0x0] SoC  : [AM335X] Core  : [A8] Board Detected  : [GPEVM] Base Board Revision  : [1.5] Daughter Card Revision: [UNKNOWN] NAND flash is connected to GPMC on this board Jumping to StarterWare Application...jÆjÕ�jÎj\ƒjÐjjÒ}rn’(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM>"jÝhjÞ]ro’jçX' StarterWare Boot Loader BOARDInit status [0x0] SoC  : [AM335X] Core  : [A8] Board Detected  : [GPEVM] Base Board Revision  : [1.5] Daughter Card Revision: [UNKNOWN] NAND flash is connected to GPMC on this board Jumping to StarterWare Application...rp’…�rq’}rr’(jÅUjÆjl’ubaubjò)�rs’}rt’(jÅX7After this application should take control and execute.ru’jÆjÕ�jÎj\ƒjÐjõjÒ}rv’(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¼jÝhjÞ]rw’jçX7After this application should take control and execute.rx’…�ry’}rz’(jÅju’jÆjs’ubaubeubeubjÇ)�r{’}r|’(jÅUjKjÆjJƒjÎj\ƒjÐjÑjÒ}r}’(jÔ]r~’Xtest applicationr’ajÕ]jÖ]j×]r€’Utest-applicationr�’ajÚ]ujÜM¿jÝhjÞ]r‚’(jà)�rƒ’}r„’(jÅXTest Applicationr…’jÆj{’jÎj\ƒjÐjäjÒ}r†’(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¿jÝhjÞ]r‡’jçXTest Applicationrˆ’…�r‰’}rŠ’(jÅj…’jÆjƒ’ubaubjò)�r‹’}rŒ’(jÅXyThe section explains steps for building and booting a sample pdk application for am335x or am437x using MMCSD bootloader.r�’jÆj{’jÎj\ƒjÐjõjÒ}rŽ’(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÁjÝhjÞ]r�’jçXyThe section explains steps for building and booting a sample pdk application for am335x or am437x using MMCSD bootloader.r�’…�r‘’}r’’(jÅj�’jÆj‹’ubaubjÇ)�r“’}r”’(jÅUjÆj{’jÎj\ƒjÐjÑjÒ}r•’(jÔ]jÕ]jÖ]j×]r–’Utest-application-image-creationr—’ajÚ]r˜’hÀaujÜMÅjÝhjÞ]r™’(jà)�rš’}r›’(jÅXTest Application Image Creationrœ’jÆj“’jÎj\ƒjÐjäjÒ}r�’(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÅjÝhjÞ]rž’jçXTest Application Image CreationrŸ’…�r ’}r¡’(jÅjœ’jÆjš’ubaubjò)�r¢’}r£’(jÅX>Follow below steps to generate the bootable application image.r¤’jÆj“’jÎj\ƒjÐjõjÒ}r¥’(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÇjÝhjÞ]r¦’jçX>Follow below steps to generate the bootable application image.r§’…�r¨’}r©’(jÅj¤’jÆj¢’ubaubj )�rª’}r«’(jÅUjÆj“’jÎj\ƒjÐj jÒ}r¬’(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMÉjÝhjÞ]r­’(j{)�r®’}r¯’(jÅXÚGenerate .out files using steps for `Rebuilding PDK `__. Locate .out file in directory */Debug>*jÆjª’jÎj\ƒjÐjjÒ}r°’(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r±’jò)�r²’}r³’(jÅXÚGenerate .out files using steps for `Rebuilding PDK `__. Locate .out file in directory */Debug>*jÆj®’jÎj\ƒjÐjõjÒ}r´’(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÉjÞ]rµ’(jçX$Generate .out files using steps for r¶’…�r·’}r¸’(jÅX$Generate .out files using steps for jÆj²’ubjû)�r¹’}rº’(jÅXP`Rebuilding PDK `__jÒ}r»’(UnameXRebuilding PDKjX;index_how_to_guides.html#rebuild-drivers-from-pdk-directoryj×]jÖ]jÔ]jÕ]jÚ]ujÆj²’jÞ]r¼’jçXRebuilding PDKr½’…�r¾’}r¿’(jÅUjÆj¹’ubajÐjÿubjçX . Locate .out file in directory rÀ’…�rÁ’}rÂ’(jÅX . Locate .out file in directory jÆj²’ubjM)�rÃ’}rÄ’(jÅXF*/Debug>*jÒ}rÅ’(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²’jÞ]rÆ’jçXD/Debug>rÇ’…�rÈ’}rÉ’(jÅUjÆjÃ’ubajÐjUubeubaubj{)�rÊ’}rË’(jÅX¦Convert files to support MMCSD boot using steps as per `Binary format conversion procedure `__.jÆjª’jÎj\ƒjÐjjÒ}rÌ’(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÍ’jò)�rÎ’}rÏ’(jÅX¦Convert files to support MMCSD boot using steps as per `Binary format conversion procedure `__.jÆjÊ’jÎj\ƒjÐjõjÒ}rÐ’(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÌjÞ]rÑ’(jçX7Convert files to support MMCSD boot using steps as per rÒ’…�rÓ’}rÔ’(jÅX7Convert files to support MMCSD boot using steps as per jÆjÎ’ubjû)�rÕ’}rÖ’(jÅXn`Binary format conversion procedure `__jÒ}r×’(UnameX"Binary format conversion procedurejXEindex_Foundational_Components.html#binary-format-conversion-procedurej×]jÖ]jÔ]jÕ]jÚ]ujÆjÎ’jÞ]rØ’jçX"Binary format conversion procedurerÙ’…�rÚ’}rÛ’(jÅUjÆjÕ’ubajÐjÿubjçX.…�rÜ’}rÝ’(jÅX.jÆjÎ’ubeubaubj{)�rÞ’}rß’(jÅX0Rename generated _ti.bin to "app". jÆjª’jÎj\ƒjÐjjÒ}rà’(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rá’jò)�râ’}rã’(jÅX/Rename generated _ti.bin to "app".rä’jÆjÞ’jÎj\ƒjÐjõjÒ}rå’(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÎjÞ]ræ’jçX/Rename generated _ti.bin to "app".rç’…�rè’}ré’(jÅjä’jÆjâ’ubaubaubeubeubjÇ)�rê’}rë’(jÅUjÆj{’jÎj\ƒjÐjÑjÒ}rì’(jÔ]jÕ]jÖ]j×]rí’Uloading-test-applicationrî’ajÚ]rï’j¸aujÜMÑjÝhjÞ]rð’(jà)�rñ’}rò’(jÅXLoading Test applicationró’jÆjê’jÎj\ƒjÐjäjÒ}rô’(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÑjÝhjÞ]rõ’jçXLoading Test applicationrö’…�r÷’}rø’(jÅjó’jÆjñ’ubaubjò)�rù’}rú’(jÅXƒFollow procedure to use "app" file as per section `Booting Via SD Card `__.jÆjê’jÎj\ƒjÐjõjÒ}rû’(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÓjÝhjÞ]rü’(jçX2Follow procedure to use "app" file as per section rý’…�rþ’}rÿ’(jÅX2Follow procedure to use "app" file as per section jÆjù’ubjû)�r“}r“(jÅXP`Booting Via SD Card `__jÒ}r“(UnameXBooting Via SD CardjX6index_Foundational_Components.html#booting-via-sd-cardj×]jÖ]jÔ]jÕ]jÚ]ujÆjù’jÞ]r“jçXBooting Via SD Cardr“…�r“}r“(jÅUjÆj“ubajÐjÿubjçX.…�r“}r“(jÅX.jÆjù’ubeubeubeubjÇ)�r “}r “(jÅUjKjÆjJƒjÎj\ƒjÐjÑjÒ}r “(jÔ]r “X usage notesr “ajÕ]jÖ]j×]r“U usage-notesr“ajÚ]ujÜM×jÝhjÞ]r“(jà)�r“}r“(jÅX Usage Notesr“jÆj “jÎj\ƒjÐjäjÒ}r“(jÔ]jÕ]jÖ]j×]jÚ]ujÜM×jÝhjÞ]r“jçX Usage Notesr“…�r“}r“(jÅj“jÆj“ubaubjt)�r“}r“(jÅUjÆj “jÎj\ƒjÐjwjÒ}r“(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMÙjÝhjÞ]r“j{)�r“}r“(jÅX**Bootloader Memory map** jÆj“jÎj\ƒjÐjjÒ}r“(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r “jò)�r!“}r"“(jÅX**Bootloader Memory map**r#“jÆj“jÎj\ƒjÐjõjÒ}r$“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÙjÞ]r%“jÚ)�r&“}r'“(jÅj#“jÒ}r(“(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!“jÞ]r)“jçXBootloader Memory mapr*“…�r+“}r,“(jÅUjÆj&“ubajÐjâubaubaubaubjò)�r-“}r.“(jÅXšThe bootloader code runs from internal OCMC memory and occupies certain amount of OCMC memory that is not available for application to use during booting.r/“jÆj “jÎj\ƒjÐjõjÒ}r0“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÛjÝhjÞ]r1“jçXšThe bootloader code runs from internal OCMC memory and occupies certain amount of OCMC memory that is not available for application to use during booting.r2“…�r3“}r4“(jÅj/“jÆj-“ubaubjò)�r5“}r6“(jÅXwRefer to the map file for the boot loader to check for latest information on the memory utilization in the boot loader.r7“jÆj “jÎj\ƒjÐjõjÒ}r8“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMßjÝhjÞ]r9“jçXwRefer to the map file for the boot loader to check for latest information on the memory utilization in the boot loader.r:“…�r;“}r<“(jÅj7“jÆj5“ubaubjò)�r=“}r>“(jÅX Location of linker command file:r?“jÆj “jÎj\ƒjÐjõjÒ}r@“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMâjÝhjÞ]rA“jçX Location of linker command file:rB“…�rC“}rD“(jÅj?“jÆj=“ubaubj)�rE“}rF“(jÅX-BASE_DIR\binary\bootloader\bin\\gccjÆj “jÎj\ƒjÐjjÒ}rG“(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMr"jÝhjÞ]rH“jçX-BASE_DIR\binary\bootloader\bin\\gccrI“…�rJ“}rK“(jÅUjÆjE“ubaubjò)�rL“}rM“(jÅXXAfter SBL execution is complete, this region can be used as per application requirement.rN“jÆj “jÎj\ƒjÐjõjÒ}rO“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMèjÝhjÞ]rP“jçXXAfter SBL execution is complete, this region can be used as per application requirement.rQ“…�rR“}rS“(jÅjN“jÆjL“ubaubjt)�rT“}rU“(jÅUjÆj “jÎj\ƒjÐjwjÒ}rV“(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMëjÝhjÞ]rW“j{)�rX“}rY“(jÅX$**Configuring entry point for SBL** jÆjT“jÎj\ƒjÐjjÒ}rZ“(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r[“jò)�r\“}r]“(jÅX#**Configuring entry point for SBL**r^“jÆjX“jÎj\ƒjÐjõjÒ}r_“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMëjÞ]r`“jÚ)�ra“}rb“(jÅj^“jÒ}rc“(jÔ]jÕ]jÖ]j×]jÚ]ujÆj\“jÞ]rd“jçXConfiguring entry point for SBLre“…�rf“}rg“(jÅUjÆja“ubajÐjâubaubaubaubjò)�rh“}ri“(jÅX°The three files that help setup the entry point in the bootloader build are "PDK_INSTALL_PATH/packages/ti/starterware/soc/armv7a/gcc/sbl_init.S" and the linker command file "PDK_INSTALL_PATH/packages/ti/starterware/examples/gcc/_boot.lds". The global symbol Entry is used to provide the entry point to the bootloader. The Base address of the memory section OCMCRAM (starts at 1K offset in OCMC RAM as defined in TRM) is then used by the tiimage or GPHEader tool to provide RBL the guidance to find the entry point to pass control. After MLO is created check the TI image format file( \_ti.bin) to confirm that the entry point matches the location of Entry symbol in the .map file.jÆj “jÎj\ƒjÐjõjÒ}rj“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMíjÝhjÞ]rk“jçX¯The three files that help setup the entry point in the bootloader build are "PDK_INSTALL_PATH/packages/ti/starterware/soc/armv7a/gcc/sbl_init.S" and the linker command file "PDK_INSTALL_PATH/packages/ti/starterware/examples/gcc/_boot.lds". The global symbol Entry is used to provide the entry point to the bootloader. The Base address of the memory section OCMCRAM (starts at 1K offset in OCMC RAM as defined in TRM) is then used by the tiimage or GPHEader tool to provide RBL the guidance to find the entry point to pass control. After MLO is created check the TI image format file( _ti.bin) to confirm that the entry point matches the location of Entry symbol in the .map file.rl“…�rm“}rn“(jÅX°The three files that help setup the entry point in the bootloader build are "PDK_INSTALL_PATH/packages/ti/starterware/soc/armv7a/gcc/sbl_init.S" and the linker command file "PDK_INSTALL_PATH/packages/ti/starterware/examples/gcc/_boot.lds". The global symbol Entry is used to provide the entry point to the bootloader. The Base address of the memory section OCMCRAM (starts at 1K offset in OCMC RAM as defined in TRM) is then used by the tiimage or GPHEader tool to provide RBL the guidance to find the entry point to pass control. After MLO is created check the TI image format file( \_ti.bin) to confirm that the entry point matches the location of Entry symbol in the .map file.jÆjh“ubaubjë)�ro“}rp“(jÅX²The object file created by sbl_init.S should always be the first object file in the link order for the symbol Entry to be placed at the BASE address of the memory section SBL_MEMjÆj “jÎj\ƒjÐjïjÒ}rq“(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rr“jò)�rs“}rt“(jÅX²The object file created by sbl_init.S should always be the first object file in the link order for the symbol Entry to be placed at the BASE address of the memory section SBL_MEMru“jÆjo“jÎj\ƒjÐjõjÒ}rv“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMújÞ]rw“jçX²The object file created by sbl_init.S should always be the first object file in the link order for the symbol Entry to be placed at the BASE address of the memory section SBL_MEMrx“…�ry“}rz“(jÅju“jÆjs“ubaubaubjt)�r{“}r|“(jÅUjÆj “jÎj\ƒjÐjwjÒ}r}“(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMþjÝhjÞ]r~“j{)�r“}r€“(jÅX[**Boot image creation tools generates a large boot image if load sections are fragmented** jÆj{“jÎj\ƒjÐjjÒ}r�“(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‚“jò)�rƒ“}r„“(jÅXZ**Boot image creation tools generates a large boot image if load sections are fragmented**r…“jÆj“jÎj\ƒjÐjõjÒ}r†“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMþjÞ]r‡“jÚ)�rˆ“}r‰“(jÅj…“jÒ}rŠ“(jÔ]jÕ]jÖ]j×]jÚ]ujÆjƒ“jÞ]r‹“jçXVBoot image creation tools generates a large boot image if load sections are fragmentedrŒ“…�r�“}rŽ“(jÅUjÆjˆ“ubajÐjâubaubaubaubjò)�r�“}r�“(jÅX™Please note that when using objcopy the compiler generates a contiguous binary that gets loaded by the bootloader at the location specified in the header appended by TIIMAGE boot utility. IF you have some code sections in OCMC or SRAM and some section in DDR the compiler will generates a binary that spans across full memory range which would be in order of MB or even GB size so it is recommended that you create compact binaries that can be loaded into memory or implement a ELF parser to bootloader memory sections that may be fragmented in the address space. you can also load separate binaries for OCMC sections and DDR memory and load the sections separatelyr‘“jÆj “jÎj\ƒjÐjõjÒ}r’“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r““jçX™Please note that when using objcopy the compiler generates a contiguous binary that gets loaded by the bootloader at the location specified in the header appended by TIIMAGE boot utility. IF you have some code sections in OCMC or SRAM and some section in DDR the compiler will generates a binary that spans across full memory range which would be in order of MB or even GB size so it is recommended that you create compact binaries that can be loaded into memory or implement a ELF parser to bootloader memory sections that may be fragmented in the address space. you can also load separate binaries for OCMC sections and DDR memory and load the sections separatelyr”“…�r•“}r–“(jÅj‘“jÆj�“ubaubjt)�r—“}r˜“(jÅUjÆj “jÎj\ƒjÐjwjÒ}r™“(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]rš“j{)�r›“}rœ“(jÅXI**Removing Heap section from application binary to speed up boot times** jÆj—“jÎj\ƒjÐjjÒ}r�“(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rž“jò)�rŸ“}r “(jÅXH**Removing Heap section from application binary to speed up boot times**r¡“jÆj›“jÎj\ƒjÐjõjÒ}r¢“(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r£“jÚ)�r¤“}r¥“(jÅj¡“jÒ}r¦“(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŸ“jÞ]r§“jçXDRemoving Heap section from application binary to speed up boot timesr¨“…�r©“}rª“(jÅUjÆj¤“ubajÐjâubaubaubaubjò)�r«“}r¬“(jÅXA common issue reported with the ARM GCC compiler is that it appends Heap section associated with the binary to the binary image used to boot. The Heap section is usually filled with zeros so can cause significant delay in boot times. Essentially the bootloader will be writing a bunch of zeros in memory so is inefficient. Following work around has been used to circumvent the issuer­“jÆj “jÎj\ƒjÐjõjÒ}r®“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r¯“jçXA common issue reported with the ARM GCC compiler is that it appends Heap section associated with the binary to the binary image used to boot. The Heap section is usually filled with zeros so can cause significant delay in boot times. Essentially the bootloader will be writing a bunch of zeros in memory so is inefficient. Following work around has been used to circumvent the issuer°“…�r±“}r²“(jÅj­“jÆj«“ubaubjò)�r³“}r´“(jÅXt**Option 1:** Eliminate the heap by using the compiler option "--remove-section" as described in the E2E post below:jÆj “jÎj\ƒjÐjõjÒ}rµ“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r¶“(jÚ)�r·“}r¸“(jÅX **Option 1:**jÒ}r¹“(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³“jÞ]rº“jçX Option 1:r»“…�r¼“}r½“(jÅUjÆj·“ubajÐjâubjçXg Eliminate the heap by using the compiler option "--remove-section" as described in the E2E post below:r¾“…�r¿“}rÀ“(jÅXg Eliminate the heap by using the compiler option "--remove-section" as described in the E2E post below:jÆj³“ubeubjò)�rÁ“}r“(jÅX£**Refer:** `E2E post to configure Heap in ARM application binary by adding "--remove-section" `__jÆj “jÎj\ƒjÐjõjÒ}rÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rÄ“(jÚ)�rÅ“}rÆ“(jÅX **Refer:**jÒ}rÇ“(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÁ“jÞ]rÈ“jçXRefer:rÉ“…�rÊ“}rË“(jÅUjÆjÅ“ubajÐjâubjçX …�rÌ“}rÍ“(jÅX jÆjÁ“ubjû)�rΓ}rÏ“(jÅX˜`E2E post to configure Heap in ARM application binary by adding "--remove-section" `__jÒ}rГ(UnameXQE2E post to configure Heap in ARM application binary by adding "--remove-section"jX@https://e2e.ti.com/support/arm/sitara_arm/f/791/p/604616/2225826j×]jÖ]jÔ]jÕ]jÚ]ujÆjÁ“jÞ]rÑ“jçXQE2E post to configure Heap in ARM application binary by adding "--remove-section"rÒ“…�rÓ“}rÔ“(jÅUjÆjΓubajÐjÿubeubjò)�rÕ“}rÖ“(jÅX**Example BIOS configuration:**rדjÆj “jÎj\ƒjÐjõjÒ}rØ“(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rÙ“jÚ)�rÚ“}rÛ“(jÅjדjÒ}rÜ“(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÕ“jÞ]rÝ“jçXExample BIOS configuration:rÞ“…�rß“}rà“(jÅUjÆjÚ“ubajÐjâubaubj)�rá“}râ“(jÅXvar heap1 = HeapMem.create(); heap1.size = 256 * 1024 * 1024; heap1.sectionName = ".stack"; Memory.defaultHeapInstance = heap1;jÆj “jÎj\ƒjÐjjÒ}rã“(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM­"jÝhjÞ]rä“jçXvar heap1 = HeapMem.create(); heap1.size = 256 * 1024 * 1024; heap1.sectionName = ".stack"; Memory.defaultHeapInstance = heap1;rå“…�ræ“}rç“(jÅUjÆjá“ubaubjò)�rè“}ré“(jÅX/**Compiler Setting :** --remove-section=.stackrê“jÆj “jÎj\ƒjÐjõjÒ}rë“(jÔ]jÕ]jÖ]j×]jÚ]ujÜM&jÝhjÞ]rì“(jÚ)�rí“}rî“(jÅX**Compiler Setting :**jÒ}rï“(jÔ]jÕ]jÖ]j×]jÚ]ujÆjè“jÞ]rð“jçXCompiler Setting :rñ“…�rò“}ró“(jÅUjÆjí“ubajÐjâubjçX --remove-section=.stackrô“…�rõ“}rö“(jÅX --remove-section=.stackjÆjè“ubeubjò)�r÷“}rø“(jÅXS**Option 2** Configure Segment type to be "NO LOAD" in .cfg and use excludeSectionsjÆj “jÎj\ƒjÐjõjÒ}rù“(jÔ]jÕ]jÖ]j×]jÚ]ujÜM(jÝhjÞ]rú“(jÚ)�rû“}rü“(jÅX **Option 2**jÒ}rý“(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷“jÞ]rþ“jçXOption 2rÿ“…�r”}r”(jÅUjÆjû“ubajÐjâubjçXG Configure Segment type to be "NO LOAD" in .cfg and use excludeSectionsr”…�r”}r”(jÅXG Configure Segment type to be "NO LOAD" in .cfg and use excludeSectionsjÆj÷“ubeubjò)�r”}r”(jÅXàSYSBIOS Memory map configurations allows user to specify the section name, length and type. by configuring the section type to "NOLOAD" and using excludeSection option the heap memory can be eliminated from the final binary.r”jÆj “jÎj\ƒjÐjõjÒ}r”(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÝhjÞ]r ”jçXàSYSBIOS Memory map configurations allows user to specify the section name, length and type. by configuring the section type to "NOLOAD" and using excludeSection option the heap memory can be eliminated from the final binary.r ”…�r ”}r ”(jÅj”jÆj”ubaubjò)�r ”}r”(jÅX**Example BIOS configuration:**r”jÆj “jÎj\ƒjÐjõjÒ}r”(jÔ]jÕ]jÖ]j×]jÚ]ujÜM0jÝhjÞ]r”jÚ)�r”}r”(jÅj”jÒ}r”(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ”jÞ]r”jçXExample BIOS configuration:r”…�r”}r”(jÅUjÆj”ubajÐjâubaubj)�r”}r”(jÅX˜Program.sectMap[".biosheap"] = new Program.SectionSpec(); Program.sectMap[".biosheap"].runSegment = "DDR2" Program.sectMap[".biosheap"].type = "NOLOAD";jÆj “jÎj\ƒjÐjjÒ}r”(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÀ"jÝhjÞ]r”jçX˜Program.sectMap[".biosheap"] = new Program.SectionSpec(); Program.sectMap[".biosheap"].runSegment = "DDR2" Program.sectMap[".biosheap"].type = "NOLOAD";r”…�r”}r”(jÅUjÆj”ubaubj)�r ”}r!”(jÅX%Program.sectionsExclude = ".biosheap"jÆj “jÎj\ƒjÐjjÒ}r"”(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÆ"jÝhjÞ]r#”jçX%Program.sectionsExclude = ".biosheap"r$”…�r%”}r&”(jÅUjÆj ”ubaubjò)�r'”}r(”(jÅX-Alternate approach using linker command file:r)”jÆj “jÎj\ƒjÐjõjÒ}r*”(jÔ]jÕ]jÖ]j×]jÚ]ujÜM<jÝhjÞ]r+”jçX-Alternate approach using linker command file:r,”…�r-”}r.”(jÅj)”jÆj'”ubaubj)�r/”}r0”(jÅX:.ddr3Heap (NOLOAD): { *(.ddr3Heap) } > HOST_DDR3jÆj “jÎj\ƒjÐjjÒ}r1”(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÌ"jÝhjÞ]r2”jçX:.ddr3Heap (NOLOAD): { *(.ddr3Heap) } > HOST_DDR3r3”…�r4”}r5”(jÅUjÆj/”ubaubjë)�r6”}r7”(jÅXÛThe approach described above helps improve boot times but Users are recommended to initialize the HEAP sections to zeros post boot during initialization to avoid any undesired behavior during normal operation of the appjÆj “jÎj\ƒjÐjïjÒ}r8”(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r9”jò)�r:”}r;”(jÅXÛThe approach described above helps improve boot times but Users are recommended to initialize the HEAP sections to zeros post boot during initialization to avoid any undesired behavior during normal operation of the appr<”jÆj6”jÎj\ƒjÐjõjÒ}r=”(jÔ]jÕ]jÖ]j×]jÚ]ujÜMFjÞ]r>”jçXÛThe approach described above helps improve boot times but Users are recommended to initialize the HEAP sections to zeros post boot during initialization to avoid any undesired behavior during normal operation of the appr?”…�r@”}rA”(jÅj<”jÆj:”ubaubaubeubjÇ)�rB”}rC”(jÅUjKjÆjJƒjÎj\ƒjÐjÑjÒ}rD”(jÔ]rE”Xdebugging application bootrF”ajÕ]jÖ]j×]rG”Udebugging-application-bootrH”ajÚ]ujÜMLjÝhjÞ]rI”(jà)�rJ”}rK”(jÅXDebugging application bootrL”jÆjB”jÎj\ƒjÐjäjÒ}rM”(jÔ]jÕ]jÖ]j×]jÚ]ujÜMLjÝhjÞ]rN”jçXDebugging application bootrO”…�rP”}rQ”(jÅjL”jÆjJ”ubaubjò)�rR”}rS”(jÅXÛSteps to debug application boot using Processor SDK RTOS bootloader are discussed in the article **`Common steps to debug application boot `__**jÆjB”jÎj\ƒjÐjõjÒ}rT”(jÔ]jÕ]jÖ]j×]jÚ]ujÜMNjÝhjÞ]rU”(jçXaSteps to debug application boot using Processor SDK RTOS bootloader are discussed in the article rV”…�rW”}rX”(jÅXaSteps to debug application boot using Processor SDK RTOS bootloader are discussed in the article jÆjR”ubjÚ)�rY”}rZ”(jÅXz**`Common steps to debug application boot `__**jÒ}r[”(jÔ]jÕ]jÖ]j×]jÚ]ujÆjR”jÞ]r\”jçXv`Common steps to debug application boot `__r]”…�r^”}r_”(jÅUjÆjY”ubajÐjâubeubeubeubjÇ)�r`”}ra”(jÅUjÆj;ƒjÎj¥‚jÐjÑjÒ}rb”(jÔ]jÕ]jÖ]j×]rc”Uam57xrd”ajÚ]re”jnaujÜKOjÝhjÞ]rf”(jà)�rg”}rh”(jÅXAM57xri”jÆj`”jÎj¥‚jÐjäjÒ}rj”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÝhjÞ]rk”jçXAM57xrl”…�rm”}rn”(jÅji”jÆjg”ubaubj7)�ro”}rp”(jÅXEhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_AM57xjÆj`”jÎj:XTsource/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_AM57x.rst.incrq”…�rr”}rs”bjÐj>jÒ}rt”(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]ru”jçXEhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_AM57xrv”…�rw”}rx”(jÅUjÆjo”ubaubjÇ)�ry”}rz”(jÅUjKjÆj`”jÎjr”jÐjÑjÒ}r{”(jÔ]r|”Xoverviewr}”ajÕ]jÖ]j×]r~”Uid70r”ajÚ]ujÜKjÝhjÞ]r€”(jà)�r�”}r‚”(jÅXOverviewrƒ”jÆjy”jÎjr”jÐjäjÒ}r„”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r…”jçXOverviewr†”…�r‡”}rˆ”(jÅjƒ”jÆj�”ubaubjò)�r‰”}rŠ”(jÅXThe Secondary Bootloader (SBL) for AM57xx device initializes the execution environment for multi-core application and this can be used to demonstrate an out-of-box experience.The section covers additional details including execution sequence, tools and additional flashing instructions.r‹”jÆjy”jÎjr”jÐjõjÒ}rŒ”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r�”jçXThe Secondary Bootloader (SBL) for AM57xx device initializes the execution environment for multi-core application and this can be used to demonstrate an out-of-box experience.The section covers additional details including execution sequence, tools and additional flashing instructions.rŽ”…�r�”}r�”(jÅj‹”jÆj‰”ubaubeubjÇ)�r‘”}r’”(jÅUjKjÆj`”jÎjr”jÐjÑjÒ}r“”(jÔ]r””j{„ajÕ]jÖ]j×]r•”Uid71r–”ajÚ]ujÜK jÝhjÞ]r—”(jà)�r˜”}r™”(jÅXBootloader Execution Sequencerš”jÆj‘”jÎjr”jÐjäjÒ}r›”(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rœ”jçXBootloader Execution Sequencer�”…�rž”}rŸ”(jÅjš”jÆj˜”ubaubjt)�r ”}r¡”(jÅUjÆj‘”jÎjr”jÐjwjÒ}r¢”(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r£”(j{)�r¤”}r¥”(jÅX**Power On Reset**r¦”jÆj ”jÎjr”jÐjjÒ}r§”(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¨”jò)�r©”}rª”(jÅj¦”jÆj¤”jÎjr”jÐjõjÒ}r«”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¬”jÚ)�r­”}r®”(jÅj¦”jÒ}r¯”(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©”jÞ]r°”jçXPower On Resetr±”…�r²”}r³”(jÅUjÆj­”ubajÐjâubaubaubj{)�r´”}rµ”(jÅXß**ROM Bootloader (RBL)** - Software pre-programmed in ROM memory starts executing - Checks Sysboot pins and choose booting device - If no valid bootloader found on booting device, RBL checks for next booting device. - Platform configuration and initialization. - Configures DPLL and clock settings for MPU, and boot media like I2C, MMCSD, SD/MMC, SPI, QSPI, Ethernet etc for reliable boot. - The sequence depends on RBL execution flow and Sysboot pins. - RBL gets image size and load address by checking TI Image Header appended on bootloader binary(.bin). Check binary formats. - Loads the binary to internal memory at the Load address fetched from TI Image Header - Passes control to Secondary Bootloader(SBL) jÆj ”jÎNjÐjjÒ}r¶”(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r·”(jò)�r¸”}r¹”(jÅX**ROM Bootloader (RBL)**rº”jÆj´”jÎjr”jÐjõjÒ}r»”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¼”jÚ)�r½”}r¾”(jÅjº”jÒ}r¿”(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸”jÞ]rÀ”jçXROM Bootloader (RBL)rÁ”…�r”}rÔ(jÅUjÆj½”ubajÐjâubaubjt)�rÄ”}rÅ”(jÅUjÒ}rÆ”(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj´”jÞ]rÇ”(j{)�rÈ”}rÉ”(jÅX6Software pre-programmed in ROM memory starts executingrÊ”jÒ}rË”(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄ”jÞ]rÌ”jò)�rÍ”}rΔ(jÅjÊ”jÆjÈ”jÎjr”jÐjõjÒ}rÏ”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rДjçX6Software pre-programmed in ROM memory starts executingrÑ”…�rÒ”}rÓ”(jÅjÊ”jÆjÍ”ubaubajÐjubj{)�rÔ”}rÕ”(jÅX-Checks Sysboot pins and choose booting devicerÖ”jÒ}r×”(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄ”jÞ]rØ”jò)�rÙ”}rÚ”(jÅjÖ”jÆjÔ”jÎjr”jÐjõjÒ}rÛ”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÜ”jçX-Checks Sysboot pins and choose booting devicerÝ”…�rÞ”}rß”(jÅjÖ”jÆjÙ”ubaubajÐjubj{)�rà”}rá”(jÅXSIf no valid bootloader found on booting device, RBL checks for next booting device.jÒ}râ”(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄ”jÞ]rã”jò)�rä”}rå”(jÅXSIf no valid bootloader found on booting device, RBL checks for next booting device.ræ”jÆjà”jÎjr”jÐjõjÒ}rç”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rè”jçXSIf no valid bootloader found on booting device, RBL checks for next booting device.ré”…�rê”}rë”(jÅjæ”jÆjä”ubaubajÐjubj{)�rì”}rí”(jÅX*Platform configuration and initialization.rî”jÒ}rï”(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄ”jÞ]rð”jò)�rñ”}rò”(jÅjî”jÆjì”jÎjr”jÐjõjÒ}ró”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rô”jçX*Platform configuration and initialization.rõ”…�rö”}r÷”(jÅjî”jÆjñ”ubaubajÐjubj{)�rø”}rù”(jÅX~Configures DPLL and clock settings for MPU, and boot media like I2C, MMCSD, SD/MMC, SPI, QSPI, Ethernet etc for reliable boot.jÒ}rú”(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄ”jÞ]rû”jò)�rü”}rý”(jÅX~Configures DPLL and clock settings for MPU, and boot media like I2C, MMCSD, SD/MMC, SPI, QSPI, Ethernet etc for reliable boot.rþ”jÆjø”jÎjr”jÐjõjÒ}rÿ”(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r•jçX~Configures DPLL and clock settings for MPU, and boot media like I2C, MMCSD, SD/MMC, SPI, QSPI, Ethernet etc for reliable boot.r•…�r•}r•(jÅjþ”jÆjü”ubaubajÐjubj{)�r•}r•(jÅX<The sequence depends on RBL execution flow and Sysboot pins.r•jÒ}r•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄ”jÞ]r•jò)�r •}r •(jÅj•jÆj•jÎjr”jÐjõjÒ}r •(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r •jçX<The sequence depends on RBL execution flow and Sysboot pins.r •…�r•}r•(jÅj•jÆj •ubaubajÐjubj{)�r•}r•(jÅX|RBL gets image size and load address by checking TI Image Header appended on bootloader binary(.bin). Check binary formats.jÒ}r•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄ”jÞ]r•jò)�r•}r•(jÅX|RBL gets image size and load address by checking TI Image Header appended on bootloader binary(.bin). Check binary formats.r•jÆj•jÎjr”jÐjõjÒ}r•(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r•jçX|RBL gets image size and load address by checking TI Image Header appended on bootloader binary(.bin). Check binary formats.r•…�r•}r•(jÅj•jÆj•ubaubajÐjubj{)�r•}r•(jÅXTLoads the binary to internal memory at the Load address fetched from TI Image HeaderjÒ}r•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄ”jÞ]r•jò)�r •}r!•(jÅXTLoads the binary to internal memory at the Load address fetched from TI Image Headerr"•jÆj•jÎjr”jÐjõjÒ}r#•(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r$•jçXTLoads the binary to internal memory at the Load address fetched from TI Image Headerr%•…�r&•}r'•(jÅj"•jÆj •ubaubajÐjubj{)�r(•}r)•(jÅX,Passes control to Secondary Bootloader(SBL) jÒ}r*•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄ”jÞ]r+•jò)�r,•}r-•(jÅX+Passes control to Secondary Bootloader(SBL)r.•jÆj(•jÎjr”jÐjõjÒ}r/•(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r0•jçX+Passes control to Secondary Bootloader(SBL)r1•…�r2•}r3•(jÅj.•jÆj,•ubaubajÐjubejÐjwubeubeubjë)�r4•}r5•(jÅX™Detailed description of ROM bootloader is provided in Initialization Chapter in `AM57xx Technical Reference manual `__jÆj‘”jÎjr”jÐjïjÒ}r6•(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r7•jò)�r8•}r9•(jÅX™Detailed description of ROM bootloader is provided in Initialization Chapter in `AM57xx Technical Reference manual `__jÆj4•jÎjr”jÐjõjÒ}r:•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]r;•(jçXPDetailed description of ROM bootloader is provided in Initialization Chapter in r<•…�r=•}r>•(jÅXPDetailed description of ROM bootloader is provided in Initialization Chapter in jÆj8•ubjû)�r?•}r@•(jÅXI`AM57xx Technical Reference manual `__jÒ}rA•(UnameX!AM57xx Technical Reference manualjX!http://www.ti.com/lit/pdf/spruhz6j×]jÖ]jÔ]jÕ]jÚ]ujÆj8•jÞ]rB•jçX!AM57xx Technical Reference manualrC•…�rD•}rE•(jÅUjÆj?•ubajÐjÿubeubaubjt)�rF•}rG•(jÅUjÆj‘”jÎjr”jÐjwjÒ}rH•(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK%jÝhjÞ]rI•(j{)�rJ•}rK•(jÅXt**Secondary bootloader(SBL)** - User level secondary bootloader(SBL) begins execution from internal memory by running basic initialization routines like setting up Stack, BSS and then jumps to main() to begin Board Initialization. - Board Initialization is done by a call to **Board_init()** API.For additional details refer `Processor SDK Board Support `__. - It includes setting up PLLs, enabling clocks to all interfaces and modules, performing pinmux and setting up UART console. - Once Board Initialization is complete, it enables clocks to the slave cores like C66x/DSP, IPU, etc and brings them out of reset. - Parses Multicore Application image located in memory device and copies it to DDR memory based on load address for different sections. - Once copy is successful it transfers control to application. jÆjF•jÎNjÐjjÒ}rL•(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rM•(jò)�rN•}rO•(jÅX**Secondary bootloader(SBL)**rP•jÆjJ•jÎjr”jÐjõjÒ}rQ•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÞ]rR•jÚ)�rS•}rT•(jÅjP•jÒ}rU•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjN•jÞ]rV•jçXSecondary bootloader(SBL)rW•…�rX•}rY•(jÅUjÆjS•ubajÐjâubaubjt)�rZ•}r[•(jÅUjÒ}r\•(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjJ•jÞ]r]•(j{)�r^•}r_•(jÅXÆUser level secondary bootloader(SBL) begins execution from internal memory by running basic initialization routines like setting up Stack, BSS and then jumps to main() to begin Board Initialization.jÒ}r`•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjZ•jÞ]ra•jò)�rb•}rc•(jÅXÆUser level secondary bootloader(SBL) begins execution from internal memory by running basic initialization routines like setting up Stack, BSS and then jumps to main() to begin Board Initialization.rd•jÆj^•jÎjr”jÐjõjÒ}re•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]rf•jçXÆUser level secondary bootloader(SBL) begins execution from internal memory by running basic initialization routines like setting up Stack, BSS and then jumps to main() to begin Board Initialization.rg•…�rh•}ri•(jÅjd•jÆjb•ubaubajÐjubj{)�rj•}rk•(jÅX�Board Initialization is done by a call to **Board_init()** API.For additional details refer `Processor SDK Board Support `__.jÒ}rl•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjZ•jÞ]rm•jò)�rn•}ro•(jÅX�Board Initialization is done by a call to **Board_init()** API.For additional details refer `Processor SDK Board Support `__.jÆjj•jÎjr”jÐjõjÒ}rp•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÞ]rq•(jçX*Board Initialization is done by a call to rr•…�rs•}rt•(jÅX*Board Initialization is done by a call to jÆjn•ubjÚ)�ru•}rv•(jÅX**Board_init()**jÒ}rw•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjn•jÞ]rx•jçX Board_init()ry•…�rz•}r{•(jÅUjÆju•ubajÐjâubjçX" API.For additional details refer r|•…�r}•}r~•(jÅX" API.For additional details refer jÆjn•ubjû)�r•}r€•(jÅX@`Processor SDK Board Support `__jÒ}r�•(UnameXProcessor SDK Board SupportjXindex_board.html#board-supportj×]jÖ]jÔ]jÕ]jÚ]ujÆjn•jÞ]r‚•jçXProcessor SDK Board Supportrƒ•…�r„•}r…•(jÅUjÆj•ubajÐjÿubjçX.…�r†•}r‡•(jÅX.jÆjn•ubeubajÐjubj{)�rˆ•}r‰•(jÅXzIt includes setting up PLLs, enabling clocks to all interfaces and modules, performing pinmux and setting up UART console.jÒ}rŠ•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjZ•jÞ]r‹•jò)�rŒ•}r�•(jÅXzIt includes setting up PLLs, enabling clocks to all interfaces and modules, performing pinmux and setting up UART console.rŽ•jÆjˆ•jÎjr”jÐjõjÒ}r�•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]r�•jçXzIt includes setting up PLLs, enabling clocks to all interfaces and modules, performing pinmux and setting up UART console.r‘•…�r’•}r“•(jÅjŽ•jÆjŒ•ubaubajÐjubj{)�r”•}r••(jÅX�Once Board Initialization is complete, it enables clocks to the slave cores like C66x/DSP, IPU, etc and brings them out of reset.jÒ}r–•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjZ•jÞ]r—•jò)�r˜•}r™•(jÅX�Once Board Initialization is complete, it enables clocks to the slave cores like C66x/DSP, IPU, etc and brings them out of reset.rš•jÆj”•jÎjr”jÐjõjÒ}r›•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rœ•jçX�Once Board Initialization is complete, it enables clocks to the slave cores like C66x/DSP, IPU, etc and brings them out of reset.r�•…�rž•}rŸ•(jÅjš•jÆj˜•ubaubajÐjubj{)�r •}r¡•(jÅX‡Parses Multicore Application image located in memory device and copies it to DDR memory based on load address for different sections.jÒ}r¢•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjZ•jÞ]r£•jò)�r¤•}r¥•(jÅX‡Parses Multicore Application image located in memory device and copies it to DDR memory based on load address for different sections.r¦•jÆj •jÎjr”jÐjõjÒ}r§•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r¨•jçX‡Parses Multicore Application image located in memory device and copies it to DDR memory based on load address for different sections.r©•…�rª•}r«•(jÅj¦•jÆj¤•ubaubajÐjubj{)�r¬•}r­•(jÅX>Once copy is successful it transfers control to application. jÒ}r®•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjZ•jÞ]r¯•jò)�r°•}r±•(jÅX=Once copy is successful it transfers control to application.r²•jÆj¬•jÎjr”jÐjõjÒ}r³•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK5jÞ]r´•jçX=Once copy is successful it transfers control to application.rµ•…�r¶•}r·•(jÅj²•jÆj°•ubaubajÐjubejÐjwubeubj{)�r¸•}r¹•(jÅX0**Application then starts executing from DDR**. jÆjF•jÎjr”jÐjjÒ}rº•(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r»•jò)�r¼•}r½•(jÅX/**Application then starts executing from DDR**.jÆj¸•jÎjr”jÐjõjÒ}r¾•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK7jÞ]r¿•(jÚ)�rÀ•}rÁ•(jÅX.**Application then starts executing from DDR**jÒ}r•(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼•jÞ]rÕjçX*Application then starts executing from DDRrÄ•…�rÅ•}rÆ•(jÅUjÆjÀ•ubajÐjâubjçX.…�rÇ•}rÈ•(jÅX.jÆj¼•ubeubaubeubjë)�rÉ•}rÊ•(jÅX- RBL requires boot loader to be in a special format with a header appended to the binary image. The header shall contain the load address of the bootloader and size of the bootloader image. - For more information on the TI header refer TRM documentjÆj‘”jÎNjÐjïjÒ}rË•(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÌ•jt)�rÍ•}rΕ(jÅUjÒ}rÏ•(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjÉ•jÞ]rЕ(j{)�rÑ•}rÒ•(jÅX¼RBL requires boot loader to be in a special format with a header appended to the binary image. The header shall contain the load address of the bootloader and size of the bootloader image.jÒ}rÓ•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÍ•jÞ]rÔ•jò)�rÕ•}rÖ•(jÅX¼RBL requires boot loader to be in a special format with a header appended to the binary image. The header shall contain the load address of the bootloader and size of the bootloader image.rוjÆjÑ•jÎjr”jÐjõjÒ}rØ•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÞ]rÙ•jçX¼RBL requires boot loader to be in a special format with a header appended to the binary image. The header shall contain the load address of the bootloader and size of the bootloader image.rÚ•…�rÛ•}rÜ•(jÅjוjÆjÕ•ubaubajÐjubj{)�rÝ•}rÞ•(jÅX8For more information on the TI header refer TRM documentrß•jÒ}rà•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÍ•jÞ]rá•jò)�râ•}rã•(jÅjß•jÆjÝ•jÎjr”jÐjõjÒ}rä•(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]rå•jçX8For more information on the TI header refer TRM documentræ•…�rç•}rè•(jÅjß•jÆjâ•ubaubajÐjubejÐjwubaubeubjÇ)�ré•}rê•(jÅUjKjÆj`”jÎjr”jÐjÑjÒ}rë•(jÔ]rì•Xdirectory structurerí•ajÕ]jÖ]j×]rî•Udirectory-structurerï•ajÚ]ujÜKAjÝhjÞ]rð•(jà)�rñ•}rò•(jÅXDirectory structureró•jÆjé•jÎjr”jÐjäjÒ}rô•(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÝhjÞ]rõ•jçXDirectory structurerö•…�r÷•}rø•(jÅjó•jÆjñ•ubaubjò)�rù•}rú•(jÅX**Makefiles:**rû•jÆjé•jÎjr”jÐjõjÒ}rü•(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÝhjÞ]rý•jÚ)�rþ•}rÿ•(jÅjû•jÒ}r–(jÔ]jÕ]jÖ]j×]jÚ]ujÆjù•jÞ]r–jçX Makefiles:r–…�r–}r–(jÅUjÆjþ•ubajÐjâubaubjt)�r–}r–(jÅUjÆjé•jÎjr”jÐjwjÒ}r–(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKEjÝhjÞ]r–j{)�r –}r –(jÅX´**PDK_INSTALL_PATH/ti/boot/sbl/board//build**: Makefile for bootloader that provides list of source files and library and compiler options to create bootloader binary. jÆj–jÎjr”jÐjjÒ}r –(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r –jò)�r –}r–(jÅX³**PDK_INSTALL_PATH/ti/boot/sbl/board//build**: Makefile for bootloader that provides list of source files and library and compiler options to create bootloader binary.jÆj –jÎjr”jÐjõjÒ}r–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÞ]r–(jÚ)�r–}r–(jÅX9**PDK_INSTALL_PATH/ti/boot/sbl/board//build**jÒ}r–(jÔ]jÕ]jÖ]j×]jÚ]ujÆj –jÞ]r–jçX5PDK_INSTALL_PATH/ti/boot/sbl/board//buildr–…�r–}r–(jÅUjÆj–ubajÐjâubjçXz: Makefile for bootloader that provides list of source files and library and compiler options to create bootloader binary.r–…�r–}r–(jÅXz: Makefile for bootloader that provides list of source files and library and compiler options to create bootloader binary.jÆj –ubeubaubaubjò)�r–}r–(jÅX**Source Files:**r–jÆjé•jÎjr”jÐjõjÒ}r–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÝhjÞ]r–jÚ)�r –}r!–(jÅj–jÒ}r"–(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–jÞ]r#–jçX Source Files:r$–…�r%–}r&–(jÅUjÆj –ubajÐjâubaubjt)�r'–}r(–(jÅUjÆjé•jÎjr”jÐjwjÒ}r)–(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKKjÝhjÞ]r*–(j{)�r+–}r,–(jÅXo**PDK_INSTALL_PATH/ti/boot/sbl/board/**: Source to SBL main function that consolidates all featuresjÆj'–jÎjr”jÐjjÒ}r-–(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r.–jò)�r/–}r0–(jÅXo**PDK_INSTALL_PATH/ti/boot/sbl/board/**: Source to SBL main function that consolidates all featuresjÆj+–jÎjr”jÐjõjÒ}r1–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÞ]r2–(jÚ)�r3–}r4–(jÅX3**PDK_INSTALL_PATH/ti/boot/sbl/board/**jÒ}r5–(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/–jÞ]r6–jçX/PDK_INSTALL_PATH/ti/boot/sbl/board/r7–…�r8–}r9–(jÅUjÆj3–ubajÐjâubjçX<: Source to SBL main function that consolidates all featuresr:–…�r;–}r<–(jÅX<: Source to SBL main function that consolidates all featuresjÆj/–ubeubaubj{)�r=–}r>–(jÅX\**PDK_INSTALL_PATH/ti/boot/sbl/soc**: Source to SOC specific initialization used in the SBL.jÆj'–jÎjr”jÐjjÒ}r?–(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r@–jò)�rA–}rB–(jÅX\**PDK_INSTALL_PATH/ti/boot/sbl/soc**: Source to SOC specific initialization used in the SBL.jÆj=–jÎjr”jÐjõjÒ}rC–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÞ]rD–(jÚ)�rE–}rF–(jÅX$**PDK_INSTALL_PATH/ti/boot/sbl/soc**jÒ}rG–(jÔ]jÕ]jÖ]j×]jÚ]ujÆjA–jÞ]rH–jçX PDK_INSTALL_PATH/ti/boot/sbl/socrI–…�rJ–}rK–(jÅUjÆjE–ubajÐjâubjçX8: Source to SOC specific initialization used in the SBL.rL–…�rM–}rN–(jÅX8: Source to SOC specific initialization used in the SBL.jÆjA–ubeubaubj{)�rO–}rP–(jÅXd**PDK_INSTALL_PATH/ti/boot/sbl/src**: Source to boot media specific initialization used in the SBL. jÆj'–jÎjr”jÐjjÒ}rQ–(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rR–jò)�rS–}rT–(jÅXc**PDK_INSTALL_PATH/ti/boot/sbl/src**: Source to boot media specific initialization used in the SBL.jÆjO–jÎjr”jÐjõjÒ}rU–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÞ]rV–(jÚ)�rW–}rX–(jÅX$**PDK_INSTALL_PATH/ti/boot/sbl/src**jÒ}rY–(jÔ]jÕ]jÖ]j×]jÚ]ujÆjS–jÞ]rZ–jçX PDK_INSTALL_PATH/ti/boot/sbl/srcr[–…�r\–}r]–(jÅUjÆjW–ubajÐjâubjçX?: Source to boot media specific initialization used in the SBL.r^–…�r_–}r`–(jÅX?: Source to boot media specific initialization used in the SBL.jÆjS–ubeubaubeubjc)�ra–}rb–(jÅUjÆjé•jÎjr”jÐjfjÒ}rc–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÝhjÞ]rd–ji)�re–}rf–(jÅUjlKjÆja–jÎjr”jÐjÜjÒ}rg–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�rh–}ri–(jÅUjKjÆj`”jÎjr”jÐjÑjÒ}rj–(jÔ]rk–jr…ajÕ]jÖ]j×]rl–Uid72rm–ajÚ]ujÜKUjÝhjÞ]rn–(jà)�ro–}rp–(jÅXTools and Binary Formatsrq–jÆjh–jÎjr”jÐjäjÒ}rr–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÝhjÞ]rs–jçXTools and Binary Formatsrt–…�ru–}rv–(jÅjq–jÆjo–ubaubjò)�rw–}rx–(jÅX•This section lists out the various tools and scripts used by SBL for different boot modes and those required to create a bootable application image.ry–jÆjh–jÎjr”jÐjõjÒ}rz–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKWjÝhjÞ]r{–jçX•This section lists out the various tools and scripts used by SBL for different boot modes and those required to create a bootable application image.r|–…�r}–}r~–(jÅjy–jÆjw–ubaubjò)�r–}r€–(jÅX"**SBL/MLO image format:** To generate the *MLO*, SBL uses tiImageGen tool to prepend the sbl.bin image with the TI header information. The image format has been described in detail in the Image Format Section of the\ `AM57xx Technical Reference manual `__jÆjh–jÎjr”jÐjõjÒ}r�–(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÝhjÞ]r‚–(jÚ)�rƒ–}r„–(jÅX**SBL/MLO image format:**jÒ}r…–(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–jÞ]r†–jçXSBL/MLO image format:r‡–…�rˆ–}r‰–(jÅUjÆjƒ–ubajÐjâubjçX To generate the rŠ–…�r‹–}rŒ–(jÅX To generate the jÆj–ubjM)�r�–}rŽ–(jÅX*MLO*jÒ}r�–(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–jÞ]r�–jçXMLOr‘–…�r’–}r“–(jÅUjÆj�–ubajÐjUubjçX¨, SBL uses tiImageGen tool to prepend the sbl.bin image with the TI header information. The image format has been described in detail in the Image Format Section of ther”–…�r•–}r––(jÅXª, SBL uses tiImageGen tool to prepend the sbl.bin image with the TI header information. The image format has been described in detail in the Image Format Section of the\ jÆj–ubjû)�r—–}r˜–(jÅXI`AM57xx Technical Reference manual `__jÒ}r™–(UnameX!AM57xx Technical Reference manualjX!http://www.ti.com/lit/pdf/spruhz6j×]jÖ]jÔ]jÕ]jÚ]ujÆj–jÞ]rš–jçX!AM57xx Technical Reference manualr›–…�rœ–}r�–(jÅUjÆj—–ubajÐjÿubeubjc)�rž–}rŸ–(jÅUjÆjh–jÎjr”jÐjfjÒ}r –(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÝhjÞ]r¡–ji)�r¢–}r£–(jÅUjlKjÆjž–jÎjr”jÐjÜjÒ}r¤–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r¥–}r¦–(jÅXë**Application image format:** A bootable application image can be created by using the Am57xImageGen script provided under tools folder as part of sbl. It can be located at */packages/ti/boot/sbl/tools/scripts* folder.jÆjh–jÎjr”jÐjõjÒ}r§–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÝhjÞ]r¨–(jÚ)�r©–}rª–(jÅX**Application image format:**jÒ}r«–(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¥–jÞ]r¬–jçXApplication image format:r­–…�r®–}r¯–(jÅUjÆj©–ubajÐjâubjçX� A bootable application image can be created by using the Am57xImageGen script provided under tools folder as part of sbl. It can be located at r°–…�r±–}r²–(jÅX� A bootable application image can be created by using the Am57xImageGen script provided under tools folder as part of sbl. It can be located at jÆj¥–ubjM)�r³–}r´–(jÅX6*/packages/ti/boot/sbl/tools/scripts*jÒ}rµ–(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¥–jÞ]r¶–jçX4/packages/ti/boot/sbl/tools/scriptsr·–…�r¸–}r¹–(jÅUjÆj³–ubajÐjUubjçX folder.rº–…�r»–}r¼–(jÅX folder.jÆj¥–ubeubjò)�r½–}r¾–(jÅXÀThe Am57xImageGen script uses out2rprc and multicoreImageGen format conversion tools to create the final application image. Graphical view of the multicore application image is provided below:r¿–jÆjh–jÎjr”jÐjõjÒ}rÀ–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]rÁ–jçXÀThe Am57xImageGen script uses out2rprc and multicoreImageGen format conversion tools to create the final application image. Graphical view of the multicore application image is provided below:r–…�rÖ}rÄ–(jÅj¿–jÆj½–ubaubjR)�rÅ–}rÆ–(jÅX-.. Image:: ../images/Multicore_app_image.png jÆjh–jÎjr”jÐjZjÒ}rÇ–(UuriX&rtos/../images/Multicore_app_image.pngrÈ–j×]jÖ]jÔ]jÕ]jX}rÉ–U*jÈ–sjÚ]ujÜKljÝhjÞ]ubjò)�rÊ–}rË–(jÅX0The script creates the bootable image in 2 stepsrÌ–jÆjh–jÎjr”jÐjõjÒ}rÍ–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÝhjÞ]rΖjçX0The script creates the bootable image in 2 stepsrÏ–…�rЖ}rÑ–(jÅjÌ–jÆjÊ–ubaubjò)�rÒ–}rÓ–(jÅX0**Step 1: Conversion to RPRC format conversion**rÔ–jÆjh–jÎjr”jÐjõjÒ}rÕ–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÝhjÞ]rÖ–jÚ)�r×–}rØ–(jÅjÔ–jÒ}rÙ–(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÒ–jÞ]rÚ–jçX,Step 1: Conversion to RPRC format conversionrÛ–…�rÜ–}rÝ–(jÅUjÆj×–ubajÐjâubaubjt)�rÞ–}rß–(jÅUjÆjh–jÎjr”jÐjwjÒ}rà–(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKqjÝhjÞ]rá–(j{)�râ–}rã–(jÅXkFirstly, application executable is converted from ELF/COFF format (.out) to custom TI Rprc binary image using out2rprc tool. This tool strips out the initialized sections from the executable file (i.e. \*.out) and places them in a compact format that the SBL can understand. The output (bin) file is typically much smaller than the original executable (out) file.jÆjÞ–jÎjr”jÐjjÒ}rä–(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rå–jò)�ræ–}rç–(jÅXkFirstly, application executable is converted from ELF/COFF format (.out) to custom TI Rprc binary image using out2rprc tool. This tool strips out the initialized sections from the executable file (i.e. \*.out) and places them in a compact format that the SBL can understand. The output (bin) file is typically much smaller than the original executable (out) file.jÆjâ–jÎjr”jÐjõjÒ}rè–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÞ]ré–jçXjFirstly, application executable is converted from ELF/COFF format (.out) to custom TI Rprc binary image using out2rprc tool. This tool strips out the initialized sections from the executable file (i.e. *.out) and places them in a compact format that the SBL can understand. The output (bin) file is typically much smaller than the original executable (out) file.rê–…�rë–}rì–(jÅXkFirstly, application executable is converted from ELF/COFF format (.out) to custom TI Rprc binary image using out2rprc tool. This tool strips out the initialized sections from the executable file (i.e. \*.out) and places them in a compact format that the SBL can understand. The output (bin) file is typically much smaller than the original executable (out) file.jÆjæ–ubaubaubj{)�rí–}rî–(jÅX~The rprc files are intermediate files in a format that is consumed by MulticoreImageGen tool that generates the final binary. jÆjÞ–jÎjr”jÐjjÒ}rï–(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rð–jò)�rñ–}rò–(jÅX}The rprc files are intermediate files in a format that is consumed by MulticoreImageGen tool that generates the final binary.ró–jÆjí–jÎjr”jÐjõjÒ}rô–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]rõ–jçX}The rprc files are intermediate files in a format that is consumed by MulticoreImageGen tool that generates the final binary.rö–…�r÷–}rø–(jÅjó–jÆjñ–ubaubaubeubjò)�rù–}rú–(jÅX**RPRC File Header Format**rû–jÆjh–jÎjr”jÐjõjÒ}rü–(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÝhjÞ]rý–jÚ)�rþ–}rÿ–(jÅjû–jÒ}r—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjù–jÞ]r—jçXRPRC File Header Formatr—…�r—}r—(jÅUjÆjþ–ubajÐjâubaubjy )�r—}r—(jÅUjÆjh–jÎjr”jÐjÔ jÒ}r—(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r—j~ )�r —}r —(jÅUjÒ}r —(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj—jÞ]r —(jƒ )�r —}r—(jÅUjÒ}r—(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj —jÞ]jÐj‡ ubjƒ )�r—}r—(jÅUjÒ}r—(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj —jÞ]jÐj‡ ubj‹ )�r—}r—(jÅUjÒ}r—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj —jÞ]r—j� )�r—}r—(jÅUjÒ}r—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj—jÞ]r—(j• )�r—}r—(jÅUjÒ}r—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj—jÞ]r—jò)�r—}r —(jÅXOffsetr!—jÆj—jÎjr”jÐjõjÒ}r"—(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]r#—jçXOffsetr$—…�r%—}r&—(jÅj!—jÆj—ubaubajÐj¢ ubj• )�r'—}r(—(jÅUjÒ}r)—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj—jÞ]r*—jò)�r+—}r,—(jÅX Binary valuer-—jÆj'—jÎjr”jÐjõjÒ}r.—(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]r/—jçX Binary valuer0—…�r1—}r2—(jÅj-—jÆj+—ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r3—}r4—(jÅUjÒ}r5—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj —jÞ]r6—(j� )�r7—}r8—(jÅUjÒ}r9—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3—jÞ]r:—(j• )�r;—}r<—(jÅUjÒ}r=—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj7—jÞ]r>—jò)�r?—}r@—(jÅX 0x00000000rA—jÆj;—jÎjr”jÐjõjÒ}rB—(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rC—jçX 0x00000000rD—…�rE—}rF—(jÅjA—jÆj?—ubaubajÐj¢ ubj• )�rG—}rH—(jÅUjÒ}rI—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj7—jÞ]rJ—jò)�rK—}rL—(jÅX**Magic Word(43525052)**rM—jÆjG—jÎjr”jÐjõjÒ}rN—(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rO—jÚ)�rP—}rQ—(jÅjM—jÒ}rR—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjK—jÞ]rS—jçXMagic Word(43525052)rT—…�rU—}rV—(jÅUjÆjP—ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rW—}rX—(jÅUjÒ}rY—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3—jÞ]rZ—(j• )�r[—}r\—(jÅUjÒ}r]—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjW—jÞ]r^—jò)�r_—}r`—(jÅX 0x00000004ra—jÆj[—jÎjr”jÐjõjÒ}rb—(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rc—jçX 0x00000004rd—…�re—}rf—(jÅja—jÆj_—ubaubajÐj¢ ubj• )�rg—}rh—(jÅUjÒ}ri—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjW—jÞ]rj—jò)�rk—}rl—(jÅX**Entry Point (Location)**rm—jÆjg—jÎjr”jÐjõjÒ}rn—(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]ro—jÚ)�rp—}rq—(jÅjm—jÒ}rr—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjk—jÞ]rs—jçXEntry Point (Location)rt—…�ru—}rv—(jÅUjÆjp—ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rw—}rx—(jÅUjÒ}ry—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3—jÞ]rz—(j• )�r{—}r|—(jÅUjÒ}r}—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjw—jÞ]r~—jò)�r—}r€—(jÅX 0x00000008r�—jÆj{—jÎjr”jÐjõjÒ}r‚—(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÞ]rƒ—jçX 0x00000008r„—…�r…—}r†—(jÅj�—jÆj—ubaubajÐj¢ ubj• )�r‡—}rˆ—(jÅUjÒ}r‰—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjw—jÞ]rŠ—jò)�r‹—}rŒ—(jÅX**Reserved Addr**r�—jÆj‡—jÎjr”jÐjõjÒ}rŽ—(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÞ]r�—jÚ)�r�—}r‘—(jÅj�—jÒ}r’—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹—jÞ]r“—jçX Reserved Addrr”—…�r•—}r–—(jÅUjÆj�—ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r——}r˜—(jÅUjÒ}r™—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3—jÞ]rš—(j• )�r›—}rœ—(jÅUjÒ}r�—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj——jÞ]rž—jò)�rŸ—}r —(jÅX 0x0000000Cr¡—jÆj›—jÎjr”jÐjõjÒ}r¢—(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÞ]r£—jçX 0x0000000Cr¤—…�r¥—}r¦—(jÅj¡—jÆjŸ—ubaubajÐj¢ ubj• )�r§—}r¨—(jÅUjÒ}r©—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj——jÞ]rª—jò)�r«—}r¬—(jÅX**Section Count**r­—jÆj§—jÎjr”jÐjõjÒ}r®—(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÞ]r¯—jÚ)�r°—}r±—(jÅj­—jÒ}r²—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«—jÞ]r³—jçX Section Countr´—…�rµ—}r¶—(jÅUjÆj°—ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r·—}r¸—(jÅUjÒ}r¹—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3—jÞ]rº—(j• )�r»—}r¼—(jÅUjÒ}r½—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj·—jÞ]r¾—jò)�r¿—}rÀ—(jÅX 0x00000010rÁ—jÆj»—jÎjr”jÐjõjÒ}r—(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÞ]r×jçX 0x00000010rÄ—…�rÅ—}rÆ—(jÅjÁ—jÆj¿—ubaubajÐj¢ ubj• )�rÇ—}rÈ—(jÅUjÒ}rÉ—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj·—jÞ]rÊ—jò)�rË—}rÌ—(jÅX **Version**rÍ—jÆjÇ—jÎjr”jÐjõjÒ}rΗ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÞ]rÏ—jÚ)�rЗ}rÑ—(jÅjÍ—jÒ}rÒ—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjË—jÞ]rÓ—jçXVersionrÔ—…�rÕ—}rÖ—(jÅUjÆjЗubajÐjâubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r×—}rØ—(jÅX**RPRC Section Header Format**rÙ—jÆjh–jÎjr”jÐjõjÒ}rÚ—(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÝhjÞ]rÛ—jÚ)�rÜ—}rÝ—(jÅjÙ—jÒ}rÞ—(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×—jÞ]rß—jçXRPRC Section Header Formatrà—…�rá—}râ—(jÅUjÆjÜ—ubajÐjâubaubjy )�rã—}rä—(jÅUjÆjh–jÎjr”jÐjÔ jÒ}rå—(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ræ—j~ )�rç—}rè—(jÅUjÒ}ré—(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjã—jÞ]rê—(jƒ )�rë—}rì—(jÅUjÒ}rí—(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjç—jÞ]jÐj‡ ubjƒ )�rî—}rï—(jÅUjÒ}rð—(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjç—jÞ]jÐj‡ ubj‹ )�rñ—}rò—(jÅUjÒ}ró—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjç—jÞ]rô—j� )�rõ—}rö—(jÅUjÒ}r÷—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjñ—jÞ]rø—(j• )�rù—}rú—(jÅUjÒ}rû—(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ—jÞ]rü—jò)�rý—}rþ—(jÅXOffsetrÿ—jÆjù—jÎjr”jÐjõjÒ}r˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]r˜jçXOffsetr˜…�r˜}r˜(jÅjÿ—jÆjý—ubaubajÐj¢ ubj• )�r˜}r˜(jÅUjÒ}r˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ—jÞ]r˜jò)�r ˜}r ˜(jÅX Binary valuer ˜jÆj˜jÎjr”jÐjõjÒ}r ˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]r ˜jçX Binary valuer˜…�r˜}r˜(jÅj ˜jÆj ˜ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r˜}r˜(jÅUjÒ}r˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆjç—jÞ]r˜(j� )�r˜}r˜(jÅUjÒ}r˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜jÞ]r˜(j• )�r˜}r˜(jÅUjÒ}r˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜jÞ]r˜jò)�r˜}r˜(jÅX 0x00000000r˜jÆj˜jÎjr”jÐjõjÒ}r ˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]r!˜jçX 0x00000000r"˜…�r#˜}r$˜(jÅj˜jÆj˜ubaubajÐj¢ ubj• )�r%˜}r&˜(jÅUjÒ}r'˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜jÞ]r(˜jò)�r)˜}r*˜(jÅX**Section start Address**r+˜jÆj%˜jÎjr”jÐjõjÒ}r,˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]r-˜jÚ)�r.˜}r/˜(jÅj+˜jÒ}r0˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)˜jÞ]r1˜jçXSection start Addressr2˜…�r3˜}r4˜(jÅUjÆj.˜ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r5˜}r6˜(jÅUjÒ}r7˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜jÞ]r8˜(j• )�r9˜}r:˜(jÅUjÒ}r;˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5˜jÞ]r<˜jò)�r=˜}r>˜(jÅX 0x00000004r?˜jÆj9˜jÎjr”jÐjõjÒ}r@˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‘jÞ]rA˜jçX 0x00000004rB˜…�rC˜}rD˜(jÅj?˜jÆj=˜ubaubajÐj¢ ubj• )�rE˜}rF˜(jÅUjÒ}rG˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5˜jÞ]rH˜jò)�rI˜}rJ˜(jÅX**Reserved Addr**rK˜jÆjE˜jÎjr”jÐjõjÒ}rL˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‘jÞ]rM˜jÚ)�rN˜}rO˜(jÅjK˜jÒ}rP˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆjI˜jÞ]rQ˜jçX Reserved AddrrR˜…�rS˜}rT˜(jÅUjÆjN˜ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rU˜}rV˜(jÅUjÒ}rW˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜jÞ]rX˜(j• )�rY˜}rZ˜(jÅUjÒ}r[˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU˜jÞ]r\˜jò)�r]˜}r^˜(jÅX 0x00000008r_˜jÆjY˜jÎjr”jÐjõjÒ}r`˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK“jÞ]ra˜jçX 0x00000008rb˜…�rc˜}rd˜(jÅj_˜jÆj]˜ubaubajÐj¢ ubj• )�re˜}rf˜(jÅUjÒ}rg˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆjU˜jÞ]rh˜jò)�ri˜}rj˜(jÅX**Size**rk˜jÆje˜jÎjr”jÐjõjÒ}rl˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK“jÞ]rm˜jÚ)�rn˜}ro˜(jÅjk˜jÒ}rp˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆji˜jÞ]rq˜jçXSizerr˜…�rs˜}rt˜(jÅUjÆjn˜ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�ru˜}rv˜(jÅUjÒ}rw˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜jÞ]rx˜(j• )�ry˜}rz˜(jÅUjÒ}r{˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆju˜jÞ]r|˜jò)�r}˜}r~˜(jÅX 0x0000000Cr˜jÆjy˜jÎjr”jÐjõjÒ}r€˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK•jÞ]r�˜jçX 0x0000000Cr‚˜…�rƒ˜}r„˜(jÅj˜jÆj}˜ubaubajÐj¢ ubj• )�r…˜}r†˜(jÅUjÒ}r‡˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆju˜jÞ]rˆ˜jò)�r‰˜}rŠ˜(jÅX**Reserved CRC**r‹˜jÆj…˜jÎjr”jÐjõjÒ}rŒ˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK•jÞ]r�˜jÚ)�rŽ˜}r�˜(jÅj‹˜jÒ}r�˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰˜jÞ]r‘˜jçX Reserved CRCr’˜…�r“˜}r”˜(jÅUjÆjŽ˜ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r•˜}r–˜(jÅUjÒ}r—˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜jÞ]r˜˜(j• )�r™˜}rš˜(jÅUjÒ}r›˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj•˜jÞ]rœ˜jò)�r�˜}rž˜(jÅX 0x00000010rŸ˜jÆj™˜jÎjr”jÐjõjÒ}r ˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÞ]r¡˜jçX 0x00000010r¢˜…�r£˜}r¤˜(jÅjŸ˜jÆj�˜ubaubajÐj¢ ubj• )�r¥˜}r¦˜(jÅUjÒ}r§˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj•˜jÞ]r¨˜jò)�r©˜}rª˜(jÅX **Reserved**r«˜jÆj¥˜jÎjr”jÐjõjÒ}r¬˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÞ]r­˜jÚ)�r®˜}r¯˜(jÅj«˜jÒ}r°˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©˜jÞ]r±˜jçXReservedr²˜…�r³˜}r´˜(jÅUjÆj®˜ubajÐjâubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjc)�rµ˜}r¶˜(jÅUjÆjh–jÎjr”jÐjfjÒ}r·˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜKšjÝhjÞ]r¸˜ji)�r¹˜}rº˜(jÅUjlKjÆjµ˜jÎjr”jÐjÜjÒ}r»˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjò)�r¼˜}r½˜(jÅX+**Step 2: Multicore Image file generation**r¾˜jÆjh–jÎjr”jÐjõjÒ}r¿˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK›jÝhjÞ]rÀ˜jÚ)�rÁ˜}r˜(jÅj¾˜jÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼˜jÞ]rĘjçX'Step 2: Multicore Image file generationrŘ…�rƘ}rǘ(jÅUjÆjÁ˜ubajÐjâubaubjt)�rȘ}rɘ(jÅUjÆjh–jÎjr”jÐjwjÒ}rʘ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK�jÝhjÞ]r˘j{)�r̘}r͘(jÅXZRPRC files for each cores is combined into a single multicore bootable application image. jÆjȘjÎjr”jÐjjÒ}rΘ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rϘjò)�rИ}rј(jÅXYRPRC files for each cores is combined into a single multicore bootable application image.rÒ˜jÆj̘jÎjr”jÐjõjÒ}rÓ˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rÔ˜jçXYRPRC files for each cores is combined into a single multicore bootable application image.rÕ˜…�rÖ˜}rט(jÅjÒ˜jÆjИubaubaubaubjò)�rؘ}rÙ˜(jÅX**Multicore boot image format**rÚ˜jÆjh–jÎjr”jÐjõjÒ}rÛ˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rܘjÚ)�rݘ}rÞ˜(jÅjÚ˜jÒ}rߘ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjؘjÞ]rà˜jçXMulticore boot image formatrᘅ�râ˜}rã˜(jÅUjÆjݘubajÐjâubaubjò)�rä˜}rå˜(jÅX**Meta Header Start**ræ˜jÆjh–jÎjr”jÐjõjÒ}rç˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¢jÝhjÞ]rè˜jÚ)�ré˜}rê˜(jÅjæ˜jÒ}rë˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆjä˜jÞ]rì˜jçXMeta Header Startr혅�rî˜}rï˜(jÅUjÆjé˜ubajÐjâubaubjy )�rð˜}rñ˜(jÅUjÆjh–jÎjr”jÐjÔ jÒ}rò˜(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ró˜j~ )�rô˜}rõ˜(jÅUjÒ}rö˜(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjð˜jÞ]r÷˜(jƒ )�rø˜}rù˜(jÅUjÒ}rú˜(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjô˜jÞ]jÐj‡ ubjƒ )�rû˜}rü˜(jÅUjÒ}rý˜(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjô˜jÞ]jÐj‡ ubj‹ )�rþ˜}rÿ˜(jÅUjÒ}r™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjô˜jÞ]r™j� )�r™}r™(jÅUjÒ}r™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ˜jÞ]r™(j• )�r™}r™(jÅUjÒ}r™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™jÞ]r ™jò)�r ™}r ™(jÅXOffsetr ™jÆj™jÎjr”jÐjõjÒ}r ™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¥jÞ]r™jçXOffsetr™…�r™}r™(jÅj ™jÆj ™ubaubajÐj¢ ubj• )�r™}r™(jÅUjÒ}r™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™jÞ]r™jò)�r™}r™(jÅX Binary valuer™jÆj™jÎjr”jÐjõjÒ}r™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¥jÞ]r™jçX Binary valuer™…�r™}r™(jÅj™jÆj™ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r™}r™(jÅUjÒ}r ™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjô˜jÞ]r!™(j� )�r"™}r#™(jÅUjÒ}r$™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™jÞ]r%™(j• )�r&™}r'™(jÅUjÒ}r(™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj"™jÞ]r)™jò)�r*™}r+™(jÅX 0x00000000r,™jÆj&™jÎjr”jÐjõjÒ}r-™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK§jÞ]r.™jçX 0x00000000r/™…�r0™}r1™(jÅj,™jÆj*™ubaubajÐj¢ ubj• )�r2™}r3™(jÅUjÒ}r4™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj"™jÞ]r5™jò)�r6™}r7™(jÅX**Magic String (0x5254534D)**r8™jÆj2™jÎjr”jÐjõjÒ}r9™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK§jÞ]r:™jÚ)�r;™}r<™(jÅj8™jÒ}r=™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj6™jÞ]r>™jçXMagic String (0x5254534D)r?™…�r@™}rA™(jÅUjÆj;™ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rB™}rC™(jÅUjÒ}rD™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™jÞ]rE™(j• )�rF™}rG™(jÅUjÒ}rH™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjB™jÞ]rI™jò)�rJ™}rK™(jÅX 0x00000004rL™jÆjF™jÎjr”jÐjõjÒ}rM™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK©jÞ]rN™jçX 0x00000004rO™…�rP™}rQ™(jÅjL™jÆjJ™ubaubajÐj¢ ubj• )�rR™}rS™(jÅUjÒ}rT™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjB™jÞ]rU™jò)�rV™}rW™(jÅX**Number of Files**rX™jÆjR™jÎjr”jÐjõjÒ}rY™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK©jÞ]rZ™jÚ)�r[™}r\™(jÅjX™jÒ}r]™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjV™jÞ]r^™jçXNumber of Filesr_™…�r`™}ra™(jÅUjÆj[™ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rb™}rc™(jÅUjÒ}rd™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™jÞ]re™(j• )�rf™}rg™(jÅUjÒ}rh™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjb™jÞ]ri™jò)�rj™}rk™(jÅX 0x00000008rl™jÆjf™jÎjr”jÐjõjÒ}rm™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK«jÞ]rn™jçX 0x00000008ro™…�rp™}rq™(jÅjl™jÆjj™ubaubajÐj¢ ubj• )�rr™}rs™(jÅUjÒ}rt™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjb™jÞ]ru™jò)�rv™}rw™(jÅX **Device ID**rx™jÆjr™jÎjr”jÐjõjÒ}ry™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK«jÞ]rz™jÚ)�r{™}r|™(jÅjx™jÒ}r}™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjv™jÞ]r~™jçX Device IDr™…�r€™}r�™(jÅUjÆj{™ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r‚™}rƒ™(jÅUjÒ}r„™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™jÞ]r…™(j• )�r†™}r‡™(jÅUjÒ}rˆ™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚™jÞ]r‰™jò)�rŠ™}r‹™(jÅX 0x0000000CrŒ™jÆj†™jÎjr”jÐjõjÒ}r�™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK­jÞ]rŽ™jçX 0x0000000Cr�™…�r�™}r‘™(jÅjŒ™jÆjŠ™ubaubajÐj¢ ubj• )�r’™}r“™(jÅUjÒ}r”™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚™jÞ]r•™jò)�r–™}r—™(jÅX **Reserved**r˜™jÆj’™jÎjr”jÐjõjÒ}r™™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK­jÞ]rš™jÚ)�r›™}rœ™(jÅj˜™jÒ}r�™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj–™jÞ]rž™jçXReservedrŸ™…�r ™}r¡™(jÅUjÆj›™ubajÐjâubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r¢™}r£™(jÅX**Meta Header per Core**r¤™jÆjh–jÎjr”jÐjõjÒ}r¥™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK°jÝhjÞ]r¦™jÚ)�r§™}r¨™(jÅj¤™jÒ}r©™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¢™jÞ]rª™jçXMeta Header per Corer«™…�r¬™}r­™(jÅUjÆj§™ubajÐjâubaubjy )�r®™}r¯™(jÅUjÆjh–jÎjr”jÐjÔ jÒ}r°™(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r±™j~ )�r²™}r³™(jÅUjÒ}r´™(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj®™jÞ]rµ™(jƒ )�r¶™}r·™(jÅUjÒ}r¸™(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj²™jÞ]jÐj‡ ubjƒ )�r¹™}rº™(jÅUjÒ}r»™(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj²™jÞ]jÐj‡ ubj‹ )�r¼™}r½™(jÅUjÒ}r¾™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²™jÞ]r¿™j� )�rÀ™}rÁ™(jÅUjÒ}r™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¼™jÞ]rÙ(j• )�rÄ™}rÅ™(jÅUjÒ}rÆ™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÀ™jÞ]rÇ™jò)�rÈ™}rÉ™(jÅXOffsetrÊ™jÆjÄ™jÎjr”jÐjõjÒ}rË™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK³jÞ]rÌ™jçXOffsetrÍ™…�rΙ}rÏ™(jÅjÊ™jÆjÈ™ubaubajÐj¢ ubj• )�rЙ}rÑ™(jÅUjÒ}rÒ™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÀ™jÞ]rÓ™jò)�rÔ™}rÕ™(jÅX Binary valuerÖ™jÆjЙjÎjr”jÐjõjÒ}r×™(jÔ]jÕ]jÖ]j×]jÚ]ujÜK³jÞ]rØ™jçX Binary valuerÙ™…�rÚ™}rÛ™(jÅjÖ™jÆjÔ™ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rÜ™}rÝ™(jÅUjÒ}rÞ™(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²™jÞ]rß™(j� )�rà™}rá™(jÅUjÒ}râ™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÜ™jÞ]rã™(j• )�rä™}rå™(jÅUjÒ}ræ™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjà™jÞ]rç™jò)�rè™}ré™(jÅX 0x00000000rê™jÆjä™jÎjr”jÐjõjÒ}rë™(jÔ]jÕ]jÖ]j×]jÚ]ujÜKµjÞ]rì™jçX 0x00000000rí™…�rî™}rï™(jÅjê™jÆjè™ubaubajÐj¢ ubj• )�rð™}rñ™(jÅUjÒ}rò™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjà™jÞ]ró™jò)�rô™}rõ™(jÅX **Core ID**rö™jÆjð™jÎjr”jÐjõjÒ}r÷™(jÔ]jÕ]jÖ]j×]jÚ]ujÜKµjÞ]rø™jÚ)�rù™}rú™(jÅjö™jÒ}rû™(jÔ]jÕ]jÖ]j×]jÚ]ujÆjô™jÞ]rü™jçXCore IDrý™…�rþ™}rÿ™(jÅUjÆjù™ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rš}rš(jÅUjÒ}rš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÜ™jÞ]rš(j• )�rš}rš(jÅUjÒ}rš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjšjÞ]ršjò)�rš}r š(jÅX 0x00000004r šjÆjšjÎjr”jÐjõjÒ}r š(jÔ]jÕ]jÖ]j×]jÚ]ujÜK·jÞ]r šjçX 0x00000004r š…�rš}rš(jÅj šjÆjšubaubajÐj¢ ubj• )�rš}rš(jÅUjÒ}rš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjšjÞ]ršjò)�rš}rš(jÅX**Image Offset**ršjÆjšjÎjr”jÐjõjÒ}rš(jÔ]jÕ]jÖ]j×]jÚ]ujÜK·jÞ]ršjÚ)�rš}rš(jÅjšjÒ}rš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjšjÞ]ršjçX Image Offsetrš…�rš}rš(jÅUjÆjšubajÐjâubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r š}r!š(jÅX�Core ID and Device ID for specific devices can be located in the file sbl_slave_core_boot.h in the boot/sbl/soc/ folderr"šjÆjh–jÎjr”jÐjõjÒ}r#š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKºjÝhjÞ]r$šjçX�Core ID and Device ID for specific devices can be located in the file sbl_slave_core_boot.h in the boot/sbl/soc/ folderr%š…�r&š}r'š(jÅj"šjÆj šubaubjò)�r(š}r)š(jÅX­Refer section `App Image Creation `__ for more details on usage of this script and application image creation.jÆjh–jÎjr”jÐjõjÒ}r*š(jÔ]jÕ]jÖ]j×]jÚ]ujÜK½jÝhjÞ]r+š(jçXRefer section r,š…�r-š}r.š(jÅXRefer section jÆj(šubjû)�r/š}r0š(jÅXV`App Image Creation `__jÒ}r1š(UnameXApp Image CreationjX=index_Foundational_Components.html#application-image-creationj×]jÖ]jÔ]jÕ]jÚ]ujÆj(šjÞ]r2šjçXApp Image Creationr3š…�r4š}r5š(jÅUjÆj/šubajÐjÿubjçXI for more details on usage of this script and application image creation.r6š…�r7š}r8š(jÅXI for more details on usage of this script and application image creation.jÆj(šubeubjò)�r9š}r:š(jÅX**Flashing Tools**r;šjÆjh–jÎjr”jÐjõjÒ}r<š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÝhjÞ]r=šjÚ)�r>š}r?š(jÅj;šjÒ}r@š(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9šjÞ]rAšjçXFlashing ToolsrBš…�rCš}rDš(jÅUjÆj>šubajÐjâubaubjò)�rEš}rFš(jÅXÑSBL provides a CCS based qspi flash writer utility to flash image and multicore AppImage from a SD card to onboard QSPI device. It is located at */packages/ti/boot/sbl/tools/flashWriter/qspi*jÆjh–jÎjr”jÐjõjÒ}rGš(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÄjÝhjÞ]rHš(jçX’SBL provides a CCS based qspi flash writer utility to flash image and multicore AppImage from a SD card to onboard QSPI device. It is located at rIš…�rJš}rKš(jÅX’SBL provides a CCS based qspi flash writer utility to flash image and multicore AppImage from a SD card to onboard QSPI device. It is located at jÆjEšubjM)�rLš}rMš(jÅX?*/packages/ti/boot/sbl/tools/flashWriter/qspi*jÒ}rNš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjEšjÞ]rOšjçX=/packages/ti/boot/sbl/tools/flashWriter/qspirPš…�rQš}rRš(jÅUjÆjLšubajÐjUubeubeubjÇ)�rSš}rTš(jÅUjÆj`”jÎjr”jÐjÑjÒ}rUš(jÔ]jÕ]jÖ]j×]rVšUbuilding-the-sblrWšajÚ]rXšjŠaujÜKÊjÝhjÞ]rYš(jà)�rZš}r[š(jÅXBuilding the SBLr\šjÆjSšjÎjr”jÐjäjÒ}r]š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÊjÝhjÞ]r^šjçXBuilding the SBLr_š…�r`š}raš(jÅj\šjÆjZšubaubjò)�rbš}rcš(jÅX**Pre-requisites to Building**rdšjÆjSšjÎjr”jÐjõjÒ}reš(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÌjÝhjÞ]rfšjÚ)�rgš}rhš(jÅjdšjÒ}riš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbšjÞ]rjšjçXPre-requisites to Buildingrkš…�rlš}rmš(jÅUjÆjgšubajÐjâubaubjt)�rnš}roš(jÅUjÆjSšjÎjr”jÐjwjÒ}rpš(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKÎjÝhjÞ]rqš(j{)�rrš}rsš(jÅX Set your environment using pdksetupenv.bat or pdksetupenv.sh. Refer to the Processor SDK RTOS Building page for information on setting up your build environmentjÆjnšjÎjr”jÐjjÒ}rtš(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rušjò)�rvš}rwš(jÅX Set your environment using pdksetupenv.bat or pdksetupenv.sh. Refer to the Processor SDK RTOS Building page for information on setting up your build environmentrxšjÆjršjÎjr”jÐjõjÒ}ryš(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÎjÞ]rzšjçX Set your environment using pdksetupenv.bat or pdksetupenv.sh. Refer to the Processor SDK RTOS Building page for information on setting up your build environmentr{š…�r|š}r}š(jÅjxšjÆjvšubaubaubj{)�r~š}rš(jÅX�The SBL has following dependencies and will need the following libraries built - Board - UART - I2C - SPI - CSL - OSAL - MMCSD - PM jÆjnšjÎNjÐjjÒ}r€š(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�š(jò)�r‚š}rƒš(jÅXNThe SBL has following dependencies and will need the following libraries builtr„šjÆj~šjÎjr”jÐjõjÒ}r…š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÑjÞ]r†šjçXNThe SBL has following dependencies and will need the following libraries builtr‡š…�rˆš}r‰š(jÅj„šjÆj‚šubaubjt)�rŠš}r‹š(jÅUjÒ}rŒš(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj~šjÞ]r�š(j{)�rŽš}r�š(jÅXBoardr�šjÒ}r‘š(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠšjÞ]r’šjò)�r“š}r”š(jÅj�šjÆjŽšjÎjr”jÐjõjÒ}r•š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÔjÞ]r–šjçXBoardr—š…�r˜š}r™š(jÅj�šjÆj“šubaubajÐjubj{)�ršš}r›š(jÅXUARTrœšjÒ}r�š(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠšjÞ]ržšjò)�rŸš}r š(jÅjœšjÆjššjÎjr”jÐjõjÒ}r¡š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÕjÞ]r¢šjçXUARTr£š…�r¤š}r¥š(jÅjœšjÆjŸšubaubajÐjubj{)�r¦š}r§š(jÅXI2Cr¨šjÒ}r©š(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠšjÞ]rªšjò)�r«š}r¬š(jÅj¨šjÆj¦šjÎjr”jÐjõjÒ}r­š(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÖjÞ]r®šjçXI2Cr¯š…�r°š}r±š(jÅj¨šjÆj«šubaubajÐjubj{)�r²š}r³š(jÅXSPIr´šjÒ}rµš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠšjÞ]r¶šjò)�r·š}r¸š(jÅj´šjÆj²šjÎjr”jÐjõjÒ}r¹š(jÔ]jÕ]jÖ]j×]jÚ]ujÜK×jÞ]rºšjçXSPIr»š…�r¼š}r½š(jÅj´šjÆj·šubaubajÐjubj{)�r¾š}r¿š(jÅXCSLrÀšjÒ}rÁš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠšjÞ]ršjò)�rÚ}rÄš(jÅjÀšjÆj¾šjÎjr”jÐjõjÒ}rÅš(jÔ]jÕ]jÖ]j×]jÚ]ujÜKØjÞ]rÆšjçXCSLrÇš…�rÈš}rÉš(jÅjÀšjÆjÚubaubajÐjubj{)�rÊš}rËš(jÅXOSALrÌšjÒ}rÍš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠšjÞ]rΚjò)�rÏš}rК(jÅjÌšjÆjÊšjÎjr”jÐjõjÒ}rÑš(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙjÞ]rÒšjçXOSALrÓš…�rÔš}rÕš(jÅjÌšjÆjÏšubaubajÐjubj{)�rÖš}rך(jÅXMMCSDrØšjÒ}rÙš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠšjÞ]rÚšjò)�rÛš}rÜš(jÅjØšjÆjÖšjÎjr”jÐjõjÒ}rÝš(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÚjÞ]rÞšjçXMMCSDrßš…�ràš}ráš(jÅjØšjÆjÛšubaubajÐjubj{)�râš}rãš(jÅXPM jÒ}räš(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠšjÞ]råšjò)�ræš}rçš(jÅXPMrèšjÆjâšjÎjr”jÐjõjÒ}réš(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÛjÞ]rêšjçXPMrëš…�rìš}ríš(jÅjèšjÆjæšubaubajÐjubejÐjwubeubeubjë)�rîš}rïš(jÅXÞRefer to the makefile for the board you are using for the latest driver dependency. These libraries should come pre-built with any fresh installation of the Processor SDK RTOS but may be removed if a gmake clean is invokedjÆjSšjÎjr”jÐjïjÒ}rðš(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rñšjò)�ròš}róš(jÅXÞRefer to the makefile for the board you are using for the latest driver dependency. These libraries should come pre-built with any fresh installation of the Processor SDK RTOS but may be removed if a gmake clean is invokedrôšjÆjîšjÎjr”jÐjõjÒ}rõš(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÞjÞ]röšjçXÞRefer to the makefile for the board you are using for the latest driver dependency. These libraries should come pre-built with any fresh installation of the Processor SDK RTOS but may be removed if a gmake clean is invokedr÷š…�røš}rùš(jÅjôšjÆjòšubaubaubjò)�rúš}rûš(jÅX **Compiling the SBL Components**rüšjÆjSšjÎjr”jÐjõjÒ}rýš(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÝhjÞ]rþšjÚ)�rÿš}r›(jÅjüšjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjúšjÞ]r›jçXCompiling the SBL Componentsr›…�r›}r›(jÅUjÆjÿšubajÐjâubaubjò)�r›}r›(jÅXTo build the SBL components:r›jÆjSšjÎjr”jÐjõjÒ}r ›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKåjÝhjÞ]r ›jçXTo build the SBL components:r ›…�r ›}r ›(jÅj›jÆj›ubaubj )�r›}r›(jÅUjÆjSšjÎjr”jÐj jÒ}r›(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKçjÝhjÞ]r›(j{)�r›}r›(jÅX#**cd /packages/ti/board/diag**r›jÆj›jÎjr”jÐjjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r›jò)�r›}r›(jÅj›jÆj›jÎjr”jÐjõjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKçjÞ]r›jÚ)�r›}r›(jÅj›jÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›jÞ]r›jçXcd /packages/ti/board/diagr›…�r ›}r!›(jÅUjÆj›ubajÐjâubaubaubj{)�r"›}r#›(jÅXD**make all BOARD= SOC= BOOTMODE=** jÆj›jÎjr”jÐjjÒ}r$›(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r%›jò)�r&›}r'›(jÅXC**make all BOARD= SOC= BOOTMODE=**r(›jÆj"›jÎjr”jÐjõjÒ}r)›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKèjÞ]r*›jÚ)�r+›}r,›(jÅj(›jÒ}r-›(jÔ]jÕ]jÖ]j×]jÚ]ujÆj&›jÞ]r.›jçX?make all BOARD= SOC= BOOTMODE=r/›…�r0›}r1›(jÅUjÆj+›ubajÐjâubaubaubeubjt)�r2›}r3›(jÅUjÆjSšjÎjr”jÐjwjÒ}r4›(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKêjÝhjÞ]r5›(j{)�r6›}r7›(jÅX8BOARD_NAME : idkAM572x, idkAM571x, evmAM572x, idkAM574xr8›jÆj2›jÎjr”jÐjjÒ}r9›(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r:›jò)�r;›}r<›(jÅj8›jÆj6›jÎjr”jÐjõjÒ}r=›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKêjÞ]r>›jçX8BOARD_NAME : idkAM572x, idkAM571x, evmAM572x, idkAM574xr?›…�r@›}rA›(jÅj8›jÆj;›ubaubaubj{)�rB›}rC›(jÅX#SOC_NAME : AM572x, AM571x, AM574x jÆj2›jÎjr”jÐjjÒ}rD›(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rE›jò)�rF›}rG›(jÅX"SOC_NAME : AM572x, AM571x, AM574xrH›jÆjB›jÎjr”jÐjõjÒ}rI›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKëjÞ]rJ›jçX"SOC_NAME : AM572x, AM571x, AM574xrK›…�rL›}rM›(jÅjH›jÆjF›ubaubaubeubjò)�rN›}rO›(jÅXŒThis will make the SBL for a specific $BOARD and $BOOT_MEDIA. Output files will be located in: **/packages/ti/boot/sbl/binary/**jÆjSšjÎjr”jÐjõjÒ}rP›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKíjÝhjÞ]rQ›(jçX_This will make the SBL for a specific $BOARD and $BOOT_MEDIA. Output files will be located in: rR›…�rS›}rT›(jÅX_This will make the SBL for a specific $BOARD and $BOOT_MEDIA. Output files will be located in: jÆjN›ubjÚ)�rU›}rV›(jÅX-**/packages/ti/boot/sbl/binary/**jÒ}rW›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjN›jÞ]rX›jçX)/packages/ti/boot/sbl/binary/rY›…�rZ›}r[›(jÅUjÆjU›ubajÐjâubeubjë)�r\›}r]›(jÅXKRefer **/packages/ti/boot/sbl/sbl_.sh** for more build optionsjÆjSšjÎjr”jÐjïjÒ}r^›(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r_›jò)�r`›}ra›(jÅXKRefer **/packages/ti/boot/sbl/sbl_.sh** for more build optionsjÆj\›jÎjr”jÐjõjÒ}rb›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKñjÞ]rc›(jçXRefer rd›…�re›}rf›(jÅXRefer jÆj`›ubjÚ)�rg›}rh›(jÅX.**/packages/ti/boot/sbl/sbl_.sh**jÒ}ri›(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`›jÞ]rj›jçX*/packages/ti/boot/sbl/sbl_.shrk›…�rl›}rm›(jÅUjÆjg›ubajÐjâubjçX for more build optionsrn›…�ro›}rp›(jÅX for more build optionsjÆj`›ubeubaubjhK)�rq›}rr›(jÅX Boot Modesrs›jÆjSšjÎjr”jÐjlKjÒ}rt›(j×]ru›Uid73rv›ajÖ]jÔ]jÕ]jÚ]rw›j"aujÜNjÝhjÞ]rx›jçX Boot Modesry›…�rz›}r{›(jÅjs›jÆjq›ubaubjò)�r|›}r}›(jÅXŽThis Release of SBL supports MMCSD and QSPI Boot modes. The different boot modes supported for all the boards is tabulated in the table below.r~›jÆjSšjÎjr”jÐjõjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKøjÝhjÞ]r€›jçXŽThis Release of SBL supports MMCSD and QSPI Boot modes. The different boot modes supported for all the boards is tabulated in the table below.r�›…�r‚›}rƒ›(jÅj~›jÆj|›ubaubjy )�r„›}r…›(jÅUjÆjSšjÎjr”jÐjÔ jÒ}r†›(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‡›j~ )�rˆ›}r‰›(jÅUjÒ}rŠ›(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj„›jÞ]r‹›(jƒ )�rŒ›}r�›(jÅUjÒ}rŽ›(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjˆ›jÞ]jÐj‡ ubjƒ )�r�›}r�›(jÅUjÒ}r‘›(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjˆ›jÞ]jÐj‡ ubjƒ )�r’›}r“›(jÅUjÒ}r”›(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjˆ›jÞ]jÐj‡ ubjƒ )�r•›}r–›(jÅUjÒ}r—›(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjˆ›jÞ]jÐj‡ ubj¥ )�r˜›}r™›(jÅUjÒ}rš›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆ›jÞ]r››(j� )�rœ›}r�›(jÅUjÒ}rž›(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜›jÞ]rŸ›(j• )�r ›}r¡›(jÅUjÒ}r¢›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœ›jÞ]jÐj¢ ubj• )�r£›}r¤›(jÅUjÒ}r¥›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœ›jÞ]r¦›jò)�r§›}r¨›(jÅXMMCSDr©›jÆj£›jÎjr”jÐjõjÒ}rª›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKüjÞ]r«›jçXMMCSDr¬›…�r­›}r®›(jÅj©›jÆj§›ubaubajÐj¢ ubj• )�r¯›}r°›(jÅUjÒ}r±›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœ›jÞ]r²›jò)�r³›}r´›(jÅXQSPIrµ›jÆj¯›jÎjr”jÐjõjÒ}r¶›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKüjÞ]r·›jçXQSPIr¸›…�r¹›}rº›(jÅjµ›jÆj³›ubaubajÐj¢ ubj• )�r»›}r¼›(jÅUjÒ}r½›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœ›jÞ]r¾›jò)�r¿›}rÀ›(jÅXeMMCrÁ›jÆj»›jÎjr”jÐjõjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKüjÞ]rÛjçXeMMCrÄ›…�rÅ›}rÆ›(jÅjÁ›jÆj¿›ubaubajÐj¢ ubejÐj£ ubj� )�rÇ›}rÈ›(jÅUjÒ}rÉ›(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜›jÞ]rÊ›(j• )�rË›}rÌ›(jÅUjÒ}rÍ›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇ›jÞ]rΛjò)�rÏ›}rЛ(jÅX AM572x GPEVMrÑ›jÆjË›jÎjr”jÐjõjÒ}rÒ›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKþjÞ]rÓ›jçX AM572x GPEVMrÔ›…�rÕ›}rÖ›(jÅjÑ›jÆjÏ›ubaubajÐj¢ ubj• )�r×›}rØ›(jÅUjÒ}rÙ›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇ›jÞ]rÚ›jò)�rÛ›}rÜ›(jÅXYESrÝ›jÆj×›jÎjr”jÐjõjÒ}rÞ›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKþjÞ]rß›jçXYESrà›…�rá›}râ›(jÅjÝ›jÆjÛ›ubaubajÐj¢ ubj• )�rã›}rä›(jÅUjÒ}rå›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇ›jÞ]ræ›jò)�rç›}rè›(jÅXNOré›jÆjã›jÎjr”jÐjõjÒ}rê›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKþjÞ]rë›jçXNOrì›…�rí›}rî›(jÅjé›jÆjç›ubaubajÐj¢ ubj• )�rï›}rð›(jÅUjÒ}rñ›(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇ›jÞ]rò›jò)�ró›}rô›(jÅXYESrõ›jÆjï›jÎjr”jÐjõjÒ}rö›(jÔ]jÕ]jÖ]j×]jÚ]ujÜKþjÞ]r÷›jçXYESrø›…�rù›}rú›(jÅjõ›jÆjó›ubaubajÐj¢ ubejÐj£ ubj� )�rû›}rü›(jÅUjÒ}rý›(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜›jÞ]rþ›(j• )�rÿ›}rœ(jÅUjÒ}rœ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjû›jÞ]rœjò)�rœ}rœ(jÅX AM572x IDKEVMrœjÆjÿ›jÎjr”jÐjõjÒ}rœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rœjçX AM572x IDKEVMrœ…�r œ}r œ(jÅjœjÆjœubaubajÐj¢ ubj• )�r œ}r œ(jÅUjÒ}r œ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjû›jÞ]rœjò)�rœ}rœ(jÅXYESrœjÆj œjÎjr”jÐjõjÒ}rœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rœjçXYESrœ…�rœ}rœ(jÅjœjÆjœubaubajÐj¢ ubj• )�rœ}rœ(jÅUjÒ}rœ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjû›jÞ]rœjò)�rœ}rœ(jÅXYESrœjÆjœjÎjr”jÐjõjÒ}rœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rœjçXYESr œ…�r!œ}r"œ(jÅjœjÆjœubaubajÐj¢ ubj• )�r#œ}r$œ(jÅUjÒ}r%œ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjû›jÞ]r&œjò)�r'œ}r(œ(jÅXNOr)œjÆj#œjÎjr”jÐjõjÒ}r*œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r+œjçXNOr,œ…�r-œ}r.œ(jÅj)œjÆj'œubaubajÐj¢ ubejÐj£ ubj� )�r/œ}r0œ(jÅUjÒ}r1œ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜›jÞ]r2œ(j• )�r3œ}r4œ(jÅUjÒ}r5œ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/œjÞ]r6œjò)�r7œ}r8œ(jÅX AM571x IDKEVMr9œjÆj3œjÎjr”jÐjõjÒ}r:œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r;œjçX AM571x IDKEVMr<œ…�r=œ}r>œ(jÅj9œjÆj7œubaubajÐj¢ ubj• )�r?œ}r@œ(jÅUjÒ}rAœ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/œjÞ]rBœjò)�rCœ}rDœ(jÅXYESrEœjÆj?œjÎjr”jÐjõjÒ}rFœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rGœjçXYESrHœ…�rIœ}rJœ(jÅjEœjÆjCœubaubajÐj¢ ubj• )�rKœ}rLœ(jÅUjÒ}rMœ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/œjÞ]rNœjò)�rOœ}rPœ(jÅXYESrQœjÆjKœjÎjr”jÐjõjÒ}rRœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rSœjçXYESrTœ…�rUœ}rVœ(jÅjQœjÆjOœubaubajÐj¢ ubj• )�rWœ}rXœ(jÅUjÒ}rYœ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/œjÞ]rZœjò)�r[œ}r\œ(jÅXNOr]œjÆjWœjÎjr”jÐjõjÒ}r^œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r_œjçXNOr`œ…�raœ}rbœ(jÅj]œjÆj[œubaubajÐj¢ ubejÐj£ ubj� )�rcœ}rdœ(jÅUjÒ}reœ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜›jÞ]rfœ(j• )�rgœ}rhœ(jÅUjÒ}riœ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcœjÞ]rjœjò)�rkœ}rlœ(jÅX AM574x IDKEVMrmœjÆjgœjÎjr”jÐjõjÒ}rnœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]roœjçX AM574x IDKEVMrpœ…�rqœ}rrœ(jÅjmœjÆjkœubaubajÐj¢ ubj• )�rsœ}rtœ(jÅUjÒ}ruœ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcœjÞ]rvœjò)�rwœ}rxœ(jÅXYESryœjÆjsœjÎjr”jÐjõjÒ}rzœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r{œjçXYESr|œ…�r}œ}r~œ(jÅjyœjÆjwœubaubajÐj¢ ubj• )�rœ}r€œ(jÅUjÒ}r�œ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcœjÞ]r‚œjò)�rƒœ}r„œ(jÅXYESr…œjÆjœjÎjr”jÐjõjÒ}r†œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r‡œjçXYESrˆœ…�r‰œ}rŠœ(jÅj…œjÆjƒœubaubajÐj¢ ubj• )�r‹œ}rŒœ(jÅUjÒ}r�œ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcœjÞ]rŽœjò)�r�œ}r�œ(jÅXNOr‘œjÆj‹œjÎjr”jÐjõjÒ}r’œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r“œjçXNOr”œ…�r•œ}r–œ(jÅj‘œjÆj�œubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjc)�r—œ}r˜œ(jÅUjÆjSšjÎjr”jÐjfjÒ}r™œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]ršœji)�r›œ}rœœ(jÅUjlKjÆj—œjÎjr”jÐjÜjÒ}r�œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjÇ)�ržœ}rŸœ(jÅUjKjÆjSšjÎjr”jÐjÑjÒ}r œ(jÔ]r¡œjGŒajÕ]jÖ]j×]r¢œUid74r£œajÚ]ujÜM jÝhjÞ]r¤œ(jà)�r¥œ}r¦œ(jÅXBooting Via SD Cardr§œjÆjžœjÎjr”jÐjäjÒ}r¨œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r©œjçXBooting Via SD Cardrªœ…�r«œ}r¬œ(jÅj§œjÆj¥œubaubj )�r­œ}r®œ(jÅUjÆjžœjÎjr”jÐj jÒ}r¯œ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM jÝhjÞ]r°œ(j{)�r±œ}r²œ(jÅXPreparing the SD card.r³œjÆj­œjÎjr”jÐjjÒ}r´œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rµœjò)�r¶œ}r·œ(jÅj³œjÆj±œjÎjr”jÐjõjÒ}r¸œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r¹œjçXPreparing the SD card.rºœ…�r»œ}r¼œ(jÅj³œjÆj¶œubaubaubj{)�r½œ}r¾œ(jÅXBooting the target. jÆj­œjÎjr”jÐjjÒ}r¿œ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÀœjò)�rÁœ}rœ(jÅXBooting the target.rÜjÆj½œjÎjr”jÐjõjÒ}rÄœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rÅœjçXBooting the target.rÆœ…�rÇœ}rÈœ(jÅjÜjÆjÁœubaubaubeubjÇ)�rÉœ}rÊœ(jÅUjKjÆjžœjÎjr”jÐjÑjÒ}rËœ(jÔ]rÌœXpreparing the sd cardrÍœajÕ]jÖ]j×]rΜUpreparing-the-sd-cardrÏœajÚ]ujÜMjÝhjÞ]rМ(jà)�rÑœ}rÒœ(jÅXPreparing the SD cardrÓœjÆjÉœjÎjr”jÐjäjÒ}rÔœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rÕœjçXPreparing the SD cardrÖœ…�rל}rØœ(jÅjÓœjÆjÑœubaubj )�rÙœ}rÚœ(jÅUjÆjÉœjÎjr”jÐj jÒ}rÛœ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMjÝhjÞ]rÜœ(j{)�rÝœ}rÞœ(jÅXTo boot the target the SD card should be bootable. Follow the steps at `Creating bootable SD card in windows `__ or `Creating bootable SD card in Linux `__.jÆjÙœjÎjr”jÐjjÒ}rßœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ràœjò)�ráœ}râœ(jÅXTo boot the target the SD card should be bootable. Follow the steps at `Creating bootable SD card in windows `__ or `Creating bootable SD card in Linux `__.jÆjÝœjÎjr”jÐjõjÒ}rãœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]räœ(jçXGTo boot the target the SD card should be bootable. Follow the steps at r圅�ræœ}rçœ(jÅXGTo boot the target the SD card should be bootable. Follow the steps at jÆjáœubjû)�rèœ}réœ(jÅX]`Creating bootable SD card in windows `__jÒ}rêœ(UnameX$Creating bootable SD card in windowsjX2index_overview.html#windows-sd-card-creation-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjáœjÞ]rëœjçX$Creating bootable SD card in windowsr윅�ríœ}rîœ(jÅUjÆjèœubajÐjÿubjçX or r�rðœ}rñœ(jÅX or jÆjáœubjû)�ròœ}róœ(jÅXY`Creating bootable SD card in Linux `__jÒ}rôœ(UnameX"Creating bootable SD card in LinuxjX0index_overview.html#linux-sd-card-creation-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆjáœjÞ]rõœjçX"Creating bootable SD card in Linuxröœ…�r÷œ}røœ(jÅUjÆjòœubajÐjÿubjçX.…�rùœ}rúœ(jÅX.jÆjáœubeubaubj{)�rûœ}rüœ(jÅXnDelete the "MLO" and "app" in the bootable SD card which are created in the process of making the SD bootable.jÆjÙœjÎjr”jÐjjÒ}rýœ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rþœjò)�rÿœ}r�(jÅXnDelete the "MLO" and "app" in the bootable SD card which are created in the process of making the SD bootable.r�jÆjûœjÎjr”jÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r�jçXnDelete the "MLO" and "app" in the bootable SD card which are created in the process of making the SD bootable.r�…�r�}r�(jÅj�jÆjÿœubaubaubj{)�r�}r�(jÅX(Copy the sbl binary(MLO) to the SD card.r �jÆjÙœjÎjr”jÐjjÒ}r �(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r �jò)�r �}r �(jÅj �jÆj�jÎjr”jÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r�jçX(Copy the sbl binary(MLO) to the SD card.r�…�r�}r�(jÅj �jÆj �ubaubaubj{)�r�}r�(jÅX�Copy the Application image(app) generated using the `Script `__ to the SD card. jÆjÙœjÎjr”jÐjjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�jò)�r�}r�(jÅXŽCopy the Application image(app) generated using the `Script `__ to the SD card.jÆj�jÎjr”jÐjõjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r�(jçX4Copy the Application image(app) generated using the r�…�r�}r�(jÅX4Copy the Application image(app) generated using the jÆj�ubjû)�r�}r�(jÅXJ`Script `__jÒ}r �(UnameXScriptjX=index_Foundational_Components.html#application-image-creationj×]jÖ]jÔ]jÕ]jÚ]ujÆj�jÞ]r!�jçXScriptr"�…�r#�}r$�(jÅUjÆj�ubajÐjÿubjçX to the SD card.r%�…�r&�}r'�(jÅX to the SD card.jÆj�ubeubaubeubeubjÇ)�r(�}r)�(jÅUjKjÆjžœjÎjr”jÐjÑjÒ}r*�(jÔ]r+�Xbooting the targetr,�ajÕ]jÖ]j×]r-�Uid75r.�ajÚ]ujÜMjÝhjÞ]r/�(jà)�r0�}r1�(jÅXBooting the targetr2�jÆj(�jÎjr”jÐjäjÒ}r3�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r4�jçXBooting the targetr5�…�r6�}r7�(jÅj2�jÆj0�ubaubj )�r8�}r9�(jÅUjÆj(�jÎjr”jÐj jÒ}r:�(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMjÝhjÞ]r;�(j{)�r<�}r=�(jÅX8Insert micro SD card into the SD card slot of the board.r>�jÆj8�jÎjr”jÐjjÒ}r?�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r@�jò)�rA�}rB�(jÅj>�jÆj<�jÎjr”jÐjõjÒ}rC�(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rD�jçX8Insert micro SD card into the SD card slot of the board.rE�…�rF�}rG�(jÅj>�jÆjA�ubaubaubj{)�rH�}rI�(jÅXkOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the UART console portjÆj8�jÎjr”jÐjjÒ}rJ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rK�jò)�rL�}rM�(jÅXkOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the UART console portrN�jÆjH�jÎjr”jÐjõjÒ}rO�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rP�jçXkOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the UART console portrQ�…�rR�}rS�(jÅjN�jÆjL�ubaubaubj{)�rT�}rU�(jÅXGDo a power reset of the board to boot the appliation from the SD card. jÆj8�jÎjr”jÐjjÒ}rV�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rW�jò)�rX�}rY�(jÅXFDo a power reset of the board to boot the appliation from the SD card.rZ�jÆjT�jÎjr”jÐjõjÒ}r[�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM"jÞ]r\�jçXFDo a power reset of the board to boot the appliation from the SD card.r]�…�r^�}r_�(jÅjZ�jÆjX�ubaubaubeubeubeubjÇ)�r`�}ra�(jÅUjÆjSšjÎjr”jÐjÑjÒ}rb�(jÔ]jÕ]jÖ]j×]rc�Ubooting-via-emmcrd�ajÚ]re�j#aujÜM&jÝhjÞ]rf�(jà)�rg�}rh�(jÅXBooting Via eMMCri�jÆj`�jÎjr”jÐjäjÒ}rj�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM&jÝhjÞ]rk�jçXBooting Via eMMCrl�…�rm�}rn�(jÅji�jÆjg�ubaubj )�ro�}rp�(jÅUjÆj`�jÎjr”jÐj jÒ}rq�(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM(jÝhjÞ]rr�(j{)�rs�}rt�(jÅXPreparing the eMMC.ru�jÆjo�jÎjr”jÐjjÒ}rv�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rw�jò)�rx�}ry�(jÅju�jÆjs�jÎjr”jÐjõjÒ}rz�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM(jÞ]r{�jçXPreparing the eMMC.r|�…�r}�}r~�(jÅju�jÆjx�ubaubaubj{)�r�}r€�(jÅXBooting the target. jÆjo�jÎjr”jÐjjÒ}r��(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‚�jò)�rƒ�}r„�(jÅXBooting the target.r…�jÆj�jÎjr”jÐjõjÒ}r†�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM)jÞ]r‡�jçXBooting the target.rˆ�…�r‰�}rŠ�(jÅj…�jÆjƒ�ubaubaubeubjÇ)�r‹�}rŒ�(jÅUjÆj`�jÎjr”jÐjÑjÒ}r��(jÔ]jÕ]jÖ]j×]rŽ�Upreparing-the-emmcr��ajÚ]r��hÜaujÜM,jÝhjÞ]r‘�(jà)�r’�}r“�(jÅXPreparing the eMMCr”�jÆj‹�jÎjr”jÐjäjÒ}r•�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM,jÝhjÞ]r–�jçXPreparing the eMMCr—�…�r˜�}r™�(jÅj”�jÆj’�ubaubj )�rš�}r›�(jÅUjÆj‹�jÎjr”jÐj jÒ}rœ�(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM.jÝhjÞ]r��(j{)�rž�}rŸ�(jÅXŠTo format the eMMC of the target board, Run the following application on the target board `USB_DevMsc_mmcsd `__ .jÆjš�jÎjr”jÐjjÒ}r �(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¡�jò)�r¢�}r£�(jÅXŠTo format the eMMC of the target board, Run the following application on the target board `USB_DevMsc_mmcsd `__ .jÆjž�jÎjr”jÐjõjÒ}r¤�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM.jÞ]r¥�(jçXZTo format the eMMC of the target board, Run the following application on the target board r¦�…�r§�}r¨�(jÅXZTo format the eMMC of the target board, Run the following application on the target board jÆj¢�ubjû)�r©�}rª�(jÅX.`USB_DevMsc_mmcsd `__jÒ}r«�(UnameXUSB_DevMsc_mmcsdjXDevice_Drivers.html#id6j×]jÖ]jÔ]jÕ]jÚ]ujÆj¢�jÞ]r¬�jçXUSB_DevMsc_mmcsdr­�…�r®�}r¯�(jÅUjÆj©�ubajÐjÿubjçX .r°�…�r±�}r²�(jÅX .jÆj¢�ubeubaubj{)�r³�}r´�(jÅX_To boot the target the eMMC should be bootable. Follow the steps same as SD card formatting as given at `Creating bootable SD card in windows `__ or `Creating bootable SD card in Linux `__ except instead of SD card, connect the target board eMMC to the host PC.jÆjš�jÎjr”jÐjjÒ}rµ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¶�jò)�r·�}r¸�(jÅX_To boot the target the eMMC should be bootable. Follow the steps same as SD card formatting as given at `Creating bootable SD card in windows `__ or `Creating bootable SD card in Linux `__ except instead of SD card, connect the target board eMMC to the host PC.jÆj³�jÎjr”jÐjõjÒ}r¹�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM0jÞ]rº�(jçXhTo boot the target the eMMC should be bootable. Follow the steps same as SD card formatting as given at r»�…�r¼�}r½�(jÅXhTo boot the target the eMMC should be bootable. Follow the steps same as SD card formatting as given at jÆj·�ubjû)�r¾�}r¿�(jÅXW`Creating bootable SD card in windows `__jÒ}rÀ�(UnameX$Creating bootable SD card in windowsjX,Overview.html#windows-sd-card-creation-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj·�jÞ]rÁ�jçX$Creating bootable SD card in windowsrÂ�…�rÃ�}rÄ�(jÅUjÆj¾�ubajÐjÿubjçX or rÅ�…�rÆ�}rÇ�(jÅX or jÆj·�ubjû)�rÈ�}rÉ�(jÅXS`Creating bootable SD card in Linux `__jÒ}rÊ�(UnameX"Creating bootable SD card in LinuxjX*Overview.html#linux-sd-card-creation-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj·�jÞ]rË�jçX"Creating bootable SD card in LinuxrÌ�…�rÍ�}rÎ�(jÅUjÆjÈ�ubajÐjÿubjçXI except instead of SD card, connect the target board eMMC to the host PC.rÏ�…�rÐ�}rÑ�(jÅXI except instead of SD card, connect the target board eMMC to the host PC.jÆj·�ubeubaubj{)�rÒ�}rÓ�(jÅXmDelete the "MLO" and "app" in the bootable eMMC which are created in the process of making the eMMC bootable.jÆjš�jÎjr”jÐjjÒ}rÔ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÕ�jò)�rÖ�}r×�(jÅXmDelete the "MLO" and "app" in the bootable eMMC which are created in the process of making the eMMC bootable.rØ�jÆjÒ�jÎjr”jÐjõjÒ}rÙ�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM5jÞ]rÚ�jçXmDelete the "MLO" and "app" in the bootable eMMC which are created in the process of making the eMMC bootable.rÛ�…�rÜ�}rÝ�(jÅjØ�jÆjÖ�ubaubaubj{)�rÞ�}rß�(jÅX%Copy the sbl binary(MLO) to the eMMC.rà�jÆjš�jÎjr”jÐjjÒ}rá�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]râ�jò)�rã�}rä�(jÅjà�jÆjÞ�jÎjr”jÐjõjÒ}rå�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM7jÞ]ræ�jçX%Copy the sbl binary(MLO) to the eMMC.rç�…�rè�}ré�(jÅjà�jÆjã�ubaubaubj{)�rê�}rë�(jÅX†Copy the Application image(app) generated using the `Script `__ to the eMMC. jÆjš�jÎjr”jÐjjÒ}rì�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rí�jò)�rî�}rï�(jÅX…Copy the Application image(app) generated using the `Script `__ to the eMMC.jÆjê�jÎjr”jÐjõjÒ}rð�(jÔ]jÕ]jÖ]j×]jÚ]ujÜM8jÞ]rñ�(jçX4Copy the Application image(app) generated using the rò�…�ró�}rô�(jÅX4Copy the Application image(app) generated using the jÆjî�ubjû)�rõ�}rö�(jÅXD`Script `__jÒ}r÷�(UnameXScriptjX7Foundational_Components.html#application-image-creationj×]jÖ]jÔ]jÕ]jÚ]ujÆjî�jÞ]rø�jçXScriptrù�…�rú�}rû�(jÅUjÆjõ�ubajÐjÿubjçX to the eMMC.rü�…�rý�}rþ�(jÅX to the eMMC.jÆjî�ubeubaubeubeubjÇ)�rÿ�}rž(jÅUjKjÆj`�jÎjr”jÐjÑjÒ}rž(jÔ]ržj,�ajÕ]jÖ]j×]ržUid76ržajÚ]ujÜM=jÝhjÞ]rž(jà)�rž}rž(jÅXBooting the targetržjÆjÿ�jÎjr”jÐjäjÒ}r ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜM=jÝhjÞ]r žjçXBooting the targetr ž…�r ž}r ž(jÅjžjÆjžubaubj )�rž}rž(jÅUjÆjÿ�jÎjr”jÐj jÒ}rž(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM?jÝhjÞ]rž(j{)�rž}rž(jÅX`Set boot settings to eMMC by selecting J3, J4 and J6 jumpers on Pin 2 and 3 of AM572x EVM Board.jÆjžjÎjr”jÐjjÒ}rž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ržjò)�rž}rž(jÅX`Set boot settings to eMMC by selecting J3, J4 and J6 jumpers on Pin 2 and 3 of AM572x EVM Board.ržjÆjžjÎjr”jÐjõjÒ}rž(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÞ]ržjçX`Set boot settings to eMMC by selecting J3, J4 and J6 jumpers on Pin 2 and 3 of AM572x EVM Board.rž…�rž}rž(jÅjžjÆjžubaubaubj{)�rž}rž(jÅX8Ensure there is no SD card inserted in the SD card slot.r žjÆjžjÎjr”jÐjjÒ}r!ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r"žjò)�r#ž}r$ž(jÅj žjÆjžjÎjr”jÐjõjÒ}r%ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMAjÞ]r&žjçX8Ensure there is no SD card inserted in the SD card slot.r'ž…�r(ž}r)ž(jÅj žjÆj#žubaubaubj{)�r*ž}r+ž(jÅXkOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the UART console portjÆjžjÎjr”jÐjjÒ}r,ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r-žjò)�r.ž}r/ž(jÅXkOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the UART console portr0žjÆj*žjÎjr”jÐjõjÒ}r1ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMBjÞ]r2žjçXkOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the UART console portr3ž…�r4ž}r5ž(jÅj0žjÆj.žubaubaubj{)�r6ž}r7ž(jÅXDDo a power reset of the board to boot the appliation from the eMMC. jÆjžjÎjr”jÐjjÒ}r8ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r9žjò)�r:ž}r;ž(jÅXCDo a power reset of the board to boot the appliation from the eMMC.r<žjÆj6žjÎjr”jÐjõjÒ}r=ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMDjÞ]r>žjçXCDo a power reset of the board to boot the appliation from the eMMC.r?ž…�r@ž}rAž(jÅj<žjÆj:žubaubaubeubeubeubjÇ)�rBž}rCž(jÅUjKjÆjSšjÎjr”jÐjÑjÒ}rDž(jÔ]rEžjÍ�ajÕ]jÖ]j×]rFžUid77rGžajÚ]ujÜMGjÝhjÞ]rHž(jà)�rIž}rJž(jÅXBooting Via QSPIrKžjÆjBžjÎjr”jÐjäjÒ}rLž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMGjÝhjÞ]rMžjçXBooting Via QSPIrNž…�rOž}rPž(jÅjKžjÆjIžubaubjò)�rQž}rRž(jÅX+Booting from QSPI flash involves two steps-rSžjÆjBžjÎjr”jÐjõjÒ}rTž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMHjÝhjÞ]rUžjçX+Booting from QSPI flash involves two steps-rVž…�rWž}rXž(jÅjSžjÆjQžubaubj )�rYž}rZž(jÅUjÆjBžjÎjr”jÐj jÒ}r[ž(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMJjÝhjÞ]r\ž(j{)�r]ž}r^ž(jÅX1Flashing bootloader and app image to QSPI flash.r_žjÆjYžjÎjr”jÐjjÒ}r`ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ražjò)�rbž}rcž(jÅj_žjÆj]žjÎjr”jÐjõjÒ}rdž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMJjÞ]režjçX1Flashing bootloader and app image to QSPI flash.rfž…�rgž}rhž(jÅj_žjÆjbžubaubaubj{)�riž}rjž(jÅXBooting the target. jÆjYžjÎjr”jÐjjÒ}rkž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rlžjò)�rmž}rnž(jÅXBooting the target.rožjÆjižjÎjr”jÐjõjÒ}rpž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMKjÞ]rqžjçXBooting the target.rrž…�rsž}rtž(jÅjožjÆjmžubaubaubeubjÇ)�ruž}rvž(jÅUjKjÆjBžjÎjr”jÐjÑjÒ}rwž(jÔ]rxžjŽajÕ]jÖ]j×]ryžUid78rzžajÚ]ujÜMNjÝhjÞ]r{ž(jà)�r|ž}r}ž(jÅXPreparing Flash Devicer~žjÆjužjÎjr”jÐjäjÒ}rž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMNjÝhjÞ]r€žjçXPreparing Flash Devicer�ž…�r‚ž}rƒž(jÅj~žjÆj|žubaubjò)�r„ž}r…ž(jÅXçUse the CCS based qspi_flash_writer.out utility provided in <*TI_PDK_INSTALL_DIR>/packages/ti/boot/sbl/tools/flashwriter/qspi/'* to flash the SBL image at offset 0 and application image at offset 0x80000 to the QSPI device.jÆjužjÎjr”jÐjõjÒ}r†ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMPjÝhjÞ]r‡ž(jçX=Use the CCS based qspi_flash_writer.out utility provided in /packages/ti/boot/sbl/tools/flashwriter/qspi/'*jÒ}r�ž(jÔ]jÕ]jÖ]j×]jÚ]ujÆj„žjÞ]rŽžjçXHTI_PDK_INSTALL_DIR>/packages/ti/boot/sbl/tools/flashwriter/qspi/'r�ž…�r�ž}r‘ž(jÅUjÆj‹žubajÐjUubjçX` to flash the SBL image at offset 0 and application image at offset 0x80000 to the QSPI device.r’ž…�r“ž}r”ž(jÅX` to flash the SBL image at offset 0 and application image at offset 0x80000 to the QSPI device.jÆj„žubeubjò)�r•ž}r–ž(jÅXQSPI device Memory Map:r—žjÆjužjÎjr”jÐjõjÒ}r˜ž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMUjÝhjÞ]r™žjçXQSPI device Memory Map:ršž…�r›ž}rœž(jÅj—žjÆj•žubaubjy )�r�ž}ržž(jÅUjÆjužjÎjr”jÐjÔ jÒ}rŸž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r žj~ )�r¡ž}r¢ž(jÅUjÒ}r£ž(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj�žjÞ]r¤ž(jƒ )�r¥ž}r¦ž(jÅUjÒ}r§ž(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj¡žjÞ]jÐj‡ ubjƒ )�r¨ž}r©ž(jÅUjÒ}rªž(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj¡žjÞ]jÐj‡ ubj¥ )�r«ž}r¬ž(jÅUjÒ}r­ž(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡žjÞ]r®ž(j� )�r¯ž}r°ž(jÅUjÒ}r±ž(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«žjÞ]r²ž(j• )�r³ž}r´ž(jÅUjÒ}rµž(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯žjÞ]r¶žjò)�r·ž}r¸ž(jÅX Offset 0x00r¹žjÆj³žjÎjr”jÐjõjÒ}rºž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMXjÞ]r»žjçX Offset 0x00r¼ž…�r½ž}r¾ž(jÅj¹žjÆj·žubaubajÐj¢ ubj• )�r¿ž}rÀž(jÅUjÒ}rÁž(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯žjÞ]ržjò)�rÞ}rÄž(jÅXSBLrÅžjÆj¿žjÎjr”jÐjõjÒ}rÆž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMXjÞ]rÇžjçXSBLrÈž…�rÉž}rÊž(jÅjÅžjÆjÞubaubajÐj¢ ubejÐj£ ubj� )�rËž}rÌž(jÅUjÒ}rÍž(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«žjÞ]rΞ(j• )�rÏž}rО(jÅUjÒ}rÑž(jÔ]jÕ]jÖ]j×]jÚ]ujÆjËžjÞ]rÒžjò)�rÓž}rÔž(jÅXOffset 0x80000rÕžjÆjÏžjÎjr”jÐjõjÒ}rÖž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMZjÞ]rמjçXOffset 0x80000rØž…�rÙž}rÚž(jÅjÕžjÆjÓžubaubajÐj¢ ubj• )�rÛž}rÜž(jÅUjÒ}rÝž(jÔ]jÕ]jÖ]j×]jÚ]ujÆjËžjÞ]rÞžjò)�rßž}ràž(jÅXApplication Multicore ImagerážjÆjÛžjÎjr”jÐjõjÒ}râž(jÔ]jÕ]jÖ]j×]jÚ]ujÜMZjÞ]rãžjçXApplication Multicore Imageräž…�råž}ræž(jÅjážjÆjßžubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�rçž}rèž(jÅXIThe images can be flashed into QSPI flash by following steps given below.réžjÆjužjÎjr”jÐjõjÒ}rêž(jÔ]jÕ]jÖ]j×]jÚ]ujÜM]jÝhjÞ]rëžjçXIThe images can be flashed into QSPI flash by following steps given below.rìž…�ríž}rîž(jÅjéžjÆjçžubaubj )�rïž}rðž(jÅUjÆjužjÎjr”jÐj jÒ}rñž(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM`jÝhjÞ]ròž(j{)�róž}rôž(jÅXCopy QSPI mode SBL image */packages/ti/boot/sbl/binary//qspi/bin/MLO* and application image(app) generated using the Script into the SD card. Rename the bootloader file to 'boot' and application image to 'app' with no extensions.jÆjïžjÎjr”jÐjjÒ}rõž(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]röžjò)�r÷ž}røž(jÅXCopy QSPI mode SBL image */packages/ti/boot/sbl/binary//qspi/bin/MLO* and application image(app) generated using the Script into the SD card. Rename the bootloader file to 'boot' and application image to 'app' with no extensions.jÆjóžjÎjr”jÐjõjÒ}rùž(jÔ]jÕ]jÖ]j×]jÚ]ujÜM`jÞ]rúž(jçXCopy QSPI mode SBL image rûž…�rüž}rýž(jÅXCopy QSPI mode SBL image jÆj÷žubjM)�rþž}rÿž(jÅXK*/packages/ti/boot/sbl/binary//qspi/bin/MLO*jÒ}rŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷žjÞ]rŸjçXI/packages/ti/boot/sbl/binary//qspi/bin/MLOrŸ…�rŸ}rŸ(jÅUjÆjþžubajÐjUubjçX  and application image(app) generated using the Script into the SD card. Rename the bootloader file to 'boot' and application image to 'app' with no extensions.rŸ…�rŸ}rŸ(jÅX  and application image(app) generated using the Script into the SD card. Rename the bootloader file to 'boot' and application image to 'app' with no extensions.jÆj÷žubeubaubj{)�rŸ}r Ÿ(jÅXCopy 'config' file into the SD card, the config file should contain names of the image to be flashed and the offset. A sample config file can be found at */packages/ti/boot/sbl/tools/flashWriter/qspi/config*. Do not change the name of the config file. **NOTE:** "config" file can be used without any modifications if bootloader and application images are renamed to "boot" and "app". **NOTE:** Do not rename the bootloader to be copied to SD card as "MLO", as MMCSD bootloader expects "MLO" and "app" to boot.jÆjïžjÎjr”jÐjjÒ}r Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r Ÿjò)�r Ÿ}r Ÿ(jÅXCopy 'config' file into the SD card, the config file should contain names of the image to be flashed and the offset. A sample config file can be found at */packages/ti/boot/sbl/tools/flashWriter/qspi/config*. Do not change the name of the config file. **NOTE:** "config" file can be used without any modifications if bootloader and application images are renamed to "boot" and "app". **NOTE:** Do not rename the bootloader to be copied to SD card as "MLO", as MMCSD bootloader expects "MLO" and "app" to boot.jÆjŸjÎjr”jÐjõjÒ}rŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMfjÞ]rŸ(jçXœCopy 'config' file into the SD card, the config file should contain names of the image to be flashed and the offset. A sample config file can be found at rŸ…�rŸ}rŸ(jÅXœCopy 'config' file into the SD card, the config file should contain names of the image to be flashed and the offset. A sample config file can be found at jÆj ŸubjM)�rŸ}rŸ(jÅXI*/packages/ti/boot/sbl/tools/flashWriter/qspi/config*jÒ}rŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ŸjÞ]rŸjçXG/packages/ti/boot/sbl/tools/flashWriter/qspi/configrŸ…�rŸ}rŸ(jÅUjÆjŸubajÐjUubjçX-. Do not change the name of the config file. rŸ…�rŸ}rŸ(jÅX-. Do not change the name of the config file. jÆj ŸubjÚ)�rŸ}rŸ(jÅX **NOTE:**jÒ}rŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ŸjÞ]r ŸjçXNOTE:r!Ÿ…�r"Ÿ}r#Ÿ(jÅUjÆjŸubajÐjâubjçX{ "config" file can be used without any modifications if bootloader and application images are renamed to "boot" and "app". r$Ÿ…�r%Ÿ}r&Ÿ(jÅX{ "config" file can be used without any modifications if bootloader and application images are renamed to "boot" and "app". jÆj ŸubjÚ)�r'Ÿ}r(Ÿ(jÅX **NOTE:**jÒ}r)Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ŸjÞ]r*ŸjçXNOTE:r+Ÿ…�r,Ÿ}r-Ÿ(jÅUjÆj'ŸubajÐjâubjçXt Do not rename the bootloader to be copied to SD card as "MLO", as MMCSD bootloader expects "MLO" and "app" to boot.r.Ÿ…�r/Ÿ}r0Ÿ(jÅXt Do not rename the bootloader to be copied to SD card as "MLO", as MMCSD bootloader expects "MLO" and "app" to boot.jÆj Ÿubeubaubj{)�r1Ÿ}r2Ÿ(jÅXªNow SD card contains 3 files 1)boot 2)app 3)config files. config file contains the address of boot image as 0x0 and app image as 0x80000. Insert it into the SD card slot.jÆjïžjÎjr”jÐjjÒ}r3Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r4Ÿjò)�r5Ÿ}r6Ÿ(jÅXªNow SD card contains 3 files 1)boot 2)app 3)config files. config file contains the address of boot image as 0x0 and app image as 0x80000. Insert it into the SD card slot.r7ŸjÆj1ŸjÎjr”jÐjõjÒ}r8Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMojÞ]r9ŸjçXªNow SD card contains 3 files 1)boot 2)app 3)config files. config file contains the address of boot image as 0x0 and app image as 0x80000. Insert it into the SD card slot.r:Ÿ…�r;Ÿ}r<Ÿ(jÅj7ŸjÆj5Ÿubaubaubj{)�r=Ÿ}r>Ÿ(jÅX¨Connect the board with CCS and and load the prebuilt qspi flash writer application from /packages/ti/boot/sbl/tools/flashWriter/qspi/bin/jÆjïžjÎjr”jÐjjÒ}r?Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r@Ÿjò)�rAŸ}rBŸ(jÅX¨Connect the board with CCS and and load the prebuilt qspi flash writer application from /packages/ti/boot/sbl/tools/flashWriter/qspi/bin/rCŸjÆj=ŸjÎjr”jÐjõjÒ}rDŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMsjÞ]rEŸjçX¨Connect the board with CCS and and load the prebuilt qspi flash writer application from /packages/ti/boot/sbl/tools/flashWriter/qspi/bin/rFŸ…�rGŸ}rHŸ(jÅjCŸjÆjAŸubaubaubj{)�rIŸ}rJŸ(jÅXaRun the QSPI flash writer application. You will see the following logs on the EVM's UART console.jÆjïžjÎjr”jÐjjÒ}rKŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rLŸjò)�rMŸ}rNŸ(jÅXaRun the QSPI flash writer application. You will see the following logs on the EVM's UART console.rOŸjÆjIŸjÎjr”jÐjõjÒ}rPŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMvjÞ]rQŸjçXaRun the QSPI flash writer application. You will see the following logs on the EVM's UART console.rRŸ…�rSŸ}rTŸ(jÅjOŸjÆjMŸubaubaubj{)�rUŸ}rVŸ(jÅX}After the images have been flashed to the QSPI device disconnect from CCS and do a power reset to boot from the QSPI memory. jÆjïžjÎjr”jÐjjÒ}rWŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rXŸjò)�rYŸ}rZŸ(jÅX|After the images have been flashed to the QSPI device disconnect from CCS and do a power reset to boot from the QSPI memory.r[ŸjÆjUŸjÎjr”jÐjõjÒ}r\Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMxjÞ]r]ŸjçX|After the images have been flashed to the QSPI device disconnect from CCS and do a power reset to boot from the QSPI memory.r^Ÿ…�r_Ÿ}r`Ÿ(jÅj[ŸjÆjYŸubaubaubeubj)�raŸ}rbŸ(jÅX­PDK QSPI Flash Writer!! Copying boot to QSPI Flash Copying app to QSPI Flash Changing read to quad mode Read mode has been changed to Quad mode SUCCESS!!! Flashing completedjÆjužjÎjr”jÐjjÒ}rcŸ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMb$jÝhjÞ]rdŸjçX­PDK QSPI Flash Writer!! Copying boot to QSPI Flash Copying app to QSPI Flash Changing read to quad mode Read mode has been changed to Quad mode SUCCESS!!! Flashing completedreŸ…�rfŸ}rgŸ(jÅUjÆjaŸubaubjë)�rhŸ}riŸ(jÅXq- The file names have to be renamed in such a way that the length of name is less than 9 characters. Any file name less than 9 characters can be used. - This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image. - It is the responsibility of the user to provide proper offsets.jÆjužjÎNjÐjïjÒ}rjŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rkŸjt)�rlŸ}rmŸ(jÅUjÒ}rnŸ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjhŸjÞ]roŸ(j{)�rpŸ}rqŸ(jÅX”The file names have to be renamed in such a way that the length of name is less than 9 characters. Any file name less than 9 characters can be used.jÒ}rrŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlŸjÞ]rsŸjò)�rtŸ}ruŸ(jÅX”The file names have to be renamed in such a way that the length of name is less than 9 characters. Any file name less than 9 characters can be used.rvŸjÆjpŸjÎjr”jÐjõjÒ}rwŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMˆjÞ]rxŸjçX”The file names have to be renamed in such a way that the length of name is less than 9 characters. Any file name less than 9 characters can be used.ryŸ…�rzŸ}r{Ÿ(jÅjvŸjÆjtŸubaubajÐjubj{)�r|Ÿ}r}Ÿ(jÅX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.jÒ}r~Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlŸjÞ]rŸjò)�r€Ÿ}r�Ÿ(jÅX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.r‚ŸjÆj|ŸjÎjr”jÐjõjÒ}rƒŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‹jÞ]r„ŸjçX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.r…Ÿ…�r†Ÿ}r‡Ÿ(jÅj‚ŸjÆj€ŸubaubajÐjubj{)�rˆŸ}r‰Ÿ(jÅX?It is the responsibility of the user to provide proper offsets.rŠŸjÒ}r‹Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlŸjÞ]rŒŸjò)�r�Ÿ}rŽŸ(jÅjŠŸjÆjˆŸjÎjr”jÐjõjÒ}r�Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŽjÞ]r�ŸjçX?It is the responsibility of the user to provide proper offsets.r‘Ÿ…�r’Ÿ}r“Ÿ(jÅjŠŸjÆj�ŸubaubajÐjubejÐjwubaubeubeubeubjÇ)�r”Ÿ}r•Ÿ(jÅUjKjÆj`”jÎjr”jÐjÑjÒ}r–Ÿ(jÔ]r—Ÿj’ajÕ]jÖ]j×]r˜ŸUid79r™ŸajÚ]ujÜM’jÝhjÞ]ršŸ(jà)�r›Ÿ}rœŸ(jÅXTest Applicationr�ŸjÆj”ŸjÎjr”jÐjäjÒ}ržŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM’jÝhjÞ]rŸŸjçXTest Applicationr Ÿ…�r¡Ÿ}r¢Ÿ(jÅj�ŸjÆj›Ÿubaubjò)�r£Ÿ}r¤Ÿ(jÅXóSBL provides a test application to demonstrate booting of multicore application image on A15 and DSP cores.The multicore sample application uses mailbox for inter-processor communication. It is used to validate the multi-core boot-up use case.r¥ŸjÆj”ŸjÎjr”jÐjõjÒ}r¦Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM”jÝhjÞ]r§ŸjçXóSBL provides a test application to demonstrate booting of multicore application image on A15 and DSP cores.The multicore sample application uses mailbox for inter-processor communication. It is used to validate the multi-core boot-up use case.r¨Ÿ…�r©Ÿ}rªŸ(jÅj¥ŸjÆj£Ÿubaubjò)�r«Ÿ}r¬Ÿ(jÅXþMaster application sends wake-up message to the DSP slave cores & waits for acknowledgement message from the slave cores in an infinite loop.Each slave DSP core waits for wake-up message from the master core responds back with an acknowledgement message.r­ŸjÆj”ŸjÎjr”jÐjõjÒ}r®Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM™jÝhjÞ]r¯ŸjçXþMaster application sends wake-up message to the DSP slave cores & waits for acknowledgement message from the slave cores in an infinite loop.Each slave DSP core waits for wake-up message from the master core responds back with an acknowledgement message.r°Ÿ…�r±Ÿ}r²Ÿ(jÅj­ŸjÆj«ŸubaubjÇ)�r³Ÿ}r´Ÿ(jÅUjÆj”ŸjÎjr”jÐjÑjÒ}rµŸ(jÔ]jÕ]jÖ]j×]r¶ŸUapplication-image-creationr·ŸajÚ]r¸ŸhíaujÜMŸjÝhjÞ]r¹Ÿ(jà)�rºŸ}r»Ÿ(jÅXApplication Image Creationr¼ŸjÆj³ŸjÎjr”jÐjäjÒ}r½Ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŸjÝhjÞ]r¾ŸjçXApplication Image Creationr¿Ÿ…�rÀŸ}rÁŸ(jÅj¼ŸjÆjºŸubaubjò)�rŸ}rß(jÅX.Application Image creation involves two steps.rÄŸjÆj³ŸjÎjr”jÐjõjÒ}rÅŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rÆŸjçX.Application Image creation involves two steps.rÇŸ…�rÈŸ}rÉŸ(jÅjÄŸjÆjŸubaubj )�rÊŸ}rËŸ(jÅUjÆj³ŸjÎjr”jÐj jÒ}rÌŸ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM¢jÝhjÞ]rÍŸ(j{)�rΟ}rÏŸ(jÅX9Generating the .outs of applications for individual coresrПjÆjÊŸjÎjr”jÐjjÒ}rÑŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÒŸjò)�rÓŸ}rÔŸ(jÅjПjÆjΟjÎjr”jÐjõjÒ}rÕŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¢jÞ]rÖŸjçX9Generating the .outs of applications for individual coresrן…�rØŸ}rÙŸ(jÅjПjÆjÓŸubaubaubj{)�rÚŸ}rÛŸ(jÅXMCombining the .outs of individual cores to create a bootable multicore image jÆjÊŸjÎjr”jÐjjÒ}rÜŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÝŸjò)�rÞŸ}rߟ(jÅXLCombining the .outs of individual cores to create a bootable multicore imageràŸjÆjÚŸjÎjr”jÐjõjÒ}ráŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM£jÞ]râŸjçXLCombining the .outs of individual cores to create a bootable multicore imager㟅�räŸ}råŸ(jÅjàŸjÆjÞŸubaubaubeubjò)�ræŸ}rçŸ(jÅXYThe steps to create the bootable image in Linux and Windows environment are listed below.rèŸjÆj³ŸjÎjr”jÐjõjÒ}réŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¦jÝhjÞ]rêŸjçXYThe steps to create the bootable image in Linux and Windows environment are listed below.r럅�rìŸ}ríŸ(jÅjèŸjÆjæŸubaubjë)�rîŸ}rïŸ(jÅXa- Valid SOC settings are AM571x/AM572x - Valid BOARD settings are evmAM572x/idkAM571x/idkAM572xjÆj³ŸjÎNjÐjïjÒ}rðŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rñŸjt)�ròŸ}róŸ(jÅUjÒ}rôŸ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjîŸjÞ]rõŸ(j{)�röŸ}r÷Ÿ(jÅX$Valid SOC settings are AM571x/AM572xrøŸjÒ}rùŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòŸjÞ]rúŸjò)�rûŸ}rüŸ(jÅjøŸjÆjöŸjÎjr”jÐjõjÒ}rýŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMªjÞ]rþŸjçX$Valid SOC settings are AM571x/AM572xrÿŸ…�r }r (jÅjøŸjÆjûŸubaubajÐjubj{)�r }r (jÅX6Valid BOARD settings are evmAM572x/idkAM571x/idkAM572xr jÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÆjòŸjÞ]r jò)�r }r (jÅj jÆj jÎjr”jÐjõjÒ}r  (jÔ]jÕ]jÖ]j×]jÚ]ujÜM«jÞ]r  jçX6Valid BOARD settings are evmAM572x/idkAM571x/idkAM572xr  …�r  }r  (jÅj jÆj ubaubajÐjubejÐjwubaubeubjÇ)�r }r (jÅUjÆj”ŸjÎjr”jÐjÑjÒ}r (jÔ]jÕ]jÖ]j×]r Ulinux-environmentr ajÚ]r h°aujÜM®jÝhjÞ]r (jà)�r }r (jÅXLinux Environmentr jÆj jÎjr”jÐjäjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜM®jÝhjÞ]r jçXLinux Environmentr …�r }r (jÅj jÆj ubaubjò)�r }r (jÅX&Command to build the test application.r jÆj jÎjr”jÐjõjÒ}r  (jÔ]jÕ]jÖ]j×]jÚ]ujÜM¯jÝhjÞ]r! jçX&Command to build the test application.r" …�r# }r$ (jÅj jÆj ubaubj)�r% }r& (jÅX’Go to cd (TI_PDK_INSTALL_DIR)\packages\ti\boot\sbl make example BOARD= SOC= to build the application make example_clean BOARD=jÆj jÎjr”jÐjjÒ}r' (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM˜$jÝhjÞ]r( jçX’Go to cd (TI_PDK_INSTALL_DIR)\packages\ti\boot\sbl make example BOARD= SOC= to build the application make example_clean BOARD=r) …�r* }r+ (jÅUjÆj% ubaubjò)�r, }r- (jÅXExample:r. jÆj jÎjr”jÐjõjÒ}r/ (jÔ]jÕ]jÖ]j×]jÚ]ujÜM¸jÝhjÞ]r0 jçXExample:r1 …�r2 }r3 (jÅj. jÆj, ubaubj)�r4 }r5 (jÅX'make example BOARD=idkAM572x SOC=AM572xjÆj jÎjr”jÐjjÒ}r6 (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¡$jÝhjÞ]r7 jçX'make example BOARD=idkAM572x SOC=AM572xr8 …�r9 }r: (jÅUjÆj4 ubaubjò)�r; }r< (jÅXbTo create the final bootable application image use the AM57xImageGen script and follow these stepsr= jÆj jÎjr”jÐjõjÒ}r> (jÔ]jÕ]jÖ]j×]jÚ]ujÜM¾jÝhjÞ]r? jçXbTo create the final bootable application image use the AM57xImageGen script and follow these stepsr@ …�rA }rB (jÅj= jÆj; ubaubjò)�rC }rD (jÅX�1. Set the following environment variable in the shell.  BIN_PATH: Pointing to the path where the AppImage needs to be generatedrE jÆj jÎjr”jÐjõjÒ}rF (jÔ]jÕ]jÖ]j×]jÚ]ujÜMÁjÝhjÞ]rG jçX�1. Set the following environment variable in the shell.  BIN_PATH: Pointing to the path where the AppImage needs to be generatedrH …�rI }rJ (jÅjE jÆjC ubaubj)�rK }rL (jÅXEEx: export BIN_PATH=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binaryjÆj jÎjr”jÐjjÒ}rM (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM«$jÝhjÞ]rN jçXEEx: export BIN_PATH=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binaryrO …�rP }rQ (jÅUjÆjK ubaubjò)�rR }rS (jÅXi2. Edit the script file to point to the application elf files by setting the input application variables.rT jÆj jÎjr”jÐjõjÒ}rU (jÔ]jÕ]jÖ]j×]jÚ]ujÜMÈjÝhjÞ]rV jçXi2. Edit the script file to point to the application elf files by setting the input application variables.rW …�rX }rY (jÅjT jÆjR ubaubjò)�rZ }r[ (jÅXáApp_MPU_CPU0: Point to the path where the application .out for A15 MPU is located App_DSP1: Point to the path where the dsp core 1 application is located App_DSP2: Point to the path where the dsp core 2 application is locatedr\ jÆj jÎjr”jÐjõjÒ}r] (jÔ]jÕ]jÖ]j×]jÚ]ujÜMËjÝhjÞ]r^ jçXáApp_MPU_CPU0: Point to the path where the application .out for A15 MPU is located App_DSP1: Point to the path where the dsp core 1 application is located App_DSP2: Point to the path where the dsp core 2 application is locatedr_ …�r` }ra (jÅj\ jÆjZ ubaubj)�rb }rc (jÅX2export APP_MPU_CPU0=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/idkAM572x/example/armv7/bin/sbl_app.out export APP_DSP1=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/idkAM572x/example/c66/dsp1/bin/sbl_app.xe66 export APP_DSP2=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/idkAM572x/example/c66/dsp2/bin/sbl_app.xe663 export APP_IPU1_CPU0=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/idkAM572x/example/m4/ipu1/bin/sbl_app.xem4 export APP_IPU1_CPU0=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/idkAM572x/example/m4/ipu2/bin/sbl_app.xem4jÆj jÎjr”jÐjjÒ}rd (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¶$jÝhjÞ]re jçX2export APP_MPU_CPU0=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/idkAM572x/example/armv7/bin/sbl_app.out export APP_DSP1=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/idkAM572x/example/c66/dsp1/bin/sbl_app.xe66 export APP_DSP2=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/idkAM572x/example/c66/dsp2/bin/sbl_app.xe663 export APP_IPU1_CPU0=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/idkAM572x/example/m4/ipu1/bin/sbl_app.xem4 export APP_IPU1_CPU0=$(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/idkAM572x/example/m4/ipu2/bin/sbl_app.xem4rf …�rg }rh (jÅUjÆjb ubaubjò)�ri }rj (jÅXZ3. If it is not required to load an application on specific core leave the variable blank.rk jÆj jÎjr”jÐjõjÒ}rl (jÔ]jÕ]jÖ]j×]jÚ]ujÜMÛjÝhjÞ]rm jçXZ3. If it is not required to load an application on specific core leave the variable blank.rn …�ro }rp (jÅjk jÆji ubaubj )�rq }rr (jÅUjÆj jÎjr”jÐj jÒ}rs (jU.jO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMÞjÝhjÞ]rt j{)�ru }rv (jÅXpRun the script file AM57xImageGen found under the path $(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/tools/scripts jÆjq jÎjr”jÐjjÒ}rw (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rx jò)�ry }rz (jÅXoRun the script file AM57xImageGen found under the path $(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/tools/scriptsr{ jÆju jÎjr”jÐjõjÒ}r| (jÔ]jÕ]jÖ]j×]jÚ]ujÜMÞjÞ]r} jçXoRun the script file AM57xImageGen found under the path $(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/tools/scriptsr~ …�r }r€ (jÅj{ jÆjy ubaubaubaubjò)�r� }r‚ (jÅXW5. An application image by name app is created in the path pointed by BIN_PATH variablerƒ jÆj jÎjr”jÐjõjÒ}r„ (jÔ]jÕ]jÖ]j×]jÚ]ujÜMàjÝhjÞ]r… jçXW5. An application image by name app is created in the path pointed by BIN_PATH variabler† …�r‡ }rˆ (jÅjƒ jÆj� ubaubjò)�r‰ }rŠ (jÅXd6. Copy the Bootlaoder image(MLO) and application(app) in the SD card to boot using MMCSD boot mode.r‹ jÆj jÎjr”jÐjõjÒ}rŒ (jÔ]jÕ]jÖ]j×]jÚ]ujÜMãjÝhjÞ]r� jçXd6. Copy the Bootlaoder image(MLO) and application(app) in the SD card to boot using MMCSD boot mode.rŽ …�r� }r� (jÅj‹ jÆj‰ ubaubjë)�r‘ }r’ (jÅX- The AM57xImageGen.sh script depends on tools like mono to execute the out2rprc.exe. - The linux host environment needs to have this tool installed to execute this script. - Refer this link to download the `mono `__ tooljÆj jÎNjÐjïjÒ}r“ (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r” jt)�r• }r– (jÅUjÒ}r— (jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj‘ jÞ]r˜ (j{)�r™ }rš (jÅXSThe AM57xImageGen.sh script depends on tools like mono to execute the out2rprc.exe.jÒ}r› (jÔ]jÕ]jÖ]j×]jÚ]ujÆj• jÞ]rœ jò)�r� }rž (jÅXSThe AM57xImageGen.sh script depends on tools like mono to execute the out2rprc.exe.rŸ jÆj™ jÎjr”jÐjõjÒ}r  (jÔ]jÕ]jÖ]j×]jÚ]ujÜMèjÞ]r¡ jçXSThe AM57xImageGen.sh script depends on tools like mono to execute the out2rprc.exe.r¢ …�r£ }r¤ (jÅjŸ jÆj� ubaubajÐjubj{)�r¥ }r¦ (jÅXTThe linux host environment needs to have this tool installed to execute this script.jÒ}r§ (jÔ]jÕ]jÖ]j×]jÚ]ujÆj• jÞ]r¨ jò)�r© }rª (jÅXTThe linux host environment needs to have this tool installed to execute this script.r« jÆj¥ jÎjr”jÐjõjÒ}r¬ (jÔ]jÕ]jÖ]j×]jÚ]ujÜMêjÞ]r­ jçXTThe linux host environment needs to have this tool installed to execute this script.r® …�r¯ }r° (jÅj« jÆj© ubaubajÐjubj{)�r± }r² (jÅXKRefer this link to download the `mono `__ tooljÒ}r³ (jÔ]jÕ]jÖ]j×]jÚ]ujÆj• jÞ]r´ jò)�rµ }r¶ (jÅXKRefer this link to download the `mono `__ tooljÆj± jÎjr”jÐjõjÒ}r· (jÔ]jÕ]jÖ]j×]jÚ]ujÜMìjÞ]r¸ (jçX Refer this link to download the r¹ …�rº }r» (jÅX Refer this link to download the jÆjµ ubjû)�r¼ }r½ (jÅX&`mono `__jÒ}r¾ (UnameXmonojXhttp://www.mono-project.comj×]jÖ]jÔ]jÕ]jÚ]ujÆjµ jÞ]r¿ jçXmonorÀ …�rÁ }r (jÅUjÆj¼ ubajÐjÿubjçX toolrà…�rÄ }rÅ (jÅX tooljÆjµ ubeubajÐjubejÐjwubaubeubjÇ)�rÆ }rÇ (jÅUjÆj”ŸjÎjr”jÐjÑjÒ}rÈ (jÔ]jÕ]jÖ]j×]rÉ Uwindows-environmentrÊ ajÚ]rË haaujÜMðjÝhjÞ]rÌ (jà)�rÍ }rΠ(jÅXWindows environmentrÏ jÆjÆ jÎjr”jÐjäjÒ}rР(jÔ]jÕ]jÖ]j×]jÚ]ujÜMðjÝhjÞ]rÑ jçXWindows environmentrÒ …�rÓ }rÔ (jÅjÏ jÆjÍ ubaubjò)�rÕ }rÖ (jÅX&Command to build the test application.r× jÆjÆ jÎjr”jÐjõjÒ}rØ (jÔ]jÕ]jÖ]j×]jÚ]ujÜMñjÝhjÞ]rÙ jçX&Command to build the test application.rÚ …�rÛ }rÜ (jÅj× jÆjÕ ubaubj)�rÝ }rÞ (jÅX”Go to cd (TI_PDK_INSTALL_DIR)\packages\ti\boot\sbl gmake example BOARD= SOC= to build the application gmake example_clean BOARD=jÆjÆ jÎjr”jÐjjÒ}rß (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÚ$jÝhjÞ]rà jçX”Go to cd (TI_PDK_INSTALL_DIR)\packages\ti\boot\sbl gmake example BOARD= SOC= to build the application gmake example_clean BOARD=rá …�râ }rã (jÅUjÆjÝ ubaubjò)�rä }rå (jÅXExample:ræ jÆjÆ jÎjr”jÐjõjÒ}rç (jÔ]jÕ]jÖ]j×]jÚ]ujÜMújÝhjÞ]rè jçXExample:ré …�rê }rë (jÅjæ jÆjä ubaubj)�rì }rí (jÅX(gmake example BOARD=idkAM572x SOC=AM572xjÆjÆ jÎjr”jÐjjÒ}rî (j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMã$jÝhjÞ]rï jçX(gmake example BOARD=idkAM572x SOC=AM572xrð …�rñ }rò (jÅUjÆjì ubaubjò)�ró }rô (jÅXbTo create the final bootable application image use the AM57xImageGen script and follow these stepsrõ jÆjÆ jÎjr”jÐjõjÒ}rö (jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r÷ jçXbTo create the final bootable application image use the AM57xImageGen script and follow these stepsrø …�rù }rú (jÅjõ jÆjó ubaubj )�rû }rü (jÅUjÆjÆ jÎjr”jÐj jÒ}rý (jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMjÝhjÞ]rþ j{)�rÿ }r¡(jÅXASet the following environment variable in windows command prompt jÆjû jÎjr”jÐjjÒ}r¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¡jò)�r¡}r¡(jÅX@Set the following environment variable in windows command promptr¡jÆjÿ jÎjr”jÐjõjÒ}r¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r¡jçX@Set the following environment variable in windows command promptr¡…�r ¡}r ¡(jÅj¡jÆj¡ubaubaubaubjò)�r ¡}r ¡(jÅXGBIN_PATH: Pointing to the path where the AppImage needs to be generatedr ¡jÆjÆ jÎjr”jÐjõjÒ}r¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r¡jçXGBIN_PATH: Pointing to the path where the AppImage needs to be generatedr¡…�r¡}r¡(jÅj ¡jÆj ¡ubaubj)�r¡}r¡(jÅXBEx: set BIN_PATH=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binaryjÆjÆ jÎjr”jÐjjÒ}r¡(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMî$jÝhjÞ]r¡jçXBEx: set BIN_PATH=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binaryr¡…�r¡}r¡(jÅUjÆj¡ubaubjò)�r¡}r¡(jÅXh2. Edit the batch file to point to the application elf files by setting the input application variables.r¡jÆjÆ jÎjr”jÐjõjÒ}r¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r¡jçXh2. Edit the batch file to point to the application elf files by setting the input application variables.r¡…�r ¡}r!¡(jÅj¡jÆj¡ubaubjò)�r"¡}r#¡(jÅXáApp_MPU_CPU0: Point to the path where the application .out for A15 MPU is located App_DSP1: Point to the path where the dsp core 1 application is located App_DSP2: Point to the path where the dsp core 2 application is locatedr$¡jÆjÆ jÎjr”jÐjõjÒ}r%¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r&¡jçXáApp_MPU_CPU0: Point to the path where the application .out for A15 MPU is located App_DSP1: Point to the path where the dsp core 1 application is located App_DSP2: Point to the path where the dsp core 2 application is locatedr'¡…�r(¡}r)¡(jÅj$¡jÆj"¡ubaubj)�r*¡}r+¡(jÅXset App_MPU_CPU0=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binary\idkAM572x\example\armv7\bin\sbl_app.out set App_DSP1=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binary\idkAM572x\example\c66\dsp1\bin\sbl_app.xe66 set App_DSP2=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binary\idkAM572x\example\c66\dsp2\bin\sbl_app.xe66 set App_IPU1_CPU0=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binary\idkAM572x\example\m4\ipu1\bin\sbl_app.xem4 set App_IPU2_CPU0=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binary\idkAM572x\example\m4\ipu2\bin\sbl_app.xem4jÆjÆ jÎjr”jÐjjÒ}r,¡(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMù$jÝhjÞ]r-¡jçXset App_MPU_CPU0=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binary\idkAM572x\example\armv7\bin\sbl_app.out set App_DSP1=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binary\idkAM572x\example\c66\dsp1\bin\sbl_app.xe66 set App_DSP2=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binary\idkAM572x\example\c66\dsp2\bin\sbl_app.xe66 set App_IPU1_CPU0=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binary\idkAM572x\example\m4\ipu1\bin\sbl_app.xem4 set App_IPU2_CPU0=%TI_PDK_INSTALL_DIR%\packages\ti\boot\sbl\binary\idkAM572x\example\m4\ipu2\bin\sbl_app.xem4r.¡…�r/¡}r0¡(jÅUjÆj*¡ubaubjò)�r1¡}r2¡(jÅXZ3. If it is not required to load an application on specific core leave the variable blank.r3¡jÆjÆ jÎjr”jÐjõjÒ}r4¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r5¡jçXZ3. If it is not required to load an application on specific core leave the variable blank.r6¡…�r7¡}r8¡(jÅj3¡jÆj1¡ubaubj )�r9¡}r:¡(jÅUjÆjÆ jÎjr”jÐj jÒ}r;¡(jU.jO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM!jÝhjÞ]r<¡j{)�r=¡}r>¡(jÅXoRun the batch file AM57xImageGen found under the path $(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/tools/scripts jÆj9¡jÎjr”jÐjjÒ}r?¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r@¡jò)�rA¡}rB¡(jÅXnRun the batch file AM57xImageGen found under the path $(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/tools/scriptsrC¡jÆj=¡jÎjr”jÐjõjÒ}rD¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM!jÞ]rE¡jçXnRun the batch file AM57xImageGen found under the path $(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/tools/scriptsrF¡…�rG¡}rH¡(jÅjC¡jÆjA¡ubaubaubaubjò)�rI¡}rJ¡(jÅX5. Follow the steps 4 to 6 listed above for Linux environment. | Setup Requirements """""""""""""""""""" For information on board specific requirements like power supply, UART console port connections refer the Hardware User guide of the respective boards.rK¡jÆjÆ jÎjr”jÐjõjÒ}rL¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM#jÝhjÞ]rM¡jçX5. Follow the steps 4 to 6 listed above for Linux environment. | Setup Requirements """""""""""""""""""" For information on board specific requirements like power supply, UART console port connections refer the Hardware User guide of the respective boards.rN¡…�rO¡}rP¡(jÅjK¡jÆjI¡ubaubjò)�rQ¡}rR¡(jÅX„The configurations needed to setup UART console through a serial terminal application on host PC are listed in the next section.rS¡jÆjÆ jÎjr”jÐjõjÒ}rT¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÝhjÞ]rU¡jçX„The configurations needed to setup UART console through a serial terminal application on host PC are listed in the next section.rV¡…�rW¡}rX¡(jÅjS¡jÆjQ¡ubaubjÇ)�rY¡}rZ¡(jÅUjÆjÆ jÎjr”jÐjÑjÒ}r[¡(jÔ]jÕ]jÖ]j×]r\¡Uuart-console-setupr]¡ajÚ]r^¡jaujÜM/jÝhjÞ]r_¡(jà)�r`¡}ra¡(jÅXUART Console Setuprb¡jÆjY¡jÎjr”jÐjäjÒ}rc¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM/jÝhjÞ]rd¡jçXUART Console Setupre¡…�rf¡}rg¡(jÅjb¡jÆj`¡ubaubjò)�rh¡}ri¡(jÅX²PDK SBL prints messages on the UART Serial Console running on the host. Hence, a serial terminal application (like Tera Term/HyperTerminal/minicom) should be running on the host.rj¡jÆjY¡jÎjr”jÐjõjÒ}rk¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM0jÝhjÞ]rl¡jçX²PDK SBL prints messages on the UART Serial Console running on the host. Hence, a serial terminal application (like Tera Term/HyperTerminal/minicom) should be running on the host.rm¡…�rn¡}ro¡(jÅjj¡jÆjh¡ubaubjò)�rp¡}rq¡(jÅX®The host serial port must be configured at 115200 baud, no parity, 1 stop bit and no flow control. Please ensure that the local echo setting for the terminal is turned off.rr¡jÆjY¡jÎjr”jÐjõjÒ}rs¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM4jÝhjÞ]rt¡jçX®The host serial port must be configured at 115200 baud, no parity, 1 stop bit and no flow control. Please ensure that the local echo setting for the terminal is turned off.ru¡…�rv¡}rw¡(jÅjr¡jÆjp¡ubaubeubjÇ)�rx¡}ry¡(jÅUjÆjÆ jÎjr”jÐjÑjÒ}rz¡(jÔ]jÕ]jÖ]j×]r{¡Uloading-the-test-applicationr|¡ajÚ]r}¡h®aujÜM9jÝhjÞ]r~¡(jà)�r¡}r€¡(jÅXLoading the test applicationr�¡jÆjx¡jÎjr”jÐjäjÒ}r‚¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM9jÝhjÞ]rƒ¡jçXLoading the test applicationr„¡…�r…¡}r†¡(jÅj�¡jÆj¡ubaubjò)�r‡¡}rˆ¡(jÅXMFollow these steps to load the test application using a SD card on the targetr‰¡jÆjx¡jÎjr”jÐjõjÒ}rŠ¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM:jÝhjÞ]r‹¡jçXMFollow these steps to load the test application using a SD card on the targetrŒ¡…�r�¡}rŽ¡(jÅj‰¡jÆj‡¡ubaubjò)�r�¡}r�¡(jÅXjcopy the MLO to your SD card (located at $(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/[BOARD]/mmcsd)r‘¡jÆjx¡jÎjr”jÐjõjÒ}r’¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM=jÝhjÞ]r“¡jçXjcopy the MLO to your SD card (located at $(TI_PDK_INSTALL_DIR)/packages/ti/boot/sbl/binary/[BOARD]/mmcsd)r”¡…�r•¡}r–¡(jÅj‘¡jÆj�¡ubaubj )�r—¡}r˜¡(jÅUjÆjx¡jÎjr”jÐj jÒ}r™¡(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM@jÝhjÞ]rš¡(j{)�r›¡}rœ¡(jÅXKcopy the example app located at path pointed to by BIN_PATH to your SD cardjÆj—¡jÎjr”jÐjjÒ}r�¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rž¡jò)�rŸ¡}r ¡(jÅXKcopy the example app located at path pointed to by BIN_PATH to your SD cardr¡¡jÆj›¡jÎjr”jÐjõjÒ}r¢¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜM@jÞ]r£¡jçXKcopy the example app located at path pointed to by BIN_PATH to your SD cardr¤¡…�r¥¡}r¦¡(jÅj¡¡jÆjŸ¡ubaubaubj{)�r§¡}r¨¡(jÅX;insert your SD card into your board and power on your boardr©¡jÆj—¡jÎjr”jÐjjÒ}rª¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r«¡jò)�r¬¡}r­¡(jÅj©¡jÆj§¡jÎjr”jÐjõjÒ}r®¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜMBjÞ]r¯¡jçX;insert your SD card into your board and power on your boardr°¡…�r±¡}r²¡(jÅj©¡jÆj¬¡ubaubaubj{)�r³¡}r´¡(jÅX4open teraterm to connect to the board's UART consolerµ¡jÆj—¡jÎjr”jÐjjÒ}r¶¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r·¡jò)�r¸¡}r¹¡(jÅjµ¡jÆj³¡jÎjr”jÐjõjÒ}rº¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜMCjÞ]r»¡jçX4open teraterm to connect to the board's UART consoler¼¡…�r½¡}r¾¡(jÅjµ¡jÆj¸¡ubaubaubj{)�r¿¡}rÀ¡(jÅX,press the "Hard Reset" button on your board jÆj—¡jÎjr”jÐjjÒ}rÁ¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¡jò)�rá}rÄ¡(jÅX+press the "Hard Reset" button on your boardrÅ¡jÆj¿¡jÎjr”jÐjõjÒ}rÆ¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜMDjÞ]rÇ¡jçX+press the "Hard Reset" button on your boardrÈ¡…�rÉ¡}rÊ¡(jÅjÅ¡jÆjáubaubaubeubjò)�rË¡}rÌ¡(jÅXdOn Successful bootup you should see the following logs on the UART console for a AM572x based board.rÍ¡jÆjx¡jÎjr”jÐjõjÒ}rΡ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMFjÝhjÞ]rÏ¡jçXdOn Successful bootup you should see the following logs on the UART console for a AM572x based board.rС…�rÑ¡}rÒ¡(jÅjÍ¡jÆjË¡ubaubjR)�rÓ¡}rÔ¡(jÅX%.. Image:: ../images/Sbl_example.jpg jÆjx¡jÎjr”jÐjZjÒ}rÕ¡(UuriXrtos/../images/Sbl_example.jpgrÖ¡j×]jÖ]jÔ]jÕ]jX}rסU*jÖ¡sjÚ]ujÜMJjÝhjÞ]ubjë)�rØ¡}rÙ¡(jÅX MPU Core 0 example does a sequential check of mailbox messages sent from the other cores. On rare occasions, the check happens before the message is sent - the " boot-up Successful" message might not be displayed even though the core(s) were booted successfully.jÆjx¡jÎjr”jÐjïjÒ}rÚ¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÛ¡jò)�rÜ¡}rÝ¡(jÅX MPU Core 0 example does a sequential check of mailbox messages sent from the other cores. On rare occasions, the check happens before the message is sent - the " boot-up Successful" message might not be displayed even though the core(s) were booted successfully.rÞ¡jÆjØ¡jÎjr”jÐjõjÒ}rß¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜMLjÞ]rà¡jçX MPU Core 0 example does a sequential check of mailbox messages sent from the other cores. On rare occasions, the check happens before the message is sent - the " boot-up Successful" message might not be displayed even though the core(s) were booted successfully.rá¡…�râ¡}rã¡(jÅjÞ¡jÆjÜ¡ubaubaubeubeubeubjÇ)�rä¡}rå¡(jÅUjÆj`”jÎjr”jÐjÑjÒ}ræ¡(jÔ]jÕ]jÖ]j×]rç¡Uapplication-integrationrè¡ajÚ]ré¡haujÜMRjÝhjÞ]rê¡(jà)�rë¡}rì¡(jÅXApplication Integrationrí¡jÆjä¡jÎjr”jÐjäjÒ}rî¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜMRjÝhjÞ]rï¡jçXApplication Integrationrð¡…�rñ¡}rò¡(jÅjí¡jÆjë¡ubaubjÇ)�ró¡}rô¡(jÅUjKjÆjä¡jÎjr”jÐjÑjÒ}rõ¡(jÔ]rö¡X memory mapr÷¡ajÕ]jÖ]j×]rø¡U memory-maprù¡ajÚ]ujÜMUjÝhjÞ]rú¡(jà)�rû¡}rü¡(jÅX Memory Maprý¡jÆjó¡jÎjr”jÐjäjÒ}rþ¡(jÔ]jÕ]jÖ]j×]jÚ]ujÜMUjÝhjÞ]rÿ¡jçX Memory Mapr¢…�r¢}r¢(jÅjý¡jÆjû¡ubaubjò)�r¢}r¢(jÅXÕTable indicated below provides memory map details for SBL image in OCMC_RAM1.  For more details on pinmux and IO delay requirements refer this link `Processor SDK Board Support `__jÆjó¡jÎjr”jÐjõjÒ}r¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜMWjÝhjÞ]r¢(jçX•Table indicated below provides memory map details for SBL image in OCMC_RAM1.  For more details on pinmux and IO delay requirements refer this link r¢…�r¢}r ¢(jÅX•Table indicated below provides memory map details for SBL image in OCMC_RAM1.  For more details on pinmux and IO delay requirements refer this link jÆj¢ubjû)�r ¢}r ¢(jÅX@`Processor SDK Board Support `__jÒ}r ¢(UnameXProcessor SDK Board SupportjXindex_board.html#board-supportj×]jÖ]jÔ]jÕ]jÚ]ujÆj¢jÞ]r ¢jçXProcessor SDK Board Supportr¢…�r¢}r¢(jÅUjÆj ¢ubajÐjÿubeubjò)�r¢}r¢(jÅX²We recommend that users should refer to the linker command file and the map file for the boot loader to check for latest information on the memory utilization in the boot loader.r¢jÆjó¡jÎjr”jÐjõjÒ}r¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜM\jÝhjÞ]r¢jçX²We recommend that users should refer to the linker command file and the map file for the boot loader to check for latest information on the memory utilization in the boot loader.r¢…�r¢}r¢(jÅj¢jÆj¢ubaubjò)�r¢}r¢(jÅX`**Location of linker command file**: /packages/ti/boot/sbl/board//buildjÆjó¡jÎjr”jÐjõjÒ}r¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜM`jÝhjÞ]r¢(jÚ)�r¢}r¢(jÅX#**Location of linker command file**jÒ}r¢(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¢jÞ]r ¢jçXLocation of linker command filer!¢…�r"¢}r#¢(jÅUjÆj¢ubajÐjâubjçX=: /packages/ti/boot/sbl/board//buildr$¢…�r%¢}r&¢(jÅX=: /packages/ti/boot/sbl/board//buildjÆj¢ubeubjò)�r'¢}r(¢(jÅX!The SBL memory map is shown belowr)¢jÆjó¡jÎjr”jÐjõjÒ}r*¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜMcjÝhjÞ]r+¢jçX!The SBL memory map is shown belowr,¢…�r-¢}r.¢(jÅj)¢jÆj'¢ubaubjR)�r/¢}r0¢(jÅX(.. Image:: ../images/SBL_memory_map.png jÆjó¡jÎjr”jÐjZjÒ}r1¢(UuriX!rtos/../images/SBL_memory_map.pngr2¢j×]jÖ]jÔ]jÕ]jX}r3¢U*j2¢sjÚ]ujÜMfjÝhjÞ]ubjë)�r4¢}r5¢(jÅX - After the application boots and is running on the SOC, it is free to use the SBL_MEM region. - The pinmux data from the board library and MMU Table are part of the SBL_MEM region indicated in the figure above. If pinmux data needs to be placed at a specific location then users can update the SBL linker command file to add the BOARD_IO_DELAY_CODE and BOARD_IO_DELAY_DATA as described in `Application Integration of board library for AM5x `__jÆjó¡jÎNjÐjïjÒ}r6¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r7¢jt)�r8¢}r9¢(jÅUjÒ}r:¢(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj4¢jÞ]r;¢(j{)�r<¢}r=¢(jÅX\After the application boots and is running on the SOC, it is free to use the SBL_MEM region.jÒ}r>¢(jÔ]jÕ]jÖ]j×]jÚ]ujÆj8¢jÞ]r?¢jò)�r@¢}rA¢(jÅX\After the application boots and is running on the SOC, it is free to use the SBL_MEM region.rB¢jÆj<¢jÎjr”jÐjõjÒ}rC¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜMhjÞ]rD¢jçX\After the application boots and is running on the SOC, it is free to use the SBL_MEM region.rE¢…�rF¢}rG¢(jÅjB¢jÆj@¢ubaubajÐjubj{)�rH¢}rI¢(jÅX•The pinmux data from the board library and MMU Table are part of the SBL_MEM region indicated in the figure above. If pinmux data needs to be placed at a specific location then users can update the SBL linker command file to add the BOARD_IO_DELAY_CODE and BOARD_IO_DELAY_DATA as described in `Application Integration of board library for AM5x `__jÒ}rJ¢(jÔ]jÕ]jÖ]j×]jÚ]ujÆj8¢jÞ]rK¢jò)�rL¢}rM¢(jÅX•The pinmux data from the board library and MMU Table are part of the SBL_MEM region indicated in the figure above. If pinmux data needs to be placed at a specific location then users can update the SBL linker command file to add the BOARD_IO_DELAY_CODE and BOARD_IO_DELAY_DATA as described in `Application Integration of board library for AM5x `__jÆjH¢jÎjr”jÐjõjÒ}rN¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjjÞ]rO¢(jçX%The pinmux data from the board library and MMU Table are part of the SBL_MEM region indicated in the figure above. If pinmux data needs to be placed at a specific location then users can update the SBL linker command file to add the BOARD_IO_DELAY_CODE and BOARD_IO_DELAY_DATA as described in rP¢…�rQ¢}rR¢(jÅX%The pinmux data from the board library and MMU Table are part of the SBL_MEM region indicated in the figure above. If pinmux data needs to be placed at a specific location then users can update the SBL linker command file to add the BOARD_IO_DELAY_CODE and BOARD_IO_DELAY_DATA as described in jÆjL¢ubjû)�rS¢}rT¢(jÅXp`Application Integration of board library for AM5x `__jÒ}rU¢(UnameX1Application Integration of board library for AM5xjX8index_board.html#application-integration-for-am5x-dra7xxj×]jÖ]jÔ]jÕ]jÚ]ujÆjL¢jÞ]rV¢jçX1Application Integration of board library for AM5xrW¢…�rX¢}rY¢(jÅUjÆjS¢ubajÐjÿubeubajÐjubejÐjwubaubeubeubjÇ)�rZ¢}r[¢(jÅUjÆj`”jÎjr”jÐjÑjÒ}r\¢(jÔ]jÕ]jÖ]j×]r]¢Usbl-customizationr^¢ajÚ]r_¢h‡aujÜMsjÝhjÞ]r`¢(jà)�ra¢}rb¢(jÅXSBL Customizationrc¢jÆjZ¢jÎjr”jÐjäjÒ}rd¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜMsjÝhjÞ]re¢jçXSBL Customizationrf¢…�rg¢}rh¢(jÅjc¢jÆja¢ubaubjÇ)�ri¢}rj¢(jÅUjÆjZ¢jÎjr”jÐjÑjÒ}rk¢(jÔ]jÕ]jÖ]j×]rl¢Uchanging-boot-media-offsetsrm¢ajÚ]rn¢jjaujÜMvjÝhjÞ]ro¢(jà)�rp¢}rq¢(jÅXChanging boot media offsetsrr¢jÆji¢jÎjr”jÐjäjÒ}rs¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜMvjÝhjÞ]rt¢jçXChanging boot media offsetsru¢…�rv¢}rw¢(jÅjr¢jÆjp¢ubaubjò)�rx¢}ry¢(jÅX¼The location at which SBL resides on the flash is predefined by the ROM bootloader spec and so these defaults can`t be changed. However the SBL is a user defined bootloader so many of the defaults can easily be modified to meet application requirements. For example the flash offset location from which the bootloader reads the application is configured in the source files located under /packages/ti/boot/sbl/src/rz¢jÆji¢jÎjr”jÐjõjÒ}r{¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜMwjÝhjÞ]r|¢jçX¼The location at which SBL resides on the flash is predefined by the ROM bootloader spec and so these defaults can`t be changed. However the SBL is a user defined bootloader so many of the defaults can easily be modified to meet application requirements. For example the flash offset location from which the bootloader reads the application is configured in the source files located under /packages/ti/boot/sbl/src/r}¢…�r~¢}r¢(jÅjz¢jÆjx¢ubaubjò)�r€¢}r�¢(jÅXtExamples of customization that can be changed: - QSPI/SPI flash offsets: These offsets are configured in sbl_qspi.cr‚¢jÆji¢jÎjr”jÐjõjÒ}rƒ¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r„¢jçXtExamples of customization that can be changed: - QSPI/SPI flash offsets: These offsets are configured in sbl_qspi.cr…¢…�r†¢}r‡¢(jÅj‚¢jÆj€¢ubaubj3)�rˆ¢}r‰¢(jÅUjÆji¢jÎjr”jÐj6jÒ}rŠ¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‹¢jò)�rŒ¢}r�¢(jÅX and sbl_spi.crŽ¢jÆjˆ¢jÎjr”jÐjõjÒ}r�¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]r�¢jçX and sbl_spi.cr‘¢…�r’¢}r“¢(jÅjŽ¢jÆjŒ¢ubaubaubjt)�r”¢}r•¢(jÅUjÆji¢jÎjr”jÐjwjÒ}r–¢(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM‚jÝhjÞ]r—¢j{)�r˜¢}r™¢(jÅXhMMCSD: The name of the application is hard coded as app in function SBL_MMCBootImage in the sbl_mmcsd.c jÆj”¢jÎjr”jÐjjÒ}rš¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r›¢jò)�rœ¢}r�¢(jÅXgMMCSD: The name of the application is hard coded as app in function SBL_MMCBootImage in the sbl_mmcsd.crž¢jÆj˜¢jÎjr”jÐjõjÒ}rŸ¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‚jÞ]r ¢jçXgMMCSD: The name of the application is hard coded as app in function SBL_MMCBootImage in the sbl_mmcsd.cr¡¢…�r¢¢}r£¢(jÅjž¢jÆjœ¢ubaubaubaubeubjÇ)�r¤¢}r¥¢(jÅUjÆjZ¢jÎjr”jÐjÑjÒ}r¦¢(jÔ]jÕ]jÖ]j×]r§¢U:speeding-up-boot-by-increasing-speed-of-the-boot-interfacer¨¢ajÚ]r©¢h*aujÜM†jÝhjÞ]rª¢(jà)�r«¢}r¬¢(jÅX:Speeding up boot by increasing speed of the boot interfacer­¢jÆj¤¢jÎjr”jÐjäjÒ}r®¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜM†jÝhjÞ]r¯¢jçX:Speeding up boot by increasing speed of the boot interfacer°¢…�r±¢}r²¢(jÅj­¢jÆj«¢ubaubjò)�r³¢}r´¢(jÅXzThe SBL for AM57xx devices uses LLD drivers to read and write from boot media supported. The SBL uses the default SOC configuration of the drivers and the speeds setup. For example, the SPI driver default SPI bitrate is 1 MHz (Refer /packages/ti/drv/spi/src/SPI_drv.c) so if you wish to speed up boot you can update the SPI parameter in the SBL as shown below:rµ¢jÆj¤¢jÎjr”jÐjõjÒ}r¶¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‡jÝhjÞ]r·¢jçXzThe SBL for AM57xx devices uses LLD drivers to read and write from boot media supported. The SBL uses the default SOC configuration of the drivers and the speeds setup. For example, the SPI driver default SPI bitrate is 1 MHz (Refer /packages/ti/drv/spi/src/SPI_drv.c) so if you wish to speed up boot you can update the SPI parameter in the SBL as shown below:r¸¢…�r¹¢}rº¢(jÅjµ¢jÆj³¢ubaubj)�r»¢}r¼¢(jÅX;SPI_Params_init(&spiParams); spiParams.bitRate = 24000000U;jÆj¤¢jÎjr”jÐjjÒ}r½¢(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMv%jÝhjÞ]r¾¢jçX;SPI_Params_init(&spiParams); spiParams.bitRate = 24000000U;r¿¢…�rÀ¢}rÁ¢(jÅUjÆj»¢ubaubjò)�r¢}râ(jÅX\The configuration of the driver is usually done in the boot/sbl/soc//sbl_soc.c file.rÄ¢jÆj¤¢jÎjr”jÐjõjÒ}rÅ¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜM”jÝhjÞ]rÆ¢jçX\The configuration of the driver is usually done in the boot/sbl/soc//sbl_soc.c file.rÇ¢…�rÈ¢}rÉ¢(jÅjÄ¢jÆj¢ubaubjt)�rÊ¢}rË¢(jÅUjÆj¤¢jÎjr”jÐjwjÒ}rÌ¢(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM—jÝhjÞ]rÍ¢(j{)�r΢}rÏ¢(jÅXr**For SD/MMC**: You can configure higher speed and change bus width using MMCSD_v1_HwAttrs_s or MMCSD_v0_HwAttrs_sjÆjÊ¢jÎjr”jÐjjÒ}rТ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÑ¢jò)�rÒ¢}rÓ¢(jÅXr**For SD/MMC**: You can configure higher speed and change bus width using MMCSD_v1_HwAttrs_s or MMCSD_v0_HwAttrs_sjÆj΢jÎjr”jÐjõjÒ}rÔ¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜM—jÞ]rÕ¢(jÚ)�rÖ¢}r×¢(jÅX**For SD/MMC**jÒ}rØ¢(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÒ¢jÞ]rÙ¢jçX For SD/MMCrÚ¢…�rÛ¢}rÜ¢(jÅUjÆjÖ¢ubajÐjâubjçXd: You can configure higher speed and change bus width using MMCSD_v1_HwAttrs_s or MMCSD_v0_HwAttrs_srÝ¢…�rÞ¢}rߢ(jÅXd: You can configure higher speed and change bus width using MMCSD_v1_HwAttrs_s or MMCSD_v0_HwAttrs_sjÆjÒ¢ubeubaubj{)�rà¢}rá¢(jÅXˆ**For QSPI**: 2 pin and 4 pin mode, and input frequency is configured using QSPI_HwAttrs in the QSPI driver. Check driver for defaults. jÆjÊ¢jÎjr”jÐjjÒ}râ¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rã¢jò)�rä¢}rå¢(jÅX‡**For QSPI**: 2 pin and 4 pin mode, and input frequency is configured using QSPI_HwAttrs in the QSPI driver. Check driver for defaults.jÆjà¢jÎjr”jÐjõjÒ}ræ¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜM™jÞ]rç¢(jÚ)�rè¢}ré¢(jÅX **For QSPI**jÒ}rê¢(jÔ]jÕ]jÖ]j×]jÚ]ujÆjä¢jÞ]rë¢jçXFor QSPIr종�rí¢}rî¢(jÅUjÆjè¢ubajÐjâubjçX{: 2 pin and 4 pin mode, and input frequency is configured using QSPI_HwAttrs in the QSPI driver. Check driver for defaults.r�rð¢}rñ¢(jÅX{: 2 pin and 4 pin mode, and input frequency is configured using QSPI_HwAttrs in the QSPI driver. Check driver for defaults.jÆjä¢ubeubaubeubjò)�rò¢}ró¢(jÅX`Also, check to see if the CACHE and MMU settings for the ARM core are setup to enable fast boot.rô¢jÆj¤¢jÎjr”jÐjõjÒ}rõ¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜMœjÝhjÞ]rö¢jçX`Also, check to see if the CACHE and MMU settings for the ARM core are setup to enable fast boot.r÷¢…�rø¢}rù¢(jÅjô¢jÆjò¢ubaubjë)�rú¢}rû¢(jÅXò**SYSBOOT settings for AM57xx** The SYSBOOT configuration in your hardware using Sitara devices (AM3/AM4/AM5) can play a big role in the time required to boot successfully. On these devices the boot pins configure a boot sequence for the ROM bootloader to check for valid boot image so if you have a preferred boot mode designers are required to use SYSBOOT setup such that the preferred boot media is first in the boot sequence. If the preferred boot media occurs later boot sequence, the boot is likely to add the time required by RBL to check other boot media for an valid image. For example if QSPI is the preferred boot media on your AM57xx hardware then you should have system configure SYSBOOT to boot of QSPI first using SYSBOOT setting for QSPI_1 or QSPI4 for Memory preferred booting or Production booting (Refer: Initialization chapter in TRM).Incorrect SYSBOOT configuration can causes long delays especially if peripheral boot is configured to be one of the preferred boot modes in the boot orderjÆj¤¢jÎjr”jÐjïjÒ}rü¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rý¢(jò)�rþ¢}rÿ¢(jÅX**SYSBOOT settings for AM57xx**r£jÆjú¢jÎjr”jÐjõjÒ}r£(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r£jÚ)�r£}r£(jÅj£jÒ}r£(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþ¢jÞ]r£jçXSYSBOOT settings for AM57xxr£…�r£}r £(jÅUjÆj£ubajÐjâubaubjò)�r £}r £(jÅXÑThe SYSBOOT configuration in your hardware using Sitara devices (AM3/AM4/AM5) can play a big role in the time required to boot successfully. On these devices the boot pins configure a boot sequence for the ROM bootloader to check for valid boot image so if you have a preferred boot mode designers are required to use SYSBOOT setup such that the preferred boot media is first in the boot sequence. If the preferred boot media occurs later boot sequence, the boot is likely to add the time required by RBL to check other boot media for an valid image. For example if QSPI is the preferred boot media on your AM57xx hardware then you should have system configure SYSBOOT to boot of QSPI first using SYSBOOT setting for QSPI_1 or QSPI4 for Memory preferred booting or Production booting (Refer: Initialization chapter in TRM).Incorrect SYSBOOT configuration can causes long delays especially if peripheral boot is configured to be one of the preferred boot modes in the boot orderr £jÆjú¢jÎjr”jÐjõjÒ}r £(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¢jÞ]r£jçXÑThe SYSBOOT configuration in your hardware using Sitara devices (AM3/AM4/AM5) can play a big role in the time required to boot successfully. On these devices the boot pins configure a boot sequence for the ROM bootloader to check for valid boot image so if you have a preferred boot mode designers are required to use SYSBOOT setup such that the preferred boot media is first in the boot sequence. If the preferred boot media occurs later boot sequence, the boot is likely to add the time required by RBL to check other boot media for an valid image. For example if QSPI is the preferred boot media on your AM57xx hardware then you should have system configure SYSBOOT to boot of QSPI first using SYSBOOT setting for QSPI_1 or QSPI4 for Memory preferred booting or Production booting (Refer: Initialization chapter in TRM).Incorrect SYSBOOT configuration can causes long delays especially if peripheral boot is configured to be one of the preferred boot modes in the boot orderr£…�r£}r£(jÅj £jÆj £ubaubeubjc)�r£}r£(jÅUjÆj¤¢jÎjr”jÐjfjÒ}r£(jÔ]jÕ]jÖ]j×]jÚ]ujÜM±jÝhjÞ]r£ji)�r£}r£(jÅUjlKjÆj£jÎjr”jÐjÜjÒ}r£(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�r£}r£(jÅUjÆjZ¢jÎjr”jÐjÑjÒ}r£(jÔ]jÕ]jÖ]j×]r£U$reducing-size-of-sbl-and-applicationr£ajÚ]r£jfaujÜM´jÝhjÞ]r£(jà)�r £}r!£(jÅX$Reducing size of SBL and applicationr"£jÆj£jÎjr”jÐjäjÒ}r#£(jÔ]jÕ]jÖ]j×]jÚ]ujÜM´jÝhjÞ]r$£jçX$Reducing size of SBL and applicationr%£…�r&£}r'£(jÅj"£jÆj £ubaubjò)�r(£}r)£(jÅXãAnother way to optimize boot times is to reduce the size of the binary that needs to be loaded by the bootloader by building the app with optimization for code size using -Os (GNU GCC) and for -O when using TI compilers.r*£jÆj£jÎjr”jÐjõjÒ}r+£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMµjÝhjÞ]r,£jçXãAnother way to optimize boot times is to reduce the size of the binary that needs to be loaded by the bootloader by building the app with optimization for code size using -Os (GNU GCC) and for -O when using TI compilers.r-£…�r.£}r/£(jÅj*£jÆj(£ubaubjò)�r0£}r1£(jÅXOther than compiler based optimizations developers can actively shutdown non-essential modules and features to reduce code size. For example if UART logging is not required or DDR memory is not connected in the system, the initialization functions can be removed to reduce code size.r2£jÆj£jÎjr”jÐjõjÒ}r3£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMºjÝhjÞ]r4£jçXOther than compiler based optimizations developers can actively shutdown non-essential modules and features to reduce code size. For example if UART logging is not required or DDR memory is not connected in the system, the initialization functions can be removed to reduce code size.r5£…�r6£}r7£(jÅj2£jÆj0£ubaubeubeubjÇ)�r8£}r9£(jÅUjKjÆj`”jÎjr”jÐjÑjÒ}r:£(jÔ]r;£j “ajÕ]jÖ]j×]r<£Uid80r=£ajÚ]ujÜMÀjÝhjÞ]r>£(jà)�r?£}r@£(jÅX Usage NotesrA£jÆj8£jÎjr”jÐjäjÒ}rB£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÀjÝhjÞ]rC£jçX Usage NotesrD£…�rE£}rF£(jÅjA£jÆj?£ubaubjÇ)�rG£}rH£(jÅUjÆj8£jÎjr”jÐjÑjÒ}rI£(jÔ]jÕ]jÖ]j×]rJ£Usbl-avs-and-abb-setuprK£ajÚ]rL£h`aujÜMÃjÝhjÞ]rM£(jà)�rN£}rO£(jÅXSBL AVS and ABB setuprP£jÆjG£jÎjr”jÐjäjÒ}rQ£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÃjÝhjÞ]rR£jçXSBL AVS and ABB setuprS£…�rT£}rU£(jÅjP£jÆjN£ubaubjò)�rV£}rW£(jÅX\AVS and ABB configuration is mandated for normal operation of AM57xx devices. All Processor SDK RTOS releases v3.3 and later contain SBL that sets up AVS and ABB configuration features using PM LLD APIs The complete details of PMIC configuration and AVS and ABB configuration required by the chip for different OPP has been implemented in the file:rX£jÆjG£jÎjr”jÐjõjÒ}rY£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÄjÝhjÞ]rZ£jçX\AVS and ABB configuration is mandated for normal operation of AM57xx devices. All Processor SDK RTOS releases v3.3 and later contain SBL that sets up AVS and ABB configuration features using PM LLD APIs The complete details of PMIC configuration and AVS and ABB configuration required by the chip for different OPP has been implemented in the file:r[£…�r\£}r]£(jÅjX£jÆjV£ubaubjò)�r^£}r_£(jÅXÁ/packages/ti/boot/sbl/board/src/sbl_avs_config.c If you are using the same PMIC as GP EVM or IDK platform then you can reuse the settings as is in SBL for your custom platformr`£jÆjG£jÎjr”jÐjõjÒ}ra£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÊjÝhjÞ]rb£jçXÁ/packages/ti/boot/sbl/board/src/sbl_avs_config.c If you are using the same PMIC as GP EVM or IDK platform then you can reuse the settings as is in SBL for your custom platformrc£…�rd£}re£(jÅj`£jÆj^£ubaubeubjÇ)�rf£}rg£(jÅUjÆj8£jÎjr”jÐjÑjÒ}rh£(jÔ]jÕ]jÖ]j×]ri£Uconfiguring-entry-point-for-sblrj£ajÚ]rk£haujÜMÏjÝhjÞ]rl£(jà)�rm£}rn£(jÅXConfiguring entry point for SBLro£jÆjf£jÎjr”jÐjäjÒ}rp£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÏjÝhjÞ]rq£jçXConfiguring entry point for SBLrr£…�rs£}rt£(jÅjo£jÆjm£ubaubjò)�ru£}rv£(jÅX<The two key files that help setup the entry point in the SBL build are "sbl/soc//sbl_init.S" and the linker command file "sbl/soc//linker.cmd". The global symbol Entry is used to provide the entry point to the SBL. The Base address of the memory section SBL_MEM is then used by the tiimage and GP Header tool to provide RBL the guidance to find the entry point to pass control. After MLO is created check the TI image format file(MLO or \_ti.bin) or the GP Header file to confirm that the entry point matches the location of Entry symbol in the sbl.mapjÆjf£jÎjr”jÐjõjÒ}rw£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÑjÝhjÞ]rx£jçX;The two key files that help setup the entry point in the SBL build are "sbl/soc//sbl_init.S" and the linker command file "sbl/soc//linker.cmd". The global symbol Entry is used to provide the entry point to the SBL. The Base address of the memory section SBL_MEM is then used by the tiimage and GP Header tool to provide RBL the guidance to find the entry point to pass control. After MLO is created check the TI image format file(MLO or _ti.bin) or the GP Header file to confirm that the entry point matches the location of Entry symbol in the sbl.mapry£…�rz£}r{£(jÅX<The two key files that help setup the entry point in the SBL build are "sbl/soc//sbl_init.S" and the linker command file "sbl/soc//linker.cmd". The global symbol Entry is used to provide the entry point to the SBL. The Base address of the memory section SBL_MEM is then used by the tiimage and GP Header tool to provide RBL the guidance to find the entry point to pass control. After MLO is created check the TI image format file(MLO or \_ti.bin) or the GP Header file to confirm that the entry point matches the location of Entry symbol in the sbl.mapjÆju£ubaubjë)�r|£}r}£(jÅX²The object file created by sbl_init.S should always be the first object file in the link order for the symbol Entry to be placed at the BASE address of the memory section SBL_MEMjÆjf£jÎjr”jÐjïjÒ}r~£(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r£jò)�r€£}r�£(jÅX²The object file created by sbl_init.S should always be the first object file in the link order for the symbol Entry to be placed at the BASE address of the memory section SBL_MEMr‚£jÆj|£jÎjr”jÐjõjÒ}rƒ£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÜjÞ]r„£jçX²The object file created by sbl_init.S should always be the first object file in the link order for the symbol Entry to be placed at the BASE address of the memory section SBL_MEMr…£…�r†£}r‡£(jÅj‚£jÆj€£ubaubaubeubjÇ)�rˆ£}r‰£(jÅUjKjÆj8£jÎjr”jÐjÑjÒ}rŠ£(jÔ]r‹£jF”ajÕ]jÖ]j×]rŒ£Uid81r�£ajÚ]ujÜMâjÝhjÞ]rŽ£(jà)�r�£}r�£(jÅXDebugging application bootr‘£jÆjˆ£jÎjr”jÐjäjÒ}r’£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMâjÝhjÞ]r“£jçXDebugging application bootr”£…�r•£}r–£(jÅj‘£jÆj�£ubaubjò)�r—£}r˜£(jÅX×Steps to debug application boot using Processor SDK RTOS bootloader are discussed in the article `Common steps to debug application boot `__jÆjˆ£jÎjr”jÐjõjÒ}r™£(jÔ]jÕ]jÖ]j×]jÚ]ujÜMãjÝhjÞ]rš£(jçXaSteps to debug application boot using Processor SDK RTOS bootloader are discussed in the article r›£…�rœ£}r�£(jÅXaSteps to debug application boot using Processor SDK RTOS bootloader are discussed in the article jÆj—£ubjû)�rž£}rŸ£(jÅXv`Common steps to debug application boot `__jÒ}r £(UnameX&Common steps to debug application bootjXIindex_Foundational_Components.html#common-steps-to-debug-application-bootj×]jÖ]jÔ]jÕ]jÚ]ujÆj—£jÞ]r¡£jçX&Common steps to debug application bootr¢£…�r££}r¤£(jÅUjÆjž£ubajÐjÿubeubeubeubeubjÇ)�r¥£}r¦£(jÅUjÆj;ƒjÎj¥‚jÐjÑjÒ}r§£(jÔ]jÕ]jÖ]j×]r¨£U am65x-j721er©£ajÚ]rª£haujÜKSjÝhjÞ]r«£(jà)�r¬£}r­£(jÅX AM65x/J721Er®£jÆj¥£jÎj¥‚jÐjäjÒ}r¯£(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÝhjÞ]r°£jçX AM65x/J721Er±£…�r²£}r³£(jÅj®£jÆj¬£ubaubj7)�r´£}rµ£(jÅXKhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_AM65x_J721EjÆj¥£jÎj:XZsource/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_AM65x_J721E.rst.incr¶£…�r·£}r¸£bjÐj>jÒ}r¹£(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rº£jçXKhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_AM65x_J721Er»£…�r¼£}r½£(jÅUjÆj´£ubaubjÇ)�r¾£}r¿£(jÅUjKjÆj¥£jÎj·£jÐjÑjÒ}rÀ£(jÔ]rÁ£Xoverviewr£ajÕ]jÖ]j×]rãUid82rÄ£ajÚ]ujÜKjÝhjÞ]rÅ£(jà)�rÆ£}rÇ£(jÅXOverviewrÈ£jÆj¾£jÎj·£jÐjäjÒ}rÉ£(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÊ£jçXOverviewrË£…�rÌ£}rÍ£(jÅjÈ£jÆjÆ£ubaubjò)�rΣ}rÏ£(jÅX.The Secondary Bootloader (SBL) for AM65xx/J721E device initializes the execution environment for multi-core applications and this can be used to demonstrate a real world product experience. This section covers additional details including execution sequence, tools and additional flashing instructions.rУjÆj¾£jÎj·£jÐjõjÒ}rÑ£(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÒ£jçX.The Secondary Bootloader (SBL) for AM65xx/J721E device initializes the execution environment for multi-core applications and this can be used to demonstrate a real world product experience. This section covers additional details including execution sequence, tools and additional flashing instructions.rÓ£…�rÔ£}rÕ£(jÅjУjÆjΣubaubjò)�rÖ£}r×£(jÅXbThe SBL is essentially a baremetal application, and it uses many components from the Processor SDKrØ£jÆj¾£jÎj·£jÐjõjÒ}rÙ£(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rÚ£jçXbThe SBL is essentially a baremetal application, and it uses many components from the Processor SDKrÛ£…�rÜ£}rÝ£(jÅjØ£jÆjÖ£ubaubjt)�rÞ£}rߣ(jÅUjÆj¾£jÎj·£jÐjwjÒ}rà£(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rá£(j{)�râ£}rã£(jÅX3/packages/ti/build : For build infrastructurerä£jÆjÞ£jÎj·£jÐjjÒ}rå£(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ræ£jò)�rç£}rè£(jÅjä£jÆjâ£jÎj·£jÐjõjÒ}ré£(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rê£jçX3/packages/ti/build : For build infrastructurer룅�rì£}rí£(jÅjä£jÆjç£ubaubaubj{)�rî£}rï£(jÅX</packages/ti/csl : For initialization and SoC addressesrð£jÆjÞ£jÎj·£jÐjjÒ}rñ£(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rò£jò)�ró£}rô£(jÅjð£jÆjî£jÎj·£jÐjõjÒ}rõ£(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rö£jçX</packages/ti/csl : For initialization and SoC addressesr÷£…�rø£}rù£(jÅjð£jÆjó£ubaubaubj{)�rú£}rû£(jÅXG/packages/ti/board : For board and usecase specific initializationrü£jÆjÞ£jÎj·£jÐjjÒ}rý£(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rþ£jò)�rÿ£}r¤(jÅjü£jÆjú£jÎj·£jÐjõjÒ}r¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¤jçXG/packages/ti/board : For board and usecase specific initializationr¤…�r¤}r¤(jÅjü£jÆjÿ£ubaubaubj{)�r¤}r¤(jÅXG/packages/ti/drv/spi : For reading applications from OSPI flashesr¤jÆjÞ£jÎj·£jÐjjÒ}r ¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r ¤jò)�r ¤}r ¤(jÅj¤jÆj¤jÎj·£jÐjõjÒ}r ¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¤jçXG/packages/ti/drv/spi : For reading applications from OSPI flashesr¤…�r¤}r¤(jÅj¤jÆj ¤ubaubaubj{)�r¤}r¤(jÅXH/packages/ti/drv/udma : For reading data from boot media using DMAr¤jÆjÞ£jÎj·£jÐjjÒ}r¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¤jò)�r¤}r¤(jÅj¤jÆj¤jÎj·£jÐjõjÒ}r¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¤jçXH/packages/ti/drv/udma : For reading data from boot media using DMAr¤…�r¤}r¤(jÅj¤jÆj¤ubaubaubj{)�r¤}r¤(jÅXG/packages/ti/drv/mmcsd : For reading applications from MMC/SD/eMMCr ¤jÆjÞ£jÎj·£jÐjjÒ}r!¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r"¤jò)�r#¤}r$¤(jÅj ¤jÆj¤jÎj·£jÐjõjÒ}r%¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r&¤jçXG/packages/ti/drv/mmcsd : For reading applications from MMC/SD/eMMCr'¤…�r(¤}r)¤(jÅj ¤jÆj#¤ubaubaubj{)�r*¤}r+¤(jÅX?/packages/ti/fs/fatfs : For reading files from MMC/SD/eMMCr,¤jÆjÞ£jÎj·£jÐjjÒ}r-¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r.¤jò)�r/¤}r0¤(jÅj,¤jÆj*¤jÎj·£jÐjõjÒ}r1¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r2¤jçX?/packages/ti/fs/fatfs : For reading files from MMC/SD/eMMCr3¤…�r4¤}r5¤(jÅj,¤jÆj/¤ubaubaubj{)�r6¤}r7¤(jÅXH/packages/ti/drv/sciclient : For communicating with DMSC sub-systemr8¤jÆjÞ£jÎj·£jÐjjÒ}r9¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r:¤jò)�r;¤}r<¤(jÅj8¤jÆj6¤jÎj·£jÐjõjÒ}r=¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r>¤jçXH/packages/ti/drv/sciclient : For communicating with DMSC sub-systemr?¤…�r@¤}rA¤(jÅj8¤jÆj;¤ubaubaubj{)�rB¤}rC¤(jÅX-/packages/ti/drv/uart : For log messagesrD¤jÆjÞ£jÎj·£jÐjjÒ}rE¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rF¤jò)�rG¤}rH¤(jÅjD¤jÆjB¤jÎj·£jÐjõjÒ}rI¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rJ¤jçX-/packages/ti/drv/uart : For log messagesrK¤…�rL¤}rM¤(jÅjD¤jÆjG¤ubaubaubj{)�rN¤}rO¤(jÅXB/packages/ti/osal : Primitives required by ti/drv components jÆjÞ£jÎj·£jÐjjÒ}rP¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rQ¤jò)�rR¤}rS¤(jÅXA/packages/ti/osal : Primitives required by ti/drv componentsrT¤jÆjN¤jÎj·£jÐjõjÒ}rU¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rV¤jçXA/packages/ti/osal : Primitives required by ti/drv componentsrW¤…�rX¤}rY¤(jÅjT¤jÆjR¤ubaubaubeubjò)�rZ¤}r[¤(jÅXLThe SBL is in turn used by the board framework to load and start diagnosticsr\¤jÆj¾£jÎj·£jÐjõjÒ}r]¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r^¤jçXLThe SBL is in turn used by the board framework to load and start diagnosticsr_¤…�r`¤}ra¤(jÅj\¤jÆjZ¤ubaubjhK)�rb¤}rc¤(jÅXBootloader Execution Sequencerd¤jÆj¾£jÎj·£jÐjlKjÒ}re¤(j×]rf¤Uid83rg¤ajÖ]jÔ]jÕ]jÚ]rh¤hJaujÜNjÝhjÞ]ri¤jçXBootloader Execution Sequencerj¤…�rk¤}rl¤(jÅjd¤jÆjb¤ubaubjt)�rm¤}rn¤(jÅUjÆj¾£jÎj·£jÐjwjÒ}ro¤(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rp¤(j{)�rq¤}rr¤(jÅX**Power On Reset**rs¤jÆjm¤jÎj·£jÐjjÒ}rt¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ru¤jò)�rv¤}rw¤(jÅjs¤jÆjq¤jÎj·£jÐjõjÒ}rx¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ry¤jÚ)�rz¤}r{¤(jÅjs¤jÒ}r|¤(jÔ]jÕ]jÖ]j×]jÚ]ujÆjv¤jÞ]r}¤jçXPower On Resetr~¤…�r¤}r€¤(jÅUjÆjz¤ubajÐjâubaubaubj{)�r�¤}r‚¤(jÅXI**ROM Bootloader (RBL)** - Software pre-programmed in AM65xx/J721E ROM memory starts executing - The RBL performs platform configuration and initialization. - It then checks sysboot pins and chooses booting device - The RBL then configures PLL and clock settings for R5, and boot media like eMMC, SD/MMC, OSPI, UART, PCIe, Ethernet etc for reliable boot. - If no valid bootloader found on booting device, the RBL checks for next booting device, based on sysboot pins - It then gets image size and load address by checking the X.509 certificate that is part of the bootloader image. - The RBL then verifies, optionally decrypts and loads the binary to internal memory at the load address specified in the X.509 certificate. - Finally it resets the R5 and passes control to Secondary Bootloader(SBL) running on the R5. jÆjm¤jÎNjÐjjÒ}rƒ¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r„¤(jò)�r…¤}r†¤(jÅX**ROM Bootloader (RBL)**r‡¤jÆj�¤jÎj·£jÐjõjÒ}rˆ¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r‰¤jÚ)�rФ}r‹¤(jÅj‡¤jÒ}rŒ¤(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…¤jÞ]r�¤jçXROM Bootloader (RBL)rޤ…�r�¤}r�¤(jÅUjÆjФubajÐjâubaubjt)�r‘¤}r’¤(jÅUjÒ}r“¤(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj�¤jÞ]r”¤(j{)�r•¤}r–¤(jÅXCSoftware pre-programmed in AM65xx/J721E ROM memory starts executingr—¤jÒ}r˜¤(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘¤jÞ]r™¤jò)�rš¤}r›¤(jÅj—¤jÆj•¤jÎj·£jÐjõjÒ}rœ¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÞ]r�¤jçXCSoftware pre-programmed in AM65xx/J721E ROM memory starts executingrž¤…�rŸ¤}r ¤(jÅj—¤jÆjš¤ubaubajÐjubj{)�r¡¤}r¢¤(jÅX;The RBL performs platform configuration and initialization.r£¤jÒ}r¤¤(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘¤jÞ]r¥¤jò)�r¦¤}r§¤(jÅj£¤jÆj¡¤jÎj·£jÐjõjÒ}r¨¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]r©¤jçX;The RBL performs platform configuration and initialization.rª¤…�r«¤}r¬¤(jÅj£¤jÆj¦¤ubaubajÐjubj{)�r­¤}r®¤(jÅX6It then checks sysboot pins and chooses booting devicer¯¤jÒ}r°¤(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘¤jÞ]r±¤jò)�r²¤}r³¤(jÅj¯¤jÆj­¤jÎj·£jÐjõjÒ}r´¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]rµ¤jçX6It then checks sysboot pins and chooses booting devicer¶¤…�r·¤}r¸¤(jÅj¯¤jÆj²¤ubaubajÐjubj{)�r¹¤}rº¤(jÅXŠThe RBL then configures PLL and clock settings for R5, and boot media like eMMC, SD/MMC, OSPI, UART, PCIe, Ethernet etc for reliable boot.jÒ}r»¤(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘¤jÞ]r¼¤jò)�r½¤}r¾¤(jÅXŠThe RBL then configures PLL and clock settings for R5, and boot media like eMMC, SD/MMC, OSPI, UART, PCIe, Ethernet etc for reliable boot.r¿¤jÆj¹¤jÎj·£jÐjõjÒ}rÀ¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÞ]rÁ¤jçXŠThe RBL then configures PLL and clock settings for R5, and boot media like eMMC, SD/MMC, OSPI, UART, PCIe, Ethernet etc for reliable boot.r¤…�rä}rĤ(jÅj¿¤jÆj½¤ubaubajÐjubj{)�rŤ}rƤ(jÅXmIf no valid bootloader found on booting device, the RBL checks for next booting device, based on sysboot pinsjÒ}rǤ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘¤jÞ]rȤjò)�rɤ}rʤ(jÅXmIf no valid bootloader found on booting device, the RBL checks for next booting device, based on sysboot pinsrˤjÆjŤjÎj·£jÐjõjÒ}r̤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÞ]rͤjçXmIf no valid bootloader found on booting device, the RBL checks for next booting device, based on sysboot pinsrΤ…�rϤ}rФ(jÅjˤjÆjɤubaubajÐjubj{)�rѤ}rÒ¤(jÅXpIt then gets image size and load address by checking the X.509 certificate that is part of the bootloader image.jÒ}rÓ¤(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘¤jÞ]rÔ¤jò)�rÕ¤}rÖ¤(jÅXpIt then gets image size and load address by checking the X.509 certificate that is part of the bootloader image.rפjÆjѤjÎj·£jÐjõjÒ}rؤ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]rÙ¤jçXpIt then gets image size and load address by checking the X.509 certificate that is part of the bootloader image.rÚ¤…�rÛ¤}rܤ(jÅjפjÆjÕ¤ubaubajÐjubj{)�rݤ}rÞ¤(jÅXŠThe RBL then verifies, optionally decrypts and loads the binary to internal memory at the load address specified in the X.509 certificate.jÒ}rߤ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘¤jÞ]rà¤jò)�rá¤}râ¤(jÅXŠThe RBL then verifies, optionally decrypts and loads the binary to internal memory at the load address specified in the X.509 certificate.rã¤jÆjݤjÎj·£jÐjõjÒ}rä¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]rå¤jçXŠThe RBL then verifies, optionally decrypts and loads the binary to internal memory at the load address specified in the X.509 certificate.r椅�rç¤}rè¤(jÅjã¤jÆjá¤ubaubajÐjubj{)�ré¤}rê¤(jÅX\Finally it resets the R5 and passes control to Secondary Bootloader(SBL) running on the R5. jÒ}rë¤(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘¤jÞ]rì¤jò)�rí¤}rî¤(jÅX[Finally it resets the R5 and passes control to Secondary Bootloader(SBL) running on the R5.rï¤jÆjé¤jÎj·£jÐjõjÒ}rð¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rñ¤jçX[Finally it resets the R5 and passes control to Secondary Bootloader(SBL) running on the R5.rò¤…�ró¤}rô¤(jÅjï¤jÆjí¤ubaubajÐjubejÐjwubeubj{)�rõ¤}rö¤(jÅX³**Secondary bootloader(SBL)** - User level secondary bootloader(SBL) begins execution from internal memory. It enables ATCM, starts PMU timers for profiling, initializes the MCU, and sets up the stack, heap and globals. It then jumps to main(). - Board Initialization is done by calls to **Board_init()** API.For additional details refer `Processor SDK Board Support `__. - The RAT is setup. Pin MUX and UART console are setup by calling **Board_init()** API. The system firmware (SYSFW) is then loaded from the boot media into the DMSC subsystem. - Once the SYSFW is up and running, the rest of the initialization can be done. - This includes optionally using **Board_init()** to configure PLLs, LPSCs and DDR. - The SBL then loads the application from the boot media. If the image is signed, the application will be copied into a user specified reserved memory, and the SBL will attempt to verify the image by calling system firmware APIs. On HS devices, the boot proceeds only if image verification passes. - The SBL parses application image(s) for each of the core(s) from boot media and scatter loads it to memory. - Once the application is loaded, the SBL communicates with the system firmware to setup the clocks for the core(s) and release it from reset. - The core then starts executing from application entry point. jÆjm¤jÎNjÐjjÒ}r÷¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rø¤(jò)�rù¤}rú¤(jÅX**Secondary bootloader(SBL)**rû¤jÆjõ¤jÎj·£jÐjõjÒ}rü¤(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rý¤jÚ)�rþ¤}rÿ¤(jÅjû¤jÒ}r¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆjù¤jÞ]r¥jçXSecondary bootloader(SBL)r¥…�r¥}r¥(jÅUjÆjþ¤ubajÐjâubaubjt)�r¥}r¥(jÅUjÒ}r¥(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjõ¤jÞ]r¥(j{)�r ¥}r ¥(jÅXÔUser level secondary bootloader(SBL) begins execution from internal memory. It enables ATCM, starts PMU timers for profiling, initializes the MCU, and sets up the stack, heap and globals. It then jumps to main().jÒ}r ¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¥jÞ]r ¥jò)�r ¥}r¥(jÅXÔUser level secondary bootloader(SBL) begins execution from internal memory. It enables ATCM, starts PMU timers for profiling, initializes the MCU, and sets up the stack, heap and globals. It then jumps to main().r¥jÆj ¥jÎj·£jÐjõjÒ}r¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r¥jçXÔUser level secondary bootloader(SBL) begins execution from internal memory. It enables ATCM, starts PMU timers for profiling, initializes the MCU, and sets up the stack, heap and globals. It then jumps to main().r¥…�r¥}r¥(jÅj¥jÆj ¥ubaubajÐjubj{)�r¥}r¥(jÅXÙBoard Initialization is done by calls to **Board_init()** API.For additional details refer `Processor SDK Board Support `__.jÒ}r¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¥jÞ]r¥jò)�r¥}r¥(jÅXÙBoard Initialization is done by calls to **Board_init()** API.For additional details refer `Processor SDK Board Support `__.jÆj¥jÎj·£jÐjõjÒ}r¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜK5jÞ]r¥(jçX)Board Initialization is done by calls to r¥…�r¥}r¥(jÅX)Board Initialization is done by calls to jÆj¥ubjÚ)�r ¥}r!¥(jÅX**Board_init()**jÒ}r"¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¥jÞ]r#¥jçX Board_init()r$¥…�r%¥}r&¥(jÅUjÆj ¥ubajÐjâubjçX" API.For additional details refer r'¥…�r(¥}r)¥(jÅX" API.For additional details refer jÆj¥ubjû)�r*¥}r+¥(jÅX}`Processor SDK Board Support `__jÒ}r,¥(UnameXProcessor SDK Board SupportjX[http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/Board_EVM_Abstration.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆj¥jÞ]r-¥jçXProcessor SDK Board Supportr.¥…�r/¥}r0¥(jÅUjÆj*¥ubajÐjÿubjçX.…�r1¥}r2¥(jÅX.jÆj¥ubeubajÐjubj{)�r3¥}r4¥(jÅX­The RAT is setup. Pin MUX and UART console are setup by calling **Board_init()** API. The system firmware (SYSFW) is then loaded from the boot media into the DMSC subsystem.jÒ}r5¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¥jÞ]r6¥jò)�r7¥}r8¥(jÅX­The RAT is setup. Pin MUX and UART console are setup by calling **Board_init()** API. The system firmware (SYSFW) is then loaded from the boot media into the DMSC subsystem.jÆj3¥jÎj·£jÐjõjÒ}r9¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]r:¥(jçX@The RAT is setup. Pin MUX and UART console are setup by calling r;¥…�r<¥}r=¥(jÅX@The RAT is setup. Pin MUX and UART console are setup by calling jÆj7¥ubjÚ)�r>¥}r?¥(jÅX**Board_init()**jÒ}r@¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆj7¥jÞ]rA¥jçX Board_init()rB¥…�rC¥}rD¥(jÅUjÆj>¥ubajÐjâubjçX] API. The system firmware (SYSFW) is then loaded from the boot media into the DMSC subsystem.rE¥…�rF¥}rG¥(jÅX] API. The system firmware (SYSFW) is then loaded from the boot media into the DMSC subsystem.jÆj7¥ubeubajÐjubj{)�rH¥}rI¥(jÅXMOnce the SYSFW is up and running, the rest of the initialization can be done.rJ¥jÒ}rK¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¥jÞ]rL¥jò)�rM¥}rN¥(jÅjJ¥jÆjH¥jÎj·£jÐjõjÒ}rO¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]rP¥jçXMOnce the SYSFW is up and running, the rest of the initialization can be done.rQ¥…�rR¥}rS¥(jÅjJ¥jÆjM¥ubaubajÐjubj{)�rT¥}rU¥(jÅXQThis includes optionally using **Board_init()** to configure PLLs, LPSCs and DDR.rV¥jÒ}rW¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¥jÞ]rX¥jò)�rY¥}rZ¥(jÅjV¥jÆjT¥jÎj·£jÐjõjÒ}r[¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÞ]r\¥(jçXThis includes optionally using r]¥…�r^¥}r_¥(jÅXThis includes optionally using jÆjY¥ubjÚ)�r`¥}ra¥(jÅX**Board_init()**jÒ}rb¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆjY¥jÞ]rc¥jçX Board_init()rd¥…�re¥}rf¥(jÅUjÆj`¥ubajÐjâubjçX" to configure PLLs, LPSCs and DDR.rg¥…�rh¥}ri¥(jÅX" to configure PLLs, LPSCs and DDR.jÆjY¥ubeubajÐjubj{)�rj¥}rk¥(jÅX'The SBL then loads the application from the boot media. If the image is signed, the application will be copied into a user specified reserved memory, and the SBL will attempt to verify the image by calling system firmware APIs. On HS devices, the boot proceeds only if image verification passes.jÒ}rl¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¥jÞ]rm¥jò)�rn¥}ro¥(jÅX'The SBL then loads the application from the boot media. If the image is signed, the application will be copied into a user specified reserved memory, and the SBL will attempt to verify the image by calling system firmware APIs. On HS devices, the boot proceeds only if image verification passes.rp¥jÆjj¥jÎj·£jÐjõjÒ}rq¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÆj¾£jÎj·£jÐjjÒ}rœ¥(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKFjÝhjÞ]r�¥jçXh
rž¥…�rŸ¥}r ¥(jÅUjÆjš¥ubaubjò)�r¡¥}r¢¥(jÅX**NOTE**r£¥jÆj¾£jÎj·£jÐjõjÒ}r¤¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÝhjÞ]r¥¥jÚ)�r¦¥}r§¥(jÅj£¥jÒ}r¨¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡¥jÞ]r©¥jçXNOTErª¥…�r«¥}r¬¥(jÅUjÆj¦¥ubajÐjâubaubjt)�r­¥}r®¥(jÅUjÆj¾£jÎj·£jÐjwjÒ}r¯¥(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKMjÝhjÞ]r°¥(j{)�r±¥}r²¥(jÅXÀRBL requires boot loader (SBL) to be in a special format with the binary image appended to a X.509 certificate. The certificate contains the load address, size and SHA of the bootloader image.jÆj­¥jÎj·£jÐjjÒ}r³¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r´¥jò)�rµ¥}r¶¥(jÅXÀRBL requires boot loader (SBL) to be in a special format with the binary image appended to a X.509 certificate. The certificate contains the load address, size and SHA of the bootloader image.r·¥jÆj±¥jÎj·£jÐjõjÒ}r¸¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÞ]r¹¥jçXÀRBL requires boot loader (SBL) to be in a special format with the binary image appended to a X.509 certificate. The certificate contains the load address, size and SHA of the bootloader image.rº¥…�r»¥}r¼¥(jÅj·¥jÆjµ¥ubaubaubj{)�r½¥}r¾¥(jÅX,For a detailed description of ROM bootloader and more information on the image format expected by the RBL refer the initialization chapter in the `AM65xx Technical Reference Manual `__ and the `J721E Technical Reference Manual `__jÆj­¥jÎj·£jÐjjÒ}r¿¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÀ¥jò)�rÁ¥}rÂ¥(jÅX,For a detailed description of ROM bootloader and more information on the image format expected by the RBL refer the initialization chapter in the `AM65xx Technical Reference Manual `__ and the `J721E Technical Reference Manual `__jÆj½¥jÎj·£jÐjõjÒ}rÃ¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÞ]rÄ¥(jçX’For a detailed description of ROM bootloader and more information on the image format expected by the RBL refer the initialization chapter in the rÅ¥…�rÆ¥}rÇ¥(jÅX’For a detailed description of ROM bootloader and more information on the image format expected by the RBL refer the initialization chapter in the jÆjÁ¥ubjû)�rÈ¥}rÉ¥(jÅXI`AM65xx Technical Reference Manual `__jÒ}rÊ¥(UnameX!AM65xx Technical Reference ManualjX!http://www.ti.com/lit/pdf/spruid7j×]jÖ]jÔ]jÕ]jÚ]ujÆjÁ¥jÞ]rË¥jçX!AM65xx Technical Reference ManualrÌ¥…�rÍ¥}rÎ¥(jÅUjÆjÈ¥ubajÐjÿubjçX and the rÏ¥…�rÐ¥}rÑ¥(jÅX and the jÆjÁ¥ubjû)�rÒ¥}rÓ¥(jÅXH`J721E Technical Reference Manual `__jÒ}rÔ¥(UnameX J721E Technical Reference ManualjX!http://www.ti.com/lit/pdf/spruil1j×]jÖ]jÔ]jÕ]jÚ]ujÆjÁ¥jÞ]rÕ¥jçX J721E Technical Reference ManualrÖ¥…�r×¥}rØ¥(jÅUjÆjÒ¥ubajÐjÿubeubaubj{)�rÙ¥}rÚ¥(jÅX„In addition to the bootloader and application, the DMSC firmware binary is also needed for the SoC to complete the system boot flow.jÆj­¥jÎj·£jÐjjÒ}rÛ¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÜ¥jò)�rÝ¥}rÞ¥(jÅX„In addition to the bootloader and application, the DMSC firmware binary is also needed for the SoC to complete the system boot flow.rߥjÆjÙ¥jÎj·£jÐjõjÒ}rà¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÞ]rá¥jçX„In addition to the bootloader and application, the DMSC firmware binary is also needed for the SoC to complete the system boot flow.r⥅�rã¥}rä¥(jÅjߥjÆjÝ¥ubaubaubj{)�rå¥}ræ¥(jÅXzThe first 256 bytes of the ATCM are reserved by SBL for its use. The SBL initializes the ATCM with 0xFF before it uses it.jÆj­¥jÎj·£jÐjjÒ}rç¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rè¥jò)�ré¥}rê¥(jÅXzThe first 256 bytes of the ATCM are reserved by SBL for its use. The SBL initializes the ATCM with 0xFF before it uses it.rë¥jÆjå¥jÎj·£jÐjõjÒ}rì¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÞ]rí¥jçXzThe first 256 bytes of the ATCM are reserved by SBL for its use. The SBL initializes the ATCM with 0xFF before it uses it.r�rï¥}rð¥(jÅjë¥jÆjé¥ubaubaubj{)�rñ¥}rò¥(jÅX›If the multicore application image is signed using the TI Dummy Key, instead of a degenerate key (default setting) the same binary can be used on GP and HS devices. For information on the application's X.509 certificate format, please refer `Security X509 Certificate Documentation `__jÆj­¥jÎj·£jÐjjÒ}ró¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rô¥jò)�rõ¥}rö¥(jÅX›If the multicore application image is signed using the TI Dummy Key, instead of a degenerate key (default setting) the same binary can be used on GP and HS devices. For information on the application's X.509 certificate format, please refer `Security X509 Certificate Documentation `__jÆjñ¥jÎj·£jÐjõjÒ}r÷¥(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]rø¥(jçXñIf the multicore application image is signed using the TI Dummy Key, instead of a degenerate key (default setting) the same binary can be used on GP and HS devices. For information on the application's X.509 certificate format, please refer rù¥…�rú¥}rû¥(jÅXñIf the multicore application image is signed using the TI Dummy Key, instead of a degenerate key (default setting) the same binary can be used on GP and HS devices. For information on the application's X.509 certificate format, please refer jÆjõ¥ubjû)�rü¥}rý¥(jÅXª`Security X509 Certificate Documentation `__jÒ}rþ¥(UnameX'Security X509 Certificate DocumentationjX{http://downloads.ti.com/tisci/esd/latest/2_tisci_msgs/security/sec_cert_format.html#security-x509-certificate-documentationj×]jÖ]jÔ]jÕ]jÚ]ujÆjõ¥jÞ]rÿ¥jçX'Security X509 Certificate Documentationr¦…�r¦}r¦(jÅUjÆjü¥ubajÐjÿubeubaubj{)�r¦}r¦(jÅXlWhen the R5 is released from reset, it will always fetch and execute the first intruction from address 0x0. jÆj­¥jÎj·£jÐjjÒ}r¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¦jò)�r¦}r¦(jÅXkWhen the R5 is released from reset, it will always fetch and execute the first intruction from address 0x0.r ¦jÆj¦jÎj·£jÐjõjÒ}r ¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜK]jÞ]r ¦jçXkWhen the R5 is released from reset, it will always fetch and execute the first intruction from address 0x0.r ¦…�r ¦}r¦(jÅj ¦jÆj¦ubaubaubeubj)�r¦}r¦(jÅX
jÆj¾£jÎj·£jÐjjÒ}r¦(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜK`jÝhjÞ]r¦jçXr¦…�r¦}r¦(jÅUjÆj¦ubaubj)�r¦}r¦(jÅX.. _am655x-sbl-high-level-arch:jÆj¾£jÎj·£jÐj jÒ}r¦(j×]jÖ]jÔ]jÕ]jÚ]jUam655x-sbl-high-level-archr¦ujÜM6&jÝhjÞ]ubeubjÇ)�r¦}r¦(jÅUjÆj¥£jÎj·£Uexpect_referenced_by_namer¦}r¦j5j¦sjÐjÑjÒ}r¦(jÔ]jÕ]jÖ]j×]r¦(U block-diagramr ¦j¦ejÚ]r!¦(j.j5eujÜKgjÝhUexpect_referenced_by_idr"¦}r#¦j¦j¦sjÞ]r$¦(jà)�r%¦}r&¦(jÅX Block Diagramr'¦jÆj¦jÎj·£jÐjäjÒ}r(¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]r)¦jçX Block Diagramr*¦…�r+¦}r,¦(jÅj'¦jÆj%¦ubaubjR)�r-¦}r.¦(jÅX0.. Image:: ../images/k3_sbl_arch_block_diag.png jÆj¦jÎj·£jÐjZjÒ}r/¦(UuriX)rtos/../images/k3_sbl_arch_block_diag.pngr0¦j×]jÖ]jÔ]jÕ]jX}r1¦U*j0¦sjÚ]ujÜKjjÝhjÞ]ubj)�r2¦}r3¦(jÅX.. _am655x-sbl-memory-usage:jKjÆj¦jÎj·£jÐj jÒ}r4¦(j×]jÖ]jÔ]jÕ]jÚ]jUam655x-sbl-memory-usager5¦ujÜM=&jÝhjÞ]ubeubjÇ)�r6¦}r7¦(jÅUjKjÆj¥£jÎj·£j¦}r8¦j;j2¦sjÐjÑjÒ}r9¦(jÔ]r:¦j÷¡ajÕ]jÖ]j×]r;¦(j5¦Uid84r<¦ejÚ]r=¦j;aujÜKnjÝhj"¦}r>¦j5¦j2¦sjÞ]r?¦(jà)�r@¦}rA¦(jÅX Memory MaprB¦jÆj6¦jÎj·£jÐjäjÒ}rC¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜKnjÝhjÞ]rD¦jçX Memory MaprE¦…�rF¦}rG¦(jÅjB¦jÆj@¦ubaubjR)�rH¦}rI¦(jÅX+.. Image:: ../images/k3_sbl_mem_usage.png jÆj6¦jÎj·£jÐjZjÒ}rJ¦(UuriX#rtos/../images/k3_sbl_mem_usage.pngrK¦j×]jÖ]jÔ]jÕ]jX}rL¦U*jK¦sjÚ]ujÜKrjÝhjÞ]ubj)�rM¦}rN¦(jÅX#.. _am655x-sbl-directory-structure:jÆj6¦jÎj·£jÐj jÒ}rO¦(j×]jÖ]jÔ]jÕ]jÚ]jUam655x-sbl-directory-structurerP¦ujÜME&jÝhjÞ]ubeubjÇ)�rQ¦}rR¦(jÅUjKjÆj¥£jÎj·£j¦}rS¦hâjM¦sjÐjÑjÒ}rT¦(jÔ]rU¦jí•ajÕ]jÖ]j×]rV¦(jP¦Uid85rW¦ejÚ]rX¦hâaujÜKvjÝhj"¦}rY¦jP¦jM¦sjÞ]rZ¦(jà)�r[¦}r\¦(jÅXDirectory structurer]¦jÆjQ¦jÎj·£jÐjäjÒ}r^¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜKvjÝhjÞ]r_¦jçXDirectory structurer`¦…�ra¦}rb¦(jÅj]¦jÆj[¦ubaubj)�rc¦}rd¦(jÅXsbl │ ├── board │ └── k3 │ └── sbl_main.c <= define main() for SBL, board specific init │ ├── build │ ├── makefile <= makefile for the SBL component │ ├── sbl_am65xx.sh <= For legacy, called by Yocto build │ ├── sbl_boot_test.mk <= Builds SBL single core tests │ ├── sbl_smp_test.mk <= Builds example app for using SBL lib │ ├── sbl_mcu0_boot_perf_test.mk <= Builds example app for SBL performance tuning │ ├── sbl_mcu0_boot_xip_entry.mk <= Builds example trampoline app to demonstrate transitioning to a XIP app from SBL │ ├── sbl_mcu0_boot_xip_test.mk <= Builds example app to demonstrate XIP execution from XIP capable boot media │ ├── sbl_img.mk <= builds SBL image that is loaded and executed by ROM code │ ├── sbl_lib.mk <= Builds sbl library that other apps can link into │ ├── sbl_multicore_smp.mk <= Builds multi-core image from SBL lib eg. test to demonstrate symmetric multiprocessor boot (SMP) │ └── sbl_multicore_amp.mk <= Builds multi-core image from single core tests to demonstrate asymmetric multiprocessor boot (AMP) │ ├── example │ └── k3MulticoreApp │ ├── binary │ │ └── [soc] │ │ ├── sbl_baremetal_*.appimage <= SBL loadable board specific sample apps for testing SBL boot flow on GP devices │ │ ├── sbl_baremetal_*.appimage.signed <= SBL loadable board specific signed sample apps for testing SBL boot flow on HS devices │ │ └── sbl_baremetal_*_release.x*.bin <= Binary image that can be eXecuted In Place on XIP capable boot media │ ├── mcuAmplinker.lds <= Linker comamnd file when TI CGT is used for Asym. Multiproc. boot │ ├── mpuAmplinker.lds <= GCC linker command file (for Cortex Axx cores) for Asym. Multiproc. boot │ ├── mcuBootPerfLinker.lds <= TI CGT Linker comamnd file for SBL performance tuning example. │ ├── mcuLockStepLinker.lds <= Linker comamnd file when TI CGT is used for R5 lock-step boot │ ├── mpuSmplinker.lds <= GCC linker command file (for Cortex Axx cores) for SMP boot │ ├── mcuXiplinker.lds <= Linker command file for XIP trampoline app │ ├── xip_entry.lds <= Linker comamnd file for XIP test case │ ├── xip_entry.asm <= Entry point of XIP trampoline app │ ├── xip_stub.c <= Simple SBL test app that demonstrates transitioning to a XIP app │ ├── sbl_amp_multicore.c <= Simple SBL test that displays UART message │ ├── sbl_amp_multicore_sections.h <= Allows same source to be loaded to different sections for different cores. │ ├── sbl_mcu_0_boot_perf_benchmark.c <= SBL Test to tune boot performance. │ ├── sbl_multicore_a53.asm <= Test case entry point for Cortex-Axx cores │ ├── sbl_multicore_r5.asm <= Test case entry point for Cortex-R5 cores │ ├── sbl_multicore_r5_sections.inc <= Allows same source to be loaded to different sections for different MCUs. │ ├── sbl_printf.c <= Lightweight UART printf function for SBL testing │ ├── sbl_smp_multicore.c <= Simple SBL SMP test that uses SBL lib to reset MPUs │ └── sbl_smp_r5.asm <= Provides dummy override function for __mpu_init for SMP testcase. │ ├── binary <= ROM bootable SBL images for each board/boot media │   ├── [board] │      └── [bootmedia] │        └── bin │         └── sbl_[bootmedia]_img_mcu1_0_release.tiimage │ ├── lib <= SBL lib for each boot media/board supported │   ├── [bootmedia] │   │ └── [board] │   │    └── r5f │   │    └── release │   │    └── sbl_lib_[bootmedia].aer5f │   └── cust │   └── [board] │      └── r5f │      └── release │      └── sbl_lib_cust.aer5f │ ├── soc <= SOC specific SBL code │ └── k3 │ ├── linker.cmd <= Linker file used for generating ROM loadable SBL image. │ ├── sbl_err_trap.h <= Error loops for SBL │ ├── sbl_init.asm <= SBL Entry point │ ├── sbl_misc.asm <= SBL Assembly utility functions │ ├── sbl_log.h <= SBL logging framework │ ├── sbl_sci_client.c <= Calls SYSFW on DMSC │ ├── sbl_sci_client.h │ ├── sbl_slave_core_boot.c <= Code that contains the sequence to release a core from reset │ ├── sbl_slave_core_boot.h │ ├── sbl_soc.c <= Cache Ops, PMU init, image verfication, etc & SoC specific code like RAT Init.. │ ├── sbl_soc_cfg.h <= Abstraction layer for hiding SoC level changes from SBL │ └── sbl_profile.h <= SBL profiling framework │ ├── src <= Common drivers used across SOCs │ ├── mmcsd │ ├── hyperflash │ ├── ospi │ ├── qspi │ ├── uart │ ├── rprc <= RPRC image parser used by SBL │ └── spi │ └── tools ├── btoccs ├── byteswap ├── ccsutil ├── flashWriter <= Unused for AM65xx/J721E. AM65xx/J721E uses Uniflash to program flashes. ├── multicoreImageGen <= Stitches multiple RPRC images for different cores into a single image ├── omapl13x_boot_utils <= Unused for AM65xx/J721E ├── omapl13x_sd_card_format <= Unused for AM65xx/J721E ├── out2rprc <= Converts .out into .rprc files, so that SBL can load non-continuous memory sections ├── scripts <= Scripts used by .out generated by CCS projects into SBL loadable images │ ├── K3ImageGen.bat │ └── K3ImageGen.sh └── tiImageGen <= Unused for AM65xx/J721E. Image generation is handled by PDK build framework (/pdk_*/packages/ti/build/)jÆjQ¦jÎj·£jÐjjÒ}re¦(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜML&jÝhjÞ]rf¦jçXsbl │ ├── board │ └── k3 │ └── sbl_main.c <= define main() for SBL, board specific init │ ├── build │ ├── makefile <= makefile for the SBL component │ ├── sbl_am65xx.sh <= For legacy, called by Yocto build │ ├── sbl_boot_test.mk <= Builds SBL single core tests │ ├── sbl_smp_test.mk <= Builds example app for using SBL lib │ ├── sbl_mcu0_boot_perf_test.mk <= Builds example app for SBL performance tuning │ ├── sbl_mcu0_boot_xip_entry.mk <= Builds example trampoline app to demonstrate transitioning to a XIP app from SBL │ ├── sbl_mcu0_boot_xip_test.mk <= Builds example app to demonstrate XIP execution from XIP capable boot media │ ├── sbl_img.mk <= builds SBL image that is loaded and executed by ROM code │ ├── sbl_lib.mk <= Builds sbl library that other apps can link into │ ├── sbl_multicore_smp.mk <= Builds multi-core image from SBL lib eg. test to demonstrate symmetric multiprocessor boot (SMP) │ └── sbl_multicore_amp.mk <= Builds multi-core image from single core tests to demonstrate asymmetric multiprocessor boot (AMP) │ ├── example │ └── k3MulticoreApp │ ├── binary │ │ └── [soc] │ │ ├── sbl_baremetal_*.appimage <= SBL loadable board specific sample apps for testing SBL boot flow on GP devices │ │ ├── sbl_baremetal_*.appimage.signed <= SBL loadable board specific signed sample apps for testing SBL boot flow on HS devices │ │ └── sbl_baremetal_*_release.x*.bin <= Binary image that can be eXecuted In Place on XIP capable boot media │ ├── mcuAmplinker.lds <= Linker comamnd file when TI CGT is used for Asym. Multiproc. boot │ ├── mpuAmplinker.lds <= GCC linker command file (for Cortex Axx cores) for Asym. Multiproc. boot │ ├── mcuBootPerfLinker.lds <= TI CGT Linker comamnd file for SBL performance tuning example. │ ├── mcuLockStepLinker.lds <= Linker comamnd file when TI CGT is used for R5 lock-step boot │ ├── mpuSmplinker.lds <= GCC linker command file (for Cortex Axx cores) for SMP boot │ ├── mcuXiplinker.lds <= Linker command file for XIP trampoline app │ ├── xip_entry.lds <= Linker comamnd file for XIP test case │ ├── xip_entry.asm <= Entry point of XIP trampoline app │ ├── xip_stub.c <= Simple SBL test app that demonstrates transitioning to a XIP app │ ├── sbl_amp_multicore.c <= Simple SBL test that displays UART message │ ├── sbl_amp_multicore_sections.h <= Allows same source to be loaded to different sections for different cores. │ ├── sbl_mcu_0_boot_perf_benchmark.c <= SBL Test to tune boot performance. │ ├── sbl_multicore_a53.asm <= Test case entry point for Cortex-Axx cores │ ├── sbl_multicore_r5.asm <= Test case entry point for Cortex-R5 cores │ ├── sbl_multicore_r5_sections.inc <= Allows same source to be loaded to different sections for different MCUs. │ ├── sbl_printf.c <= Lightweight UART printf function for SBL testing │ ├── sbl_smp_multicore.c <= Simple SBL SMP test that uses SBL lib to reset MPUs │ └── sbl_smp_r5.asm <= Provides dummy override function for __mpu_init for SMP testcase. │ ├── binary <= ROM bootable SBL images for each board/boot media │   ├── [board] │      └── [bootmedia] │        └── bin │         └── sbl_[bootmedia]_img_mcu1_0_release.tiimage │ ├── lib <= SBL lib for each boot media/board supported │   ├── [bootmedia] │   │ └── [board] │   │    └── r5f │   │    └── release │   │    └── sbl_lib_[bootmedia].aer5f │   └── cust │   └── [board] │      └── r5f │      └── release │      └── sbl_lib_cust.aer5f │ ├── soc <= SOC specific SBL code │ └── k3 │ ├── linker.cmd <= Linker file used for generating ROM loadable SBL image. │ ├── sbl_err_trap.h <= Error loops for SBL │ ├── sbl_init.asm <= SBL Entry point │ ├── sbl_misc.asm <= SBL Assembly utility functions │ ├── sbl_log.h <= SBL logging framework │ ├── sbl_sci_client.c <= Calls SYSFW on DMSC │ ├── sbl_sci_client.h │ ├── sbl_slave_core_boot.c <= Code that contains the sequence to release a core from reset │ ├── sbl_slave_core_boot.h │ ├── sbl_soc.c <= Cache Ops, PMU init, image verfication, etc & SoC specific code like RAT Init.. │ ├── sbl_soc_cfg.h <= Abstraction layer for hiding SoC level changes from SBL │ └── sbl_profile.h <= SBL profiling framework │ ├── src <= Common drivers used across SOCs │ ├── mmcsd │ ├── hyperflash │ ├── ospi │ ├── qspi │ ├── uart │ ├── rprc <= RPRC image parser used by SBL │ └── spi │ └── tools ├── btoccs ├── byteswap ├── ccsutil ├── flashWriter <= Unused for AM65xx/J721E. AM65xx/J721E uses Uniflash to program flashes. ├── multicoreImageGen <= Stitches multiple RPRC images for different cores into a single image ├── omapl13x_boot_utils <= Unused for AM65xx/J721E ├── omapl13x_sd_card_format <= Unused for AM65xx/J721E ├── out2rprc <= Converts .out into .rprc files, so that SBL can load non-continuous memory sections ├── scripts <= Scripts used by .out generated by CCS projects into SBL loadable images │ ├── K3ImageGen.bat │ └── K3ImageGen.sh └── tiImageGen <= Unused for AM65xx/J721E. Image generation is handled by PDK build framework (/pdk_*/packages/ti/build/)rg¦…�rh¦}ri¦(jÅUjÆjc¦ubaubj)�rj¦}rk¦(jÅX.. _am655x-image-formats:jÆjQ¦jÎj·£jÐj jÒ}rl¦(j×]jÖ]jÔ]jÕ]jÚ]jUam655x-image-formatsrm¦ujÜM²&jÝhjÞ]ubeubjÇ)�rn¦}ro¦(jÅUjÆj¥£jÎj·£j¦}rp¦hDjj¦sjÐjÑjÒ}rq¦(jÔ]jÕ]jÖ]j×]rr¦(U image-formatsrs¦jm¦ejÚ]rt¦(jAhDeujÜKãjÝhj"¦}ru¦jm¦jj¦sjÞ]rv¦(jà)�rw¦}rx¦(jÅX Image Formatsry¦jÆjn¦jÎj·£jÐjäjÒ}rz¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÝhjÞ]r{¦jçX Image Formatsr|¦…�r}¦}r~¦(jÅjy¦jÆjw¦ubaubjò)�r¦}r€¦(jÅX**SBL format:**r�¦jÆjn¦jÎj·£jÐjõjÒ}r‚¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜKåjÝhjÞ]rƒ¦jÚ)�r„¦}r…¦(jÅj�¦jÒ}r†¦(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦jÞ]r‡¦jçX SBL format:rˆ¦…�r‰¦}rЦ(jÅUjÆj„¦ubajÐjâubaubjò)�r‹¦}rŒ¦(jÅXžTo generate the a bootable image, the SBL build uses the x509CertificateGen script to sign the sbl binary with so that the ROM Boot Loader (RBL) can parse it. The image format expected by the RBL has been described in detail in the Image Format Section of the `AM65xx Technical Reference Manual `__ and the `J721E Technical Reference Manual `__jÆjn¦jÎj·£jÐjõjÒ}r�¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜKçjÝhjÞ]rަ(jçXTo generate the a bootable image, the SBL build uses the x509CertificateGen script to sign the sbl binary with so that the ROM Boot Loader (RBL) can parse it. The image format expected by the RBL has been described in detail in the Image Format Section of the r�¦…�r�¦}r‘¦(jÅXTo generate the a bootable image, the SBL build uses the x509CertificateGen script to sign the sbl binary with so that the ROM Boot Loader (RBL) can parse it. The image format expected by the RBL has been described in detail in the Image Format Section of the jÆj‹¦ubjû)�r’¦}r“¦(jÅXI`AM65xx Technical Reference Manual `__jÒ}r”¦(UnameX!AM65xx Technical Reference ManualjX!http://www.ti.com/lit/pdf/spruid7j×]jÖ]jÔ]jÕ]jÚ]ujÆj‹¦jÞ]r•¦jçX!AM65xx Technical Reference Manualr–¦…�r—¦}r˜¦(jÅUjÆj’¦ubajÐjÿubjçX and the r™¦…�rš¦}r›¦(jÅX and the jÆj‹¦ubjû)�rœ¦}r�¦(jÅXH`J721E Technical Reference Manual `__jÒ}rž¦(UnameX J721E Technical Reference ManualjX!http://www.ti.com/lit/pdf/spruil1j×]jÖ]jÔ]jÕ]jÚ]ujÆj‹¦jÞ]rŸ¦jçX J721E Technical Reference Manualr ¦…�r¡¦}r¢¦(jÅUjÆjœ¦ubajÐjÿubeubjë)�r£¦}r¤¦(jÅX©For HS devices, the SBL and system firmware have to be signed with the MPK. For an easy out-of-box experience, the Processor SDK for HS devices signs the SBL and system firmware with a TI Dummy Key. Images signed with a TI dummy key will boot on both GP and HS boards from TI. The build system invokes the script /packages/ti/build/makerules/x509CertificateGen* which inturn calls OpenSSL to create the X509 certificate.jÆjn¦jÎj·£jÐjïjÒ}r¥¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¦¦jò)�r§¦}r¨¦(jÅX©For HS devices, the SBL and system firmware have to be signed with the MPK. For an easy out-of-box experience, the Processor SDK for HS devices signs the SBL and system firmware with a TI Dummy Key. Images signed with a TI dummy key will boot on both GP and HS boards from TI. The build system invokes the script /packages/ti/build/makerules/x509CertificateGen* which inturn calls OpenSSL to create the X509 certificate.r©¦jÆj£¦jÎj·£jÐjõjÒ}rª¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜKíjÞ]r«¦jçX©For HS devices, the SBL and system firmware have to be signed with the MPK. For an easy out-of-box experience, the Processor SDK for HS devices signs the SBL and system firmware with a TI Dummy Key. Images signed with a TI dummy key will boot on both GP and HS boards from TI. The build system invokes the script /packages/ti/build/makerules/x509CertificateGen* which inturn calls OpenSSL to create the X509 certificate.r¬¦…�r­¦}r®¦(jÅj©¦jÆj§¦ubaubaubcdocutils.nodes warning r¯¦)�r°¦}r±¦(jÅXGThe TI Dummy Key(s) *MUST* be replaced by customers during production with their own Private Keys. If the TI Dummy Keys are used in a production system, the system will be open to security attacks. The path of the default (dummy) key used by the signing script for HS devices is /packages/ti/build/makerules/k3_dev_mpk.pemjÆjn¦jÎj·£jÐUwarningr²¦jÒ}r³¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r´¦jò)�rµ¦}r¶¦(jÅXGThe TI Dummy Key(s) *MUST* be replaced by customers during production with their own Private Keys. If the TI Dummy Keys are used in a production system, the system will be open to security attacks. The path of the default (dummy) key used by the signing script for HS devices is /packages/ti/build/makerules/k3_dev_mpk.pemjÆj°¦jÎj·£jÐjõjÒ}r·¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜKôjÞ]r¸¦(jçXThe TI Dummy Key(s) r¹¦…�rº¦}r»¦(jÅXThe TI Dummy Key(s) jÆjµ¦ubjM)�r¼¦}r½¦(jÅX*MUST*jÒ}r¾¦(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµ¦jÞ]r¿¦jçXMUSTrÀ¦…�rÁ¦}r¦(jÅUjÆj¼¦ubajÐjUubjçX- be replaced by customers during production with their own Private Keys. If the TI Dummy Keys are used in a production system, the system will be open to security attacks. The path of the default (dummy) key used by the signing script for HS devices is /packages/ti/build/makerules/k3_dev_mpk.pemræ…�rĦ}rŦ(jÅX- be replaced by customers during production with their own Private Keys. If the TI Dummy Keys are used in a production system, the system will be open to security attacks. The path of the default (dummy) key used by the signing script for HS devices is /packages/ti/build/makerules/k3_dev_mpk.pemjÆjµ¦ubeubaubj¯¦)�rƦ}rǦ(jÅX7While SBL and system firmware images signed with the TI Dummy Keys will work on both GP and HS devices, the boot time will be significantly impacted on GP devices. Using SBL signed by TI Dummy Keys on GP devices is only recommended during the prototyping phase - when porting code developed on GP to HS devices.jÆjn¦jÎj·£jÐj²¦jÒ}rȦ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rɦjò)�rʦ}r˦(jÅX7While SBL and system firmware images signed with the TI Dummy Keys will work on both GP and HS devices, the boot time will be significantly impacted on GP devices. Using SBL signed by TI Dummy Keys on GP devices is only recommended during the prototyping phase - when porting code developed on GP to HS devices.r̦jÆjƦjÎj·£jÐjõjÒ}rͦ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKújÞ]rΦjçX7While SBL and system firmware images signed with the TI Dummy Keys will work on both GP and HS devices, the boot time will be significantly impacted on GP devices. Using SBL signed by TI Dummy Keys on GP devices is only recommended during the prototyping phase - when porting code developed on GP to HS devices.rϦ…�rЦ}rѦ(jÅj̦jÆjʦubaubaubjò)�rÒ¦}rÓ¦(jÅX**Application image format:**rÔ¦jÆjn¦jÎj·£jÐjõjÒ}rÕ¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÿjÝhjÞ]rÖ¦jÚ)�rצ}rئ(jÅjÔ¦jÒ}rÙ¦(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÒ¦jÞ]rÚ¦jçXApplication image format:rÛ¦…�rܦ}rݦ(jÅUjÆjצubajÐjâubaubjò)�rÞ¦}rߦ(jÅXÃTwo utilities - out2rprc and multicoreImageGen are used to convert an application elf image(s) into an image loadable by the SBL. The structure of a multicore application image is provided below:rà¦jÆjn¦jÎj·£jÐjõjÒ}rá¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]râ¦jçXÃTwo utilities - out2rprc and multicoreImageGen are used to convert an application elf image(s) into an image loadable by the SBL. The structure of a multicore application image is provided below:r㦅�rä¦}rå¦(jÅjà¦jÆjÞ¦ubaubjR)�ræ¦}rç¦(jÅX-.. Image:: ../images/Multicore_app_image.png jÆjn¦jÎj·£jÐjZjÒ}rè¦(UuriX&rtos/../images/Multicore_app_image.pngré¦j×]jÖ]jÔ]jÕ]jX}rê¦U*jé¦sjÚ]ujÜMjÝhjÞ]ubjò)�rë¦}rì¦(jÅX**RPRC File Header Format**rí¦jÆjn¦jÎj·£jÐjõjÒ}rî¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rï¦jÚ)�rð¦}rñ¦(jÅjí¦jÒ}rò¦(jÔ]jÕ]jÖ]j×]jÚ]ujÆjë¦jÞ]ró¦jçXRPRC File Header Formatrô¦…�rõ¦}rö¦(jÅUjÆjð¦ubajÐjâubaubjy )�r÷¦}rø¦(jÅUjÆjn¦jÎj·£jÐjÔ jÒ}rù¦(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rú¦j~ )�rû¦}rü¦(jÅUjÒ}rý¦(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj÷¦jÞ]rþ¦(jƒ )�rÿ¦}r§(jÅUjÒ}r§(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjû¦jÞ]jÐj‡ ubjƒ )�r§}r§(jÅUjÒ}r§(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjû¦jÞ]jÐj‡ ubj‹ )�r§}r§(jÅUjÒ}r§(jÔ]jÕ]jÖ]j×]jÚ]ujÆjû¦jÞ]r§j� )�r §}r §(jÅUjÒ}r §(jÔ]jÕ]jÖ]j×]jÚ]ujÆj§jÞ]r §(j• )�r §}r§(jÅUjÒ}r§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj §jÞ]r§jò)�r§}r§(jÅXOffsetr§jÆj §jÎj·£jÐjõjÒ}r§(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r§jçXOffsetr§…�r§}r§(jÅj§jÆj§ubaubajÐj¢ ubj• )�r§}r§(jÅUjÒ}r§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj §jÞ]r§jò)�r§}r§(jÅX Binary valuer§jÆj§jÎj·£jÐjõjÒ}r §(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r!§jçX Binary valuer"§…�r#§}r$§(jÅj§jÆj§ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r%§}r&§(jÅUjÒ}r'§(jÔ]jÕ]jÖ]j×]jÚ]ujÆjû¦jÞ]r(§(j� )�r)§}r*§(jÅUjÒ}r+§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%§jÞ]r,§(j• )�r-§}r.§(jÅUjÒ}r/§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)§jÞ]r0§jò)�r1§}r2§(jÅX 0x00000000r3§jÆj-§jÎj·£jÐjõjÒ}r4§(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r5§jçX 0x00000000r6§…�r7§}r8§(jÅj3§jÆj1§ubaubajÐj¢ ubj• )�r9§}r:§(jÅUjÒ}r;§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)§jÞ]r<§jò)�r=§}r>§(jÅX**Magic Word(43525052)**r?§jÆj9§jÎj·£jÐjõjÒ}r@§(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rA§jÚ)�rB§}rC§(jÅj?§jÒ}rD§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj=§jÞ]rE§jçXMagic Word(43525052)rF§…�rG§}rH§(jÅUjÆjB§ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rI§}rJ§(jÅUjÒ}rK§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%§jÞ]rL§(j• )�rM§}rN§(jÅUjÒ}rO§(jÔ]jÕ]jÖ]j×]jÚ]ujÆjI§jÞ]rP§jò)�rQ§}rR§(jÅX 0x00000004rS§jÆjM§jÎj·£jÐjõjÒ}rT§(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rU§jçX 0x00000004rV§…�rW§}rX§(jÅjS§jÆjQ§ubaubajÐj¢ ubj• )�rY§}rZ§(jÅUjÒ}r[§(jÔ]jÕ]jÖ]j×]jÚ]ujÆjI§jÞ]r\§jò)�r]§}r^§(jÅX**Entry Point (Location)**r_§jÆjY§jÎj·£jÐjõjÒ}r`§(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]ra§jÚ)�rb§}rc§(jÅj_§jÒ}rd§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]§jÞ]re§jçXEntry Point (Location)rf§…�rg§}rh§(jÅUjÆjb§ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�ri§}rj§(jÅUjÒ}rk§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%§jÞ]rl§(j• )�rm§}rn§(jÅUjÒ}ro§(jÔ]jÕ]jÖ]j×]jÚ]ujÆji§jÞ]rp§jò)�rq§}rr§(jÅX 0x00000008rs§jÆjm§jÎj·£jÐjõjÒ}rt§(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]ru§jçX 0x00000008rv§…�rw§}rx§(jÅjs§jÆjq§ubaubajÐj¢ ubj• )�ry§}rz§(jÅUjÒ}r{§(jÔ]jÕ]jÖ]j×]jÚ]ujÆji§jÞ]r|§jò)�r}§}r~§(jÅX**Reserved Addr**r§jÆjy§jÎj·£jÐjõjÒ}r€§(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r�§jÚ)�r‚§}rƒ§(jÅj§jÒ}r„§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj}§jÞ]r…§jçX Reserved Addrr†§…�r‡§}rˆ§(jÅUjÆj‚§ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r‰§}rЧ(jÅUjÒ}r‹§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%§jÞ]rŒ§(j• )�r�§}rާ(jÅUjÒ}r�§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰§jÞ]r�§jò)�r‘§}r’§(jÅX 0x0000000Cr“§jÆj�§jÎj·£jÐjõjÒ}r”§(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r•§jçX 0x0000000Cr–§…�r—§}r˜§(jÅj“§jÆj‘§ubaubajÐj¢ ubj• )�r™§}rš§(jÅUjÒ}r›§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰§jÞ]rœ§jò)�r�§}rž§(jÅX**Section Count**rŸ§jÆj™§jÎj·£jÐjõjÒ}r §(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r¡§jÚ)�r¢§}r£§(jÅjŸ§jÒ}r¤§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�§jÞ]r¥§jçX Section Countr¦§…�r§§}r¨§(jÅUjÆj¢§ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r©§}rª§(jÅUjÒ}r«§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%§jÞ]r¬§(j• )�r­§}r®§(jÅUjÒ}r¯§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©§jÞ]r°§jò)�r±§}r²§(jÅX 0x00000010r³§jÆj­§jÎj·£jÐjõjÒ}r´§(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rµ§jçX 0x00000010r¶§…�r·§}r¸§(jÅj³§jÆj±§ubaubajÐj¢ ubj• )�r¹§}rº§(jÅUjÒ}r»§(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©§jÞ]r¼§jò)�r½§}r¾§(jÅX **Version**r¿§jÆj¹§jÎj·£jÐjõjÒ}rÀ§(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÁ§jÚ)�r§}rç(jÅj¿§jÒ}rħ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj½§jÞ]rŧjçXVersionrƧ…�rǧ}rȧ(jÅUjÆj§ubajÐjâubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�rɧ}rʧ(jÅX**RPRC Section Header Format**r˧jÆjn¦jÎj·£jÐjõjÒ}ŗ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rͧjÚ)�rΧ}rϧ(jÅj˧jÒ}rЧ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjɧjÞ]rѧjçXRPRC Section Header FormatrÒ§…�rÓ§}rÔ§(jÅUjÆjΧubajÐjâubaubjy )�rÕ§}rÖ§(jÅUjÆjn¦jÎj·£jÐjÔ jÒ}r×§(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rاj~ )�rÙ§}rÚ§(jÅUjÒ}rÛ§(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjÕ§jÞ]rܧ(jƒ )�rݧ}rÞ§(jÅUjÒ}rß§(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjÙ§jÞ]jÐj‡ ubjƒ )�rà§}rá§(jÅUjÒ}râ§(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÙ§jÞ]jÐj‡ ubj‹ )�rã§}rä§(jÅUjÒ}rå§(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙ§jÞ]ræ§j� )�rç§}rè§(jÅUjÒ}ré§(jÔ]jÕ]jÖ]j×]jÚ]ujÆjã§jÞ]rê§(j• )�rë§}rì§(jÅUjÒ}rí§(jÔ]jÕ]jÖ]j×]jÚ]ujÆjç§jÞ]rî§jò)�rï§}rð§(jÅXOffsetrñ§jÆjë§jÎj·£jÐjõjÒ}rò§(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]ró§jçXOffsetrô§…�rõ§}rö§(jÅjñ§jÆjï§ubaubajÐj¢ ubj• )�r÷§}rø§(jÅUjÒ}rù§(jÔ]jÕ]jÖ]j×]jÚ]ujÆjç§jÞ]rú§jò)�rû§}rü§(jÅX Binary valuerý§jÆj÷§jÎj·£jÐjõjÒ}rþ§(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÿ§jçX Binary valuer¨…�r¨}r¨(jÅjý§jÆjû§ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r¨}r¨(jÅUjÒ}r¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙ§jÞ]r¨(j� )�r¨}r¨(jÅUjÒ}r ¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨jÞ]r ¨(j• )�r ¨}r ¨(jÅUjÒ}r ¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨jÞ]r¨jò)�r¨}r¨(jÅX 0x00000000r¨jÆj ¨jÎj·£jÐjõjÒ}r¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r¨jçX 0x00000000r¨…�r¨}r¨(jÅj¨jÆj¨ubaubajÐj¢ ubj• )�r¨}r¨(jÅUjÒ}r¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨jÞ]r¨jò)�r¨}r¨(jÅX**Section start Address**r¨jÆj¨jÎj·£jÐjõjÒ}r¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r¨jÚ)�r ¨}r!¨(jÅj¨jÒ}r"¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨jÞ]r#¨jçXSection start Addressr$¨…�r%¨}r&¨(jÅUjÆj ¨ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r'¨}r(¨(jÅUjÒ}r)¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨jÞ]r*¨(j• )�r+¨}r,¨(jÅUjÒ}r-¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'¨jÞ]r.¨jò)�r/¨}r0¨(jÅX 0x00000004r1¨jÆj+¨jÎj·£jÐjõjÒ}r2¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r3¨jçX 0x00000004r4¨…�r5¨}r6¨(jÅj1¨jÆj/¨ubaubajÐj¢ ubj• )�r7¨}r8¨(jÅUjÒ}r9¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'¨jÞ]r:¨jò)�r;¨}r<¨(jÅX**Reserved Addr**r=¨jÆj7¨jÎj·£jÐjõjÒ}r>¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r?¨jÚ)�r@¨}rA¨(jÅj=¨jÒ}rB¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;¨jÞ]rC¨jçX Reserved AddrrD¨…�rE¨}rF¨(jÅUjÆj@¨ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rG¨}rH¨(jÅUjÒ}rI¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨jÞ]rJ¨(j• )�rK¨}rL¨(jÅUjÒ}rM¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆjG¨jÞ]rN¨jò)�rO¨}rP¨(jÅX 0x00000008rQ¨jÆjK¨jÎj·£jÐjõjÒ}rR¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rS¨jçX 0x00000008rT¨…�rU¨}rV¨(jÅjQ¨jÆjO¨ubaubajÐj¢ ubj• )�rW¨}rX¨(jÅUjÒ}rY¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆjG¨jÞ]rZ¨jò)�r[¨}r\¨(jÅX**Size**r]¨jÆjW¨jÎj·£jÐjõjÒ}r^¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r_¨jÚ)�r`¨}ra¨(jÅj]¨jÒ}rb¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[¨jÞ]rc¨jçXSizerd¨…�re¨}rf¨(jÅUjÆj`¨ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rg¨}rh¨(jÅUjÒ}ri¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨jÞ]rj¨(j• )�rk¨}rl¨(jÅUjÒ}rm¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆjg¨jÞ]rn¨jò)�ro¨}rp¨(jÅX 0x0000000Crq¨jÆjk¨jÎj·£jÐjõjÒ}rr¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜM"jÞ]rs¨jçX 0x0000000Crt¨…�ru¨}rv¨(jÅjq¨jÆjo¨ubaubajÐj¢ ubj• )�rw¨}rx¨(jÅUjÒ}ry¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆjg¨jÞ]rz¨jò)�r{¨}r|¨(jÅX**Reserved CRC**r}¨jÆjw¨jÎj·£jÐjõjÒ}r~¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜM"jÞ]r¨jÚ)�r€¨}r�¨(jÅj}¨jÒ}r‚¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj{¨jÞ]rƒ¨jçX Reserved CRCr„¨…�r…¨}r†¨(jÅUjÆj€¨ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r‡¨}rˆ¨(jÅUjÒ}r‰¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨jÞ]rЍ(j• )�r‹¨}rŒ¨(jÅUjÒ}r�¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‡¨jÞ]rލjò)�r�¨}r�¨(jÅX 0x00000010r‘¨jÆj‹¨jÎj·£jÐjõjÒ}r’¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜM$jÞ]r“¨jçX 0x00000010r”¨…�r•¨}r–¨(jÅj‘¨jÆj�¨ubaubajÐj¢ ubj• )�r—¨}r˜¨(jÅUjÒ}r™¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‡¨jÞ]rš¨jò)�r›¨}rœ¨(jÅX **Reserved**r�¨jÆj—¨jÎj·£jÐjõjÒ}rž¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜM$jÞ]rŸ¨jÚ)�r ¨}r¡¨(jÅj�¨jÒ}r¢¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›¨jÞ]r£¨jçXReservedr¤¨…�r¥¨}r¦¨(jÅUjÆj ¨ubajÐjâubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r§¨}r¨¨(jÅX**Multicore boot image format**r©¨jÆjn¦jÎj·£jÐjõjÒ}rª¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜM'jÝhjÞ]r«¨jÚ)�r¬¨}r­¨(jÅj©¨jÒ}r®¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj§¨jÞ]r¯¨jçXMulticore boot image formatr°¨…�r±¨}r²¨(jÅUjÆj¬¨ubajÐjâubaubjò)�r³¨}r´¨(jÅX**Meta Header Start**rµ¨jÆjn¦jÎj·£jÐjõjÒ}r¶¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜM)jÝhjÞ]r·¨jÚ)�r¸¨}r¹¨(jÅjµ¨jÒ}rº¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³¨jÞ]r»¨jçXMeta Header Startr¼¨…�r½¨}r¾¨(jÅUjÆj¸¨ubajÐjâubaubjy )�r¿¨}rÀ¨(jÅUjÆjn¦jÎj·£jÐjÔ jÒ}rÁ¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¨j~ )�rè}rĨ(jÅUjÒ}rŨ(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj¿¨jÞ]rƨ(jƒ )�rǨ}rȨ(jÅUjÒ}rɨ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjèjÞ]jÐj‡ ubjƒ )�rʨ}r˨(jÅUjÒ}r̨(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjèjÞ]jÐj‡ ubj‹ )�rͨ}rΨ(jÅUjÒ}rϨ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjèjÞ]rШj� )�rѨ}rÒ¨(jÅUjÒ}rÓ¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆjͨjÞ]rÔ¨(j• )�rÕ¨}rÖ¨(jÅUjÒ}rר(jÔ]jÕ]jÖ]j×]jÚ]ujÆjѨjÞ]rبjò)�rÙ¨}rÚ¨(jÅXOffsetrÛ¨jÆjÕ¨jÎj·£jÐjõjÒ}rܨ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM,jÞ]rݨjçXOffsetrÞ¨…�rߨ}rà¨(jÅjÛ¨jÆjÙ¨ubaubajÐj¢ ubj• )�rá¨}râ¨(jÅUjÒ}rã¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆjѨjÞ]rä¨jò)�rå¨}ræ¨(jÅX Binary valuerç¨jÆjá¨jÎj·£jÐjõjÒ}rè¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜM,jÞ]ré¨jçX Binary valuerꨅ�rë¨}rì¨(jÅjç¨jÆjå¨ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rí¨}rî¨(jÅUjÒ}rï¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆjèjÞ]rð¨(j� )�rñ¨}rò¨(jÅUjÒ}ró¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆjí¨jÞ]rô¨(j• )�rõ¨}rö¨(jÅUjÒ}r÷¨(jÔ]jÕ]jÖ]j×]jÚ]ujÆjñ¨jÞ]rø¨jò)�rù¨}rú¨(jÅX 0x00000000rû¨jÆjõ¨jÎj·£jÐjõjÒ}rü¨(jÔ]jÕ]jÖ]j×]jÚ]ujÜM.jÞ]rý¨jçX 0x00000000rþ¨…�rÿ¨}r©(jÅjû¨jÆjù¨ubaubajÐj¢ ubj• )�r©}r©(jÅUjÒ}r©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjñ¨jÞ]r©jò)�r©}r©(jÅX**Magic String (0x5254534D)**r©jÆj©jÎj·£jÐjõjÒ}r©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM.jÞ]r ©jÚ)�r ©}r ©(jÅj©jÒ}r ©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©jÞ]r ©jçXMagic String (0x5254534D)r©…�r©}r©(jÅUjÆj ©ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r©}r©(jÅUjÒ}r©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjí¨jÞ]r©(j• )�r©}r©(jÅUjÒ}r©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©jÞ]r©jò)�r©}r©(jÅX 0x00000004r©jÆj©jÎj·£jÐjõjÒ}r©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM0jÞ]r©jçX 0x00000004r©…�r©}r ©(jÅj©jÆj©ubaubajÐj¢ ubj• )�r!©}r"©(jÅUjÒ}r#©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©jÞ]r$©jò)�r%©}r&©(jÅX**Number of Files**r'©jÆj!©jÎj·£jÐjõjÒ}r(©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM0jÞ]r)©jÚ)�r*©}r+©(jÅj'©jÒ}r,©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%©jÞ]r-©jçXNumber of Filesr.©…�r/©}r0©(jÅUjÆj*©ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r1©}r2©(jÅUjÒ}r3©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjí¨jÞ]r4©(j• )�r5©}r6©(jÅUjÒ}r7©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj1©jÞ]r8©jò)�r9©}r:©(jÅX 0x00000008r;©jÆj5©jÎj·£jÐjõjÒ}r<©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM2jÞ]r=©jçX 0x00000008r>©…�r?©}r@©(jÅj;©jÆj9©ubaubajÐj¢ ubj• )�rA©}rB©(jÅUjÒ}rC©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj1©jÞ]rD©jò)�rE©}rF©(jÅX **Device ID**rG©jÆjA©jÎj·£jÐjõjÒ}rH©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM2jÞ]rI©jÚ)�rJ©}rK©(jÅjG©jÒ}rL©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjE©jÞ]rM©jçX Device IDrN©…�rO©}rP©(jÅUjÆjJ©ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rQ©}rR©(jÅUjÒ}rS©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjí¨jÞ]rT©(j• )�rU©}rV©(jÅUjÒ}rW©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjQ©jÞ]rX©jò)�rY©}rZ©(jÅX 0x0000000Cr[©jÆjU©jÎj·£jÐjõjÒ}r\©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM4jÞ]r]©jçX 0x0000000Cr^©…�r_©}r`©(jÅj[©jÆjY©ubaubajÐj¢ ubj• )�ra©}rb©(jÅUjÒ}rc©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjQ©jÞ]rd©jò)�re©}rf©(jÅX **Reserved**rg©jÆja©jÎj·£jÐjõjÒ}rh©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM4jÞ]ri©jÚ)�rj©}rk©(jÅjg©jÒ}rl©(jÔ]jÕ]jÖ]j×]jÚ]ujÆje©jÞ]rm©jçXReservedrn©…�ro©}rp©(jÅUjÆjj©ubajÐjâubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�rq©}rr©(jÅX**Meta Header per Core**rs©jÆjn¦jÎj·£jÐjõjÒ}rt©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM7jÝhjÞ]ru©jÚ)�rv©}rw©(jÅjs©jÒ}rx©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjq©jÞ]ry©jçXMeta Header per Corerz©…�r{©}r|©(jÅUjÆjv©ubajÐjâubaubjy )�r}©}r~©(jÅUjÆjn¦jÎj·£jÐjÔ jÒ}r©(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r€©j~ )�r�©}r‚©(jÅUjÒ}rƒ©(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj}©jÞ]r„©(jƒ )�r…©}r†©(jÅUjÒ}r‡©(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj�©jÞ]jÐj‡ ubjƒ )�rˆ©}r‰©(jÅUjÒ}rŠ©(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj�©jÞ]jÐj‡ ubj‹ )�r‹©}rŒ©(jÅUjÒ}r�©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�©jÞ]rŽ©j� )�r�©}r�©(jÅUjÒ}r‘©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹©jÞ]r’©(j• )�r“©}r”©(jÅUjÒ}r•©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�©jÞ]r–©jò)�r—©}r˜©(jÅXOffsetr™©jÆj“©jÎj·£jÐjõjÒ}rš©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM:jÞ]r›©jçXOffsetrœ©…�r�©}rž©(jÅj™©jÆj—©ubaubajÐj¢ ubj• )�rŸ©}r ©(jÅUjÒ}r¡©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�©jÞ]r¢©jò)�r£©}r¤©(jÅX Binary valuer¥©jÆjŸ©jÎj·£jÐjõjÒ}r¦©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM:jÞ]r§©jçX Binary valuer¨©…�r©©}rª©(jÅj¥©jÆj£©ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r«©}r¬©(jÅUjÒ}r­©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�©jÞ]r®©(j� )�r¯©}r°©(jÅUjÒ}r±©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«©jÞ]r²©(j• )�r³©}r´©(jÅUjÒ}rµ©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯©jÞ]r¶©jò)�r·©}r¸©(jÅX 0x00000000r¹©jÆj³©jÎj·£jÐjõjÒ}rº©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM<jÞ]r»©jçX 0x00000000r¼©…�r½©}r¾©(jÅj¹©jÆj·©ubaubajÐj¢ ubj• )�r¿©}rÀ©(jÅUjÒ}rÁ©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯©jÞ]r©jò)�ré}rÄ©(jÅX **Core ID**rÅ©jÆj¿©jÎj·£jÐjõjÒ}rÆ©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM<jÞ]rÇ©jÚ)�rÈ©}rÉ©(jÅjÅ©jÒ}rÊ©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéjÞ]rË©jçXCore IDrÌ©…�rÍ©}rΩ(jÅUjÆjÈ©ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rÏ©}rЩ(jÅUjÒ}rÑ©(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«©jÞ]rÒ©(j• )�rÓ©}rÔ©(jÅUjÒ}rÕ©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÏ©jÞ]rÖ©jò)�rש}rØ©(jÅX 0x00000004rÙ©jÆjÓ©jÎj·£jÐjõjÒ}rÚ©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM>jÞ]rÛ©jçX 0x00000004rÜ©…�rÝ©}rÞ©(jÅjÙ©jÆjשubaubajÐj¢ ubj• )�rß©}rà©(jÅUjÒ}rá©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÏ©jÞ]râ©jò)�rã©}rä©(jÅX**Image Offset**rå©jÆjß©jÎj·£jÐjõjÒ}ræ©(jÔ]jÕ]jÖ]j×]jÚ]ujÜM>jÞ]rç©jÚ)�rè©}ré©(jÅjå©jÒ}rê©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjã©jÞ]rë©jçX Image Offsetrì©…�rí©}rî©(jÅUjÆjè©ubajÐjâubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�rï©}rð©(jÅX$**Signed application image format:**rñ©jÆjn¦jÎj·£jÐjõjÒ}rò©(jÔ]jÕ]jÖ]j×]jÚ]ujÜMBjÝhjÞ]ró©jÚ)�rô©}rõ©(jÅjñ©jÒ}rö©(jÔ]jÕ]jÖ]j×]jÚ]ujÆjï©jÞ]r÷©jçX Signed application image format:rø©…�rù©}rú©(jÅUjÆjô©ubajÐjâubaubjò)�rû©}rü©(jÅXOTo convert the multicore application image into a format that can be verified, the build flow uses the x509CertificateGen script to create a x509 certificate for the app image. Images that have a x509 certificate are called signed images. Signed applications images are mandatory for HS devices, but will work also work on GP devices.rý©jÆjn¦jÎj·£jÐjõjÒ}rþ©(jÔ]jÕ]jÖ]j×]jÚ]ujÜMDjÝhjÞ]rÿ©jçXOTo convert the multicore application image into a format that can be verified, the build flow uses the x509CertificateGen script to create a x509 certificate for the app image. Images that have a x509 certificate are called signed images. Signed applications images are mandatory for HS devices, but will work also work on GP devices.rª…�rª}rª(jÅjý©jÆjû©ubaubjò)�rª}rª(jÅXŸSigned images are automatically detected by the SBL and loaded into a scratch memory area specified during SBL build. The scratch memory area used by default is specified in `sbl_lib.mk `__ via the flags SBL_SCRATCH_MEM_START and SBL_SCRATCH_MEM_SIZE. The SBL_SCRATCH_MEM* options can also be specified for custom builds to override the defaults.jÆjn¦jÎj·£jÐjõjÒ}rª(jÔ]jÕ]jÖ]j×]jÚ]ujÜMIjÝhjÞ]rª(jçX®Signed images are automatically detected by the SBL and loaded into a scratch memory area specified during SBL build. The scratch memory area used by default is specified in rª…�rª}r ª(jÅX®Signed images are automatically detected by the SBL and loaded into a scratch memory area specified during SBL build. The scratch memory area used by default is specified in jÆjªubjû)�r ª}r ª(jÅXT`sbl_lib.mk `__jÒ}r ª(UnameX sbl_lib.mkjXBhttps://git.ti.com/keystone-rtos/sbl/blobs/master/build/sbl_lib.mkj×]jÖ]jÔ]jÕ]jÚ]ujÆjªjÞ]r ªjçX sbl_lib.mkrª…�rª}rª(jÅUjÆj ªubajÐjÿubjçX� via the flags SBL_SCRATCH_MEM_START and SBL_SCRATCH_MEM_SIZE. The SBL_SCRATCH_MEM* options can also be specified for custom builds to override the defaults.rª…�rª}rª(jÅX� via the flags SBL_SCRATCH_MEM_START and SBL_SCRATCH_MEM_SIZE. The SBL_SCRATCH_MEM* options can also be specified for custom builds to override the defaults.jÆjªubeubjò)�rª}rª(jÅXThe SBL scratch memory is unavailable to applications during app load time, as the SBL is still active. Once the SBL transfers control to the application, this memory is available for app use - in other words SBL_SCRATCH_MEM* is available during app runtime.rªjÆjn¦jÎj·£jÐjõjÒ}rª(jÔ]jÕ]jÖ]j×]jÚ]ujÜMOjÝhjÞ]rªjçXThe SBL scratch memory is unavailable to applications during app load time, as the SBL is still active. Once the SBL transfers control to the application, this memory is available for app use - in other words SBL_SCRATCH_MEM* is available during app runtime.rª…�rª}rª(jÅjªjÆjªubaubjò)�rª}rª(jÅXöFor information on the application's X.509 certificate format, please refer `Security X509 Certificate Documentation `__jÆjn¦jÎj·£jÐjõjÒ}rª(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÝhjÞ]rª(jçXLFor information on the application's X.509 certificate format, please refer r ª…�r!ª}r"ª(jÅXLFor information on the application's X.509 certificate format, please refer jÆjªubjû)�r#ª}r$ª(jÅXª`Security X509 Certificate Documentation `__jÒ}r%ª(UnameX'Security X509 Certificate DocumentationjX{http://downloads.ti.com/tisci/esd/latest/2_tisci_msgs/security/sec_cert_format.html#security-x509-certificate-documentationj×]jÖ]jÔ]jÕ]jÚ]ujÆjªjÞ]r&ªjçX'Security X509 Certificate Documentationr'ª…�r(ª}r)ª(jÅUjÆj#ªubajÐjÿubeubeubjÇ)�r*ª}r+ª(jÅUjÆj¥£jÎj·£jÐjÑjÒ}r,ª(jÔ]jÕ]jÖ]j×]r-ªU#building-the-sbl-and-its-componentsr.ªajÚ]r/ªh0aujÜMXjÝhjÞ]r0ª(jà)�r1ª}r2ª(jÅX#Building the SBL and its componentsr3ªjÆj*ªjÎj·£jÐjäjÒ}r4ª(jÔ]jÕ]jÖ]j×]jÚ]ujÜMXjÝhjÞ]r5ªjçX#Building the SBL and its componentsr6ª…�r7ª}r8ª(jÅj3ªjÆj1ªubaubjò)�r9ª}r:ª(jÅX**Pre-requisites to Building**r;ªjÆj*ªjÎj·£jÐjõjÒ}r<ª(jÔ]jÕ]jÖ]j×]jÚ]ujÜMZjÝhjÞ]r=ªjÚ)�r>ª}r?ª(jÅj;ªjÒ}r@ª(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9ªjÞ]rAªjçXPre-requisites to BuildingrBª…�rCª}rDª(jÅUjÆj>ªubajÐjâubaubjt)�rEª}rFª(jÅUjÆj*ªjÎj·£jÐjwjÒ}rGª(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM\jÝhjÞ]rHªj{)�rIª}rJª(jÅXSet your environment using pdksetupenv.bat or pdksetupenv.sh. Refer to `Processor SDK RTOS Building `__ for information on setting up your build environment jÆjEªjÎj·£jÐjjÒ}rKª(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rLªjò)�rMª}rNª(jÅXSet your environment using pdksetupenv.bat or pdksetupenv.sh. Refer to `Processor SDK RTOS Building `__ for information on setting up your build environmentjÆjIªjÎj·£jÐjõjÒ}rOª(jÔ]jÕ]jÖ]j×]jÚ]ujÜM\jÞ]rPª(jçXGSet your environment using pdksetupenv.bat or pdksetupenv.sh. Refer to rQª…�rRª}rSª(jÅXGSet your environment using pdksetupenv.bat or pdksetupenv.sh. Refer to jÆjMªubjû)�rTª}rUª(jÅX‰`Processor SDK RTOS Building `__jÒ}rVª(UnameXProcessor SDK RTOS BuildingjXghttp://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_overview.html#setup-environmentj×]jÖ]jÔ]jÕ]jÚ]ujÆjMªjÞ]rWªjçXProcessor SDK RTOS BuildingrXª…�rYª}rZª(jÅUjÆjTªubajÐjÿubjçX5 for information on setting up your build environmentr[ª…�r\ª}r]ª(jÅX5 for information on setting up your build environmentjÆjMªubeubaubaubj)�r^ª}r_ª(jÅXh
jÆj*ªjÎj·£jÐjjÒ}r`ª(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM_jÝhjÞ]raªjçXh
rbª…�rcª}rdª(jÅUjÆj^ªubaubjò)�reª}rfª(jÅX**NOTE**rgªjÆj*ªjÎj·£jÐjõjÒ}rhª(jÔ]jÕ]jÖ]j×]jÚ]ujÜMdjÝhjÞ]riªjÚ)�rjª}rkª(jÅjgªjÒ}rlª(jÔ]jÕ]jÖ]j×]jÚ]ujÆjeªjÞ]rmªjçXNOTErnª…�roª}rpª(jÅUjÆjjªubajÐjâubaubjt)�rqª}rrª(jÅUjÆj*ªjÎj·£jÐjwjÒ}rsª(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMfjÝhjÞ]rtªj{)�ruª}rvª(jÅXnSBL needs openssl to build. To check if openssl is present, type the following at the linux or windows prompt.jÆjqªjÎj·£jÐjjÒ}rwª(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rxªjò)�ryª}rzª(jÅXnSBL needs openssl to build. To check if openssl is present, type the following at the linux or windows prompt.r{ªjÆjuªjÎj·£jÐjõjÒ}r|ª(jÔ]jÕ]jÖ]j×]jÚ]ujÜMfjÞ]r}ªjçXnSBL needs openssl to build. To check if openssl is present, type the following at the linux or windows prompt.r~ª…�rª}r€ª(jÅj{ªjÆjyªubaubaubaubj)�r�ª}r‚ª(jÅXopenssl versionjÆj*ªjÎj·£jÐjjÒ}rƒª(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM<'jÝhjÞ]r„ªjçXopenssl versionr…ª…�r†ª}r‡ª(jÅUjÆj�ªubaubjt)�rˆª}r‰ª(jÅUjÆj*ªjÎj·£jÐjwjÒ}rŠª(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMmjÝhjÞ]r‹ª(j{)�rŒª}r�ª(jÅXVTo build on Linux, you need to have `mono `__ installed. jÆjˆªjÎj·£jÐjjÒ}rŽª(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�ªjò)�r�ª}r‘ª(jÅXUTo build on Linux, you need to have `mono `__ installed.jÆjŒªjÎj·£jÐjõjÒ}r’ª(jÔ]jÕ]jÖ]j×]jÚ]ujÜMmjÞ]r“ª(jçX$To build on Linux, you need to have r”ª…�r•ª}r–ª(jÅX$To build on Linux, you need to have jÆj�ªubjû)�r—ª}r˜ª(jÅX&`mono `__jÒ}r™ª(UnameXmonojXhttp://www.mono-project.comj×]jÖ]jÔ]jÕ]jÚ]ujÆj�ªjÞ]ršªjçXmonor›ª…�rœª}r�ª(jÅUjÆj—ªubajÐjÿubjçX installed.ržª…�rŸª}r ª(jÅX installed.jÆj�ªubeubaubj{)�r¡ª}r¢ª(jÅXØRefer `Build Dependencies `__ for instructions on how to install these tools, if they are not already present on your system. jÆjˆªjÎj·£jÐjjÒ}r£ª(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¤ªjò)�r¥ª}r¦ª(jÅXÖRefer `Build Dependencies `__ for instructions on how to install these tools, if they are not already present on your system.jÆj¡ªjÎj·£jÐjõjÒ}r§ª(jÔ]jÕ]jÖ]j×]jÚ]ujÜMojÞ]r¨ª(jçXRefer r©ª…�rªª}r«ª(jÅXRefer jÆj¥ªubjû)�r¬ª}r­ª(jÅXp`Build Dependencies `__jÒ}r®ª(UnameXBuild DependenciesjXWhttp://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/Overview.html#commandj×]jÖ]jÔ]jÕ]jÚ]ujÆj¥ªjÞ]r¯ªjçXBuild Dependenciesr°ª…�r±ª}r²ª(jÅUjÆj¬ªubajÐjÿubjçX` for instructions on how to install these tools, if they are not already present on your system.r³ª…�r´ª}rµª(jÅX` for instructions on how to install these tools, if they are not already present on your system.jÆj¥ªubeubaubeubj)�r¶ª}r·ª(jÅX
jÆj*ªjÎj·£jÐjjÒ}r¸ª(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMsjÝhjÞ]r¹ªjçX
rºª…�r»ª}r¼ª(jÅUjÆj¶ªubaubjò)�r½ª}r¾ª(jÅX**Compiling the SBL**r¿ªjÆj*ªjÎj·£jÐjõjÒ}rÀª(jÔ]jÕ]jÖ]j×]jÚ]ujÜMwjÝhjÞ]rÁªjÚ)�rª}rê(jÅj¿ªjÒ}rĪ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj½ªjÞ]rŪjçXCompiling the SBLrƪ…�rǪ}rȪ(jÅUjÆjªubajÐjâubaubjò)�rɪ}rʪ(jÅX#To build all the SBL components: ::jÆj*ªjÎj·£jÐjõjÒ}r˪(jÔ]jÕ]jÖ]j×]jÚ]ujÜMyjÝhjÞ]r̪jçX To build all the SBL components:rͪ…�rΪ}rϪ(jÅX To build all the SBL components:jÆjɪubaubj)�rЪ}rѪ(jÅX]cd /packages/ti/boot/sbl/build gmake clean all (for windows) make clean all (for Linux)jÆj*ªjÎj·£jÐjjÒ}rÒª(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMN'jÝhjÞ]rÓªjçX]cd /packages/ti/boot/sbl/build gmake clean all (for windows) make clean all (for Linux)rÔª…�rÕª}rÖª(jÅUjÆjЪubaubjt)�rת}rت(jÅUjÆj*ªjÎj·£jÐjwjÒ}rÙª(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM€jÝhjÞ]rÚª(j{)�rÛª}rܪ(jÅXISBL image files are be located at: **/packages/ti/boot/sbl/binary/**rݪjÆjתjÎj·£jÐjjÒ}rÞª(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rߪjò)�ràª}ráª(jÅjݪjÆjÛªjÎj·£jÐjõjÒ}râª(jÔ]jÕ]jÖ]j×]jÚ]ujÜM€jÞ]rãª(jçX#SBL image files are be located at: r䪅�råª}ræª(jÅX#SBL image files are be located at: jÆjàªubjÚ)�rçª}rèª(jÅX&**/packages/ti/boot/sbl/binary/**jÒ}réª(jÔ]jÕ]jÖ]j×]jÚ]ujÆjàªjÞ]rêªjçX"/packages/ti/boot/sbl/binary/r명�rìª}ríª(jÅUjÆjçªubajÐjâubeubaubj{)�rîª}rïª(jÅXYSBL examples are located at **/packages/ti/boot/sbl/examples/k3MulticoreApp/binary**rðªjÆjתjÎj·£jÐjjÒ}rñª(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ròªjò)�róª}rôª(jÅjðªjÆjîªjÎj·£jÐjõjÒ}rõª(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]röª(jçXSBL examples are located at r÷ª…�røª}rùª(jÅXSBL examples are located at jÆjóªubjÚ)�rúª}rûª(jÅX=**/packages/ti/boot/sbl/examples/k3MulticoreApp/binary**jÒ}rüª(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóªjÞ]rýªjçX9/packages/ti/boot/sbl/examples/k3MulticoreApp/binaryrþª…�rÿª}r«(jÅUjÆjúªubajÐjâubeubaubj{)�r«}r«(jÅX;SBL lib are located at **/packages/ti/boot/sbl/lib/** jÆjתjÎj·£jÐjjÒ}r«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r«jò)�r«}r«(jÅX:SBL lib are located at **/packages/ti/boot/sbl/lib/**jÆj«jÎj·£jÐjõjÒ}r«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‚jÞ]r«(jçXSBL lib are located at r «…�r «}r «(jÅXSBL lib are located at jÆj«ubjÚ)�r «}r «(jÅX#**/packages/ti/boot/sbl/lib/**jÒ}r«(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«jÞ]r«jçX/packages/ti/boot/sbl/lib/r«…�r«}r«(jÅUjÆj «ubajÐjâubeubaubeubjò)�r«}r«(jÅX$**Compile time options for the SBL**r«jÆj*ªjÎj·£jÐjõjÒ}r«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM„jÝhjÞ]r«jÚ)�r«}r«(jÅj«jÒ}r«(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«jÞ]r«jçX Compile time options for the SBLr«…�r«}r«(jÅUjÆj«ubajÐjâubaubjò)�r«}r «(jÅXThe SBL supports several compile time options to tweak the SBL to satisfy requirements of ease of use, boot time and size. These can be enabled or disabled by editing `sbl/sbl_component.mk `__jÆj*ªjÎj·£jÐjõjÒ}r!«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM†jÝhjÞ]r"«(jçX§The SBL supports several compile time options to tweak the SBL to satisfy requirements of ease of use, boot time and size. These can be enabled or disabled by editing r#«…�r$«}r%«(jÅX§The SBL supports several compile time options to tweak the SBL to satisfy requirements of ease of use, boot time and size. These can be enabled or disabled by editing jÆj«ubjû)�r&«}r'«(jÅXn`sbl/sbl_component.mk `__jÒ}r(«(UnameXsbl/sbl_component.mkjXShttp://git.ti.com/cgit/processor-sdk/pdk/tree/packages/ti/boot/sbl/sbl_component.mkj×]jÖ]jÔ]jÕ]jÚ]ujÆj«jÞ]r)«jçXsbl/sbl_component.mkr*«…�r+«}r,«(jÅUjÆj&«ubajÐjÿubeubjt)�r-«}r.«(jÅUjÆj*ªjÎj·£jÐjwjÒ}r/«(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMŠjÝhjÞ]r0«(j{)�r1«}r2«(jÅX�SBL_LOG_LEVEL : Controls amount of SBL logs (on the MCU UART) and system firmware logs(on WAKEUP UART). Varies from 0(no logs) to 3 (all logs)jÆj-«jÎj·£jÐjjÒ}r3«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r4«jò)�r5«}r6«(jÅX�SBL_LOG_LEVEL : Controls amount of SBL logs (on the MCU UART) and system firmware logs(on WAKEUP UART). Varies from 0(no logs) to 3 (all logs)r7«jÆj1«jÎj·£jÐjõjÒ}r8«(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŠjÞ]r9«jçX�SBL_LOG_LEVEL : Controls amount of SBL logs (on the MCU UART) and system firmware logs(on WAKEUP UART). Varies from 0(no logs) to 3 (all logs)r:«…�r;«}r<«(jÅj7«jÆj5«ubaubaubj{)�r=«}r>«(jÅXdSBL_USE_DMA : Valid values are 0 (use CPU to access boot media) or 1 (use DMA to access boot media).jÆj-«jÎj·£jÐjjÒ}r?«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r@«jò)�rA«}rB«(jÅXdSBL_USE_DMA : Valid values are 0 (use CPU to access boot media) or 1 (use DMA to access boot media).rC«jÆj=«jÎj·£jÐjõjÒ}rD«(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŒjÞ]rE«jçXdSBL_USE_DMA : Valid values are 0 (use CPU to access boot media) or 1 (use DMA to access boot media).rF«…�rG«}rH«(jÅjC«jÆjA«ubaubaubj{)�rI«}rJ«(jÅX SBL_DISPLAY_PROFILE_INFO : At the end of the boot process, displays a log of timestamps at which different SBL profile points are hit. This is useful to see how much time the SBL spends in different functions. SBL_LOG_LEVEL can significantly affect performance numbers.jÆj-«jÎj·£jÐjjÒ}rK«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rL«jò)�rM«}rN«(jÅX SBL_DISPLAY_PROFILE_INFO : At the end of the boot process, displays a log of timestamps at which different SBL profile points are hit. This is useful to see how much time the SBL spends in different functions. SBL_LOG_LEVEL can significantly affect performance numbers.rO«jÆjI«jÎj·£jÐjõjÒ}rP«(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŽjÞ]rQ«jçX SBL_DISPLAY_PROFILE_INFO : At the end of the boot process, displays a log of timestamps at which different SBL profile points are hit. This is useful to see how much time the SBL spends in different functions. SBL_LOG_LEVEL can significantly affect performance numbers.rR«…�rS«}rT«(jÅjO«jÆjM«ubaubaubj{)�rU«}rV«(jÅXSBL_ENABLE_PLL : Dials up all the PLLs calling Board_init(). Makes it easier for applications as they no longer have to initialize the PLLs. However, enabling this significantly increases boot time and power consumption. Requires system firmware to be loaded.jÆj-«jÎj·£jÐjjÒ}rW«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rX«jò)�rY«}rZ«(jÅXSBL_ENABLE_PLL : Dials up all the PLLs calling Board_init(). Makes it easier for applications as they no longer have to initialize the PLLs. However, enabling this significantly increases boot time and power consumption. Requires system firmware to be loaded.r[«jÆjU«jÎj·£jÐjõjÒ}r\«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM’jÞ]r]«jçXSBL_ENABLE_PLL : Dials up all the PLLs calling Board_init(). Makes it easier for applications as they no longer have to initialize the PLLs. However, enabling this significantly increases boot time and power consumption. Requires system firmware to be loaded.r^«…�r_«}r`«(jÅj[«jÆjY«ubaubaubj{)�ra«}rb«(jÅX”SBL_ENABLE_CLOCKS : Enables all the module clocks by calling Board_init(). Makes it easier for applications as they no longer have to enable clocks.jÆj-«jÎj·£jÐjjÒ}rc«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rd«jò)�re«}rf«(jÅX”SBL_ENABLE_CLOCKS : Enables all the module clocks by calling Board_init(). Makes it easier for applications as they no longer have to enable clocks.rg«jÆja«jÎj·£jÐjõjÒ}rh«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM–jÞ]ri«jçX”SBL_ENABLE_CLOCKS : Enables all the module clocks by calling Board_init(). Makes it easier for applications as they no longer have to enable clocks.rj«…�rk«}rl«(jÅjg«jÆje«ubaubaubj{)�rm«}rn«(jÅXëSBL_ENABLE_DDR : Initializes the DDR. At the cost of boot time, this enables applications to run from and use DDR. SBL_ENABLE_CLOCKS and SBL_ENABLE_PLL must also be enabed for this to work. Enabling this option increases the boot time.jÆj-«jÎj·£jÐjjÒ}ro«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rp«jò)�rq«}rr«(jÅXëSBL_ENABLE_DDR : Initializes the DDR. At the cost of boot time, this enables applications to run from and use DDR. SBL_ENABLE_CLOCKS and SBL_ENABLE_PLL must also be enabed for this to work. Enabling this option increases the boot time.rs«jÆjm«jÎj·£jÐjõjÒ}rt«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM˜jÞ]ru«jçXëSBL_ENABLE_DDR : Initializes the DDR. At the cost of boot time, this enables applications to run from and use DDR. SBL_ENABLE_CLOCKS and SBL_ENABLE_PLL must also be enabed for this to work. Enabling this option increases the boot time.rv«…�rw«}rx«(jÅjs«jÆjq«ubaubaubj{)�ry«}rz«(jÅXåSBL_SKIP_MCU_RESET : Jumps to the MCU0 application entry point without resetting the core. Enables faster boot time. Will not change the MCU's mode (lock-step/split). Application also inherits the MCU state as the SBL left it in.jÆj-«jÎj·£jÐjjÒ}r{«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r|«jò)�r}«}r~«(jÅXåSBL_SKIP_MCU_RESET : Jumps to the MCU0 application entry point without resetting the core. Enables faster boot time. Will not change the MCU's mode (lock-step/split). Application also inherits the MCU state as the SBL left it in.r«jÆjy«jÎj·£jÐjõjÒ}r€«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM›jÞ]r�«jçXåSBL_SKIP_MCU_RESET : Jumps to the MCU0 application entry point without resetting the core. Enables faster boot time. Will not change the MCU's mode (lock-step/split). Application also inherits the MCU state as the SBL left it in.r‚«…�rƒ«}r„«(jÅj«jÆj}«ubaubaubj{)�r…«}r†«(jÅXáSBL_ENABLE_DEV_GRP_MCU : Will cause the system firmware to only use MCU domain resources during system firmware initialization. This can be dont either to support boot when the main power domain is off, or to save boot time. jÆj-«jÎj·£jÐjjÒ}r‡«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rˆ«jò)�r‰«}rŠ«(jÅXàSBL_ENABLE_DEV_GRP_MCU : Will cause the system firmware to only use MCU domain resources during system firmware initialization. This can be dont either to support boot when the main power domain is off, or to save boot time.r‹«jÆj…«jÎj·£jÐjõjÒ}rŒ«(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŸjÞ]r�«jçXàSBL_ENABLE_DEV_GRP_MCU : Will cause the system firmware to only use MCU domain resources during system firmware initialization. This can be dont either to support boot when the main power domain is off, or to save boot time.rŽ«…�r�«}r�«(jÅj‹«jÆj‰«ubaubaubeubjò)�r‘«}r’«(jÅXThe SBL also supports a "custom" build, in addition to standard out-of-box builds. A custom build is a useful way of testing out the effect of different build options - like when optimizing for boot time, or enabling custom usecases like eXecute In Place (XIP) to reduce memory usage.r“«jÆj*ªjÎj·£jÐjõjÒ}r”«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM£jÝhjÞ]r•«jçXThe SBL also supports a "custom" build, in addition to standard out-of-box builds. A custom build is a useful way of testing out the effect of different build options - like when optimizing for boot time, or enabling custom usecases like eXecute In Place (XIP) to reduce memory usage.r–«…�r—«}r˜«(jÅj“«jÆj‘«ubaubjò)�r™«}rš«(jÅXFor an example of how to use such custom builds, please refer to `sbl/sbl_component.mk `__. It shows how to specify a select list of build options while building SBL images and libs.jÆj*ªjÎj·£jÐjõjÒ}r›«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¨jÝhjÞ]rœ«(jçXAFor an example of how to use such custom builds, please refer to r�«…�rž«}rŸ«(jÅXAFor an example of how to use such custom builds, please refer to jÆj™«ubjû)�r «}r¡«(jÅXt`sbl/sbl_component.mk `__jÒ}r¢«(UnameXsbl/sbl_component.mkjXYhttps://git.ti.com/cgit/processor-sdk/pdk/tree/packages/ti/boot/sbl/sbl_component.mk#n526j×]jÖ]jÔ]jÕ]jÚ]ujÆj™«jÞ]r£«jçXsbl/sbl_component.mkr¤«…�r¥«}r¦«(jÅUjÆj «ubajÐjÿubjçX\. It shows how to specify a select list of build options while building SBL images and libs.r§«…�r¨«}r©«(jÅX\. It shows how to specify a select list of build options while building SBL images and libs.jÆj™«ubeubjò)�rª«}r««(jÅX**SBL Startup**r¬«jÆj*ªjÎj·£jÐjõjÒ}r­«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM­jÝhjÞ]r®«jÚ)�r¯«}r°«(jÅj¬«jÒ}r±«(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª«jÞ]r²«jçX SBL Startupr³«…�r´«}rµ«(jÅUjÆj¯«ubajÐjâubaubjò)�r¶«}r·«(jÅXxThe SBL can specify the R5 configuration (lockstep or split) that ROM needs to use when it starts up the SBL. This info is passed to ROM as a field in the X509 certificate. The value in this field can be controlled by editing the build flag R5_STARTUP_MODE in `sbl/build/sbl_img.mk `__jÆj*ªjÎj·£jÐjõjÒ}r¸«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¯jÝhjÞ]r¹«(jçXThe SBL can specify the R5 configuration (lockstep or split) that ROM needs to use when it starts up the SBL. This info is passed to ROM as a field in the X509 certificate. The value in this field can be controlled by editing the build flag R5_STARTUP_MODE in rº«…�r»«}r¼«(jÅXThe SBL can specify the R5 configuration (lockstep or split) that ROM needs to use when it starts up the SBL. This info is passed to ROM as a field in the X509 certificate. The value in this field can be controlled by editing the build flag R5_STARTUP_MODE in jÆj¶«ubjû)�r½«}r¾«(jÅXs`sbl/build/sbl_img.mk `__jÒ}r¿«(UnameXsbl/build/sbl_img.mkjXXhttps://git.ti.com/cgit/processor-sdk/pdk/tree/packages/ti/boot/sbl/build/sbl_img.mk#n91j×]jÖ]jÔ]jÕ]jÚ]ujÆj¶«jÞ]rÀ«jçXsbl/build/sbl_img.mkrÁ«…�r«}rë(jÅUjÆj½«ubajÐjÿubeubjt)�rÄ«}rÅ«(jÅUjÆj*ªjÎj·£jÐjwjÒ}rÆ«(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM´jÝhjÞ]rÇ«(j{)�rÈ«}rÉ«(jÅXPEFUSE_DEFAULT : SBL will run with the same R5 configuration the boot rom ran in.rÊ«jÆjÄ«jÎj·£jÐjjÒ}rË«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÌ«jò)�rÍ«}rΫ(jÅjÊ«jÆjÈ«jÎj·£jÐjõjÒ}rÏ«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM´jÞ]rЫjçXPEFUSE_DEFAULT : SBL will run with the same R5 configuration the boot rom ran in.rÑ«…�rÒ«}rÓ«(jÅjÊ«jÆjÍ«ubaubaubj{)�rÔ«}rÕ«(jÅXWSPLIT_MODE : ROM will switch the R5 to split mode before starting the SBL (default). jÆjÄ«jÎj·£jÐjjÒ}rÖ«(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r׫jò)�rØ«}rÙ«(jÅXUSPLIT_MODE : ROM will switch the R5 to split mode before starting the SBL (default).rÚ«jÆjÔ«jÎj·£jÐjõjÒ}rÛ«(jÔ]jÕ]jÖ]j×]jÚ]ujÜMµjÞ]rÜ«jçXUSPLIT_MODE : ROM will switch the R5 to split mode before starting the SBL (default).rÝ«…�rÞ«}rß«(jÅjÚ«jÆjØ«ubaubaubeubjò)�rà«}rá«(jÅX-**Enabling/Disabling JTAG on secure devices**râ«jÆj*ªjÎj·£jÐjõjÒ}rã«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¸jÝhjÞ]rä«jÚ)�rå«}ræ«(jÅjâ«jÒ}rç«(jÔ]jÕ]jÖ]j×]jÚ]ujÆjà«jÞ]rè«jçX)Enabling/Disabling JTAG on secure devicesré«…�rê«}rë«(jÅUjÆjå«ubajÐjâubaubjò)�rì«}rí«(jÅX@JTAG access is controlled using a field in the X509 certificate.rî«jÆj*ªjÎj·£jÐjõjÒ}rï«(jÔ]jÕ]jÖ]j×]jÚ]ujÜMºjÝhjÞ]rð«jçX@JTAG access is controlled using a field in the X509 certificate.rñ«…�rò«}ró«(jÅjî«jÆjì«ubaubjò)�rô«}rõ«(jÅXéBy default, for an easy out of box experience, the Processor SDK enables debug via JTAG on High Secure devices. Leaving JTAG enabled, while making it easy for software development, creates a major security hole in production devices.rö«jÆj*ªjÎj·£jÐjõjÒ}r÷«(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¼jÝhjÞ]rø«jçXéBy default, for an easy out of box experience, the Processor SDK enables debug via JTAG on High Secure devices. Leaving JTAG enabled, while making it easy for software development, creates a major security hole in production devices.rù«…�rú«}rû«(jÅjö«jÆjô«ubaubjò)�rü«}rý«(jÅXÌTo disable/change the level of JTAG access on HS devices, update the value of the debugType field in the signing scripts `build/makerules/x509template.txt `__ (when building from windows) and `build/makerules/x509CertificateGen.sh `__ (when building from linux).jÆj*ªjÎj·£jÐjõjÒ}rþ«(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÀjÝhjÞ]rÿ«(jçXyTo disable/change the level of JTAG access on HS devices, update the value of the debugType field in the signing scripts r¬…�r¬}r¬(jÅXyTo disable/change the level of JTAG access on HS devices, update the value of the debugType field in the signing scripts jÆjü«ubjû)�r¬}r¬(jÅX…`build/makerules/x509template.txt `__jÒ}r¬(UnameX build/makerules/x509template.txtjX^http://git.ti.com/cgit/processor-sdk/pdk/tree/packages/ti/build/makerules/x509template.txt#n74j×]jÖ]jÔ]jÕ]jÚ]ujÆjü«jÞ]r¬jçX build/makerules/x509template.txtr¬…�r¬}r ¬(jÅUjÆj¬ubajÐjÿubjçX" (when building from windows) and r ¬…�r ¬}r ¬(jÅX" (when building from windows) and jÆjü«ubjû)�r ¬}r¬(jÅX�`build/makerules/x509CertificateGen.sh `__jÒ}r¬(UnameX%build/makerules/x509CertificateGen.shjXdhttp://git.ti.com/cgit/processor-sdk/pdk/tree/packages/ti/build/makerules/x509CertificateGen.sh#n513j×]jÖ]jÔ]jÕ]jÚ]ujÆjü«jÞ]r¬jçX%build/makerules/x509CertificateGen.shr¬…�r¬}r¬(jÅUjÆj ¬ubajÐjÿubjçX (when building from linux).r¬…�r¬}r¬(jÅX (when building from linux).jÆjü«ubeubjò)�r¬}r¬(jÅXValid values arer¬jÆj*ªjÎj·£jÐjõjÒ}r¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÆjÝhjÞ]r¬jçXValid values arer¬…�r¬}r¬(jÅj¬jÆj¬ubaubjt)�r¬}r ¬(jÅUjÆj*ªjÎj·£jÐjwjÒ}r!¬(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMÈjÝhjÞ]r"¬(j{)�r#¬}r$¬(jÅX>0 : Disable all JTAG access (most secure and most restrictive)r%¬jÆj¬jÎj·£jÐjjÒ}r&¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r'¬jò)�r(¬}r)¬(jÅj%¬jÆj#¬jÎj·£jÐjõjÒ}r*¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÈjÞ]r+¬jçX>0 : Disable all JTAG access (most secure and most restrictive)r,¬…�r-¬}r.¬(jÅj%¬jÆj(¬ubaubaubj{)�r/¬}r0¬(jÅX:1 : Use device defaults (most secure and most restrictive)r1¬jÆj¬jÎj·£jÐjjÒ}r2¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r3¬jò)�r4¬}r5¬(jÅj1¬jÆj/¬jÎj·£jÐjõjÒ}r6¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÉjÞ]r7¬jçX:1 : Use device defaults (most secure and most restrictive)r8¬…�r9¬}r:¬(jÅj1¬jÆj4¬ubaubaubj{)�r;¬}r<¬(jÅXj2 : Allow debug of non-secure code, when the CPU is running in secure mode, JTAG connectivity will be lostr=¬jÆj¬jÎj·£jÐjjÒ}r>¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r?¬jò)�r@¬}rA¬(jÅj=¬jÆj;¬jÎj·£jÐjõjÒ}rB¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÊjÞ]rC¬jçXj2 : Allow debug of non-secure code, when the CPU is running in secure mode, JTAG connectivity will be lostrD¬…�rE¬}rF¬(jÅj=¬jÆj@¬ubaubaubj{)�rG¬}rH¬(jÅXo4 : Allow debug of both secure and non-secure code (least secure and least restrictive). This is the default. jÆj¬jÎj·£jÐjjÒ}rI¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rJ¬jò)�rK¬}rL¬(jÅXm4 : Allow debug of both secure and non-secure code (least secure and least restrictive). This is the default.rM¬jÆjG¬jÎj·£jÐjõjÒ}rN¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMËjÞ]rO¬jçXm4 : Allow debug of both secure and non-secure code (least secure and least restrictive). This is the default.rP¬…�rQ¬}rR¬(jÅjM¬jÆjK¬ubaubaubeubj)�rS¬}rT¬(jÅXjÆj*ªjÎj·£jÐjjÒ}rU¬(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÎjÝhjÞ]rV¬jçXrW¬…�rX¬}rY¬(jÅUjÆjS¬ubaubj)�rZ¬}r[¬(jÅX".. _am655x-compiling-apps-for-sbl:jÆj*ªjÎj·£jÐj jÒ}r\¬(j×]jÖ]jÔ]jÕ]jÚ]jUam655x-compiling-apps-for-sblr]¬ujÜM¤'jÝhjÞ]ubjò)�r^¬}r_¬(jÅX-**Compiling apps that can be loaded by SBL:**r`¬jÆj*ªjÎj·£j¦}ra¬hvjZ¬sjÐjõjÒ}rb¬(jÔ]jÕ]jÖ]j×]rc¬j]¬ajÚ]rd¬hvaujÜMÔjÝhj"¦}re¬j]¬jZ¬sjÞ]rf¬jÚ)�rg¬}rh¬(jÅj`¬jÒ}ri¬(jÔ]jÕ]jÖ]j×]jÚ]ujÆj^¬jÞ]rj¬jçX)Compiling apps that can be loaded by SBL:rk¬…�rl¬}rm¬(jÅUjÆjg¬ubajÐjâubaubjò)�rn¬}ro¬(jÅX**Memory Map Considerations**rp¬jÆj*ªjÎj·£jÐjõjÒ}rq¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÖjÝhjÞ]rr¬jÚ)�rs¬}rt¬(jÅjp¬jÒ}ru¬(jÔ]jÕ]jÖ]j×]jÚ]ujÆjn¬jÞ]rv¬jçXMemory Map Considerationsrw¬…�rx¬}ry¬(jÅUjÆjs¬ubajÐjâubaubjò)�rz¬}r{¬(jÅX±Applications that the SBL loads must comply with the am655x-sbl-memory-usage_. In the application's linker command file, care must be taken to not use the first 0x100 bytes of any R5 MCU's ATCM memory and SBL reserved memory from 0x41C00100 to 0x41C3E000. If the applications are signed, no loadable sections must be placed in the SBL scratch memory area. The scratch memory can be used at application runtime for stacks, heaps, etc.jÆj*ªjÎj·£jÐjõjÒ}r|¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMØjÝhjÞ]r}¬(jçX5Applications that the SBL loads must comply with the r~¬…�r¬}r€¬(jÅX5Applications that the SBL loads must comply with the jÆjz¬ubjû)�r�¬}r‚¬(jÅXam655x-sbl-memory-usage_jþKjÆjz¬jÐjÿjÒ}rƒ¬(UnameXam655x-sbl-memory-usager„¬j×]jÖ]jÔ]jÕ]jÚ]jj5¦ujÞ]r…¬jçXam655x-sbl-memory-usager†¬…�r‡¬}rˆ¬(jÅUjÆj�¬ubaubjçXd. In the application's linker command file, care must be taken to not use the first 0x100 bytes of any R5 MCU's ATCM memory and SBL reserved memory from 0x41C00100 to 0x41C3E000. If the applications are signed, no loadable sections must be placed in the SBL scratch memory area. The scratch memory can be used at application runtime for stacks, heaps, etc.r‰¬…�rЬ}r‹¬(jÅXd. In the application's linker command file, care must be taken to not use the first 0x100 bytes of any R5 MCU's ATCM memory and SBL reserved memory from 0x41C00100 to 0x41C3E000. If the applications are signed, no loadable sections must be placed in the SBL scratch memory area. The scratch memory can be used at application runtime for stacks, heaps, etc.jÆjz¬ubeubj)�rŒ¬}r�¬(jÅXh
jÆj*ªjÎj·£jÐjjÒ}rެ(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMßjÝhjÞ]r�¬jçXh
r�¬…�r‘¬}r’¬(jÅUjÆjŒ¬ubaubjò)�r“¬}r”¬(jÅX**NOTE**r•¬jÆj*ªjÎj·£jÐjõjÒ}r–¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMäjÝhjÞ]r—¬jÚ)�r˜¬}r™¬(jÅj•¬jÒ}rš¬(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“¬jÞ]r›¬jçXNOTErœ¬…�r�¬}rž¬(jÅUjÆj˜¬ubajÐjâubaubjt)�rŸ¬}r ¬(jÅUjÆj*ªjÎj·£jÐjwjÒ}r¡¬(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMæjÝhjÞ]r¢¬j{)�r£¬}r¤¬(jÅXäThe local address 0x0 of the MPU is not accessible from the MCU, so any MPU linker command file must not specify any loadable sections in that memory region. The SBL will not be able to access that memory to load code or data. jÆjŸ¬jÎj·£jÐjjÒ}r¥¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¦¬jò)�r§¬}r¨¬(jÅXâThe local address 0x0 of the MPU is not accessible from the MCU, so any MPU linker command file must not specify any loadable sections in that memory region. The SBL will not be able to access that memory to load code or data.r©¬jÆj£¬jÎj·£jÐjõjÒ}rª¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMæjÞ]r«¬jçXâThe local address 0x0 of the MPU is not accessible from the MCU, so any MPU linker command file must not specify any loadable sections in that memory region. The SBL will not be able to access that memory to load code or data.r¬¬…�r­¬}r®¬(jÅj©¬jÆj§¬ubaubaubaubj)�r¯¬}r°¬(jÅX
jÆj*ªjÎj·£jÐjjÒ}r±¬(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMëjÝhjÞ]r²¬jçX
r³¬…�r´¬}rµ¬(jÅUjÆj¯¬ubaubjò)�r¶¬}r·¬(jÅX4**Converting ELF executables to SBL loadable image**r¸¬jÆj*ªjÎj·£jÐjõjÒ}r¹¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMïjÝhjÞ]rº¬jÚ)�r»¬}r¼¬(jÅj¸¬jÒ}r½¬(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¶¬jÞ]r¾¬jçX0Converting ELF executables to SBL loadable imager¿¬…�rÀ¬}rÁ¬(jÅUjÆj»¬ubajÐjâubaubjò)�r¬}rì(jÅX~Depending on the usecase, an ELF application executable can be converted into an image that can be loaded by SBL in many ways.rĬjÆj*ªjÎj·£jÐjõjÒ}rŬ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMñjÝhjÞ]rƬjçX~Depending on the usecase, an ELF application executable can be converted into an image that can be loaded by SBL in many ways.rǬ…�rȬ}rɬ(jÅjĬjÆj¬ubaubjt)�rʬ}rˬ(jÅUjÆj*ªjÎj·£jÐjwjÒ}r̬(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMôjÝhjÞ]rͬ(j{)�rά}rϬ(jÅX”**Using CCS**: Any project created using the pdkProjectCreate scripts will automatically generate a SBL loadable app, as part of a post-build step. jÆjʬjÎj·£jÐjjÒ}rЬ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rѬjò)�rÒ¬}rÓ¬(jÅX“**Using CCS**: Any project created using the pdkProjectCreate scripts will automatically generate a SBL loadable app, as part of a post-build step.jÆjάjÎj·£jÐjõjÒ}rÔ¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜMôjÞ]rÕ¬(jÚ)�rÖ¬}r׬(jÅX **Using CCS**jÒ}rج(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÒ¬jÞ]rÙ¬jçX Using CCSrÚ¬…�rÛ¬}rܬ(jÅUjÆjÖ¬ubajÐjâubjçX†: Any project created using the pdkProjectCreate scripts will automatically generate a SBL loadable app, as part of a post-build step.rݬ…�rÞ¬}r߬(jÅX†: Any project created using the pdkProjectCreate scripts will automatically generate a SBL loadable app, as part of a post-build step.jÆjÒ¬ubeubaubj{)�rà¬}rá¬(jÅXH**Using makefiles**: Add the following lines to the component's .mk filerâ¬jÆjʬjÎj·£jÐjjÒ}rã¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rä¬jò)�rå¬}ræ¬(jÅjâ¬jÆjà¬jÎj·£jÐjõjÒ}rç¬(jÔ]jÕ]jÖ]j×]jÚ]ujÜM÷jÞ]rè¬(jÚ)�ré¬}rê¬(jÅX**Using makefiles**jÒ}rë¬(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå¬jÞ]rì¬jçXUsing makefilesrí¬…�rî¬}rï¬(jÅUjÆjé¬ubajÐjâubjçX5: Add the following lines to the component's .mk filerð¬…�rñ¬}rò¬(jÅX5: Add the following lines to the component's .mk filejÆjå¬ubeubaubeubj)�ró¬}rô¬(jÅX>app_name_SBL_APPIMAGEGEN = yes export app_name_SBL_APPIMAGEGENjÆj*ªjÎj·£jÐjjÒ}rõ¬(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÌ'jÝhjÞ]rö¬jçX>app_name_SBL_APPIMAGEGEN = yes export app_name_SBL_APPIMAGEGENr÷¬…�rø¬}rù¬(jÅUjÆjó¬ubaubjt)�rú¬}rû¬(jÅUjÆj*ªjÎj·£jÐjwjÒ}rü¬(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMýjÝhjÞ]rý¬j{)�rþ¬}rÿ¬(jÅX>**Existing ELF executable**: By calling the K3ImageGen script.r­jÆjú¬jÎj·£jÐjjÒ}r­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r­jò)�r­}r­(jÅj­jÆjþ¬jÎj·£jÐjõjÒ}r­(jÔ]jÕ]jÖ]j×]jÚ]ujÜMýjÞ]r­(jÚ)�r­}r­(jÅX**Existing ELF executable**jÒ}r ­(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­jÞ]r ­jçXExisting ELF executabler ­…�r ­}r ­(jÅUjÆj­ubajÐjâubjçX#: By calling the K3ImageGen script.r­…�r­}r­(jÅX#: By calling the K3ImageGen script.jÆj­ubeubaubaubj)�r­}r­(jÅXãLinux Syntax: K3ImageGen.sh <.out> Example: cd /pdk_*/packages/ti/boot/sbl/example/ampMulticoreApp/binary/am65xx_evm/ K3ImageGen.sh 4 sbl_baremetal_boot_test_am65xx_evm_mcu1_0TestApp_release.xer5fjÆj*ªjÎj·£jÐjjÒ}r­(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÒ'jÝhjÞ]r­jçXãLinux Syntax: K3ImageGen.sh <.out> Example: cd /pdk_*/packages/ti/boot/sbl/example/ampMulticoreApp/binary/am65xx_evm/ K3ImageGen.sh 4 sbl_baremetal_boot_test_am65xx_evm_mcu1_0TestApp_release.xer5fr­…�r­}r­(jÅUjÆj­ubaubj)�r­}r­(jÅXëWindows Syntax: K3ImageGen.bat " <.out>" Example: cd \pdk_*\packages\ti\boot\sbl\example\ampMulticoreApp\binary\am65xx_evm\ K3ImageGen.bat "4 sbl_baremetal_boot_test_am65xx_evm_mcu1_0TestApp_release.xer5f"jÆj*ªjÎj·£jÐjjÒ}r­(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÙ'jÝhjÞ]r­jçXëWindows Syntax: K3ImageGen.bat " <.out>" Example: cd \pdk_*\packages\ti\boot\sbl\example\ampMulticoreApp\binary\am65xx_evm\ K3ImageGen.bat "4 sbl_baremetal_boot_test_am65xx_evm_mcu1_0TestApp_release.xer5f"r­…�r­}r­(jÅUjÆj­ubaubjt)�r­}r ­(jÅUjÆj*ªjÎj·£jÐjwjÒ}r!­(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM jÝhjÞ]r"­j{)�r#­}r$­(jÅX´**Multicore Images**: Multicore images, as the name suggests, allows the SBL to load applications for multiple cores from a single image. Creating such images invloves three steps.jÆj­jÎj·£jÐjjÒ}r%­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r&­jò)�r'­}r(­(jÅX´**Multicore Images**: Multicore images, as the name suggests, allows the SBL to load applications for multiple cores from a single image. Creating such images invloves three steps.jÆj#­jÎj·£jÐjõjÒ}r)­(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r*­(jÚ)�r+­}r,­(jÅX**Multicore Images**jÒ}r-­(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'­jÞ]r.­jçXMulticore Imagesr/­…�r0­}r1­(jÅUjÆj+­ubajÐjâubjçX : Multicore images, as the name suggests, allows the SBL to load applications for multiple cores from a single image. Creating such images invloves three steps.r2­…�r3­}r4­(jÅX : Multicore images, as the name suggests, allows the SBL to load applications for multiple cores from a single image. Creating such images invloves three steps.jÆj'­ubeubaubaubj )�r5­}r6­(jÅUjÆj*ªjÎj·£jÐj jÒ}r7­(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMjÝhjÞ]r8­(j{)�r9­}r:­(jÅX=Generate the ELF application executables for individual coresr;­jÆj5­jÎj·£jÐjjÒ}r<­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r=­jò)�r>­}r?­(jÅj;­jÆj9­jÎj·£jÐjõjÒ}r@­(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rA­jçX=Generate the ELF application executables for individual coresrB­…�rC­}rD­(jÅj;­jÆj>­ubaubaubj{)�rE­}rF­(jÅX:Convert the ELF executables into intermediate .rprc imagesrG­jÆj5­jÎj·£jÐjjÒ}rH­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rI­jò)�rJ­}rK­(jÅjG­jÆjE­jÎj·£jÐjõjÒ}rL­(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rM­jçX:Convert the ELF executables into intermediate .rprc imagesrN­…�rO­}rP­(jÅjG­jÆjJ­ubaubaubj{)�rQ­}rR­(jÅXPCombine the .rprc images of individual cores to create a single multicore image jÆj5­jÎj·£jÐjjÒ}rS­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rT­jò)�rU­}rV­(jÅXOCombine the .rprc images of individual cores to create a single multicore imagerW­jÆjQ­jÎj·£jÐjõjÒ}rX­(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rY­jçXOCombine the .rprc images of individual cores to create a single multicore imagerZ­…�r[­}r\­(jÅjW­jÆjU­ubaubaubeubjò)�r]­}r^­(jÅXXTo covert any .out into the intermediate .rprc format, execute the following commands ::jÆj*ªjÎj·£jÐjõjÒ}r_­(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r`­jçXUTo covert any .out into the intermediate .rprc format, execute the following commandsra­…�rb­}rc­(jÅXUTo covert any .out into the intermediate .rprc format, execute the following commandsjÆj]­ubaubj)�rd­}re­(jÅX`For Linux: mono /packages/ti/boot/sbl/tools/out2rprc/bin/out2rprc.exe input.out output.rprcjÆj*ªjÎj·£jÐjjÒ}rf­(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMé'jÝhjÞ]rg­jçX`For Linux: mono /packages/ti/boot/sbl/tools/out2rprc/bin/out2rprc.exe input.out output.rprcrh­…�ri­}rj­(jÅUjÆjd­ubaubj)�rk­}rl­(jÅX]For Windows: \packages\ti\boot\sbl\tools\out2rprc\bin\out2rprc.exe input.out output.rprcjÆj*ªjÎj·£jÐjjÒ}rm­(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMí'jÝhjÞ]rn­jçX]For Windows: \packages\ti\boot\sbl\tools\out2rprc\bin\out2rprc.exe input.out output.rprcro­…�rp­}rq­(jÅUjÆjk­ubaubjò)�rr­}rs­(jÅXXTo stitch multiple .rprc images into a multicore image, execute the following command ::jÆj*ªjÎj·£jÐjõjÒ}rt­(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]ru­jçXUTo stitch multiple .rprc images into a multicore image, execute the following commandrv­…�rw­}rx­(jÅXUTo stitch multiple .rprc images into a multicore image, execute the following commandjÆjr­ubaubj)�ry­}rz­(jÅXšFor Linux: /packages/ti/boot/sbl/tools/multicoreImageGen/bin/MulticoreImageGen LE 55 output.appimage core_1.rprc core_2.rprcjÆj*ªjÎj·£jÐjjÒ}r{­(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMó'jÝhjÞ]r|­jçXšFor Linux: /packages/ti/boot/sbl/tools/multicoreImageGen/bin/MulticoreImageGen LE 55 output.appimage core_1.rprc core_2.rprcr}­…�r~­}r­(jÅUjÆjy­ubaubj)�r€­}r�­(jÅX For Windows: /packages/ti/boot/sbl/tools/multicoreImageGen/bin/MulticoreImageGen.exe LE 55 output.appimage core_1.rprc core_2.rprcjÆj*ªjÎj·£jÐjjÒ}r‚­(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMø'jÝhjÞ]rƒ­jçX For Windows: /packages/ti/boot/sbl/tools/multicoreImageGen/bin/MulticoreImageGen.exe LE 55 output.appimage core_1.rprc core_2.rprcr„­…�r…­}r†­(jÅUjÆj€­ubaubj)�r‡­}rˆ­(jÅXh
jÆj*ªjÎj·£jÐjjÒ}r‰­(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM)jÝhjÞ]rŠ­jçXh
r‹­…�rŒ­}r�­(jÅUjÆj‡­ubaubjò)�rŽ­}r�­(jÅX**NOTE**r�­jÆj*ªjÎj·£jÐjõjÒ}r‘­(jÔ]jÕ]jÖ]j×]jÚ]ujÜM.jÝhjÞ]r’­jÚ)�r“­}r”­(jÅj�­jÒ}r•­(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽ­jÞ]r–­jçXNOTEr—­…�r˜­}r™­(jÅUjÆj“­ubajÐjâubaubjt)�rš­}r›­(jÅUjÆj*ªjÎj·£jÐjwjÒ}rœ­(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM0jÝhjÞ]r�­(j{)�rž­}rŸ­(jÅXZThe linux host environment needs to have `mono `__ installed.r ­jÆjš­jÎj·£jÐjjÒ}r¡­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¢­jò)�r£­}r¤­(jÅj ­jÆjž­jÎj·£jÐjõjÒ}r¥­(jÔ]jÕ]jÖ]j×]jÚ]ujÜM0jÞ]r¦­(jçX)The linux host environment needs to have r§­…�r¨­}r©­(jÅX)The linux host environment needs to have jÆj£­ubjû)�rª­}r«­(jÅX&`mono `__jÒ}r¬­(UnameXmonojXhttp://www.mono-project.comj×]jÖ]jÔ]jÕ]jÚ]ujÆj£­jÞ]r­­jçXmonor®­…�r¯­}r°­(jÅUjÆjª­ubajÐjÿubjçX installed.r±­…�r²­}r³­(jÅX installed.jÆj£­ubeubaubj{)�r´­}rµ­(jÅXÊThe values used for the Core ID and Device ID can be found in `sbl/soc/k3/ sbl_slave_core_boot.h `__jÆjš­jÎj·£jÐjjÒ}r¶­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r·­jò)�r¸­}r¹­(jÅXÊThe values used for the Core ID and Device ID can be found in `sbl/soc/k3/ sbl_slave_core_boot.h `__jÆj´­jÎj·£jÐjõjÒ}rº­(jÔ]jÕ]jÖ]j×]jÚ]ujÜM1jÞ]r»­(jçX>The values used for the Core ID and Device ID can be found in r¼­…�r½­}r¾­(jÅX>The values used for the Core ID and Device ID can be found in jÆj¸­ubjû)�r¿­}rÀ­(jÅXŒ`sbl/soc/k3/ sbl_slave_core_boot.h `__jÒ}rÁ­(UnameX!sbl/soc/k3/ sbl_slave_core_boot.hjXdhttps://git.ti.com/cgit/processor-sdk/pdk/tree/packages/ti/boot/sbl/soc/k3/sbl_slave_core_boot.h#n51j×]jÖ]jÔ]jÕ]jÚ]ujÆj¸­jÞ]r­jçX!sbl/soc/k3/ sbl_slave_core_boot.hrí…�rÄ­}rÅ­(jÅUjÆj¿­ubajÐjÿubeubaubj{)�rÆ­}rÇ­(jÅXITo simply load an ELF without executing it, use CoreID value ONLY_LOAD_IDrÈ­jÆjš­jÎj·£jÐjjÒ}rÉ­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÊ­jò)�rË­}rÌ­(jÅjÈ­jÆjÆ­jÎj·£jÐjõjÒ}rÍ­(jÔ]jÕ]jÖ]j×]jÚ]ujÜM3jÞ]rέjçXITo simply load an ELF without executing it, use CoreID value ONLY_LOAD_IDrÏ­…�rЭ}rÑ­(jÅjÈ­jÆjË­ubaubaubj{)�rÒ­}rÓ­(jÅXUIf an image for MCU_1 core is provided, the SBL will attempt to switch to split mode.jÆjš­jÎj·£jÐjjÒ}rÔ­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÕ­jò)�rÖ­}r×­(jÅXUIf an image for MCU_1 core is provided, the SBL will attempt to switch to split mode.rØ­jÆjÒ­jÎj·£jÐjõjÒ}rÙ­(jÔ]jÕ]jÖ]j×]jÚ]ujÜM4jÞ]rÚ­jçXUIf an image for MCU_1 core is provided, the SBL will attempt to switch to split mode.rÛ­…�rÜ­}rÝ­(jÅjØ­jÆjÖ­ubaubaubj{)�rÞ­}rß­(jÅX^If only an image for MCU_0 is provided, the SBL will not change the mode of the MCU subsystem.jÆjš­jÎj·£jÐjjÒ}rà­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rá­jò)�râ­}rã­(jÅX^If only an image for MCU_0 is provided, the SBL will not change the mode of the MCU subsystem.rä­jÆjÞ­jÎj·£jÐjõjÒ}rå­(jÔ]jÕ]jÖ]j×]jÚ]ujÜM6jÞ]ræ­jçX^If only an image for MCU_0 is provided, the SBL will not change the mode of the MCU subsystem.rç­…�rè­}ré­(jÅjä­jÆjâ­ubaubaubj{)�rê­}rë­(jÅXPTo enable SMP on the MPU, ie, to get multiple MPUs execute from a single binary from the same address, use one of the following core_ids - MPU1_SMP_ID: The same app binary runs on both cores in MPU cluster 1 - MPU2_SMP_ID: The same app binary runs on both cores in MPU cluster 2 - MPU_SMP_ID: The same app binary runs all the MPUs jÆjš­jÎNjÐjjÒ}rì­(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rí­(jò)�rî­}rï­(jÅXˆTo enable SMP on the MPU, ie, to get multiple MPUs execute from a single binary from the same address, use one of the following core_idsrð­jÆjê­jÎj·£jÐjõjÒ}rñ­(jÔ]jÕ]jÖ]j×]jÚ]ujÜM8jÞ]rò­jçXˆTo enable SMP on the MPU, ie, to get multiple MPUs execute from a single binary from the same address, use one of the following core_idsró­…�rô­}rõ­(jÅjð­jÆjî­ubaubjt)�rö­}r÷­(jÅUjÒ}rø­(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjê­jÞ]rù­(j{)�rú­}rû­(jÅXDMPU1_SMP_ID: The same app binary runs on both cores in MPU cluster 1rü­jÒ}rý­(jÔ]jÕ]jÖ]j×]jÚ]ujÆjö­jÞ]rþ­jò)�rÿ­}r®(jÅjü­jÆjú­jÎj·£jÐjõjÒ}r®(jÔ]jÕ]jÖ]j×]jÚ]ujÜM;jÞ]r®jçXDMPU1_SMP_ID: The same app binary runs on both cores in MPU cluster 1r®…�r®}r®(jÅjü­jÆjÿ­ubaubajÐjubj{)�r®}r®(jÅXDMPU2_SMP_ID: The same app binary runs on both cores in MPU cluster 2r®jÒ}r ®(jÔ]jÕ]jÖ]j×]jÚ]ujÆjö­jÞ]r ®jò)�r ®}r ®(jÅj®jÆj®jÎj·£jÐjõjÒ}r ®(jÔ]jÕ]jÖ]j×]jÚ]ujÜM<jÞ]r®jçXDMPU2_SMP_ID: The same app binary runs on both cores in MPU cluster 2r®…�r®}r®(jÅj®jÆj ®ubaubajÐjubj{)�r®}r®(jÅX3MPU_SMP_ID: The same app binary runs all the MPUs jÒ}r®(jÔ]jÕ]jÖ]j×]jÚ]ujÆjö­jÞ]r®jò)�r®}r®(jÅX2MPU_SMP_ID: The same app binary runs all the MPUsr®jÆj®jÎj·£jÐjõjÒ}r®(jÔ]jÕ]jÖ]j×]jÚ]ujÜM=jÞ]r®jçX2MPU_SMP_ID: The same app binary runs all the MPUsr®…�r®}r®(jÅj®jÆj®ubaubajÐjubejÐjwubeubeubj)�r®}r®(jÅX
jÆj*ªjÎj·£jÐjjÒ}r ®(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM?jÝhjÞ]r!®jçX
r"®…�r#®}r$®(jÅUjÆj®ubaubjò)�r%®}r&®(jÅX:**Converting ELF executables to executable binary images**r'®jÆj*ªjÎj·£jÐjõjÒ}r(®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMDjÝhjÞ]r)®jÚ)�r*®}r+®(jÅj'®jÒ}r,®(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%®jÞ]r-®jçX6Converting ELF executables to executable binary imagesr.®…�r/®}r0®(jÅUjÆj*®ubajÐjâubaubjò)�r1®}r2®(jÅXSometimes, for exteremely constrained and specialized usecases like ultra-low-latency boot or DDR-less systems, an ELF application executable can be converted into a binary image that can executed directly from the boot media, without loading into internal memory.r3®jÆj*ªjÎj·£jÐjõjÒ}r4®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMFjÝhjÞ]r5®jçXSometimes, for exteremely constrained and specialized usecases like ultra-low-latency boot or DDR-less systems, an ELF application executable can be converted into a binary image that can executed directly from the boot media, without loading into internal memory.r6®…�r7®}r8®(jÅj3®jÆj1®ubaubjò)�r9®}r:®(jÅXÂAs internal memory is always accessible, this mode of execution allows some otherwise mandatory steps steps like DDR initlization or clock initialization to be done later or skipped altogether.r;®jÆj*ªjÎj·£jÐjõjÒ}r<®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMKjÝhjÞ]r=®jçXÂAs internal memory is always accessible, this mode of execution allows some otherwise mandatory steps steps like DDR initlization or clock initialization to be done later or skipped altogether.r>®…�r?®}r@®(jÅj;®jÆj9®ubaubjò)�rA®}rB®(jÅXHWorking with such highly contrained systems require some special steps..rC®jÆj*ªjÎj·£jÐjõjÒ}rD®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMOjÝhjÞ]rE®jçXHWorking with such highly contrained systems require some special steps..rF®…�rG®}rH®(jÅjC®jÆjA®ubaubjt)�rI®}rJ®(jÅUjÆj*ªjÎj·£jÐjwjÒ}rK®(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMQjÝhjÞ]rL®(j{)�rM®}rN®(jÅXAMake sure that the boot media supports eXecuting In Place (XIP). jÆjI®jÎj·£jÐjjÒ}rO®(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rP®jò)�rQ®}rR®(jÅX@Make sure that the boot media supports eXecuting In Place (XIP).rS®jÆjM®jÎj·£jÐjõjÒ}rT®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMQjÞ]rU®jçX@Make sure that the boot media supports eXecuting In Place (XIP).rV®…�rW®}rX®(jÅjS®jÆjQ®ubaubaubj{)�rY®}rZ®(jÅXiUse the custom SBL build to select the build options to build a SBL that meets the usecase requirements. jÆjI®jÎj·£jÐjjÒ}r[®(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r\®jò)�r]®}r^®(jÅXhUse the custom SBL build to select the build options to build a SBL that meets the usecase requirements.r_®jÆjY®jÎj·£jÐjõjÒ}r`®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÞ]ra®jçXhUse the custom SBL build to select the build options to build a SBL that meets the usecase requirements.rb®…�rc®}rd®(jÅj_®jÆj]®ubaubaubj{)�re®}rf®(jÅX’In the linker command file for the application, make sure that all the data sections, stacks, heaps and globals are in internal read/write memory jÆjI®jÎj·£jÐjjÒ}rg®(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rh®jò)�ri®}rj®(jÅX‘In the linker command file for the application, make sure that all the data sections, stacks, heaps and globals are in internal read/write memoryrk®jÆje®jÎj·£jÐjõjÒ}rl®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMVjÞ]rm®jçX‘In the linker command file for the application, make sure that all the data sections, stacks, heaps and globals are in internal read/write memoryrn®…�ro®}rp®(jÅjk®jÆji®ubaubaubj{)�rq®}rr®(jÅXâIn the linker command file for the application, make sure that there are no holes in the loadable sections. Such non-contiguous sections can drastically blow up the binary image size, when comapred to the ELF executable size. jÆjI®jÎj·£jÐjjÒ}rs®(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rt®jò)�ru®}rv®(jÅXáIn the linker command file for the application, make sure that there are no holes in the loadable sections. Such non-contiguous sections can drastically blow up the binary image size, when comapred to the ELF executable size.rw®jÆjq®jÎj·£jÐjõjÒ}rx®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMYjÞ]ry®jçXáIn the linker command file for the application, make sure that there are no holes in the loadable sections. Such non-contiguous sections can drastically blow up the binary image size, when comapred to the ELF executable size.rz®…�r{®}r|®(jÅjw®jÆju®ubaubaubj{)�r}®}r~®(jÅXzTo generate an executable binary image from the applications ELF file, add the following lines to the component's .mk filejÆjI®jÎj·£jÐjjÒ}r®(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r€®jò)�r�®}r‚®(jÅXzTo generate an executable binary image from the applications ELF file, add the following lines to the component's .mk filerƒ®jÆj}®jÎj·£jÐjõjÒ}r„®(jÔ]jÕ]jÖ]j×]jÚ]ujÜM]jÞ]r…®jçXzTo generate an executable binary image from the applications ELF file, add the following lines to the component's .mk filer†®…�r‡®}rˆ®(jÅjƒ®jÆj�®ubaubaubeubj)�r‰®}rŠ®(jÅXFapp_name_SBL_APP_BINIMAGEGEN = yes export app_name_SBL_APP_BINIMAGEGENjÆj*ªjÎj·£jÐjjÒ}r‹®(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM3(jÝhjÞ]rŒ®jçXFapp_name_SBL_APP_BINIMAGEGEN = yes export app_name_SBL_APP_BINIMAGEGENr�®…�rŽ®}r�®(jÅUjÆj‰®ubaubeubjÇ)�r�®}r‘®(jÅUjÆj¥£jÎj·£jÐjÑjÒ}r’®(jÔ]jÕ]jÖ]j×]r“®Utesting-the-sblr”®ajÚ]r•®h¦aujÜMfjÝhjÞ]r–®(jà)�r—®}r˜®(jÅXTesting the SBLr™®jÆj�®jÎj·£jÐjäjÒ}rš®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMfjÝhjÞ]r›®jçXTesting the SBLrœ®…�r�®}rž®(jÅj™®jÆj—®ubaubjò)�rŸ®}r ®(jÅX!SBL provides test applications to demonstrate booting the A53 and R5 cores in both symmetric/lock step & asymmetric/split-mode and other features. The multicore sample application prints a message on the UART for each core. The functionality the different tests exercises are listed below.r¡®jÆj�®jÎj·£jÐjõjÒ}r¢®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMhjÝhjÞ]r£®jçX!SBL provides test applications to demonstrate booting the A53 and R5 cores in both symmetric/lock step & asymmetric/split-mode and other features. The multicore sample application prints a message on the UART for each core. The functionality the different tests exercises are listed below.r¤®…�r¥®}r¦®(jÅj¡®jÆjŸ®ubaubjt)�r§®}r¨®(jÅUjÆj�®jÎj·£jÐjwjÒ}r©®(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMmjÝhjÞ]rª®(j{)�r«®}r¬®(jÅX™sbl_*_boot_test_*_all_coresTestApp_release: A single multicore boot test case that boots each core in the SoC with a separate app. Also tests DDR loadingjÆj§®jÎj·£jÐjjÒ}r­®(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r®®jò)�r¯®}r°®(jÅX™sbl_*_boot_test_*_all_coresTestApp_release: A single multicore boot test case that boots each core in the SoC with a separate app. Also tests DDR loadingr±®jÆj«®jÎj·£jÐjõjÒ}r²®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMmjÞ]r³®jçX™sbl_*_boot_test_*_all_coresTestApp_release: A single multicore boot test case that boots each core in the SoC with a separate app. Also tests DDR loadingr´®…�rµ®}r¶®(jÅj±®jÆj¯®ubaubaubj{)�r·®}r¸®(jÅXusbl_*_boot_test_*_xxxx_xTestApp_release.appimage: A simple testcase for booting core xxxx_x (eg. MCU1_0, MPU2_0 etc.)jÆj§®jÎj·£jÐjjÒ}r¹®(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rº®jò)�r»®}r¼®(jÅXusbl_*_boot_test_*_xxxx_xTestApp_release.appimage: A simple testcase for booting core xxxx_x (eg. MCU1_0, MPU2_0 etc.)r½®jÆj·®jÎj·£jÐjõjÒ}r¾®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMojÞ]r¿®jçXusbl_*_boot_test_*_xxxx_xTestApp_release.appimage: A simple testcase for booting core xxxx_x (eg. MCU1_0, MPU2_0 etc.)rÀ®…�rÁ®}r®(jÅj½®jÆj»®ubaubaubj{)�rî}rÄ®(jÅXñsbl_*_smp_test_*_all_coresTestApp_release.appimage: A single SMP boot test case that boots MCUs in lock step. The MCU app then uses the SBL lib to boot all the MPUs in SMP mode, ie, all the MPUs execute a single binary from the same address.jÆj§®jÎj·£jÐjjÒ}rÅ®(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÆ®jò)�rÇ®}rÈ®(jÅXñsbl_*_smp_test_*_all_coresTestApp_release.appimage: A single SMP boot test case that boots MCUs in lock step. The MCU app then uses the SBL lib to boot all the MPUs in SMP mode, ie, all the MPUs execute a single binary from the same address.rÉ®jÆjîjÎj·£jÐjõjÒ}rÊ®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMqjÞ]rË®jçXñsbl_*_smp_test_*_all_coresTestApp_release.appimage: A single SMP boot test case that boots MCUs in lock step. The MCU app then uses the SBL lib to boot all the MPUs in SMP mode, ie, all the MPUs execute a single binary from the same address.rÌ®…�rÍ®}rή(jÅjÉ®jÆjÇ®ubaubaubj{)�rÏ®}rЮ(jÅXõsbl_baremetal_boot_perf_*_mcu1_0TestApp_release.appimage: A single MCU1_0 test case that can be used to measure the effect of enabling/disabling the perf. tuning knobs in the SBL for OSPI boot. The size of the test case can be easily modified by changing the values of .space directives in `sbl/example/k3MulticoreApp/ sbl_boot_perf_r5.asm `__ to profile for different app image sizes.jÆj§®jÎj·£jÐjjÒ}rÑ®(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÒ®jò)�rÓ®}rÔ®(jÅXõsbl_baremetal_boot_perf_*_mcu1_0TestApp_release.appimage: A single MCU1_0 test case that can be used to measure the effect of enabling/disabling the perf. tuning knobs in the SBL for OSPI boot. The size of the test case can be easily modified by changing the values of .space directives in `sbl/example/k3MulticoreApp/ sbl_boot_perf_r5.asm `__ to profile for different app image sizes.jÆjÏ®jÎj·£jÐjõjÒ}rÕ®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMtjÞ]rÖ®(jçX"sbl_baremetal_boot_perf_*_mcu1_0TestApp_release.appimage: A single MCU1_0 test case that can be used to measure the effect of enabling/disabling the perf. tuning knobs in the SBL for OSPI boot. The size of the test case can be easily modified by changing the values of .space directives in r×®…�rØ®}rÙ®(jÅX"sbl_baremetal_boot_perf_*_mcu1_0TestApp_release.appimage: A single MCU1_0 test case that can be used to measure the effect of enabling/disabling the perf. tuning knobs in the SBL for OSPI boot. The size of the test case can be easily modified by changing the values of .space directives in jÆjÓ®ubjû)�rÚ®}rÛ®(jÅX©`sbl/example/k3MulticoreApp/ sbl_boot_perf_r5.asm `__jÒ}rÜ®(UnameX0sbl/example/k3MulticoreApp/ sbl_boot_perf_r5.asmjXrhttp://git.ti.com/cgit/processor-sdk/pdk/tree/packages/ti/boot/sbl/example/k3MulticoreApp/sbl_boot_perf_r5.asm#n42j×]jÖ]jÔ]jÕ]jÚ]ujÆjÓ®jÞ]rÝ®jçX0sbl/example/k3MulticoreApp/ sbl_boot_perf_r5.asmrÞ®…�rß®}rà®(jÅUjÆjÚ®ubajÐjÿubjçX* to profile for different app image sizes.rá®…�râ®}rã®(jÅX* to profile for different app image sizes.jÆjÓ®ubeubaubj{)�rä®}rå®(jÅXmsbl_baremetal_boot_xip_test_*_mcu1_0TestApp_release.xer5f.bin: A testcase demonstrating booting an XIP application from OSPI flash. Please refer `sbl/build/ sbl_mcu0_boot_xip_test.mk `__ and `sbl/example/k3MulticoreApp/mcuXiplinker.lds `__ to see how to convert an existing application into an XIP application. The sbl_*_xip_entry_*.appimage works in tandem with sbl_*xip_test_*.xer5f.bin to transition the system from non-xip to xip boot, as the ROM, by default, does not support XIP from boot media. After programming the sbl and syfw, to program both sbl_*_xip_entry_*.appimage and sbl_*xip_test_*.xer5f.bin into OSPI flash, use the following uniflash commands jÆj§®jÎj·£jÐjjÒ}ræ®(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rç®jò)�rè®}ré®(jÅXlsbl_baremetal_boot_xip_test_*_mcu1_0TestApp_release.xer5f.bin: A testcase demonstrating booting an XIP application from OSPI flash. Please refer `sbl/build/ sbl_mcu0_boot_xip_test.mk `__ and `sbl/example/k3MulticoreApp/mcuXiplinker.lds `__ to see how to convert an existing application into an XIP application. The sbl_*_xip_entry_*.appimage works in tandem with sbl_*xip_test_*.xer5f.bin to transition the system from non-xip to xip boot, as the ROM, by default, does not support XIP from boot media. After programming the sbl and syfw, to program both sbl_*_xip_entry_*.appimage and sbl_*xip_test_*.xer5f.bin into OSPI flash, use the following uniflash commandsjÆjä®jÎj·£jÐjõjÒ}rê®(jÔ]jÕ]jÖ]j×]jÚ]ujÜMzjÞ]rë®(jçX‘sbl_baremetal_boot_xip_test_*_mcu1_0TestApp_release.xer5f.bin: A testcase demonstrating booting an XIP application from OSPI flash. Please refer rì®…�rí®}rî®(jÅX‘sbl_baremetal_boot_xip_test_*_mcu1_0TestApp_release.xer5f.bin: A testcase demonstrating booting an XIP application from OSPI flash. Please refer jÆjè®ubjû)�rï®}rð®(jÅX�`sbl/build/ sbl_mcu0_boot_xip_test.mk `__jÒ}rñ®(UnameX$sbl/build/ sbl_mcu0_boot_xip_test.mkjXchttps://git.ti.com/cgit/processor-sdk/pdk/tree/packages/ti/boot/sbl/build/sbl_mcu0_boot_xip_test.mkj×]jÖ]jÔ]jÕ]jÚ]ujÆjè®jÞ]rò®jçX$sbl/build/ sbl_mcu0_boot_xip_test.mkró®…�rô®}rõ®(jÅUjÆjï®ubajÐjÿubjçX and rö®…�r÷®}rø®(jÅX and jÆjè®ubjû)�rù®}rú®(jÅX�`sbl/example/k3MulticoreApp/mcuXiplinker.lds `__jÒ}rû®(UnameX+sbl/example/k3MulticoreApp/mcuXiplinker.ldsjXkhttps://git.ti.com/cgit/processor-sdk/pdk/tree/packages/ti/boot/sbl/example/k3MulticoreApp/mcuXiplinker.ldsj×]jÖ]jÔ]jÕ]jÚ]ujÆjè®jÞ]rü®jçX+sbl/example/k3MulticoreApp/mcuXiplinker.ldsrý®…�rþ®}rÿ®(jÅUjÆjù®ubajÐjÿubjçXª to see how to convert an existing application into an XIP application. The sbl_*_xip_entry_*.appimage works in tandem with sbl_*xip_test_*.xer5f.bin to transition the system from non-xip to xip boot, as the ROM, by default, does not support XIP from boot media. After programming the sbl and syfw, to program both sbl_*_xip_entry_*.appimage and sbl_*xip_test_*.xer5f.bin into OSPI flash, use the following uniflash commandsr¯…�r¯}r¯(jÅXª to see how to convert an existing application into an XIP application. The sbl_*_xip_entry_*.appimage works in tandem with sbl_*xip_test_*.xer5f.bin to transition the system from non-xip to xip boot, as the ROM, by default, does not support XIP from boot media. After programming the sbl and syfw, to program both sbl_*_xip_entry_*.appimage and sbl_*xip_test_*.xer5f.bin into OSPI flash, use the following uniflash commandsjÆjè®ubeubaubeubj)�r¯}r¯(jÅXŠFor Windows: .\dslite.bat --mode processors -c COM9 -f \packages\ti\boot\sbl\example\k3MulticoreApp\binary\am65xx\sbl_baremetal_boot_xip_entry_am65xx_evm_mcu1_0TestApp_release.appimage -d 3 -o A0000 .\dslite.bat --mode processors -c COM9 -f \packages\ti\boot\sbl\example\k3MulticoreApp\binary\am65xx\sbl_baremetal_boot_xip_test_am65xx_evm_mcu1_0TestApp_release.xer5f.bin -d 3 -o E0000jÆj�®jÎj·£jÐjjÒ}r¯(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMY(jÝhjÞ]r¯jçXŠFor Windows: .\dslite.bat --mode processors -c COM9 -f \packages\ti\boot\sbl\example\k3MulticoreApp\binary\am65xx\sbl_baremetal_boot_xip_entry_am65xx_evm_mcu1_0TestApp_release.appimage -d 3 -o A0000 .\dslite.bat --mode processors -c COM9 -f \packages\ti\boot\sbl\example\k3MulticoreApp\binary\am65xx\sbl_baremetal_boot_xip_test_am65xx_evm_mcu1_0TestApp_release.xer5f.bin -d 3 -o E0000r¯…�r¯}r ¯(jÅUjÆj¯ubaubj)�r ¯}r ¯(jÅX For Linux: sudo ./dslite.sh --mode processors -c /dev/ttyUSB1 -f /packages/ti/boot/sbl/example/k3MulticoreApp/binary/am65xx/sbl_baremetal_boot_xip_entry_am65xx_evm_mcu1_0TestApp_release.appimage -d 3 -o A0000 sudo ./dslite.sh --mode processors -c /dev/ttyUSB1 -f /packages/ti/boot/sbl/example/k3MulticoreApp/binary/am65xx/sbl_baremetal_boot_xip_test_am65xx_evm_mcu1_0TestApp_release.xer5f.bin -d 3 -o E0000jÆj�®jÎj·£jÐjjÒ}r ¯(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM`(jÝhjÞ]r ¯jçX For Linux: sudo ./dslite.sh --mode processors -c /dev/ttyUSB1 -f /packages/ti/boot/sbl/example/k3MulticoreApp/binary/am65xx/sbl_baremetal_boot_xip_entry_am65xx_evm_mcu1_0TestApp_release.appimage -d 3 -o A0000 sudo ./dslite.sh --mode processors -c /dev/ttyUSB1 -f /packages/ti/boot/sbl/example/k3MulticoreApp/binary/am65xx/sbl_baremetal_boot_xip_test_am65xx_evm_mcu1_0TestApp_release.xer5f.bin -d 3 -o E0000r¯…�r¯}r¯(jÅUjÆj ¯ubaubjò)�r¯}r¯(jÅXHAn example test log for sbl_*_boot_test_*_all_coresTestApp_release is ::jÆj�®jÎj·£jÐjõjÒ}r¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜM”jÝhjÞ]r¯jçXEAn example test log for sbl_*_boot_test_*_all_coresTestApp_release isr¯…�r¯}r¯(jÅXEAn example test log for sbl_*_boot_test_*_all_coresTestApp_release isjÆj¯ubaubj)�r¯}r¯(jÅXàSYSFW ver xx.x.x-v20xx.xx (xxx xxx) running SBL Revision: xx.xx.xx.xx (MMM DD YYYY - HH:MM:SS) MPU1_0 running MPU1_1 running MPU2_0 running MPU2_1 running MCU1_1 running MCU1_0 running MCU1_0 reports: All tests have passedjÆj�®jÎj·£jÐjjÒ}r¯(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMi(jÝhjÞ]r¯jçXàSYSFW ver xx.x.x-v20xx.xx (xxx xxx) running SBL Revision: xx.xx.xx.xx (MMM DD YYYY - HH:MM:SS) MPU1_0 running MPU1_1 running MPU2_0 running MPU2_1 running MCU1_1 running MCU1_0 running MCU1_0 reports: All tests have passedr¯…�r¯}r¯(jÅUjÆj¯ubaubjò)�r¯}r ¯(jÅXKAn example log for sbl_*_smp_test_*_all_coresTestApp_release.appimage is ::jÆj�®jÎj·£jÐjõjÒ}r!¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¡jÝhjÞ]r"¯jçXHAn example log for sbl_*_smp_test_*_all_coresTestApp_release.appimage isr#¯…�r$¯}r%¯(jÅXHAn example log for sbl_*_smp_test_*_all_coresTestApp_release.appimage isjÆj¯ubaubj)�r&¯}r'¯(jÅX{SYSFW ver xx.x.x-v20xx.xx (xxx xxx) running SBL Revision: xx.xx.xx.xx (MMM DD YYYY - HH:MM:SS) MPU SMP boot test Cores 0 & 1 will boot from 0x801007a0 Cores 2 & 3 will boot from 0x803007a0 Resetting all ARM cores now... No of Cortex-A core(s) running: 1 No of Cortex-A core(s) running: 2 No of Cortex-A core(s) running: 3 No of Cortex-A core(s) running: 4 All tests have passedjÆj�®jÎj·£jÐjjÒ}r(¯(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMv(jÝhjÞ]r)¯jçX{SYSFW ver xx.x.x-v20xx.xx (xxx xxx) running SBL Revision: xx.xx.xx.xx (MMM DD YYYY - HH:MM:SS) MPU SMP boot test Cores 0 & 1 will boot from 0x801007a0 Cores 2 & 3 will boot from 0x803007a0 Resetting all ARM cores now... No of Cortex-A core(s) running: 1 No of Cortex-A core(s) running: 2 No of Cortex-A core(s) running: 3 No of Cortex-A core(s) running: 4 All tests have passedr*¯…�r+¯}r,¯(jÅUjÆj&¯ubaubjò)�r-¯}r.¯(jÅXuAn example log for sbl_baremetal_boot_perf_*_mcu1_0TestApp_release.appimage, when the best boot time is reached is ::jÆj�®jÎj·£jÐjõjÒ}r/¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜM°jÝhjÞ]r0¯jçXrAn example log for sbl_baremetal_boot_perf_*_mcu1_0TestApp_release.appimage, when the best boot time is reached isr1¯…�r2¯}r3¯(jÅXrAn example log for sbl_baremetal_boot_perf_*_mcu1_0TestApp_release.appimage, when the best boot time is reached isjÆj-¯ubaubj)�r4¯}r5¯(jÅX�Time elapsed since start of SBL: 36665us fxn:boot_perf_test_main cycles: 14666041 Attempting board config ...BOARD_INIT_PLL ...passed BOARD_INIT_MODULE_CLOCK...passed BOARD_INIT_DDR...passed Analyzing run results .... Boot time is now optimized.... All tests have passed Profiling info .... MCU @ 400000000Hz. cycles per usec = 400 fxn: main line: 75 cycle: xxx timestamp: 432us . . . fxn: SBL_SlaveCoreBoot line: 231 cycle: xxx timestamp: 36149usjÆj�®jÎj·£jÐjjÒ}r6¯(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM…(jÝhjÞ]r7¯jçX�Time elapsed since start of SBL: 36665us fxn:boot_perf_test_main cycles: 14666041 Attempting board config ...BOARD_INIT_PLL ...passed BOARD_INIT_MODULE_CLOCK...passed BOARD_INIT_DDR...passed Analyzing run results .... Boot time is now optimized.... All tests have passed Profiling info .... MCU @ 400000000Hz. cycles per usec = 400 fxn: main line: 75 cycle: xxx timestamp: 432us . . . fxn: SBL_SlaveCoreBoot line: 231 cycle: xxx timestamp: 36149usr8¯…�r9¯}r:¯(jÅUjÆj4¯ubaubjò)�r;¯}r<¯(jÅX1The test log for sbl_*_xip_test_*.xer5f.bin is ::jÆj�®jÎj·£jÐjõjÒ}r=¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÇjÝhjÞ]r>¯jçX.The test log for sbl_*_xip_test_*.xer5f.bin isr?¯…�r@¯}rA¯(jÅX.The test log for sbl_*_xip_test_*.xer5f.bin isjÆj;¯ubaubj)�rB¯}rC¯(jÅXMCU1_0 runningjÆj�®jÎj·£jÐjjÒ}rD¯(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMœ(jÝhjÞ]rE¯jçXMCU1_0 runningrF¯…�rG¯}rH¯(jÅUjÆjB¯ubaubeubjÇ)�rI¯}rJ¯(jÅUjKjÆj¥£jÎj·£jÐjÑjÒ}rK¯(jÔ]rL¯X boot modesrM¯ajÕ]jÖ]j×]rN¯Uid86rO¯ajÚ]ujÜMÍjÝhjÞ]rP¯(jà)�rQ¯}rR¯(jÅX Boot ModesrS¯jÆjI¯jÎj·£jÐjäjÒ}rT¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÍjÝhjÞ]rU¯jçX Boot ModesrV¯…�rW¯}rX¯(jÅjS¯jÆjQ¯ubaubjò)�rY¯}rZ¯(jÅX‡The SBL supports MMCSD, OSPI, UART and Hyperflash Boot modes. The different boot modes supported for all the boards is tabulated below.r[¯jÆjI¯jÎj·£jÐjõjÒ}r\¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÐjÝhjÞ]r]¯jçX‡The SBL supports MMCSD, OSPI, UART and Hyperflash Boot modes. The different boot modes supported for all the boards is tabulated below.r^¯…�r_¯}r`¯(jÅj[¯jÆjY¯ubaubjy )�ra¯}rb¯(jÅUjÆjI¯jÎj·£jÐjÔ jÒ}rc¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rd¯j~ )�re¯}rf¯(jÅUjÒ}rg¯(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆja¯jÞ]rh¯(jƒ )�ri¯}rj¯(jÅUjÒ}rk¯(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje¯jÞ]jÐj‡ ubjƒ )�rl¯}rm¯(jÅUjÒ}rn¯(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje¯jÞ]jÐj‡ ubjƒ )�ro¯}rp¯(jÅUjÒ}rq¯(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje¯jÞ]jÐj‡ ubjƒ )�rr¯}rs¯(jÅUjÒ}rt¯(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje¯jÞ]jÐj‡ ubjƒ )�ru¯}rv¯(jÅUjÒ}rw¯(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje¯jÞ]jÐj‡ ubjƒ )�rx¯}ry¯(jÅUjÒ}rz¯(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆje¯jÞ]jÐj‡ ubjƒ )�r{¯}r|¯(jÅUjÒ}r}¯(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆje¯jÞ]jÐj‡ ubj¥ )�r~¯}r¯(jÅUjÒ}r€¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆje¯jÞ]r�¯(j� )�r‚¯}rƒ¯(jÅUjÒ}r„¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~¯jÞ]r…¯(j• )�r†¯}r‡¯(jÅUjÒ}rˆ¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚¯jÞ]jÐj¢ ubj• )�r‰¯}rН(jÅUjÒ}r‹¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚¯jÞ]rŒ¯jò)�r�¯}rޝ(jÅXMMCSDr�¯jÆj‰¯jÎj·£jÐjõjÒ}r�¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÔjÞ]r‘¯jçXMMCSDr’¯…�r“¯}r”¯(jÅj�¯jÆj�¯ubaubajÐj¢ ubj• )�r•¯}r–¯(jÅUjÒ}r—¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚¯jÞ]r˜¯jò)�r™¯}rš¯(jÅXOSPIr›¯jÆj•¯jÎj·£jÐjõjÒ}rœ¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÔjÞ]r�¯jçXOSPIrž¯…�rŸ¯}r ¯(jÅj›¯jÆj™¯ubaubajÐj¢ ubj• )�r¡¯}r¢¯(jÅUjÒ}r£¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚¯jÞ]r¤¯jò)�r¥¯}r¦¯(jÅXUARTr§¯jÆj¡¯jÎj·£jÐjõjÒ}r¨¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÔjÞ]r©¯jçXUARTrª¯…�r«¯}r¬¯(jÅj§¯jÆj¥¯ubaubajÐj¢ ubj• )�r­¯}r®¯(jÅUjÒ}r¯¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚¯jÞ]r°¯jò)�r±¯}r²¯(jÅXPCIer³¯jÆj­¯jÎj·£jÐjõjÒ}r´¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÔjÞ]rµ¯jçXPCIer¶¯…�r·¯}r¸¯(jÅj³¯jÆj±¯ubaubajÐj¢ ubj• )�r¹¯}rº¯(jÅUjÒ}r»¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚¯jÞ]r¼¯jò)�r½¯}r¾¯(jÅXETHr¿¯jÆj¹¯jÎj·£jÐjõjÒ}rÀ¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÔjÞ]rÁ¯jçXETHr¯…�rï}rį(jÅj¿¯jÆj½¯ubaubajÐj¢ ubj• )�rů}rƯ(jÅUjÒ}rǯ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚¯jÞ]rȯjò)�rɯ}rʯ(jÅX HYPERFLASHr˯jÆjůjÎj·£jÐjõjÒ}r̯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÔjÞ]rͯjçX HYPERFLASHrί…�rϯ}rЯ(jÅj˯jÆjɯubaubajÐj¢ ubejÐj£ ubj� )�rѯ}rÒ¯(jÅUjÒ}rÓ¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~¯jÞ]rÔ¯(j• )�rÕ¯}rÖ¯(jÅUjÒ}rׯ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjѯjÞ]rدjò)�rÙ¯}rÚ¯(jÅX AM65xx EVMrÛ¯jÆjÕ¯jÎj·£jÐjõjÒ}rܯ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÖjÞ]rݯjçX AM65xx EVMrÞ¯…�r߯}rà¯(jÅjÛ¯jÆjÙ¯ubaubajÐj¢ ubj• )�rá¯}râ¯(jÅUjÒ}rã¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆjѯjÞ]rä¯jò)�rå¯}ræ¯(jÅXYESrç¯jÆjá¯jÎj·£jÐjõjÒ}rè¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÖjÞ]ré¯jçXYESrꯅ�rë¯}rì¯(jÅjç¯jÆjå¯ubaubajÐj¢ ubj• )�rí¯}rî¯(jÅUjÒ}rï¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆjѯjÞ]rð¯jò)�rñ¯}rò¯(jÅXYESró¯jÆjí¯jÎj·£jÐjõjÒ}rô¯(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÖjÞ]rõ¯jçXYESrö¯…�r÷¯}rø¯(jÅjó¯jÆjñ¯ubaubajÐj¢ ubj• )�rù¯}rú¯(jÅUjÒ}rû¯(jÔ]jÕ]jÖ]j×]jÚ]ujÆjѯjÞ]rü¯jò)�rý¯}rþ¯(jÅXYESrÿ¯jÆjù¯jÎj·£jÐjõjÒ}r°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÖjÞ]r°jçXYESr°…�r°}r°(jÅjÿ¯jÆjý¯ubaubajÐj¢ ubj• )�r°}r°(jÅUjÒ}r°(jÔ]jÕ]jÖ]j×]jÚ]ujÆjѯjÞ]r°jò)�r °}r °(jÅXNOr °jÆj°jÎj·£jÐjõjÒ}r °(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÖjÞ]r °jçXNOr°…�r°}r°(jÅj °jÆj °ubaubajÐj¢ ubj• )�r°}r°(jÅUjÒ}r°(jÔ]jÕ]jÖ]j×]jÚ]ujÆjѯjÞ]r°jò)�r°}r°(jÅXNOr°jÆj°jÎj·£jÐjõjÒ}r°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÖjÞ]r°jçXNOr°…�r°}r°(jÅj°jÆj°ubaubajÐj¢ ubj• )�r°}r°(jÅUjÒ}r°(jÔ]jÕ]jÖ]j×]jÚ]ujÆjѯjÞ]r °jò)�r!°}r"°(jÅXNOr#°jÆj°jÎj·£jÐjõjÒ}r$°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÖjÞ]r%°jçXNOr&°…�r'°}r(°(jÅj#°jÆj!°ubaubajÐj¢ ubejÐj£ ubj� )�r)°}r*°(jÅUjÒ}r+°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~¯jÞ]r,°(j• )�r-°}r.°(jÅUjÒ}r/°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)°jÞ]r0°jò)�r1°}r2°(jÅX AM65xx IDKr3°jÆj-°jÎj·£jÐjõjÒ}r4°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMØjÞ]r5°jçX AM65xx IDKr6°…�r7°}r8°(jÅj3°jÆj1°ubaubajÐj¢ ubj• )�r9°}r:°(jÅUjÒ}r;°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)°jÞ]r<°jò)�r=°}r>°(jÅXYESr?°jÆj9°jÎj·£jÐjõjÒ}r@°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMØjÞ]rA°jçXYESrB°…�rC°}rD°(jÅj?°jÆj=°ubaubajÐj¢ ubj• )�rE°}rF°(jÅUjÒ}rG°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)°jÞ]rH°jò)�rI°}rJ°(jÅXYESrK°jÆjE°jÎj·£jÐjõjÒ}rL°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMØjÞ]rM°jçXYESrN°…�rO°}rP°(jÅjK°jÆjI°ubaubajÐj¢ ubj• )�rQ°}rR°(jÅUjÒ}rS°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)°jÞ]rT°jò)�rU°}rV°(jÅXYESrW°jÆjQ°jÎj·£jÐjõjÒ}rX°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMØjÞ]rY°jçXYESrZ°…�r[°}r\°(jÅjW°jÆjU°ubaubajÐj¢ ubj• )�r]°}r^°(jÅUjÒ}r_°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)°jÞ]r`°jò)�ra°}rb°(jÅXNOrc°jÆj]°jÎj·£jÐjõjÒ}rd°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMØjÞ]re°jçXNOrf°…�rg°}rh°(jÅjc°jÆja°ubaubajÐj¢ ubj• )�ri°}rj°(jÅUjÒ}rk°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)°jÞ]rl°jò)�rm°}rn°(jÅXNOro°jÆji°jÎj·£jÐjõjÒ}rp°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMØjÞ]rq°jçXNOrr°…�rs°}rt°(jÅjo°jÆjm°ubaubajÐj¢ ubj• )�ru°}rv°(jÅUjÒ}rw°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)°jÞ]rx°jò)�ry°}rz°(jÅXNOr{°jÆju°jÎj·£jÐjõjÒ}r|°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMØjÞ]r}°jçXNOr~°…�r°}r€°(jÅj{°jÆjy°ubaubajÐj¢ ubejÐj£ ubj� )�r�°}r‚°(jÅUjÒ}rƒ°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~¯jÞ]r„°(j• )�r…°}r†°(jÅUjÒ}r‡°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�°jÞ]rˆ°jò)�r‰°}rа(jÅX J721E EVMr‹°jÆj…°jÎj·£jÐjõjÒ}rŒ°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÞ]r�°jçX J721E EVMrް…�r�°}r�°(jÅj‹°jÆj‰°ubaubajÐj¢ ubj• )�r‘°}r’°(jÅUjÒ}r“°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�°jÞ]r”°jò)�r•°}r–°(jÅXYESr—°jÆj‘°jÎj·£jÐjõjÒ}r˜°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÞ]r™°jçXYESrš°…�r›°}rœ°(jÅj—°jÆj•°ubaubajÐj¢ ubj• )�r�°}rž°(jÅUjÒ}rŸ°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�°jÞ]r °jò)�r¡°}r¢°(jÅXYESr£°jÆj�°jÎj·£jÐjõjÒ}r¤°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÞ]r¥°jçXYESr¦°…�r§°}r¨°(jÅj£°jÆj¡°ubaubajÐj¢ ubj• )�r©°}rª°(jÅUjÒ}r«°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�°jÞ]r¬°jò)�r­°}r®°(jÅXYESr¯°jÆj©°jÎj·£jÐjõjÒ}r°°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÞ]r±°jçXYESr²°…�r³°}r´°(jÅj¯°jÆj­°ubaubajÐj¢ ubj• )�rµ°}r¶°(jÅUjÒ}r·°(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�°jÞ]r¸°jò)�r¹°}rº°(jÅXNOr»°jÆjµ°jÎj·£jÐjõjÒ}r¼°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÞ]r½°jçXNOr¾°…�r¿°}rÀ°(jÅj»°jÆj¹°ubaubajÐj¢ ubj• )�rÁ°}r°(jÅUjÒ}rð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�°jÞ]rİjò)�rŰ}rư(jÅXNOrǰjÆjÁ°jÎj·£jÐjõjÒ}rȰ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÞ]rɰjçXNOrʰ…�r˰}r̰(jÅjǰjÆjŰubaubajÐj¢ ubj• )�rͰ}rΰ(jÅUjÒ}rϰ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�°jÞ]rаjò)�rѰ}rÒ°(jÅXYESrÓ°jÆjͰjÎj·£jÐjõjÒ}rÔ°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÞ]rÕ°jçXYESrÖ°…�r×°}rذ(jÅjÓ°jÆjѰubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�rÙ°}rÚ°(jÅX**Booting Via SD Card**rÛ°jÆjI¯jÎj·£jÐjõjÒ}rܰ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÝjÝhjÞ]rݰjÚ)�rÞ°}rß°(jÅjÛ°jÒ}rà°(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙ°jÞ]rá°jçXBooting Via SD Cardrâ°…�rã°}rä°(jÅUjÆjÞ°ubajÐjâubaubj )�rå°}ræ°(jÅUjÆjI¯jÎj·£jÐj jÒ}rç°(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMßjÝhjÞ]rè°(j{)�ré°}rê°(jÅXPreparing the SD card.rë°jÆjå°jÎj·£jÐjjÒ}rì°(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rí°jò)�rî°}rï°(jÅjë°jÆjé°jÎj·£jÐjõjÒ}rð°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMßjÞ]rñ°jçXPreparing the SD card.rò°…�ró°}rô°(jÅjë°jÆjî°ubaubaubj{)�rõ°}rö°(jÅX#Booting the testcase from SD card. jÆjå°jÎj·£jÐjjÒ}r÷°(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rø°jò)�rù°}rú°(jÅX"Booting the testcase from SD card.rû°jÆjõ°jÎj·£jÐjõjÒ}rü°(jÔ]jÕ]jÖ]j×]jÚ]ujÜMàjÞ]rý°jçX"Booting the testcase from SD card.rþ°…�rÿ°}r±(jÅjû°jÆjù°ubaubaubeubjò)�r±}r±(jÅX**Preparing the SD card**r±jÆjI¯jÎj·£jÐjõjÒ}r±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMâjÝhjÞ]r±jÚ)�r±}r±(jÅj±jÒ}r±(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±jÞ]r ±jçXPreparing the SD cardr ±…�r ±}r ±(jÅUjÆj±ubajÐjâubaubj )�r ±}r±(jÅUjÆjI¯jÎj·£jÐj jÒ}r±(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMäjÝhjÞ]r±(j{)�r±}r±(jÅXJTo boot the target the SD card should be bootable. Follow the steps at `Creating bootable SD card in windows `__ or `Creating bootable SD card in Linux `__.jÆj ±jÎj·£jÐjjÒ}r±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r±jò)�r±}r±(jÅXJTo boot the target the SD card should be bootable. Follow the steps at `Creating bootable SD card in windows `__ or `Creating bootable SD card in Linux `__.jÆj±jÎj·£jÐjõjÒ}r±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMäjÞ]r±(jçXGTo boot the target the SD card should be bootable. Follow the steps at r±…�r±}r±(jÅXGTo boot the target the SD card should be bootable. Follow the steps at jÆj±ubjû)�r±}r±(jÅX…`Creating bootable SD card in windows `__jÒ}r±(UnameX$Creating bootable SD card in windowsjXZhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Creating_a_SD_Card_with_Windowsj×]jÖ]jÔ]jÕ]jÚ]ujÆj±jÞ]r±jçX$Creating bootable SD card in windowsr ±…�r!±}r"±(jÅUjÆj±ubajÐjÿubjçX or r#±…�r$±}r%±(jÅX or jÆj±ubjû)�r&±}r'±(jÅXy`Creating bootable SD card in Linux `__jÒ}r(±(UnameX"Creating bootable SD card in LinuxjXPhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_create_SD_card_scriptj×]jÖ]jÔ]jÕ]jÚ]ujÆj±jÞ]r)±jçX"Creating bootable SD card in Linuxr*±…�r+±}r,±(jÅUjÆj&±ubajÐjÿubjçX.…�r-±}r.±(jÅX.jÆj±ubeubaubj{)�r/±}r0±(jÅXŽTo update the SBL with a newer version, copy the sbl image (sbl_mmcsd_img_mcu1_0_release.tiimage) to the SD card. Rename it to **tiboot3.bin**jÆj ±jÎj·£jÐjjÒ}r1±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r2±jò)�r3±}r4±(jÅXŽTo update the SBL with a newer version, copy the sbl image (sbl_mmcsd_img_mcu1_0_release.tiimage) to the SD card. Rename it to **tiboot3.bin**jÆj/±jÎj·£jÐjõjÒ}r5±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMéjÞ]r6±(jçXTo update the SBL with a newer version, copy the sbl image (sbl_mmcsd_img_mcu1_0_release.tiimage) to the SD card. Rename it to r7±…�r8±}r9±(jÅXTo update the SBL with a newer version, copy the sbl image (sbl_mmcsd_img_mcu1_0_release.tiimage) to the SD card. Rename it to jÆj3±ubjÚ)�r:±}r;±(jÅX**tiboot3.bin**jÒ}r<±(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3±jÞ]r=±jçX tiboot3.binr>±…�r?±}r@±(jÅUjÆj:±ubajÐjâubeubaubj{)�rA±}rB±(jÅXdTo update the SYSFW with a newer version, copy the system firmware image (sysfw.bin) to the SD card.rC±jÆj ±jÎj·£jÐjjÒ}rD±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rE±jò)�rF±}rG±(jÅjC±jÆjA±jÎj·£jÐjõjÒ}rH±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMëjÞ]rI±jçXdTo update the SYSFW with a newer version, copy the system firmware image (sysfw.bin) to the SD card.rJ±…�rK±}rL±(jÅjC±jÆjF±ubaubaubj{)�rM±}rN±(jÅXWCopy the generated application image(\*.appimage) to the SD card. Rename it to **app** jÆj ±jÎj·£jÐjjÒ}rO±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rP±jò)�rQ±}rR±(jÅXVCopy the generated application image(\*.appimage) to the SD card. Rename it to **app**jÆjM±jÎj·£jÐjõjÒ}rS±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMìjÞ]rT±(jçXNCopy the generated application image(*.appimage) to the SD card. Rename it to rU±…�rV±}rW±(jÅXOCopy the generated application image(\*.appimage) to the SD card. Rename it to jÆjQ±ubjÚ)�rX±}rY±(jÅX**app**jÒ}rZ±(jÔ]jÕ]jÖ]j×]jÚ]ujÆjQ±jÞ]r[±jçXappr\±…�r]±}r^±(jÅUjÆjX±ubajÐjâubeubaubeubjò)�r_±}r`±(jÅX&**Booting the testcase from SD card**ra±jÆjI¯jÎj·£jÐjõjÒ}rb±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMïjÝhjÞ]rc±jÚ)�rd±}re±(jÅja±jÒ}rf±(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_±jÞ]rg±jçX"Booting the testcase from SD cardrh±…�ri±}rj±(jÅUjÆjd±ubajÐjâubaubj )�rk±}rl±(jÅUjÆjI¯jÎj·£jÐj jÒ}rm±(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMñjÝhjÞ]rn±(j{)�ro±}rp±(jÅX2Insert SD card into the SD card slot of the board.rq±jÆjk±jÎj·£jÐjjÒ}rr±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rs±jò)�rt±}ru±(jÅjq±jÆjo±jÎj·£jÐjõjÒ}rv±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMñjÞ]rw±jçX2Insert SD card into the SD card slot of the board.rx±…�ry±}rz±(jÅjq±jÆjt±ubaubaubj{)�r{±}r|±(jÅX‡Refer Boot Modes section in the `AM6x EVM Hardware Users Guide `__ to setup EVM to boot from MMCSD.jÆjk±jÎj·£jÐjjÒ}r}±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r~±jò)�r±}r€±(jÅX‡Refer Boot Modes section in the `AM6x EVM Hardware Users Guide `__ to setup EVM to boot from MMCSD.jÆj{±jÎj·£jÐjõjÒ}r�±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMòjÞ]r‚±(jçX Refer Boot Modes section in the rƒ±…�r„±}r…±(jÅX Refer Boot Modes section in the jÆj±ubjû)�r†±}r‡±(jÅXE`AM6x EVM Hardware Users Guide `__jÒ}rˆ±(UnameXAM6x EVM Hardware Users GuidejX!http://www.ti.com/lit/pdf/spruim7j×]jÖ]jÔ]jÕ]jÚ]ujÆj±jÞ]r‰±jçXAM6x EVM Hardware Users Guiderб…�r‹±}rŒ±(jÅUjÆj†±ubajÐjÿubjçX" to setup EVM to boot from MMCSD.r�±…�rޱ}r�±(jÅX" to setup EVM to boot from MMCSD.jÆj±ubeubaubj{)�r�±}r‘±(jÅXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portjÆjk±jÎj·£jÐjjÒ}r’±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r“±jò)�r”±}r•±(jÅXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portr–±jÆj�±jÎj·£jÐjõjÒ}r—±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMôjÞ]r˜±jçXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portr™±…�rš±}r›±(jÅj–±jÆj”±ubaubaubj{)�rœ±}r�±(jÅX?Power cycle the board to boot the application from the SD card.rž±jÆjk±jÎj·£jÐjjÒ}rŸ±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r ±jò)�r¡±}r¢±(jÅjž±jÆjœ±jÎj·£jÐjõjÒ}r£±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMöjÞ]r¤±jçX?Power cycle the board to boot the application from the SD card.r¥±…�r¦±}r§±(jÅjž±jÆj¡±ubaubaubj{)�r¨±}r©±(jÅX0The test logs will be displayed on the MCU UART jÆjk±jÎj·£jÐjjÒ}rª±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r«±jò)�r¬±}r­±(jÅX/The test logs will be displayed on the MCU UARTr®±jÆj¨±jÎj·£jÐjõjÒ}r¯±(jÔ]jÕ]jÖ]j×]jÚ]ujÜM÷jÞ]r°±jçX/The test logs will be displayed on the MCU UARTr±±…�r²±}r³±(jÅj®±jÆj¬±ubaubaubeubjò)�r´±}rµ±(jÅX**Booting Via OSPI flash**r¶±jÆjI¯jÎj·£jÐjõjÒ}r·±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMùjÝhjÞ]r¸±jÚ)�r¹±}rº±(jÅj¶±jÒ}r»±(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´±jÞ]r¼±jçXBooting Via OSPI flashr½±…�r¾±}r¿±(jÅUjÆj¹±ubajÐjâubaubj )�rÀ±}rÁ±(jÅUjÆjI¯jÎj·£jÐj jÒ}r±(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMûjÝhjÞ]rñ(j{)�rı}rű(jÅX|`Programming the OSPI flash `__rƱjÆjÀ±jÎj·£jÐjjÒ}rDZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rȱjò)�rɱ}rʱ(jÅjƱjÆjıjÎj·£jÐjõjÒ}r˱(jÔ]jÕ]jÖ]j×]jÚ]ujÜMûjÞ]ṟjû)�rͱ}rα(jÅjƱjÒ}rϱ(UnameXProgramming the OSPI flashjX[http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_board.html#uniflashj×]jÖ]jÔ]jÕ]jÚ]ujÆjɱjÞ]rбjçXProgramming the OSPI flashrѱ…�rÒ±}rÓ±(jÅUjÆjͱubajÐjÿubaubaubj{)�rÔ±}rÕ±(jÅX&Booting the testcase from OSPI flash jÆjÀ±jÎj·£jÐjjÒ}rÖ±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r×±jò)�rر}rÙ±(jÅX$Booting the testcase from OSPI flashrÚ±jÆjÔ±jÎj·£jÐjõjÒ}rÛ±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMüjÞ]rܱjçX$Booting the testcase from OSPI flashrݱ…�rÞ±}rß±(jÅjÚ±jÆjرubaubaubeubjò)�rà±}rá±(jÅX(**Booting the testcase from OSPI flash**râ±jÆjI¯jÎj·£jÐjõjÒ}rã±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÿjÝhjÞ]rä±jÚ)�rå±}ræ±(jÅjâ±jÒ}rç±(jÔ]jÕ]jÖ]j×]jÚ]ujÆjà±jÞ]rè±jçX$Booting the testcase from OSPI flashré±…�rê±}rë±(jÅUjÆjå±ubajÐjâubaubj )�rì±}rí±(jÅUjÆjI¯jÎj·£jÐj jÒ}rî±(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMjÝhjÞ]rï±(j{)�rð±}rñ±(jÅX†Refer Boot Modes section in the `AM6x EVM Hardware Users Guide `__ to setup EVM to boot from OSPI.jÆjì±jÎj·£jÐjjÒ}rò±(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ró±jò)�rô±}rõ±(jÅX†Refer Boot Modes section in the `AM6x EVM Hardware Users Guide `__ to setup EVM to boot from OSPI.jÆjð±jÎj·£jÐjõjÒ}rö±(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r÷±(jçX Refer Boot Modes section in the rø±…�rù±}rú±(jÅX Refer Boot Modes section in the jÆjô±ubjû)�rû±}rü±(jÅXE`AM6x EVM Hardware Users Guide `__jÒ}rý±(UnameXAM6x EVM Hardware Users GuidejX!http://www.ti.com/lit/pdf/spruim7j×]jÖ]jÔ]jÕ]jÚ]ujÆjô±jÞ]rþ±jçXAM6x EVM Hardware Users Guiderÿ±…�r²}r²(jÅUjÆjû±ubajÐjÿubjçX! to setup EVM to boot from OSPI.r²…�r²}r²(jÅX! to setup EVM to boot from OSPI.jÆjô±ubeubaubj{)�r²}r²(jÅXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portjÆjì±jÎj·£jÐjjÒ}r²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r²jò)�r ²}r ²(jÅXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portr ²jÆj²jÎj·£jÐjõjÒ}r ²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r ²jçXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portr²…�r²}r²(jÅj ²jÆj ²ubaubaubj{)�r²}r²(jÅXCPower cycle the board to boot the application from the OSPI flash.r²jÆjì±jÎj·£jÐjjÒ}r²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r²jò)�r²}r²(jÅj²jÆj²jÎj·£jÐjõjÒ}r²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r²jçXCPower cycle the board to boot the application from the OSPI flash.r²…�r²}r²(jÅj²jÆj²ubaubaubj{)�r²}r²(jÅX1The test logs will be displayed on the MCU UART jÆjì±jÎj·£jÐjjÒ}r²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r ²jò)�r!²}r"²(jÅX/The test logs will be displayed on the MCU UARTr#²jÆj²jÎj·£jÐjõjÒ}r$²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r%²jçX/The test logs will be displayed on the MCU UARTr&²…�r'²}r(²(jÅj#²jÆj!²ubaubaubeubjò)�r)²}r*²(jÅX"**Booting the testcase from UART**r+²jÆjI¯jÎj·£jÐjõjÒ}r,²(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r-²jÚ)�r.²}r/²(jÅj+²jÒ}r0²(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)²jÞ]r1²jçXBooting the testcase from UARTr2²…�r3²}r4²(jÅUjÆj.²ubajÐjâubaubj )�r5²}r6²(jÅUjÆjI¯jÎj·£jÐj jÒ}r7²(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM jÝhjÞ]r8²(j{)�r9²}r:²(jÅX†Refer Boot Modes section in the `AM6x EVM Hardware Users Guide `__ to setup EVM to boot from UART.jÆj5²jÎj·£jÐjjÒ}r;²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r<²jò)�r=²}r>²(jÅX†Refer Boot Modes section in the `AM6x EVM Hardware Users Guide `__ to setup EVM to boot from UART.jÆj9²jÎj·£jÐjõjÒ}r?²(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r@²(jçX Refer Boot Modes section in the rA²…�rB²}rC²(jÅX Refer Boot Modes section in the jÆj=²ubjû)�rD²}rE²(jÅXE`AM6x EVM Hardware Users Guide `__jÒ}rF²(UnameXAM6x EVM Hardware Users GuidejX!http://www.ti.com/lit/pdf/spruim7j×]jÖ]jÔ]jÕ]jÚ]ujÆj=²jÞ]rG²jçXAM6x EVM Hardware Users GuiderH²…�rI²}rJ²(jÅUjÆjD²ubajÐjÿubjçX! to setup EVM to boot from UART.rK²…�rL²}rM²(jÅX! to setup EVM to boot from UART.jÆj=²ubeubaubj{)�rN²}rO²(jÅXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portjÆj5²jÎj·£jÐjjÒ}rP²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rQ²jò)�rR²}rS²(jÅXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portrT²jÆjN²jÎj·£jÐjõjÒ}rU²(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rV²jçXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portrW²…�rX²}rY²(jÅjT²jÆjR²ubaubaubj{)�rZ²}r[²(jÅXNPower cycle the board, the console should show a sequence of CCC being printedr\²jÆj5²jÎj·£jÐjjÒ}r]²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r^²jò)�r_²}r`²(jÅj\²jÆjZ²jÎj·£jÐjõjÒ}ra²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rb²jçXNPower cycle the board, the console should show a sequence of CCC being printedrc²…�rd²}re²(jÅj\²jÆj_²ubaubaubj{)�rf²}rg²(jÅXÕChoose the X-Modem interface and send the SBL that was built for UART. After the transfer is completed, repeat the same step for sysfw.bin and the application. You will see notifications to perform these actions. jÆj5²jÎj·£jÐjjÒ}rh²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ri²jò)�rj²}rk²(jÅXÔChoose the X-Modem interface and send the SBL that was built for UART. After the transfer is completed, repeat the same step for sysfw.bin and the application. You will see notifications to perform these actions.rl²jÆjf²jÎj·£jÐjõjÒ}rm²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rn²jçXÔChoose the X-Modem interface and send the SBL that was built for UART. After the transfer is completed, repeat the same step for sysfw.bin and the application. You will see notifications to perform these actions.ro²…�rp²}rq²(jÅjl²jÆjj²ubaubaubeubj¯¦)�rr²}rs²(jÅXIf sysfw.bin is not present in the boot media, the boot will fail without displaying any logs on the MCU UART. SBL enables UART logging only after successfully starting the system firmware image. If the system firmware load fails, the RBL will eventually reset the system.jÆjI¯jÎj·£jÐj²¦jÒ}rt²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ru²jò)�rv²}rw²(jÅXIf sysfw.bin is not present in the boot media, the boot will fail without displaying any logs on the MCU UART. SBL enables UART logging only after successfully starting the system firmware image. If the system firmware load fails, the RBL will eventually reset the system.rx²jÆjr²jÎj·£jÐjõjÒ}ry²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rz²jçXIf sysfw.bin is not present in the boot media, the boot will fail without displaying any logs on the MCU UART. SBL enables UART logging only after successfully starting the system firmware image. If the system firmware load fails, the RBL will eventually reset the system.r{²…�r|²}r}²(jÅjx²jÆjv²ubaubaubjò)�r~²}r²(jÅX**Booting Via Hyperflash**r€²jÆjI¯jÎj·£jÐjõjÒ}r�²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r‚²jÚ)�rƒ²}r„²(jÅj€²jÒ}r…²(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~²jÞ]r†²jçXBooting Via Hyperflashr‡²…�rˆ²}r‰²(jÅUjÆjƒ²ubajÐjâubaubj )�rв}r‹²(jÅUjÆjI¯jÎj·£jÐj jÒ}rŒ²(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMjÝhjÞ]r�²(j{)�r޲}r�²(jÅX|`Programming the Hyperflash `__r�²jÆjвjÎj·£jÐjjÒ}r‘²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r’²jò)�r“²}r”²(jÅj�²jÆj޲jÎj·£jÐjõjÒ}r•²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r–²jû)�r—²}r˜²(jÅj�²jÒ}r™²(UnameXProgramming the HyperflashjX[http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_board.html#uniflashj×]jÖ]jÔ]jÕ]jÚ]ujÆj“²jÞ]rš²jçXProgramming the Hyperflashr›²…�rœ²}r�²(jÅUjÆj—²ubajÐjÿubaubaubj{)�rž²}rŸ²(jÅX+Booting the testcase from Hyperflashflash jÆjвjÎj·£jÐjjÒ}r ²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¡²jò)�r¢²}r£²(jÅX)Booting the testcase from Hyperflashflashr¤²jÆjž²jÎj·£jÐjõjÒ}r¥²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r¦²jçX)Booting the testcase from Hyperflashflashr§²…�r¨²}r©²(jÅj¤²jÆj¢²ubaubaubeubjò)�rª²}r«²(jÅX(**Booting the testcase from Hyperflash**r¬²jÆjI¯jÎj·£jÐjõjÒ}r­²(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r®²jÚ)�r¯²}r°²(jÅj¬²jÒ}r±²(jÔ]jÕ]jÖ]j×]jÚ]ujÆjª²jÞ]r²²jçX$Booting the testcase from Hyperflashr³²…�r´²}rµ²(jÅUjÆj¯²ubajÐjâubaubj )�r¶²}r·²(jÅUjÆjI¯jÎj·£jÐj jÒ}r¸²(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM!jÝhjÞ]r¹²(j{)�rº²}r»²(jÅXÂRefer Boot Modes section in the `J721E EVM Hardware Users Guide `__ to setup EVM to boot from Hyperflash.jÆj¶²jÎj·£jÐjjÒ}r¼²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r½²jò)�r¾²}r¿²(jÅXÂRefer Boot Modes section in the `J721E EVM Hardware Users Guide `__ to setup EVM to boot from Hyperflash.jÆjº²jÎj·£jÐjõjÒ}rÀ²(jÔ]jÕ]jÖ]j×]jÚ]ujÜM!jÞ]rÁ²(jçX Refer Boot Modes section in the r²…�rò}rIJ(jÅX Refer Boot Modes section in the jÆj¾²ubjû)�rŲ}rƲ(jÅX|`J721E EVM Hardware Users Guide `__jÒ}rDz(UnameXJ721E EVM Hardware Users GuidejXWhttps://cdds.ext.ti.com/ematrix/common/emxNavigator.jsp?objectId=28670.42872.4850.38306j×]jÖ]jÔ]jÕ]jÚ]ujÆj¾²jÞ]rȲjçXJ721E EVM Hardware Users Guiderɲ…�rʲ}r˲(jÅUjÆjŲubajÐjÿubjçX& to setup EVM to boot from Hyperflash.r̲…�rͲ}rβ(jÅX& to setup EVM to boot from Hyperflash.jÆj¾²ubeubaubj{)�rϲ}rв(jÅXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portjÆj¶²jÎj·£jÐjjÒ}rѲ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÒ²jò)�rÓ²}rÔ²(jÅXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portrÕ²jÆjϲjÎj·£jÐjõjÒ}rÖ²(jÔ]jÕ]jÖ]j×]jÚ]ujÜM$jÞ]rײjçXoOpen a serial communication terminal like TeraTerm, MiniCom on host PC and connect to the MCU UART console portrز…�rÙ²}rÚ²(jÅjÕ²jÆjÓ²ubaubaubj{)�rÛ²}rܲ(jÅXCPower cycle the board to boot the application from the Hyperflash.rݲjÆj¶²jÎj·£jÐjjÒ}rÞ²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rß²jò)�rà²}rá²(jÅjݲjÆjÛ²jÎj·£jÐjõjÒ}râ²(jÔ]jÕ]jÖ]j×]jÚ]ujÜM&jÞ]rã²jçXCPower cycle the board to boot the application from the Hyperflash.rä²…�rå²}ræ²(jÅjݲjÆjà²ubaubaubj{)�rç²}rè²(jÅX1The test logs will be displayed on the MCU UART jÆj¶²jÎj·£jÐjjÒ}ré²(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rê²jò)�rë²}rì²(jÅX/The test logs will be displayed on the MCU UARTrí²jÆjç²jÎj·£jÐjõjÒ}rî²(jÔ]jÕ]jÖ]j×]jÚ]ujÜM'jÞ]rï²jçX/The test logs will be displayed on the MCU UARTrð²…�rñ²}rò²(jÅjí²jÆjë²ubaubaubeubeubjÇ)�ró²}rô²(jÅUjÆj¥£jÎj·£jÐjÑjÒ}rõ²(jÔ]jÕ]jÖ]j×]rö²Uevm-setup-for-testing-sblr÷²ajÚ]rø²h>aujÜM+jÝhjÞ]rù²(jà)�rú²}rû²(jÅXEVM Setup for testing SBLrü²jÆjó²jÎj·£jÐjäjÒ}rý²(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÝhjÞ]rþ²jçXEVM Setup for testing SBLrÿ²…�r³}r³(jÅjü²jÆjú²ubaubjò)�r³}r³(jÅX—For information on board specific requirements like power supply, UART console port connections refer the Hardware User guide of the respective boards.r³jÆjó²jÎj·£jÐjõjÒ}r³(jÔ]jÕ]jÖ]j×]jÚ]ujÜM-jÝhjÞ]r³jçX—For information on board specific requirements like power supply, UART console port connections refer the Hardware User guide of the respective boards.r³…�r³}r ³(jÅj³jÆj³ubaubjò)�r ³}r ³(jÅXƒThe configurations needed to setup UART console through a serial terminal application on host PC are listed in the next section.r ³jÆjó²jÎj·£jÐjõjÒ}r ³(jÔ]jÕ]jÖ]j×]jÚ]ujÜM0jÝhjÞ]r³jçXƒThe configurations needed to setup UART console through a serial terminal application on host PC are listed in the next section.r³…�r³}r³(jÅj ³jÆj ³ubaubjò)�r³}r³(jÅX**UART Console Setup**r³jÆjó²jÎj·£jÐjõjÒ}r³(jÔ]jÕ]jÖ]j×]jÚ]ujÜM3jÝhjÞ]r³jÚ)�r³}r³(jÅj³jÒ}r³(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³jÞ]r³jçXUART Console Setupr³…�r³}r³(jÅUjÆj³ubajÐjâubaubjò)�r³}r³(jÅX²PDK SBL prints messages on the UART Serial Console running on the host. Hence, a serial terminal application (like Tera Term/HyperTerminal/minicom) should be running on the host.r ³jÆjó²jÎj·£jÐjõjÒ}r!³(jÔ]jÕ]jÖ]j×]jÚ]ujÜM5jÝhjÞ]r"³jçX²PDK SBL prints messages on the UART Serial Console running on the host. Hence, a serial terminal application (like Tera Term/HyperTerminal/minicom) should be running on the host.r#³…�r$³}r%³(jÅj ³jÆj³ubaubjt)�r&³}r'³(jÅUjÆjó²jÎj·£jÐjwjÒ}r(³(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM9jÝhjÞ]r)³(j{)�r*³}r+³(jÅXeThe host serial port must be configured at 115200 baud, no parity, 1 stop bit and no flow control.jÆj&³jÎj·£jÐjjÒ}r,³(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r-³jò)�r.³}r/³(jÅXeThe host serial port must be configured at 115200 baud, no parity, 1 stop bit and no flow control.r0³jÆj*³jÎj·£jÐjõjÒ}r1³(jÔ]jÕ]jÖ]j×]jÚ]ujÜM9jÞ]r2³jçXeThe host serial port must be configured at 115200 baud, no parity, 1 stop bit and no flow control.r3³…�r4³}r5³(jÅj0³jÆj.³ubaubaubj{)�r6³}r7³(jÅXJPlease ensure that the local echo setting for the terminal is turned off.r8³jÆj&³jÎj·£jÐjjÒ}r9³(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r:³jò)�r;³}r<³(jÅj8³jÆj6³jÎj·£jÐjõjÒ}r=³(jÔ]jÕ]jÖ]j×]jÚ]ujÜM;jÞ]r>³jçXJPlease ensure that the local echo setting for the terminal is turned off.r?³…�r@³}rA³(jÅj8³jÆj;³ubaubaubj{)�rB³}rC³(jÅXšAll SBL prints are routed to the `MCU UART `__rD³jÆj&³jÎj·£jÐjjÒ}rE³(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rF³jò)�rG³}rH³(jÅjD³jÆjB³jÎj·£jÐjõjÒ}rI³(jÔ]jÕ]jÖ]j×]jÚ]ujÜM<jÞ]rJ³(jçX!All SBL prints are routed to the rK³…�rL³}rM³(jÅX!All SBL prints are routed to the jÆjG³ubjû)�rN³}rO³(jÅXy`MCU UART `__jÒ}rP³(UnameXMCU UARTjXjhttp://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_how_to_guides.html#uart-connectionj×]jÖ]jÔ]jÕ]jÚ]ujÆjG³jÞ]rQ³jçXMCU UARTrR³…�rS³}rT³(jÅUjÆjN³ubajÐjÿubeubaubj{)�rU³}rV³(jÅXèTo verify setup is correct, setup the EVM to boot from UART as the Primary Boot Device(refer `AM6x EVM Hardware Users Guide `__. Power cycle the EVM, and look for the string CCCCCCC on the UART. jÆj&³jÎXqinternal padding after source/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_AM65x_J721E.rst.incrW³jÐjjÒ}rX³(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rY³jò)�rZ³}r[³(jÅXæTo verify setup is correct, setup the EVM to boot from UART as the Primary Boot Device(refer `AM6x EVM Hardware Users Guide `__. Power cycle the EVM, and look for the string CCCCCCC on the UART.jÆjU³jÎj·£jÐjõjÒ}r\³(jÔ]jÕ]jÖ]j×]jÚ]ujÜM=jÞ]r]³(jçX^To verify setup is correct, setup the EVM to boot from UART as the Primary Boot Device(refer r^³…�r_³}r`³(jÅX^To verify setup is correct, setup the EVM to boot from UART as the Primary Boot Device(refer jÆjZ³ubjû)�ra³}rb³(jÅXE`AM6x EVM Hardware Users Guide `__jÒ}rc³(UnameXAM6x EVM Hardware Users GuidejX!http://www.ti.com/lit/pdf/spruim7j×]jÖ]jÔ]jÕ]jÚ]ujÆjZ³jÞ]rd³jçXAM6x EVM Hardware Users Guidere³…�rf³}rg³(jÅUjÆja³ubajÐjÿubjçXC. Power cycle the EVM, and look for the string CCCCCCC on the UART.rh³…�ri³}rj³(jÅXC. Power cycle the EVM, and look for the string CCCCCCC on the UART.jÆjZ³ubeubaubeubeubeubjÇ)�rk³}rl³(jÅUjÆj;ƒjÎj¥‚jÐjÑjÒ}rm³(jÔ]jÕ]jÖ]j×]rn³Uc66xro³ajÚ]rp³h·aujÜKWjÝhjÞ]rq³(jà)�rr³}rs³(jÅXC66xrt³jÆjk³jÎj¥‚jÐjäjÒ}ru³(jÔ]jÕ]jÖ]j×]jÚ]ujÜKWjÝhjÞ]rv³jçXC66xrw³…�rx³}ry³(jÅjt³jÆjr³ubaubj7)�rz³}r{³(jÅXDhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_C66xjÆjk³jÎj:XSsource/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_C66x.rst.incr|³…�r}³}r~³bjÐj>jÒ}r³(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r€³jçXDhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_C66xr�³…�r‚³}rƒ³(jÅUjÆjz³ubaubjÇ)�r„³}r…³(jÅUjKjÆjk³jÎj}³jÐjÑjÒ}r†³(jÔ]r‡³Xoverviewrˆ³ajÕ]jÖ]j×]r‰³Uid87rгajÚ]ujÜKjÝhjÞ]r‹³(jà)�rŒ³}r�³(jÅXOverviewr޳jÆj„³jÎj}³jÐjäjÒ}r�³(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r�³jçXOverviewr‘³…�r’³}r“³(jÅj޳jÆjŒ³ubaubjò)�r”³}r•³(jÅXžC66x SOCs use the Intermediate Boot-Loader (IBL) to initialize and setup the SOC for specific boot modes. The table below illustrates the supported bootmodes:r–³jÆj„³jÎj}³jÐjõjÒ}r—³(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r˜³jçXžC66x SOCs use the Intermediate Boot-Loader (IBL) to initialize and setup the SOC for specific boot modes. The table below illustrates the supported bootmodes:r™³…�rš³}r›³(jÅj–³jÆj”³ubaubjy )�rœ³}r�³(jÅUjÆj„³jÎj}³jÐjÔ jÒ}rž³(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŸ³j~ )�r ³}r¡³(jÅUjÒ}r¢³(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjœ³jÞ]r£³(jƒ )�r¤³}r¥³(jÅUjÒ}r¦³(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK&ujÆj ³jÞ]jÐj‡ ubjƒ )�r§³}r¨³(jÅUjÒ}r©³(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj ³jÞ]jÐj‡ ubjƒ )�rª³}r«³(jÅUjÒ}r¬³(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆj ³jÞ]jÐj‡ ubj‹ )�r­³}r®³(jÅUjÒ}r¯³(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ³jÞ]r°³j� )�r±³}r²³(jÅUjÒ}r³³(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­³jÞ]r´³(j• )�rµ³}r¶³(jÅUjÒ}r·³(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±³jÞ]r¸³jò)�r¹³}rº³(jÅX Boot Moder»³jÆjµ³jÎj}³jÐjõjÒ}r¼³(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r½³jçX Boot Moder¾³…�r¿³}rÀ³(jÅj»³jÆj¹³ubaubajÐj¢ ubj• )�rÁ³}r³(jÅUjÒ}ró(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±³jÞ]rijjò)�rų}rƳ(jÅX TMDSEVM6678rdzjÆjÁ³jÎj}³jÐjõjÒ}rȳ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rɳjçX TMDSEVM6678rʳ…�r˳}r̳(jÅjdzjÆjųubaubajÐj¢ ubj• )�rͳ}rγ(jÅUjÒ}rϳ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±³jÞ]rгjò)�rѳ}rÒ³(jÅX TMDXEVM6657rÓ³jÆjͳjÎj}³jÐjõjÒ}rÔ³(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rÕ³jçX TMDXEVM6657rÖ³…�r׳}rس(jÅjÓ³jÆjѳubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rÙ³}rÚ³(jÅUjÒ}rÛ³(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ³jÞ]rܳ(j� )�rݳ}rÞ³(jÅUjÒ}rß³(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙ³jÞ]rà³(j• )�rá³}râ³(jÅUjÒ}rã³(jÔ]jÕ]jÖ]j×]jÚ]ujÆjݳjÞ]rä³jò)�rå³}ræ³(jÅX#NOR boot via IBL over I2C\ :sup:`1`jÆjá³jÎj}³jÐjõjÒ}rç³(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rè³(jçXNOR boot via IBL over I2Cré³…�rê³}rë³(jÅXNOR boot via IBL over I2C\ jÆjå³ubcdocutils.nodes superscript rì³)�rí³}rî³(jÅX:sup:`1`jÒ}rï³(jÔ]jÕ]jÖ]j×]jÚ]ujÆjå³jÞ]rð³jçX1…�rñ³}rò³(jÅUjÆjí³ubajÐU superscriptró³ubeubajÐj¢ ubj• )�rô³}rõ³(jÅUjÒ}rö³(jÔ]jÕ]jÖ]j×]jÚ]ujÆjݳjÞ]r÷³jò)�rø³}rù³(jÅXYesrú³jÆjô³jÎj}³jÐjõjÒ}rû³(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rü³jçXYesrý³…�rþ³}rÿ³(jÅjú³jÆjø³ubaubajÐj¢ ubj• )�r´}r´(jÅUjÒ}r´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjݳjÞ]r´jò)�r´}r´(jÅXYesr´jÆj´jÎj}³jÐjõjÒ}r´(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r´jçXYesr ´…�r ´}r ´(jÅj´jÆj´ubaubajÐj¢ ubejÐj£ ubj� )�r ´}r ´(jÅUjÒ}r´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙ³jÞ]r´(j• )�r´}r´(jÅUjÒ}r´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ´jÞ]r´jò)�r´}r´(jÅX$NAND boot via IBL over I2C\ :sup:`1`jÆj´jÎj}³jÐjõjÒ}r´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r´(jçXNAND boot via IBL over I2Cr´…�r´}r´(jÅXNAND boot via IBL over I2C\ jÆj´ubjì³)�r´}r´(jÅX:sup:`1`jÒ}r´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´jÞ]r´jçX1…�r´}r ´(jÅUjÆj´ubajÐjó³ubeubajÐj¢ ubj• )�r!´}r"´(jÅUjÒ}r#´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ´jÞ]r$´jò)�r%´}r&´(jÅXYesr'´jÆj!´jÎj}³jÐjõjÒ}r(´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r)´jçXYesr*´…�r+´}r,´(jÅj'´jÆj%´ubaubajÐj¢ ubj• )�r-´}r.´(jÅUjÒ}r/´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ´jÞ]r0´jò)�r1´}r2´(jÅXYesr3´jÆj-´jÎj}³jÐjõjÒ}r4´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r5´jçXYesr6´…�r7´}r8´(jÅj3´jÆj1´ubaubajÐj¢ ubejÐj£ ubj� )�r9´}r:´(jÅUjÒ}r;´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙ³jÞ]r<´(j• )�r=´}r>´(jÅUjÒ}r?´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9´jÞ]r@´jò)�rA´}rB´(jÅX$TFTP boot via IBL over I2C\ :sup:`1`jÆj=´jÎj}³jÐjõjÒ}rC´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rD´(jçXTFTP boot via IBL over I2CrE´…�rF´}rG´(jÅXTFTP boot via IBL over I2C\ jÆjA´ubjì³)�rH´}rI´(jÅX:sup:`1`jÒ}rJ´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjA´jÞ]rK´jçX1…�rL´}rM´(jÅUjÆjH´ubajÐjó³ubeubajÐj¢ ubj• )�rN´}rO´(jÅUjÒ}rP´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9´jÞ]rQ´jò)�rR´}rS´(jÅXYesrT´jÆjN´jÎj}³jÐjõjÒ}rU´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rV´jçXYesrW´…�rX´}rY´(jÅjT´jÆjR´ubaubajÐj¢ ubj• )�rZ´}r[´(jÅUjÒ}r\´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9´jÞ]r]´jò)�r^´}r_´(jÅXYesr`´jÆjZ´jÎj}³jÐjõjÒ}ra´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rb´jçXYesrc´…�rd´}re´(jÅj`´jÆj^´ubaubajÐj¢ ubejÐj£ ubj� )�rf´}rg´(jÅUjÒ}rh´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙ³jÞ]ri´(j• )�rj´}rk´(jÅUjÒ}rl´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjf´jÞ]rm´jò)�rn´}ro´(jÅXI2C POST boot\ :sup:`2`jÆjj´jÎj}³jÐjõjÒ}rp´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rq´(jçX I2C POST bootrr´…�rs´}rt´(jÅXI2C POST boot\ jÆjn´ubjì³)�ru´}rv´(jÅX:sup:`2`jÒ}rw´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjn´jÞ]rx´jçX2…�ry´}rz´(jÅUjÆju´ubajÐjó³ubeubajÐj¢ ubj• )�r{´}r|´(jÅUjÒ}r}´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjf´jÞ]r~´jò)�r´}r€´(jÅXYesr�´jÆj{´jÎj}³jÐjõjÒ}r‚´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rƒ´jçXYesr„´…�r…´}r†´(jÅj�´jÆj´ubaubajÐj¢ ubj• )�r‡´}rˆ´(jÅUjÒ}r‰´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjf´jÞ]rŠ´jò)�r‹´}rŒ´(jÅXYesr�´jÆj‡´jÎj}³jÐjõjÒ}rŽ´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�´jçXYesr�´…�r‘´}r’´(jÅj�´jÆj‹´ubaubajÐj¢ ubejÐj£ ubj� )�r“´}r”´(jÅUjÒ}r•´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙ³jÞ]r–´(j• )�r—´}r˜´(jÅUjÒ}r™´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“´jÞ]rš´jò)�r›´}rœ´(jÅX Ethernet bootr�´jÆj—´jÎj}³jÐjõjÒ}rž´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rŸ´jçX Ethernet bootr ´…�r¡´}r¢´(jÅj�´jÆj›´ubaubajÐj¢ ubj• )�r£´}r¤´(jÅUjÒ}r¥´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“´jÞ]r¦´jò)�r§´}r¨´(jÅXYesr©´jÆj£´jÎj}³jÐjõjÒ}rª´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r«´jçXYesr¬´…�r­´}r®´(jÅj©´jÆj§´ubaubajÐj¢ ubj• )�r¯´}r°´(jÅUjÒ}r±´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“´jÞ]r²´jò)�r³´}r´´(jÅXYesrµ´jÆj¯´jÎj}³jÐjõjÒ}r¶´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r·´jçXYesr¸´…�r¹´}rº´(jÅjµ´jÆj³´ubaubajÐj¢ ubejÐj£ ubj� )�r»´}r¼´(jÅUjÒ}r½´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙ³jÞ]r¾´(j• )�r¿´}rÀ´(jÅUjÒ}rÁ´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»´jÞ]r´jò)�rô}rÄ´(jÅX SRIO bootrÅ´jÆj¿´jÎj}³jÐjõjÒ}rÆ´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÇ´jçX SRIO bootrÈ´…�rÉ´}rÊ´(jÅjÅ´jÆjôubaubajÐj¢ ubj• )�rË´}rÌ´(jÅUjÒ}rÍ´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»´jÞ]rδjò)�rÏ´}rд(jÅXYesrÑ´jÆjË´jÎj}³jÐjõjÒ}rÒ´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÓ´jçXYesrÔ´…�rÕ´}rÖ´(jÅjÑ´jÆjÏ´ubaubajÐj¢ ubj• )�r×´}rØ´(jÅUjÒ}rÙ´(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»´jÞ]rÚ´jò)�rÛ´}rÜ´(jÅXYesrÝ´jÆj×´jÎj}³jÐjõjÒ}rÞ´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rß´jçXYesrà´…�rá´}râ´(jÅjÝ´jÆjÛ´ubaubajÐj¢ ubejÐj£ ubj� )�rã´}rä´(jÅUjÒ}rå´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙ³jÞ]ræ´(j• )�rç´}rè´(jÅUjÒ}ré´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjã´jÞ]rê´jò)�rë´}rì´(jÅX PCIe bootrí´jÆjç´jÎj}³jÐjõjÒ}rî´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rï´jçX PCIe bootrð´…�rñ´}rò´(jÅjí´jÆjë´ubaubajÐj¢ ubj• )�ró´}rô´(jÅUjÒ}rõ´(jÔ]jÕ]jÖ]j×]jÚ]ujÆjã´jÞ]rö´jò)�r÷´}rø´(jÅXYesrù´jÆjó´jÎj}³jÐjõjÒ}rú´(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rû´jçXYesrü´…�rý´}rþ´(jÅjù´jÆj÷´ubaubajÐj¢ ubj• )�rÿ´}rµ(jÅUjÒ}rµ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjã´jÞ]rµjò)�rµ}rµ(jÅXYesrµjÆjÿ´jÎj}³jÐjõjÒ}rµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rµjçXYesrµ…�r µ}r µ(jÅjµjÆjµubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjë)�r µ}r µ(jÅX_#. Support boot over I2C bus address 0x51 #. Support POST boot over I2C bus address 0x50 #. Only ELF and BBLOB images are supported for booting #. IBL is using the first 128KB L2 local memory, any application booting from IBL should NOT use the first 128KB L2 memory, OR should only use the first 128KB L2 memory for uninitialized data sectionjÆj„³jÎNjÐjïjÒ}r µ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rµj )�rµ}rµ(jÅUjÒ}rµ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÆj µjÞ]rµ(j{)�rµ}rµ(jÅX&Support boot over I2C bus address 0x51rµjÒ}rµ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµjÞ]rµjò)�rµ}rµ(jÅjµjÆjµjÎj}³jÐjõjÒ}rµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rµjçX&Support boot over I2C bus address 0x51rµ…�rµ}rµ(jÅjµjÆjµubaubajÐjubj{)�rµ}r µ(jÅX,Support POST boot over I2C bus address 0x50r!µjÒ}r"µ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµjÞ]r#µjò)�r$µ}r%µ(jÅj!µjÆjµjÎj}³jÐjõjÒ}r&µ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r'µjçX,Support POST boot over I2C bus address 0x50r(µ…�r)µ}r*µ(jÅj!µjÆj$µubaubajÐjubj{)�r+µ}r,µ(jÅX4Only ELF and BBLOB images are supported for bootingr-µjÒ}r.µ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµjÞ]r/µjò)�r0µ}r1µ(jÅj-µjÆj+µjÎj}³jÐjõjÒ}r2µ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r3µjçX4Only ELF and BBLOB images are supported for bootingr4µ…�r5µ}r6µ(jÅj-µjÆj0µubaubajÐjubj{)�r7µ}r8µ(jÅXÄIBL is using the first 128KB L2 local memory, any application booting from IBL should NOT use the first 128KB L2 memory, OR should only use the first 128KB L2 memory for uninitialized data sectionjÒ}r9µ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµjÞ]r:µjò)�r;µ}r<µ(jÅXÄIBL is using the first 128KB L2 local memory, any application booting from IBL should NOT use the first 128KB L2 memory, OR should only use the first 128KB L2 memory for uninitialized data sectionr=µjÆj7µjÎj}³jÐjõjÒ}r>µ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r?µjçXÄIBL is using the first 128KB L2 local memory, any application booting from IBL should NOT use the first 128KB L2 memory, OR should only use the first 128KB L2 memory for uninitialized data sectionr@µ…�rAµ}rBµ(jÅj=µjÆj;µubaubajÐjubejÐj ubaubjò)�rCµ}rDµ(jÅX_Please refer to the boot mode dip switch settings for different boot modes on `TMDSEVM6678L_EVM `__, and `TMDSEVM6657L_EVM `__ that IBL supports.jÆj„³jÎj}³jÐjõjÒ}rEµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÝhjÞ]rFµ(jçXNPlease refer to the boot mode dip switch settings for different boot modes on rGµ…�rHµ}rIµ(jÅXNPlease refer to the boot mode dip switch settings for different boot modes on jÆjCµubjû)�rJµ}rKµ(jÅX|`TMDSEVM6678L_EVM `__jÒ}rLµ(UnameXTMDSEVM6678L_EVMjXehttp://processors.wiki.ti.com/index.php/TMDXEVM6678L_EVM_Hardware_Setup#Boot_Mode_Dip_Switch_Settingsj×]jÖ]jÔ]jÕ]jÚ]ujÆjCµjÞ]rMµjçXTMDSEVM6678L_EVMrNµ…�rOµ}rPµ(jÅUjÆjJµubajÐjÿubjçX, and rQµ…�rRµ}rSµ(jÅX, and jÆjCµubjû)�rTµ}rUµ(jÅX|`TMDSEVM6657L_EVM `__jÒ}rVµ(UnameXTMDSEVM6657L_EVMjXehttp://processors.wiki.ti.com/index.php/TMDSEVM6657L_EVM_Hardware_Setup#Boot_Mode_Dip_Switch_Settingsj×]jÖ]jÔ]jÕ]jÚ]ujÆjCµjÞ]rWµjçXTMDSEVM6657L_EVMrXµ…�rYµ}rZµ(jÅUjÆjTµubajÐjÿubjçX that IBL supports.r[µ…�r\µ}r]µ(jÅX that IBL supports.jÆjCµubeubeubjÇ)�r^µ}r_µ(jÅUjKjÆjk³jÎj}³jÐjÑjÒ}r`µ(jÔ]raµXflashing the bootloaderrbµajÕ]jÖ]j×]rcµUflashing-the-bootloaderrdµajÚ]ujÜK,jÝhjÞ]reµ(jà)�rfµ}rgµ(jÅXFlashing the BootloaderrhµjÆj^µjÎj}³jÐjäjÒ}riµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÝhjÞ]rjµjçXFlashing the Bootloaderrkµ…�rlµ}rmµ(jÅjhµjÆjfµubaubjò)�rnµ}roµ(jÅX1IBL needs to be flashed into EEPROM address 0x51.rpµjÆj^µjÎj}³jÐjõjÒ}rqµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÝhjÞ]rrµjçX1IBL needs to be flashed into EEPROM address 0x51.rsµ…�rtµ}ruµ(jÅjpµjÆjnµubaubjò)�rvµ}rwµ(jÅXÌRefer to `Processor SDK RTOS Flashing Bootable Images `__] for instructions on using the script, program_evm.js, to automatically flash your device.jÆj^µjÎj}³jÐjõjÒ}rxµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÝhjÞ]ryµ(jçX Refer to rzµ…�r{µ}r|µ(jÅX Refer to jÆjvµubjû)�r}µ}r~µ(jÅXh`Processor SDK RTOS Flashing Bootable Images `__jÒ}rµ(UnameX+Processor SDK RTOS Flashing Bootable ImagesjX6http://processors.wiki.ti.com/index.php/Program_EVM_UGj×]jÖ]jÔ]jÕ]jÚ]ujÆjvµjÞ]r€µjçX+Processor SDK RTOS Flashing Bootable Imagesr�µ…�r‚µ}rƒµ(jÅUjÆj}µubajÐjÿubjçX[] for instructions on using the script, program_evm.js, to automatically flash your device.r„µ…�r…µ}r†µ(jÅX[] for instructions on using the script, program_evm.js, to automatically flash your device.jÆjvµubeubeubjÇ)�r‡µ}rˆµ(jÅUjKjÆjk³jÎj}³jÐjÑjÒ}r‰µ(jÔ]rеXbootloader execution sequencer‹µajÕ]jÖ]j×]rŒµUid88r�µajÚ]ujÜK6jÝhjÞ]r޵(jà)�r�µ}r�µ(jÅXBootloader Execution Sequencer‘µjÆj‡µjÎj}³jÐjäjÒ}r’µ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÝhjÞ]r“µjçXBootloader Execution Sequencer”µ…�r•µ}r–µ(jÅj‘µjÆj�µubaubjò)�r—µ}r˜µ(jÅX§IBL is flashed into I2C EEPROM bus address 0x51. IBL provides a workaround for the PLL lockup issue (please refer to C6678 errata document, February 2011, advisory 8 for details on the PLL lockup issue). For ROM boot modes (EMAC,SRIO,PCIe,Hyperlink etc) and I2C boot mode with bus address 0x50, DSP will initially boot from I2C EEPROM bus address 0x51 which does the PLL reset workaround, updates the DEVSTAT for appropriate values based on the DIP switch settings (SW3 through SW6 settings) and then re enters the ROM to accomplish the desired boot mode. Please note that the re entry is done for all boot modes except for PCIe boot mode and I2C boot mode with bus address 0x51.r™µjÆj‡µjÎj}³jÐjõjÒ}ršµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÝhjÞ]r›µjçX§IBL is flashed into I2C EEPROM bus address 0x51. IBL provides a workaround for the PLL lockup issue (please refer to C6678 errata document, February 2011, advisory 8 for details on the PLL lockup issue). For ROM boot modes (EMAC,SRIO,PCIe,Hyperlink etc) and I2C boot mode with bus address 0x50, DSP will initially boot from I2C EEPROM bus address 0x51 which does the PLL reset workaround, updates the DEVSTAT for appropriate values based on the DIP switch settings (SW3 through SW6 settings) and then re enters the ROM to accomplish the desired boot mode. Please note that the re entry is done for all boot modes except for PCIe boot mode and I2C boot mode with bus address 0x51.rœµ…�r�µ}ržµ(jÅj™µjÆj—µubaubjò)�rŸµ}r µ(jÅX$Below are the steps done in the IBL:r¡µjÆj‡µjÎj}³jÐjõjÒ}r¢µ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÝhjÞ]r£µjçX$Below are the steps done in the IBL:r¤µ…�r¥µ}r¦µ(jÅj¡µjÆjŸµubaubj )�r§µ}r¨µ(jÅUjÆj‡µjÎj}³jÐj jÒ}r©µ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKEjÝhjÞ]rªµ(j{)�r«µ}r¬µ(jÅXFPGA samples the bootmode pinsr­µjÆj§µjÎj}³jÐjjÒ}r®µ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¯µjò)�r°µ}r±µ(jÅj­µjÆj«µjÎj}³jÐjõjÒ}r²µ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÞ]r³µjçXFPGA samples the bootmode pinsr´µ…�rµµ}r¶µ(jÅj­µjÆj°µubaubaubj{)�r·µ}r¸µ(jÅX4FPGA forces the DSP to boot via I2C bus address 0x51r¹µjÆj§µjÎj}³jÐjjÒ}rºµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r»µjò)�r¼µ}r½µ(jÅj¹µjÆj·µjÎj}³jÐjõjÒ}r¾µ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]r¿µjçX4FPGA forces the DSP to boot via I2C bus address 0x51rÀµ…�rÁµ}rµ(jÅj¹µjÆj¼µubaubaubj{)�rõ}rĵ(jÅX3PLL is initialized correctly by the IBL on the I2C.rŵjÆj§µjÎj}³jÐjjÒ}rƵ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rǵjò)�rȵ}rɵ(jÅjŵjÆjõjÎj}³jÐjõjÒ}rʵ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÞ]r˵jçX3PLL is initialized correctly by the IBL on the I2C.r̵…�r͵}rε(jÅjŵjÆjȵubaubaubj{)�rϵ}rе(jÅX5IBL reads the sampled bootmode from an FPGA register.rѵjÆj§µjÎj}³jÐjjÒ}rÒµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÓµjò)�rÔµ}rÕµ(jÅjѵjÆjϵjÎj}³jÐjõjÒ}rÖµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]r×µjçX5IBL reads the sampled bootmode from an FPGA register.rص…�rÙµ}rÚµ(jÅjѵjÆjÔµubaubaubj{)�rÛµ}rܵ(jÅX‰IBL checks the bootmode, if it is not I2C boot or it is I2C boot but with bus address 0x50, IBL writes bootmode into the DEVSTAT registerjÆj§µjÎj}³jÐjjÒ}rݵ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÞµjò)�rßµ}ràµ(jÅX‰IBL checks the bootmode, if it is not I2C boot or it is I2C boot but with bus address 0x50, IBL writes bootmode into the DEVSTAT registerráµjÆjÛµjÎj}³jÐjõjÒ}râµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÞ]rãµjçX‰IBL checks the bootmode, if it is not I2C boot or it is I2C boot but with bus address 0x50, IBL writes bootmode into the DEVSTAT registerräµ…�råµ}ræµ(jÅjáµjÆjßµubaubaubj{)�rçµ}rèµ(jÅXÔIBL then checks if the bootmode is PCIE boot or not. If it is, it executes some PCIE workaround to configure the PCIE registers (mainly to accept spread spectrum clock) and stays inside IBL waiting for PCIe boot.jÆj§µjÎj}³jÐjjÒ}réµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rêµjò)�rëµ}rìµ(jÅXÔIBL then checks if the bootmode is PCIE boot or not. If it is, it executes some PCIE workaround to configure the PCIE registers (mainly to accept spread spectrum clock) and stays inside IBL waiting for PCIe boot.ríµjÆjçµjÎj}³jÐjõjÒ}rîµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÞ]rïµjçXÔIBL then checks if the bootmode is PCIE boot or not. If it is, it executes some PCIE workaround to configure the PCIE registers (mainly to accept spread spectrum clock) and stays inside IBL waiting for PCIe boot.rðµ…�rñµ}ròµ(jÅjíµjÆjëµubaubaubj{)�róµ}rôµ(jÅX¾If it is not PCIE boot mode, IBL writes the Boot ROM entry address into the DSP Program Counter, DSP executes the desired internal ROM boot mode or boot from I2C bus address 0x50 as normal. jÆj§µjÎj}³jÐjjÒ}rõµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]röµjò)�r÷µ}røµ(jÅX½If it is not PCIE boot mode, IBL writes the Boot ROM entry address into the DSP Program Counter, DSP executes the desired internal ROM boot mode or boot from I2C bus address 0x50 as normal.rùµjÆjóµjÎj}³jÐjõjÒ}rúµ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÞ]rûµjçX½If it is not PCIE boot mode, IBL writes the Boot ROM entry address into the DSP Program Counter, DSP executes the desired internal ROM boot mode or boot from I2C bus address 0x50 as normal.rüµ…�rýµ}rþµ(jÅjùµjÆj÷µubaubaubeubeubjÇ)�rÿµ}r¶(jÅUjKjÆjk³jÎj}³jÐjÑjÒ}r¶(jÔ]r¶X compilationr¶ajÕ]jÖ]j×]r¶U compilationr¶ajÚ]ujÜKTjÝhjÞ]r¶(jà)�r¶}r¶(jÅX Compilationr ¶jÆjÿµjÎj}³jÐjäjÒ}r ¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÝhjÞ]r ¶jçX Compilationr ¶…�r ¶}r¶(jÅj ¶jÆj¶ubaubjò)�r¶}r¶(jÅXThe recommended rule-of-thumb to compiling projects in the Processor SDK RTOS package is to use the makefiles provided. The makefiles are usable after setting up your shell/terminal/command prompt environment with the setupenv.bat or setupenv.sh script located inr¶jÆjÿµjÎj}³jÐjõjÒ}r¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÝhjÞ]r¶jçXThe recommended rule-of-thumb to compiling projects in the Processor SDK RTOS package is to use the makefiles provided. The makefiles are usable after setting up your shell/terminal/command prompt environment with the setupenv.bat or setupenv.sh script located inr¶…�r¶}r¶(jÅj¶jÆj¶ubaubj)�r¶}r¶(jÅX:[SDK Install Path]/processor_sdk_rtos__jÆjÿµjÎj}³jÐjjÒ}r¶(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMv)jÝhjÞ]r¶jçX:[SDK Install Path]/processor_sdk_rtos__r¶…�r¶}r¶(jÅUjÆj¶ubaubjò)�r¶}r¶(jÅXºRefer to `Processor SDK RTOS Building the SDK `__ guide on how to setup your environment for building within any of the Processor SDK RTOS packages.jÆjÿµjÎj}³jÐjõjÒ}r ¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜK_jÝhjÞ]r!¶(jçX Refer to r"¶…�r#¶}r$¶(jÅX Refer to jÆj¶ubjû)�r%¶}r&¶(jÅXN`Processor SDK RTOS Building the SDK `__jÒ}r'¶(UnameX#Processor SDK RTOS Building the SDKjX$index_overview.html#building-the-sdkj×]jÖ]jÔ]jÕ]jÚ]ujÆj¶jÞ]r(¶jçX#Processor SDK RTOS Building the SDKr)¶…�r*¶}r+¶(jÅUjÆj%¶ubajÐjÿubjçXc guide on how to setup your environment for building within any of the Processor SDK RTOS packages.r,¶…�r-¶}r.¶(jÅXc guide on how to setup your environment for building within any of the Processor SDK RTOS packages.jÆj¶ubeubjë)�r/¶}r0¶(jÅXC66x projects are supported by C6000 Code Generation Tools 7.4.x. Make sure your environment variable, C6X_GEN_INSTALL_PATH, is pointing to a valid C6000 compiler. Compiling IBL invokes the C6000 compiler, cl6x, directly. Your PATH variable will need to have $C6X_GEN_INSTALL_PATH/bin.jÆjÿµjÎj}³jÐjïjÒ}r1¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r2¶jò)�r3¶}r4¶(jÅXC66x projects are supported by C6000 Code Generation Tools 7.4.x. Make sure your environment variable, C6X_GEN_INSTALL_PATH, is pointing to a valid C6000 compiler. Compiling IBL invokes the C6000 compiler, cl6x, directly. Your PATH variable will need to have $C6X_GEN_INSTALL_PATH/bin.r5¶jÆj/¶jÎj}³jÐjõjÒ}r6¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜKdjÞ]r7¶jçXC66x projects are supported by C6000 Code Generation Tools 7.4.x. Make sure your environment variable, C6X_GEN_INSTALL_PATH, is pointing to a valid C6000 compiler. Compiling IBL invokes the C6000 compiler, cl6x, directly. Your PATH variable will need to have $C6X_GEN_INSTALL_PATH/bin.r8¶…�r9¶}r:¶(jÅj5¶jÆj3¶ubaubaubjò)�r;¶}r<¶(jÅX The IBL package can be found in:r=¶jÆjÿµjÎj}³jÐjõjÒ}r>¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÝhjÞ]r?¶jçX The IBL package can be found in:r@¶…�rA¶}rB¶(jÅj=¶jÆj;¶ubaubj)�rC¶}rD¶(jÅX@[SDK Install Path]/pdk__/packages/ti/boot/ibljÆjÿµjÎj}³jÐjjÒ}rE¶(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM‡)jÝhjÞ]rF¶jçX@[SDK Install Path]/pdk__/packages/ti/boot/iblrG¶…�rH¶}rI¶(jÅUjÆjC¶ubaubjò)�rJ¶}rK¶(jÅX To build:rL¶jÆjÿµjÎj}³jÐjõjÒ}rM¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÝhjÞ]rN¶jçX To build:rO¶…�rP¶}rQ¶(jÅjL¶jÆjJ¶ubaubj)�rR¶}rS¶(jÅX�cd [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/make make ENDIAN= I2C_BUS_ADDR=0x51jÆjÿµjÎj}³jÐjjÒ}rT¶(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM�)jÝhjÞ]rU¶jçX�cd [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/make make ENDIAN= I2C_BUS_ADDR=0x51rV¶…�rW¶}rX¶(jÅUjÆjR¶ubaubjò)�rY¶}rZ¶(jÅXz** can be of values: **evm_c6657_i2c** or **evm_c6678_i2c**. (For C6657 or C6678 platforms, respectively)jÆjÿµjÎj}³jÐjõjÒ}r[¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÝhjÞ]r\¶(jM)�r]¶}r^¶(jÅX**jÒ}r_¶(jÔ]jÕ]jÖ]j×]jÚ]ujÆjY¶jÞ]r`¶jçXra¶…�rb¶}rc¶(jÅUjÆj]¶ubajÐjUubjçX can be of values: rd¶…�re¶}rf¶(jÅX can be of values: jÆjY¶ubjÚ)�rg¶}rh¶(jÅX**evm_c6657_i2c**jÒ}ri¶(jÔ]jÕ]jÖ]j×]jÚ]ujÆjY¶jÞ]rj¶jçX evm_c6657_i2crk¶…�rl¶}rm¶(jÅUjÆjg¶ubajÐjâubjçX or rn¶…�ro¶}rp¶(jÅX or jÆjY¶ubjÚ)�rq¶}rr¶(jÅX**evm_c6678_i2c**jÒ}rs¶(jÔ]jÕ]jÖ]j×]jÚ]ujÆjY¶jÞ]rt¶jçX evm_c6678_i2cru¶…�rv¶}rw¶(jÅUjÆjq¶ubajÐjâubjçX.. (For C6657 or C6678 platforms, respectively)rx¶…�ry¶}rz¶(jÅX.. (For C6657 or C6678 platforms, respectively)jÆjY¶ubeubjò)�r{¶}r|¶(jÅX=** can be of values: **little** or **big**r}¶jÆjÿµjÎj}³jÐjõjÒ}r~¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÝhjÞ]r¶(jM)�r€¶}r�¶(jÅX**jÒ}r‚¶(jÔ]jÕ]jÖ]j×]jÚ]ujÆj{¶jÞ]rƒ¶jçXr„¶…�r…¶}r†¶(jÅUjÆj€¶ubajÐjUubjçX can be of values: r‡¶…�rˆ¶}r‰¶(jÅX can be of values: jÆj{¶ubjÚ)�rж}r‹¶(jÅX **little**jÒ}rŒ¶(jÔ]jÕ]jÖ]j×]jÚ]ujÆj{¶jÞ]r�¶jçXlittler޶…�r�¶}r�¶(jÅUjÆjжubajÐjâubjçX or r‘¶…�r’¶}r“¶(jÅX or jÆj{¶ubjÚ)�r”¶}r•¶(jÅX**big**jÒ}r–¶(jÔ]jÕ]jÖ]j×]jÚ]ujÆj{¶jÞ]r—¶jçXbigr˜¶…�r™¶}rš¶(jÅUjÆj”¶ubajÐjâubeubjò)�r›¶}rœ¶(jÅXk*I2C_BUS_ADDR* specifies the I2C bus address to use, and has to be 0x51 for C66x SOCs to access the EEPROM.jÆjÿµjÎj}³jÐjõjÒ}r�¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÝhjÞ]rž¶(jM)�rŸ¶}r ¶(jÅX*I2C_BUS_ADDR*jÒ}r¡¶(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›¶jÞ]r¢¶jçX I2C_BUS_ADDRr£¶…�r¤¶}r¥¶(jÅUjÆjŸ¶ubajÐjUubjçX] specifies the I2C bus address to use, and has to be 0x51 for C66x SOCs to access the EEPROM.r¦¶…�r§¶}r¨¶(jÅX] specifies the I2C bus address to use, and has to be 0x51 for C66x SOCs to access the EEPROM.jÆj›¶ubeubjò)�r©¶}rª¶(jÅXxThe resulting output will be in [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/make/bin directory.r«¶jÆjÿµjÎj}³jÐjõjÒ}r¬¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r­¶jçXxThe resulting output will be in [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/make/bin directory.r®¶…�r¯¶}r°¶(jÅj«¶jÆj©¶ubaubjë)�r±¶}r²¶(jÅXîFor developers, who want to build IBL in Windows environment. Please build this using MinGW environment using the instructions provided in the build_instructions.txt that can be found under pdk_c66xx_xx_xx\packages\ti\boot\ibl\doc\ibl\docjÆjÿµjÎj}³jÐjïjÒ}r³¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r´¶jò)�rµ¶}r¶¶(jÅXîFor developers, who want to build IBL in Windows environment. Please build this using MinGW environment using the instructions provided in the build_instructions.txt that can be found under pdk_c66xx_xx_xx\packages\ti\boot\ibl\doc\ibl\docjÆj±¶jÎj}³jÐjõjÒ}r·¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]r¸¶jçXçFor developers, who want to build IBL in Windows environment. Please build this using MinGW environment using the instructions provided in the build_instructions.txt that can be found under pdk_c66xx_xx_xxpackagestibootibldocibldocr¹¶…�rº¶}r»¶(jÅXîFor developers, who want to build IBL in Windows environment. Please build this using MinGW environment using the instructions provided in the build_instructions.txt that can be found under pdk_c66xx_xx_xx\packages\ti\boot\ibl\doc\ibl\docjÆjµ¶ubaubaubjc)�r¼¶}r½¶(jÅUjÆjÿµjÎj}³jÐjfjÒ}r¾¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‰jÝhjÞ]r¿¶ji)�rÀ¶}rÁ¶(jÅUjlKjÆj¼¶jÎj}³jÐjÜjÒ}r¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�rö}rĶ(jÅUjKjÆjk³jÎj}³jÐjÑjÒ}rŶ(jÔ]rƶX flash writersrǶajÕ]jÖ]j×]rȶU flash-writersrɶajÚ]ujÜKŒjÝhjÞ]rʶ(jà)�r˶}r̶(jÅX Flash WritersrͶjÆjöjÎj}³jÐjäjÒ}rζ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÝhjÞ]r϶jçX Flash Writersrж…�rѶ}rÒ¶(jÅjͶjÆj˶ubaubjò)�rÓ¶}rÔ¶(jÅXÏThere are three types of flash memory provided with the C66x SOCs: EEPROM, NOR, and NAND. Each of these flash memory can hold bootable application binaries. As such, respective flash writers are provided in:rÕ¶jÆjöjÎj}³jÐjõjÒ}rÖ¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÝhjÞ]r×¶jçXÏThere are three types of flash memory provided with the C66x SOCs: EEPROM, NOR, and NAND. Each of these flash memory can hold bootable application binaries. As such, respective flash writers are provided in:rض…�rÙ¶}rÚ¶(jÅjÕ¶jÆjÓ¶ubaubj)�rÛ¶}rܶ(jÅXC[SDK Install Path]/pdk__/packages/ti/boot/writerjÆjöjÎj}³jÐjjÒ}rݶ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM­)jÝhjÞ]rÞ¶jçXC[SDK Install Path]/pdk__/packages/ti/boot/writerrß¶…�rà¶}rá¶(jÅUjÆjÛ¶ubaubjë)�râ¶}rã¶(jÅXÒPlease set your EVM to **NO BOOT** mode before loading and running any of the flash writers. Flashing in NO BOOT mode is the safest way since it eliminates any unwarranted interactions with booted applications.jÆjöjÎj}³jÐjïjÒ}rä¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rå¶jò)�ræ¶}rç¶(jÅXÒPlease set your EVM to **NO BOOT** mode before loading and running any of the flash writers. Flashing in NO BOOT mode is the safest way since it eliminates any unwarranted interactions with booted applications.jÆjâ¶jÎj}³jÐjõjÒ}rè¶(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÞ]ré¶(jçXPlease set your EVM to rê¶…�rë¶}rì¶(jÅXPlease set your EVM to jÆjæ¶ubjÚ)�rí¶}rî¶(jÅX **NO BOOT**jÒ}rï¶(jÔ]jÕ]jÖ]j×]jÚ]ujÆjæ¶jÞ]rð¶jçXNO BOOTrñ¶…�rò¶}ró¶(jÅUjÆjí¶ubajÐjâubjçX° mode before loading and running any of the flash writers. Flashing in NO BOOT mode is the safest way since it eliminates any unwarranted interactions with booted applications.rô¶…�rõ¶}rö¶(jÅX° mode before loading and running any of the flash writers. Flashing in NO BOOT mode is the safest way since it eliminates any unwarranted interactions with booted applications.jÆjæ¶ubeubaubjÇ)�r÷¶}rø¶(jÅUjÆjöjÎj}³jÐjÑjÒ}rù¶(jÔ]jÕ]jÖ]j×]rú¶U eeprom-writerrû¶ajÚ]rü¶hçaujÜKžjÝhjÞ]rý¶(jà)�rþ¶}rÿ¶(jÅX EEPROM Writerr·jÆj÷¶jÎj}³jÐjäjÒ}r·(jÔ]jÕ]jÖ]j×]jÚ]ujÜKžjÝhjÞ]r·jçX EEPROM Writerr·…�r·}r·(jÅj·jÆjþ¶ubaubjò)�r·}r·(jÅXCThe EEPROM Writer is used to write a binary into the EEPROM memory.r·jÆj÷¶jÎj}³jÐjõjÒ}r ·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]r ·jçXCThe EEPROM Writer is used to write a binary into the EEPROM memory.r ·…�r ·}r ·(jÅj·jÆj·ubaubjÇ)�r·}r·(jÅUjKjÆj÷¶jÎj}³jÐjÑjÒ}r·(jÔ]r·j¶ajÕ]jÖ]j×]r·Uid89r·ajÚ]ujÜK£jÝhjÞ]r·(jà)�r·}r·(jÅX Compilationr·jÆj·jÎj}³jÐjäjÒ}r·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK£jÝhjÞ]r·jçX Compilationr·…�r·}r·(jÅj·jÆj·ubaubj)�r·}r·(jÅXgcd [SDK Install Path]/pdk__/packages/ti/boot/writer/eeprom//build make alljÆj·jÎj}³jÐjjÒ}r·(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÀ)jÝhjÞ]r ·jçXgcd [SDK Install Path]/pdk__/packages/ti/boot/writer/eeprom//build make allr!·…�r"·}r#·(jÅUjÆj·ubaubeubjÇ)�r$·}r%·(jÅUjKjÆj÷¶jÎj}³jÐjÑjÒ}r&·(jÔ]r'·Xusager(·ajÕ]jÖ]j×]r)·Uusager*·ajÚ]ujÜK«jÝhjÞ]r+·(jà)�r,·}r-·(jÅXUsager.·jÆj$·jÎj}³jÐjäjÒ}r/·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK«jÝhjÞ]r0·jçXUsager1·…�r2·}r3·(jÅj.·jÆj,·ubaubj )�r4·}r5·(jÅUjÆj$·jÎj}³jÐj jÒ}r6·(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK­jÝhjÞ]r7·(j{)�r8·}r9·(jÅX–Set your EVM to **NO BOOT**. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.jÆj4·jÎj}³jÐjjÒ}r:·(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r;·jò)�r<·}r=·(jÅX–Set your EVM to **NO BOOT**. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.jÆj8·jÎj}³jÐjõjÒ}r>·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK­jÞ]r?·(jçXSet your EVM to r@·…�rA·}rB·(jÅXSet your EVM to jÆj<·ubjÚ)�rC·}rD·(jÅX **NO BOOT**jÒ}rE·(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<·jÞ]rF·jçXNO BOOTrG·…�rH·}rI·(jÅUjÆjC·ubajÐjâubjçX{. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.rJ·…�rK·}rL·(jÅX{. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.jÆj<·ubeubaubj{)�rM·}rN·(jÅX‘Copy the desired binary you want to flash to [SDK Install Path]/pdk__/packages/ti/boot/writer/eeprom//bin directory.jÆj4·jÎj}³jÐjjÒ}rO·(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rP·jò)�rQ·}rR·(jÅX‘Copy the desired binary you want to flash to [SDK Install Path]/pdk__/packages/ti/boot/writer/eeprom//bin directory.rS·jÆjM·jÎj}³jÐjõjÒ}rT·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK°jÞ]rU·jçX‘Copy the desired binary you want to flash to [SDK Install Path]/pdk__/packages/ti/boot/writer/eeprom//bin directory.rV·…�rW·}rX·(jÅjS·jÆjQ·ubaubaubj{)�rY·}rZ·(jÅX?Rename the binary you copied in the previous step to "app.bin".r[·jÆj4·jÎj}³jÐjjÒ}r\·(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r]·jò)�r^·}r_·(jÅj[·jÆjY·jÎj}³jÐjõjÒ}r`·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK³jÞ]ra·jçX?Rename the binary you copied in the previous step to "app.bin".rb·…�rc·}rd·(jÅj[·jÆj^·ubaubaubj{)�re·}rf·(jÅX1In CCS, select Core 0 and open the Memory Browserrg·jÆj4·jÎj}³jÐjjÒ}rh·(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ri·jò)�rj·}rk·(jÅjg·jÆje·jÎj}³jÐjõjÒ}rl·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÞ]rm·jçX1In CCS, select Core 0 and open the Memory Browserrn·…�ro·}rp·(jÅjg·jÆjj·ubaubaubj{)�rq·}rr·(jÅXBIn the Memory Browser window, right click and select "Load Memory"rs·jÆj4·jÎj}³jÐjjÒ}rt·(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ru·jò)�rv·}rw·(jÅjs·jÆjq·jÎj}³jÐjõjÒ}rx·(jÔ]jÕ]jÖ]j×]jÚ]ujÜKµjÞ]ry·jçXBIn the Memory Browser window, right click and select "Load Memory"rz·…�r{·}r|·(jÅjs·jÆjv·ubaubaubj{)�r}·}r~·(jÅX¢Load your app.bin to 0x0C000000. Do so by selecting app.bin for the file, click Next, and input 0x0C000000 for Start Address (Type-size selected should be 32-bit)jÆj4·jÎj}³jÐjjÒ}r·(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r€·jò)�r�·}r‚·(jÅX¢Load your app.bin to 0x0C000000. Do so by selecting app.bin for the file, click Next, and input 0x0C000000 for Start Address (Type-size selected should be 32-bit)rƒ·jÆj}·jÎj}³jÐjõjÒ}r„·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¶jÞ]r…·jçX¢Load your app.bin to 0x0C000000. Do so by selecting app.bin for the file, click Next, and input 0x0C000000 for Start Address (Type-size selected should be 32-bit)r†·…�r‡·}rˆ·(jÅjƒ·jÆj�·ubaubaubj{)�r‰·}rŠ·(jÅXuLoad [SDK Install Path]/pdk__/packages/ti/boot/writer/eeprom//bin/eepromwriter_.outjÆj4·jÎj}³jÐjjÒ}r‹·(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŒ·jò)�r�·}rŽ·(jÅXuLoad [SDK Install Path]/pdk__/packages/ti/boot/writer/eeprom//bin/eepromwriter_.outr�·jÆj‰·jÎj}³jÐjõjÒ}r�·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¹jÞ]r‘·jçXuLoad [SDK Install Path]/pdk__/packages/ti/boot/writer/eeprom//bin/eepromwriter_.outr’·…�r“·}r”·(jÅj�·jÆj�·ubaubaubj{)�r•·}r–·(jÅX0Run Core 0. This will program the flash memory. jÆj4·jÎj}³jÐjjÒ}r—·(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r˜·jò)�r™·}rš·(jÅX/Run Core 0. This will program the flash memory.r›·jÆj•·jÎj}³jÐjõjÒ}rœ·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK»jÞ]r�·jçX/Run Core 0. This will program the flash memory.rž·…�rŸ·}r ·(jÅj›·jÆj™·ubaubaubeubjò)�r¡·}r¢·(jÅXRIf it succeeds, the console will print "EEPROM programming completed successfully"r£·jÆj$·jÎj}³jÐjõjÒ}r¤·(jÔ]jÕ]jÖ]j×]jÚ]ujÜK½jÝhjÞ]r¥·jçXRIf it succeeds, the console will print "EEPROM programming completed successfully"r¦·…�r§·}r¨·(jÅj£·jÆj¡·ubaubeubeubjÇ)�r©·}rª·(jÅUjÆjöjÎj}³jÐjÑjÒ}r«·(jÔ]jÕ]jÖ]j×]r¬·U nor-writerr­·ajÚ]r®·héaujÜKÁjÝhjÞ]r¯·(jà)�r°·}r±·(jÅX NOR Writerr²·jÆj©·jÎj}³jÐjäjÒ}r³·(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÝhjÞ]r´·jçX NOR Writerrµ·…�r¶·}r··(jÅj²·jÆj°·ubaubjò)�r¸·}r¹·(jÅX=The NOR Writer is used to write a binary into the NOR memory.rº·jÆj©·jÎj}³jÐjõjÒ}r»·(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÃjÝhjÞ]r¼·jçX=The NOR Writer is used to write a binary into the NOR memory.r½·…�r¾·}r¿·(jÅjº·jÆj¸·ubaubjÇ)�rÀ·}rÁ·(jÅUjKjÆj©·jÎj}³jÐjÑjÒ}r·(jÔ]r÷X compilationrÄ·ajÕ]jÖ]j×]rÅ·Uid90rÆ·ajÚ]ujÜKÆjÝhjÞ]rÇ·(jà)�rÈ·}rÉ·(jÅX CompilationrÊ·jÆjÀ·jÎj}³jÐjäjÒ}rË·(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÆjÝhjÞ]rÌ·jçX CompilationrÍ·…�rη}rÏ·(jÅjÊ·jÆjÈ·ubaubj)�rз}rÑ·(jÅXdcd [SDK Install Path]/pdk__/packages/ti/boot/writer/nor//build make alljÆjÀ·jÎj}³jÐjjÒ}rÒ·(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMã)jÝhjÞ]rÓ·jçXdcd [SDK Install Path]/pdk__/packages/ti/boot/writer/nor//build make allrÔ·…�rÕ·}rÖ·(jÅUjÆjзubaubeubjÇ)�r×·}rØ·(jÅUjKjÆj©·jÎj}³jÐjÑjÒ}rÙ·(jÔ]rÚ·j(·ajÕ]jÖ]j×]rÛ·Uid91rÜ·ajÚ]ujÜKÎjÝhjÞ]rÝ·(jà)�rÞ·}rß·(jÅXUsagerà·jÆj×·jÎj}³jÐjäjÒ}rá·(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÎjÝhjÞ]râ·jçXUsagerã·…�rä·}rå·(jÅjà·jÆjÞ·ubaubj )�ræ·}rç·(jÅUjÆj×·jÎj}³jÐj jÒ}rè·(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKÐjÝhjÞ]ré·(j{)�rê·}rë·(jÅX–Set your EVM to **NO BOOT**. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.jÆjæ·jÎj}³jÐjjÒ}rì·(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rí·jò)�rî·}rï·(jÅX–Set your EVM to **NO BOOT**. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.jÆjê·jÎj}³jÐjõjÒ}rð·(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÐjÞ]rñ·(jçXSet your EVM to rò·…�ró·}rô·(jÅXSet your EVM to jÆjî·ubjÚ)�rõ·}rö·(jÅX **NO BOOT**jÒ}r÷·(jÔ]jÕ]jÖ]j×]jÚ]ujÆjî·jÞ]rø·jçXNO BOOTrù·…�rú·}rû·(jÅUjÆjõ·ubajÐjâubjçX{. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.rü·…�rý·}rþ·(jÅX{. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.jÆjî·ubeubaubj{)�rÿ·}r¸(jÅXŽCopy the desired binary you want to flash to [SDK Install Path]/pdk__/packages/ti/boot/writer/nor//bin directory.jÆjæ·jÎj}³jÐjjÒ}r¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¸jò)�r¸}r¸(jÅXŽCopy the desired binary you want to flash to [SDK Install Path]/pdk__/packages/ti/boot/writer/nor//bin directory.r¸jÆjÿ·jÎj}³jÐjõjÒ}r¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÓjÞ]r¸jçXŽCopy the desired binary you want to flash to [SDK Install Path]/pdk__/packages/ti/boot/writer/nor//bin directory.r¸…�r ¸}r ¸(jÅj¸jÆj¸ubaubaubj{)�r ¸}r ¸(jÅX?Rename the binary you copied in the previous step to "app.bin".r ¸jÆjæ·jÎj}³jÐjjÒ}r¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¸jò)�r¸}r¸(jÅj ¸jÆj ¸jÎj}³jÐjõjÒ}r¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÖjÞ]r¸jçX?Rename the binary you copied in the previous step to "app.bin".r¸…�r¸}r¸(jÅj ¸jÆj¸ubaubaubj{)�r¸}r¸(jÅX1In CCS, select Core 0 and open the Memory Browserr¸jÆjæ·jÎj}³jÐjjÒ}r¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¸jò)�r¸}r¸(jÅj¸jÆj¸jÎj}³jÐjõjÒ}r¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜK×jÞ]r¸jçX1In CCS, select Core 0 and open the Memory Browserr ¸…�r!¸}r"¸(jÅj¸jÆj¸ubaubaubj{)�r#¸}r$¸(jÅXBIn the Memory Browser window, right click and select "Load Memory"r%¸jÆjæ·jÎj}³jÐjjÒ}r&¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r'¸jò)�r(¸}r)¸(jÅj%¸jÆj#¸jÎj}³jÐjõjÒ}r*¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKØjÞ]r+¸jçXBIn the Memory Browser window, right click and select "Load Memory"r,¸…�r-¸}r.¸(jÅj%¸jÆj(¸ubaubaubj{)�r/¸}r0¸(jÅX¢Load your app.bin to 0x80000000. Do so by selecting app.bin for the file, click Next, and input 0x80000000 for Start Address (Type-size selected should be 32-bit)jÆjæ·jÎj}³jÐjjÒ}r1¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r2¸jò)�r3¸}r4¸(jÅX¢Load your app.bin to 0x80000000. Do so by selecting app.bin for the file, click Next, and input 0x80000000 for Start Address (Type-size selected should be 32-bit)r5¸jÆj/¸jÎj}³jÐjõjÒ}r6¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙjÞ]r7¸jçX¢Load your app.bin to 0x80000000. Do so by selecting app.bin for the file, click Next, and input 0x80000000 for Start Address (Type-size selected should be 32-bit)r8¸…�r9¸}r:¸(jÅj5¸jÆj3¸ubaubaubj{)�r;¸}r<¸(jÅXoLoad [SDK Install Path]/pdk__/packages/ti/boot/writer/nor//bin/norwriter_.outjÆjæ·jÎj}³jÐjjÒ}r=¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r>¸jò)�r?¸}r@¸(jÅXoLoad [SDK Install Path]/pdk__/packages/ti/boot/writer/nor//bin/norwriter_.outrA¸jÆj;¸jÎj}³jÐjõjÒ}rB¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÞ]rC¸jçXoLoad [SDK Install Path]/pdk__/packages/ti/boot/writer/nor//bin/norwriter_.outrD¸…�rE¸}rF¸(jÅjA¸jÆj?¸ubaubaubj{)�rG¸}rH¸(jÅX0Run Core 0. This will program the flash memory. jÆjæ·jÎj}³jÐjjÒ}rI¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rJ¸jò)�rK¸}rL¸(jÅX/Run Core 0. This will program the flash memory.rM¸jÆjG¸jÎj}³jÐjõjÒ}rN¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÞjÞ]rO¸jçX/Run Core 0. This will program the flash memory.rP¸…�rQ¸}rR¸(jÅjM¸jÆjK¸ubaubaubeubjò)�rS¸}rT¸(jÅXOIf it succeeds, the console will print "NOR programming completed successfully"rU¸jÆj×·jÎj}³jÐjõjÒ}rV¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKàjÝhjÞ]rW¸jçXOIf it succeeds, the console will print "NOR programming completed successfully"rX¸…�rY¸}rZ¸(jÅjU¸jÆjS¸ubaubeubeubjÇ)�r[¸}r\¸(jÅUjÆjöjÎj}³jÐjÑjÒ}r]¸(jÔ]jÕ]jÖ]j×]r^¸U nand-writerr_¸ajÚ]r`¸hÏaujÜKäjÝhjÞ]ra¸(jà)�rb¸}rc¸(jÅX NAND Writerrd¸jÆj[¸jÎj}³jÐjäjÒ}re¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKäjÝhjÞ]rf¸jçX NAND Writerrg¸…�rh¸}ri¸(jÅjd¸jÆjb¸ubaubjò)�rj¸}rk¸(jÅX?The NAND Writer is used to write a binary into the NAND memory.rl¸jÆj[¸jÎj}³jÐjõjÒ}rm¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKæjÝhjÞ]rn¸jçX?The NAND Writer is used to write a binary into the NAND memory.ro¸…�rp¸}rq¸(jÅjl¸jÆjj¸ubaubjÇ)�rr¸}rs¸(jÅUjKjÆj[¸jÎj}³jÐjÑjÒ}rt¸(jÔ]ru¸X compilationrv¸ajÕ]jÖ]j×]rw¸Uid92rx¸ajÚ]ujÜKéjÝhjÞ]ry¸(jà)�rz¸}r{¸(jÅX Compilationr|¸jÆjr¸jÎj}³jÐjäjÒ}r}¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKéjÝhjÞ]r~¸jçX Compilationr¸…�r€¸}r�¸(jÅj|¸jÆjz¸ubaubj)�r‚¸}rƒ¸(jÅXecd [SDK Install Path]/pdk__/packages/ti/boot/writer/nand//build make alljÆjr¸jÎj}³jÐjjÒ}r„¸(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM*jÝhjÞ]r…¸jçXecd [SDK Install Path]/pdk__/packages/ti/boot/writer/nand//build make allr†¸…�r‡¸}rˆ¸(jÅUjÆj‚¸ubaubeubjÇ)�r‰¸}rЏ(jÅUjKjÆj[¸jÎj}³jÐjÑjÒ}r‹¸(jÔ]rŒ¸Xusager�¸ajÕ]jÖ]j×]rޏUid93r�¸ajÚ]ujÜKñjÝhjÞ]r�¸(jà)�r‘¸}r’¸(jÅXUsager“¸jÆj‰¸jÎj}³jÐjäjÒ}r”¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKñjÝhjÞ]r•¸jçXUsager–¸…�r—¸}r˜¸(jÅj“¸jÆj‘¸ubaubj )�r™¸}rš¸(jÅUjÆj‰¸jÎj}³jÐj jÒ}r›¸(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKójÝhjÞ]rœ¸(j{)�r�¸}rž¸(jÅX–Set your EVM to **NO BOOT**. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.jÆj™¸jÎj}³jÐjjÒ}rŸ¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r ¸jò)�r¡¸}r¢¸(jÅX–Set your EVM to **NO BOOT**. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.jÆj�¸jÎj}³jÐjõjÒ}r£¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKójÞ]r¤¸(jçXSet your EVM to r¥¸…�r¦¸}r§¸(jÅXSet your EVM to jÆj¡¸ubjÚ)�r¨¸}r©¸(jÅX **NO BOOT**jÒ}rª¸(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡¸jÞ]r«¸jçXNO BOOTr¬¸…�r­¸}r®¸(jÅUjÆj¨¸ubajÐjâubjçX{. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.r¯¸…�r°¸}r±¸(jÅX{. Power on, launch target configuration in CCS, and connect to Core 0. Be sure the GEL file is used and DDR is initialized.jÆj¡¸ubeubaubj{)�r²¸}r³¸(jÅX�Copy the desired binary you want to flash to [SDK Install Path]/pdk__/packages/ti/boot/writer/nand//bin directory.jÆj™¸jÎj}³jÐjjÒ}r´¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rµ¸jò)�r¶¸}r·¸(jÅX�Copy the desired binary you want to flash to [SDK Install Path]/pdk__/packages/ti/boot/writer/nand//bin directory.r¸¸jÆj²¸jÎj}³jÐjõjÒ}r¹¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKöjÞ]rº¸jçX�Copy the desired binary you want to flash to [SDK Install Path]/pdk__/packages/ti/boot/writer/nand//bin directory.r»¸…�r¼¸}r½¸(jÅj¸¸jÆj¶¸ubaubaubj{)�r¾¸}r¿¸(jÅX?Rename the binary you copied in the previous step to "app.bin".rÀ¸jÆj™¸jÎj}³jÐjjÒ}rÁ¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¸jò)�rø}rĸ(jÅjÀ¸jÆj¾¸jÎj}³jÐjõjÒ}rŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKùjÞ]rƸjçX?Rename the binary you copied in the previous step to "app.bin".rǸ…�rȸ}rɸ(jÅjÀ¸jÆjøubaubaubj{)�rʸ}r˸(jÅX1In CCS, select Core 0 and open the Memory Browserr̸jÆj™¸jÎj}³jÐjjÒ}r͸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rθjò)�rϸ}rи(jÅj̸jÆjʸjÎj}³jÐjõjÒ}rѸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKújÞ]rÒ¸jçX1In CCS, select Core 0 and open the Memory BrowserrÓ¸…�rÔ¸}rÕ¸(jÅj̸jÆjϸubaubaubj{)�rÖ¸}r׸(jÅXBIn the Memory Browser window, right click and select "Load Memory"rظjÆj™¸jÎj}³jÐjjÒ}rÙ¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÚ¸jò)�rÛ¸}rܸ(jÅjظjÆjÖ¸jÎj}³jÐjõjÒ}rݸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKûjÞ]rÞ¸jçXBIn the Memory Browser window, right click and select "Load Memory"r߸…�rà¸}rá¸(jÅjظjÆjÛ¸ubaubaubj{)�râ¸}rã¸(jÅX¢Load your app.bin to 0x80000000. Do so by selecting app.bin for the file, click Next, and input 0x80000000 for Start Address (Type-size selected should be 32-bit)jÆj™¸jÎj}³jÐjjÒ}rä¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rå¸jò)�ræ¸}rç¸(jÅX¢Load your app.bin to 0x80000000. Do so by selecting app.bin for the file, click Next, and input 0x80000000 for Start Address (Type-size selected should be 32-bit)rè¸jÆjâ¸jÎj}³jÐjõjÒ}ré¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKüjÞ]rê¸jçX¢Load your app.bin to 0x80000000. Do so by selecting app.bin for the file, click Next, and input 0x80000000 for Start Address (Type-size selected should be 32-bit)r븅�rì¸}rí¸(jÅjè¸jÆjæ¸ubaubaubj{)�rî¸}rï¸(jÅXqLoad [SDK Install Path]/pdk__/packages/ti/boot/writer/nand//bin/nandwriter_.outjÆj™¸jÎj}³jÐjjÒ}rð¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rñ¸jò)�rò¸}ró¸(jÅXqLoad [SDK Install Path]/pdk__/packages/ti/boot/writer/nand//bin/nandwriter_.outrô¸jÆjî¸jÎj}³jÐjõjÒ}rõ¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÿjÞ]rö¸jçXqLoad [SDK Install Path]/pdk__/packages/ti/boot/writer/nand//bin/nandwriter_.outr÷¸…�rø¸}rù¸(jÅjô¸jÆjò¸ubaubaubj{)�rú¸}rû¸(jÅX0Run Core 0. This will program the flash memory. jÆj™¸jÎj}³jÐjjÒ}rü¸(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rý¸jò)�rþ¸}rÿ¸(jÅX/Run Core 0. This will program the flash memory.r¹jÆjú¸jÎj}³jÐjõjÒ}r¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r¹jçX/Run Core 0. This will program the flash memory.r¹…�r¹}r¹(jÅj¹jÆjþ¸ubaubaubeubjò)�r¹}r¹(jÅXPIf it succeeds, the console will print "NAND programming completed successfully"r¹jÆj‰¸jÎj}³jÐjõjÒ}r ¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r ¹jçXPIf it succeeds, the console will print "NAND programming completed successfully"r ¹…�r ¹}r ¹(jÅj¹jÆj¹ubaubeubeubeubjÇ)�r¹}r¹(jÅUjKjÆjk³jÎj}³jÐjÑjÒ}r¹(jÔ]r¹X boot modesr¹ajÕ]jÖ]j×]r¹Uid94r¹ajÚ]ujÜMjÝhjÞ]r¹(jà)�r¹}r¹(jÅX Boot Modesr¹jÆj¹jÎj}³jÐjäjÒ}r¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r¹jçX Boot Modesr¹…�r¹}r¹(jÅj¹jÆj¹ubaubjÇ)�r¹}r¹(jÅUjÆj¹jÎj}³jÐjÑjÒ}r ¹(jÔ]jÕ]jÖ]j×]r!¹U nand-bootr"¹ajÚ]r#¹j7aujÜM jÝhjÞ]r$¹(jà)�r%¹}r&¹(jÅX NAND Bootr'¹jÆj¹jÎj}³jÐjäjÒ}r(¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]r)¹jçX NAND Bootr*¹…�r+¹}r,¹(jÅj'¹jÆj%¹ubaubjR)�r-¹}r.¹(jÅX".. Image:: ../images/Nandboot.jpg jÆj¹jÎj}³jÐjZjÒ}r/¹(UuriXrtos/../images/Nandboot.jpgr0¹j×]jÖ]jÔ]jÕ]jX}r1¹U*j0¹sjÚ]ujÜM jÝhjÞ]ubjò)�r2¹}r3¹(jÅX¨NAND boot is a multi-stage process which is designed to boot an application from NAND flash after reset. Figure below illustrates the elements of the NAND boot process.r4¹jÆj¹jÎj}³jÐjõjÒ}r5¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r6¹jçX¨NAND boot is a multi-stage process which is designed to boot an application from NAND flash after reset. Figure below illustrates the elements of the NAND boot process.r7¹…�r8¹}r9¹(jÅj4¹jÆj2¹ubaubjò)�r:¹}r;¹(jÅXáOn reset the DSP starts execution with the bootrom which transfers execution to the secondary bootloader from EEPROM using the I2C slave bus address 0x51. The secondary bootloader loads the application program from NAND flash then transfers control to the application. To execute the NAND bootloader you must ensure the DIP switches for your platform are properly configured for I2C Master Boot and address 0x51, AND the boot parameter index dip switch should be set to 2 or 3.r<¹jÆj¹jÎj}³jÐjõjÒ}r=¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r>¹jçXáOn reset the DSP starts execution with the bootrom which transfers execution to the secondary bootloader from EEPROM using the I2C slave bus address 0x51. The secondary bootloader loads the application program from NAND flash then transfers control to the application. To execute the NAND bootloader you must ensure the DIP switches for your platform are properly configured for I2C Master Boot and address 0x51, AND the boot parameter index dip switch should be set to 2 or 3.r?¹…�r@¹}rA¹(jÅj<¹jÆj:¹ubaubjò)�rB¹}rC¹(jÅX;NAND boot supports multiple images booting. Depending on the boot parameter index dip switch, maximum 2 boot images can be supported. By default NAND boot only supports a BBLOB image format, if the customer wants to boot an ELF image,  the IBL configuration table needs to be modified and re-programmed to EEPROM.rD¹jÆj¹jÎj}³jÐjõjÒ}rE¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rF¹jçX;NAND boot supports multiple images booting. Depending on the boot parameter index dip switch, maximum 2 boot images can be supported. By default NAND boot only supports a BBLOB image format, if the customer wants to boot an ELF image,  the IBL configuration table needs to be modified and re-programmed to EEPROM.rG¹…�rH¹}rI¹(jÅjD¹jÆjB¹ubaubjc)�rJ¹}rK¹(jÅUjÆj¹jÎj}³jÐjfjÒ}rL¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÝhjÞ]rM¹ji)�rN¹}rO¹(jÅUjlKjÆjJ¹jÎj}³jÐjÜjÒ}rP¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�rQ¹}rR¹(jÅUjÆj¹jÎj}³jÐjÑjÒ}rS¹(jÔ]jÕ]jÖ]j×]rT¹Unor-bootrU¹ajÚ]rV¹haujÜM#jÝhjÞ]rW¹(jà)�rX¹}rY¹(jÅXNOR BootrZ¹jÆjQ¹jÎj}³jÐjäjÒ}r[¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM#jÝhjÞ]r\¹jçXNOR Bootr]¹…�r^¹}r_¹(jÅjZ¹jÆjX¹ubaubjR)�r`¹}ra¹(jÅX!.. Image:: ../images/Norboot.jpg jÆjQ¹jÎj}³jÐjZjÒ}rb¹(UuriXrtos/../images/Norboot.jpgrc¹j×]jÖ]jÔ]jÕ]jX}rd¹U*jc¹sjÚ]ujÜM&jÝhjÞ]ubjò)�re¹}rf¹(jÅX¥NOR boot is a multi-stage process which is designed to boot an application from NOR flash after reset. Figure below illustrates the elements of the NOR boot process.rg¹jÆjQ¹jÎj}³jÐjõjÒ}rh¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM'jÝhjÞ]ri¹jçX¥NOR boot is a multi-stage process which is designed to boot an application from NOR flash after reset. Figure below illustrates the elements of the NOR boot process.rj¹…�rk¹}rl¹(jÅjg¹jÆje¹ubaubjò)�rm¹}rn¹(jÅXÔOn reset the DSP starts execution with the bootrom which transfers execution to the secondary bootloader from EEPROM using the I2C slave address 0x51. The secondary bootloader loads the application program from NOR flash then transfers control to the application. To execute the NOR bootloader you must ensure the DIP switches for your platform are properly configured for I2C Master Boot and address 0x51, AND the boot parameter index switch should be set to 0 or 1.ro¹jÆjQ¹jÎj}³jÐjõjÒ}rp¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÝhjÞ]rq¹jçXÔOn reset the DSP starts execution with the bootrom which transfers execution to the secondary bootloader from EEPROM using the I2C slave address 0x51. The secondary bootloader loads the application program from NOR flash then transfers control to the application. To execute the NOR bootloader you must ensure the DIP switches for your platform are properly configured for I2C Master Boot and address 0x51, AND the boot parameter index switch should be set to 0 or 1.rr¹…�rs¹}rt¹(jÅjo¹jÆjm¹ubaubjò)�ru¹}rv¹(jÅX…NOR boot supports multiple images booting. Depending on the boot parameter index dip switch, maximum 2 boot images can be supported.rw¹jÆjQ¹jÎj}³jÐjõjÒ}rx¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM3jÝhjÞ]ry¹jçX…NOR boot supports multiple images booting. Depending on the boot parameter index dip switch, maximum 2 boot images can be supported.rz¹…�r{¹}r|¹(jÅjw¹jÆju¹ubaubjc)�r}¹}r~¹(jÅUjÆjQ¹jÎj}³jÐjfjÒ}r¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM6jÝhjÞ]r€¹ji)�r�¹}r‚¹(jÅUjlKjÆj}¹jÎj}³jÐjÜjÒ}rƒ¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�r„¹}r…¹(jÅUjÆj¹jÎj}³jÐjÑjÒ}r†¹(jÔ]jÕ]jÖ]j×]r‡¹U tftp-bootrˆ¹ajÚ]r‰¹j¾aujÜM9jÝhjÞ]rй(jà)�r‹¹}rŒ¹(jÅX TFTP Bootr�¹jÆj„¹jÎj}³jÐjäjÒ}r޹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM9jÝhjÞ]r�¹jçX TFTP Bootr�¹…�r‘¹}r’¹(jÅj�¹jÆj‹¹ubaubjR)�r“¹}r”¹(jÅX".. Image:: ../images/Emacboot.jpg jÆj„¹jÎj}³jÐjZjÒ}r•¹(UuriXrtos/../images/Emacboot.jpgr–¹j×]jÖ]jÔ]jÕ]jX}r—¹U*j–¹sjÚ]ujÜM<jÝhjÞ]ubjò)�r˜¹}r™¹(jÅX©EMAC boot is a multi-stage process which is designed to boot an application from TFTP server after reset. Figure below illustrates the elements of the EMAC boot process.rš¹jÆj„¹jÎj}³jÐjõjÒ}r›¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜM=jÝhjÞ]rœ¹jçX©EMAC boot is a multi-stage process which is designed to boot an application from TFTP server after reset. Figure below illustrates the elements of the EMAC boot process.r�¹…�rž¹}rŸ¹(jÅjš¹jÆj˜¹ubaubjò)�r ¹}r¡¹(jÅX‘On reset the DSP starts execution with the bootrom which transfers execution to the secondary bootloader from EEPROM using the I2C slave address 0x51. The secondary bootloader loads the application program from a remote TFTP server then transfers control to the application. To execute the EMAC bootloader you must ensure the DIP switches for your platform are properly configured for I2C Master Boot and address 0x51, AND the boot parameter index switch should be set to 4. By default EMAC boot only supports a BBLOB image format, if the customer wants to boot an ELF image, the IBL configuration table needs to be modified and re-programmed to EEPROM.r¢¹jÆj„¹jÎj}³jÐjõjÒ}r£¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMAjÝhjÞ]r¤¹jçX‘On reset the DSP starts execution with the bootrom which transfers execution to the secondary bootloader from EEPROM using the I2C slave address 0x51. The secondary bootloader loads the application program from a remote TFTP server then transfers control to the application. To execute the EMAC bootloader you must ensure the DIP switches for your platform are properly configured for I2C Master Boot and address 0x51, AND the boot parameter index switch should be set to 4. By default EMAC boot only supports a BBLOB image format, if the customer wants to boot an ELF image, the IBL configuration table needs to be modified and re-programmed to EEPROM.r¥¹…�r¦¹}r§¹(jÅj¢¹jÆj ¹ubaubjc)�r¨¹}r©¹(jÅUjÆj„¹jÎj}³jÐjfjÒ}rª¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMLjÝhjÞ]r«¹ji)�r¬¹}r­¹(jÅUjlKjÆj¨¹jÎj}³jÐjÜjÒ}r®¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjÇ)�r¯¹}r°¹(jÅUjÆj„¹jÎj}³jÐjÑjÒ}r±¹(jÔ]jÕ]jÖ]j×]r²¹U(updating-the-ibl-ethernet-configurationsr³¹ajÚ]r´¹j³aujÜMOjÝhjÞ]rµ¹(jà)�r¶¹}r·¹(jÅX(Updating the IBL Ethernet Configurationsr¸¹jÆj¯¹jÎj}³jÐjäjÒ}r¹¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMOjÝhjÞ]rº¹jçX(Updating the IBL Ethernet Configurationsr»¹…�r¼¹}r½¹(jÅj¸¹jÆj¶¹ubaubjò)�r¾¹}r¿¹(jÅXOThere are two ways to update the IBL ethernet configurations for ethernet boot.rÀ¹jÆj¯¹jÎj}³jÐjõjÒ}rÁ¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMQjÝhjÞ]r¹jçXOThere are two ways to update the IBL ethernet configurations for ethernet boot.rù…�rĹ}rŹ(jÅjÀ¹jÆj¾¹ubaubjò)�rƹ}rǹ(jÅX **Using CCS**rȹjÆj¯¹jÎj}³jÐjõjÒ}rɹ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMTjÝhjÞ]rʹjÚ)�r˹}r̹(jÅjȹjÒ}r͹(jÔ]jÕ]jÖ]j×]jÚ]ujÆjƹjÞ]rιjçX Using CCSrϹ…�rй}rѹ(jÅUjÆj˹ubajÐjâubaubj )�rÒ¹}rÓ¹(jÅUjÆj¯¹jÎj}³jÐj jÒ}rÔ¹(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMVjÝhjÞ]rÕ¹(j{)�rÖ¹}r×¹(jÅXOTurn on and connect to your EVM with the appropriate Target Configuration file.jÆjÒ¹jÎj}³jÐjjÒ}rع(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÙ¹jò)�rÚ¹}rÛ¹(jÅXOTurn on and connect to your EVM with the appropriate Target Configuration file.rܹjÆjÖ¹jÎj}³jÐjõjÒ}rݹ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMVjÞ]rÞ¹jçXOTurn on and connect to your EVM with the appropriate Target Configuration file.rß¹…�rà¹}rá¹(jÅjܹjÆjÚ¹ubaubaubj{)�râ¹}rã¹(jÅXConnect to Core 0.rä¹jÆjÒ¹jÎj}³jÐjjÒ}rå¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ræ¹jò)�rç¹}rè¹(jÅjä¹jÆjâ¹jÎj}³jÐjõjÒ}ré¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMXjÞ]rê¹jçXConnect to Core 0.rë¹…�rì¹}rí¹(jÅjä¹jÆjç¹ubaubaubj{)�rî¹}rï¹(jÅXžGo to Run -> Load Program and select i2cparam_0x51_c667#_le_0x500.out located in [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/make/binjÆjÒ¹jÎj}³jÐjjÒ}rð¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rñ¹jò)�rò¹}ró¹(jÅXžGo to Run -> Load Program and select i2cparam_0x51_c667#_le_0x500.out located in [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/make/binrô¹jÆjî¹jÎj}³jÐjõjÒ}rõ¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜMYjÞ]rö¹jçXžGo to Run -> Load Program and select i2cparam_0x51_c667#_le_0x500.out located in [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/make/binr÷¹…�rø¹}rù¹(jÅjô¹jÆjò¹ubaubaubj{)�rú¹}rû¹(jÅX¿Go to Tools -> GEL Files and then right click on GEL Files window and Load the i2cConfig.gel GEL file, located in [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/make/binjÆjÒ¹jÎj}³jÐjjÒ}rü¹(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rý¹jò)�rþ¹}rÿ¹(jÅX¿Go to Tools -> GEL Files and then right click on GEL Files window and Load the i2cConfig.gel GEL file, located in [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/make/binrºjÆjú¹jÎj}³jÐjõjÒ}rº(jÔ]jÕ]jÖ]j×]jÚ]ujÜM\jÞ]rºjçX¿Go to Tools -> GEL Files and then right click on GEL Files window and Load the i2cConfig.gel GEL file, located in [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/make/binrº…�rº}rº(jÅjºjÆjþ¹ubaubaubj{)�rº}rº(jÅXÃRun the program. The following message will be printed on the CCS console: *Run the GEL for the SOC to be configured, press return to program the I2C.* **DO NOT PRESS ENTER UNTIL STEP 6 IS DONE**jÆjÒ¹jÎj}³jÐjjÒ}rº(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r ºjò)�r º}r º(jÅXÃRun the program. The following message will be printed on the CCS console: *Run the GEL for the SOC to be configured, press return to program the I2C.* **DO NOT PRESS ENTER UNTIL STEP 6 IS DONE**jÆjºjÎj}³jÐjõjÒ}r º(jÔ]jÕ]jÖ]j×]jÚ]ujÜM_jÞ]r º(jçXKRun the program. The following message will be printed on the CCS console: rº…�rº}rº(jÅXKRun the program. The following message will be printed on the CCS console: jÆj ºubjM)�rº}rº(jÅXL*Run the GEL for the SOC to be configured, press return to program the I2C.*jÒ}rº(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ºjÞ]rºjçXJRun the GEL for the SOC to be configured, press return to program the I2C.rº…�rº}rº(jÅUjÆjºubajÐjUubjçX …�rº}rº(jÅX jÆj ºubjÚ)�rº}rº(jÅX+**DO NOT PRESS ENTER UNTIL STEP 6 IS DONE**jÒ}rº(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ºjÞ]rºjçX'DO NOT PRESS ENTER UNTIL STEP 6 IS DONErº…�rº}r º(jÅUjÆjºubajÐjâubeubaubj{)�r!º}r"º(jÅXERun the GEL script"Scripts -> EVM c6678 IBL" -> setConfig_c6678_main.r#ºjÆjÒ¹jÎj}³jÐjjÒ}r$º(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r%ºjò)�r&º}r'º(jÅj#ºjÆj!ºjÎj}³jÐjõjÒ}r(º(jÔ]jÕ]jÖ]j×]jÚ]ujÜMbjÞ]r)ºjçXERun the GEL script"Scripts -> EVM c6678 IBL" -> setConfig_c6678_main.r*º…�r+º}r,º(jÅj#ºjÆj&ºubaubaubj{)�r-º}r.º(jÅXÆNow press "Enter" in the CCS console window, and the program will write the boot parameter table to the EEPROM. On success the message "I2c table write complete" will be printed on the CCS console. jÆjÒ¹jÎj}³jÐjjÒ}r/º(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r0ºjò)�r1º}r2º(jÅXÅNow press "Enter" in the CCS console window, and the program will write the boot parameter table to the EEPROM. On success the message "I2c table write complete" will be printed on the CCS console.r3ºjÆj-ºjÎj}³jÐjõjÒ}r4º(jÔ]jÕ]jÖ]j×]jÚ]ujÜMcjÞ]r5ºjçXÅNow press "Enter" in the CCS console window, and the program will write the boot parameter table to the EEPROM. On success the message "I2c table write complete" will be printed on the CCS console.r6º…�r7º}r8º(jÅj3ºjÆj1ºubaubaubeubjò)�r9º}r:º(jÅXáPlease note that the i2cConfig.gel file can be modified via a text editor before loading and running the script in CCS. Please note that this gel file contains configuration settings for multiple SOCs and multiple boot modes.r;ºjÆj¯¹jÎj}³jÐjõjÒ}r<º(jÔ]jÕ]jÖ]j×]jÚ]ujÜMgjÝhjÞ]r=ºjçXáPlease note that the i2cConfig.gel file can be modified via a text editor before loading and running the script in CCS. Please note that this gel file contains configuration settings for multiple SOCs and multiple boot modes.r>º…�r?º}r@º(jÅj;ºjÆj9ºubaubjò)�rAº}rBº(jÅX#**Using iblConfig Utility Program**rCºjÆj¯¹jÎj}³jÐjõjÒ}rDº(jÔ]jÕ]jÖ]j×]jÚ]ujÜMljÝhjÞ]rEºjÚ)�rFº}rGº(jÅjCºjÒ}rHº(jÔ]jÕ]jÖ]j×]jÚ]ujÆjAºjÞ]rIºjçXUsing iblConfig Utility ProgramrJº…�rKº}rLº(jÅUjÆjFºubajÐjâubaubjò)�rMº}rNº(jÅX|The second way to update the IBL ethernet configurations is to use **iblConfig.out**. This utility program is located under:jÆj¯¹jÎj}³jÐjõjÒ}rOº(jÔ]jÕ]jÖ]j×]jÚ]ujÜMnjÝhjÞ]rPº(jçXCThe second way to update the IBL ethernet configurations is to use rQº…�rRº}rSº(jÅXCThe second way to update the IBL ethernet configurations is to use jÆjMºubjÚ)�rTº}rUº(jÅX**iblConfig.out**jÒ}rVº(jÔ]jÕ]jÖ]j×]jÚ]ujÆjMºjÞ]rWºjçX iblConfig.outrXº…�rYº}rZº(jÅUjÆjTºubajÐjâubjçX(. This utility program is located under:r[º…�r\º}r]º(jÅX(. This utility program is located under:jÆjMºubeubj)�r^º}r_º(jÅXY[SDK Install Path]/pdk__/packages/ti/boot/ibl/src/util/iblConfig/buildjÆj¯¹jÎj}³jÐjjÒ}r`º(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMŒ*jÝhjÞ]raºjçXY[SDK Install Path]/pdk__/packages/ti/boot/ibl/src/util/iblConfig/buildrbº…�rcº}rdº(jÅUjÆj^ºubaubjò)�reº}rfº(jÅXÓIn command line, use "make" with the given Makefile to generate iblConfig.out and input.txt. Please be sure to fill in the parameters for input.txt before running iblConfig.out; below is an example of input.txt:rgºjÆj¯¹jÎj}³jÐjõjÒ}rhº(jÔ]jÕ]jÖ]j×]jÚ]ujÜMujÝhjÞ]riºjçXÓIn command line, use "make" with the given Makefile to generate iblConfig.out and input.txt. Please be sure to fill in the parameters for input.txt before running iblConfig.out; below is an example of input.txt:rjº…�rkº}rlº(jÅjgºjÆjeºubaubj)�rmº}rnº(jÅXùfile_name = ibl.bin SOC = 6 offset = 0x500 ethBoot-doBootp = TRUE ethBoot-bootFormat = ibl_BOOT_FORMAT_ELF ethBoot-ipAddr = 192.168.1.3 ethBoot-serverIp = 192.168.1.2 ethBoot-gatewayIp = 192.168.1.1 ethBoot-netmask = 255.255.255.0 ethBoot-fileName =jÆj¯¹jÎj}³jÐjjÒ}roº(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM•*jÝhjÞ]rpºjçXùfile_name = ibl.bin SOC = 6 offset = 0x500 ethBoot-doBootp = TRUE ethBoot-bootFormat = ibl_BOOT_FORMAT_ELF ethBoot-ipAddr = 192.168.1.3 ethBoot-serverIp = 192.168.1.2 ethBoot-gatewayIp = 192.168.1.1 ethBoot-netmask = 255.255.255.0 ethBoot-fileName =rqº…�rrº}rsº(jÅUjÆjmºubaubjò)�rtº}ruº(jÅXCThe first 3 parameters must be filled in for iblConfig.out to work:rvºjÆj¯¹jÎj}³jÐjõjÒ}rwº(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‡jÝhjÞ]rxºjçXCThe first 3 parameters must be filled in for iblConfig.out to work:ryº…�rzº}r{º(jÅjvºjÆjtºubaubjt)�r|º}r}º(jÅUjÆj¯¹jÎj}³jÐjwjÒ}r~º(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜM‰jÝhjÞ]rº(j{)�r€º}r�º(jÅXlfile_name refers to the IBL binary file to update. This file must be in the same directory as iblConfig.out.jÆj|ºjÎj}³jÐjjÒ}r‚º(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rƒºjò)�r„º}r…º(jÅXlfile_name refers to the IBL binary file to update. This file must be in the same directory as iblConfig.out.r†ºjÆj€ºjÎj}³jÐjõjÒ}r‡º(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‰jÞ]rˆºjçXlfile_name refers to the IBL binary file to update. This file must be in the same directory as iblConfig.out.r‰º…�rŠº}r‹º(jÅj†ºjÆj„ºubaubaubj{)�rŒº}r�º(jÅXPSOC refers to the SOC being used. Please enter **6 for C6678, and 8 for C6657**.jÆj|ºjÎj}³jÐjjÒ}rŽº(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�ºjò)�r�º}r‘º(jÅXPSOC refers to the SOC being used. Please enter **6 for C6678, and 8 for C6657**.jÆjŒºjÎj}³jÐjõjÒ}r’º(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‹jÞ]r“º(jçX/SOC refers to the SOC being used. Please enter r”º…�r•º}r–º(jÅX/SOC refers to the SOC being used. Please enter jÆj�ºubjÚ)�r—º}r˜º(jÅX **6 for C6678, and 8 for C6657**jÒ}r™º(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ºjÞ]ršºjçX6 for C6678, and 8 for C6657r›º…�rœº}r�º(jÅUjÆj—ºubajÐjâubjçX.…�ržº}rŸº(jÅX.jÆj�ºubeubaubj{)�r º}r¡º(jÅXUoffset refers to an offset space in the IBL. The value is 0x500 for C6678, and C6657 jÆj|ºjÎj}³jÐjjÒ}r¢º(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r£ºjò)�r¤º}r¥º(jÅXToffset refers to an offset space in the IBL. The value is 0x500 for C6678, and C6657r¦ºjÆj ºjÎj}³jÐjõjÒ}r§º(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÞ]r¨ºjçXToffset refers to an offset space in the IBL. The value is 0x500 for C6678, and C6657r©º…�rªº}r«º(jÅj¦ºjÆj¤ºubaubaubeubjò)�r¬º}r­º(jÅX�The ethernet parameters (the entries beginning with ethBoot) refer to specific ethernet configurations. If they are not specified, they will be defaulted to the values in the [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/util/iblConfig/src/SOC.h file. In the example above, the ethernet boot file name will be defaulted to c6678-le.bin when iblConfig.out is run.r®ºjÆj¯¹jÎj}³jÐjõjÒ}r¯º(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÝhjÞ]r°ºjçX�The ethernet parameters (the entries beginning with ethBoot) refer to specific ethernet configurations. If they are not specified, they will be defaulted to the values in the [SDK Install Path]/pdk__/packages/ti/boot/ibl/src/util/iblConfig/src/SOC.h file. In the example above, the ethernet boot file name will be defaulted to c6678-le.bin when iblConfig.out is run.r±º…�r²º}r³º(jÅj®ºjÆj¬ºubaubjò)�r´º}rµº(jÅX`After running iblConfig.out and updating the IBL binary, you must flash the modified IBL binary to your EVM. You can do this as part of program_evm (refer to `Processor SDK Flashing Bootable Images `__) or you can flash it individually using eepromwriter (refer to "Flash Writers" section above).jÆj¯¹jÎj}³jÐjõjÒ}r¶º(jÔ]jÕ]jÖ]j×]jÚ]ujÜM—jÝhjÞ]r·º(jçXžAfter running iblConfig.out and updating the IBL binary, you must flash the modified IBL binary to your EVM. You can do this as part of program_evm (refer to r¸º…�r¹º}rºº(jÅXžAfter running iblConfig.out and updating the IBL binary, you must flash the modified IBL binary to your EVM. You can do this as part of program_evm (refer to jÆj´ºubjû)�r»º}r¼º(jÅXc`Processor SDK Flashing Bootable Images `__jÒ}r½º(UnameX&Processor SDK Flashing Bootable ImagesjX6http://processors.wiki.ti.com/index.php/Program_EVM_UGj×]jÖ]jÔ]jÕ]jÚ]ujÆj´ºjÞ]r¾ºjçX&Processor SDK Flashing Bootable Imagesr¿º…�rÀº}rÁº(jÅUjÆj»ºubajÐjÿubjçX_) or you can flash it individually using eepromwriter (refer to "Flash Writers" section above).rº…�rú}rĺ(jÅX_) or you can flash it individually using eepromwriter (refer to "Flash Writers" section above).jÆj´ºubeubjë)�rź}rƺ(jÅXÉIf you updated the IBL with iblConfig and flashed it with eepromwriter, you should **NOT** use i2cparam_0x51_c667#_le_0x500.out and iblConfig.gel - this would overwrite the changes you made to the IBL.jÆj¯¹jÎj}³jÐjïjÒ}rǺ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rȺjò)�rɺ}rʺ(jÅXÉIf you updated the IBL with iblConfig and flashed it with eepromwriter, you should **NOT** use i2cparam_0x51_c667#_le_0x500.out and iblConfig.gel - this would overwrite the changes you made to the IBL.jÆjźjÎj}³jÐjõjÒ}r˺(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŸjÞ]r̺(jçXSIf you updated the IBL with iblConfig and flashed it with eepromwriter, you should rͺ…�rκ}rϺ(jÅXSIf you updated the IBL with iblConfig and flashed it with eepromwriter, you should jÆjɺubjÚ)�rк}rѺ(jÅX**NOT**jÒ}rÒº(jÔ]jÕ]jÖ]j×]jÚ]ujÆjɺjÞ]rÓºjçXNOTrÔº…�rÕº}rÖº(jÅUjÆjкubajÐjâubjçXo use i2cparam_0x51_c667#_le_0x500.out and iblConfig.gel - this would overwrite the changes you made to the IBL.r׺…�rغ}rÙº(jÅXo use i2cparam_0x51_c667#_le_0x500.out and iblConfig.gel - this would overwrite the changes you made to the IBL.jÆjɺubeubaubeubjÇ)�rÚº}rÛº(jÅUjKjÆj„¹jÎj}³jÐjÑjÒ}rܺ(jÔ]rݺX compilationrÞºajÕ]jÖ]j×]rߺUid95ràºajÚ]ujÜM¥jÝhjÞ]ráº(jà)�râº}rãº(jÅX CompilationräºjÆjÚºjÎj}³jÐjäjÒ}råº(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¥jÝhjÞ]ræºjçX Compilationr纅�rèº}réº(jÅjäºjÆjâºubaubj)�rêº}rëº(jÅXbcd [SDK Install Path]/pdk__/packages/ti/boot/i2c/tftp//build make alljÆjÚºjÎj}³jÐjjÒ}rìº(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÂ*jÝhjÞ]ríºjçXbcd [SDK Install Path]/pdk__/packages/ti/boot/i2c/tftp//build make allr�rïº}rðº(jÅUjÆjêºubaubeubjÇ)�rñº}ròº(jÅUjKjÆj„¹jÎj}³jÐjÑjÒ}róº(jÔ]rôºXusagerõºajÕ]jÖ]j×]röºUid96r÷ºajÚ]ujÜM­jÝhjÞ]røº(jà)�rùº}rúº(jÅXUsagerûºjÆjñºjÎj}³jÐjäjÒ}rüº(jÔ]jÕ]jÖ]j×]jÚ]ujÜM­jÝhjÞ]rýºjçXUsagerþº…�rÿº}r»(jÅjûºjÆjùºubaubjò)�r»}r»(jÅX’After your IBL ethernet settings are configured correctly and flashed into EEPROM memory, follow these steps to continue the TFTP booting process:r»jÆjñºjÎj}³jÐjõjÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¯jÝhjÞ]r»jçX’After your IBL ethernet settings are configured correctly and flashed into EEPROM memory, follow these steps to continue the TFTP booting process:r»…�r»}r»(jÅj»jÆj»ubaubj )�r »}r »(jÅUjÆjñºjÎj}³jÐj jÒ}r »(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM³jÝhjÞ]r »(j{)�r »}r»(jÅX®Start a TFTP server on your local PC. Your local PC will be the one sending the image to be booted, so make sure your PC and EVM are connected to the same subnet via ethernetjÆj »jÎj}³jÐjjÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r»jò)�r»}r»(jÅX®Start a TFTP server on your local PC. Your local PC will be the one sending the image to be booted, so make sure your PC and EVM are connected to the same subnet via ethernetr»jÆj »jÎj}³jÐjõjÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÜM³jÞ]r»jçX®Start a TFTP server on your local PC. Your local PC will be the one sending the image to be booted, so make sure your PC and EVM are connected to the same subnet via ethernetr»…�r»}r»(jÅj»jÆj»ubaubaubj{)�r»}r»(jÅX]Copy i2ctftpboot_.out (refer to compilation step above) to your base TFTP directoryjÆj »jÎj}³jÐjjÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r»jò)�r»}r»(jÅX]Copy i2ctftpboot_.out (refer to compilation step above) to your base TFTP directoryr»jÆj»jÎj}³jÐjõjÒ}r »(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¶jÞ]r!»jçX]Copy i2ctftpboot_.out (refer to compilation step above) to your base TFTP directoryr"»…�r#»}r$»(jÅj»jÆj»ubaubaubj{)�r%»}r&»(jÅX,Rename i2ctftpboot_.out to app.outr'»jÆj »jÎj}³jÐjjÒ}r(»(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r)»jò)�r*»}r+»(jÅj'»jÆj%»jÎj}³jÐjõjÒ}r,»(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¸jÞ]r-»jçX,Rename i2ctftpboot_.out to app.outr.»…�r/»}r0»(jÅj'»jÆj*»ubaubaubj{)�r1»}r2»(jÅXÀSet the IP address of the PC that is running the TFTP server to 192.168.2.101, since by default IBL will set the EVM IP address to 192.168.2.100 and the TFTP server IP address to 192.168.2.101jÆj »jÎj}³jÐjjÒ}r3»(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r4»jò)�r5»}r6»(jÅXÀSet the IP address of the PC that is running the TFTP server to 192.168.2.101, since by default IBL will set the EVM IP address to 192.168.2.100 and the TFTP server IP address to 192.168.2.101r7»jÆj1»jÎj}³jÐjõjÒ}r8»(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¹jÞ]r9»jçXÀSet the IP address of the PC that is running the TFTP server to 192.168.2.101, since by default IBL will set the EVM IP address to 192.168.2.100 and the TFTP server IP address to 192.168.2.101r:»…�r;»}r<»(jÅj7»jÆj5»ubaubaubj{)�r=»}r>»(jÅX/Set EVM to TFTP boot mode and power on the EVM jÆj »jÎj}³jÐjjÒ}r?»(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r@»jò)�rA»}rB»(jÅX.Set EVM to TFTP boot mode and power on the EVMrC»jÆj=»jÎj}³jÐjõjÒ}rD»(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¼jÞ]rE»jçX.Set EVM to TFTP boot mode and power on the EVMrF»…�rG»}rH»(jÅjC»jÆjA»ubaubaubeubjò)�rI»}rJ»(jÅXeYour PC will send the application image to the EVM to boot. Open an UART terminal to view the output.rK»jÆjñºjÎj}³jÐjõjÒ}rL»(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¾jÝhjÞ]rM»jçXeYour PC will send the application image to the EVM to boot. Open an UART terminal to view the output.rN»…�rO»}rP»(jÅjK»jÆjI»ubaubeubeubjÇ)�rQ»}rR»(jÅUjÆj¹jÎj}³jÐjÑjÒ}rS»(jÔ]jÕ]jÖ]j×]rT»U post-bootrU»ajÚ]rV»h‚aujÜMÂjÝhjÞ]rW»(jà)�rX»}rY»(jÅX POST BootrZ»jÆjQ»jÎj}³jÐjäjÒ}r[»(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÂjÝhjÞ]r\»jçX POST Bootr]»…�r^»}r_»(jÅjZ»jÆjX»ubaubjò)�r`»}ra»(jÅX}POST (Power On Self Test) Boot is designed to do a quick self-diagnostic upon boot. The POST application itself is located inrb»jÆjQ»jÎj}³jÐjõjÒ}rc»(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÄjÝhjÞ]rd»jçX}POST (Power On Self Test) Boot is designed to do a quick self-diagnostic upon boot. The POST application itself is located inre»…�rf»}rg»(jÅjb»jÆj`»ubaubj)�rh»}ri»(jÅXA[SDK Install Path]/pdk__/packages/ti/boot/postjÆjQ»jÎj}³jÐjjÒ}rj»(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMâ*jÝhjÞ]rk»jçXA[SDK Install Path]/pdk__/packages/ti/boot/postrl»…�rm»}rn»(jÅUjÆjh»ubaubjò)�ro»}rp»(jÅXŽThis application should already be compiled and flashed into EEPROM out-of-box. Below instructions are for re-compilation or re-flashing only.rq»jÆjQ»jÎj}³jÐjõjÒ}rr»(jÔ]jÕ]jÖ]j×]jÚ]ujÜMËjÝhjÞ]rs»jçXŽThis application should already be compiled and flashed into EEPROM out-of-box. Below instructions are for re-compilation or re-flashing only.rt»…�ru»}rv»(jÅjq»jÆjo»ubaubjÇ)�rw»}rx»(jÅUjKjÆjQ»jÎj}³jÐjÑjÒ}ry»(jÔ]rz»X compilationr{»ajÕ]jÖ]j×]r|»Uid97r}»ajÚ]ujÜMÐjÝhjÞ]r~»(jà)�r»}r€»(jÅX Compilationr�»jÆjw»jÎj}³jÐjäjÒ}r‚»(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÐjÝhjÞ]rƒ»jçX Compilationr„»…�r…»}r†»(jÅj�»jÆj»ubaubj)�r‡»}rˆ»(jÅXÅcd [SDK Install Path]/pdk__/packages/ti/boot/post//build make all cd [SDK Install Path]/pdk__/packages/ti/boot/post//bin ./post_romparse.shjÆjw»jÎj}³jÐjjÒ}r‰»(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMí*jÝhjÞ]rŠ»jçXÅcd [SDK Install Path]/pdk__/packages/ti/boot/post//build make all cd [SDK Install Path]/pdk__/packages/ti/boot/post//bin ./post_romparse.shr‹»…�rŒ»}r�»(jÅUjÆj‡»ubaubjò)�rŽ»}r�»(jÅXuNote: You would need to use post_romparse.bat instead of the \*.sh version if your host system is running on Windows.jÆjw»jÎj}³jÐjõjÒ}r�»(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÙjÝhjÞ]r‘»jçXtNote: You would need to use post_romparse.bat instead of the *.sh version if your host system is running on Windows.r’»…�r“»}r”»(jÅXuNote: You would need to use post_romparse.bat instead of the \*.sh version if your host system is running on Windows.jÆjŽ»ubaubeubjÇ)�r•»}r–»(jÅUjKjÆjQ»jÎj}³jÐjÑjÒ}r—»(jÔ]r˜»Xusager™»ajÕ]jÖ]j×]rš»Uid98r›»ajÚ]ujÜMÝjÝhjÞ]rœ»(jà)�r�»}rž»(jÅXUsagerŸ»jÆj•»jÎj}³jÐjäjÒ}r »(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÝjÝhjÞ]r¡»jçXUsager¢»…�r£»}r¤»(jÅjŸ»jÆj�»ubaubjò)�r¥»}r¦»(jÅX%To flash the POST binary into EEPROM:r§»jÆj•»jÎj}³jÐjõjÒ}r¨»(jÔ]jÕ]jÖ]j×]jÚ]ujÜMßjÝhjÞ]r©»jçX%To flash the POST binary into EEPROM:rª»…�r«»}r¬»(jÅj§»jÆj¥»ubaubj )�r­»}r®»(jÅUjÆj•»jÎj}³jÐj jÒ}r¯»(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMájÝhjÞ]r°»(j{)�r±»}r²»(jÅXqRefer to above Flash Writers section on flashing EEPROM memory. The binary you are flashing is "post_i2crom.bin".jÆj­»jÎj}³jÐjjÒ}r³»(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r´»jò)�rµ»}r¶»(jÅXqRefer to above Flash Writers section on flashing EEPROM memory. The binary you are flashing is "post_i2crom.bin".r·»jÆj±»jÎj}³jÐjõjÒ}r¸»(jÔ]jÕ]jÖ]j×]jÚ]ujÜMájÞ]r¹»jçXqRefer to above Flash Writers section on flashing EEPROM memory. The binary you are flashing is "post_i2crom.bin".rº»…�r»»}r¼»(jÅj·»jÆjµ»ubaubaubj{)�r½»}r¾»(jÅXÖBefore running the last step of the EEPROM flashing instruction to run the DSP core, modify the **eepromwriter_input.txt** to use **0x50** for the bus_addr field. The **eepromwriter_input.txt** file is located in: jÆj­»jÎj}³jÐjjÒ}r¿»(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÀ»jò)�rÁ»}r»(jÅXÕBefore running the last step of the EEPROM flashing instruction to run the DSP core, modify the **eepromwriter_input.txt** to use **0x50** for the bus_addr field. The **eepromwriter_input.txt** file is located in:jÆj½»jÎj}³jÐjõjÒ}rû(jÔ]jÕ]jÖ]j×]jÚ]ujÜMãjÞ]rÄ»(jçX`Before running the last step of the EEPROM flashing instruction to run the DSP core, modify the rÅ»…�rÆ»}rÇ»(jÅX`Before running the last step of the EEPROM flashing instruction to run the DSP core, modify the jÆjÁ»ubjÚ)�rÈ»}rÉ»(jÅX**eepromwriter_input.txt**jÒ}rÊ»(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÁ»jÞ]rË»jçXeepromwriter_input.txtrÌ»…�rÍ»}rλ(jÅUjÆjÈ»ubajÐjâubjçX to use rÏ»…�rл}rÑ»(jÅX to use jÆjÁ»ubjÚ)�rÒ»}rÓ»(jÅX**0x50**jÒ}rÔ»(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÁ»jÞ]rÕ»jçX0x50rÖ»…�r×»}rØ»(jÅUjÆjÒ»ubajÐjâubjçX for the bus_addr field. The rÙ»…�rÚ»}rÛ»(jÅX for the bus_addr field. The jÆjÁ»ubjÚ)�rÜ»}rÝ»(jÅX**eepromwriter_input.txt**jÒ}rÞ»(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÁ»jÞ]rß»jçXeepromwriter_input.txtrà»…�rá»}râ»(jÅUjÆjÜ»ubajÐjâubjçX file is located in:rã»…�rä»}rå»(jÅX file is located in:jÆjÁ»ubeubaubeubj)�ræ»}rç»(jÅXU[SDK Install Path]/pdk__/packages/ti/boot/writers/eeprom//binjÆj•»jÎj}³jÐjjÒ}rè»(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM+jÝhjÞ]ré»jçXU[SDK Install Path]/pdk__/packages/ti/boot/writers/eeprom//binrê»…�rë»}rì»(jÅUjÆjæ»ubaubjò)�rí»}rî»(jÅX´Configure your EVM's DIP Switches accordingly to I2C POST BOOT mode. The POST application will be loaded from EEPROM 0x50 and output will be available over the UART serial console.rï»jÆj•»jÎj}³jÐjõjÒ}rð»(jÔ]jÕ]jÖ]j×]jÚ]ujÜMìjÝhjÞ]rñ»jçX´Configure your EVM's DIP Switches accordingly to I2C POST BOOT mode. The POST application will be loaded from EEPROM 0x50 and output will be available over the UART serial console.rò»…�ró»}rô»(jÅjï»jÆjí»ubaubjc)�rõ»}rö»(jÅUjÆj•»jÎj}³jÐjfjÒ}r÷»(jÔ]jÕ]jÖ]j×]jÚ]ujÜMðjÝhjÞ]rø»ji)�rù»}rú»(jÅUjlKjÆjõ»jÎj}³jÐjÜjÒ}rû»(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�rü»}rý»(jÅUjÆj¹jÎj}³jÐjÑjÒ}rþ»(jÔ]jÕ]jÖ]j×]rÿ»U ethernet-bootr¼ajÚ]r¼hêaujÜMójÝhjÞ]r¼(jà)�r¼}r¼(jÅX ETHERNET Bootr¼jÆjü»jÎj}³jÐjäjÒ}r¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMójÝhjÞ]r¼jçX ETHERNET Bootr¼…�r ¼}r ¼(jÅj¼jÆj¼ubaubjò)�r ¼}r ¼(jÅXöETHERNET Boot uses Ethernet sockets to transfer a bootable image from a host to the EVM. After powering on in Ethernet boot mode, the EVM will send BOOTP packets at regular interval - this gives visibility of the MAC ID of the EVM to the network.r ¼jÆjü»jÎj}³jÐjõjÒ}r¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMõjÝhjÞ]r¼jçXöETHERNET Boot uses Ethernet sockets to transfer a bootable image from a host to the EVM. After powering on in Ethernet boot mode, the EVM will send BOOTP packets at regular interval - this gives visibility of the MAC ID of the EVM to the network.r¼…�r¼}r¼(jÅj ¼jÆj ¼ubaubjò)�r¼}r¼(jÅX{Below are instructions on compiling and running an example to send a simple program to the EVM while in Ethernet boot mode.r¼jÆjü»jÎj}³jÐjõjÒ}r¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMújÝhjÞ]r¼jçX{Below are instructions on compiling and running an example to send a simple program to the EVM while in Ethernet boot mode.r¼…�r¼}r¼(jÅj¼jÆj¼ubaubjÇ)�r¼}r¼(jÅUjKjÆjü»jÎj}³jÐjÑjÒ}r¼(jÔ]r¼X compilationr¼ajÕ]jÖ]j×]r ¼Uid99r!¼ajÚ]ujÜMþjÝhjÞ]r"¼(jà)�r#¼}r$¼(jÅX Compilationr%¼jÆj¼jÎj}³jÐjäjÒ}r&¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMþjÝhjÞ]r'¼jçX Compilationr(¼…�r)¼}r*¼(jÅj%¼jÆj#¼ubaubj)�r+¼}r,¼(jÅXÆcd [SDK Install Path]/pdk__/packages/ti/boot/examples/ethernet/Utilities make all cd [SDK Install Path]/pdk__/packages/ti/boot/examples/ethernet/simple make alljÆj¼jÎj}³jÐjjÒ}r-¼(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM+jÝhjÞ]r.¼jçXÆcd [SDK Install Path]/pdk__/packages/ti/boot/examples/ethernet/Utilities make all cd [SDK Install Path]/pdk__/packages/ti/boot/examples/ethernet/simple make allr/¼…�r0¼}r1¼(jÅUjÆj+¼ubaubeubjÇ)�r2¼}r3¼(jÅUjKjÆjü»jÎj}³jÐjÑjÒ}r4¼(jÔ]r5¼Xusager6¼ajÕ]jÖ]j×]r7¼Uid100r8¼ajÚ]ujÜMjÝhjÞ]r9¼(jà)�r:¼}r;¼(jÅXUsager<¼jÆj2¼jÎj}³jÐjäjÒ}r=¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r>¼jçXUsager?¼…�r@¼}rA¼(jÅj<¼jÆj:¼ubaubj )�rB¼}rC¼(jÅUjÆj2¼jÎj}³jÐj jÒ}rD¼(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM jÝhjÞ]rE¼(j{)�rF¼}rG¼(jÅX…Set the EVM's DIP switches to Ethernet boot mode. Connect Ethernet cables such that the EVM and your Host PC are on the same network.jÆjB¼jÎj}³jÐjjÒ}rH¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rI¼jò)�rJ¼}rK¼(jÅX…Set the EVM's DIP switches to Ethernet boot mode. Connect Ethernet cables such that the EVM and your Host PC are on the same network.rL¼jÆjF¼jÎj}³jÐjõjÒ}rM¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rN¼jçX…Set the EVM's DIP switches to Ethernet boot mode. Connect Ethernet cables such that the EVM and your Host PC are on the same network.rO¼…�rP¼}rQ¼(jÅjL¼jÆjJ¼ubaubaubj{)�rR¼}rS¼(jÅX¥Power on the EVM. The EVM will start sending BOOTP packets. Read the packets for the EVM's MAC ID. You can read the packet by using a network tool such as Wireshark.jÆjB¼jÎj}³jÐjjÒ}rT¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rU¼jò)�rV¼}rW¼(jÅX¥Power on the EVM. The EVM will start sending BOOTP packets. Read the packets for the EVM's MAC ID. You can read the packet by using a network tool such as Wireshark.rX¼jÆjR¼jÎj}³jÐjõjÒ}rY¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rZ¼jçX¥Power on the EVM. The EVM will start sending BOOTP packets. Read the packets for the EVM's MAC ID. You can read the packet by using a network tool such as Wireshark.r[¼…�r\¼}r]¼(jÅjX¼jÆjV¼ubaubaubj{)�r^¼}r_¼(jÅXcOn your Host PC, add an ARP entry to associate the EVM's MAC ID with an IP address on your network.jÆjB¼jÎj}³jÐjjÒ}r`¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ra¼jò)�rb¼}rc¼(jÅXcOn your Host PC, add an ARP entry to associate the EVM's MAC ID with an IP address on your network.rd¼jÆj^¼jÎj}³jÐjõjÒ}re¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rf¼jçXcOn your Host PC, add an ARP entry to associate the EVM's MAC ID with an IP address on your network.rg¼…�rh¼}ri¼(jÅjd¼jÆjb¼ubaubaubj{)�rj¼}rk¼(jÅXoUse the pcsendpkt utility provided to send the simple.eth program compiled in the compilation step to the EVM. jÆjB¼jÎj}³jÐjjÒ}rl¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rm¼jò)�rn¼}ro¼(jÅXnUse the pcsendpkt utility provided to send the simple.eth program compiled in the compilation step to the EVM.rp¼jÆjj¼jÎj}³jÐjõjÒ}rq¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rr¼jçXnUse the pcsendpkt utility provided to send the simple.eth program compiled in the compilation step to the EVM.rs¼…�rt¼}ru¼(jÅjp¼jÆjn¼ubaubaubeubjò)�rv¼}rw¼(jÅXTo use pcsendpkt:rx¼jÆj2¼jÎj}³jÐjõjÒ}ry¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rz¼jçXTo use pcsendpkt:r{¼…�r|¼}r}¼(jÅjx¼jÆjv¼ubaubj)�r~¼}r¼(jÅX�cd [SDK Install Path]/pdk__/packages/ti/boot/examples/ethernet/Utilities pcsendpkt simple.eth jÆj2¼jÎj}³jÐjjÒ}r€¼(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM1+jÝhjÞ]r�¼jçX�cd [SDK Install Path]/pdk__/packages/ti/boot/examples/ethernet/Utilities pcsendpkt simple.eth r‚¼…�rƒ¼}r„¼(jÅUjÆj~¼ubaubjò)�r…¼}r†¼(jÅXC** is the IP address you assigned the EVM in step 3r‡¼jÆj2¼jÎj}³jÐjõjÒ}rˆ¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r‰¼(jM)�rм}r‹¼(jÅX**jÒ}rŒ¼(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…¼jÞ]r�¼jçXr޼…�r�¼}r�¼(jÅUjÆjмubajÐjUubjçX1 is the IP address you assigned the EVM in step 3r‘¼…�r’¼}r“¼(jÅX1 is the IP address you assigned the EVM in step 3jÆj…¼ubeubjë)�r”¼}r•¼(jÅX¸ If you are on a Linux Host PC, you may need to recompile pcsendpkt locally with GCC To verify, connect to the EVM's Core 0 via CCS and check that the A1 register is set to 0x11223344jÆj2¼jÎj}³jÐjïjÒ}r–¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r—¼(j3)�r˜¼}r™¼(jÅUjÒ}rš¼(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”¼jÞ]r›¼jò)�rœ¼}r�¼(jÅXSIf you are on a Linux Host PC, you may need to recompile pcsendpkt locally with GCCrž¼jÆj˜¼jÎj}³jÐjõjÒ}rŸ¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r ¼jçXSIf you are on a Linux Host PC, you may need to recompile pcsendpkt locally with GCCr¡¼…�r¢¼}r£¼(jÅjž¼jÆjœ¼ubaubajÐj6ubjò)�r¤¼}r¥¼(jÅXbTo verify, connect to the EVM's Core 0 via CCS and check that the A1 register is set to 0x11223344r¦¼jÆj”¼jÎj}³jÐjõjÒ}r§¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r¨¼jçXbTo verify, connect to the EVM's Core 0 via CCS and check that the A1 register is set to 0x11223344r©¼…�rª¼}r«¼(jÅj¦¼jÆj¤¼ubaubeubjc)�r¬¼}r­¼(jÅUjÆj2¼jÎj}³jÐjfjÒ}r®¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜM#jÝhjÞ]r¯¼ji)�r°¼}r±¼(jÅUjlKjÆj¬¼jÎj}³jÐjÜjÒ}r²¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�r³¼}r´¼(jÅUjÆj¹jÎj}³jÐjÑjÒ}rµ¼(jÔ]jÕ]jÖ]j×]r¶¼U srio-bootr·¼ajÚ]r¸¼höaujÜM&jÝhjÞ]r¹¼(jà)�rº¼}r»¼(jÅX SRIO Bootr¼¼jÆj³¼jÎj}³jÐjäjÒ}r½¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜM&jÝhjÞ]r¾¼jçX SRIO Bootr¿¼…�rÀ¼}rÁ¼(jÅj¼¼jÆjº¼ubaubjò)�r¼}rü(jÅXdSRIO boot will attempt to load and run a binary image received via SRIO. An example can be found in:rļjÆj³¼jÎj}³jÐjõjÒ}rż(jÔ]jÕ]jÖ]j×]jÚ]ujÜM(jÝhjÞ]rƼjçXdSRIO boot will attempt to load and run a binary image received via SRIO. An example can be found in:rǼ…�rȼ}rɼ(jÅjļjÆj¼ubaubj)�rʼ}r˼(jÅXJ[SDK Install Path]/pdk__/packages/ti/boot/examples/sriojÆj³¼jÎj}³jÐjjÒ}r̼(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMF+jÝhjÞ]rͼjçXJ[SDK Install Path]/pdk__/packages/ti/boot/examples/sriorμ…�rϼ}rм(jÅUjÆjʼubaubjò)�rѼ}rÒ¼(jÅXFBelow are instructions on compiling and running the SRIO boot example.rÓ¼jÆj³¼jÎj}³jÐjõjÒ}rÔ¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜM/jÝhjÞ]rÕ¼jçXFBelow are instructions on compiling and running the SRIO boot example.rÖ¼…�r×¼}rؼ(jÅjÓ¼jÆjѼubaubjÇ)�rÙ¼}rÚ¼(jÅUjKjÆj³¼jÎj}³jÐjÑjÒ}rÛ¼(jÔ]rܼX compilationrݼajÕ]jÖ]j×]rÞ¼Uid101rß¼ajÚ]ujÜM2jÝhjÞ]rà¼(jà)�rá¼}râ¼(jÅX Compilationrã¼jÆjÙ¼jÎj}³jÐjäjÒ}rä¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜM2jÝhjÞ]rå¼jçX Compilationræ¼…�rç¼}rè¼(jÅjã¼jÆjá¼ubaubj)�ré¼}rê¼(jÅX„cd [SDK Install Path]/pdk__/packages/ti/boot/examples/srio/srioboot_ddrinit//build make all cd [SDK Install Path]/pdk__/packages/ti/boot/examples/srio/srioboot_ddrinit//bin ./srioboot_ddrinit_elf2HBin.sh cd [SDK Install Path]/pdk__/packages/ti/boot/examples/srio/srioboot_helloworld//build make all cd [SDK Install Path]/pdk__/packages/ti/boot/examples/srio/srioboot_helloworld//bin ./helloworld_elf2HBin.sh cd [SDK Install Path]/pdk__/packages/ti/boot/examples/srio/srioboot_example//build make alljÆjÙ¼jÎj}³jÐjjÒ}rë¼(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMO+jÝhjÞ]rì¼jçX„cd [SDK Install Path]/pdk__/packages/ti/boot/examples/srio/srioboot_ddrinit//build make all cd [SDK Install Path]/pdk__/packages/ti/boot/examples/srio/srioboot_ddrinit//bin ./srioboot_ddrinit_elf2HBin.sh cd [SDK Install Path]/pdk__/packages/ti/boot/examples/srio/srioboot_helloworld//build make all cd [SDK Install Path]/pdk__/packages/ti/boot/examples/srio/srioboot_helloworld//bin ./helloworld_elf2HBin.sh cd [SDK Install Path]/pdk__/packages/ti/boot/examples/srio/srioboot_example//build make allrí¼…�rî¼}rï¼(jÅUjÆjé¼ubaubjò)�rð¼}rñ¼(jÅXòNote: You would need to use srioboot_ddrinit_elf2HBin.bat and helloworld_elf2HBin.bat instead of their \*.sh version respectively if your host system is running on Windows. Compilation of the projects should be done in the order stated above.jÆjÙ¼jÎj}³jÐjõjÒ}rò¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜMAjÝhjÞ]ró¼jçXñNote: You would need to use srioboot_ddrinit_elf2HBin.bat and helloworld_elf2HBin.bat instead of their *.sh version respectively if your host system is running on Windows. Compilation of the projects should be done in the order stated above.rô¼…�rõ¼}rö¼(jÅXòNote: You would need to use srioboot_ddrinit_elf2HBin.bat and helloworld_elf2HBin.bat instead of their \*.sh version respectively if your host system is running on Windows. Compilation of the projects should be done in the order stated above.jÆjð¼ubaubeubjÇ)�r÷¼}rø¼(jÅUjKjÆj³¼jÎj}³jÐjÑjÒ}rù¼(jÔ]rú¼Xusagerû¼ajÕ]jÖ]j×]rü¼Uid102rý¼ajÚ]ujÜMGjÝhjÞ]rþ¼(jà)�rÿ¼}r½(jÅXUsager½jÆj÷¼jÎj}³jÐjäjÒ}r½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMGjÝhjÞ]r½jçXUsager½…�r½}r½(jÅj½jÆjÿ¼ubaubjò)�r½}r½(jÅX`You will need to have 2 EVMs - both should be set to SRIO boot mode. The two EVMs will be connected through the AMC breakout board (lane x of one slot should be connected to lane x of the other breakout slot). One EVM will be acting as the host (referred to as the HOST EVM) and the other EVM will be doing the booting (referred to as the BOOTING EVM).r ½jÆj÷¼jÎj}³jÐjõjÒ}r ½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMIjÝhjÞ]r ½jçX`You will need to have 2 EVMs - both should be set to SRIO boot mode. The two EVMs will be connected through the AMC breakout board (lane x of one slot should be connected to lane x of the other breakout slot). One EVM will be acting as the host (referred to as the HOST EVM) and the other EVM will be doing the booting (referred to as the BOOTING EVM).r ½…�r ½}r½(jÅj ½jÆj½ubaubj )�r½}r½(jÅUjÆj÷¼jÎj}³jÐj jÒ}r½(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜMOjÝhjÞ]r½(j{)�r½}r½(jÅX%Compile srioboot_example_evm66XXl.outr½jÆj½jÎj}³jÐjjÒ}r½(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r½jò)�r½}r½(jÅj½jÆj½jÎj}³jÐjõjÒ}r½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMOjÞ]r½jçX%Compile srioboot_example_evm66XXl.outr½…�r½}r½(jÅj½jÆj½ubaubaubj{)�r½}r ½(jÅXLConnect the BOOTING EVM's UART serial port to your PC using the RS-232 cablejÆj½jÎj}³jÐjjÒ}r!½(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r"½jò)�r#½}r$½(jÅXLConnect the BOOTING EVM's UART serial port to your PC using the RS-232 cabler%½jÆj½jÎj}³jÐjõjÒ}r&½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMPjÞ]r'½jçXLConnect the BOOTING EVM's UART serial port to your PC using the RS-232 cabler(½…�r)½}r*½(jÅj%½jÆj#½ubaubaubj{)�r+½}r,½(jÅX'Connect a JTAG emulator on the HOST EVMr-½jÆj½jÎj}³jÐjjÒ}r.½(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r/½jò)�r0½}r1½(jÅj-½jÆj+½jÎj}³jÐjõjÒ}r2½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMRjÞ]r3½jçX'Connect a JTAG emulator on the HOST EVMr4½…�r5½}r6½(jÅj-½jÆj0½ubaubaubj{)�r7½}r8½(jÅXPower on both EVMsr9½jÆj½jÎj}³jÐjjÒ}r:½(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r;½jò)�r<½}r=½(jÅj9½jÆj7½jÎj}³jÐjõjÒ}r>½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÞ]r?½jçXPower on both EVMsr@½…�rA½}rB½(jÅj9½jÆj<½ubaubaubj{)�rC½}rD½(jÅX�Open an UART terminal to view the BOOTING EVM's output. (Remember to set the baud rate to 115.2k bps, 8-bit data, no parity, 1-bit stop, and no flow control)jÆj½jÎj}³jÐjjÒ}rE½(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rF½jò)�rG½}rH½(jÅX�Open an UART terminal to view the BOOTING EVM's output. (Remember to set the baud rate to 115.2k bps, 8-bit data, no parity, 1-bit stop, and no flow control)rI½jÆjC½jÎj}³jÐjõjÒ}rJ½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMTjÞ]rK½jçX�Open an UART terminal to view the BOOTING EVM's output. (Remember to set the baud rate to 115.2k bps, 8-bit data, no parity, 1-bit stop, and no flow control)rL½…�rM½}rN½(jÅjI½jÆjG½ubaubaubj{)�rO½}rP½(jÅX£Connect to the HOST EVM via Code Composer Studio (CCS is recommended to be version 6 or higher). Launch target configuration for your HOST EVM and connect to DSP0.jÆj½jÎj}³jÐjjÒ}rQ½(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rR½jò)�rS½}rT½(jÅX£Connect to the HOST EVM via Code Composer Studio (CCS is recommended to be version 6 or higher). Launch target configuration for your HOST EVM and connect to DSP0.rU½jÆjO½jÎj}³jÐjõjÒ}rV½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMWjÞ]rW½jçX£Connect to the HOST EVM via Code Composer Studio (CCS is recommended to be version 6 or higher). Launch target configuration for your HOST EVM and connect to DSP0.rX½…�rY½}rZ½(jÅjU½jÆjS½ubaubaubj{)�r[½}r\½(jÅX<Load and run srioboot_example_evm66xxl.out on your HOST EVM jÆj½jÎj}³jÐjjÒ}r]½(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r^½jò)�r_½}r`½(jÅX;Load and run srioboot_example_evm66xxl.out on your HOST EVMra½jÆj[½jÎj}³jÐjõjÒ}rb½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMZjÞ]rc½jçX;Load and run srioboot_example_evm66xxl.out on your HOST EVMrd½…�re½}rf½(jÅja½jÆj_½ubaubaubeubjò)�rg½}rh½(jÅX-CCS console for your HOST EVM should display:ri½jÆj÷¼jÎj}³jÐjõjÒ}rj½(jÔ]jÕ]jÖ]j×]jÚ]ujÜM\jÝhjÞ]rk½jçX-CCS console for your HOST EVM should display:rl½…�rm½}rn½(jÅji½jÆjg½ubaubj)�ro½}rp½(jÅX¨[C66xx_0] SRIO Boot Host Example Version 01.00.00.01 [C66xx_0] [C66xx_0] Transfer DDR init code via SRIO successfully [C66xx_0] Transfer boot code via SRIO successfullyjÆj÷¼jÎj}³jÐjjÒ}rq½(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMy+jÝhjÞ]rr½jçX¨[C66xx_0] SRIO Boot Host Example Version 01.00.00.01 [C66xx_0] [C66xx_0] Transfer DDR init code via SRIO successfully [C66xx_0] Transfer boot code via SRIO successfullyrs½…�rt½}ru½(jÅUjÆjo½ubaubjò)�rv½}rw½(jÅX-Terminal for your BOOTING EVM should display:rx½jÆj÷¼jÎj}³jÐjõjÒ}ry½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMejÝhjÞ]rz½jçX-Terminal for your BOOTING EVM should display:r{½…�r|½}r}½(jÅjx½jÆjv½ubaubj)�r~½}r½(jÅXÏSRIO Boot Hello World Example Version 01.00.00.01 Booting Hello World image on Core 0 from SRIO ... Booting Hello World image on Core 1 from Core 0 ... Booting Hello World image on Core 2 from Core 0 ... Booting Hello World image on Core 3 from Core 0 ... Booting Hello World image on Core 4 from Core 0 ... Booting Hello World image on Core 5 from Core 0 ... Booting Hello World image on Core 6 from Core 0 ... Booting Hello World image on Core 7 from Core 0 ...jÆj÷¼jÎj}³jÐjjÒ}r€½(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM‚+jÝhjÞ]r�½jçXÏSRIO Boot Hello World Example Version 01.00.00.01 Booting Hello World image on Core 0 from SRIO ... Booting Hello World image on Core 1 from Core 0 ... Booting Hello World image on Core 2 from Core 0 ... Booting Hello World image on Core 3 from Core 0 ... Booting Hello World image on Core 4 from Core 0 ... Booting Hello World image on Core 5 from Core 0 ... Booting Hello World image on Core 6 from Core 0 ... Booting Hello World image on Core 7 from Core 0 ...r‚½…�rƒ½}r„½(jÅUjÆj~½ubaubeubeubjÇ)�r…½}r†½(jÅUjÆj¹jÎj}³jÐjÑjÒ}r‡½(jÔ]jÕ]jÖ]j×]rˆ½U pcie-bootr‰½ajÚ]rнjaujÜMtjÝhjÞ]r‹½(jà)�rŒ½}r�½(jÅX PCIE Bootr޽jÆj…½jÎj}³jÐjäjÒ}r�½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMtjÝhjÞ]r�½jçX PCIE Bootr‘½…�r’½}r“½(jÅj޽jÆjŒ½ubaubjò)�r”½}r•½(jÅX[PCIE boot will attempt to load and run a binary image upon enumeration. Example is located:r–½jÆj…½jÎj}³jÐjõjÒ}r—½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMvjÝhjÞ]r˜½jçX[PCIE boot will attempt to load and run a binary image upon enumeration. Example is located:r™½…�rš½}r›½(jÅj–½jÆj”½ubaubj)�rœ½}r�½(jÅXJ[SDK Install Path]/pdk__/packages/ti/boot/examples/pciejÆj…½jÎj}³jÐjjÒ}rž½(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM”+jÝhjÞ]rŸ½jçXJ[SDK Install Path]/pdk__/packages/ti/boot/examples/pcier ½…�r¡½}r¢½(jÅUjÆjœ½ubaubjò)�r£½}r¤½(jÅXFBelow are instructions on compiling and running the PCIE boot example.r¥½jÆj…½jÎj}³jÐjõjÒ}r¦½(jÔ]jÕ]jÖ]j×]jÚ]ujÜM}jÝhjÞ]r§½jçXFBelow are instructions on compiling and running the PCIE boot example.r¨½…�r©½}rª½(jÅj¥½jÆj£½ubaubjÇ)�r«½}r¬½(jÅUjKjÆj…½jÎj}³jÐjÑjÒ}r­½(jÔ]r®½X compilationr¯½ajÕ]jÖ]j×]r°½Uid103r±½ajÚ]ujÜM€jÝhjÞ]r²½(jà)�r³½}r´½(jÅX Compilationrµ½jÆj«½jÎj}³jÐjäjÒ}r¶½(jÔ]jÕ]jÖ]j×]jÚ]ujÜM€jÝhjÞ]r·½jçX Compilationr¸½…�r¹½}rº½(jÅjµ½jÆj³½ubaubj)�r»½}r¼½(jÅXôcd [SDK Install Path]/pdk__/packages/ti/boot/examples/pcie/pcieboot_ddrinit//build make all cd [SDK Install Path]/pdk__/packages/ti/boot/examples/pcie/pcieboot_helloworld//build make alljÆj«½jÎj}³jÐjjÒ}r½½(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM�+jÝhjÞ]r¾½jçXôcd [SDK Install Path]/pdk__/packages/ti/boot/examples/pcie/pcieboot_ddrinit//build make all cd [SDK Install Path]/pdk__/packages/ti/boot/examples/pcie/pcieboot_helloworld//build make allr¿½…�rÀ½}rÁ½(jÅUjÆj»½ubaubjò)�r½}rý(jÅXAdditionally for C6678 EVM:rĽjÆj«½jÎj}³jÐjõjÒ}rŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‰jÝhjÞ]rƽjçXAdditionally for C6678 EVM:rǽ…�rȽ}rɽ(jÅjĽjÆj½ubaubj)�rʽ}r˽(jÅXöcd [SDK Install Path]/pdk__/packages/ti/boot/examples/pcie/pcieboot_interrupt//build make all cd [SDK Install Path]/pdk__/packages/ti/boot/examples/pcie/pcieboot_localreset//build make alljÆj«½jÎj}³jÐjjÒ}r̽(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¦+jÝhjÞ]rͽjçXöcd [SDK Install Path]/pdk__/packages/ti/boot/examples/pcie/pcieboot_interrupt//build make all cd [SDK Install Path]/pdk__/packages/ti/boot/examples/pcie/pcieboot_localreset//build make allrν…�rϽ}rн(jÅUjÆjʽubaubjò)�rѽ}rÒ½(jÅX£The POST application can also be used as a PCIE Boot example. Run the corresponding \*_elf2HBin.bat (or .sh) to convert the .out files into PCIE bootable binaries.jÆj«½jÎj}³jÐjõjÒ}rÓ½(jÔ]jÕ]jÖ]j×]jÚ]ujÜM’jÝhjÞ]rÔ½jçX¢The POST application can also be used as a PCIE Boot example. Run the corresponding *_elf2HBin.bat (or .sh) to convert the .out files into PCIE bootable binaries.rÕ½…�rÖ½}r×½(jÅX£The POST application can also be used as a PCIE Boot example. Run the corresponding \*_elf2HBin.bat (or .sh) to convert the .out files into PCIE bootable binaries.jÆjѽubaubeubjÇ)�rؽ}rÙ½(jÅUjKjÆj…½jÎj}³jÐjÑjÒ}rÚ½(jÔ]rÛ½XusagerܽajÕ]jÖ]j×]rݽUid104rÞ½ajÚ]ujÜM—jÝhjÞ]rß½(jà)�rà½}rá½(jÅXUsagerâ½jÆjؽjÎj}³jÐjäjÒ}rã½(jÔ]jÕ]jÖ]j×]jÚ]ujÜM—jÝhjÞ]rä½jçXUsagerå½…�ræ½}rç½(jÅjâ½jÆjà½ubaubjò)�rè½}ré½(jÅXAn AMC to PCIE adaptor card, a TMS320C66xxL EVM card and a Linux PC are required to do the test. The test is verified on both TMS320C6670L and TMS320C6678L cards, with both 32-bit and 64-Linux PCs running Ubuntu 10.04. Other Linux OS are expected to work as well.rê½jÆjؽjÎj}³jÐjõjÒ}rë½(jÔ]jÕ]jÖ]j×]jÚ]ujÜM™jÝhjÞ]rì½jçXAn AMC to PCIE adaptor card, a TMS320C66xxL EVM card and a Linux PC are required to do the test. The test is verified on both TMS320C6670L and TMS320C6678L cards, with both 32-bit and 64-Linux PCs running Ubuntu 10.04. Other Linux OS are expected to work as well.rí½…�rî½}rï½(jÅjê½jÆjè½ubaubjt)�rð½}rñ½(jÅUjÆjؽjÎj}³jÐjwjÒ}rò½(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMžjÝhjÞ]ró½(j{)�rô½}rõ½(jÅXOBefore connect the system, please update IBL with the latest from Processor SDKjÆjð½jÎj}³jÐjjÒ}rö½(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r÷½jò)�rø½}rù½(jÅXOBefore connect the system, please update IBL with the latest from Processor SDKrú½jÆjô½jÎj}³jÐjõjÒ}rû½(jÔ]jÕ]jÖ]j×]jÚ]ujÜMžjÞ]rü½jçXOBefore connect the system, please update IBL with the latest from Processor SDKrý½…�rþ½}rÿ½(jÅjú½jÆjø½ubaubaubj{)�r¾}r¾(jÅX2Set EVM card to PCIE boot (refer to hardware page)r¾jÆjð½jÎj}³jÐjjÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¾jò)�r¾}r¾(jÅj¾jÆj¾jÎj}³jÐjõjÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r¾jçX2Set EVM card to PCIE boot (refer to hardware page)r ¾…�r ¾}r ¾(jÅj¾jÆj¾ubaubaubj{)�r ¾}r ¾(jÅX+Assemble the EVM card into the adaptor cardr¾jÆjð½jÎj}³jÐjjÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¾jò)�r¾}r¾(jÅj¾jÆj ¾jÎj}³jÐjõjÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¡jÞ]r¾jçX+Assemble the EVM card into the adaptor cardr¾…�r¾}r¾(jÅj¾jÆj¾ubaubaubj{)�r¾}r¾(jÅXNConnect the URAT cable from EVM card to a Linux PC’s USB port or serial portjÆjð½jÎj}³jÐjjÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¾jò)�r¾}r¾(jÅXNConnect the URAT cable from EVM card to a Linux PC’s USB port or serial portr¾jÆj¾jÎj}³jÐjõjÒ}r¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¢jÞ]r ¾jçXNConnect the URAT cable from EVM card to a Linux PC’s USB port or serial portr!¾…�r"¾}r#¾(jÅj¾jÆj¾ubaubaubj{)�r$¾}r%¾(jÅX¦Completely shut off the PC power supply (by disconnecting the power cord), insert the AMC adaptor card (with EVM mounted) into an open PCIE slot in PC’s motherboardjÆjð½jÎj}³jÐjjÒ}r&¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r'¾jò)�r(¾}r)¾(jÅX¦Completely shut off the PC power supply (by disconnecting the power cord), insert the AMC adaptor card (with EVM mounted) into an open PCIE slot in PC’s motherboardr*¾jÆj$¾jÎj}³jÐjõjÒ}r+¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¤jÞ]r,¾jçX¦Completely shut off the PC power supply (by disconnecting the power cord), insert the AMC adaptor card (with EVM mounted) into an open PCIE slot in PC’s motherboardr-¾…�r.¾}r/¾(jÅj*¾jÆj(¾ubaubaubj{)�r0¾}r1¾(jÅXCSupply the power to PC, wait for a few seconds and power on the PC.r2¾jÆjð½jÎj}³jÐjjÒ}r3¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r4¾jò)�r5¾}r6¾(jÅj2¾jÆj0¾jÎj}³jÐjõjÒ}r7¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜM§jÞ]r8¾jçXCSupply the power to PC, wait for a few seconds and power on the PC.r9¾…�r:¾}r;¾(jÅj2¾jÆj5¾ubaubaubj{)�r<¾}r=¾(jÅXœMake sure the PCIE device is correctly enumerated by PC by checking below, note DEVICE_ID field is changed from 0x8888 to 0xb005 which is programmed in IBL.jÆjð½jÎj}³jÐjjÒ}r>¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r?¾jò)�r@¾}rA¾(jÅXœMake sure the PCIE device is correctly enumerated by PC by checking below, note DEVICE_ID field is changed from 0x8888 to 0xb005 which is programmed in IBL.rB¾jÆj<¾jÎj}³jÐjõjÒ}rC¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¨jÞ]rD¾jçXœMake sure the PCIE device is correctly enumerated by PC by checking below, note DEVICE_ID field is changed from 0x8888 to 0xb005 which is programmed in IBL.rE¾…�rF¾}rG¾(jÅjB¾jÆj@¾ubaubaubj{)�rH¾}rI¾(jÅXªEither enter PC’s BIOS setting when PC is booting up, a new PCIE device should be populated in the PCIE slot where card is inserted, shown as a “Multimedia deviceâ€�.jÆjð½jÎj}³jÐjjÒ}rJ¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rK¾jò)�rL¾}rM¾(jÅXªEither enter PC’s BIOS setting when PC is booting up, a new PCIE device should be populated in the PCIE slot where card is inserted, shown as a “Multimedia deviceâ€�.rN¾jÆjH¾jÎj}³jÐjõjÒ}rO¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜM«jÞ]rP¾jçXªEither enter PC’s BIOS setting when PC is booting up, a new PCIE device should be populated in the PCIE slot where card is inserted, shown as a “Multimedia deviceâ€�.rQ¾…�rR¾}rS¾(jÅjN¾jÆjL¾ubaubaubj{)�rT¾}rU¾(jÅX…Or, type “lspci –nâ€� under Linux command shell after Linux OS is loaded, a TI device (VENDOR_ID: 0x104c) should be in the list: jÆjð½jÎj}³jÐjjÒ}rV¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rW¾jò)�rX¾}rY¾(jÅX„Or, type “lspci –nâ€� under Linux command shell after Linux OS is loaded, a TI device (VENDOR_ID: 0x104c) should be in the list:rZ¾jÆjT¾jÎj}³jÐjõjÒ}r[¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜM®jÞ]r\¾jçX„Or, type “lspci –nâ€� under Linux command shell after Linux OS is loaded, a TI device (VENDOR_ID: 0x104c) should be in the list:r]¾…�r^¾}r_¾(jÅjZ¾jÆjX¾ubaubaubeubj)�r`¾}ra¾(jÅX�local-ubuntu:~$ lspci -n 00:00.0 0600: 8086:2774 00:1b.0 0403: 8086:27d8 (rev 01) …. 00:1f.3 0c05: 8086:27da (rev 01) 01:00.0 0480: 104c:b005 (rev 01) 03:00.0 0200: 14e4:1677 (rev 01) Similarly, one can type “lspciâ€�, local-ubuntu:~$ lspci …. 00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 01) 01:00.0 Multimedia controller: Texas Instruments Device b005 (rev 01) ....jÆjؽjÎj}³jÐjjÒ}rb¾(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMÌ+jÝhjÞ]rc¾jçX�local-ubuntu:~$ lspci -n 00:00.0 0600: 8086:2774 00:1b.0 0403: 8086:27d8 (rev 01) …. 00:1f.3 0c05: 8086:27da (rev 01) 01:00.0 0480: 104c:b005 (rev 01) 03:00.0 0200: 14e4:1677 (rev 01) Similarly, one can type “lspciâ€�, local-ubuntu:~$ lspci …. 00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 01) 01:00.0 Multimedia controller: Texas Instruments Device b005 (rev 01) ....rd¾…�re¾}rf¾(jÅUjÆj`¾ubaubjt)�rg¾}rh¾(jÅUjÆjؽjÎj}³jÐjwjÒ}ri¾(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMÂjÝhjÞ]rj¾(j{)�rk¾}rl¾(jÅXõThe PCIE BARn (n = 0, 1, 2, … , 5) registers are written by Linux PC after enumeration, they should be non-zero. Optionally, if a JTAG emulator is available, one can verify this by looking at address starting from 0x21801010 for 6 32-bit word.jÆjg¾jÎj}³jÐjjÒ}rm¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rn¾jò)�ro¾}rp¾(jÅXõThe PCIE BARn (n = 0, 1, 2, … , 5) registers are written by Linux PC after enumeration, they should be non-zero. Optionally, if a JTAG emulator is available, one can verify this by looking at address starting from 0x21801010 for 6 32-bit word.rq¾jÆjk¾jÎj}³jÐjõjÒ}rr¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÂjÞ]rs¾jçXõThe PCIE BARn (n = 0, 1, 2, … , 5) registers are written by Linux PC after enumeration, they should be non-zero. Optionally, if a JTAG emulator is available, one can verify this by looking at address starting from 0x21801010 for 6 32-bit word.rt¾…�ru¾}rv¾(jÅjq¾jÆjo¾ubaubaubj{)�rw¾}rx¾(jÅX#Prepare pciedemo.ko in the Linux PCry¾jÆjg¾jÎj}³jÐjjÒ}rz¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r{¾jò)�r|¾}r}¾(jÅjy¾jÆjw¾jÎj}³jÐjõjÒ}r~¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÆjÞ]r¾jçX#Prepare pciedemo.ko in the Linux PCr€¾…�r�¾}r‚¾(jÅjy¾jÆj|¾ubaubaubj{)�rƒ¾}r„¾(jÅX$On the Linux PC open a new terminal window to run minicom. First run “sudo minicom –sâ€� to set the correct configuration: 115200bps, 8-N-1, Hardware flow control: OFF, Software flow control: OFF, and select the correct Serial Device. Save then run “sudo minicomâ€� to monitor the port.jÆjg¾jÎj}³jÐjjÒ}r…¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r†¾jò)�r‡¾}rˆ¾(jÅX$On the Linux PC open a new terminal window to run minicom. First run “sudo minicom –sâ€� to set the correct configuration: 115200bps, 8-N-1, Hardware flow control: OFF, Software flow control: OFF, and select the correct Serial Device. Save then run “sudo minicomâ€� to monitor the port.r‰¾jÆjƒ¾jÎj}³jÐjõjÒ}rо(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÇjÞ]r‹¾jçX$On the Linux PC open a new terminal window to run minicom. First run “sudo minicom –sâ€� to set the correct configuration: 115200bps, 8-N-1, Hardware flow control: OFF, Software flow control: OFF, and select the correct Serial Device. Save then run “sudo minicomâ€� to monitor the port.rŒ¾…�r�¾}r޾(jÅj‰¾jÆj‡¾ubaubaubj{)�r�¾}r�¾(jÅX"Type “sudo insmod pciedemo.koâ€�r‘¾jÆjg¾jÎj}³jÐjjÒ}r’¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r“¾jò)�r”¾}r•¾(jÅj‘¾jÆj�¾jÎj}³jÐjõjÒ}r–¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÌjÞ]r—¾jçX"Type “sudo insmod pciedemo.koâ€�r˜¾…�r™¾}rš¾(jÅj‘¾jÆj”¾ubaubaubj{)�r›¾}rœ¾(jÅXÉIf a JTAG emulator is available, one can verify that the PC registers for cores other than core 0 should be inside DDR; and magic address for cores other than core 0 should be written with 0xBABEFACE. jÆjg¾jÎj}³jÐjjÒ}r�¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rž¾jò)�rŸ¾}r ¾(jÅXÈIf a JTAG emulator is available, one can verify that the PC registers for cores other than core 0 should be inside DDR; and magic address for cores other than core 0 should be written with 0xBABEFACE.r¡¾jÆj›¾jÎj}³jÐjõjÒ}r¢¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÍjÞ]r£¾jçXÈIf a JTAG emulator is available, one can verify that the PC registers for cores other than core 0 should be inside DDR; and magic address for cores other than core 0 should be written with 0xBABEFACE.r¤¾…�r¥¾}r¦¾(jÅj¡¾jÆjŸ¾ubaubaubeubeubjÇ)�r§¾}r¨¾(jÅUjÆj…½jÎj}³jÐjÑjÒ}r©¾(jÔ]jÕ]jÖ]j×]rª¾U,procedure-to-build-and-run-linux-host-loaderr«¾ajÚ]r¬¾j¦aujÜMÒjÝhjÞ]r­¾(jà)�r®¾}r¯¾(jÅX,Procedure to build and run Linux host loaderr°¾jÆj§¾jÎj}³jÐjäjÒ}r±¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÒjÝhjÞ]r²¾jçX,Procedure to build and run Linux host loaderr³¾…�r´¾}rµ¾(jÅj°¾jÆj®¾ubaubjt)�r¶¾}r·¾(jÅUjÆj§¾jÎj}³jÐjwjÒ}r¸¾(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMÔjÝhjÞ]r¹¾(j{)�rº¾}r»¾(jÅXãCreate a folder (e.g. pcie_test) in a Linux machine. Copy pciedemo.c, Makefile, pcieDdrInit_66xx.h, pcieBootCode_66xx.h, pcieInterrupt_66xx.h and post_66xx.h from tools\boot_loader\examples\pcie\linux_host_loader to the folder.jÆj¶¾jÎj}³jÐjjÒ}r¼¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r½¾jò)�r¾¾}r¿¾(jÅXãCreate a folder (e.g. pcie_test) in a Linux machine. Copy pciedemo.c, Makefile, pcieDdrInit_66xx.h, pcieBootCode_66xx.h, pcieInterrupt_66xx.h and post_66xx.h from tools\boot_loader\examples\pcie\linux_host_loader to the folder.jÆjº¾jÎj}³jÐjõjÒ}rÀ¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÔjÞ]rÁ¾jçXßCreate a folder (e.g. pcie_test) in a Linux machine. Copy pciedemo.c, Makefile, pcieDdrInit_66xx.h, pcieBootCode_66xx.h, pcieInterrupt_66xx.h and post_66xx.h from toolsboot_loaderexamplespcielinux_host_loader to the folder.r¾…�rþ}rľ(jÅXãCreate a folder (e.g. pcie_test) in a Linux machine. Copy pciedemo.c, Makefile, pcieDdrInit_66xx.h, pcieBootCode_66xx.h, pcieInterrupt_66xx.h and post_66xx.h from tools\boot_loader\examples\pcie\linux_host_loader to the folder.jÆj¾¾ubaubaubj{)�rž}rƾ(jÅX5Type “makeâ€�, a pciedemo.ko file should be createdrǾjÆj¶¾jÎj}³jÐjjÒ}rȾ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rɾjò)�rʾ}r˾(jÅjǾjÆjžjÎj}³jÐjõjÒ}r̾(jÔ]jÕ]jÖ]j×]jÚ]ujÜMØjÞ]r;jçX5Type “makeâ€�, a pciedemo.ko file should be createdrξ…�rϾ}rо(jÅjǾjÆjʾubaubaubj{)�rѾ}rÒ¾(jÅXˆBy default, this will build the “HelloWorldâ€� demo on little endian 6678, which is controlled by the following Marcos in pciedemo.c: jÆj¶¾jÎj}³jÐjjÒ}rÓ¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÔ¾jò)�rÕ¾}rÖ¾(jÅX‡By default, this will build the “HelloWorldâ€� demo on little endian 6678, which is controlled by the following Marcos in pciedemo.c:r×¾jÆjѾjÎj}³jÐjõjÒ}rؾ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÙjÞ]rÙ¾jçX‡By default, this will build the “HelloWorldâ€� demo on little endian 6678, which is controlled by the following Marcos in pciedemo.c:rÚ¾…�rÛ¾}rܾ(jÅj×¾jÆjÕ¾ubaubaubeubj)�rݾ}rÞ¾(jÅX„#define BIG_ENDIAN 0 #define HELLO_WORLD_DEMO 1 #define POST_DEMO 0 #define EDMA_INTC_DEMO 0 #define EVMC6678L 1 #define EVMC6670L 0jÆj§¾jÎj}³jÐjjÒ}rß¾(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM÷+jÝhjÞ]rà¾jçX„#define BIG_ENDIAN 0 #define HELLO_WORLD_DEMO 1 #define POST_DEMO 0 #define EDMA_INTC_DEMO 0 #define EVMC6678L 1 #define EVMC6670L 0rá¾…�râ¾}rã¾(jÅUjÆjݾubaubjò)�rä¾}rå¾(jÅX±One must select the endianness, demo program and target type by toggling between 0 and 1 accordingly. Then, type “make cleanâ€� and type “makeâ€� to rebuild the pciedemo.ko.ræ¾jÆj§¾jÎj}³jÐjõjÒ}rç¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜMåjÝhjÞ]rè¾jçX±One must select the endianness, demo program and target type by toggling between 0 and 1 accordingly. Then, type “make cleanâ€� and type “makeâ€� to rebuild the pciedemo.ko.ré¾…�rê¾}rë¾(jÅjæ¾jÆjä¾ubaubjò)�rì¾}rí¾(jÅXuNote: “HelloWorldâ€� and EDMA_INTC demos can be run on both endianness. POST demo can be run on little endian only.rî¾jÆj§¾jÎj}³jÐjõjÒ}rï¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜMéjÝhjÞ]rð¾jçXuNote: “HelloWorldâ€� and EDMA_INTC demos can be run on both endianness. POST demo can be run on little endian only.rñ¾…�rò¾}ró¾(jÅjî¾jÆjì¾ubaubjt)�rô¾}rõ¾(jÅUjÆj§¾jÎj}³jÐjwjÒ}rö¾(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMìjÝhjÞ]r÷¾j{)�rø¾}rù¾(jÅX©To insert the module into kernel, type “sudo insmod pciedemo.koâ€�; to view the kernel message, type “dmesgâ€�; to remove the module from kernel, type “sudo rmmod jÆjô¾jÎj}³jÐjjÒ}rú¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rû¾jò)�rü¾}rý¾(jÅX¨To insert the module into kernel, type “sudo insmod pciedemo.koâ€�; to view the kernel message, type “dmesgâ€�; to remove the module from kernel, type “sudo rmmodrþ¾jÆjø¾jÎj}³jÐjõjÒ}rÿ¾(jÔ]jÕ]jÖ]j×]jÚ]ujÜMìjÞ]r¿jçX¨To insert the module into kernel, type “sudo insmod pciedemo.koâ€�; to view the kernel message, type “dmesgâ€�; to remove the module from kernel, type “sudo rmmodr¿…�r¿}r¿(jÅjþ¾jÆjü¾ubaubaubaubjò)�r¿}r¿(jÅXpciedemo.koâ€�r¿jÆj§¾jÎj}³jÐjõjÒ}r¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMðjÝhjÞ]r¿jçXpciedemo.koâ€�r ¿…�r ¿}r ¿(jÅj¿jÆj¿ubaubeubjÇ)�r ¿}r ¿(jÅUjÆj…½jÎj}³jÐjÑjÒ}r¿(jÔ]jÕ]jÖ]j×]r¿U!the-role-of-ibl-in-pcie-boot-moder¿ajÚ]r¿hPaujÜMójÝhjÞ]r¿(jà)�r¿}r¿(jÅX!The role of IBL in PCIE boot moder¿jÆj ¿jÎj}³jÐjäjÒ}r¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMójÝhjÞ]r¿jçX!The role of IBL in PCIE boot moder¿…�r¿}r¿(jÅj¿jÆj¿ubaubjò)�r¿}r¿(jÅXÊThe Intermediate Boot Loader (IBL) is flashed into I2C EEPROM bus address 0x51. IBL provides a workaround for the PLL lockup issue (please refer to C6678 errata document, February 2011, advisory 8 for details on the PLL lockup issue). For ROM boot modes (EMAC, SRIO, PCIE, Hyperlink, etc) and I2C boot mode with bus address 0x50, DSP will initially boot from I2C EEPROM bus address 0x51 which does the PLL reset workaround, updates the DEVSTAT for appropriate values based on the DIP switch settings (SW3 through SW6 settings) and then re-enters the ROM to accomplish the desired boot mode. Please note that the re-entry is done for all boot modes except for PCIE boot mode and I2C boot mode with bus address 0x51.r¿jÆj ¿jÎj}³jÐjõjÒ}r¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMõjÝhjÞ]r¿jçXÊThe Intermediate Boot Loader (IBL) is flashed into I2C EEPROM bus address 0x51. IBL provides a workaround for the PLL lockup issue (please refer to C6678 errata document, February 2011, advisory 8 for details on the PLL lockup issue). For ROM boot modes (EMAC, SRIO, PCIE, Hyperlink, etc) and I2C boot mode with bus address 0x50, DSP will initially boot from I2C EEPROM bus address 0x51 which does the PLL reset workaround, updates the DEVSTAT for appropriate values based on the DIP switch settings (SW3 through SW6 settings) and then re-enters the ROM to accomplish the desired boot mode. Please note that the re-entry is done for all boot modes except for PCIE boot mode and I2C boot mode with bus address 0x51.r ¿…�r!¿}r"¿(jÅj¿jÆj¿ubaubjò)�r#¿}r$¿(jÅX6Below are the steps done in the IBL in PCIE boot mode:r%¿jÆj ¿jÎj}³jÐjõjÒ}r&¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r'¿jçX6Below are the steps done in the IBL in PCIE boot mode:r(¿…�r)¿}r*¿(jÅj%¿jÆj#¿ubaubjt)�r+¿}r,¿(jÅUjÆj ¿jÎj}³jÐjwjÒ}r-¿(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]r.¿(j{)�r/¿}r0¿(jÅXFPGA samples the boot mode pinsr1¿jÆj+¿jÎj}³jÐjjÒ}r2¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r3¿jò)�r4¿}r5¿(jÅj1¿jÆj/¿jÎj}³jÐjõjÒ}r6¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r7¿jçXFPGA samples the boot mode pinsr8¿…�r9¿}r:¿(jÅj1¿jÆj4¿ubaubaubj{)�r;¿}r<¿(jÅX4FPGA forces the DSP to boot via I2C bus address 0x51r=¿jÆj+¿jÎj}³jÐjjÒ}r>¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r?¿jò)�r@¿}rA¿(jÅj=¿jÆj;¿jÎj}³jÐjõjÒ}rB¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rC¿jçX4FPGA forces the DSP to boot via I2C bus address 0x51rD¿…�rE¿}rF¿(jÅj=¿jÆj@¿ubaubaubj{)�rG¿}rH¿(jÅX3PLL is initialized correctly by the IBL on the I2C.rI¿jÆj+¿jÎj}³jÐjjÒ}rJ¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rK¿jò)�rL¿}rM¿(jÅjI¿jÆjG¿jÎj}³jÐjõjÒ}rN¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rO¿jçX3PLL is initialized correctly by the IBL on the I2C.rP¿…�rQ¿}rR¿(jÅjI¿jÆjL¿ubaubaubj{)�rS¿}rT¿(jÅX6IBL reads the sampled boot mode from an FPGA register.rU¿jÆj+¿jÎj}³jÐjjÒ}rV¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rW¿jò)�rX¿}rY¿(jÅjU¿jÆjS¿jÎj}³jÐjõjÒ}rZ¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r[¿jçX6IBL reads the sampled boot mode from an FPGA register.r\¿…�r]¿}r^¿(jÅjU¿jÆjX¿ubaubaubj{)�r_¿}r`¿(jÅX‹IBL checks the boot mode, if it is not I2C boot or it is I2C boot but with bus address 0x50, IBL writes boot mode into the DEVSTAT registerjÆj+¿jÎj}³jÐjjÒ}ra¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rb¿jò)�rc¿}rd¿(jÅX‹IBL checks the boot mode, if it is not I2C boot or it is I2C boot but with bus address 0x50, IBL writes boot mode into the DEVSTAT registerre¿jÆj_¿jÎj}³jÐjõjÒ}rf¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rg¿jçX‹IBL checks the boot mode, if it is not I2C boot or it is I2C boot but with bus address 0x50, IBL writes boot mode into the DEVSTAT registerrh¿…�ri¿}rj¿(jÅje¿jÆjc¿ubaubaubj{)�rk¿}rl¿(jÅX IBL then checks if the boot mode is PCIE boot or not. If it is, it executes some PCIE workaround to configure the PCIE registers (mainly to accept spread spectrum clock) and stays inside IBL by first clearing the magic address and then monitoring it for PCIE boot. jÆj+¿jÎj}³jÐjjÒ}rm¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rn¿jò)�ro¿}rp¿(jÅXIBL then checks if the boot mode is PCIE boot or not. If it is, it executes some PCIE workaround to configure the PCIE registers (mainly to accept spread spectrum clock) and stays inside IBL by first clearing the magic address and then monitoring it for PCIE boot.rq¿jÆjk¿jÎj}³jÐjõjÒ}rr¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]rs¿jçXIBL then checks if the boot mode is PCIE boot or not. If it is, it executes some PCIE workaround to configure the PCIE registers (mainly to accept spread spectrum clock) and stays inside IBL by first clearing the magic address and then monitoring it for PCIE boot.rt¿…�ru¿}rv¿(jÅjq¿jÆjo¿ubaubaubeubjò)�rw¿}rx¿(jÅX«For PCIE demos with DDR memory is used, proper DDR configuration is required, this doesn’t need the full IBL functionality. Typically DDR can be initialized in two ways:ry¿jÆj ¿jÎj}³jÐjõjÒ}rz¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r{¿jçX«For PCIE demos with DDR memory is used, proper DDR configuration is required, this doesn’t need the full IBL functionality. Typically DDR can be initialized in two ways:r|¿…�r}¿}r~¿(jÅjy¿jÆjw¿ubaubjt)�r¿}r€¿(jÅUjÆj ¿jÎj}³jÐjwjÒ}r�¿(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMjÝhjÞ]r‚¿(j{)�rƒ¿}r„¿(jÅXHThe Linux host initializes the DDR registers directly through PCIE link.jÆj¿jÎj}³jÐjjÒ}r…¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r†¿jò)�r‡¿}rˆ¿(jÅXHThe Linux host initializes the DDR registers directly through PCIE link.r‰¿jÆjƒ¿jÎj}³jÐjõjÒ}rŠ¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r‹¿jçXHThe Linux host initializes the DDR registers directly through PCIE link.rŒ¿…�r�¿}rŽ¿(jÅj‰¿jÆj‡¿ubaubaubj{)�r�¿}r�¿(jÅX®A DDR initialization image is downloaded in the L2 first to initialize the DDR and then reset the magic address with value 0. And then the application image is downloaded in jÆj¿jÎj}³jÐjjÒ}r‘¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r’¿jò)�r“¿}r”¿(jÅX­A DDR initialization image is downloaded in the L2 first to initialize the DDR and then reset the magic address with value 0. And then the application image is downloaded inr•¿jÆj�¿jÎj}³jÐjõjÒ}r–¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r—¿jçX­A DDR initialization image is downloaded in the L2 first to initialize the DDR and then reset the magic address with value 0. And then the application image is downloaded inr˜¿…�r™¿}rš¿(jÅj•¿jÆj“¿ubaubaubeubjò)�r›¿}rœ¿(jÅX7the DDR. In Processor SDK, the second approach is used.r�¿jÆj ¿jÎj}³jÐjõjÒ}rž¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rŸ¿jçX7the DDR. In Processor SDK, the second approach is used.r ¿…�r¡¿}r¢¿(jÅj�¿jÆj›¿ubaubeubjÇ)�r£¿}r¤¿(jÅUjÆj…½jÎj}³jÐjÑjÒ}r¥¿(jÔ]jÕ]jÖ]j×]r¦¿U!how-helloworld-boot-example-worksr§¿ajÚ]r¨¿h¯aujÜMjÝhjÞ]r©¿(jà)�rª¿}r«¿(jÅX!How HelloWorld boot example worksr¬¿jÆj£¿jÎj}³jÐjäjÒ}r­¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r®¿jçX!How HelloWorld boot example worksr¯¿…�r°¿}r±¿(jÅj¬¿jÆjª¿ubaubjò)�r²¿}r³¿(jÅXÉThe Linux host first pushes the DDR init boot image data to L2 memory of core 0, then writes the boot entry address of the DDR init boot image to the magic address on core 0, both via PCIE. When the EVM is in PCIE boot mode, the IBL code running on the DSP core 0 polls the entry address and jumps to that address and starts to boot (initialize the DDR). After DDR is properly initialized, the DDR init code clears the magic address and keeps on polling it.r´¿jÆj£¿jÎj}³jÐjõjÒ}rµ¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r¶¿jçXÉThe Linux host first pushes the DDR init boot image data to L2 memory of core 0, then writes the boot entry address of the DDR init boot image to the magic address on core 0, both via PCIE. When the EVM is in PCIE boot mode, the IBL code running on the DSP core 0 polls the entry address and jumps to that address and starts to boot (initialize the DDR). After DDR is properly initialized, the DDR init code clears the magic address and keeps on polling it.r·¿…�r¸¿}r¹¿(jÅj´¿jÆj²¿ubaubjò)�rº¿}r»¿(jÅXDLinux host then pushes the HelloWorld boot image data to DDR memory, then writes the boot entry address of the HelloWorld boot image to the magic address on core 0 to boot core 0. Core 0 starts to boot and print the “Hello Worldâ€� booting information, and then boot all the other cores by writing the address of \_c_int00 to the magic address on other cores and sending an IPC interrupt to other cores. The RBL running on other cores will jump to \_c_int00 and start to boot, each core will write 0xBABEFACE to its magic address by running a function write_boot_magic_number().jÆj£¿jÎj}³jÐjõjÒ}r¼¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜM%jÝhjÞ]r½¿jçXBLinux host then pushes the HelloWorld boot image data to DDR memory, then writes the boot entry address of the HelloWorld boot image to the magic address on core 0 to boot core 0. Core 0 starts to boot and print the “Hello Worldâ€� booting information, and then boot all the other cores by writing the address of _c_int00 to the magic address on other cores and sending an IPC interrupt to other cores. The RBL running on other cores will jump to _c_int00 and start to boot, each core will write 0xBABEFACE to its magic address by running a function write_boot_magic_number().r¾¿…�r¿¿}rÀ¿(jÅXDLinux host then pushes the HelloWorld boot image data to DDR memory, then writes the boot entry address of the HelloWorld boot image to the magic address on core 0 to boot core 0. Core 0 starts to boot and print the “Hello Worldâ€� booting information, and then boot all the other cores by writing the address of \_c_int00 to the magic address on other cores and sending an IPC interrupt to other cores. The RBL running on other cores will jump to \_c_int00 and start to boot, each core will write 0xBABEFACE to its magic address by running a function write_boot_magic_number().jÆjº¿ubaubjò)�rÁ¿}r¿(jÅXÈNote that host boot application needs to wait for some time after pushing the DDR init boot image and before pushing the HelloWorld boot image to the DDR, this will ensure DDR is properly initialized.rÿjÆj£¿jÎj}³jÐjõjÒ}rÄ¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜM/jÝhjÞ]rÅ¿jçXÈNote that host boot application needs to wait for some time after pushing the DDR init boot image and before pushing the HelloWorld boot image to the DDR, this will ensure DDR is properly initialized.rÆ¿…�rÇ¿}rÈ¿(jÅjÿjÆjÁ¿ubaubeubjÇ)�rÉ¿}rÊ¿(jÅUjÆj…½jÎj}³jÐjÑjÒ}rË¿(jÔ]jÕ]jÖ]j×]rÌ¿Uhow-post-boot-example-worksrÍ¿ajÚ]rοhÐaujÜM4jÝhjÞ]rÏ¿(jà)�rп}rÑ¿(jÅXHow POST boot example worksrÒ¿jÆjÉ¿jÎj}³jÐjäjÒ}rÓ¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜM4jÝhjÞ]rÔ¿jçXHow POST boot example worksrÕ¿…�rÖ¿}r׿(jÅjÒ¿jÆjпubaubjò)�rØ¿}rÙ¿(jÅX6The POST example uses L2 only. The Linux host first pushes the POST boot image data to L2 memory of core 0, then writes the boot entry address of the POST to the magic address on core 0, both via PCIE. The IBL code running on the DSP core 0 polls the entry address and jumps to that address and starts to boot.rÚ¿jÆjÉ¿jÎj}³jÐjõjÒ}rÛ¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜM6jÝhjÞ]rÜ¿jçX6The POST example uses L2 only. The Linux host first pushes the POST boot image data to L2 memory of core 0, then writes the boot entry address of the POST to the magic address on core 0, both via PCIE. The IBL code running on the DSP core 0 polls the entry address and jumps to that address and starts to boot.rÝ¿…�rÞ¿}rß¿(jÅjÚ¿jÆjØ¿ubaubeubjÇ)�rà¿}rá¿(jÅUjÆj…½jÎj}³jÐjÑjÒ}râ¿(jÔ]jÕ]jÖ]j×]rã¿U!how-dsp-local-reset-example-worksrä¿ajÚ]rå¿j8aujÜM=jÝhjÞ]ræ¿(jà)�rç¿}rè¿(jÅX!How DSP local reset example worksré¿jÆjà¿jÎj}³jÐjäjÒ}rê¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜM=jÝhjÞ]rë¿jçX!How DSP local reset example worksrì¿…�rí¿}rî¿(jÅjé¿jÆjç¿ubaubjò)�rï¿}rð¿(jÅX˜A user may want to re-run a PCIE demo without power cycle the Linux PC. There is a need to reset the DSP chip from host software. There are several types of resets: hard reset, soft reset and CPU local reset. Hard reset will reset everything on the device except the PLLs, test, emulation logic, and reset isolation modules. Since PCIE doesn’t support reset isolation, a hard reset will reset PCIE module as well and all the configured PCIE registers (PCIE MMRs) will be lost. Soft reset will behave like a hard reset except that the stick bits of PCIE MMRs are retained. The PC can’t communicate with PCIE card anymore in both hard reset and soft reset cases.rñ¿jÆjà¿jÎj}³jÐjõjÒ}rò¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÝhjÞ]ró¿jçX˜A user may want to re-run a PCIE demo without power cycle the Linux PC. There is a need to reset the DSP chip from host software. There are several types of resets: hard reset, soft reset and CPU local reset. Hard reset will reset everything on the device except the PLLs, test, emulation logic, and reset isolation modules. Since PCIE doesn’t support reset isolation, a hard reset will reset PCIE module as well and all the configured PCIE registers (PCIE MMRs) will be lost. Soft reset will behave like a hard reset except that the stick bits of PCIE MMRs are retained. The PC can’t communicate with PCIE card anymore in both hard reset and soft reset cases.rô¿…�rõ¿}rö¿(jÅjñ¿jÆjï¿ubaubjò)�r÷¿}rø¿(jÅX^To reset the DSP while keeping the PCIE untouched, the local reset example does the following:rù¿jÆjà¿jÎj}³jÐjõjÒ}rú¿(jÔ]jÕ]jÖ]j×]jÚ]ujÜMJjÝhjÞ]rû¿jçX^To reset the DSP while keeping the PCIE untouched, the local reset example does the following:rü¿…�rý¿}rþ¿(jÅjù¿jÆj÷¿ubaubjt)�rÿ¿}rÀ(jÅUjÆjà¿jÎj}³jÐjwjÒ}rÀ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMMjÝhjÞ]rÀ(j{)�rÀ}rÀ(jÅXPut all cores in reset via PSCrÀjÆjÿ¿jÎj}³jÐjjÒ}rÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÀjò)�rÀ}r À(jÅjÀjÆjÀjÎj}³jÐjõjÒ}r À(jÔ]jÕ]jÖ]j×]jÚ]ujÜMMjÞ]r ÀjçXPut all cores in reset via PSCr À…�r À}rÀ(jÅjÀjÆjÀubaubaubj{)�rÀ}rÀ(jÅX1Disable all modules except PCIE and cores via PSCrÀjÆjÿ¿jÎj}³jÐjjÒ}rÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÀjò)�rÀ}rÀ(jÅjÀjÆjÀjÎj}³jÐjõjÒ}rÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMNjÞ]rÀjçX1Disable all modules except PCIE and cores via PSCrÀ…�rÀ}rÀ(jÅjÀjÆjÀubaubaubj{)�rÀ}rÀ(jÅXSConfigure chip level registers DSP_BOOT_ADDRn and IPCGRn: Here the header array converted from DSP local reset example is loaded into each core via PCIE; the \_c_int00 is then written to each DSP_BOOT_ADDRn; finally IPCGRn is written to jump start the DSP local reset example program, which simply polls magic address for a secondary boot.jÆjÿ¿jÎj}³jÐjjÒ}rÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÀjò)�rÀ}r À(jÅXSConfigure chip level registers DSP_BOOT_ADDRn and IPCGRn: Here the header array converted from DSP local reset example is loaded into each core via PCIE; the \_c_int00 is then written to each DSP_BOOT_ADDRn; finally IPCGRn is written to jump start the DSP local reset example program, which simply polls magic address for a secondary boot.jÆjÀjÎj}³jÐjõjÒ}r!À(jÔ]jÕ]jÖ]j×]jÚ]ujÜMOjÞ]r"ÀjçXRConfigure chip level registers DSP_BOOT_ADDRn and IPCGRn: Here the header array converted from DSP local reset example is loaded into each core via PCIE; the _c_int00 is then written to each DSP_BOOT_ADDRn; finally IPCGRn is written to jump start the DSP local reset example program, which simply polls magic address for a secondary boot.r#À…�r$À}r%À(jÅXSConfigure chip level registers DSP_BOOT_ADDRn and IPCGRn: Here the header array converted from DSP local reset example is loaded into each core via PCIE; the \_c_int00 is then written to each DSP_BOOT_ADDRn; finally IPCGRn is written to jump start the DSP local reset example program, which simply polls magic address for a secondary boot.jÆjÀubaubaubj{)�r&À}r'À(jÅX,Enable all modules previous disabled via PSCr(ÀjÆjÿ¿jÎj}³jÐjjÒ}r)À(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r*Àjò)�r+À}r,À(jÅj(ÀjÆj&ÀjÎj}³jÐjõjÒ}r-À(jÔ]jÕ]jÖ]j×]jÚ]ujÜMUjÞ]r.ÀjçX,Enable all modules previous disabled via PSCr/À…�r0À}r1À(jÅj(ÀjÆj+Àubaubaubj{)�r2À}r3À(jÅX$Pull all cores out of reset via PSC jÆjÿ¿jÎj}³jÐjjÒ}r4À(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r5Àjò)�r6À}r7À(jÅX#Pull all cores out of reset via PSCr8ÀjÆj2ÀjÎj}³jÐjõjÒ}r9À(jÔ]jÕ]jÖ]j×]jÚ]ujÜMVjÞ]r:ÀjçX#Pull all cores out of reset via PSCr;À…�r<À}r=À(jÅj8ÀjÆj6Àubaubaubeubjë)�r>À}r?À(jÅX©It is IBL (in local L2) that monitors magic address and boots the DDR init (in local L2) or POST (in local L2) or EDMA-interrupt (in local L2) in those demos. If one wants to load his/her own boot demo code, then it shouldn’t overlap with the IBL code. As a guideline, the IBL uses memory from 0x00800000 to 0x0081BDFF. To check the exact memory usage, you can re-build the IBL by following the instructions in tools\boot_loader\ibl\doc\build_instructions.txt and check the resulting ibl_c66x_init.map file. In addition, following local L2 is reserved by RBL and shouldn’t be used: for 6678 ROM PG 1.0, 0x00872DC0 – 0x0087FFFF; for 6670 ROM PG 1.0, 0x008F2DC0 – 0x008FFFFF.jÆjà¿jÎj}³jÐjïjÒ}r@À(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rAÀjò)�rBÀ}rCÀ(jÅX©It is IBL (in local L2) that monitors magic address and boots the DDR init (in local L2) or POST (in local L2) or EDMA-interrupt (in local L2) in those demos. If one wants to load his/her own boot demo code, then it shouldn’t overlap with the IBL code. As a guideline, the IBL uses memory from 0x00800000 to 0x0081BDFF. To check the exact memory usage, you can re-build the IBL by following the instructions in tools\boot_loader\ibl\doc\build_instructions.txt and check the resulting ibl_c66x_init.map file. In addition, following local L2 is reserved by RBL and shouldn’t be used: for 6678 ROM PG 1.0, 0x00872DC0 – 0x0087FFFF; for 6670 ROM PG 1.0, 0x008F2DC0 – 0x008FFFFF.jÆj>ÀjÎj}³jÐjõjÒ}rDÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMYjÞ]rEÀjçX¥It is IBL (in local L2) that monitors magic address and boots the DDR init (in local L2) or POST (in local L2) or EDMA-interrupt (in local L2) in those demos. If one wants to load his/her own boot demo code, then it shouldn’t overlap with the IBL code. As a guideline, the IBL uses memory from 0x00800000 to 0x0081BDFF. To check the exact memory usage, you can re-build the IBL by following the instructions in toolsboot_loaderibldocbuild_instructions.txt and check the resulting ibl_c66x_init.map file. In addition, following local L2 is reserved by RBL and shouldn’t be used: for 6678 ROM PG 1.0, 0x00872DC0 – 0x0087FFFF; for 6670 ROM PG 1.0, 0x008F2DC0 – 0x008FFFFF.rFÀ…�rGÀ}rHÀ(jÅX©It is IBL (in local L2) that monitors magic address and boots the DDR init (in local L2) or POST (in local L2) or EDMA-interrupt (in local L2) in those demos. If one wants to load his/her own boot demo code, then it shouldn’t overlap with the IBL code. As a guideline, the IBL uses memory from 0x00800000 to 0x0081BDFF. To check the exact memory usage, you can re-build the IBL by following the instructions in tools\boot_loader\ibl\doc\build_instructions.txt and check the resulting ibl_c66x_init.map file. In addition, following local L2 is reserved by RBL and shouldn’t be used: for 6678 ROM PG 1.0, 0x00872DC0 – 0x0087FFFF; for 6670 ROM PG 1.0, 0x008F2DC0 – 0x008FFFFF.jÆjBÀubaubaubeubeubeubeubjÇ)�rIÀ}rJÀ(jÅUjÆj;ƒjÎj¥‚jÐjÑjÒ}rKÀ(jÔ]jÕ]jÖ]j×]rLÀUk2grMÀajÚ]rNÀjVaujÜK\jÝhjÞ]rOÀ(jà)�rPÀ}rQÀ(jÅXK2GrRÀjÆjIÀjÎj¥‚jÐjäjÒ}rSÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÝhjÞ]rTÀjçXK2GrUÀ…�rVÀ}rWÀ(jÅjRÀjÆjPÀubaubj7)�rXÀ}rYÀ(jÅXChttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_K2GjÆjIÀjÎj:XRsource/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_K2G.rst.incrZÀ…�r[À}r\ÀbjÐj>jÒ}r]À(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r^ÀjçXChttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_K2Gr_À…�r`À}raÀ(jÅUjÆjXÀubaubjÇ)�rbÀ}rcÀ(jÅUjKjÆjIÀjÎj[ÀjÐjÑjÒ}rdÀ(jÔ]reÀXoverviewrfÀajÕ]jÖ]j×]rgÀUid105rhÀajÚ]ujÜKjÝhjÞ]riÀ(jà)�rjÀ}rkÀ(jÅXOverviewrlÀjÆjbÀjÎj[ÀjÐjäjÒ}rmÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rnÀjçXOverviewroÀ…�rpÀ}rqÀ(jÅjlÀjÆjjÀubaubjò)�rrÀ}rsÀ(jÅXuThe Secondary Bootloader (SBL) for K2G does basic hardware initialization for the board to load and run applications.rtÀjÆjbÀjÎj[ÀjÐjõjÒ}ruÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rvÀjçXuThe Secondary Bootloader (SBL) for K2G does basic hardware initialization for the board to load and run applications.rwÀ…�rxÀ}ryÀ(jÅjtÀjÆjrÀubaubeubjÇ)�rzÀ}r{À(jÅUjKjÆjIÀjÎj[ÀjÐjÑjÒ}r|À(jÔ]r}ÀXbootloader execution sequencer~ÀajÕ]jÖ]j×]rÀUid106r€ÀajÚ]ujÜK jÝhjÞ]r�À(jà)�r‚À}rƒÀ(jÅXBootloader Execution Sequencer„ÀjÆjzÀjÎj[ÀjÐjäjÒ}r…À(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]r†ÀjçXBootloader Execution Sequencer‡À…�rˆÀ}r‰À(jÅj„ÀjÆj‚Àubaubjt)�rŠÀ}r‹À(jÅUjÆjzÀjÎj[ÀjÐjwjÒ}rŒÀ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK jÝhjÞ]r�À(j{)�rŽÀ}r�À(jÅXPower On Reset occursr�ÀjÆjŠÀjÎj[ÀjÐjjÒ}r‘À(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r’Àjò)�r“À}r”À(jÅj�ÀjÆjŽÀjÎj[ÀjÐjõjÒ}r•À(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r–ÀjçXPower On Reset occursr—À…�r˜À}r™À(jÅj�ÀjÆj“Àubaubaubj{)�ršÀ}r›À(jÅXjROM Bootloader (RBL) executes. It checks for bootmode and attempts to load+run the SBL from that bootmode.jÆjŠÀjÎj[ÀjÐjjÒ}rœÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�Àjò)�ržÀ}rŸÀ(jÅXjROM Bootloader (RBL) executes. It checks for bootmode and attempts to load+run the SBL from that bootmode.r ÀjÆjšÀjÎj[ÀjÐjõjÒ}r¡À(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r¢ÀjçXjROM Bootloader (RBL) executes. It checks for bootmode and attempts to load+run the SBL from that bootmode.r£À…�r¤À}r¥À(jÅj ÀjÆjžÀubaubaubj{)�r¦À}r§À(jÅXQSBL begins execution from internal memory (MSMC RAM) - Board Initialization is done by a call to **Board_init()** API. For additional details refer to `Processor SDK Board Support `__. - SBL setup includes configuring Pinmux, enable peripheral clocks, set up PLLs, and configure EMIF for DDR. jÆjŠÀjÎNjÐjjÒ}r¨À(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r©À(jò)�rªÀ}r«À(jÅX4SBL begins execution from internal memory (MSMC RAM)r¬ÀjÆj¦ÀjÎj[ÀjÐjõjÒ}r­À(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r®ÀjçX4SBL begins execution from internal memory (MSMC RAM)r¯À…�r°À}r±À(jÅj¬ÀjÆjªÀubaubjt)�r²À}r³À(jÅUjÒ}r´À(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj¦ÀjÞ]rµÀ(j{)�r¶À}r·À(jÅX¡Board Initialization is done by a call to **Board_init()** API. For additional details refer to `Processor SDK Board Support `__.jÒ}r¸À(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²ÀjÞ]r¹Àjò)�rºÀ}r»À(jÅX¡Board Initialization is done by a call to **Board_init()** API. For additional details refer to `Processor SDK Board Support `__.jÆj¶ÀjÎj[ÀjÐjõjÒ}r¼À(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r½À(jçX*Board Initialization is done by a call to r¾À…�r¿À}rÀÀ(jÅX*Board Initialization is done by a call to jÆjºÀubjÚ)�rÁÀ}rÂÀ(jÅX**Board_init()**jÒ}rÃÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjºÀjÞ]rÄÀjçX Board_init()rÅÀ…�rÆÀ}rÇÀ(jÅUjÆjÁÀubajÐjâubjçX& API. For additional details refer to rÈÀ…�rÉÀ}rÊÀ(jÅX& API. For additional details refer to jÆjºÀubjû)�rËÀ}rÌÀ(jÅX@`Processor SDK Board Support `__jÒ}rÍÀ(UnameXProcessor SDK Board SupportjXindex_board.html#board-supportj×]jÖ]jÔ]jÕ]jÚ]ujÆjºÀjÞ]rÎÀjçXProcessor SDK Board SupportrÏÀ…�rÐÀ}rÑÀ(jÅUjÆjËÀubajÐjÿubjçX.…�rÒÀ}rÓÀ(jÅX.jÆjºÀubeubajÐjubj{)�rÔÀ}rÕÀ(jÅXjSBL setup includes configuring Pinmux, enable peripheral clocks, set up PLLs, and configure EMIF for DDR. jÒ}rÖÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²ÀjÞ]r×Àjò)�rØÀ}rÙÀ(jÅXiSBL setup includes configuring Pinmux, enable peripheral clocks, set up PLLs, and configure EMIF for DDR.rÚÀjÆjÔÀjÎj[ÀjÐjõjÒ}rÛÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÜÀjçXiSBL setup includes configuring Pinmux, enable peripheral clocks, set up PLLs, and configure EMIF for DDR.rÝÀ…�rÞÀ}rßÀ(jÅjÚÀjÆjØÀubaubajÐjubejÐjwubeubj{)�ràÀ}ráÀ(jÅXŸSBL finishes setup and looks for "app" to execute next. This user-modifiable application may reside in SD card or QSPI memory depending on the bootmode chosen.jÆjŠÀjÎj[ÀjÐjjÒ}râÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rãÀjò)�räÀ}råÀ(jÅXŸSBL finishes setup and looks for "app" to execute next. This user-modifiable application may reside in SD card or QSPI memory depending on the bootmode chosen.ræÀjÆjàÀjÎj[ÀjÐjõjÒ}rçÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rèÀjçXŸSBL finishes setup and looks for "app" to execute next. This user-modifiable application may reside in SD card or QSPI memory depending on the bootmode chosen.réÀ…�rêÀ}rëÀ(jÅjæÀjÆjäÀubaubaubj{)�rìÀ}ríÀ(jÅXoOnce located, app will be loaded into memory and execution will be branched to the application's entry address jÆjŠÀjÎj[ÀjÐjjÒ}rîÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rïÀjò)�rðÀ}rñÀ(jÅXnOnce located, app will be loaded into memory and execution will be branched to the application's entry addressròÀjÆjìÀjÎj[ÀjÐjõjÒ}róÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rôÀjçXnOnce located, app will be loaded into memory and execution will be branched to the application's entry addressrõÀ…�röÀ}r÷À(jÅjòÀjÆjðÀubaubaubeubeubjÇ)�røÀ}rùÀ(jÅUjKjÆjIÀjÎj[ÀjÐjÑjÒ}rúÀ(jÔ]rûÀXtools and binary formatsrüÀajÕ]jÖ]j×]rýÀUid107rþÀajÚ]ujÜKjÝhjÞ]rÿÀjà)�rÁ}rÁ(jÅXTools and Binary FormatsrÁjÆjøÀjÎj[ÀjÐjäjÒ}rÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÁjçXTools and Binary FormatsrÁ…�rÁ}rÁ(jÅjÁjÆjÁubaubaubjÇ)�rÁ}r Á(jÅUjKjÆjIÀjÎj[ÀjÐjÑjÒ}r Á(jÔ]r ÁXmaking bootable sbl image (mlo)r ÁajÕ]jÖ]j×]r ÁUmaking-bootable-sbl-image-mlorÁajÚ]ujÜK!jÝhjÞ]rÁ(jà)�rÁ}rÁ(jÅXMaking Bootable SBL image (MLO)rÁjÆjÁjÎj[ÀjÐjäjÒ}rÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÝhjÞ]rÁjçXMaking Bootable SBL image (MLO)rÁ…�rÁ}rÁ(jÅjÁjÆjÁubaubjò)�rÁ}rÁ(jÅX–RBL loads and runs "MLO", which is a .out executable formatted by TI tools. To make a .out, such as SBL, bootable by ROM, you must follow these steps:rÁjÆjÁjÎj[ÀjÐjõjÒ}rÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÝhjÞ]rÁjçX–RBL loads and runs "MLO", which is a .out executable formatted by TI tools. To make a .out, such as SBL, bootable by ROM, you must follow these steps:rÁ…�rÁ}rÁ(jÅjÁjÆjÁubaubj )�r Á}r!Á(jÅUjÆjÁjÎj[ÀjÐj jÒ}r"Á(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK'jÝhjÞ]r#Á(j{)�r$Á}r%Á(jÅXz**armhex [.out file] [.rmd file]** - .out file is the file you want to boot, such as sbl.out - .rmd file is an input file to specify sections information. An example can be found in: /packages/ti/boot/sbl/board/evmK2G/build/sbl.rmd - armhex is a tool in TI ARM CGT compiler. This generates a [hex file], name of which is specified by the .rmd file jÆj ÁjÎNjÐjjÒ}r&Á(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r'Á(jò)�r(Á}r)Á(jÅX"**armhex [.out file] [.rmd file]**r*ÁjÆj$ÁjÎj[ÀjÐjõjÒ}r+Á(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]r,ÁjÚ)�r-Á}r.Á(jÅj*ÁjÒ}r/Á(jÔ]jÕ]jÖ]j×]jÚ]ujÆj(ÁjÞ]r0ÁjçXarmhex [.out file] [.rmd file]r1Á…�r2Á}r3Á(jÅUjÆj-ÁubajÐjâubaubjt)�r4Á}r5Á(jÅUjÒ}r6Á(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj$ÁjÞ]r7Á(j{)�r8Á}r9Á(jÅX7.out file is the file you want to boot, such as sbl.outr:ÁjÒ}r;Á(jÔ]jÕ]jÖ]j×]jÚ]ujÆj4ÁjÞ]r<Ájò)�r=Á}r>Á(jÅj:ÁjÆj8ÁjÎj[ÀjÐjõjÒ}r?Á(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]r@ÁjçX7.out file is the file you want to boot, such as sbl.outrAÁ…�rBÁ}rCÁ(jÅj:ÁjÆj=ÁubaubajÐjubj{)�rDÁ}rEÁ(jÅX™.rmd file is an input file to specify sections information. An example can be found in: /packages/ti/boot/sbl/board/evmK2G/build/sbl.rmdjÒ}rFÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj4ÁjÞ]rGÁjò)�rHÁ}rIÁ(jÅX™.rmd file is an input file to specify sections information. An example can be found in: /packages/ti/boot/sbl/board/evmK2G/build/sbl.rmdrJÁjÆjDÁjÎj[ÀjÐjõjÒ}rKÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]rLÁjçX™.rmd file is an input file to specify sections information. An example can be found in: /packages/ti/boot/sbl/board/evmK2G/build/sbl.rmdrMÁ…�rNÁ}rOÁ(jÅjJÁjÆjHÁubaubajÐjubj{)�rPÁ}rQÁ(jÅXrarmhex is a tool in TI ARM CGT compiler. This generates a [hex file], name of which is specified by the .rmd file jÒ}rRÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj4ÁjÞ]rSÁjò)�rTÁ}rUÁ(jÅXqarmhex is a tool in TI ARM CGT compiler. This generates a [hex file], name of which is specified by the .rmd filerVÁjÆjPÁjÎj[ÀjÐjõjÒ}rWÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÞ]rXÁjçXqarmhex is a tool in TI ARM CGT compiler. This generates a [hex file], name of which is specified by the .rmd filerYÁ…�rZÁ}r[Á(jÅjVÁjÆjTÁubaubajÐjubejÐjwubeubj{)�r\Á}r]Á(jÅX{**b2ccs [hex file] [ccs file]** - hex file is the output from the previous step - ccs file can be name of your choosing jÆj ÁjÎNjÐjjÒ}r^Á(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r_Á(jò)�r`Á}raÁ(jÅX**b2ccs [hex file] [ccs file]**rbÁjÆj\ÁjÎj[ÀjÐjõjÒ}rcÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rdÁjÚ)�reÁ}rfÁ(jÅjbÁjÒ}rgÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`ÁjÞ]rhÁjçXb2ccs [hex file] [ccs file]riÁ…�rjÁ}rkÁ(jÅUjÆjeÁubajÐjâubaubjt)�rlÁ}rmÁ(jÅUjÒ}rnÁ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj\ÁjÞ]roÁ(j{)�rpÁ}rqÁ(jÅX-hex file is the output from the previous steprrÁjÒ}rsÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlÁjÞ]rtÁjò)�ruÁ}rvÁ(jÅjrÁjÆjpÁjÎj[ÀjÐjõjÒ}rwÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]rxÁjçX-hex file is the output from the previous stepryÁ…�rzÁ}r{Á(jÅjrÁjÆjuÁubaubajÐjubj{)�r|Á}r}Á(jÅX&ccs file can be name of your choosing jÒ}r~Á(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlÁjÞ]rÁjò)�r€Á}r�Á(jÅX%ccs file can be name of your choosingr‚ÁjÆj|ÁjÎj[ÀjÐjõjÒ}rƒÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK3jÞ]r„ÁjçX%ccs file can be name of your choosingr…Á…�r†Á}r‡Á(jÅj‚ÁjÆj€ÁubaubajÐjubejÐjwubeubj{)�rˆÁ}r‰Á(jÅXz**ccsAddGphdr -infile [ccs file] -outfile [gphdr file] -headerEndian BE** - gphdr file can be the name of your choosing jÆj ÁjÎNjÐjjÒ}rŠÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‹Á(jò)�rŒÁ}r�Á(jÅXI**ccsAddGphdr -infile [ccs file] -outfile [gphdr file] -headerEndian BE**rŽÁjÆjˆÁjÎj[ÀjÐjõjÒ}r�Á(jÔ]jÕ]jÖ]j×]jÚ]ujÜK5jÞ]r�ÁjÚ)�r‘Á}r’Á(jÅjŽÁjÒ}r“Á(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒÁjÞ]r”ÁjçXEccsAddGphdr -infile [ccs file] -outfile [gphdr file] -headerEndian BEr•Á…�r–Á}r—Á(jÅUjÆj‘ÁubajÐjâubaubjt)�r˜Á}r™Á(jÅUjÒ}ršÁ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjˆÁjÞ]r›Áj{)�rœÁ}r�Á(jÅX,gphdr file can be the name of your choosing jÒ}ržÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj˜ÁjÞ]rŸÁjò)�r Á}r¡Á(jÅX+gphdr file can be the name of your choosingr¢ÁjÆjœÁjÎj[ÀjÐjõjÒ}r£Á(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]r¤ÁjçX+gphdr file can be the name of your choosingr¥Á…�r¦Á}r§Á(jÅj¢ÁjÆj ÁubaubajÐjubajÐjwubeubj{)�r¨Á}r©Á(jÅXk**ccsAddGptlr -infile [gphdr file] -outfile [gptlr file]** - gptlr file can be the name of your choosing jÆj ÁjÎNjÐjjÒ}rªÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r«Á(jò)�r¬Á}r­Á(jÅX:**ccsAddGptlr -infile [gphdr file] -outfile [gptlr file]**r®ÁjÆj¨ÁjÎj[ÀjÐjõjÒ}r¯Á(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]r°ÁjÚ)�r±Á}r²Á(jÅj®ÁjÒ}r³Á(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬ÁjÞ]r´ÁjçX6ccsAddGptlr -infile [gphdr file] -outfile [gptlr file]rµÁ…�r¶Á}r·Á(jÅUjÆj±ÁubajÐjâubaubjt)�r¸Á}r¹Á(jÅUjÒ}rºÁ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj¨ÁjÞ]r»Áj{)�r¼Á}r½Á(jÅX,gptlr file can be the name of your choosing jÒ}r¾Á(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸ÁjÞ]r¿Ájò)�rÀÁ}rÁÁ(jÅX+gptlr file can be the name of your choosingrÂÁjÆj¼ÁjÎj[ÀjÐjõjÒ}rÃÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÐÁjÚ)�rÑÁ}rÒÁ(jÅjÎÁjÒ}rÓÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÌÁjÞ]rÔÁjçX'byteswapccs [gptlr file] [MLO ccs file]rÕÁ…�rÖÁ}r×Á(jÅUjÆjÑÁubajÐjâubaubjt)�rØÁ}rÙÁ(jÅUjÒ}rÚÁ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjÈÁjÞ]rÛÁj{)�rÜÁ}rÝÁ(jÅX.MLO ccs file can be the name of your choosing jÒ}rÞÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjØÁjÞ]rßÁjò)�ràÁ}ráÁ(jÅX-MLO ccs file can be the name of your choosingrâÁjÆjÜÁjÎj[ÀjÐjõjÒ}rãÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]räÁjçX-MLO ccs file can be the name of your choosingråÁ…�ræÁ}rçÁ(jÅjâÁjÆjàÁubaubajÐjubajÐjwubeubj{)�rèÁ}réÁ(jÅXM**ccs2bin -swap [MLO ccs file] MLO** - MLO will be created after this step jÆj ÁjÎNjÐjjÒ}rêÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rëÁ(jò)�rìÁ}ríÁ(jÅX$**ccs2bin -swap [MLO ccs file] MLO**rîÁjÆjèÁjÎj[ÀjÐjõjÒ}rïÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]rðÁjÚ)�rñÁ}ròÁ(jÅjîÁjÒ}róÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjìÁjÞ]rôÁjçX ccs2bin -swap [MLO ccs file] MLOrõÁ…�röÁ}r÷Á(jÅUjÆjñÁubajÐjâubaubjt)�røÁ}rùÁ(jÅUjÒ}rúÁ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjèÁjÞ]rûÁj{)�rüÁ}rýÁ(jÅX$MLO will be created after this step jÒ}rþÁ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjøÁjÞ]rÿÁjò)�rÂ}rÂ(jÅX#MLO will be created after this steprÂjÆjüÁjÎj[ÀjÐjõjÒ}rÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]rÂjçX#MLO will be created after this steprÂ…�rÂ}rÂ(jÅjÂjÆjÂubaubajÐjubajÐjwubeubeubjò)�rÂ}r Â(jÅX³Armhex is part of TI ARM CGT, in **/tools/compiler/ti-cgt-arm_x.x.x/bin**. The rest of the tools can be found in: **/packages/ti/boot/sbl/tools**jÆjÁjÎj[ÀjÐjõjÒ}r Â(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÝhjÞ]r Â(jçX!Armhex is part of TI ARM CGT, in r Â…�r Â}rÂ(jÅX!Armhex is part of TI ARM CGT, in jÆjÂubjÚ)�rÂ}rÂ(jÅX9**/tools/compiler/ti-cgt-arm_x.x.x/bin**jÒ}rÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÂjÞ]rÂjçX5/tools/compiler/ti-cgt-arm_x.x.x/binrÂ…�rÂ}rÂ(jÅUjÆjÂubajÐjâubjçX). The rest of the tools can be found in: rÂ…�rÂ}rÂ(jÅX). The rest of the tools can be found in: jÆjÂubjÚ)�rÂ}rÂ(jÅX0**/packages/ti/boot/sbl/tools**jÒ}rÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÂjÞ]rÂjçX,/packages/ti/boot/sbl/toolsrÂ…�rÂ}rÂ(jÅUjÆjÂubajÐjâubeubeubjÇ)�r Â}r!Â(jÅUjKjÆjIÀjÎj[ÀjÐjÑjÒ}r"Â(jÔ]r#ÂX,making loadable user application image (app)r$ÂajÕ]jÖ]j×]r%ÂU*making-loadable-user-application-image-appr&ÂajÚ]ujÜKLjÝhjÞ]r'Â(jà)�r(Â}r)Â(jÅX,Making Loadable User Application image (app)r*ÂjÆj ÂjÎj[ÀjÐjäjÒ}r+Â(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÝhjÞ]r,ÂjçX,Making Loadable User Application image (app)r-Â…�r.Â}r/Â(jÅj*ÂjÆj(Âubaubjò)�r0Â}r1Â(jÅX…For converting the compiled .out files to a format loadable by TI's Secondary Boot Loader (SBL), **you must follow these two steps:**jÆj ÂjÎj[ÀjÐjõjÒ}r2Â(jÔ]jÕ]jÖ]j×]jÚ]ujÜKNjÝhjÞ]r3Â(jçXaFor converting the compiled .out files to a format loadable by TI's Secondary Boot Loader (SBL), r4Â…�r5Â}r6Â(jÅXaFor converting the compiled .out files to a format loadable by TI's Secondary Boot Loader (SBL), jÆj0ÂubjÚ)�r7Â}r8Â(jÅX$**you must follow these two steps:**jÒ}r9Â(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0ÂjÞ]r:ÂjçX you must follow these two steps:r;Â…�r<Â}r=Â(jÅUjÆj7ÂubajÐjâubeubj )�r>Â}r?Â(jÅUjÆj ÂjÎj[ÀjÐj jÒ}r@Â(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKQjÝhjÞ]rAÂ(j{)�rBÂ}rCÂ(jÅX***out2rprc.exe [.out file] [rprc output]**rDÂjÆj>ÂjÎj[ÀjÐjjÒ}rEÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rFÂjò)�rGÂ}rHÂ(jÅjDÂjÆjBÂjÎj[ÀjÐjõjÒ}rIÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKQjÞ]rJÂjÚ)�rKÂ}rLÂ(jÅjDÂjÒ}rMÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjGÂjÞ]rNÂjçX&out2rprc.exe [.out file] [rprc output]rOÂ…�rPÂ}rQÂ(jÅUjÆjKÂubajÐjâubaubaubj{)�rRÂ}rSÂ(jÅX>**MulticoreImageGen.exe LE 55 [output name] 0 [rprc output]** jÆj>ÂjÎj[ÀjÐjjÒ}rTÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rUÂjò)�rVÂ}rWÂ(jÅX=**MulticoreImageGen.exe LE 55 [output name] 0 [rprc output]**rXÂjÆjRÂjÎj[ÀjÐjõjÒ}rYÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÞ]rZÂjÚ)�r[Â}r\Â(jÅjXÂjÒ}r]Â(jÔ]jÕ]jÖ]j×]jÚ]ujÆjVÂjÞ]r^ÂjçX9MulticoreImageGen.exe LE 55 [output name] 0 [rprc output]r_Â…�r`Â}raÂ(jÅUjÆj[ÂubajÐjâubaubaubeubjò)�rbÂ}rcÂ(jÅXýOut2rprc.exe and MulticoreImageGen.exe are tools supplied by TI and can be located in the **/packages/ti/boot/sbl/tools** folder. "rprc output" can be any spare name of your choosing. "output name" can also be any name of your choosing.jÆj ÂjÎj[ÀjÐjõjÒ}rdÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKTjÝhjÞ]reÂ(jçXZOut2rprc.exe and MulticoreImageGen.exe are tools supplied by TI and can be located in the rfÂ…�rgÂ}rhÂ(jÅXZOut2rprc.exe and MulticoreImageGen.exe are tools supplied by TI and can be located in the jÆjbÂubjÚ)�riÂ}rjÂ(jÅX0**/packages/ti/boot/sbl/tools**jÒ}rkÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbÂjÞ]rlÂjçX,/packages/ti/boot/sbl/toolsrmÂ…�rnÂ}roÂ(jÅUjÆjiÂubajÐjâubjçXs folder. "rprc output" can be any spare name of your choosing. "output name" can also be any name of your choosing.rpÂ…�rqÂ}rrÂ(jÅXs folder. "rprc output" can be any spare name of your choosing. "output name" can also be any name of your choosing.jÆjbÂubeubjò)�rsÂ}rtÂ(jÅX«The '0' used in step 2 refers to the Core ID to boot. By default, '0' is MPU (Cortex A15) core 0. You can input a different value to boot to other cores. Valid values are:ruÂjÆj ÂjÎj[ÀjÐjõjÒ}rvÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÝhjÞ]rwÂjçX«The '0' used in step 2 refers to the Core ID to boot. By default, '0' is MPU (Cortex A15) core 0. You can input a different value to boot to other cores. Valid values are:rxÂ…�ryÂ}rzÂ(jÅjuÂjÆjsÂubaubjy )�r{Â}r|Â(jÅUjÆj ÂjÎj[ÀjÐjÔ jÒ}r}Â(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r~Âj~ )�rÂ}r€Â(jÅUjÒ}r�Â(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj{ÂjÞ]r‚Â(jƒ )�rƒÂ}r„Â(jÅUjÒ}r…Â(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjÂjÞ]jÐj‡ ubjƒ )�r†Â}r‡Â(jÅUjÒ}rˆÂ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÂjÞ]jÐj‡ ubj‹ )�r‰Â}rŠÂ(jÅUjÒ}r‹Â(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÂjÞ]rŒÂj� )�r�Â}rŽÂ(jÅUjÒ}r�Â(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰ÂjÞ]r�Â(j• )�r‘Â}r’Â(jÅUjÒ}r“Â(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ÂjÞ]r”Âjò)�r•Â}r–Â(jÅXCorer—ÂjÆj‘ÂjÎj[ÀjÐjõjÒ}r˜Â(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]r™ÂjçXCoreršÂ…�r›Â}rœÂ(jÅj—ÂjÆj•ÂubaubajÐj¢ ubj• )�r�Â}ržÂ(jÅUjÒ}rŸÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ÂjÞ]r Âjò)�r¡Â}r¢Â(jÅXValuer£ÂjÆj�ÂjÎj[ÀjÐjõjÒ}r¤Â(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]r¥ÂjçXValuer¦Â…�r§Â}r¨Â(jÅj£ÂjÆj¡ÂubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r©Â}rªÂ(jÅUjÒ}r«Â(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÂjÞ]r¬Â(j� )�r­Â}r®Â(jÅUjÒ}r¯Â(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©ÂjÞ]r°Â(j• )�r±Â}r²Â(jÅUjÒ}r³Â(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­ÂjÞ]r´Âjò)�rµÂ}r¶Â(jÅX MPU Core 0r·ÂjÆj±ÂjÎj[ÀjÐjõjÒ}r¸Â(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]r¹ÂjçX MPU Core 0rºÂ…�r»Â}r¼Â(jÅj·ÂjÆjµÂubaubajÐj¢ ubj• )�r½Â}r¾Â(jÅUjÒ}r¿Â(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­ÂjÞ]rÀÂjò)�rÁÂ}rÂÂ(jÅX0jÆj½ÂjÎj[ÀjÐjõjÒ}rÃÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]rÄÂjçX0…�rÅÂ}rÆÂ(jÅX0jÆjÁÂubaubajÐj¢ ubejÐj£ ubj� )�rÇÂ}rÈÂ(jÅUjÒ}rÉÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©ÂjÞ]rÊÂ(j• )�rËÂ}rÌÂ(jÅUjÒ}rÍÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÂjÞ]rÎÂjò)�rÏÂ}rÐÂ(jÅX DSP Core 0rÑÂjÆjËÂjÎj[ÀjÐjõjÒ}rÒÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]rÓÂjçX DSP Core 0rÔÂ…�rÕÂ}rÖÂ(jÅjÑÂjÆjÏÂubaubajÐj¢ ubj• )�r×Â}rØÂ(jÅUjÒ}rÙÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÂjÞ]rÚÂjò)�rÛÂ}rÜÂ(jÅX5jÆj×ÂjÎj[ÀjÐjõjÒ}rÝÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKbjÞ]rÞÂjçX5…�rßÂ}ràÂ(jÅX5jÆjÛÂubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�ráÂ}râÂ(jÅXÁIf MPU SMP is chosen, the same boot image and entry will be used for all MPU cores. SBL can also parse multiple boot images that are concatenated together. Simply use MulticoreImageGen as such:rãÂjÆj ÂjÎj[ÀjÐjõjÒ}räÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKejÝhjÞ]råÂjçXÁIf MPU SMP is chosen, the same boot image and entry will be used for all MPU cores. SBL can also parse multiple boot images that are concatenated together. Simply use MulticoreImageGen as such:ræÂ…�rçÂ}rèÂ(jÅjãÂjÆjáÂubaubjò)�réÂ}rêÂ(jÅX…**MulticoreImageGen.exe LE 55 [output name] [Core ID a] [rprc output a] [Core ID b] [rprc output b] [Core ID c] [rprc output c] ...**rëÂjÆj ÂjÎj[ÀjÐjõjÒ}rìÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÝhjÞ]ríÂjÚ)�rîÂ}rïÂ(jÅjëÂjÒ}rðÂ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéÂjÞ]rñÂjçX�MulticoreImageGen.exe LE 55 [output name] [Core ID a] [rprc output a] [Core ID b] [rprc output b] [Core ID c] [rprc output c] ...ròÂ…�róÂ}rôÂ(jÅUjÆjîÂubajÐjâubaubeubjÇ)�rõÂ}röÂ(jÅUjKjÆjIÀjÎj[ÀjÐjÑjÒ}r÷Â(jÔ]røÂX boot modesrùÂajÕ]jÖ]j×]rúÂUid108rûÂajÚ]ujÜKmjÝhjÞ]rüÂ(jà)�rýÂ}rþÂ(jÅX Boot ModesrÿÂjÆjõÂjÎj[ÀjÐjäjÒ}rÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÝhjÞ]rÃjçX Boot ModesrÃ…�rÃ}rÃ(jÅjÿÂjÆjýÂubaubjò)�rÃ}rÃ(jÅX7This release of SBL supports MMCSD and QSPI boot modes.rÃjÆjõÂjÎj[ÀjÐjõjÒ}rÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÝhjÞ]r ÃjçX7This release of SBL supports MMCSD and QSPI boot modes.r Ã…�r Ã}r Ã(jÅjÃjÆjÃubaubjÇ)�r Ã}rÃ(jÅUjKjÆjõÂjÎj[ÀjÐjÑjÒ}rÃ(jÔ]rÃXmmcsd boot moderÃajÕ]jÖ]j×]rÃUmmcsd-boot-moderÃajÚ]ujÜKrjÝhjÞ]rÃ(jà)�rÃ}rÃ(jÅXMMCSD Boot ModerÃjÆj ÃjÎj[ÀjÐjäjÒ}rÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKrjÝhjÞ]rÃjçXMMCSD Boot ModerÃ…�rÃ}rÃ(jÅjÃjÆjÃubaubjÇ)�rÃ}rÃ(jÅUjKjÆj ÃjÎj[ÀjÐjÑjÒ}rÃ(jÔ]r ÃjÍœajÕ]jÖ]j×]r!ÃUid109r"ÃajÚ]ujÜKujÝhjÞ]r#Ã(jà)�r$Ã}r%Ã(jÅXPreparing the SD cardr&ÃjÆjÃjÎj[ÀjÐjäjÒ}r'Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÝhjÞ]r(ÃjçXPreparing the SD cardr)Ã…�r*Ã}r+Ã(jÅj&ÃjÆj$Ãubaubj )�r,Ã}r-Ã(jÅUjÆjÃjÎj[ÀjÐj jÒ}r.Ã(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKwjÝhjÞ]r/Ã(j{)�r0Ã}r1Ã(jÅXTo boot the target, the SD card needs to be bootable. Follow the steps at `Creating bootable SD card in windows `__ or `Creating bootable SD card in Linux `__.jÆj,ÃjÎj[ÀjÐjjÒ}r2Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r3Ãjò)�r4Ã}r5Ã(jÅXTo boot the target, the SD card needs to be bootable. Follow the steps at `Creating bootable SD card in windows `__ or `Creating bootable SD card in Linux `__.jÆj0ÃjÎj[ÀjÐjõjÒ}r6Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]r7Ã(jçXJTo boot the target, the SD card needs to be bootable. Follow the steps at r8Ã…�r9Ã}r:Ã(jÅXJTo boot the target, the SD card needs to be bootable. Follow the steps at jÆj4Ãubjû)�r;Ã}r<Ã(jÅX]`Creating bootable SD card in windows `__jÒ}r=Ã(UnameX$Creating bootable SD card in windowsjX2index_overview.html#windows-sd-card-creation-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj4ÃjÞ]r>ÃjçX$Creating bootable SD card in windowsr?Ã…�r@Ã}rAÃ(jÅUjÆj;ÃubajÐjÿubjçX or rBÃ…�rCÃ}rDÃ(jÅX or jÆj4Ãubjû)�rEÃ}rFÃ(jÅXY`Creating bootable SD card in Linux `__jÒ}rGÃ(UnameX"Creating bootable SD card in LinuxjX0index_overview.html#linux-sd-card-creation-guidej×]jÖ]jÔ]jÕ]jÚ]ujÆj4ÃjÞ]rHÃjçX"Creating bootable SD card in LinuxrIÃ…�rJÃ}rKÃ(jÅUjÆjEÃubajÐjÿubjçX.…�rLÃ}rMÃ(jÅX.jÆj4Ãubeubaubj{)�rNÃ}rOÃ(jÅX„Copy "MLO" and "app" to your SD card. - MLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/evmK2G/mmcsd/bin** - app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different). jÆj,ÃjÎNjÐjjÒ}rPÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rQÃ(jò)�rRÃ}rSÃ(jÅX%Copy "MLO" and "app" to your SD card.rTÃjÆjNÃjÎj[ÀjÐjõjÒ}rUÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÞ]rVÃjçX%Copy "MLO" and "app" to your SD card.rWÃ…�rXÃ}rYÃ(jÅjTÃjÆjRÃubaubjt)�rZÃ}r[Ã(jÅUjÒ}r\Ã(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjNÃjÞ]r]Ã(j{)�r^Ã}r_Ã(jÅX™MLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/evmK2G/mmcsd/bin**jÒ}r`Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÆjZÃjÞ]raÃjò)�rbÃ}rcÃ(jÅX™MLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/evmK2G/mmcsd/bin**jÆj^ÃjÎj[ÀjÐjõjÒ}rdÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÞ]reÃ(jçXWMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: rfÃ…�rgÃ}rhÃ(jÅXWMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: jÆjbÃubjÚ)�riÃ}rjÃ(jÅXB**/packages/ti/boot/sbl/binary/evmK2G/mmcsd/bin**jÒ}rkÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbÃjÞ]rlÃjçX>/packages/ti/boot/sbl/binary/evmK2G/mmcsd/binrmÃ…�rnÃ}roÃ(jÅUjÆjiÃubajÐjâubeubajÐjubj{)�rpÃ}rqÃ(jÅX±app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different). jÒ}rrÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjZÃjÞ]rsÃjò)�rtÃ}ruÃ(jÅX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).rvÃjÆjpÃjÎj[ÀjÐjõjÒ}rwÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rxÃjçX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).ryÃ…�rzÃ}r{Ã(jÅjvÃjÆjtÃubaubajÐjubejÐjwubeubeubeubjÇ)�r|Ã}r}Ã(jÅUjKjÆj ÃjÎj[ÀjÐjÑjÒ}r~Ã(jÔ]rÃXbooting via sd cardr€ÃajÕ]jÖ]j×]r�ÃUid110r‚ÃajÚ]ujÜK„jÝhjÞ]rƒÃ(jà)�r„Ã}r…Ã(jÅXBooting via SD Cardr†ÃjÆj|ÃjÎj[ÀjÐjäjÒ}r‡Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÝhjÞ]rˆÃjçXBooting via SD Cardr‰Ã…�rŠÃ}r‹Ã(jÅj†ÃjÆj„Ãubaubj )�rŒÃ}r�Ã(jÅUjÆj|ÃjÎj[ÀjÐj jÒ}rŽÃ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK†jÝhjÞ]r�Ã(j{)�r�Ã}r‘Ã(jÅX7Insert micro SD card into the SD card slot of the boardr’ÃjÆjŒÃjÎj[ÀjÐjjÒ}r“Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r”Ãjò)�r•Ã}r–Ã(jÅj’ÃjÆj�ÃjÎj[ÀjÐjõjÒ}r—Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]r˜ÃjçX7Insert micro SD card into the SD card slot of the boardr™Ã…�ršÃ}r›Ã(jÅj’ÃjÆj•Ãubaubaubj{)�rœÃ}r�Ã(jÅX€Set the board to MMC/SD bootmode by configuring the DIP switches to '0111'. Verify the bootmode on the LCD display on your boardjÆjŒÃjÎj[ÀjÐjjÒ}ržÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŸÃjò)�r Ã}r¡Ã(jÅX€Set the board to MMC/SD bootmode by configuring the DIP switches to '0111'. Verify the bootmode on the LCD display on your boardr¢ÃjÆjœÃjÎj[ÀjÐjõjÒ}r£Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÞ]r¤ÃjçX€Set the board to MMC/SD bootmode by configuring the DIP switches to '0111'. Verify the bootmode on the LCD display on your boardr¥Ã…�r¦Ã}r§Ã(jÅj¢ÃjÆj Ãubaubaubj{)�r¨Ã}r©Ã(jÅXvOpen a serial communication terminal (such as TeraTerm, MiniCom, etc.) on host PC and connect to the UART console portjÆjŒÃjÎj[ÀjÐjjÒ}rªÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r«Ãjò)�r¬Ã}r­Ã(jÅXvOpen a serial communication terminal (such as TeraTerm, MiniCom, etc.) on host PC and connect to the UART console portr®ÃjÆj¨ÃjÎj[ÀjÐjõjÒ}r¯Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‰jÞ]r°ÃjçXvOpen a serial communication terminal (such as TeraTerm, MiniCom, etc.) on host PC and connect to the UART console portr±Ã…�r²Ã}r³Ã(jÅj®ÃjÆj¬Ãubaubaubj{)�r´Ã}rµÃ(jÅXPower on the board jÆjŒÃjÎj[ÀjÐjjÒ}r¶Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r·Ãjò)�r¸Ã}r¹Ã(jÅXPower on the boardrºÃjÆj´ÃjÎj[ÀjÐjõjÒ}r»Ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‹jÞ]r¼ÃjçXPower on the boardr½Ã…�r¾Ã}r¿Ã(jÅjºÃjÆj¸Ãubaubaubeubjc)�rÀÃ}rÁÃ(jÅUjÆj|ÃjÎj[ÀjÐjfjÒ}rÂÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rÃÃji)�rÄÃ}rÅÃ(jÅXOBelow is an example of K2G SBL successfully booting the diagnostic application:rÆÃjlKjÆjÀÃjÎj[ÀjÐjÜjÒ}rÇÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÝhjÞ]rÈÃjçXOBelow is an example of K2G SBL successfully booting the diagnostic application:rÉÃ…�rÊÃ}rËÃ(jÅjÆÃjÆjÄÃubaubaubjR)�rÌÃ}rÍÃ(jÅX'.. Image:: ../images/K2g_boot_diag.jpg jÆj|ÃjÎj[ÀjÐjZjÒ}rÎÃ(UuriX rtos/../images/K2g_boot_diag.jpgrÏÃj×]jÖ]jÔ]jÕ]jX}rÐÃU*jÏÃsjÚ]ujÜK�jÝhjÞ]ubeubeubjÇ)�rÑÃ}rÒÃ(jÅUjÆjõÂjÎj[ÀjÐjÑjÒ}rÓÃ(jÔ]jÕ]jÖ]j×]rÔÃUqspi-boot-moderÕÃajÚ]rÖÃhóaujÜK’jÝhjÞ]r×Ã(jà)�rØÃ}rÙÃ(jÅXQSPI Boot ModerÚÃjÆjÑÃjÎj[ÀjÐjäjÒ}rÛÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK’jÝhjÞ]rÜÃjçXQSPI Boot ModerÝÃ…�rÞÃ}rßÃ(jÅjÚÃjÆjØÃubaubjÇ)�ràÃ}ráÃ(jÅUjÆjÑÃjÎj[ÀjÐjÑjÒ}râÃ(jÔ]jÕ]jÖ]j×]rãÃUpreparing-qspi-flashräÃajÚ]råÃhMaujÜK•jÝhjÞ]ræÃ(jà)�rçÃ}rèÃ(jÅXPreparing QSPI FlashréÃjÆjàÃjÎj[ÀjÐjäjÒ}rêÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK•jÝhjÞ]rëÃjçXPreparing QSPI FlashrìÃ…�ríÃ}rîÃ(jÅjéÃjÆjçÃubaubjò)�rïÃ}rðÃ(jÅX¦MLO and app needs to be flashed into QSPI memory so that they can be booted. MLO will reside at offset 0 and app will reside at offset 0x80000. QSPI flash memory map:rñÃjÆjàÃjÎj[ÀjÐjõjÒ}ròÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÝhjÞ]róÃjçX¦MLO and app needs to be flashed into QSPI memory so that they can be booted. MLO will reside at offset 0 and app will reside at offset 0x80000. QSPI flash memory map:rôÃ…�rõÃ}röÃ(jÅjñÃjÆjïÃubaubjy )�r÷Ã}røÃ(jÅUjÆjàÃjÎj[ÀjÐjÔ jÒ}rùÃ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rúÃj~ )�rûÃ}rüÃ(jÅUjÒ}rýÃ(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj÷ÃjÞ]rþÃ(jƒ )�rÿÃ}rÄ(jÅUjÒ}rÄ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjûÃjÞ]jÐj‡ ubjƒ )�rÄ}rÄ(jÅUjÒ}rÄ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjûÃjÞ]jÐj‡ ubj¥ )�rÄ}rÄ(jÅUjÒ}rÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjûÃjÞ]rÄ(j� )�r Ä}r Ä(jÅUjÒ}r Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄjÞ]r Ä(j• )�r Ä}rÄ(jÅUjÒ}rÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÄjÞ]rÄjò)�rÄ}rÄ(jÅX Offset 0x0rÄjÆj ÄjÎj[ÀjÐjõjÒ}rÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÞ]rÄjçX Offset 0x0rÄ…�rÄ}rÄ(jÅjÄjÆjÄubaubajÐj¢ ubj• )�rÄ}rÄ(jÅUjÒ}rÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÄjÞ]rÄjò)�rÄ}rÄ(jÅXMLOrÄjÆjÄjÎj[ÀjÐjõjÒ}r Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÞ]r!ÄjçXMLOr"Ä…�r#Ä}r$Ä(jÅjÄjÆjÄubaubajÐj¢ ubejÐj£ ubj� )�r%Ä}r&Ä(jÅUjÒ}r'Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄjÞ]r(Ä(j• )�r)Ä}r*Ä(jÅUjÒ}r+Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ÄjÞ]r,Äjò)�r-Ä}r.Ä(jÅXOffset 0x80000r/ÄjÆj)ÄjÎj[ÀjÐjõjÒ}r0Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜKžjÞ]r1ÄjçXOffset 0x80000r2Ä…�r3Ä}r4Ä(jÅj/ÄjÆj-ÄubaubajÐj¢ ubj• )�r5Ä}r6Ä(jÅUjÒ}r7Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ÄjÞ]r8Äjò)�r9Ä}r:Ä(jÅXappr;ÄjÆj5ÄjÎj[ÀjÐjõjÒ}r<Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜKžjÞ]r=ÄjçXappr>Ä…�r?Ä}r@Ä(jÅj;ÄjÆj9ÄubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�rAÄ}rBÄ(jÅXIThe images can be flashed into QSPI flash by following steps given below:rCÄjÆjàÃjÎj[ÀjÐjõjÒ}rDÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÝhjÞ]rEÄjçXIThe images can be flashed into QSPI flash by following steps given below:rFÄ…�rGÄ}rHÄ(jÅjCÄjÆjAÄubaubj )�rIÄ}rJÄ(jÅUjÆjàÃjÎj[ÀjÐj jÒ}rKÄ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK¤jÝhjÞ]rLÄ(j{)�rMÄ}rNÄ(jÅXbCopy MLO, app, and config to SD card - MLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/evmK2G/qspi/bin** - app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different). - config helps specify the memory map. The default config file can be found at: **/packages/ti/boot/sbl/tools/flashWriter/qspi**. This config file may be altered to custom user settings if needed. jÆjIÄjÎNjÐjjÒ}rOÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rPÄ(jò)�rQÄ}rRÄ(jÅX$Copy MLO, app, and config to SD cardrSÄjÆjMÄjÎj[ÀjÐjõjÒ}rTÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÞ]rUÄjçX$Copy MLO, app, and config to SD cardrVÄ…�rWÄ}rXÄ(jÅjSÄjÆjQÄubaubjt)�rYÄ}rZÄ(jÅUjÒ}r[Ä(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjMÄjÞ]r\Ä(j{)�r]Ä}r^Ä(jÅX˜MLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/evmK2G/qspi/bin**jÒ}r_Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆjYÄjÞ]r`Äjò)�raÄ}rbÄ(jÅX˜MLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/evmK2G/qspi/bin**jÆj]ÄjÎj[ÀjÐjõjÒ}rcÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¦jÞ]rdÄ(jçXWMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: reÄ…�rfÄ}rgÄ(jÅXWMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: jÆjaÄubjÚ)�rhÄ}riÄ(jÅXA**/packages/ti/boot/sbl/binary/evmK2G/qspi/bin**jÒ}rjÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjaÄjÞ]rkÄjçX=/packages/ti/boot/sbl/binary/evmK2G/qspi/binrlÄ…�rmÄ}rnÄ(jÅUjÆjhÄubajÐjâubeubajÐjubj{)�roÄ}rpÄ(jÅX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).jÒ}rqÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjYÄjÞ]rrÄjò)�rsÄ}rtÄ(jÅX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).ruÄjÆjoÄjÎj[ÀjÐjõjÒ}rvÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK©jÞ]rwÄjçX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).rxÄ…�ryÄ}rzÄ(jÅjuÄjÆjsÄubaubajÐjubj{)�r{Ä}r|Ä(jÅXÔconfig helps specify the memory map. The default config file can be found at: **/packages/ti/boot/sbl/tools/flashWriter/qspi**. This config file may be altered to custom user settings if needed. jÒ}r}Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆjYÄjÞ]r~Äjò)�rÄ}r€Ä(jÅXÓconfig helps specify the memory map. The default config file can be found at: **/packages/ti/boot/sbl/tools/flashWriter/qspi**. This config file may be altered to custom user settings if needed.jÆj{ÄjÎj[ÀjÐjõjÒ}r�Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¬jÞ]r‚Ä(jçXNconfig helps specify the memory map. The default config file can be found at: rƒÄ…�r„Ä}r…Ä(jÅXNconfig helps specify the memory map. The default config file can be found at: jÆjÄubjÚ)�r†Ä}r‡Ä(jÅXA**/packages/ti/boot/sbl/tools/flashWriter/qspi**jÒ}rˆÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄjÞ]r‰ÄjçX=/packages/ti/boot/sbl/tools/flashWriter/qspirŠÄ…�r‹Ä}rŒÄ(jÅUjÆj†ÄubajÐjâubjçXD. This config file may be altered to custom user settings if needed.r�Ä…�rŽÄ}r�Ä(jÅXD. This config file may be altered to custom user settings if needed.jÆjÄubeubajÐjubejÐjwubeubj{)�r�Ä}r‘Ä(jÅX\In the SD card, rename MLO to "boot". This is the default name specified by the config file.jÆjIÄjÎj[ÀjÐjjÒ}r’Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r“Äjò)�r”Ä}r•Ä(jÅX\In the SD card, rename MLO to "boot". This is the default name specified by the config file.r–ÄjÆj�ÄjÎj[ÀjÐjõjÒ}r—Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK±jÞ]r˜ÄjçX\In the SD card, rename MLO to "boot". This is the default name specified by the config file.r™Ä…�ršÄ}r›Ä(jÅj–ÄjÆj”Äubaubaubj{)�rœÄ}r�Ä(jÅX5Insert the SD card into the SD card slot on the boardržÄjÆjIÄjÎj[ÀjÐjjÒ}rŸÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r Äjò)�r¡Ä}r¢Ä(jÅjžÄjÆjœÄjÎj[ÀjÐjõjÒ}r£Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK³jÞ]r¤ÄjçX5Insert the SD card into the SD card slot on the boardr¥Ä…�r¦Ä}r§Ä(jÅjžÄjÆj¡Äubaubaubj{)�r¨Ä}r©Ä(jÅX Connect to the board with CCS. Launch target configuration and connect to the ARM A15 core. GEL file will run on-connect and do basic board-level initializationjÆjIÄjÎj[ÀjÐjjÒ}rªÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r«Äjò)�r¬Ä}r­Ä(jÅX Connect to the board with CCS. Launch target configuration and connect to the ARM A15 core. GEL file will run on-connect and do basic board-level initializationr®ÄjÆj¨ÄjÎj[ÀjÐjõjÒ}r¯Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÞ]r°ÄjçX Connect to the board with CCS. Launch target configuration and connect to the ARM A15 core. GEL file will run on-connect and do basic board-level initializationr±Ä…�r²Ä}r³Ä(jÅj®ÄjÆj¬Äubaubaubj{)�r´Ä}rµÄ(jÅXËLoad the flash writer, qspi_flash_writer.out, to the connected core - A pre-built qspi_flash_writer.out can be found at: **/packages/ti/boot/sbl/tools/flashWriter/qspi/bin/evmK2G** jÆjIÄjÎNjÐjjÒ}r¶Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r·Ä(jò)�r¸Ä}r¹Ä(jÅXCLoad the flash writer, qspi_flash_writer.out, to the connected corerºÄjÆj´ÄjÎj[ÀjÐjõjÒ}r»Ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK·jÞ]r¼ÄjçXCLoad the flash writer, qspi_flash_writer.out, to the connected corer½Ä…�r¾Ä}r¿Ä(jÅjºÄjÆj¸Äubaubjt)�rÀÄ}rÁÄ(jÅUjÒ}rÂÄ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj´ÄjÞ]rÃÄj{)�rÄÄ}rÅÄ(jÅX€A pre-built qspi_flash_writer.out can be found at: **/packages/ti/boot/sbl/tools/flashWriter/qspi/bin/evmK2G** jÒ}rÆÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÀÄjÞ]rÇÄjò)�rÈÄ}rÉÄ(jÅXA pre-built qspi_flash_writer.out can be found at: **/packages/ti/boot/sbl/tools/flashWriter/qspi/bin/evmK2G**jÆjÄÄjÎj[ÀjÐjõjÒ}rÊÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¹jÞ]rËÄ(jçX3A pre-built qspi_flash_writer.out can be found at: rÌÄ…�rÍÄ}rÎÄ(jÅX3A pre-built qspi_flash_writer.out can be found at: jÆjÈÄubjÚ)�rÏÄ}rÐÄ(jÅXL**/packages/ti/boot/sbl/tools/flashWriter/qspi/bin/evmK2G**jÒ}rÑÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÈÄjÞ]rÒÄjçXH/packages/ti/boot/sbl/tools/flashWriter/qspi/bin/evmK2GrÓÄ…�rÔÄ}rÕÄ(jÅUjÆjÏÄubajÐjâubeubajÐjubajÐjwubeubj{)�rÖÄ}r×Ä(jÅXbRun the QSPI flash writer application. You will see the following logs on the EVM's UART console: jÆjIÄjÎj[ÀjÐjjÒ}rØÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÙÄjò)�rÚÄ}rÛÄ(jÅXaRun the QSPI flash writer application. You will see the following logs on the EVM's UART console:rÜÄjÆjÖÄjÎj[ÀjÐjõjÒ}rÝÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¼jÞ]rÞÄjçXaRun the QSPI flash writer application. You will see the following logs on the EVM's UART console:rßÄ…�ràÄ}ráÄ(jÅjÜÄjÆjÚÄubaubaubeubj)�râÄ}rãÄ(jÅX*** PDK QSPI Flash Writer *** Copying 'boot' to local memory Begin flashing 'boot' into QSPI Finished flashing 'boot' with size 20010 at offset 0 Copying 'app' to local memory Begin flashing 'app' into QSPI Finished flashing 'app' with size 19398 at offset 80000 Flashing completed!jÆjàÃjÎj[ÀjÐjjÒ}räÄ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMG-jÝhjÞ]råÄjçX*** PDK QSPI Flash Writer *** Copying 'boot' to local memory Begin flashing 'boot' into QSPI Finished flashing 'boot' with size 20010 at offset 0 Copying 'app' to local memory Begin flashing 'app' into QSPI Finished flashing 'app' with size 19398 at offset 80000 Flashing completed!ræÄ…�rçÄ}rèÄ(jÅUjÆjâÄubaubjò)�réÄ}rêÄ(jÅX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.rëÄjÆjàÃjÎj[ÀjÐjõjÒ}rìÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKËjÝhjÞ]ríÄjçX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.rîÄ…�rïÄ}rðÄ(jÅjëÄjÆjéÄubaubeubjÇ)�rñÄ}ròÄ(jÅUjKjÆjÑÃjÎj[ÀjÐjÑjÒ}róÄ(jÔ]rôÄXbooting via qspirõÄajÕ]jÖ]j×]röÄUid111r÷ÄajÚ]ujÜKÏjÝhjÞ]røÄ(jà)�rùÄ}rúÄ(jÅXBooting via QSPIrûÄjÆjñÄjÎj[ÀjÐjäjÒ}rüÄ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÝhjÞ]rýÄjçXBooting via QSPIrþÄ…�rÿÄ}rÅ(jÅjûÄjÆjùÄubaubj )�rÅ}rÅ(jÅUjÆjñÄjÎj[ÀjÐj jÒ}rÅ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKÑjÝhjÞ]rÅ(j{)�rÅ}rÅ(jÅX�Set the board to QSPI-48 bootmode by configuring the DIP switches to '1111'. Verify the bootmode on the LCD display on your boardjÆjÅjÎj[ÀjÐjjÒ}rÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÅjò)�r Å}r Å(jÅX�Set the board to QSPI-48 bootmode by configuring the DIP switches to '1111'. Verify the bootmode on the LCD display on your boardr ÅjÆjÅjÎj[ÀjÐjõjÒ}r Å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÑjÞ]r ÅjçX�Set the board to QSPI-48 bootmode by configuring the DIP switches to '1111'. Verify the bootmode on the LCD display on your boardrÅ…�rÅ}rÅ(jÅj ÅjÆj Åubaubaubj{)�rÅ}rÅ(jÅXvOpen a serial communication terminal (such as TeraTerm, MiniCom, etc.) on host PC and connect to the UART console portjÆjÅjÎj[ÀjÐjjÒ}rÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÅjò)�rÅ}rÅ(jÅXvOpen a serial communication terminal (such as TeraTerm, MiniCom, etc.) on host PC and connect to the UART console portrÅjÆjÅjÎj[ÀjÐjõjÒ}rÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÓjÞ]rÅjçXvOpen a serial communication terminal (such as TeraTerm, MiniCom, etc.) on host PC and connect to the UART console portrÅ…�rÅ}rÅ(jÅjÅjÆjÅubaubaubj{)�rÅ}rÅ(jÅXPower on the board jÆjÅjÎj[ÀjÐjjÒ}rÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r Åjò)�r!Å}r"Å(jÅXPower on the boardr#ÅjÆjÅjÎj[ÀjÐjõjÒ}r$Å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÕjÞ]r%ÅjçXPower on the boardr&Å…�r'Å}r(Å(jÅj#ÅjÆj!ÅubaubaubeubeubeubeubjÇ)�r)Å}r*Å(jÅUjKjÆjIÀjÎj[ÀjÐjÑjÒ}r+Å(jÔ]r,ÅX memory usager-ÅajÕ]jÖ]j×]r.ÅU memory-usager/ÅajÚ]ujÜKØjÝhjÞ]r0Å(jà)�r1Å}r2Å(jÅX Memory Usager3ÅjÆj)ÅjÎj[ÀjÐjäjÒ}r4Å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKØjÝhjÞ]r5ÅjçX Memory Usager6Å…�r7Å}r8Å(jÅj3ÅjÆj1Åubaubjò)�r9Å}r:Å(jÅX6SBL uses the last 0x40000 memory from MSMC RAM memory.r;ÅjÆj)ÅjÎj[ÀjÐjõjÒ}r<Å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÚjÝhjÞ]r=ÅjçX6SBL uses the last 0x40000 memory from MSMC RAM memory.r>Å…�r?Å}r@Å(jÅj;ÅjÆj9Åubaubjò)�rAÅ}rBÅ(jÅX"The SBL memory map is shown below:rCÅjÆj)ÅjÎj[ÀjÐjõjÒ}rDÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÝhjÞ]rEÅjçX"The SBL memory map is shown below:rFÅ…�rGÅ}rHÅ(jÅjCÅjÆjAÅubaubjR)�rIÅ}rJÅ(jÅX%.. Image:: ../images/SBL_mem_k2g.jpg jÆj)ÅjÎj[ÀjÐjZjÒ}rKÅ(UuriXrtos/../images/SBL_mem_k2g.jpgrLÅj×]jÖ]jÔ]jÕ]jX}rMÅU*jLÅsjÚ]ujÜKßjÝhjÞ]ubjë)�rNÅ}rOÅ(jÅX·app should not have loadable sections residing in SBL memory region to prevent overwriting SBL during load time. It is, however, free to use SBL memory after it is loaded and running.jÆj)ÅjÎj[ÀjÐjïjÒ}rPÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rQÅjò)�rRÅ}rSÅ(jÅX·app should not have loadable sections residing in SBL memory region to prevent overwriting SBL during load time. It is, however, free to use SBL memory after it is loaded and running.rTÅjÆjNÅjÎj[ÀjÐjõjÒ}rUÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKájÞ]rVÅjçX·app should not have loadable sections residing in SBL memory region to prevent overwriting SBL during load time. It is, however, free to use SBL memory after it is loaded and running.rWÅ…�rXÅ}rYÅ(jÅjTÅjÆjRÅubaubaubeubeubjÇ)�rZÅ}r[Å(jÅUjÆj;ƒjÎj¥‚jÐjÑjÒ}r\Å(jÔ]jÕ]jÖ]j×]r]ÅU k2h-k2e-k2lr^ÅajÚ]r_ÅjEaujÜKajÝhjÞ]r`Å(jà)�raÅ}rbÅ(jÅX K2H/K2E/K2LrcÅjÆjZÅjÎj¥‚jÐjäjÒ}rdÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÝhjÞ]reÅjçX K2H/K2E/K2LrfÅ…�rgÅ}rhÅ(jÅjcÅjÆjaÅubaubj7)�riÅ}rjÅ(jÅXGhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_K2H/E/LjÆjZÅjÎj:XVsource/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_K2H_E_L.rst.incrkÅ…�rlÅ}rmÅbjÐj>jÒ}rnÅ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]roÅjçXGhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_K2H/E/LrpÅ…�rqÅ}rrÅ(jÅUjÆjiÅubaubjÇ)�rsÅ}rtÅ(jÅUjKjÆjZÅjÎjlÅjÐjÑjÒ}ruÅ(jÔ]rvÅXoverviewrwÅajÕ]jÖ]j×]rxÅUid112ryÅajÚ]ujÜKjÝhjÞ]rzÅ(jà)�r{Å}r|Å(jÅXOverviewr}ÅjÆjsÅjÎjlÅjÐjäjÒ}r~Å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÅjçXOverviewr€Å…�r�Å}r‚Å(jÅj}ÅjÆj{Åubaubjò)�rƒÅ}r„Å(jÅX=K2H/K2E/K2L EVMs uses the Secondary Boot Loader (SBL) to configure board-related settings and execute a user application. The user application can be single core or multicore, and execute on either DSP cores or ARM cores. The only restriction is that the load sections must not overlap the memory space that SBL uses.r…ÅjÆjsÅjÎjlÅjÐjõjÒ}r†Å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r‡ÅjçX=K2H/K2E/K2L EVMs uses the Secondary Boot Loader (SBL) to configure board-related settings and execute a user application. The user application can be single core or multicore, and execute on either DSP cores or ARM cores. The only restriction is that the load sections must not overlap the memory space that SBL uses.rˆÅ…�r‰Å}rŠÅ(jÅj…ÅjÆjƒÅubaubjò)�r‹Å}rŒÅ(jÅXÿThe K2H/K2E/K2L SBL supports ARM master boot using SPI NOR. Please refer to the boot mode dip switch settings in the respective EVM hardware page (`link `__) to configure your EVM for NOR boot.jÆjsÅjÎjlÅjÐjõjÒ}r�Å(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rŽÅ(jçX“The K2H/K2E/K2L SBL supports ARM master boot using SPI NOR. Please refer to the boot mode dip switch settings in the respective EVM hardware page (r�Å…�r�Å}r‘Å(jÅX“The K2H/K2E/K2L SBL supports ARM master boot using SPI NOR. Please refer to the boot mode dip switch settings in the respective EVM hardware page (jÆj‹Åubjû)�r’Å}r“Å(jÅXG`link `__jÒ}r”Å(UnameXlinkjX<index_release_specific.html#supported-platforms-and-versionsj×]jÖ]jÔ]jÕ]jÚ]ujÆj‹ÅjÞ]r•ÅjçXlinkr–Å…�r—Å}r˜Å(jÅUjÆj’ÅubajÐjÿubjçX%) to configure your EVM for NOR boot.r™Å…�ršÅ}r›Å(jÅX%) to configure your EVM for NOR boot.jÆj‹ÅubeubeubjÇ)�rœÅ}r�Å(jÅUjKjÆjZÅjÎjlÅjÐjÑjÒ}ržÅ(jÔ]rŸÅjbµajÕ]jÖ]j×]r ÅUid113r¡ÅajÚ]ujÜKjÝhjÞ]r¢Å(jà)�r£Å}r¤Å(jÅXFlashing the Bootloaderr¥ÅjÆjœÅjÎjlÅjÐjäjÒ}r¦Å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r§ÅjçXFlashing the Bootloaderr¨Å…�r©Å}rªÅ(jÅj¥ÅjÆj£Åubaubjò)�r«Å}r¬Å(jÅX:SBL and user application needs to be flashed into SPI NOR.r­ÅjÆjœÅjÎjlÅjÐjõjÒ}r®Å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r¯ÅjçX:SBL and user application needs to be flashed into SPI NOR.r°Å…�r±Å}r²Å(jÅj­ÅjÆj«Åubaubjò)�r³Å}r´Å(jÅX±Refer to `Program EVM Guide `__ for instructions on using the script, program_evm.js, to automatically flash your device.jÆjœÅjÎjlÅjÐjõjÒ}rµÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r¶Å(jçX Refer to r·Å…�r¸Å}r¹Å(jÅX Refer to jÆj³Åubjû)�rºÅ}r»Å(jÅXN`Program EVM Guide `__jÒ}r¼Å(UnameXProgram EVM GuidejX6http://processors.wiki.ti.com/index.php/Program_EVM_UGj×]jÖ]jÔ]jÕ]jÚ]ujÆj³ÅjÞ]r½ÅjçXProgram EVM Guider¾Å…�r¿Å}rÀÅ(jÅUjÆjºÅubajÐjÿubjçXZ for instructions on using the script, program_evm.js, to automatically flash your device.rÁÅ…�rÂÅ}rÃÅ(jÅXZ for instructions on using the script, program_evm.js, to automatically flash your device.jÆj³ÅubeubeubjÇ)�rÄÅ}rÅÅ(jÅUjKjÆjZÅjÎjlÅjÐjÑjÒ}rÆÅ(jÔ]rÇÅXusagerÈÅajÕ]jÖ]j×]rÉÅUid114rÊÅajÚ]ujÜKjÝhjÞ]rËÅ(jà)�rÌÅ}rÍÅ(jÅXUsagerÎÅjÆjÄÅjÎjlÅjÐjäjÒ}rÏÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÐÅjçXUsagerÑÅ…�rÒÅ}rÓÅ(jÅjÎÅjÆjÌÅubaubj )�rÔÅ}rÕÅ(jÅUjÆjÄÅjÎjlÅjÐj jÒ}rÖÅ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKjÝhjÞ]r×Å(j{)�rØÅ}rÙÅ(jÅXtFlash the bootloader and user application. This can be done automatically with default files by using program_evm.jsjÆjÔÅjÎjlÅjÐjjÒ}rÚÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÛÅjò)�rÜÅ}rÝÅ(jÅXtFlash the bootloader and user application. This can be done automatically with default files by using program_evm.jsrÞÅjÆjØÅjÎjlÅjÐjõjÒ}rßÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ràÅjçXtFlash the bootloader and user application. This can be done automatically with default files by using program_evm.jsráÅ…�râÅ}rãÅ(jÅjÞÅjÆjÜÅubaubaubj{)�räÅ}råÅ(jÅX Set the EVM to ARM SPI boot moderæÅjÆjÔÅjÎjlÅjÐjjÒ}rçÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rèÅjò)�réÅ}rêÅ(jÅjæÅjÆjäÅjÎjlÅjÐjõjÒ}rëÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rìÅjçX Set the EVM to ARM SPI boot moderíÅ…�rîÅ}rïÅ(jÅjæÅjÆjéÅubaubaubj{)�rðÅ}rñÅ(jÅX‚Connect UART serial debug cable from EVM to your computer. Open a terminal such as HyperTerminal or TeraTerm to see console outputjÆjÔÅjÎjlÅjÐjjÒ}ròÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]róÅjò)�rôÅ}rõÅ(jÅX‚Connect UART serial debug cable from EVM to your computer. Open a terminal such as HyperTerminal or TeraTerm to see console outputröÅjÆjðÅjÎjlÅjÐjõjÒ}r÷Å(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]røÅjçX‚Connect UART serial debug cable from EVM to your computer. Open a terminal such as HyperTerminal or TeraTerm to see console outputrùÅ…�rúÅ}rûÅ(jÅjöÅjÆjôÅubaubaubj{)�rüÅ}rýÅ(jÅXPower on the EVM jÆjÔÅjÎjlÅjÐjjÒ}rþÅ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÿÅjò)�rÆ}rÆ(jÅXPower on the EVMrÆjÆjüÅjÎjlÅjÐjõjÒ}rÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK"jÞ]rÆjçXPower on the EVMrÆ…�rÆ}rÆ(jÅjÆjÆjÆubaubaubeubeubjÇ)�rÆ}r Æ(jÅUjKjÆjZÅjÎjlÅjÐjÑjÒ}r Æ(jÔ]r ÆX compilationr ÆajÕ]jÖ]j×]r ÆUid115rÆajÚ]ujÜK%jÝhjÞ]rÆ(jà)�rÆ}rÆ(jÅX CompilationrÆjÆjÆjÎjlÅjÐjäjÒ}rÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÝhjÞ]rÆjçX CompilationrÆ…�rÆ}rÆ(jÅjÆjÆjÆubaubjò)�rÆ}rÆ(jÅXThe recommended rule-of-thumb to compiling projects in the Processor SDK RTOS package is to use the makefiles provided. The makefiles are usable after setting up your shell/terminal/command prompt environment with the setupenv.bat or setupenv.sh script located inrÆjÆjÆjÎjlÅjÐjõjÒ}rÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÝhjÞ]rÆjçXThe recommended rule-of-thumb to compiling projects in the Processor SDK RTOS package is to use the makefiles provided. The makefiles are usable after setting up your shell/terminal/command prompt environment with the setupenv.bat or setupenv.sh script located inrÆ…�rÆ}rÆ(jÅjÆjÆjÆubaubj)�r Æ}r!Æ(jÅX:[SDK Install Path]/processor_sdk_rtos__jÆjÆjÎjlÅjÐjjÒ}r"Æ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¡-jÝhjÞ]r#ÆjçX:[SDK Install Path]/processor_sdk_rtos__r$Æ…�r%Æ}r&Æ(jÅUjÆj Æubaubjò)�r'Æ}r(Æ(jÅX§Refer to `Building RTOS SDK `__ page on how to setup your environment for building within any of the Processor SDK RTOS packages.jÆjÆjÎjlÅjÐjõjÒ}r)Æ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÝhjÞ]r*Æ(jçX Refer to r+Æ…�r,Æ}r-Æ(jÅX Refer to jÆj'Æubjû)�r.Æ}r/Æ(jÅX<`Building RTOS SDK `__jÒ}r0Æ(UnameXBuilding RTOS SDKjX$index_overview.html#building-the-sdkj×]jÖ]jÔ]jÕ]jÚ]ujÆj'ÆjÞ]r1ÆjçXBuilding RTOS SDKr2Æ…�r3Æ}r4Æ(jÅUjÆj.ÆubajÐjÿubjçXb page on how to setup your environment for building within any of the Processor SDK RTOS packages.r5Æ…�r6Æ}r7Æ(jÅXb page on how to setup your environment for building within any of the Processor SDK RTOS packages.jÆj'Æubeubjò)�r8Æ}r9Æ(jÅX The SBL package can be found in:r:ÆjÆjÆjÎjlÅjÐjõjÒ}r;Æ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÝhjÞ]r<ÆjçX The SBL package can be found in:r=Æ…�r>Æ}r?Æ(jÅj:ÆjÆj8Æubaubj)�r@Æ}rAÆ(jÅX@[SDK Install Path]/pdk__/packages/ti/boot/sbljÆjÆjÎjlÅjÐjjÒ}rBÆ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM«-jÝhjÞ]rCÆjçX@[SDK Install Path]/pdk__/packages/ti/boot/sblrDÆ…�rEÆ}rFÆ(jÅUjÆj@Æubaubjò)�rGÆ}rHÆ(jÅX To build:rIÆjÆjÆjÎjlÅjÐjõjÒ}rJÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÝhjÞ]rKÆjçX To build:rLÆ…�rMÆ}rNÆ(jÅjIÆjÆjGÆubaubj)�rOÆ}rPÆ(jÅXtcd [SDK Install Path]/pdk__/packages/ti/boot/sbl make all BOOTMODE=spi BOARD= SOC=jÆjÆjÎjlÅjÐjjÒ}rQÆ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM±-jÝhjÞ]rRÆjçXtcd [SDK Install Path]/pdk__/packages/ti/boot/sbl make all BOOTMODE=spi BOARD= SOC=rSÆ…�rTÆ}rUÆ(jÅUjÆjOÆubaubjò)�rVÆ}rWÆ(jÅXK** can be of values: **evmK2H**, **evmK2E**, **evmK2L**, or **evmK2K**jÆjÆjÎjlÅjÐjõjÒ}rXÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÝhjÞ]rYÆ(jM)�rZÆ}r[Æ(jÅX**jÒ}r\Æ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjVÆjÞ]r]ÆjçXr^Æ…�r_Æ}r`Æ(jÅUjÆjZÆubajÐjUubjçX can be of values: raÆ…�rbÆ}rcÆ(jÅX can be of values: jÆjVÆubjÚ)�rdÆ}reÆ(jÅX **evmK2H**jÒ}rfÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjVÆjÞ]rgÆjçXevmK2HrhÆ…�riÆ}rjÆ(jÅUjÆjdÆubajÐjâubjçX, rkÆ…�rlÆ}rmÆ(jÅX, jÆjVÆubjÚ)�rnÆ}roÆ(jÅX **evmK2E**jÒ}rpÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjVÆjÞ]rqÆjçXevmK2ErrÆ…�rsÆ}rtÆ(jÅUjÆjnÆubajÐjâubjçX, ruÆ…�rvÆ}rwÆ(jÅX, jÆjVÆubjÚ)�rxÆ}ryÆ(jÅX **evmK2L**jÒ}rzÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjVÆjÞ]r{ÆjçXevmK2Lr|Æ…�r}Æ}r~Æ(jÅUjÆjxÆubajÐjâubjçX, or rÆ…�r€Æ}r�Æ(jÅX, or jÆjVÆubjÚ)�r‚Æ}rƒÆ(jÅX **evmK2K**jÒ}r„Æ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjVÆjÞ]r…ÆjçXevmK2Kr†Æ…�r‡Æ}rˆÆ(jÅUjÆj‚ÆubajÐjâubeubjò)�r‰Æ}rŠÆ(jÅXD** can be of values: **K2H**, **K2E**, **K2L**, or **K2K**r‹ÆjÆjÆjÎjlÅjÐjõjÒ}rŒÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÝhjÞ]r�Æ(jM)�rŽÆ}r�Æ(jÅX **jÒ}r�Æ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰ÆjÞ]r‘ÆjçX r’Æ…�r“Æ}r”Æ(jÅUjÆjŽÆubajÐjUubjçX can be of values: r•Æ…�r–Æ}r—Æ(jÅX can be of values: jÆj‰ÆubjÚ)�r˜Æ}r™Æ(jÅX**K2H**jÒ}ršÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰ÆjÞ]r›ÆjçXK2HrœÆ…�r�Æ}ržÆ(jÅUjÆj˜ÆubajÐjâubjçX, rŸÆ…�r Æ}r¡Æ(jÅX, jÆj‰ÆubjÚ)�r¢Æ}r£Æ(jÅX**K2E**jÒ}r¤Æ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰ÆjÞ]r¥ÆjçXK2Er¦Æ…�r§Æ}r¨Æ(jÅUjÆj¢ÆubajÐjâubjçX, r©Æ…�rªÆ}r«Æ(jÅX, jÆj‰ÆubjÚ)�r¬Æ}r­Æ(jÅX**K2L**jÒ}r®Æ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰ÆjÞ]r¯ÆjçXK2Lr°Æ…�r±Æ}r²Æ(jÅUjÆj¬ÆubajÐjâubjçX, or r³Æ…�r´Æ}rµÆ(jÅX, or jÆj‰ÆubjÚ)�r¶Æ}r·Æ(jÅX**K2K**jÒ}r¸Æ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‰ÆjÞ]r¹ÆjçXK2KrºÆ…�r»Æ}r¼Æ(jÅUjÆj¶ÆubajÐjâubeubjò)�r½Æ}r¾Æ(jÅX…The resulting output will be in [SDK Install Path]/pdk__/packages/ti/boot/sbl/binary//spi/bin directory.r¿ÆjÆjÆjÎjlÅjÐjõjÒ}rÀÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÝhjÞ]rÁÆjçX…The resulting output will be in [SDK Install Path]/pdk__/packages/ti/boot/sbl/binary//spi/bin directory.rÂÆ…�rÃÆ}rÄÆ(jÅj¿ÆjÆj½ÆubaubeubjÇ)�rÅÆ}rÆÆ(jÅUjKjÆjZÅjÎjlÅjÐjÑjÒ}rÇÆ(jÔ]rÈÆj$ÂajÕ]jÖ]j×]rÉÆUid116rÊÆajÚ]ujÜKKjÝhjÞ]rËÆ(jà)�rÌÆ}rÍÆ(jÅX,Making Loadable User Application image (app)rÎÆjÆjÅÆjÎjlÅjÐjäjÒ}rÏÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÝhjÞ]rÐÆjçX,Making Loadable User Application image (app)rÑÆ…�rÒÆ}rÓÆ(jÅjÎÆjÆjÌÆubaubjò)�rÔÆ}rÕÆ(jÅX�For converting the compiled .out files to a format loadable by TI's Secondary Boot Loader (SBL), you must follow these two steps:rÖÆjÆjÅÆjÎjlÅjÐjõjÒ}rׯ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÝhjÞ]rØÆjçX�For converting the compiled .out files to a format loadable by TI's Secondary Boot Loader (SBL), you must follow these two steps:rÙÆ…�rÚÆ}rÛÆ(jÅjÖÆjÆjÔÆubaubj )�rÜÆ}rÝÆ(jÅUjÆjÅÆjÎjlÅjÐj jÒ}rÞÆ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKPjÝhjÞ]r߯(j{)�ràÆ}ráÆ(jÅX***out2rprc.exe [.out file] [rprc output]**râÆjÆjÜÆjÎjlÅjÐjjÒ}rãÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]räÆjò)�råÆ}ræÆ(jÅjâÆjÆjàÆjÎjlÅjÐjõjÒ}rçÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÞ]rèÆjÚ)�réÆ}rêÆ(jÅjâÆjÒ}rëÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjåÆjÞ]rìÆjçX&out2rprc.exe [.out file] [rprc output]ríÆ…�rîÆ}rïÆ(jÅUjÆjéÆubajÐjâubaubaubj{)�rðÆ}rñÆ(jÅX>**MulticoreImageGen.exe LE 55 [output name] 0 [rprc output]** jÆjÜÆjÎjlÅjÐjjÒ}ròÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]róÆjò)�rôÆ}rõÆ(jÅX=**MulticoreImageGen.exe LE 55 [output name] 0 [rprc output]**röÆjÆjðÆjÎjlÅjÐjõjÒ}r÷Æ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKQjÞ]røÆjÚ)�rùÆ}rúÆ(jÅjöÆjÒ}rûÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjôÆjÞ]rüÆjçX9MulticoreImageGen.exe LE 55 [output name] 0 [rprc output]rýÆ…�rþÆ}rÿÆ(jÅUjÆjùÆubajÐjâubaubaubeubjò)�rÇ}rÇ(jÅXýOut2rprc.exe and MulticoreImageGen.exe are tools supplied by TI and can be located in the **/packages/ti/boot/sbl/tools** folder. "rprc output" can be any spare name of your choosing. "output name" can also be any name of your choosing.jÆjÅÆjÎjlÅjÐjõjÒ}rÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÝhjÞ]rÇ(jçXZOut2rprc.exe and MulticoreImageGen.exe are tools supplied by TI and can be located in the rÇ…�rÇ}rÇ(jÅXZOut2rprc.exe and MulticoreImageGen.exe are tools supplied by TI and can be located in the jÆjÇubjÚ)�rÇ}rÇ(jÅX0**/packages/ti/boot/sbl/tools**jÒ}r Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇjÞ]r ÇjçX,/packages/ti/boot/sbl/toolsr Ç…�r Ç}r Ç(jÅUjÆjÇubajÐjâubjçXs folder. "rprc output" can be any spare name of your choosing. "output name" can also be any name of your choosing.rÇ…�rÇ}rÇ(jÅXs folder. "rprc output" can be any spare name of your choosing. "output name" can also be any name of your choosing.jÆjÇubeubjò)�rÇ}rÇ(jÅX«The '0' used in step 2 refers to the Core ID to boot. By default, '0' is MPU (Cortex A15) core 0. You can input a different value to boot to other cores. Valid values are:rÇjÆjÅÆjÎjlÅjÐjõjÒ}rÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÝhjÞ]rÇjçX«The '0' used in step 2 refers to the Core ID to boot. By default, '0' is MPU (Cortex A15) core 0. You can input a different value to boot to other cores. Valid values are:rÇ…�rÇ}rÇ(jÅjÇjÆjÇubaubjy )�rÇ}rÇ(jÅUjÆjÅÆjÎjlÅjÐjÔ jÒ}rÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÇj~ )�rÇ}rÇ(jÅUjÒ}rÇ(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjÇjÞ]r Ç(jƒ )�r!Ç}r"Ç(jÅUjÒ}r#Ç(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjÇjÞ]jÐj‡ ubjƒ )�r$Ç}r%Ç(jÅUjÒ}r&Ç(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjÇjÞ]jÐj‡ ubjƒ )�r'Ç}r(Ç(jÅUjÒ}r)Ç(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjÇjÞ]jÐj‡ ubjƒ )�r*Ç}r+Ç(jÅUjÒ}r,Ç(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjÇjÞ]jÐj‡ ubjƒ )�r-Ç}r.Ç(jÅUjÒ}r/Ç(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjÇjÞ]jÐj‡ ubjƒ )�r0Ç}r1Ç(jÅUjÒ}r2Ç(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjÇjÞ]jÐj‡ ubj‹ )�r3Ç}r4Ç(jÅUjÒ}r5Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇjÞ]r6Çj� )�r7Ç}r8Ç(jÅUjÒ}r9Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3ÇjÞ]r:Ç(j• )�r;Ç}r<Ç(jÅUjÒ}r=Ç(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆj7ÇjÞ]r>Çjò)�r?Ç}r@Ç(jÅXK2HrAÇjÆj;ÇjÎjlÅjÐjõjÒ}rBÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKkjÞ]rCÇjçXK2HrDÇ…�rEÇ}rFÇ(jÅjAÇjÆj?ÇubaubajÐj¢ ubj• )�rGÇ}rHÇ(jÅUjÒ}rIÇ(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆj7ÇjÞ]rJÇjò)�rKÇ}rLÇ(jÅXK2ErMÇjÆjGÇjÎjlÅjÐjõjÒ}rNÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKkjÞ]rOÇjçXK2ErPÇ…�rQÇ}rRÇ(jÅjMÇjÆjKÇubaubajÐj¢ ubj• )�rSÇ}rTÇ(jÅUjÒ}rUÇ(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆj7ÇjÞ]rVÇjò)�rWÇ}rXÇ(jÅXK2LrYÇjÆjSÇjÎjlÅjÐjõjÒ}rZÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKkjÞ]r[ÇjçXK2Lr\Ç…�r]Ç}r^Ç(jÅjYÇjÆjWÇubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r_Ç}r`Ç(jÅUjÒ}raÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇjÞ]rbÇ(j� )�rcÇ}rdÇ(jÅUjÒ}reÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]rfÇ(j• )�rgÇ}rhÇ(jÅUjÒ}riÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÇjÞ]rjÇjò)�rkÇ}rlÇ(jÅX**Core**rmÇjÆjgÇjÎjlÅjÐjõjÒ}rnÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÞ]roÇjÚ)�rpÇ}rqÇ(jÅjmÇjÒ}rrÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjkÇjÞ]rsÇjçXCorertÇ…�ruÇ}rvÇ(jÅUjÆjpÇubajÐjâubaubajÐj¢ ubj• )�rwÇ}rxÇ(jÅUjÒ}ryÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÇjÞ]rzÇjò)�r{Ç}r|Ç(jÅX **Value**r}ÇjÆjwÇjÎjlÅjÐjõjÒ}r~Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÞ]rÇjÚ)�r€Ç}r�Ç(jÅj}ÇjÒ}r‚Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆj{ÇjÞ]rƒÇjçXValuer„Ç…�r…Ç}r†Ç(jÅUjÆj€ÇubajÐjâubaubajÐj¢ ubj• )�r‡Ç}rˆÇ(jÅUjÒ}r‰Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÇjÞ]rŠÇjò)�r‹Ç}rŒÇ(jÅX**Core**r�ÇjÆj‡ÇjÎjlÅjÐjõjÒ}rŽÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÞ]r�ÇjÚ)�r�Ç}r‘Ç(jÅj�ÇjÒ}r’Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹ÇjÞ]r“ÇjçXCorer”Ç…�r•Ç}r–Ç(jÅUjÆj�ÇubajÐjâubaubajÐj¢ ubj• )�r—Ç}r˜Ç(jÅUjÒ}r™Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÇjÞ]ršÇjò)�r›Ç}rœÇ(jÅX **Value**r�ÇjÆj—ÇjÎjlÅjÐjõjÒ}ržÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÞ]rŸÇjÚ)�r Ç}r¡Ç(jÅj�ÇjÒ}r¢Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›ÇjÞ]r£ÇjçXValuer¤Ç…�r¥Ç}r¦Ç(jÅUjÆj ÇubajÐjâubaubajÐj¢ ubj• )�r§Ç}r¨Ç(jÅUjÒ}r©Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÇjÞ]rªÇjò)�r«Ç}r¬Ç(jÅX**Core**r­ÇjÆj§ÇjÎjlÅjÐjõjÒ}r®Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÞ]r¯ÇjÚ)�r°Ç}r±Ç(jÅj­ÇjÒ}r²Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«ÇjÞ]r³ÇjçXCorer´Ç…�rµÇ}r¶Ç(jÅUjÆj°ÇubajÐjâubaubajÐj¢ ubj• )�r·Ç}r¸Ç(jÅUjÒ}r¹Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÇjÞ]rºÇjò)�r»Ç}r¼Ç(jÅX **Value**r½ÇjÆj·ÇjÎjlÅjÐjõjÒ}r¾Ç(jÔ]jÕ]jÖ]j×]jÚ]ujÜKmjÞ]r¿ÇjÚ)�rÀÇ}rÁÇ(jÅj½ÇjÒ}rÂÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÇjÞ]rÃÇjçXValuerÄÇ…�rÅÇ}rÆÇ(jÅUjÆjÀÇubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rÇÇ}rÈÇ(jÅUjÒ}rÉÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]rÊÇ(j• )�rËÇ}rÌÇ(jÅUjÒ}rÍÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÇjÞ]rÎÇjò)�rÏÇ}rÐÇ(jÅX MPU Core 0rÑÇjÆjËÇjÎjlÅjÐjõjÒ}rÒÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]rÓÇjçX MPU Core 0rÔÇ…�rÕÇ}rÖÇ(jÅjÑÇjÆjÏÇubaubajÐj¢ ubj• )�r×Ç}rØÇ(jÅUjÒ}rÙÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÇjÞ]rÚÇjò)�rÛÇ}rÜÇ(jÅX0jÆj×ÇjÎjlÅjÐjõjÒ}rÝÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]rÞÇjçX0…�rßÇ}ràÇ(jÅX0jÆjÛÇubaubajÐj¢ ubj• )�ráÇ}râÇ(jÅUjÒ}rãÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÇjÞ]räÇjò)�råÇ}ræÇ(jÅX MPU Core 0rçÇjÆjáÇjÎjlÅjÐjõjÒ}rèÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]réÇjçX MPU Core 0rêÇ…�rëÇ}rìÇ(jÅjçÇjÆjåÇubaubajÐj¢ ubj• )�ríÇ}rîÇ(jÅUjÒ}rïÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÇjÞ]rðÇjò)�rñÇ}ròÇ(jÅX0jÆjíÇjÎjlÅjÐjõjÒ}róÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]rôÇjçX0…�rõÇ}röÇ(jÅX0jÆjñÇubaubajÐj¢ ubj• )�r÷Ç}røÇ(jÅUjÒ}rùÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÇjÞ]rúÇjò)�rûÇ}rüÇ(jÅX MPU Core 0rýÇjÆj÷ÇjÎjlÅjÐjõjÒ}rþÇ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]rÿÇjçX MPU Core 0rÈ…�rÈ}rÈ(jÅjýÇjÆjûÇubaubajÐj¢ ubj• )�rÈ}rÈ(jÅUjÒ}rÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÇjÞ]rÈjò)�rÈ}rÈ(jÅX0jÆjÈjÎjlÅjÐjõjÒ}r È(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]r ÈjçX0…�r È}r È(jÅX0jÆjÈubaubajÐj¢ ubejÐj£ ubj� )�r È}rÈ(jÅUjÒ}rÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]rÈ(j• )�rÈ}rÈ(jÅUjÒ}rÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÈjÞ]rÈjò)�rÈ}rÈ(jÅX MPU Core 1rÈjÆjÈjÎjlÅjÐjõjÒ}rÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÞ]rÈjçX MPU Core 1rÈ…�rÈ}rÈ(jÅjÈjÆjÈubaubajÐj¢ ubj• )�rÈ}rÈ(jÅUjÒ}rÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÈjÞ]r Èjò)�r!È}r"È(jÅX1jÆjÈjÎjlÅjÐjõjÒ}r#È(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÞ]r$ÈjçX1…�r%È}r&È(jÅX1jÆj!ÈubaubajÐj¢ ubj• )�r'È}r(È(jÅUjÒ}r)È(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÈjÞ]r*Èjò)�r+È}r,È(jÅX MPU Core 1r-ÈjÆj'ÈjÎjlÅjÐjõjÒ}r.È(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÞ]r/ÈjçX MPU Core 1r0È…�r1È}r2È(jÅj-ÈjÆj+ÈubaubajÐj¢ ubj• )�r3È}r4È(jÅUjÒ}r5È(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÈjÞ]r6Èjò)�r7È}r8È(jÅX1jÆj3ÈjÎjlÅjÐjõjÒ}r9È(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÞ]r:ÈjçX1…�r;È}r<È(jÅX1jÆj7ÈubaubajÐj¢ ubj• )�r=È}r>È(jÅUjÒ}r?È(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÈjÞ]r@Èjò)�rAÈ}rBÈ(jÅX MPU Core 1rCÈjÆj=ÈjÎjlÅjÐjõjÒ}rDÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÞ]rEÈjçX MPU Core 1rFÈ…�rGÈ}rHÈ(jÅjCÈjÆjAÈubaubajÐj¢ ubj• )�rIÈ}rJÈ(jÅUjÒ}rKÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÈjÞ]rLÈjò)�rMÈ}rNÈ(jÅX1jÆjIÈjÎjlÅjÐjõjÒ}rOÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÞ]rPÈjçX1…�rQÈ}rRÈ(jÅX1jÆjMÈubaubajÐj¢ ubejÐj£ ubj� )�rSÈ}rTÈ(jÅUjÒ}rUÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]rVÈ(j• )�rWÈ}rXÈ(jÅUjÒ}rYÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSÈjÞ]rZÈjò)�r[È}r\È(jÅX MPU Core 2r]ÈjÆjWÈjÎjlÅjÐjõjÒ}r^È(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÞ]r_ÈjçX MPU Core 2r`È…�raÈ}rbÈ(jÅj]ÈjÆj[ÈubaubajÐj¢ ubj• )�rcÈ}rdÈ(jÅUjÒ}reÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSÈjÞ]rfÈjò)�rgÈ}rhÈ(jÅX2jÆjcÈjÎjlÅjÐjõjÒ}riÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÞ]rjÈjçX2…�rkÈ}rlÈ(jÅX2jÆjgÈubaubajÐj¢ ubj• )�rmÈ}rnÈ(jÅUjÒ}roÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSÈjÞ]rpÈjò)�rqÈ}rrÈ(jÅX MPU Core 2rsÈjÆjmÈjÎjlÅjÐjõjÒ}rtÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÞ]ruÈjçX MPU Core 2rvÈ…�rwÈ}rxÈ(jÅjsÈjÆjqÈubaubajÐj¢ ubj• )�ryÈ}rzÈ(jÅUjÒ}r{È(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSÈjÞ]r|Èjò)�r}È}r~È(jÅX2jÆjyÈjÎjlÅjÐjõjÒ}rÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÞ]r€ÈjçX2…�r�È}r‚È(jÅX2jÆj}ÈubaubajÐj¢ ubj• )�rƒÈ}r„È(jÅUjÒ}r…È(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSÈjÞ]r†Èjò)�r‡È}rˆÈ(jÅXMPU SMPr‰ÈjÆjƒÈjÎjlÅjÐjõjÒ}rŠÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÞ]r‹ÈjçXMPU SMPrŒÈ…�r�È}rŽÈ(jÅj‰ÈjÆj‡ÈubaubajÐj¢ ubj• )�r�È}r�È(jÅUjÒ}r‘È(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSÈjÞ]r’Èjò)�r“È}r”È(jÅX4jÆj�ÈjÎjlÅjÐjõjÒ}r•È(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÞ]r–ÈjçX4…�r—È}r˜È(jÅX4jÆj“ÈubaubajÐj¢ ubejÐj£ ubj� )�r™È}ršÈ(jÅUjÒ}r›È(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]rœÈ(j• )�r�È}ržÈ(jÅUjÒ}rŸÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™ÈjÞ]r Èjò)�r¡È}r¢È(jÅX MPU Core 3r£ÈjÆj�ÈjÎjlÅjÐjõjÒ}r¤È(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÞ]r¥ÈjçX MPU Core 3r¦È…�r§È}r¨È(jÅj£ÈjÆj¡ÈubaubajÐj¢ ubj• )�r©È}rªÈ(jÅUjÒ}r«È(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™ÈjÞ]r¬Èjò)�r­È}r®È(jÅX3jÆj©ÈjÎjlÅjÐjõjÒ}r¯È(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÞ]r°ÈjçX3…�r±È}r²È(jÅX3jÆj­ÈubaubajÐj¢ ubj• )�r³È}r´È(jÅUjÒ}rµÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™ÈjÞ]r¶Èjò)�r·È}r¸È(jÅX MPU Core 3r¹ÈjÆj³ÈjÎjlÅjÐjõjÒ}rºÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÞ]r»ÈjçX MPU Core 3r¼È…�r½È}r¾È(jÅj¹ÈjÆj·ÈubaubajÐj¢ ubj• )�r¿È}rÀÈ(jÅUjÒ}rÁÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™ÈjÞ]rÂÈjò)�rÃÈ}rÄÈ(jÅX3jÆj¿ÈjÎjlÅjÐjõjÒ}rÅÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÞ]rÆÈjçX3…�rÇÈ}rÈÈ(jÅX3jÆjÃÈubaubajÐj¢ ubj• )�rÉÈ}rÊÈ(jÅUjÒ}rËÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™ÈjÞ]rÌÈjò)�rÍÈ}rÎÈ(jÅX DSP Core 0rÏÈjÆjÉÈjÎjlÅjÐjõjÒ}rÐÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÞ]rÑÈjçX DSP Core 0rÒÈ…�rÓÈ}rÔÈ(jÅjÏÈjÆjÍÈubaubajÐj¢ ubj• )�rÕÈ}rÖÈ(jÅUjÒ}r×È(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™ÈjÞ]rØÈjò)�rÙÈ}rÚÈ(jÅX5jÆjÕÈjÎjlÅjÐjõjÒ}rÛÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÞ]rÜÈjçX5…�rÝÈ}rÞÈ(jÅX5jÆjÙÈubaubajÐj¢ ubejÐj£ ubj� )�rßÈ}ràÈ(jÅUjÒ}ráÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]râÈ(j• )�rãÈ}räÈ(jÅUjÒ}råÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjßÈjÞ]ræÈjò)�rçÈ}rèÈ(jÅXMPU SMPréÈjÆjãÈjÎjlÅjÐjõjÒ}rêÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]rëÈjçXMPU SMPrìÈ…�ríÈ}rîÈ(jÅjéÈjÆjçÈubaubajÐj¢ ubj• )�rïÈ}rðÈ(jÅUjÒ}rñÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjßÈjÞ]ròÈjò)�róÈ}rôÈ(jÅX4jÆjïÈjÎjlÅjÐjõjÒ}rõÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]röÈjçX4…�r÷È}røÈ(jÅX4jÆjóÈubaubajÐj¢ ubj• )�rùÈ}rúÈ(jÅUjÒ}rûÈ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjßÈjÞ]rüÈjò)�rýÈ}rþÈ(jÅXMPU SMPrÿÈjÆjùÈjÎjlÅjÐjõjÒ}rÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]rÉjçXMPU SMPrÉ…�rÉ}rÉ(jÅjÿÈjÆjýÈubaubajÐj¢ ubj• )�rÉ}rÉ(jÅUjÒ}rÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjßÈjÞ]rÉjò)�r É}r É(jÅX4jÆjÉjÎjlÅjÐjõjÒ}r É(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]r ÉjçX4…�r É}rÉ(jÅX4jÆj ÉubaubajÐj¢ ubj• )�rÉ}rÉ(jÅUjÒ}rÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjßÈjÞ]rÉjò)�rÉ}rÉ(jÅX DSP Core 1rÉjÆjÉjÎjlÅjÐjõjÒ}rÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]rÉjçX DSP Core 1rÉ…�rÉ}rÉ(jÅjÉjÆjÉubaubajÐj¢ ubj• )�rÉ}rÉ(jÅUjÒ}rÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjßÈjÞ]rÉjò)�rÉ}r É(jÅX6jÆjÉjÎjlÅjÐjõjÒ}r!É(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]r"ÉjçX6…�r#É}r$É(jÅX6jÆjÉubaubajÐj¢ ubejÐj£ ubj� )�r%É}r&É(jÅUjÒ}r'É(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]r(É(j• )�r)É}r*É(jÅUjÒ}r+É(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ÉjÞ]r,Éjò)�r-É}r.É(jÅX DSP Core 0r/ÉjÆj)ÉjÎjlÅjÐjõjÒ}r0É(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÞ]r1ÉjçX DSP Core 0r2É…�r3É}r4É(jÅj/ÉjÆj-ÉubaubajÐj¢ ubj• )�r5É}r6É(jÅUjÒ}r7É(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ÉjÞ]r8Éjò)�r9É}r:É(jÅX5jÆj5ÉjÎjlÅjÐjõjÒ}r;É(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÞ]r<ÉjçX5…�r=É}r>É(jÅX5jÆj9ÉubaubajÐj¢ ubj• )�r?É}r@É(jÅUjÒ}rAÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ÉjÞ]rBÉjò)�rCÉ}rDÉ(jÅX DSP Core 0rEÉjÆj?ÉjÎjlÅjÐjõjÒ}rFÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÞ]rGÉjçX DSP Core 0rHÉ…�rIÉ}rJÉ(jÅjEÉjÆjCÉubaubajÐj¢ ubj• )�rKÉ}rLÉ(jÅUjÒ}rMÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ÉjÞ]rNÉjò)�rOÉ}rPÉ(jÅX5jÆjKÉjÎjlÅjÐjõjÒ}rQÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÞ]rRÉjçX5…�rSÉ}rTÉ(jÅX5jÆjOÉubaubajÐj¢ ubj• )�rUÉ}rVÉ(jÅUjÒ}rWÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ÉjÞ]rXÉjò)�rYÉ}rZÉ(jÅX DSP Core 2r[ÉjÆjUÉjÎjlÅjÐjõjÒ}r\É(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÞ]r]ÉjçX DSP Core 2r^É…�r_É}r`É(jÅj[ÉjÆjYÉubaubajÐj¢ ubj• )�raÉ}rbÉ(jÅUjÒ}rcÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ÉjÞ]rdÉjò)�reÉ}rfÉ(jÅX7jÆjaÉjÎjlÅjÐjõjÒ}rgÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÞ]rhÉjçX7…�riÉ}rjÉ(jÅX7jÆjeÉubaubajÐj¢ ubejÐj£ ubj� )�rkÉ}rlÉ(jÅUjÒ}rmÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]rnÉ(j• )�roÉ}rpÉ(jÅUjÒ}rqÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjkÉjÞ]rrÉjò)�rsÉ}rtÉ(jÅX DSP Core 1ruÉjÆjoÉjÎjlÅjÐjõjÒ}rvÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÞ]rwÉjçX DSP Core 1rxÉ…�ryÉ}rzÉ(jÅjuÉjÆjsÉubaubajÐj¢ ubj• )�r{É}r|É(jÅUjÒ}r}É(jÔ]jÕ]jÖ]j×]jÚ]ujÆjkÉjÞ]r~Éjò)�rÉ}r€É(jÅX6jÆj{ÉjÎjlÅjÐjõjÒ}r�É(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÞ]r‚ÉjçX6…�rƒÉ}r„É(jÅX6jÆjÉubaubajÐj¢ ubj• )�r…É}r†É(jÅUjÒ}r‡É(jÔ]jÕ]jÖ]j×]jÚ]ujÆjkÉjÞ]jÐj¢ ubj• )�rˆÉ}r‰É(jÅUjÒ}rŠÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjkÉjÞ]jÐj¢ ubj• )�r‹É}rŒÉ(jÅUjÒ}r�É(jÔ]jÕ]jÖ]j×]jÚ]ujÆjkÉjÞ]rŽÉjò)�r�É}r�É(jÅX DSP Core 3r‘ÉjÆj‹ÉjÎjlÅjÐjõjÒ}r’É(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÞ]r“ÉjçX DSP Core 3r”É…�r•É}r–É(jÅj‘ÉjÆj�ÉubaubajÐj¢ ubj• )�r—É}r˜É(jÅUjÒ}r™É(jÔ]jÕ]jÖ]j×]jÚ]ujÆjkÉjÞ]ršÉjò)�r›É}rœÉ(jÅX8jÆj—ÉjÎjlÅjÐjõjÒ}r�É(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÞ]ržÉjçX8…�rŸÉ}r É(jÅX8jÆj›ÉubaubajÐj¢ ubejÐj£ ubj� )�r¡É}r¢É(jÅUjÒ}r£É(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]r¤É(j• )�r¥É}r¦É(jÅUjÒ}r§É(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡ÉjÞ]r¨Éjò)�r©É}rªÉ(jÅX DSP Core 2r«ÉjÆj¥ÉjÎjlÅjÐjõjÒ}r¬É(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]r­ÉjçX DSP Core 2r®É…�r¯É}r°É(jÅj«ÉjÆj©ÉubaubajÐj¢ ubj• )�r±É}r²É(jÅUjÒ}r³É(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡ÉjÞ]r´Éjò)�rµÉ}r¶É(jÅX7jÆj±ÉjÎjlÅjÐjõjÒ}r·É(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]r¸ÉjçX7…�r¹É}rºÉ(jÅX7jÆjµÉubaubajÐj¢ ubj• )�r»É}r¼É(jÅUjÒ}r½É(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡ÉjÞ]jÐj¢ ubj• )�r¾É}r¿É(jÅUjÒ}rÀÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡ÉjÞ]jÐj¢ ubj• )�rÁÉ}rÂÉ(jÅUjÒ}rÃÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡ÉjÞ]jÐj¢ ubj• )�rÄÉ}rÅÉ(jÅUjÒ}rÆÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡ÉjÞ]jÐj¢ ubejÐj£ ubj� )�rÇÉ}rÈÉ(jÅUjÒ}rÉÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]rÊÉ(j• )�rËÉ}rÌÉ(jÅUjÒ}rÍÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÉjÞ]rÎÉjò)�rÏÉ}rÐÉ(jÅX DSP Core 3rÑÉjÆjËÉjÎjlÅjÐjõjÒ}rÒÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÓÉjçX DSP Core 3rÔÉ…�rÕÉ}rÖÉ(jÅjÑÉjÆjÏÉubaubajÐj¢ ubj• )�r×É}rØÉ(jÅUjÒ}rÙÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÉjÞ]rÚÉjò)�rÛÉ}rÜÉ(jÅX8jÆj×ÉjÎjlÅjÐjõjÒ}rÝÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÞÉjçX8…�rßÉ}ràÉ(jÅX8jÆjÛÉubaubajÐj¢ ubj• )�ráÉ}râÉ(jÅUjÒ}rãÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÉjÞ]jÐj¢ ubj• )�räÉ}råÉ(jÅUjÒ}ræÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÉjÞ]jÐj¢ ubj• )�rçÉ}rèÉ(jÅUjÒ}réÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÉjÞ]jÐj¢ ubj• )�rêÉ}rëÉ(jÅUjÒ}rìÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÇÉjÞ]jÐj¢ ubejÐj£ ubj� )�ríÉ}rîÉ(jÅUjÒ}rïÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]rðÉ(j• )�rñÉ}ròÉ(jÅUjÒ}róÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíÉjÞ]rôÉjò)�rõÉ}röÉ(jÅX DSP Core 4r÷ÉjÆjñÉjÎjlÅjÐjõjÒ}røÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rùÉjçX DSP Core 4rúÉ…�rûÉ}rüÉ(jÅj÷ÉjÆjõÉubaubajÐj¢ ubj• )�rýÉ}rþÉ(jÅUjÒ}rÿÉ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíÉjÞ]rÊjò)�rÊ}rÊ(jÅX9jÆjýÉjÎjlÅjÐjõjÒ}rÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rÊjçX9…�rÊ}rÊ(jÅX9jÆjÊubaubajÐj¢ ubj• )�rÊ}rÊ(jÅUjÒ}r Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíÉjÞ]jÐj¢ ubj• )�r Ê}r Ê(jÅUjÒ}r Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíÉjÞ]jÐj¢ ubj• )�r Ê}rÊ(jÅUjÒ}rÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíÉjÞ]jÐj¢ ubj• )�rÊ}rÊ(jÅUjÒ}rÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíÉjÞ]jÐj¢ ubejÐj£ ubj� )�rÊ}rÊ(jÅUjÒ}rÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]rÊ(j• )�rÊ}rÊ(jÅUjÒ}rÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊjÞ]rÊjò)�rÊ}rÊ(jÅX DSP Core 5rÊjÆjÊjÎjlÅjÐjõjÒ}rÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÞ]rÊjçX DSP Core 5r Ê…�r!Ê}r"Ê(jÅjÊjÆjÊubaubajÐj¢ ubj• )�r#Ê}r$Ê(jÅUjÒ}r%Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊjÞ]r&Êjò)�r'Ê}r(Ê(jÅX10r)ÊjÆj#ÊjÎjlÅjÐjõjÒ}r*Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÞ]r+ÊjçX10r,Ê…�r-Ê}r.Ê(jÅj)ÊjÆj'ÊubaubajÐj¢ ubj• )�r/Ê}r0Ê(jÅUjÒ}r1Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊjÞ]jÐj¢ ubj• )�r2Ê}r3Ê(jÅUjÒ}r4Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊjÞ]jÐj¢ ubj• )�r5Ê}r6Ê(jÅUjÒ}r7Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊjÞ]jÐj¢ ubj• )�r8Ê}r9Ê(jÅUjÒ}r:Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊjÞ]jÐj¢ ubejÐj£ ubj� )�r;Ê}r<Ê(jÅUjÒ}r=Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]r>Ê(j• )�r?Ê}r@Ê(jÅUjÒ}rAÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;ÊjÞ]rBÊjò)�rCÊ}rDÊ(jÅX DSP Core 6rEÊjÆj?ÊjÎjlÅjÐjõjÒ}rFÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÞ]rGÊjçX DSP Core 6rHÊ…�rIÊ}rJÊ(jÅjEÊjÆjCÊubaubajÐj¢ ubj• )�rKÊ}rLÊ(jÅUjÒ}rMÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;ÊjÞ]rNÊjò)�rOÊ}rPÊ(jÅX11rQÊjÆjKÊjÎjlÅjÐjõjÒ}rRÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÞ]rSÊjçX11rTÊ…�rUÊ}rVÊ(jÅjQÊjÆjOÊubaubajÐj¢ ubj• )�rWÊ}rXÊ(jÅUjÒ}rYÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;ÊjÞ]jÐj¢ ubj• )�rZÊ}r[Ê(jÅUjÒ}r\Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;ÊjÞ]jÐj¢ ubj• )�r]Ê}r^Ê(jÅUjÒ}r_Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;ÊjÞ]jÐj¢ ubj• )�r`Ê}raÊ(jÅUjÒ}rbÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;ÊjÞ]jÐj¢ ubejÐj£ ubj� )�rcÊ}rdÊ(jÅUjÒ}reÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj_ÇjÞ]rfÊ(j• )�rgÊ}rhÊ(jÅUjÒ}riÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÊjÞ]rjÊjò)�rkÊ}rlÊ(jÅX DSP Core 7rmÊjÆjgÊjÎjlÅjÐjõjÒ}rnÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÞ]roÊjçX DSP Core 7rpÊ…�rqÊ}rrÊ(jÅjmÊjÆjkÊubaubajÐj¢ ubj• )�rsÊ}rtÊ(jÅUjÒ}ruÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÊjÞ]rvÊjò)�rwÊ}rxÊ(jÅX12ryÊjÆjsÊjÎjlÅjÐjõjÒ}rzÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÞ]r{ÊjçX12r|Ê…�r}Ê}r~Ê(jÅjyÊjÆjwÊubaubajÐj¢ ubj• )�rÊ}r€Ê(jÅUjÒ}r�Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÊjÞ]jÐj¢ ubj• )�r‚Ê}rƒÊ(jÅUjÒ}r„Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÊjÞ]jÐj¢ ubj• )�r…Ê}r†Ê(jÅUjÒ}r‡Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÊjÞ]jÐj¢ ubj• )�rˆÊ}r‰Ê(jÅUjÒ}rŠÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÊjÞ]jÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r‹Ê}rŒÊ(jÅXÁIf MPU SMP is chosen, the same boot image and entry will be used for all MPU cores. SBL can also parse multiple boot images that are concatenated together. Simply use MulticoreImageGen as such:r�ÊjÆjÅÆjÎjlÅjÐjõjÒ}rŽÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÝhjÞ]r�ÊjçXÁIf MPU SMP is chosen, the same boot image and entry will be used for all MPU cores. SBL can also parse multiple boot images that are concatenated together. Simply use MulticoreImageGen as such:r�Ê…�r‘Ê}r’Ê(jÅj�ÊjÆj‹Êubaubjò)�r“Ê}r”Ê(jÅX…**MulticoreImageGen.exe LE 55 [output name] [Core ID a] [rprc output a] [Core ID b] [rprc output b] [Core ID c] [rprc output c] ...**r•ÊjÆjÅÆjÎjlÅjÐjõjÒ}r–Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÝhjÞ]r—ÊjÚ)�r˜Ê}r™Ê(jÅj•ÊjÒ}ršÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ÊjÞ]r›ÊjçX�MulticoreImageGen.exe LE 55 [output name] [Core ID a] [rprc output a] [Core ID b] [rprc output b] [Core ID c] [rprc output c] ...rœÊ…�r�Ê}ržÊ(jÅUjÆj˜ÊubajÐjâubaubeubjÇ)�rŸÊ}r Ê(jÅUjKjÆjZÅjÎjlÅjÐjÑjÒ}r¡Ê(jÔ]r¢ÊjǶajÕ]jÖ]j×]r£ÊUid117r¤ÊajÚ]ujÜK’jÝhjÞ]r¥Ê(jà)�r¦Ê}r§Ê(jÅX Flash Writersr¨ÊjÆjŸÊjÎjlÅjÐjäjÒ}r©Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK’jÝhjÞ]rªÊjçX Flash Writersr«Ê…�r¬Ê}r­Ê(jÅj¨ÊjÆj¦ÊubaubjÇ)�r®Ê}r¯Ê(jÅUjÆjŸÊjÎjlÅjÐjÑjÒ}r°Ê(jÔ]jÕ]jÖ]j×]r±ÊU spi-writerr²ÊajÚ]r³ÊhbaujÜK•jÝhjÞ]r´Ê(jà)�rµÊ}r¶Ê(jÅX SPI Writerr·ÊjÆj®ÊjÎjlÅjÐjäjÒ}r¸Ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK•jÝhjÞ]r¹ÊjçX SPI WriterrºÊ…�r»Ê}r¼Ê(jÅj·ÊjÆjµÊubaubjò)�r½Ê}r¾Ê(jÅX®The SPI flash writer, spi_flash_writer.out, is a part of the SBL package and allows users to flash multiple images at different offsets into the board's SPI NOR flash memory.r¿ÊjÆj®ÊjÎjlÅjÐjõjÒ}rÀÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÝhjÞ]rÁÊjçX®The SPI flash writer, spi_flash_writer.out, is a part of the SBL package and allows users to flash multiple images at different offsets into the board's SPI NOR flash memory.rÂÊ…�rÃÊ}rÄÊ(jÅj¿ÊjÆj½ÊubaubjÇ)�rÅÊ}rÆÊ(jÅUjKjÆj®ÊjÎjlÅjÐjÑjÒ}rÇÊ(jÔ]rÈÊX compilationrÉÊajÕ]jÖ]j×]rÊÊUid118rËÊajÚ]ujÜKœjÝhjÞ]rÌÊ(jà)�rÍÊ}rÎÊ(jÅX CompilationrÏÊjÆjÅÊjÎjlÅjÐjäjÒ}rÐÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÝhjÞ]rÑÊjçX CompilationrÒÊ…�rÓÊ}rÔÊ(jÅjÏÊjÆjÍÊubaubj)�rÕÊ}rÖÊ(jÅXtcd [SDK Install Path]/pdk__/packages/ti/boot/sbl/ make spi_flashwriter BOARD= SOC=jÆjÅÊjÎjlÅjÐjjÒ}r×Ê(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM.jÝhjÞ]rØÊjçXtcd [SDK Install Path]/pdk__/packages/ti/boot/sbl/ make spi_flashwriter BOARD= SOC=rÙÊ…�rÚÊ}rÛÊ(jÅUjÆjÕÊubaubjò)�rÜÊ}rÝÊ(jÅXThe binary output will be at:rÞÊjÆjÅÊjÎjlÅjÐjõjÒ}rßÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK£jÝhjÞ]ràÊjçXThe binary output will be at:ráÊ…�râÊ}rãÊ(jÅjÞÊjÆjÜÊubaubj)�räÊ}råÊ(jÅXe[SDK Install Path]/pdk__/packages/ti/boot/sbl/tools/flashWriter/spi/bin/jÆjÅÊjÎjlÅjÐjjÒ}ræÊ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM.jÝhjÞ]rçÊjçXe[SDK Install Path]/pdk__/packages/ti/boot/sbl/tools/flashWriter/spi/bin/rèÊ…�réÊ}rêÊ(jÅUjÆjäÊubaubeubjÇ)�rëÊ}rìÊ(jÅUjKjÆj®ÊjÎjlÅjÐjÑjÒ}ríÊ(jÔ]rîÊXusagerïÊajÕ]jÖ]j×]rðÊUid119rñÊajÚ]ujÜK«jÝhjÞ]ròÊ(jà)�róÊ}rôÊ(jÅXUsagerõÊjÆjëÊjÎjlÅjÐjäjÒ}röÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK«jÝhjÞ]r÷ÊjçXUsagerøÊ…�rùÊ}rúÊ(jÅjõÊjÆjóÊubaubj )�rûÊ}rüÊ(jÅUjÆjëÊjÎjlÅjÐj jÒ}rýÊ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK­jÝhjÞ]rþÊ(j{)�rÿÊ}rË(jÅX’Copy the binaries that you want to flash to: [SDK Install Path]/pdk__/packages/ti/boot/sbl/tools/flashWriter/spi/bin/jÆjûÊjÎjlÅjÐjjÒ}rË(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rËjò)�rË}rË(jÅX’Copy the binaries that you want to flash to: [SDK Install Path]/pdk__/packages/ti/boot/sbl/tools/flashWriter/spi/bin/rËjÆjÿÊjÎjlÅjÐjõjÒ}rË(jÔ]jÕ]jÖ]j×]jÚ]ujÜK­jÞ]rËjçX’Copy the binaries that you want to flash to: [SDK Install Path]/pdk__/packages/ti/boot/sbl/tools/flashWriter/spi/bin/rË…�r Ë}r Ë(jÅjËjÆjËubaubaubj{)�r Ë}r Ë(jÅX¥In that same directory, there is a file named **config**. Edit that file such that each line has 2 parameters: [name of binary to flash] [SPI NOR offset to flash to]jÆjûÊjÎjlÅjÐjjÒ}r Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rËjò)�rË}rË(jÅX¥In that same directory, there is a file named **config**. Edit that file such that each line has 2 parameters: [name of binary to flash] [SPI NOR offset to flash to]jÆj ËjÎjlÅjÐjõjÒ}rË(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¯jÞ]rË(jçX.In that same directory, there is a file named rË…�rË}rË(jÅX.In that same directory, there is a file named jÆjËubjÚ)�rË}rË(jÅX **config**jÒ}rË(jÔ]jÕ]jÖ]j×]jÚ]ujÆjËjÞ]rËjçXconfigrË…�rË}rË(jÅUjÆjËubajÐjâubjçXm. Edit that file such that each line has 2 parameters: [name of binary to flash] [SPI NOR offset to flash to]rË…�rË}rË(jÅXm. Edit that file such that each line has 2 parameters: [name of binary to flash] [SPI NOR offset to flash to]jÆjËubeubaubj{)�r Ë}r!Ë(jÅX`Set your EVM to NO BOOT. Power on, launch target configuration in CCS, and connect to DSP Core 0jÆjûÊjÎjlÅjÐjjÒ}r"Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r#Ëjò)�r$Ë}r%Ë(jÅX`Set your EVM to NO BOOT. Power on, launch target configuration in CCS, and connect to DSP Core 0r&ËjÆj ËjÎjlÅjÐjõjÒ}r'Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK²jÞ]r(ËjçX`Set your EVM to NO BOOT. Power on, launch target configuration in CCS, and connect to DSP Core 0r)Ë…�r*Ë}r+Ë(jÅj&ËjÆj$Ëubaubaubj{)�r,Ë}r-Ë(jÅX‡Load and run [SDK Install Path]/pdk__/packages/ti/boot/sbl/tools/flashWriter/spi/bin//spi_flash_writer.outjÆjûÊjÎjlÅjÐjjÒ}r.Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r/Ëjò)�r0Ë}r1Ë(jÅX‡Load and run [SDK Install Path]/pdk__/packages/ti/boot/sbl/tools/flashWriter/spi/bin//spi_flash_writer.outr2ËjÆj,ËjÎjlÅjÐjõjÒ}r3Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÞ]r4ËjçX‡Load and run [SDK Install Path]/pdk__/packages/ti/boot/sbl/tools/flashWriter/spi/bin//spi_flash_writer.outr5Ë…�r6Ë}r7Ë(jÅj2ËjÆj0Ëubaubaubj{)�r8Ë}r9Ë(jÅX:You should see the flash progress output on UART terminal jÆjûÊjÎjlÅjÐjjÒ}r:Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r;Ëjò)�r<Ë}r=Ë(jÅX9You should see the flash progress output on UART terminalr>ËjÆj8ËjÎjlÅjÐjõjÒ}r?Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¶jÞ]r@ËjçX9You should see the flash progress output on UART terminalrAË…�rBË}rCË(jÅj>ËjÆj<Ëubaubaubeubjc)�rDË}rEË(jÅUjÆjëÊjÎjlÅjÐjfjÒ}rFË(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¸jÝhjÞ]rGËji)�rHË}rIË(jÅUjlKjÆjDËjÎjlÅjÐjÜjÒ}rJË(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubeubjÇ)�rKË}rLË(jÅUjÆjZÅjÎjlÅjÐjÑjÒ}rMË(jÔ]jÕ]jÖ]j×]rNËU boot-examplerOËajÚ]rPËjtaujÜK»jÝhjÞ]rQË(jà)�rRË}rSË(jÅX Boot ExamplerTËjÆjKËjÎjlÅjÐjäjÒ}rUË(jÔ]jÕ]jÖ]j×]jÚ]ujÜK»jÝhjÞ]rVËjçX Boot ExamplerWË…�rXË}rYË(jÅjTËjÆjRËubaubjò)�rZË}r[Ë(jÅX^Below is an example output of evmK2H booting after having images flashed in by program_evm.js:r\ËjÆjKËjÎjlÅjÐjõjÒ}r]Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK½jÝhjÞ]r^ËjçX^Below is an example output of evmK2H booting after having images flashed in by program_evm.js:r_Ë…�r`Ë}raË(jÅj\ËjÆjZËubaubj)�rbË}rcË(jÅXÕ**** PDK SBL **** Boot succesful! Begin parsing user application Jumping to user application... TMDXEVM6636K2H POST Version 01.00.00.08 ------------------------------------------ SOC Information BMC Version: 0000 EFUSE MAC ID is: B4 99 4C B6 E2 5B SA is enabled on this board. PLL Reset Type Status Register: 0x00000001 Platform init return code: 0x00000000 Power On Self Test POST running in progress ... POST I2C EEPROM read test started! POST I2C EEPROM read test passed! POST SPI NOR read test started! POST SPI NOR read test passed! POST EMIF16 NAND read test started! POST EMIF16 NAND read test passed! POST external memory test started! POST external memory test passed! POST done successfully! POST result: PASSjÆjKËjÎjlÅjÐjjÒ}rdË(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM5.jÝhjÞ]reËjçXÕ**** PDK SBL **** Boot succesful! Begin parsing user application Jumping to user application... TMDXEVM6636K2H POST Version 01.00.00.08 ------------------------------------------ SOC Information BMC Version: 0000 EFUSE MAC ID is: B4 99 4C B6 E2 5B SA is enabled on this board. PLL Reset Type Status Register: 0x00000001 Platform init return code: 0x00000000 Power On Self Test POST running in progress ... POST I2C EEPROM read test started! POST I2C EEPROM read test passed! POST SPI NOR read test started! POST SPI NOR read test passed! POST EMIF16 NAND read test started! POST EMIF16 NAND read test passed! POST external memory test started! POST external memory test passed! POST done successfully! POST result: PASSrfË…�rgË}rhË(jÅUjÆjbËubaubeubeubjÇ)�riË}rjË(jÅUjÆj;ƒjÎj¥‚jÐjÑjÒ}rkË(jÔ]jÕ]jÖ]j×]rlËUomapl137-omapl138-c6748rmËajÚ]rnËhµaujÜKfjÝhjÞ]roË(jà)�rpË}rqË(jÅXOMAPL137/OMAPL138/C6748rrËjÆjiËjÎj¥‚jÐjäjÒ}rsË(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÝhjÞ]rtËjçXOMAPL137/OMAPL138/C6748ruË…�rvË}rwË(jÅjrËjÆjpËubaubj7)�rxË}ryË(jÅXHhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_OMAPL13xjÆjiËjÎj:XWsource/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_OMAPL13x.rst.incrzË…�r{Ë}r|ËbjÐj>jÒ}r}Ë(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r~ËjçXHhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_BOOT_OMAPL13xrË…�r€Ë}r�Ë(jÅUjÆjxËubaubjÇ)�r‚Ë}rƒË(jÅUjKjÆjiËjÎj{ËjÐjÑjÒ}r„Ë(jÔ]r…ËXoverviewr†ËajÕ]jÖ]j×]r‡ËUid120rˆËajÚ]ujÜKjÝhjÞ]r‰Ë(jà)�rŠË}r‹Ë(jÅXOverviewrŒËjÆj‚ËjÎj{ËjÐjäjÒ}r�Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rŽËjçXOverviewr�Ë…�r�Ë}r‘Ë(jÅjŒËjÆjŠËubaubjò)�r’Ë}r“Ë(jÅXÉThe Secondary Bootloader (SBL) for OMAPL137/OMAPL138/C6748 does basic hardware initialization for the board to load and run applications. Processor SDK boot support for each of these SoC is shown belowr”ËjÆj‚ËjÎj{ËjÐjõjÒ}r•Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r–ËjçXÉThe Secondary Bootloader (SBL) for OMAPL137/OMAPL138/C6748 does basic hardware initialization for the board to load and run applications. Processor SDK boot support for each of these SoC is shown belowr—Ë…�r˜Ë}r™Ë(jÅj”ËjÆj’Ëubaubjy )�ršË}r›Ë(jÅUjÆj‚ËjÎj{ËjÐjÔ jÒ}rœË(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�Ëj~ )�ržË}rŸË(jÅUjÒ}r Ë(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjšËjÞ]r¡Ë(jƒ )�r¢Ë}r£Ë(jÅUjÒ}r¤Ë(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjžËjÞ]jÐj‡ ubjƒ )�r¥Ë}r¦Ë(jÅUjÒ}r§Ë(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjžËjÞ]jÐj‡ ubjƒ )�r¨Ë}r©Ë(jÅUjÒ}rªË(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjžËjÞ]jÐj‡ ubjƒ )�r«Ë}r¬Ë(jÅUjÒ}r­Ë(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjžËjÞ]jÐj‡ ubjƒ )�r®Ë}r¯Ë(jÅUjÒ}r°Ë(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjžËjÞ]jÐj‡ ubj‹ )�r±Ë}r²Ë(jÅUjÒ}r³Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjžËjÞ]r´Ëj� )�rµË}r¶Ë(jÅUjÒ}r·Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±ËjÞ]r¸Ë(j• )�r¹Ë}rºË(jÅUjÒ}r»Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµËjÞ]r¼Ëjò)�r½Ë}r¾Ë(jÅXDevicer¿ËjÆj¹ËjÎj{ËjÐjõjÒ}rÀË(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rÁËjçXDevicerÂË…�rÃË}rÄË(jÅj¿ËjÆj½ËubaubajÐj¢ ubj• )�rÅË}rÆË(jÅUjÒ}rÇË(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµËjÞ]rÈËjò)�rÉË}rÊË(jÅXCoresrËËjÆjÅËjÎj{ËjÐjõjÒ}rÌË(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rÍËjçXCoresrÎË…�rÏË}rÐË(jÅjËËjÆjÉËubaubajÐj¢ ubj• )�rÑË}rÒË(jÅUjÒ}rÓË(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµËjÞ]rÔËjò)�rÕË}rÖË(jÅX Boot Masterr×ËjÆjÑËjÎj{ËjÐjõjÒ}rØË(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rÙËjçX Boot MasterrÚË…�rÛË}rÜË(jÅj×ËjÆjÕËubaubajÐj¢ ubj• )�rÝË}rÞË(jÅUjÒ}rßË(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµËjÞ]ràËjò)�ráË}râË(jÅXSupported Boot modes in SBLrãËjÆjÝËjÎj{ËjÐjõjÒ}räË(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]råËjçXSupported Boot modes in SBLræË…�rçË}rèË(jÅjãËjÆjáËubaubajÐj¢ ubj• )�réË}rêË(jÅUjÒ}rëË(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµËjÞ]rìËjò)�ríË}rîË(jÅX HW PlatformsrïËjÆjéËjÎj{ËjÐjõjÒ}rðË(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rñËjçX HW PlatformsròË…�róË}rôË(jÅjïËjÆjíËubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rõË}röË(jÅUjÒ}r÷Ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjžËjÞ]røË(j� )�rùË}rúË(jÅUjÒ}rûË(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõËjÞ]rüË(j• )�rýË}rþË(jÅUjÒ}rÿË(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùËjÞ]rÌjò)�rÌ}rÌ(jÅXOMAPL137rÌjÆjýËjÎj{ËjÐjõjÒ}rÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÌjçXOMAPL137rÌ…�rÌ}rÌ(jÅjÌjÆjÌubaubajÐj¢ ubj• )�r Ì}r Ì(jÅUjÒ}r Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùËjÞ]r Ìjò)�r Ì}rÌ(jÅXARM (ARM9) DSP (C674x)rÌjÆj ÌjÎj{ËjÐjõjÒ}rÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÌjçXARM (ARM9) DSP (C674x)rÌ…�rÌ}rÌ(jÅjÌjÆj ÌubaubajÐj¢ ubj• )�rÌ}rÌ(jÅUjÒ}rÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùËjÞ]rÌjò)�rÌ}rÌ(jÅXDSPrÌjÆjÌjÎj{ËjÐjõjÒ}rÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÌjçXDSPrÌ…�rÌ}r Ì(jÅjÌjÆjÌubaubajÐj¢ ubj• )�r!Ì}r"Ì(jÅUjÒ}r#Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùËjÞ]r$Ìjò)�r%Ì}r&Ì(jÅXSPIr'ÌjÆj!ÌjÎj{ËjÐjõjÒ}r(Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r)ÌjçXSPIr*Ì…�r+Ì}r,Ì(jÅj'ÌjÆj%ÌubaubajÐj¢ ubj• )�r-Ì}r.Ì(jÅUjÒ}r/Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùËjÞ]r0Ìjò)�r1Ì}r2Ì(jÅX OMAPL137 EVMr3ÌjÆj-ÌjÎj{ËjÐjõjÒ}r4Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r5ÌjçX OMAPL137 EVMr6Ì…�r7Ì}r8Ì(jÅj3ÌjÆj1ÌubaubajÐj¢ ubejÐj£ ubj� )�r9Ì}r:Ì(jÅUjÒ}r;Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõËjÞ]r<Ì(j• )�r=Ì}r>Ì(jÅUjÒ}r?Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9ÌjÞ]r@Ìjò)�rAÌ}rBÌ(jÅXOMAPL138rCÌjÆj=ÌjÎj{ËjÐjõjÒ}rDÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rEÌjçXOMAPL138rFÌ…�rGÌ}rHÌ(jÅjCÌjÆjAÌubaubajÐj¢ ubj• )�rIÌ}rJÌ(jÅUjÒ}rKÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9ÌjÞ]rLÌjò)�rMÌ}rNÌ(jÅXARM (ARM9) DSP (C674x)rOÌjÆjIÌjÎj{ËjÐjõjÒ}rPÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rQÌjçXARM (ARM9) DSP (C674x)rRÌ…�rSÌ}rTÌ(jÅjOÌjÆjMÌubaubajÐj¢ ubj• )�rUÌ}rVÌ(jÅUjÒ}rWÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9ÌjÞ]rXÌjò)�rYÌ}rZÌ(jÅXARMr[ÌjÆjUÌjÎj{ËjÐjõjÒ}r\Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r]ÌjçXARMr^Ì…�r_Ì}r`Ì(jÅj[ÌjÆjYÌubaubajÐj¢ ubj• )�raÌ}rbÌ(jÅUjÒ}rcÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9ÌjÞ]rdÌjò)�reÌ}rfÌ(jÅXMMCSDrgÌjÆjaÌjÎj{ËjÐjõjÒ}rhÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]riÌjçXMMCSDrjÌ…�rkÌ}rlÌ(jÅjgÌjÆjeÌubaubajÐj¢ ubj• )�rmÌ}rnÌ(jÅUjÒ}roÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9ÌjÞ]rpÌjò)�rqÌ}rrÌ(jÅX OMAPL138 LCDKrsÌjÆjmÌjÎj{ËjÐjõjÒ}rtÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ruÌjçX OMAPL138 LCDKrvÌ…�rwÌ}rxÌ(jÅjsÌjÆjqÌubaubajÐj¢ ubejÐj£ ubj� )�ryÌ}rzÌ(jÅUjÒ}r{Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõËjÞ]r|Ì(j• )�r}Ì}r~Ì(jÅUjÒ}rÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjyÌjÞ]r€Ìjò)�r�Ì}r‚Ì(jÅXC6748rƒÌjÆj}ÌjÎj{ËjÐjõjÒ}r„Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r…ÌjçXC6748r†Ì…�r‡Ì}rˆÌ(jÅjƒÌjÆj�ÌubaubajÐj¢ ubj• )�r‰Ì}rŠÌ(jÅUjÒ}r‹Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjyÌjÞ]rŒÌjò)�r�Ì}rŽÌ(jÅX DSP (C674x)r�ÌjÆj‰ÌjÎj{ËjÐjõjÒ}r�Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r‘ÌjçX DSP (C674x)r’Ì…�r“Ì}r”Ì(jÅj�ÌjÆj�ÌubaubajÐj¢ ubj• )�r•Ì}r–Ì(jÅUjÒ}r—Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjyÌjÞ]r˜Ìjò)�r™Ì}ršÌ(jÅXDSPr›ÌjÆj•ÌjÎj{ËjÐjõjÒ}rœÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�ÌjçXDSPržÌ…�rŸÌ}r Ì(jÅj›ÌjÆj™ÌubaubajÐj¢ ubj• )�r¡Ì}r¢Ì(jÅUjÒ}r£Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjyÌjÞ]r¤Ìjò)�r¥Ì}r¦Ì(jÅXMMCSDr§ÌjÆj¡ÌjÎj{ËjÐjõjÒ}r¨Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r©ÌjçXMMCSDrªÌ…�r«Ì}r¬Ì(jÅj§ÌjÆj¥ÌubaubajÐj¢ ubj• )�r­Ì}r®Ì(jÅUjÒ}r¯Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjyÌjÞ]r°Ìjò)�r±Ì}r²Ì(jÅX C6748 LCDKr³ÌjÆj­ÌjÎj{ËjÐjõjÒ}r´Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rµÌjçX C6748 LCDKr¶Ì…�r·Ì}r¸Ì(jÅj³ÌjÆj±ÌubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubjÇ)�r¹Ì}rºÌ(jÅUjKjÆjiËjÎj{ËjÐjÑjÒ}r»Ì(jÔ]r¼ÌXbootloader execution sequencer½ÌajÕ]jÖ]j×]r¾ÌUid121r¿ÌajÚ]ujÜKjÝhjÞ]rÀÌ(jà)�rÁÌ}rÂÌ(jÅXBootloader Execution SequencerÃÌjÆj¹ÌjÎj{ËjÐjäjÒ}rÄÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÅÌjçXBootloader Execution SequencerÆÌ…�rÇÌ}rÈÌ(jÅjÃÌjÆjÁÌubaubjt)�rÉÌ}rÊÌ(jÅUjÆj¹ÌjÎj{ËjÐjwjÒ}rËÌ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rÌÌ(j{)�rÍÌ}rÎÌ(jÅXPower On Reset occursrÏÌjÆjÉÌjÎj{ËjÐjjÒ}rÐÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÑÌjò)�rÒÌ}rÓÌ(jÅjÏÌjÆjÍÌjÎj{ËjÐjõjÒ}rÔÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÕÌjçXPower On Reset occursrÖÌ…�r×Ì}rØÌ(jÅjÏÌjÆjÒÌubaubaubj{)�rÙÌ}rÚÌ(jÅXjROM Bootloader (RBL) executes. It checks for bootmode and attempts to load+run the SBL from that bootmode.jÆjÉÌjÎj{ËjÐjjÒ}rÛÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÜÌjò)�rÝÌ}rÞÌ(jÅXjROM Bootloader (RBL) executes. It checks for bootmode and attempts to load+run the SBL from that bootmode.rßÌjÆjÙÌjÎj{ËjÐjõjÒ}ràÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ráÌjçXjROM Bootloader (RBL) executes. It checks for bootmode and attempts to load+run the SBL from that bootmode.râÌ…�rãÌ}räÌ(jÅjßÌjÆjÝÌubaubaubj{)�råÌ}ræÌ(jÅXYSBL begins execution from internal memory (Shared RAM) - Board Initialization is done by a call to **Board_init()** API. For additional details refer to `Processor SDK Board Support `__. - SBL setup includes configuring Pinmux, enable peripheral clocks, set up PLLs, and configure EMIF for SDRAM/DDR. jÆjÉÌjÎNjÐjjÒ}rçÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rèÌ(jò)�réÌ}rêÌ(jÅX6SBL begins execution from internal memory (Shared RAM)rëÌjÆjåÌjÎj{ËjÐjõjÒ}rìÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ríÌjçX6SBL begins execution from internal memory (Shared RAM)rîÌ…�rïÌ}rðÌ(jÅjëÌjÆjéÌubaubjt)�rñÌ}ròÌ(jÅUjÒ}róÌ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjåÌjÞ]rôÌ(j{)�rõÌ}röÌ(jÅX¡Board Initialization is done by a call to **Board_init()** API. For additional details refer to `Processor SDK Board Support `__.jÒ}r÷Ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjñÌjÞ]røÌjò)�rùÌ}rúÌ(jÅX¡Board Initialization is done by a call to **Board_init()** API. For additional details refer to `Processor SDK Board Support `__.jÆjõÌjÎj{ËjÐjõjÒ}rûÌ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]rüÌ(jçX*Board Initialization is done by a call to rýÌ…�rþÌ}rÿÌ(jÅX*Board Initialization is done by a call to jÆjùÌubjÚ)�rÍ}rÍ(jÅX**Board_init()**jÒ}rÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùÌjÞ]rÍjçX Board_init()rÍ…�rÍ}rÍ(jÅUjÆjÍubajÐjâubjçX& API. For additional details refer to rÍ…�rÍ}r Í(jÅX& API. For additional details refer to jÆjùÌubjû)�r Í}r Í(jÅX@`Processor SDK Board Support `__jÒ}r Í(UnameXProcessor SDK Board SupportjXindex_board.html#board-supportj×]jÖ]jÔ]jÕ]jÚ]ujÆjùÌjÞ]r ÍjçXProcessor SDK Board SupportrÍ…�rÍ}rÍ(jÅUjÆj ÍubajÐjÿubjçX.…�rÍ}rÍ(jÅX.jÆjùÌubeubajÐjubj{)�rÍ}rÍ(jÅXpSBL setup includes configuring Pinmux, enable peripheral clocks, set up PLLs, and configure EMIF for SDRAM/DDR. jÒ}rÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjñÌjÞ]rÍjò)�rÍ}rÍ(jÅXoSBL setup includes configuring Pinmux, enable peripheral clocks, set up PLLs, and configure EMIF for SDRAM/DDR.rÍjÆjÍjÎj{ËjÐjõjÒ}rÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]rÍjçXoSBL setup includes configuring Pinmux, enable peripheral clocks, set up PLLs, and configure EMIF for SDRAM/DDR.rÍ…�rÍ}rÍ(jÅjÍjÆjÍubaubajÐjubejÐjwubeubj{)�rÍ}r Í(jÅXxSBL finishes setup and looks for "app" to execute next. This user-modifiable application shall reside on the boot media.jÆjÉÌjÎj{ËjÐjjÒ}r!Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r"Íjò)�r#Í}r$Í(jÅXxSBL finishes setup and looks for "app" to execute next. This user-modifiable application shall reside on the boot media.r%ÍjÆjÍjÎj{ËjÐjõjÒ}r&Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]r'ÍjçXxSBL finishes setup and looks for "app" to execute next. This user-modifiable application shall reside on the boot media.r(Í…�r)Í}r*Í(jÅj%ÍjÆj#Íubaubaubj{)�r+Í}r,Í(jÅXoOnce located, app will be loaded into memory and execution will be branched to the application's entry address jÆjÉÌjÎj{ËjÐjjÒ}r-Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r.Íjò)�r/Í}r0Í(jÅXnOnce located, app will be loaded into memory and execution will be branched to the application's entry addressr1ÍjÆj+ÍjÎj{ËjÐjõjÒ}r2Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]r3ÍjçXnOnce located, app will be loaded into memory and execution will be branched to the application's entry addressr4Í…�r5Í}r6Í(jÅj1ÍjÆj/ÍubaubaubeubeubjÇ)�r7Í}r8Í(jÅUjKjÆjiËjÎj{ËjÐjÑjÒ}r9Í(jÔ]r:ÍXtools and binary formatsr;ÍajÕ]jÖ]j×]r<ÍUid122r=ÍajÚ]ujÜK-jÝhjÞ]r>Í(jà)�r?Í}r@Í(jÅXTools and Binary FormatsrAÍjÆj7ÍjÎj{ËjÐjäjÒ}rBÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÝhjÞ]rCÍjçXTools and Binary FormatsrDÍ…�rEÍ}rFÍ(jÅjAÍjÆj?ÍubaubjÇ)�rGÍ}rHÍ(jÅUjKjÆj7ÍjÎj{ËjÐjÑjÒ}rIÍ(jÔ]rJÍj ÁajÕ]jÖ]j×]rKÍUid123rLÍajÚ]ujÜK0jÝhjÞ]rMÍ(jà)�rNÍ}rOÍ(jÅXMaking Bootable SBL image (MLO)rPÍjÆjGÍjÎj{ËjÐjäjÒ}rQÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÝhjÞ]rRÍjçXMaking Bootable SBL image (MLO)rSÍ…�rTÍ}rUÍ(jÅjPÍjÆjNÍubaubjò)�rVÍ}rWÍ(jÅXœRBL loads and runs "MLO", which is a .out executable formatted by TI tools. HexAIS tool should be used to convert the .out into MLO using the below command.rXÍjÆjGÍjÎj{ËjÐjõjÒ}rYÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÝhjÞ]rZÍjçXœRBL loads and runs "MLO", which is a .out executable formatted by TI tools. HexAIS tool should be used to convert the .out into MLO using the below command.r[Í…�r\Í}r]Í(jÅjXÍjÆjVÍubaubjò)�r^Í}r_Í(jÅX Windows Hostr`ÍjÆjGÍjÎj{ËjÐjõjÒ}raÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÝhjÞ]rbÍjçX Windows HostrcÍ…�rdÍ}reÍ(jÅj`ÍjÆj^Íubaubjò)�rfÍ}rgÍ(jÅX?** -o -ini **rhÍjÆjGÍjÎj{ËjÐjõjÒ}riÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÝhjÞ]rjÍjÚ)�rkÍ}rlÍ(jÅjhÍjÒ}rmÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjfÍjÞ]rnÍjçX; -o -ini roÍ…�rpÍ}rqÍ(jÅUjÆjkÍubajÐjâubaubjò)�rrÍ}rsÍ(jÅX Linux HostrtÍjÆjGÍjÎj{ËjÐjõjÒ}ruÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÝhjÞ]rvÍjçX Linux HostrwÍ…�rxÍ}ryÍ(jÅjtÍjÆjrÍubaubjò)�rzÍ}r{Í(jÅXJHexAIS executable can be run on Linux PC by using mono tool as shown belowr|ÍjÆjGÍjÎj{ËjÐjõjÒ}r}Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜK -o -ini **r„ÍjÆjGÍjÎj{ËjÐjõjÒ}r…Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜK?jÝhjÞ]r†ÍjÚ)�r‡Í}rˆÍ(jÅj„ÍjÒ}r‰Í(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚ÍjÞ]rŠÍjçX@mono -o -ini r‹Í…�rŒÍ}r�Í(jÅUjÆj‡ÍubajÐjâubaubjt)�rŽÍ}r�Í(jÅUjÆjGÍjÎj{ËjÐjwjÒ}r�Í(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKAjÝhjÞ]r‘Í(j{)�r’Í}r“Í(jÅX^ is HexAIS_OMAP-L137.exe for OMAPL137 and HexAIS_OMAP-L138.exe for OMAPL138/C6748jÆjŽÍjÎj{ËjÐjjÒ}r”Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r•Íjò)�r–Í}r—Í(jÅX^ is HexAIS_OMAP-L137.exe for OMAPL137 and HexAIS_OMAP-L138.exe for OMAPL138/C6748r˜ÍjÆj’ÍjÎj{ËjÐjõjÒ}r™Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜKAjÞ]ršÍjçX^ is HexAIS_OMAP-L137.exe for OMAPL137 and HexAIS_OMAP-L138.exe for OMAPL138/C6748r›Í…�rœÍ}r�Í(jÅj˜ÍjÆj–Íubaubaubj{)�ržÍ}rŸÍ(jÅX>‘output file’ is name of the output file. MLO in this caser ÍjÆjŽÍjÎj{ËjÐjjÒ}r¡Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¢Íjò)�r£Í}r¤Í(jÅj ÍjÆjžÍjÎj{ËjÐjõjÒ}r¥Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÞ]r¦ÍjçX>‘output file’ is name of the output file. MLO in this caser§Í…�r¨Í}r©Í(jÅj ÍjÆj£Íubaubaubj{)�rªÍ}r«Í(jÅX‘ini file’ is configuration file for defining the boot parameters. This file provides option to instruct RBL to take certain actions before loading the MLO into internal memory. Sample ini file is available at **< PDK_INSTALL_DIR >/packages/ti/boot/sbl/soc/** jÆjŽÍjÎj{ËjÐjjÒ}r¬Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r­Íjò)�r®Í}r¯Í(jÅX‘ini file’ is configuration file for defining the boot parameters. This file provides option to instruct RBL to take certain actions before loading the MLO into internal memory. Sample ini file is available at **< PDK_INSTALL_DIR >/packages/ti/boot/sbl/soc/**jÆjªÍjÎj{ËjÐjõjÒ}r°Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]r±Í(jçXÖ‘ini file’ is configuration file for defining the boot parameters. This file provides option to instruct RBL to take certain actions before loading the MLO into internal memory. Sample ini file is available at r²Í…�r³Í}r´Í(jÅXÖ‘ini file’ is configuration file for defining the boot parameters. This file provides option to instruct RBL to take certain actions before loading the MLO into internal memory. Sample ini file is available at jÆj®ÍubjÚ)�rµÍ}r¶Í(jÅX9**< PDK_INSTALL_DIR >/packages/ti/boot/sbl/soc/**jÒ}r·Í(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®ÍjÞ]r¸ÍjçX5< PDK_INSTALL_DIR >/packages/ti/boot/sbl/soc/r¹Í…�rºÍ}r»Í(jÅUjÆjµÍubajÐjâubeubaubeubjò)�r¼Í}r½Í(jÅX+ can be omapl137, omapl138 or c6748r¾ÍjÆjGÍjÎj{ËjÐjõjÒ}r¿Í(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÝhjÞ]rÀÍjçX+ can be omapl137, omapl138 or c6748rÁÍ…�rÂÍ}rÃÍ(jÅj¾ÍjÆj¼Íubaubjt)�rÄÍ}rÅÍ(jÅUjÆjGÍjÎj{ËjÐjwjÒ}rÆÍ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKLjÝhjÞ]rÇÍj{)�rÈÍ}rÉÍ(jÅXR‘input file’ is the input .out file name which needs to be converted into MLO jÆjÄÍjÎj{ËjÐjjÒ}rÊÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rËÍjò)�rÌÍ}rÍÍ(jÅXQ‘input file’ is the input .out file name which needs to be converted into MLOrÎÍjÆjÈÍjÎj{ËjÐjõjÒ}rÏÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÞ]rÐÍjçXQ‘input file’ is the input .out file name which needs to be converted into MLOrÑÍ…�rÒÍ}rÓÍ(jÅjÎÍjÆjÌÍubaubaubaubjò)�rÔÍ}rÕÍ(jÅXƒOMAPL137 HexAIS tool is available at **< PDK_INSTALL_DIR >/packages/ti/boot/sbl/tools/omapl13x_boot_utils/OMAP-L137/GNU/AISUtils**.jÆjGÍjÎj{ËjÐjõjÒ}rÖÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÝhjÞ]r×Í(jçX%OMAPL137 HexAIS tool is available at rØÍ…�rÙÍ}rÚÍ(jÅX%OMAPL137 HexAIS tool is available at jÆjÔÍubjÚ)�rÛÍ}rÜÍ(jÅX]**< PDK_INSTALL_DIR >/packages/ti/boot/sbl/tools/omapl13x_boot_utils/OMAP-L137/GNU/AISUtils**jÒ}rÝÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÔÍjÞ]rÞÍjçXY< PDK_INSTALL_DIR >/packages/ti/boot/sbl/tools/omapl13x_boot_utils/OMAP-L137/GNU/AISUtilsrßÍ…�ràÍ}ráÍ(jÅUjÆjÛÍubajÐjâubjçX.…�râÍ}rãÍ(jÅX.jÆjÔÍubeubjò)�räÍ}råÍ(jÅXˆOMAPL138/C6748 HexAIS tool is available at **< PDK_INSTALL_DIR >/packages/ti/boot/sbl/tools/omapl13x_boot_utils/OMAP-L138/GNU/AISUtils**jÆjGÍjÎj{ËjÐjõjÒ}ræÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKRjÝhjÞ]rçÍ(jçX+OMAPL138/C6748 HexAIS tool is available at rèÍ…�réÍ}rêÍ(jÅX+OMAPL138/C6748 HexAIS tool is available at jÆjäÍubjÚ)�rëÍ}rìÍ(jÅX]**< PDK_INSTALL_DIR >/packages/ti/boot/sbl/tools/omapl13x_boot_utils/OMAP-L138/GNU/AISUtils**jÒ}ríÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjäÍjÞ]rîÍjçXY< PDK_INSTALL_DIR >/packages/ti/boot/sbl/tools/omapl13x_boot_utils/OMAP-L138/GNU/AISUtilsrïÍ…�rðÍ}rñÍ(jÅUjÆjëÍubajÐjâubeubeubjÇ)�ròÍ}róÍ(jÅUjKjÆj7ÍjÎj{ËjÐjÑjÒ}rôÍ(jÔ]rõÍX,making loadable user application image (app)röÍajÕ]jÖ]j×]r÷ÍUid124røÍajÚ]ujÜKVjÝhjÞ]rùÍ(jà)�rúÍ}rûÍ(jÅX,Making Loadable User Application image (app)rüÍjÆjòÍjÎj{ËjÐjäjÒ}rýÍ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKVjÝhjÞ]rþÍjçX,Making Loadable User Application image (app)rÿÍ…�rÎ}rÎ(jÅjüÍjÆjúÍubaubjò)�rÎ}rÎ(jÅX�For converting the compiled .out files to a format loadable by TI's Secondary Boot Loader (SBL), you must follow these two steps:rÎjÆjòÍjÎj{ËjÐjõjÒ}rÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÝhjÞ]rÎjçX�For converting the compiled .out files to a format loadable by TI's Secondary Boot Loader (SBL), you must follow these two steps:rÎ…�rÎ}r Î(jÅjÎjÆjÎubaubj )�r Î}r Î(jÅUjÆjòÍjÎj{ËjÐj jÒ}r Î(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK[jÝhjÞ]r Î(j{)�rÎ}rÎ(jÅX***out2rprc.exe [.out file] [rprc output]**rÎjÆj ÎjÎj{ËjÐjjÒ}rÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÎjò)�rÎ}rÎ(jÅjÎjÆjÎjÎj{ËjÐjõjÒ}rÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÞ]rÎjÚ)�rÎ}rÎ(jÅjÎjÒ}rÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÎjÞ]rÎjçX&out2rprc.exe [.out file] [rprc output]rÎ…�rÎ}rÎ(jÅUjÆjÎubajÐjâubaubaubj{)�rÎ}rÎ(jÅXF**MulticoreImageGen.exe LE 55 [output name] [rprc output]** jÆj ÎjÎj{ËjÐjjÒ}r Î(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r!Îjò)�r"Î}r#Î(jÅXE**MulticoreImageGen.exe LE 55 [output name] [rprc output]**r$ÎjÆjÎjÎj{ËjÐjõjÒ}r%Î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK\jÞ]r&ÎjÚ)�r'Î}r(Î(jÅj$ÎjÒ}r)Î(jÔ]jÕ]jÖ]j×]jÚ]ujÆj"ÎjÞ]r*ÎjçXAMulticoreImageGen.exe LE 55 [output name] [rprc output]r+Î…�r,Î}r-Î(jÅUjÆj'ÎubajÐjâubaubaubeubjò)�r.Î}r/Î(jÅXýOut2rprc.exe and MulticoreImageGen.exe are tools supplied by TI and can be located in the **/packages/ti/boot/sbl/tools** folder. "rprc output" can be any spare name of your choosing. "output name" can also be any name of your choosing.jÆjòÍjÎj{ËjÐjõjÒ}r0Î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÝhjÞ]r1Î(jçXZOut2rprc.exe and MulticoreImageGen.exe are tools supplied by TI and can be located in the r2Î…�r3Î}r4Î(jÅXZOut2rprc.exe and MulticoreImageGen.exe are tools supplied by TI and can be located in the jÆj.ÎubjÚ)�r5Î}r6Î(jÅX0**/packages/ti/boot/sbl/tools**jÒ}r7Î(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.ÎjÞ]r8ÎjçX,/packages/ti/boot/sbl/toolsr9Î…�r:Î}r;Î(jÅUjÆj5ÎubajÐjâubjçXs folder. "rprc output" can be any spare name of your choosing. "output name" can also be any name of your choosing.r<Î…�r=Î}r>Î(jÅXs folder. "rprc output" can be any spare name of your choosing. "output name" can also be any name of your choosing.jÆj.Îubeubjò)�r?Î}r@Î(jÅXÎThe used in step 2 refers to the Core ID to boot. Use '0' as Core ID for ARM core and '1' for DSP core. Valid values are:. You can input a different value to boot to other cores. Valid values are:rAÎjÆjòÍjÎj{ËjÐjõjÒ}rBÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKcjÝhjÞ]rCÎjçXÎThe used in step 2 refers to the Core ID to boot. Use '0' as Core ID for ARM core and '1' for DSP core. Valid values are:. You can input a different value to boot to other cores. Valid values are:rDÎ…�rEÎ}rFÎ(jÅjAÎjÆj?Îubaubjy )�rGÎ}rHÎ(jÅUjÆjòÍjÎj{ËjÐjÔ jÒ}rIÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rJÎj~ )�rKÎ}rLÎ(jÅUjÒ}rMÎ(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjGÎjÞ]rNÎ(jƒ )�rOÎ}rPÎ(jÅUjÒ}rQÎ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjKÎjÞ]jÐj‡ ubjƒ )�rRÎ}rSÎ(jÅUjÒ}rTÎ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjKÎjÞ]jÐj‡ ubj‹ )�rUÎ}rVÎ(jÅUjÒ}rWÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKÎjÞ]rXÎj� )�rYÎ}rZÎ(jÅUjÒ}r[Î(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUÎjÞ]r\Î(j• )�r]Î}r^Î(jÅUjÒ}r_Î(jÔ]jÕ]jÖ]j×]jÚ]ujÆjYÎjÞ]r`Îjò)�raÎ}rbÎ(jÅXCorercÎjÆj]ÎjÎj{ËjÐjõjÒ}rdÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÞ]reÎjçXCorerfÎ…�rgÎ}rhÎ(jÅjcÎjÆjaÎubaubajÐj¢ ubj• )�riÎ}rjÎ(jÅUjÒ}rkÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjYÎjÞ]rlÎjò)�rmÎ}rnÎ(jÅXValueroÎjÆjiÎjÎj{ËjÐjõjÒ}rpÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKhjÞ]rqÎjçXValuerrÎ…�rsÎ}rtÎ(jÅjoÎjÆjmÎubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�ruÎ}rvÎ(jÅUjÒ}rwÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKÎjÞ]rxÎ(j� )�ryÎ}rzÎ(jÅUjÒ}r{Î(jÔ]jÕ]jÖ]j×]jÚ]ujÆjuÎjÞ]r|Î(j• )�r}Î}r~Î(jÅUjÒ}rÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjyÎjÞ]r€Îjò)�r�Î}r‚Î(jÅXARM CorerƒÎjÆj}ÎjÎj{ËjÐjõjÒ}r„Î(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]r…ÎjçXARM Corer†Î…�r‡Î}rˆÎ(jÅjƒÎjÆj�ÎubaubajÐj¢ ubj• )�r‰Î}rŠÎ(jÅUjÒ}r‹Î(jÔ]jÕ]jÖ]j×]jÚ]ujÆjyÎjÞ]rŒÎjò)�r�Î}rŽÎ(jÅX0jÆj‰ÎjÎj{ËjÐjõjÒ}r�Î(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]r�ÎjçX0…�r‘Î}r’Î(jÅX0jÆj�ÎubaubajÐj¢ ubejÐj£ ubj� )�r“Î}r”Î(jÅUjÒ}r•Î(jÔ]jÕ]jÖ]j×]jÚ]ujÆjuÎjÞ]r–Î(j• )�r—Î}r˜Î(jÅUjÒ}r™Î(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ÎjÞ]ršÎjò)�r›Î}rœÎ(jÅXDSP Corer�ÎjÆj—ÎjÎj{ËjÐjõjÒ}ržÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]rŸÎjçXDSP Corer Î…�r¡Î}r¢Î(jÅj�ÎjÆj›ÎubaubajÐj¢ ubj• )�r£Î}r¤Î(jÅUjÒ}r¥Î(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ÎjÞ]r¦Îjò)�r§Î}r¨Î(jÅX1jÆj£ÎjÎj{ËjÐjõjÒ}r©Î(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]rªÎjçX1…�r«Î}r¬Î(jÅX1jÆj§ÎubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjë)�r­Î}r®Î(jÅX>Program entry point of DSP app images on OMAPL138 platform should be 1KByte aligned for loading and executing the DSP images from ARM core. GPIO LLD LED blink example for C674x core can be used as reference for aligning the DSP entry point to run the DSP code from SBL. Other LLD examples does not work from SBL as is.jÆjòÍjÎj{ËjÐjïjÒ}r¯Î(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r°Îjò)�r±Î}r²Î(jÅX>Program entry point of DSP app images on OMAPL138 platform should be 1KByte aligned for loading and executing the DSP images from ARM core. GPIO LLD LED blink example for C674x core can be used as reference for aligning the DSP entry point to run the DSP code from SBL. Other LLD examples does not work from SBL as is.r³ÎjÆj­ÎjÎj{ËjÐjõjÒ}r´Î(jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÞ]rµÎjçX>Program entry point of DSP app images on OMAPL138 platform should be 1KByte aligned for loading and executing the DSP images from ARM core. GPIO LLD LED blink example for C674x core can be used as reference for aligning the DSP entry point to run the DSP code from SBL. Other LLD examples does not work from SBL as is.r¶Î…�r·Î}r¸Î(jÅj³ÎjÆj±ÎubaubaubeubeubjÇ)�r¹Î}rºÎ(jÅUjKjÆjiËjÎj{ËjÐjÑjÒ}r»Î(jÔ]r¼ÎX boot modesr½ÎajÕ]jÖ]j×]r¾ÎUid125r¿ÎajÚ]ujÜKujÝhjÞ]rÀÎ(jà)�rÁÎ}rÂÎ(jÅX Boot ModesrÃÎjÆj¹ÎjÎj{ËjÐjäjÒ}rÄÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÝhjÞ]rÅÎjçX Boot ModesrÆÎ…�rÇÎ}rÈÎ(jÅjÃÎjÆjÁÎubaubjò)�rÉÎ}rÊÎ(jÅX6This release of SBL supports SPI and MMCSD boot modes.rËÎjÆj¹ÎjÎj{ËjÐjõjÒ}rÌÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÝhjÞ]rÍÎjçX6This release of SBL supports SPI and MMCSD boot modes.rÎÎ…�rÏÎ}rÐÎ(jÅjËÎjÆjÉÎubaubjÇ)�rÑÎ}rÒÎ(jÅUjÆj¹ÎjÎj{ËjÐjÑjÒ}rÓÎ(jÔ]jÕ]jÖ]j×]rÔÎU spi-boot-moderÕÎajÚ]rÖÎj¹aujÜKzjÝhjÞ]r×Î(jà)�rØÎ}rÙÎ(jÅX SPI Boot ModerÚÎjÆjÑÎjÎj{ËjÐjäjÒ}rÛÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKzjÝhjÞ]rÜÎjçX SPI Boot ModerÝÎ…�rÞÎ}rßÎ(jÅjÚÎjÆjØÎubaubjÇ)�ràÎ}ráÎ(jÅUjÆjÑÎjÎj{ËjÐjÑjÒ}râÎ(jÔ]jÕ]jÖ]j×]rãÎUpreparing-spi-flashräÎajÚ]råÎjµaujÜK}jÝhjÞ]ræÎ(jà)�rçÎ}rèÎ(jÅXPreparing SPI FlashréÎjÆjàÎjÎj{ËjÐjäjÒ}rêÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÝhjÞ]rëÎjçXPreparing SPI FlashrìÎ…�ríÎ}rîÎ(jÅjéÎjÆjçÎubaubjò)�rïÎ}rðÎ(jÅX¤MLO and app needs to be flashed into SPI memory so that they can be booted. MLO will reside at offset 0 and app will reside at offset 0x80000. SPI flash memory map:rñÎjÆjàÎjÎj{ËjÐjõjÒ}ròÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]róÎjçX¤MLO and app needs to be flashed into SPI memory so that they can be booted. MLO will reside at offset 0 and app will reside at offset 0x80000. SPI flash memory map:rôÎ…�rõÎ}röÎ(jÅjñÎjÆjïÎubaubjy )�r÷Î}røÎ(jÅUjÆjàÎjÎj{ËjÐjÔ jÒ}rùÎ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rúÎj~ )�rûÎ}rüÎ(jÅUjÒ}rýÎ(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj÷ÎjÞ]rþÎ(jƒ )�rÿÎ}rÏ(jÅUjÒ}rÏ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjûÎjÞ]jÐj‡ ubjƒ )�rÏ}rÏ(jÅUjÒ}rÏ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjûÎjÞ]jÐj‡ ubj¥ )�rÏ}rÏ(jÅUjÒ}rÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjûÎjÞ]rÏ(j� )�r Ï}r Ï(jÅUjÒ}r Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÏjÞ]r Ï(j• )�r Ï}rÏ(jÅUjÒ}rÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÏjÞ]rÏjò)�rÏ}rÏ(jÅX Offset 0x0rÏjÆj ÏjÎj{ËjÐjõjÒ}rÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]rÏjçX Offset 0x0rÏ…�rÏ}rÏ(jÅjÏjÆjÏubaubajÐj¢ ubj• )�rÏ}rÏ(jÅUjÒ}rÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÏjÞ]rÏjò)�rÏ}rÏ(jÅXMLOrÏjÆjÏjÎj{ËjÐjõjÒ}r Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]r!ÏjçXMLOr"Ï…�r#Ï}r$Ï(jÅjÏjÆjÏubaubajÐj¢ ubejÐj£ ubj� )�r%Ï}r&Ï(jÅUjÒ}r'Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÏjÞ]r(Ï(j• )�r)Ï}r*Ï(jÅUjÒ}r+Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ÏjÞ]r,Ïjò)�r-Ï}r.Ï(jÅXOffset 0x80000r/ÏjÆj)ÏjÎj{ËjÐjõjÒ}r0Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]r1ÏjçXOffset 0x80000r2Ï…�r3Ï}r4Ï(jÅj/ÏjÆj-ÏubaubajÐj¢ ubj• )�r5Ï}r6Ï(jÅUjÒ}r7Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ÏjÞ]r8Ïjò)�r9Ï}r:Ï(jÅXappr;ÏjÆj5ÏjÎj{ËjÐjõjÒ}r<Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÞ]r=ÏjçXappr>Ï…�r?Ï}r@Ï(jÅj;ÏjÆj9ÏubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�rAÏ}rBÏ(jÅXHThe images can be flashed into SPI flash by following steps given below:rCÏjÆjàÎjÎj{ËjÐjõjÒ}rDÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‰jÝhjÞ]rEÏjçXHThe images can be flashed into SPI flash by following steps given below:rFÏ…�rGÏ}rHÏ(jÅjCÏjÆjAÏubaubj )�rIÏ}rJÏ(jÅUjÆjàÎjÎj{ËjÐj jÒ}rKÏ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK‹jÝhjÞ]rLÏ(j{)�rMÏ}rNÏ(jÅX!Copy MLO and app to SPI flash writer binary folder - **/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137**. Make sure config file also present in the SPI flash writer binary folder. - MLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/evmOMAPL137/spi/bin** - app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different). - config helps specify the memory map. The default config file can be found at: **/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137**. This config file may be altered to custom user settings if needed. jÆjIÏjÎNjÐjjÒ}rOÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rPÏ(jò)�rQÏ}rRÏ(jÅXÐCopy MLO and app to SPI flash writer binary folder - **/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137**. Make sure config file also present in the SPI flash writer binary folder.jÆjMÏjÎj{ËjÐjõjÒ}rSÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‹jÞ]rTÏ(jçX5Copy MLO and app to SPI flash writer binary folder - rUÏ…�rVÏ}rWÏ(jÅX5Copy MLO and app to SPI flash writer binary folder - jÆjQÏubjÚ)�rXÏ}rYÏ(jÅXP**/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137**jÒ}rZÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjQÏjÞ]r[ÏjçXL/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137r\Ï…�r]Ï}r^Ï(jÅUjÆjXÏubajÐjâubjçXK. Make sure config file also present in the SPI flash writer binary folder.r_Ï…�r`Ï}raÏ(jÅXK. Make sure config file also present in the SPI flash writer binary folder.jÆjQÏubeubjt)�rbÏ}rcÏ(jÅUjÒ}rdÏ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjMÏjÞ]reÏ(j{)�rfÏ}rgÏ(jÅXœMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/evmOMAPL137/spi/bin**jÒ}rhÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbÏjÞ]riÏjò)�rjÏ}rkÏ(jÅXœMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/evmOMAPL137/spi/bin**jÆjfÏjÎj{ËjÐjõjÒ}rlÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rmÏ(jçXWMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: rnÏ…�roÏ}rpÏ(jÅXWMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: jÆjjÏubjÚ)�rqÏ}rrÏ(jÅXE**/packages/ti/boot/sbl/binary/evmOMAPL137/spi/bin**jÒ}rsÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÏjÞ]rtÏjçXA/packages/ti/boot/sbl/binary/evmOMAPL137/spi/binruÏ…�rvÏ}rwÏ(jÅUjÆjqÏubajÐjâubeubajÐjubj{)�rxÏ}ryÏ(jÅX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).jÒ}rzÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbÏjÞ]r{Ïjò)�r|Ï}r}Ï(jÅX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).r~ÏjÆjxÏjÎj{ËjÐjõjÒ}rÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK“jÞ]r€ÏjçX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).r�Ï…�r‚Ï}rƒÏ(jÅj~ÏjÆj|ÏubaubajÐjubj{)�r„Ï}r…Ï(jÅXãconfig helps specify the memory map. The default config file can be found at: **/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137**. This config file may be altered to custom user settings if needed. jÒ}r†Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjbÏjÞ]r‡Ïjò)�rˆÏ}r‰Ï(jÅXâconfig helps specify the memory map. The default config file can be found at: **/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137**. This config file may be altered to custom user settings if needed.jÆj„ÏjÎj{ËjÐjõjÒ}rŠÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK–jÞ]r‹Ï(jçXNconfig helps specify the memory map. The default config file can be found at: rŒÏ…�r�Ï}rŽÏ(jÅXNconfig helps specify the memory map. The default config file can be found at: jÆjˆÏubjÚ)�r�Ï}r�Ï(jÅXP**/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137**jÒ}r‘Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆÏjÞ]r’ÏjçXL/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137r“Ï…�r”Ï}r•Ï(jÅUjÆj�ÏubajÐjâubjçXD. This config file may be altered to custom user settings if needed.r–Ï…�r—Ï}r˜Ï(jÅXD. This config file may be altered to custom user settings if needed.jÆjˆÏubeubajÐjubejÐjwubeubj{)�r™Ï}ršÏ(jÅX’Connect the DB9 port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’.jÆjIÏjÎj{ËjÐjjÒ}r›Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rœÏjò)�r�Ï}ržÏ(jÅX’Connect the DB9 port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’.rŸÏjÆj™ÏjÎj{ËjÐjõjÒ}r Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜK›jÞ]r¡ÏjçX’Connect the DB9 port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’.r¢Ï…�r£Ï}r¤Ï(jÅjŸÏjÆj�Ïubaubaubj{)�r¥Ï}r¦Ï(jÅX¢Connect to the board with CCS. Launch target configuration and connect to the DSP C674x core. GEL file will run on-connect and do basic board-level initializationjÆjIÏjÎj{ËjÐjjÒ}r§Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¨Ïjò)�r©Ï}rªÏ(jÅX¢Connect to the board with CCS. Launch target configuration and connect to the DSP C674x core. GEL file will run on-connect and do basic board-level initializationr«ÏjÆj¥ÏjÎj{ËjÐjõjÒ}r¬Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKžjÞ]r­ÏjçX¢Connect to the board with CCS. Launch target configuration and connect to the DSP C674x core. GEL file will run on-connect and do basic board-level initializationr®Ï…�r¯Ï}r°Ï(jÅj«ÏjÆj©Ïubaubaubj{)�r±Ï}r²Ï(jÅXÍLoad the flash writer, spi_flash_writer.out, to the connected core - A pre-built spi_flash_writer.out can be found at: **/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137** jÆjIÏjÎNjÐjjÒ}r³Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r´Ï(jò)�rµÏ}r¶Ï(jÅXBLoad the flash writer, spi_flash_writer.out, to the connected corer·ÏjÆj±ÏjÎj{ËjÐjõjÒ}r¸Ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÞ]r¹ÏjçXBLoad the flash writer, spi_flash_writer.out, to the connected corerºÏ…�r»Ï}r¼Ï(jÅj·ÏjÆjµÏubaubjt)�r½Ï}r¾Ï(jÅUjÒ}r¿Ï(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj±ÏjÞ]rÀÏj{)�rÁÏ}rÂÏ(jÅXƒA pre-built spi_flash_writer.out can be found at: **/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137** jÒ}rÃÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj½ÏjÞ]rÄÏjò)�rÅÏ}rÆÏ(jÅX‚A pre-built spi_flash_writer.out can be found at: **/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137**jÆjÁÏjÎj{ËjÐjõjÒ}rÇÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK£jÞ]rÈÏ(jçX2A pre-built spi_flash_writer.out can be found at: rÉÏ…�rÊÏ}rËÏ(jÅX2A pre-built spi_flash_writer.out can be found at: jÆjÅÏubjÚ)�rÌÏ}rÍÏ(jÅXP**/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137**jÒ}rÎÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÅÏjÞ]rÏÏjçXL/packages/ti/boot/sbl/tools/flashWriter/spi/bin/evmOMAPL137rÐÏ…�rÑÏ}rÒÏ(jÅUjÆjÌÏubajÐjâubeubajÐjubajÐjwubeubj{)�rÓÏ}rÔÏ(jÅXaRun the SPI flash writer application. You will see the following logs on the EVM's UART console: jÆjIÏjÎj{ËjÐjjÒ}rÕÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÖÏjò)�r×Ï}rØÏ(jÅX`Run the SPI flash writer application. You will see the following logs on the EVM's UART console:rÙÏjÆjÓÏjÎj{ËjÐjõjÒ}rÚÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¦jÞ]rÛÏjçX`Run the SPI flash writer application. You will see the following logs on the EVM's UART console:rÜÏ…�rÝÏ}rÞÏ(jÅjÙÏjÆj×Ïubaubaubeubj)�rßÏ}ràÏ(jÅX1 *** PDK SPI Flash Writer *** Opening SPI handle... SPI handle opened! Parsing config file and flashing content to SPI NOR... Parsed config line, received parameters: filename = MLO, address = 0x0 Size of MLO is 0xc81c Loading binary to memory ... Finished loading binary to memory! Flashed MLO to offset 0x0! Read flash memory at 0x0, checking flashed content... Verified flash data equal expected data! Parsed config line, received parameters: filename = app, address = 0x80000 Size of app is 0x16144 Loading binary to memory ... Finished loading binary to memory! Flashed app to offset 0x80000! Read flash memory at 0x80000, checking flashed content... Verified flash data equal expected data! Successfully flashed memory content!jÆjàÎjÎj{ËjÐjjÒ}ráÏ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM/jÝhjÞ]râÏjçX1 *** PDK SPI Flash Writer *** Opening SPI handle... SPI handle opened! Parsing config file and flashing content to SPI NOR... Parsed config line, received parameters: filename = MLO, address = 0x0 Size of MLO is 0xc81c Loading binary to memory ... Finished loading binary to memory! Flashed MLO to offset 0x0! Read flash memory at 0x0, checking flashed content... Verified flash data equal expected data! Parsed config line, received parameters: filename = app, address = 0x80000 Size of app is 0x16144 Loading binary to memory ... Finished loading binary to memory! Flashed app to offset 0x80000! Read flash memory at 0x80000, checking flashed content... Verified flash data equal expected data! Successfully flashed memory content!rãÏ…�räÏ}råÏ(jÅUjÆjßÏubaubjë)�ræÏ}rçÏ(jÅX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.jÆjàÎjÎj{ËjÐjïjÒ}rèÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]réÏjò)�rêÏ}rëÏ(jÅX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.rìÏjÆjæÏjÎj{ËjÐjõjÒ}ríÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÀjÞ]rîÏjçX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.rïÏ…�rðÏ}rñÏ(jÅjìÏjÆjêÏubaubaubeubjÇ)�ròÏ}róÏ(jÅUjÆjÑÎjÎj{ËjÐjÑjÒ}rôÏ(jÔ]jÕ]jÖ]j×]rõÏUbooting-via-spiröÏajÚ]r÷ÏhÑaujÜKÄjÝhjÞ]røÏ(jà)�rùÏ}rúÏ(jÅXBooting via SPIrûÏjÆjòÏjÎj{ËjÐjäjÒ}rüÏ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÄjÝhjÞ]rýÏjçXBooting via SPIrþÏ…�rÿÏ}rÐ(jÅjûÏjÆjùÏubaubj )�rÐ}rÐ(jÅUjÆjòÏjÎj{ËjÐj jÒ}rÐ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKÆjÝhjÞ]rÐ(j{)�rÐ}rÐ(jÅX�Set the OMAPL137 EVM to SPI bootmode by configuring the SW2 DIP switches 1-4 to 'OFF ON OFF ON'. Other switch positions on SW2 are don’t care for SPI boot.jÆjÐjÎj{ËjÐjjÒ}rÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÐjò)�r Ð}r Ð(jÅX�Set the OMAPL137 EVM to SPI bootmode by configuring the SW2 DIP switches 1-4 to 'OFF ON OFF ON'. Other switch positions on SW2 are don’t care for SPI boot.r ÐjÆjÐjÎj{ËjÐjõjÒ}r Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÆjÞ]r ÐjçX�Set the OMAPL137 EVM to SPI bootmode by configuring the SW2 DIP switches 1-4 to 'OFF ON OFF ON'. Other switch positions on SW2 are don’t care for SPI boot.rÐ…�rÐ}rÐ(jÅj ÐjÆj Ðubaubaubj{)�rÐ}rÐ(jÅX‘Connect the DB9 port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’jÆjÐjÎj{ËjÐjjÒ}rÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÐjò)�rÐ}rÐ(jÅX‘Connect the DB9 port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’rÐjÆjÐjÎj{ËjÐjõjÒ}rÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÉjÞ]rÐjçX‘Connect the DB9 port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’rÐ…�rÐ}rÐ(jÅjÐjÆjÐubaubaubj{)�rÐ}rÐ(jÅXPower on the board jÆjÐjÎj{ËjÐjjÒ}rÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r Ðjò)�r!Ð}r"Ð(jÅXPower on the boardr#ÐjÆjÐjÎj{ËjÐjõjÒ}r$Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÌjÞ]r%ÐjçXPower on the boardr&Ð…�r'Ð}r(Ð(jÅj#ÐjÆj!Ðubaubaubeubjò)�r)Ð}r*Ð(jÅXWBelow is an example of OMAPL137 SBL successfully booting the GPIO LED blink applicationr+ÐjÆjòÏjÎj{ËjÐjõjÒ}r,Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÎjÝhjÞ]r-ÐjçXWBelow is an example of OMAPL137 SBL successfully booting the GPIO LED blink applicationr.Ð…�r/Ð}r0Ð(jÅj+ÐjÆj)ÐubaubjR)�r1Ð}r2Ð(jÅX/.. Image:: ../images/Omapl137_boot_example.jpg jÆjòÏjÎj{ËjÐjZjÒ}r3Ð(UuriX(rtos/../images/Omapl137_boot_example.jpgr4Ðj×]jÖ]jÔ]jÕ]jX}r5ÐU*j4ÐsjÚ]ujÜKÒjÝhjÞ]ubjc)�r6Ð}r7Ð(jÅUjÆjòÏjÎj{ËjÐjfjÒ}r8Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÓjÝhjÞ]r9Ðji)�r:Ð}r;Ð(jÅUjlKjÆj6ÐjÎj{ËjÐjÜjÒ}r<Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubjÇ)�r=Ð}r>Ð(jÅUjKjÆj¹ÎjÎj{ËjÐjÑjÒ}r?Ð(jÔ]r@ÐjÃajÕ]jÖ]j×]rAÐUid126rBÐajÚ]ujÜKÖjÝhjÞ]rCÐ(jà)�rDÐ}rEÐ(jÅXMMCSD Boot ModerFÐjÆj=ÐjÎj{ËjÐjäjÒ}rGÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÖjÝhjÞ]rHÐjçXMMCSD Boot ModerIÐ…�rJÐ}rKÐ(jÅjFÐjÆjDÐubaubjò)�rLÐ}rMÐ(jÅXOMAPL138/C6848 RBL does not support reading the boot images as files from SD card. Secondary Boot loader image should be written to SD card as raw data. Special formatting is needed for SD card to create un-formatted area at the beginning of the card to store SBL.rNÐjÆj=ÐjÎj{ËjÐjõjÒ}rOÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKØjÝhjÞ]rPÐjçXOMAPL138/C6848 RBL does not support reading the boot images as files from SD card. Secondary Boot loader image should be written to SD card as raw data. Special formatting is needed for SD card to create un-formatted area at the beginning of the card to store SBL.rQÐ…�rRÐ}rSÐ(jÅjNÐjÆjLÐubaubjÇ)�rTÐ}rUÐ(jÅUjÆj=ÐjÎj{ËjÐjÑjÒ}rVÐ(jÔ]jÕ]jÖ]j×]rWÐUformatting-the-sd-cardrXÐajÚ]rYÐj¢aujÜKÞjÝhjÞ]rZÐ(jà)�r[Ð}r\Ð(jÅXFormatting the SD Cardr]ÐjÆjTÐjÎj{ËjÐjäjÒ}r^Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÞjÝhjÞ]r_ÐjçXFormatting the SD Cardr`Ð…�raÐ}rbÐ(jÅj]ÐjÆj[Ðubaubjò)�rcÐ}rdÐ(jÅXµSD card for booting OMAPL138/C6748 needs to be formatted from Linux PC due to un-formatted area requirement. Formatting the SD card from Windows PC is not supported in this release.reÐjÆjTÐjÎj{ËjÐjõjÒ}rfÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKàjÝhjÞ]rgÐjçXµSD card for booting OMAPL138/C6748 needs to be formatted from Linux PC due to un-formatted area requirement. Formatting the SD card from Windows PC is not supported in this release.rhÐ…�riÐ}rjÐ(jÅjeÐjÆjcÐubaubjò)�rkÐ}rlÐ(jÅXKConnect the SD card to Linux PC and use below command to format the SD cardrmÐjÆjTÐjÎj{ËjÐjõjÒ}rnÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKäjÝhjÞ]roÐjçXKConnect the SD card to Linux PC and use below command to format the SD cardrpÐ…�rqÐ}rrÐ(jÅjmÐjÆjkÐubaubjò)�rsÐ}rtÐ(jÅX2**sudo sh create-sdcard-omapl13x.sh **ruÐjÆjTÐjÎj{ËjÐjõjÒ}rvÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKçjÝhjÞ]rwÐjÚ)�rxÐ}ryÐ(jÅjuÐjÒ}rzÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjsÐjÞ]r{ÐjçX.sudo sh create-sdcard-omapl13x.sh r|Ð…�r}Ð}r~Ð(jÅUjÆjxÐubajÐjâubaubjt)�rÐ}r€Ð(jÅUjÆjTÐjÎj{ËjÐjwjÒ}r�Ð(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKéjÝhjÞ]r‚Ð(j{)�rƒÐ}r„Ð(jÅX² is name of the drive on which SD card is mounted. Be cautious while selecting the drive name. Running the script with system drive name will corrupt the file system.jÆjÐjÎj{ËjÐjjÒ}r…Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r†Ðjò)�r‡Ð}rˆÐ(jÅX² is name of the drive on which SD card is mounted. Be cautious while selecting the drive name. Running the script with system drive name will corrupt the file system.r‰ÐjÆjƒÐjÎj{ËjÐjõjÒ}rŠÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKéjÞ]r‹ÐjçX² is name of the drive on which SD card is mounted. Be cautious while selecting the drive name. Running the script with system drive name will corrupt the file system.rŒÐ…�r�Ð}rŽÐ(jÅj‰ÐjÆj‡Ðubaubaubj{)�r�Ð}r�Ð(jÅXzcreate-sdcard-omapl13x.sh script is available at **/packages/ti/boot/sbl/tools/omapl13x_sd_card_format** jÆjÐjÎj{ËjÐjjÒ}r‘Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r’Ðjò)�r“Ð}r”Ð(jÅXycreate-sdcard-omapl13x.sh script is available at **/packages/ti/boot/sbl/tools/omapl13x_sd_card_format**jÆj�ÐjÎj{ËjÐjõjÒ}r•Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜKìjÞ]r–Ð(jçX1create-sdcard-omapl13x.sh script is available at r—Ð…�r˜Ð}r™Ð(jÅX1create-sdcard-omapl13x.sh script is available at jÆj“ÐubjÚ)�ršÐ}r›Ð(jÅXH**/packages/ti/boot/sbl/tools/omapl13x_sd_card_format**jÒ}rœÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ÐjÞ]r�ÐjçXD/packages/ti/boot/sbl/tools/omapl13x_sd_card_formatržÐ…�rŸÐ}r Ð(jÅUjÆjšÐubajÐjâubeubaubeubeubjÇ)�r¡Ð}r¢Ð(jÅUjKjÆj=ÐjÎj{ËjÐjÑjÒ}r£Ð(jÔ]r¤ÐXpreparing the sd cardr¥ÐajÕ]jÖ]j×]r¦ÐUid127r§ÐajÚ]ujÜKðjÝhjÞ]r¨Ð(jà)�r©Ð}rªÐ(jÅXPreparing the SD Cardr«ÐjÆj¡ÐjÎj{ËjÐjäjÒ}r¬Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜKðjÝhjÞ]r­ÐjçXPreparing the SD Cardr®Ð…�r¯Ð}r°Ð(jÅj«ÐjÆj©Ðubaubjò)�r±Ð}r²Ð(jÅXzFor both OMAPL138 and C6748, MLO needs to be flashed onto SD card un-formatted area and app should be copied onto SD card.r³ÐjÆj¡ÐjÎj{ËjÐjõjÒ}r´Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜKòjÝhjÞ]rµÐjçXzFor both OMAPL138 and C6748, MLO needs to be flashed onto SD card un-formatted area and app should be copied onto SD card.r¶Ð…�r·Ð}r¸Ð(jÅj³ÐjÆj±Ðubaubjò)�r¹Ð}rºÐ(jÅXQMLO can be flashed into SD card un-formatted area by following steps given below:r»ÐjÆj¡ÐjÎj{ËjÐjõjÒ}r¼Ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜKõjÝhjÞ]r½ÐjçXQMLO can be flashed into SD card un-formatted area by following steps given below:r¾Ð…�r¿Ð}rÀÐ(jÅj»ÐjÆj¹Ðubaubj )�rÁÐ}rÂÐ(jÅUjÆj¡ÐjÎj{ËjÐj jÒ}rÃÐ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKøjÝhjÞ]rÄÐ(j{)�rÅÐ}rÆÐ(jÅX­Build the MMCSD flash writer using below commands - cd /packages/ti/boot/sbl - gmake mmcsd_flashwriter SOC=OMAPL138 BOARD=lcdkOMAPL138 BOOTMODE=mmcsd jÆjÁÐjÎNjÐjjÒ}rÇÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÈÐ(jò)�rÉÐ}rÊÐ(jÅX1Build the MMCSD flash writer using below commandsrËÐjÆjÅÐjÎj{ËjÐjõjÒ}rÌÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKøjÞ]rÍÐjçX1Build the MMCSD flash writer using below commandsrÎÐ…�rÏÐ}rÐÐ(jÅjËÐjÆjÉÐubaubjt)�rÑÐ}rÒÐ(jÅUjÒ}rÓÐ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjÅÐjÞ]rÔÐ(j{)�rÕÐ}rÖÐ(jÅX)cd /packages/ti/boot/sblr×ÐjÒ}rØÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÑÐjÞ]rÙÐjò)�rÚÐ}rÛÐ(jÅj×ÐjÆjÕÐjÎj{ËjÐjõjÒ}rÜÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKújÞ]rÝÐjçX)cd /packages/ti/boot/sblrÞÐ…�rßÐ}ràÐ(jÅj×ÐjÆjÚÐubaubajÐjubj{)�ráÐ}râÐ(jÅXGgmake mmcsd_flashwriter SOC=OMAPL138 BOARD=lcdkOMAPL138 BOOTMODE=mmcsd jÒ}rãÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÑÐjÞ]räÐjò)�råÐ}ræÐ(jÅXFgmake mmcsd_flashwriter SOC=OMAPL138 BOARD=lcdkOMAPL138 BOOTMODE=mmcsdrçÐjÆjáÐjÎj{ËjÐjõjÒ}rèÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKûjÞ]réÐjçXFgmake mmcsd_flashwriter SOC=OMAPL138 BOARD=lcdkOMAPL138 BOOTMODE=mmcsdrêÐ…�rëÐ}rìÐ(jÅjçÐjÆjåÐubaubajÐjubejÐjwubeubj{)�ríÐ}rîÐ(jÅXFCopy 'app' to SD card and insert the card into MMCSD slot of the boardjÆjÁÐjÎj{ËjÐjjÒ}rïÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rðÐjò)�rñÐ}ròÐ(jÅXFCopy 'app' to SD card and insert the card into MMCSD slot of the boardróÐjÆjíÐjÎj{ËjÐjõjÒ}rôÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKþjÞ]rõÐjçXFCopy 'app' to SD card and insert the card into MMCSD slot of the boardröÐ…�r÷Ð}røÐ(jÅjóÐjÆjñÐubaubaubj{)�rùÐ}rúÐ(jÅX&Copy MLO to MMCSD flash writer binary folder - **/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138**. Make sure config file also present in the MMCSD flash writer binary folder. - MLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/lcdkOMAPL138/mmcsd/bin** - app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different). - config helps specify the memory map. The default config file can be found at: **/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138**. This config file may be altered to custom user settings if needed. jÆjÁÐjÎNjÐjjÒ}rûÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rüÐ(jò)�rýÐ}rþÐ(jÅXÏCopy MLO to MMCSD flash writer binary folder - **/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138**. Make sure config file also present in the MMCSD flash writer binary folder.jÆjùÐjÎj{ËjÐjõjÒ}rÿÐ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÑ(jçX/Copy MLO to MMCSD flash writer binary folder - rÑ…�rÑ}rÑ(jÅX/Copy MLO to MMCSD flash writer binary folder - jÆjýÐubjÚ)�rÑ}rÑ(jÅXS**/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138**jÒ}rÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjýÐjÞ]rÑjçXO/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138rÑ…�r Ñ}r Ñ(jÅUjÆjÑubajÐjâubjçXM. Make sure config file also present in the MMCSD flash writer binary folder.r Ñ…�r Ñ}r Ñ(jÅXM. Make sure config file also present in the MMCSD flash writer binary folder.jÆjýÐubeubjt)�rÑ}rÑ(jÅUjÒ}rÑ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjùÐjÞ]rÑ(j{)�rÑ}rÑ(jÅXŸMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/lcdkOMAPL138/mmcsd/bin**jÒ}rÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÑjÞ]rÑjò)�rÑ}rÑ(jÅXŸMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: **/packages/ti/boot/sbl/binary/lcdkOMAPL138/mmcsd/bin**jÆjÑjÎj{ËjÐjõjÒ}rÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÑ(jçXWMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: rÑ…�rÑ}rÑ(jÅXWMLO is the SBL formatted by the aforementioned tools. A pre-built MLO can be found at: jÆjÑubjÚ)�rÑ}rÑ(jÅXH**/packages/ti/boot/sbl/binary/lcdkOMAPL138/mmcsd/bin**jÒ}rÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÑjÞ]r ÑjçXD/packages/ti/boot/sbl/binary/lcdkOMAPL138/mmcsd/binr!Ñ…�r"Ñ}r#Ñ(jÅUjÆjÑubajÐjâubeubajÐjubj{)�r$Ñ}r%Ñ(jÅX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).jÒ}r&Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÑjÞ]r'Ñjò)�r(Ñ}r)Ñ(jÅX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).r*ÑjÆj$ÑjÎj{ËjÐjõjÒ}r+Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r,ÑjçX°app is the target application to be booted and also formatted by the aforementioned tools. (Note that the tools for making the bootable MLO and the loadable app are different).r-Ñ…�r.Ñ}r/Ñ(jÅj*ÑjÆj(ÑubaubajÐjubj{)�r0Ñ}r1Ñ(jÅXæconfig helps specify the memory map. The default config file can be found at: **/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138**. This config file may be altered to custom user settings if needed. jÒ}r2Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÑjÞ]r3Ñjò)�r4Ñ}r5Ñ(jÅXåconfig helps specify the memory map. The default config file can be found at: **/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138**. This config file may be altered to custom user settings if needed.jÆj0ÑjÎj{ËjÐjõjÒ}r6Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM jÞ]r7Ñ(jçXNconfig helps specify the memory map. The default config file can be found at: r8Ñ…�r9Ñ}r:Ñ(jÅXNconfig helps specify the memory map. The default config file can be found at: jÆj4ÑubjÚ)�r;Ñ}r<Ñ(jÅXS**/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138**jÒ}r=Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj4ÑjÞ]r>ÑjçXO/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138r?Ñ…�r@Ñ}rAÑ(jÅUjÆj;ÑubajÐjâubjçXD. This config file may be altered to custom user settings if needed.rBÑ…�rCÑ}rDÑ(jÅXD. This config file may be altered to custom user settings if needed.jÆj4ÑubeubajÐjubejÐjwubeubj{)�rEÑ}rFÑ(jÅX™Connect the USB serial port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’.jÆjÁÐjÎj{ËjÐjjÒ}rGÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rHÑjò)�rIÑ}rJÑ(jÅX™Connect the USB serial port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’.rKÑjÆjEÑjÎj{ËjÐjõjÒ}rLÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rMÑjçX™Connect the USB serial port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’.rNÑ…�rOÑ}rPÑ(jÅjKÑjÆjIÑubaubaubj{)�rQÑ}rRÑ(jÅXÙConnect to the board with CCS. Launch target configuration, connect to ARM core first (not needed for C6748) and then connect to the DSP C674x core. GEL file will run on-connect and do basic board-level initializationjÆjÁÐjÎj{ËjÐjjÒ}rSÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rTÑjò)�rUÑ}rVÑ(jÅXÙConnect to the board with CCS. Launch target configuration, connect to ARM core first (not needed for C6748) and then connect to the DSP C674x core. GEL file will run on-connect and do basic board-level initializationrWÑjÆjQÑjÎj{ËjÐjõjÒ}rXÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rYÑjçXÙConnect to the board with CCS. Launch target configuration, connect to ARM core first (not needed for C6748) and then connect to the DSP C674x core. GEL file will run on-connect and do basic board-level initializationrZÑ…�r[Ñ}r\Ñ(jÅjWÑjÆjUÑubaubaubj{)�r]Ñ}r^Ñ(jÅXÈLoad the flash writer, mmcsd_flash_writer.out, to the connected core - mmcsd_flash_writer.out can be found at: **/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138** jÆjÁÐjÎNjÐjjÒ}r_Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r`Ñ(jò)�raÑ}rbÑ(jÅXDLoad the flash writer, mmcsd_flash_writer.out, to the connected corercÑjÆj]ÑjÎj{ËjÐjõjÒ}rdÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]reÑjçXDLoad the flash writer, mmcsd_flash_writer.out, to the connected corerfÑ…�rgÑ}rhÑ(jÅjcÑjÆjaÑubaubjt)�riÑ}rjÑ(jÅUjÒ}rkÑ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj]ÑjÞ]rlÑj{)�rmÑ}rnÑ(jÅX|mmcsd_flash_writer.out can be found at: **/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138** jÒ}roÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjiÑjÞ]rpÑjò)�rqÑ}rrÑ(jÅX{mmcsd_flash_writer.out can be found at: **/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138**jÆjmÑjÎj{ËjÐjõjÒ}rsÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rtÑ(jçX(mmcsd_flash_writer.out can be found at: ruÑ…�rvÑ}rwÑ(jÅX(mmcsd_flash_writer.out can be found at: jÆjqÑubjÚ)�rxÑ}ryÑ(jÅXS**/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138**jÒ}rzÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjqÑjÞ]r{ÑjçXO/packages/ti/boot/sbl/tools/flashWriter/mmcsd/bin/lcdkOMAPL138r|Ñ…�r}Ñ}r~Ñ(jÅUjÆjxÑubajÐjâubeubajÐjubajÐjwubeubj{)�rÑ}r€Ñ(jÅXcRun the MMCSD flash writer application. You will see the following logs on the EVM's UART console: jÆjÁÐjÎj{ËjÐjjÒ}r�Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r‚Ñjò)�rƒÑ}r„Ñ(jÅXbRun the MMCSD flash writer application. You will see the following logs on the EVM's UART console:r…ÑjÆjÑjÎj{ËjÐjõjÒ}r†Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r‡ÑjçXbRun the MMCSD flash writer application. You will see the following logs on the EVM's UART console:rˆÑ…�r‰Ñ}rŠÑ(jÅj…ÑjÆjƒÑubaubaubeubj)�r‹Ñ}rŒÑ(jÅXÍOpening MMCSD handle... MMCSD handle opened! Parsing config file and flashing content to MMCSD... Parsed config line, received parameters: filename = MLO, address = 0x200 Size of MLO is 0xb9b8 Loading binary to memory ... Finished loading binary to memory! Flashed MLO to offset 0x200! Read flash memory at 0x200, checking flashed content... Verified flash data equal expected data! Successfully flashed memory content!jÆj¡ÐjÎj{ËjÐjjÒ}r�Ñ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM}/jÝhjÞ]rŽÑjçXÍOpening MMCSD handle... MMCSD handle opened! Parsing config file and flashing content to MMCSD... Parsed config line, received parameters: filename = MLO, address = 0x200 Size of MLO is 0xb9b8 Loading binary to memory ... Finished loading binary to memory! Flashed MLO to offset 0x200! Read flash memory at 0x200, checking flashed content... Verified flash data equal expected data! Successfully flashed memory content!r�Ñ…�r�Ñ}r‘Ñ(jÅUjÆj‹Ñubaubjò)�r’Ñ}r“Ñ(jÅXŸProcedure to flash the MLO described above is applicable to C6748 also. Use C6748 for OMAPL138 and lcdkC6748 for lcdkOMAPL138 in all the paths mentioned above.r”ÑjÆj¡ÐjÎj{ËjÐjõjÒ}r•Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM-jÝhjÞ]r–ÑjçXŸProcedure to flash the MLO described above is applicable to C6748 also. Use C6748 for OMAPL138 and lcdkC6748 for lcdkOMAPL138 in all the paths mentioned above.r—Ñ…�r˜Ñ}r™Ñ(jÅj”ÑjÆj’Ñubaubj)�ršÑ}r›Ñ(jÅXBMLO offset in config file is set to 200 by default which indicates that MLO will be written to second sector of the SD card. MLO offset can be any non- zero value which is multiple of 512 and should be within first 2Mbytes of SD card memory. DO NOT set the MLO offset to '0' which will corrupt the file system on the card.jÆj¡ÐjÎj{ËjÐjjÒ}rœÑ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM�/jÝhjÞ]r�ÑjçXBMLO offset in config file is set to 200 by default which indicates that MLO will be written to second sector of the SD card. MLO offset can be any non- zero value which is multiple of 512 and should be within first 2Mbytes of SD card memory. DO NOT set the MLO offset to '0' which will corrupt the file system on the card.ržÑ…�rŸÑ}r Ñ(jÅUjÆjšÑubaubjë)�r¡Ñ}r¢Ñ(jÅX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.jÆj¡ÐjÎj{ËjÐjïjÒ}r£Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¤Ñjò)�r¥Ñ}r¦Ñ(jÅX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.r§ÑjÆj¡ÑjÎj{ËjÐjõjÒ}r¨Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM8jÞ]r©ÑjçX‡This application will flash the image at required offset without taking into consideration any overwriting to previously flashed image.rªÑ…�r«Ñ}r¬Ñ(jÅj§ÑjÆj¥Ñubaubaubjc)�r­Ñ}r®Ñ(jÅUjÆj¡ÐjÎj{ËjÐjfjÒ}r¯Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM;jÝhjÞ]r°Ñji)�r±Ñ}r²Ñ(jÅUjlKjÆj­ÑjÎj{ËjÐjÜjÒ}r³Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�r´Ñ}rµÑ(jÅUjÆj=ÐjÎj{ËjÐjÑjÒ}r¶Ñ(jÔ]jÕ]jÖ]j×]r·ÑUbooting-via-mmcsdr¸ÑajÚ]r¹ÑhhaujÜM>jÝhjÞ]rºÑ(jà)�r»Ñ}r¼Ñ(jÅXBooting via MMCSDr½ÑjÆj´ÑjÎj{ËjÐjäjÒ}r¾Ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM>jÝhjÞ]r¿ÑjçXBooting via MMCSDrÀÑ…�rÁÑ}rÂÑ(jÅj½ÑjÆj»Ñubaubj )�rÃÑ}rÄÑ(jÅUjÆj´ÑjÎj{ËjÐj jÒ}rÅÑ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜM@jÝhjÞ]rÆÑ(j{)�rÇÑ}rÈÑ(jÅX©Set the OMAPL138/C6748 LCDK to MMCSD bootmode by configuring the SW1 DIP switches 1-4 to 'OFF OFF OFF ON'. Other switch positions on SW1 are don’t care for MMCSD boot.jÆjÃÑjÎj{ËjÐjjÒ}rÉÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÊÑjò)�rËÑ}rÌÑ(jÅX©Set the OMAPL138/C6748 LCDK to MMCSD bootmode by configuring the SW1 DIP switches 1-4 to 'OFF OFF OFF ON'. Other switch positions on SW1 are don’t care for MMCSD boot.rÍÑjÆjÇÑjÎj{ËjÐjõjÒ}rÎÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM@jÞ]rÏÑjçX©Set the OMAPL138/C6748 LCDK to MMCSD bootmode by configuring the SW1 DIP switches 1-4 to 'OFF OFF OFF ON'. Other switch positions on SW1 are don’t care for MMCSD boot.rÐÑ…�rÑÑ}rÒÑ(jÅjÍÑjÆjËÑubaubaubj{)�rÓÑ}rÔÑ(jÅX˜Connect the USB serial port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’jÆjÃÑjÎj{ËjÐjjÒ}rÕÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÖÑjò)�r×Ñ}rØÑ(jÅX˜Connect the USB serial port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’rÙÑjÆjÓÑjÎj{ËjÐjõjÒ}rÚÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMCjÞ]rÛÑjçX˜Connect the USB serial port of the EVM to host PC. Open serial communication applications like TeraTerm, MiniCom, etc and configure for ‘115200 8N1’rÜÑ…�rÝÑ}rÞÑ(jÅjÙÑjÆj×Ñubaubaubj{)�rßÑ}ràÑ(jÅXPower on the board jÆjÃÑjÎj{ËjÐjjÒ}ráÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]râÑjò)�rãÑ}räÑ(jÅXPower on the boardråÑjÆjßÑjÎj{ËjÐjõjÒ}ræÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMFjÞ]rçÑjçXPower on the boardrèÑ…�réÑ}rêÑ(jÅjåÑjÆjãÑubaubaubeubjò)�rëÑ}rìÑ(jÅXWBelow is an example of OMAPL138 SBL successfully booting the GPIO LED blink applicationríÑjÆj´ÑjÎj{ËjÐjõjÒ}rîÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMHjÝhjÞ]rïÑjçXWBelow is an example of OMAPL138 SBL successfully booting the GPIO LED blink applicationrðÑ…�rñÑ}ròÑ(jÅjíÑjÆjëÑubaubjR)�róÑ}rôÑ(jÅX/.. Image:: ../images/Omapl138_boot_example.png jÆj´ÑjÎj{ËjÐjZjÒ}rõÑ(UuriX(rtos/../images/Omapl138_boot_example.pngröÑj×]jÖ]jÔ]jÕ]jX}r÷ÑU*jöÑsjÚ]ujÜMLjÝhjÞ]ubjc)�røÑ}rùÑ(jÅUjÆj´ÑjÎj{ËjÐjfjÒ}rúÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMMjÝhjÞ]rûÑji)�rüÑ}rýÑ(jÅUjlKjÆjøÑjÎj{ËjÐjÜjÒ}rþÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubeubjÇ)�rÿÑ}rÒ(jÅUjKjÆjiËjÎj{ËjÐjÑjÒ}rÒ(jÔ]rÒj-ÅajÕ]jÖ]j×]rÒUid128rÒajÚ]ujÜMPjÝhjÞ]rÒ(jà)�rÒ}rÒ(jÅX Memory UsagerÒjÆjÿÑjÎj{ËjÐjäjÒ}r Ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMPjÝhjÞ]r ÒjçX Memory Usager Ò…�r Ò}r Ò(jÅjÒjÆjÒubaubjò)�rÒ}rÒ(jÅXBSBL uses 0x20000 bytes from shared RAM (0x80000000 to 0x8001FFFF).rÒjÆjÿÑjÎj{ËjÐjõjÒ}rÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMRjÝhjÞ]rÒjçXBSBL uses 0x20000 bytes from shared RAM (0x80000000 to 0x8001FFFF).rÒ…�rÒ}rÒ(jÅjÒjÆjÒubaubjc)�rÒ}rÒ(jÅUjÆjÿÑjÎj{ËjÐjfjÒ}rÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMTjÝhjÞ]rÒji)�rÒ}rÒ(jÅUjlKjÆjÒjÎj{ËjÐjÜjÒ}rÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjë)�rÒ}rÒ(jÅX·app should not have loadable sections residing in SBL memory region to prevent overwriting SBL during load time. It is, however, free to use SBL memory after it is loaded and running.jÆjÿÑjÎj{ËjÐjïjÒ}rÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r Òjò)�r!Ò}r"Ò(jÅX·app should not have loadable sections residing in SBL memory region to prevent overwriting SBL during load time. It is, however, free to use SBL memory after it is loaded and running.r#ÒjÆjÒjÎj{ËjÐjõjÒ}r$Ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMWjÞ]r%ÒjçX·app should not have loadable sections residing in SBL memory region to prevent overwriting SBL during load time. It is, however, free to use SBL memory after it is loaded and running.r&Ò…�r'Ò}r(Ò(jÅj#ÒjÆj!Òubaubaubjc)�r)Ò}r*Ò(jÅUjÆjÿÑjÎj{ËjÐjfjÒ}r+Ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜM[jÝhjÞ]r,Òji)�r-Ò}r.Ò(jÅUjlKjÆj)ÒjÎj{ËjÐjÜjÒ}r/Ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�r0Ò}r1Ò(jÅUjÆjiËjÎj{ËjÐjÑjÒ}r2Ò(jÔ]jÕ]jÖ]j×]r3ÒUadditional-detailsr4ÒajÚ]r5Òh½aujÜM^jÝhjÞ]r6Ò(jà)�r7Ò}r8Ò(jÅXAdditional Detailsr9ÒjÆj0ÒjÎj{ËjÐjäjÒ}r:Ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜM^jÝhjÞ]r;ÒjçXAdditional Detailsr<Ò…�r=Ò}r>Ò(jÅj9ÒjÆj7Òubaubjò)�r?Ò}r@Ò(jÅXCUse below commands to clean and build the SBL and associated tools.rAÒjÆj0ÒjÎj{ËjÐjõjÒ}rBÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM`jÝhjÞ]rCÒjçXCUse below commands to clean and build the SBL and associated tools.rDÒ…�rEÒ}rFÒ(jÅjAÒjÆj?ÒubaubjÇ)�rGÒ}rHÒ(jÅUjÆj0ÒjÎj{ËjÐjÑjÒ}rIÒ(jÔ]jÕ]jÖ]j×]rJÒU initial-stepsrKÒajÚ]rLÒh£aujÜMcjÝhjÞ]rMÒ(jà)�rNÒ}rOÒ(jÅX Initial StepsrPÒjÆjGÒjÎj{ËjÐjäjÒ}rQÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMcjÝhjÞ]rRÒjçX Initial StepsrSÒ…�rTÒ}rUÒ(jÅjPÒjÆjNÒubaubjò)�rVÒ}rWÒ(jÅX<Setup the environment variables to configure the build toolsrXÒjÆjGÒjÎj{ËjÐjõjÒ}rYÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMejÝhjÞ]rZÒjçX<Setup the environment variables to configure the build toolsr[Ò…�r\Ò}r]Ò(jÅjXÒjÆjVÒubaubjò)�r^Ò}r_Ò(jÅXcd /packagesr`ÒjÆjGÒjÎj{ËjÐjõjÒ}raÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMgjÝhjÞ]rbÒjçXcd /packagesrcÒ…�rdÒ}reÒ(jÅj`ÒjÆj^Òubaubjò)�rfÒ}rgÒ(jÅXRun pdksetupenv scriptrhÒjÆjGÒjÎj{ËjÐjõjÒ}riÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMijÝhjÞ]rjÒjçXRun pdksetupenv scriptrkÒ…�rlÒ}rmÒ(jÅjhÒjÆjfÒubaubjò)�rnÒ}roÒ(jÅXcd ti/boot/sblrpÒjÆjGÒjÎj{ËjÐjõjÒ}rqÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMkjÝhjÞ]rrÒjçXcd ti/boot/sblrsÒ…�rtÒ}ruÒ(jÅjpÒjÆjnÒubaubeubjÇ)�rvÒ}rwÒ(jÅUjÆj0ÒjÎj{ËjÐjÑjÒ}rxÒ(jÔ]jÕ]jÖ]j×]ryÒU cleaning-sblrzÒajÚ]r{ÒjªaujÜMnjÝhjÞ]r|Ò(jà)�r}Ò}r~Ò(jÅX Cleaning SBLrÒjÆjvÒjÎj{ËjÐjäjÒ}r€Ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMnjÝhjÞ]r�ÒjçX Cleaning SBLr‚Ò…�rƒÒ}r„Ò(jÅjÒjÆj}Òubaubjò)�r…Ò}r†Ò(jÅXBgmake clean SOC= BOARD= BOOTMODE=r‡ÒjÆjvÒjÎj{ËjÐjõjÒ}rˆÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMpjÝhjÞ]r‰ÒjçXBgmake clean SOC= BOARD= BOOTMODE=rŠÒ…�r‹Ò}rŒÒ(jÅj‡ÒjÆj…ÒubaubeubjÇ)�r�Ò}rŽÒ(jÅUjÆj0ÒjÎj{ËjÐjÑjÒ}r�Ò(jÔ]jÕ]jÖ]j×]r�ÒU building-sblr‘ÒajÚ]r’Òh aujÜMsjÝhjÞ]r“Ò(jà)�r”Ò}r•Ò(jÅX Building SBLr–ÒjÆj�ÒjÎj{ËjÐjäjÒ}r—Ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMsjÝhjÞ]r˜ÒjçX Building SBLr™Ò…�ršÒ}r›Ò(jÅj–ÒjÆj”Òubaubjò)�rœÒ}r�Ò(jÅX<gmake SOC= BOARD= BOOTMODE=ržÒjÆj�ÒjÎj{ËjÐjõjÒ}rŸÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMujÝhjÞ]r ÒjçX<gmake SOC= BOARD= BOOTMODE=r¡Ò…�r¢Ò}r£Ò(jÅjžÒjÆjœÒubaubeubjÇ)�r¤Ò}r¥Ò(jÅUjÆj0ÒjÎj{ËjÐjÑjÒ}r¦Ò(jÔ]jÕ]jÖ]j×]r§ÒUcleaning-flash-writerr¨ÒajÚ]r©ÒhtaujÜMxjÝhjÞ]rªÒ(jà)�r«Ò}r¬Ò(jÅXCleaning Flash Writerr­ÒjÆj¤ÒjÎj{ËjÐjäjÒ}r®Ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMxjÝhjÞ]r¯ÒjçXCleaning Flash Writerr°Ò…�r±Ò}r²Ò(jÅj­ÒjÆj«Òubaubjò)�r³Ò}r´Ò(jÅXQgmake _clean SOC= BOARD= BOOTMODE=rµÒjÆj¤ÒjÎj{ËjÐjõjÒ}r¶Ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMzjÝhjÞ]r·ÒjçXQgmake _clean SOC= BOARD= BOOTMODE=r¸Ò…�r¹Ò}rºÒ(jÅjµÒjÆj³ÒubaubeubjÇ)�r»Ò}r¼Ò(jÅUjÆj0ÒjÎj{ËjÐjÑjÒ}r½Ò(jÔ]jÕ]jÖ]j×]r¾ÒUbuilding-flash-writerr¿ÒajÚ]rÀÒj„aujÜM~jÝhjÞ]rÁÒ(jà)�rÂÒ}rÃÒ(jÅXbuilding-flash-writerrÄÒjÆj»ÒjÎj{ËjÐjäjÒ}rÅÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM~jÝhjÞ]rÆÒjçXbuilding-flash-writerrÇÒ…�rÈÒ}rÉÒ(jÅjÄÒjÆjÂÒubaubjò)�rÊÒ}rËÒ(jÅXKgmake SOC= BOARD= BOOTMODE=rÌÒjÆj»ÒjÎj{ËjÐjõjÒ}rÍÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM€jÝhjÞ]rÎÒjçXKgmake SOC= BOARD= BOOTMODE=rÏÒ…�rÐÒ}rÑÒ(jÅjÌÒjÆjÊÒubaubjt)�rÒÒ}rÓÒ(jÅUjÆj»ÒjÎj{ËjÐjwjÒ}rÔÒ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMƒjÝhjÞ]rÕÒ(j{)�rÖÒ}r×Ò(jÅX+use 'make' instead of 'gmake' on Linux hostrØÒjÆjÒÒjÎj{ËjÐjjÒ}rÙÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÚÒjò)�rÛÒ}rÜÒ(jÅjØÒjÆjÖÒjÎj{ËjÐjõjÒ}rÝÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMƒjÞ]rÞÒjçX+use 'make' instead of 'gmake' on Linux hostrßÒ…�ràÒ}ráÒ(jÅjØÒjÆjÛÒubaubaubj{)�râÒ}rãÒ(jÅX( - OMAPL137, OMAPL138 or C6748räÒjÆjÒÒjÎj{ËjÐjjÒ}råÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ræÒjò)�rçÒ}rèÒ(jÅjäÒjÆjâÒjÎj{ËjÐjõjÒ}réÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM„jÞ]rêÒjçX( - OMAPL137, OMAPL138 or C6748rëÒ…�rìÒ}ríÒ(jÅjäÒjÆjçÒubaubaubj{)�rîÒ}rïÒ(jÅX5 - evmOMAPL137, lcdkOMAPL138 or lcdkC6748rðÒjÆjÒÒjÎj{ËjÐjjÒ}rñÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ròÒjò)�róÒ}rôÒ(jÅjðÒjÆjîÒjÎj{ËjÐjõjÒ}rõÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM…jÞ]röÒjçX5 - evmOMAPL137, lcdkOMAPL138 or lcdkC6748r÷Ò…�røÒ}rùÒ(jÅjðÒjÆjóÒubaubaubj{)�rúÒ}rûÒ(jÅX5 - spi or mmcsd as supported by the devicerüÒjÆjÒÒjÎj{ËjÐjjÒ}rýÒ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rþÒjò)�rÿÒ}rÓ(jÅjüÒjÆjúÒjÎj{ËjÐjõjÒ}rÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM†jÞ]rÓjçX5 - spi or mmcsd as supported by the devicerÓ…�rÓ}rÓ(jÅjüÒjÆjÿÒubaubaubj{)�rÓ}rÓ(jÅXO - spi_flashwriter for spi boot mmcsd_flashwriter for mmcsd boot jÆjÒÒjÎj{ËjÐjjÒ}rÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r Ójò)�r Ó}r Ó(jÅXN - spi_flashwriter for spi boot mmcsd_flashwriter for mmcsd bootr ÓjÆjÓjÎj{ËjÐjõjÒ}r Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‡jÞ]rÓjçXN - spi_flashwriter for spi boot mmcsd_flashwriter for mmcsd bootrÓ…�rÓ}rÓ(jÅj ÓjÆj Óubaubaubeubj)�rÓ}rÓ(jÅXIExamples: Cleaning & Building OMAPL137 SBL gmake clean SOC=OMAPL137 BOARD=evmOMAPL137 BOOTMODE=spi gmake SOC=OMAPL137 BOARD=evmOMAPL137 BOOTMODE=spi Cleaning & Building OMAPL137 flash writer gmake spi_flashwriter_clean SOC=OMAPL137 BOARD=evmOMAPL137 BOOTMODE=spi gmake spi_flashwriter SOC=OMAPL137 BOARD=evmOMAPL137 BOOTMODE=spijÆj»ÒjÎj{ËjÐjjÒ}rÓ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMè/jÝhjÞ]rÓjçXIExamples: Cleaning & Building OMAPL137 SBL gmake clean SOC=OMAPL137 BOARD=evmOMAPL137 BOOTMODE=spi gmake SOC=OMAPL137 BOARD=evmOMAPL137 BOOTMODE=spi Cleaning & Building OMAPL137 flash writer gmake spi_flashwriter_clean SOC=OMAPL137 BOARD=evmOMAPL137 BOOTMODE=spi gmake spi_flashwriter SOC=OMAPL137 BOARD=evmOMAPL137 BOOTMODE=spirÓ…�rÓ}rÓ(jÅUjÆjÓubaubjò)�rÓ}rÓ(jÅX On successful build, SBL .out and MLO will be created at **/packages/ti/boot/sbl/binary///bin** and flash writer binary will be created at **/packages/ti/boot/sbl/tools/flashWriter//bin/**jÆj»ÒjÎj{ËjÐjõjÒ}rÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM•jÝhjÞ]rÓ(jçX9On successful build, SBL .out and MLO will be created at rÓ…�rÓ}rÓ(jÅX9On successful build, SBL .out and MLO will be created at jÆjÓubjÚ)�r Ó}r!Ó(jÅXN**/packages/ti/boot/sbl/binary///bin**jÒ}r"Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÓjÞ]r#ÓjçXJ/packages/ti/boot/sbl/binary///binr$Ó…�r%Ó}r&Ó(jÅUjÆj ÓubajÐjâubjçX, and flash writer binary will be created at r'Ó…�r(Ó}r)Ó(jÅX, and flash writer binary will be created at jÆjÓubjÚ)�r*Ó}r+Ó(jÅXY**/packages/ti/boot/sbl/tools/flashWriter//bin/**jÒ}r,Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÓjÞ]r-ÓjçXU/packages/ti/boot/sbl/tools/flashWriter//bin/r.Ó…�r/Ó}r0Ó(jÅUjÆj*ÓubajÐjâubeubeubeubeubeubjÇ)�r1Ó}r2Ó(jÅUjÆj�‚jÎj¥‚jÐjÑjÒ}r3Ó(jÔ]jÕ]jÖ]j×]r4ÓUbootloader-debuggingr5ÓajÚ]r6ÓhËaujÜKkjÝhjÞ]r7Ó(jà)�r8Ó}r9Ó(jÅXBootloader Debuggingr:ÓjÆj1ÓjÎj¥‚jÐjäjÒ}r;Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜKkjÝhjÞ]r<ÓjçXBootloader Debuggingr=Ó…�r>Ó}r?Ó(jÅj:ÓjÆj8ÓubaubjÇ)�r@Ó}rAÓ(jÅUjÆj1ÓjÎj:XTsource/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/Boot_Debug.rst.incrBÓ…�rCÓ}rDÓbjÐjÑjÒ}rEÓ(jÔ]jÕ]jÖ]j×]rFÓU&common-steps-to-debug-application-bootrGÓajÚ]rHÓh�aujÜKjÝhjÞ]rIÓ(jà)�rJÓ}rKÓ(jÅX&Common Steps to debug application bootrLÓjÆj@ÓjÎjCÓjÐjäjÒ}rMÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rNÓjçX&Common Steps to debug application bootrOÓ…�rPÓ}rQÓ(jÅjLÓjÆjJÓubaubjò)�rRÓ}rSÓ(jÅXBootloading an application is a system level issue which is impacted by hardware as well as software setup. There are some common steps that users are expected to check while debugging boot related issues. This section discusses common issues to checkout when debugging application boot.rTÓjÆj@ÓjÎjCÓjÐjõjÒ}rUÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rVÓjçXBootloading an application is a system level issue which is impacted by hardware as well as software setup. There are some common steps that users are expected to check while debugging boot related issues. This section discusses common issues to checkout when debugging application boot.rWÓ…�rXÓ}rYÓ(jÅjTÓjÆjRÓubaubjc)�rZÓ}r[Ó(jÅUjÆj@ÓjÎjCÓjÐjfjÒ}r\Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]r]Óji)�r^Ó}r_Ó(jÅUjlKjÆjZÓjÎjCÓjÐjÜjÒ}r`Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjÇ)�raÓ}rbÓ(jÅUjÆj@ÓjÎjCÓjÐjÑjÒ}rcÓ(jÔ]jÕ]jÖ]j×]rdÓUhardware-debug-stepsreÓajÚ]rfÓj®aujÜK jÝhjÞ]rgÓ(jà)�rhÓ}riÓ(jÅXHardware Debug StepsrjÓjÆjaÓjÎjCÓjÐjäjÒ}rkÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rlÓjçXHardware Debug StepsrmÓ…�rnÓ}roÓ(jÅjjÓjÆjhÓubaubj)�rpÓ}rqÓ(jÅX-
jÆjaÓjÎjCÓjÐjjÒ}rrÓ(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rsÓjçX-
rtÓ…�ruÓ}rvÓ(jÅUjÆjpÓubaubjò)�rwÓ}rxÓ(jÅX%**Input clocks and power sequencing**ryÓjÆjaÓjÎjCÓjÐjõjÒ}rzÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r{ÓjÚ)�r|Ó}r}Ó(jÅjyÓjÒ}r~Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÆjwÓjÞ]rÓjçX!Input clocks and power sequencingr€Ó…�r�Ó}r‚Ó(jÅUjÆj|ÓubajÐjâubaubjt)�rƒÓ}r„Ó(jÅUjÆjaÓjÎjCÓjÐjwjÒ}r…Ó(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r†Ó(j{)�r‡Ó}rˆÓ(jÅX�Ensure that correct power sequencing is occurring on your board. Power sequencing specifications can be found in the data manual.jÆjƒÓjÎjCÓjÐjjÒ}r‰Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŠÓjò)�r‹Ó}rŒÓ(jÅX�Ensure that correct power sequencing is occurring on your board. Power sequencing specifications can be found in the data manual.r�ÓjÆj‡ÓjÎjCÓjÐjõjÒ}rŽÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�ÓjçX�Ensure that correct power sequencing is occurring on your board. Power sequencing specifications can be found in the data manual.r�Ó…�r‘Ó}r’Ó(jÅj�ÓjÆj‹Óubaubaubj{)�r“Ó}r”Ó(jÅX†Check the system clock and ensure this is outputting the expected frequency and the signal is swinging rail to rail (should be a 1.8V signal). If you have an external oscillator, it should be outputting a square wave at the desired frequency. If you are using a crystal , you should have a sine wave at the desired frequency at XTALIN. XTALOUT should be similar (may be distorted a little).jÆjƒÓjÎjCÓjÐjjÒ}r•Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r–Ójò)�r—Ó}r˜Ó(jÅX†Check the system clock and ensure this is outputting the expected frequency and the signal is swinging rail to rail (should be a 1.8V signal). If you have an external oscillator, it should be outputting a square wave at the desired frequency. If you are using a crystal , you should have a sine wave at the desired frequency at XTALIN. XTALOUT should be similar (may be distorted a little).r™ÓjÆj“ÓjÎjCÓjÐjõjÒ}ršÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r›ÓjçX†Check the system clock and ensure this is outputting the expected frequency and the signal is swinging rail to rail (should be a 1.8V signal). If you have an external oscillator, it should be outputting a square wave at the desired frequency. If you are using a crystal , you should have a sine wave at the desired frequency at XTALIN. XTALOUT should be similar (may be distorted a little).rœÓ…�r�Ó}ržÓ(jÅj™ÓjÆj—Óubaubaubj{)�rŸÓ}r Ó(jÅX¡Check the power on reset signal PORZ. This signal should stay low throughout the power sequencing and go high when the power AND high frequency clock are stable.jÆjƒÓjÎjCÓjÐjjÒ}r¡Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¢Ójò)�r£Ó}r¤Ó(jÅX¡Check the power on reset signal PORZ. This signal should stay low throughout the power sequencing and go high when the power AND high frequency clock are stable.r¥ÓjÆjŸÓjÎjCÓjÐjõjÒ}r¦Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r§ÓjçX¡Check the power on reset signal PORZ. This signal should stay low throughout the power sequencing and go high when the power AND high frequency clock are stable.r¨Ó…�r©Ó}rªÓ(jÅj¥ÓjÆj£Óubaubaubj{)�r«Ó}r¬Ó(jÅX‡If the device has an OBSCLK or CLKOUT then ensure that this pin provides the correct output that matches your software configurations. jÆjƒÓjÎjCÓjÐjjÒ}r­Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r®Ójò)�r¯Ó}r°Ó(jÅX†If the device has an OBSCLK or CLKOUT then ensure that this pin provides the correct output that matches your software configurations.r±ÓjÆj«ÓjÎjCÓjÐjõjÒ}r²Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r³ÓjçX†If the device has an OBSCLK or CLKOUT then ensure that this pin provides the correct output that matches your software configurations.r´Ó…�rµÓ}r¶Ó(jÅj±ÓjÆj¯Óubaubaubeubjò)�r·Ó}r¸Ó(jÅX**Boot pins:**r¹ÓjÆjaÓjÎjCÓjÐjõjÒ}rºÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÝhjÞ]r»ÓjÚ)�r¼Ó}r½Ó(jÅj¹ÓjÒ}r¾Ó(jÔ]jÕ]jÖ]j×]jÚ]ujÆj·ÓjÞ]r¿ÓjçX Boot pins:rÀÓ…�rÁÓ}rÂÓ(jÅUjÆj¼ÓubajÐjâubaubjò)�rÃÓ}rÄÓ(jÅX�Best way to confirm what the device ROM bootloader reads from the pins is to read the register where the Boot pins are latched into the device:rÅÓjÆjaÓjÎjCÓjÐjõjÒ}rÆÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK&jÝhjÞ]rÇÓjçX�Best way to confirm what the device ROM bootloader reads from the pins is to read the register where the Boot pins are latched into the device:rÈÓ…�rÉÓ}rÊÓ(jÅjÅÓjÆjÃÓubaubjt)�rËÓ}rÌÓ(jÅUjÆjaÓjÎjCÓjÐjwjÒ}rÍÓ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK)jÝhjÞ]rÎÓ(j{)�rÏÓ}rÐÓ(jÅX4For AM335x/AM437x: Check the Control_status registerrÑÓjÆjËÓjÎjCÓjÐjjÒ}rÒÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÓÓjò)�rÔÓ}rÕÓ(jÅjÑÓjÆjÏÓjÎjCÓjÐjõjÒ}rÖÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]r×ÓjçX4For AM335x/AM437x: Check the Control_status registerrØÓ…�rÙÓ}rÚÓ(jÅjÑÓjÆjÔÓubaubaubj{)�rÛÓ}rÜÓ(jÅX.For AM57xs: Check CTRL_CORE_BOOTSTRAP registerrÝÓjÆjËÓjÎjCÓjÐjjÒ}rÞÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rßÓjò)�ràÓ}ráÓ(jÅjÝÓjÆjÛÓjÎjCÓjÐjõjÒ}râÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÞ]rãÓjçX.For AM57xs: Check CTRL_CORE_BOOTSTRAP registerräÓ…�råÓ}ræÓ(jÅjÝÓjÆjàÓubaubaubj{)�rçÓ}rèÓ(jÅX0For C66x/K2X devices: Check the DEVSTAT registerréÓjÆjËÓjÎjCÓjÐjjÒ}rêÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rëÓjò)�rìÓ}ríÓ(jÅjéÓjÆjçÓjÎjCÓjÐjõjÒ}rîÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÞ]rïÓjçX0For C66x/K2X devices: Check the DEVSTAT registerrðÓ…�rñÓ}ròÓ(jÅjéÓjÆjìÓubaubaubj{)�róÓ}rôÓ(jÅX3For OMAPL13x/C674x devices: Check BOOTCFG register jÆjËÓjÎjCÓjÐjjÒ}rõÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]röÓjò)�r÷Ó}røÓ(jÅX2For OMAPL13x/C674x devices: Check BOOTCFG registerrùÓjÆjóÓjÎjCÓjÐjõjÒ}rúÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK,jÞ]rûÓjçX2For OMAPL13x/C674x devices: Check BOOTCFG registerrüÓ…�rýÓ}rþÓ(jÅjùÓjÆj÷Óubaubaubeubjò)�rÿÓ}rÔ(jÅX**Boot media connectivity**rÔjÆjaÓjÎjCÓjÐjõjÒ}rÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÝhjÞ]rÔjÚ)�rÔ}rÔ(jÅjÔjÒ}rÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÿÓjÞ]rÔjçXBoot media connectivityrÔ…�r Ô}r Ô(jÅUjÆjÔubajÐjâubaubjò)�r Ô}r Ô(jÅX@Users are required to test their boot interface by running boot loader independent diagnostic tests that confirm that the SOC can read and write from the boot interface. Processor SDK RTOS provides Diagnostic utilities for K2G/AMXX devices and provides POST utility for keystone devices with which the TI EVM was tested.r ÔjÆjaÓjÎjCÓjÐjõjÒ}rÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÝhjÞ]rÔjçX@Users are required to test their boot interface by running boot loader independent diagnostic tests that confirm that the SOC can read and write from the boot interface. Processor SDK RTOS provides Diagnostic utilities for K2G/AMXX devices and provides POST utility for keystone devices with which the TI EVM was tested.rÔ…�rÔ}rÔ(jÅj ÔjÆj Ôubaubjò)�rÔ}rÔ(jÅXzTI Technical documentation like Technical reference manual (AMXX devices), Bootloader USer guide (for C66x/K2X devices) and Bootloader Application notes for OMAPLxx/C674x list default behavior or the ROM bootloader and limitations and constraints for each boot mode. Application developers need to account for this while designing their system to ensure smooth bring up process.rÔjÆjaÓjÎjCÓjÐjõjÒ}rÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÝhjÞ]rÔjçXzTI Technical documentation like Technical reference manual (AMXX devices), Bootloader USer guide (for C66x/K2X devices) and Bootloader Application notes for OMAPLxx/C674x list default behavior or the ROM bootloader and limitations and constraints for each boot mode. Application developers need to account for this while designing their system to ensure smooth bring up process.rÔ…�rÔ}rÔ(jÅjÔjÆjÔubaubjò)�rÔ}rÔ(jÅX+**Signalling on boot media and reset pins**rÔjÆjaÓjÎjCÓjÐjõjÒ}rÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÝhjÞ]rÔjÚ)�r Ô}r!Ô(jÅjÔjÒ}r"Ô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÔjÞ]r#ÔjçX'Signalling on boot media and reset pinsr$Ô…�r%Ô}r&Ô(jÅUjÆj ÔubajÐjâubaubjò)�r'Ô}r(Ô(jÅXìIf software and other hardware debug steps have not helped identify the issue, you may need to hook up a scope or protocol analyzer to check the clocks and the data transfers from the boot media to check if there is any issues that can be identified. Another commonly known issue that impacts boot is noise on the power lines which may cause the SOC to reset or cause a hang on the boot core. Provide these scope shots to TI on E2E forums so TI engineers can confirm that there are no issues.r)ÔjÆjaÓjÎjCÓjÐjõjÒ}r*Ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜK?jÝhjÞ]r+ÔjçXìIf software and other hardware debug steps have not helped identify the issue, you may need to hook up a scope or protocol analyzer to check the clocks and the data transfers from the boot media to check if there is any issues that can be identified. Another commonly known issue that impacts boot is noise on the power lines which may cause the SOC to reset or cause a hang on the boot core. Provide these scope shots to TI on E2E forums so TI engineers can confirm that there are no issues.r,Ô…�r-Ô}r.Ô(jÅj)ÔjÆj'Ôubaubj)�r/Ô}r0Ô(jÅX
jÆjaÓjÎjCÓjÐjjÒ}r1Ô(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKGjÝhjÞ]r2ÔjçX
r3Ô…�r4Ô}r5Ô(jÅUjÆj/ÔubaubeubjÇ)�r6Ô}r7Ô(jÅUjÆj@ÓjÎjCÓjÐjÑjÒ}r8Ô(jÔ]jÕ]jÖ]j×]r9ÔUsoftware-debug-stepsr:ÔajÚ]r;ÔhÙaujÜKLjÝhjÞ]r<Ô(jà)�r=Ô}r>Ô(jÅXSoftware Debug Stepsr?ÔjÆj6ÔjÎjCÓjÐjäjÒ}r@Ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÝhjÞ]rAÔjçXSoftware Debug StepsrBÔ…�rCÔ}rDÔ(jÅj?ÔjÆj=Ôubaubj)�rEÔ}rFÔ(jÅX-
jÆj6ÔjÎjCÓjÐjjÒ}rGÔ(UformatXhtmlj@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKNjÝhjÞ]rHÔjçX-
rIÔ…�rJÔ}rKÔ(jÅUjÆjEÔubaubjhK)�rLÔ}rMÔ(jÅXSBL and app Entry pointsrNÔjÆj6ÔjÎjCÓjÐjlKjÒ}rOÔ(j×]rPÔUsbl-and-app-entry-pointsrQÔajÖ]jÔ]jÕ]jÚ]rRÔh�aujÜNjÝhjÞ]rSÔjçXSBL and app Entry pointsrTÔ…�rUÔ}rVÔ(jÅjNÔjÆjLÔubaubjò)�rWÔ}rXÔ(jÅX“If you don`t see your bootloader executing post boot, a good sanity check is for you to look at the map file for the bootloader and ensure that the entry point matches with the location in the TI or GPHeader in the boot image. this can be done by looking at the entry point in the MLO/_ti.bin/GPheader and ensure that it matches with the location of symbol Entry in the .out/map file for the bootloader.rYÔjÆj6ÔjÎjCÓjÐjõjÒ}rZÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÝhjÞ]r[ÔjçX“If you don`t see your bootloader executing post boot, a good sanity check is for you to look at the map file for the bootloader and ensure that the entry point matches with the location in the TI or GPHeader in the boot image. this can be done by looking at the entry point in the MLO/_ti.bin/GPheader and ensure that it matches with the location of symbol Entry in the .out/map file for the bootloader.r\Ô…�r]Ô}r^Ô(jÅjYÔjÆjWÔubaubjhK)�r_Ô}r`Ô(jÅXSBL and App memory mapraÔjÆj6ÔjÎjCÓjÐjlKjÒ}rbÔ(j×]rcÔUsbl-and-app-memory-maprdÔajÖ]jÔ]jÕ]jÚ]reÔhïaujÜNjÝhjÞ]rfÔjçXSBL and App memory maprgÔ…�rhÔ}riÔ(jÅjaÔjÆj_Ôubaubjò)�rjÔ}rkÔ(jÅXXThe SBL execute from device onchip memory so if your application is also using Onchip memory in addition to DDR memory, developers need to ensure that the code sections in the application do not overlap with memory sections that are used by the SBL. This can cause the SBL to hang during the application boot process and go into an abort state.rlÔjÆj6ÔjÎjCÓjÐjõjÒ}rmÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK_jÝhjÞ]rnÔjçXXThe SBL execute from device onchip memory so if your application is also using Onchip memory in addition to DDR memory, developers need to ensure that the code sections in the application do not overlap with memory sections that are used by the SBL. This can cause the SBL to hang during the application boot process and go into an abort state.roÔ…�rpÔ}rqÔ(jÅjlÔjÆjjÔubaubjò)�rrÔ}rsÔ(jÅXoTo check what memory region is used by the SBL please locate the map file created from building the bootloader.rtÔjÆj6ÔjÎjCÓjÐjõjÒ}ruÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKejÝhjÞ]rvÔjçXoTo check what memory region is used by the SBL please locate the map file created from building the bootloader.rwÔ…�rxÔ}ryÔ(jÅjtÔjÆjrÔubaubjhK)�rzÔ}r{Ô(jÅXFlash Programming verificationr|ÔjÆj6ÔjÎjCÓjÐjlKjÒ}r}Ô(j×]r~ÔUflash-programming-verificationrÔajÖ]jÔ]jÕ]jÚ]r€ÔhaujÜNjÝhjÞ]r�ÔjçXFlash Programming verificationr‚Ô…�rƒÔ}r„Ô(jÅj|ÔjÆjzÔubaubjò)�r…Ô}r†Ô(jÅX¹It is essential to understand that the flash programmer that you use has not just the ability to write the image to flash but should also be able to verify that the image written to flash matches the image that you have created on your host machine. you can use TI flash programming utilities as reference and ensure that the production flashing tools use a method to erase, write and then verify the boot image that is written to the flash.r‡ÔjÆj6ÔjÎjCÓjÐjõjÒ}rˆÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKkjÝhjÞ]r‰ÔjçX¹It is essential to understand that the flash programmer that you use has not just the ability to write the image to flash but should also be able to verify that the image written to flash matches the image that you have created on your host machine. you can use TI flash programming utilities as reference and ensure that the production flashing tools use a method to erase, write and then verify the boot image that is written to the flash.rŠÔ…�r‹Ô}rŒÔ(jÅj‡ÔjÆj…Ôubaubjc)�r�Ô}rŽÔ(jÅUjÆj6ÔjÎjCÓjÐjfjÒ}r�Ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜKsjÝhjÞ]r�Ôji)�r‘Ô}r’Ô(jÅUjlKjÆj�ÔjÎjCÓjÐjÜjÒ}r“Ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�r”Ô}r•Ô(jÅX"DDR timings and configuration /SBLr–ÔjÆj6ÔjÎjCÓjÐjlKjÒ}r—Ô(j×]r˜ÔU!ddr-timings-and-configuration-sblr™ÔajÖ]jÔ]jÕ]jÚ]ršÔhXaujÜNjÝhjÞ]r›ÔjçX"DDR timings and configuration /SBLrœÔ…�r�Ô}ržÔ(jÅj–ÔjÆj”Ôubaubjò)�rŸÔ}r Ô(jÅX¹The Processor SDK bootloader ships with DDR clock and timing settings that apply to the external memory devices that have been used in TI evaluation platforms. When running the code on custom platforms, users may be required to change these setting to match the timings required by custom design. We highly recommend that users create a GEL script similar to one provided by TI and test the memory interface with the new settings before using them in the secondary bootloader to setup external memory. `**Processor SDK Diagnostics** `__ provides a mem_test that can be used to test read and writes to the entire DDR address space for confirming the SOC EMIF settings.jÆj6ÔjÎjCÓjÐjõjÒ}r¡Ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜKxjÝhjÞ]r¢Ô(jçXöThe Processor SDK bootloader ships with DDR clock and timing settings that apply to the external memory devices that have been used in TI evaluation platforms. When running the code on custom platforms, users may be required to change these setting to match the timings required by custom design. We highly recommend that users create a GEL script similar to one provided by TI and test the memory interface with the new settings before using them in the secondary bootloader to setup external memory. r£Ô…�r¤Ô}r¥Ô(jÅXöThe Processor SDK bootloader ships with DDR clock and timing settings that apply to the external memory devices that have been used in TI evaluation platforms. When running the code on custom platforms, users may be required to change these setting to match the timings required by custom design. We highly recommend that users create a GEL script similar to one provided by TI and test the memory interface with the new settings before using them in the secondary bootloader to setup external memory. jÆjŸÔubjû)�r¦Ô}r§Ô(jÅX@`**Processor SDK Diagnostics** `__jÒ}r¨Ô(UnameX**Processor SDK Diagnostics**jXindex_board.html#diagnosticsj×]jÖ]jÔ]jÕ]jÚ]ujÆjŸÔjÞ]r©ÔjçX**Processor SDK Diagnostics**rªÔ…�r«Ô}r¬Ô(jÅUjÆj¦ÔubajÐjÿubjçXƒ provides a mem_test that can be used to test read and writes to the entire DDR address space for confirming the SOC EMIF settings.r­Ô…�r®Ô}r¯Ô(jÅXƒ provides a mem_test that can be used to test read and writes to the entire DDR address space for confirming the SOC EMIF settings.jÆjŸÔubeubjhK)�r°Ô}r±Ô(jÅX Emulator based debugging of bootr²ÔjÆj6ÔjÎjCÓjÐjlKjÒ}r³Ô(j×]r´ÔU emulator-based-debugging-of-bootrµÔajÖ]jÔ]jÕ]jÚ]r¶ÔhyaujÜNjÝhjÞ]r·ÔjçX Emulator based debugging of bootr¸Ô…�r¹Ô}rºÔ(jÅj²ÔjÆj°Ôubaubjò)�r»Ô}r¼Ô(jÅXDThe processor SDK RTOS bootloader is like any other application that can be loaded over the emulator and debugged. Steps to connect an emulator to the EVM have been described in the `**Hardware Setup Guides** `__ that is linked to the Processor SDK RTOS documentation.jÆj6ÔjÎjCÓjÐjõjÒ}r½Ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜK†jÝhjÞ]r¾Ô(jçX¶The processor SDK RTOS bootloader is like any other application that can be loaded over the emulator and debugged. Steps to connect an emulator to the EVM have been described in the r¿Ô…�rÀÔ}rÁÔ(jÅX¶The processor SDK RTOS bootloader is like any other application that can be loaded over the emulator and debugged. Steps to connect an emulator to the EVM have been described in the jÆj»Ôubjû)�rÂÔ}rÃÔ(jÅXV`**Hardware Setup Guides** `__jÒ}rÄÔ(UnameX**Hardware Setup Guides**jX6Release_Specific.html#supported-platforms-and-versionsj×]jÖ]jÔ]jÕ]jÚ]ujÆj»ÔjÞ]rÅÔjçX**Hardware Setup Guides**rÆÔ…�rÇÔ}rÈÔ(jÅUjÆjÂÔubajÐjÿubjçX8 that is linked to the Processor SDK RTOS documentation.rÉÔ…�rÊÔ}rËÔ(jÅX8 that is linked to the Processor SDK RTOS documentation.jÆj»Ôubeubjò)�rÌÔ}rÍÔ(jÅXLoading the bootloader over emulator can be very useful step in debugging the system boot. Before generating the final binary for bootloader, the build generates the .out file for the bootloader which is then formatted in a boot format that the ROM bootloader(RBL) can interpret. This .out can be loaded over the emulator similar to any other application. If you load the debug version of the bootloader, you can single step through the code that initializes the SOC and also part of the SBL code that loads the app from the boot media.rÎÔjÆj6ÔjÎjCÓjÐjõjÒ}rÏÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‹jÝhjÞ]rÐÔjçXLoading the bootloader over emulator can be very useful step in debugging the system boot. Before generating the final binary for bootloader, the build generates the .out file for the bootloader which is then formatted in a boot format that the ROM bootloader(RBL) can interpret. This .out can be loaded over the emulator similar to any other application. If you load the debug version of the bootloader, you can single step through the code that initializes the SOC and also part of the SBL code that loads the app from the boot media.rÑÔ…�rÒÔ}rÓÔ(jÅjÎÔjÆjÌÔubaubjë)�rÔÔ}rÕÔ(jÅXÂSBL runs from onchip memory so users can load the SBL.out even without using the GEL file but using the GEL sometimes helps with putting the core in a clean state so usage of the GEL is optionaljÆj6ÔjÎjCÓjÐjïjÒ}rÖÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r×Ôjò)�rØÔ}rÙÔ(jÅXÂSBL runs from onchip memory so users can load the SBL.out even without using the GEL file but using the GEL sometimes helps with putting the core in a clean state so usage of the GEL is optionalrÚÔjÆjÔÔjÎjCÓjÐjõjÒ}rÛÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK•jÞ]rÜÔjçXÂSBL runs from onchip memory so users can load the SBL.out even without using the GEL file but using the GEL sometimes helps with putting the core in a clean state so usage of the GEL is optionalrÝÔ…�rÞÔ}rßÔ(jÅjÚÔjÆjØÔubaubaubjò)�ràÔ}ráÔ(jÅX**Alternate Approach:**râÔjÆj6ÔjÎjCÓjÐjõjÒ}rãÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKšjÝhjÞ]räÔjÚ)�råÔ}ræÔ(jÅjâÔjÒ}rçÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjàÔjÞ]rèÔjçXAlternate Approach:réÔ…�rêÔ}rëÔ(jÅUjÆjåÔubajÐjâubaubjò)�rìÔ}ríÔ(jÅX**Add a spinlock in SBL main**rîÔjÆj6ÔjÎjCÓjÐjõjÒ}rïÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÝhjÞ]rðÔjÚ)�rñÔ}ròÔ(jÅjîÔjÒ}róÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjìÔjÞ]rôÔjçXAdd a spinlock in SBL mainrõÔ…�röÔ}r÷Ô(jÅUjÆjñÔubajÐjâubaubjò)�røÔ}rùÔ(jÅX\In some occasions the RBL may load the SBL but there may be some issue that you need to debug in the SBL. In this case you can add a spinlock loop at the start of main in SBL and allow the first stage boot to complete normally and then connect to the core when you connect the core will be held in the spinlock condition waiting for you to connect.rúÔjÆj6ÔjÎjCÓjÐjõjÒ}rûÔ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKžjÝhjÞ]rüÔjçX\In some occasions the RBL may load the SBL but there may be some issue that you need to debug in the SBL. In this case you can add a spinlock loop at the start of main in SBL and allow the first stage boot to complete normally and then connect to the core when you connect the core will be held in the spinlock condition waiting for you to connect.rýÔ…�rþÔ}rÿÔ(jÅjúÔjÆjøÔubaubjò)�rÕ}rÕ(jÅXExample:rÕjÆj6ÔjÎjCÓjÐjõjÒ}rÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÝhjÞ]rÕjçXExample:rÕ…�rÕ}rÕ(jÅjÕjÆjÕubaubj)�rÕ}r Õ(jÅX^volatile int exitSpinLock = 0; void Debug_spinLock(void) { while (exitSpinLock == 0) { } }jÆj6ÔjÎjCÓjÐjjÒ}r Õ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¦0jÝhjÞ]r ÕjçX^volatile int exitSpinLock = 0; void Debug_spinLock(void) { while (exitSpinLock == 0) { } }r Õ…�r Õ}rÕ(jÅUjÆjÕubaubjò)�rÕ}rÕ(jÅX#You will then have to "release" the core by toggling the variable which the while loop is blocking on. You can either do this manually by halting CCS, examining the variable in the watch window and then changing the value before continuing execution on the core, or you can use a GEL script.rÕjÆj6ÔjÎjCÓjÐjõjÒ}rÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK®jÝhjÞ]rÕjçX#You will then have to "release" the core by toggling the variable which the while loop is blocking on. You can either do this manually by halting CCS, examining the variable in the watch window and then changing the value before continuing execution on the core, or you can use a GEL script.rÕ…�rÕ}rÕ(jÅjÕjÆjÕubaubjò)�rÕ}rÕ(jÅXC**Use an IO input to stall the core until user input is received:**rÕjÆj6ÔjÎjCÓjÐjõjÒ}rÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÝhjÞ]rÕjÚ)�rÕ}rÕ(jÅjÕjÒ}rÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÕjÞ]rÕjçX?Use an IO input to stall the core until user input is received:r Õ…�r!Õ}r"Õ(jÅUjÆjÕubajÐjâubaubj)�r#Õ}r$Õ(jÅX,printf("Hit enter to continue:"); getchar();jÆj6ÔjÎjCÓjÐjjÒ}r%Õ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¶0jÝhjÞ]r&ÕjçX,printf("Hit enter to continue:"); getchar();r'Õ…�r(Õ}r)Õ(jÅUjÆj#ÕubaubjhK)�r*Õ}r+Õ(jÅXSystem state at boot failurer,ÕjÆj6ÔjÎjCÓjÐjlKjÒ}r-Õ(j×]r.ÕUsystem-state-at-boot-failurer/ÕajÖ]jÔ]jÕ]jÚ]r0ÕhcaujÜNjÝhjÞ]r1ÕjçXSystem state at boot failurer2Õ…�r3Õ}r4Õ(jÅj,ÕjÆj*Õubaubjò)�r5Õ}r6Õ(jÅXíA useful data point for TI to debug boot related issues is to isolate commonly known initialization and to understand how far the bootloader has executed correctly before it runs into any issues. Users are required to capture ARM/DSP clocks, Program counter value, Entry points detected, pinmux configuration and confirm DDR initialization and slave core states. This helps minimize the number of variables in the system boot and helps us zero in on the most likely cause for the boot failure.r7ÕjÆj6ÔjÎjCÓjÐjõjÒ}r8Õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¾jÝhjÞ]r9ÕjçXíA useful data point for TI to debug boot related issues is to isolate commonly known initialization and to understand how far the bootloader has executed correctly before it runs into any issues. Users are required to capture ARM/DSP clocks, Program counter value, Entry points detected, pinmux configuration and confirm DDR initialization and slave core states. This helps minimize the number of variables in the system boot and helps us zero in on the most likely cause for the boot failure.r:Õ…�r;Õ}r<Õ(jÅj7ÕjÆj5ÕubaubeubeubeubjÇ)�r=Õ}r>Õ(jÅUjÆj�‚jÎj¥‚jÐjÑjÒ}r?Õ(jÔ]jÕ]jÖ]j×]r@ÕUuart-apploaderrAÕajÚ]rBÕj£aujÜKojÝhjÞ]rCÕ(jà)�rDÕ}rEÕ(jÅXUART AppLoaderrFÕjÆj=ÕjÎj¥‚jÐjäjÒ}rGÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÝhjÞ]rHÕjçXUART AppLoaderrIÕ…�rJÕ}rKÕ(jÅjFÕjÆjDÕubaubjÇ)�rLÕ}rMÕ(jÅUjKjÆj=ÕjÎj:XXsource/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/UART_Apploader.rst.incrNÕ…�rOÕ}rPÕbjÐjÑjÒ}rQÕ(jÔ]rRÕXoverviewrSÕajÕ]jÖ]j×]rTÕUid129rUÕajÚ]ujÜKjÝhjÞ]rVÕ(jà)�rWÕ}rXÕ(jÅXOverviewrYÕjÆjLÕjÎjOÕjÐjäjÒ}rZÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r[ÕjçXOverviewr\Õ…�r]Õ}r^Õ(jÅjYÕjÆjWÕubaubjò)�r_Õ}r`Õ(jÅX½UART AppLoader is a standalone application used to download application image over UART from the host PC. Host PC uses the serial console utility to transfer application image to apploader.raÕjÆjLÕjÎjOÕjÐjõjÒ}rbÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rcÕjçX½UART AppLoader is a standalone application used to download application image over UART from the host PC. Host PC uses the serial console utility to transfer application image to apploader.rdÕ…�reÕ}rfÕ(jÅjaÕjÆj_Õubaubjò)�rgÕ}rhÕ(jÅXsThe Apploader application loads and executes the application binary to be tested, over UART on the target platform.riÕjÆjLÕjÎjOÕjÐjõjÒ}rjÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rkÕjçXsThe Apploader application loads and executes the application binary to be tested, over UART on the target platform.rlÕ…�rmÕ}rnÕ(jÅjiÕjÆjgÕubaubeubjÇ)�roÕ}rpÕ(jÅUjÆj=ÕjÎjOÕjÐjÑjÒ}rqÕ(jÔ]jÕ]jÖ]j×]rrÕUsupported-platformsrsÕajÚ]rtÕjoaujÜK jÝhjÞ]ruÕ(jà)�rvÕ}rwÕ(jÅXSupported PlatformsrxÕjÆjoÕjÎjOÕjÐjäjÒ}ryÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rzÕjçXSupported Platformsr{Õ…�r|Õ}r}Õ(jÅjxÕjÆjvÕubaubjy )�r~Õ}rÕ(jÅUjÆjoÕjÎjOÕjÐjÔ jÒ}r€Õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�Õj~ )�r‚Õ}rƒÕ(jÅUjÒ}r„Õ(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj~ÕjÞ]r…Õ(jƒ )�r†Õ}r‡Õ(jÅUjÒ}rˆÕ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj‚ÕjÞ]jÐj‡ ubjƒ )�r‰Õ}rŠÕ(jÅUjÒ}r‹Õ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj‚ÕjÞ]jÐj‡ ubjƒ )�rŒÕ}r�Õ(jÅUjÒ}rŽÕ(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj‚ÕjÞ]jÐj‡ ubj‹ )�r�Õ}r�Õ(jÅUjÒ}r‘Õ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚ÕjÞ]r’Õj� )�r“Õ}r”Õ(jÅUjÒ}r•Õ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ÕjÞ]r–Õ(j• )�r—Õ}r˜Õ(jÅUjÒ}r™Õ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ÕjÞ]ršÕjò)�r›Õ}rœÕ(jÅXSOCr�ÕjÆj—ÕjÎjOÕjÐjõjÒ}ržÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rŸÕjçXSOCr Õ…�r¡Õ}r¢Õ(jÅj�ÕjÆj›ÕubaubajÐj¢ ubj• )�r£Õ}r¤Õ(jÅUjÒ}r¥Õ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ÕjÞ]r¦Õjò)�r§Õ}r¨Õ(jÅXPLATFORMr©ÕjÆj£ÕjÎjOÕjÐjõjÒ}rªÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r«ÕjçXPLATFORMr¬Õ…�r­Õ}r®Õ(jÅj©ÕjÆj§ÕubaubajÐj¢ ubj• )�r¯Õ}r°Õ(jÅUjÒ}r±Õ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ÕjÞ]r²Õjò)�r³Õ}r´Õ(jÅXVerified Boot ModesrµÕjÆj¯ÕjÎjOÕjÐjõjÒ}r¶Õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r·ÕjçXVerified Boot Modesr¸Õ…�r¹Õ}rºÕ(jÅjµÕjÆj³ÕubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r»Õ}r¼Õ(jÅUjÒ}r½Õ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‚ÕjÞ]r¾Õ(j� )�r¿Õ}rÀÕ(jÅUjÒ}rÁÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]rÂÕ(j• )�rÃÕ}rÄÕ(jÅUjÒ}rÅÕ(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj¿ÕjÞ]rÆÕjò)�rÇÕ}rÈÕ(jÅXAM335xrÉÕjÆjÃÕjÎjOÕjÐjõjÒ}rÊÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rËÕjçXAM335xrÌÕ…�rÍÕ}rÎÕ(jÅjÉÕjÆjÇÕubaubajÐj¢ ubj• )�rÏÕ}rÐÕ(jÅUjÒ}rÑÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¿ÕjÞ]rÒÕjò)�rÓÕ}rÔÕ(jÅX AM335x GP EVMrÕÕjÆjÏÕjÎjOÕjÐjõjÒ}rÖÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r×ÕjçX AM335x GP EVMrØÕ…�rÙÕ}rÚÕ(jÅjÕÕjÆjÓÕubaubajÐj¢ ubj• )�rÛÕ}rÜÕ(jÅUjÒ}rÝÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¿ÕjÞ]rÞÕjò)�rßÕ}ràÕ(jÅXMMCSDráÕjÆjÛÕjÎjOÕjÐjõjÒ}râÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rãÕjçXMMCSDräÕ…�råÕ}ræÕ(jÅjáÕjÆjßÕubaubajÐj¢ ubejÐj£ ubj� )�rçÕ}rèÕ(jÅUjÒ}réÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]rêÕ(j• )�rëÕ}rìÕ(jÅUjÒ}ríÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçÕjÞ]rîÕjò)�rïÕ}rðÕ(jÅX AM335x ICEv2rñÕjÆjëÕjÎjOÕjÐjõjÒ}ròÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]róÕjçX AM335x ICEv2rôÕ…�rõÕ}röÕ(jÅjñÕjÆjïÕubaubajÐj¢ ubj• )�r÷Õ}røÕ(jÅUjÒ}rùÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçÕjÞ]rúÕjò)�rûÕ}rüÕ(jÅXMMCSDrýÕjÆj÷ÕjÎjOÕjÐjõjÒ}rþÕ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÿÕjçXMMCSDrÖ…�rÖ}rÖ(jÅjýÕjÆjûÕubaubajÐj¢ ubejÐj£ ubj� )�rÖ}rÖ(jÅUjÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]rÖ(j• )�rÖ}rÖ(jÅUjÒ}r Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖjÞ]r Öjò)�r Ö}r Ö(jÅX AMIC110 ICEr ÖjÆjÖjÎjOÕjÐjõjÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÖjçX AMIC110 ICErÖ…�rÖ}rÖ(jÅj ÖjÆj ÖubaubajÐj¢ ubj• )�rÖ}rÖ(jÅUjÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖjÞ]rÖjò)�rÖ}rÖ(jÅXSPIrÖjÆjÖjÎjOÕjÐjõjÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÖjçXSPIrÖ…�rÖ}rÖ(jÅjÖjÆjÖubaubajÐj¢ ubejÐj£ ubj� )�rÖ}r Ö(jÅUjÒ}r!Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]r"Ö(j• )�r#Ö}r$Ö(jÅUjÒ}r%Ö(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjÖjÞ]r&Öjò)�r'Ö}r(Ö(jÅXAM437xr)ÖjÆj#ÖjÎjOÕjÐjõjÒ}r*Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r+ÖjçXAM437xr,Ö…�r-Ö}r.Ö(jÅj)ÖjÆj'ÖubaubajÐj¢ ubj• )�r/Ö}r0Ö(jÅUjÒ}r1Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖjÞ]r2Öjò)�r3Ö}r4Ö(jÅX AM437x EVMr5ÖjÆj/ÖjÎjOÕjÐjõjÒ}r6Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r7ÖjçX AM437x EVMr8Ö…�r9Ö}r:Ö(jÅj5ÖjÆj3ÖubaubajÐj¢ ubj• )�r;Ö}r<Ö(jÅUjÒ}r=Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖjÞ]r>Öjò)�r?Ö}r@Ö(jÅXMMCSDrAÖjÆj;ÖjÎjOÕjÐjõjÒ}rBÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rCÖjçXMMCSDrDÖ…�rEÖ}rFÖ(jÅjAÖjÆj?ÖubaubajÐj¢ ubejÐj£ ubj� )�rGÖ}rHÖ(jÅUjÒ}rIÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]rJÖ(j• )�rKÖ}rLÖ(jÅUjÒ}rMÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjGÖjÞ]rNÖjò)�rOÖ}rPÖ(jÅX AM437x IDKrQÖjÆjKÖjÎjOÕjÐjõjÒ}rRÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rSÖjçX AM437x IDKrTÖ…�rUÖ}rVÖ(jÅjQÖjÆjOÖubaubajÐj¢ ubj• )�rWÖ}rXÖ(jÅUjÒ}rYÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjGÖjÞ]rZÖjò)�r[Ö}r\Ö(jÅXMMCSDr]ÖjÆjWÖjÎjOÕjÐjõjÒ}r^Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r_ÖjçXMMCSDr`Ö…�raÖ}rbÖ(jÅj]ÖjÆj[ÖubaubajÐj¢ ubejÐj£ ubj� )�rcÖ}rdÖ(jÅUjÒ}reÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]rfÖ(j• )�rgÖ}rhÖ(jÅUjÒ}riÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÖjÞ]rjÖjò)�rkÖ}rlÖ(jÅXAM571xrmÖjÆjgÖjÎjOÕjÐjõjÒ}rnÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]roÖjçXAM571xrpÖ…�rqÖ}rrÖ(jÅjmÖjÆjkÖubaubajÐj¢ ubj• )�rsÖ}rtÖ(jÅUjÒ}ruÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÖjÞ]rvÖjò)�rwÖ}rxÖ(jÅX AM571x IDKryÖjÆjsÖjÎjOÕjÐjõjÒ}rzÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r{ÖjçX AM571x IDKr|Ö…�r}Ö}r~Ö(jÅjyÖjÆjwÖubaubajÐj¢ ubj• )�rÖ}r€Ö(jÅUjÒ}r�Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjcÖjÞ]r‚Öjò)�rƒÖ}r„Ö(jÅXMMCSDr…ÖjÆjÖjÎjOÕjÐjõjÒ}r†Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r‡ÖjçXMMCSDrˆÖ…�r‰Ö}rŠÖ(jÅj…ÖjÆjƒÖubaubajÐj¢ ubejÐj£ ubj� )�r‹Ö}rŒÖ(jÅUjÒ}r�Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]rŽÖ(j• )�r�Ö}r�Ö(jÅUjÒ}r‘Ö(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj‹ÖjÞ]r’Öjò)�r“Ö}r”Ö(jÅXAM572xr•ÖjÆj�ÖjÎjOÕjÐjõjÒ}r–Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r—ÖjçXAM572xr˜Ö…�r™Ö}ršÖ(jÅj•ÖjÆj“ÖubaubajÐj¢ ubj• )�r›Ö}rœÖ(jÅUjÒ}r�Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹ÖjÞ]ržÖjò)�rŸÖ}r Ö(jÅX AM572x EVMr¡ÖjÆj›ÖjÎjOÕjÐjõjÒ}r¢Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r£ÖjçX AM572x EVMr¤Ö…�r¥Ö}r¦Ö(jÅj¡ÖjÆjŸÖubaubajÐj¢ ubj• )�r§Ö}r¨Ö(jÅUjÒ}r©Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹ÖjÞ]rªÖjò)�r«Ö}r¬Ö(jÅXMMCSDr­ÖjÆj§ÖjÎjOÕjÐjõjÒ}r®Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¯ÖjçXMMCSDr°Ö…�r±Ö}r²Ö(jÅj­ÖjÆj«ÖubaubajÐj¢ ubejÐj£ ubj� )�r³Ö}r´Ö(jÅUjÒ}rµÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]r¶Ö(j• )�r·Ö}r¸Ö(jÅUjÒ}r¹Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³ÖjÞ]rºÖjò)�r»Ö}r¼Ö(jÅX AM572x IDKr½ÖjÆj·ÖjÎjOÕjÐjõjÒ}r¾Ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¿ÖjçX AM572x IDKrÀÖ…�rÁÖ}rÂÖ(jÅj½ÖjÆj»ÖubaubajÐj¢ ubj• )�rÃÖ}rÄÖ(jÅUjÒ}rÅÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³ÖjÞ]rÆÖjò)�rÇÖ}rÈÖ(jÅXMMCSDrÉÖjÆjÃÖjÎjOÕjÐjõjÒ}rÊÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rËÖjçXMMCSDrÌÖ…�rÍÖ}rÎÖ(jÅjÉÖjÆjÇÖubaubajÐj¢ ubejÐj£ ubj� )�rÏÖ}rÐÖ(jÅUjÒ}rÑÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]rÒÖ(j• )�rÓÖ}rÔÖ(jÅUjÒ}rÕÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÏÖjÞ]rÖÖjò)�r×Ö}rØÖ(jÅXAM574xrÙÖjÆjÓÖjÎjOÕjÐjõjÒ}rÚÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]rÛÖjçXAM574xrÜÖ…�rÝÖ}rÞÖ(jÅjÙÖjÆj×ÖubaubajÐj¢ ubj• )�rßÖ}ràÖ(jÅUjÒ}ráÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÏÖjÞ]râÖjò)�rãÖ}räÖ(jÅX AM574x IDKråÖjÆjßÖjÎjOÕjÐjõjÒ}ræÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]rçÖjçX AM574x IDKrèÖ…�réÖ}rêÖ(jÅjåÖjÆjãÖubaubajÐj¢ ubj• )�rëÖ}rìÖ(jÅUjÒ}ríÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÏÖjÞ]rîÖjò)�rïÖ}rðÖ(jÅXMMCSDrñÖjÆjëÖjÎjOÕjÐjõjÒ}ròÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]róÖjçXMMCSDrôÖ…�rõÖ}röÖ(jÅjñÖjÆjïÖubaubajÐj¢ ubejÐj£ ubj� )�r÷Ö}røÖ(jÅUjÒ}rùÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]rúÖ(j• )�rûÖ}rüÖ(jÅUjÒ}rýÖ(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj÷ÖjÞ]rþÖjò)�rÿÖ}r×(jÅXK2Gr×jÆjûÖjÎjOÕjÐjõjÒ}r×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]r×jçXK2Gr×…�r×}r×(jÅj×jÆjÿÖubaubajÐj¢ ubj• )�r×}r×(jÅUjÒ}r ×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷ÖjÞ]r ×jò)�r ×}r ×(jÅX K2G GP EVMr ×jÆj×jÎjOÕjÐjõjÒ}r×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]r×jçX K2G GP EVMr×…�r×}r×(jÅj ×jÆj ×ubaubajÐj¢ ubj• )�r×}r×(jÅUjÒ}r×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷ÖjÞ]r×jò)�r×}r×(jÅXMMCSDr×jÆj×jÎjOÕjÐjõjÒ}r×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]r×jçXMMCSDr×…�r×}r×(jÅj×jÆj×ubaubajÐj¢ ubejÐj£ ubj� )�r×}r ×(jÅUjÒ}r!×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]r"×(j• )�r#×}r$×(jÅUjÒ}r%×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×jÞ]r&×jò)�r'×}r(×(jÅXK2G ICEr)×jÆj#×jÎjOÕjÐjõjÒ}r*×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÞ]r+×jçXK2G ICEr,×…�r-×}r.×(jÅj)×jÆj'×ubaubajÐj¢ ubj• )�r/×}r0×(jÅUjÒ}r1×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj×jÞ]r2×jò)�r3×}r4×(jÅXMMCSDr5×jÆj/×jÎjOÕjÐjõjÒ}r6×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÞ]r7×jçXMMCSDr8×…�r9×}r:×(jÅj5×jÆj3×ubaubajÐj¢ ubejÐj£ ubj� )�r;×}r<×(jÅUjÒ}r=×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]r>×(j• )�r?×}r@×(jÅUjÒ}rA×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;×jÞ]rB×jò)�rC×}rD×(jÅXOMAPL137rE×jÆj?×jÎjOÕjÐjõjÒ}rF×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]rG×jçXOMAPL137rH×…�rI×}rJ×(jÅjE×jÆjC×ubaubajÐj¢ ubj• )�rK×}rL×(jÅUjÒ}rM×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;×jÞ]rN×jò)�rO×}rP×(jÅX OMAPL137 EVMrQ×jÆjK×jÎjOÕjÐjõjÒ}rR×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]rS×jçX OMAPL137 EVMrT×…�rU×}rV×(jÅjQ×jÆjO×ubaubajÐj¢ ubj• )�rW×}rX×(jÅUjÒ}rY×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;×jÞ]rZ×jò)�r[×}r\×(jÅXSPIr]×jÆjW×jÎjOÕjÐjõjÒ}r^×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]r_×jçXSPIr`×…�ra×}rb×(jÅj]×jÆj[×ubaubajÐj¢ ubejÐj£ ubj� )�rc×}rd×(jÅUjÒ}re×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»ÕjÞ]rf×(j• )�rg×}rh×(jÅUjÒ}ri×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjc×jÞ]rj×jò)�rk×}rl×(jÅXOMAPL138rm×jÆjg×jÎjOÕjÐjõjÒ}rn×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]ro×jçXOMAPL138rp×…�rq×}rr×(jÅjm×jÆjk×ubaubajÐj¢ ubj• )�rs×}rt×(jÅUjÒ}ru×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjc×jÞ]rv×jò)�rw×}rx×(jÅX OMAPL138 LCDKry×jÆjs×jÎjOÕjÐjõjÒ}rz×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]r{×jçX OMAPL138 LCDKr|×…�r}×}r~×(jÅjy×jÆjw×ubaubajÐj¢ ubj• )�r×}r€×(jÅUjÒ}r�×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjc×jÞ]r‚×jò)�rƒ×}r„×(jÅXMMCSDr…×jÆj×jÎjOÕjÐjõjÒ}r†×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]r‡×jçXMMCSDrˆ×…�r‰×}rŠ×(jÅj…×jÆjƒ×ubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubjÇ)�r‹×}rŒ×(jÅUjÆj=ÕjÎjOÕjÐjÑjÒ}r�×(jÔ]jÕ]jÖ]j×]rŽ×Uapploader-load-addressr�×ajÚ]r�×h¨aujÜK-jÝhjÞ]r‘×(jà)�r’×}r“×(jÅXApploader Load Addressr”×jÆj‹×jÎjOÕjÐjäjÒ}r•×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÝhjÞ]r–×jçXApploader Load Addressr—×…�r˜×}r™×(jÅj”×jÆj’×ubaubjy )�rš×}r›×(jÅUjÆj‹×jÎjOÕjÐjÔ jÒ}rœ×(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�×j~ )�rž×}rŸ×(jÅUjÒ}r ×(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjš×jÞ]r¡×(jƒ )�r¢×}r£×(jÅUjÒ}r¤×(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjž×jÞ]jÐj‡ ubjƒ )�r¥×}r¦×(jÅUjÒ}r§×(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjž×jÞ]jÐj‡ ubjƒ )�r¨×}r©×(jÅUjÒ}rª×(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjž×jÞ]jÐj‡ ubjƒ )�r«×}r¬×(jÅUjÒ}r­×(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjž×jÞ]jÐj‡ ubjƒ )�r®×}r¯×(jÅUjÒ}r°×(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjž×jÞ]jÐj‡ ubj‹ )�r±×}r²×(jÅUjÒ}r³×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjž×jÞ]r´×j� )�rµ×}r¶×(jÅUjÒ}r·×(jÔ]jÕ]jÖ]j×]jÚ]ujÆj±×jÞ]r¸×(j• )�r¹×}rº×(jÅUjÒ}r»×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµ×jÞ]r¼×jò)�r½×}r¾×(jÅXSOCr¿×jÆj¹×jÎjOÕjÐjõjÒ}rÀ×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rÁ×jçXSOCrÂ×…�rÃ×}rÄ×(jÅj¿×jÆj½×ubaubajÐj¢ ubj• )�rÅ×}rÆ×(jÅUjÒ}rÇ×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµ×jÞ]rÈ×jò)�rÉ×}rÊ×(jÅXPLATFORMrË×jÆjÅ×jÎjOÕjÐjõjÒ}rÌ×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rÍ×jçXPLATFORMrÎ×…�rÏ×}rÐ×(jÅjË×jÆjÉ×ubaubajÐj¢ ubj• )�rÑ×}rÒ×(jÅUjÒ}rÓ×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµ×jÞ]rÔ×jò)�rÕ×}rÖ×(jÅXDDR Sizer××jÆjÑ×jÎjOÕjÐjõjÒ}rØ×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rÙ×jçXDDR SizerÚ×…�rÛ×}rÜ×(jÅj××jÆjÕ×ubaubajÐj¢ ubj• )�rÝ×}rÞ×(jÅUjÒ}rß×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµ×jÞ]rà×jò)�rá×}râ×(jÅXDDR Start Addressrã×jÆjÝ×jÎjOÕjÐjõjÒ}rä×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rå×jçXDDR Start Addressræ×…�rç×}rè×(jÅjã×jÆjá×ubaubajÐj¢ ubj• )�ré×}rê×(jÅUjÒ}rë×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµ×jÞ]rì×jò)�rí×}rî×(jÅXApploader Load Addressrï×jÆjé×jÎjOÕjÐjõjÒ}rð×(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]rñ×jçXApploader Load Addressrò×…�ró×}rô×(jÅjï×jÆjí×ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rõ×}rö×(jÅUjÒ}r÷×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjž×jÞ]rø×(j� )�rù×}rú×(jÅUjÒ}rû×(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]rü×(j• )�rý×}rþ×(jÅUjÒ}rÿ×(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjù×jÞ]rØjò)�rØ}rØ(jÅXAM335xrØjÆjý×jÎjOÕjÐjõjÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]rØjçXAM335xrØ…�rØ}rØ(jÅjØjÆjØubaubajÐj¢ ubj• )�r Ø}r Ø(jÅUjÒ}r Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjù×jÞ]r Øjò)�r Ø}rØ(jÅX AM335x GP EVMrØjÆj ØjÎjOÕjÐjõjÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]rØjçX AM335x GP EVMrØ…�rØ}rØ(jÅjØjÆj ØubaubajÐj¢ ubj• )�rØ}rØ(jÅUjÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjù×jÞ]rØjò)�rØ}rØ(jÅX1GBrØjÆjØjÎjOÕjÐjõjÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]rØjçX1GBrØ…�rØ}r Ø(jÅjØjÆjØubaubajÐj¢ ubj• )�r!Ø}r"Ø(jÅUjÒ}r#Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjù×jÞ]r$Øjò)�r%Ø}r&Ø(jÅX 0x80010000r'ØjÆj!ØjÎjOÕjÐjõjÒ}r(Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r)ØjçX 0x80010000r*Ø…�r+Ø}r,Ø(jÅj'ØjÆj%ØubaubajÐj¢ ubj• )�r-Ø}r.Ø(jÅUjÒ}r/Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjù×jÞ]r0Øjò)�r1Ø}r2Ø(jÅX 0xBFE00000r3ØjÆj-ØjÎjOÕjÐjõjÒ}r4Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r5ØjçX 0xBFE00000r6Ø…�r7Ø}r8Ø(jÅj3ØjÆj1ØubaubajÐj¢ ubejÐj£ ubj� )�r9Ø}r:Ø(jÅUjÒ}r;Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]r<Ø(j• )�r=Ø}r>Ø(jÅUjÒ}r?Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9ØjÞ]r@Øjò)�rAØ}rBØ(jÅX AM335x ICEv2rCØjÆj=ØjÎjOÕjÐjõjÒ}rDØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]rEØjçX AM335x ICEv2rFØ…�rGØ}rHØ(jÅjCØjÆjAØubaubajÐj¢ ubj• )�rIØ}rJØ(jÅUjÒ}rKØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9ØjÞ]rLØjò)�rMØ}rNØ(jÅX256MBrOØjÆjIØjÎjOÕjÐjõjÒ}rPØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]rQØjçX256MBrRØ…�rSØ}rTØ(jÅjOØjÆjMØubaubajÐj¢ ubj• )�rUØ}rVØ(jÅUjÒ}rWØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9ØjÞ]rXØjò)�rYØ}rZØ(jÅX 0x80010000r[ØjÆjUØjÎjOÕjÐjõjÒ}r\Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]r]ØjçX 0x80010000r^Ø…�r_Ø}r`Ø(jÅj[ØjÆjYØubaubajÐj¢ ubj• )�raØ}rbØ(jÅUjÒ}rcØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9ØjÞ]rdØjò)�reØ}rfØ(jÅX 0x8FD00000rgØjÆjaØjÎjOÕjÐjõjÒ}rhØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]riØjçX 0x8FD00000rjØ…�rkØ}rlØ(jÅjgØjÆjeØubaubajÐj¢ ubejÐj£ ubj� )�rmØ}rnØ(jÅUjÒ}roØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]rpØ(j• )�rqØ}rrØ(jÅUjÒ}rsØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmØjÞ]rtØjò)�ruØ}rvØ(jÅX AMIC110 ICErwØjÆjqØjÎjOÕjÐjõjÒ}rxØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]ryØjçX AMIC110 ICErzØ…�r{Ø}r|Ø(jÅjwØjÆjuØubaubajÐj¢ ubj• )�r}Ø}r~Ø(jÅUjÒ}rØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmØjÞ]r€Øjò)�r�Ø}r‚Ø(jÅX512MBrƒØjÆj}ØjÎjOÕjÐjõjÒ}r„Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]r…ØjçX512MBr†Ø…�r‡Ø}rˆØ(jÅjƒØjÆj�ØubaubajÐj¢ ubj• )�r‰Ø}rŠØ(jÅUjÒ}r‹Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmØjÞ]rŒØjò)�r�Ø}rŽØ(jÅX 0x80010000r�ØjÆj‰ØjÎjOÕjÐjõjÒ}r�Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]r‘ØjçX 0x80010000r’Ø…�r“Ø}r”Ø(jÅj�ØjÆj�ØubaubajÐj¢ ubj• )�r•Ø}r–Ø(jÅUjÒ}r—Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmØjÞ]r˜Øjò)�r™Ø}ršØ(jÅX 0x9FE00000r›ØjÆj•ØjÎjOÕjÐjõjÒ}rœØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]r�ØjçX 0x9FE00000ržØ…�rŸØ}r Ø(jÅj›ØjÆj™ØubaubajÐj¢ ubejÐj£ ubj� )�r¡Ø}r¢Ø(jÅUjÒ}r£Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]r¤Ø(j• )�r¥Ø}r¦Ø(jÅUjÒ}r§Ø(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj¡ØjÞ]r¨Øjò)�r©Ø}rªØ(jÅXAM437xr«ØjÆj¥ØjÎjOÕjÐjõjÒ}r¬Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]r­ØjçXAM437xr®Ø…�r¯Ø}r°Ø(jÅj«ØjÆj©ØubaubajÐj¢ ubj• )�r±Ø}r²Ø(jÅUjÒ}r³Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡ØjÞ]r´Øjò)�rµØ}r¶Ø(jÅX AM437x EVMr·ØjÆj±ØjÎjOÕjÐjõjÒ}r¸Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]r¹ØjçX AM437x EVMrºØ…�r»Ø}r¼Ø(jÅj·ØjÆjµØubaubajÐj¢ ubj• )�r½Ø}r¾Ø(jÅUjÒ}r¿Ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡ØjÞ]rÀØjò)�rÁØ}rÂØ(jÅX2GBrÃØjÆj½ØjÎjOÕjÐjõjÒ}rÄØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rÅØjçX2GBrÆØ…�rÇØ}rÈØ(jÅjÃØjÆjÁØubaubajÐj¢ ubj• )�rÉØ}rÊØ(jÅUjÒ}rËØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡ØjÞ]rÌØjò)�rÍØ}rÎØ(jÅX 0x80000000rÏØjÆjÉØjÎjOÕjÐjõjÒ}rÐØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rÑØjçX 0x80000000rÒØ…�rÓØ}rÔØ(jÅjÏØjÆjÍØubaubajÐj¢ ubj• )�rÕØ}rÖØ(jÅUjÒ}rר(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¡ØjÞ]rØØjò)�rÙØ}rÚØ(jÅX 0xFFE00000rÛØjÆjÕØjÎjOÕjÐjõjÒ}rÜØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rÝØjçX 0xFFE00000rÞØ…�rߨ}ràØ(jÅjÛØjÆjÙØubaubajÐj¢ ubejÐj£ ubj� )�ráØ}râØ(jÅUjÒ}rãØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]räØ(j• )�råØ}ræØ(jÅUjÒ}rçØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjáØjÞ]rèØjò)�réØ}rêØ(jÅX AM437x IDKrëØjÆjåØjÎjOÕjÐjõjÒ}rìØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]ríØjçX AM437x IDKrîØ…�rïØ}rðØ(jÅjëØjÆjéØubaubajÐj¢ ubj• )�rñØ}ròØ(jÅUjÒ}róØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjáØjÞ]rôØjò)�rõØ}röØ(jÅX1GBr÷ØjÆjñØjÎjOÕjÐjõjÒ}røØ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]rùØjçX1GBrúØ…�rûØ}rüØ(jÅj÷ØjÆjõØubaubajÐj¢ ubj• )�rýØ}rþØ(jÅUjÒ}rÿØ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjáØjÞ]rÙjò)�rÙ}rÙ(jÅX 0x80000000rÙjÆjýØjÎjOÕjÐjõjÒ}rÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]rÙjçX 0x80000000rÙ…�rÙ}rÙ(jÅjÙjÆjÙubaubajÐj¢ ubj• )�r Ù}r Ù(jÅUjÒ}r Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjáØjÞ]r Ùjò)�r Ù}rÙ(jÅX 0xBFE00000rÙjÆj ÙjÎjOÕjÐjõjÒ}rÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]rÙjçX 0xBFE00000rÙ…�rÙ}rÙ(jÅjÙjÆj ÙubaubajÐj¢ ubejÐj£ ubj� )�rÙ}rÙ(jÅUjÒ}rÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]rÙ(j• )�rÙ}rÙ(jÅUjÒ}rÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙjÞ]rÙjò)�rÙ}rÙ(jÅXAM571xrÙjÆjÙjÎjOÕjÐjõjÒ}r Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÙ(jÅUjÒ}r?Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙjÞ]r@Ùjò)�rAÙ}rBÙ(jÅX 0x80000000rCÙjÆj=ÙjÎjOÕjÐjõjÒ}rDÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]raÙjçXAM572xrbÙ…�rcÙ}rdÙ(jÅj_ÙjÆj]ÙubaubajÐj¢ ubj• )�reÙ}rfÙ(jÅUjÒ}rgÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUÙjÞ]rhÙjò)�riÙ}rjÙ(jÅX AM572x EVMrkÙjÆjeÙjÎjOÕjÐjõjÒ}rlÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]rmÙjçX AM572x EVMrnÙ…�roÙ}rpÙ(jÅjkÙjÆjiÙubaubajÐj¢ ubj• )�rqÙ}rrÙ(jÅUjÒ}rsÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUÙjÞ]rtÙjò)�ruÙ}rvÙ(jÅX2GBrwÙjÆjqÙjÎjOÕjÐjõjÒ}rxÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]ryÙjçX2GBrzÙ…�r{Ù}r|Ù(jÅjwÙjÆjuÙubaubajÐj¢ ubj• )�r}Ù}r~Ù(jÅUjÒ}rÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUÙjÞ]r€Ùjò)�r�Ù}r‚Ù(jÅX 0x80000000rƒÙjÆj}ÙjÎjOÕjÐjõjÒ}r„Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]r…ÙjçX 0x80000000r†Ù…�r‡Ù}rˆÙ(jÅjƒÙjÆj�ÙubaubajÐj¢ ubj• )�r‰Ù}rŠÙ(jÅUjÒ}r‹Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUÙjÞ]rŒÙjò)�r�Ù}rŽÙ(jÅX 0xFFDFFFFFr�ÙjÆj‰ÙjÎjOÕjÐjõjÒ}r�Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÞ]r‘ÙjçX 0xFFDFFFFFr’Ù…�r“Ù}r”Ù(jÅj�ÙjÆj�ÙubaubajÐj¢ ubejÐj£ ubj� )�r•Ù}r–Ù(jÅUjÒ}r—Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]r˜Ù(j• )�r™Ù}ršÙ(jÅUjÒ}r›Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆj•ÙjÞ]rœÙjò)�r�Ù}ržÙ(jÅX AM572x IDKrŸÙjÆj™ÙjÎjOÕjÐjõjÒ}r Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]r¡ÙjçX AM572x IDKr¢Ù…�r£Ù}r¤Ù(jÅjŸÙjÆj�ÙubaubajÐj¢ ubj• )�r¥Ù}r¦Ù(jÅUjÒ}r§Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆj•ÙjÞ]r¨Ùjò)�r©Ù}rªÙ(jÅX2GBr«ÙjÆj¥ÙjÎjOÕjÐjõjÒ}r¬Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]r­ÙjçX2GBr®Ù…�r¯Ù}r°Ù(jÅj«ÙjÆj©ÙubaubajÐj¢ ubj• )�r±Ù}r²Ù(jÅUjÒ}r³Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆj•ÙjÞ]r´Ùjò)�rµÙ}r¶Ù(jÅX 0x80000000r·ÙjÆj±ÙjÎjOÕjÐjõjÒ}r¸Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]r¹ÙjçX 0x80000000rºÙ…�r»Ù}r¼Ù(jÅj·ÙjÆjµÙubaubajÐj¢ ubj• )�r½Ù}r¾Ù(jÅUjÒ}r¿Ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆj•ÙjÞ]rÀÙjò)�rÁÙ}rÂÙ(jÅX 0xFFDFFFFFrÃÙjÆj½ÙjÎjOÕjÐjõjÒ}rÄÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÞ]rÅÙjçX 0xFFDFFFFFrÆÙ…�rÇÙ}rÈÙ(jÅjÃÙjÆjÁÙubaubajÐj¢ ubejÐj£ ubj� )�rÉÙ}rÊÙ(jÅUjÒ}rËÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]rÌÙ(j• )�rÍÙ}rÎÙ(jÅUjÒ}rÏÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÉÙjÞ]rÐÙjò)�rÑÙ}rÒÙ(jÅXAM574xrÓÙjÆjÍÙjÎjOÕjÐjõjÒ}rÔÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]rÕÙjçXAM574xrÖÙ…�r×Ù}rØÙ(jÅjÓÙjÆjÑÙubaubajÐj¢ ubj• )�rÙÙ}rÚÙ(jÅUjÒ}rÛÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÉÙjÞ]rÜÙjò)�rÝÙ}rÞÙ(jÅX AM574x IDKrßÙjÆjÙÙjÎjOÕjÐjõjÒ}ràÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]ráÙjçX AM574x IDKrâÙ…�rãÙ}räÙ(jÅjßÙjÆjÝÙubaubajÐj¢ ubj• )�råÙ}ræÙ(jÅUjÒ}rçÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÉÙjÞ]rèÙjò)�réÙ}rêÙ(jÅX2GBrëÙjÆjåÙjÎjOÕjÐjõjÒ}rìÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]ríÙjçX2GBrîÙ…�rïÙ}rðÙ(jÅjëÙjÆjéÙubaubajÐj¢ ubj• )�rñÙ}ròÙ(jÅUjÒ}róÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÉÙjÞ]rôÙjò)�rõÙ}röÙ(jÅX 0x80000000r÷ÙjÆjñÙjÎjOÕjÐjõjÒ}røÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]rùÙjçX 0x80000000rúÙ…�rûÙ}rüÙ(jÅj÷ÙjÆjõÙubaubajÐj¢ ubj• )�rýÙ}rþÙ(jÅUjÒ}rÿÙ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÉÙjÞ]rÚjò)�rÚ}rÚ(jÅX 0xFFDFFFFFrÚjÆjýÙjÎjOÕjÐjõjÒ}rÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÞ]rÚjçX 0xFFDFFFFFrÚ…�rÚ}rÚ(jÅjÚjÆjÚubaubajÐj¢ ubejÐj£ ubj� )�r Ú}r Ú(jÅUjÒ}r Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]r Ú(j• )�r Ú}rÚ(jÅUjÒ}rÚ(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj ÚjÞ]rÚjò)�rÚ}rÚ(jÅXK2GrÚjÆj ÚjÎjOÕjÐjõjÒ}rÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]rÚjçXK2GrÚ…�rÚ}rÚ(jÅjÚjÆjÚubaubajÐj¢ ubj• )�rÚ}rÚ(jÅUjÒ}rÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÚjÞ]rÚjò)�rÚ}rÚ(jÅX K2G GP EVMrÚjÆjÚjÎjOÕjÐjõjÒ}r Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]r!ÚjçX K2G GP EVMr"Ú…�r#Ú}r$Ú(jÅjÚjÆjÚubaubajÐj¢ ubj• )�r%Ú}r&Ú(jÅUjÒ}r'Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÚjÞ]r(Újò)�r)Ú}r*Ú(jÅX2GBr+ÚjÆj%ÚjÎjOÕjÐjõjÒ}r,Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]r-ÚjçX2GBr.Ú…�r/Ú}r0Ú(jÅj+ÚjÆj)ÚubaubajÐj¢ ubj• )�r1Ú}r2Ú(jÅUjÒ}r3Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÚjÞ]r4Újò)�r5Ú}r6Ú(jÅX 0x80000000r7ÚjÆj1ÚjÎjOÕjÐjõjÒ}r8Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]r9ÚjçX 0x80000000r:Ú…�r;Ú}r<Ú(jÅj7ÚjÆj5ÚubaubajÐj¢ ubj• )�r=Ú}r>Ú(jÅUjÒ}r?Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÚjÞ]r@Újò)�rAÚ}rBÚ(jÅX 0xFFD00000rCÚjÆj=ÚjÎjOÕjÐjõjÒ}rDÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]rEÚjçX 0xFFD00000rFÚ…�rGÚ}rHÚ(jÅjCÚjÆjAÚubaubajÐj¢ ubejÐj£ ubj� )�rIÚ}rJÚ(jÅUjÒ}rKÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]rLÚ(j• )�rMÚ}rNÚ(jÅUjÒ}rOÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjIÚjÞ]rPÚjò)�rQÚ}rRÚ(jÅXK2G ICErSÚjÆjMÚjÎjOÕjÐjõjÒ}rTÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]rUÚjçXK2G ICErVÚ…�rWÚ}rXÚ(jÅjSÚjÆjQÚubaubajÐj¢ ubj• )�rYÚ}rZÚ(jÅUjÒ}r[Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjIÚjÞ]r\Újò)�r]Ú}r^Ú(jÅX512MBr_ÚjÆjYÚjÎjOÕjÐjõjÒ}r`Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]raÚjçX512MBrbÚ…�rcÚ}rdÚ(jÅj_ÚjÆj]ÚubaubajÐj¢ ubj• )�reÚ}rfÚ(jÅUjÒ}rgÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjIÚjÞ]rhÚjò)�riÚ}rjÚ(jÅX 0x80000000rkÚjÆjeÚjÎjOÕjÐjõjÒ}rlÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]rmÚjçX 0x80000000rnÚ…�roÚ}rpÚ(jÅjkÚjÆjiÚubaubajÐj¢ ubj• )�rqÚ}rrÚ(jÅUjÒ}rsÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjIÚjÞ]rtÚjò)�ruÚ}rvÚ(jÅX 0x9FE00000rwÚjÆjqÚjÎjOÕjÐjõjÒ}rxÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]ryÚjçX 0x9FE00000rzÚ…�r{Ú}r|Ú(jÅjwÚjÆjuÚubaubajÐj¢ ubejÐj£ ubj� )�r}Ú}r~Ú(jÅUjÒ}rÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]r€Ú(j• )�r�Ú}r‚Ú(jÅUjÒ}rƒÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj}ÚjÞ]r„Újò)�r…Ú}r†Ú(jÅXOMAPL137r‡ÚjÆj�ÚjÎjOÕjÐjõjÒ}rˆÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]r‰ÚjçXOMAPL137rŠÚ…�r‹Ú}rŒÚ(jÅj‡ÚjÆj…ÚubaubajÐj¢ ubj• )�r�Ú}rŽÚ(jÅUjÒ}r�Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj}ÚjÞ]r�Újò)�r‘Ú}r’Ú(jÅX OMAPL137 EVMr“ÚjÆj�ÚjÎjOÕjÐjõjÒ}r”Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]r•ÚjçX OMAPL137 EVMr–Ú…�r—Ú}r˜Ú(jÅj“ÚjÆj‘ÚubaubajÐj¢ ubj• )�r™Ú}ršÚ(jÅUjÒ}r›Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj}ÚjÞ]rœÚjò)�r�Ú}ržÚ(jÅX64MBrŸÚjÆj™ÚjÎjOÕjÐjõjÒ}r Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]r¡ÚjçX64MBr¢Ú…�r£Ú}r¤Ú(jÅjŸÚjÆj�ÚubaubajÐj¢ ubj• )�r¥Ú}r¦Ú(jÅUjÒ}r§Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj}ÚjÞ]r¨Újò)�r©Ú}rªÚ(jÅX 0xC3000000r«ÚjÆj¥ÚjÎjOÕjÐjõjÒ}r¬Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]r­ÚjçX 0xC3000000r®Ú…�r¯Ú}r°Ú(jÅj«ÚjÆj©ÚubaubajÐj¢ ubj• )�r±Ú}r²Ú(jÅUjÒ}r³Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj}ÚjÞ]r´Újò)�rµÚ}r¶Ú(jÅX 0xC6E00000r·ÚjÆj±ÚjÎjOÕjÐjõjÒ}r¸Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKHjÞ]r¹ÚjçX 0xC6E00000rºÚ…�r»Ú}r¼Ú(jÅj·ÚjÆjµÚubaubajÐj¢ ubejÐj£ ubj� )�r½Ú}r¾Ú(jÅUjÒ}r¿Ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõ×jÞ]rÀÚ(j• )�rÁÚ}rÂÚ(jÅUjÒ}rÃÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj½ÚjÞ]rÄÚjò)�rÅÚ}rÆÚ(jÅXOMAPL138rÇÚjÆjÁÚjÎjOÕjÐjõjÒ}rÈÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]rÉÚjçXOMAPL138rÊÚ…�rËÚ}rÌÚ(jÅjÇÚjÆjÅÚubaubajÐj¢ ubj• )�rÍÚ}rÎÚ(jÅUjÒ}rÏÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj½ÚjÞ]rÐÚjò)�rÑÚ}rÒÚ(jÅX OMAPL138 LCDKrÓÚjÆjÍÚjÎjOÕjÐjõjÒ}rÔÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]rÕÚjçX OMAPL138 LCDKrÖÚ…�r×Ú}rØÚ(jÅjÓÚjÆjÑÚubaubajÐj¢ ubj• )�rÙÚ}rÚÚ(jÅUjÒ}rÛÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj½ÚjÞ]rÜÚjò)�rÝÚ}rÞÚ(jÅX128MBrßÚjÆjÙÚjÎjOÕjÐjõjÒ}ràÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]ráÚjçX128MBrâÚ…�rãÚ}räÚ(jÅjßÚjÆjÝÚubaubajÐj¢ ubj• )�råÚ}ræÚ(jÅUjÒ}rçÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj½ÚjÞ]rèÚjò)�réÚ}rêÚ(jÅX 0xC0000000rëÚjÆjåÚjÎjOÕjÐjõjÒ}rìÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]ríÚjçX 0xC0000000rîÚ…�rïÚ}rðÚ(jÅjëÚjÆjéÚubaubajÐj¢ ubj• )�rñÚ}ròÚ(jÅUjÒ}róÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj½ÚjÞ]rôÚjò)�rõÚ}röÚ(jÅX 0xC7E00000r÷ÚjÆjñÚjÎjOÕjÐjõjÒ}røÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]rùÚjçX 0xC7E00000rúÚ…�rûÚ}rüÚ(jÅj÷ÚjÆjõÚubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubjÇ)�rýÚ}rþÚ(jÅUjÆj=ÕjÎjOÕjÐjÑjÒ}rÿÚ(jÔ]jÕ]jÖ]j×]rÛUpre-requisitesrÛajÚ]rÛj½aujÜKNjÝhjÞ]rÛ(jà)�rÛ}rÛ(jÅXPre-RequisitesrÛjÆjýÚjÎjOÕjÐjäjÒ}rÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKNjÝhjÞ]rÛjçXPre-Requisitesr Û…�r Û}r Û(jÅjÛjÆjÛubaubj )�r Û}r Û(jÅUjÆjýÚjÎjOÕjÐj jÒ}rÛ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKOjÝhjÞ]rÛj{)�rÛ}rÛ(jÅX�Download and install the Processor-SDK RTOS package. See the software product page for your device to get the latest version of this software: jÆj ÛjÎjOÕjÐjjÒ}rÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÛjò)�rÛ}rÛ(jÅXŽDownload and install the Processor-SDK RTOS package. See the software product page for your device to get the latest version of this software:rÛjÆjÛjÎjOÕjÐjõjÒ}rÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÞ]rÛjçXŽDownload and install the Processor-SDK RTOS package. See the software product page for your device to get the latest version of this software:rÛ…�rÛ}rÛ(jÅjÛjÆjÛubaubaubaubjt)�rÛ}rÛ(jÅUjÆjýÚjÎjOÕjÐjwjÒ}rÛ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKQjÝhjÞ]rÛ(j{)�r Û}r!Û(jÅXJ`Processor SDK for AM335x `__jÆjÛjÎjOÕjÐjjÒ}r"Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r#Ûjò)�r$Û}r%Û(jÅXJ`Processor SDK for AM335x `__r&ÛjÆj ÛjÎjOÕjÐjõjÒ}r'Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKQjÞ]r(Ûjû)�r)Û}r*Û(jÅj&ÛjÒ}r+Û(UnameXProcessor SDK for AM335xjX+http://www.ti.com/tool/processor-sdk-am335xj×]jÖ]jÔ]jÕ]jÚ]ujÆj$ÛjÞ]r,ÛjçXProcessor SDK for AM335xr-Û…�r.Û}r/Û(jÅUjÆj)ÛubajÐjÿubaubaubj{)�r0Û}r1Û(jÅXJ`Processor SDK for AM437x `__jÆjÛjÎjOÕjÐjjÒ}r2Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r3Ûjò)�r4Û}r5Û(jÅXJ`Processor SDK for AM437x `__r6ÛjÆj0ÛjÎjOÕjÐjõjÒ}r7Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÞ]r8Ûjû)�r9Û}r:Û(jÅj6ÛjÒ}r;Û(UnameXProcessor SDK for AM437xjX+http://www.ti.com/tool/processor-sdk-am437xj×]jÖ]jÔ]jÕ]jÚ]ujÆj4ÛjÞ]r<ÛjçXProcessor SDK for AM437xr=Û…�r>Û}r?Û(jÅUjÆj9ÛubajÐjÿubaubaubj{)�r@Û}rAÛ(jÅXI`Processor SDK for AM57xx `__jÆjÛjÎjOÕjÐjjÒ}rBÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rCÛjò)�rDÛ}rEÛ(jÅXI`Processor SDK for AM57xx `__rFÛjÆj@ÛjÎjOÕjÐjõjÒ}rGÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÞ]rHÛjû)�rIÛ}rJÛ(jÅjFÛjÒ}rKÛ(UnameXProcessor SDK for AM57xxjX*http://www.ti.com/tool/processor-sdk-am57xj×]jÖ]jÔ]jÕ]jÚ]ujÆjDÛjÞ]rLÛjçXProcessor SDK for AM57xxrMÛ…�rNÛ}rOÛ(jÅUjÆjIÛubajÐjÿubaubaubj{)�rPÛ}rQÛ(jÅXL`Processor SDK for AMIC110 `__jÆjÛjÎjOÕjÐjjÒ}rRÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rSÛjò)�rTÛ}rUÛ(jÅXL`Processor SDK for AMIC110 `__rVÛjÆjPÛjÎjOÕjÐjõjÒ}rWÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKWjÞ]rXÛjû)�rYÛ}rZÛ(jÅjVÛjÒ}r[Û(UnameXProcessor SDK for AMIC110jX,http://www.ti.com/tool/PROCESSOR-SDK-AMIC110j×]jÖ]jÔ]jÕ]jÚ]ujÆjTÛjÞ]r\ÛjçXProcessor SDK for AMIC110r]Û…�r^Û}r_Û(jÅUjÆjYÛubajÐjÿubaubaubj{)�r`Û}raÛ(jÅXY`Processor SDK RTOS for C6747/OMAP-L17 `__jÆjÛjÎjOÕjÐjjÒ}rbÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rcÛjò)�rdÛ}reÛ(jÅXY`Processor SDK RTOS for C6747/OMAP-L17 `__rfÛjÆj`ÛjÎjOÕjÐjõjÒ}rgÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÞ]rhÛjû)�riÛ}rjÛ(jÅjfÛjÒ}rkÛ(UnameX%Processor SDK RTOS for C6747/OMAP-L17jX-http://www.ti.com/tool/processor-sdk-omapl137j×]jÖ]jÔ]jÕ]jÚ]ujÆjdÛjÞ]rlÛjçX%Processor SDK RTOS for C6747/OMAP-L17rmÛ…�rnÛ}roÛ(jÅUjÆjiÛubajÐjÿubaubaubj{)�rpÛ}rqÛ(jÅXZ`Processor SDK RTOS for C6748/OMAP-L138 `__jÆjÛjÎjOÕjÐjjÒ}rrÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rsÛjò)�rtÛ}ruÛ(jÅXZ`Processor SDK RTOS for C6748/OMAP-L138 `__rvÛjÆjpÛjÎjOÕjÐjõjÒ}rwÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÞ]rxÛjû)�ryÛ}rzÛ(jÅjvÛjÒ}r{Û(UnameX&Processor SDK RTOS for C6748/OMAP-L138jX-http://www.ti.com/tool/processor-sdk-omapl138j×]jÖ]jÔ]jÕ]jÚ]ujÆjtÛjÞ]r|ÛjçX&Processor SDK RTOS for C6748/OMAP-L138r}Û…�r~Û}rÛ(jÅUjÆjyÛubajÐjÿubaubaubj{)�r€Û}r�Û(jÅXÀ`Processor SDK RTOS for K2G `__ From the appropriate software product page, go to the download page by clicking "Get Software" for the RTOS package. jÆjÛjÎjOÕjÐjjÒ}r‚Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rƒÛ(jò)�r„Û}r…Û(jÅXI`Processor SDK RTOS for K2G `__r†ÛjÆj€ÛjÎjOÕjÐjõjÒ}r‡Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜK]jÞ]rˆÛjû)�r‰Û}rŠÛ(jÅj†ÛjÒ}r‹Û(UnameXProcessor SDK RTOS for K2GjX(http://www.ti.com/tool/PROCESSOR-SDK-K2Gj×]jÖ]jÔ]jÕ]jÚ]ujÆj„ÛjÞ]rŒÛjçXProcessor SDK RTOS for K2Gr�Û…�rŽÛ}r�Û(jÅUjÆj‰ÛubajÐjÿubaubjò)�r�Û}r‘Û(jÅXtFrom the appropriate software product page, go to the download page by clicking "Get Software" for the RTOS package.r’ÛjÆj€ÛjÎjOÕjÐjõjÒ}r“Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜK`jÞ]r”ÛjçXtFrom the appropriate software product page, go to the download page by clicking "Get Software" for the RTOS package.r•Û…�r–Û}r—Û(jÅj’ÛjÆj�Ûubaubeubeubj )�r˜Û}r™Û(jÅUjÆjýÚjÎjOÕjÐj jÒ}ršÛ(jU.jO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÜKcjÝhjÞ]r›Ûj{)�rœÛ}r�Û(jÅXˆThe Uart Apploader binaries are found under /packages/ti/board/utils/uartAppLoader/bin//sd/apploader_Test jÆj˜ÛjÎjOÕjÐjjÒ}ržÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŸÛjò)�r Û}r¡Û(jÅX‡The Uart Apploader binaries are found under /packages/ti/board/utils/uartAppLoader/bin//sd/apploader_Testr¢ÛjÆjœÛjÎjOÕjÐjõjÒ}r£Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKcjÞ]r¤ÛjçX‡The Uart Apploader binaries are found under /packages/ti/board/utils/uartAppLoader/bin//sd/apploader_Testr¥Û…�r¦Û}r§Û(jÅj¢ÛjÆj Ûubaubaubaubjò)�r¨Û}r©Û(jÅX**Serial Connection**rªÛjÆjýÚjÎjOÕjÐjõjÒ}r«Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKejÝhjÞ]r¬ÛjÚ)�r­Û}r®Û(jÅjªÛjÒ}r¯Û(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨ÛjÞ]r°ÛjçXSerial Connectionr±Û…�r²Û}r³Û(jÅUjÆj­ÛubajÐjâubaubjò)�r´Û}rµÛ(jÅXDLaunch the serial console utility with the following configurations:r¶ÛjÆjýÚjÎjOÕjÐjõjÒ}r·Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKgjÝhjÞ]r¸ÛjçXDLaunch the serial console utility with the following configurations:r¹Û…�rºÛ}r»Û(jÅj¶ÛjÆj´Ûubaubjt)�r¼Û}r½Û(jÅUjÆjýÚjÎjOÕjÐjwjÒ}r¾Û(jyX*j×]jÖ]jÔ]jÕ]jÚ]ujÜKjjÝhjÞ]r¿Û(j{)�rÀÛ}rÁÛ(jÅXBaud Rate: 115200 jÆj¼ÛjÎjOÕjÐjjÒ}rÂÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÃÛjò)�rÄÛ}rÅÛ(jÅXBaud Rate: 115200rÆÛjÆjÀÛjÎjOÕjÐjõjÒ}rÇÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÞ]rÈÛjçXBaud Rate: 115200rÉÛ…�rÊÛ}rËÛ(jÅjÆÛjÆjÄÛubaubaubj{)�rÌÛ}rÍÛ(jÅXData : 8 bits jÆj¼ÛjÎjOÕjÐjjÒ}rÎÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÏÛjò)�rÐÛ}rÑÛ(jÅX Data : 8 bitsrÒÛjÆjÌÛjÎjOÕjÐjõjÒ}rÓÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKljÞ]rÔÛjçX Data : 8 bitsrÕÛ…�rÖÛ}r×Û(jÅjÒÛjÆjÐÛubaubaubj{)�rØÛ}rÙÛ(jÅXParity : None jÆj¼ÛjÎjOÕjÐjjÒ}rÚÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÛÛjò)�rÜÛ}rÝÛ(jÅX Parity : NonerÞÛjÆjØÛjÎjOÕjÐjõjÒ}rßÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKnjÞ]ràÛjçX Parity : NoneráÛ…�râÛ}rãÛ(jÅjÞÛjÆjÜÛubaubaubj{)�räÛ}råÛ(jÅX Stop : 1 bit jÆj¼ÛjÎjOÕjÐjjÒ}ræÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rçÛjò)�rèÛ}réÛ(jÅX Stop : 1 bitrêÛjÆjäÛjÎjOÕjÐjõjÒ}rëÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKpjÞ]rìÛjçX Stop : 1 bitríÛ…�rîÛ}rïÛ(jÅjêÛjÆjèÛubaubaubj{)�rðÛ}rñÛ(jÅXFlow Control : None jÆj¼ÛjÎjOÕjÐjjÒ}ròÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]róÛjò)�rôÛ}rõÛ(jÅXFlow Control : NoneröÛjÆjðÛjÎjOÕjÐjõjÒ}r÷Û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKrjÞ]røÛjçXFlow Control : NonerùÛ…�rúÛ}rûÛ(jÅjöÛjÆjôÛubaubaubeubjë)�rüÛ}rýÛ(jÅXbAny Serial Console utility that supports xmodem protocol can be used. Verified utility is TeratermjÆjýÚjÎjOÕjÐjïjÒ}rþÛ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÿÛjò)�rÜ}rÜ(jÅXbAny Serial Console utility that supports xmodem protocol can be used. Verified utility is TeratermrÜjÆjüÛjÎjOÕjÐjõjÒ}rÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÞ]rÜjçXbAny Serial Console utility that supports xmodem protocol can be used. Verified utility is TeratermrÜ…�rÜ}rÜ(jÅjÜjÆjÜubaubaubjë)�rÜ}r Ü(jÅX…TI Binaries does not work with Apploader on AM335x/AM437x platforms. Make sure to use non TI binaries for testing on these platforms.jÆjýÚjÎjOÕjÐjïjÒ}r Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r Üjò)�r Ü}r Ü(jÅX…TI Binaries does not work with Apploader on AM335x/AM437x platforms. Make sure to use non TI binaries for testing on these platforms.rÜjÆjÜjÎjOÕjÐjõjÒ}rÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÞ]rÜjçX…TI Binaries does not work with Apploader on AM335x/AM437x platforms. Make sure to use non TI binaries for testing on these platforms.rÜ…�rÜ}rÜ(jÅjÜjÆj ÜubaubaubeubjÇ)�rÜ}rÜ(jÅUjÆj=ÕjÎjOÕjÐjÑjÒ}rÜ(jÔ]jÕ]jÖ]j×]rÜUapploader-usagerÜajÚ]rÜh aujÜK{jÝhjÞ]rÜ(jà)�rÜ}rÜ(jÅXAppLoader UsagerÜjÆjÜjÎjOÕjÐjäjÒ}rÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÝhjÞ]rÜjçXAppLoader Usager Ü…�r!Ü}r"Ü(jÅjÜjÆjÜubaubj )�r#Ü}r$Ü(jÅUjÆjÜjÎjOÕjÐj jÒ}r%Ü(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK|jÝhjÞ]r&Ü(j{)�r'Ü}r(Ü(jÅX<Set the sysboot pins to the relevant boot mode(SPI / MMCSD).r)ÜjÆj#ÜjÎjOÕjÐjjÒ}r*Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r+Üjò)�r,Ü}r-Ü(jÅj)ÜjÆj'ÜjÎjOÕjÐjõjÒ}r.Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜK|jÞ]r/ÜjçX<Set the sysboot pins to the relevant boot mode(SPI / MMCSD).r0Ü…�r1Ü}r2Ü(jÅj)ÜjÆj,Üubaubaubj{)�r3Ü}r4Ü(jÅXMMake sure UART connection is established between Target platform and Host PC.r5ÜjÆj#ÜjÎjOÕjÐjjÒ}r6Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r7Üjò)�r8Ü}r9Ü(jÅj5ÜjÆj3ÜjÎjOÕjÐjõjÒ}r:Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]r;ÜjçXMMake sure UART connection is established between Target platform and Host PC.r<Ü…�r=Ü}r>Ü(jÅj5ÜjÆj8Üubaubaubj{)�r?Ü}r@Ü(jÅXPower cycle the board.rAÜjÆj#ÜjÎjOÕjÐjjÒ}rBÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rCÜjò)�rDÜ}rEÜ(jÅjAÜjÆj?ÜjÎjOÕjÐjõjÒ}rFÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK~jÞ]rGÜjçXPower cycle the board.rHÜ…�rIÜ}rJÜ(jÅjAÜjÆjDÜubaubaubj{)�rKÜ}rLÜ(jÅX[Check the below output on the serial console. The application starts sending character 'C' jÆj#ÜjÎjOÕjÐjjÒ}rMÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rNÜjò)�rOÜ}rPÜ(jÅXZCheck the below output on the serial console. The application starts sending character 'C'rQÜjÆjKÜjÎjOÕjÐjõjÒ}rRÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rSÜjçXZCheck the below output on the serial console. The application starts sending character 'C'rTÜ…�rUÜ}rVÜ(jÅjQÜjÆjOÜubaubaubeubj)�rWÜ}rXÜ(jÅX,**** PDK SBL **** SBL Revision: 01.00.09.00 (May 10 2018 - 15:48:57) Begin parsing user application SD Boot - file open completed successfully Jumping to user application... ********* PDK UART Apploader ******** version 0.1 (May 14 2018 - 21:40:11) Please transfer file with XMODEM protocol... CCCCjÆjÜjÎjOÕjÐjjÒ}rYÜ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMM1jÝhjÞ]rZÜjçX,**** PDK SBL **** SBL Revision: 01.00.09.00 (May 10 2018 - 15:48:57) Begin parsing user application SD Boot - file open completed successfully Jumping to user application... ********* PDK UART Apploader ******** version 0.1 (May 14 2018 - 21:40:11) Please transfer file with XMODEM protocol... CCCCr[Ü…�r\Ü}r]Ü(jÅUjÆjWÜubaubjë)�r^Ü}r_Ü(jÅX{The above log is for reference purpose and content might change based on latest software available in processor SDK releaser`ÜjÆjÜjÎjOÕjÐjïjÒ}raÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rbÜjò)�rcÜ}rdÜ(jÅj`ÜjÆj^ÜjÎjOÕjÐjõjÒ}reÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rfÜjçX{The above log is for reference purpose and content might change based on latest software available in processor SDK releasergÜ…�rhÜ}riÜ(jÅj`ÜjÆjcÜubaubaubj )�rjÜ}rkÜ(jÅUjÆjÜjÎjOÕjÐj jÒ}rlÜ(jU.jO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK‘jÝhjÞ]rmÜj{)�rnÜ}roÜ(jÅXYNow transfer the application binary to be tested over UART using serial console utility. jÆjjÜjÎjOÕjÐjjÒ}rpÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rqÜjò)�rrÜ}rsÜ(jÅXXNow transfer the application binary to be tested over UART using serial console utility.rtÜjÆjnÜjÎjOÕjÐjõjÒ}ruÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‘jÞ]rvÜjçXXNow transfer the application binary to be tested over UART using serial console utility.rwÜ…�rxÜ}ryÜ(jÅjtÜjÆjrÜubaubaubaubjë)�rzÜ}r{Ü(jÅXxFor example in Teraterm, use the following option to transfer the application binary. File -> Transfer -> XMODEM -> SendjÆjÜjÎjOÕjÐjïjÒ}r|Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r}Üjò)�r~Ü}rÜ(jÅXxFor example in Teraterm, use the following option to transfer the application binary. File -> Transfer -> XMODEM -> Sendr€ÜjÆjzÜjÎjOÕjÐjõjÒ}r�Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜK“jÞ]r‚ÜjçXxFor example in Teraterm, use the following option to transfer the application binary. File -> Transfer -> XMODEM -> SendrƒÜ…�r„Ü}r…Ü(jÅj€ÜjÆj~Üubaubaubj )�r†Ü}r‡Ü(jÅUjÆjÜjÎjOÕjÐj jÒ}rˆÜ(jU.jO3Kj×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK–jÝhjÞ]r‰Ü(j{)�rŠÜ}r‹Ü(jÅX?Upon success, the apploader loads and executes the application.rŒÜjÆj†ÜjÎjOÕjÐjjÒ}r�Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rŽÜjò)�r�Ü}r�Ü(jÅjŒÜjÆjŠÜjÎjOÕjÐjõjÒ}r‘Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜK–jÞ]r’ÜjçX?Upon success, the apploader loads and executes the application.r“Ü…�r”Ü}r•Ü(jÅjŒÜjÆj�Üubaubaubj{)�r–Ü}r—Ü(jÅX[Following is the sample output (using UART Diagnostic application), on the serial console. jÆj†ÜjÎjOÕjÐjjÒ}r˜Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r™Üjò)�ršÜ}r›Ü(jÅXZFollowing is the sample output (using UART Diagnostic application), on the serial console.rœÜjÆj–ÜjÎjOÕjÐjõjÒ}r�Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÞ]ržÜjçXZFollowing is the sample output (using UART Diagnostic application), on the serial console.rŸÜ…�r Ü}r¡Ü(jÅjœÜjÆjšÜubaubaubeubj)�r¢Ü}r£Ü(jÅX�Xmodem received 46848 bytes Copying application image from UART to RAM is done Begin parsing user application Jumping to user application... ********************************************* * UART Test * ********************************************* Testing UART print to console at 115.2k baud rate Press 'y' to verify pass: y Received: y Test PASSED!jÆjÜjÎjOÕjÐjjÒ}r¤Ü(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMe1jÝhjÞ]r¥ÜjçX�Xmodem received 46848 bytes Copying application image from UART to RAM is done Begin parsing user application Jumping to user application... ********************************************* * UART Test * ********************************************* Testing UART print to console at 115.2k baud rate Press 'y' to verify pass: y Received: y Test PASSED!r¦Ü…�r§Ü}r¨Ü(jÅUjÆj¢Üubaubjë)�r©Ü}rªÜ(jÅXÌFor SPI Boot Mode: 1. Program Apploader to SPI flash using `Uniflash `__ and boot the device from SPI flash. 2. Set the sysboot pins to SPI Boot modejÆjÜjÎjOÕjÐjïjÒ}r«Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¬Üjò)�r­Ü}r®Ü(jÅXÌFor SPI Boot Mode: 1. Program Apploader to SPI flash using `Uniflash `__ and boot the device from SPI flash. 2. Set the sysboot pins to SPI Boot modejÆj©ÜjÎjOÕjÐjõjÒ}r¯Ü(jÔ]jÕ]jÖ]j×]jÚ]ujÜK«jÞ]r°Ü(jçX;For SPI Boot Mode: 1. Program Apploader to SPI flash using r±Ü…�r²Ü}r³Ü(jÅX;For SPI Boot Mode: 1. Program Apploader to SPI flash using jÆj­Üubjû)�r´Ü}rµÜ(jÅXD`Uniflash `__jÒ}r¶Ü(UnameXUniflashjX5index_board.html#programming-binaries-to-flash-devicej×]jÖ]jÔ]jÕ]jÚ]ujÆj­ÜjÞ]r·ÜjçXUniflashr¸Ü…�r¹Ü}rºÜ(jÅUjÆj´ÜubajÐjÿubjçXM and boot the device from SPI flash. 2. Set the sysboot pins to SPI Boot moder»Ü…�r¼Ü}r½Ü(jÅXM and boot the device from SPI flash. 2. Set the sysboot pins to SPI Boot modejÆj­Üubeubaubjë)�r¾Ü}r¿Ü(jÅXŒFor MMCSD Boot Mode: 1. Copy MLO to SD card. 2. Rename apploader_Test to app and copy to SD card. 3. Set the sysboot pins to MMCSD Boot modejÆjÜjÎjOÕjÐjïjÒ}rÀÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÁÜjò)�rÂÜ}rÃÜ(jÅXŒFor MMCSD Boot Mode: 1. Copy MLO to SD card. 2. Rename apploader_Test to app and copy to SD card. 3. Set the sysboot pins to MMCSD Boot moderÄÜjÆj¾ÜjÎjOÕjÐjõjÒ}rÅÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¯jÞ]rÆÜjçXŒFor MMCSD Boot Mode: 1. Copy MLO to SD card. 2. Rename apploader_Test to app and copy to SD card. 3. Set the sysboot pins to MMCSD Boot moderÇÜ…�rÈÜ}rÉÜ(jÅjÄÜjÆjÂÜubaubaubeubjÇ)�rÊÜ}rËÜ(jÅUjÆj=ÕjÎjOÕjÐjÑjÒ}rÌÜ(jÔ]jÕ]jÖ]j×]rÍÜUrebuilding-apploaderrÎÜajÚ]rÏÜjSaujÜKµjÝhjÞ]rÐÜ(jà)�rÑÜ}rÒÜ(jÅXRebuilding AppLoaderrÓÜjÆjÊÜjÎjOÕjÐjäjÒ}rÔÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKµjÝhjÞ]rÕÜjçXRebuilding AppLoaderrÖÜ…�r×Ü}rØÜ(jÅjÓÜjÆjÑÜubaubjò)�rÙÜ}rÚÜ(jÅXŽApploader pre-built binaries are currently not available for OMAPL137/L138 platforms. Binaries needs to be manually built for these platforms.rÛÜjÆjÊÜjÎjOÕjÐjõjÒ}rÜÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¶jÝhjÞ]rÝÜjçXŽApploader pre-built binaries are currently not available for OMAPL137/L138 platforms. Binaries needs to be manually built for these platforms.rÞÜ…�rßÜ}ràÜ(jÅjÛÜjÆjÙÜubaubjò)�ráÜ}râÜ(jÅXfRefer `Rebuilding Board Utils `__ section to build Apploader.rãÜjÆjÊÜjÎjOÕjÐjõjÒ}räÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¹jÝhjÞ]råÜ(jçXRefer ræÜ…�rçÜ}rèÜ(jÅXRefer jÆjáÜubjû)�réÜ}rêÜ(jÅXD`Rebuilding Board Utils `__jÒ}rëÜ(UnameXRebuilding Board UtilsjX'index_board.html#rebuilding-board-utilsj×]jÖ]jÔ]jÕ]jÚ]ujÆjáÜjÞ]rìÜjçXRebuilding Board UtilsríÜ…�rîÜ}rïÜ(jÅUjÆjéÜubajÐjÿubjçX section to build Apploader.rðÜ…�rñÜ}ròÜ(jÅX section to build Apploader.jÆjáÜubeubeubeubeubjÎj¥‚j¦}róÜh9jž‚sjÐjÑjÒ}rôÜ(jÔ]rõÜXoverviewröÜajÕ]jÖ]j×]r÷Ü(j¡‚Uid66røÜejÚ]rùÜh9aujÜKjÝhj"¦}rúÜj¡‚jž‚sjÞ]rûÜ(jà)�rüÜ}rýÜ(jÅXOverviewrþÜjÆj�‚jÎj¥‚jÐjäjÒ}rÿÜ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÝjçXOverviewrÝ…�rÝ}rÝ(jÅjþÜjÆjüÜubaubjò)�rÝ}rÝ(jÅXeThis page provides an overview about the Secondary Bootloader support provided in Processor SDK RTOS.rÝjÆj�‚jÎj¥‚jÐjõjÒ}rÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÝjçXeThis page provides an overview about the Secondary Bootloader support provided in Processor SDK RTOS.r Ý…�r Ý}r Ý(jÅjÝjÆjÝubaubjò)�r Ý}r Ý(jÅX=The Secondary Bootloader (SBL) sets-up the PLL clocks, powers on the I/O Peripherals, initializes the DDR, loads the application image into DDR & brings the slave cores for applicable SOCs out of reset. Additional details including execution boot flow is covered in more elaborate detail under individual SOC section.rÝjÆj�‚jÎj¥‚jÐjõjÒ}rÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÝjçX=The Secondary Bootloader (SBL) sets-up the PLL clocks, powers on the I/O Peripherals, initializes the DDR, loads the application image into DDR & brings the slave cores for applicable SOCs out of reset. Additional details including execution boot flow is covered in more elaborate detail under individual SOC section.rÝ…�rÝ}rÝ(jÅjÝjÆj ÝubaubeubjÎj¥‚jÐjv~jÒ}rÝ(jÔ]UlevelKj×]jÖ]rÝjøÜaUsourcej¥‚jÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rÝjò)�rÝ}rÝ(jÅX+Duplicate implicit target name: "overview".jÒ}rÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‹‚jÞ]rÝjçX+Duplicate implicit target name: "overview".rÝ…�rÝ}rÝ(jÅUjÆjÝubajÐjõubaubjs~)�rÝ}rÝ(jÅUjÆjcƒjÎj\ƒjÐjv~jÒ}r Ý(jÔ]UlevelKj×]jÖ]r!ÝjiƒaUsourcej\ƒjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r"Ýjò)�r#Ý}r$Ý(jÅX+Duplicate implicit target name: "overview".jÒ}r%Ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÝjÞ]r&ÝjçX+Duplicate implicit target name: "overview".r'Ý…�r(Ý}r)Ý(jÅUjÆj#ÝubajÐjõubaubjs~)�r*Ý}r+Ý(jÅUjÆj"‡jÎj\ƒjÐjv~jÒ}r,Ý(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineK´Utypej„~ujÜK©jÝhjÞ]r-Ýjò)�r.Ý}r/Ý(jÅX:Enumerated list start value not ordinal-1: "2" (ordinal 2)jÒ}r0Ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*ÝjÞ]r1ÝjçX:Enumerated list start value not ordinal-1: "2" (ordinal 2)r2Ý…�r3Ý}r4Ý(jÅUjÆj.ÝubajÐjõubaubjs~)�r5Ý}r6Ý(jÅUjÆj"‡jÎj\ƒjÐjv~jÒ}r7Ý(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineK´Utypej„~ujÜK¯jÝhjÞ]r8Ýjò)�r9Ý}r:Ý(jÅX:Enumerated list start value not ordinal-1: "3" (ordinal 3)jÒ}r;Ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5ÝjÞ]r<ÝjçX:Enumerated list start value not ordinal-1: "3" (ordinal 3)r=Ý…�r>Ý}r?Ý(jÅUjÆj9ÝubajÐjõubaubjs~)�r@Ý}rAÝ(jÅUjÆj4ŒjÎj\ƒjÐjv~jÒ}rBÝ(jÔ]UlevelKj×]jÖ]rCÝj9ŒaUsourcej\ƒjÕ]jÚ]UlineMIUtypej„~ujÜMIjÝhjÞ]rDÝjò)�rEÝ}rFÝ(jÅX-Duplicate implicit target name: "boot modes".jÒ}rGÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj@ÝjÞ]rHÝjçX-Duplicate implicit target name: "boot modes".rIÝ…�rJÝ}rKÝ(jÅUjÆjEÝubajÐjõubaubjs~)�rLÝ}rMÝ(jÅUjÆjB”jÎXsinternal padding after source/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_AM335x_AM437x.rst.incrNÝjÐjv~jÒ}rOÝ(jÔ]UlevelKj×]jÖ]Usourcej\ƒjÕ]jÚ]UlineMRUtypeUERRORrPÝujÜMTjÝhjÞ]rQÝ(jò)�rRÝ}rSÝ(jÅX;Content block expected for the "raw" directive; none found.jÒ}rTÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjLÝjÞ]rUÝjçX;Content block expected for the "raw" directive; none found.rVÝ…�rWÝ}rXÝ(jÅUjÆjRÝubajÐjõubj)�rYÝ}rZÝ(jÅX.. raw:: html jÒ}r[Ý(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjLÝjÞ]r\ÝjçX.. raw:: html r]Ý…�r^Ý}r_Ý(jÅUjÆjYÝubajÐjubeubjs~)�r`Ý}raÝ(jÅUjÆjy”jÎjr”jÐjv~jÒ}rbÝ(jÔ]UlevelKj×]jÖ]rcÝj”aUsourcejr”jÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rdÝjò)�reÝ}rfÝ(jÅX+Duplicate implicit target name: "overview".jÒ}rgÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`ÝjÞ]rhÝjçX+Duplicate implicit target name: "overview".riÝ…�rjÝ}rkÝ(jÅUjÆjeÝubajÐjõubaubjs~)�rlÝ}rmÝ(jÅUjÆj‘”jÎjr”jÐjv~jÒ}rnÝ(jÔ]UlevelKj×]jÖ]roÝj–”aUsourcejr”jÕ]jÚ]UlineK Utypej„~ujÜK jÝhjÞ]rpÝjò)�rqÝ}rrÝ(jÅX@Duplicate implicit target name: "bootloader execution sequence".jÒ}rsÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlÝjÞ]rtÝjçX@Duplicate implicit target name: "bootloader execution sequence".ruÝ…�rvÝ}rwÝ(jÅUjÆjqÝubajÐjõubaubjs~)�rxÝ}ryÝ(jÅUjÆjh–jÎjr”jÐjv~jÒ}rzÝ(jÔ]UlevelKj×]jÖ]r{Ýjm–aUsourcejr”jÕ]jÚ]UlineKUUtypej„~ujÜKUjÝhjÞ]r|Ýjò)�r}Ý}r~Ý(jÅX;Duplicate implicit target name: "tools and binary formats".jÒ}rÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjxÝjÞ]r€ÝjçX;Duplicate implicit target name: "tools and binary formats".r�Ý…�r‚Ý}rƒÝ(jÅUjÆj}ÝubajÐjõubaubjs~)�r„Ý}r…Ý(jÅUjÆjh–jÎjr”jÐjv~jÒ}r†Ý(jÔ]UlevelKj×]jÖ]Usourcejr”jÕ]jÚ]UlineKbUtypejx~ujÜKajÝhjÞ]r‡Ýjò)�rˆÝ}r‰Ý(jÅX%Line block ends without a blank line.jÒ}rŠÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj„ÝjÞ]r‹ÝjçX%Line block ends without a blank line.rŒÝ…�r�Ý}rŽÝ(jÅUjÆjˆÝubajÐjõubaubjs~)�r�Ý}r�Ý(jÅUjÆjh–jÎjr”jÐjv~jÒ}r‘Ý(jÔ]UlevelKj×]jÖ]Usourcejr”jÕ]jÚ]UlineK›Utypejx~ujÜKšjÝhjÞ]r’Ýjò)�r“Ý}r”Ý(jÅX%Line block ends without a blank line.jÒ}r•Ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ÝjÞ]r–ÝjçX%Line block ends without a blank line.r—Ý…�r˜Ý}r™Ý(jÅUjÆj“ÝubajÐjõubaubjs~)�ršÝ}r›Ý(jÅUjÆjžœjÎjr”jÐjv~jÒ}rœÝ(jÔ]UlevelKj×]jÖ]r�Ýj£œaUsourcejr”jÕ]jÚ]UlineM Utypej„~ujÜM jÝhjÞ]ržÝjò)�rŸÝ}r Ý(jÅX6Duplicate implicit target name: "booting via sd card".jÒ}r¡Ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjšÝjÞ]r¢ÝjçX6Duplicate implicit target name: "booting via sd card".r£Ý…�r¤Ý}r¥Ý(jÅUjÆjŸÝubajÐjõubaubjs~)�r¦Ý}r§Ý(jÅUjÆjÿ�jÎjr”jÐjv~jÒ}r¨Ý(jÔ]UlevelKj×]jÖ]r©ÝjžaUsourcejr”jÕ]jÚ]UlineM=Utypej„~ujÜM=jÝhjÞ]rªÝjò)�r«Ý}r¬Ý(jÅX5Duplicate implicit target name: "booting the target".jÒ}r­Ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦ÝjÞ]r®ÝjçX5Duplicate implicit target name: "booting the target".r¯Ý…�r°Ý}r±Ý(jÅUjÆj«ÝubajÐjõubaubjs~)�r²Ý}r³Ý(jÅUjÆjBžjÎjr”jÐjv~jÒ}r´Ý(jÔ]UlevelKj×]jÖ]rµÝjGžaUsourcejr”jÕ]jÚ]UlineMGUtypej„~ujÜMGjÝhjÞ]r¶Ýjò)�r·Ý}r¸Ý(jÅX3Duplicate implicit target name: "booting via qspi".jÒ}r¹Ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²ÝjÞ]rºÝjçX3Duplicate implicit target name: "booting via qspi".r»Ý…�r¼Ý}r½Ý(jÅUjÆj·ÝubajÐjõubaubjs~)�r¾Ý}r¿Ý(jÅUjÆjužjÎjr”jÐjv~jÒ}rÀÝ(jÔ]UlevelKj×]jÖ]rÁÝjzžaUsourcejr”jÕ]jÚ]UlineMNUtypej„~ujÜMNjÝhjÞ]rÂÝjò)�rÃÝ}rÄÝ(jÅX9Duplicate implicit target name: "preparing flash device".jÒ}rÅÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¾ÝjÞ]rÆÝjçX9Duplicate implicit target name: "preparing flash device".rÇÝ…�rÈÝ}rÉÝ(jÅUjÆjÃÝubajÐjõubaubjs~)�rÊÝ}rËÝ(jÅUjÆj”ŸjÎjr”jÐjv~jÒ}rÌÝ(jÔ]UlevelKj×]jÖ]rÍÝj™ŸaUsourcejr”jÕ]jÚ]UlineM’Utypej„~ujÜM’jÝhjÞ]rÎÝjò)�rÏÝ}rÐÝ(jÅX3Duplicate implicit target name: "test application".jÒ}rÑÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊÝjÞ]rÒÝjçX3Duplicate implicit target name: "test application".rÓÝ…�rÔÝ}rÕÝ(jÅUjÆjÏÝubajÐjõubaubjs~)�rÖÝ}r×Ý(jÅUjÆj jÎjr”jÐjv~jÒ}rØÝ(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineK´Utypej„~ujÜMÞjÝhjÞ]rÙÝjò)�rÚÝ}rÛÝ(jÅX:Enumerated list start value not ordinal-1: "4" (ordinal 4)jÒ}rÜÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖÝjÞ]rÝÝjçX:Enumerated list start value not ordinal-1: "4" (ordinal 4)rÞÝ…�rßÝ}ràÝ(jÅUjÆjÚÝubajÐjõubaubjs~)�ráÝ}râÝ(jÅUjÆjÆ jÎjr”jÐjv~jÒ}rãÝ(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineK´Utypej„~ujÜM!jÝhjÞ]räÝjò)�råÝ}ræÝ(jÅX:Enumerated list start value not ordinal-1: "4" (ordinal 4)jÒ}rçÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjáÝjÞ]rèÝjçX:Enumerated list start value not ordinal-1: "4" (ordinal 4)réÝ…�rêÝ}rëÝ(jÅUjÆjåÝubajÐjõubaubjs~)�rìÝ}ríÝ(jÅUjÆjÆ jÎjr”jÐjv~jÒ}rîÝ(jÔ]UlevelKj×]jÖ]Usourcejr”jÕ]jÚ]UlineM$Utypej„~ujÜM$jÝhjÞ]rïÝjò)�rðÝ}rñÝ(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}ròÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjìÝjÞ]róÝjçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rôÝ…�rõÝ}röÝ(jÅUjÆjðÝubajÐjõubaubjs~)�r÷Ý}røÝ(jÅUjÆji¢jÎjr”jÐjv~jÒ}rùÝ(jÔ]UlevelKj×]jÖ]Usourcejr”jÕ]jÚ]UlineM�UtypejPÝujÜM€jÝhjÞ]rúÝjò)�rûÝ}rüÝ(jÅXUnexpected indentation.jÒ}rýÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷ÝjÞ]rþÝjçXUnexpected indentation.rÿÝ…�rÞ}rÞ(jÅUjÆjûÝubajÐjõubaubjs~)�rÞ}rÞ(jÅUjÆji¢jÎjr”jÐjv~jÒ}rÞ(jÔ]UlevelKj×]jÖ]Usourcejr”jÕ]jÚ]UlineM‚Utypejx~ujÜNjÝhjÞ]rÞjò)�rÞ}rÞ(jÅX;Block quote ends without a blank line; unexpected unindent.jÒ}rÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÞjÞ]r ÞjçX;Block quote ends without a blank line; unexpected unindent.r Þ…�r Þ}r Þ(jÅUjÆjÞubajÐjõubaubjs~)�r Þ}rÞ(jÅUjÆj¤¢jÎjr”jÐjv~jÒ}rÞ(jÔ]UlevelKj×]jÖ]Usourcejr”jÕ]jÚ]UlineM±Utypejx~ujÜM°jÝhjÞ]rÞjò)�rÞ}rÞ(jÅX?Explicit markup ends without a blank line; unexpected unindent.jÒ}rÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÞjÞ]rÞjçX?Explicit markup ends without a blank line; unexpected unindent.rÞ…�rÞ}rÞ(jÅUjÆjÞubajÐjõubaubjs~)�rÞ}rÞ(jÅUjÆj8£jÎjr”jÐjv~jÒ}rÞ(jÔ]UlevelKj×]jÖ]rÞj=£aUsourcejr”jÕ]jÚ]UlineMÀUtypej„~ujÜMÀjÝhjÞ]rÞjò)�rÞ}rÞ(jÅX.Duplicate implicit target name: "usage notes".jÒ}rÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÞjÞ]r ÞjçX.Duplicate implicit target name: "usage notes".r!Þ…�r"Þ}r#Þ(jÅUjÆjÞubajÐjõubaubjs~)�r$Þ}r%Þ(jÅUjÆjˆ£jÎjr”jÐjv~jÒ}r&Þ(jÔ]UlevelKj×]jÖ]r'Þj�£aUsourcejr”jÕ]jÚ]UlineMâUtypej„~ujÜMâjÝhjÞ]r(Þjò)�r)Þ}r*Þ(jÅX=Duplicate implicit target name: "debugging application boot".jÒ}r+Þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj$ÞjÞ]r,ÞjçX=Duplicate implicit target name: "debugging application boot".r-Þ…�r.Þ}r/Þ(jÅUjÆj)ÞubajÐjõubaubjs~)�r0Þ}r1Þ(jÅUjÆjˆ£jÎXkinternal padding after source/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_AM57x.rst.incr2ÞjÐjv~jÒ}r3Þ(jÔ]UlevelKj×]jÖ]Usourcejr”jÕ]jÚ]UlineMçUtypejPÝujÜMèjÝhjÞ]r4Þ(jò)�r5Þ}r6Þ(jÅX;Content block expected for the "raw" directive; none found.jÒ}r7Þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0ÞjÞ]r8ÞjçX;Content block expected for the "raw" directive; none found.r9Þ…�r:Þ}r;Þ(jÅUjÆj5ÞubajÐjõubj)�r<Þ}r=Þ(jÅX.. raw:: html jÒ}r>Þ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆj0ÞjÞ]r?ÞjçX.. raw:: html r@Þ…�rAÞ}rBÞ(jÅUjÆj<ÞubajÐjubeubjs~)�rCÞ}rDÞ(jÅUjÆj¾£jÎj·£jÐjv~jÒ}rEÞ(jÔ]UlevelKj×]jÖ]rFÞjÄ£aUsourcej·£jÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rGÞjò)�rHÞ}rIÞ(jÅX+Duplicate implicit target name: "overview".jÒ}rJÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjCÞjÞ]rKÞjçX+Duplicate implicit target name: "overview".rLÞ…�rMÞ}rNÞ(jÅUjÆjHÞubajÐjõubaubjs~)�rOÞ}rPÞ(jÅUjÆj6¦jÎj·£jÐjv~jÒ}rQÞ(jÔ]UlevelKj×]jÖ]rRÞj<¦aUsourcej·£jÕ]jÚ]UlineKnUtypej„~ujÜKnjÝhjÞ]rSÞjò)�rTÞ}rUÞ(jÅX-Duplicate implicit target name: "memory map".jÒ}rVÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjOÞjÞ]rWÞjçX-Duplicate implicit target name: "memory map".rXÞ…�rYÞ}rZÞ(jÅUjÆjTÞubajÐjõubaubjs~)�r[Þ}r\Þ(jÅUjÆjQ¦jÎj·£jÐjv~jÒ}r]Þ(jÔ]UlevelKj×]jÖ]r^ÞjW¦aUsourcej·£jÕ]jÚ]UlineKvUtypej„~ujÜKvjÝhjÞ]r_Þjò)�r`Þ}raÞ(jÅX6Duplicate implicit target name: "directory structure".jÒ}rbÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[ÞjÞ]rcÞjçX6Duplicate implicit target name: "directory structure".rdÞ…�reÞ}rfÞ(jÅUjÆj`ÞubajÐjõubaubjs~)�rgÞ}rhÞ(jÅUjÆj*ªjÎj·£jÐjv~jÒ}riÞ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineMhUtypejx~ujÜMgjÝhjÞ]rjÞjò)�rkÞ}rlÞ(jÅX;Bullet list ends without a blank line; unexpected unindent.jÒ}rmÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjgÞjÞ]rnÞjçX;Bullet list ends without a blank line; unexpected unindent.roÞ…�rpÞ}rqÞ(jÅUjÆjkÞubajÐjõubaubjs~)�rrÞ}rsÞ(jÅUjÆj*ªjÎj·£jÐjv~jÒ}rtÞ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineMzUtypej„~ujÜMzjÝhjÞ]ruÞjò)�rvÞ}rwÞ(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}rxÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjrÞjÞ]ryÞjçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rzÞ…�r{Þ}r|Þ(jÅUjÆjvÞubajÐjõubaubjs~)�r}Þ}r~Þ(jÅUjÆj*ªjÎj·£jÐjv~jÒ}rÞ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineMøUtypejx~ujÜM÷jÝhjÞ]r€Þjò)�r�Þ}r‚Þ(jÅX;Bullet list ends without a blank line; unexpected unindent.jÒ}rƒÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj}ÞjÞ]r„ÞjçX;Bullet list ends without a blank line; unexpected unindent.r…Þ…�r†Þ}r‡Þ(jÅUjÆj�ÞubajÐjõubaubjs~)�rˆÞ}r‰Þ(jÅUjÆj*ªjÎj·£jÐjv~jÒ}rŠÞ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineMþUtypejx~ujÜMýjÝhjÞ]r‹Þjò)�rŒÞ}r�Þ(jÅX;Bullet list ends without a blank line; unexpected unindent.jÒ}rŽÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆÞjÞ]r�ÞjçX;Bullet list ends without a blank line; unexpected unindent.r�Þ…�r‘Þ}r’Þ(jÅUjÆjŒÞubajÐjõubaubjs~)�r“Þ}r”Þ(jÅUjÆj*ªjÎj·£jÐjv~jÒ}r•Þ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineMUtypejx~ujÜMjÝhjÞ]r–Þjò)�r—Þ}r˜Þ(jÅX=Literal block ends without a blank line; unexpected unindent.jÒ}r™Þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ÞjÞ]ršÞjçX=Literal block ends without a blank line; unexpected unindent.r›Þ…�rœÞ}r�Þ(jÅUjÆj—ÞubajÐjõubaubjs~)�ržÞ}rŸÞ(jÅUjÆj*ªjÎj·£jÐjv~jÒ}r Þ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineMUtypejx~ujÜMjÝhjÞ]r¡Þjò)�r¢Þ}r£Þ(jÅX;Bullet list ends without a blank line; unexpected unindent.jÒ}r¤Þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjžÞjÞ]r¥ÞjçX;Bullet list ends without a blank line; unexpected unindent.r¦Þ…�r§Þ}r¨Þ(jÅUjÆj¢ÞubajÐjõubaubjs~)�r©Þ}rªÞ(jÅUjÆj*ªjÎj·£jÐjv~jÒ}r«Þ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineMUtypej„~ujÜMjÝhjÞ]r¬Þjò)�r­Þ}r®Þ(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}r¯Þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©ÞjÞ]r°ÞjçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.r±Þ…�r²Þ}r³Þ(jÅUjÆj­ÞubajÐjõubaubjs~)�r´Þ}rµÞ(jÅUjÆj*ªjÎj·£jÐjv~jÒ}r¶Þ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineMUtypejx~ujÜMjÝhjÞ]r·Þjò)�r¸Þ}r¹Þ(jÅX=Literal block ends without a blank line; unexpected unindent.jÒ}rºÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´ÞjÞ]r»ÞjçX=Literal block ends without a blank line; unexpected unindent.r¼Þ…�r½Þ}r¾Þ(jÅUjÆj¸ÞubajÐjõubaubjs~)�r¿Þ}rÀÞ(jÅUjÆj*ªjÎj·£jÐjv~jÒ}rÁÞ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineMUtypej„~ujÜMjÝhjÞ]rÂÞjò)�rÃÞ}rÄÞ(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}rÅÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¿ÞjÞ]rÆÞjçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rÇÞ…�rÈÞ}rÉÞ(jÅUjÆjÃÞubajÐjõubaubjs~)�rÊÞ}rËÞ(jÅUjÆj*ªjÎj·£jÐjv~jÒ}rÌÞ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineM_Utypejx~ujÜM^jÝhjÞ]rÍÞjò)�rÎÞ}rÏÞ(jÅX;Bullet list ends without a blank line; unexpected unindent.jÒ}rÐÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊÞjÞ]rÑÞjçX;Bullet list ends without a blank line; unexpected unindent.rÒÞ…�rÓÞ}rÔÞ(jÅUjÆjÎÞubajÐjõubaubjs~)�rÕÞ}rÖÞ(jÅUjÆj�®jÎj·£jÐjv~jÒ}r×Þ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineM•Utypej„~ujÜM•jÝhjÞ]rØÞjò)�rÙÞ}rÚÞ(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}rÛÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÕÞjÞ]rÜÞjçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rÝÞ…�rÞÞ}rßÞ(jÅUjÆjÙÞubajÐjõubaubjs~)�ràÞ}ráÞ(jÅUjÆj�®jÎj·£jÐjv~jÒ}râÞ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineM¢Utypej„~ujÜM¢jÝhjÞ]rãÞjò)�räÞ}råÞ(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}ræÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjàÞjÞ]rçÞjçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rèÞ…�réÞ}rêÞ(jÅUjÆjäÞubajÐjõubaubjs~)�rëÞ}rìÞ(jÅUjÆj�®jÎj·£jÐjv~jÒ}ríÞ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineM±Utypej„~ujÜM±jÝhjÞ]rîÞjò)�rïÞ}rðÞ(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}rñÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëÞjÞ]ròÞjçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.róÞ…�rôÞ}rõÞ(jÅUjÆjïÞubajÐjõubaubjs~)�röÞ}r÷Þ(jÅUjÆj�®jÎj·£jÐjv~jÒ}røÞ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineMÈUtypej„~ujÜMÈjÝhjÞ]rùÞjò)�rúÞ}rûÞ(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}rüÞ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjöÞjÞ]rýÞjçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.rþÞ…�rÿÞ}rß(jÅUjÆjúÞubajÐjõubaubjs~)�rß}rß(jÅUjÆjI¯jÎj·£jÐjv~jÒ}rß(jÔ]UlevelKj×]jÖ]rßjO¯aUsourcej·£jÕ]jÚ]UlineMÍUtypej„~ujÜMÍjÝhjÞ]rßjò)�rß}rß(jÅX-Duplicate implicit target name: "boot modes".jÒ}rß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjßjÞ]r ßjçX-Duplicate implicit target name: "boot modes".r ß…�r ß}r ß(jÅUjÆjßubajÐjõubaubjs~)�r ß}rß(jÅUjÆj„³jÎj}³jÐjv~jÒ}rß(jÔ]UlevelKj×]jÖ]rßjгaUsourcej}³jÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rßjò)�rß}rß(jÅX+Duplicate implicit target name: "overview".jÒ}rß(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ßjÞ]rßjçX+Duplicate implicit target name: "overview".rß…�rß}rß(jÅUjÆjßubajÐjõubaubjs~)�rß}rß(jÅUjÆj‡µjÎj}³jÐjv~jÒ}rß(jÔ]UlevelKj×]jÖ]rßj�µaUsourcej}³jÕ]jÚ]UlineK6Utypej„~ujÜK6jÝhjÞ]rßjò)�rß}rß(jÅX@Duplicate implicit target name: "bootloader execution sequence".jÒ}r ß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjßjÞ]r!ßjçX@Duplicate implicit target name: "bootloader execution sequence".r"ß…�r#ß}r$ß(jÅUjÆjßubajÐjõubaubjs~)�r%ß}r&ß(jÅUjÆj·jÎj}³jÐjv~jÒ}r'ß(jÔ]UlevelKj×]jÖ]r(ßj·aUsourcej}³jÕ]jÚ]UlineK£Utypej„~ujÜK£jÝhjÞ]r)ßjò)�r*ß}r+ß(jÅX.Duplicate implicit target name: "compilation".jÒ}r,ß(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ßjÞ]r-ßjçX.Duplicate implicit target name: "compilation".r.ß…�r/ß}r0ß(jÅUjÆj*ßubajÐjõubaubjs~)�r1ß}r2ß(jÅUjÆjÀ·jÎj}³jÐjv~jÒ}r3ß(jÔ]UlevelKj×]jÖ]r4ßjÆ·aUsourcej}³jÕ]jÚ]UlineKÆUtypej„~ujÜKÆjÝhjÞ]r5ßjò)�r6ß}r7ß(jÅX.Duplicate implicit target name: "compilation".jÒ}r8ß(jÔ]jÕ]jÖ]j×]jÚ]ujÆj1ßjÞ]r9ßjçX.Duplicate implicit target name: "compilation".r:ß…�r;ß}r<ß(jÅUjÆj6ßubajÐjõubaubjs~)�r=ß}r>ß(jÅUjÆj×·jÎj}³jÐjv~jÒ}r?ß(jÔ]UlevelKj×]jÖ]r@ßjÜ·aUsourcej}³jÕ]jÚ]UlineKÎUtypej„~ujÜKÎjÝhjÞ]rAßjò)�rBß}rCß(jÅX(Duplicate implicit target name: "usage".jÒ}rDß(jÔ]jÕ]jÖ]j×]jÚ]ujÆj=ßjÞ]rEßjçX(Duplicate implicit target name: "usage".rFß…�rGß}rHß(jÅUjÆjBßubajÐjõubaubjs~)�rIß}rJß(jÅUjÆjr¸jÎj}³jÐjv~jÒ}rKß(jÔ]UlevelKj×]jÖ]rLßjx¸aUsourcej}³jÕ]jÚ]UlineKéUtypej„~ujÜKéjÝhjÞ]rMßjò)�rNß}rOß(jÅX.Duplicate implicit target name: "compilation".jÒ}rPß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjIßjÞ]rQßjçX.Duplicate implicit target name: "compilation".rRß…�rSß}rTß(jÅUjÆjNßubajÐjõubaubjs~)�rUß}rVß(jÅUjÆj‰¸jÎj}³jÐjv~jÒ}rWß(jÔ]UlevelKj×]jÖ]rXßj�¸aUsourcej}³jÕ]jÚ]UlineKñUtypej„~ujÜKñjÝhjÞ]rYßjò)�rZß}r[ß(jÅX(Duplicate implicit target name: "usage".jÒ}r\ß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUßjÞ]r]ßjçX(Duplicate implicit target name: "usage".r^ß…�r_ß}r`ß(jÅUjÆjZßubajÐjõubaubjs~)�raß}rbß(jÅUjÆj¹jÎj}³jÐjv~jÒ}rcß(jÔ]UlevelKj×]jÖ]rdßj¹aUsourcej}³jÕ]jÚ]UlineMUtypej„~ujÜMjÝhjÞ]reßjò)�rfß}rgß(jÅX-Duplicate implicit target name: "boot modes".jÒ}rhß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjaßjÞ]rißjçX-Duplicate implicit target name: "boot modes".rjß…�rkß}rlß(jÅUjÆjfßubajÐjõubaubjs~)�rmß}rnß(jÅUjÆjÚºjÎj}³jÐjv~jÒ}roß(jÔ]UlevelKj×]jÖ]rpßjàºaUsourcej}³jÕ]jÚ]UlineM¥Utypej„~ujÜM¥jÝhjÞ]rqßjò)�rrß}rsß(jÅX.Duplicate implicit target name: "compilation".jÒ}rtß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmßjÞ]rußjçX.Duplicate implicit target name: "compilation".rvß…�rwß}rxß(jÅUjÆjrßubajÐjõubaubjs~)�ryß}rzß(jÅUjÆjñºjÎj}³jÐjv~jÒ}r{ß(jÔ]UlevelKj×]jÖ]r|ßj÷ºaUsourcej}³jÕ]jÚ]UlineM­Utypej„~ujÜM­jÝhjÞ]r}ßjò)�r~ß}rß(jÅX(Duplicate implicit target name: "usage".jÒ}r€ß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjyßjÞ]r�ßjçX(Duplicate implicit target name: "usage".r‚ß…�rƒß}r„ß(jÅUjÆj~ßubajÐjõubaubjs~)�r…ß}r†ß(jÅUjÆjw»jÎj}³jÐjv~jÒ}r‡ß(jÔ]UlevelKj×]jÖ]rˆßj}»aUsourcej}³jÕ]jÚ]UlineMÐUtypej„~ujÜMÐjÝhjÞ]r‰ßjò)�rŠß}r‹ß(jÅX.Duplicate implicit target name: "compilation".jÒ}rŒß(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…ßjÞ]r�ßjçX.Duplicate implicit target name: "compilation".rŽß…�r�ß}r�ß(jÅUjÆjŠßubajÐjõubaubjs~)�r‘ß}r’ß(jÅUjÆj•»jÎj}³jÐjv~jÒ}r“ß(jÔ]UlevelKj×]jÖ]r”ßj›»aUsourcej}³jÕ]jÚ]UlineMÝUtypej„~ujÜMÝjÝhjÞ]r•ßjò)�r–ß}r—ß(jÅX(Duplicate implicit target name: "usage".jÒ}r˜ß(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘ßjÞ]r™ßjçX(Duplicate implicit target name: "usage".ršß…�r›ß}rœß(jÅUjÆj–ßubajÐjõubaubjs~)�r�ß}ržß(jÅUjÆj¼jÎj}³jÐjv~jÒ}rŸß(jÔ]UlevelKj×]jÖ]r ßj!¼aUsourcej}³jÕ]jÚ]UlineMþUtypej„~ujÜMþjÝhjÞ]r¡ßjò)�r¢ß}r£ß(jÅX.Duplicate implicit target name: "compilation".jÒ}r¤ß(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ßjÞ]r¥ßjçX.Duplicate implicit target name: "compilation".r¦ß…�r§ß}r¨ß(jÅUjÆj¢ßubajÐjõubaubjs~)�r©ß}rªß(jÅUjÆj2¼jÎj}³jÐjv~jÒ}r«ß(jÔ]UlevelKj×]jÖ]r¬ßj8¼aUsourcej}³jÕ]jÚ]UlineMUtypej„~ujÜMjÝhjÞ]r­ßjò)�r®ß}r¯ß(jÅX(Duplicate implicit target name: "usage".jÒ}r°ß(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©ßjÞ]r±ßjçX(Duplicate implicit target name: "usage".r²ß…�r³ß}r´ß(jÅUjÆj®ßubajÐjõubaubjs~)�rµß}r¶ß(jÅUjÆjÙ¼jÎj}³jÐjv~jÒ}r·ß(jÔ]UlevelKj×]jÖ]r¸ßjß¼aUsourcej}³jÕ]jÚ]UlineM2Utypej„~ujÜM2jÝhjÞ]r¹ßjò)�rºß}r»ß(jÅX.Duplicate implicit target name: "compilation".jÒ}r¼ß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjµßjÞ]r½ßjçX.Duplicate implicit target name: "compilation".r¾ß…�r¿ß}rÀß(jÅUjÆjºßubajÐjõubaubjs~)�rÁß}rÂß(jÅUjÆj÷¼jÎj}³jÐjv~jÒ}rÃß(jÔ]UlevelKj×]jÖ]rÄßjý¼aUsourcej}³jÕ]jÚ]UlineMGUtypej„~ujÜMGjÝhjÞ]rÅßjò)�rÆß}rÇß(jÅX(Duplicate implicit target name: "usage".jÒ}rÈß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÁßjÞ]rÉßjçX(Duplicate implicit target name: "usage".rÊß…�rËß}rÌß(jÅUjÆjÆßubajÐjõubaubjs~)�rÍß}rÎß(jÅUjÆj«½jÎj}³jÐjv~jÒ}rÏß(jÔ]UlevelKj×]jÖ]rÐßj±½aUsourcej}³jÕ]jÚ]UlineM€Utypej„~ujÜM€jÝhjÞ]rÑßjò)�rÒß}rÓß(jÅX.Duplicate implicit target name: "compilation".jÒ}rÔß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÍßjÞ]rÕßjçX.Duplicate implicit target name: "compilation".rÖß…�r×ß}rØß(jÅUjÆjÒßubajÐjõubaubjs~)�rÙß}rÚß(jÅUjÆjؽjÎj}³jÐjv~jÒ}rÛß(jÔ]UlevelKj×]jÖ]rÜßjÞ½aUsourcej}³jÕ]jÚ]UlineM—Utypej„~ujÜM—jÝhjÞ]rÝßjò)�rÞß}rßß(jÅX(Duplicate implicit target name: "usage".jÒ}ràß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙßjÞ]ráßjçX(Duplicate implicit target name: "usage".râß…�rãß}räß(jÅUjÆjÞßubajÐjõubaubjs~)�råß}ræß(jÅUjÆjà¿jÎXjinternal padding after source/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_C66x.rst.incrçßjÐjv~jÒ}rèß(jÔ]UlevelKj×]jÖ]Usourcej}³jÕ]jÚ]UlineMeUtypejPÝujÜMgjÝhjÞ]réß(jò)�rêß}rëß(jÅX;Content block expected for the "raw" directive; none found.jÒ}rìß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjåßjÞ]ríßjçX;Content block expected for the "raw" directive; none found.rîß…�rïß}rðß(jÅUjÆjêßubajÐjõubj)�rñß}ròß(jÅX.. raw:: html jÒ}róß(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjåßjÞ]rôßjçX.. raw:: html rõß…�röß}r÷ß(jÅUjÆjñßubajÐjubeubjs~)�røß}rùß(jÅUjÆjbÀjÎj[ÀjÐjv~jÒ}rúß(jÔ]UlevelKj×]jÖ]rûßjhÀaUsourcej[ÀjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rüßjò)�rýß}rþß(jÅX+Duplicate implicit target name: "overview".jÒ}rÿß(jÔ]jÕ]jÖ]j×]jÚ]ujÆjøßjÞ]ràjçX+Duplicate implicit target name: "overview".rà…�rà}rà(jÅUjÆjýßubajÐjõubaubjs~)�rà}rà(jÅUjÆjzÀjÎj[ÀjÐjv~jÒ}rà(jÔ]UlevelKj×]jÖ]ràj€ÀaUsourcej[ÀjÕ]jÚ]UlineK Utypej„~ujÜK jÝhjÞ]ràjò)�r à}r à(jÅX@Duplicate implicit target name: "bootloader execution sequence".jÒ}r à(jÔ]jÕ]jÖ]j×]jÚ]ujÆjàjÞ]r àjçX@Duplicate implicit target name: "bootloader execution sequence".r à…�rà}rà(jÅUjÆj àubajÐjõubaubjs~)�rà}rà(jÅUjÆjøÀjÎj[ÀjÐjv~jÒ}rà(jÔ]UlevelKj×]jÖ]ràjþÀaUsourcej[ÀjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]ràjò)�rà}rà(jÅX;Duplicate implicit target name: "tools and binary formats".jÒ}rà(jÔ]jÕ]jÖ]j×]jÚ]ujÆjàjÞ]ràjçX;Duplicate implicit target name: "tools and binary formats".rà…�rà}rà(jÅUjÆjàubajÐjõubaubjs~)�rà}rà(jÅUjÆjõÂjÎj[ÀjÐjv~jÒ}rà(jÔ]UlevelKj×]jÖ]ràjûÂaUsourcej[ÀjÕ]jÚ]UlineKmUtypej„~ujÜKmjÝhjÞ]r àjò)�r!à}r"à(jÅX-Duplicate implicit target name: "boot modes".jÒ}r#à(jÔ]jÕ]jÖ]j×]jÚ]ujÆjàjÞ]r$àjçX-Duplicate implicit target name: "boot modes".r%à…�r&à}r'à(jÅUjÆj!àubajÐjõubaubjs~)�r(à}r)à(jÅUjÆjÃjÎj[ÀjÐjv~jÒ}r*à(jÔ]UlevelKj×]jÖ]r+àj"ÃaUsourcej[ÀjÕ]jÚ]UlineKuUtypej„~ujÜKujÝhjÞ]r,àjò)�r-à}r.à(jÅX8Duplicate implicit target name: "preparing the sd card".jÒ}r/à(jÔ]jÕ]jÖ]j×]jÚ]ujÆj(àjÞ]r0àjçX8Duplicate implicit target name: "preparing the sd card".r1à…�r2à}r3à(jÅUjÆj-àubajÐjõubaubjs~)�r4à}r5à(jÅUjÆj|ÃjÎj[ÀjÐjv~jÒ}r6à(jÔ]UlevelKj×]jÖ]r7àj‚ÃaUsourcej[ÀjÕ]jÚ]UlineK„Utypej„~ujÜK„jÝhjÞ]r8àjò)�r9à}r:à(jÅX6Duplicate implicit target name: "booting via sd card".jÒ}r;à(jÔ]jÕ]jÖ]j×]jÚ]ujÆj4àjÞ]r<àjçX6Duplicate implicit target name: "booting via sd card".r=à…�r>à}r?à(jÅUjÆj9àubajÐjõubaubjs~)�r@à}rAà(jÅUjÆj|ÃjÎj[ÀjÐjv~jÒ}rBà(jÔ]UlevelKj×]jÖ]Usourcej[ÀjÕ]jÚ]UlineKŽUtypejx~ujÜKŽjÝhjÞ]rCàjò)�rDà}rEà(jÅX%Line block ends without a blank line.jÒ}rFà(jÔ]jÕ]jÖ]j×]jÚ]ujÆj@àjÞ]rGàjçX%Line block ends without a blank line.rHà…�rIà}rJà(jÅUjÆjDàubajÐjõubaubjs~)�rKà}rLà(jÅUjÆjàÃjÎj[ÀjÐjv~jÒ}rMà(jÔ]UlevelKj×]jÖ]Usourcej[ÀjÕ]jÚ]UlineKÊUtypejPÝujÜKÊjÝhjÞ]rNà(jò)�rOà}rPà(jÅX<Content block expected for the "note" directive; none found.jÒ}rQà(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKàjÞ]rRàjçX<Content block expected for the "note" directive; none found.rSà…�rTà}rUà(jÅUjÆjOàubajÐjõubj)�rVà}rWà(jÅX .. note::rXàjÒ}rYà(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjKàjÞ]rZàjçX .. note::r[à…�r\à}r]à(jÅUjÆjVàubajÐjubeubjs~)�r^à}r_à(jÅUjÆjàÃjÎj[ÀjÐjv~jÒ}r`à(jÔ]UlevelKj×]jÖ]Usourcej[ÀjÕ]jÚ]UlineKËUtypejx~ujÜKÊjÝhjÞ]raàjò)�rbà}rcà(jÅX?Explicit markup ends without a blank line; unexpected unindent.jÒ}rdà(jÔ]jÕ]jÖ]j×]jÚ]ujÆj^àjÞ]reàjçX?Explicit markup ends without a blank line; unexpected unindent.rfà…�rgà}rhà(jÅUjÆjbàubajÐjõubaubjs~)�rià}rjà(jÅUjÆjñÄjÎj[ÀjÐjv~jÒ}rkà(jÔ]UlevelKj×]jÖ]rlàj÷ÄaUsourcej[ÀjÕ]jÚ]UlineKÏUtypej„~ujÜKÏjÝhjÞ]rmàjò)�rnà}roà(jÅX3Duplicate implicit target name: "booting via qspi".jÒ}rpà(jÔ]jÕ]jÖ]j×]jÚ]ujÆjiàjÞ]rqàjçX3Duplicate implicit target name: "booting via qspi".rrà…�rsà}rtà(jÅUjÆjnàubajÐjõubaubjs~)�ruà}rvà(jÅUjÆj)ÅjÎXiinternal padding after source/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_K2G.rst.incrwàjÐjv~jÒ}rxà(jÔ]UlevelKj×]jÖ]Usourcej[ÀjÕ]jÚ]UlineKåUtypejPÝujÜKçjÝhjÞ]ryà(jò)�rzà}r{à(jÅX;Content block expected for the "raw" directive; none found.jÒ}r|à(jÔ]jÕ]jÖ]j×]jÚ]ujÆjuàjÞ]r}àjçX;Content block expected for the "raw" directive; none found.r~à…�rà}r€à(jÅUjÆjzàubajÐjõubj)�r�à}r‚à(jÅX.. raw:: html jÒ}rƒà(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjuàjÞ]r„àjçX.. raw:: html r…à…�r†à}r‡à(jÅUjÆj�àubajÐjubeubjs~)�rˆà}r‰à(jÅUjÆjsÅjÎjlÅjÐjv~jÒ}rŠà(jÔ]UlevelKj×]jÖ]r‹àjyÅaUsourcejlÅjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rŒàjò)�r�à}rŽà(jÅX+Duplicate implicit target name: "overview".jÒ}r�à(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆàjÞ]r�àjçX+Duplicate implicit target name: "overview".r‘à…�r’à}r“à(jÅUjÆj�àubajÐjõubaubjs~)�r”à}r•à(jÅUjÆjœÅjÎjlÅjÐjv~jÒ}r–à(jÔ]UlevelKj×]jÖ]r—àj¡ÅaUsourcejlÅjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r˜àjò)�r™à}ršà(jÅX:Duplicate implicit target name: "flashing the bootloader".jÒ}r›à(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”àjÞ]rœàjçX:Duplicate implicit target name: "flashing the bootloader".r�à…�ržà}rŸà(jÅUjÆj™àubajÐjõubaubjs~)�r à}r¡à(jÅUjÆjÄÅjÎjlÅjÐjv~jÒ}r¢à(jÔ]UlevelKj×]jÖ]r£àjÊÅaUsourcejlÅjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r¤àjò)�r¥à}r¦à(jÅX(Duplicate implicit target name: "usage".jÒ}r§à(jÔ]jÕ]jÖ]j×]jÚ]ujÆj àjÞ]r¨àjçX(Duplicate implicit target name: "usage".r©à…�rªà}r«à(jÅUjÆj¥àubajÐjõubaubjs~)�r¬à}r­à(jÅUjÆjÆjÎjlÅjÐjv~jÒ}r®à(jÔ]UlevelKj×]jÖ]r¯àjÆaUsourcejlÅjÕ]jÚ]UlineK%Utypej„~ujÜK%jÝhjÞ]r°àjò)�r±à}r²à(jÅX.Duplicate implicit target name: "compilation".jÒ}r³à(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬àjÞ]r´àjçX.Duplicate implicit target name: "compilation".rµà…�r¶à}r·à(jÅUjÆj±àubajÐjõubaubjs~)�r¸à}r¹à(jÅUjÆjÅÆjÎjlÅjÐjv~jÒ}rºà(jÔ]UlevelKj×]jÖ]r»àjÊÆaUsourcejlÅjÕ]jÚ]UlineKKUtypej„~ujÜKKjÝhjÞ]r¼àjò)�r½à}r¾à(jÅXODuplicate implicit target name: "making loadable user application image (app)".jÒ}r¿à(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸àjÞ]rÀàjçXODuplicate implicit target name: "making loadable user application image (app)".rÁà…�rÂà}rÃà(jÅUjÆj½àubajÐjõubaubjs~)�rÄà}rÅà(jÅUjÆjÅÆjÎjlÅjÐjv~jÒ}rÆà(jÔ]UlevelKj×]jÖ]UsourcejlÅjÕ]jÚ]UlineK\UtypejPÝujÜNjÝhjÞ]rÇà(jò)�rÈà}rÉà(jÅX]Error parsing content block for the "list-table" directive: exactly one bullet list expected.jÒ}rÊà(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÄàjÞ]rËàjçX]Error parsing content block for the "list-table" directive: exactly one bullet list expected.rÌà…�rÍà}rÎà(jÅUjÆjÈàubajÐjõubj)�rÏà}rÐà(jÅX.. list-table:: Title :widths: 25 25 50 :header-rows: 2 * - Heading row 1, column 1 - Heading row 1, column 2 - Heading row 1, column 3 * - Row 1, column 1 - - Row 1, column 3 * - Row 2, column 1 - Row 2, column 2 - Row 2, column 3 jÒ}rÑà(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjÄàjÞ]rÒàjçX.. list-table:: Title :widths: 25 25 50 :header-rows: 2 * - Heading row 1, column 1 - Heading row 1, column 2 - Heading row 1, column 3 * - Row 1, column 1 - - Row 1, column 3 * - Row 2, column 1 - Row 2, column 2 - Row 2, column 3 rÓà…�rÔà}rÕà(jÅUjÆjÏàubajÐjubeubjs~)�rÖà}r×à(jÅUjÆjŸÊjÎjlÅjÐjv~jÒ}rØà(jÔ]UlevelKj×]jÖ]rÙàj¤ÊaUsourcejlÅjÕ]jÚ]UlineK’Utypej„~ujÜK’jÝhjÞ]rÚàjò)�rÛà}rÜà(jÅX0Duplicate implicit target name: "flash writers".jÒ}rÝà(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖàjÞ]rÞàjçX0Duplicate implicit target name: "flash writers".rßà…�ràà}ráà(jÅUjÆjÛàubajÐjõubaubjs~)�râà}rãà(jÅUjÆjÅÊjÎjlÅjÐjv~jÒ}räà(jÔ]UlevelKj×]jÖ]råàjËÊaUsourcejlÅjÕ]jÚ]UlineKœUtypej„~ujÜKœjÝhjÞ]ræàjò)�rçà}rèà(jÅX.Duplicate implicit target name: "compilation".jÒ}réà(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâàjÞ]rêàjçX.Duplicate implicit target name: "compilation".rëà…�rìà}ríà(jÅUjÆjçàubajÐjõubaubjs~)�rîà}rïà(jÅUjÆjëÊjÎjlÅjÐjv~jÒ}rðà(jÔ]UlevelKj×]jÖ]rñàjñÊaUsourcejlÅjÕ]jÚ]UlineK«Utypej„~ujÜK«jÝhjÞ]ròàjò)�róà}rôà(jÅX(Duplicate implicit target name: "usage".jÒ}rõà(jÔ]jÕ]jÖ]j×]jÚ]ujÆjîàjÞ]röàjçX(Duplicate implicit target name: "usage".r÷à…�røà}rùà(jÅUjÆjóàubajÐjõubaubjs~)�rúà}rûà(jÅUjÆjKËjÎXminternal padding after source/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_K2H_E_L.rst.incrüàjÐjv~jÒ}rýà(jÔ]UlevelKj×]jÖ]UsourcejlÅjÕ]jÚ]UlineKáUtypejPÝujÜKãjÝhjÞ]rþà(jò)�rÿà}rá(jÅX;Content block expected for the "raw" directive; none found.jÒ}rá(jÔ]jÕ]jÖ]j×]jÚ]ujÆjúàjÞ]rájçX;Content block expected for the "raw" directive; none found.rá…�rá}rá(jÅUjÆjÿàubajÐjõubj)�rá}rá(jÅX.. raw:: html jÒ}rá(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjúàjÞ]r ájçX.. raw:: html r á…�r á}r á(jÅUjÆjáubajÐjubeubjs~)�r á}rá(jÅUjÆj‚ËjÎj{ËjÐjv~jÒ}rá(jÔ]UlevelKj×]jÖ]rájˆËaUsourcej{ËjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rájò)�rá}rá(jÅX+Duplicate implicit target name: "overview".jÒ}rá(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ájÞ]rájçX+Duplicate implicit target name: "overview".rá…�rá}rá(jÅUjÆjáubajÐjõubaubjs~)�rá}rá(jÅUjÆj¹ÌjÎj{ËjÐjv~jÒ}rá(jÔ]UlevelKj×]jÖ]ráj¿ÌaUsourcej{ËjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rájò)�rá}rá(jÅX@Duplicate implicit target name: "bootloader execution sequence".jÒ}r á(jÔ]jÕ]jÖ]j×]jÚ]ujÆjájÞ]r!ájçX@Duplicate implicit target name: "bootloader execution sequence".r"á…�r#á}r$á(jÅUjÆjáubajÐjõubaubjs~)�r%á}r&á(jÅUjÆj7ÍjÎj{ËjÐjv~jÒ}r'á(jÔ]UlevelKj×]jÖ]r(áj=ÍaUsourcej{ËjÕ]jÚ]UlineK-Utypej„~ujÜK-jÝhjÞ]r)ájò)�r*á}r+á(jÅX;Duplicate implicit target name: "tools and binary formats".jÒ}r,á(jÔ]jÕ]jÖ]j×]jÚ]ujÆj%ájÞ]r-ájçX;Duplicate implicit target name: "tools and binary formats".r.á…�r/á}r0á(jÅUjÆj*áubajÐjõubaubjs~)�r1á}r2á(jÅUjÆjGÍjÎj{ËjÐjv~jÒ}r3á(jÔ]UlevelKj×]jÖ]r4ájLÍaUsourcej{ËjÕ]jÚ]UlineK0Utypej„~ujÜK0jÝhjÞ]r5ájò)�r6á}r7á(jÅXBDuplicate implicit target name: "making bootable sbl image (mlo)".jÒ}r8á(jÔ]jÕ]jÖ]j×]jÚ]ujÆj1ájÞ]r9ájçXBDuplicate implicit target name: "making bootable sbl image (mlo)".r:á…�r;á}r<á(jÅUjÆj6áubajÐjõubaubjs~)�r=á}r>á(jÅUjÆjòÍjÎj{ËjÐjv~jÒ}r?á(jÔ]UlevelKj×]jÖ]r@ájøÍaUsourcej{ËjÕ]jÚ]UlineKVUtypej„~ujÜKVjÝhjÞ]rAájò)�rBá}rCá(jÅXODuplicate implicit target name: "making loadable user application image (app)".jÒ}rDá(jÔ]jÕ]jÖ]j×]jÚ]ujÆj=ájÞ]rEájçXODuplicate implicit target name: "making loadable user application image (app)".rFá…�rGá}rHá(jÅUjÆjBáubajÐjõubaubjs~)�rIá}rJá(jÅUjÆj¹ÎjÎj{ËjÐjv~jÒ}rKá(jÔ]UlevelKj×]jÖ]rLáj¿ÎaUsourcej{ËjÕ]jÚ]UlineKuUtypej„~ujÜKujÝhjÞ]rMájò)�rNá}rOá(jÅX-Duplicate implicit target name: "boot modes".jÒ}rPá(jÔ]jÕ]jÖ]j×]jÚ]ujÆjIájÞ]rQájçX-Duplicate implicit target name: "boot modes".rRá…�rSá}rTá(jÅUjÆjNáubajÐjõubaubjs~)�rUá}rVá(jÅUjÆj=ÐjÎj{ËjÐjv~jÒ}rWá(jÔ]UlevelKj×]jÖ]rXájBÐaUsourcej{ËjÕ]jÚ]UlineKÖUtypej„~ujÜKÖjÝhjÞ]rYájò)�rZá}r[á(jÅX2Duplicate implicit target name: "mmcsd boot mode".jÒ}r\á(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUájÞ]r]ájçX2Duplicate implicit target name: "mmcsd boot mode".r^á…�r_á}r`á(jÅUjÆjZáubajÐjõubaubjs~)�raá}rbá(jÅUjÆj¡ÐjÎj{ËjÐjv~jÒ}rcá(jÔ]UlevelKj×]jÖ]rdáj§ÐaUsourcej{ËjÕ]jÚ]UlineKðUtypej„~ujÜKðjÝhjÞ]reájò)�rfá}rgá(jÅX8Duplicate implicit target name: "preparing the sd card".jÒ}rhá(jÔ]jÕ]jÖ]j×]jÚ]ujÆjaájÞ]riájçX8Duplicate implicit target name: "preparing the sd card".rjá…�rká}rlá(jÅUjÆjfáubajÐjõubaubjs~)�rmá}rná(jÅUjÆjÿÑjÎj{ËjÐjv~jÒ}roá(jÔ]UlevelKj×]jÖ]rpájÒaUsourcej{ËjÕ]jÚ]UlineMPUtypej„~ujÜMPjÝhjÞ]rqájò)�rrá}rsá(jÅX/Duplicate implicit target name: "memory usage".jÒ}rtá(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmájÞ]ruájçX/Duplicate implicit target name: "memory usage".rvá…�rwá}rxá(jÅUjÆjráubajÐjõubaubjs~)�ryá}rzá(jÅUjÆj»ÒjÎXninternal padding after source/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/BOOT_OMAPL13x.rst.incr{ájÐjv~jÒ}r|á(jÔ]UlevelKj×]jÖ]Usourcej{ËjÕ]jÚ]UlineM›UtypejPÝujÜM�jÝhjÞ]r}á(jò)�r~á}rá(jÅX;Content block expected for the "raw" directive; none found.jÒ}r€á(jÔ]jÕ]jÖ]j×]jÚ]ujÆjyájÞ]r�ájçX;Content block expected for the "raw" directive; none found.r‚á…�rƒá}r„á(jÅUjÆj~áubajÐjõubj)�r…á}r†á(jÅX.. raw:: html jÒ}r‡á(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjyájÞ]rˆájçX.. raw:: html r‰á…�rŠá}r‹á(jÅUjÆj…áubajÐjubeubjs~)�rŒá}r�á(jÅUjÆj6ÔjÎXkinternal padding after source/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/Boot_Debug.rst.incrŽájÐjv~jÒ}r�á(jÔ]UlevelKj×]jÖ]UsourcejCÓjÕ]jÚ]UlineKÆUtypejPÝujÜKÇjÝhjÞ]r�á(jò)�r‘á}r’á(jÅX;Content block expected for the "raw" directive; none found.jÒ}r“á(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒájÞ]r”ájçX;Content block expected for the "raw" directive; none found.r•á…�r–á}r—á(jÅUjÆj‘áubajÐjõubj)�r˜á}r™á(jÅX.. raw:: html jÒ}ršá(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjŒájÞ]r›ájçX.. raw:: html rœá…�r�á}ržá(jÅUjÆj˜áubajÐjubeubjs~)�rŸá}r á(jÅUjÆjLÕjÎjOÕjÐjv~jÒ}r¡á(jÔ]UlevelKj×]jÖ]r¢ájUÕaUsourcejOÕjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r£ájò)�r¤á}r¥á(jÅX+Duplicate implicit target name: "overview".jÒ}r¦á(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŸájÞ]r§ájçX+Duplicate implicit target name: "overview".r¨á…�r©á}rªá(jÅUjÆj¤áubajÐjõubaubjs~)�r«á}r¬á(jÅUjÆjýÚjÎjOÕjÐjv~jÒ}r­á(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineK´Utypej„~ujÜKcjÝhjÞ]r®ájò)�r¯á}r°á(jÅX:Enumerated list start value not ordinal-1: "2" (ordinal 2)jÒ}r±á(jÔ]jÕ]jÖ]j×]jÚ]ujÆj«ájÞ]r²ájçX:Enumerated list start value not ordinal-1: "2" (ordinal 2)r³á…�r´á}rµá(jÅUjÆj¯áubajÐjõubaubjs~)�r¶á}r·á(jÅUjÆjÜjÎjOÕjÐjv~jÒ}r¸á(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineK´Utypej„~ujÜK‘jÝhjÞ]r¹ájò)�rºá}r»á(jÅX:Enumerated list start value not ordinal-1: "5" (ordinal 5)jÒ}r¼á(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¶ájÞ]r½ájçX:Enumerated list start value not ordinal-1: "5" (ordinal 5)r¾á…�r¿á}rÀá(jÅUjÆjºáubajÐjõubaubjs~)�rÁá}rÂá(jÅUjÆjÜjÎjOÕjÐjv~jÒ}rÃá(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineK´Utypej„~ujÜK–jÝhjÞ]rÄájò)�rÅá}rÆá(jÅX:Enumerated list start value not ordinal-1: "6" (ordinal 6)jÒ}rÇá(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÁájÞ]rÈájçX:Enumerated list start value not ordinal-1: "6" (ordinal 6)rÉá…�rÊá}rËá(jÅUjÆjÅáubajÐjõubaubjs~)�rÌá}rÍá(jÅUjÆjÊÜjÎXointernal padding after source/rtos/PDK_Platform_Software/Boot_Board_and_EVM_Abstractions/UART_Apploader.rst.incrÎájÐjv~jÒ}rÏá(jÔ]UlevelKj×]jÖ]UsourcejOÕjÕ]jÚ]UlineK»UtypejPÝujÜK¼jÝhjÞ]rÐá(jò)�rÑá}rÒá(jÅX;Content block expected for the "raw" directive; none found.jÒ}rÓá(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÌájÞ]rÔájçX;Content block expected for the "raw" directive; none found.rÕá…�rÖá}r×á(jÅUjÆjÑáubajÐjõubj)�rØá}rÙá(jÅX.. raw:: html jÒ}rÚá(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjÌájÞ]rÛájçX.. raw:: html rÜá…�rÝá}rÞá(jÅUjÆjØáubajÐjubeubjs~)�rßá}ràá(jÅUjÆjÊÜjÎX/internal padding after source/rtos/Boot.rst.incráájÐjv~jÒ}râá(jÔ]UlevelKj×]jÖ]Usourcej¥‚jÕ]jÚ]UlineKrUtypejPÝujÜKsjÝhjÞ]rãá(jò)�räá}råá(jÅX;Content block expected for the "raw" directive; none found.jÒ}ræá(jÔ]jÕ]jÖ]j×]jÚ]ujÆjßájÞ]rçájçX;Content block expected for the "raw" directive; none found.rèá…�réá}rêá(jÅUjÆjäáubajÐjõubj)�rëá}rìá(jÅX.. raw:: html jÒ}ríá(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjßájÞ]rîájçX.. raw:: html rïá…�rðá}rñá(jÅUjÆjëáubajÐjubeubjs~)�ròá}róá(jÅUjÆjÇ)�rôá}rõá(jÅUjÆhjÎjÏjÐjÑjÒ}röá(jÔ]jÕ]jÖ]j×]r÷áUmpmrøáajÚ]rùáhaujÜK»jÝhjÞ]rúá(jà)�rûá}rüá(jÅXMPMrýájÆjôájÎjÏjÐjäjÒ}rþá(jÔ]jÕ]jÖ]j×]jÚ]ujÜK»jÝhjÞ]rÿájçXMPMrâ…�râ}râ(jÅjýájÆjûáubaubj7)�râ}râ(jÅX4http://processors.wiki.ti.com/index.php/MultiprocMgrjÆjôájÎj:Xsource/rtos/MPM.rst.incrâ…�râ}râbjÐj>jÒ}râ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r âjçX4http://processors.wiki.ti.com/index.php/MultiprocMgrr â…�r â}r â(jÅUjÆjâubaubjhK)�r â}râ(jÅX IntroductionrâjKjÆjôájÎjâjÐjlKjÒ}râ(j×]râUid130râajÖ]jÔ]râX introductionrâajÕ]jÚ]ujÜNjÝhjÞ]râjçX Introductionrâ…�râ}râ(jÅjâjÆj âubaubjc)�râ}râ(jÅUjÆjôájÎjâjÐjfjÒ}râ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]râ(ji)�râ}râ(jÅXtThe Multiple Proc Manager (MPM) Package distributed with Processor SDK RTOS installer has multiple software modules.râjlKjÆjâjÎjâjÐjÜjÒ}r â(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r!âjçXtThe Multiple Proc Manager (MPM) Package distributed with Processor SDK RTOS installer has multiple software modules.r"â…�r#â}r$â(jÅjâjÆjâubaubji)�r%â}r&â(jÅX7Broadly the modules can be grouped into two categories:r'âjlKjÆjâjÎjâjÐjÜjÒ}r(â(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r)âjçX7Broadly the modules can be grouped into two categories:r*â…�r+â}r,â(jÅj'âjÆj%âubaubeubjt)�r-â}r.â(jÅUjÆjôájÎjâjÐjwjÒ}r/â(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK jÝhjÞ]r0â(j{)�r1â}r2â(jÅXMulti Proc Manager Linux moduler3âjÆj-âjÎjâjÐjjÒ}r4â(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r5âjò)�r6â}r7â(jÅj3âjÆj1âjÎjâjÐjõjÒ}r8â(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r9âjçXMulti Proc Manager Linux moduler:â…�r;â}r<â(jÅj3âjÆj6âubaubaubj{)�r=â}r>â(jÅXOModules that facilitate Interprocess communication between the multiple cores. jÆj-âjÎjâjÐjjÒ}r?â(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r@âjò)�rAâ}rBâ(jÅXNModules that facilitate Interprocess communication between the multiple cores.rCâjÆj=âjÎjâjÐjõjÒ}rDâ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rEâjçXNModules that facilitate Interprocess communication between the multiple cores.rFâ…�rGâ}rHâ(jÅjCâjÆjAâubaubaubeubjhK)�rIâ}rJâ(jÅXMulti Proc Manager Linux modulerKâjÆjôájÎjâjÐjlKjÒ}rLâ(j×]rMâUmulti-proc-manager-linux-modulerNâajÖ]jÔ]jÕ]jÚ]rOâjJaujÜNjÝhjÞ]rPâjçXMulti Proc Manager Linux modulerQâ…�rRâ}rSâ(jÅjKâjÆjIâubaubjò)�rTâ}rUâ(jÅXThe Multi Proc Manager Linux module is used to load and run DSP images from ARM Linux user space. The download and run operations can be exercised by using user space API calls. MPM also provides a MPM Client Application which can be used to load and run DSP through command line.rVâjÆjôájÎjâjÐjõjÒ}rWâ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rXâjçXThe Multi Proc Manager Linux module is used to load and run DSP images from ARM Linux user space. The download and run operations can be exercised by using user space API calls. MPM also provides a MPM Client Application which can be used to load and run DSP through command line.rYâ…�rZâ}r[â(jÅjVâjÆjTâubaubjhK)�r\â}r]â(jÅX-Interprocessor Communication related packagesr^âjÆjôájÎjâjÐjlKjÒ}r_â(j×]r`âU-interprocessor-communication-related-packagesraâajÖ]jÔ]jÕ]jÚ]rbâhaujÜNjÝhjÞ]rcâjçX-Interprocessor Communication related packagesrdâ…�reâ}rfâ(jÅj^âjÆj\âubaubjò)�rgâ}rhâ(jÅXîThe Multi Proc Manager package also includes couple of software modules that facilitates Inter processor communication between ARM running linux and DSP running RTOS. These components provide APIs in both ARM linux as well as on DSP RTOS.riâjÆjôájÎjâjÐjõjÒ}rjâ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rkâjçXîThe Multi Proc Manager package also includes couple of software modules that facilitates Inter processor communication between ARM running linux and DSP running RTOS. These components provide APIs in both ARM linux as well as on DSP RTOS.rlâ…�rmâ}rnâ(jÅjiâjÆjgâubaubjhK)�roâ}rpâ(jÅXMPM Mailbox modulerqâjÆjôájÎjâjÐjlKjÒ}rrâ(j×]rsâUmpm-mailbox-modulertâajÖ]jÔ]jÕ]jÚ]ruâh^aujÜNjÝhjÞ]rvâjçXMPM Mailbox modulerwâ…�rxâ}ryâ(jÅjqâjÆjoâubaubjò)�rzâ}r{â(jÅXZMailbox is used for exchanging control messages between the host and individual DSP cores.r|âjÆjôájÎjâjÐjõjÒ}r}â(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÝhjÞ]r~âjçXZMailbox is used for exchanging control messages between the host and individual DSP cores.râ…�r€â}r�â(jÅj|âjÆjzâubaubjhK)�r‚â}rƒâ(jÅXMPM Sync moduler„âjÆjôájÎjâjÐjlKjÒ}r…â(j×]r†âUmpm-sync-moduler‡âajÖ]jÔ]jÕ]jÚ]rˆâj9aujÜNjÝhjÞ]r‰âjçXMPM Sync modulerŠâ…�r‹â}rŒâ(jÅj„âjÆj‚âubaubjò)�r�â}rŽâ(jÅX@Sync Module implements support for Multicore Barriers and Locks.r�âjÆjôájÎjâjÐjõjÒ}r�â(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÝhjÞ]r‘âjçX@Sync Module implements support for Multicore Barriers and Locks.r’â…�r“â}r”â(jÅj�âjÆj�âubaubeubjÎX.internal padding after source/rtos/MPM.rst.incr•âjÐjv~jÒ}r–â(jÔ]UlevelKj×]jÖ]UsourcejâjÕ]jÚ]UlineK)UtypejPÝujÜK*jÝhjÞ]r—â(jò)�r˜â}r™â(jÅX;Content block expected for the "raw" directive; none found.jÒ}ršâ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòájÞ]r›âjçX;Content block expected for the "raw" directive; none found.rœâ…�r�â}ržâ(jÅUjÆj˜âubajÐjõubj)�rŸâ}r â(jÅX.. raw:: html jÒ}r¡â(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjòájÞ]r¢âjçX.. raw:: html r£â…�r¤â}r¥â(jÅUjÆjŸâubajÐjubeubjs~)�r¦â}r§â(jÅUjÒ}r¨â(jÔ]UlevelKj×]jÖ]r©âUid131rªâaUsourcejÏjÕ]jÚ]UlineKÁUtypejx~ujÆjhK)�r«â}r¬â(jÅX Introductionr­âjKjÆjÇ)�r®â}r¯â(jÅUjÆhjÎjÏjÐjÑjÒ}r°â(jÔ]jÕ]jÖ]j×]r±âUopenmpr²âajÚ]r³âj_aujÜKÁjÝhjÞ]r´â(jà)�rµâ}r¶â(jÅXOpenMPr·âjÆj®âjÎjÏjÐjäjÒ}r¸â(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÝhjÞ]r¹âjçXOpenMPrºâ…�r»â}r¼â(jÅj·âjÆjµâubaubj7)�r½â}r¾â(jÅX7http://processors.wiki.ti.com/index.php/OpenMP_on_C6000jÆj®âjÎj:X"source/rtos/Compute/OpenMP.rst.incr¿â…�rÀâ}rÁâbjÐj>jÒ}rÂâ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rÃâjçX7http://processors.wiki.ti.com/index.php/OpenMP_on_C6000rÄâ…�rÅâ}rÆâ(jÅUjÆj½âubaubj«âjò)�rÇâ}rÈâ(jÅX†As of April 2016, this article is out of date. Please visit `here `__.jÆj®âjÎjÀâjÐjõjÒ}rÉâ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÊâ(jçX<As of April 2016, this article is out of date. Please visit rËâ…�rÌâ}rÍâ(jÅX<As of April 2016, this article is out of date. Please visit jÆjÇâubjû)�rÎâ}rÏâ(jÅXI`here `__jÒ}rÐâ(UnameXherejX>http://downloads.ti.com/mctools/esd/docs/openmp-dsp/index.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆjÇâjÞ]rÑâjçXhererÒâ…�rÓâ}rÔâ(jÅUjÆjÎâubajÐjÿubjçX.…�rÕâ}rÖâ(jÅX.jÆjÇâubeubjò)�r×â}rØâ(jÅXÏThis page is intended to be the starting point for all information about OpenMP on C6000. However, at this writing, that is not the case. The information in this article is correct if you are using C667x devices which only contain C66x CorePac DSPs, and not any ARM cores. If you are using a 66AK2H device, then please see `MCSDK HPC 3.x OpenMP `__. OpenMP is not supported on any other C6000 devices.jÆj®âjÎjÀâjÐjõjÒ}rÙâ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rÚâ(jçXCThis page is intended to be the starting point for all information about OpenMP on C6000. However, at this writing, that is not the case. The information in this article is correct if you are using C667x devices which only contain C66x CorePac DSPs, and not any ARM cores. If you are using a 66AK2H device, then please see rÛâ…�rÜâ}rÝâ(jÅXCThis page is intended to be the starting point for all information about OpenMP on C6000. However, at this writing, that is not the case. The information in this article is correct if you are using C667x devices which only contain C66x CorePac DSPs, and not any ARM cores. If you are using a 66AK2H device, then please see jÆj×âubjû)�rÞâ}rßâ(jÅXW`MCSDK HPC 3.x OpenMP `__jÒ}ràâ(UnameXMCSDK HPC 3.x OpenMPjX<http://processors.wiki.ti.com/index.php/MCSDK_HPC_3.x_OpenMPj×]jÖ]jÔ]jÕ]jÚ]ujÆj×âjÞ]ráâjçXMCSDK HPC 3.x OpenMPrââ…�rãâ}räâ(jÅUjÆjÞâubajÐjÿubjçX5. OpenMP is not supported on any other C6000 devices.råâ…�ræâ}rçâ(jÅX5. OpenMP is not supported on any other C6000 devices.jÆj×âubeubjò)�rèâ}réâ(jÅXˆStill here? After reading this article, you will be able to execute your own OpenMP code on C6000 under control of Code Composer Studio.rêâjÆj®âjÎjÀâjÐjõjÒ}rëâ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rìâjçXˆStill here? After reading this article, you will be able to execute your own OpenMP code on C6000 under control of Code Composer Studio.ríâ…�rîâ}rïâ(jÅjêâjÆjèâubaubjhK)�rðâ}rñâ(jÅX PresumptionsròâjÆj®âjÎjÀâjÐjlKjÒ}róâ(j×]rôâU presumptionsrõâajÖ]jÔ]jÕ]jÚ]röâh#aujÜNjÝhjÞ]r÷âjçX Presumptionsrøâ…�rùâ}rúâ(jÅjòâjÆjðâubaubjt)�rûâ}rüâ(jÅUjÆj®âjÎjÀâjÐjwjÒ}rýâ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rþâ(j{)�rÿâ}rã(jÅXdYou are experienced at programming OpenMP applications on hosted systems like Windows or Linux PC's.jÆjûâjÎjÀâjÐjjÒ}rã(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rãjò)�rã}rã(jÅXdYou are experienced at programming OpenMP applications on hosted systems like Windows or Linux PC's.rãjÆjÿâjÎjÀâjÐjõjÒ}rã(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rãjçXdYou are experienced at programming OpenMP applications on hosted systems like Windows or Linux PC's.rã…�r ã}r ã(jÅjãjÆjãubaubaubj{)�r ã}r ã(jÅX[You have never programmed anything on an embedded system like those that use C6000 devices.jÆjûâjÎjÀâjÐjjÒ}r ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rãjò)�rã}rã(jÅX[You have never programmed anything on an embedded system like those that use C6000 devices.rãjÆj ãjÎjÀâjÐjõjÒ}rã(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rãjçX[You have never programmed anything on an embedded system like those that use C6000 devices.rã…�rã}rã(jÅjãjÆjãubaubaubj{)�rã}rã(jÅXQYou have never used any TI development tools such as Code Composer Studio (CCS). jÆjûâjÎjÀâjÐjjÒ}rã(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rãjò)�rã}rã(jÅXPYou have never used any TI development tools such as Code Composer Studio (CCS).rãjÆjãjÎjÀâjÐjõjÒ}rã(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rãjçXPYou have never used any TI development tools such as Code Composer Studio (CCS).r ã…�r!ã}r"ã(jÅjãjÆjãubaubaubeubjhK)�r#ã}r$ã(jÅXAcronyms Used in This Articler%ãjÆj®âjÎjÀâjÐjlKjÒ}r&ã(j×]r'ãUacronyms-used-in-this-articler(ãajÖ]jÔ]jÕ]jÚ]r)ãh8aujÜNjÝhjÞ]r*ãjçXAcronyms Used in This Articler+ã…�r,ã}r-ã(jÅj%ãjÆj#ãubaubjt)�r.ã}r/ã(jÅUjÆj®âjÎjÀâjÐjwjÒ}r0ã(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK!jÝhjÞ]r1ã(j{)�r2ã}r3ã(jÅXhCCS - Code Composer Studio. Software development environment for creating code to execute on TI devices.jÆj.ãjÎjÀâjÐjjÒ}r4ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r5ãjò)�r6ã}r7ã(jÅXhCCS - Code Composer Studio. Software development environment for creating code to execute on TI devices.r8ãjÆj2ãjÎjÀâjÐjõjÒ}r9ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]r:ãjçXhCCS - Code Composer Studio. Software development environment for creating code to execute on TI devices.r;ã…�r<ã}r=ã(jÅj8ãjÆj6ãubaubaubj{)�r>ã}r?ã(jÅXNSYS/BIOS - Or BIOS for short. Scalable real-time kernel which runs on the DSP.jÆj.ãjÎjÀâjÐjjÒ}r@ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rAãjò)�rBã}rCã(jÅXNSYS/BIOS - Or BIOS for short. Scalable real-time kernel which runs on the DSP.rDãjÆj>ãjÎjÀâjÐjõjÒ}rEã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]rFãjçXNSYS/BIOS - Or BIOS for short. Scalable real-time kernel which runs on the DSP.rGã…�rHã}rIã(jÅjDãjÆjBãubaubaubj{)�rJã}rKã(jÅXkMCSDK - Multicore Software Development Kit. Bundles all the software supplied by TI which runs on the DSP. jÆj.ãjÎjÀâjÐjjÒ}rLã(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rMãjò)�rNã}rOã(jÅXjMCSDK - Multicore Software Development Kit. Bundles all the software supplied by TI which runs on the DSP.rPãjÆjJãjÎjÀâjÐjõjÒ}rQã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÞ]rRãjçXjMCSDK - Multicore Software Development Kit. Bundles all the software supplied by TI which runs on the DSP.rSã…�rTã}rUã(jÅjPãjÆjNãubaubaubeubjhK)�rVã}rWã(jÅXConceptual OverviewrXãjÆj®âjÎjÀâjÐjlKjÒ}rYã(j×]rZãUconceptual-overviewr[ãajÖ]jÔ]jÕ]jÚ]r\ãhûaujÜNjÝhjÞ]r]ãjçXConceptual Overviewr^ã…�r_ã}r`ã(jÅjXãjÆjVãubaubjò)�raã}rbã(jÅX|This section discusses, at a high level, how different pieces of software from TI work together to form the OpenMP solution.rcãjÆj®âjÎjÀâjÐjõjÒ}rdã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÝhjÞ]reãjçX|This section discusses, at a high level, how different pieces of software from TI work together to form the OpenMP solution.rfã…�rgã}rhã(jÅjcãjÆjaãubaubjò)�riã}rjã(jÅXöThe OpenMP source code, at the level of OpenMP pragmas and function calls, is the same. Your code must be organized into a *project*, as that term is defined by CCS. A central element of this project is the SYS/BIOS configuration. SYS/BIOS (or BIOS for short) is a scalable real-time kernel produced by TI. BIOS implements the multi-threading features of OpenMP. An initial BIOS configuration (*.cfg) is supplied. Changing this BIOS configuration may never be required. The build is done within CCS. At the start, system execution is also done within CCS. Besides BIOS, many other software components execute on the DSP to comprise the OpenMP solution. All of these components are delivered together under the name Multicore Software Development Kit (MCSDK).jÆj®âjÎjÀâjÐjõjÒ}rkã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÝhjÞ]rlã(jçX{The OpenMP source code, at the level of OpenMP pragmas and function calls, is the same. Your code must be organized into a rmã…�rnã}roã(jÅX{The OpenMP source code, at the level of OpenMP pragmas and function calls, is the same. Your code must be organized into a jÆjiãubjM)�rpã}rqã(jÅX *project*jÒ}rrã(jÔ]jÕ]jÖ]j×]jÚ]ujÆjiãjÞ]rsãjçXprojectrtã…�ruã}rvã(jÅUjÆjpãubajÐjUubjçX, as that term is defined by CCS. A central element of this project is the SYS/BIOS configuration. SYS/BIOS (or BIOS for short) is a scalable real-time kernel produced by TI. BIOS implements the multi-threading features of OpenMP. An initial BIOS configuration (rwã…�rxã}ryã(jÅX, as that term is defined by CCS. A central element of this project is the SYS/BIOS configuration. SYS/BIOS (or BIOS for short) is a scalable real-time kernel produced by TI. BIOS implements the multi-threading features of OpenMP. An initial BIOS configuration (jÆjiãubj¸ )�rzã}r{ã(jÅX*jÒ}r|ã(j×]r}ãUid133r~ãajÖ]jÔ]jÕ]jÚ]UrefidUid132rãujÆjiãjÞ]r€ãjçX*…�r�ã}r‚ã(jÅUjÆjzãubajÐj ubjçXk.cfg) is supplied. Changing this BIOS configuration may never be required. The build is done within CCS. At the start, system execution is also done within CCS. Besides BIOS, many other software components execute on the DSP to comprise the OpenMP solution. All of these components are delivered together under the name Multicore Software Development Kit (MCSDK).rƒã…�r„ã}r…ã(jÅXk.cfg) is supplied. Changing this BIOS configuration may never be required. The build is done within CCS. At the start, system execution is also done within CCS. Besides BIOS, many other software components execute on the DSP to comprise the OpenMP solution. All of these components are delivered together under the name Multicore Software Development Kit (MCSDK).jÆjiãubeubjhK)�r†ã}r‡ã(jÅX InstallationrˆãjÆj®âjÎjÀâjÐjlKjÒ}r‰ã(j×]rŠãU installationr‹ãajÖ]jÔ]jÕ]jÚ]rŒãj)aujÜNjÝhjÞ]r�ãjçX InstallationrŽã…�r�ã}r�ã(jÅjˆãjÆj†ãubaubjò)�r‘ã}r’ã(jÅXyGetting the MCSDK installed calls for you to install and configure everything else, so this section focuses on the MCSDK.r“ãjÆj®âjÎjÀâjÐjõjÒ}r”ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÝhjÞ]r•ãjçXyGetting the MCSDK installed calls for you to install and configure everything else, so this section focuses on the MCSDK.r–ã…�r—ã}r˜ã(jÅj“ãjÆj‘ãubaubjò)�r™ã}ršã(jÅXôStart with the `general download page `__ for all flavors of the MCSDK. Follow the link for *SYS/BIOS MCSDK for C66x*. Get MCSDK version 2.1 or later. That page includes a link to a *Getting Started Guide*. That is where you will find directions on hardware setup, installing CCS, and so on. Follow all the steps in the Getting Started Guide, up to Running the Demonstration Application. (Actually, go ahead and run the Demo if you want. But it isn't required.)jÆj®âjÎjÀâjÐjõjÒ}r›ã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÝhjÞ]rœã(jçXStart with the r�ã…�ržã}rŸã(jÅXStart with the jÆj™ãubjû)�r ã}r¡ã(jÅXA`general download page `__jÒ}r¢ã(UnameXgeneral download pagejX%http://www.ti.com/tool/bioslinuxmcsdkj×]jÖ]jÔ]jÕ]jÚ]ujÆj™ãjÞ]r£ãjçXgeneral download pager¤ã…�r¥ã}r¦ã(jÅUjÆj ãubajÐjÿubjçX3 for all flavors of the MCSDK. Follow the link for r§ã…�r¨ã}r©ã(jÅX3 for all flavors of the MCSDK. Follow the link for jÆj™ãubjM)�rªã}r«ã(jÅX*SYS/BIOS MCSDK for C66x*jÒ}r¬ã(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™ãjÞ]r­ãjçXSYS/BIOS MCSDK for C66xr®ã…�r¯ã}r°ã(jÅUjÆjªãubajÐjUubjçXA. Get MCSDK version 2.1 or later. That page includes a link to a r±ã…�r²ã}r³ã(jÅXA. Get MCSDK version 2.1 or later. That page includes a link to a jÆj™ãubjM)�r´ã}rµã(jÅX*Getting Started Guide*jÒ}r¶ã(jÔ]jÕ]jÖ]j×]jÚ]ujÆj™ãjÞ]r·ãjçXGetting Started Guider¸ã…�r¹ã}rºã(jÅUjÆj´ãubajÐjUubjçX. That is where you will find directions on hardware setup, installing CCS, and so on. Follow all the steps in the Getting Started Guide, up to Running the Demonstration Application. (Actually, go ahead and run the Demo if you want. But it isn't required.)r»ã…�r¼ã}r½ã(jÅX. That is where you will find directions on hardware setup, installing CCS, and so on. Follow all the steps in the Getting Started Guide, up to Running the Demonstration Application. (Actually, go ahead and run the Demo if you want. But it isn't required.)jÆj™ãubeubjhK)�r¾ã}r¿ã(jÅXConfidence TestrÀãjÆj®âjÎjÀâjÐjlKjÒ}rÁã(j×]rÂãUconfidence-testrÃãajÖ]jÔ]jÕ]jÚ]rÄãjaujÜNjÝhjÞ]rÅãjçXConfidence TestrÆã…�rÇã}rÈã(jÅjÀãjÆj¾ãubaubjò)�rÉã}rÊã(jÅXvIf you are familiar with CCS, you may skip over this section. But, installing and configuring all that software may leave you wondering if you did it all correctly. In this section, simplify things by pretending your system only has one core. This allows you to check whether you have installed most of the software correctly, while ignoring many of the complicated details.rËãjÆj®âjÎjÀâjÐjõjÒ}rÌã(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÝhjÞ]rÍãjçXvIf you are familiar with CCS, you may skip over this section. But, installing and configuring all that software may leave you wondering if you did it all correctly. In this section, simplify things by pretending your system only has one core. This allows you to check whether you have installed most of the software correctly, while ignoring many of the complicated details.rÎã…�rÏã}rÐã(jÅjËãjÆjÉãubaubjò)�rÑã}rÒã(jÅX9Please check out `this set of Getting Started Guides `__ just for CCS. You only need to go through one of them. Choose the one that seems best for you. These guides provide a gentle introduction to those who are new to CCS.jÆj®âjÎjÀâjÐjõjÒ}rÓã(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÝhjÞ]rÔã(jçXPlease check out rÕã…�rÖã}r×ã(jÅXPlease check out jÆjÑãubjû)�rØã}rÙã(jÅX�`this set of Getting Started Guides `__jÒ}rÚã(UnameX"this set of Getting Started GuidesjXXhttp://processors.wiki.ti.com/index.php/Category:Code_Composer_Studio_v5#Getting_Startedj×]jÖ]jÔ]jÕ]jÚ]ujÆjÑãjÞ]rÛãjçX"this set of Getting Started GuidesrÜã…�rÝã}rÞã(jÅUjÆjØãubajÐjÿubjçX§ just for CCS. You only need to go through one of them. Choose the one that seems best for you. These guides provide a gentle introduction to those who are new to CCS.rßã…�ràã}ráã(jÅX§ just for CCS. You only need to go through one of them. Choose the one that seems best for you. These guides provide a gentle introduction to those who are new to CCS.jÆjÑãubeubjò)�râã}rãã(jÅX{When you load and run your first program, CCS needs to know which core to run it on. You see a dialog box similar this one:räãjÆj®âjÎjÀâjÐjõjÒ}råã(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÝhjÞ]ræãjçX{When you load and run your first program, CCS needs to know which core to run it on. You see a dialog box similar this one:rçã…�rèã}réã(jÅjäãjÆjâãubaubjR)�rêã}rëã(jÅX%.. Image:: ../images/Select_core.JPG jÆj®âjÎjÀâjÐjZjÒ}rìã(UuriXrtos/../images/Select_core.JPGríãj×]jÖ]jÔ]jÕ]jX}rîãU*jíãsjÚ]ujÜK]jÝhjÞ]ubjò)�rïã}rðã(jÅXCheck the box only for core 0.rñãjÆj®âjÎjÀâjÐjõjÒ}ròã(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÝhjÞ]róãjçXCheck the box only for core 0.rôã…�rõã}röã(jÅjñãjÆjïãubaubjhK)�r÷ã}røã(jÅXFirst OpenMP ProjectrùãjÆj®âjÎjÀâjÐjlKjÒ}rúã(j×]rûãUfirst-openmp-projectrüãajÖ]jÔ]jÕ]jÚ]rýãhÉaujÜNjÝhjÞ]rþãjçXFirst OpenMP Projectrÿã…�rä}rä(jÅjùãjÆj÷ãubaubjò)�rä}rä(jÅX‘This section walks through a simple hello world example project. Four threads run concurrently. Each thread prints hello world and the thread ID.räjÆj®âjÎjÀâjÐjõjÒ}rä(jÔ]jÕ]jÖ]j×]jÚ]ujÜKcjÝhjÞ]räjçX‘This section walks through a simple hello world example project. Four threads run concurrently. Each thread prints hello world and the thread ID.rä…�rä}r ä(jÅjäjÆjäubaubjhK)�r ä}r ä(jÅXVersion and HW Informationr äjÆj®âjÎjÀâjÐjlKjÒ}r ä(j×]räUversion-and-hw-informationräajÖ]jÔ]jÕ]jÚ]rähaujÜNjÝhjÞ]räjçXVersion and HW Informationrä…�rä}rä(jÅj äjÆj äubaubjò)�rä}rä(jÅX²This section was developed with CCS version 5.2.0.00069, MCSDK version 2.1.0.3, and executed on an C6678 EVM. If your environment differs, you may have to make a few adjustments.räjÆj®âjÎjÀâjÐjõjÒ}rä(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjjÝhjÞ]räjçX²This section was developed with CCS version 5.2.0.00069, MCSDK version 2.1.0.3, and executed on an C6678 EVM. If your environment differs, you may have to make a few adjustments.rä…�rä}rä(jÅjäjÆjäubaubjhK)�rä}rä(jÅX Project SetupräjÆj®âjÎjÀâjÐjlKjÒ}r ä(j×]r!äU project-setupr"äajÖ]jÔ]jÕ]jÚ]r#ähØaujÜNjÝhjÞ]r$äjçX Project Setupr%ä…�r&ä}r'ä(jÅjäjÆjäubaubjò)�r(ä}r)ä(jÅX‰In this section you create a new CCS project. This project is not written from scratch, but uses example source files that come with CCS.r*äjÆj®âjÎjÀâjÐjõjÒ}r+ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜKqjÝhjÞ]r,äjçX‰In this section you create a new CCS project. This project is not written from scratch, but uses example source files that come with CCS.r-ä…�r.ä}r/ä(jÅj*äjÆj(äubaubjò)�r0ä}r1ä(jÅX;Put CCS in the Edit Perspective. Select: **Window \| Open Perspective \| Other \| CCS Edit**. To start this new project select: **Project \| New CCS Project**. Enter a **Project Name**. For **Family** select **C6000**. For **Variant**, ignore the first drop-down box, and in the second choose **Generic C66xx Device**. In the box just under **Project templates and examples** type in *hello*. Under *OMP Examples* you will see some *Hello world example* projects. Select the best one for your HW platform. In this screen shot, the selection is for C6678. Select **Next**.jÆj®âjÎjÀâjÐjõjÒ}r2ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜKtjÝhjÞ]r3ä(jçX)Put CCS in the Edit Perspective. Select: r4ä…�r5ä}r6ä(jÅX)Put CCS in the Edit Perspective. Select: jÆj0äubjÚ)�r7ä}r8ä(jÅX3**Window \| Open Perspective \| Other \| CCS Edit**jÒ}r9ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]r:äjçX,Window | Open Perspective | Other | CCS Editr;ä…�r<ä}r=ä(jÅUjÆj7äubajÐjâubjçX$. To start this new project select: r>ä…�r?ä}r@ä(jÅX$. To start this new project select: jÆj0äubjÚ)�rAä}rBä(jÅX**Project \| New CCS Project**jÒ}rCä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]rDäjçXProject | New CCS ProjectrEä…�rFä}rGä(jÅUjÆjAäubajÐjâubjçX . Enter a rHä…�rIä}rJä(jÅX . Enter a jÆj0äubjÚ)�rKä}rLä(jÅX**Project Name**jÒ}rMä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]rNäjçX Project NamerOä…�rPä}rQä(jÅUjÆjKäubajÐjâubjçX. For rRä…�rSä}rTä(jÅX. For jÆj0äubjÚ)�rUä}rVä(jÅX **Family**jÒ}rWä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]rXäjçXFamilyrYä…�rZä}r[ä(jÅUjÆjUäubajÐjâubjçX select r\ä…�r]ä}r^ä(jÅX select jÆj0äubjÚ)�r_ä}r`ä(jÅX **C6000**jÒ}raä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]rbäjçXC6000rcä…�rdä}reä(jÅUjÆj_äubajÐjâubjçX. For rfä…�rgä}rhä(jÅX. For jÆj0äubjÚ)�riä}rjä(jÅX **Variant**jÒ}rkä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]rläjçXVariantrmä…�rnä}roä(jÅUjÆjiäubajÐjâubjçX;, ignore the first drop-down box, and in the second choose rpä…�rqä}rrä(jÅX;, ignore the first drop-down box, and in the second choose jÆj0äubjÚ)�rsä}rtä(jÅX**Generic C66xx Device**jÒ}ruä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]rväjçXGeneric C66xx Devicerwä…�rxä}ryä(jÅUjÆjsäubajÐjâubjçX. In the box just under rzä…�r{ä}r|ä(jÅX. In the box just under jÆj0äubjÚ)�r}ä}r~ä(jÅX"**Project templates and examples**jÒ}rä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]r€äjçXProject templates and examplesr�ä…�r‚ä}rƒä(jÅUjÆj}äubajÐjâubjçX type in r„ä…�r…ä}r†ä(jÅX type in jÆj0äubjM)�r‡ä}rˆä(jÅX*hello*jÒ}r‰ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]rŠäjçXhellor‹ä…�rŒä}r�ä(jÅUjÆj‡äubajÐjUubjçX. Under rŽä…�r�ä}r�ä(jÅX. Under jÆj0äubjM)�r‘ä}r’ä(jÅX*OMP Examples*jÒ}r“ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]r”äjçX OMP Examplesr•ä…�r–ä}r—ä(jÅUjÆj‘äubajÐjUubjçX you will see some r˜ä…�r™ä}ršä(jÅX you will see some jÆj0äubjM)�r›ä}rœä(jÅX*Hello world example*jÒ}r�ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]ržäjçXHello world examplerŸä…�r ä}r¡ä(jÅUjÆj›äubajÐjUubjçXm projects. Select the best one for your HW platform. In this screen shot, the selection is for C6678. Select r¢ä…�r£ä}r¤ä(jÅXm projects. Select the best one for your HW platform. In this screen shot, the selection is for C6678. Select jÆj0äubjÚ)�r¥ä}r¦ä(jÅX**Next**jÒ}r§ä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0äjÞ]r¨äjçXNextr©ä…�rªä}r«ä(jÅUjÆj¥äubajÐjâubjçX.…�r¬ä}r­ä(jÅX.jÆj0äubeubjR)�r®ä}r¯ä(jÅX... Image:: ../images/Omp_h1_project_setup.jpg jÆj®âjÎjÀâjÐjZjÒ}r°ä(UuriX'rtos/../images/Omp_h1_project_setup.jpgr±äj×]jÖ]jÔ]jÕ]jX}r²äU*j±äsjÚ]ujÜKjÝhjÞ]ubjò)�r³ä}r´ä(jÅXdThe next dialog shows the RTSC Configuration Settings. If only one version of the MCSDK is installed, then nothing more is required. If more than one version of the MCSDK is installed, review the version numbers of the selected packages and insure they are from the desired MCSDK. Do not forget the drop-down box at the top for the version of the XDCtools.rµäjÆj®âjÎjÀâjÐjõjÒ}r¶ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK€jÝhjÞ]r·äjçXdThe next dialog shows the RTSC Configuration Settings. If only one version of the MCSDK is installed, then nothing more is required. If more than one version of the MCSDK is installed, review the version numbers of the selected packages and insure they are from the desired MCSDK. Do not forget the drop-down box at the top for the version of the XDCtools.r¸ä…�r¹ä}rºä(jÅjµäjÆj³äubaubjò)�r»ä}r¼ä(jÅX{Click **Finish**. CCS creates the project, complete with source code, and adds an entry to the **Project Explorer** window.jÆj®âjÎjÀâjÐjõjÒ}r½ä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÝhjÞ]r¾ä(jçXClick r¿ä…�rÀä}rÁä(jÅXClick jÆj»äubjÚ)�rÂä}rÃä(jÅX **Finish**jÒ}rÄä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»äjÞ]rÅäjçXFinishrÆä…�rÇä}rÈä(jÅUjÆjÂäubajÐjâubjçXO. CCS creates the project, complete with source code, and adds an entry to the rÉä…�rÊä}rËä(jÅXO. CCS creates the project, complete with source code, and adds an entry to the jÆj»äubjÚ)�rÌä}rÍä(jÅX**Project Explorer**jÒ}rÎä(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»äjÞ]rÏäjçXProject ExplorerrÐä…�rÑä}rÒä(jÅUjÆjÌäubajÐjâubjçX window.rÓä…�rÔä}rÕä(jÅX window.jÆj»äubeubjhK)�rÖä}r×ä(jÅXProject ModificationsrØäjÆj®âjÎjÀâjÐjlKjÒ}rÙä(j×]rÚäUproject-modificationsrÛäajÖ]jÔ]jÕ]jÚ]rÜäh¤aujÜNjÝhjÞ]rÝäjçXProject ModificationsrÞä…�rßä}ràä(jÅjØäjÆjÖäubaubjò)�ráä}râä(jÅX4One modification to the example project is required.rãäjÆj®âjÎjÀâjÐjõjÒ}rää(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]råäjçX4One modification to the example project is required.ræä…�rçä}rèä(jÅjãäjÆjáäubaubjò)�réä}rêä(jÅX3In the **Project Explorer** window, expand the set of files available under the new project. Open the file *omp_config.cfg* by double-clicking on it. The edit window has two tabs on the bottom left. Select the **Source** tab. Find the source line which begins *var OpenMP ...* Change the code as follows ...jÆj®âjÎjÀâjÐjõjÒ}rëä(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rìä(jçXIn the ríä…�rîä}rïä(jÅXIn the jÆjéäubjÚ)�rðä}rñä(jÅX**Project Explorer**jÒ}ròä(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéäjÞ]róäjçXProject Explorerrôä…�rõä}röä(jÅUjÆjðäubajÐjâubjçXP window, expand the set of files available under the new project. Open the file r÷ä…�røä}rùä(jÅXP window, expand the set of files available under the new project. Open the file jÆjéäubjM)�rúä}rûä(jÅX*omp_config.cfg*jÒ}rüä(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéäjÞ]rýäjçXomp_config.cfgrþä…�rÿä}rå(jÅUjÆjúäubajÐjUubjçXW by double-clicking on it. The edit window has two tabs on the bottom left. Select the rå…�rå}rå(jÅXW by double-clicking on it. The edit window has two tabs on the bottom left. Select the jÆjéäubjÚ)�rå}rå(jÅX **Source**jÒ}rå(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéäjÞ]råjçXSourcerå…�r å}r å(jÅUjÆjåubajÐjâubjçX( tab. Find the source line which begins r å…�r å}r å(jÅX( tab. Find the source line which begins jÆjéäubjM)�rå}rå(jÅX*var OpenMP ...*jÒ}rå(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéäjÞ]råjçXvar OpenMP ...rå…�rå}rå(jÅUjÆjåubajÐjUubjçX Change the code as follows ...rå…�rå}rå(jÅX Change the code as follows ...jÆjéäubeubj)�rå}rå(jÅXÌvar OpenMP = xdc.useModule('ti.omp.utils.OpenMP'); // no change OpenMP.setNumProcessors(4); // no change OpenMP.autoDnldCore = false; // add this linejÆj®âjÎjÀâjÐjjÒ}rå(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMW2jÝhjÞ]råjçXÌvar OpenMP = xdc.useModule('ti.omp.utils.OpenMP'); // no change OpenMP.setNumProcessors(4); // no change OpenMP.autoDnldCore = false; // add this linerå…�rå}rå(jÅUjÆjåubaubjò)�rå}r å(jÅX{The new line disables the feature called auto-download. A side effect of auto-download is that printf works only on core 0.r!åjÆj®âjÎjÀâjÐjõjÒ}r"å(jÔ]jÕ]jÖ]j×]jÚ]ujÜK›jÝhjÞ]r#åjçX{The new line disables the feature called auto-download. A side effect of auto-download is that printf works only on core 0.r$å…�r%å}r&å(jÅj!åjÆjåubaubjò)�r'å}r(å(jÅX^Save the change to the configuration file by entering control+S or selecting **File \| Save**.jÆj®âjÎjÀâjÐjõjÒ}r)å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKžjÝhjÞ]r*å(jçXMSave the change to the configuration file by entering control+S or selecting r+å…�r,å}r-å(jÅXMSave the change to the configuration file by entering control+S or selecting jÆj'åubjÚ)�r.å}r/å(jÅX**File \| Save**jÒ}r0å(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'åjÞ]r1åjçX File | Saver2å…�r3å}r4å(jÅUjÆj.åubajÐjâubjçX.…�r5å}r6å(jÅX.jÆj'åubeubjhK)�r7å}r8å(jÅXBuild and Loadr9åjÆj®âjÎjÀâjÐjlKjÒ}r:å(j×]r;åUbuild-and-loadr<åajÖ]jÔ]jÕ]jÚ]r=åhôaujÜNjÝhjÞ]r>åjçXBuild and Loadr?å…�r@å}rAå(jÅj9åjÆj7åubaubjò)�rBå}rCå(jÅXThe target configuration that should launch when this OpenMP project is debugged is the same one used for previous single core projects. To check on this detail, choose **View \| Target Configurations**. Find that target configuration and insure it is the default.jÆj®âjÎjÀâjÐjõjÒ}rDå(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÝhjÞ]rEå(jçX©The target configuration that should launch when this OpenMP project is debugged is the same one used for previous single core projects. To check on this detail, choose rFå…�rGå}rHå(jÅX©The target configuration that should launch when this OpenMP project is debugged is the same one used for previous single core projects. To check on this detail, choose jÆjBåubjÚ)�rIå}rJå(jÅX!**View \| Target Configurations**jÒ}rKå(jÔ]jÕ]jÖ]j×]jÚ]ujÆjBåjÞ]rLåjçXView | Target ConfigurationsrMå…�rNå}rOå(jÅUjÆjIåubajÐjâubjçX>. Find that target configuration and insure it is the default.rPå…�rQå}rRå(jÅX>. Find that target configuration and insure it is the default.jÆjBåubeubjò)�rSå}rTå(jÅXGIn the **Project Explorer** window, insure the new project is selected.rUåjÆj®âjÎjÀâjÐjõjÒ}rVå(jÔ]jÕ]jÖ]j×]jÚ]ujÜK©jÝhjÞ]rWå(jçXIn the rXå…�rYå}rZå(jÅXIn the jÆjSåubjÚ)�r[å}r\å(jÅX**Project Explorer**jÒ}r]å(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSåjÞ]r^åjçXProject Explorerr_å…�r`å}raå(jÅUjÆj[åubajÐjâubjçX, window, insure the new project is selected.rbå…�rcå}rdå(jÅX, window, insure the new project is selected.jÆjSåubeubjò)�reå}rfå(jÅXSelect the Debug icon.rgåjÆj®âjÎjÀâjÐjõjÒ}rhå(jÔ]jÕ]jÖ]j×]jÚ]ujÜK«jÝhjÞ]riåjçXSelect the Debug icon.rjå…�rkå}rlå(jÅjgåjÆjeåubaubjR)�rmå}rnå(jÅX+.. Image:: ../images/Omp_h2_debug_icon.JPG jÆj®âjÎjÀâjÐjZjÒ}roå(UuriX$rtos/../images/Omp_h2_debug_icon.JPGrpåj×]jÖ]jÔ]jÕ]jX}rqåU*jpåsjÚ]ujÜK®jÝhjÞ]ubjò)�rrå}rså(jÅX•Next a dialog will come up which asks which CPU cores to load the program on. Select cores 0-3, then click **OK**. It will appear similar to this ...jÆj®âjÎjÀâjÐjõjÒ}rtå(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¯jÝhjÞ]ruå(jçXkNext a dialog will come up which asks which CPU cores to load the program on. Select cores 0-3, then click rvå…�rwå}rxå(jÅXkNext a dialog will come up which asks which CPU cores to load the program on. Select cores 0-3, then click jÆjråubjÚ)�ryå}rzå(jÅX**OK**jÒ}r{å(jÔ]jÕ]jÖ]j×]jÚ]ujÆjråjÞ]r|åjçXOKr}å…�r~å}rå(jÅUjÆjyåubajÐjâubjçX$. It will appear similar to this ...r€å…�r�å}r‚å(jÅX$. It will appear similar to this ...jÆjråubeubjR)�rƒå}r„å(jÅX-.. Image:: ../images/Omp_h3_select_cores.JPG jÆj®âjÎjÀâjÐjZjÒ}r…å(UuriX&rtos/../images/Omp_h3_select_cores.JPGr†åj×]jÖ]jÔ]jÕ]jX}r‡åU*j†åsjÚ]ujÜK´jÝhjÞ]ubjò)�rˆå}r‰å(jÅX/The following actions take place automatically:rŠåjÆj®âjÎjÀâjÐjõjÒ}r‹å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKµjÝhjÞ]rŒåjçX/The following actions take place automatically:r�å…�rŽå}r�å(jÅjŠåjÆjˆåubaubjt)�r�å}r‘å(jÅUjÆj®âjÎjÀâjÐjwjÒ}r’å(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK·jÝhjÞ]r“å(j{)�r”å}r•å(jÅX$CCS changes to the Debug perspectiver–åjÆj�åjÎjÀâjÐjjÒ}r—å(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r˜åjò)�r™å}ršå(jÅj–åjÆj”åjÎjÀâjÐjõjÒ}r›å(jÔ]jÕ]jÖ]j×]jÚ]ujÜK·jÞ]rœåjçX$CCS changes to the Debug perspectiver�å…�ržå}rŸå(jÅj–åjÆj™åubaubaubj{)�r å}r¡å(jÅXThe project is builtr¢åjÆj�åjÎjÀâjÐjjÒ}r£å(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¤åjò)�r¥å}r¦å(jÅj¢åjÆj åjÎjÀâjÐjõjÒ}r§å(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¸jÞ]r¨åjçXThe project is builtr©å…�rªå}r«å(jÅj¢åjÆj¥åubaubaubj{)�r¬å}r­å(jÅX$The target configuration is launchedr®åjÆj�åjÎjÀâjÐjjÒ}r¯å(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r°åjò)�r±å}r²å(jÅj®åjÆj¬åjÎjÀâjÐjõjÒ}r³å(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¹jÞ]r´åjçX$The target configuration is launchedrµå…�r¶å}r·å(jÅj®åjÆj±åubaubaubj{)�r¸å}r¹å(jÅXThe target connection is maderºåjÆj�åjÎjÀâjÐjjÒ}r»å(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¼åjò)�r½å}r¾å(jÅjºåjÆj¸åjÎjÀâjÐjõjÒ}r¿å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKºjÞ]rÀåjçXThe target connection is maderÁå…�rÂå}rÃå(jÅjºåjÆj½åubaubaubj{)�rÄå}rÅå(jÅX"The program is loaded on cores 0-3rÆåjÆj�åjÎjÀâjÐjjÒ}rÇå(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÈåjò)�rÉå}rÊå(jÅjÆåjÆjÄåjÎjÀâjÐjõjÒ}rËå(jÔ]jÕ]jÖ]j×]jÚ]ujÜK»jÞ]rÌåjçX"The program is loaded on cores 0-3rÍå…�rÎå}rÏå(jÅjÆåjÆjÉåubaubaubj{)�rÐå}rÑå(jÅXDThe system begins execution and runs to the start of main on core 0 jÆj�åjÎjÀâjÐjjÒ}rÒå(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÓåjò)�rÔå}rÕå(jÅXCThe system begins execution and runs to the start of main on core 0rÖåjÆjÐåjÎjÀâjÐjõjÒ}r×å(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¼jÞ]rØåjçXCThe system begins execution and runs to the start of main on core 0rÙå…�rÚå}rÛå(jÅjÖåjÆjÔåubaubaubeubjhK)�rÜå}rÝå(jÅXExecute and See OutputrÞåjÆj®âjÎjÀâjÐjlKjÒ}rßå(j×]ràåUexecute-and-see-outputráåajÖ]jÔ]jÕ]jÚ]râåjŽaujÜNjÝhjÞ]rãåjçXExecute and See Outputräå…�råå}ræå(jÅjÞåjÆjÜåubaubjò)�rçå}rèå(jÅXSNow you are ready to execute. In the Debug window, click the Resume execution icon.réåjÆj®âjÎjÀâjÐjõjÒ}rêå(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÝhjÞ]rëåjçXSNow you are ready to execute. In the Debug window, click the Resume execution icon.rìå…�ríå}rîå(jÅjéåjÆjçåubaubjR)�rïå}rðå(jÅX,.. Image:: ../images/Omp_h4_resume_icon.JPG jÆj®âjÎjÀâjÐjZjÒ}rñå(UuriX%rtos/../images/Omp_h4_resume_icon.JPGròåj×]jÖ]jÔ]jÕ]jX}róåU*jòåsjÚ]ujÜKÅjÝhjÞ]ubjò)�rôå}rõå(jÅX^The console window will show output similar to, but not exactly the same as, the following ...röåjÆj®âjÎjÀâjÐjõjÒ}r÷å(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÆjÝhjÞ]røåjçX^The console window will show output similar to, but not exactly the same as, the following ...rùå…�rúå}rûå(jÅjöåjÆjôåubaubj)�rüå}rýå(jÅX·[C66xx_0] Hello World from thread = 0 [C66xx_0] Number of threads = 4 [C66xx_1] Hello World from thread = 1 [C66xx_2] Hello World from thread = 2 [C66xx_3] Hello World from thread = 3jÆj®âjÎjÀâjÐjjÒ}rþå(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM‹2jÝhjÞ]rÿåjçX·[C66xx_0] Hello World from thread = 0 [C66xx_0] Number of threads = 4 [C66xx_1] Hello World from thread = 1 [C66xx_2] Hello World from thread = 2 [C66xx_3] Hello World from thread = 3ræ…�ræ}ræ(jÅUjÆjüåubaubjò)�ræ}ræ(jÅX£Because the threads are executing on the cores concurrently, there is no control over the order in which the output appears. But you should see all of these lines.ræjÆj®âjÎjÀâjÐjõjÒ}ræ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÑjÝhjÞ]ræjçX£Because the threads are executing on the cores concurrently, there is no control over the order in which the output appears. But you should see all of these lines.ræ…�r æ}r æ(jÅjæjÆjæubaubjhK)�r æ}r æ(jÅXTips on System Startupr æjÆj®âjÎjÀâjÐjlKjÒ}ræ(j×]ræUtips-on-system-startupræajÖ]jÔ]jÕ]jÚ]ræh¾aujÜNjÝhjÞ]ræjçXTips on System Startupræ…�ræ}ræ(jÅj æjÆj æubaubjò)�ræ}ræ(jÅXÏIf things do not go smoothly, please see the article `SystemAnalyzerTutorial7 `__. That article is about running a tutorial for a tool named Unified Instrumentation Architecture (UIA). UIA is for analyzing system performance and behavior. This tutorial contains several tips on how to use CCS to run OpenMP programs. It is relevant to the versions of the MCSDK components listed near the beginning.jÆj®âjÎjÀâjÐjõjÒ}ræ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKØjÝhjÞ]ræ(jçX5If things do not go smoothly, please see the article ræ…�ræ}ræ(jÅX5If things do not go smoothly, please see the article jÆjæubjû)�ræ}ræ(jÅX]`SystemAnalyzerTutorial7 `__jÒ}ræ(UnameXSystemAnalyzerTutorial7jX?http://processors.wiki.ti.com/index.php/SystemAnalyzerTutorial7j×]jÖ]jÔ]jÕ]jÚ]ujÆjæjÞ]r æjçXSystemAnalyzerTutorial7r!æ…�r"æ}r#æ(jÅUjÆjæubajÐjÿubjçX=. That article is about running a tutorial for a tool named Unified Instrumentation Architecture (UIA). UIA is for analyzing system performance and behavior. This tutorial contains several tips on how to use CCS to run OpenMP programs. It is relevant to the versions of the MCSDK components listed near the beginning.r$æ…�r%æ}r&æ(jÅX=. That article is about running a tutorial for a tool named Unified Instrumentation Architecture (UIA). UIA is for analyzing system performance and behavior. This tutorial contains several tips on how to use CCS to run OpenMP programs. It is relevant to the versions of the MCSDK components listed near the beginning.jÆjæubeubjhK)�r'æ}r(æ(jÅXSecond OpenMP Projectr)æjÆj®âjÎjÀâjÐjlKjÒ}r*æ(j×]r+æUsecond-openmp-projectr,æajÖ]jÔ]jÕ]jÚ]r-æj–aujÜNjÝhjÞ]r.æjçXSecond OpenMP Projectr/æ…�r0æ}r1æ(jÅj)æjÆj'æubaubjò)�r2æ}r3æ(jÅX�Now try another project like hello world, but a bit more complicated. It will serve as the basis for your future OpenMP projects.r4æjÆj®âjÎjÀâjÐjõjÒ}r5æ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKãjÝhjÞ]r6æjçX�Now try another project like hello world, but a bit more complicated. It will serve as the basis for your future OpenMP projects.r7æ…�r8æ}r9æ(jÅj4æjÆj2æubaubjhK)�r:æ}r;æ(jÅX Project Setupr<æjÆj®âjÎjÀâjÐjlKjÒ}r=æ(j×]r>æUproject-setup-1r?æajÖ]jÔ]jÕ]jÚ]r@æj«aujÜNjÝhjÞ]rAæjçX Project SetuprBæ…�rCæ}rDæ(jÅj<æjÆj:æubaubjò)�rEæ}rFæ(jÅXÃStart it the same way as the hello world project. But give it a different name, look for *matrix* among the examples, and choose the *OpenMP matrix vector multiplication example* for your system.jÆj®âjÎjÀâjÐjõjÒ}rGæ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKéjÝhjÞ]rHæ(jçXYStart it the same way as the hello world project. But give it a different name, look for rIæ…�rJæ}rKæ(jÅXYStart it the same way as the hello world project. But give it a different name, look for jÆjEæubjM)�rLæ}rMæ(jÅX*matrix*jÒ}rNæ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjEæjÞ]rOæjçXmatrixrPæ…�rQæ}rRæ(jÅUjÆjLæubajÐjUubjçX$ among the examples, and choose the rSæ…�rTæ}rUæ(jÅX$ among the examples, and choose the jÆjEæubjM)�rVæ}rWæ(jÅX-*OpenMP matrix vector multiplication example*jÒ}rXæ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjEæjÞ]rYæjçX+OpenMP matrix vector multiplication examplerZæ…�r[æ}r\æ(jÅUjÆjVæubajÐjUubjçX for your system.r]æ…�r^æ}r_æ(jÅX for your system.jÆjEæubeubjR)�r`æ}raæ(jÅX-.. Image:: ../images/Omp_h5_matvec_setup.JPG jÆj®âjÎjÀâjÐjZjÒ}rbæ(UuriX&rtos/../images/Omp_h5_matvec_setup.JPGrcæj×]jÖ]jÔ]jÕ]jX}rdæU*jcæsjÚ]ujÜKîjÝhjÞ]ubjhK)�reæ}rfæ(jÅXBuild and ExecutergæjÆj®âjÎjÀâjÐjlKjÒ}rhæ(j×]riæUbuild-and-executerjæajÖ]jÔ]jÕ]jÚ]rkæjaujÜNjÝhjÞ]rlæjçXBuild and Executermæ…�rnæ}roæ(jÅjgæjÆjeæubaubjò)�rpæ}rqæ(jÅXEAll the remaining steps are the same as with the hello world project.rræjÆj®âjÎjÀâjÐjõjÒ}rsæ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKòjÝhjÞ]rtæjçXEAll the remaining steps are the same as with the hello world project.ruæ…�rvæ}rwæ(jÅjræjÆjpæubaubjò)�rxæ}ryæ(jÅXIUpon executing, output in the console window should appear similar to ...rzæjÆj®âjÎjÀâjÐjõjÒ}r{æ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKôjÝhjÞ]r|æjçXIUpon executing, output in the console window should appear similar to ...r}æ…�r~æ}ræ(jÅjzæjÆjxæubaubj)�r€æ}r�æ(jÅX9[C66xx_0] [C66xx_0] Starting values of matrix A and vector b: [C66xx_0] A[0]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[0]= 1.0 [C66xx_0] A[1]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[1]= 2.0 [C66xx_0] A[2]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[2]= 3.0 [C66xx_0] A[3]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[3]= 4.0 [C66xx_0] A[4]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[4]= 5.0 [C66xx_0] A[5]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[5]= 6.0 [C66xx_0] A[6]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[6]= 7.0 [C66xx_0] A[7]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[7]= 8.0 [C66xx_0] A[8]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[8]= 9.0 [C66xx_0] A[9]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[9]= 10.0 [C66xx_0] [C66xx_0] Results by thread/row: [C66xx_0] thread 0 did row 0 c[0]=55.00 Running total= 55.00 [C66xx_3] thread 3 did row 9 c[9]=550.00 Running total= 605.00 [C66xx_1] thread 1 did row 3 c[3]=220.00 Running total= 825.00 [C66xx_0] thread 0 did row 1 c[1]=110.00 Running total= 935.00 [C66xx_1] thread 1 did row 4 c[4]=275.00 Running total= 1210.00 [C66xx_2] thread 2 did row 6 c[6]=385.00 Running total= 1595.00 [C66xx_0] thread 0 did row 2 c[2]=165.00 Running total= 1760.00 [C66xx_1] thread 1 did row 5 c[5]=330.00 Running total= 2090.00 [C66xx_2] thread 2 did row 7 c[7]=440.00 Running total= 2530.00 [C66xx_2] thread 2 did row 8 c[8]=495.00 Running total= 3025.00 [C66xx_0] [C66xx_0] Matrix-vector total - sum of all c[] = 3025.00 [C66xx_0]jÆj®âjÎjÀâjÐjjÒ}r‚æ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¹2jÝhjÞ]rƒæjçX9[C66xx_0] [C66xx_0] Starting values of matrix A and vector b: [C66xx_0] A[0]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[0]= 1.0 [C66xx_0] A[1]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[1]= 2.0 [C66xx_0] A[2]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[2]= 3.0 [C66xx_0] A[3]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[3]= 4.0 [C66xx_0] A[4]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[4]= 5.0 [C66xx_0] A[5]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[5]= 6.0 [C66xx_0] A[6]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[6]= 7.0 [C66xx_0] A[7]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[7]= 8.0 [C66xx_0] A[8]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[8]= 9.0 [C66xx_0] A[9]= 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 b[9]= 10.0 [C66xx_0] [C66xx_0] Results by thread/row: [C66xx_0] thread 0 did row 0 c[0]=55.00 Running total= 55.00 [C66xx_3] thread 3 did row 9 c[9]=550.00 Running total= 605.00 [C66xx_1] thread 1 did row 3 c[3]=220.00 Running total= 825.00 [C66xx_0] thread 0 did row 1 c[1]=110.00 Running total= 935.00 [C66xx_1] thread 1 did row 4 c[4]=275.00 Running total= 1210.00 [C66xx_2] thread 2 did row 6 c[6]=385.00 Running total= 1595.00 [C66xx_0] thread 0 did row 2 c[2]=165.00 Running total= 1760.00 [C66xx_1] thread 1 did row 5 c[5]=330.00 Running total= 2090.00 [C66xx_2] thread 2 did row 7 c[7]=440.00 Running total= 2530.00 [C66xx_2] thread 2 did row 8 c[8]=495.00 Running total= 3025.00 [C66xx_0] [C66xx_0] Matrix-vector total - sum of all c[] = 3025.00 [C66xx_0]r„æ…�r…æ}r†æ(jÅUjÆj€æubaubjò)�r‡æ}rˆæ(jÅX¹The parts before and after *Results by thread/row* should match, particularly the final result of 3025.00. The *thread N* lines will vary, but there should be one line for each row 0-9.jÆj®âjÎjÀâjÐjõjÒ}r‰æ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]rŠæ(jçXThe parts before and after r‹æ…�rŒæ}r�æ(jÅXThe parts before and after jÆj‡æubjM)�rŽæ}r�æ(jÅX*Results by thread/row*jÒ}r�æ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‡æjÞ]r‘æjçXResults by thread/rowr’æ…�r“æ}r”æ(jÅUjÆjŽæubajÐjUubjçX= should match, particularly the final result of 3025.00. The r•æ…�r–æ}r—æ(jÅX= should match, particularly the final result of 3025.00. The jÆj‡æubjM)�r˜æ}r™æ(jÅX *thread N*jÒ}ršæ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‡æjÞ]r›æjçXthread Nrœæ…�r�æ}ržæ(jÅUjÆj˜æubajÐjUubjçX@ lines will vary, but there should be one line for each row 0-9.rŸæ…�r æ}r¡æ(jÅX@ lines will vary, but there should be one line for each row 0-9.jÆj‡æubeubjhK)�r¢æ}r£æ(jÅXStart Your OpenMP Projectr¤æjÆj®âjÎjÀâjÐjlKjÒ}r¥æ(j×]r¦æUstart-your-openmp-projectr§æajÖ]jÔ]jÕ]jÚ]r¨æjiaujÜNjÝhjÞ]r©æjçXStart Your OpenMP Projectrªæ…�r«æ}r¬æ(jÅj¤æjÆj¢æubaubjò)�r­æ}r®æ(jÅXËBuild your OpenMP project out of the matrix multiply project. In the **Project Explorer** window, select the matrix multiply project, right-click and choose **Copy**. Right-click again and choose **Paste**. Give the new project a name. It starts as a copy of the matrix multiply project in every respect, except the name. Remove files, add files, and make the project your own. Modifications to the omp_config.cfg file are not required for base functionality.jÆj®âjÎjÀâjÐjõjÒ}r¯æ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÝhjÞ]r°æ(jçXEBuild your OpenMP project out of the matrix multiply project. In the r±æ…�r²æ}r³æ(jÅXEBuild your OpenMP project out of the matrix multiply project. In the jÆj­æubjÚ)�r´æ}rµæ(jÅX**Project Explorer**jÒ}r¶æ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­æjÞ]r·æjçXProject Explorerr¸æ…�r¹æ}rºæ(jÅUjÆj´æubajÐjâubjçXD window, select the matrix multiply project, right-click and choose r»æ…�r¼æ}r½æ(jÅXD window, select the matrix multiply project, right-click and choose jÆj­æubjÚ)�r¾æ}r¿æ(jÅX**Copy**jÒ}rÀæ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­æjÞ]rÁæjçXCopyrÂæ…�rÃæ}rÄæ(jÅUjÆj¾æubajÐjâubjçX. Right-click again and choose rÅæ…�rÆæ}rÇæ(jÅX. Right-click again and choose jÆj­æubjÚ)�rÈæ}rÉæ(jÅX **Paste**jÒ}rÊæ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­æjÞ]rËæjçXPasterÌæ…�rÍæ}rÎæ(jÅUjÆjÈæubajÐjâubjçXþ. Give the new project a name. It starts as a copy of the matrix multiply project in every respect, except the name. Remove files, add files, and make the project your own. Modifications to the omp_config.cfg file are not required for base functionality.rÏæ…�rÐæ}rÑæ(jÅXþ. Give the new project a name. It starts as a copy of the matrix multiply project in every respect, except the name. Remove files, add files, and make the project your own. Modifications to the omp_config.cfg file are not required for base functionality.jÆj­æubeubjhK)�rÒæ}rÓæ(jÅXDebugging TipsrÔæjÆj®âjÎjÀâjÐjlKjÒ}rÕæ(j×]rÖæUdebugging-tipsr׿ajÖ]jÔ]jÕ]jÚ]rØæhaujÜNjÝhjÞ]rÙæjçXDebugging TipsrÚæ…�rÛæ}rÜæ(jÅjÔæjÆjÒæubaubjò)�rÝæ}rÞæ(jÅX¯Suppose you want to immediately execute one of those example projects again. You need to reset the CPU cores, reload the program, and run again. Here is a good way to do that.rßæjÆj®âjÎjÀâjÐjõjÒ}ràæ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM'jÝhjÞ]ráæjçX¯Suppose you want to immediately execute one of those example projects again. You need to reset the CPU cores, reload the program, and run again. Here is a good way to do that.râæ…�rãæ}räæ(jÅjßæjÆjÝæubaubjò)�råæ}rææ(jÅXTIn the **Debug** window, select cores 0-3, right-click and choose **Group Core(s)**.jÆj®âjÎjÀâjÐjõjÒ}rçæ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÝhjÞ]rèæ(jçXIn the réæ…�rêæ}rëæ(jÅXIn the jÆjåæubjÚ)�rìæ}ríæ(jÅX **Debug**jÒ}rîæ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjåæjÞ]rïæjçXDebugrðæ…�rñæ}ròæ(jÅUjÆjìæubajÐjâubjçX2 window, select cores 0-3, right-click and choose róæ…�rôæ}rõæ(jÅX2 window, select cores 0-3, right-click and choose jÆjåæubjÚ)�röæ}r÷æ(jÅX**Group Core(s)**jÒ}røæ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjåæjÞ]rùæjçX Group Core(s)rúæ…�rûæ}rüæ(jÅUjÆjöæubajÐjâubjçX.…�rýæ}rþæ(jÅX.jÆjåæubeubjR)�rÿæ}rç(jÅX,.. Image:: ../images/Omp_h6_group_cores.JPG jÆj®âjÎjÀâjÐjZjÒ}rç(UuriX%rtos/../images/Omp_h6_group_cores.JPGrçj×]jÖ]jÔ]jÕ]jX}rçU*jçsjÚ]ujÜM/jÝhjÞ]ubjò)�rç}rç(jÅXŒNow reset the cores in the newly formed group. Select the group and click the **CPU Reset** icon near the top right of the **Debug** window.jÆj®âjÎjÀâjÐjõjÒ}rç(jÔ]jÕ]jÖ]j×]jÚ]ujÜM0jÝhjÞ]rç(jçXNNow reset the cores in the newly formed group. Select the group and click the rç…�r ç}r ç(jÅXNNow reset the cores in the newly formed group. Select the group and click the jÆjçubjÚ)�r ç}r ç(jÅX **CPU Reset**jÒ}r ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçjÞ]rçjçX CPU Resetrç…�rç}rç(jÅUjÆj çubajÐjâubjçX icon near the top right of the rç…�rç}rç(jÅX icon near the top right of the jÆjçubjÚ)�rç}rç(jÅX **Debug**jÒ}rç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçjÞ]rçjçXDebugrç…�rç}rç(jÅUjÆjçubajÐjâubjçX window.rç…�rç}rç(jÅX window.jÆjçubeubjò)�rç}r ç(jÅXCPU Reset iconr!çjÆj®âjÎjÀâjÐjõjÒ}r"ç(jÔ]jÕ]jÖ]j×]jÚ]ujÜM3jÝhjÞ]r#çjçXCPU Reset iconr$ç…�r%ç}r&ç(jÅj!çjÆjçubaubjR)�r'ç}r(ç(jÅX*.. Image:: ../images/Omp_h7_cpu_reset.JPG jÆj®âjÎjÀâjÐjZjÒ}r)ç(UuriX#rtos/../images/Omp_h7_cpu_reset.JPGr*çj×]jÖ]jÔ]jÕ]jX}r+çU*j*çsjÚ]ujÜM6jÝhjÞ]ubjò)�r,ç}r-ç(jÅXßThen reload the program with the menu selection **Run \| Load \| Reload Program**. Now you are ready to resume execution as before. Compare with the output you got last time, and see how some lines are in a different order.jÆj®âjÎjÀâjÐjõjÒ}r.ç(jÔ]jÕ]jÖ]j×]jÚ]ujÜM7jÝhjÞ]r/ç(jçX0Then reload the program with the menu selection r0ç…�r1ç}r2ç(jÅX0Then reload the program with the menu selection jÆj,çubjÚ)�r3ç}r4ç(jÅX!**Run \| Load \| Reload Program**jÒ}r5ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,çjÞ]r6çjçXRun | Load | Reload Programr7ç…�r8ç}r9ç(jÅUjÆj3çubajÐjâubjçXŽ. Now you are ready to resume execution as before. Compare with the output you got last time, and see how some lines are in a different order.r:ç…�r;ç}r<ç(jÅXŽ. Now you are ready to resume execution as before. Compare with the output you got last time, and see how some lines are in a different order.jÆj,çubeubjhK)�r=ç}r>ç(jÅXHow to Obtain Supportr?çjÆj®âjÎjÀâjÐjlKjÒ}r@ç(j×]rAçUhow-to-obtain-supportrBçajÖ]jÔ]jÕ]jÚ]rCçj¬aujÜNjÝhjÞ]rDçjçXHow to Obtain SupportrEç…�rFç}rGç(jÅj?çjÆj=çubaubjò)�rHç}rIç(jÅX)Post your questions and suspected bugs to the `compiler forum `__ with the tag ``openmp``. Please use the tag. Use of the tag triggers an e-mail to the current support team. Without the tag, the issue may go unnoticed for some time.jÆj®âjÎjÀâjÐjõjÒ}rJç(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÝhjÞ]rKç(jçX.Post your questions and suspected bugs to the rLç…�rMç}rNç(jÅX.Post your questions and suspected bugs to the jÆjHçubjû)�rOç}rPç(jÅXT`compiler forum `__jÒ}rQç(UnameXcompiler forumjX?http://e2e.ti.com/support/development_tools/compiler/f/343.aspxj×]jÖ]jÔ]jÕ]jÚ]ujÆjHçjÞ]rRçjçXcompiler forumrSç…�rTç}rUç(jÅUjÆjOçubajÐjÿubjçX with the tag rVç…�rWç}rXç(jÅX with the tag jÆjHçubj )�rYç}rZç(jÅX ``openmp``jÒ}r[ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjHçjÞ]r\çjçXopenmpr]ç…�r^ç}r_ç(jÅUjÆjYçubajÐj¨ubjçX�. Please use the tag. Use of the tag triggers an e-mail to the current support team. Without the tag, the issue may go unnoticed for some time.r`ç…�raç}rbç(jÅX�. Please use the tag. Use of the tag triggers an e-mail to the current support team. Without the tag, the issue may go unnoticed for some time.jÆjHçubeubeubjÎjÀâjÐjlKjÒ}rcç(j×]rdçjªâajÖ]jÔ]reçjâajÕ]jÚ]ujÜNjÝhjÞ]rfçjçX Introductionrgç…�rhç}riç(jÅj­âjÆj«âubaubjÞ]rjçjò)�rkç}rlç(jÅX/Duplicate explicit target name: "introduction".jÒ}rmç(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦âjÞ]rnçjçX/Duplicate explicit target name: "introduction".roç…�rpç}rqç(jÅUjÆjkçubajÐjõubajÐjv~ubjs~)�rrç}rsç(jÅUjÆj®âjÎjÀâjÐjv~jÒ}rtç(jÔ]UlevelKj×]ruçjãajÖ]rvçj~ãaUsourcejÀâjÕ]jÚ]UlineK.Utypejx~ujÜK8jÝhjÞ]rwçjò)�rxç}ryç(jÅX0Inline emphasis start-string without end-string.jÒ}rzç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjrçjÞ]r{çjçX0Inline emphasis start-string without end-string.r|ç…�r}ç}r~ç(jÅUjÆjxçubajÐjõubaubjs~)�rç}r€ç(jÅUjÆj®âjÎjÀâjÐjv~jÒ}r�ç(jÔ]UlevelKj×]jÖ]UsourcejÀâjÕ]jÚ]UlineKõUtypej„~ujÜKõjÝhjÞ]r‚çjò)�rƒç}r„ç(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}r…ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjçjÞ]r†çjçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.r‡ç…�rˆç}r‰ç(jÅUjÆjƒçubajÐjõubaubjs~)�rŠç}r‹ç(jÅUjÆj®âjÎX9internal padding after source/rtos/Compute/OpenMP.rst.incrŒçjÐjv~jÒ}r�ç(jÔ]UlevelKj×]jÖ]UsourcejÀâjÕ]jÚ]UlineMEUtypejPÝujÜMGjÝhjÞ]rŽç(jò)�r�ç}r�ç(jÅX;Content block expected for the "raw" directive; none found.jÒ}r‘ç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠçjÞ]r’çjçX;Content block expected for the "raw" directive; none found.r“ç…�r”ç}r•ç(jÅUjÆj�çubajÐjõubj)�r–ç}r—ç(jÅX.. raw:: html jÒ}r˜ç(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjŠçjÞ]r™çjçX.. raw:: html ršç…�r›ç}rœç(jÅUjÆj–çubajÐjubeubjs~)�r�ç}ržç(jÅUjÒ}rŸç(jÔ]UlevelKj×]jÖ]r çUid134r¡çaUsourcejÏjÕ]jÚ]UlineKÇUtypejx~ujÆjhK)�r¢ç}r£ç(jÅX Introductionr¤çjKjÆjÇ)�r¥ç}r¦ç(jÅUjÆhjÎjÏjÐjÑjÒ}r§ç(jÔ]jÕ]jÖ]j×]r¨çUpktlibr©çajÚ]rªçjaujÜKÇjÝhjÞ]r«ç(jà)�r¬ç}r­ç(jÅXPKTLIBr®çjÆj¥çjÎjÏjÐjäjÒ}r¯ç(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÇjÝhjÞ]r°çjçXPKTLIBr±ç…�r²ç}r³ç(jÅj®çjÆj¬çubaubj7)�r´ç}rµç(jÅXAhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_PKTLIBjÆj¥çjÎj:X?source/rtos/PDK_Platform_Software/Device_Drivers/PKTLIB.rst.incr¶ç…�r·ç}r¸çbjÐj>jÒ}r¹ç(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rºçjçXAhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_PKTLIBr»ç…�r¼ç}r½ç(jÅUjÆj´çubaubj¢çjò)�r¾ç}r¿ç(jÅX˜The packet library (PKTLIB) provides higher layer of abstraction for underlying CPPI hardware descriptors to application layer. Functionalities include:rÀçjÆj¥çjÎj·çjÐjõjÒ}rÁç(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÂçjçX˜The packet library (PKTLIB) provides higher layer of abstraction for underlying CPPI hardware descriptors to application layer. Functionalities include:rÃç…�rÄç}rÅç(jÅjÀçjÆj¾çubaubjt)�rÆç}rÇç(jÅUjÆj¥çjÎj·çjÐjwjÒ}rÈç(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK jÝhjÞ]rÉç(j{)�rÊç}rËç(jÅXˆZero copy operation for: - Packet split/merge operations - Cloning operations - Headroom/Tail room addition through merge operation jÆjÆçjÎNjÐjjÒ}rÌç(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÍç(jò)�rÎç}rÏç(jÅXZero copy operation for:rÐçjÆjÊçjÎj·çjÐjõjÒ}rÑç(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rÒçjçXZero copy operation for:rÓç…�rÔç}rÕç(jÅjÐçjÆjÎçubaubjt)�rÖç}r×ç(jÅUjÒ}rØç(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjÊçjÞ]rÙç(j{)�rÚç}rÛç(jÅXPacket split/merge operationsrÜçjÒ}rÝç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖçjÞ]rÞçjò)�rßç}ràç(jÅjÜçjÆjÚçjÎj·çjÐjõjÒ}ráç(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]râçjçXPacket split/merge operationsrãç…�räç}råç(jÅjÜçjÆjßçubaubajÐjubj{)�ræç}rçç(jÅXCloning operationsrèçjÒ}réç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖçjÞ]rêçjò)�rëç}rìç(jÅjèçjÆjæçjÎj·çjÐjõjÒ}ríç(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rîçjçXCloning operationsrïç…�rðç}rñç(jÅjèçjÆjëçubaubajÐjubj{)�ròç}róç(jÅX4Headroom/Tail room addition through merge operation jÒ}rôç(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖçjÞ]rõçjò)�röç}r÷ç(jÅX3Headroom/Tail room addition through merge operationrøçjÆjòçjÎj·çjÐjõjÒ}rùç(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rúçjçX3Headroom/Tail room addition through merge operationrûç…�rüç}rýç(jÅjøçjÆjöçubaubajÐjubejÐjwubeubj{)�rþç}rÿç(jÅX@Allocations of packet buffer and descriptors during startup timerèjÆjÆçjÎj·çjÐjjÒ}rè(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rèjò)�rè}rè(jÅjèjÆjþçjÎj·çjÐjõjÒ}rè(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rèjçX@Allocations of packet buffer and descriptors during startup timerè…�rè}r è(jÅjèjÆjèubaubaubj{)�r è}r è(jÅX-Allows packet allocation by HW at Rx CPPI DMAr èjÆjÆçjÎj·çjÐjjÒ}r è(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rèjò)�rè}rè(jÅj èjÆj èjÎj·çjÐjõjÒ}rè(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rèjçX-Allows packet allocation by HW at Rx CPPI DMArè…�rè}rè(jÅj èjÆjèubaubaubj{)�rè}rè(jÅXpEfficient recycling of data buffers including the case of buffers being referenced by multiple CPPI descriptors jÆjÆçjÎj·çjÐjjÒ}rè(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rèjò)�rè}rè(jÅXoEfficient recycling of data buffers including the case of buffers being referenced by multiple CPPI descriptorsrèjÆjèjÎj·çjÐjõjÒ}rè(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rèjçXoEfficient recycling of data buffers including the case of buffers being referenced by multiple CPPI descriptorsrè…�r è}r!è(jÅjèjÆjèubaubaubeubjhK)�r"è}r#è(jÅXModes of Operationr$èjKjÆj¥çjÎj·çjÐjlKjÒ}r%è(j×]r&èUid135r'èajÖ]jÔ]r(èXmodes-of-operationr)èajÕ]jÚ]ujÜNjÝhjÞ]r*èjçXModes of Operationr+è…�r,è}r-è(jÅj$èjÆj"èubaubjò)�r.è}r/è(jÅX>A pktlib heap can be created in on of the following two modes:r0èjÆj¥çjÎj·çjÐjõjÒ}r1è(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r2èjçX>A pktlib heap can be created in on of the following two modes:r3è…�r4è}r5è(jÅj0èjÆj.èubaubjt)�r6è}r7è(jÅUjÆj¥çjÎj·çjÐjwjÒ}r8è(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r9è(j{)�r:è}r;è(jÅX<Private: only visible on the core where the heap was createdr<èjÆj6èjÎj·çjÐjjÒ}r=è(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r>èjò)�r?è}r@è(jÅj<èjÆj:èjÎj·çjÐjõjÒ}rAè(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rBèjçX<Private: only visible on the core where the heap was createdrCè…�rDè}rEè(jÅj<èjÆj?èubaubaubj{)�rFè}rGè(jÅX&Shared: visible across multiple cores jÆj6èjÎj·çjÐjjÒ}rHè(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rIèjò)�rJè}rKè(jÅX%Shared: visible across multiple coresrLèjÆjFèjÎj·çjÐjõjÒ}rMè(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rNèjçX%Shared: visible across multiple coresrOè…�rPè}rQè(jÅjLèjÆjJèubaubaubeubjhK)�rRè}rSè(jÅXDriver ConfigurationrTèjÆj¥çjÎj·çjÐjlKjÒ}rUè(j×]rVèUdriver-configuration-pktlibrWèajÖ]jÔ]jÕ]jÚ]rXèh”aujÜNjÝhjÞ]rYèjçXDriver ConfigurationrZè…�r[è}r\è(jÅjTèjÆjRèubaubjò)�r]è}r^è(jÅX¿Applications can use Pktlib_createHeap() API to create heap(s) in the system and heap properties are specified by the Pktlib_HeapCfg configuration structure. This configuration structure should be populated by the application and passed to the PKTLIB module when a heap is being created via the Pktlib_createHeap() API. Multiple heaps can exist in the system where each heaps properties are specified by the Pktlib_HeapCfg configuration structure.r_èjÆj¥çjÎj·çjÐjõjÒ}r`è(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]raèjçX¿Applications can use Pktlib_createHeap() API to create heap(s) in the system and heap properties are specified by the Pktlib_HeapCfg configuration structure. This configuration structure should be populated by the application and passed to the PKTLIB module when a heap is being created via the Pktlib_createHeap() API. Multiple heaps can exist in the system where each heaps properties are specified by the Pktlib_HeapCfg configuration structure.rbè…�rcè}rdè(jÅj_èjÆj]èubaubjò)�reè}rfè(jÅX¡For details about individual fields of this structure, see the Doxygen help by opening /packages/ti/runtime/pktlib/docs/doxygen/html/index.html.rgèjÆj¥çjÎj·çjÐjõjÒ}rhè(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÝhjÞ]rièjçX¡For details about individual fields of this structure, see the Doxygen help by opening /packages/ti/runtime/pktlib/docs/doxygen/html/index.html.rjè…�rkè}rlè(jÅjgèjÆjeèubaubjhK)�rmè}rnè(jÅX**APIs**roèjKjÆj¥çjÎj·çjÐjlKjÒ}rpè(j×]rqèUid136rrèajÖ]jÔ]rsèXapisrtèajÕ]jÚ]ujÜNjÝhjÞ]ruèjÚ)�rvè}rwè(jÅjoèjÒ}rxè(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmèjÞ]ryèjçXAPIsrzè…�r{è}r|è(jÅUjÆjvèubajÐjâubaubjò)�r}è}r~è(jÅX9API reference for application can be found in below file:rèjÆj¥çjÎj·çjÐjõjÒ}r€è(jÔ]jÕ]jÖ]j×]jÚ]ujÜK/jÝhjÞ]r�èjçX9API reference for application can be found in below file:r‚è…�rƒè}r„è(jÅjèjÆj}èubaubj)�r…è}r†è(jÅX%#include jÆj¥çjÎj·çjÐjjÒ}r‡è(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM@3jÝhjÞ]rˆèjçX%#include r‰è…�rŠè}r‹è(jÅUjÆj…èubaubjhK)�rŒè}r�è(jÅXExamplerŽèjKjÆj¥çjÎj·çjÐjlKjÒ}r�è(j×]r�èUid137r‘èajÖ]jÔ]r’èXexampler“èajÕ]jÚ]ujÜNjÝhjÞ]r”èjçXExampler•è…�r–è}r—è(jÅjŽèjÆjŒèubaubjy )�r˜è}r™è(jÅUjÆj¥çjÎj·çjÐjÔ jÒ}ršè(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r›èj~ )�rœè}r�è(jÅUjÒ}ržè(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj˜èjÞ]rŸè(jƒ )�r è}r¡è(jÅUjÒ}r¢è(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjœèjÞ]jÐj‡ ubjƒ )�r£è}r¤è(jÅUjÒ}r¥è(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjœèjÞ]jÐj‡ ubjƒ )�r¦è}r§è(jÅUjÒ}r¨è(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjœèjÞ]jÐj‡ ubj‹ )�r©è}rªè(jÅUjÒ}r«è(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœèjÞ]r¬èj� )�r­è}r®è(jÅUjÒ}r¯è(jÔ]jÕ]jÖ]j×]jÚ]ujÆj©èjÞ]r°è(j• )�r±è}r²è(jÅUjÒ}r³è(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­èjÞ]r´èjò)�rµè}r¶è(jÅXNamer·èjÆj±èjÎj·çjÐjõjÒ}r¸è(jÔ]jÕ]jÖ]j×]jÚ]ujÜK9jÞ]r¹èjçXNamerºè…�r»è}r¼è(jÅj·èjÆjµèubaubajÐj¢ ubj• )�r½è}r¾è(jÅUjÒ}r¿è(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­èjÞ]rÀèjò)�rÁè}rÂè(jÅX DescriptionrÃèjÆj½èjÎj·çjÐjõjÒ}rÄè(jÔ]jÕ]jÖ]j×]jÚ]ujÜK9jÞ]rÅèjçX DescriptionrÆè…�rÇè}rÈè(jÅjÃèjÆjÁèubaubajÐj¢ ubj• )�rÉè}rÊè(jÅUjÒ}rËè(jÔ]jÕ]jÖ]j×]jÚ]ujÆj­èjÞ]rÌèjò)�rÍè}rÎè(jÅXExpected ResultsrÏèjÆjÉèjÎj·çjÐjõjÒ}rÐè(jÔ]jÕ]jÖ]j×]jÚ]ujÜK9jÞ]rÑèjçXExpected ResultsrÒè…�rÓè}rÔè(jÅjÏèjÆjÍèubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rÕè}rÖè(jÅUjÒ}r×è(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœèjÞ]rØèj� )�rÙè}rÚè(jÅUjÒ}rÛè(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÕèjÞ]rÜè(j• )�rÝè}rÞè(jÅUjÒ}rßè(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙèjÞ]ràèjò)�ráè}râè(jÅXpktlibUnitTest ApplicationrãèjÆjÝèjÎj·çjÐjõjÒ}räè(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÞ]råèjçXpktlibUnitTest Applicationræè…�rçè}rèè(jÅjãèjÆjáèubaubajÐj¢ ubj• )�réè}rêè(jÅUjÒ}rëè(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙèjÞ]rìèjc)�ríè}rîè(jÅUjÒ}rïè(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéèjÞ]rðèji)�rñè}ròè(jÅX&Unit Test application to test all APIsróèjlKjÆjíèjÎj·çjÐjÜjÒ}rôè(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rõèjçX&Unit Test application to test all APIsröè…�r÷è}røè(jÅjóèjÆjñèubaubajÐjfubajÐj¢ ubj• )�rùè}rúè(jÅUjÒ}rûè(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÙèjÞ]rüèjc)�rýè}rþè(jÅUjÒ}rÿè(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùèjÞ]réji)�ré}ré(jÅX5User observes the output printed over the CCS consoleréjlKjÆjýèjÎj·çjÐjÜjÒ}ré(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]réjçX5User observes the output printed over the CCS consoleré…�ré}ré(jÅjéjÆjéubaubajÐjfubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubaubjhK)�r é}r é(jÅXAdditional Referencesr éjKjÆj¥çjÎj·çjÐjlKjÒ}r é(j×]r éUid138réajÖ]jÔ]réXadditional-referencesréajÕ]jÚ]ujÜNjÝhjÞ]réjçXAdditional Referencesré…�ré}ré(jÅj éjÆj éubaubjy )�ré}ré(jÅUjÆj¥çjÎj·çjÐjÔ jÒ}ré(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]réj~ )�ré}ré(jÅUjÒ}ré(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjéjÞ]ré(jƒ )�ré}ré(jÅUjÒ}ré(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆjéjÞ]jÐj‡ ubjƒ )�r é}r!é(jÅUjÒ}r"é(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆjéjÞ]jÐj‡ ubj¥ )�r#é}r$é(jÅUjÒ}r%é(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéjÞ]r&é(j� )�r'é}r(é(jÅUjÒ}r)é(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#éjÞ]r*é(j• )�r+é}r,é(jÅUjÒ}r-é(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'éjÞ]r.éjò)�r/é}r0é(jÅX **Document**r1éjÆj+éjÎj·çjÐjõjÒ}r2é(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]r3éjÚ)�r4é}r5é(jÅj1éjÒ}r6é(jÔ]jÕ]jÖ]j×]jÚ]ujÆj/éjÞ]r7éjçXDocumentr8é…�r9é}r:é(jÅUjÆj4éubajÐjâubaubajÐj¢ ubj• )�r;é}r<é(jÅUjÒ}r=é(jÔ]jÕ]jÖ]j×]jÚ]ujÆj'éjÞ]r>éjò)�r?é}r@é(jÅX **Location**rAéjÆj;éjÎj·çjÐjõjÒ}rBé(jÔ]jÕ]jÖ]j×]jÚ]ujÜKDjÞ]rCéjÚ)�rDé}rEé(jÅjAéjÒ}rFé(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?éjÞ]rGéjçXLocationrHé…�rIé}rJé(jÅUjÆjDéubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�rKé}rLé(jÅUjÒ}rMé(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#éjÞ]rNé(j• )�rOé}rPé(jÅUjÒ}rQé(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKéjÞ]rRéjò)�rSé}rTé(jÅXAPI Reference ManualrUéjÆjOéjÎj·çjÐjõjÒ}rVé(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]rWéjçXAPI Reference ManualrXé…�rYé}rZé(jÅjUéjÆjSéubaubajÐj¢ ubj• )�r[é}r\é(jÅUjÒ}r]é(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKéjÞ]r^éjò)�r_é}r`é(jÅXO$(TI_PDK_INSTALL_DIR)/packages/ti /runtime/pktlib/docs/doxygen/html /index.htmlraéjÆj[éjÎj·çjÐjõjÒ}rbé(jÔ]jÕ]jÖ]j×]jÚ]ujÜKFjÞ]rcéjçXO$(TI_PDK_INSTALL_DIR)/packages/ti /runtime/pktlib/docs/doxygen/html /index.htmlrdé…�reé}rfé(jÅjaéjÆj_éubaubajÐj¢ ubejÐj£ ubj� )�rgé}rhé(jÅUjÒ}rié(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#éjÞ]rjé(j• )�rké}rlé(jÅUjÒ}rmé(jÔ]jÕ]jÖ]j×]jÚ]ujÆjgéjÞ]rnéjò)�roé}rpé(jÅX Release NotesrqéjÆjkéjÎj·çjÐjõjÒ}rré(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]rséjçX Release Notesrté…�rué}rvé(jÅjqéjÆjoéubaubajÐj¢ ubj• )�rwé}rxé(jÅUjÒ}ryé(jÔ]jÕ]jÖ]j×]jÚ]ujÆjgéjÞ]rzéjò)�r{é}r|é(jÅXO$(TI_PDK_INSTALL_DIR)/packages/ti /runtime/pktlib/docs/ReleaseNotes _pktlib.pdfr}éjÆjwéjÎj·çjÐjõjÒ}r~é(jÔ]jÕ]jÖ]j×]jÚ]ujÜKJjÞ]réjçXO$(TI_PDK_INSTALL_DIR)/packages/ti /runtime/pktlib/docs/ReleaseNotes _pktlib.pdfr€é…�r�é}r‚é(jÅj}éjÆj{éubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubjÎj·çjÐjlKjÒ}rƒé(j×]r„éj¡çajÖ]jÔ]r…éX introductionr†éajÕ]jÚ]ujÜNjÝhjÞ]r‡éjçX Introductionrˆé…�r‰é}rŠé(jÅj¤çjÆj¢çubaubjÞ]r‹éjò)�rŒé}r�é(jÅX/Duplicate explicit target name: "introduction".jÒ}rŽé(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�çjÞ]r�éjçX/Duplicate explicit target name: "introduction".r�é…�r‘é}r’é(jÅUjÆjŒéubajÐjõubajÐjv~ubjs~)�r“é}r”é(jÅUjÒ}r•é(jÔ]UlevelKj×]jÖ]r–éj‘èaUsourcejÏjÕ]jÚ]UlineKÇUtypej„~ujÆjŒèjÞ]r—éjò)�r˜é}r™é(jÅX*Duplicate implicit target name: "example".jÒ}ršé(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“éjÞ]r›éjçX*Duplicate implicit target name: "example".rœé…�r�é}ržé(jÅUjÆj˜éubajÐjõubajÐjv~ubjs~)�rŸé}r é(jÅUjÆj¥çjÎXVinternal padding after source/rtos/PDK_Platform_Software/Device_Drivers/PKTLIB.rst.incr¡éjÐjv~jÒ}r¢é(jÔ]UlevelKj×]jÖ]Usourcej·çjÕ]jÚ]UlineKOUtypejPÝujÜKQjÝhjÞ]r£é(jò)�r¤é}r¥é(jÅX;Content block expected for the "raw" directive; none found.jÒ}r¦é(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŸéjÞ]r§éjçX;Content block expected for the "raw" directive; none found.r¨é…�r©é}rªé(jÅUjÆj¤éubajÐjõubj)�r«é}r¬é(jÅX.. raw:: html jÒ}r­é(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjŸéjÞ]r®éjçX.. raw:: html r¯é…�r°é}r±é(jÅUjÆj«éubajÐjubeubjs~)�r²é}r³é(jÅUjÆjÇ)�r´é}rµé(jÅUjKjÆjÇ)�r¶é}r·é(jÅUjÆjÇ)�r¸é}r¹é(jÅUjÆhjÎjÏjÐjÑjÒ}rºé(jÔ]jÕ]jÖ]j×]r»éUnetworkr¼éajÚ]r½éh©aujÜKÌjÝhjÞ]r¾é(jà)�r¿é}rÀé(jÅXNetworkrÁéjÆj¸éjÎjÏjÐjäjÒ}rÂé(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÌjÝhjÞ]rÃéjçXNetworkrÄé…�rÅé}rÆé(jÅjÁéjÆj¿éubaubj¶éjÇ)�rÇé}rÈé(jÅUjÆj¸éjÎjÏjÐjÑjÒ}rÉé(jÔ]jÕ]jÖ]j×]rÊéUndkrËéajÚ]rÌéj…aujÜKÑjÝhjÞ]rÍé(jà)�rÎé}rÏé(jÅXNDKrÐéjÆjÇéjÎjÏjÐjäjÒ}rÑé(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÑjÝhjÞ]rÒéjçXNDKrÓé…�rÔé}rÕé(jÅjÐéjÆjÎéubaubj7)�rÖé}r×é(jÅX>http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_NDKjÆjÇéjÎj:XCsource/rtos/PDK_Platform_Software/Network_and_Transport/NDK.rst.incrØé…�rÙé}rÚébjÐj>jÒ}rÛé(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rÜéjçX>http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_NDKrÝé…�rÞé}rßé(jÅUjÆjÖéubaubjÇ)�ràé}ráé(jÅUjÆjÇéjÎjÙéjÐjÑjÒ}râé(jÔ]jÕ]jÖ]j×]rãéU ndk-overviewräéajÚ]råéhxaujÜKjÝhjÞ]ræé(jà)�rçé}rèé(jÅX NDK OverviewrééjÆjàéjÎjÙéjÐjäjÒ}rêé(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rëéjçX NDK Overviewrìé…�ríé}rîé(jÅjééjÆjçéubaubjò)�rïé}rðé(jÅX_The Network Development Kit (NDK) is a platform for development and demonstration of network enabled RTOS applications on TI processors and includes demonstration software showcasing capabilities across a range of network enabled applications. The NDK serves as a rapid prototype platform for the development of network and packet processing applications, or to add network connectivity to existing applications for communications, configuration, and control. Using the components provided in the NDK, developers can quickly move from development concepts to working implementations attached to the network.rñéjÆjàéjÎjÙéjÐjõjÒ}ròé(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]róéjçX_The Network Development Kit (NDK) is a platform for development and demonstration of network enabled RTOS applications on TI processors and includes demonstration software showcasing capabilities across a range of network enabled applications. The NDK serves as a rapid prototype platform for the development of network and packet processing applications, or to add network connectivity to existing applications for communications, configuration, and control. Using the components provided in the NDK, developers can quickly move from development concepts to working implementations attached to the network.rôé…�rõé}röé(jÅjñéjÆjïéubaubjò)�r÷é}røé(jÅXThe NDK provides an IPv6 and IPv4 compliant TCP/IP stack working with the TI-RTOS Kernel real-time operating system. Its primary focus is on providing the core Layer 3 and Layer 4 stack services along with additional higher-level network applications such as HTTP server and DHCP.rùéjÆjàéjÎjÙéjÐjõjÒ}rúé(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rûéjçXThe NDK provides an IPv6 and IPv4 compliant TCP/IP stack working with the TI-RTOS Kernel real-time operating system. Its primary focus is on providing the core Layer 3 and Layer 4 stack services along with additional higher-level network applications such as HTTP server and DHCP.rüé…�rýé}rþé(jÅjùéjÆj÷éubaubjò)�rÿé}rê(jÅX«The NDK itself does not include any platform or device specific software. The NDK interfaces through well-defined transport interface, Network Interface Management UNIT(NIMU) to the PDK and platform software elements needed for operation. NIMU support. NIMU provides an interface between the stack and the device drivers through which the stack can talk to multiple instances of a single or various device drivers concurrently.rêjÆjàéjÎjÙéjÐjõjÒ}rê(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rêjçX«The NDK itself does not include any platform or device specific software. The NDK interfaces through well-defined transport interface, Network Interface Management UNIT(NIMU) to the PDK and platform software elements needed for operation. NIMU support. NIMU provides an interface between the stack and the device drivers through which the stack can talk to multiple instances of a single or various device drivers concurrently.rê…�rê}rê(jÅjêjÆjÿéubaubjy )�rê}rê(jÅUjÆjàéjÎjÙéjÐjÔ jÒ}r ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r êj~ )�r ê}r ê(jÅUjÒ}r ê(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjêjÞ]rê(jƒ )�rê}rê(jÅUjÒ}rê(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj êjÞ]jÐj‡ ubjƒ )�rê}rê(jÅUjÒ}rê(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKGujÆj êjÞ]jÐj‡ ubj¥ )�rê}rê(jÅUjÒ}rê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj êjÞ]rê(j� )�rê}rê(jÅUjÒ}rê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêjÞ]rêj• )�rê}rê(jÅUjÒ}rê(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjêjÞ]r êjò)�r!ê}r"ê(jÅX#**Network Development Kit Summary**r#êjÆjêjÎjÙéjÐjõjÒ}r$ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r%êjÚ)�r&ê}r'ê(jÅj#êjÒ}r(ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj!êjÞ]r)êjçXNetwork Development Kit Summaryr*ê…�r+ê}r,ê(jÅUjÆj&êubajÐjâubaubajÐj¢ ubajÐj£ ubj� )�r-ê}r.ê(jÅUjÒ}r/ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêjÞ]r0ê(j• )�r1ê}r2ê(jÅUjÒ}r3ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj-êjÞ]r4êjò)�r5ê}r6ê(jÅX**Component Type**r7êjÆj1êjÎjÙéjÐjõjÒ}r8ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]r9êjÚ)�r:ê}r;ê(jÅj7êjÒ}r<ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5êjÞ]r=êjçXComponent Typer>ê…�r?ê}r@ê(jÅUjÆj:êubajÐjâubaubajÐj¢ ubj• )�rAê}rBê(jÅUjÒ}rCê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj-êjÞ]rDêjò)�rEê}rFê(jÅXLibraryrGêjÆjAêjÎjÙéjÐjõjÒ}rHê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]rIêjçXLibraryrJê…�rKê}rLê(jÅjGêjÆjEêubaubajÐj¢ ubejÐj£ ubj� )�rMê}rNê(jÅUjÒ}rOê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêjÞ]rPê(j• )�rQê}rRê(jÅUjÒ}rSê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjMêjÞ]rTêjò)�rUê}rVê(jÅX**Install Package**rWêjÆjQêjÎjÙéjÐjõjÒ}rXê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]rYêjÚ)�rZê}r[ê(jÅjWêjÒ}r\ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUêjÞ]r]êjçXInstall Packager^ê…�r_ê}r`ê(jÅUjÆjZêubajÐjâubaubajÐj¢ ubj• )�raê}rbê(jÅUjÒ}rcê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjMêjÞ]rdêjò)�reê}rfê(jÅXNDKrgêjÆjaêjÎjÙéjÐjõjÒ}rhê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]riêjçXNDKrjê…�rkê}rlê(jÅjgêjÆjeêubaubajÐj¢ ubejÐj£ ubj� )�rmê}rnê(jÅUjÒ}roê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêjÞ]rpê(j• )�rqê}rrê(jÅUjÒ}rsê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmêjÞ]rtêjò)�ruê}rvê(jÅX**Install Directory**rwêjÆjqêjÎjÙéjÐjõjÒ}rxê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÞ]ryêjÚ)�rzê}r{ê(jÅjwêjÒ}r|ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjuêjÞ]r}êjçXInstall Directoryr~ê…�rê}r€ê(jÅUjÆjzêubajÐjâubaubajÐj¢ ubj• )�r�ê}r‚ê(jÅUjÒ}rƒê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjmêjÞ]r„êjò)�r…ê}r†ê(jÅXndk_\packages\ti\ndkjÆj�êjÎjÙéjÐjõjÒ}r‡ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÞ]rˆêjçXndk_packagestindkr‰ê…�rŠê}r‹ê(jÅXndk_\packages\ti\ndkjÆj…êubaubajÐj¢ ubejÐj£ ubj� )�rŒê}r�ê(jÅUjÒ}rŽê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêjÞ]r�ê(j• )�r�ê}r‘ê(jÅUjÒ}r’ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒêjÞ]r“êjò)�r”ê}r•ê(jÅX**Project Type**r–êjÆj�êjÎjÙéjÐjõjÒ}r—ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]r˜êjÚ)�r™ê}ršê(jÅj–êjÒ}r›ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”êjÞ]rœêjçX Project Typer�ê…�ržê}rŸê(jÅUjÆj™êubajÐjâubaubajÐj¢ ubj• )�r ê}r¡ê(jÅUjÒ}r¢ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒêjÞ]r£êjò)�r¤ê}r¥ê(jÅX/`Eclipse RTSC `__r¦êjÆj êjÎjÙéjÐjõjÒ}r§ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]r¨êjû)�r©ê}rªê(jÅj¦êjÒ}r«ê(UnameX Eclipse RTSCjXhttp://www.eclipse.org/rtsc/j×]jÖ]jÔ]jÕ]jÚ]ujÆj¤êjÞ]r¬êjçX Eclipse RTSCr­ê…�r®ê}r¯ê(jÅUjÆj©êubajÐjÿubaubajÐj¢ ubejÐj£ ubj� )�r°ê}r±ê(jÅUjÒ}r²ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêjÞ]r³ê(j• )�r´ê}rµê(jÅUjÒ}r¶ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°êjÞ]r·êjò)�r¸ê}r¹ê(jÅX**Endian Support**rºêjÆj´êjÎjÙéjÐjõjÒ}r»ê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]r¼êjÚ)�r½ê}r¾ê(jÅjºêjÒ}r¿ê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸êjÞ]rÀêjçXEndian SupportrÁê…�rÂê}rÃê(jÅUjÆj½êubajÐjâubaubajÐj¢ ubj• )�rÄê}rÅê(jÅUjÒ}rÆê(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°êjÞ]rÇêjò)�rÈê}rÉê(jÅXLittlerÊêjÆjÄêjÎjÙéjÐjõjÒ}rËê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]rÌêjçXLittlerÍê…�rÎê}rÏê(jÅjÊêjÆjÈêubaubajÐj¢ ubejÐj£ ubj� )�rÐê}rÑê(jÅUjÒ}rÒê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêjÞ]rÓê(j• )�rÔê}rÕê(jÅUjÒ}rÖê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐêjÞ]r×êjò)�rØê}rÙê(jÅX**Library Name**rÚêjÆjÔêjÎjÙéjÐjõjÒ}rÛê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÞ]rÜêjÚ)�rÝê}rÞê(jÅjÚêjÒ}rßê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjØêjÞ]ràêjçX Library Nameráê…�râê}rãê(jÅUjÆjÝêubajÐjâubaubajÐj¢ ubj• )�räê}råê(jÅUjÒ}ræê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐêjÞ]rçêjò)�rèê}réê(jÅX‰For details of the libraries delivered as part of the NDK component, please refer to `[1] `__jÆjäêjÎjÙéjÐjõjÒ}rêê(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÞ]rëê(jçXUFor details of the libraries delivered as part of the NDK component, please refer to rìê…�ríê}rîê(jÅXUFor details of the libraries delivered as part of the NDK component, please refer to jÆjèêubjû)�rïê}rðê(jÅX4`[1] `__jÒ}rñê(UnameX[1]jX*http://www-s.ti.com/sc/techlit/spru523.pdfj×]jÖ]jÔ]jÕ]jÚ]ujÆjèêjÞ]ròêjçX[1]róê…�rôê}rõê(jÅUjÆjïêubajÐjÿubeubajÐj¢ ubejÐj£ ubj� )�röê}r÷ê(jÅUjÒ}røê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêjÞ]rùê(j• )�rúê}rûê(jÅUjÒ}rüê(jÔ]jÕ]jÖ]j×]jÚ]ujÆjöêjÞ]rýêjò)�rþê}rÿê(jÅX**Library Path**rëjÆjúêjÎjÙéjÐjõjÒ}rë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rëjÚ)�rë}rë(jÅjëjÒ}rë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþêjÞ]rëjçX Library Pathrë…�rë}r ë(jÅUjÆjëubajÐjâubaubajÐj¢ ubj• )�r ë}r ë(jÅUjÒ}r ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjöêjÞ]r ëjò)�rë}rë(jÅX"$(NDK_INSTALL_DIR)\packages\ti\ndkjÆj ëjÎjÙéjÐjõjÒ}rë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK.jÞ]rëjçX$(NDK_INSTALL_DIR)packagestindkrë…�rë}rë(jÅX"$(NDK_INSTALL_DIR)\packages\ti\ndkjÆjëubaubajÐj¢ ubejÐj£ ubj� )�rë}rë(jÅUjÒ}rë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêjÞ]rë(j• )�rë}rë(jÅUjÒ}rë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëjÞ]rëjò)�rë}rë(jÅX**Include Paths**rëjÆjëjÎjÙéjÐjõjÒ}r ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]r!ëjÚ)�r"ë}r#ë(jÅjëjÒ}r$ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëjÞ]r%ëjçX Include Pathsr&ë…�r'ë}r(ë(jÅUjÆj"ëubajÐjâubaubajÐj¢ ubj• )�r)ë}r*ë(jÅUjÒ}r+ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëjÞ]r,ëjò)�r-ë}r.ë(jÅX»NDK_INSTALL_DIR is set automatically by CCS based on the version of NDK you have checked to build with. ${NDK_INSTALL_DIR}\packages\ti\ndk\inc ${NDK_INSTALL_DIR}\packages\ti\ndk\inc\toolsjÆj)ëjÎjÙéjÐjõjÒ}r/ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÞ]r0ëjçX²NDK_INSTALL_DIR is set automatically by CCS based on the version of NDK you have checked to build with. ${NDK_INSTALL_DIR}packagestindkinc ${NDK_INSTALL_DIR}packagestindkinctoolsr1ë…�r2ë}r3ë(jÅX»NDK_INSTALL_DIR is set automatically by CCS based on the version of NDK you have checked to build with. ${NDK_INSTALL_DIR}\packages\ti\ndk\inc ${NDK_INSTALL_DIR}\packages\ti\ndk\inc\toolsjÆj-ëubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjc)�r4ë}r5ë(jÅUjÆjàéjÎjÙéjÐjfjÒ}r6ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÝhjÞ]r7ëji)�r8ë}r9ë(jÅUjlKjÆj4ëjÎjÙéjÐjÜjÒ}r:ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�r;ë}r<ë(jÅUjÆjÇéjÎjÙéjÐjÑjÒ}r=ë(jÔ]jÕ]jÖ]j×]r>ëUnimu-transportr?ëajÚ]r@ëjQaujÜK9jÝhjÞ]rAë(jà)�rBë}rCë(jÅXNIMU TransportrDëjÆj;ëjÎjÙéjÐjäjÒ}rEë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK9jÝhjÞ]rFëjçXNIMU TransportrGë…�rHë}rIë(jÅjDëjÆjBëubaubjò)�rJë}rKë(jÅXŒThe NDK transport component of the PDK currently provided 2 implementations for the NIMU layer as described in the sections below. The following diagram is a high level depiction of the NDK/NIMU architecture with reference to the NIMU implementations. For details for the NDK/NIMU architecture, please refer to NDK Programmer's Reference Guide `[2] `__jÆj;ëjÎjÙéjÐjõjÒ}rLë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÝhjÞ]rMë(jçXXThe NDK transport component of the PDK currently provided 2 implementations for the NIMU layer as described in the sections below. The following diagram is a high level depiction of the NDK/NIMU architecture with reference to the NIMU implementations. For details for the NDK/NIMU architecture, please refer to NDK Programmer's Reference Guide rNë…�rOë}rPë(jÅXXThe NDK transport component of the PDK currently provided 2 implementations for the NIMU layer as described in the sections below. The following diagram is a high level depiction of the NDK/NIMU architecture with reference to the NIMU implementations. For details for the NDK/NIMU architecture, please refer to NDK Programmer's Reference Guide jÆjJëubjû)�rQë}rRë(jÅX4`[2] `__jÒ}rSë(UnameX[2]jX*http://www-s.ti.com/sc/techlit/spru524.pdfj×]jÖ]jÔ]jÕ]jÚ]ujÆjJëjÞ]rTëjçX[2]rUë…�rVë}rWë(jÅUjÆjQëubajÐjÿubeubjR)�rXë}rYë(jÅX".. Image:: ../images/NDK_ARCH.png jÆj;ëjÎjÙéjÐjZjÒ}rZë(UuriXrtos/../images/NDK_ARCH.pngr[ëj×]jÖ]jÔ]jÕ]jX}r\ëU*j[ësjÚ]ujÜKCjÝhjÞ]ubeubjÇ)�r]ë}r^ë(jÅUjÆjÇéjÎjÙéjÐjÑjÒ}r_ë(jÔ]jÕ]jÖ]j×]r`ëU nimu-for-cpswraëajÚ]rbëhZaujÜKEjÝhjÞ]rcë(jà)�rdë}reë(jÅX NIMU for CPSWrfëjÆj]ëjÎjÙéjÐjäjÒ}rgë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKEjÝhjÞ]rhëjçX NIMU for CPSWrië…�rjë}rkë(jÅjfëjÆjdëubaubjò)�rlë}rmë(jÅXyNIMU for CPSW provides a common CPSW interface library for NDK to communicate with when network stack is being implemented in the TI's Common Platform Ethernet Switch for ethernet packet processing. The library uses the CSL-R based API interfaces to provide NIMU interface for NDK. This package has NDK unit test examples for all supported EVMS as indicated in the table above.rnëjÆj]ëjÎjÙéjÐjõjÒ}roë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKGjÝhjÞ]rpëjçXyNIMU for CPSW provides a common CPSW interface library for NDK to communicate with when network stack is being implemented in the TI's Common Platform Ethernet Switch for ethernet packet processing. The library uses the CSL-R based API interfaces to provide NIMU interface for NDK. This package has NDK unit test examples for all supported EVMS as indicated in the table above.rqë…�rrë}rsë(jÅjnëjÆjlëubaubjë)�rtë}ruë(jÅXgThis module is only intended to be used with NDK. As such, users should not tie up to its API directly.jÆj]ëjÎjÙéjÐjïjÒ}rvë(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rwëjò)�rxë}ryë(jÅXgThis module is only intended to be used with NDK. As such, users should not tie up to its API directly.rzëjÆjtëjÎjÙéjÐjõjÒ}r{ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKPjÞ]r|ëjçXgThis module is only intended to be used with NDK. As such, users should not tie up to its API directly.r}ë…�r~ë}rë(jÅjzëjÆjxëubaubaubjy )�r€ë}r�ë(jÅUjÆj]ëjÎjÙéjÐjÔ jÒ}r‚ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rƒëj~ )�r„ë}r…ë(jÅUjÒ}r†ë(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj€ëjÞ]r‡ë(jƒ )�rˆë}r‰ë(jÅUjÒ}rŠë(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj„ëjÞ]jÐj‡ ubjƒ )�r‹ë}rŒë(jÅUjÒ}r�ë(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKGujÆj„ëjÞ]jÐj‡ ubj¥ )�rŽë}r�ë(jÅUjÒ}r�ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆj„ëjÞ]r‘ë(j� )�r’ë}r“ë(jÅUjÒ}r”ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽëjÞ]r•ëj• )�r–ë}r—ë(jÅUjÒ}r˜ë(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆj’ëjÞ]r™ëjò)�ršë}r›ë(jÅX**NIMU for CPSW Summary**rœëjÆj–ëjÎjÙéjÐjõjÒ}r�ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÞ]ržëjÚ)�rŸë}r ë(jÅjœëjÒ}r¡ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjšëjÞ]r¢ëjçXNIMU for CPSW Summaryr£ë…�r¤ë}r¥ë(jÅUjÆjŸëubajÐjâubaubajÐj¢ ubajÐj£ ubj� )�r¦ë}r§ë(jÅUjÒ}r¨ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽëjÞ]r©ë(j• )�rªë}r«ë(jÅUjÒ}r¬ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦ëjÞ]r­ëjò)�r®ë}r¯ë(jÅX**Component Type**r°ëjÆjªëjÎjÙéjÐjõjÒ}r±ë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKWjÞ]r²ëjÚ)�r³ë}r´ë(jÅj°ëjÒ}rµë(jÔ]jÕ]jÖ]j×]jÚ]ujÆj®ëjÞ]r¶ëjçXComponent Typer·ë…�r¸ë}r¹ë(jÅUjÆj³ëubajÐjâubaubajÐj¢ ubj• )�rºë}r»ë(jÅUjÒ}r¼ë(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦ëjÞ]r½ëjò)�r¾ë}r¿ë(jÅXLibraryrÀëjÆjºëjÎjÙéjÐjõjÒ}rÁë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKWjÞ]rÂëjçXLibraryrÃë…�rÄë}rÅë(jÅjÀëjÆj¾ëubaubajÐj¢ ubejÐj£ ubj� )�rÆë}rÇë(jÅUjÒ}rÈë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽëjÞ]rÉë(j• )�rÊë}rËë(jÅUjÒ}rÌë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆëjÞ]rÍëjò)�rÎë}rÏë(jÅX**Install Package**rÐëjÆjÊëjÎjÙéjÐjõjÒ}rÑë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÞ]rÒëjÚ)�rÓë}rÔë(jÅjÐëjÒ}rÕë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÎëjÞ]rÖëjçXInstall Packager×ë…�rØë}rÙë(jÅUjÆjÓëubajÐjâubaubajÐj¢ ubj• )�rÚë}rÛë(jÅUjÒ}rÜë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆëjÞ]rÝëjò)�rÞë}rßë(jÅXPDKràëjÆjÚëjÎjÙéjÐjõjÒ}ráë(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÞ]râëjçXPDKrãë…�räë}råë(jÅjàëjÆjÞëubaubajÐj¢ ubejÐj£ ubj� )�ræë}rçë(jÅUjÒ}rèë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽëjÞ]réë(j• )�rêë}rëë(jÅUjÒ}rìë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjæëjÞ]ríëjò)�rîë}rïë(jÅX**Install Directory**rðëjÆjêëjÎjÙéjÐjõjÒ}rñë(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÞ]ròëjÚ)�róë}rôë(jÅjðëjÒ}rõë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjîëjÞ]röëjçXInstall Directoryr÷ë…�røë}rùë(jÅUjÆjóëubajÐjâubaubajÐj¢ ubj• )�rúë}rûë(jÅUjÒ}rüë(jÔ]jÕ]jÖ]j×]jÚ]ujÆjæëjÞ]rýëjò)�rþë}rÿë(jÅX4$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimurìjÆjúëjÎjÙéjÐjõjÒ}rì(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÞ]rìjçX4$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimurì…�rì}rì(jÅjìjÆjþëubaubajÐj¢ ubejÐj£ ubj� )�rì}rì(jÅUjÒ}rì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽëjÞ]r ì(j• )�r ì}r ì(jÅUjÒ}r ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjìjÞ]r ìjò)�rì}rì(jÅX**Project Type**rìjÆj ìjÎjÙéjÐjõjÒ}rì(jÔ]jÕ]jÖ]j×]jÚ]ujÜK]jÞ]rìjÚ)�rì}rì(jÅjìjÒ}rì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjìjÞ]rìjçX Project Typerì…�rì}rì(jÅUjÆjìubajÐjâubaubajÐj¢ ubj• )�rì}rì(jÅUjÒ}rì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjìjÞ]rìjò)�rì}rì(jÅX/`Eclipse RTSC `__r ìjÆjìjÎjÙéjÐjõjÒ}r!ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜK]jÞ]r"ìjû)�r#ì}r$ì(jÅj ìjÒ}r%ì(UnameX Eclipse RTSCjXhttp://www.eclipse.org/rtsc/j×]jÖ]jÔ]jÕ]jÚ]ujÆjìjÞ]r&ìjçX Eclipse RTSCr'ì…�r(ì}r)ì(jÅUjÆj#ìubajÐjÿubaubajÐj¢ ubejÐj£ ubj� )�r*ì}r+ì(jÅUjÒ}r,ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽëjÞ]r-ì(j• )�r.ì}r/ì(jÅUjÒ}r0ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*ìjÞ]r1ìjò)�r2ì}r3ì(jÅX**Endian Support**r4ìjÆj.ìjÎjÙéjÐjõjÒ}r5ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜK_jÞ]r6ìjÚ)�r7ì}r8ì(jÅj4ìjÒ}r9ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆj2ìjÞ]r:ìjçXEndian Supportr;ì…�r<ì}r=ì(jÅUjÆj7ìubajÐjâubaubajÐj¢ ubj• )�r>ì}r?ì(jÅUjÒ}r@ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*ìjÞ]rAìjò)�rBì}rCì(jÅXLittlerDìjÆj>ìjÎjÙéjÐjõjÒ}rEì(jÔ]jÕ]jÖ]j×]jÚ]ujÜK_jÞ]rFìjçXLittlerGì…�rHì}rIì(jÅjDìjÆjBìubaubajÐj¢ ubejÐj£ ubj� )�rJì}rKì(jÅUjÒ}rLì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽëjÞ]rMì(j• )�rNì}rOì(jÅUjÒ}rPì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJìjÞ]rQìjò)�rRì}rSì(jÅX**Library Path**rTìjÆjNìjÎjÙéjÐjõjÒ}rUì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÞ]rVìjÚ)�rWì}rXì(jÅjTìjÒ}rYì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjRìjÞ]rZìjçX Library Pathr[ì…�r\ì}r]ì(jÅUjÆjWìubajÐjâubaubajÐj¢ ubj• )�r^ì}r_ì(jÅUjÒ}r`ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjJìjÞ]raìjò)�rbì}rcì(jÅX8$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/librdìjÆj^ìjÎjÙéjÐjõjÒ}reì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÞ]rfìjçX8$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/librgì…�rhì}riì(jÅjdìjÆjbìubaubajÐj¢ ubejÐj£ ubj� )�rjì}rkì(jÅUjÒ}rlì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŽëjÞ]rmì(j• )�rnì}roì(jÅUjÒ}rpì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjìjÞ]rqìjò)�rrì}rsì(jÅX**Reference Guides**rtìjÆjnìjÎjÙéjÐjõjÒ}ruì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKcjÞ]rvìjÚ)�rwì}rxì(jÅjtìjÒ}ryì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjrìjÞ]rzìjçXReference Guidesr{ì…�r|ì}r}ì(jÅUjÆjwìubajÐjâubaubajÐj¢ ubj• )�r~ì}rì(jÅUjÒ}r€ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjìjÞ]r�ìjò)�r‚ì}rƒì(jÅXNoner„ìjÆj~ìjÎjÙéjÐjõjÒ}r…ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKcjÞ]r†ìjçXNoner‡ì…�rˆì}r‰ì(jÅj„ìjÆj‚ìubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjc)�rŠì}r‹ì(jÅUjÆj]ëjÎjÙéjÐjfjÒ}rŒì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKfjÝhjÞ]r�ìji)�rŽì}r�ì(jÅUjlKjÆjŠìjÎjÙéjÐjÜjÒ}r�ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�r‘ì}r’ì(jÅUjÆjÇéjÎjÙéjÐjÑjÒ}r“ì(jÔ]jÕ]jÖ]j×]r”ìU nimu-for-icssr•ìajÚ]r–ìh…aujÜKijÝhjÞ]r—ì(jà)�r˜ì}r™ì(jÅX NIMU for ICSSršìjÆj‘ìjÎjÙéjÐjäjÒ}r›ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKijÝhjÞ]rœìjçX NIMU for ICSSr�ì…�ržì}rŸì(jÅjšìjÆj˜ìubaubjò)�r ì}r¡ì(jÅXXNIMU for ICSS (PRU-ICSS is Programmable Real-Time Unit Industrial Communications Subsystem) provides a common PRU-ICSS interface library for NDK to communicate with when network stack is being implemented in the PRU-ICSS subsytem for ethernet packet processing (firmware based switch running on PRU's which are part of the ICSS). The library used the ICSS_EMAC LLD to provide NIMU interface for NDK. This package has NDK unit test examples for all supported Devices as indicated in the table above. For details of the PRU-ICSS, please refer to `ICCS-EMAC `__.jÆj‘ìjÎjÙéjÐjõjÒ}r¢ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKkjÝhjÞ]r£ì(jçX NIMU for ICSS (PRU-ICSS is Programmable Real-Time Unit Industrial Communications Subsystem) provides a common PRU-ICSS interface library for NDK to communicate with when network stack is being implemented in the PRU-ICSS subsytem for ethernet packet processing (firmware based switch running on PRU's which are part of the ICSS). The library used the ICSS_EMAC LLD to provide NIMU interface for NDK. This package has NDK unit test examples for all supported Devices as indicated in the table above. For details of the PRU-ICSS, please refer to r¤ì…�r¥ì}r¦ì(jÅX NIMU for ICSS (PRU-ICSS is Programmable Real-Time Unit Industrial Communications Subsystem) provides a common PRU-ICSS interface library for NDK to communicate with when network stack is being implemented in the PRU-ICSS subsytem for ethernet packet processing (firmware based switch running on PRU's which are part of the ICSS). The library used the ICSS_EMAC LLD to provide NIMU interface for NDK. This package has NDK unit test examples for all supported Devices as indicated in the table above. For details of the PRU-ICSS, please refer to jÆj ìubjû)�r§ì}r¨ì(jÅX7`ICCS-EMAC `__jÒ}r©ì(UnameX ICCS-EMACjX'/index.php/Processor_SDK_RTOS_ICSS-EMACj×]jÖ]jÔ]jÕ]jÚ]ujÆj ìjÞ]rªìjçX ICCS-EMACr«ì…�r¬ì}r­ì(jÅUjÆj§ìubajÐjÿubjçX.…�r®ì}r¯ì(jÅX.jÆj ìubeubjc)�r°ì}r±ì(jÅUjÆj‘ìjÎjÙéjÐjfjÒ}r²ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKujÝhjÞ]r³ìji)�r´ì}rµì(jÅX™**Note**: This module is only intended to be used with NDK and requires ICSS-EMAC low level driver. As such, users should not tie up to its API directly.jlKjÆj°ìjÎjÙéjÐjÜjÒ}r¶ì(jÔ]jÕ]jÖ]j×]jÚ]ujÜKwjÝhjÞ]r·ì(jÚ)�r¸ì}r¹ì(jÅX**Note**jÒ}rºì(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´ìjÞ]r»ìjçXNoter¼ì…�r½ì}r¾ì(jÅUjÆj¸ìubajÐjâubjçX‘: This module is only intended to be used with NDK and requires ICSS-EMAC low level driver. As such, users should not tie up to its API directly.r¿ì…�rÀì}rÁì(jÅX‘: This module is only intended to be used with NDK and requires ICSS-EMAC low level driver. As such, users should not tie up to its API directly.jÆj´ìubeubaubjy )�rÂì}rÃì(jÅUjÆj‘ìjÎjÙéjÐjÔ jÒ}rÄì(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÅìj~ )�rÆì}rÇì(jÅUjÒ}rÈì(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjÂìjÞ]rÉì(jƒ )�rÊì}rËì(jÅUjÒ}rÌì(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÆìjÞ]jÐj‡ ubjƒ )�rÍì}rÎì(jÅUjÒ}rÏì(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKGujÆjÆìjÞ]jÐj‡ ubj¥ )�rÐì}rÑì(jÅUjÒ}rÒì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆìjÞ]rÓì(j� )�rÔì}rÕì(jÅUjÒ}rÖì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐìjÞ]r×ìj• )�rØì}rÙì(jÅUjÒ}rÚì(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjÔìjÞ]rÛìjò)�rÜì}rÝì(jÅX**NIMU for ICSS Summary**rÞìjÆjØìjÎjÙéjÐjõjÒ}rßì(jÔ]jÕ]jÖ]j×]jÚ]ujÜK{jÞ]ràìjÚ)�ráì}râì(jÅjÞìjÒ}rãì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÜìjÞ]räìjçXNIMU for ICSS Summaryråì…�ræì}rçì(jÅUjÆjáìubajÐjâubaubajÐj¢ ubajÐj£ ubj� )�rèì}réì(jÅUjÒ}rêì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐìjÞ]rëì(j• )�rìì}ríì(jÅUjÒ}rîì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjèìjÞ]rïìjò)�rðì}rñì(jÅX**Component Type**ròìjÆjììjÎjÙéjÐjõjÒ}róì(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]rôìjÚ)�rõì}röì(jÅjòìjÒ}r÷ì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðìjÞ]røìjçXComponent Typerùì…�rúì}rûì(jÅUjÆjõìubajÐjâubaubajÐj¢ ubj• )�rüì}rýì(jÅUjÒ}rþì(jÔ]jÕ]jÖ]j×]jÚ]ujÆjèìjÞ]rÿìjò)�rí}rí(jÅXLibraryríjÆjüìjÎjÙéjÐjõjÒ}rí(jÔ]jÕ]jÖ]j×]jÚ]ujÜK}jÞ]ríjçXLibraryrí…�rí}rí(jÅjíjÆjíubaubajÐj¢ ubejÐj£ ubj� )�rí}r í(jÅUjÒ}r í(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐìjÞ]r í(j• )�r í}r í(jÅUjÒ}rí(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíjÞ]ríjò)�rí}rí(jÅX**Install Package**ríjÆj íjÎjÙéjÐjõjÒ}rí(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ríjÚ)�rí}rí(jÅjíjÒ}rí(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíjÞ]ríjçXInstall Packagerí…�rí}rí(jÅUjÆjíubajÐjâubaubajÐj¢ ubj• )�rí}rí(jÅUjÒ}rí(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíjÞ]ríjò)�r í}r!í(jÅXPDKr"íjÆjíjÎjÙéjÐjõjÒ}r#í(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r$íjçXPDKr%í…�r&í}r'í(jÅj"íjÆj íubaubajÐj¢ ubejÐj£ ubj� )�r(í}r)í(jÅUjÒ}r*í(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐìjÞ]r+í(j• )�r,í}r-í(jÅUjÒ}r.í(jÔ]jÕ]jÖ]j×]jÚ]ujÆj(íjÞ]r/íjò)�r0í}r1í(jÅX**Install Directory**r2íjÆj,íjÎjÙéjÐjõjÒ}r3í(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]r4íjÚ)�r5í}r6í(jÅj2íjÒ}r7í(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0íjÞ]r8íjçXInstall Directoryr9í…�r:í}r;í(jÅUjÆj5íubajÐjâubaubajÐj¢ ubj• )�r<í}r=í(jÅUjÒ}r>í(jÔ]jÕ]jÖ]j×]jÚ]ujÆj(íjÞ]r?íjò)�r@í}rAí(jÅX9$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icssrBíjÆj<íjÎjÙéjÐjõjÒ}rCí(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rDíjçX9$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icssrEí…�rFí}rGí(jÅjBíjÆj@íubaubajÐj¢ ubejÐj£ ubj� )�rHí}rIí(jÅUjÒ}rJí(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐìjÞ]rKí(j• )�rLí}rMí(jÅUjÒ}rNí(jÔ]jÕ]jÖ]j×]jÚ]ujÆjHíjÞ]rOíjò)�rPí}rQí(jÅX**Project Type**rRíjÆjLíjÎjÙéjÐjõjÒ}rSí(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÞ]rTíjÚ)�rUí}rVí(jÅjRíjÒ}rWí(jÔ]jÕ]jÖ]j×]jÚ]ujÆjPíjÞ]rXíjçX Project TyperYí…�rZí}r[í(jÅUjÆjUíubajÐjâubaubajÐj¢ ubj• )�r\í}r]í(jÅUjÒ}r^í(jÔ]jÕ]jÖ]j×]jÚ]ujÆjHíjÞ]r_íjò)�r`í}raí(jÅX/`Eclipse RTSC `__rbíjÆj\íjÎjÙéjÐjõjÒ}rcí(jÔ]jÕ]jÖ]j×]jÚ]ujÜKƒjÞ]rdíjû)�reí}rfí(jÅjbíjÒ}rgí(UnameX Eclipse RTSCjXhttp://www.eclipse.org/rtsc/j×]jÖ]jÔ]jÕ]jÚ]ujÆj`íjÞ]rhíjçX Eclipse RTSCrií…�rjí}rkí(jÅUjÆjeíubajÐjÿubaubajÐj¢ ubejÐj£ ubj� )�rlí}rmí(jÅUjÒ}rní(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐìjÞ]roí(j• )�rpí}rqí(jÅUjÒ}rrí(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlíjÞ]rsíjò)�rtí}ruí(jÅX**Endian Support**rvíjÆjpíjÎjÙéjÐjõjÒ}rwí(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÞ]rxíjÚ)�ryí}rzí(jÅjvíjÒ}r{í(jÔ]jÕ]jÖ]j×]jÚ]ujÆjtíjÞ]r|íjçXEndian Supportr}í…�r~í}rí(jÅUjÆjyíubajÐjâubaubajÐj¢ ubj• )�r€í}r�í(jÅUjÒ}r‚í(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlíjÞ]rƒíjò)�r„í}r…í(jÅXLittler†íjÆj€íjÎjÙéjÐjõjÒ}r‡í(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÞ]rˆíjçXLittler‰í…�rŠí}r‹í(jÅj†íjÆj„íubaubajÐj¢ ubejÐj£ ubj� )�rŒí}r�í(jÅUjÒ}rŽí(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐìjÞ]r�í(j• )�r�í}r‘í(jÅUjÒ}r’í(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒíjÞ]r“íjò)�r”í}r•í(jÅX**Library Path**r–íjÆj�íjÎjÙéjÐjõjÒ}r—í(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÞ]r˜íjÚ)�r™í}rší(jÅj–íjÒ}r›í(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”íjÞ]rœíjçX Library Pathr�í…�rží}rŸí(jÅUjÆj™íubajÐjâubaubajÐj¢ ubj• )�r í}r¡í(jÅUjÒ}r¢í(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒíjÞ]r£íjò)�r¤í}r¥í(jÅX=$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/libr¦íjÆj íjÎjÙéjÐjõjÒ}r§í(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‡jÞ]r¨íjçX=$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/libr©í…�rªí}r«í(jÅj¦íjÆj¤íubaubajÐj¢ ubejÐj£ ubj� )�r¬í}r­í(jÅUjÒ}r®í(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐìjÞ]r¯í(j• )�r°í}r±í(jÅUjÒ}r²í(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬íjÞ]r³íjò)�r´í}rµí(jÅX**Reference Guides**r¶íjÆj°íjÎjÙéjÐjõjÒ}r·í(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‰jÞ]r¸íjÚ)�r¹í}rºí(jÅj¶íjÒ}r»í(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´íjÞ]r¼íjçXReference Guidesr½í…�r¾í}r¿í(jÅUjÆj¹íubajÐjâubaubajÐj¢ ubj• )�rÀí}rÁí(jÅUjÒ}rÂí(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¬íjÞ]rÃíjò)�rÄí}rÅí(jÅXNonerÆíjÆjÀíjÎjÙéjÐjõjÒ}rÇí(jÔ]jÕ]jÖ]j×]jÚ]ujÜK‰jÞ]rÈíjçXNonerÉí…�rÊí}rËí(jÅjÆíjÆjÄíubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjc)�rÌí}rÍí(jÅUjÆj‘ìjÎjÙéjÐjfjÒ}rÎí(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŒjÝhjÞ]rÏíji)�rÐí}rÑí(jÅUjlKjÆjÌíjÎjÙéjÐjÜjÒ}rÒí(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�rÓí}rÔí(jÅUjKjÆjÇéjÎjÙéjÐjÑjÒ}rÕí(jÔ]rÖíjqRajÕ]jÖ]j×]r×íUid140rØíajÚ]ujÜK�jÝhjÞ]rÙí(jà)�rÚí}rÛí(jÅXExamplesrÜíjÆjÓíjÎjÙéjÐjäjÒ}rÝí(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rÞíjçXExamplesrßí…�ràí}ráí(jÅjÜíjÆjÚíubaubjÇ)�râí}rãí(jÅUjÆjÓíjÎjÙéjÐjÑjÒ}räí(jÔ]jÕ]jÖ]j×]råíU ping-exampleræíajÚ]rçíh/aujÜK’jÝhjÞ]rèí(jà)�réí}rêí(jÅX PING ExamplerëíjÆjâíjÎjÙéjÐjäjÒ}rìí(jÔ]jÕ]jÖ]j×]jÚ]ujÜK’jÝhjÞ]rííjçX PING Examplerîí…�rïí}rðí(jÅjëíjÆjéíubaubjò)�rñí}ròí(jÅXMAll NDK examples using CPSW interface can be found at the following location:róíjÆjâíjÎjÙéjÐjõjÒ}rôí(jÔ]jÕ]jÖ]j×]jÚ]ujÜK”jÝhjÞ]rõíjçXMAll NDK examples using CPSW interface can be found at the following location:röí…�r÷í}røí(jÅjóíjÆjñíubaubjt)�rùí}rúí(jÅUjÆjâíjÎjÙéjÐjwjÒ}rûí(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK—jÝhjÞ]rüíj{)�rýí}rþí(jÅX=$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/example jÆjùíjÎjÙéjÐjjÒ}rÿí(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rîjò)�rî}rî(jÅX<$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/examplerîjÆjýíjÎjÙéjÐjõjÒ}rî(jÔ]jÕ]jÖ]j×]jÚ]ujÜK—jÞ]rîjçX<$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/examplerî…�rî}rî(jÅjîjÆjîubaubaubaubjò)�r î}r î(jÅXQAll NDK examples using PRU-ICSS interface can be found at the following location:r îjÆjâíjÎjÙéjÐjõjÒ}r î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK™jÝhjÞ]r îjçXQAll NDK examples using PRU-ICSS interface can be found at the following location:rî…�rî}rî(jÅj îjÆj îubaubjt)�rî}rî(jÅUjÆjâíjÎjÙéjÐjwjÒ}rî(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKœjÝhjÞ]rîj{)�rî}rî(jÅXB$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/example jÆjîjÎjÙéjÐjjÒ}rî(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rîjò)�rî}rî(jÅXA$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/examplerîjÆjîjÎjÙéjÐjõjÒ}rî(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÞ]rîjçXA$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/examplerî…�rî}r î(jÅjîjÆjîubaubaubaubjÇ)�r!î}r"î(jÅUjÆjâíjÎjÙéjÐjÑjÒ}r#î(jÔ]jÕ]jÖ]j×]r$îUbuilding-the-ndk-examplesr%îajÚ]r&îj¥aujÜKŸjÝhjÞ]r'î(jà)�r(î}r)î(jÅXBuilding the NDK examplesr*îjÆj!îjÎjÙéjÐjäjÒ}r+î(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŸjÝhjÞ]r,îjçXBuilding the NDK examplesr-î…�r.î}r/î(jÅj*îjÆj(îubaubjc)�r0î}r1î(jÅUjÆj!îjÎjÙéjÐjfjÒ}r2î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÝhjÞ]r3î(ji)�r4î}r5î(jÅXRUse pdkProjectCreate.sh for Linux environment or pdkProjectCreate.bat for Windows.r6îjlKjÆj0îjÎjÙéjÐjÜjÒ}r7î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¢jÝhjÞ]r8îjçXRUse pdkProjectCreate.sh for Linux environment or pdkProjectCreate.bat for Windows.r9î…�r:î}r;î(jÅj6îjÆj4îubaubji)�r<î}r=î(jÅXˆThis can be found under the /packages folder. The only modification to these scripts, if any, is to update the CCS_INSTALL_PATH variable to point to CCS location if its not in the c:/ti/ccsv6 directory . Please refer to `Rebuilding PDK `__ for details of example project creation and how to run the example projects using CCS.jlKjÆj0îjÎjÙéjÐjÜjÒ}r>î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¨jÝhjÞ]r?î(jçXáThis can be found under the /packages folder. The only modification to these scripts, if any, is to update the CCS_INSTALL_PATH variable to point to CCS location if its not in the c:/ti/ccsv6 directory . Please refer to r@î…�rAî}rBî(jÅXáThis can be found under the /packages folder. The only modification to these scripts, if any, is to update the CCS_INSTALL_PATH variable to point to CCS location if its not in the c:/ti/ccsv6 directory . Please refer to jÆj<îubjû)�rCî}rDî(jÅXP`Rebuilding PDK `__jÒ}rEî(UnameXRebuilding PDKjX;index_how_to_guides.html#rebuild-drivers-from-pdk-directoryj×]jÖ]jÔ]jÕ]jÚ]ujÆj<îjÞ]rFîjçXRebuilding PDKrGî…�rHî}rIî(jÅUjÆjCîubajÐjÿubjçXW for details of example project creation and how to run the example projects using CCS.rJî…�rKî}rLî(jÅXW for details of example project creation and how to run the example projects using CCS.jÆj<îubeubeubeubjÇ)�rMî}rNî(jÅUjÆjâíjÎjÙéjÐjÑjÒ}rOî(jÔ]jÕ]jÖ]j×]rPîUndk-example-descriptionrQîajÚ]rRîjƒaujÜK«jÝhjÞ]rSî(jà)�rTî}rUî(jÅXNDK Example DescriptionrVîjÆjMîjÎjÙéjÐjäjÒ}rWî(jÔ]jÕ]jÖ]j×]jÚ]ujÜK«jÝhjÞ]rXîjçXNDK Example DescriptionrYî…�rZî}r[î(jÅjVîjÆjTîubaubjò)�r\î}r]î(jÅXìFor each EVM Type supported, there is a example which demonstates "ping" use case. Once the application is loaded via CCS and run, you will be able to ping the configured IP address as specificed int he examples config file. For example, the config file for NIMU for CPSW for idkAM572x, can be found in ti/transport/ndk/nimu/example/am572x/armv7/bios/nimu_idk.cfg. If you wish to re-configure the IP address of the CPSW interface you will need to modify the following configuration parametersr^îjÆjMîjÎjÙéjÐjõjÒ}r_î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK­jÝhjÞ]r`îjçXìFor each EVM Type supported, there is a example which demonstates "ping" use case. Once the application is loaded via CCS and run, you will be able to ping the configured IP address as specificed int he examples config file. For example, the config file for NIMU for CPSW for idkAM572x, can be found in ti/transport/ndk/nimu/example/am572x/armv7/bios/nimu_idk.cfg. If you wish to re-configure the IP address of the CPSW interface you will need to modify the following configuration parametersraî…�rbî}rcî(jÅj^îjÆj\îubaubjt)�rdî}reî(jÅUjÆjMîjÎjÙéjÐjwjÒ}rfî(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK¶jÝhjÞ]rgî(j{)�rhî}riî(jÅXIp.address = "new ip address"rjîjÆjdîjÎjÙéjÐjjÒ}rkî(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rlîjò)�rmî}rnî(jÅjjîjÆjhîjÎjÙéjÐjõjÒ}roî(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¶jÞ]rpîjçXIp.address = "new ip address"rqî…�rrî}rsî(jÅjjîjÆjmîubaubaubj{)�rtî}ruî(jÅXIp.mask = "new ip mask"rvîjÆjdîjÎjÙéjÐjjÒ}rwî(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rxîjò)�ryî}rzî(jÅjvîjÆjtîjÎjÙéjÐjõjÒ}r{î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK·jÞ]r|îjçXIp.mask = "new ip mask"r}î…�r~î}rî(jÅjvîjÆjyîubaubaubj{)�r€î}r�î(jÅX'Ip.gatewayIpAddr = "new gatewayIpAddr" jÆjdîjÎjÙéjÐjjÒ}r‚î(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rƒîjò)�r„î}r…î(jÅX&Ip.gatewayIpAddr = "new gatewayIpAddr"r†îjÆj€îjÎjÙéjÐjõjÒ}r‡î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¸jÞ]rˆîjçX&Ip.gatewayIpAddr = "new gatewayIpAddr"r‰î…�rŠî}r‹î(jÅj†îjÆj„îubaubaubeubjc)�rŒî}r�î(jÅUjÆjMîjÎjÙéjÐjfjÒ}rŽî(jÔ]jÕ]jÖ]j×]jÚ]ujÜKºjÝhjÞ]r�îji)�r�î}r‘î(jÅXdIf you you do change these settings, you will be required to re-build the Example Project using CCS.r’îjlKjÆjŒîjÎjÙéjÐjÜjÒ}r“î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK»jÝhjÞ]r”îjçXdIf you you do change these settings, you will be required to re-build the Example Project using CCS.r•î…�r–î}r—î(jÅj’îjÆj�îubaubaubjy )�r˜î}r™î(jÅUjÆjMîjÎjÙéjÐjÔ jÒ}ršî(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r›îj~ )�rœî}r�î(jÅUjÒ}ržî(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj˜îjÞ]rŸî(jƒ )�r î}r¡î(jÅUjÒ}r¢î(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjœîjÞ]jÐj‡ ubjƒ )�r£î}r¤î(jÅUjÒ}r¥î(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjœîjÞ]jÐj‡ ubjƒ )�r¦î}r§î(jÅUjÒ}r¨î(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjœîjÞ]jÐj‡ ubjƒ )�r©î}rªî(jÅUjÒ}r«î(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjœîjÞ]jÐj‡ ubjƒ )�r¬î}r­î(jÅUjÒ}r®î(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjœîjÞ]jÐj‡ ubj‹ )�r¯î}r°î(jÅUjÒ}r±î(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœîjÞ]r²îj� )�r³î}r´î(jÅUjÒ}rµî(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯îjÞ]r¶î(j• )�r·î}r¸î(jÅUjÒ}r¹î(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³îjÞ]rºîjò)�r»î}r¼î(jÅXNamer½îjÆj·îjÎjÙéjÐjõjÒ}r¾î(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¾jÞ]r¿îjçXNamerÀî…�rÁî}rÂî(jÅj½îjÆj»îubaubajÐj¢ ubj• )�rÃî}rÄî(jÅUjÒ}rÅî(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³îjÞ]rÆîjò)�rÇî}rÈî(jÅX DescriptionrÉîjÆjÃîjÎjÙéjÐjõjÒ}rÊî(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¾jÞ]rËîjçX DescriptionrÌî…�rÍî}rÎî(jÅjÉîjÆjÇîubaubajÐj¢ ubj• )�rÏî}rÐî(jÅUjÒ}rÑî(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³îjÞ]rÒîjò)�rÓî}rÔî(jÅXEVM ConfigurationrÕîjÆjÏîjÎjÙéjÐjõjÒ}rÖî(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¾jÞ]r×îjçXEVM ConfigurationrØî…�rÙî}rÚî(jÅjÕîjÆjÓîubaubajÐj¢ ubj• )�rÛî}rÜî(jÅUjÒ}rÝî(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³îjÞ]rÞîjò)�rßî}ràî(jÅXExpected ResultsráîjÆjÛîjÎjÙéjÐjõjÒ}râî(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¾jÞ]rãîjçXExpected Resultsräî…�råî}ræî(jÅjáîjÆjßîubaubajÐj¢ ubj• )�rçî}rèî(jÅUjÒ}réî(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³îjÞ]rêîjò)�rëî}rìî(jÅX SOC SupportedríîjÆjçîjÎjÙéjÐjõjÒ}rîî(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¾jÞ]rïîjçX SOC Supportedrðî…�rñî}ròî(jÅjíîjÆjëîubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�róî}rôî(jÅUjÒ}rõî(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœîjÞ]röî(j� )�r÷î}røî(jÅUjÒ}rùî(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]rúî(j• )�rûî}rüî(jÅUjÒ}rýî(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷îjÞ]rþîjò)�rÿî}rï(jÅX0NIMU_BasicExamp le_evmXXXX_exampleprojectrïjÆjûîjÎjÙéjÐjõjÒ}rï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÞ]rïjçX0NIMU_BasicExamp le_evmXXXX_exampleprojectrï…�rï}rï(jÅjïjÆjÿîubaubajÐj¢ ubj• )�rï}rï(jÅUjÒ}r ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷îjÞ]r ïjò)�r ï}r ï(jÅXOExample demonstrates ping from external source to Gigabit Ethernet port on EVM.r ïjÆjïjÎjÙéjÐjõjÒ}rï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÞ]rïjçXOExample demonstrates ping from external source to Gigabit Ethernet port on EVM.rï…�rï}rï(jÅj ïjÆj ïubaubajÐj¢ ubj• )�rï}rï(jÅUjÒ}rï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷îjÞ]rïjò)�rï}rï(jÅX?icev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode. Pin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode. Update \*.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.jÆjïjÎjÙéjÐjõjÒ}rï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÞ]rïjçX>icev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode. Pin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode. Update *.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.rï…�rï}rï(jÅX?icev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode. Pin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode. Update \*.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.jÆjïubaubajÐj¢ ubj• )�rï}rï(jÅUjÒ}r ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷îjÞ]r!ï(jò)�r"ï}r#ï(jÅX.Run ping from any other PC in the same subnet,r$ïjÆjïjÎjÙéjÐjõjÒ}r%ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÞ]r&ïjçX.Run ping from any other PC in the same subnet,r'ï…�r(ï}r)ï(jÅj$ïjÆj"ïubaubjò)�r*ï}r+ï(jÅXDPing response from the EVM verifies successful execution of example.r,ïjÆjïjÎjÙéjÐjõjÒ}r-ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÆjÞ]r.ïjçXDPing response from the EVM verifies successful execution of example.r/ï…�r0ï}r1ï(jÅj,ïjÆj*ïubaubejÐj¢ ubj• )�r2ï}r3ï(jÅUjÒ}r4ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷îjÞ]r5ïjò)�r6ï}r7ï(jÅXAM335x AM437x AM57x K2Gr8ïjÆj2ïjÎjÙéjÐjõjÒ}r9ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÞ]r:ïjçXAM335x AM437x AM57x K2Gr;ï…�r<ï}r=ï(jÅj8ïjÆj6ïubaubajÐj¢ ubejÐj£ ubj� )�r>ï}r?ï(jÅUjÒ}r@ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]rAï(j• )�rBï}rCï(jÅUjÒ}rDï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>ïjÞ]rEïjò)�rFï}rGï(jÅX6NIMU_ICSS_Basic Example_evmXXXX _Examplep rojectrHïjÆjBïjÎjÙéjÐjõjÒ}rIï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÞ]rJïjçX6NIMU_ICSS_Basic Example_evmXXXX _Examplep rojectrKï…�rLï}rMï(jÅjHïjÆjFïubaubajÐj¢ ubj• )�rNï}rOï(jÅUjÒ}rPï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>ïjÞ]rQïjò)�rRï}rSï(jÅXPExample demonstrates ping from external source to PRU-ICSS Ethernet port on EVM.rTïjÆjNïjÎjÙéjÐjõjÒ}rUï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÞ]rVïjçXPExample demonstrates ping from external source to PRU-ICSS Ethernet port on EVM.rWï…�rXï}rYï(jÅjTïjÆjRïubaubajÐj¢ ubj• )�rZï}r[ï(jÅUjÒ}r\ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>ïjÞ]r]ïjò)�r^ï}r_ï(jÅX?icev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode. Pin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode. Update \*.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.jÆjZïjÎjÙéjÐjõjÒ}r`ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÞ]raïjçX>icev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode. Pin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode. Update *.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.rbï…�rcï}rdï(jÅX?icev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode. Pin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode. Update \*.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.jÆj^ïubaubajÐj¢ ubj• )�reï}rfï(jÅUjÒ}rgï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>ïjÞ]rhï(jò)�riï}rjï(jÅX.Run ping from any other PC in the same subnet.rkïjÆjeïjÎjÙéjÐjõjÒ}rlï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÞ]rmïjçX.Run ping from any other PC in the same subnet.rnï…�roï}rpï(jÅjkïjÆjiïubaubjò)�rqï}rrï(jÅXDPing response from the EVM verifies successful execution of example.rsïjÆjeïjÎjÙéjÐjõjÒ}rtï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKàjÞ]ruïjçXDPing response from the EVM verifies successful execution of example.rvï…�rwï}rxï(jÅjsïjÆjqïubaubejÐj¢ ubj• )�ryï}rzï(jÅUjÒ}r{ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>ïjÞ]r|ïjò)�r}ï}r~ï(jÅXAMIC110 AM335x AM437x AM57x K2GrïjÆjyïjÎjÙéjÐjõjÒ}r€ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÞ]r�ïjçXAMIC110 AM335x AM437x AM57x K2Gr‚ï…�rƒï}r„ï(jÅjïjÆj}ïubaubajÐj¢ ubejÐj£ ubj� )�r…ï}r†ï(jÅUjÒ}r‡ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]rˆï(j• )�r‰ï}rŠï(jÅUjÒ}r‹ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…ïjÞ]rŒïjò)�r�ï}rŽï(jÅXNIMU_Cpsw_ ExampleAppjÆj‰ïjÎjÙéjÐjõjÒ}r�ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜK÷jÞ]r�ï(j¸ )�r‘ï}r’ï(jÅX NIMU_Cpsw_r“ïjÒ}r”ï(j×]r•ïUid152r–ïajÖ]jÔ]jÕ]jÚ]UrefidUid151r—ïujÆj�ïjÞ]r˜ïjçX NIMU_Cpsw_r™ï…�ršï}r›ï(jÅUjÆj‘ïubajÐj ubjçX ExampleApprœï…�r�ï}ržï(jÅX ExampleAppjÆj�ïubeubajÐj¢ ubj• )�rŸï}r ï(jÅUjÒ}r¡ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…ïjÞ]r¢ïjò)�r£ï}r¤ï(jÅXOExample demonstrates ping from external source to Gigabit Ethernet port on EVM.r¥ïjÆjŸïjÎjÙéjÐjõjÒ}r¦ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜK÷jÞ]r§ïjçXOExample demonstrates ping from external source to Gigabit Ethernet port on EVM.r¨ï…�r©ï}rªï(jÅj¥ïjÆj£ïubaubajÐj¢ ubj• )�r«ï}r¬ï(jÅUjÒ}r­ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…ïjÞ]r®ïjò)�r¯ï}r°ï(jÅX—Update \*.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.jÆj«ïjÎjÙéjÐjõjÒ}r±ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜK÷jÞ]r²ïjçX–Update *.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.r³ï…�r´ï}rµï(jÅX—Update \*.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.jÆj¯ïubaubajÐj¢ ubj• )�r¶ï}r·ï(jÅUjÒ}r¸ï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…ïjÞ]r¹ï(jò)�rºï}r»ï(jÅX.Run ping from any other PC in the same subnet.r¼ïjÆj¶ïjÎjÙéjÐjõjÒ}r½ï(jÔ]jÕ]jÖ]j×]jÚ]ujÜK÷jÞ]r¾ïjçX.Run ping from any other PC in the same subnet.r¿ï…�rÀï}rÁï(jÅj¼ïjÆjºïubaubjò)�rÂï}rÃï(jÅXDPing response from the EVM verifies successful execution of example.rÄïjÆj¶ïjÎjÙéjÐjõjÒ}rÅï(jÔ]jÕ]jÖ]j×]jÚ]ujÜKûjÞ]rÆïjçXDPing response from the EVM verifies successful execution of example.rÇï…�rÈï}rÉï(jÅjÄïjÆjÂïubaubejÐj¢ ubj• )�rÊï}rËï(jÅUjÒ}rÌï(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…ïjÞ]rÍïjò)�rÎï}rÏï(jÅX AM65x J721ErÐïjÆjÊïjÎjÙéjÐjõjÒ}rÑï(jÔ]jÕ]jÖ]j×]jÚ]ujÜK÷jÞ]rÒïjçX AM65x J721ErÓï…�rÔï}rÕï(jÅjÐïjÆjÎïubaubajÐj¢ ubejÐj£ ubj� )�rÖï}r×ï(jÅUjÒ}rØï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]rÙï(j• )�rÚï}rÛï(jÅUjÒ}rÜï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖïjÞ]rÝïjò)�rÞï}rßï(jÅXNIMU_Icssg ExampleAppràïjÆjÚïjÎjÙéjÐjõjÒ}ráï(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]râïjçXNIMU_Icssg ExampleApprãï…�räï}råï(jÅjàïjÆjÞïubaubajÐj¢ ubj• )�ræï}rçï(jÅUjÒ}rèï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖïjÞ]réïjò)�rêï}rëï(jÅXPExample demonstrates ping from external source to PRU-ICSS Ethernet port on EVM.rìïjÆjæïjÎjÙéjÐjõjÒ}ríï(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rîïjçXPExample demonstrates ping from external source to PRU-ICSS Ethernet port on EVM.rïï…�rðï}rñï(jÅjìïjÆjêïubaubajÐj¢ ubj• )�ròï}róï(jÅUjÒ}rôï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖïjÞ]rõïjò)�röï}r÷ï(jÅX—Update \*.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.jÆjòïjÎjÙéjÐjõjÒ}røï(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rùïjçX–Update *.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.rúï…�rûï}rüï(jÅX—Update \*.cfg file with static IP to test. NIMU for CPSW test requires connection of configured Ethernet port under test to external PC on same subnet.jÆjöïubaubajÐj¢ ubj• )�rýï}rþï(jÅUjÒ}rÿï(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖïjÞ]rð(jò)�rð}rð(jÅX.Run ping from any other PC in the same subnet.rðjÆjýïjÎjÙéjÐjõjÒ}rð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rðjçX.Run ping from any other PC in the same subnet.rð…�rð}rð(jÅjðjÆjðubaubjò)�r ð}r ð(jÅXDPing response from the EVM verifies successful execution of example.r ðjÆjýïjÎjÙéjÐjõjÒ}r ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r ðjçXDPing response from the EVM verifies successful execution of example.rð…�rð}rð(jÅj ðjÆj ðubaubejÐj¢ ubj• )�rð}rð(jÅUjÒ}rð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÖïjÞ]rðjò)�rð}rð(jÅXAM65xrðjÆjðjÎjÙéjÐjõjÒ}rð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rðjçXAM65xrð…�rð}rð(jÅjðjÆjðubaubajÐj¢ ubejÐj£ ubj� )�rð}rð(jÅUjÒ}rð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]r ð(j• )�r!ð}r"ð(jÅUjÒ}r#ð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðjÞ]r$ðjò)�r%ð}r&ð(jÅX7NIMU_BasicClient Example_evmXXXX _Example projectr'ðjÆj!ðjÎjÙéjÐjõjÒ}r(ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r)ðjçX7NIMU_BasicClient Example_evmXXXX _Example projectr*ð…�r+ð}r,ð(jÅj'ðjÆj%ðubaubajÐj¢ ubj• )�r-ð}r.ð(jÅUjÒ}r/ð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðjÞ]r0ðjò)�r1ð}r2ð(jÅXKExample demonstrates creating local servers: TCP, UDP , data, null and OOB.r3ðjÆj-ðjÎjÙéjÐjõjÒ}r4ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r5ðjçXKExample demonstrates creating local servers: TCP, UDP , data, null and OOB.r6ð…�r7ð}r8ð(jÅj3ðjÆj1ðubaubajÐj¢ ubj• )�r9ð}r:ð(jÅUjÒ}r;ð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðjÞ]r<ðjò)�r=ð}r>ð(jÅX#Same as above. Use DHCP by default.r?ðjÆj9ðjÎjÙéjÐjõjÒ}r@ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rAðjçX#Same as above. Use DHCP by default.rBð…�rCð}rDð(jÅj?ðjÆj=ðubaubajÐj¢ ubj• )�rEð}rFð(jÅUjÒ}rGð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðjÞ]rHðjò)�rIð}rJð(jÅXFSee TI NDK user guide, section 2 Example Applications for how to test.rKðjÆjEðjÎjÙéjÐjõjÒ}rLð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rMðjçXFSee TI NDK user guide, section 2 Example Applications for how to test.rNð…�rOð}rPð(jÅjKðjÆjIðubaubajÐj¢ ubj• )�rQð}rRð(jÅUjÒ}rSð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðjÞ]rTðjò)�rUð}rVð(jÅXAM57xrWðjÆjQðjÎjÙéjÐjõjÒ}rXð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rYðjçXAM57xrZð…�r[ð}r\ð(jÅjWðjÆjUðubaubajÐj¢ ubejÐj£ ubj� )�r]ð}r^ð(jÅUjÒ}r_ð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]r`ð(j• )�rað}rbð(jÅUjÒ}rcð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]ðjÞ]rdðjò)�reð}rfð(jÅX6NIMU_emacExample Client_evmXXXX _Example projectrgðjÆjaðjÎjÙéjÐjõjÒ}rhð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]riðjçX6NIMU_emacExample Client_evmXXXX _Example projectrjð…�rkð}rlð(jÅjgðjÆjeðubaubajÐj¢ ubj• )�rmð}rnð(jÅUjÒ}roð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]ðjÞ]rpðjò)�rqð}rrð(jÅXKExample demonstrates creating local servers: TCP, UDP , data, null and OOB.rsðjÆjmðjÎjÙéjÐjõjÒ}rtð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]ruðjçXKExample demonstrates creating local servers: TCP, UDP , data, null and OOB.rvð…�rwð}rxð(jÅjsðjÆjqðubaubajÐj¢ ubj• )�ryð}rzð(jÅUjÒ}r{ð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]ðjÞ]r|ðjò)�r}ð}r~ð(jÅX#Same as above. Use DHCP by default.rðjÆjyðjÎjÙéjÐjõjÒ}r€ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r�ðjçX#Same as above. Use DHCP by default.r‚ð…�rƒð}r„ð(jÅjðjÆj}ðubaubajÐj¢ ubj• )�r…ð}r†ð(jÅUjÒ}r‡ð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]ðjÞ]rˆðjò)�r‰ð}rŠð(jÅXFSee TI NDK user guide, section 2 Example Applications for how to test.r‹ðjÆj…ðjÎjÙéjÐjõjÒ}rŒð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r�ðjçXFSee TI NDK user guide, section 2 Example Applications for how to test.rŽð…�r�ð}r�ð(jÅj‹ðjÆj‰ðubaubajÐj¢ ubj• )�r‘ð}r’ð(jÅUjÒ}r“ð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]ðjÞ]r”ðjò)�r•ð}r–ð(jÅXC665x C667x OMAP-L137/8r—ðjÆj‘ðjÎjÙéjÐjõjÒ}r˜ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r™ðjçXC665x C667x OMAP-L137/8ršð…�r›ð}rœð(jÅj—ðjÆj•ðubaubajÐj¢ ubejÐj£ ubj� )�r�ð}ržð(jÅUjÒ}rŸð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]r ð(j• )�r¡ð}r¢ð(jÅUjÒ}r£ð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ðjÞ]r¤ðjò)�r¥ð}r¦ð(jÅX;NIMU_BasicHello WorldExample_ evmXXXX_ ExampleprojectjÆj¡ðjÎjÙéjÐjõjÒ}r§ð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]r¨ð(jçXNIMU_BasicHello r©ð…�rªð}r«ð(jÅXNIMU_BasicHello jÆj¥ðubj¸ )�r¬ð}r­ð(jÅX WorldExample_r®ðjÒ}r¯ð(j×]r°ðUid154r±ðajÖ]jÔ]jÕ]jÚ]UrefidUid153r²ðujÆj¥ðjÞ]r³ðjçX WorldExample_r´ð…�rµð}r¶ð(jÅUjÆj¬ðubajÐj ubjçX evmXXXX_ Exampleprojectr·ð…�r¸ð}r¹ð(jÅX evmXXXX_ ExampleprojectjÆj¥ðubeubajÐj¢ ubj• )�rºð}r»ð(jÅUjÒ}r¼ð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ðjÞ]r½ðjò)�r¾ð}r¿ð(jÅX.Example demonstrates UDP helloworld echo test.rÀðjÆjºðjÎjÙéjÐjõjÒ}rÁð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÂðjçX.Example demonstrates UDP helloworld echo test.rÃð…�rÄð}rÅð(jÅjÀðjÆj¾ðubaubajÐj¢ ubj• )�rÆð}rÇð(jÅUjÒ}rÈð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ðjÞ]rÉðjò)�rÊð}rËð(jÅX#Same as above. Use DHCP by default.rÌðjÆjÆðjÎjÙéjÐjõjÒ}rÍð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÎðjçX#Same as above. Use DHCP by default.rÏð…�rÐð}rÑð(jÅjÌðjÆjÊðubaubajÐj¢ ubj• )�rÒð}rÓð(jÅUjÒ}rÔð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ðjÞ]rÕðjò)�rÖð}r×ð(jÅXFSee TI NDK user guide, section 2 Example Applications for how to test.rØðjÆjÒðjÎjÙéjÐjõjÒ}rÙð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]rÚðjçXFSee TI NDK user guide, section 2 Example Applications for how to test.rÛð…�rÜð}rÝð(jÅjØðjÆjÖðubaubajÐj¢ ubj• )�rÞð}rßð(jÅUjÒ}ràð(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�ðjÞ]ráðjò)�râð}rãð(jÅXAM57xräðjÆjÞðjÎjÙéjÐjõjÒ}råð(jÔ]jÕ]jÖ]j×]jÚ]ujÜMjÞ]ræðjçXAM57xrçð…�rèð}réð(jÅjäðjÆjâðubaubajÐj¢ ubejÐj£ ubj� )�rêð}rëð(jÅUjÒ}rìð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]ríð(j• )�rîð}rïð(jÅUjÒ}rðð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêðjÞ]rñðjò)�ròð}róð(jÅX.NIMU_emacExample evmXXXX_ ExampleprojectrôðjÆjîðjÎjÙéjÐjõjÒ}rõð(jÔ]jÕ]jÖ]j×]jÚ]ujÜM%jÞ]röðjçX.NIMU_emacExample evmXXXX_ Exampleprojectr÷ð…�røð}rùð(jÅjôðjÆjòðubaubajÐj¢ ubj• )�rúð}rûð(jÅUjÒ}rüð(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêðjÞ]rýðjò)�rþð}rÿð(jÅX.Example demonstrates UDP helloworld echo test.rñjÆjúðjÎjÙéjÐjõjÒ}rñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM%jÞ]rñjçX.Example demonstrates UDP helloworld echo test.rñ…�rñ}rñ(jÅjñjÆjþðubaubajÐj¢ ubj• )�rñ}rñ(jÅUjÒ}rñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêðjÞ]r ñjò)�r ñ}r ñ(jÅX#Same as above. Use DHCP by default.r ñjÆjñjÎjÙéjÐjõjÒ}r ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM%jÞ]rñjçX#Same as above. Use DHCP by default.rñ…�rñ}rñ(jÅj ñjÆj ñubaubajÐj¢ ubj• )�rñ}rñ(jÅUjÒ}rñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêðjÞ]rñjò)�rñ}rñ(jÅXFSee TI NDK user guide, section 2 Example Applications for how to test.rñjÆjñjÎjÙéjÐjõjÒ}rñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM%jÞ]rñjçXFSee TI NDK user guide, section 2 Example Applications for how to test.rñ…�rñ}rñ(jÅjñjÆjñubaubajÐj¢ ubj• )�rñ}rñ(jÅUjÒ}r ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjêðjÞ]r!ñjò)�r"ñ}r#ñ(jÅX!C665x C667x K2H/K/E/L OMAP-L137/8r$ñjÆjñjÎjÙéjÐjõjÒ}r%ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM%jÞ]r&ñjçX!C665x C667x K2H/K/E/L OMAP-L137/8r'ñ…�r(ñ}r)ñ(jÅj$ñjÆj"ñubaubajÐj¢ ubejÐj£ ubj� )�r*ñ}r+ñ(jÅUjÒ}r,ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]r-ñ(j• )�r.ñ}r/ñ(jÅUjÒ}r0ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*ñjÞ]r1ñjò)�r2ñ}r3ñ(jÅX3NIMU_DualMac Example_evmXXXX _Example projectr4ñjÆj.ñjÎjÙéjÐjõjÒ}r5ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÞ]r6ñjçX3NIMU_DualMac Example_evmXXXX _Example projectr7ñ…�r8ñ}r9ñ(jÅj4ñjÆj2ñubaubajÐj¢ ubj• )�r:ñ}r;ñ(jÅUjÒ}r<ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*ñjÞ]r=ñjò)�r>ñ}r?ñ(jÅXAExample demonstrates using two EMAC ports with different subnets.r@ñjÆj:ñjÎjÙéjÐjõjÒ}rAñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÞ]rBñjçXAExample demonstrates using two EMAC ports with different subnets.rCñ…�rDñ}rEñ(jÅj@ñjÆj>ñubaubajÐj¢ ubj• )�rFñ}rGñ(jÅUjÒ}rHñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*ñjÞ]rIñjò)�rJñ}rKñ(jÅX(Same as above. Use static IP by default.rLñjÆjFñjÎjÙéjÐjõjÒ}rMñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÞ]rNñjçX(Same as above. Use static IP by default.rOñ…�rPñ}rQñ(jÅjLñjÆjJñubaubajÐj¢ ubj• )�rRñ}rSñ(jÅUjÒ}rTñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*ñjÞ]rUñjò)�rVñ}rWñ(jÅXsRun ping from any other PC in the same subnet. Ping response from the EVM verifies successful execution of example.rXñjÆjRñjÎjÙéjÐjõjÒ}rYñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÞ]rZñjçXsRun ping from any other PC in the same subnet. Ping response from the EVM verifies successful execution of example.r[ñ…�r\ñ}r]ñ(jÅjXñjÆjVñubaubajÐj¢ ubj• )�r^ñ}r_ñ(jÅUjÒ}r`ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj*ñjÞ]rañjò)�rbñ}rcñ(jÅXAM57xrdñjÆj^ñjÎjÙéjÐjõjÒ}reñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM+jÞ]rfñjçXAM57xrgñ…�rhñ}riñ(jÅjdñjÆjbñubaubajÐj¢ ubejÐj£ ubj� )�rjñ}rkñ(jÅUjÒ}rlñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]rmñ(j• )�rnñ}roñ(jÅUjÒ}rpñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjñjÞ]rqñjò)�rrñ}rsñ(jÅX.NIMU_FtpExample_ evmXXXX_ ExampleprojectjÆjnñjÎjÙéjÐjõjÒ}rtñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM5jÞ]ruñ(j¸ )�rvñ}rwñ(jÅXNIMU_FtpExample_rxñjÒ}ryñ(j×]rzñUid156r{ñajÖ]jÔ]jÕ]jÚ]UrefidUid155r|ñujÆjrñjÞ]r}ñjçXNIMU_FtpExample_r~ñ…�rñ}r€ñ(jÅUjÆjvñubajÐj ubjçX evmXXXX_ Exampleprojectr�ñ…�r‚ñ}rƒñ(jÅX evmXXXX_ ExampleprojectjÆjrñubeubajÐj¢ ubj• )�r„ñ}r…ñ(jÅUjÒ}r†ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjñjÞ]r‡ñjò)�rˆñ}r‰ñ(jÅX1Example demonstrates FTP server with put and get.rŠñjÆj„ñjÎjÙéjÐjõjÒ}r‹ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM5jÞ]rŒñjçX1Example demonstrates FTP server with put and get.r�ñ…�rŽñ}r�ñ(jÅjŠñjÆjˆñubaubajÐj¢ ubj• )�r�ñ}r‘ñ(jÅUjÒ}r’ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjñjÞ]r“ñjò)�r”ñ}r•ñ(jÅX(Same as above. Use static IP by default.r–ñjÆj�ñjÎjÙéjÐjõjÒ}r—ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM5jÞ]r˜ñjçX(Same as above. Use static IP by default.r™ñ…�ršñ}r›ñ(jÅj–ñjÆj”ñubaubajÐj¢ ubj• )�rœñ}r�ñ(jÅUjÒ}ržñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjñjÞ]rŸñjò)�r ñ}r¡ñ(jÅXŽFrom host PC make a FTP connection to EVM: ftp . User:user Password:password Test put and get command and show the throughput.r¢ñjÆjœñjÎjÙéjÐjõjÒ}r£ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM5jÞ]r¤ñjçXŽFrom host PC make a FTP connection to EVM: ftp . User:user Password:password Test put and get command and show the throughput.r¥ñ…�r¦ñ}r§ñ(jÅj¢ñjÆj ñubaubajÐj¢ ubj• )�r¨ñ}r©ñ(jÅUjÒ}rªñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjñjÞ]r«ñjò)�r¬ñ}r­ñ(jÅXAM335x AM437x AM57x K2Gr®ñjÆj¨ñjÎjÙéjÐjõjÒ}r¯ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM5jÞ]r°ñjçXAM335x AM437x AM57x K2Gr±ñ…�r²ñ}r³ñ(jÅj®ñjÆj¬ñubaubajÐj¢ ubejÐj£ ubj� )�r´ñ}rµñ(jÅUjÒ}r¶ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]r·ñ(j• )�r¸ñ}r¹ñ(jÅUjÒ}rºñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´ñjÞ]r»ñjò)�r¼ñ}r½ñ(jÅX3NIMU_ICSS FtpExample_ evmXXXX_ ExampleprojectjÆj¸ñjÎjÙéjÐjõjÒ}r¾ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÞ]r¿ñ(jçX NIMU_ICSS rÀñ…�rÁñ}rÂñ(jÅX NIMU_ICSS jÆj¼ñubj¸ )�rÃñ}rÄñ(jÅX FtpExample_rÅñjÒ}rÆñ(j×]rÇñUid158rÈñajÖ]jÔ]jÕ]jÚ]UrefidUid157rÉñujÆj¼ñjÞ]rÊñjçX FtpExample_rËñ…�rÌñ}rÍñ(jÅUjÆjÃñubajÐj ubjçX evmXXXX_ ExampleprojectrÎñ…�rÏñ}rÐñ(jÅX evmXXXX_ ExampleprojectjÆj¼ñubeubajÐj¢ ubj• )�rÑñ}rÒñ(jÅUjÒ}rÓñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´ñjÞ]rÔñjò)�rÕñ}rÖñ(jÅX1Example demonstrates FTP server with put and get.r×ñjÆjÑñjÎjÙéjÐjõjÒ}rØñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÞ]rÙñjçX1Example demonstrates FTP server with put and get.rÚñ…�rÛñ}rÜñ(jÅj×ñjÆjÕñubaubajÐj¢ ubj• )�rÝñ}rÞñ(jÅUjÒ}rßñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´ñjÞ]ràñjò)�ráñ}râñ(jÅX(Same as above. Use static IP by default.rãñjÆjÝñjÎjÙéjÐjõjÒ}räñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÞ]råñjçX(Same as above. Use static IP by default.ræñ…�rçñ}rèñ(jÅjãñjÆjáñubaubajÐj¢ ubj• )�réñ}rêñ(jÅUjÒ}rëñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´ñjÞ]rìñjò)�ríñ}rîñ(jÅXŽFrom host PC make a FTP connection to EVM: ftp . User:user Password:password Test put and get command and show the throughput.rïñjÆjéñjÎjÙéjÐjõjÒ}rðñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÞ]rññjçXŽFrom host PC make a FTP connection to EVM: ftp . User:user Password:password Test put and get command and show the throughput.ròñ…�róñ}rôñ(jÅjïñjÆjíñubaubajÐj¢ ubj• )�rõñ}röñ(jÅUjÒ}r÷ñ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj´ñjÞ]røñjò)�rùñ}rúñ(jÅXAM335x AM437x AM57x K2GrûñjÆjõñjÎjÙéjÐjõjÒ}rüñ(jÔ]jÕ]jÖ]j×]jÚ]ujÜM?jÞ]rýñjçXAM335x AM437x AM57x K2Grþñ…�rÿñ}rò(jÅjûñjÆjùñubaubajÐj¢ ubejÐj£ ubj� )�rò}rò(jÅUjÒ}rò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]rò(j• )�rò}rò(jÅUjÒ}rò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòjÞ]ròjò)�r ò}r ò(jÅXNIMU_FtpCpsw_ ExampleAppjÆjòjÎjÙéjÐjõjÒ}r ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMIjÞ]r ò(j¸ )�r ò}rò(jÅX NIMU_FtpCpsw_ròjÒ}rò(j×]ròUid160ròajÖ]jÔ]jÕ]jÚ]UrefidUid159ròujÆj òjÞ]ròjçX NIMU_FtpCpsw_rò…�rò}rò(jÅUjÆj òubajÐj ubjçX ExampleApprò…�rò}rò(jÅX ExampleAppjÆj òubeubajÐj¢ ubj• )�rò}rò(jÅUjÒ}rò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòjÞ]ròjò)�rò}r ò(jÅX1Example demonstrates FTP server with put and get.r!òjÆjòjÎjÙéjÐjõjÒ}r"ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMIjÞ]r#òjçX1Example demonstrates FTP server with put and get.r$ò…�r%ò}r&ò(jÅj!òjÆjòubaubajÐj¢ ubj• )�r'ò}r(ò(jÅUjÒ}r)ò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòjÞ]r*òjò)�r+ò}r,ò(jÅX(Same as above. Use static IP by default.r-òjÆj'òjÎjÙéjÐjõjÒ}r.ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMIjÞ]r/òjçX(Same as above. Use static IP by default.r0ò…�r1ò}r2ò(jÅj-òjÆj+òubaubajÐj¢ ubj• )�r3ò}r4ò(jÅUjÒ}r5ò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòjÞ]r6òjò)�r7ò}r8ò(jÅXŽFrom host PC make a FTP connection to EVM: ftp . User:user Password:password Test put and get command and show the throughput.r9òjÆj3òjÎjÙéjÐjõjÒ}r:ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMIjÞ]r;òjçXŽFrom host PC make a FTP connection to EVM: ftp . User:user Password:password Test put and get command and show the throughput.r<ò…�r=ò}r>ò(jÅj9òjÆj7òubaubajÐj¢ ubj• )�r?ò}r@ò(jÅUjÒ}rAò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjòjÞ]rBòjò)�rCò}rDò(jÅXAM65x J7rEòjÆj?òjÎjÙéjÐjõjÒ}rFò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMIjÞ]rGòjçXAM65x J7rHò…�rIò}rJò(jÅjEòjÆjCòubaubajÐj¢ ubejÐj£ ubj� )�rKò}rLò(jÅUjÒ}rMò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjóîjÞ]rNò(j• )�rOò}rPò(jÅUjÒ}rQò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKòjÞ]rRòjò)�rSò}rTò(jÅXNIMU_FtpIcssg_ ExampleAppjÆjOòjÎjÙéjÐjõjÒ}rUò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÞ]rVò(j¸ )�rWò}rXò(jÅXNIMU_FtpIcssg_rYòjÒ}rZò(j×]r[òUid162r\òajÖ]jÔ]jÕ]jÚ]UrefidUid161r]òujÆjSòjÞ]r^òjçXNIMU_FtpIcssg_r_ò…�r`ò}raò(jÅUjÆjWòubajÐj ubjçX ExampleApprbò…�rcò}rdò(jÅX ExampleAppjÆjSòubeubajÐj¢ ubj• )�reò}rfò(jÅUjÒ}rgò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKòjÞ]rhòjò)�riò}rjò(jÅX1Example demonstrates FTP server with put and get.rkòjÆjeòjÎjÙéjÐjõjÒ}rlò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÞ]rmòjçX1Example demonstrates FTP server with put and get.rnò…�roò}rpò(jÅjkòjÆjiòubaubajÐj¢ ubj• )�rqò}rrò(jÅUjÒ}rsò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKòjÞ]rtòjò)�ruò}rvò(jÅX(Same as above. Use static IP by default.rwòjÆjqòjÎjÙéjÐjõjÒ}rxò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÞ]ryòjçX(Same as above. Use static IP by default.rzò…�r{ò}r|ò(jÅjwòjÆjuòubaubajÐj¢ ubj• )�r}ò}r~ò(jÅUjÒ}rò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKòjÞ]r€òjò)�r�ò}r‚ò(jÅXŽFrom host PC make a FTP connection to EVM: ftp . User:user Password:password Test put and get command and show the throughput.rƒòjÆj}òjÎjÙéjÐjõjÒ}r„ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÞ]r…òjçXŽFrom host PC make a FTP connection to EVM: ftp . User:user Password:password Test put and get command and show the throughput.r†ò…�r‡ò}rˆò(jÅjƒòjÆj�òubaubajÐj¢ ubj• )�r‰ò}rŠò(jÅUjÒ}r‹ò(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKòjÞ]rŒòjò)�r�ò}rŽò(jÅXAM65xr�òjÆj‰òjÎjÙéjÐjõjÒ}r�ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMSjÞ]r‘òjçXAM65xr’ò…�r“ò}r”ò(jÅj�òjÆj�òubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjò)�r•ò}r–ò(jÅX.Note: Not all the test examples are supported on all the platforms. The NDK code is hardware agnostic, the NIMU driver however depends on the specific SOC. The NDK code can be ported to different platforms. Some Windows host test applications are available under ndk_3_xx_xx_xx\packages\ti\ndk\winapps.r—òjÆjMîjÎjÙéjÐjõjÒ}r˜ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜM_jÝhjÞ]r™òjçX*Note: Not all the test examples are supported on all the platforms. The NDK code is hardware agnostic, the NIMU driver however depends on the specific SOC. The NDK code can be ported to different platforms. Some Windows host test applications are available under ndk_3_xx_xx_xxpackagestindkwinapps.ršò…�r›ò}rœò(jÅX.Note: Not all the test examples are supported on all the platforms. The NDK code is hardware agnostic, the NIMU driver however depends on the specific SOC. The NDK code can be ported to different platforms. Some Windows host test applications are available under ndk_3_xx_xx_xx\packages\ti\ndk\winapps.jÆj•òubaubeubjÇ)�r�ò}ržò(jÅUjÆjâíjÎjÙéjÐjÑjÒ}rŸò(jÔ]jÕ]jÖ]j×]r òU6running-ndk-example-on-arm-core-of-keystone-ii-devicesr¡òajÚ]r¢òj0aujÜMcjÝhjÞ]r£ò(jà)�r¤ò}r¥ò(jÅX6Running NDK example on ARM core of Keystone II devicesr¦òjÆj�òjÎjÙéjÐjäjÒ}r§ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMcjÝhjÞ]r¨òjçX6Running NDK example on ARM core of Keystone II devicesr©ò…�rªò}r«ò(jÅj¦òjÆj¤òubaubjò)�r¬ò}r­ò(jÅXwBefore running the NDK example on ARM core of Keystone II devices(K2H/L/E/G), the following steps need to be performed.r®òjÆj�òjÎjÙéjÐjõjÒ}r¯ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMejÝhjÞ]r°òjçXwBefore running the NDK example on ARM core of Keystone II devices(K2H/L/E/G), the following steps need to be performed.r±ò…�r²ò}r³ò(jÅj®òjÆj¬òubaubjt)�r´ò}rµò(jÅUjÆj�òjÎjÙéjÐjwjÒ}r¶ò(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMhjÝhjÞ]r·òj{)�r¸ò}r¹ò(jÅX?Increase the NS_BootTask stack from 2048 to 4096 in netctrl.c: jÆj´òjÎjÙéjÐjjÒ}rºò(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r»òjò)�r¼ò}r½ò(jÅX>Increase the NS_BootTask stack from 2048 to 4096 in netctrl.c:r¾òjÆj¸òjÎjÙéjÐjõjÒ}r¿ò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMhjÞ]rÀòjçX>Increase the NS_BootTask stack from 2048 to 4096 in netctrl.c:rÁò…�rÂò}rÃò(jÅj¾òjÆj¼òubaubaubaubj)�rÄò}rÅò(jÅXQTaskCreate( NS_BootTask, "ConfigBoot", OS_TASKPRINORM, 4096,(UINT32)hCfg, 0, 0 );jÆj�òjÎjÙéjÐjjÒ}rÆò(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM¬5jÝhjÞ]rÇòjçXQTaskCreate( NS_BootTask, "ConfigBoot", OS_TASKPRINORM, 4096,(UINT32)hCfg, 0, 0 );rÈò…�rÉò}rÊò(jÅUjÆjÄòubaubjt)�rËò}rÌò(jÅUjÆj�òjÎjÙéjÐjwjÒ}rÍò(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMnjÝhjÞ]rÎò(j{)�rÏò}rÐò(jÅXRebuild the NDKrÑòjÆjËòjÎjÙéjÐjjÒ}rÒò(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÓòjò)�rÔò}rÕò(jÅjÑòjÆjÏòjÎjÙéjÐjõjÒ}rÖò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMnjÞ]r×òjçXRebuild the NDKrØò…�rÙò}rÚò(jÅjÑòjÆjÔòubaubaubj{)�rÛò}rÜò(jÅXRebuild NIMU driver jÆjËòjÎjÙéjÐjjÒ}rÝò(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÞòjò)�rßò}ràò(jÅXRebuild NIMU driverráòjÆjÛòjÎjÙéjÐjõjÒ}râò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMojÞ]rãòjçXRebuild NIMU driverräò…�råò}ræò(jÅjáòjÆjßòubaubaubeubjc)�rçò}rèò(jÅUjÆj�òjÎjÙéjÐjfjÒ}réò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMqjÝhjÞ]rêòji)�rëò}rìò(jÅUjlKjÆjçòjÎjÙéjÐjÜjÒ}ríò(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubeubjÇ)�rîò}rïò(jÅUjÆjÇéjÎjÙéjÐjÑjÒ}rðò(jÔ]jÕ]jÖ]j×]rñòUcclink-exampleròòajÚ]róòj“aujÜMtjÝhjÞ]rôò(jà)�rõò}röò(jÅXCCLink Exampler÷òjÆjîòjÎjÙéjÐjäjÒ}røò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMtjÝhjÞ]rùòjçXCCLink Examplerúò…�rûò}rüò(jÅj÷òjÆjõòubaubjò)�rýò}rþò(jÅX™Refer `Processor_SDK_RTOS_CCLINK `__ for details on steps for running cclink master and slave examples on NDK.jÆjîòjÎjÙéjÐjõjÒ}rÿò(jÔ]jÕ]jÖ]j×]jÚ]ujÜMvjÝhjÞ]ró(jçXRefer ró…�ró}ró(jÅXRefer jÆjýòubjû)�ró}ró(jÅXI`Processor_SDK_RTOS_CCLINK `__jÒ}ró(UnameXProcessor_SDK_RTOS_CCLINKjX)index_Foundational_Components.html#cclinkj×]jÖ]jÔ]jÕ]jÚ]ujÆjýòjÞ]rójçXProcessor_SDK_RTOS_CCLINKró…�r ó}r ó(jÅUjÆjóubajÐjÿubjçXJ for details on steps for running cclink master and slave examples on NDK.r ó…�r ó}r ó(jÅXJ for details on steps for running cclink master and slave examples on NDK.jÆjýòubeubeubjÇ)�ró}ró(jÅUjÆjÇéjÎjÙéjÐjÑjÒ}ró(jÔ]jÕ]jÖ]j×]róUfaqróajÚ]róh~aujÜM{jÝhjÞ]ró(jà)�ró}ró(jÅXFAQrójÆjójÎjÙéjÐjäjÒ}ró(jÔ]jÕ]jÖ]j×]jÚ]ujÜM{jÝhjÞ]rójçXFAQró…�ró}ró(jÅjójÆjóubaubjÇ)�ró}ró(jÅUjÆjójÎjÙéjÐjÑjÒ}ró(jÔ]jÕ]jÖ]j×]r óU8how-to-check-which-versions-of-nimu-driver-is-for-my-socr!óajÚ]r"óhñaujÜM~jÝhjÞ]r#ó(jà)�r$ó}r%ó(jÅX9How to check which versions of NIMU driver is for my SOC?r&ójÆjójÎjÙéjÐjäjÒ}r'ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM~jÝhjÞ]r(ójçX9How to check which versions of NIMU driver is for my SOC?r)ó…�r*ó}r+ó(jÅj&ójÆj$óubaubjò)�r,ó}r-ó(jÅX{There are several versions of NIMU driver for different SOCs. Please check packages\ti\transport\ndk\nimu\build\makefile.mkjÆjójÎjÙéjÐjõjÒ}r.ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM€jÝhjÞ]r/ójçXuThere are several versions of NIMU driver for different SOCs. Please check packagestitransportndknimubuildmakefile.mkr0ó…�r1ó}r2ó(jÅX{There are several versions of NIMU driver for different SOCs. Please check packages\ti\transport\ndk\nimu\build\makefile.mkjÆj,óubaubjt)�r3ó}r4ó(jÅUjÆjójÎjÙéjÐjwjÒ}r5ó(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜMƒjÝhjÞ]r6ó(j{)�r7ó}r8ó(jÅX V0: C6657r9ójÆj3ójÎjÙéjÐjjÒ}r:ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r;ójò)�r<ó}r=ó(jÅj9ójÆj7ójÎjÙéjÐjõjÒ}r>ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜMƒjÞ]r?ójçX V0: C6657r@ó…�rAó}rBó(jÅj9ójÆj<óubaubaubj{)�rCó}rDó(jÅX V1: C6678rEójÆj3ójÎjÙéjÐjjÒ}rFó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rGójò)�rHó}rIó(jÅjEójÆjCójÎjÙéjÐjõjÒ}rJó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM„jÞ]rKójçX V1: C6678rLó…�rMó}rNó(jÅjEójÆjHóubaubaubj{)�rOó}rPó(jÅX V2: K2H, K2KrQójÆj3ójÎjÙéjÐjjÒ}rRó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rSójò)�rTó}rUó(jÅjQójÆjOójÎjÙéjÐjõjÒ}rVó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM…jÞ]rWójçX V2: K2H, K2KrXó…�rYó}rZó(jÅjQójÆjTóubaubaubj{)�r[ó}r\ó(jÅX V3: K2L, K2Er]ójÆj3ójÎjÙéjÐjjÒ}r^ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r_ójò)�r`ó}raó(jÅj]ójÆj[ójÎjÙéjÐjõjÒ}rbó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM†jÞ]rcójçX V3: K2L, K2Erdó…�reó}rfó(jÅj]ójÆj`óubaubaubj{)�rgó}rhó(jÅX"V4: AM572x, AM571x, AM437x, AM335xriójÆj3ójÎjÙéjÐjjÒ}rjó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rkójò)�rló}rmó(jÅjiójÆjgójÎjÙéjÐjõjÒ}rnó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‡jÞ]roójçX"V4: AM572x, AM571x, AM437x, AM335xrpó…�rqó}rró(jÅjiójÆjlóubaubaubj{)�rsó}rtó(jÅXV5: K2GruójÆj3ójÎjÙéjÐjjÒ}rvó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rwójò)�rxó}ryó(jÅjuójÆjsójÎjÙéjÐjõjÒ}rzó(jÔ]jÕ]jÖ]j×]jÚ]ujÜMˆjÞ]r{ójçXV5: K2Gr|ó…�r}ó}r~ó(jÅjuójÆjxóubaubaubj{)�ró}r€ó(jÅXV6: OMAP-L137/138r�ójÆj3ójÎjÙéjÐjjÒ}r‚ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rƒójò)�r„ó}r…ó(jÅj�ójÆjójÎjÙéjÐjõjÒ}r†ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‰jÞ]r‡ójçXV6: OMAP-L137/138rˆó…�r‰ó}rŠó(jÅj�ójÆj„óubaubaubj{)�r‹ó}rŒó(jÅX V7: AM65x, J7r�ójÆj3ójÎjÙéjÐjjÒ}rŽó(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r�ójò)�r�ó}r‘ó(jÅj�ójÆj‹ójÎjÙéjÐjõjÒ}r’ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŠjÞ]r“ójçX V7: AM65x, J7r”ó…�r•ó}r–ó(jÅj�ójÆj�óubaubaubeubjc)�r—ó}r˜ó(jÅUjÆjójÎjÙéjÐjfjÒ}r™ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM‹jÝhjÞ]ršóji)�r›ó}rœó(jÅUjlKjÆj—ójÎjÙéjÐjÜjÒ}r�ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�ržó}rŸó(jÅUjÆjójÎjÙéjÐjÑjÒ}r ó(jÔ]jÕ]jÖ]j×]r¡óU7is-there-any-multicast-streams-limitation-using-the-ndkr¢óajÚ]r£óhkaujÜMŽjÝhjÞ]r¤ó(jà)�r¥ó}r¦ó(jÅX8Is there any multicast streams limitation using the NDK?r§ójÆjžójÎjÙéjÐjäjÒ}r¨ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜMŽjÝhjÞ]r©ójçX8Is there any multicast streams limitation using the NDK?rªó…�r«ó}r¬ó(jÅj§ójÆj¥óubaubjò)�r­ó}r®ó(jÅXIn the NDK, the limit is defined by a macro at ti/ndk/stack/igmp/igmp.c: #define IGMP_MAX_GROUP 32 It is then used to create an array of IGMP records: static IGMP_REC igmp[IGMP_MAX_GROUP]; The IGMP_MAX_GROUP value can be increased, then rebuild the NDK stack.r¯ójÆjžójÎjÙéjÐjõjÒ}r°ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM�jÝhjÞ]r±ójçXIn the NDK, the limit is defined by a macro at ti/ndk/stack/igmp/igmp.c: #define IGMP_MAX_GROUP 32 It is then used to create an array of IGMP records: static IGMP_REC igmp[IGMP_MAX_GROUP]; The IGMP_MAX_GROUP value can be increased, then rebuild the NDK stack.r²ó…�r³ó}r´ó(jÅj¯ójÆj­óubaubeubjÇ)�rµó}r¶ó(jÅUjÆjójÎjÙéjÐjÑjÒ}r·ó(jÔ]jÕ]jÖ]j×]r¸óU)how-to-share-a-tcp-ip-socket-across-tasksr¹óajÚ]rºóh!aujÜM—jÝhjÞ]r»ó(jà)�r¼ó}r½ó(jÅX*How to share a TCP/IP socket across tasks?r¾ójÆjµójÎjÙéjÐjäjÒ}r¿ó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM—jÝhjÞ]rÀójçX*How to share a TCP/IP socket across tasks?rÁó…�rÂó}rÃó(jÅj¾ójÆj¼óubaubjò)�rÄó}rÅó(jÅXÏThe basic building block of NDK stack code internally is an object handle. Internally to the stack, both sockets and pipes are addressed by object handles. However, at the application level, sockets and pipes are treated as file descriptors. To share a SOCKET, i.e. a file descriptor, a task must first allocate a file descriptor table by calling the function fdOpenSession(), then use the function fdShare() to share the file descriptor among multiple tasks. As described in NDK API reference guide, fdShare() is useful in a case where Task A opens a session and calls recv() in a loop on a socket. Task B has a loop that calls send() on the same socket. The call to send() from Task B will fail and then fdError() will return -1 if you do not call fdOpenSession() and then fdShare() from the second Task after the first Task has opened the socket. For an example that calls fdShare(), see the contest.c file in the /packages/ti/ndk/tools/console directory.rÆójÆjµójÎjÙéjÐjõjÒ}rÇó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM™jÝhjÞ]rÈójçXÏThe basic building block of NDK stack code internally is an object handle. Internally to the stack, both sockets and pipes are addressed by object handles. However, at the application level, sockets and pipes are treated as file descriptors. To share a SOCKET, i.e. a file descriptor, a task must first allocate a file descriptor table by calling the function fdOpenSession(), then use the function fdShare() to share the file descriptor among multiple tasks. As described in NDK API reference guide, fdShare() is useful in a case where Task A opens a session and calls recv() in a loop on a socket. Task B has a loop that calls send() on the same socket. The call to send() from Task B will fail and then fdError() will return -1 if you do not call fdOpenSession() and then fdShare() from the second Task after the first Task has opened the socket. For an example that calls fdShare(), see the contest.c file in the /packages/ti/ndk/tools/console directory.rÉó…�rÊó}rËó(jÅjÆójÆjÄóubaubeubjÇ)�rÌó}rÍó(jÅUjÆjójÎjÙéjÐjÑjÒ}rÎó(jÔ]jÕ]jÖ]j×]rÏóU5how-to-tune-tcp-buffer-size-for-an-optimal-throughputrÐóajÚ]rÑójaujÜM©jÝhjÞ]rÒó(jà)�rÓó}rÔó(jÅX6How to tune TCP buffer size for an optimal throughput?rÕójÆjÌójÎjÙéjÐjäjÒ}rÖó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM©jÝhjÞ]r×ójçX6How to tune TCP buffer size for an optimal throughput?rØó…�rÙó}rÚó(jÅjÕójÆjÓóubaubjò)�rÛó}rÜó(jÅXûThe default TCP buffer size, CFGITEM_IP_SOCKTCPTXBUF/CFGITEM_IP_SOCKTCPRXBUF is 8192 defined in packages/ti/ndk/inc/stack/inc/resif.h of NDK package and can be re-configured in RTOS config file,e.g. Tcp.transmitBufSize = 16384; Tcp.receiveBufSize = 65536; NDK also provides a global TCP statistics counter structure NDK_tcps (ti/ndk/inc/stack/inc/tcpif.h) that can be analyzed in CCS View Expressions window, similaly, there is a global IP statistics counter structure NDK_ips (ti/ndk/inc/stack/inc/ipif.h).rÝójÆjÌójÎjÙéjÐjõjÒ}rÞó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM«jÝhjÞ]rßójçXûThe default TCP buffer size, CFGITEM_IP_SOCKTCPTXBUF/CFGITEM_IP_SOCKTCPRXBUF is 8192 defined in packages/ti/ndk/inc/stack/inc/resif.h of NDK package and can be re-configured in RTOS config file,e.g. Tcp.transmitBufSize = 16384; Tcp.receiveBufSize = 65536; NDK also provides a global TCP statistics counter structure NDK_tcps (ti/ndk/inc/stack/inc/tcpif.h) that can be analyzed in CCS View Expressions window, similaly, there is a global IP statistics counter structure NDK_ips (ti/ndk/inc/stack/inc/ipif.h).ràó…�ráó}râó(jÅjÝójÆjÛóubaubeubjÇ)�rãó}räó(jÅUjÆjójÎjÙéjÐjÑjÒ}råó(jÔ]jÕ]jÖ]j×]ræóU/why-a-pipe-creation-fails-and-fderror-returns-1rçóajÚ]rèój¡aujÜM·jÝhjÞ]réó(jà)�rêó}rëó(jÅX3Why a pipe creation fails and fdError() returns -1?rìójÆjãójÎjÙéjÐjäjÒ}ríó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM·jÝhjÞ]rîójçX3Why a pipe creation fails and fdError() returns -1?rïó…�rðó}rñó(jÅjìójÆjêóubaubjò)�ròó}róó(jÅXÉAlthough sockets can be used for inter-task communications, it is not the most efficient method. The stack provides a second data communications model called pipes, which allow for local connection oriented communications. As a pipe is a full duplex connection oriented file descriptor, fdOpenSession() needs to be called, which opens a file descriptor session on a task thread so that the task can begin using file descriptor and other stream IO functions.rôójÆjãójÎjÙéjÐjõjÒ}rõó(jÔ]jÕ]jÖ]j×]jÚ]ujÜM¹jÝhjÞ]röójçXÉAlthough sockets can be used for inter-task communications, it is not the most efficient method. The stack provides a second data communications model called pipes, which allow for local connection oriented communications. As a pipe is a full duplex connection oriented file descriptor, fdOpenSession() needs to be called, which opens a file descriptor session on a task thread so that the task can begin using file descriptor and other stream IO functions.r÷ó…�røó}rùó(jÅjôójÆjòóubaubeubjÇ)�rúó}rûó(jÅUjÆjójÎjÙéjÐjÑjÒ}rüó(jÔ]jÕ]jÖ]j×]rýóUhow-do-i-change-the-pbm-bufferrþóajÚ]rÿóhaujÜMÁjÝhjÞ]rô(jà)�rô}rô(jÅXHow do I change the PBM buffer?rôjÆjúójÎjÙéjÐjäjÒ}rô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÁjÝhjÞ]rôjçXHow do I change the PBM buffer?rô…�rô}rô(jÅjôjÆjôubaubjò)�r ô}r ô(jÅX�You can configure the PBM buffer used by the NDK by opening the .cfg file with XGCONF, then clicking the Buffers button. This page lets you configure the buffer size, number of buffers and locations of the NDK Packet Buffer Manager (PBM) and the Memory Manager Buffer. Or, you can edit ndk_3_xx_xx_xx\packages\ti\ndk\stack\pbm\pbm_data.c (PKT_NUM_FRAMEBUF and PKT_SIZE_FRAMEBUF) and rebuild the NDK.r ôjÆjúójÎjÙéjÐjõjÒ}r ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÃjÝhjÞ]r ôjçX‰You can configure the PBM buffer used by the NDK by opening the .cfg file with XGCONF, then clicking the Buffers button. This page lets you configure the buffer size, number of buffers and locations of the NDK Packet Buffer Manager (PBM) and the Memory Manager Buffer. Or, you can edit ndk_3_xx_xx_xxpackagestindkstackpbmpbm_data.c (PKT_NUM_FRAMEBUF and PKT_SIZE_FRAMEBUF) and rebuild the NDK.rô…�rô}rô(jÅX�You can configure the PBM buffer used by the NDK by opening the .cfg file with XGCONF, then clicking the Buffers button. This page lets you configure the buffer size, number of buffers and locations of the NDK Packet Buffer Manager (PBM) and the Memory Manager Buffer. Or, you can edit ndk_3_xx_xx_xx\packages\ti\ndk\stack\pbm\pbm_data.c (PKT_NUM_FRAMEBUF and PKT_SIZE_FRAMEBUF) and rebuild the NDK.jÆj ôubaubeubjÇ)�rô}rô(jÅUjÆjójÎjÙéjÐjÑjÒ}rô(jÔ]jÕ]jÖ]j×]rôU"do-you-have-any-raw-packet-examplerôajÚ]rôj@aujÜMÆjÝhjÞ]rô(jà)�rô}rô(jÅX#Do you have any raw packet example?rôjÆjôjÎjÙéjÐjäjÒ}rô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÆjÝhjÞ]rôjçX#Do you have any raw packet example?rô…�rô}rô(jÅjôjÆjôubaubjò)�r ô}r!ô(jÅXéA raw socket is used to receive raw packets. This means packets received at the Ethernet layer will directly pass to the raw socket. Stating it precisely, a raw socket bypasses the normal TCP/IP processing and sends the packets to the specific user application. Please check the TI Network Developer's Kit (NDK) API Reference Guide http://www-s.ti.com/sc/techlit/spru524.pdf A.15 Raw Ethernet Module for details. Code example available in NIMU_emacClientExample_evmXXXX_ExampleProjectr"ôjÆjôjÎjÙéjÐjõjÒ}r#ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÈjÝhjÞ]r$ô(jçXLA raw socket is used to receive raw packets. This means packets received at the Ethernet layer will directly pass to the raw socket. Stating it precisely, a raw socket bypasses the normal TCP/IP processing and sends the packets to the specific user application. Please check the TI Network Developer's Kit (NDK) API Reference Guide r%ô…�r&ô}r'ô(jÅXLA raw socket is used to receive raw packets. This means packets received at the Ethernet layer will directly pass to the raw socket. Stating it precisely, a raw socket bypasses the normal TCP/IP processing and sends the packets to the specific user application. Please check the TI Network Developer's Kit (NDK) API Reference Guide jÆj ôubjû)�r(ô}r)ô(jÅX*http://www-s.ti.com/sc/techlit/spru524.pdfr*ôjÒ}r+ô(Urefurij*ôj×]jÖ]jÔ]jÕ]jÚ]ujÆj ôjÞ]r,ôjçX*http://www-s.ti.com/sc/techlit/spru524.pdfr-ô…�r.ô}r/ô(jÅUjÆj(ôubajÐjÿubjçXs A.15 Raw Ethernet Module for details. Code example available in NIMU_emacClientExample_evmXXXX_ExampleProjectr0ô…�r1ô}r2ô(jÅXs A.15 Raw Ethernet Module for details. Code example available in NIMU_emacClientExample_evmXXXX_ExampleProjectjÆj ôubeubeubjÇ)�r3ô}r4ô(jÅUjÆjójÎjÙéjÐjÑjÒ}r5ô(jÔ]jÕ]jÖ]j×]r6ôU(how-do-i-enable-the-jumbo-packet-supportr7ôajÚ]r8ôh×aujÜMËjÝhjÞ]r9ô(jà)�r:ô}r;ô(jÅX)How do I enable the jumbo packet support?r<ôjÆj3ôjÎjÙéjÐjäjÒ}r=ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMËjÝhjÞ]r>ôjçX)How do I enable the jumbo packet support?r?ô…�r@ô}rAô(jÅj<ôjÆj:ôubaubjò)�rBô}rCô(jÅXòJumbo frames have packet sizes larger than 1500 bytes. Jumbo frame support can be built into an application by linking with libraries compiled for Jumbo frame support. Two parts of changes are needed for NDK/NIMU example: 1. NDK libraries: The NDK libraries would have to be recompiled with the following pre-processor definition added: _INCLUDE_JUMBOFRAME_SUPPORT. 2. NIMU library: the CPSW switch has to be configured to support jumbo packet size and rebuilt. The coding is SOC specific, V0, V4, V5, V6 and V7 NIMU drivers use structure EMAC_OpenConfigInfo and pass the maximum packet size into max_pkt_size field. V1, V2 and V3 NIMU drivers use structure NETIF_DEVICE and pass the maximum packet size into mtu field. Finally, please rebuild the test application with updated NDK and NIMU libraries. A reference example for C6678 is available at: http://processors.wiki.ti.com/index.php/Enabling_Jumbo_Packet_Support_for_C6678. Note the work was implemented on earlier BIOS MCSDK package which was obsolete.jÆj3ôjÎjÙéjÐjõjÒ}rDô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÍjÝhjÞ]rEô(jçXRJumbo frames have packet sizes larger than 1500 bytes. Jumbo frame support can be built into an application by linking with libraries compiled for Jumbo frame support. Two parts of changes are needed for NDK/NIMU example: 1. NDK libraries: The NDK libraries would have to be recompiled with the following pre-processor definition added: _INCLUDE_JUMBOFRAME_SUPPORT. 2. NIMU library: the CPSW switch has to be configured to support jumbo packet size and rebuilt. The coding is SOC specific, V0, V4, V5, V6 and V7 NIMU drivers use structure EMAC_OpenConfigInfo and pass the maximum packet size into max_pkt_size field. V1, V2 and V3 NIMU drivers use structure NETIF_DEVICE and pass the maximum packet size into mtu field. Finally, please rebuild the test application with updated NDK and NIMU libraries. A reference example for C6678 is available at: rFô…�rGô}rHô(jÅXRJumbo frames have packet sizes larger than 1500 bytes. Jumbo frame support can be built into an application by linking with libraries compiled for Jumbo frame support. Two parts of changes are needed for NDK/NIMU example: 1. NDK libraries: The NDK libraries would have to be recompiled with the following pre-processor definition added: _INCLUDE_JUMBOFRAME_SUPPORT. 2. NIMU library: the CPSW switch has to be configured to support jumbo packet size and rebuilt. The coding is SOC specific, V0, V4, V5, V6 and V7 NIMU drivers use structure EMAC_OpenConfigInfo and pass the maximum packet size into max_pkt_size field. V1, V2 and V3 NIMU drivers use structure NETIF_DEVICE and pass the maximum packet size into mtu field. Finally, please rebuild the test application with updated NDK and NIMU libraries. A reference example for C6678 is available at: jÆjBôubjû)�rIô}rJô(jÅXOhttp://processors.wiki.ti.com/index.php/Enabling_Jumbo_Packet_Support_for_C6678rKôjÒ}rLô(UrefurijKôj×]jÖ]jÔ]jÕ]jÚ]ujÆjBôjÞ]rMôjçXOhttp://processors.wiki.ti.com/index.php/Enabling_Jumbo_Packet_Support_for_C6678rNô…�rOô}rPô(jÅUjÆjIôubajÐjÿubjçXQ. Note the work was implemented on earlier BIOS MCSDK package which was obsolete.rQô…�rRô}rSô(jÅXQ. Note the work was implemented on earlier BIOS MCSDK package which was obsolete.jÆjBôubeubeubjÇ)�rTô}rUô(jÅUjÆjójÎjÙéjÐjÑjÒ}rVô(jÔ]jÕ]jÖ]j×]rWôUZkeystone-pa-or-ndk-example-doesnt-work-in-other-boot-mode-than-no-boot-mode-using-ccs-jtagrXôajÚ]rYôj aujÜMÓjÝhjÞ]rZô(jà)�r[ô}r\ô(jÅX^Keystone PA or NDK example doesn’t work in other boot mode than no-boot mode using CCS/JTAG?r]ôjÆjTôjÎjÙéjÐjäjÒ}r^ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÓjÝhjÞ]r_ôjçX^Keystone PA or NDK example doesn’t work in other boot mode than no-boot mode using CCS/JTAG?r`ô…�raô}rbô(jÅj]ôjÆj[ôubaubjò)�rcô}rdô(jÅXgWhen running the program with CCS/JTAG, the default GEL file initializes the SOC. Same initialization, like turning on all the relevant power domains, and configuring the SGMII, Serdes, may not be implemented in other boot modes. First check GEL file under ccs_base\emulation\boards\\gel, function Global_Default_Setup() function to add the missing initializations into the application. Next, look for any boot mode dependent code in the application. For example, passPowerUp() is called in no_boot mode to turn on PA, this has to be executed in your application when booting from other boot modes as well.reôjÆjTôjÎjÙéjÐjõjÒ}rfô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÕjÝhjÞ]rgôjçXcWhen running the program with CCS/JTAG, the default GEL file initializes the SOC. Same initialization, like turning on all the relevant power domains, and configuring the SGMII, Serdes, may not be implemented in other boot modes. First check GEL file under ccs_baseemulationboardsgel, function Global_Default_Setup() function to add the missing initializations into the application. Next, look for any boot mode dependent code in the application. For example, passPowerUp() is called in no_boot mode to turn on PA, this has to be executed in your application when booting from other boot modes as well.rhô…�riô}rjô(jÅXgWhen running the program with CCS/JTAG, the default GEL file initializes the SOC. Same initialization, like turning on all the relevant power domains, and configuring the SGMII, Serdes, may not be implemented in other boot modes. First check GEL file under ccs_base\emulation\boards\\gel, function Global_Default_Setup() function to add the missing initializations into the application. Next, look for any boot mode dependent code in the application. For example, passPowerUp() is called in no_boot mode to turn on PA, this has to be executed in your application when booting from other boot modes as well.jÆjcôubaubeubeubjÇ)�rkô}rlô(jÅUjÆjÇéjÎjÙéjÐjÑjÒ}rmô(jÔ]jÕ]jÖ]j×]rnôU#additional-documentation-referencesroôajÚ]rpôjŒaujÜMÚjÝhjÞ]rqô(jà)�rrô}rsô(jÅX#Additional Documentation ReferencesrtôjÆjkôjÎjÙéjÐjäjÒ}ruô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÚjÝhjÞ]rvôjçX#Additional Documentation Referencesrwô…�rxô}ryô(jÅjtôjÆjrôubaubjy )�rzô}r{ô(jÅUjÆjkôjÎjÙéjÐjÔ jÒ}r|ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r}ôj~ )�r~ô}rô(jÅUjÒ}r€ô(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjzôjÞ]r�ô(jƒ )�r‚ô}rƒô(jÅUjÒ}r„ô(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆj~ôjÞ]jÐj‡ ubjƒ )�r…ô}r†ô(jÅUjÒ}r‡ô(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK,ujÆj~ôjÞ]jÐj‡ ubj¥ )�rˆô}r‰ô(jÅUjÒ}rŠô(jÔ]jÕ]jÖ]j×]jÚ]ujÆj~ôjÞ]r‹ô(j� )�rŒô}r�ô(jÅUjÒ}rŽô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆôjÞ]r�ô(j• )�r�ô}r‘ô(jÅUjÒ}r’ô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒôjÞ]r“ôjò)�r”ô}r•ô(jÅX **Document**r–ôjÆj�ôjÎjÙéjÐjõjÒ}r—ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÝjÞ]r˜ôjÚ)�r™ô}ršô(jÅj–ôjÒ}r›ô(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”ôjÞ]rœôjçXDocumentr�ô…�ržô}rŸô(jÅUjÆj™ôubajÐjâubaubajÐj¢ ubj• )�r ô}r¡ô(jÅUjÒ}r¢ô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŒôjÞ]r£ôjò)�r¤ô}r¥ô(jÅX **Location**r¦ôjÆj ôjÎjÙéjÐjõjÒ}r§ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMÝjÞ]r¨ôjÚ)�r©ô}rªô(jÅj¦ôjÒ}r«ô(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¤ôjÞ]r¬ôjçXLocationr­ô…�r®ô}r¯ô(jÅUjÆj©ôubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r°ô}r±ô(jÅUjÒ}r²ô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆôjÞ]r³ô(j• )�r´ô}rµô(jÅUjÒ}r¶ô(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°ôjÞ]r·ôjò)�r¸ô}r¹ô(jÅX NDK Programmer's Reference GuiderºôjÆj´ôjÎjÙéjÐjõjÒ}r»ô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMßjÞ]r¼ôjçX NDK Programmer's Reference Guider½ô…�r¾ô}r¿ô(jÅjºôjÆj¸ôubaubajÐj¢ ubj• )�rÀô}rÁô(jÅUjÒ}rÂô(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°ôjÞ]rÃôjò)�rÄô}rÅô(jÅX*http://www-s.ti.com/sc/techlit/spru524.pdfrÆôjÆjÀôjÎjÙéjÐjõjÒ}rÇô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMßjÞ]rÈôjû)�rÉô}rÊô(jÅjÆôjÒ}rËô(UrefurijÆôj×]jÖ]jÔ]jÕ]jÚ]ujÆjÄôjÞ]rÌôjçX*http://www-s.ti.com/sc/techlit/spru524.pdfrÍô…�rÎô}rÏô(jÅUjÆjÉôubajÐjÿubaubajÐj¢ ubejÐj£ ubj� )�rÐô}rÑô(jÅUjÒ}rÒô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆôjÞ]rÓô(j• )�rÔô}rÕô(jÅUjÒ}rÖô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐôjÞ]r×ôjò)�rØô}rÙô(jÅXNDK User's GuiderÚôjÆjÔôjÎjÙéjÐjõjÒ}rÛô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMájÞ]rÜôjçXNDK User's GuiderÝô…�rÞô}rßô(jÅjÚôjÆjØôubaubajÐj¢ ubj• )�ràô}ráô(jÅUjÒ}râô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÐôjÞ]rãôjò)�räô}råô(jÅX*http://www-s.ti.com/sc/techlit/spru523.pdfræôjÆjàôjÎjÙéjÐjõjÒ}rçô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMájÞ]rèôjû)�réô}rêô(jÅjæôjÒ}rëô(Urefurijæôj×]jÖ]jÔ]jÕ]jÚ]ujÆjäôjÞ]rìôjçX*http://www-s.ti.com/sc/techlit/spru523.pdfríô…�rîô}rïô(jÅUjÆjéôubajÐjÿubaubajÐj¢ ubejÐj£ ubj� )�rðô}rñô(jÅUjÒ}ròô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆôjÞ]róô(j• )�rôô}rõô(jÅUjÒ}röô(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðôjÞ]r÷ôjò)�røô}rùô(jÅXNetwork Developers Kit FAQrúôjÆjôôjÎjÙéjÐjõjÒ}rûô(jÔ]jÕ]jÖ]j×]jÚ]ujÜMãjÞ]rüôjçXNetwork Developers Kit FAQrýô…�rþô}rÿô(jÅjúôjÆjøôubaubajÐj¢ ubj• )�rõ}rõ(jÅUjÒ}rõ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjðôjÞ]rõjò)�rõ}rõ(jÅX`Network Developers Kit FAQ`_rõjÆjõjÎjÙéjÐjõjÒ}rõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMãjÞ]rõjû)�r õ}r õ(jÅjõjþKjÆjõjÐjÿjÒ}r õ(UnameXNetwork Developers Kit FAQjXBhttp://processors.wiki.ti.com/index.php/Network_Developers_Kit_FAQr õj×]jÖ]jÔ]jÕ]jÚ]ujÞ]r õjçXNetwork Developers Kit FAQrõ…�rõ}rõ(jÅUjÆj õubaubaubajÐj¢ ubejÐj£ ubj� )�rõ}rõ(jÅUjÒ}rõ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆôjÞ]rõ(j• )�rõ}rõ(jÅUjÒ}rõ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõjÞ]rõjò)�rõ}rõ(jÅX0NDK Support Package Ethernet Driver Design GuiderõjÆjõjÎjÙéjÐjõjÒ}rõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMåjÞ]rõjçX0NDK Support Package Ethernet Driver Design Guiderõ…�rõ}r õ(jÅjõjÆjõubaubajÐj¢ ubj• )�r!õ}r"õ(jÅUjÒ}r#õ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjõjÞ]r$õjò)�r%õ}r&õ(jÅX*http://www-s.ti.com/sc/techlit/sprufp2.pdfr'õjÆj!õjÎjÙéjÐjõjÒ}r(õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMåjÞ]r)õjû)�r*õ}r+õ(jÅj'õjÒ}r,õ(Urefurij'õj×]jÖ]jÔ]jÕ]jÚ]ujÆj%õjÞ]r-õjçX*http://www-s.ti.com/sc/techlit/sprufp2.pdfr.õ…�r/õ}r0õ(jÅUjÆj*õubajÐjÿubaubajÐj¢ ubejÐj£ ubj� )�r1õ}r2õ(jÅUjÒ}r3õ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjˆôjÞ]r4õ(j• )�r5õ}r6õ(jÅUjÒ}r7õ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj1õjÞ]r8õjò)�r9õ}r:õ(jÅX+Rebuilding_the_NDK_Core Rebuilding NDK Corer;õjÆj5õjÎjÙéjÐjõjÒ}r<õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMèjÞ]r=õjçX+Rebuilding_the_NDK_Core Rebuilding NDK Corer>õ…�r?õ}r@õ(jÅj;õjÆj9õubaubajÐj¢ ubj• )�rAõ}rBõ(jÅUjÒ}rCõ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj1õjÞ]rDõjò)�rEõ}rFõ(jÅX@http://processors.wiki.ti.com/index.php/ Rebuilding_the_NDK_CorejÆjAõjÎjÙéjÐjõjÒ}rGõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜMèjÞ]rHõ(jû)�rIõ}rJõ(jÅX(http://processors.wiki.ti.com/index.php/rKõjÒ}rLõ(UrefurijKõj×]jÖ]jÔ]jÕ]jÚ]ujÆjEõjÞ]rMõjçX(http://processors.wiki.ti.com/index.php/rNõ…�rOõ}rPõ(jÅUjÆjIõubajÐjÿubjçX Rebuilding_the_NDK_CorerQõ…�rRõ}rSõ(jÅX Rebuilding_the_NDK_CorejÆjEõubeubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubj)�rTõ}rUõ(jÅXb.. _Network Developers Kit FAQ: http://processors.wiki.ti.com/index.php/Network_Developers_Kit_FAQjKjÆjkôjÎjÙéjÐj jÒ}rVõ(jj õj×]rWõUnetwork-developers-kit-faqrXõajÖ]jÔ]jÕ]jÚ]rYõhraujÜM,6jÝhjÞ]ubj7)�rZõ}r[õ(jÅX?http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_NWALjÆjkôjÎj:X=source/rtos/PDK_Platform_Software/Device_Drivers/NWAL.rst.incr\õ…�r]õ}r^õbjÐj>jÒ}r_õ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r`õjçX?http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_NWALraõ…�rbõ}rcõ(jÅUjÆjZõubaubjc)�rdõ}reõ(jÅUjÆjkôjÎj]õjÐjfjÒ}rfõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rgõji)�rhõ}riõ(jÅUjlKjÆjdõjÎj]õjÐjÜjÒ}rjõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�rkõ}rlõ(jÅX IntroductionrmõjKjÆjkôjÎj]õjÐjlKjÒ}rnõ(j×]roõUid141rpõajÖ]jÔ]rqõX introductionrrõajÕ]jÚ]ujÜNjÝhjÞ]rsõjçX Introductionrtõ…�ruõ}rvõ(jÅjmõjÆjkõubaubjc)�rwõ}rxõ(jÅUjÆjkôjÎj]õjÐjfjÒ}ryõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rzõji)�r{õ}r|õ(jÅXÏThe NWAL (Network Adaptation Layer) driver provides a well-defined set of APIs which could be used for applications interfacing with NetCP (Network Coprocessor) module in Keystone family of SOCs (C66x, K2x).r}õjlKjÆjwõjÎj]õjÐjÜjÒ}r~õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rõjçXÏThe NWAL (Network Adaptation Layer) driver provides a well-defined set of APIs which could be used for applications interfacing with NetCP (Network Coprocessor) module in Keystone family of SOCs (C66x, K2x).r€õ…�r�õ}r‚õ(jÅj}õjÆj{õubaubaubjhK)�rƒõ}r„õ(jÅXDriver Featuresr…õjÆjkôjÎj]õjÐjlKjÒ}r†õ(j×]r‡õUdriver-featuresrˆõajÖ]jÔ]jÕ]jÚ]r‰õjFaujÜNjÝhjÞ]rŠõjçXDriver Featuresr‹õ…�rŒõ}r�õ(jÅj…õjÆjƒõubaubjt)�rŽõ}r�õ(jÅUjÆjkôjÎj]õjÐjwjÒ}r�õ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r‘õ(j{)�r’õ}r“õ(jÅX2Initialization of NetCP low level driver resourcesr”õjÆjŽõjÎj]õjÐjjÒ}r•õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r–õjò)�r—õ}r˜õ(jÅj”õjÆj’õjÎj]õjÐjõjÒ}r™õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ršõjçX2Initialization of NetCP low level driver resourcesr›õ…�rœõ}r�õ(jÅj”õjÆj—õubaubaubj{)�ržõ}rŸõ(jÅXDInitialization of Packet DMA related resources associated with NetCPr õjÆjŽõjÎj]õjÐjjÒ}r¡õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¢õjò)�r£õ}r¤õ(jÅj õjÆjžõjÎj]õjÐjõjÒ}r¥õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¦õjçXDInitialization of Packet DMA related resources associated with NetCPr§õ…�r¨õ}r©õ(jÅj õjÆj£õubaubaubj{)�rªõ}r«õ(jÅXAClassification of incoming packets based on L2: MAC header fieldsr¬õjÆjŽõjÎj]õjÐjjÒ}r­õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r®õjò)�r¯õ}r°õ(jÅj¬õjÆjªõjÎj]õjÐjõjÒ}r±õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r²õjçXAClassification of incoming packets based on L2: MAC header fieldsr³õ…�r´õ}rµõ(jÅj¬õjÆj¯õubaubaubj{)�r¶õ}r·õ(jÅXGClassification of incoming packets based on L3: IPv4/IPv6 header fieldsjÆjŽõjÎj]õjÐjjÒ}r¸õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r¹õjò)�rºõ}r»õ(jÅXGClassification of incoming packets based on L3: IPv4/IPv6 header fieldsr¼õjÆj¶õjÎj]õjÐjõjÒ}r½õ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¾õjçXGClassification of incoming packets based on L3: IPv4/IPv6 header fieldsr¿õ…�rÀõ}rÁõ(jÅj¼õjÆjºõubaubaubj{)�rÂõ}rÃõ(jÅX5Routing of packets to host based on L4: UDP/TCP/GTP-UrÄõjÆjŽõjÎj]õjÐjjÒ}rÅõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÆõjò)�rÇõ}rÈõ(jÅjÄõjÆjÂõjÎj]õjÐjõjÒ}rÉõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÊõjçX5Routing of packets to host based on L4: UDP/TCP/GTP-UrËõ…�rÌõ}rÍõ(jÅjÄõjÆjÇõubaubaubj{)�rÎõ}rÏõ(jÅX-Unidirectional IPSec SA creation and deletionrÐõjÆjŽõjÎj]õjÐjjÒ}rÑõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÒõjò)�rÓõ}rÔõ(jÅjÐõjÆjÎõjÎj]õjÐjõjÒ}rÕõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÖõjçX-Unidirectional IPSec SA creation and deletionr×õ…�rØõ}rÙõ(jÅjÐõjÆjÓõubaubaubj{)�rÚõ}rÛõ(jÅXGIn band offload of IPSec encryption/decryption for the outgoing packetsjÆjŽõjÎj]õjÐjjÒ}rÜõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÝõjò)�rÞõ}rßõ(jÅXGIn band offload of IPSec encryption/decryption for the outgoing packetsràõjÆjÚõjÎj]õjÐjõjÒ}ráõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]râõjçXGIn band offload of IPSec encryption/decryption for the outgoing packetsrãõ…�räõ}råõ(jÅjàõjÆjÞõubaubaubj{)�ræõ}rçõ(jÅX@Access to SA data mode acceleration for data plane applications.rèõjÆjŽõjÎj]õjÐjjÒ}réõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rêõjò)�rëõ}rìõ(jÅjèõjÆjæõjÎj]õjÐjõjÒ}ríõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rîõjçX@Access to SA data mode acceleration for data plane applications.rïõ…�rðõ}rñõ(jÅjèõjÆjëõubaubaubj{)�ròõ}róõ(jÅXóSupports offload of the following features to NETCP Hardware during transmission of packets: - IPv4 checksum/L4:TCP/UDP checksum/IPSec Encryption - Redirection of packets through a specific MAC port - Software Insertion of L2/L3/L4 header jÆjŽõjÎNjÐjjÒ}rôõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rõõ(jò)�röõ}r÷õ(jÅX\Supports offload of the following features to NETCP Hardware during transmission of packets:røõjÆjòõjÎj]õjÐjõjÒ}rùõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rúõjçX\Supports offload of the following features to NETCP Hardware during transmission of packets:rûõ…�rüõ}rýõ(jÅjøõjÆjöõubaubjt)�rþõ}rÿõ(jÅUjÒ}rö(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆjòõjÞ]rö(j{)�rö}rö(jÅX2IPv4 checksum/L4:TCP/UDP checksum/IPSec EncryptionröjÒ}rö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþõjÞ]röjò)�rö}rö(jÅjöjÆjöjÎj]õjÐjõjÒ}r ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r öjçX2IPv4 checksum/L4:TCP/UDP checksum/IPSec Encryptionr ö…�r ö}r ö(jÅjöjÆjöubaubajÐjubj{)�rö}rö(jÅX2Redirection of packets through a specific MAC portröjÒ}rö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþõjÞ]röjò)�rö}rö(jÅjöjÆjöjÎj]õjÐjõjÒ}rö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]röjçX2Redirection of packets through a specific MAC portrö…�rö}rö(jÅjöjÆjöubaubajÐjubj{)�rö}rö(jÅX&Software Insertion of L2/L3/L4 header jÒ}rö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþõjÞ]röjò)�rö}rö(jÅX%Software Insertion of L2/L3/L4 headerr öjÆjöjÎj]õjÐjõjÒ}r!ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r"öjçX%Software Insertion of L2/L3/L4 headerr#ö…�r$ö}r%ö(jÅj öjÆjöubaubajÐjubejÐjwubeubj{)�r&ö}r'ö(jÅX-Upon reception of packet, module provides additional meta data details including: - Status of IP checksum/UDP/TCP checksum results - Offset to L2/L3/L4 protocol offsets. Appropriate layer offset will be valid only if classification or routing is enabled at NETCP - Ingress MAC port information jÆjŽõjÎNjÐjjÒ}r(ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r)ö(jò)�r*ö}r+ö(jÅXQUpon reception of packet, module provides additional meta data details including:r,öjÆj&öjÎj]õjÐjõjÒ}r-ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r.öjçXQUpon reception of packet, module provides additional meta data details including:r/ö…�r0ö}r1ö(jÅj,öjÆj*öubaubjt)�r2ö}r3ö(jÅUjÒ}r4ö(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÆj&öjÞ]r5ö(j{)�r6ö}r7ö(jÅX.Status of IP checksum/UDP/TCP checksum resultsr8öjÒ}r9ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆj2öjÞ]r:öjò)�r;ö}r<ö(jÅj8öjÆj6öjÎj]õjÐjõjÒ}r=ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜK#jÞ]r>öjçX.Status of IP checksum/UDP/TCP checksum resultsr?ö…�r@ö}rAö(jÅj8öjÆj;öubaubajÐjubj{)�rBö}rCö(jÅX�Offset to L2/L3/L4 protocol offsets. Appropriate layer offset will be valid only if classification or routing is enabled at NETCPjÒ}rDö(jÔ]jÕ]jÖ]j×]jÚ]ujÆj2öjÞ]rEöjò)�rFö}rGö(jÅX�Offset to L2/L3/L4 protocol offsets. Appropriate layer offset will be valid only if classification or routing is enabled at NETCPrHöjÆjBöjÎj]õjÐjõjÒ}rIö(jÔ]jÕ]jÖ]j×]jÚ]ujÜK$jÞ]rJöjçX�Offset to L2/L3/L4 protocol offsets. Appropriate layer offset will be valid only if classification or routing is enabled at NETCPrKö…�rLö}rMö(jÅjHöjÆjFöubaubajÐjubj{)�rNö}rOö(jÅXIngress MAC port information jÒ}rPö(jÔ]jÕ]jÖ]j×]jÚ]ujÆj2öjÞ]rQöjò)�rRö}rSö(jÅXIngress MAC port informationrTöjÆjNöjÎj]õjÐjõjÒ}rUö(jÔ]jÕ]jÖ]j×]jÚ]ujÜK&jÞ]rVöjçXIngress MAC port informationrWö…�rXö}rYö(jÅjTöjÆjRöubaubajÐjubejÐjwubeubeubjhK)�rZö}r[ö(jÅXModes of Operationr\öjKjÆjkôjÎj]õjÐjlKjÒ}r]ö(j×]r^öUid142r_öajÖ]jÔ]r`öj)èajÕ]jÚ]ujÜNjÝhjÞ]raöjçXModes of Operationrbö…�rcö}rdö(jÅj\öjÆjZöubaubjò)�reö}rfö(jÅXðFollowing modes of operations are supported by NWAL when sending control configuration request to configure NetCP firmware. **BLOCKING Mode**: In this mode, status of API request used to configure NetCP is returned back in API call context.jÆjkôjÎj]õjÐjõjÒ}rgö(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÝhjÞ]rhö(jçX|Following modes of operations are supported by NWAL when sending control configuration request to configure NetCP firmware. riö…�rjö}rkö(jÅX|Following modes of operations are supported by NWAL when sending control configuration request to configure NetCP firmware. jÆjeöubjÚ)�rlö}rmö(jÅX**BLOCKING Mode**jÒ}rnö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjeöjÞ]roöjçX BLOCKING Moderpö…�rqö}rrö(jÅUjÆjlöubajÐjâubjçXc: In this mode, status of API request used to configure NetCP is returned back in API call context.rsö…�rtö}ruö(jÅXc: In this mode, status of API request used to configure NetCP is returned back in API call context.jÆjeöubeubjò)�rvö}rwö(jÅXw**Non-BLOCKING Mode**: In this mode, application can invoke a separate poll routine to retrieve status response result.jÆjkôjÎj]õjÐjõjÒ}rxö(jÔ]jÕ]jÖ]j×]jÚ]ujÜK0jÝhjÞ]ryö(jÚ)�rzö}r{ö(jÅX**Non-BLOCKING Mode**jÒ}r|ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjvöjÞ]r}öjçXNon-BLOCKING Moder~ö…�rö}r€ö(jÅUjÆjzöubajÐjâubjçXb: In this mode, application can invoke a separate poll routine to retrieve status response result.r�ö…�r‚ö}rƒö(jÅXb: In this mode, application can invoke a separate poll routine to retrieve status response result.jÆjvöubeubjc)�r„ö}r…ö(jÅUjÆjkôjÎj]õjÐjfjÒ}r†ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜK3jÝhjÞ]r‡öji)�rˆö}r‰ö(jÅUjlKjÆj„öjÎj]õjÐjÜjÒ}rŠö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubjhK)�r‹ö}rŒö(jÅXDriver Configurationr�öjÆjkôjÎj]õjÐjlKjÒ}rŽö(j×]r�öUdriver-configuration-nwalr�öajÖ]jÔ]jÕ]jÚ]r‘öjaujÜNjÝhjÞ]r’öjçXDriver Configurationr“ö…�r”ö}r•ö(jÅj�öjÆj‹öubaubjò)�r–ö}r—ö(jÅXKThe driver configures the NWAL subsystem using the nwalGlobCfg_t structure.r˜öjÆjkôjÎj]õjÐjõjÒ}r™ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÝhjÞ]ršöjçXKThe driver configures the NWAL subsystem using the nwalGlobCfg_t structure.r›ö…�rœö}r�ö(jÅj˜öjÆj–öubaubjò)�ržö}rŸö(jÅXThis structure must be initialized before the nwal_create() function API is called and cannot be changed afterwards. For details regarding individual fields of this structure, see the Doxygen help by opening PDK_INSTALL_DIR/packages/ti/drv/nwal/docs/doxygen/html/index.html.r öjÆjkôjÎj]õjÐjõjÒ}r¡ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜK;jÝhjÞ]r¢öjçXThis structure must be initialized before the nwal_create() function API is called and cannot be changed afterwards. For details regarding individual fields of this structure, see the Doxygen help by opening PDK_INSTALL_DIR/packages/ti/drv/nwal/docs/doxygen/html/index.html.r£ö…�r¤ö}r¥ö(jÅj öjÆjžöubaubjhK)�r¦ö}r§ö(jÅX**APIs**r¨öjKjÆjkôjÎj]õjÐjlKjÒ}r©ö(j×]rªöUid143r«öajÖ]jÔ]r¬öjtèajÕ]jÚ]ujÜNjÝhjÞ]r­öjÚ)�r®ö}r¯ö(jÅj¨öjÒ}r°ö(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¦öjÞ]r±öjçXAPIsr²ö…�r³ö}r´ö(jÅUjÆj®öubajÐjâubaubjò)�rµö}r¶ö(jÅX9API reference for application can be found in below file:r·öjÆjkôjÎj]õjÐjõjÒ}r¸ö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKCjÝhjÞ]r¹öjçX9API reference for application can be found in below file:rºö…�r»ö}r¼ö(jÅj·öjÆjµöubaubj)�r½ö}r¾ö(jÅX#include jÆjkôjÎj]õjÐjjÒ}r¿ö(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜM{6jÝhjÞ]rÀöjçX#include rÁö…�rÂö}rÃö(jÅUjÆj½öubaubjhK)�rÄö}rÅö(jÅXExamplerÆöjKjÆjkôjÎj]õjÐjlKjÒ}rÇö(j×]rÈöUid144rÉöajÖ]jÔ]rÊöj“èajÕ]jÚ]ujÜNjÝhjÞ]rËöjçXExamplerÌö…�rÍö}rÎö(jÅjÆöjÆjÄöubaubjy )�rÏö}rÐö(jÅUjÆjkôjÎj]õjÐjÔ jÒ}rÑö(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÒöj~ )�rÓö}rÔö(jÅUjÒ}rÕö(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjÏöjÞ]rÖö(jƒ )�r×ö}rØö(jÅUjÒ}rÙö(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÓöjÞ]jÐj‡ ubjƒ )�rÚö}rÛö(jÅUjÒ}rÜö(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÓöjÞ]jÐj‡ ubjƒ )�rÝö}rÞö(jÅUjÒ}rßö(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjÓöjÞ]jÐj‡ ubj‹ )�ràö}ráö(jÅUjÒ}râö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÓöjÞ]rãöj� )�räö}råö(jÅUjÒ}ræö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjàöjÞ]rçö(j• )�rèö}réö(jÅUjÒ}rêö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjäöjÞ]rëöjò)�rìö}ríö(jÅXNamerîöjÆjèöjÎj]õjÐjõjÒ}rïö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÞ]rðöjçXNamerñö…�ròö}róö(jÅjîöjÆjìöubaubajÐj¢ ubj• )�rôö}rõö(jÅUjÒ}röö(jÔ]jÕ]jÖ]j×]jÚ]ujÆjäöjÞ]r÷öjò)�røö}rùö(jÅX DescriptionrúöjÆjôöjÎj]õjÐjõjÒ}rûö(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÞ]rüöjçX Descriptionrýö…�rþö}rÿö(jÅjúöjÆjøöubaubajÐj¢ ubj• )�r÷}r÷(jÅUjÒ}r÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆjäöjÞ]r÷jò)�r÷}r÷(jÅXExpected Resultsr÷jÆj÷jÎj]õjÐjõjÒ}r÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÞ]r÷jçXExpected Resultsr ÷…�r ÷}r ÷(jÅj÷jÆj÷ubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r ÷}r ÷(jÅUjÒ}r÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÓöjÞ]r÷j� )�r÷}r÷(jÅUjÒ}r÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÷jÞ]r÷(j• )�r÷}r÷(jÅUjÒ}r÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷jÞ]r÷jò)�r÷}r÷(jÅXnwalUnitTest Applicationr÷jÆj÷jÎj]õjÐjõjÒ}r÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÞ]r÷jçXnwalUnitTest Applicationr÷…�r÷}r÷(jÅj÷jÆj÷ubaubajÐj¢ ubj• )�r ÷}r!÷(jÅUjÒ}r"÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷jÞ]r#÷jc)�r$÷}r%÷(jÅUjÒ}r&÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ÷jÞ]r'÷ji)�r(÷}r)÷(jÅX&Unit Test application to test all APIsr*÷jlKjÆj$÷jÎj]õjÐjÜjÒ}r+÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r,÷jçX&Unit Test application to test all APIsr-÷…�r.÷}r/÷(jÅj*÷jÆj(÷ubaubajÐjfubajÐj¢ ubj• )�r0÷}r1÷(jÅUjÒ}r2÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj÷jÞ]r3÷jc)�r4÷}r5÷(jÅUjÒ}r6÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj0÷jÞ]r7÷ji)�r8÷}r9÷(jÅX5User observes the output printed over the CCS consoler:÷jlKjÆj4÷jÎj]õjÐjÜjÒ}r;÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r<÷jçX5User observes the output printed over the CCS consoler=÷…�r>÷}r?÷(jÅj:÷jÆj8÷ubaubajÐjfubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubaubjhK)�r@÷}rA÷(jÅXAdditional ReferencesrB÷jKjÆjkôjÎj]õjÐjlKjÒ}rC÷(j×]rD÷Uid145rE÷ajÖ]jÔ]rF÷jéajÕ]jÚ]ujÜNjÝhjÞ]rG÷jçXAdditional ReferencesrH÷…�rI÷}rJ÷(jÅjB÷jÆj@÷ubaubjy )�rK÷}rL÷(jÅUjÆjkôjÎj]õjÐjÔ jÒ}rM÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rN÷j~ )�rO÷}rP÷(jÅUjÒ}rQ÷(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjK÷jÞ]rR÷(jƒ )�rS÷}rT÷(jÅUjÒ}rU÷(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆjO÷jÞ]jÐj‡ ubjƒ )�rV÷}rW÷(jÅUjÒ}rX÷(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK#ujÆjO÷jÞ]jÐj‡ ubj¥ )�rY÷}rZ÷(jÅUjÒ}r[÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆjO÷jÞ]r\÷(j� )�r]÷}r^÷(jÅUjÒ}r_÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆjY÷jÞ]r`÷(j• )�ra÷}rb÷(jÅUjÒ}rc÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]÷jÞ]rd÷jò)�re÷}rf÷(jÅX **Document**rg÷jÆja÷jÎj]õjÐjõjÒ}rh÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]ri÷jÚ)�rj÷}rk÷(jÅjg÷jÒ}rl÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆje÷jÞ]rm÷jçXDocumentrn÷…�ro÷}rp÷(jÅUjÆjj÷ubajÐjâubaubajÐj¢ ubj• )�rq÷}rr÷(jÅUjÒ}rs÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj]÷jÞ]rt÷jò)�ru÷}rv÷(jÅX **Location**rw÷jÆjq÷jÎj]õjÐjõjÒ}rx÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKXjÞ]ry÷jÚ)�rz÷}r{÷(jÅjw÷jÒ}r|÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆju÷jÞ]r}÷jçXLocationr~÷…�r÷}r€÷(jÅUjÆjz÷ubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r�÷}r‚÷(jÅUjÒ}rƒ÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆjY÷jÞ]r„÷(j• )�r…÷}r†÷(jÅUjÒ}r‡÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�÷jÞ]rˆ÷jò)�r‰÷}rŠ÷(jÅXAPI Reference Manualr‹÷jÆj…÷jÎj]õjÐjõjÒ}rŒ÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]r�÷jçXAPI Reference ManualrŽ÷…�r�÷}r�÷(jÅj‹÷jÆj‰÷ubaubajÐj¢ ubj• )�r‘÷}r’÷(jÅUjÒ}r“÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�÷jÞ]r”÷jò)�r•÷}r–÷(jÅXI$(TI_PDK_INSTALL_DIR)/packages/ti /drv/nwal/docs/doxygen/html/index .htmlr—÷jÆj‘÷jÎj]õjÐjõjÒ}r˜÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]r™÷jçXI$(TI_PDK_INSTALL_DIR)/packages/ti /drv/nwal/docs/doxygen/html/index .htmlrš÷…�r›÷}rœ÷(jÅj—÷jÆj•÷ubaubajÐj¢ ubejÐj£ ubj� )�r�÷}rž÷(jÅUjÒ}rŸ÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆjY÷jÞ]r ÷(j• )�r¡÷}r¢÷(jÅUjÒ}r£÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�÷jÞ]r¤÷jò)�r¥÷}r¦÷(jÅX Release Notesr§÷jÆj¡÷jÎj]õjÐjõjÒ}r¨÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]r©÷jçX Release Notesrª÷…�r«÷}r¬÷(jÅj§÷jÆj¥÷ubaubajÐj¢ ubj• )�r­÷}r®÷(jÅUjÒ}r¯÷(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�÷jÞ]r°÷jò)�r±÷}r²÷(jÅXK$(TI_PDK_INSTALL_DIR)/packages/ti /drv/nwal/docs/ReleaseNotes_NWAL_ LLD.pdfjÆj­÷jÎj]õjÐjõjÒ}r³÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜK^jÞ]r´÷(jçX1$(TI_PDK_INSTALL_DIR)/packages/ti /drv/nwal/docs/rµ÷…�r¶÷}r·÷(jÅX1$(TI_PDK_INSTALL_DIR)/packages/ti /drv/nwal/docs/jÆj±÷ubj¸ )�r¸÷}r¹÷(jÅXReleaseNotes_NWAL_rº÷jÒ}r»÷(j×]r¼÷Uid164r½÷ajÖ]jÔ]jÕ]jÚ]UrefidUid163r¾÷ujÆj±÷jÞ]r¿÷jçXReleaseNotes_NWAL_rÀ÷…�rÁ÷}rÂ÷(jÅUjÆj¸÷ubajÐj ubjçX LLD.pdfrÃ÷…�rÄ÷}rÅ÷(jÅX LLD.pdfjÆj±÷ubeubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubeubeubjÎjÏjÐjÑjÒ}rÆ÷(jÔ]jÕ]jÖ]j×]rÇ÷UcclinkrÈ÷ajÚ]rÉ÷jraujÜKÎjÝhjÞ]rÊ÷(jà)�rË÷}rÌ÷(jÅXCCLinkrÍ÷jÆj¶éjÎjÏjÐjäjÒ}rÎ÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÎjÝhjÞ]rÏ÷jçXCCLinkrÐ÷…�rÑ÷}rÒ÷(jÅjÍ÷jÆjË÷ubaubj7)�rÓ÷}rÔ÷(jÅXAhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_CCLINKjÆj¶éjÎj:XFsource/rtos/PDK_Platform_Software/Network_and_Transport/CCLink.rst.incrÕ÷…�rÖ÷}r×÷bjÐj>jÒ}rØ÷(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rÙ÷jçXAhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_CCLINKrÚ÷…�rÛ÷}rÜ÷(jÅUjÆjÓ÷ubaubj´éjÇ)�rÝ÷}rÞ÷(jÅUjÆj¶éjÎjÖ÷jÐjÑjÒ}rß÷(jÔ]jÕ]jÖ]j×]rà÷Uprotocol-overviewrá÷ajÚ]râ÷h™aujÜKjÝhjÞ]rã÷(jà)�rä÷}rå÷(jÅXProtocol Overviewræ÷jÆjÝ÷jÎjÖ÷jÐjäjÒ}rç÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rè÷jçXProtocol Overviewré÷…�rê÷}rë÷(jÅjæ÷jÆjä÷ubaubjò)�rì÷}rí÷(jÅX¹The implementation will demonstrate how to create, run and test CC-Link IE Field Network Basic examples on TI platforms. The following shows the CC-Link IE Field Network Basic Overview:rî÷jÆjÝ÷jÎjÖ÷jÐjõjÒ}rï÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rð÷jçX¹The implementation will demonstrate how to create, run and test CC-Link IE Field Network Basic examples on TI platforms. The following shows the CC-Link IE Field Network Basic Overview:rñ÷…�rò÷}ró÷(jÅjî÷jÆjì÷ubaubjt)�rô÷}rõ÷(jÅUjÆjÝ÷jÎjÖ÷jÐjwjÒ}rö÷(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]r÷÷(j{)�rø÷}rù÷(jÅX1 Gbit/s Ethernet based networkrú÷jÆjô÷jÎjÖ÷jÐjjÒ}rû÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rü÷jò)�rý÷}rþ÷(jÅjú÷jÆjø÷jÎjÖ÷jÐjõjÒ}rÿ÷(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]røjçX1 Gbit/s Ethernet based networkrø…�rø}rø(jÅjú÷jÆjý÷ubaubaubj{)�rø}rø(jÅX7Ethernet physical layer (Cat5e cable & RJ45 connectors)røjÆjô÷jÎjÖ÷jÐjjÒ}rø(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]røjò)�r ø}r ø(jÅjøjÆjøjÎjÖ÷jÐjõjÒ}r ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r øjçX7Ethernet physical layer (Cat5e cable & RJ45 connectors)r ø…�rø}rø(jÅjøjÆj øubaubaubj{)�rø}rø(jÅX254 stations per networkrøjÆjô÷jÎjÖ÷jÐjjÒ}rø(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]røjò)�rø}rø(jÅjøjÆjøjÎjÖ÷jÐjõjÒ}rø(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]røjçX254 stations per networkrø…�rø}rø(jÅjøjÆjøubaubaubj{)�rø}rø(jÅX100 meters between stationsrøjÆjô÷jÎjÖ÷jÐjjÒ}rø(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r øjò)�r!ø}r"ø(jÅjøjÆjøjÎjÖ÷jÐjõjÒ}r#ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r$øjçX100 meters between stationsr%ø…�r&ø}r'ø(jÅjøjÆj!øubaubaubj{)�r(ø}r)ø(jÅX/Completely deterministic without using switchesr*øjÆjô÷jÎjÖ÷jÐjjÒ}r+ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r,øjò)�r-ø}r.ø(jÅj*øjÆj(øjÎjÖ÷jÐjõjÒ}r/ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r0øjçX/Completely deterministic without using switchesr1ø…�r2ø}r3ø(jÅj*øjÆj-øubaubaubeubjc)�r4ø}r5ø(jÅUjÆjÝ÷jÎjÖ÷jÐjfjÒ}r6ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r7øji)�r8ø}r9ø(jÅUjlKjÆj4øjÎjÖ÷jÐjÜjÒ}r:ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�r;ø}r<ø(jÅUjÆj¶éjÎjÖ÷jÐjÑjÒ}r=ø(jÔ]jÕ]jÖ]j×]r>øUcode-organizationr?øajÚ]r@øh²aujÜKjÝhjÞ]rAø(jà)�rBø}rCø(jÅXCode OrganizationrDøjÆj;øjÎjÖ÷jÐjäjÒ}rEø(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rFøjçXCode OrganizationrGø…�rHø}rIø(jÅjDøjÆjBøubaubjò)�rJø}rKø(jÅX�The Directory structure for CC-Link IE Field Network Basic source code and examples for both NIMU and NIMU_ICSS is shown in the following table.rLøjÆj;øjÎjÖ÷jÐjõjÒ}rMø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rNøjçX�The Directory structure for CC-Link IE Field Network Basic source code and examples for both NIMU and NIMU_ICSS is shown in the following table.rOø…�rPø}rQø(jÅjLøjÆjJøubaubjy )�rRø}rSø(jÅUjÆj;øjÎjÖ÷jÐjÔ jÒ}rTø(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rUøj~ )�rVø}rWø(jÅUjÒ}rXø(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjRøjÞ]rYø(jƒ )�rZø}r[ø(jÅUjÒ}r\ø(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjVøjÞ]jÐj‡ ubjƒ )�r]ø}r^ø(jÅUjÒ}r_ø(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKSujÆjVøjÞ]jÐj‡ ubj¥ )�r`ø}raø(jÅUjÒ}rbø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjVøjÞ]rcø(j� )�rdø}reø(jÅUjÒ}rfø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`øjÞ]rgøj• )�rhø}riø(jÅUjÒ}rjø(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjdøjÞ]rkøjò)�rlø}rmø(jÅX**CCLink for CPSW i.e. NIMU**rnøjÆjhøjÎjÖ÷jÐjõjÒ}roø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK%jÞ]rpøjÚ)�rqø}rrø(jÅjnøjÒ}rsø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjløjÞ]rtøjçXCCLink for CPSW i.e. NIMUruø…�rvø}rwø(jÅUjÆjqøubajÐjâubaubajÐj¢ ubajÐj£ ubj� )�rxø}ryø(jÅUjÒ}rzø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`øjÞ]r{ø(j• )�r|ø}r}ø(jÅUjÒ}r~ø(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjxøjÞ]røjò)�r€ø}r�ø(jÅX**Master Station Source code**r‚øjÆj|øjÎjÖ÷jÐjõjÒ}rƒø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]r„øjÚ)�r…ø}r†ø(jÅj‚øjÒ}r‡ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj€øjÞ]rˆøjçXMaster Station Source coder‰ø…�rŠø}r‹ø(jÅUjÆj…øubajÐjâubaubajÐj¢ ubj• )�rŒø}r�ø(jÅUjÒ}rŽø(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjxøjÞ]r�øjò)�r�ø}r‘ø(jÅXQ$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/example/CCLink/cclink_masterr’øjÆjŒøjÎjÖ÷jÐjõjÒ}r“ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK'jÞ]r”øjçXQ$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/example/CCLink/cclink_masterr•ø…�r–ø}r—ø(jÅj’øjÆj�øubaubajÐj¢ ubejÐj£ ubj� )�r˜ø}r™ø(jÅUjÒ}ršø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`øjÞ]jÐj£ ubj� )�r›ø}rœø(jÅUjÒ}r�ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`øjÞ]ržø(j• )�rŸø}r ø(jÅUjÒ}r¡ø(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj›øjÞ]r¢øjò)�r£ø}r¤ø(jÅX**SLave Station Source code**r¥øjÆjŸøjÎjÖ÷jÐjõjÒ}r¦ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]r§øjÚ)�r¨ø}r©ø(jÅj¥øjÒ}rªø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj£øjÞ]r«øjçXSLave Station Source coder¬ø…�r­ø}r®ø(jÅUjÆj¨øubajÐjâubaubajÐj¢ ubj• )�r¯ø}r°ø(jÅUjÒ}r±ø(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj›øjÞ]r²øjò)�r³ø}r´ø(jÅXP$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/example/CCLink/cclink_slaverµøjÆj¯øjÎjÖ÷jÐjõjÒ}r¶ø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK)jÞ]r·øjçXP$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/example/CCLink/cclink_slaver¸ø…�r¹ø}rºø(jÅjµøjÆj³øubaubajÐj¢ ubejÐj£ ubj� )�r»ø}r¼ø(jÅUjÒ}r½ø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`øjÞ]jÐj£ ubj� )�r¾ø}r¿ø(jÅUjÒ}rÀø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`øjÞ]rÁø(j• )�rÂø}rÃø(jÅUjÒ}rÄø(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj¾øjÞ]rÅøjò)�rÆø}rÇø(jÅX**Test Examples script**rÈøjÆjÂøjÎjÖ÷jÐjõjÒ}rÉø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÞ]rÊøjÚ)�rËø}rÌø(jÅjÈøjÒ}rÍø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÆøjÞ]rÎøjçXTest Examples scriptrÏø…�rÐø}rÑø(jÅUjÆjËøubajÐjâubaubajÐj¢ ubj• )�rÒø}rÓø(jÅUjÒ}rÔø(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj¾øjÞ]rÕøjò)�rÖø}r×ø(jÅXI$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/example/CCLink/rØøjÆjÒøjÎjÖ÷jÐjõjÒ}rÙø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK+jÞ]rÚøjçXI$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/example/CCLink/rÛø…�rÜø}rÝø(jÅjØøjÆjÖøubaubajÐj¢ ubejÐj£ ubj� )�rÞø}rßø(jÅUjÒ}ràø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`øjÞ]jÐj£ ubj� )�ráø}râø(jÅUjÒ}rãø(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`øjÞ]räø(j• )�råø}ræø(jÅUjÒ}rçø(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjáøjÞ]rèøjò)�réø}rêø(jÅX**Test Examples main code**rëøjÆjåøjÎjÖ÷jÐjõjÒ}rìø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÞ]ríøjÚ)�rîø}rïø(jÅjëøjÒ}rðø(jÔ]jÕ]jÖ]j×]jÚ]ujÆjéøjÞ]rñøjçXTest Examples main coderòø…�róø}rôø(jÅUjÆjîøubajÐjâubaubajÐj¢ ubj• )�rõø}röø(jÅUjÒ}r÷ø(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjáøjÞ]røøjò)�rùø}rúø(jÅXG$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/example/CCLink/srcrûøjÆjõøjÎjÖ÷jÐjõjÒ}rüø(jÔ]jÕ]jÖ]j×]jÚ]ujÜK-jÞ]rýøjçXG$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu/example/CCLink/srcrþø…�rÿø}rù(jÅjûøjÆjùøubaubajÐj¢ ubejÐj£ ubj� )�rù}rù(jÅUjÒ}rù(jÔ]jÕ]jÖ]j×]jÚ]ujÆj`øjÞ]jÐj£ ubejÐjÒ ubejÐjÓ ubaubjy )�rù}rù(jÅUjÆj;øjÎjÖ÷jÐjÔ jÒ}rù(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rùj~ )�rù}r ù(jÅUjÒ}r ù(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjùjÞ]r ù(jƒ )�r ù}r ù(jÅUjÒ}rù(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjùjÞ]jÐj‡ ubjƒ )�rù}rù(jÅUjÒ}rù(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKXujÆjùjÞ]jÐj‡ ubj¥ )�rù}rù(jÅUjÒ}rù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]rù(j� )�rù}rù(jÅUjÒ}rù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]rùj• )�rù}rù(jÅUjÒ}rù(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjùjÞ]rùjò)�rù}rù(jÅX"**CCLink for ICSS i.e. NIMU_ICSS**r ùjÆjùjÎjÖ÷jÐjõjÒ}r!ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r"ùjÚ)�r#ù}r$ù(jÅj ùjÒ}r%ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]r&ùjçXCCLink for ICSS i.e. NIMU_ICSSr'ù…�r(ù}r)ù(jÅUjÆj#ùubajÐjâubaubajÐj¢ ubajÐj£ ubj� )�r*ù}r+ù(jÅUjÒ}r,ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]r-ù(j• )�r.ù}r/ù(jÅUjÒ}r0ù(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj*ùjÞ]r1ùjò)�r2ù}r3ù(jÅX**Master Station Source code**r4ùjÆj.ùjÎjÖ÷jÐjõjÒ}r5ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]r6ùjÚ)�r7ù}r8ù(jÅj4ùjÒ}r9ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆj2ùjÞ]r:ùjçXMaster Station Source coder;ù…�r<ù}r=ù(jÅUjÆj7ùubajÐjâubaubajÐj¢ ubj• )�r>ù}r?ù(jÅUjÒ}r@ù(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj*ùjÞ]rAùjò)�rBù}rCù(jÅXV$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/example/CCLink/cclink_masterrDùjÆj>ùjÎjÖ÷jÐjõjÒ}rEù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]rFùjçXV$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/example/CCLink/cclink_masterrGù…�rHù}rIù(jÅjDùjÆjBùubaubajÐj¢ ubejÐj£ ubj� )�rJù}rKù(jÅUjÒ}rLù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]jÐj£ ubj� )�rMù}rNù(jÅUjÒ}rOù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]rPù(j• )�rQù}rRù(jÅUjÒ}rSù(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjMùjÞ]rTùjò)�rUù}rVù(jÅX**Slave Station Source code**rWùjÆjQùjÎjÖ÷jÐjõjÒ}rXù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]rYùjÚ)�rZù}r[ù(jÅjWùjÒ}r\ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjUùjÞ]r]ùjçXSlave Station Source coder^ù…�r_ù}r`ù(jÅUjÆjZùubajÐjâubaubajÐj¢ ubj• )�raù}rbù(jÅUjÒ}rcù(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjMùjÞ]rdùjò)�reù}rfù(jÅXU$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/example/CCLink/cclink_slavergùjÆjaùjÎjÖ÷jÐjõjÒ}rhù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK6jÞ]riùjçXU$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/example/CCLink/cclink_slaverjù…�rkù}rlù(jÅjgùjÆjeùubaubajÐj¢ ubejÐj£ ubj� )�rmù}rnù(jÅUjÒ}roù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]jÐj£ ubj� )�rpù}rqù(jÅUjÒ}rrù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]rsù(j• )�rtù}ruù(jÅUjÒ}rvù(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjpùjÞ]rwùjò)�rxù}ryù(jÅX**Test Examples script**rzùjÆjtùjÎjÖ÷jÐjõjÒ}r{ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]r|ùjÚ)�r}ù}r~ù(jÅjzùjÒ}rù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjxùjÞ]r€ùjçXTest Examples scriptr�ù…�r‚ù}rƒù(jÅUjÆj}ùubajÐjâubaubajÐj¢ ubj• )�r„ù}r…ù(jÅUjÒ}r†ù(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjpùjÞ]r‡ùjò)�rˆù}r‰ù(jÅXN$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/example/CCLink/rŠùjÆj„ùjÎjÖ÷jÐjõjÒ}r‹ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK8jÞ]rŒùjçXN$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/example/CCLink/r�ù…�rŽù}r�ù(jÅjŠùjÆjˆùubaubajÐj¢ ubejÐj£ ubj� )�r�ù}r‘ù(jÅUjÒ}r’ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]jÐj£ ubj� )�r“ù}r”ù(jÅUjÒ}r•ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]r–ù(j• )�r—ù}r˜ù(jÅUjÒ}r™ù(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj“ùjÞ]ršùjò)�r›ù}rœù(jÅX**Test Examples main code**r�ùjÆj—ùjÎjÖ÷jÐjõjÒ}ržù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]rŸùjÚ)�r ù}r¡ù(jÅj�ùjÒ}r¢ù(jÔ]jÕ]jÖ]j×]jÚ]ujÆj›ùjÞ]r£ùjçXTest Examples main coder¤ù…�r¥ù}r¦ù(jÅUjÆj ùubajÐjâubaubajÐj¢ ubj• )�r§ù}r¨ù(jÅUjÒ}r©ù(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj“ùjÞ]rªùjò)�r«ù}r¬ù(jÅXL$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/example/CCLink/srcr­ùjÆj§ùjÎjÖ÷jÐjõjÒ}r®ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK:jÞ]r¯ùjçXL$(TI_PDK_INSTALL_DIR)/packages/ti/transport/ndk/nimu_icss/example/CCLink/srcr°ù…�r±ù}r²ù(jÅj­ùjÆj«ùubaubajÐj¢ ubejÐj£ ubj� )�r³ù}r´ù(jÅUjÒ}rµù(jÔ]jÕ]jÖ]j×]jÚ]ujÆjùjÞ]jÐj£ ubejÐjÒ ubejÐjÓ ubaubjc)�r¶ù}r·ù(jÅUjÆj;øjÎjÖ÷jÐjfjÒ}r¸ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK=jÝhjÞ]r¹ùji)�rºù}r»ù(jÅUjlKjÆj¶ùjÎjÖ÷jÐjÜjÒ}r¼ù(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�r½ù}r¾ù(jÅUjÆj¶éjÎjÖ÷jÐjÑjÒ}r¿ù(jÔ]jÕ]jÖ]j×]rÀùUbuilding-the-examplesrÁùajÚ]rÂùh´aujÜK@jÝhjÞ]rÃù(jà)�rÄù}rÅù(jÅXBuilding the ExamplesrÆùjÆj½ùjÎjÖ÷jÐjäjÒ}rÇù(jÔ]jÕ]jÖ]j×]jÚ]ujÜK@jÝhjÞ]rÈùjçXBuilding the ExamplesrÉù…�rÊù}rËù(jÅjÆùjÆjÄùubaubjò)�rÌù}rÍù(jÅXÛUse pdkProjectCreate.sh for Linux environment or pdkProjectCreate.bat for Windows. This can be found under the /packages folder. The only modification to these scripts, if any, is to update the CCS_INSTALL_PATH variable to point to CCS location if its not in the c:\ti\ccsv6 directory . Please refer to `Rebuilding PDK `__ for details of example project creation and how to run the example projects using CCS.jÆj½ùjÎjÖ÷jÐjõjÒ}rÎù(jÔ]jÕ]jÖ]j×]jÚ]ujÜKBjÝhjÞ]rÏù(jçX2Use pdkProjectCreate.sh for Linux environment or pdkProjectCreate.bat for Windows. This can be found under the /packages folder. The only modification to these scripts, if any, is to update the CCS_INSTALL_PATH variable to point to CCS location if its not in the c:ticcsv6 directory . Please refer to rÐù…�rÑù}rÒù(jÅX4Use pdkProjectCreate.sh for Linux environment or pdkProjectCreate.bat for Windows. This can be found under the /packages folder. The only modification to these scripts, if any, is to update the CCS_INSTALL_PATH variable to point to CCS location if its not in the c:\ti\ccsv6 directory . Please refer to jÆjÌùubjû)�rÓù}rÔù(jÅXP`Rebuilding PDK `__jÒ}rÕù(UnameXRebuilding PDKjX;index_how_to_guides.html#rebuild-drivers-from-pdk-directoryj×]jÖ]jÔ]jÕ]jÚ]ujÆjÌùjÞ]rÖùjçXRebuilding PDKr×ù…�rØù}rÙù(jÅUjÆjÓùubajÐjÿubjçXW for details of example project creation and how to run the example projects using CCS.rÚù…�rÛù}rÜù(jÅXW for details of example project creation and how to run the example projects using CCS.jÆjÌùubeubjÇ)�rÝù}rÞù(jÅUjÆj½ùjÎjÖ÷jÐjÑjÒ}rßù(jÔ]jÕ]jÖ]j×]ràùU2cc-link-ie-field-network-basic-example-descriptionráùajÚ]râùhwaujÜKLjÝhjÞ]rãù(jà)�räù}råù(jÅX2CC-Link IE Field Network Basic Example DescriptionræùjÆjÝùjÎjÖ÷jÐjäjÒ}rçù(jÔ]jÕ]jÖ]j×]jÚ]ujÜKLjÝhjÞ]rèùjçX2CC-Link IE Field Network Basic Example Descriptionréù…�rêù}rëù(jÅjæùjÆjäùubaubjò)�rìù}ríù(jÅX¯For each EVM Type supported, there is a cclink example which demonstates cyclic data communication between master and slave station. Once the application is loaded via CCS and run, you will be able to see master sending cyclic data packets and slave receiving the packet. For example, the config file for NIMU for CPSW for idkAM572x, can be found in ti/transport/ndk/nimu/example/CCLink/am572x/armv7/bios/cclink_idkAM572x.cfg. The default IP address for master is 192.168.3.100 and for slave it is 192.168.3.4. If you wish to re-configure the IP address of the CPSW interface you will need to modify the following configuration parameters. make sure master and slave are in same network.rîùjÆjÝùjÎjÖ÷jÐjõjÒ}rïù(jÔ]jÕ]jÖ]j×]jÚ]ujÜKNjÝhjÞ]rðùjçX¯For each EVM Type supported, there is a cclink example which demonstates cyclic data communication between master and slave station. Once the application is loaded via CCS and run, you will be able to see master sending cyclic data packets and slave receiving the packet. For example, the config file for NIMU for CPSW for idkAM572x, can be found in ti/transport/ndk/nimu/example/CCLink/am572x/armv7/bios/cclink_idkAM572x.cfg. The default IP address for master is 192.168.3.100 and for slave it is 192.168.3.4. If you wish to re-configure the IP address of the CPSW interface you will need to modify the following configuration parameters. make sure master and slave are in same network.rñù…�ròù}róù(jÅjîùjÆjìùubaubjt)�rôù}rõù(jÅUjÆjÝùjÎjÖ÷jÐjwjÒ}röù(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKYjÝhjÞ]r÷ù(j{)�røù}rùù(jÅXIp.address = "new ip address"rúùjÆjôùjÎjÖ÷jÐjjÒ}rûù(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rüùjò)�rýù}rþù(jÅjúùjÆjøùjÎjÖ÷jÐjõjÒ}rÿù(jÔ]jÕ]jÖ]j×]jÚ]ujÜKYjÞ]rújçXIp.address = "new ip address"rú…�rú}rú(jÅjúùjÆjýùubaubaubj{)�rú}rú(jÅXIp.mask = "new ip mask"rújÆjôùjÎjÖ÷jÐjjÒ}rú(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rújò)�r ú}r ú(jÅjújÆjújÎjÖ÷jÐjõjÒ}r ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKZjÞ]r újçXIp.mask = "new ip mask"r ú…�rú}rú(jÅjújÆj úubaubaubj{)�rú}rú(jÅX'Ip.gatewayIpAddr = "new gatewayIpAddr" jÆjôùjÎjÖ÷jÐjjÒ}rú(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rújò)�rú}rú(jÅX&Ip.gatewayIpAddr = "new gatewayIpAddr"rújÆjújÎjÖ÷jÐjõjÒ}rú(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÞ]rújçX&Ip.gatewayIpAddr = "new gatewayIpAddr"rú…�rú}rú(jÅjújÆjúubaubaubeubjò)�rú}rú(jÅX`If you do change these settings, you will be required to re-build the Example Project using CCS.rújÆjÝùjÎjÖ÷jÐjõjÒ}rú(jÔ]jÕ]jÖ]j×]jÚ]ujÜK]jÝhjÞ]r újçX`If you do change these settings, you will be required to re-build the Example Project using CCS.r!ú…�r"ú}r#ú(jÅjújÆjúubaubjy )�r$ú}r%ú(jÅUjÆjÝùjÎjÖ÷jÐjÔ jÒ}r&ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r'új~ )�r(ú}r)ú(jÅUjÒ}r*ú(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj$újÞ]r+ú(jƒ )�r,ú}r-ú(jÅUjÒ}r.ú(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj(újÞ]jÐj‡ ubjƒ )�r/ú}r0ú(jÅUjÒ}r1ú(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj(újÞ]jÐj‡ ubjƒ )�r2ú}r3ú(jÅUjÒ}r4ú(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆj(újÞ]jÐj‡ ubj‹ )�r5ú}r6ú(jÅUjÒ}r7ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj(újÞ]r8új� )�r9ú}r:ú(jÅUjÒ}r;ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj5újÞ]r<ú(j• )�r=ú}r>ú(jÅUjÒ}r?ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9újÞ]r@újò)�rAú}rBú(jÅXNamerCújÆj=újÎjÖ÷jÐjõjÒ}rDú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÞ]rEújçXNamerFú…�rGú}rHú(jÅjCújÆjAúubaubajÐj¢ ubj• )�rIú}rJú(jÅUjÒ}rKú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9újÞ]rLújò)�rMú}rNú(jÅX DescriptionrOújÆjIújÎjÖ÷jÐjõjÒ}rPú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÞ]rQújçX DescriptionrRú…�rSú}rTú(jÅjOújÆjMúubaubajÐj¢ ubj• )�rUú}rVú(jÅUjÒ}rWú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj9újÞ]rXújò)�rYú}rZú(jÅXEVM Configurationr[újÆjUújÎjÖ÷jÐjõjÒ}r\ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKajÞ]r]újçXEVM Configurationr^ú…�r_ú}r`ú(jÅj[újÆjYúubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�raú}rbú(jÅUjÒ}rcú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj(újÞ]rdú(j� )�reú}rfú(jÅUjÒ}rgú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjaújÞ]rhú(j• )�riú}rjú(jÅUjÒ}rkú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjeújÞ]rlújò)�rmú}rnú(jÅXANIMU_CCLinkMaster_XXXX_Exampleproject.txtroújÆjiújÎjÖ÷jÐjõjÒ}rpú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKcjÞ]rqújçXANIMU_CCLinkMaster_XXXX_Exampleproject.txtrrú…�rsú}rtú(jÅjoújÆjmúubaubajÐj¢ ubj• )�ruú}rvú(jÅUjÒ}rwú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjeújÞ]rxújc)�ryú}rzú(jÅUjÒ}r{ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjuújÞ]r|úji)�r}ú}r~ú(jÅXJExample demonstrates CCLink master station sending cyclic packet to slave.rújlKjÆjyújÎjÖ÷jÐjÜjÒ}r€ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�újçXJExample demonstrates CCLink master station sending cyclic packet to slave.r‚ú…�rƒú}r„ú(jÅjújÆj}úubaubajÐjfubajÐj¢ ubj• )�r…ú}r†ú(jÅUjÒ}r‡ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjeújÞ]rˆú(jc)�r‰ú}rŠú(jÅUjÒ}r‹ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…újÞ]rŒúji)�r�ú}rŽú(jÅXUicev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode.r�újlKjÆj‰újÎjÖ÷jÐjÜjÒ}r�ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r‘újçXUicev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode.r’ú…�r“ú}r”ú(jÅj�újÆj�úubaubajÐjfubjc)�r•ú}r–ú(jÅUjÒ}r—ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…újÞ]r˜úji)�r™ú}ršú(jÅXQPin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode.r›újlKjÆj•újÎjÖ÷jÐjÜjÒ}rœú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�újçXQPin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode.ržú…�rŸú}r ú(jÅj›újÆj™úubaubajÐjfubjò)�r¡ú}r¢ú(jÅX�Update \*.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured Ethernet port under test to external PC on same subnet.jÆj…újÎjÖ÷jÐjõjÒ}r£ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKojÞ]r¤újçXœUpdate *.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured Ethernet port under test to external PC on same subnet.r¥ú…�r¦ú}r§ú(jÅX�Update \*.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured Ethernet port under test to external PC on same subnet.jÆj¡úubaubejÐj¢ ubejÐj£ ubj� )�r¨ú}r©ú(jÅUjÒ}rªú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjaújÞ]r«ú(j• )�r¬ú}r­ú(jÅUjÒ}r®ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨újÞ]r¯újò)�r°ú}r±ú(jÅX@NIMU_CCLinkSlave_XXXX_Exampleproject.txtr²újÆj¬újÎjÖ÷jÐjõjÒ}r³ú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKyjÞ]r´újçX@NIMU_CCLinkSlave_XXXX_Exampleproject.txtrµú…�r¶ú}r·ú(jÅj²újÆj°úubaubajÐj¢ ubj• )�r¸ú}r¹ú(jÅUjÒ}rºú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨újÞ]r»újc)�r¼ú}r½ú(jÅUjÒ}r¾ú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¸újÞ]r¿úji)�rÀú}rÁú(jÅXjExample demonstrates CCLink slave station receiving cyclic packet from master and sending a response back.rÂújlKjÆj¼újÎjÖ÷jÐjÜjÒ}rÃú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÄújçXjExample demonstrates CCLink slave station receiving cyclic packet from master and sending a response back.rÅú…�rÆú}rÇú(jÅjÂújÆjÀúubaubajÐjfubajÐj¢ ubj• )�rÈú}rÉú(jÅUjÒ}rÊú(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨újÞ]rËú(jc)�rÌú}rÍú(jÅUjÒ}rÎú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÈújÞ]rÏúji)�rÐú}rÑú(jÅXUicev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode.rÒújlKjÆjÌújÎjÖ÷jÐjÜjÒ}rÓú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÔújçXUicev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode.rÕú…�rÖú}r×ú(jÅjÒújÆjÐúubaubajÐjfubjc)�rØú}rÙú(jÅUjÒ}rÚú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÈújÞ]rÛúji)�rÜú}rÝú(jÅXQPin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode.rÞújlKjÆjØújÎjÖ÷jÐjÜjÒ}rßú(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]ràújçXQPin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode.ráú…�râú}rãú(jÅjÞújÆjÜúubaubajÐjfubjò)�räú}råú(jÅX¦Update \*.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured PRU-ICSS Ethernet port under test to external PC on same subnet.jÆjÈújÎjÖ÷jÐjõjÒ}ræú(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÞ]rçújçX¥Update *.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured PRU-ICSS Ethernet port under test to external PC on same subnet.rèú…�réú}rêú(jÅX¦Update \*.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured PRU-ICSS Ethernet port under test to external PC on same subnet.jÆjäúubaubejÐj¢ ubejÐj£ ubj� )�rëú}rìú(jÅUjÒ}ríú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjaújÞ]rîú(j• )�rïú}rðú(jÅUjÒ}rñú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëújÞ]ròújò)�róú}rôú(jÅXGNIMU_ICSS_CCLinkMaste r_XXXX_Exampleprojec t.txtrõújÆjïújÎjÖ÷jÐjõjÒ}röú(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]r÷újçXGNIMU_ICSS_CCLinkMaste r_XXXX_Exampleprojec t.txtrøú…�rùú}rúú(jÅjõújÆjóúubaubajÐj¢ ubj• )�rûú}rüú(jÅUjÒ}rýú(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëújÞ]rþújc)�rÿú}rû(jÅUjÒ}rû(jÔ]jÕ]jÖ]j×]jÚ]ujÆjûújÞ]rûji)�rû}rû(jÅXJExample demonstrates CCLink master station sending cyclic packet to slave.rûjlKjÆjÿújÎjÖ÷jÐjÜjÒ}rû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rûjçXJExample demonstrates CCLink master station sending cyclic packet to slave.rû…�r û}r û(jÅjûjÆjûubaubajÐjfubajÐj¢ ubj• )�r û}r û(jÅUjÒ}r û(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëújÞ]rû(jc)�rû}rû(jÅUjÒ}rû(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ûjÞ]rûji)�rû}rû(jÅXUicev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode.rûjlKjÆjûjÎjÖ÷jÐjÜjÒ}rû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rûjçXUicev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode.rû…�rû}rû(jÅjûjÆjûubaubajÐjfubjc)�rû}rû(jÅUjÒ}rû(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ûjÞ]rûji)�rû}r û(jÅXQPin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode.r!ûjlKjÆjûjÎjÖ÷jÐjÜjÒ}r"û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r#ûjçXQPin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode.r$û…�r%û}r&û(jÅj!ûjÆjûubaubajÐjfubjò)�r'û}r(û(jÅX�Update \*.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured Ethernet port under test to external PC on same subnet.jÆj ûjÎjÖ÷jÐjõjÒ}r)û(jÔ]jÕ]jÖ]j×]jÚ]ujÜK›jÞ]r*ûjçXœUpdate *.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured Ethernet port under test to external PC on same subnet.r+û…�r,û}r-û(jÅX�Update \*.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured Ethernet port under test to external PC on same subnet.jÆj'ûubaubejÐj¢ ubejÐj£ ubj� )�r.û}r/û(jÅUjÒ}r0û(jÔ]jÕ]jÖ]j×]jÚ]ujÆjaújÞ]r1û(j• )�r2û}r3û(jÅUjÒ}r4û(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.ûjÞ]r5ûjò)�r6û}r7û(jÅXFNIMU_ICSS_CCLinkSlave _XXXX_Exampleproject .txtr8ûjÆj2ûjÎjÖ÷jÐjõjÒ}r9û(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¥jÞ]r:ûjçXFNIMU_ICSS_CCLinkSlave _XXXX_Exampleproject .txtr;û…�r<û}r=û(jÅj8ûjÆj6ûubaubajÐj¢ ubj• )�r>û}r?û(jÅUjÒ}r@û(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.ûjÞ]rAûjc)�rBû}rCû(jÅUjÒ}rDû(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>ûjÞ]rEûji)�rFû}rGû(jÅXjExample demonstrates CCLink slave station receiving cyclic packet from master and sending a response back.rHûjlKjÆjBûjÎjÖ÷jÐjÜjÒ}rIû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rJûjçXjExample demonstrates CCLink slave station receiving cyclic packet from master and sending a response back.rKû…�rLû}rMû(jÅjHûjÆjFûubaubajÐjfubajÐj¢ ubj• )�rNû}rOû(jÅUjÒ}rPû(jÔ]jÕ]jÖ]j×]jÚ]ujÆj.ûjÞ]rQû(jc)�rRû}rSû(jÅUjÒ}rTû(jÔ]jÕ]jÖ]j×]jÚ]ujÆjNûjÞ]rUûji)�rVû}rWû(jÅXUicev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode.rXûjlKjÆjRûjÎjÖ÷jÐjÜjÒ}rYû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rZûjçXUicev2AM335x: Jumpers J18 and J19 need to be set properly to select CPSW or ICSS mode.r[û…�r\û}r]û(jÅjXûjÆjVûubaubajÐjfubjc)�r^û}r_û(jÅUjÒ}r`û(jÔ]jÕ]jÖ]j×]jÚ]ujÆjNûjÞ]raûji)�rbû}rcû(jÅXQPin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode.rdûjlKjÆj^ûjÎjÖ÷jÐjÜjÒ}reû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rfûjçXQPin2 and Pin3 need to be connected for ICSS mode and Pin1 and Pin2 for CPSW mode.rgû…�rhû}riû(jÅjdûjÆjbûubaubajÐjfubjò)�rjû}rkû(jÅX¦Update \*.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured PRU-ICSS Ethernet port under test to external PC on same subnet.jÆjNûjÎjÖ÷jÐjõjÒ}rlû(jÔ]jÕ]jÖ]j×]jÚ]ujÜK±jÞ]rmûjçX¥Update *.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured PRU-ICSS Ethernet port under test to external PC on same subnet.rnû…�roû}rpû(jÅX¦Update \*.cfg file with static IP to test. NIMU for CPSW test Tests requires connection of configured PRU-ICSS Ethernet port under test to external PC on same subnet.jÆjjûubaubejÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubjc)�rqû}rrû(jÅUjÆjÝùjÎjÖ÷jÐjfjÒ}rsû(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¼jÝhjÞ]rtûji)�ruû}rvû(jÅUjlKjÆjqûjÎjÖ÷jÐjÜjÒ}rwû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubjÇ)�rxû}ryû(jÅUjÆj½ùjÎjÖ÷jÐjÑjÒ}rzû(jÔ]jÕ]jÖ]j×]r{ûU.running-cc-link-ie-field-network-basic-exampler|ûajÚ]r}ûj�aujÜK¿jÝhjÞ]r~û(jà)�rû}r€û(jÅX.Running CC-Link IE Field Network Basic exampler�ûjÆjxûjÎjÖ÷jÐjäjÒ}r‚û(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¿jÝhjÞ]rƒûjçX.Running CC-Link IE Field Network Basic exampler„û…�r…û}r†û(jÅj�ûjÆjûubaubjò)�r‡û}rˆû(jÅXâThe following is the test setup needed to run the example for CCLink demonstration on TI platform. Connect the tested eth port of the evm to a switch for master station. Do the same connection for slave station to same switch.r‰ûjÆjxûjÎjÖ÷jÐjõjÒ}rŠû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÁjÝhjÞ]r‹ûjçXâThe following is the test setup needed to run the example for CCLink demonstration on TI platform. Connect the tested eth port of the evm to a switch for master station. Do the same connection for slave station to same switch.rŒû…�r�û}rŽû(jÅj‰ûjÆj‡ûubaubjR)�r�û}r�û(jÅX*.. Image:: ../images/Cclink_setup_pic.PNG jÆjxûjÎjÖ÷jÐjZjÒ}r‘û(UuriX#rtos/../images/Cclink_setup_pic.PNGr’ûj×]jÖ]jÔ]jÕ]jX}r“ûU*j’ûsjÚ]ujÜKÇjÝhjÞ]ubjc)�r”û}r•û(jÅUjÆjxûjÎjÖ÷jÐjfjÒ}r–û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÈjÝhjÞ]r—û(ji)�r˜û}r™û(jÅUjlKjÆj”ûjÎjÖ÷jÐjÜjÒ}ršû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubji)�r›û}rœû(jÅX§Once the connection is done, load master and slave station code on both evm and run them simultaneously. You would see following output on uart port of master station.r�ûjlKjÆj”ûjÎjÖ÷jÐjÜjÒ}ržû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKËjÝhjÞ]rŸûjçX§Once the connection is done, load master and slave station code on both evm and run them simultaneously. You would see following output on uart port of master station.r û…�r¡û}r¢û(jÅj�ûjÆj›ûubaubeubjR)�r£û}r¤û(jÅX7.. Image:: ../images/Cclink_master_screeshot_linux.png jÆjxûjÎjÖ÷jÐjZjÒ}r¥û(UuriX0rtos/../images/Cclink_master_screeshot_linux.pngr¦ûj×]jÖ]jÔ]jÕ]jX}r§ûU*j¦ûsjÚ]ujÜKÎjÝhjÞ]ubjò)�r¨û}r©û(jÅX=You would see following output on uart port of slave station.rªûjÆjxûjÎjÖ÷jÐjõjÒ}r«û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÏjÝhjÞ]r¬ûjçX=You would see following output on uart port of slave station.r­û…�r®û}r¯û(jÅjªûjÆj¨ûubaubjR)�r°û}r±û(jÅX7.. Image:: ../images/Cclink_slave_screenshot_linux.png jÆjxûjÎjÖ÷jÐjZjÒ}r²û(UuriX0rtos/../images/Cclink_slave_screenshot_linux.pngr³ûj×]jÖ]jÔ]jÕ]jX}r´ûU*j³ûsjÚ]ujÜKÒjÝhjÞ]ubjc)�rµû}r¶û(jÅUjÆjxûjÎjÖ÷jÐjfjÒ}r·û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÓjÝhjÞ]r¸ûji)�r¹û}rºû(jÅUjlKjÆjµûjÎjÖ÷jÐjÜjÒ}r»û(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]ubaubeubeubeubjÎjÖ÷jÐjÑjÒ}r¼û(jÔ]r½ûX introductionr¾ûajÕ]jÖ]j×]r¿ûUid139rÀûajÚ]ujÜKjÝhjÞ]rÁû(jà)�rÂû}rÃû(jÅX IntroductionrÄûjÆj´éjÎjÖ÷jÐjäjÒ}rÅû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÆûjçX IntroductionrÇû…�rÈû}rÉû(jÅjÄûjÆjÂûubaubjò)�rÊû}rËû(jÅXICC-Link is an open-architecture network that was originally developed by the Mitsubishi Electric Corporation.It have been widely used in Process control, building automation etc. CLPA (CC-Link Partner Association) maintains the network technology and support many manufacturer supporting the application. CC-Link is available in multiple flavours i.e. CC-Link, CC-Link LT, CC-Link Safety, CC-Link IE (Industrial Ethernet) - Control and CC-Link IE Field. For further details regarding CCLink and its flavours please refer the CLPA website.\ `[1] `__jÆj´éjÎjÖ÷jÐjõjÒ}rÌû(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rÍû(jçXCC-Link is an open-architecture network that was originally developed by the Mitsubishi Electric Corporation.It have been widely used in Process control, building automation etc. CLPA (CC-Link Partner Association) maintains the network technology and support many manufacturer supporting the application. CC-Link is available in multiple flavours i.e. CC-Link, CC-Link LT, CC-Link Safety, CC-Link IE (Industrial Ethernet) - Control and CC-Link IE Field. For further details regarding CCLink and its flavours please refer the CLPA website.rÎû…�rÏû}rÐû(jÅXCC-Link is an open-architecture network that was originally developed by the Mitsubishi Electric Corporation.It have been widely used in Process control, building automation etc. CLPA (CC-Link Partner Association) maintains the network technology and support many manufacturer supporting the application. CC-Link is available in multiple flavours i.e. CC-Link, CC-Link LT, CC-Link Safety, CC-Link IE (Industrial Ethernet) - Control and CC-Link IE Field. For further details regarding CCLink and its flavours please refer the CLPA website.\ jÆjÊûubjû)�rÑû}rÒû(jÅX-`[1] `__jÒ}rÓû(UnameX[1]jX#http://am.cc-link.org/en/index.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆjÊûjÞ]rÔûjçX[1]rÕû…�rÖû}r×û(jÅUjÆjÑûubajÐjÿubeubeubjÎjÖ÷jÐjv~jÒ}rØû(jÔ]UlevelKj×]jÖ]rÙûjÀûaUsourcejÖ÷jÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]rÚûjò)�rÛû}rÜû(jÅX/Duplicate implicit target name: "introduction".jÒ}rÝû(jÔ]jÕ]jÖ]j×]jÚ]ujÆj²éjÞ]rÞûjçX/Duplicate implicit target name: "introduction".rßû…�ràû}ráû(jÅUjÆjÛûubajÐjõubaubjs~)�râû}rãû(jÅUjÆjÝ÷jÎjÖ÷jÐjv~jÒ}räû(jÔ]UlevelKj×]jÖ]UsourcejÖ÷jÕ]jÚ]UlineKUtypejx~ujÜKjÝhjÞ]råûjò)�ræû}rçû(jÅX;Bullet list ends without a blank line; unexpected unindent.jÒ}rèû(jÔ]jÕ]jÖ]j×]jÚ]ujÆjâûjÞ]réûjçX;Bullet list ends without a blank line; unexpected unindent.rêû…�rëû}rìû(jÅUjÆjæûubajÐjõubaubjs~)�ríû}rîû(jÅUjÆjÝ÷jÎjÖ÷jÐjv~jÒ}rïû(jÔ]UlevelKj×]jÖ]UsourcejÖ÷jÕ]jÚ]UlineKUtypejx~ujÜKjÝhjÞ]rðûjò)�rñû}ròû(jÅX%Line block ends without a blank line.jÒ}róû(jÔ]jÕ]jÖ]j×]jÚ]ujÆjíûjÞ]rôûjçX%Line block ends without a blank line.rõû…�röû}r÷û(jÅUjÆjñûubajÐjõubaubjs~)�røû}rùû(jÅUjÆjxûjÎX]internal padding after source/rtos/PDK_Platform_Software/Network_and_Transport/CCLink.rst.incrúûjÐjv~jÒ}rûû(jÔ]UlevelKj×]jÖ]UsourcejÖ÷jÕ]jÚ]UlineKÕUtypejPÝujÜKÖjÝhjÞ]rüû(jò)�rýû}rþû(jÅX;Content block expected for the "raw" directive; none found.jÒ}rÿû(jÔ]jÕ]jÖ]j×]jÚ]ujÆjøûjÞ]rüjçX;Content block expected for the "raw" directive; none found.rü…�rü}rü(jÅUjÆjýûubajÐjõubj)�rü}rü(jÅX.. raw:: html jÒ}rü(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjøûjÞ]rüjçX.. raw:: html rü…�r ü}r ü(jÅUjÆjüubajÐjubeubjs~)�r ü}r ü(jÅUjÆjÓíjÎjÙéjÐjv~jÒ}r ü(jÔ]UlevelKj×]jÖ]rüjØíaUsourcejÙéjÕ]jÚ]UlineK�Utypej„~ujÜK�jÝhjÞ]rüjò)�rü}rü(jÅX+Duplicate implicit target name: "examples".jÒ}rü(jÔ]jÕ]jÖ]j×]jÚ]ujÆj üjÞ]rüjçX+Duplicate implicit target name: "examples".rü…�rü}rü(jÅUjÆjüubajÐjõubaubjs~)�rü}rü(jÅUjÆjójÎjÙéjÐjv~jÒ}rü(jÔ]UlevelKj×]jÖ]UsourcejÙéjÕ]jÚ]UlineM‹Utypejx~ujÜMŠjÝhjÞ]rüjò)�rü}rü(jÅX;Bullet list ends without a blank line; unexpected unindent.jÒ}rü(jÔ]jÕ]jÖ]j×]jÚ]ujÆjüjÞ]rüjçX;Bullet list ends without a blank line; unexpected unindent.rü…�r ü}r!ü(jÅUjÆjüubajÐjõubaubjs~)�r"ü}r#ü(jÅUjÒ}r$ü(jÔ]UlevelKj×]jÖ]UsourcejÙéjÕ]jÚ]UlineMÓUtypejx~ujÞ]r%ü(jò)�r&ü}r'ü(jÅUjÒ}r(ü(jÔ]jÕ]jÖ]j×]jÚ]ujÆj"üjÞ]r)üjçXTitle underline too short.r*ü…�r+ü}r,ü(jÅUjÆj&üubajÐjõubj)�r-ü}r.ü(jÅX’Keystone PA or NDK example doesn’t work in other boot mode than no-boot mode using CCS/JTAG? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^jÒ}r/ü(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆj"üjÞ]r0üjçX’Keystone PA or NDK example doesn’t work in other boot mode than no-boot mode using CCS/JTAG? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^r1ü…�r2ü}r3ü(jÅUjÆj-üubajÐjubejÐjv~ubjs~)�r4ü}r5ü(jÅUjÆjTôjÎjÙéjÐjv~jÒ}r6ü(jÔ]UlevelKj×]jÖ]UsourcejÙéjÕ]jÚ]UlineMÓUtypejx~ujÜMÓjÝhjÞ]r7ü(jò)�r8ü}r9ü(jÅXTitle underline too short.jÒ}r:ü(jÔ]jÕ]jÖ]j×]jÚ]ujÆj4üjÞ]r;üjçXTitle underline too short.r<ü…�r=ü}r>ü(jÅUjÆj8üubajÐjõubj)�r?ü}r@ü(jÅX’Keystone PA or NDK example doesn’t work in other boot mode than no-boot mode using CCS/JTAG? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^jÒ}rAü(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆj4üjÞ]rBüjçX’Keystone PA or NDK example doesn’t work in other boot mode than no-boot mode using CCS/JTAG? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^rCü…�rDü}rEü(jÅUjÆj?üubajÐjubeubjs~)�rFü}rGü(jÅUjÆjkôjÎXZinternal padding after source/rtos/PDK_Platform_Software/Network_and_Transport/NDK.rst.incrHüjÐjv~jÒ}rIü(jÔ]UlevelKj×]jÖ]UsourcejÙéjÕ]jÚ]UlineMîUtypejPÝujÜMïjÝhjÞ]rJü(jò)�rKü}rLü(jÅX;Content block expected for the "raw" directive; none found.jÒ}rMü(jÔ]jÕ]jÖ]j×]jÚ]ujÆjFüjÞ]rNüjçX;Content block expected for the "raw" directive; none found.rOü…�rPü}rQü(jÅUjÆjKüubajÐjõubj)�rRü}rSü(jÅX.. raw:: html jÒ}rTü(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjFüjÞ]rUüjçX.. raw:: html rVü…�rWü}rXü(jÅUjÆjRüubajÐjubeubjs~)�rYü}rZü(jÅUjÆjkôjÎjÏjÐjv~jÒ}r[ü(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineKÔUtypeUSEVEREr\üujÜKÕjÝhjÞ]r]ü(jò)�r^ü}r_ü(jÅXTitle level inconsistent:jÒ}r`ü(jÔ]jÕ]jÖ]j×]jÚ]ujÆjYüjÞ]raüjçXTitle level inconsistent:rbü…�rcü}rdü(jÅUjÆj^üubajÐjõubj)�reü}rfü(jÅXNWAL ***************jÒ}rgü(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjYüjÞ]rhüjçXNWAL ***************riü…�rjü}rkü(jÅUjÆjeüubajÐjubeubjs~)�rlü}rmü(jÅUjÒ}rnü(jÔ]UlevelKj×]jÖ]roüjpõaUsourcejÏjÕ]jÚ]UlineKÌUtypejx~ujÆjkõjÞ]rpüjò)�rqü}rrü(jÅX/Duplicate explicit target name: "introduction".jÒ}rsü(jÔ]jÕ]jÖ]j×]jÚ]ujÆjlüjÞ]rtüjçX/Duplicate explicit target name: "introduction".ruü…�rvü}rwü(jÅUjÆjqüubajÐjõubajÐjv~ubjs~)�rxü}ryü(jÅUjÒ}rzü(jÔ]UlevelKj×]jÖ]r{üj_öaUsourcejÏjÕ]jÚ]UlineKÌUtypejx~ujÆjZöjÞ]r|üjò)�r}ü}r~ü(jÅX5Duplicate explicit target name: "modes-of-operation".jÒ}rü(jÔ]jÕ]jÖ]j×]jÚ]ujÆjxüjÞ]r€üjçX5Duplicate explicit target name: "modes-of-operation".r�ü…�r‚ü}rƒü(jÅUjÆj}üubajÐjõubajÐjv~ubjs~)�r„ü}r…ü(jÅUjÒ}r†ü(jÔ]UlevelKj×]jÖ]r‡üj«öaUsourcejÏjÕ]jÚ]UlineKÌUtypejx~ujÆj¦öjÞ]rˆüjò)�r‰ü}rŠü(jÅX'Duplicate explicit target name: "apis".jÒ}r‹ü(jÔ]jÕ]jÖ]j×]jÚ]ujÆj„üjÞ]rŒüjçX'Duplicate explicit target name: "apis".r�ü…�rŽü}r�ü(jÅUjÆj‰üubajÐjõubajÐjv~ubjs~)�r�ü}r‘ü(jÅUjÒ}r’ü(jÔ]UlevelKj×]jÖ]r“üjÉöaUsourcejÏjÕ]jÚ]UlineKÌUtypejx~ujÆjÄöjÞ]r”üjò)�r•ü}r–ü(jÅX*Duplicate explicit target name: "example".jÒ}r—ü(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�üjÞ]r˜üjçX*Duplicate explicit target name: "example".r™ü…�ršü}r›ü(jÅUjÆj•üubajÐjõubajÐjv~ubjs~)�rœü}r�ü(jÅUjÒ}ržü(jÔ]UlevelKj×]jÖ]rŸüjE÷aUsourcejÏjÕ]jÚ]UlineKÌUtypejx~ujÆj@÷jÞ]r üjò)�r¡ü}r¢ü(jÅX8Duplicate explicit target name: "additional-references".jÒ}r£ü(jÔ]jÕ]jÖ]j×]jÚ]ujÆjœüjÞ]r¤üjçX8Duplicate explicit target name: "additional-references".r¥ü…�r¦ü}r§ü(jÅUjÆj¡üubajÐjõubajÐjv~ubjs~)�r¨ü}r©ü(jÅUjÆjkôjÎXTinternal padding after source/rtos/PDK_Platform_Software/Device_Drivers/NWAL.rst.incrªüjÐjv~jÒ}r«ü(jÔ]UlevelKj×]jÖ]Usourcej]õjÕ]jÚ]UlineKcUtypejPÝujÜKejÝhjÞ]r¬ü(jò)�r­ü}r®ü(jÅX;Content block expected for the "raw" directive; none found.jÒ}r¯ü(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨üjÞ]r°üjçX;Content block expected for the "raw" directive; none found.r±ü…�r²ü}r³ü(jÅUjÆj­üubajÐjõubj)�r´ü}rµü(jÅX.. raw:: html jÒ}r¶ü(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆj¨üjÞ]r·üjçX.. raw:: html r¸ü…�r¹ü}rºü(jÅUjÆj´üubajÐjubeubjs~)�r»ü}r¼ü(jÅUjÆjÇ)�r½ü}r¾ü(jÅUjKjÆjÇ)�r¿ü}rÀü(jÅUjÆjÇ)�rÁü}rÂü(jÅUjÆhjÎjÏjÐjÑjÒ}rÃü(jÔ]jÕ]jÖ]j×]rÄüU transportrÅüajÚ]rÆüj´aujÜKÚjÝhjÞ]rÇü(jà)�rÈü}rÉü(jÅX TransportrÊüjÆjÁüjÎjÏjÐjäjÒ}rËü(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÚjÝhjÞ]rÌüjçX TransportrÍü…�rÎü}rÏü(jÅjÊüjÆjÈüubaubj¿üeubjÎjÏjÐjÑjÒ}rÐü(jÔ]jÕ]jÖ]j×]rÑüU timesync-ptprÒüajÚ]rÓüjkaujÜKÜjÝhjÞ]rÔü(jà)�rÕü}rÖü(jÅXTimeSync (PTP)r×üjÆj¿üjÎjÏjÐjäjÒ}rØü(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÜjÝhjÞ]rÙüjçXTimeSync (PTP)rÚü…�rÛü}rÜü(jÅj×üjÆjÕüubaubj7)�rÝü}rÞü(jÅXHhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_TIMESYNC(PTP)jÆj¿üjÎj:XHsource/rtos/PDK_Platform_Software/Network_and_Transport/TimeSync.rst.incrßü…�ràü}ráübjÐj>jÒ}râü(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]rãüjçXHhttp://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_TIMESYNC(PTP)räü…�råü}ræü(jÅUjÆjÝüubaubj½üjÇ)�rçü}rèü(jÅUjKjÆj¿üjÎjàüjÐjÑjÒ}réü(jÔ]rêüj'ajÕ]jÖ]j×]rëüUid149rìüajÚ]ujÜK½jÝhjÞ]ríü(jà)�rîü}rïü(jÅXAdditional ReferencesrðüjÆjçüjÎjàüjÐjäjÒ}rñü(jÔ]jÕ]jÖ]j×]jÚ]ujÜK½jÝhjÞ]ròüjçXAdditional Referencesróü…�rôü}rõü(jÅjðüjÆjîüubaubjy )�röü}r÷ü(jÅUjÆjçüjÎjàüjÐjÔ jÒ}røü(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rùüj~ )�rúü}rûü(jÅUjÒ}rüü(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjöüjÞ]rýü(jƒ )�rþü}rÿü(jÅUjÒ}rý(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjúüjÞ]jÐj‡ ubjƒ )�rý}rý(jÅUjÒ}rý(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK-ujÆjúüjÞ]jÐj‡ ubj¥ )�rý}rý(jÅUjÒ}rý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjúüjÞ]rý(j� )�rý}r ý(jÅUjÒ}r ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjýjÞ]r ý(j• )�r ý}r ý(jÅUjÒ}rý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjýjÞ]rýjò)�rý}rý(jÅX **Document**rýjÆj ýjÎjàüjÐjõjÒ}rý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÀjÞ]rýjÚ)�rý}rý(jÅjýjÒ}rý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjýjÞ]rýjçXDocumentrý…�rý}rý(jÅUjÆjýubajÐjâubaubajÐj¢ ubj• )�rý}rý(jÅUjÒ}rý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjýjÞ]rýjò)�r ý}r!ý(jÅX **Location**r"ýjÆjýjÎjàüjÐjõjÒ}r#ý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÀjÞ]r$ýjÚ)�r%ý}r&ý(jÅj"ýjÒ}r'ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj ýjÞ]r(ýjçXLocationr)ý…�r*ý}r+ý(jÅUjÆj%ýubajÐjâubaubajÐj¢ ubejÐj£ ubj� )�r,ý}r-ý(jÅUjÒ}r.ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjýjÞ]r/ý(j• )�r0ý}r1ý(jÅUjÒ}r2ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,ýjÞ]r3ýjò)�r4ý}r5ý(jÅXAPI Reference Manualr6ýjÆj0ýjÎjàüjÐjõjÒ}r7ý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÂjÞ]r8ýjçXAPI Reference Manualr9ý…�r:ý}r;ý(jÅj6ýjÆj4ýubaubajÐj¢ ubj• )�r<ý}r=ý(jÅUjÒ}r>ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj,ýjÞ]r?ýjò)�r@ý}rAý(jÅXS$(TI_PDK_INSTALL_DIR)/packages/ti /transport/timeSync/docs/doxygen/html/index .htmlrBýjÆj<ýjÎjàüjÐjõjÒ}rCý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKÂjÞ]rDýjçXS$(TI_PDK_INSTALL_DIR)/packages/ti /transport/timeSync/docs/doxygen/html/index .htmlrEý…�rFý}rGý(jÅjBýjÆj@ýubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubeubjÎjàüjÐjÑjÒ}rHý(jÔ]rIýXoverviewrJýajÕ]jÖ]j×]rKýUid146rLýajÚ]ujÜKjÝhjÞ]rMý(jà)�rNý}rOý(jÅXOverviewrPýjÆj½üjÎjàüjÐjäjÒ}rQý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]rRýjçXOverviewrSý…�rTý}rUý(jÅjPýjÆjNýubaubjÇ)�rVý}rWý(jÅUjÆj½üjÎjàüjÐjÑjÒ}rXý(jÔ]jÕ]jÖ]j×]rYýUterms-and-abbreviationsrZýajÚ]r[ýh¡aujÜKjÝhjÞ]r\ý(jà)�r]ý}r^ý(jÅXTerms and Abbreviationsr_ýjÆjVýjÎjàüjÐjäjÒ}r`ý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]raýjçXTerms and Abbreviationsrbý…�rcý}rdý(jÅj_ýjÆj]ýubaubjy )�reý}rfý(jÅUjÆjVýjÎjàüjÐjÔ jÒ}rgý(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rhýj~ )�riý}rjý(jÅUjÒ}rký(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjeýjÞ]rlý(jƒ )�rmý}rný(jÅUjÒ}roý(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjiýjÞ]jÐj‡ ubjƒ )�rpý}rqý(jÅUjÒ}rrý(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK"ujÆjiýjÞ]jÐj‡ ubj‹ )�rsý}rtý(jÅUjÒ}ruý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjiýjÞ]rvýj� )�rwý}rxý(jÅUjÒ}ryý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjsýjÞ]rzý(j• )�r{ý}r|ý(jÅUjÒ}r}ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjwýjÞ]r~ýjò)�rý}r€ý(jÅXAcronymr�ýjÆj{ýjÎjàüjÐjõjÒ}r‚ý(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]rƒýjçXAcronymr„ý…�r…ý}r†ý(jÅj�ýjÆjýubaubajÐj¢ ubj• )�r‡ý}rˆý(jÅUjÒ}r‰ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjwýjÞ]rŠýjò)�r‹ý}rŒý(jÅX Descriptionr�ýjÆj‡ýjÎjàüjÐjõjÒ}rŽý(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r�ýjçX Descriptionr�ý…�r‘ý}r’ý(jÅj�ýjÆj‹ýubaubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�r“ý}r”ý(jÅUjÒ}r•ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjiýjÞ]r–ý(j� )�r—ý}r˜ý(jÅUjÒ}r™ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]ršý(j• )�r›ý}rœý(jÅUjÒ}r�ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj—ýjÞ]ržýjò)�rŸý}r ý(jÅXPTPr¡ýjÆj›ýjÎjàüjÐjõjÒ}r¢ý(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r£ýjçXPTPr¤ý…�r¥ý}r¦ý(jÅj¡ýjÆjŸýubaubajÐj¢ ubj• )�r§ý}r¨ý(jÅUjÒ}r©ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj—ýjÞ]rªýjò)�r«ý}r¬ý(jÅXPrecision Time Protocolr­ýjÆj§ýjÎjàüjÐjõjÒ}r®ý(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r¯ýjçXPrecision Time Protocolr°ý…�r±ý}r²ý(jÅj­ýjÆj«ýubaubajÐj¢ ubejÐj£ ubj� )�r³ý}r´ý(jÅUjÒ}rµý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]r¶ý(j• )�r·ý}r¸ý(jÅUjÒ}r¹ý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³ýjÞ]rºýjò)�r»ý}r¼ý(jÅXP2Pr½ýjÆj·ýjÎjàüjÐjõjÒ}r¾ý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¿ýjçXP2PrÀý…�rÁý}rÂý(jÅj½ýjÆj»ýubaubajÐj¢ ubj• )�rÃý}rÄý(jÅUjÒ}rÅý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj³ýjÞ]rÆýjò)�rÇý}rÈý(jÅX Peer to PeerrÉýjÆjÃýjÎjàüjÐjõjÒ}rÊý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rËýjçX Peer to PeerrÌý…�rÍý}rÎý(jÅjÉýjÆjÇýubaubajÐj¢ ubejÐj£ ubj� )�rÏý}rÐý(jÅUjÒ}rÑý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]rÒý(j• )�rÓý}rÔý(jÅUjÒ}rÕý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÏýjÞ]rÖýjò)�r×ý}rØý(jÅXE2ErÙýjÆjÓýjÎjàüjÐjõjÒ}rÚý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rÛýjçXE2ErÜý…�rÝý}rÞý(jÅjÙýjÆj×ýubaubajÐj¢ ubj• )�rßý}ràý(jÅUjÒ}ráý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÏýjÞ]râýjò)�rãý}räý(jÅX End to EndråýjÆjßýjÎjàüjÐjõjÒ}ræý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rçýjçX End to Endrèý…�réý}rêý(jÅjåýjÆjãýubaubajÐj¢ ubejÐj£ ubj� )�rëý}rìý(jÅUjÒ}ríý(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]rîý(j• )�rïý}rðý(jÅUjÒ}rñý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëýjÞ]ròýjò)�róý}rôý(jÅXTCrõýjÆjïýjÎjàüjÐjõjÒ}röý(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r÷ýjçXTCrøý…�rùý}rúý(jÅjõýjÆjóýubaubajÐj¢ ubj• )�rûý}rüý(jÅUjÒ}rýý(jÔ]jÕ]jÖ]j×]jÚ]ujÆjëýjÞ]rþýjò)�rÿý}rþ(jÅXTransparent ClockrþjÆjûýjÎjàüjÐjõjÒ}rþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rþjçXTransparent Clockrþ…�rþ}rþ(jÅjþjÆjÿýubaubajÐj¢ ubejÐj£ ubj� )�rþ}rþ(jÅUjÒ}r þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]r þ(j• )�r þ}r þ(jÅUjÒ}r þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþjÞ]rþjò)�rþ}rþ(jÅXOCrþjÆj þjÎjàüjÐjõjÒ}rþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rþjçXOCrþ…�rþ}rþ(jÅjþjÆjþubaubajÐj¢ ubj• )�rþ}rþ(jÅUjÒ}rþ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjþjÞ]rþjò)�rþ}rþ(jÅXOrdinary ClockrþjÆjþjÎjàüjÐjõjÒ}rþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rþjçXOrdinary Clockr þ…�r!þ}r"þ(jÅjþjÆjþubaubajÐj¢ ubejÐj£ ubj� )�r#þ}r$þ(jÅUjÒ}r%þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]r&þ(j• )�r'þ}r(þ(jÅUjÒ}r)þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#þjÞ]r*þjò)�r+þ}r,þ(jÅXBCr-þjÆj'þjÎjàüjÐjõjÒ}r.þ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r/þjçXBCr0þ…�r1þ}r2þ(jÅj-þjÆj+þubaubajÐj¢ ubj• )�r3þ}r4þ(jÅUjÒ}r5þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#þjÞ]r6þjò)�r7þ}r8þ(jÅXBoundary Clockr9þjÆj3þjÎjàüjÐjõjÒ}r:þ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r;þjçXBoundary Clockr<þ…�r=þ}r>þ(jÅj9þjÆj7þubaubajÐj¢ ubejÐj£ ubj� )�r?þ}r@þ(jÅUjÒ}rAþ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]rBþ(j• )�rCþ}rDþ(jÅUjÒ}rEþ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?þjÞ]rFþjò)�rGþ}rHþ(jÅXMasterrIþjÆjCþjÎjàüjÐjõjÒ}rJþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rKþjçXMasterrLþ…�rMþ}rNþ(jÅjIþjÆjGþubaubajÐj¢ ubj• )�rOþ}rPþ(jÅUjÒ}rQþ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj?þjÞ]rRþjò)�rSþ}rTþ(jÅX PTP masterrUþjÆjOþjÎjàüjÐjõjÒ}rVþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rWþjçX PTP masterrXþ…�rYþ}rZþ(jÅjUþjÆjSþubaubajÐj¢ ubejÐj£ ubj� )�r[þ}r\þ(jÅUjÒ}r]þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]r^þ(j• )�r_þ}r`þ(jÅUjÒ}raþ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[þjÞ]rbþjò)�rcþ}rdþ(jÅXSlavereþjÆj_þjÎjàüjÐjõjÒ}rfþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rgþjçXSlaverhþ…�riþ}rjþ(jÅjeþjÆjcþubaubajÐj¢ ubj• )�rkþ}rlþ(jÅUjÒ}rmþ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj[þjÞ]rnþjò)�roþ}rpþ(jÅX PTP SlaverqþjÆjkþjÎjàüjÐjõjÒ}rrþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rsþjçX PTP Slavertþ…�ruþ}rvþ(jÅjqþjÆjoþubaubajÐj¢ ubejÐj£ ubj� )�rwþ}rxþ(jÅUjÒ}ryþ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]rzþ(j• )�r{þ}r|þ(jÅUjÒ}r}þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjwþjÞ]r~þjò)�rþ}r€þ(jÅXBMCAr�þjÆj{þjÎjàüjÐjõjÒ}r‚þ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rƒþjçXBMCAr„þ…�r…þ}r†þ(jÅj�þjÆjþubaubajÐj¢ ubj• )�r‡þ}rˆþ(jÅUjÒ}r‰þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjwþjÞ]rŠþjò)�r‹þ}rŒþ(jÅXBest Master Clock Algorithmr�þjÆj‡þjÎjàüjÐjõjÒ}rŽþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�þjçXBest Master Clock Algorithmr�þ…�r‘þ}r’þ(jÅj�þjÆj‹þubaubajÐj¢ ubejÐj£ ubj� )�r“þ}r”þ(jÅUjÒ}r•þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]r–þ(j• )�r—þ}r˜þ(jÅUjÒ}r™þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“þjÞ]ršþjò)�r›þ}rœþ(jÅXRCFr�þjÆj—þjÎjàüjÐjõjÒ}ržþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rŸþjçXRCFr þ…�r¡þ}r¢þ(jÅj�þjÆj›þubaubajÐj¢ ubj• )�r£þ}r¤þ(jÅUjÒ}r¥þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“þjÞ]r¦þjò)�r§þ}r¨þ(jÅX/Synchronization/(Frequency Compensation) Factorr©þjÆj£þjÎjàüjÐjõjÒ}rªþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r«þjçX/Synchronization/(Frequency Compensation) Factorr¬þ…�r­þ}r®þ(jÅj©þjÆj§þubaubajÐj¢ ubejÐj£ ubj� )�r¯þ}r°þ(jÅUjÒ}r±þ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj“ýjÞ]r²þ(j• )�r³þ}r´þ(jÅUjÒ}rµþ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯þjÞ]r¶þjò)�r·þ}r¸þ(jÅX IEC 61558r¹þjÆj³þjÎjàüjÐjõjÒ}rºþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]r»þjçX IEC 61558r¼þ…�r½þ}r¾þ(jÅj¹þjÆj·þubaubajÐj¢ ubj• )�r¿þ}rÀþ(jÅUjÒ}rÁþ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¯þjÞ]rÂþjò)�rÃþ}rÄþ(jÅX'PTP profile for network control systemsrÅþjÆj¿þjÎjàüjÐjõjÒ}rÆþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK!jÞ]rÇþjçX'PTP profile for network control systemsrÈþ…�rÉþ}rÊþ(jÅjÅþjÆjÃþubaubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubjÇ)�rËþ}rÌþ(jÅUjKjÆj½üjÎjàüjÐjÑjÒ}rÍþ(jÔ]rÎþX introductionrÏþajÕ]jÖ]j×]rÐþUid147rÑþajÚ]ujÜK&jÝhjÞ]rÒþ(jà)�rÓþ}rÔþ(jÅX IntroductionrÕþjÆjËþjÎjàüjÐjäjÒ}rÖþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK&jÝhjÞ]r×þjçX IntroductionrØþ…�rÙþ}rÚþ(jÅjÕþjÆjÓþubaubjò)�rÛþ}rÜþ(jÅXdThis document details the user guide aspects of PTP/1588 v2 master/slave implementation on PRU-ICSS.rÝþjÆjËþjÎjàüjÐjõjÒ}rÞþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK(jÝhjÞ]rßþjçXdThis document details the user guide aspects of PTP/1588 v2 master/slave implementation on PRU-ICSS.ràþ…�ráþ}râþ(jÅjÝþjÆjÛþubaubjò)�rãþ}räþ(jÅXDual EMAC firmware implementation supports P2P and the implementation is unique to Emac. The master capability added to the TimeSync driver is currently limitted to sending Sync and Announce frames. The BMCA/Management part of PTP master is not implemented.råþjÆjËþjÎjàüjÐjõjÒ}ræþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK*jÝhjÞ]rçþjçXDual EMAC firmware implementation supports P2P and the implementation is unique to Emac. The master capability added to the TimeSync driver is currently limitted to sending Sync and Announce frames. The BMCA/Management part of PTP master is not implemented.rèþ…�réþ}rêþ(jÅjåþjÆjãþubaubjò)�rëþ}rìþ(jÅX&TimeSync (PTP) driver does the task ofríþjÆjËþjÎjàüjÐjõjÒ}rîþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK/jÝhjÞ]rïþjçX&TimeSync (PTP) driver does the task ofrðþ…�rñþ}ròþ(jÅjíþjÆjëþubaubj )�róþ}rôþ(jÅUjÆjËþjÎjàüjÐj jÒ}rõþ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK1jÝhjÞ]röþ(j{)�r÷þ}røþ(jÅX Running BMCArùþjÆjóþjÎjàüjÐjjÒ}rúþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rûþjò)�rüþ}rýþ(jÅjùþjÆj÷þjÎjàüjÐjõjÒ}rþþ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK1jÞ]rÿþjçX Running BMCArÿ…�rÿ}rÿ(jÅjùþjÆjüþubaubaubj{)�rÿ}rÿ(jÅX)Calculating RCF and Sync packet interval.rÿjÆjóþjÎjàüjÐjjÒ}rÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÿjò)�rÿ}r ÿ(jÅjÿjÆjÿjÎjàüjÐjõjÒ}r ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK2jÞ]r ÿjçX)Calculating RCF and Sync packet interval.r ÿ…�r ÿ}rÿ(jÅjÿjÆjÿubaubaubj{)�rÿ}rÿ(jÅX Performing clock synchronizationrÿjÆjóþjÎjàüjÐjjÒ}rÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÿjò)�rÿ}rÿ(jÅjÿjÆjÿjÎjàüjÐjõjÒ}rÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK3jÞ]rÿjçX Performing clock synchronizationrÿ…�rÿ}rÿ(jÅjÿjÆjÿubaubaubj{)�rÿ}rÿ(jÅXCalculating peer and line delayrÿjÆjóþjÎjàüjÐjjÒ}rÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rÿjò)�r ÿ}r!ÿ(jÅjÿjÆjÿjÎjàüjÐjõjÒ}r"ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK4jÞ]r#ÿjçXCalculating peer and line delayr$ÿ…�r%ÿ}r&ÿ(jÅjÿjÆj ÿubaubaubj{)�r'ÿ}r(ÿ(jÅXVSending Delay Request and Delay Response frames (includes Pdelay Req and Pdelay Res) jÆjóþjÎjàüjÐjjÒ}r)ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r*ÿjò)�r+ÿ}r,ÿ(jÅXTSending Delay Request and Delay Response frames (includes Pdelay Req and Pdelay Res)r-ÿjÆj'ÿjÎjàüjÐjõjÒ}r.ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK5jÞ]r/ÿjçXTSending Delay Request and Delay Response frames (includes Pdelay Req and Pdelay Res)r0ÿ…�r1ÿ}r2ÿ(jÅj-ÿjÆj+ÿubaubaubeubjhK)�r3ÿ}r4ÿ(jÅXDriver Configurationr5ÿjÆjËþjÎjàüjÐjlKjÒ}r6ÿ(j×]r7ÿUdriver-configuration-timesyncr8ÿajÖ]jÔ]jÕ]jÚ]r9ÿh=aujÜNjÝhjÞ]r:ÿjçXDriver Configurationr;ÿ…�r<ÿ}r=ÿ(jÅj5ÿjÆj3ÿubaubjhK)�r>ÿ}r?ÿ(jÅX **Board Specific Configuration**r@ÿjÆjËþjÎjàüjÐjlKjÒ}rAÿ(j×]rBÿUboard-specific-configurationrCÿajÖ]jÔ]jÕ]jÚ]rDÿjRaujÜNjÝhjÞ]rEÿjÚ)�rFÿ}rGÿ(jÅj@ÿjÒ}rHÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj>ÿjÞ]rIÿjçXBoard Specific ConfigurationrJÿ…�rKÿ}rLÿ(jÅUjÆjFÿubajÐjâubaubjò)�rMÿ}rNÿ(jÅXƒAll board specific configurations like enabling clock and pin-mux are required before calling any driver APIs. By default Board_Init() API available under board module supports all initialization sequence for TI supported EVMs. In addition it initializes UART instance for Console/STDIO. Refer `Processor SDK RTOS Board Support `__ for additional details.jÆjËþjÎjàüjÐjõjÒ}rOÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK>jÝhjÞ]rPÿ(jçX&All board specific configurations like enabling clock and pin-mux are required before calling any driver APIs. By default Board_Init() API available under board module supports all initialization sequence for TI supported EVMs. In addition it initializes UART instance for Console/STDIO. Refer rQÿ…�rRÿ}rSÿ(jÅX&All board specific configurations like enabling clock and pin-mux are required before calling any driver APIs. By default Board_Init() API available under board module supports all initialization sequence for TI supported EVMs. In addition it initializes UART instance for Console/STDIO. Refer jÆjMÿubjû)�rTÿ}rUÿ(jÅXE`Processor SDK RTOS Board Support `__jÒ}rVÿ(UnameX Processor SDK RTOS Board SupportjXindex_board.html#board-supportj×]jÖ]jÔ]jÕ]jÚ]ujÆjMÿjÞ]rWÿjçX Processor SDK RTOS Board SupportrXÿ…�rYÿ}rZÿ(jÅUjÆjTÿubajÐjÿubjçX for additional details.r[ÿ…�r\ÿ}r]ÿ(jÅX for additional details.jÆjMÿubeubjhK)�r^ÿ}r_ÿ(jÅX$**TimeSync Configuration Structure**r`ÿjÆjËþjÎjàüjÐjlKjÒ}raÿ(j×]rbÿU timesync-configuration-structurercÿajÖ]jÔ]jÕ]jÚ]rdÿjmaujÜNjÝhjÞ]reÿjÚ)�rfÿ}rgÿ(jÅj`ÿjÒ}rhÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj^ÿjÞ]riÿjçX TimeSync Configuration Structurerjÿ…�rkÿ}rlÿ(jÅUjÆjfÿubajÐjâubaubjò)�rmÿ}rnÿ(jÅXpThe TimeSync driver needs to be initialized/configured with initial parameters during the driver initialization.roÿjÆjËþjÎjàüjÐjõjÒ}rpÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKIjÝhjÞ]rqÿjçXpThe TimeSync driver needs to be initialized/configured with initial parameters during the driver initialization.rrÿ…�rsÿ}rtÿ(jÅjoÿjÆjmÿubaubjò)�ruÿ}rvÿ(jÅX;icss_timeSync_init.c binds driver with TimeSync parameters.rwÿjÆjËþjÎjàüjÐjõjÒ}rxÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKKjÝhjÞ]ryÿjçX;icss_timeSync_init.c binds driver with TimeSync parameters.rzÿ…�r{ÿ}r|ÿ(jÅjwÿjÆjuÿubaubjò)�r}ÿ}r~ÿ(jÅXŸTimeSync_drvInit() API triggers all static configuration information available through parameters. Once initialization is complete the driver is ready for use.rÿjÆjËþjÎjàüjÐjõjÒ}r€ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKMjÝhjÞ]r�ÿjçXŸTimeSync_drvInit() API triggers all static configuration information available through parameters. Once initialization is complete the driver is ready for use.r‚ÿ…�rƒÿ}r„ÿ(jÅjÿjÆj}ÿubaubjò)�r…ÿ}r†ÿ(jÅXPlease refer to TimeSync_ParamsHandle structure defined under '/packages/ti/transport/timeSync/include/icss_timeSyncApi.h'r‡ÿjÆjËþjÎjàüjÐjõjÒ}rˆÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKOjÝhjÞ]r‰ÿjçXPlease refer to TimeSync_ParamsHandle structure defined under '/packages/ti/transport/timeSync/include/icss_timeSyncApi.h'rŠÿ…�r‹ÿ}rŒÿ(jÅj‡ÿjÆj…ÿubaubeubjÇ)�r�ÿ}rŽÿ(jÅUjKjÆj½üjÎjàüjÐjÑjÒ}r�ÿ(jÔ]r�ÿXapisr‘ÿajÕ]jÖ]j×]r’ÿUid148r“ÿajÚ]ujÜKSjÝhjÞ]r”ÿ(jà)�r•ÿ}r–ÿ(jÅXAPIsr—ÿjÆj�ÿjÎjàüjÐjäjÒ}r˜ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKSjÝhjÞ]r™ÿjçXAPIsršÿ…�r›ÿ}rœÿ(jÅj—ÿjÆj•ÿubaubjò)�r�ÿ}ržÿ(jÅXAPI reference for Application:rŸÿjÆj�ÿjÎjàüjÐjõjÒ}r ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKUjÝhjÞ]r¡ÿjçXAPI reference for Application:r¢ÿ…�r£ÿ}r¤ÿ(jÅjŸÿjÆj�ÿubaubj)�r¥ÿ}r¦ÿ(jÅX0#include jÆj�ÿjÎjàüjÐjjÒ}r§ÿ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÜMú6jÝhjÞ]r¨ÿjçX0#include r©ÿ…�rªÿ}r«ÿ(jÅUjÆj¥ÿubaubjò)�r¬ÿ}r­ÿ(jÅX`Below sequence indicates API calling sequence for a simple use case of timeSync master operationr®ÿjÆj�ÿjÎjàüjÐjõjÒ}r¯ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK[jÝhjÞ]r°ÿjçX`Below sequence indicates API calling sequence for a simple use case of timeSync master operationr±ÿ…�r²ÿ}r³ÿ(jÅj®ÿjÆj¬ÿubaubj)�r´ÿ}rµÿ(jÅX_... Board_init(boardCfg); timeSync_example_configureInterrupts(EMAC_PORT_NUM, &emacCfg); ICSS_EmacSocSetInitCfg(instance, emacBaseAddr); ICSS_EmacInit(); /* Assumption: firmware is downloaded and ICSS_EMAC driver is initialized */ TimeSync_drvInit(timeSyncHandle); TimeSync_drvEnable(timeSyncHandle); TimeSync_enableMaster(); While(1) { Delay(); }jÆj�ÿjÎjàüjÐjjÒ}r¶ÿ(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜK^jÝhjÞ]r·ÿjçX_... Board_init(boardCfg); timeSync_example_configureInterrupts(EMAC_PORT_NUM, &emacCfg); ICSS_EmacSocSetInitCfg(instance, emacBaseAddr); ICSS_EmacInit(); /* Assumption: firmware is downloaded and ICSS_EMAC driver is initialized */ TimeSync_drvInit(timeSyncHandle); TimeSync_drvEnable(timeSyncHandle); TimeSync_enableMaster(); While(1) { Delay(); }r¸ÿ…�r¹ÿ}rºÿ(jÅUjÆj´ÿubaubjò)�r»ÿ}r¼ÿ(jÅX_Below sequence indicates API calling sequence for a simple use case of timeSync slave operationr½ÿjÆj�ÿjÎjàüjÐjõjÒ}r¾ÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKnjÝhjÞ]r¿ÿjçX_Below sequence indicates API calling sequence for a simple use case of timeSync slave operationrÀÿ…�rÁÿ}rÂÿ(jÅj½ÿjÆj»ÿubaubj)�rÃÿ}rÄÿ(jÅX`... Board_init(boardCfg); timeSync_example_configureInterrupts(EMAC_PORT_NUM, &emacCfg); ICSS_EmacSocSetInitCfg(instance, emacBaseAddr); ICSS_EmacInit(); /* Assumption: firmware is downloaded and ICSS_EMAC driver is initialized */ TimeSync_drvInit(timeSyncHandle); TimeSync_drvEnable(timeSyncHandle); TimeSync_disableMaster(); While(1) { Delay(); }jÆj�ÿjÎjàüjÐjjÒ}rÅÿ(j„‰j…Xcj@jAj×]jÖ]jÔ]j†}jÕ]jÚ]ujÜKqjÝhjÞ]rÆÿjçX`... Board_init(boardCfg); timeSync_example_configureInterrupts(EMAC_PORT_NUM, &emacCfg); ICSS_EmacSocSetInitCfg(instance, emacBaseAddr); ICSS_EmacInit(); /* Assumption: firmware is downloaded and ICSS_EMAC driver is initialized */ TimeSync_drvInit(timeSyncHandle); TimeSync_drvEnable(timeSyncHandle); TimeSync_disableMaster(); While(1) { Delay(); }rÇÿ…�rÈÿ}rÉÿ(jÅUjÆjÃÿubaubjò)�rÊÿ}rËÿ(jÅX **NOTE** :jÆj�ÿjÎjàüjÐjõjÒ}rÌÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÝhjÞ]rÍÿ(jÚ)�rÎÿ}rÏÿ(jÅX**NOTE**jÒ}rÐÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÊÿjÞ]rÑÿjçXNOTErÒÿ…�rÓÿ}rÔÿ(jÅUjÆjÎÿubajÐjâubjçX :rÕÿ…�rÖÿ}r×ÿ(jÅX :jÆjÊÿubeubj )�rØÿ}rÙÿ(jÅUjÆj�ÿjÎjàüjÐj jÒ}rÚÿ(jU.j×]jÖ]jÔ]jUjÕ]jÚ]jjujÜK„jÝhjÞ]rÛÿ(j{)�rÜÿ}rÝÿ(jÅX¶The TimeSync Tx callback interrupt is mapped to the ISR TimeSync_txTSIsr(), where the two PRU interrupts configured to ARM interrupt txIntNum are PRU_ARM_EVENT_6 and PRU_ARM_EVENT_7.rÞÿjÆjØÿjÎjàüjÐjjÒ}rßÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ràÿjò)�ráÿ}râÿ(jÅjÞÿjÆjÜÿjÎjàüjÐjõjÒ}rãÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK„jÞ]räÿjçX¶The TimeSync Tx callback interrupt is mapped to the ISR TimeSync_txTSIsr(), where the two PRU interrupts configured to ARM interrupt txIntNum are PRU_ARM_EVENT_6 and PRU_ARM_EVENT_7.råÿ…�ræÿ}rçÿ(jÅjÞÿjÆjáÿubaubaubj{)�rèÿ}réÿ(jÅX«The PTP frames are received via the Real Time (RT) call back from ICSS_EMAC driver and hence RT call back needs to be implemented at the application for ICSS-EMAC driver. jÆjØÿjÎjàüjÐjjÒ}rêÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rëÿjò)�rìÿ}ríÿ(jÅXªThe PTP frames are received via the Real Time (RT) call back from ICSS_EMAC driver and hence RT call back needs to be implemented at the application for ICSS-EMAC driver.rîÿjÆjèÿjÎjàüjÐjõjÒ}rïÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK…jÞ]rðÿjçXªThe PTP frames are received via the Real Time (RT) call back from ICSS_EMAC driver and hence RT call back needs to be implemented at the application for ICSS-EMAC driver.rñÿ…�ròÿ}róÿ(jÅjîÿjÆjìÿubaubaubeubeubjÇ)�rôÿ}rõÿ(jÅUjÆj½üjÎjàüjÐjÑjÒ}röÿ(jÔ]jÕ]jÖ]j×]r÷ÿU.tasks-internally-created-from-timesync-drvinitrøÿajÚ]rùÿhNaujÜKˆjÝhjÞ]rúÿ(jà)�rûÿ}rüÿ(jÅX0Tasks Internally created from TimeSync_drvInit()rýÿjÆjôÿjÎjàüjÐjäjÒ}rþÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKˆjÝhjÞ]rÿÿjçX0Tasks Internally created from TimeSync_drvInit()r…�r}r(jÅjýÿjÆjûÿubaubjò)�r}r(jÅXìBelow tasks would be created after Application calls TimeSync_drvInit() function. The sample osal implementation is provided under /packages/ti/transport/timeSync/example/src/common/timeSync_example_osal.c implementing these tasks.rjÆjôÿjÎjàüjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŠjÝhjÞ]rjçXìBelow tasks would be created after Application calls TimeSync_drvInit() function. The sample osal implementation is provided under /packages/ti/transport/timeSync/example/src/common/timeSync_example_osal.c implementing these tasks.r…�r }r (jÅjjÆjubaubjy )�r }r (jÅUjÆjôÿjÎjàüjÐjÔ jÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rj~ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj jÞ]r(jƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubjƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK"ujÆjjÞ]jÐj‡ ubjƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubjƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK)ujÆjjÞ]jÐj‡ ubj‹ )�r}r (jÅUjÒ}r!(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r"j� )�r#}r$(jÅUjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r&(j• )�r'}r((jÅUjÒ}r)(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#jÞ]r*jò)�r+}r,(jÅX Handle Namer-jÆj'jÎjàüjÐjõjÒ}r.(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŽjÞ]r/jçX Handle Namer0…�r1}r2(jÅj-jÆj+ubaubajÐj¢ ubj• )�r3}r4(jÅUjÒ}r5(jÔ]jÕ]jÖ]j×]jÚ]ujÆj#jÞ]r6jc)�r7}r8(jÅUjÒ}r9(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3jÞ]r:ji)�r;}r<(jÅX Function Namer=jlKjÆj7jÎjàüjÐjÜjÒ}r>(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r?jçX Function Namer@…�rA}rB(jÅj=jÆj;ubaubajÐjfubajÐj¢ ubj• )�rC}rD(jÅUjÒ}rE(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆj#jÞ]rFjc)�rG}rH(jÅUjÒ}rI(jÔ]jÕ]jÖ]j×]jÚ]ujÆjCjÞ]rJji)�rK}rL(jÅX What it doesrMjlKjÆjGjÎjàüjÐjÜjÒ}rN(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rOjçX What it doesrP…�rQ}rR(jÅjMjÆjKubaubajÐjfubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rS}rT(jÅUjÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rV(j� )�rW}rX(jÅUjÒ}rY(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]rZ(j• )�r[}r\(jÅUjÒ}r](jÔ]jÕ]jÖ]j×]jÚ]ujÆjWjÞ]r^jò)�r_}r`(jÅXtimeSync_pDelayReqSendTaskrajÆj[jÎjàüjÐjõjÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rcjçXtimeSync_pDelayReqSendTaskrd…�re}rf(jÅjajÆj_ubaubajÐj¢ ubj• )�rg}rh(jÅUjÒ}ri(jÔ]jÕ]jÖ]j×]jÚ]ujÆjWjÞ]rjjò)�rk}rl(jÅXTimeSync_PdelayReqSendTask()rmjÆjgjÎjàüjÐjõjÒ}rn(jÔ]jÕ]jÖ]j×]jÚ]ujÜK�jÞ]rojçXTimeSync_PdelayReqSendTask()rp…�rq}rr(jÅjmjÆjkubaubajÐj¢ ubj• )�rs}rt(jÅUjÒ}ru(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjWjÞ]rvjc)�rw}rx(jÅUjÒ}ry(jÔ]jÕ]jÖ]j×]jÚ]ujÆjsjÞ]rzji)�r{}r|(jÅXqSend Peer Delay Requests periodically on both ports. Delay is configurable. Only applicable for P2P configurationr}jlKjÆjwjÎjàüjÐjÜjÒ}r~(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rjçXqSend Peer Delay Requests periodically on both ports. Delay is configurable. Only applicable for P2P configurationr€…�r�}r‚(jÅj}jÆj{ubaubajÐjfubajÐj¢ ubejÐj£ ubj� )�rƒ}r„(jÅUjÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]r†(j• )�r‡}rˆ(jÅUjÒ}r‰(jÔ]jÕ]jÖ]j×]jÚ]ujÆjƒjÞ]rŠjò)�r‹}rŒ(jÅXtimeSync_delayReqSendTaskr�jÆj‡jÎjàüjÐjõjÒ}rŽ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK“jÞ]r�jçXtimeSync_delayReqSendTaskr�…�r‘}r’(jÅj�jÆj‹ubaubajÐj¢ ubj• )�r“}r”(jÅUjÒ}r•(jÔ]jÕ]jÖ]j×]jÚ]ujÆjƒjÞ]r–jò)�r—}r˜(jÅXTimeSync_delayReqSendTask()r™jÆj“jÎjàüjÐjõjÒ}rš(jÔ]jÕ]jÖ]j×]jÚ]ujÜK“jÞ]r›jçXTimeSync_delayReqSendTask()rœ…�r�}rž(jÅj™jÆj—ubaubajÐj¢ ubj• )�rŸ}r (jÅUjÒ}r¡(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjƒjÞ]r¢jc)�r£}r¤(jÅUjÒ}r¥(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŸjÞ]r¦ji)�r§}r¨(jÅXrSend Delay requests to PTP Master. This is currently done for every Sync frame. Pends indefinitely on a semaphore.r©jlKjÆj£jÎjàüjÐjÜjÒ}rª(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r«jçXrSend Delay requests to PTP Master. This is currently done for every Sync frame. Pends indefinitely on a semaphore.r¬…�r­}r®(jÅj©jÆj§ubaubajÐjfubajÐj¢ ubejÐj£ ubj� )�r¯}r°(jÅUjÒ}r±(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]r²(j• )�r³}r´(jÅUjÒ}rµ(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj¯jÞ]r¶jò)�r·}r¸(jÅXtimeSync_TxTSTaskP1r¹jÆj³jÎjàüjÐjõjÒ}rº(jÔ]jÕ]jÖ]j×]jÚ]ujÜK–jÞ]r»jçXtimeSync_TxTSTaskP1r¼…�r½}r¾(jÅj¹jÆj·ubaubajÐj¢ ubj• )�r¿}rÀ(jÅUjÒ}rÁ(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj¯jÞ]rÂjò)�rÃ}rÄ(jÅXTimeSync_TxTSTask_P1()rÅjÆj¿jÎjàüjÐjõjÒ}rÆ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK–jÞ]rÇjçXTimeSync_TxTSTask_P1()rÈ…�rÉ}rÊ(jÅjÅjÆjÃubaubajÐj¢ ubj• )�rË}rÌ(jÅUjÒ}rÍ(j×]UmorecolsKjÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj¯jÞ]rÎjc)�rÏ}rÐ(jÅUjÒ}rÑ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjËjÞ]rÒji)�rÓ}rÔ(jÅXQProcess Tx timestamp for Port 1. Pends on an event posted by Tx ISR indefinitely.rÕjlKjÆjÏjÎjàüjÐjÜjÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r×jçXQProcess Tx timestamp for Port 1. Pends on an event posted by Tx ISR indefinitely.rØ…�rÙ}rÚ(jÅjÕjÆjÓubaubajÐjfubajÐj¢ ubejÐj£ ubj� )�rÛ}rÜ(jÅUjÒ}rÝ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]jÐj£ ubj� )�rÞ}rß(jÅUjÒ}rà(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]rá(j• )�râ}rã(jÅUjÒ}rä(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjÞjÞ]råjò)�ræ}rç(jÅXtimeSync_TxTSTaskP2rèjÆjâjÎjàüjÐjõjÒ}ré(jÔ]jÕ]jÖ]j×]jÚ]ujÜK™jÞ]rêjçXtimeSync_TxTSTaskP2rë…�rì}rí(jÅjèjÆjæubaubajÐj¢ ubj• )�rî}rï(jÅUjÒ}rð(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjÞjÞ]rñjò)�rò}ró(jÅXTimeSync_TxTSTask_P2()rôjÆjîjÎjàüjÐjõjÒ}rõ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK™jÞ]röjçXTimeSync_TxTSTask_P2()r÷…�rø}rù(jÅjôjÆjòubaubajÐj¢ ubj• )�rú}rû(jÅUjÒ}rü(j×]UmorecolsKjÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆjÞjÞ]rýjc)�rþ}rÿ(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjújÞ]rji)�r}r(jÅXQProcess Tx timestamp for Port 2. Pends on an event posted by Tx ISR indefinitely.rjlKjÆjþjÎjàüjÐjÜjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rjçXQProcess Tx timestamp for Port 2. Pends on an event posted by Tx ISR indefinitely.r…�r}r (jÅjjÆjubaubajÐjfubajÐj¢ ubejÐj£ ubj� )�r }r (jÅUjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]jÐj£ ubj� )�r }r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]r(j• )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj jÞ]rjò)�r}r(jÅXtimeSync_syncTxTaskrjÆjjÎjàüjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÞ]rjçXtimeSync_syncTxTaskr…�r}r(jÅjjÆjubaubajÐj¢ ubj• )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj jÞ]r jò)�r!}r"(jÅXTimeSync_SyncTxTask()r#jÆjjÎjàüjÐjõjÒ}r$(jÔ]jÕ]jÖ]j×]jÚ]ujÜKœjÞ]r%jçXTimeSync_SyncTxTask()r&…�r'}r((jÅj#jÆj!ubaubajÐj¢ ubj• )�r)}r*(jÅUjÒ}r+(j×]UmorecolsKjÖ]jÔ]jÕ]UmorerowsKjÚ]ujÆj jÞ]r,jc)�r-}r.(jÅUjÒ}r/(jÔ]jÕ]jÖ]j×]jÚ]ujÆj)jÞ]r0ji)�r1}r2(jÅXlSends Sync frames on both ports in Master mode. Pends indefinitely on a semaphore posted by the DM Timer ISRr3jlKjÆj-jÎjàüjÐjÜjÒ}r4(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r5jçXlSends Sync frames on both ports in Master mode. Pends indefinitely on a semaphore posted by the DM Timer ISRr6…�r7}r8(jÅj3jÆj1ubaubajÐjfubajÐj¢ ubejÐj£ ubj� )�r9}r:(jÅUjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]jÐj£ ubj� )�r<}r=(jÅUjÒ}r>(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]r?(j• )�r@}rA(jÅUjÒ}rB(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]rCjò)�rD}rE(jÅXtimeSync_announceTxTaskrFjÆj@jÎjàüjÐjõjÒ}rG(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŸjÞ]rHjçXtimeSync_announceTxTaskrI…�rJ}rK(jÅjFjÆjDubaubajÐj¢ ubj• )�rL}rM(jÅUjÒ}rN(jÔ]jÕ]jÖ]j×]jÚ]ujÆj<jÞ]rOjò)�rP}rQ(jÅXTimeSync_AnnounceTxTask()rRjÆjLjÎjàüjÐjõjÒ}rS(jÔ]jÕ]jÖ]j×]jÚ]ujÜKŸjÞ]rTjçXTimeSync_AnnounceTxTask()rU…�rV}rW(jÅjRjÆjPubaubajÐj¢ ubj• )�rX}rY(jÅUjÒ}rZ(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆj<jÞ]r[jc)�r\}r](jÅUjÒ}r^(jÔ]jÕ]jÖ]j×]jÚ]ujÆjXjÞ]r_ji)�r`}ra(jÅX0Sends Announce frames on both ports periodicallyrbjlKjÆj\jÎjàüjÐjÜjÒ}rc(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rdjçX0Sends Announce frames on both ports periodicallyre…�rf}rg(jÅjbjÆj`ubaubajÐjfubajÐj¢ ubejÐj£ ubj� )�rh}ri(jÅUjÒ}rj(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]rk(j• )�rl}rm(jÅUjÒ}rn(jÔ]jÕ]jÖ]j×]jÚ]ujÆjhjÞ]rojò)�rp}rq(jÅXtimeSync_NRT_TaskrrjÆjljÎjàüjÐjõjÒ}rs(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÞ]rtjçXtimeSync_NRT_Taskru…�rv}rw(jÅjrjÆjpubaubajÐj¢ ubj• )�rx}ry(jÅUjÒ}rz(jÔ]jÕ]jÖ]j×]jÚ]ujÆjhjÞ]r{jò)�r|}r}(jÅXTimeSync_NRT_Task()r~jÆjxjÎjàüjÐjõjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¡jÞ]r€jçXTimeSync_NRT_Task()r�…�r‚}rƒ(jÅj~jÆj|ubaubajÐj¢ ubj• )�r„}r…(jÅUjÒ}r†(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆjhjÞ]r‡jc)�rˆ}r‰(jÅUjÒ}rŠ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj„jÞ]r‹ji)�rŒ}r�(jÅXeNRT stands for non real time. Processes Peer delay frames in the background and calculate peer delay.rŽjlKjÆjˆjÎjàüjÐjÜjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r�jçXeNRT stands for non real time. Processes Peer delay frames in the background and calculate peer delay.r‘…�r’}r“(jÅjŽjÆjŒubaubajÐjfubajÐj¢ ubejÐj£ ubj� )�r”}r•(jÅUjÒ}r–(jÔ]jÕ]jÖ]j×]jÚ]ujÆjSjÞ]r—(j• )�r˜}r™(jÅUjÒ}rš(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”jÞ]r›jò)�rœ}r�(jÅXtimeSync_backgroundTaskržjÆj˜jÎjàüjÐjõjÒ}rŸ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÞ]r jçXtimeSync_backgroundTaskr¡…�r¢}r£(jÅjžjÆjœubaubajÐj¢ ubj• )�r¤}r¥(jÅUjÒ}r¦(jÔ]jÕ]jÖ]j×]jÚ]ujÆj”jÞ]r§jò)�r¨}r©(jÅXTimeSync_BackgroundTask()rªjÆj¤jÎjàüjÐjõjÒ}r«(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¤jÞ]r¬jçXTimeSync_BackgroundTask()r­…�r®}r¯(jÅjªjÆj¨ubaubajÐj¢ ubj• )�r°}r±(jÅUjÒ}r²(j×]UmorecolsKjÖ]jÔ]jÕ]jÚ]ujÆj”jÞ]r³jc)�r´}rµ(jÅUjÒ}r¶(jÔ]jÕ]jÖ]j×]jÚ]ujÆj°jÞ]r·ji)�r¸}r¹(jÅX:Checks for Sync timeout and performs offset stabilization.rºjlKjÆj´jÎjàüjÐjÜjÒ}r»(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r¼jçX:Checks for Sync timeout and performs offset stabilization.r½…�r¾}r¿(jÅjºjÆj¸ubaubajÐjfubajÐj¢ ubejÐj£ ubejÐjÒ ubejÐjÓ ubaubeubjÇ)�rÀ}rÁ(jÅUjÆj½üjÎjàüjÐjÑjÒ}rÂ(jÔ]jÕ]jÖ]j×]rÃU$building-timesync-examples-unit-testrÄajÚ]rÅj>aujÜK©jÝhjÞ]rÆ(jà)�rÇ}rÈ(jÅX$Building timeSync Examples/Unit TestrÉjÆjÀjÎjàüjÐjäjÒ}rÊ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK©jÝhjÞ]rËjçX$Building timeSync Examples/Unit TestrÌ…�rÍ}rÎ(jÅjÉjÆjÇubaubjt)�rÏ}rÐ(jÅUjÆjÀjÎjàüjÐjwjÒ}rÑ(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK«jÝhjÞ]rÒ(j{)�rÓ}rÔ(jÅXŸSetup the build environment `SetupBuildEnvironment `__rÕjÆjÏjÎjàüjÐjjÒ}rÖ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r×jò)�rØ}rÙ(jÅjÕjÆjÓjÎjàüjÐjõjÒ}rÚ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK«jÞ]rÛ(jçXSetup the build environment rÜ…�rÝ}rÞ(jÅXSetup the build environment jÆjØubjû)�rß}rà(jÅXƒ`SetupBuildEnvironment `__jÒ}rá(UnameXSetupBuildEnvironmentjXghttp://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_overview.html#setup-environmentj×]jÖ]jÔ]jÕ]jÚ]ujÆjØjÞ]râjçXSetupBuildEnvironmentrã…�rä}rå(jÅUjÆjßubajÐjÿubeubaubj{)�ræ}rç(jÅXFollow the steps as mentioned under `SDK example and test CCS Project Creation `__ for creating the CCS based example and test projects creation jÆjÏjÎjàüjÐjjÒ}rè(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]réjò)�rê}rë(jÅXFollow the steps as mentioned under `SDK example and test CCS Project Creation `__ for creating the CCS based example and test projects creationjÆjæjÎjàüjÐjõjÒ}rì(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¬jÞ]rí(jçX$Follow the steps as mentioned under rî…�rï}rð(jÅX$Follow the steps as mentioned under jÆjêubjû)�rñ}rò(jÅX«`SDK example and test CCS Project Creation `__jÒ}ró(UnameX)SDK example and test CCS Project CreationjX{http://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_overview.html#pdk-example-and-test-project-creationj×]jÖ]jÔ]jÕ]jÚ]ujÆjêjÞ]rôjçX)SDK example and test CCS Project Creationrõ…�rö}r÷(jÅUjÆjñubajÐjÿubjçX? for creating the CCS based example and test projects creationrø…�rù}rú(jÅX? for creating the CCS based example and test projects creationjÆjêubeubaubeubeubjÇ)�rû}rü(jÅUjÆj½üjÎjàüjÐjÑjÒ}rý(jÔ]jÕ]jÖ]j×]rþUsample-examplesrÿajÚ]rj�aujÜK°jÝhjÞ]r(jà)�r}r(jÅXSample ExamplesrjÆjûjÎjàüjÐjäjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÜK°jÝhjÞ]rjçXSample Examplesr…�r}r (jÅjjÆjubaubjy )�r }r (jÅUjÆjûjÎjàüjÐjÔ jÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r j~ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆj jÞ]r(jƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubjƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubjƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKujÆjjÞ]jÐj‡ ubj‹ )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rj� )�r}r (jÅUjÒ}r!(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r"(j• )�r#}r$(jÅUjÒ}r%(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r&jò)�r'}r((jÅXNamer)jÆj#jÎjàüjÐjõjÒ}r*(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÞ]r+jçXNamer,…�r-}r.(jÅj)jÆj'ubaubajÐj¢ ubj• )�r/}r0(jÅUjÒ}r1(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r2jò)�r3}r4(jÅX Descriptionr5jÆj/jÎjàüjÐjõjÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÜK´jÞ]r7jçX Descriptionr8…�r9}r:(jÅj5jÆj3ubaubajÐj¢ ubj• )�r;}r<(jÅUjÒ}r=(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r>jc)�r?}r@(jÅUjÒ}rA(jÔ]jÕ]jÖ]j×]jÚ]ujÆj;jÞ]rBji)�rC}rD(jÅXExpected ResultsrEjlKjÆj?jÎjàüjÐjÜjÒ}rF(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rGjçXExpected ResultsrH…�rI}rJ(jÅjEjÆjCubaubajÐjfubajÐj¢ ubejÐj£ ubajÐj¤ ubj¥ )�rK}rL(jÅUjÒ}rM(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rNj� )�rO}rP(jÅUjÒ}rQ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjKjÞ]rR(j• )�rS}rT(jÅUjÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjOjÞ]rVjò)�rW}rX(jÅXtimeSync_BasicExamplerYjÆjSjÎjàüjÐjõjÒ}rZ(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¶jÞ]r[jçXtimeSync_BasicExampler\…�r]}r^(jÅjYjÆjWubaubajÐj¢ ubj• )�r_}r`(jÅUjÒ}ra(jÔ]jÕ]jÖ]j×]jÚ]ujÆjOjÞ]rbjò)�rc}rd(jÅXCSimple timeSync example demonstrating sync between Master and SlaverejÆj_jÎjàüjÐjõjÒ}rf(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¶jÞ]rgjçXCSimple timeSync example demonstrating sync between Master and Slaverh…�ri}rj(jÅjejÆjcubaubajÐj¢ ubj• )�rk}rl(jÅUjÒ}rm(jÔ]jÕ]jÖ]j×]jÚ]ujÆjOjÞ]rnjc)�ro}rp(jÅUjÒ}rq(jÔ]jÕ]jÖ]j×]jÚ]ujÆjkjÞ]rrji)�rs}rt(jÅXClock Sync results at SlaverujlKjÆjojÎjàüjÐjÜjÒ}rv(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]rwjçXClock Sync results at Slaverx…�ry}rz(jÅjujÆjsubaubajÐjfubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubaubeubeubjÎjàüjÐjv~jÒ}r{(jÔ]UlevelKj×]jÖ]r|jLýaUsourcejàüjÕ]jÚ]UlineKUtypej„~ujÜKjÝhjÞ]r}jò)�r~}r(jÅX+Duplicate implicit target name: "overview".jÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÆj»üjÞ]r�jçX+Duplicate implicit target name: "overview".r‚…�rƒ}r„(jÅUjÆj~ubajÐjõubaubjs~)�r…}r†(jÅUjÆjËþjÎjàüjÐjv~jÒ}r‡(jÔ]UlevelKj×]jÖ]rˆjÑþaUsourcejàüjÕ]jÚ]UlineK&Utypej„~ujÜK&jÝhjÞ]r‰jò)�rŠ}r‹(jÅX/Duplicate implicit target name: "introduction".jÒ}rŒ(jÔ]jÕ]jÖ]j×]jÚ]ujÆj…jÞ]r�jçX/Duplicate implicit target name: "introduction".rŽ…�r�}r�(jÅUjÆjŠubajÐjõubaubjs~)�r‘}r’(jÅUjÆj�ÿjÎjàüjÐjv~jÒ}r“(jÔ]UlevelKj×]jÖ]r”j“ÿaUsourcejàüjÕ]jÚ]UlineKSUtypej„~ujÜKSjÝhjÞ]r•jò)�r–}r—(jÅX'Duplicate implicit target name: "apis".jÒ}r˜(jÔ]jÕ]jÖ]j×]jÚ]ujÆj‘jÞ]r™jçX'Duplicate implicit target name: "apis".rš…�r›}rœ(jÅUjÆj–ubajÐjõubaubjs~)�r�}rž(jÅUjÆj�ÿjÎjàüjÐjv~jÒ}rŸ(jÔ]UlevelKj×]jÖ]UsourcejàüjÕ]jÚ]UlineK‚Utypej„~ujÜK‚jÝhjÞ]r jò)�r¡}r¢(jÅXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.jÒ}r£(jÔ]jÕ]jÖ]j×]jÚ]ujÆj�jÞ]r¤jçXfPossible title underline, too short for the title. Treating it as ordinary text because it's so short.r¥…�r¦}r§(jÅUjÆj¡ubajÐjõubaubjs~)�r¨}r©(jÅUjÒ}rª(jÔ]UlevelKj×]jÖ]UsourcejàüjÕ]jÚ]UlineK©Utypejx~ujÞ]r«(jò)�r¬}r­(jÅUjÒ}r®(jÔ]jÕ]jÖ]j×]jÚ]ujÆj¨jÞ]r¯jçXTitle underline too short.r°…�r±}r²(jÅUjÆj¬ubajÐjõubj)�r³}r´(jÅXCBuilding timeSync Examples/Unit Test ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^jÒ}rµ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆj¨jÞ]r¶jçXCBuilding timeSync Examples/Unit Test ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^r·…�r¸}r¹(jÅUjÆj³ubajÐjubejÐjv~ubjs~)�rº}r»(jÅUjÆjÀjÎjàüjÐjv~jÒ}r¼(jÔ]UlevelKj×]jÖ]UsourcejàüjÕ]jÚ]UlineK©Utypejx~ujÜK©jÝhjÞ]r½(jò)�r¾}r¿(jÅXTitle underline too short.jÒ}rÀ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjºjÞ]rÁjçXTitle underline too short.rÂ…�rÃ}rÄ(jÅUjÆj¾ubajÐjõubj)�rÅ}rÆ(jÅXCBuilding timeSync Examples/Unit Test ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^jÒ}rÇ(j@jAj×]jÖ]jÔ]jÕ]jÚ]ujÆjºjÞ]rÈjçXCBuilding timeSync Examples/Unit Test ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^rÉ…�rÊ}rË(jÅUjÆjÅubajÐjubeubjs~)�rÌ}rÍ(jÅUjÆjçüjÎjàüjÐjv~jÒ}rÎ(jÔ]UlevelKj×]jÖ]rÏjìüaUsourcejàüjÕ]jÚ]UlineK½Utypej„~ujÜK½jÝhjÞ]rÐjò)�rÑ}rÒ(jÅX8Duplicate implicit target name: "additional references".jÒ}rÓ(jÔ]jÕ]jÖ]j×]jÚ]ujÆjÌjÞ]rÔjçX8Duplicate implicit target name: "additional references".rÕ…�rÖ}r×(jÅUjÆjÑubajÐjõubaubjs~)�rØ}rÙ(jÅUjÆjÇ)�rÚ}rÛ(jÅUjKjÆhjÎjÏjÐjÑjÒ}rÜ(jÔ]rÝj ajÕ]jÖ]j×]rÞUid150rßajÚ]ujÜKájÝhjÞ]rà(jà)�rá}râ(jÅXToolsrãjÆjÚjÎjÏjÐjäjÒ}rä(jÔ]jÕ]jÖ]j×]jÚ]ujÜKájÝhjÞ]råjçXToolsræ…�rç}rè(jÅjãjÆjáubaubjt)�ré}rê(jÅUjÆjÚjÎjÏjÐjwjÒ}rë(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKâjÝhjÞ]rìj{)�rí}rî(jÅXa`Processor SDK RTOS Tools `__ jÆjéjÎjÏjÐjjÒ}rï(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rðjò)�rñ}rò(jÅX_`Processor SDK RTOS Tools `__rójÆjíjÎjÏjÐjõjÒ}rô(jÔ]jÕ]jÖ]j×]jÚ]ujÜKâjÞ]rõjû)�rö}r÷(jÅjójÒ}rø(UnameXProcessor SDK RTOS ToolsjX@http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_Toolsj×]jÖ]jÔ]jÕ]jÚ]ujÆjñjÞ]rùjçXProcessor SDK RTOS Toolsrú…�rû}rü(jÅUjÆjöubajÐjÿubaubaubaubjy )�rý}rþ(jÅUjÆjÚjÎjÏjÐjÔ jÒ}rÿ(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rj~ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolsKujÆjýjÞ]r(jƒ )�r}r(jÅUjÒ}r(j×]jÖ]jÔ]jÕ]jÚ]UcolwidthK ujÆjjÞ]jÐj‡ ubjƒ )�r}r (jÅUjÒ}r (j×]jÖ]jÔ]jÕ]jÚ]UcolwidthKbujÆjjÞ]jÐj‡ ubj¥ )�r }r (jÅUjÒ}r (jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rj� )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆj jÞ]r(j• )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rjR)�r}r(jÅX.. Image:: ../images/E2e.jpgjÒ}r(UuriXrtos/../images/E2e.jpgrj×]jÖ]jÔ]jÕ]jX}rU*jsjÚ]ujÆjjÞ]jÐjZubajÐj¢ ubj• )�r}r(jÅUjÒ}r(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]rjò)�r }r!(jÅX_For technical support please post your questions at `http://e2e.ti.com `__.r"jÆjjÎjÏjÐjõjÒ}r#(jÔ]jÕ]jÖ]j×]jÚ]ujÜKæjÞ]r$(jçX4For technical support please post your questions at r%…�r&}r'(jÅX4For technical support please post your questions at jÆj ubjû)�r(}r)(jÅX*`http://e2e.ti.com `__jÒ}r*(UnameXhttp://e2e.ti.comjXhttp://e2e.ti.com/j×]jÖ]jÔ]jÕ]jÚ]ujÆj jÞ]r+jçXhttp://e2e.ti.comr,…�r-}r.(jÅUjÆj(ubajÐjÿubjçX.…�r/}r0(jÅX.jÆj ubeubajÐj¢ ubejÐj£ ubajÐjÒ ubejÐjÓ ubaubeubjÎjÏjÐjv~jÒ}r1(jÔ]UlevelKj×]jÖ]r2jßaUsourcejÏjÕ]jÚ]UlineKáUtypej„~ujÜKájÝhjÞ]r3jò)�r4}r5(jÅX(Duplicate implicit target name: "tools".jÒ}r6(jÔ]jÕ]jÖ]j×]jÚ]ujÆjØjÞ]r7jçX(Duplicate implicit target name: "tools".r8…�r9}r:(jÅUjÆj4ubajÐjõubaubeUcurrent_sourcer;NU decorationr<NUautofootnote_startr=KUnameidsr>}r?(hNhjUhNh j‹$h jh jÜh j3h jW]hjaâhjj£hj2hjÔhjU¹hjè¡hj@hj¤hjøáhjahjähj‡Ghjþóhj©£hj~hj׿hjJthj%fh jýh!j¹óh"j{uh#jõâh$j )h%Nh&j1(h'jßoh(j°Xh)joPh*j¨¢h+j¾Žh,Uxdaisr@h-j`Fh.Nh/jæíh0j.ªh1jdYh2j×Yh3j„nh4j/4h5jƒh6j€�h7Nh8j(ãh9j¡‚h:j#h;jehj÷²h?Nh@jihAj' hBNhCNhDjm¦hEjƒhFjÞ`hGNhHjF,hIjú/hJjg¤hKjÙhLjnhMjäÃhNjøÿhOjVhPj¿hQj“„hRj7 hSNhTj?hUj˜ohVjÖhWjlhXj™ÔhYNhZjaëh[jþwh\j‹h]j•ƒh^jtâh_jduh`jK£hajÊ hbj²Êhcj/ÕhdjäNhejNShfj,hgNhhj¸Ñhijg hjNhkj¢óhljg`hmjØwhnj �hojðhpjuhqj¹hrjXõhsjÝ*htj¨Òhujå hvj]¬hwjáùhxjäéhyjµÔhzj \h{Nh|jÝ_h}jSOh~jóhNh€jÈXh�j�`h‚jU»hƒjÇŠh„jVh…j•ìh†ja1h‡j^¢hˆjéuh‰NhŠjäh‹j®!hŒj¶Lh�jZ_hŽj]Kh�jQÔh�jŽh‘jÙ�h’jkMh“jFh”jWèh•j!}h–jš}h—j„h˜jvh™já÷hšj0kh›j1`hœj£)h�jGÓhžNhŸNh j‘Òh¡jZýh¢j×vh£jKÒh¤jÛäh¥jFh¦j”®h§j@zh¨j�×h©j¼éhªj�Lh«ju/h¬j2�h­jŒh®j|¡h¯j§¿h°j h±j@lh²j?øh³Nh´jÁùhµjmËh¶UfcrAh·jo³h¸jËh¹jÔhºjôh»j½"h¼Nh½j4Òh¾jæh¿j#phÀj—’hÁjEhÂjÓxhÃjSohÄjÜLhÅjñ}hÆjâ]hÇNhÈj>’hÉjüãhÊjã‹hËj5ÓhÌjЂhÍjhÎjíJhÏj_¸hÐjÍ¿hÑjöÏhÒjŠ.hÓjNƒhÔNhÕNhÖj–h×j7ôhØj"ähÙj:ÔhÚNhÛj²uhÜj��hÝNhÞjÂehßjÁFhàj…hájµhâjP¦hãjD†häj�XhåjÔ'hæj¯ hçjû¶hèNhéj­·hêj¼hëUti-rtos-kernelrBhìj‘_híj·ŸhîjÈ hïjdÔhðjZGhñj!óhòj¡shójÕÃhôj<åhõNhöj·¼h÷j ‘høj´�hùjùlhúj³Khûj[ãhüj�ahýNhþjähÿjz#jjjæjj]¡jjeWjNjj…Hjj©çjj?jjÅGjj{Œj jEj j']j jV j j�Yj jXôjj�öjjŒljNjj/Njjxjj~jNjjÁMjj(jj²IjjÐójjÃãjNjj‰½jNjj4gjj½DjjHHj Nj!jÒlj"jv›j#jd�j$jCrj%já j&j<j'jNIj(j>uj)j‹ãj*jYj+jöj,jô*j-j¬]j.j ¦j/jàFj0j¡òj1jyj2j ij3j¹‚j4jÛj5j¦j6jj7j"¹j8jä¿j9j‡âj:Nj;j5¦j<j¬j=j@1j>jÄj?jij@jôjAjs¦jBjÐHjCj”jDj¢MjEj^ÅjFjˆõjGjì_jHNjINjJjNâjKj´‡jLNjMj£IjNj;LjONjPjr`jQj?ëjRjCÿjSjÎÜjTNjUjÐ(jVjMÀjWjáIjXUopenclrCjYjþŽjZjß j[j�j\Nj]Nj^jœj_j²âj`jGjajÀjbjrZjcj…jdj‡jejÔjfj£jgjï jhj]Jjij§æjjjm¢jkjÒüjljy‡jmjcÿjnjd”jojsÕjpjí'jqj?ƒjrjÈ÷jsjdmjtjOËjujë3jvjÑWjwj³NjxNjyjÖDjzjvHj{j Xj|jNWj}jtj~j¡ jNj€j–Gj�jµJj‚NjƒjQîj„j¿Òj…jËéj†Nj‡jç‚jˆjO`j‰jjŠjWšj‹j{{jŒjoôj�jXPjŽjáåj�j|ûj�jÿj‘jîfj’j&‡j“jòòj”j xj•Nj–j,æj—j…kj˜Nj™j`__ jÆjSjÎjÏjÐjjÒ}rY(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]rZjò)�r[}r\(jÅXL`SYSBIOS `__r]jÆjWjÎjÏjÐjõjÒ}r^(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r_jû)�r`}ra(jÅj]jÒ}rb(UnameXSYSBIOSjX>http://processors.wiki.ti.com/index.php?title=Category:SYSBIOSj×]jÖ]jÔ]jÕ]jÚ]ujÆj[jÞ]rcjçXSYSBIOSrd…�re}rf(jÅUjÆj`ubajÐjÿubaubaubaubeubjÇ)�rg}rh(jÅUjÆhjÎjÏjÐjÑjÒ}ri(jÔ]jÕ]jÖ]j×]rjj@ajÚ]rkh,aujÜK jÝhjÞ]rl(jà)�rm}rn(jÅXXDAISrojÆjgjÎjÏjÐjäjÒ}rp(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÝhjÞ]rqjçXXDAISrr…�rs}rt(jÅjojÆjmubaubjt)�ru}rv(jÅUjÆjgjÎjÏjÐjwjÒ}rw(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜK jÝhjÞ]rxj{)�ry}rz(jÅXJ`XDAIS `__ jÆjujÎjÏjÐjjÒ}r{(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]r|jò)�r}}r~(jÅXH`XDAIS `__rjÆjyjÎjÏjÐjõjÒ}r€(jÔ]jÕ]jÖ]j×]jÚ]ujÜK jÞ]r�jû)�r‚}rƒ(jÅjjÒ}r„(UnameXXDAISjX<http://processors.wiki.ti.com/index.php?title=Category:XDAISj×]jÖ]jÔ]jÕ]jÚ]ujÆj}jÞ]r…jçXXDAISr†…�r‡}rˆ(jÅUjÆj‚ubajÐjÿubaubaubaubeubjÇ)�r‰}rŠ(jÅUjÆhjÎjÏjÐjÑjÒ}r‹(jÔ]jÕ]jÖ]j×]rŒjAajÚ]r�h¶aujÜKjÝhjÞ]rŽ(jà)�r�}r�(jÅXFCr‘jÆj‰jÎjÏjÐjäjÒ}r’(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÝhjÞ]r“jçXFCr”…�r•}r–(jÅj‘jÆj�ubaubjt)�r—}r˜(jÅUjÆj‰jÎjÏjÐjwjÒ}r™(jyX-j×]jÖ]jÔ]jÕ]jÚ]ujÜKjÝhjÞ]ršj{)�r›}rœ(jÅXg`Framework Components `__ jÆj—jÎjÏjÐjjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÜNjÝhjÞ]ržjò)�rŸ}r (jÅXf`Framework Components `__r¡jÆj›jÎjÏjÐjõjÒ}r¢(jÔ]jÕ]jÖ]j×]jÚ]ujÜKjÞ]r£jû)�r¤}r¥(jÅj¡jÒ}r¦(UnameXFramework ComponentsjXKhttp://processors.wiki.ti.com/index.php?title=Category:Framework_Componentsj×]jÖ]jÔ]jÕ]jÚ]ujÆjŸjÞ]r§jçXFramework Componentsr¨…�r©}rª(jÅUjÆj¤ubajÐjÿubaubaubaubeubjÌjÇ)�r«}r¬(jÅUjÆhjÎjÏjÐjÑjÒ}r­(jÔ]jÕ]jÖ]j×]r®jCajÚ]r¯jXaujÜK®jÝhjÞ]r°(jà)�r±}r²(jÅXOpenCLr³jÆj«jÎjÏjÐjäjÒ}r´(jÔ]jÕ]jÖ]j×]jÚ]ujÜK®jÝhjÞ]rµjçXOpenCLr¶…�r·}r¸(jÅj³jÆj±ubaubjò)�r¹}rº(jÅXG`OpenCL `__r»jÆj«jÎjÏjÐjõjÒ}r¼(jÔ]jÕ]jÖ]j×]jÚ]ujÜK¯jÝhjÞ]r½jû)�r¾}r¿(jÅj»jÒ}rÀ(UnameXOpenCLjX:http://downloads.ti.com/mctools/esd/docs/opencl/index.htmlj×]jÖ]jÔ]jÕ]jÚ]ujÆj¹jÞ]rÁjçXOpenCLrÂ…�rÃ}rÄ(jÅUjÆj¾ubajÐjÿubaubeubj�‚jôáj®âj¥çj¸éjÁüjÚejÅUU transformerrÅNU footnote_refsrÆ}rÇUrefnamesrÈ}rÉ(Xnetwork developers kit faq]rÊj õaX nimu_cpswrË]rÌjû)�rÍ}rÎ(jÅj“ïjÒ}rÏ(UnameX NIMU_Cpswj×]jÖ]jÔ]UrefnamerÐjËjÕ]jÚ]ujÆj�ïjÞ]rÑjçX NIMU_CpswrÒ…�rÓ}rÔ(jÅUjÆjÍubajÐjÿubaXnimu_ftpexamplerÕ]rÖjû)�r×}rØ(jÅjxñjÒ}rÙ(UnameXNIMU_FtpExamplej×]jÖ]jÔ]jÐjÕjÕ]jÚ]ujÆjrñjÞ]rÚjçXNIMU_FtpExamplerÛ…�rÜ}rÝ(jÅUjÆj×ubajÐjÿubaXipc 3.x vs ipc lld]rÞjüaX nimu_ftpicssgrß]ràjû)�rá}râ(jÅjYòjÒ}rã(UnameX NIMU_FtpIcssgj×]jÖ]jÔ]jÐjßjÕ]jÚ]ujÆjSòjÞ]räjçX NIMU_FtpIcssgrå…�ræ}rç(jÅUjÆjáubajÐjÿubaXreleasenotes_nwalrè]réjû)�rê}rë(jÅjº÷jÒ}rì(UnameXReleaseNotes_NWALj×]jÖ]jÔ]jÐjèjÕ]jÚ]ujÆj±÷jÞ]ríjçXReleaseNotes_NWALrî…�rï}rð(jÅUjÆjêubajÐjÿubaX ftpexamplerñ]ròjû)�ró}rô(jÅjÅñjÒ}rõ(UnameX FtpExamplej×]jÖ]jÔ]jÐjñjÕ]jÚ]ujÆj¼ñjÞ]röjçX FtpExampler÷…�rø}rù(jÅUjÆjóubajÐjÿubaX nimu_ftpcpswrú]rûjû)�rü}rý(jÅjòjÒ}rþ(UnameX NIMU_FtpCpswj×]jÖ]jÔ]jÐjújÕ]jÚ]ujÆj òjÞ]rÿjçX NIMU_FtpCpswr…�r}r(jÅUjÆjüubajÐjÿubaX worldexampler]rjû)�r}r(jÅj®ðjÒ}r(UnameX WorldExamplej×]jÖ]jÔ]jÐjjÕ]jÚ]ujÆj¥ðjÞ]rjçX WorldExampler …�r }r (jÅUjÆjubajÐjÿubaX am437x trm]r j0†aj„¬]r j�¬auUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rjÝhU current_linerNUtransform_messagesr]r(js~)�r}r(jÅUjÒ}r(jÔ]UlevelKj×]rj—ïajÖ]rj–ïaUsourcejÙéjÕ]jÚ]UlineK÷UtypejPÝujÞ]rjò)�r}r (jÅUjÒ}r!(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r"jçX!Unknown target name: "nimu_cpsw".r#…�r$}r%(jÅUjÆjubajÐjõubajÐjv~ubjs~)�r&}r'(jÅUjÒ}r((jÔ]UlevelKj×]r)j²ðajÖ]r*j±ðaUsourcejÙéjÕ]jÚ]UlineMUtypejPÝujÞ]r+jò)�r,}r-(jÅUjÒ}r.(jÔ]jÕ]jÖ]j×]jÚ]ujÆj&jÞ]r/jçX$Unknown target name: "worldexample".r0…�r1}r2(jÅUjÆj,ubajÐjõubajÐjv~ubjs~)�r3}r4(jÅUjÒ}r5(jÔ]UlevelKj×]r6j|ñajÖ]r7j{ñaUsourcejÙéjÕ]jÚ]UlineM5UtypejPÝujÞ]r8jò)�r9}r:(jÅUjÒ}r;(jÔ]jÕ]jÖ]j×]jÚ]ujÆj3jÞ]r<jçX'Unknown target name: "nimu_ftpexample".r=…�r>}r?(jÅUjÆj9ubajÐjõubajÐjv~ubjs~)�r@}rA(jÅUjÒ}rB(jÔ]UlevelKj×]rCjÉñajÖ]rDjÈñaUsourcejÙéjÕ]jÚ]UlineM?UtypejPÝujÞ]rEjò)�rF}rG(jÅUjÒ}rH(jÔ]jÕ]jÖ]j×]jÚ]ujÆj@jÞ]rIjçX"Unknown target name: "ftpexample".rJ…�rK}rL(jÅUjÆjFubajÐjõubajÐjv~ubjs~)�rM}rN(jÅUjÒ}rO(jÔ]UlevelKj×]rPjòajÖ]rQjòaUsourcejÙéjÕ]jÚ]UlineMIUtypejPÝujÞ]rRjò)�rS}rT(jÅUjÒ}rU(jÔ]jÕ]jÖ]j×]jÚ]ujÆjMjÞ]rVjçX$Unknown target name: "nimu_ftpcpsw".rW…�rX}rY(jÅUjÆjSubajÐjõubajÐjv~ubjs~)�rZ}r[(jÅUjÒ}r\(jÔ]UlevelKj×]r]j]òajÖ]r^j\òaUsourcejÙéjÕ]jÚ]UlineMSUtypejPÝujÞ]r_jò)�r`}ra(jÅUjÒ}rb(jÔ]jÕ]jÖ]j×]jÚ]ujÆjZjÞ]rcjçX%Unknown target name: "nimu_ftpicssg".rd…�re}rf(jÅUjÆj`ubajÐjõubajÐjv~ubjs~)�rg}rh(jÅUjÒ}ri(jÔ]UlevelKj×]rjj¾÷ajÖ]rkj½÷aUsourcej]õjÕ]jÚ]UlineK^UtypejPÝujÞ]rljò)�rm}rn(jÅUjÒ}ro(jÔ]jÕ]jÖ]j×]jÚ]ujÆjgjÞ]rpjçX)Unknown target name: "releasenotes_nwal".rq…�rr}rs(jÅUjÆjmubajÐjõubajÐjv~ubjs~)�rt}ru(jÅUjÒ}rv(jÔ]UlevelKj×]jÖ]UsourcejÏjÕ]jÚ]UlineM:Utypej„~ujÞ]rwjò)�rx}ry(jÅUjÒ}rz(jÔ]jÕ]jÖ]j×]jÚ]ujÆjtjÞ]r{jçX3Hyperlink target "fc-boot-label" is not referenced.r|…�r}}r~(jÅUjÆjxubajÐjõubajÐjv~ubjs~)�r}r€(jÅUjÒ}r�(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineM6&Utypej„~ujÞ]r‚jò)�rƒ}r„(jÅUjÒ}r…(jÔ]jÕ]jÖ]j×]jÚ]ujÆjjÞ]r†jçX@Hyperlink target "am655x-sbl-high-level-arch" is not referenced.r‡…�rˆ}r‰(jÅUjÆjƒubajÐjõubajÐjv~ubjs~)�rŠ}r‹(jÅUjÒ}rŒ(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineME&Utypej„~ujÞ]r�jò)�rŽ}r�(jÅUjÒ}r�(jÔ]jÕ]jÖ]j×]jÚ]ujÆjŠjÞ]r‘jçXDHyperlink target "am655x-sbl-directory-structure" is not referenced.r’…�r“}r”(jÅUjÆjŽubajÐjõubajÐjv~ubjs~)�r•}r–(jÅUjÒ}r—(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineM²&Utypej„~ujÞ]r˜jò)�r™}rš(jÅUjÒ}r›(jÔ]jÕ]jÖ]j×]jÚ]ujÆj•jÞ]rœjçX:Hyperlink target "am655x-image-formats" is not referenced.r�…�rž}rŸ(jÅUjÆj™ubajÐjõubajÐjv~ubjs~)�r }r¡(jÅUjÒ}r¢(jÔ]UlevelKj×]jÖ]Usourcej·£jÕ]jÚ]UlineM¤'Utypej„~ujÞ]r£jò)�r¤}r¥(jÅUjÒ}r¦(jÔ]jÕ]jÖ]j×]jÚ]ujÆj jÞ]r§jçXCHyperlink target "am655x-compiling-apps-for-sbl" is not referenced.r¨…�r©}rª(jÅUjÆj¤ubajÐjõubajÐjv~ubeUreporterr«NUid_startr¬K¥U autofootnotesr­]r®U 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¾j¢ U language_coder¿UenrÀU datestamprÁNU report_levelrÂKU _destinationrÃNU halt_levelrÄKU strip_classesrÅNjäNUerror_encoding_error_handlerrÆUbackslashreplacerÇUdebugrÈNUembed_stylesheetrɉUoutput_encoding_error_handlerrÊUstrictrËU sectnum_xformrÌKUdump_transformsrÍNU docinfo_xformrÎKUwarning_streamrÏNUpep_file_url_templaterÐUpep-%04drÑUexit_status_levelrÒKUconfigrÓNUstrict_visitorrÔNUcloak_email_addressesrÕˆUtrim_footnote_reference_spacerÖ‰Uenvr×NUdump_pseudo_xmlrØNUexpose_internalsrÙNUsectsubtitle_xformrÚ‰U source_linkrÛNUrfc_referencesrÜNUoutput_encodingrÝUutf-8rÞU source_urlrßNUinput_encodingràU utf-8-sigráU_disable_configrâNU id_prefixrãUU tab_widthräKUerror_encodingråUUTF-8ræU_sourcerçjÏUgettext_compactrèˆU generatorréNUdump_internalsrêNU smart_quotesrë‰U pep_base_urlrìU https://www.python.org/dev/peps/ríUsyntax_highlightrîUlongrïUinput_encoding_error_handlerrðjËUauto_id_prefixrñUidròUdoctitle_xformró‰Ustrip_elements_with_classesrôNU _config_filesrõ]Ufile_insertion_enabledröˆU raw_enabledr÷KU dump_settingsrøNubUsymbol_footnote_startrùKUidsrú}rû(j )j )j÷²jó²jrèjmèjiSjcSj'Qj!QjŠPj„Pj4gj0gj˜Jj’Jj~jzjHjHjÞGjØGj5Gj0Gj¶Dj²DjéujåujÀûj´éjäéjàéjIŒjCŒjaâj\âj$ j j 4j4j‘_j�_jCrj?rjÐJjÊJjÔjzÔjc‹j_‹jŽjŠj/Jj)Jjøájôájá÷jÝ÷jäj äjy‡ju‡j']j#]j׿jÒæjù)jõ)jFjFjµj±j¬j¦jÜLj×Lj/4j+4jÖDjÒDjõâjðâjxjxjäÎjàÎjÎÜjÊÜj@jgjSOjNOjÇ!jÁ!jdYj_Yj×YjÒYjƒjƒj(ãj#ãj¡‚j�‚jæíjâíjXôjTôj8ÿj3ÿj¶jÿµjû¶j÷¶jijij&‡j"‡jš}j–}jH”jB”j²âj®âjm¦jn¦jÞ`jÙ`j{ujwujMÀjIÀjF,jB,j¾÷jgjÐójÌójú/jö/j}„jw„jÙjÌjoôjkôjÏœjÉœj½Dj¹Dj j jˆ¹j„¹j@ljuj:ujëRjåRjj j¡sj�sjJjJj]JjYJj×vjÓvjäjàj‡j ‡jZ_jU_jQîjMîj˜oj”ojXPjTPj¨¢j¤¢jkMjfMja1j]1jWèjRèjzžjužj™Ÿj”ŸjDj>jm–jh–jv›jq›j”jy”j–”j‘”jžjÿ�jGžjBžj£œjžœj.�j(�j?ëj;ëjàmjÜmjè¡jä¡jÄjÀj1`j-`j:Ôj6Ôj_¸j[¸j—’j“’j·j·j’j9’j²Ij®IjVjRj��j‹�jŒjŒjüãj÷ãj#pjpjÑWjÍWj~j~jtjtjЂjÌ‚j§¿j£¿j3j3j–Gj’GjàFjÜFjj j?j;j} jw j¿1j¹1jþ3jö3j*1j$1j|1jv1j�/jŠ/j 1j1jã)jÞ)jt*jo*j(j(jK)jE)j"äjäj jjaëj]ëjYjUjáåjÜåjòòjîòj…Hj�HjBjEj{ñjvñjÉñj@j·Ÿj³Ÿj°Xj¬Xj–ïj‘ïj²ðj&jßjÚj—ïjj�`j˜`j¸Ñj´ÑjÈñjÃñj’#j�#j@j<jij ijÏ�jÉ�jW]jS]j' j# jöÏjòÏjÔjÐj^ÅjZÅjD†j@†j¨Yj¢Yjí'jé'jAÕj=ÕjdÔj_Ôjj£jf£jÔjÐjÿjûjd�j`�jî’jê’j<åj7åjduj`ujÁMj¼Mj ‘j‘j´�j¯�j³Kj®Kj[ãjVãjØwjÔwj…j�jujuj¤j j{{jÈj]KjYKj 'j'j‡GjƒGjÓxjÏxjajajjæjeæjnj njþ‚jú‚jKÒjGÒjÈ jÄ j%fj!fj…kj�kjSQjMQjÝ_jÙ_j7ôj3ôjvjvj©çj¥çjƒj{ƒjôjðjå já j³¹j¯¹jdµj^µjáIjÝIjeWjaWj\òjWòj�YjˆYj�öj‹öj›»j•»j!¼j¼jÅGjÁGjÆ·jÀ·jÜ·j×·jx¸jr¸j�¸j‰¸j¹j¹jàºjÚºj÷ºjñºj}»jw»jë3jç3jËÊjÅÊjñÊjëÊj¡ j� jyÅjsÅj¡ÅjœÅj‚Ãj|Ãj÷ÄjñÄjÊÆjÅÆj¤ÊjŸÊjÊÅjÄÅjÆjÆj„nj€nj¢^j�^jiƒjcƒjøÜj�‚j]j ]jÄ\j¾\jK]jG]jL]jf‚j �j›�jHHjDHj¹jµjœj˜jÃãj¾ãjÒljÎlj/Nj*Njc)j])jQÔjLÔj½"j¹"jÂej¾ejòjMjÂj¾jþŽjúŽjÁFj½Fj®j¨j«‚j¢‚j‰½j…½jßojÛoj5Ój1Ój2�j.�jz#jv#jV jR j/Õj*Õj‹ãj†ãjøÿjôÿjøÍjòÍj!ójójjSDj?æj:æj¹‚jµ‚j¦j¦jÁjÁj¿Îj¹Îj]¡jY¡j.aj(aj•ìj‘ìj‡âj‚âjUjQj€�j|�jôjôjNIjJIj£)jŸ)j¬j¨j5¦j6¦j Xj Xj@1j<1j*[j$[jV[jP[jùljõlj8Wj2WjZj Zj�Zj‡Zj­Zj§ZjˆSjƒSjTjÿSj0Tj+Tj¿VjºVjFjFj¢Mj�Mjˆõjƒõjï jë jäjàjWšjSšjNâjIâj”j�j9Œj4Œjs&jm&jÆ%jÀ%jöjòjŠ.j†.jð jê j j¼ j(#j##jÕ"jÐ"jý#jø#j¬]j¨]jI%jC%jœ$j–$j;Lj6Lj�j‰jCÿj>ÿjß jÛ jU¹jQ¹jÐ(jÌ(jpjpj@zj