<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Pari&#039;s Tech Blog</title>
	<atom:link href="http://matrix108.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://matrix108.wordpress.com</link>
	<description>Getting down to the bare metal... what I do when I&#039;m not looking for loopholes.</description>
	<lastBuildDate>Sat, 14 Jan 2012 21:15:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='matrix108.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Pari&#039;s Tech Blog</title>
		<link>http://matrix108.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://matrix108.wordpress.com/osd.xml" title="Pari&#039;s Tech Blog" />
	<atom:link rel='hub' href='http://matrix108.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Little bit of thermal compound&#8230;</title>
		<link>http://matrix108.wordpress.com/2010/09/12/little-bit-of-thermal-compound/</link>
		<comments>http://matrix108.wordpress.com/2010/09/12/little-bit-of-thermal-compound/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 06:29:18 +0000</pubDate>
		<dc:creator>Pari</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://matrix108.wordpress.com/?p=495</guid>
		<description><![CDATA[I finally decided to do something about my overheating Thinkpad T60, about 3 yrs old. Streaming at 360p full screen caused my CPU (fixed at 1 GHz) temperature to shoot up to 93C in just 10min. By using new thermal compound, even after 30min of running the temperature is down to 60C! The idle temperature [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=495&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I finally decided to do something about my overheating Thinkpad T60, about 3 yrs old. Streaming at 360p full screen caused my CPU (fixed at 1 GHz) temperature to shoot up to 93C in just 10min. By using new thermal compound, even after 30min of running the temperature is down to 60C!</p>
<p>The idle temperature is now 42C (before it was 58C). The GPU idle also remained below 58C (before it used to be 75-80C). I used this thermal compound <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16835100007">Arctic Silver 5</a>. The thing had over 4,000 reviews(!), couldn&#8217;t go wrong. Data sheet: <a href="http://www.arcticsilver.com/msds.htm">Arctic Silver 5</a>. Here&#8217;s a cool-down plot (cooling down after 10 minutes of streaming the same video, 360p, full screen, CPU at 1 GHz) produced just by command-line thanks to gnuplot.</p>
<p><a href="http://matrix108.files.wordpress.com/2010/09/cpu-temp.png"><img class="alignnone" title="cpu-temp" src="http://matrix108.files.wordpress.com/2010/09/cpu-temp.png?w=640" alt="" width="640" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matrix108.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matrix108.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matrix108.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matrix108.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/matrix108.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/matrix108.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/matrix108.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/matrix108.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matrix108.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matrix108.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matrix108.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matrix108.wordpress.com/495/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matrix108.wordpress.com/495/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matrix108.wordpress.com/495/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=495&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://matrix108.wordpress.com/2010/09/12/little-bit-of-thermal-compound/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/650b160bc35cedeca3e920c69f814b61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Pari</media:title>
		</media:content>

		<media:content url="http://matrix108.files.wordpress.com/2010/09/cpu-temp.png" medium="image">
			<media:title type="html">cpu-temp</media:title>
		</media:content>
	</item>
		<item>
		<title>Freaky Assembly?</title>
		<link>http://matrix108.wordpress.com/2008/03/09/freaky-assembly/</link>
		<comments>http://matrix108.wordpress.com/2008/03/09/freaky-assembly/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 17:55:07 +0000</pubDate>
		<dc:creator>Pari</dc:creator>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://matrix108.wordpress.com/?p=72</guid>
		<description><![CDATA[After a looong time, I was debugging some embedded C code and thought I found something freaky: C code for (i = 0; i &#60; 1000000; i++); ARM code disassembly (as generated by GNU ARM gcc) 0x0000019c &#60;main+196&#62;: mov r3, #0 ; 0&#215;0 0x000001a0 &#60;main+200&#62;: str r3, [r11, #-16] 0x000001a4 &#60;main+204&#62;: b 0x1b4 &#60;main+220&#62; 0x000001a8 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=72&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After a looong time, I was debugging some embedded C code and thought I found something freaky:</p>
<p><span style="text-decoration:underline;">C code</span></p>
<blockquote><p>for (i = 0; i &lt; 1000000; i++);</p></blockquote>
<p><span style="text-decoration:underline;">ARM code disassembly (as generated by GNU ARM gcc)</span></p>
<blockquote><p>0x0000019c &lt;main+196&gt;: mov   r3, #0    ; 0&#215;0<br />
0x000001a0 &lt;main+200&gt;: str   r3, [r11, #-16]<br />
0x000001a4 &lt;main+204&gt;: b     0x1b4 &lt;main+220&gt;<br />
0x000001a8 &lt;main+208&gt;: ldr   r3, [r11, #-16]<br />
0x000001ac &lt;main+212&gt;: add   r3, r3, #1    ; 0&#215;1<br />
0x000001b0 &lt;main+216&gt;: str   r3, [r11, #-16]<br />
0x000001b4 &lt;main+220&gt;: ldr   r2, [r11, #-16]<span style="color:#ff0000;"><br />
0x000001b8 &lt;main+224&gt;: mov   r3, #999424    ; 0xf4000<br />
0x000001bc &lt;main+228&gt;: add   r3, r3, #572    ; 0x23c<br />
0x000001c0 &lt;main+232&gt;: add   r3, r3, #3    ; 0&#215;3</span><br />
0x000001c4 &lt;main+236&gt;: cmp   r2, r3<br />
0x000001c8 &lt;main+240&gt;: bls   0x1a8 &lt;main+208&gt;</p></blockquote>
<p>The three highlighted lines above in affect initialize r3 with 999999 (first initializes r3 with 999424, then adds 572 to it, then adds 3 to it).</p>
<p>What puzzled me was why couldn&#8217;t it do that directly (mov   r3, #999999)?</p>
<p>After some scratching my head, a faint memory of ARM assembly language dawned on me&#8230; ARM instructions are 32-bit &#8212; <em>of which Operand 2 can be only 12-bits</em>. In addition (from the ARM book):</p>
<p>- Of these 12 bits, 8-bits are for data, and 4-bits are used for ROR.<br />
- The ROR bits are in turn multiplied by 2 before being applied on the 8-bits.</p>
<p>The combination of ROR and shifting by 2 greatly extends the range. The assembler automatically does it for you if it sees an operand greater than 8-bits.</p>
<p>This can be a great (but wicked) interview question (I&#8217;d never do that to anyone ;-)).</p>
<p><span style="text-decoration:underline;">Do verify, here&#8217;s the math&#8230;</span></p>
<p>999424 + 572 + 3 is the closest tuples you can get to add up to 999999 using the 12-bit ROR with x2 multiplier for the RoR.</p>
<p>Just for verification, here are the instructions from memory:</p>
<blockquote><p>1b8:  3D39A0E3      ; 0xE3A0393D<br />
1bc:  8F3F83E2      ; 0xE2833F8F<br />
1c0:  033083E2      ; 0xE2833003</p></blockquote>
<p>To get 999424 (0x0F4000):<br />
0x0000003D ROR 18 (<span style="color:#3333ff;"><span style="text-decoration:underline;">0&#215;9</span></span> x 2) = 0x000F4000  (ROR 18 = LSL 6)<br />
As confirmed by the instruction: <span style="color:#cc0000;">E3A03 <span style="color:#3333ff;"><span style="text-decoration:underline;">9</span></span>3D</span></p>
<p>To get 572 (0x023C):<br />
0x0000008F ROR 30 (<span style="color:#3333ff;"><span style="text-decoration:underline;">0xF</span></span> x 2) = 0x0000023C  (ROR 30 = LSL 2)<br />
As confirmed by the instruction: <span style="color:#cc0000;">E2833 <span style="color:#3333ff;"><span style="text-decoration:underline;">F</span></span>8F</span></p>
<p>To get 3 (0&#215;0003):<br />
0&#215;00000003 ROR 00 (<span style="color:#3333ff;"><span style="text-decoration:underline;">0&#215;0</span></span> x 2) = 0&#215;00000003  (ROR 00 = LSL 0)<br />
As confirmed by the instruction: <span style="color:#cc0000;">E2833 <span style="text-decoration:underline;"><span style="color:#3333ff;">0</span></span>03</span></p>
<p>Note: the LSL is just for convenience, it&#8217;s good only if data has all zeros padded on the left (at least enough to cover the LSL).</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/matrix108.wordpress.com/72/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/matrix108.wordpress.com/72/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matrix108.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matrix108.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matrix108.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matrix108.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/matrix108.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/matrix108.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/matrix108.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/matrix108.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matrix108.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matrix108.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matrix108.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matrix108.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matrix108.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matrix108.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=72&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://matrix108.wordpress.com/2008/03/09/freaky-assembly/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/650b160bc35cedeca3e920c69f814b61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Pari</media:title>
		</media:content>
	</item>
		<item>
		<title>Slug Flash</title>
		<link>http://matrix108.wordpress.com/2008/02/12/slug-flash/</link>
		<comments>http://matrix108.wordpress.com/2008/02/12/slug-flash/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 12:24:00 +0000</pubDate>
		<dc:creator>Pari</dc:creator>
				<category><![CDATA[Slug]]></category>

		<guid isPermaLink="false">http://matrix108.wordpress.com/2008/02/12/nslu2-memory-map/</guid>
		<description><![CDATA[Where is the bootloader, kernel and initial ramdisk? The boot sequence is documented here. Some notes on the slug&#8217;s flash memory organization, taken from system logs: From dmesg: Searching for RedBoot partition table in IXP4XX-Flash.0 at offset 0x7e0000 6 RedBoot partitions found on MTD device IXP4XX-Flash.0 Creating 6 MTD partitions on &#8220;IXP4XX-Flash.0&#8243;: 0&#215;00000000-0&#215;00040000 : &#8220;RedBoot&#8221;        [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=48&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Where is the bootloader, kernel and initial ramdisk? The boot sequence is documented <a href="http://www.nslu2-linux.org/wiki/Info/RedBootSequence">here</a>.</p>
<p>Some notes on the slug&#8217;s flash memory organization, taken from system logs:</p>
<p>From dmesg:</p>
<blockquote><p>Searching for RedBoot partition table in IXP4XX-Flash.0 at offset 0x7e0000<br />
6 RedBoot partitions found on MTD device IXP4XX-Flash.0<br />
Creating 6 MTD partitions on &#8220;IXP4XX-Flash.0&#8243;:<br />
0&#215;00000000-0&#215;00040000 : &#8220;RedBoot&#8221;           # 256 KB<br />
0&#215;00040000-0&#215;00060000 : &#8220;SysConf&#8221;            # 128 KB<br />
0&#215;00060000-0&#215;00080000 : &#8220;Loader&#8221;              # 128 KB<br />
0&#215;00080000-0x001e0000 : &#8220;Kernel&#8221;               # 1.375 MB<br />
0x001e0000-0x007e0000 : &#8220;Ramdisk&#8221;            # 6 MB<br />
0x007e0000-0&#215;00800000 : &#8220;FIS directory&#8221;     # 128 KB</p></blockquote>
<p>From /proc/mtd:</p>
<blockquote><p>dev:    size   erasesize  name<br />
mtd0: 00040000 00020000 &#8220;RedBoot&#8221;<br />
mtd1: 00020000 00020000 &#8220;SysConf&#8221;<br />
mtd2: 00020000 00020000 &#8220;Loader&#8221;<br />
mtd3: 00160000 00020000 &#8220;Kernel&#8221;<br />
mtd4: 00600000 00020000 &#8220;Ramdisk&#8221;<br />
mtd5: 00020000 00020000 &#8220;FIS directory&#8221;</p></blockquote>
<p>From /proc/partitions:</p>
<blockquote><p>31     0        256 mtdblock0<br />
31     1        128 mtdblock1<br />
31     2        128 mtdblock2<br />
31     3       1408 mtdblock3<br />
31     4       6144 mtdblock4<br />
31     5        128 mtdblock5</p></blockquote>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/matrix108.wordpress.com/48/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/matrix108.wordpress.com/48/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matrix108.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matrix108.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matrix108.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matrix108.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/matrix108.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/matrix108.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/matrix108.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/matrix108.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matrix108.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matrix108.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matrix108.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matrix108.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matrix108.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matrix108.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=48&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://matrix108.wordpress.com/2008/02/12/slug-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/650b160bc35cedeca3e920c69f814b61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Pari</media:title>
		</media:content>
	</item>
		<item>
		<title>Balancing Robot</title>
		<link>http://matrix108.wordpress.com/2007/12/25/balancing-robot/</link>
		<comments>http://matrix108.wordpress.com/2007/12/25/balancing-robot/#comments</comments>
		<pubDate>Tue, 25 Dec 2007 10:46:00 +0000</pubDate>
		<dc:creator>Pari</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://matrix108.wordpress.com/2007/12/25/balancing-robot/</guid>
		<description><![CDATA[Botka, The Barely Standing Robot. This is one impressive balancing robot. Not even a bit of jitter. Midway through the video the thing takes on some solid whacks and still standing. For comparison: NXTway-G (the Lego Mindstorms NXT uses the Atmel AT91SAM7S ARM processor). Botka probably uses some sophisticated PID control? fuzzy logic enhanced or [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=47&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.revver.com/video/443032/botka-the-barely-standing-robot/">Botka, The Barely Standing Robot</a>. This is one impressive balancing robot. Not even a bit of jitter. Midway through the video the thing takes on some solid whacks and still standing. For comparison: <a href="http://www.engadget.com/2007/03/13/lego-mindstorms-nxtway-g-much-cooler-than-segway/">NXTway-G</a> (the Lego Mindstorms NXT uses the Atmel AT91SAM7S ARM processor).</p>
<p>Botka probably uses some sophisticated <a href="http://en.wikipedia.org/wiki/PID_controller">PID</a> control? fuzzy logic enhanced or a <a href="http://en.wikipedia.org/wiki/Kalman_filter">Kalman Filter</a>? given it&#8217;s amazing response even in motion.</p>
<p>I remember doing Kalman Filters way back in my graduate courses, pretty hairy level of mathematics, but real cool nevertheless once you got a simulation working. Never thought I&#8217;d see the daylight of that again. It seems to be integral to many embedded industrial control systems (anything which requires very accurate real-time prediction and correction like  image stabilization, noise reduction, maglevs, satellite navigation, cruise control,&#8230;).</p>
<p><a class="moz-txt-link-freetext" href="http://www.photopete.com/swarm/balbot.htm"></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/matrix108.wordpress.com/47/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/matrix108.wordpress.com/47/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matrix108.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matrix108.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matrix108.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matrix108.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/matrix108.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/matrix108.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/matrix108.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/matrix108.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matrix108.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matrix108.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matrix108.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matrix108.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matrix108.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matrix108.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=47&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://matrix108.wordpress.com/2007/12/25/balancing-robot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/650b160bc35cedeca3e920c69f814b61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Pari</media:title>
		</media:content>
	</item>
		<item>
		<title>ARM Toolchain &#8211; Crosstool</title>
		<link>http://matrix108.wordpress.com/2007/11/28/arm-toolchain/</link>
		<comments>http://matrix108.wordpress.com/2007/11/28/arm-toolchain/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 05:32:25 +0000</pubDate>
		<dc:creator>Pari</dc:creator>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://matrix108.wordpress.com/?p=56</guid>
		<description><![CDATA[Was able to get an arm-elf toolchain built and working fine, but not so much luck in building an arm-elf-linux toolchain. It cross-compiled programs without errors, but the compiled executable crapped out at runtime. So googling for answers&#8230; I came across Dan Kegel&#8217;s crosstool &#8211; a really cool GNU toolchain builder. It downloads all the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=56&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Was able to get an <a href="http://matrix108.wordpress.com/2007/11/22/arm-toolchain-2/">arm-elf</a> toolchain built and working fine, but not so much luck in building an arm-elf-linux toolchain. It cross-compiled programs without errors, but the compiled executable crapped out at runtime. So googling for answers&#8230; I came across Dan Kegel&#8217;s <a href="http://kegel.com/crosstool/">crosstool</a> &#8211; a really cool GNU toolchain builder. It downloads all the correct gcc, glibc, binutils, etc. and builds your toolchain. I built two toolchains, arm-unknown-linux and arm-xscale-linux. The toolchain built with it works great.</p>
<p><strong>Note:</strong><br />
The Ubuntu shell is not bash by default! Instead it is linked to something called <em>dash</em>. Just make sure you relink /bin/sh to bash instead of dash. No idea when they did this, but I found that out after encountering this maddening error, pointing to some header files during the build:</p>
<blockquote><p><em>missing terminating &#8221; character.</em></p></blockquote>
<p><strong>Using it:</strong></p>
<p>Example (for kernel compilation makefile):</p>
<blockquote><p>export ARM_TOOLCHAIN=/opt2/crosstool/arm-unknown-linux-gnu/bin<br />
export PATH=$ARM_TOOLCHAIN:$PATH</p>
<p>make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnu-</p></blockquote>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/matrix108.wordpress.com/56/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/matrix108.wordpress.com/56/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matrix108.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matrix108.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matrix108.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matrix108.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/matrix108.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/matrix108.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/matrix108.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/matrix108.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matrix108.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matrix108.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matrix108.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matrix108.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matrix108.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matrix108.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=56&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://matrix108.wordpress.com/2007/11/28/arm-toolchain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/650b160bc35cedeca3e920c69f814b61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Pari</media:title>
		</media:content>
	</item>
		<item>
		<title>ARM Toolchain</title>
		<link>http://matrix108.wordpress.com/2007/11/22/arm-toolchain-2/</link>
		<comments>http://matrix108.wordpress.com/2007/11/22/arm-toolchain-2/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 04:32:40 +0000</pubDate>
		<dc:creator>Pari</dc:creator>
				<category><![CDATA[ARM]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://matrix108.wordpress.com/?p=63</guid>
		<description><![CDATA[Updated (April 26, 2008) Here&#8217;s how I built a 64-bit GNU ARM toolchain (cross-compiler x64 to ARM). So far this has been working well for me on an LPC2148 (ARM7TDMI-S), i.e. gcc and gdb via OpenOCD JTAG. Notes: Some builds (like binutils-2.18 and newlib-1.15) needed the setting MAKEINFO=/usr/bin/makeinfo to be passed to the make (binutils-2.17 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=63&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Updated (April 26, 2008)</p>
<p>Here&#8217;s how I built a 64-bit GNU ARM toolchain (cross-compiler x64 to ARM). So far this has been working well for me on an LPC2148 (ARM7TDMI-S), i.e. gcc and gdb via OpenOCD JTAG.</p>
<p><strong>Notes:</strong></p>
<ol>
<li>Some builds (like binutils-2.18 and newlib-1.15) needed the setting MAKEINFO=/usr/bin/makeinfo to be passed to the make (binutils-2.17 and newlib-1.16 didn&#8217;t need this).</li>
<li>Update: some systems (like Ubuntu 8.10) have strict checking turned on, where warnings are treated as errors. You may need to disable this the build of binutils and gdb using the &#8211;disable-werror configuration option.</li>
</ol>
<h4>Here are the steps:</h4>
<p><strong>environment (needed only for build):</strong></p>
<blockquote><p>export BINUTILS_VERSION=2.18<br />
export GCC_VERSION=4.2.3<br />
export NEWLIB_VERSION=1.16.0<br />
export GDB_VERSION=6.8<br />
.<br />
export DIST=/opt1/gnuarm.dist   	# tars will be downloaded here<br />
export WORKDIR=/opt4/gnuarm.tmp   	# tars will be unzipped and built here<br />
export GNUARM_HOME=/opt/gnuarm  	# Resulting binaries will be installed here<br />
.<br />
export SRC=$WORKDIR/src<br />
export BUILD=$WORKDIR/build<br />
export PREFIX=$GNUARM_HOME<br />
export TARGET=arm-elf<br />
.<br />
md -p $DIST<br />
md -p $SRC<br />
md -p $BUILD<br />
.<br />
sudo mkdir -p $PREFIX</p></blockquote>
<p><strong>download:</strong></p>
<blockquote><p>cd $DIST<br />
wget ftp://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.bz2<br />
wget ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.bz2<br />
wget ftp://ftp.gnu.org/gnu/gdb/gdb-${GDB_VERSION}.tar.bz2<br />
wget ftp://sources.redhat.com/pub/newlib/newlib-${NEWLIB_VERSION}.tar.gz<br />
wget http://www.gnuarm.com/t-arm-elf</p></blockquote>
<p><strong>untar:</strong></p>
<blockquote><p>cd $SRC<br />
tar jxf $DIST/binutils-${BINUTILS_VERSION}.tar.bz2<br />
tar jxf $DIST/gcc-${GCC_VERSION}.tar.bz2<br />
tar jxf $DIST/gdb-${GDB_VERSION}.tar.bz2<br />
tar zxf $DIST/newlib-${NEWLIB_VERSION}.tar.gz<br />
cp $DIST/t-arm-elf gcc-${GCC_VERSION}/gcc/config/arm/t-arm-elf</p></blockquote>
<p><strong>binutils:</strong></p>
<blockquote><p>md $BUILD/binutils<br />
cd $BUILD/binutils<br />
$SRC/binutils-${BINUTILS_VERSION}/configure &#8211;target=$TARGET &#8211;prefix=$PREFIX &#8211;enable-interwork &#8211;enable-multilib<br />
make all install 2&gt;&amp;1 | tee make.out</p></blockquote>
<p><strong>gcc core:</strong></p>
<blockquote><p>md $BUILD/gcc<br />
cd $BUILD/gcc<br />
$SRC/gcc-${GCC_VERSION}/configure &#8211;target=$TARGET &#8211;prefix=$PREFIX<br />
&#8211;enable-interwork &#8211;enable-multilib &#8211;enable-languages=&#8221;c,c++&#8221; &#8211;with-newlib &#8211;with-headers=$SRC/newlib-${NEWLIB_VERSION}/newlib/libc/include</p></blockquote>
<blockquote><p>make all-gcc install-gcc 2&gt;&amp;1 | tee make.out</p></blockquote>
<p><strong>newlib:</strong></p>
<blockquote><p>md $BUILD/newlib<br />
cd $BUILD/newlib<br />
$SRC/newlib-${NEWLIB_VERSION}/configure &#8211;target=arm-elf &#8211;prefix=$PREFIX &#8211;enable-interwork &#8211;enable-multilib</p></blockquote>
<blockquote><p>make all install 2&gt;&amp;1 | tee make.out</p></blockquote>
<p><strong>gcc (phase two):</strong></p>
<blockquote><p>cd $BUILD/gcc<br />
make all install 2&gt;&amp;1 | tee make.out</p></blockquote>
<p><strong>gdb:</strong></p>
<blockquote><p>md $BUILD/gdb<br />
cd $BUILD/gdb<br />
$SRC/gdb-${GDB_VERSION}/configure &#8211;target=$TARGET &#8211;prefix=$PREFIX &#8211;enable-interwork &#8211;enable-multilib</p></blockquote>
<blockquote><p>make all install 2&gt;&amp;1 | tee make.out</p></blockquote>
<p><strong>post-setup:</strong></p>
<blockquote><p>echo &#8216;export GNUARM_HOME=/opt/gnuarm&#8217; &gt;&gt; ~/.profile<br />
echo &#8216;export PATH=$GNUARM_HOME/bin:$PATH&#8217; &gt;&gt; ~/.profile</p></blockquote>
<p>The scripts can be downloaded from <a href="http://kaveri.org/files/gnuarm-scripts.zip">here</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/matrix108.wordpress.com/63/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/matrix108.wordpress.com/63/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matrix108.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matrix108.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matrix108.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matrix108.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/matrix108.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/matrix108.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/matrix108.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/matrix108.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matrix108.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matrix108.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matrix108.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matrix108.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matrix108.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matrix108.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=63&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://matrix108.wordpress.com/2007/11/22/arm-toolchain-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/650b160bc35cedeca3e920c69f814b61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Pari</media:title>
		</media:content>
	</item>
		<item>
		<title>ARM boards</title>
		<link>http://matrix108.wordpress.com/2007/09/08/arm-boards/</link>
		<comments>http://matrix108.wordpress.com/2007/09/08/arm-boards/#comments</comments>
		<pubDate>Sat, 08 Sep 2007 03:06:00 +0000</pubDate>
		<dc:creator>Pari</dc:creator>
				<category><![CDATA[ARM]]></category>

		<guid isPermaLink="false">http://matrix108.wordpress.com/2007/09/08/arm-boards/</guid>
		<description><![CDATA[Just got back from a trip to Chicago &#8211; Oak Park, a lovely renovated &#8220;gentrified&#8221; neighborhood, west of Chicago. Just spent the night researching a good ARM board to buy. Narrowed it down to these (all these boards have USB and SD card reader): ARM7TDMI-S boards: Olimex SAM7-P256 (SAM7-Pxxx Rev. E) &#8211; Atmel AT91SAM7S256, 256K [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=39&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just got back from a trip to Chicago &#8211; Oak Park, a lovely renovated &#8220;gentrified&#8221; neighborhood, west of Chicago. Just spent the night researching a good ARM board to buy. Narrowed it down to these (all these boards have USB and SD card reader):</p>
<p>ARM7TDMI-S boards:</p>
<ul>
<li>Olimex <a href="http://www.olimex.com/dev/sam7-p256.html">SAM7-P256</a> (SAM7-Pxxx Rev. E) &#8211; Atmel AT91SAM7S256, 256K Flash, 64K RAM, 60MHz, 18MHz crystal. $87.</li>
<li>Olimex <a href="http://www.olimex.com/dev/lpc-p2148.html">LPC-P2148</a> &#8211; NXP LPC2148, 512K Flash, 32K+8K RAM, 60MHz, 12MHz crystal. $77.</li>
</ul>
<p>.<br />
ARM7TDMI-S boards w/Ethernet:</p>
<ul>
<li>Olimex <a href="http://www.olimex.com/dev/sam7-ea2.html">SAM7-LA2</a> &#8211; Atmel AT91SAM7A2, 1MB Flash, 4MB SRAM, 30MHz, 6MHz crystal. $140.</li>
<li>Olimex <a href="http://www.olimex.com/dev/sam7-ex256.html">SAM7-EX256</a> &#8211; Atmel AT91SAM7X256, 256K Flash, 64K RAM, 55MHz, 18MHz crystal. This board is loaded with stuff. $120.<a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8244"></a></li>
</ul>
<p>.<br />
ARM920T boards w/MMU (for running embedded Linux):</p>
<ul>
<li>Olimex <a href="http://www.olimex.com/dev/cs-e930x.html">CS-E9302</a> &#8211; Cirrus Logic EP9302, 16MB Flash, 32MB SDRAM, 200MHz. Cirrus Logic has a very good linux forum. $180.</li>
<li>Olimex <a href="http://www.olimex.com/dev/sam9-L9260.html">SAM9-L9260</a> &#8211; Atmel AT91SAM9260, 512MB NAND Flash, 64MB SDRAM, 180MHz, 18MHz crystal. $217.</li>
<li>&#8230; or just get another Slug &#8211; XScale <a href="http://www.intel.com/design/network/products/npfamily/ixp420.htm">IXP420</a> (ARMv5TE), 8MB Flash, 32MB SDRAM, 266MHz. $80.</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/matrix108.wordpress.com/39/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/matrix108.wordpress.com/39/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matrix108.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matrix108.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matrix108.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matrix108.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/matrix108.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/matrix108.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/matrix108.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/matrix108.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matrix108.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matrix108.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matrix108.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matrix108.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matrix108.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matrix108.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=39&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://matrix108.wordpress.com/2007/09/08/arm-boards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/650b160bc35cedeca3e920c69f814b61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Pari</media:title>
		</media:content>
	</item>
		<item>
		<title>Arduino GPS</title>
		<link>http://matrix108.wordpress.com/2007/08/27/arduino-gps/</link>
		<comments>http://matrix108.wordpress.com/2007/08/27/arduino-gps/#comments</comments>
		<pubDate>Mon, 27 Aug 2007 23:14:00 +0000</pubDate>
		<dc:creator>Pari</dc:creator>
				<category><![CDATA[AVR]]></category>

		<guid isPermaLink="false">http://matrix108.wordpress.com/2007/08/27/arduino-gps/</guid>
		<description><![CDATA[Just to get my hands dirty and wrap it up with the AVR&#8217;s, I created a GPS data logger &#8211; using an Arduino board, GPS receiver chip, 4&#215;20 LCD, and a uALFAT microSD board. A good document on NMEA commands and data formats used by GPS chips is here. Regarding the GPS unit, it was [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=36&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just to get my hands dirty and wrap it up with the AVR&#8217;s, I created a GPS data logger &#8211; using an Arduino board, GPS receiver chip, 4&#215;20 LCD, and a <a href="http://www.ghielectronics.com/details.php?id=1&amp;sid=2">uALFAT</a> microSD board.<br />
<span style="float:left;margin:10px 10px 10px 0;"> <a href="http://www.flickr.com/photos/88585285@N00/2401001662/"><img src="http://farm3.static.flickr.com/2159/2401001662_50ec24a5d9.jpg" alt="" width="200" /></a><br />
</span>A good document on NMEA commands and data formats used by GPS chips is <a href="http://www.usglobalsat.com/downloads/NMEA_commands.pdf">here</a>. Regarding the GPS unit, it was <span class="info-tit">SiRF vs Trimble, and I went for SiRF, the SiRF III</span> (the <a href="http://www.globalsat.com.tw/eng/product_detail_00000055.htm">EM-406A</a><span class="info-tit"> by USGlobalSat)</span><span class="info-tit">. I picked it over the Trimble Lassen IQ and the Parallax. </span></p>
<p>Of course you can buy a GPS data logger board with LCD for about $200. But the whole point is that it&#8217;d be a learning exercise, an interesting one :-).</p>
<p>I decided to write it in raw C (UART driver, LCD driver, flash data logger,&#8230;) instead of Arduino&#8217;s Wiring language. This amounts to pretty much reading most of the 300 page data sheet for the MCU, giving you a thorough understanding of all aspects of the MCU &#8211; GPIO, clocks, counters, interrupts, UART, SPI, I2C,&#8230; all related considerations like registers, masks, timings, memory organization,&#8230;</p>
<p>(photo updated, 12/2007).</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/matrix108.wordpress.com/36/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/matrix108.wordpress.com/36/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matrix108.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matrix108.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matrix108.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matrix108.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/matrix108.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/matrix108.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/matrix108.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/matrix108.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matrix108.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matrix108.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matrix108.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matrix108.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matrix108.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matrix108.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=36&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://matrix108.wordpress.com/2007/08/27/arduino-gps/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/650b160bc35cedeca3e920c69f814b61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Pari</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2159/2401001662_50ec24a5d9.jpg" medium="image" />
	</item>
		<item>
		<title>Arduino LCD</title>
		<link>http://matrix108.wordpress.com/2007/08/25/lcd-hello-world/</link>
		<comments>http://matrix108.wordpress.com/2007/08/25/lcd-hello-world/#comments</comments>
		<pubDate>Sat, 25 Aug 2007 02:18:00 +0000</pubDate>
		<dc:creator>Pari</dc:creator>
				<category><![CDATA[AVR]]></category>

		<guid isPermaLink="false">http://matrix108.wordpress.com/2007/08/25/lcd-hello-world/</guid>
		<description><![CDATA[My first step, in my foray into embedded systems: interfaced a 4&#215;20 character LCD panel to the Arduino. Details on interfacing any Hitachi HD44780 based LCD panel can be found here. Went for the default parallel LCD&#8217;s. They&#8217;re cheap, about $15 for a 20&#215;4 panel on eBay (HD44780). The serial ones cost about 2-3 more. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=33&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My first step, in my foray into embedded systems: interfaced a 4&#215;20 character LCD panel to the Arduino. Details on interfacing any Hitachi HD44780 based LCD panel can be found <a href="http://ouwehand.net/%7Epeter/lcd/lcd.shtml">here</a>.</p>
<p>Went for the default parallel LCD&#8217;s. They&#8217;re cheap, about $15 for a 20&#215;4 panel on eBay (<a href="http://search.ebay.com/search/search.dll?from=R40&amp;_trksid=m37&amp;satitle=HD44780&amp;category0=">HD44780</a>). The serial ones cost about 2-3 more. These LCD panels allow you to use 4 data lines (with some bit-banging) instead of 8. Get one that is STN and transflective (vs reflective and transmissive), known for better contrast and brighter.</p>
<p>Check out also <a href="http://lcdproc.omnipotent.net/index.php3?continue=yes">LCDProc</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/matrix108.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/matrix108.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matrix108.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matrix108.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matrix108.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matrix108.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/matrix108.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/matrix108.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/matrix108.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/matrix108.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matrix108.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matrix108.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matrix108.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matrix108.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matrix108.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matrix108.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=33&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://matrix108.wordpress.com/2007/08/25/lcd-hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/650b160bc35cedeca3e920c69f814b61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Pari</media:title>
		</media:content>
	</item>
		<item>
		<title>The Arduino</title>
		<link>http://matrix108.wordpress.com/2007/08/24/the-arduino/</link>
		<comments>http://matrix108.wordpress.com/2007/08/24/the-arduino/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 06:16:00 +0000</pubDate>
		<dc:creator>Pari</dc:creator>
				<category><![CDATA[AVR]]></category>

		<guid isPermaLink="false">http://matrix108.wordpress.com/2007/08/24/the-arduino/</guid>
		<description><![CDATA[Just got it today :-). The Arduino is a great learning platform for anyone interested in the embedded world. The entire platform is open (hardware schematics, bootloader, lots of examples, etc.). It comes with a nice language that abstracts out lot of the bit-level stuff. But for learning purposes I&#8217;d recommend just using straight C [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=31&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://matrix108.files.wordpress.com/2009/08/arduino.jpg"><img src="http://matrix108.files.wordpress.com/2009/08/arduino.jpg?w=250" alt="" width="250" /></a></p>
<p>Just got it today :-). The <a href="http://www.arduino.cc/">Arduino</a> is a great learning platform for anyone interested in the embedded world. The entire platform is open (hardware schematics, bootloader, lots of examples, etc.).</p>
<p>It comes with a nice language that abstracts out lot of the bit-level stuff. But for learning purposes I&#8217;d recommend just using straight C &#8211; i.e. to get right down to the bare metal to get to know the AVR. Ubuntu has a nice ready-made GNU C toolchain for the AVR which works quiet well. There is also an Eclipse plugin. You&#8217;ll probably end up reading two-thirds of the 350 page ATmega168 specs&#8230; but very worthwhile. Once you&#8217;ve done one, you&#8217;re all set to handle any 8-bit MCU. I found Atmel&#8217;s AVR docs are very well done, complete with assembly language and bit-level C-language code snippets.</p>
<p>Also, check this site out: <a href="http://www.atmel.com/dyn/products/app_notes.asp?family_id=607#General%20Purpose">Atmel AVR Application Notes</a>. Tons of stuff. You don&#8217;t really need to buy any embedded systems books. The stuff here plus the <a href="http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf">Atmel AVR 8-bit Instruction Set</a> set document should be all that you need.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/matrix108.wordpress.com/31/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/matrix108.wordpress.com/31/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/matrix108.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/matrix108.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/matrix108.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/matrix108.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/matrix108.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/matrix108.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/matrix108.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/matrix108.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/matrix108.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/matrix108.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/matrix108.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/matrix108.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/matrix108.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/matrix108.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=matrix108.wordpress.com&amp;blog=2165814&amp;post=31&amp;subd=matrix108&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://matrix108.wordpress.com/2007/08/24/the-arduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/650b160bc35cedeca3e920c69f814b61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Pari</media:title>
		</media:content>

		<media:content url="http://matrix108.files.wordpress.com/2009/08/arduino.jpg" medium="image" />
	</item>
	</channel>
</rss>
