Codec Engine & FriendsIf you dream in code then this blog is for you. Hard hitting tips and tricks to aid in your design.https://e2e.ti.com/blogs_/archives/b/codec_engine/atomTelligent Community (Build: 11.1.7.15705)2010-10-19T13:34:00ZNew Bits - DSP Link 1.65.02.09https://e2e.ti.com/blogs_/archives/b/codec_engine/posts/new-bits-dsp-link-1-65-02-092012-10-24T22:23:00Z2012-10-24T22:23:00Z<p>We released another minor update to DSP Link 1.65 last week. There is some improved support for recovering when an application crashes, as well as a couple bug fixes.</p>
<ul>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/DSPLink/1_65_02_09/index_FDS.html">DSP Link 1.65.02.09 GA</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/DSPLink/1_65_02_09/exports/dsplink_linux_1_65_02_09/dsplink_1_65_02_09_ReleaseNotes.html">Release Notes</a>)</li>
</ul>
<p>Please review the "What's New" section in the release notes for the change log for this, and previous releases.</p>
<p>This release is appropriate for DVSDK environments, and is not applicable for EZSDK 5.x users.</p>
<p>We still aren't actively developing DSP Link, but occasionally take opportunities like this to roll up a few interesting fixes/features our customers find (and even submit fixes for!).</p>
<p>Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=663597&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490New Bits - CE 3.23 and Friendshttps://e2e.ti.com/blogs_/archives/b/codec_engine/posts/new-bits-ce-3-23-and-friends2012-08-17T08:44:00Z2012-08-17T08:44:00Z<p>We just rolled out a new suite of CE and Friends over the last few days. This includes updates to Codec Engine, Framework Components, SysLink, Linux Utils, OSAL, and the XDAIS products. And we also introduced a new member of the family - IPC Utils.</p>
<p>[ The new guy's name is subject to change - we needed something on the birth certificate, but we admittedly didn't give it enough thought. ]</p>
<p>The scope of the IPC-Utils-product-that-shall-be-named-later is "frameworks built on IPC", and the initial spotlight is on <a href="http://processors.wiki.ti.com/index.php/RCM_Overview">RCM</a>. RCM is fundamentally a MessageQ-based client/server framework for running functions on another processor. It's been distributed with Framework Components for a few years, and is what the EZSDK's <a href="http://processors.wiki.ti.com/index.php/OpenMax_Development_Guide">OMX framework</a>, <a href="https://github.com/robclark/libdce/">libdce</a>, and other frameworks can be built upon. But it's always been a little bit odd in that it introduced a SysLink/IPC dependency into Framework Components. Putting it into a fundamentally IPC-aware product made sense.</p>
<p>There's also an <a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipcutils/latest/xdoc/ti/sdo/opencl/package.html">OpenCL prototype</a> we included in the initial IPC Utils release, also built on RCM. It serves as both another example for building higher frameworks on RCM, as well as an interesting option for our users that prefer open standards. Personally, I think OpenCL has its place - in systems with lots of coprocessors that can run tons of jobs in parallel. In this prototype, we're just showing how you could implement OpenCL on a multicore system built on RCM/IPC... but frankly running it on a dual-core environment like OMAP3 isn't really a sweet spot for OpenCL. But think about putting it on one of those cool <a href="http://processors.wiki.ti.com/index.php/C6678">C6678 devices</a> (or a farm of them!) and now we're talking!</p>
<p>Back to the MFP release details, here are some key additions and removals:</p>
<ul>
<li>Added TI811X support</li>
<li>Thanks to IPC Utils refactoring RCM, the Framework Components product is now back to its roots, providing single core XDAIS alg management again.</li>
<li>Removed Android support. This one kinda bums me out, but the demand just wasn't there (on the devices using MFP on the HLOS), so the support cost didn't justify it.</li>
<li>Removed uClibc support. Doesn't bum me out as much as dropping Android, but another victim of demand-lack.</li>
<li>Removed GT and DBC. What do you mean you haven't moved to <a href="http://rtsc.eclipse.org/docs-tip/Using_xdc.runtime_Logging">xdc.runtime.Log</a> and <a href="http://rtsc.eclipse.org/cdoc-tip/xdc/runtime/Assert.html">xdc.runtime.Assert</a> yet?!?</li>
<li>Deprecated FrameQ, COFF, DMAN3, and ACPY3. What do you mean you haven't moved to MessageQ, ELF, RMAN and IRESMAN_EDMA3CHAN yet?!?</li>
</ul>
<div>And here are the download links and Release Notes:</div>
<div>
<ul>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ce/3_23_00_07/index_FDS.html">Codec Engine 3.23.00.07</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ce/3_23_00_07/exports/codec_engine_3_23_00_07/codec_engine_3_23_00_07_ReleaseNotes.html">Release Notes</a>)</li>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipcutils/1_00_00_03/index_FDS.html">IPC Utils 1.00.00.03</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ipcutils/1_00_00_03/exports/ipcutils_1_00_00_03/ipcutils_1_00_00_03_ReleaseNotes.html">Release Notes</a>)</li>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/2_20_00_14/index_FDS.html">SysLink 2.20.00.14</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/2_20_00_14/exports/syslink_2_20_00_14/syslink_2_20_00_14_ReleaseNotes.html">Release Notes</a>)</li>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/fc/3_23_00_13/index_FDS.html">Framework Components 3.23.00.13</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/fc/3_23_00_13/exports/framework_components_3_23_00_13/framework_components_3_23_00_13_ReleaseNotes.html">Release Notes</a>)</li>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/linuxutils/3_23_00_01/index_FDS.html">Linux Utils 3.23.00.01</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/linuxutils/3_23_00_01/exports/linuxutils_3_23_00_01/linuxutils_3_23_00_01_ReleaseNotes.html">Release Notes</a>)</li>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/osal/1_23_00_04/index_FDS.html">OSAL 1.23.00.04</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/osal/1_23_00_04/exports/osal_1_23_00_04/osal_1_23_00_04_ReleaseNotes.html">Release Notes</a>)</li>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/xdais/7_23_00_06/index_FDS.html">XDAIS 7.23.00.06</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/xdais/7_23_00_06/exports/xdais_7_23_00_06/xdais_7_23_00_06_ReleaseNotes.html">Release Notes</a>)</li>
</ul>
</div>
<p> That's all I got for now. Now go write some code!</p>
<p> Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=663401&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490RingIO Users Guide postedhttps://e2e.ti.com/blogs_/archives/b/codec_engine/posts/ringio-users-guide-posted2012-06-13T18:50:03Z2012-06-13T18:50:03Z<p>I have finally got around to put up the users guide for the RingIO module on the wiki:</p>
<p><a href="http://processors.wiki.ti.com/index.php/RingIO_Users_Guide">http://processors.wiki.ti.com/index.php/RingIO_Users_Guide</a></p>
<p>It discusses RingIO from a design standpoint, and is an updated version of what used to be in DSPLINK (for those of you who remember that product). This should help fill the gap between the information provided in the SysLink User Guide and API guide. Happy reading!</p>
<p>Vincent</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=663296&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Vincent W.https://e2e.ti.com:443/members/10749New Bits - SysLink 2.10.06.28https://e2e.ti.com/blogs_/archives/b/codec_engine/posts/new-bits-syslink-2-10-06-282012-06-12T22:43:00Z2012-06-12T22:43:00Z<p>A new release of SysLink is available. This is a patch release for the 2.10 stream, with several good bug fixes.</p>
<ul>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/2_10_06_28/index_FDS.html">SysLink 2.10.06.28 GA</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/2_10_06_28/exports/syslink_2_10_06_28/syslink_2_10_06_28_ReleaseNotes.html">Release Notes</a>)</li>
</ul>
<p>Please review the "What's New" section in the Release Notes for the full change log.</p>
<p>Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=663291&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490Using CCS for Linux Debugginghttps://e2e.ti.com/blogs_/archives/b/codec_engine/posts/using-ccs-for-linux-debugging2012-03-20T19:28:51Z2012-03-20T19:28:51Z<p>For sometime now, I've heavily relied on print statements to debug my Linux user code when developing. With <a href="http://processors.wiki.ti.com/index.php/CCSv5">Code Composer Studio (CCS) v5</a> supported on a Linux host, I decided to take a look at how to leverage the IDE to debug my Linux user level code. To my surprise (well not much since it's Eclipse based), CCS leverages the GNU Debugger (GDB) remote capabilities to allow for Linux debugging on TI devices. The most difficult part of using CCS for this was to find a compatible GDB (for host PC) and GDBserver (for the target).</p>
<p>I've outlined some basic information and steps to get you going. The topic uses the <a href="http://processors.wiki.ti.com/index.php/Category:SysLink">SysLink</a> product as an example but the concepts are applicable to most any Linux debugging environment. </p>
<p><a href="http://processors.wiki.ti.com/index.php/CCS_Debugging_of_Linux_Applications_with_GDB">http://processors.wiki.ti.com/index.php/CCS_Debugging_of_Linux_Applications_with_GDB</a></p>
<p>Enjoy</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=636614&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Arnie Reynosohttps://e2e.ti.com:443/members/30954Rebuilding SysLink samples in CCS v5.1https://e2e.ti.com/blogs_/archives/b/codec_engine/posts/rebuilding-syslink-samples-in-ccs-v5-12012-01-21T01:41:00Z2012-01-21T01:41:00Z<div><b>Other Parts Discussed in Post: </b><a href="https://www.ti.com/tool/SYSBIOS" class="internal-link folder tool" title="Link to Tool Folder" target="_blank">SYSBIOS</a></div><p>Seeing that this has become an award-winning blog, I feel I shouldn't let Chris bask in the glory all by himself. So here's my attempt at a first post that will hopefully propel me to stardom (everything starts with a dream, right?).<br /><br />Over the holidays, while everyone was busy with Christmas trees and Santa Claus, I was looking through the E2E forums in our practically vacant office (for those who are wondering why I was there, it was because I had already used up all my spare change while vacationing in New Zealand the previous month. Great place to visit by the way!). It was a good opportunity to help out anyone who was desperate for help after realizing their Christmas present wasn't going to help them resolve their program crashes. Scrolling through the posts, I noticed that some of them seemed to have a recurring theme: users were trying to rebuild code involving SysLink using CCS, and seemed to be having problems. This is not at all surprising, given SysLink does not officially support rebuilding its samples using CCS. Short of an example, is it any wonder that users are having trouble?<br /><br />The one comment that caught my attention was this one: "I've never been able to get CCS to build syslink compatible code that correctly runs."<em> Is it really THAT hard,</em> I thought to myself. There was only one way to find out - do it! So I took the messageQ sample in SysLink and rebuilt it in CCS v5.1 for the TI814x EVM, creating separate projects for the A8, DSP and M3. I had previous experience with CCS v3.3, but hadn't had a chance to build code using CCS v5.1. So the main challenges were to figure out the IDE environment and the build options necessary to rebuild the sample. In the end, I am happy to report that CCS was indeed able to build SysLink compatible code that correctly runs. Overall, I enjoyed working with the IDE, and saw the progress made since v3.3, especially in the area of project creation for both Linux and SysBios. I have since put up my CCS projects on GitHub for all to share. Here's a wiki article that gives more details in case you are interested:</p>
<p><a href="http://processors.wiki.ti.com/index.php/Creating_CCS_Project_for_SysLink_samples">http://processors.wiki.ti.com/index.php/Creating_CCS_Project_for_SysLink_samples</a></p>
<p>Enjoy, and have a good weekend!</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=580195&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Vincent W.https://e2e.ti.com:443/members/10749You like me! You really like me!https://e2e.ti.com/blogs_/archives/b/codec_engine/posts/you-like-me-you-really-like-me2012-01-20T16:24:00Z2012-01-20T16:24:00Z<p>I found out today that I'm the proud co-winner of the <strong>2011 EP Community Fan Vote for Blog of the year</strong>. I also want to congratulate the <a href="http://e2e.ti.com/blogs_/b/multicoremix/default.aspx">Multicore Mix Blog</a> on sharing this with me. I'll take the statue on odd weeks, you can have it on even weeks, k?</p>
<p>To me, blogs are just one more way to get closer to the customer. It helps communicate that TI is more than just a big brown building that bakes sand, we're people. Smart, strange and sometimes funny people, who aren't that horrible to share a drink with.</p>
<p><img src="http://e2e.ti.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-04-95/7384.me_5F00_cheers.jpg" style="display:block;margin-left:auto;margin-right:auto;" width="200" alt="" /></p>
<p>I want to thank the voters for taking the time to recognize this channel of communication, and encourage them to keep the communication channels going both ways. That comment block below isn't there just for looks! See you all on the forums/blogs/wikis!</p>
<p>Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=579730&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490New Bits - DSP Link 1.65.01.06https://e2e.ti.com/blogs_/archives/b/codec_engine/posts/new-bits-dsp-link-1-65-01-062012-01-13T01:06:00Z2012-01-13T01:06:00Z<p>A minor update to DSP Link 1.65 is now available. It addresses a few reported issues and updates it for use with newer Linux kernels.</p>
<ul>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/DSPLink/1_65_01_06/index_FDS.html">DSP Link 1.65.01.06 GA</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/DSPLink/1_65_01_06/exports/dsplink_linux_1_65_01_06/dsplink_1_65_01_06_ReleaseNotes.html">Release Notes</a>)</li>
</ul>
<p>Please review the "What's New" section in the release notes for the change log for this, and previous releases.</p>
<p>Note that this release is appropriate for DVSDK environments (and I think the upcoming DVSDK 4.x releases will include it). These are not applicable for EZSDK 5.x users.</p>
<p>If you're a user of DSP Link, you know we're not actively developing it, but critical bug fixes will be made - typically driven by the DVSDK team. Our development efforts are focused on <a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/index.html">SysLink</a>, as well as monitoring and contributing to <a href="http://lkml.org/lkml/2012/1/12/256">remoteproc and rpmsg development</a> for more native Linux support on upcoming devices.</p>
<p>Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=573211&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490Getting the D[a]M[n] Timer Config Right on TI81XXhttps://e2e.ti.com/blogs_/archives/b/codec_engine/posts/getting-the-d-a-m-n-timer-config-right-on-ti81xx2012-01-09T20:19:00Z2012-01-09T20:19:00Z<p>There have been <a href="http://e2e.ti.com/support/embedded/linux/f/354/t/136555.aspx">several</a> <a href="http://e2e.ti.com/support/embedded/bios/f/355/t/145309.aspx">reports</a> <a href="http://e2e.ti.com/support/embedded/bios/f/355/t/139836.aspx">lately</a> of the <a href="http://e2e.ti.com/support/embedded/bios/f/355/t/144526.aspx">DSP hanging</a> on DM81XX and C6A81XX devices. Sometimes it's a SysLink sample that doesn't run, a SYS/BIOS-only app who's timeouts are taking too long/short, or an existing app that worked fine, but fails when updating to a new EZSDK, Linux, or SYS/BIOS release. In many of these instances, the issue is the result of a dmtimer misconfiguration - in the DSP-side SYS/BIOS config script.</p>
<p>There is <a href="http://processors.wiki.ti.com/index.php/SYS/BIOS_dmtimer_configuration_for_TI81xx">a nice article summarizing the DM Timer issue (and fix!)</a> that we just posted to the TI Wiki. I just wanted to give it a little more attention in case you get bit by it, too.</p>
<p>Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=569345&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490New Bits - Linux Utils 2.x and LPM 1.x Updateshttps://e2e.ti.com/blogs_/archives/b/codec_engine/posts/new-bits-linux-utils-2-x-and-lpm-1-x-updates2012-01-04T18:38:00Z2012-01-04T18:38:00Z<div>Minor updates for Linux Utils and LPM (Local Power Manager) are now available. The Linux Utils update works around an issue we're seeing in recent kernels, and the LPM update finally brings it up to 2.6.37 and newer kernels.</div>
<div>
<ul>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/linuxutils/2_26_03_06/index_FDS.html">Linux Utils 2.26.03.06 GA</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/linuxutils/2_26_03_06/exports/linuxutils_2_26_03_06/linuxutils_2_26_03_06_ReleaseNotes.html">Release Notes</a>)</li>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/lpm/1_24_03_11/index_FDS.html">Local Power Manager 1.24.03.11 GA</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/lpm/1_24_03_11/exports/local_power_manager_linux_1_24_03_11/local_power_manager_linux_1_24_03_11_ReleaseNotes.html">Release Notes</a>)</li>
</ul>
</div>
<div>Please review the "What's New" section in the release notes for the change log for this, and previous releases.</div>
<div></div>
<div>Note that these releases are appropriate for DVSDK environments (and I _think_ upcoming DVSDK 4.x releases will include them). These are not applicable for EZSDK 5.x users.</div>
<p>Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=565841&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490New Bits - SysLink 2.00.05.85https://e2e.ti.com/blogs_/archives/b/codec_engine/posts/new-bits-syslink-2-00-05-852011-12-07T01:37:11Z2011-12-07T01:37:11Z<p>
<div>
<div>A new release of SysLink is available. This is a minor release which fixes a few minor bugs.</div>
<div>
<ul>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/2_00_05_85/index_FDS.html">SysLink 2.00.05.85 GA</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/2_00_05_85/exports/syslink_2_00_05_85/syslink_2_00_05_85_ReleaseNotes.html">Release Notes</a>)</li>
</ul>
</div>
<div>Please review the "What's New" section in the release notes for the change log for this, and previous releases.</div>
<p>Chris</p>
</div>
</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=547007&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490I'll try to be better... really...https://e2e.ti.com/blogs_/archives/b/codec_engine/posts/i-ll-try-to-be-better-really2011-11-30T17:50:00Z2011-11-30T17:50:00Z<p>Just realized I've only posted here once in the last year(!). I'll justify it by saying "we've been really busy"... you buy it? Nah, mom doesn't either when I forget to call.</p>
<p>FWIW, it's true. The team's been adding support for the <a href="http://www.ti.com/product/tms320dm8148">DM814X</a> and <a href="http://www.ti.com/product/tms320dm8168">DM816X</a> devices - and more. But the big distraction... er... "news" is that <a href="http://processors.wiki.ti.com/index.php/Category:SysLink">SysLink</a>, the center of our heterogenous multicore SW stack, has been added to the CE&F team! It's always been a close friend, but over the last 6 months it's moved in and now shares the fridge with <a href="http://processors.wiki.ti.com/index.php/Category:XDAIS">XDAIS</a>, <a href="http://processors.wiki.ti.com/index.php/Category:Framework_Components">Framework Components</a> and <a href="http://processors.wiki.ti.com/index.php/Category:MFP">our other friends</a>.</p>
<p>We just released <a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/syslink/index.html">SysLink 2.10</a> last week, just in time for Thanksgiving. So with any luck, things will get back to "normal" and I'll find some time to blog. And the good news is that you should start seeing some posts on SysLink now, too!</p>
<p>Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=542398&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490New Bits - XDAIS 7.21.00.02https://e2e.ti.com/blogs_/archives/b/codec_engine/posts/new-bits-xdais-7-21-00-022011-06-15T00:35:27Z2011-06-15T00:35:27Z<div>A new release of XDAIS is available. This is a minor release which fixes a few
bugs in the examples and wizards.<br /></div>
<div>
<ul>
<li><a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/xdais/7_21_00_02/index_FDS.html">XDAIS 7.21.00.02 GA</a> (<a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/xdais/7_21_00_02/exports/xdais_7_21_00_02/xdais_7_21_00_02_ReleaseNotes.html">Release
Notes</a>)
</li>
</ul>
</div>
<div>
Please review the "What's New"
section in the release notes for the change log for this, and previous releases.<br /></div>
<p>
Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=413939&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490Finer Details - Physically Contiguous Memoryhttps://e2e.ti.com/blogs_/archives/b/codec_engine/posts/finer-details-physically-contiguous-memory2010-11-03T18:03:00Z2010-11-03T18:03:00Z<p>Physically contiguous memory is important in embedded systems. Often, DMA engines, DSPs, and other hardware peripherals don't go through MMUs, and therefore must operate on memory that's physically contiguous.</p>
<p>We introduced <a href="http://processors.wiki.ti.com/index.php/CMEM_Overview">CMEM</a> to help manage this memory. (<a title="CMEM API Reference" href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/linuxutils/latest_2_x/docs/html/cmem_8h.html">CMEM API Reference Guide</a>) CMEM has a few key features:</p>
<ol>
<li>Actually manage memory. That is, support allocate/free APIs and the provide the bookkeeping necessary to do so. CMEM can manage multiple blocks, as well as provide a "heap" and/or "pool" based allocation from each block.</li>
<li>Address translation. The CMEM APIs are offered in user mode, and return process-specific virtual memory address. When providing this memory to peripherals and other cores, these virtual addresses cannot be used. CMEM provides services to manage this virtual/physical address translation.</li>
<li>Cache management. CMEM's allocator can provide either cached or non-cached memory. When cached memory is granted, the user can utilize these cache APIs as needed.</li>
</ol>
<p><b>Do I <i><span style="text-decoration:underline;">have</span></i> to use CMEM?</b></p>
<p>It depends, but the answer is "probably", at least some portion of it. Given the list of features, you can see CMEM does more than just
allocation. So, if you're using Codec Engine, or some other
library/framework that relies on those features, you'll obviously need
CMEM. This section describes some of the use cases where CMEM is required. </p>
<p>For Codec Engine in particular, CMEM's allocator (feature #1 above) is used when granting memory - during algorithm creation - to 'local' Linux/WinCE-side algorithms (as part of the XDAIS memory request/grant process). The dependencies for the 'local' Linux/WinCE-side algorithm is shown in this dependency diagram:</p>
<p style="text-align:center;"><img style="border:1px solid black;" alt="Memory Dependencies for Local Algorithms" src="http://e2e.ti.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-04-95/4300.memory_5F00_deps.PNG" /></p>
<p><br />On a ARM-only DM365, for example, CE <i>unconditionally</i> requires CMEM's memory allocator to provide memory to those 'local' Linux/WinCE-side algs during
creation. (Not to be confused with data buffers allocated and managed by the app, these IALG-requested "memTab[]" buffers are used internal to the algorithm.) Note also that the alg runs in user-mode. As a result, if these buffers need to be used by DMA's/IMCOP/etc, the alg must appropriately manage
cache and address translation. The alg should use the OS-independent MEMUTILS services for these operations. This further isolates the alg from OS-specific libraries like CMEM.</p>
<p>Additionally, when using 'remote' algs, CE (actually the VISA stubs) uses CMEM's address translation (feature #2 above) to convert the user-supplied virtual addresses to physical addresses suitable for the remote processor.</p>
<p><i><b>Can I use non-CMEM memory for data buffers?</b></i></p>
<p>Sure! If you want to manage data buffers independently CMEM, you have to take care of a few things (which Memory_* APIs
take care of implicitly):</p>
<ol>
<li>Map your memory into your process's address space. On Linux, this is typically done with <span style="font-family:courier new,courier;">mmap()</span> / <span style="font-family:courier new,courier;">munmap()</span> calls.</li>
<li>Register the buffer with CE (so it can appropriately perform address translation). You can use CE's <a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ce/latest_2_x/docs/html/group__ti__sdo__ce__osal___memory.html#gab52db9600a898de8c2be8c026bb1f64a"><span style="font-family:courier new,courier;">Memory_registerContigBuf()</span></a> / <a href="http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/ce/latest_2_x/docs/html/group__ti__sdo__ce__osal___memory.html#ga41460efdf79c34895257b9026acfcae8"><span style="font-family:courier new,courier;">Memory_unregisterContigBuf()</span></a> APIs for this.</li>
<li>[Potentially] <a href="http://processors.wiki.ti.com/index.php/DSP_MMU_Faults">add/remove your memory buffer into the DSP-side MMU</a> (for devices with remote MMUs, like OMAP3)</li>
</ol>
<p>There may also be some subtle cache alignment issues to consider as well - don't
give the DSP a cache-mis-aligned buffer <i>right next to</i> another buffer
in use. Cache management is performed on a cache aligned boundary and you don't want to inadvertently muck with
neighboring buffers that share the same cache space.</p>
<p>Note also that as of <a href="http://processors.wiki.ti.com/index.php/Linux_Utils_Roadmap">Linux Utils 2.24</a>, CMEM (on Linux) supports insmod'ing it with zero memory to manage. This allows you to, for example, utilize CMEM for only the address translation services but not its memory management APIs.</p>
<p>Got related questions? Post them in the comments below, or on the <a href="http://e2e.ti.com/support/embedded/default.aspx">Embedded Software Forums</a>.</p>
<p>Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=261251&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490My 2 Cents - The EZ SDK for C6A816xhttps://e2e.ti.com/blogs_/archives/b/codec_engine/posts/my-2-cents-the-ez-sdk-for-c6a816x2010-10-19T21:34:00Z2010-10-19T21:34:00Z<p><a href="http://newscenter.ti.com/Blogs/newsroom/archive/2010/10/19/introducing-industry-s-fastest-single-core-floating-point-dsp-new-c6a816x-integra-dsp-arm-174-processors-from-texas-instruments-provide-extreme-integration-and-high-performance-527167.aspx">TI announced the new C6A8168 processor today</a>, as well as the <a title="EZ SDK Product Description" href="http://www.ti.com/nc6a816xprtf">EZ SDK Software environment</a> we're providing to help developers use it. Just rolls off the tongue, doesn't it? :P</p>
<p>While that's great news, I've been approached a few times today with some concerned and confused looks, and since there's not yet much info in the release notes or wiki on it (yet!), I thought it'd be worth doing a quick SW overview from a Codec Engine and Friends POV.</p>
<p>Here's a screen grab from the <a href="http://focus.ti.com/docs/toolsw/folders/print/linuxezsdk-c6a816x.html?DCMP=dsps_netra_101019&HQS=Other+PR+nc6a816xprtf#Features">EZ SDK Features</a> section:</p>
<p style="text-align:center;"><img src="http://e2e.ti.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-04-95/4863.ezsdk_5F00_features.png" border="0" alt="" /></p>
<p>See those highlighted 7 characters? MFP 3.21? That's the same Codec Engine and Friends you know (and love, right?). For those that don't know, MFP is an internal name for "Codec Engine and Friends" that's been leaking out lately. It stands for <a href="http://processors.wiki.ti.com/index.php/Category:MFP">Multimedia Framework Products</a>. We've added some cool new features (BIOS 6 support, <a title="C647x Overview" href="http://processors.wiki.ti.com/index.php/C647x">homogenous multicore support</a>, and an improved logging infrastructure are notable), but the core remains the same. While our config scripts may need a change here and there, I'm proud to say we're API compatible with previous generations of products.</p>
<p>So why isn't CE and Friends more prevalently mentioned? Good question! Unfortunately (or fortunately?!?), the marketing folks didn't ask my opinion, but at least I've got this blog! ;) Maybe they wanted to draw attention to the new, higher-level <a title="C6EZAccel" href="http://processors.wiki.ti.com/index.php/C6Accel">C6EZAccel</a> and <a title="C6EZRun" href="http://processors.wiki.ti.com/index.php/C6Run">C6EZRun</a> products. I am a fan of C6EZAccel as it builds on Codec Engine's IUNIVERSAL support (we told you it was universal!), and brings the APIs of those great DSP libraries to ARM developers. I'm personally not as big a fan of C6EZRun; while it's cute and has some interesting deployment ideas, in its current state I'm not sure it's appropriate for more than prototyping - which I guess does have some merit. Unfortunately C6EZRun doesn't play well with other apps, and I frankly don't know how the performance of its architecture is, so to move from prototyping to production is probably a higher bar than I'd like... but those things may be addressed in the future, so who knows.</p>
<p><b>Where We're At</b></p>
<p>The version of MFP included in the EZ SDK is an Early Adopter (EA), so it's not
ready for shipping products just yet, but we're planning to make a
Generally Available (GA), production quality release available in early
2011. The MFP 3.21 EA in the EZ SDK includes Codec Engine, Framework Components, Linux Utils and XDAIS. It builds on the next generation of DSP Link, renamed SysLink. More details I'm sure to come on that, but the SysLink product was rebuilt from the ground up. It still has some old baggage (like we all do), but it does incorporate a lot of good feedback gathered over the years, as well as fold in some nice features that we've developed in related products (e.g. DSP Bridge).</p>
<p>I hope that helps clear up some of the fog around this EZ SDK. Rest assured, Codec Engine and Friends are still in this next generation of SDKs. And if you've got C6000 algorithms already developed, you've already got a head start on the new (and extremely powerful!) C6A816x devices. (Standard caveats apply - if your algs are using DM6467-specific accelerators, or have hard-coded addresses built into them, you'll likely have more work to do.)</p>
<p>If you've got hardware questions, you can ask them on the <a title="Integra Forums" href="http://e2e.ti.com/support/dsp/integra_dsparm/default.aspx">new forums</a>. And if you want to know my non-marketing opinion about something in particular, ask below in the comments and I'll do my best. <a title="C6A816x EVM" href="http://focus.ti.com/docs/toolsw/folders/print/tmdxevm8168ddr2.html">Now go order an EVM!</a></p>
<p>Chris</p><div style="clear:both;"></div><img src="https://e2e.ti.com/aggbug?PostID=251866&AppID=495&AppType=Weblog&ContentType=0" width="1" height="1">Chris Ringhttps://e2e.ti.com:443/members/3490