<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://bugs.maemo.com/skins/common/feed.css?207"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>Programming the DSP - Revision history</title>
		<link>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;action=history</link>
		<description>Revision history for this page on the wiki</description>
		<language>en</language>
		<generator>MediaWiki 1.15.5-7</generator>
		<lastBuildDate>Sat, 04 Apr 2026 17:15:33 GMT</lastBuildDate>
		<item>
			<title>amigadave:&amp;#32;/* Steps forward */ link</title>
			<link>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=32784&amp;oldid=prev</link>
			<guid>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=32784&amp;oldid=prev</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Steps forward:&amp;#32;&lt;/span&gt; link&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 11:33, 15 April 2010&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 133:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 133:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Steps forward ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Steps forward ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Although video out seems to have been dropped by Nokia with the N800 (and the DSP has become more stable, not sure if not using the framebuffer is the reason, or simply more mature hardware), anyway audio decoding and output is still performed on the DSP, and this is a suitable task for people to get stuck into. Framebuffer access works for the N8x0 and 770. Contact me (lardman) or read the maemo-developers list for more info. I should update this page when I have some time.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Although video out seems to have been dropped by Nokia with the N800 (and the DSP has become more stable, not sure if not using the framebuffer is the reason, or simply more mature hardware), anyway audio decoding and output is still performed on the DSP, and this is a suitable task for people to get stuck into. Framebuffer access works for the N8x0 and 770. Contact me (&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[User:&lt;/ins&gt;lardman&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|lardman]]&lt;/ins&gt;) or read the maemo-developers list for more info. I should update this page when I have some time.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;A pair of drivers are required to access the audio codec (a low-level mini-driver and a standard high-level class driver). These are obviously already present on the device, but no documentation is available about how to use them directly. In fact it can be seen from the functions called by existing modules (such as &amp;lt;code&amp;gt;pcm2.o&amp;lt;/code&amp;gt;) that it's a stream class driver. Therefore it may be possible to access this class driver directly (there are plenty of examples in the DDK, see below). &amp;nbsp;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;A pair of drivers are required to access the audio codec (a low-level mini-driver and a standard high-level class driver). These are obviously already present on the device, but no documentation is available about how to use them directly. In fact it can be seen from the functions called by existing modules (such as &amp;lt;code&amp;gt;pcm2.o&amp;lt;/code&amp;gt;) that it's a stream class driver. Therefore it may be possible to access this class driver directly (there are plenty of examples in the DDK, see below). &amp;nbsp;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-04 17:15:33 --&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 15 Apr 2010 11:33:37 GMT</pubDate>			<dc:creator>amigadave</dc:creator>			<comments>http://bugs.maemo.com/Talk:Programming_the_DSP</comments>		</item>
		<item>
			<title>amigadave:&amp;#32;/* General sources of information */ links</title>
			<link>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=32783&amp;oldid=prev</link>
			<guid>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=32783&amp;oldid=prev</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;General sources of information:&amp;#32;&lt;/span&gt; links&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 11:32, 15 April 2010&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[http://www.ti.com/sc/docs/psheets/man_dsp.htm TI's docs for DSPs]. Do a search down the page for things with c55 in the description to get the documents that are of interest. Some direct pointers are listed at the end of this page.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[http://www.ti.com/sc/docs/psheets/man_dsp.htm TI's docs for DSPs]. Do a search down the page for things with c55 in the description to get the documents that are of interest. Some direct pointers are listed at the end of this page.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[http://dspgateway.sourceforge.net DSP Gateway project]. This is used by the Nokia 770, N800 and N810 to interface the ARM processor with the DSP.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[http://dspgateway.sourceforge.net DSP Gateway project]. This is used by the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[&lt;/ins&gt;Nokia 770&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]]&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[Nokia &lt;/ins&gt;N800&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;|N800]] &lt;/ins&gt;and &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[[Nokia N810|&lt;/ins&gt;N810&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;to interface the ARM processor with the DSP.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Setup the toolchain ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Setup the toolchain ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-04 17:15:33 --&gt;
&lt;/table&gt;</description>
			<pubDate>Thu, 15 Apr 2010 11:32:35 GMT</pubDate>			<dc:creator>amigadave</dc:creator>			<comments>http://bugs.maemo.com/Talk:Programming_the_DSP</comments>		</item>
		<item>
			<title>jukey:&amp;#32;/* Misc */</title>
			<link>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=32621&amp;oldid=prev</link>
			<guid>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=32621&amp;oldid=prev</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Misc&lt;/span&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 14:38, 13 April 2010&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 232:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 232:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Development]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Development]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;8x0&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;N8x0&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:770]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:770]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-04 17:15:33 --&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 13 Apr 2010 14:38:29 GMT</pubDate>			<dc:creator>jukey</dc:creator>			<comments>http://bugs.maemo.com/Talk:Programming_the_DSP</comments>		</item>
		<item>
			<title>jukey:&amp;#32;/* Misc */ Categories 8x0 and 770 added</title>
			<link>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=32620&amp;oldid=prev</link>
			<guid>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=32620&amp;oldid=prev</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Misc:&amp;#32;&lt;/span&gt; Categories 8x0 and 770 added&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 14:38, 13 April 2010&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 232:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 232:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Development]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Category:Development]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:8x0]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:770]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-04 17:15:33 --&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 13 Apr 2010 14:38:08 GMT</pubDate>			<dc:creator>jukey</dc:creator>			<comments>http://bugs.maemo.com/Talk:Programming_the_DSP</comments>		</item>
		<item>
			<title>igagis:&amp;#32;/* Steps forward */</title>
			<link>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=16280&amp;oldid=prev</link>
			<guid>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=16280&amp;oldid=prev</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Steps forward&lt;/span&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 11:36, 7 August 2009&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 151:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 151:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;These &amp;lt;code&amp;gt;_EAP_*&amp;lt;/code&amp;gt; functions are built into the &amp;lt;code&amp;gt;avs_kernel.out&amp;lt;/code&amp;gt; DSP kernel. It would be useful to have a header file for these functions, and if possible some example code and/or instructions illustrating their use.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;These &amp;lt;code&amp;gt;_EAP_*&amp;lt;/code&amp;gt; functions are built into the &amp;lt;code&amp;gt;avs_kernel.out&amp;lt;/code&amp;gt; DSP kernel. It would be useful to have a header file for these functions, and if possible some example code and/or instructions illustrating their use.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;Some useful info about writing DSP device drivers and using SIO_* functions can be found [http://www.design-reuse.com/articles/6849/how-to-write-dsp-device-drivers.html here].&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Another option is to write a completely new mini-driver + class driver + wrapper implementation. This initially looks like a reasonable task. One requires the [https://www-a.ti.com/downloads/sds_support/targetcontent/ddk/DDK_1_20/index.html DSP/BIOS Driver Developer Kit 1.20] for examples and information about writing drivers, the [http://focus.ti.com/docs/toolsw/folders/print/sprc133.html Chip Support Library] with which the DDK interfaces, and information about the hardware codec itself.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Another option is to write a completely new mini-driver + class driver + wrapper implementation. This initially looks like a reasonable task. One requires the [https://www-a.ti.com/downloads/sds_support/targetcontent/ddk/DDK_1_20/index.html DSP/BIOS Driver Developer Kit 1.20] for examples and information about writing drivers, the [http://focus.ti.com/docs/toolsw/folders/print/sprc133.html Chip Support Library] with which the DDK interfaces, and information about the hardware codec itself.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-04 17:15:33 --&gt;
&lt;/table&gt;</description>
			<pubDate>Fri, 07 Aug 2009 11:36:32 GMT</pubDate>			<dc:creator>igagis</dc:creator>			<comments>http://bugs.maemo.com/Talk:Programming_the_DSP</comments>		</item>
		<item>
			<title>generalantilles:&amp;#32;Cleanup, markup de-Midgard</title>
			<link>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=12636&amp;oldid=prev</link>
			<guid>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=12636&amp;oldid=prev</guid>
			<description>&lt;p&gt;Cleanup, markup de-Midgard&lt;/p&gt;
&lt;a href=&quot;http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;amp;diff=12636&amp;amp;oldid=11688&quot;&gt;Show changes&lt;/a&gt;</description>
			<pubDate>Sun, 19 Apr 2009 08:56:44 GMT</pubDate>			<dc:creator>generalantilles</dc:creator>			<comments>http://bugs.maemo.com/Talk:Programming_the_DSP</comments>		</item>
		<item>
			<title>lardman:&amp;#32;Removed more traces of DSP Gateway 3.3.1</title>
			<link>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=11688&amp;oldid=prev</link>
			<guid>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=11688&amp;oldid=prev</guid>
			<description>&lt;p&gt;Removed more traces of DSP Gateway 3.3.1&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 10:35, 10 March 2009&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There is no need to go patching and rebuilding the 770 kernel or fiddling with the DSP kernel as these are both setup to use the DSP Gateway already.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There is no need to go patching and rebuilding the 770 kernel or fiddling with the DSP kernel as these are both setup to use the DSP Gateway already.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Unpack the tarballs. Go to ''dspgw-3.3&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.1&lt;/del&gt;-arm/host_src/mod_utils'' and build the coff_unresolve and gen_dummy_kernel tools using your PC native toolchain (the one you use to build anything else non-arm related). Simple make should be sufficient. &amp;nbsp;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Unpack the tarballs. Go to ''dspgw-3.3-arm/host_src/mod_utils'' and build the coff_unresolve and gen_dummy_kernel tools using your PC native toolchain (the one you use to build anything else non-arm related). Simple make should be sufficient. &amp;nbsp;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;gen_dummy_kernel is used to generate a dummy kernel based on the DSP kernel on your N800/770 (called avs_kernel.out) against which you will link any modules you create so that they will run on the device. AFAIU, this allows any unresolved symbols and function call addresses to be resolved in a static manner, but without needing to link statically (as you then remove the dummy kernel in the step below). coff_unresolve is then run on the modules you will have just linked against the dummy kernel to remove the sections linked in from the dummy kernel.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;gen_dummy_kernel is used to generate a dummy kernel based on the DSP kernel on your N800/770 (called avs_kernel.out) against which you will link any modules you create so that they will run on the device. AFAIU, this allows any unresolved symbols and function call addresses to be resolved in a static manner, but without needing to link statically (as you then remove the dummy kernel in the step below). coff_unresolve is then run on the modules you will have just linked against the dummy kernel to remove the sections linked in from the dummy kernel.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Either copy these tools to your path or adjust ''dspgw-3.3&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.1&lt;/del&gt;-dsp/src/apps/demo_mod/Makefile'' to use the tools from the directory where they are. (eg Create a folder for these utilities and place these files there, and use absolute path in Makefile such as this&amp;nbsp; /usr/local/ti_dsptools/gateway/gen_dummy_kernel and /usr/local/ti_dsptools/gateway/coff_unresolve ). The other alternative to having explicit paths in all of your makefiles is to have a bash script that you source before doing DSP development to set relevant paths (add an example here).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Either copy these tools to your path or adjust ''dspgw-3.3-dsp/src/apps/demo_mod/Makefile'' to use the tools from the directory where they are. (eg Create a folder for these utilities and place these files there, and use absolute path in Makefile such as this&amp;nbsp; /usr/local/ti_dsptools/gateway/gen_dummy_kernel and /usr/local/ti_dsptools/gateway/coff_unresolve ). The other alternative to having explicit paths in all of your makefiles is to have a bash script that you source before doing DSP development to set relevant paths (add an example here).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;To build the demo console (as an example):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;To build the demo console (as an example):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Build the ARM side of the demo console in ''dspgw-3.3&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.1&lt;/del&gt;-arm/apps/demo'' with ''make demo_console''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Build the ARM side of the demo console in ''dspgw-3.3-arm/apps/demo'' with ''make demo_console''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;You can either do this inside scratchbox or adjust CC in the Makefile to point to your arm cross compiler, e.g.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;You can either do this inside scratchbox or adjust CC in the Makefile to point to your arm cross compiler, e.g.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''/scratchbox/compilers/arm-gcc-3.3.4-glibc-2.3.2/bin/arm-linux-gcc''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;''/scratchbox/compilers/arm-gcc-3.3.4-glibc-2.3.2/bin/arm-linux-gcc''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Get the avs_kernel.out from your N800/770 and place this in the DSP-side build directory (i.e. the directory containing the code to run on the DSP in e.g. ''dspgw-3.3&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.1&lt;/del&gt;-dsp/src/apps/demo_mod/''). The avs_kernel.out file is in the ''/lib/dsp/'' directory. &amp;nbsp;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Get the avs_kernel.out from your N800/770 and place this in the DSP-side build directory (i.e. the directory containing the code to run on the DSP in e.g. ''dspgw-3.3-dsp/src/apps/demo_mod/''). The avs_kernel.out file is in the ''/lib/dsp/'' directory. &amp;nbsp;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Adjust the Makefile (e.g. ''dspgw-3.3&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.1&lt;/del&gt;-dsp/src/apps/demo_mod/Makefile'') to use the avs_kernel.out file to generate the dummy_kernel.obj rather than the default tinkernel.out (tinkernel is the name used in all of the documentation for the DSP kernel, it just happens that Nokia decided to name their kernel file differently. You don't need to mess about with the tinkernel source found with the toolchain, all you need is the actual binary avs_kernel.out from your N800/770). &amp;nbsp;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Adjust the Makefile (e.g. ''dspgw-3.3-dsp/src/apps/demo_mod/Makefile'') to use the avs_kernel.out file to generate the dummy_kernel.obj rather than the default tinkernel.out (tinkernel is the name used in all of the documentation for the DSP kernel, it just happens that Nokia decided to name their kernel file differently. You don't need to mess about with the tinkernel source found with the toolchain, all you need is the actual binary avs_kernel.out from your N800/770). &amp;nbsp;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Run ''make omap1''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Run ''make omap1''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-04 17:15:34 --&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 10 Mar 2009 10:35:46 GMT</pubDate>			<dc:creator>lardman</dc:creator>			<comments>http://bugs.maemo.com/Talk:Programming_the_DSP</comments>		</item>
		<item>
			<title>lardman:&amp;#32;Fixed error about DSP Gateway version, please don't anyone change it again!</title>
			<link>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=11687&amp;oldid=prev</link>
			<guid>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=11687&amp;oldid=prev</guid>
			<description>&lt;p&gt;Fixed error about DSP Gateway version, please don&amp;#39;t anyone change it again!&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 10:34, 10 March 2009&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 42:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 42:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Get the DSP Gateway source packages from the [http://dspgateway.sourceforge.net/pub/index.php?Page=Download download page]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Get the DSP Gateway source packages from the [http://dspgateway.sourceforge.net/pub/index.php?Page=Download download page]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Download both the ARM side package (dspgw-3.3&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.1&lt;/del&gt;-arm.tar.bz2) and the DSP side package (dspgw-3.3&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.1&lt;/del&gt;-dsp.tar.bz2).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Download both the ARM side package (dspgw-3.3-arm.tar.bz2) and the DSP side package (dspgw-3.3-dsp.tar.bz2). &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;You need version 3.3(.0) not version 3.3.1!&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There is no need to go patching and rebuilding the 770 kernel or fiddling with the DSP kernel as these are both setup to use the DSP Gateway already.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There is no need to go patching and rebuilding the 770 kernel or fiddling with the DSP kernel as these are both setup to use the DSP Gateway already.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-04 17:15:34 --&gt;
&lt;/table&gt;</description>
			<pubDate>Tue, 10 Mar 2009 10:34:18 GMT</pubDate>			<dc:creator>lardman</dc:creator>			<comments>http://bugs.maemo.com/Talk:Programming_the_DSP</comments>		</item>
		<item>
			<title>dneary:&amp;#32;New page: {{Midgard article}}  == General sources of information ==   [http://www.ti.com/sc/docs/psheets/man_dsp.htm TI's docs for DSPs]. Do a search down the page for things with c55 in the descrip...</title>
			<link>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=1363&amp;oldid=prev</link>
			<guid>http://bugs.maemo.com/index.php?title=Programming_the_DSP&amp;diff=1363&amp;oldid=prev</guid>
			<description>&lt;p&gt;New page: {{Midgard article}}  == General sources of information ==   [http://www.ti.com/sc/docs/psheets/man_dsp.htm TI&amp;#39;s docs for DSPs]. Do a search down the page for things with c55 in the descrip...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Midgard article}}&lt;br /&gt;
&lt;br /&gt;
== General sources of information ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.ti.com/sc/docs/psheets/man_dsp.htm TI's docs for DSPs]. Do a search down the page for things with c55 in the description to get the the documents that are of interest. Some direct pointers are listed at the end of this page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://dspgateway.sourceforge.net DSP Gateway project].&lt;br /&gt;
This is used by the Nokia 770 and N800 to interface the ARM processor with the DSP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup the toolchain ==&lt;br /&gt;
&lt;br /&gt;
Get the toolchain from [https://www-a.ti.com/downloads/sds_support/targetcontent/LinuxDspTools/index.html TI's Linux DSP Tools page] (you need a free registration to access the page). Select '''Linux DSP Tools v1.00''' and download it to ''/tmp''.&lt;br /&gt;
&lt;br /&gt;
Unpack it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod a+rx /tmp/linuxdsptools_v1_00_00_06.bin&lt;br /&gt;
/tmp/linuxdsptools_v1_00_00_06.bin &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Select the installation directory under ''/tmp''. Once unpacked, you need to actually install it. Make sure you have expect installed (''sudo aptitude install expect''). You also need java.  Don't try to install the DSP tools under Scratchbox, as this does not work (i.e. this is an x86 based cross-toolchain for the DSP).&lt;br /&gt;
&lt;br /&gt;
Install it under ''/usr/local/ti_dsptools'' (use sudo, or make otherwise sure you can make the directory): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp/Linux-DSP-Tools-1.00.00.06 &lt;br /&gt;
./subpkg_install_linuxdsptools.exp /usr/local/ti_dsptools &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy the ''avs_kernel.out'' from your device (in /lib/dsp/ these days) to ''/usr/local/ti_dsptools/dspgw''.&lt;br /&gt;
&lt;br /&gt;
Now you should be able to compile e.g. [http://tuomas.kulve.fi/blog/2007/08/31/speex-encoder-on-n800s-dsp/ Speex port to DSP GW].&lt;br /&gt;
&lt;br /&gt;
Check [http://www.gossamer-threads.com/lists/maemo/developers/3938 this thread at gossamer-threads.com] for longer instructions.&lt;br /&gt;
&lt;br /&gt;
Or email/chat on IRC to lardman/Simon Pickering (s dot g dot pickering at bath dot ac dot uk).&lt;br /&gt;
&lt;br /&gt;
== Compiling a program ==&lt;br /&gt;
&lt;br /&gt;
Get the DSP Gateway source packages from the [http://dspgateway.sourceforge.net/pub/index.php?Page=Download download page]&lt;br /&gt;
&lt;br /&gt;
Download both the ARM side package (dspgw-3.3.1-arm.tar.bz2) and the DSP side package (dspgw-3.3.1-dsp.tar.bz2).&lt;br /&gt;
&lt;br /&gt;
There is no need to go patching and rebuilding the 770 kernel or fiddling with the DSP kernel as these are both setup to use the DSP Gateway already.&lt;br /&gt;
Unpack the tarballs. Go to ''dspgw-3.3.1-arm/host_src/mod_utils'' and build the coff_unresolve and gen_dummy_kernel tools using your PC native toolchain (the one you use to build anything else non-arm related). Simple make should be sufficient. &lt;br /&gt;
gen_dummy_kernel is used to generate a dummy kernel based on the DSP kernel on your N800/770 (called avs_kernel.out) against which you will link any modules you create so that they will run on the device. AFAIU, this allows any unresolved symbols and function call addresses to be resolved in a static manner, but without needing to link statically (as you then remove the dummy kernel in the step below). coff_unresolve is then run on the modules you will have just linked against the dummy kernel to remove the sections linked in from the dummy kernel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Either copy these tools to your path or adjust ''dspgw-3.3.1-dsp/src/apps/demo_mod/Makefile'' to use the tools from the directory where they are. (eg Create a folder for these utilities and place these files there, and use absolute path in Makefile such as this  /usr/local/ti_dsptools/gateway/gen_dummy_kernel and /usr/local/ti_dsptools/gateway/coff_unresolve ). The other alternative to having explicit paths in all of your makefiles is to have a bash script that you source before doing DSP development to set relevant paths (add an example here).&lt;br /&gt;
&lt;br /&gt;
To build the demo console (as an example):&lt;br /&gt;
&lt;br /&gt;
Build the ARM side of the demo console in ''dspgw-3.3.1-arm/apps/demo'' with ''make demo_console''.&lt;br /&gt;
&lt;br /&gt;
You can either do this inside scratchbox or adjust CC in the Makefile to point to your arm cross compiler, e.g.&lt;br /&gt;
''/scratchbox/compilers/arm-gcc-3.3.4-glibc-2.3.2/bin/arm-linux-gcc''.&lt;br /&gt;
&lt;br /&gt;
Get the avs_kernel.out from your N800/770 and place this in the DSP-side build directory (i.e. the directory containing the code to run on the DSP in e.g. ''dspgw-3.3.1-dsp/src/apps/demo_mod/''). The avs_kernel.out file is in the ''/lib/dsp/'' directory. &lt;br /&gt;
&lt;br /&gt;
Adjust the Makefile (e.g. ''dspgw-3.3.1-dsp/src/apps/demo_mod/Makefile'') to use the avs_kernel.out file to generate the dummy_kernel.obj rather than the default tinkernel.out (tinkernel is the name used in all of the documentation for the DSP kernel, it just happens that Nokia decided to name their kernel file differently. You don't need to mess about with the tinkernel source found with the toolchain, all you need is the actual binary avs_kernel.out from your N800/770). &lt;br /&gt;
&lt;br /&gt;
Run ''make omap1''.&lt;br /&gt;
&lt;br /&gt;
The code is compiled into an object file (*.obj), the dummy kernel is created from your avs_kernel.out file by the gen_dummy_kernel utility you compiled earlier, the object file is linked against the dummy kernel and then the dummy kernel is stripped away from the resulting object file by the coff_unresolve utility you created earlier. You are left with a file named *.o&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Install the demo ===&lt;br /&gt;
&lt;br /&gt;
After compiling your code, you'll need to place the DSP-side object file (*.o) and linker command file (*.cmd) in ''/lib/dsp/modules/'', you'll also need to make an entry in the ''/lib/dsp/dsp_dld_avs.conf'' file to let the DSP know this module exists.&lt;br /&gt;
&lt;br /&gt;
e.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# echo &amp;amp;quot;demo_console _task_demo_console 1 /lib/dsp/modules/demo_console.o&amp;amp;quot; &amp;amp;gt;&amp;amp;gt; /lib/dsp/dsp_dld_avs.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You'll then want to run ''dsp_dld'' to restart the DSP and reload the module list. This might complain that it can't find the conf file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Nokia-N800-10:~# dsp_dld&lt;br /&gt;
sending SIGBUS signal to all task users...&lt;br /&gt;
killing pid 832.&lt;br /&gt;
killing pid 827.&lt;br /&gt;
killing pid 1582.&lt;br /&gt;
Can't open /lib/dsp/dsp_dld.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If so, you need to create a symlink from the actual file ''dsp_dld_avs.conf'', to the one it expects ''dsp_dld.conf'' (both in the ''/lib/dsp/'' directory). Then try again and you'll see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Nokia-N800-10:~# dsp_dld&lt;br /&gt;
sending SIGBUS signal to all task users...&lt;br /&gt;
killing pid 4234.&lt;br /&gt;
killing pid 4236.&lt;br /&gt;
killing pid 4235.&lt;br /&gt;
mapping external memory: adr = 0x028000, size = 0x1000&lt;br /&gt;
mapping external memory: adr = 0x100000, size = 0x200000&lt;br /&gt;
mapping external memory: adr = 0x400000, size = 0x180000&lt;br /&gt;
detected binary version 3.3.0.0&lt;br /&gt;
setting DSP reset vector to 0x10389e&lt;br /&gt;
releasing DSP reset&lt;br /&gt;
DSP configuration ...&lt;br /&gt;
succeeded.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then copy the ARM-side binary somewhere on the N800/770 (anywhere, but not on the MMC/SD cards as these have no-execute enabled) and run it. E.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Nokia-N800-10:~# ./demo_console&lt;br /&gt;
Congratulations! DSP is working!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you see a message like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Nokia-N800-10:~# ./demo_console&lt;br /&gt;
open: No such file or directory&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It means you've either not added the module to the ''/lib/dsp/dsp_dld_avs.conf'' file (correctly), or you've not run dsp_dld to refresh the DSP. In either case the ''/dev/dsptask/'' device hasn't been created as the module couldn't be loaded, hence the ''open'' error.&lt;br /&gt;
&lt;br /&gt;
If you see a message like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~ $ ./demo_console&lt;br /&gt;
open: Interrupted system call&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then something is wrong with the code on the DSP side.  Make sure that you added the exact line shown above to ''/lib/dsp/dsp_dld_avs.conf''.&lt;br /&gt;
&lt;br /&gt;
=== Compiling other demos ===&lt;br /&gt;
&lt;br /&gt;
If you decide to copy any code from the DSP Gateway pdf files, bear the following in mind (and also consider that the tarballs contain almost identical code so you might as well use them!):&lt;br /&gt;
&lt;br /&gt;
Any \ characters appears as a ¥ in the pdfs and the ' sometimes comes out as a different character (smart quote) so make sure you check your code if you start getting weird errors (the last one had me scratching my head for a while as they look pretty much the same in my editor).&lt;br /&gt;
&lt;br /&gt;
You'll also need to remove references to the  include file. I don't have this, the tarball demos don't have this line either (and are otherwise identical to the pdfs).&lt;br /&gt;
&lt;br /&gt;
== Steps forward ==&lt;br /&gt;
&lt;br /&gt;
Although video out seems to have been dropped by Nokia with the N800 (and the DSP has become more stable, not sure if not using the framebuffer is the reason, or simply more mature hardware), anyway audio decoding and output is still performed on the DSP, and this is a suitable task for people to get stuck into. - Framebuffer access works for the N8x0 and 770. Contact me (lardman) or read the maemo-developers list for more info. I should update this page when I have some time.&lt;br /&gt;
&lt;br /&gt;
A pair of drivers are required to access the audio codec (a low-level mini-driver and a standard high-level class driver). These are obviously already present on the device, but no documentation is available about how to use them directly. In fact it can be seen from the functions called by existing modules (such as pcm2.o) that it's a stream class driver. Therefore it may be possible to access this class driver directly (there are plenty of examples in the DDK, see below). &lt;br /&gt;
&lt;br /&gt;
It appears that this stream class driver is wrapped in some other function calls.&lt;br /&gt;
&lt;br /&gt;
I.e. the following functions are called by pcm2.o:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
_EAP_CC_Mute&lt;br /&gt;
_EAP_CC_RemoveStream&lt;br /&gt;
_EAP_CC_RequestStream&lt;br /&gt;
_EAP_CC_SetPanning&lt;br /&gt;
_EAP_CC_SetVolume&lt;br /&gt;
_EAP_CC_UnMute&lt;br /&gt;
_EAP_clock&lt;br /&gt;
_EAP_getTicks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These _EAP_* functions are built into the avs_kernel.out DSP kernel. It would be useful to have a header file for these functions, and if possible some example code and/or instructions illustrating their use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another other option is to write a completely new mini-driver + class driver + wrapper implementation. This initially looks like a reasonable task. One requires the [https://www-a.ti.com/downloads/sds_support/targetcontent/ddk/DDK_1_20/index.html DSP/BIOS Driver Developer Kit 1.20] for examples and information about writing drivers, the [Chip Support Library](http://focus.ti.com/docs/toolsw/folders/print/sprc133.html) with which the DDK interfaces, and information about the hardware codec itself.&lt;br /&gt;
&lt;br /&gt;
On 770, the codec is called aic23 (see dmesg output). On n800 the codec is called TSC2301 (part of the touch screen chip) (again see your dmesg output, in this e.g. [http://www.internettablettalk.com/forums/showpost.php?p=30655&amp;amp;postcount=46 this thread]. &lt;br /&gt;
&lt;br /&gt;
E.g.:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ 312.232727] #0: OMAP24xx EAC with codec TSC2301&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Data about both of these codecs is available on the Texas Instruments website.&lt;br /&gt;
&lt;br /&gt;
See the page for [http://focus.ti.com/docs/prod/folders/print/tsc2301.html TSC2301]. It includes a data sheet with the [http://focus.ti.com/lit/ds/symlink/tsc2301.pdf info needed to write the mini-driver]&lt;br /&gt;
&lt;br /&gt;
Unfortunately I'm not sure that it's possible to add in a new mini-driver without re-compiling the DSP kernel (see Ch3 of spru616a.pdf contained in the DDK - link above). It might be possible to create a dsptask containing the driver, but again, I'm not sure about this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For those who want more information about disassembly, take a look at these documents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
spru374g - DSP assembly code memonics&lt;br /&gt;
spru281f - c/c++ calling conventions (ch6 Run-time environment)&lt;br /&gt;
spru371f - cpu/register info (ch2 CPU registers, etc.)&lt;br /&gt;
spru280h.pdf - TMS320C55x Assmbly Language Tools User's Guide (ch2 Introduction to Common Object File Format, c12 disassembler)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tips and Tricks (or why isn't it working?!) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Check that you're linking against the current avs_kernel (well the dummy kernel generated from this). If not, it won't load.&lt;br /&gt;
&lt;br /&gt;
Check that you've correctly defined the flags for the task. This is especially easy to miss as the flag names are rather similar (and cryptic). A list can be found in the DSP gateway spec pdf file. Look for the TCFG section.&lt;br /&gt;
&lt;br /&gt;
dbg() function: This function allows one to output messages (like printf) to dmesg from the DSP-side. Before OS2008 you needed to recompile the kernel to enable DSP debugging messages; in OS2008 this is already enabled.&lt;br /&gt;
You use it like so:&lt;br /&gt;
&lt;br /&gt;
dbg('this is a message, this is a value=%d', some_value);&lt;br /&gt;
&lt;br /&gt;
Note that the variable ''some_value'' must be a short or smaller (16bit or less). If you pass it a 32bit number, as often as not it returns zero (probably due to the strange endianness of the 32bit data type that means the first 16bits are the high bytes). Therefore split your 32bit data into 16bit chunks (or cast if you are sure about the limited range) if you want to see them.&lt;br /&gt;
&lt;br /&gt;
=== Location of data ===&lt;br /&gt;
&lt;br /&gt;
I had some troubles trying to access an array of data defined as a global const int array. The problem was that every element of the array returned 0 rather than the value which was set in it. After messing about for a while it occurred to me that the problem is to do with the location in memory of global const data. Changing the definition from a global const int array to a simple global int array solved the problem and the data could be accessed.&lt;br /&gt;
&lt;br /&gt;
I didn't investigate this further, but in the avs_kernelcfg.cmd file you can see the locations of the various parts of memory and it may be that to obtain the actual data (rather than a zero) one needs to either use a far function (see the C/C++ manual for the DSP) or make sure the data is in the right section of memory.&lt;br /&gt;
&lt;br /&gt;
== Documentation pointers ==&lt;br /&gt;
&lt;br /&gt;
=== Compiler optimization ===&lt;br /&gt;
&lt;br /&gt;
[http://focus.ti.com/lit/ug/spru281f/spru281f.pdf TMS320C55x Optimizing C/C++ Compiler  User's Guide]&lt;br /&gt;
&lt;br /&gt;
* p79: 3.2 Performing File-Level Optimization (-O3 Option)&lt;br /&gt;
* p80: 3.3 Performing Pro&lt;br /&gt;
gram-Level Optimization (-pm and -O3 Options)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ASM with C/C++ ===&lt;br /&gt;
&lt;br /&gt;
[http://focus.ti.com/lit/ug/spru281f/spru281f.pdf TMS320C55x Optimizing C/C++ Compiler  User's Guide]&lt;br /&gt;
&lt;br /&gt;
* p83:  3.3.2 Optimization Considerations When Mixing C and Assembly&lt;br /&gt;
* p176: 6.5 Interfacing C/C++ With Assembly Language&lt;br /&gt;
* p178: Example 6-3. Calling an Assembly Language Function From C&lt;br /&gt;
* p181: 6.5.3 Using Inline Assembly Language&lt;br /&gt;
&lt;br /&gt;
[http://www.ti.com/litv/pdf/spru376a TMS320C55x DSP Programmer's Guide]&lt;br /&gt;
&lt;br /&gt;
* p76: Table 3-6. TMS320C55x C Compiler Intrinsics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
[http://focus.ti.com/lit/ug/spru281f/spru281f.pdf TMS320C55x Optimizing C/C++ Compiler  User's Guide]&lt;br /&gt;
&lt;br /&gt;
* p122: 5.3 Data Types&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Midgard wiki]]&lt;/div&gt;</description>
			<pubDate>Wed, 11 Jun 2008 15:07:55 GMT</pubDate>			<dc:creator>dneary</dc:creator>			<comments>http://bugs.maemo.com/Talk:Programming_the_DSP</comments>		</item>
	</channel>
</rss>