<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEECQ3szfyp7ImA9WhRVFUg.&quot;"><id>tag:blogger.com,1999:blog-30598440</id><updated>2012-01-14T09:57:42.587-06:00</updated><category term="linux" /><category term="jokes" /><category term="technology" /><category term="power management" /><category term="OMAP3430" /><category term="MeeGo" /><category term="boot loader" /><category term="mobile technology" /><category term="OMAP" /><category term="my projects" /><category term="jtag" /><category term="uboot" /><category term="Development platforms" /><category term="USB" /><category term="Open Source" /><category term="PandaBoard" /><category term="dreams" /><category term="android" /><category term="OMAP4" /><category term="SoftwareEngineering" /><category term="N900" /><category term="email" /><category term="nand" /><category term="beagle" /><category term="News" /><category term="simple code tricks" /><category term="thinkpad x61" /><title>Nishanth' tech rambles</title><subtitle type="html">Linux, U-Boot, OMAP, opensource, scripting, technology news are my interest areas.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://nishanthmenon.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>169</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/NishanthTechRambles" /><feedburner:info uri="nishanthtechrambles" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEECQ3g7eCp7ImA9WhRVFUg.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-3376128933353120665</id><published>2012-01-13T06:59:00.001-06:00</published><updated>2012-01-14T09:57:42.600-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-14T09:57:42.600-06:00</app:edited><title>So we hit the next gen</title><content type="html">&lt;div&gt;&lt;p&gt;&lt;a href="http://www.engadget.com/2012/01/12/ti-omap-5-exclusive-demo-laptops-ultrabooks-ces-2012-video/"&gt;Texas Instruments demos first OMAP 5, Android 4.0-based reference design, promises it in laptops next year (video) -- &lt;/a&gt;&lt;a href="http://www.engadget.com/2012/01/12/ti-omap-5-exclusive-demo-laptops-ultrabooks-ces-2012-video/"&gt;Engadget&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-3376128933353120665?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/iTL1iSEiJVk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/3376128933353120665/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=3376128933353120665" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3376128933353120665?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3376128933353120665?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/iTL1iSEiJVk/so-we-hit-next-gen.html" title="So we hit the next gen" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2012/01/so-we-hit-next-gen.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8MSHY_fip7ImA9Wx9VF0s.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-802709469277303546</id><published>2011-02-03T14:45:00.006-06:00</published><updated>2011-02-03T15:34:49.846-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-03T15:34:49.846-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="simple code tricks" /><category scheme="http://www.blogger.com/atom/ns#" term="OMAP3430" /><category scheme="http://www.blogger.com/atom/ns#" term="N900" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>firewall on N900</title><content type="html">Grr my first post of this year and I plan to start "I confess: I am a paranoid". what the heck, lets go with it:&lt;br /&gt;&lt;br /&gt;I confess, I am a paranoid. I carry around my N900 all the time and thanks to my job, I end up in different continents at times. with my primary SIM connection, international data network tends to around 15$/MB which I don't really feel like paying, so I either choose a local SIM (If I am around for that long that deserves it) OR more likely to use WLAN in the hotel or guest network I am allowed on. I don't like wlan network in general other than the one I personally setup. and hence dont like the thought that my phone's network services are open for all on wlan0 device :(. This triggered my search for something quick and simple firewall. I think of it more or less as a basic password I'd setup on my laptop of a phone unlock code or lock my car when I step out of it - it can be counteracted, but what the heck, some one has to see it worthwhile the effort to do it (and I don't personally think I am worth that effort ;) ). Anyways, back to code..&lt;br /&gt;&lt;br /&gt;Maemo &lt;a href="http://wiki.maemo.org/index.php?title=User_FAQ&amp;amp;section=56"&gt;wiki&lt;/a&gt;(search for the word firewall) unfortunately tells me dubious statement "Maybe not". on a phone data network, I am reasonably sure that the 3G provider really does'nt want to pay for people running nmap on other people's phone - I guess they are pretty serious about it, but unfortunately most wifis contain machines which are already compromised - the users really dont control their PCs anymore.. and my poor phone has to share the world with them as well.. (Disclaimer: I did say I am a paranoid, ok maybe a little bit paranoid).&lt;br /&gt;&lt;br /&gt;Since even "&lt;a href="http://www.linuxjournal.com/article/10767"&gt;ET call home&lt;/a&gt;" does'nt really need my phone to run Apache server or an SMTP server, I dont need a complicated firewall setting. I needed something as simple as &lt;a href="http://gufw.tuxfamily.org/"&gt;gufw&lt;/a&gt;&lt;br /&gt;yes OR no.&lt;br /&gt;&lt;br /&gt;Since I am never the first to look for something, bit of googling later, found &lt;a href="http://electron.mit.edu/%7Egsteele/firewall/"&gt;this&lt;/a&gt;&lt;br /&gt;few customizations for this script I setup the following with the &lt;a href="http://wiki.maemo.org/Kernel_Power"&gt;N900 power kernel&lt;/a&gt;:&lt;br /&gt;Note: for what ever reasons, N900 default kernel on PR1.3 does'nt come with these modules in /lib/modules/`uname -a` :(&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;~/bin/fire:&lt;/span&gt;&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 560px; height: 300px; text-align: left;"&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;set -x&lt;br /&gt;&lt;br /&gt;# Load needed kernel modules&lt;br /&gt;&lt;br /&gt;modprobe ipt_MASQUERADE&lt;br /&gt;modprobe ipt_NETMAP&lt;br /&gt;modprobe ipt_REDIRECT&lt;br /&gt;modprobe ip_tables&lt;br /&gt;modprobe ipt_REJECT&lt;br /&gt;modprobe iptable_filter&lt;br /&gt;modprobe iptable_mangle&lt;br /&gt;modprobe iptable_nat&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Clear any existing firewall stuff before we start&lt;br /&gt;# TODO: really not secure thingy- might wanna do REJECT rules before this..&lt;br /&gt;iptables --flush&lt;br /&gt;&lt;br /&gt;# As the default policies, drop all incoming traffic but allow all&lt;br /&gt;# outgoing traffic.  This will allow us to make outgoing connections&lt;br /&gt;# from any port, but will only allow incoming connections on the ports&lt;br /&gt;# specified below.&lt;br /&gt;&lt;br /&gt;iptables --policy INPUT DROP&lt;br /&gt;iptables --policy OUTPUT ACCEPT&lt;br /&gt;&lt;br /&gt;# Allow all incoming traffic if it is coming from the local loopback device&lt;br /&gt;iptables -A INPUT -i lo -j ACCEPT&lt;br /&gt;&lt;br /&gt;# Related and established connections: see&lt;br /&gt;#  http://www.sns.ias.edu/~jns/security/iptables/iptables_conntrack.html&lt;br /&gt;#&lt;br /&gt;# Accept all incoming traffic associated with an established&lt;br /&gt;# connection, or a "related" connection&lt;br /&gt;#&lt;br /&gt;# This will automatically handle incoming UDP traffic associated with&lt;br /&gt;# DNS queries, as well as PASSIVE mode FTP (provided the&lt;br /&gt;# ip_conntrack_ftp module is loaded)&lt;br /&gt;&lt;br /&gt;iptables -A INPUT -i phonet0 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;iptables -A INPUT -i wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;iptables -A INPUT -i wmaster0 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;&lt;br /&gt;# Allow connections on selected ports to the firewalled computer:&lt;br /&gt;&lt;br /&gt;# Logging: first, eliminate any packets that are going to broadcast&lt;br /&gt;# addresses, since they will overwhelm the log files if there are any&lt;br /&gt;# windows computers on our network. Also, don't log pesky multicast&lt;br /&gt;# packets that we block.&lt;br /&gt;&lt;br /&gt;iptables -A INPUT -d 255.255.255.255/0.0.0.255 -j DROP&lt;br /&gt;iptables -A INPUT -d 224.0.0.1 -j DROP&lt;br /&gt;&lt;br /&gt;# Log all other blocked packets, and change DROP to REJECT to be&lt;br /&gt;# polite and allow people connecting to a blocked port to receive a&lt;br /&gt;# "connection refused" message instead of timing out after 30 seconds.&lt;br /&gt;&lt;br /&gt;#iptables -A INPUT -j LOG&lt;br /&gt;iptables -A INPUT -j REJECT&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And the reverse: &lt;span style="font-weight: bold;"&gt;~/bin/nofire&lt;/span&gt;&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 560px; height: 200px; text-align: left;"&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;set -x&lt;br /&gt;&lt;br /&gt;# Clear any existing firewall stuff before we start&lt;br /&gt;&lt;br /&gt;iptables --flush&lt;br /&gt;&lt;br /&gt;# A dumb set of steps - just being explicit here..&lt;br /&gt;iptables --policy INPUT ACCEPT&lt;br /&gt;iptables --policy OUTPUT ACCEPT&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I then added &lt;a href="http://nokia-n900.com/desktop-command-execution-widget-in-detail/"&gt;desktop command execution widget&lt;/a&gt;  to basically use call firewall ON and OFF with a dumb command of &lt;span style="font-style: italic;"&gt;/bin/bash -c "/usr/bin/rootsh /home/user/bin/fire"&lt;/span&gt; for firewall on and &lt;span style="font-style: italic;"&gt;/bin/bash -c "/usr/bin/rootsh /home/user/bin/nofire"&lt;/span&gt; for no firewall - activated only if I click on it.&lt;br /&gt;&lt;br /&gt;Anyways, as usual, lazy halfbaked though it is, just sharing the goodies - do feel free to improve it and post your own or maybe some real security expert can post a better set of scripts here..&lt;br /&gt;&lt;br /&gt;Ofcourse, the only pet peeve I have is &lt;a href="http://talk.maemo.org/showthread.php?p=870831"&gt;this&lt;/a&gt; - I, for some reason cannot use my camera with power kernel. mebbe some day will have time to look at all things I want..&lt;br /&gt;&lt;br /&gt;[Late realization of searching for N900 ufw on google gave me &lt;a href="http://talk.maemo.org/showthread.php?t=66045"&gt;this&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-802709469277303546?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/Pu-JTO8pwbo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/802709469277303546/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=802709469277303546" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/802709469277303546?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/802709469277303546?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/Pu-JTO8pwbo/firewall-on-n900.html" title="firewall on N900" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2011/02/firewall-on-n900.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYBRn04fyp7ImA9Wx5UEkk.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-1826949957960362208</id><published>2010-10-16T10:30:00.002-05:00</published><updated>2010-10-16T10:49:17.337-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-16T10:49:17.337-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MeeGo" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>meego kernel on pandaboard?</title><content type="html">What exactly is a kernel? at the end of the day, just a collection of patches :).. So yeah, I have a "unique" collection of patches for &lt;a href="http://pandaboard.org"&gt;PandaBoard&lt;/a&gt; that I &lt;a href="http://lists.meego.com/pipermail/meego-kernel/2010-October/000577.html"&gt;requested MeeGo kernel&lt;/a&gt; maintainers to pick up yesterday. Now to wait and see if they actually get accepted. Next steps would be tough:&lt;br /&gt;&lt;br /&gt;DSS - omapfb enablement&lt;br /&gt;EHCI - keyboard and mouse&lt;br /&gt;&lt;br /&gt;As usual, the patches to provide the basic functionality does'nt seem to have made it upstream yet.. I sometimes wonder - Is it really so hard to push patches upstream?? Then I realize, I push patches in my spare time :) Which basically means that I am not driven by the chruning winds of business forces within the work environment dictating when and what patches I should be posting upstream :). Glad I still retain that flexibility. and probably the reason I do move seemingly faster - I always have the luxury to maintain focus on upstreaming my patchset.. it is all that hard when one writes in BOLD on one's office white board:&lt;br /&gt;&lt;blockquote&gt;DID YOU CHECK YOUR PATCH STATUS: xyz &lt;/blockquote&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class=" on down" style="display: block;" id="formatbar_CreateLink" title="Link"&gt;When one does'nt have a manager to remind one to follow up on patches upstream, I guess it makes it self driven - the most effective way of upstreaming.. it is long, it is arduous, it is constant&lt;img src="img/blank.gif" alt="Link" class="gl_link" border="0" /&gt; monitoring, it is techno-political + there is a bit of learning how to write English involved.. but mostly it is one's personal drive and attitude I guess.. we all like to talk in a common language -&gt; it tends to the "bottom posting", git format patch format etc.. bit of net-etiquette involved.. yeah we'r all mostly C-speaking people and would rather see code-ware than slide-ware and more importantly it should *work* ;)..&lt;br /&gt;&lt;br /&gt;Felipe B's &lt;a href="http://blog.felipebalbi.com/2010/09/22/working-with-open-source-communities/"&gt;post&lt;/a&gt; is an excellent real-world read on what it is all about. It is not really that difficult.. it just needs practise.. We all help share what we learn.. but *you* (dear reader) need to step up and post a patch first for us to help tell you &lt;a href="http://omappedia.org/wiki/Releasing_to_Linux_kernel_using_patches_and_emails"&gt;how to post a patch&lt;/a&gt; ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-1826949957960362208?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/hA6WP45w-CU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/1826949957960362208/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=1826949957960362208" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/1826949957960362208?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/1826949957960362208?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/hA6WP45w-CU/meego-kernel-on-pandaboard.html" title="meego kernel on pandaboard?" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/10/meego-kernel-on-pandaboard.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcHQXszfCp7ImA9Wx5UEEU.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-7992167582266941127</id><published>2010-10-14T13:41:00.002-05:00</published><updated>2010-10-14T13:47:10.584-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-14T13:47:10.584-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="simple code tricks" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>Tired of ttySx and ttyOx</title><content type="html">Recently linux-omap integrated omap-serial patches. Now we dont use ttyS2 anymore but use ttyO2. tired of switching kernel versions and fixing my getty, wrote the following&lt;br /&gt;In my busybox /etc/init.d/rcS file:&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 300px; text-align: left;"&gt;&lt;br /&gt;proc=`mount|grep "proc"`&lt;br /&gt;if [ -z "proc" ]; then&lt;br /&gt;   mount -t procfs none /proc&lt;br /&gt;fi                                                                                         &lt;br /&gt;if [ -f /proc/cmdline ]; then&lt;br /&gt;   # grab console from cmdline and use it..&lt;br /&gt;   tty=`cat /proc/cmdline|sed -e "s/ /\n/g"|grep console|cut -d '=' -f2|cut -d ',' -f1`&lt;br /&gt;   if [ -z "tty" ]; then&lt;br /&gt;           echo `cat /proc/cmdline` "does'nt have console?"&lt;br /&gt;   else&lt;br /&gt;       # remove my previous one if it exists&lt;br /&gt;       rm -f /dev/tty-bd&lt;br /&gt;           ln -s /dev/$tty /dev/tty-bd&lt;br /&gt;           echo "/dev/$tty linked to /dev/tty-bd - using as console"&lt;br /&gt;   fi&lt;br /&gt;else&lt;br /&gt;   echo "cmdline not found - no console?"&lt;br /&gt;fi&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In my inittab:&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 40px; text-align: left;"&gt;&lt;br /&gt;tty-bd::askfirst:-/bin/sh&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-7992167582266941127?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/fvcSy7eOntE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/7992167582266941127/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=7992167582266941127" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/7992167582266941127?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/7992167582266941127?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/fvcSy7eOntE/tired-of-ttysx-and-ttyox.html" title="Tired of ttySx and ttyOx" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/10/tired-of-ttysx-and-ttyox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQMR3Y5fip7ImA9Wx5WGU8.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-8538691328455270266</id><published>2010-09-29T11:36:00.005-05:00</published><updated>2010-10-01T03:06:26.826-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-01T03:06:26.826-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PandaBoard" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="OMAP4" /><title>PandaBoard un-veiled: get even more power with dual core ARM cortex A9 OMAP4!</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.omappedia.org/images/5/54/PandaBoard_Setup.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 478px; height: 383px;" src="http://www.omappedia.org/images/5/54/PandaBoard_Setup.png" alt="" border="0" /&gt;&lt;/a&gt;This year seems to be the year of the hacker community :) TI opened &lt;a href="http://pandaboard.org/"&gt;PandaBoard &lt;/a&gt;for early adopters today :).. Good details on PandaBoard &lt;a href="http://www.omappedia.org/wiki/PandaBoard"&gt;here&lt;/a&gt;. The usual goodies &lt;a href="http://pandaboard.org/sites/default/files/board_reference/EA1/750-2152-001-SCH_REVEA1.pdf"&gt;schematics&lt;/a&gt; and &lt;a href="http://pandaboard.org/sites/default/files/board_reference/EA1/Panda_Board_Spec_REVEA1_04.pdf"&gt;userguide&lt;/a&gt; etc are already up as well.. Some of the stuff that impressed me:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HDMI AND DVI options&lt;/li&gt;&lt;li&gt;HSUSB hub and Ethernet yaay..&lt;/li&gt;&lt;li&gt;Serial port is a decent serial port and no weird wiring needed ;)&lt;/li&gt;&lt;li&gt;Connectors pin compatible to &lt;a href="http://beagleboard.org/"&gt;beagle&lt;/a&gt; and xm.. :)&lt;/li&gt;&lt;li&gt;Did I forget to say you have 1271 onboard wlan??&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And lots more.. Just love this Baby.. I run ubuntu at home on my panda (yep, am already part of the PEAP - PandaBoard Early Adopter Program) and working on getting &lt;a href="http://meego.com/"&gt;MeeGo&lt;/a&gt; up and running as well. Supported in mainline kernel and mainline u-boot as well.. :) fun time ahead with multi core processing ;)&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-8538691328455270266?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/oK7gMB8HNBs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/8538691328455270266/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=8538691328455270266" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/8538691328455270266?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/8538691328455270266?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/oK7gMB8HNBs/pandaboard-un-veiled-get-even-more.html" title="PandaBoard un-veiled: get even more power with dual core ARM cortex A9 OMAP4!" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/09/pandaboard-un-veiled-get-even-more.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YAR3k4cCp7ImA9Wx5WF0o.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-3635291354498665452</id><published>2010-09-29T10:24:00.003-05:00</published><updated>2010-09-29T11:52:26.738-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-29T11:52:26.738-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP" /><category scheme="http://www.blogger.com/atom/ns#" term="simple code tricks" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>my kernel does'nt boot: the magic of EARLY_PRINTK</title><content type="html">I am subscribed to TI's &lt;a href="http://e2e.ti.com/"&gt;e2e&lt;/a&gt; portal and this &lt;a href="http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/p/66406/240049.aspx#240049"&gt;post&lt;/a&gt; peeked my interest. Since sometime in mainline kernel we've had issues with kernel not booting up due to some weird bugs. As a kernel developer, I have screwed up multiple times preventing kernel boot from happening. Typical build results in:&lt;br /&gt;&lt;blockquote&gt;## Booting kernel from Legacy Image at c0700000 ...&lt;br /&gt; Image Name:   Linux-2.6.32-rc6&lt;br /&gt; Image Type:   ARM Linux Kernel Image (uncompressed)&lt;br /&gt; Data Size:    1939152 Bytes =  1.8 MB&lt;br /&gt; Load Address: c0008000&lt;br /&gt; Entry Point:  c0008000&lt;br /&gt; Verifying Checksum ... OK&lt;br /&gt; Loading Kernel Image ... OK&lt;br /&gt;OK&lt;br /&gt;&lt;br /&gt;Starting kernel ...&lt;/blockquote&gt;And that's it - no useful messages for the kernel geeks to figure out where the boot sequence crashed, no real debug information at all!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;So the first question: why the kernel silence?&lt;/span&gt;&lt;br /&gt;The boot messages can only be printed once you have the serial port enabled. Now, serial port enablement itself could be pretty much later in the kernel boot sequence, if the system crashes(oops/data abort etc..) prior to that, there is no messages printed as kernel configuration assumes that you have no configured serial port prior to this..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Now the solution: EARLY_PRINTK&lt;/span&gt;&lt;br /&gt;The reality is usually a bit different in development platforms - usually you have something like u-boot or some bootloader spewing out a few prints to serial port, + ARM kernel &lt;a href="http://www.arm.linux.org.uk/developer/booting.php#2"&gt;boot requirements&lt;/a&gt; state that you could optionally (and recommended) have atleast 1 serial port configured prior to giving control to kernel. *if* you have such a bootloader which configures a serial port prior to giving control to kernel, you can enable a configuration called EARLY_PRINTK in the kernel .config. Note: there are &lt;a href="http://cateee.net/lkddb/web-lkddb/EARLY_PRINTK.html"&gt;many platforms &lt;/a&gt;that use this. How do we use this? two steps:&lt;br /&gt;a) Build a kernel with EARLY PRINTK&lt;br /&gt;b) provide earlyprintk as bootargs to actually get a more detailed log:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Step a) building kernel with EARLY_PRINTK&lt;/span&gt;&lt;br /&gt;build with your default configuration of your choice, and then  enable CONFIG_DEBUG_LL and CONFIG_EARLY_PRINTK in your kernel hacking options:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Kernel low-level debugging functions (DEBUG_LL) [N/y/?] (NEW) y&lt;br /&gt;Early printk (EARLY_PRINTK) [N/y/?] (NEW) y&lt;br /&gt;Kernel low-level debugging via EmbeddedICE DCC channel (DEBUG_ICEDCC) [N/y/?] (NEW) n&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;and build your uImage, zImage etc..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Step b) add earlyprintk to your bootargs&lt;/span&gt;&lt;br /&gt;it is as simple as that - just add the word earlyprintk to the bootargs&lt;br /&gt;example on u-boot.:&lt;br /&gt;&lt;blockquote&gt;setenv bootargs console=ttyS0,115200n8 root=/dev/mmcblk0p2 rootdelay=2 init=/bin/ash&lt;/blockquote&gt;&lt;br /&gt;becomes:&lt;br /&gt;&lt;blockquote&gt;setenv bootargs console=ttyS0,115200n8 root=/dev/mmcblk0p2 rootdelay=2 init=/bin/ash earlyprintk&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;and we are done, bootup and see detailed logs now...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sidenote:&lt;/span&gt; if your serial port itself does'nt work and you have JTAG, you may want to explore the ICE support for earlyprintk as well.. good luck..&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-3635291354498665452?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/1txh7yRLAZs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/3635291354498665452/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=3635291354498665452" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3635291354498665452?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3635291354498665452?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/1txh7yRLAZs/my-kernel-doesnt-boot-magic-of.html" title="my kernel does'nt boot: the magic of EARLY_PRINTK" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/09/my-kernel-doesnt-boot-magic-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYMQng_cCp7ImA9Wx5WEUo.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-6512157279496293002</id><published>2010-09-22T12:37:00.001-05:00</published><updated>2010-09-22T12:39:43.648-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-22T12:39:43.648-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP3430" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>linux on C64 DSP!</title><content type="html">Thanks to rkw, heard of this: &lt;a href="http://linux-c6x.org/wiki/index.php/Main_Page"&gt;http://linux-c6x.org/wiki/index.php/Main_Page&lt;/a&gt; it is based on 2.6.34 - pretty much closer to .36-rc5 ;) and needs some more work I guess.. mostly, it would be a great thing to get this running on &lt;a href="http://beagleboard.org"&gt;beagleboard&lt;/a&gt;! I cant think why not.. ;)&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-6512157279496293002?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/jU-9qh4VTew" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/6512157279496293002/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=6512157279496293002" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/6512157279496293002?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/6512157279496293002?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/jU-9qh4VTew/linux-on-c64-dsp.html" title="linux on C64 DSP!" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>4</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/09/linux-on-c64-dsp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMNR3w-fSp7ImA9Wx5XFUQ.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-9212691234566209699</id><published>2010-09-15T15:53:00.004-05:00</published><updated>2010-09-15T19:38:16.255-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-15T19:38:16.255-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PandaBoard" /><category scheme="http://www.blogger.com/atom/ns#" term="MeeGo" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="OMAP4" /><title>MeeGo diary notes: Packaging the Das U-boot</title><content type="html">My Odyssey into MeeGo packaging continues today with U-boot packaging.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Decision on the source&lt;/span&gt;&lt;br /&gt;First of all for U-boot package I needed to decide which source to use. Since I am no big fan of private repositories (even the ones hosted publicly!), the mainline u-boot was an obvious choice. Thankfully &lt;a href="http://sakoman.com/"&gt;sakoman&lt;/a&gt; and rest of the u-boot community have done a great job in making omap3 and omap4 support available in &lt;a href="http://git.denx.de/?p=u-boot.git;a=summary"&gt;Mainline u-boot&lt;/a&gt;.  And yep, it does have PandaBoard and obviously beagleboard support as well.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RPM saga&lt;/span&gt;&lt;br /&gt;Since the rule of a lazy programmer is not to invent something someone already has done, spend some time with google searching for readily available RPM packages for u-boot. One of the first things I hit was that our friends at Freescale had done a nify spec packaging for imx processors for &lt;a href="http://www.imxdev.org/wiki/index.php?title=I.MX25_PDK_U-boot_SplashScreen"&gt;packaging u-boot&lt;/a&gt;. But, looking closely I was not too impressed, searching a bit more, hit on the &lt;a href="http://www.openmamba.org/"&gt;openmamba project&lt;/a&gt; and the excellent &lt;a href="http://www.openmamba.org/distribution/distromatic.html?tag=devel&amp;amp;pkg=u-boot.source"&gt;packaging &lt;/a&gt;that Silvan Calarco has done for u-boot. Though it was done for mainstone, it was closest to what I wanted for MeeGo - Ability to build for multiple platforms and multiple architectures with minimal tweaks. A quick email exchange with Silvan, and he was completely ok with me reusing the same MeeGo - Thanks Silvan :).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cross building rpm on a Ubuntu PC&lt;/span&gt;&lt;br /&gt;Almost all folks had me convinced that I needed to switch to opensuse to build RPM packaging. after a couple of hours of playing around with &lt;a href="http://virtualbox.org/"&gt;virtualbox&lt;/a&gt; and attempting to install &lt;a href="http://software.opensuse.org/113/en"&gt;opensuse dvd,&lt;/a&gt; I decided that it was a waste of my time. Instead found the following:&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install rpm&lt;/blockquote&gt;And viola I have rpmbuild packaging. the first version of the spec file I wrote (very little modified from Silvan's original version) build with the following command:&lt;br /&gt;&lt;blockquote&gt;rpmbuild -ba u-boot.spec --define="CROSS_COMPILE arm-none-linux-gnueabi-" --define="TARGET_BOARD omap4_panda" --define "TARGET_CPU arm" --target="arm"&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;(note: I was still ignorant of OBS realities at this point ;).. Remember, I am a newbie ;) )..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MeeGo Packaging gimmicry&lt;/span&gt;&lt;br /&gt;Since I had my rpm package successfully building, I was all set to hit OBS and be done in a jiffy.. Boy, was I in for a surprise (at least for a spoilt kernel programmer turned newbie rpm packager).&lt;br /&gt;&lt;br /&gt;So in I go to the good ol' &lt;a href="http://build.meego.com/"&gt;build.meego.com&lt;/a&gt; following the rules as written in the &lt;a href="http://wiki.meego.com/Build_Infrastructure/Packagers_Developers/WebUI_part_2"&gt;wiki&lt;/a&gt;, and reading the &lt;a href="http://wiki.meego.com/Packaging/Guidelines"&gt;guidelines&lt;/a&gt; just to get my bearings right,&lt;br /&gt;a) I created my own u-boot project &lt;a href="https://build.meego.com/project/show?project=home%3Anm%3Abootloader%3Au-boot"&gt;home:nm:bootloader:u-boot&lt;/a&gt; (within my namespace ofcourse as I mentioned &lt;a href="http://nishanthmenon.blogspot.com/2010/09/meego-diary-notes-getting-ready-for.html"&gt;yesterday&lt;/a&gt;).&lt;br /&gt;b) I created my first package inside the project called &lt;a href="https://build.meego.com/package/show?package=u-boot&amp;amp;project=home%3Anm%3Abootloader%3Au-boot"&gt;u-boot&lt;/a&gt;&lt;br /&gt;c) Then added a new repository &lt;strong style="font-weight: normal;"&gt;u-boot-omap4panda&lt;/strong&gt; with a create new repository. -I needed a rule to base it on, so Selected devel:kernel and just added armv7le - cortex a8(omap3) and a9(omap4) were both v7 anyways..&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   note: I should have created the repository as u-boot.. but I guess we can fix it later on..&lt;/span&gt;&lt;br /&gt;d) I added the source.tar.bz2 and the .spec file using the web interface and bingo found that OBS was ready to build out of the box.. and it failed miserably.&lt;br /&gt;&lt;br /&gt;On #meego-dev Stskeeps (one of the nice, friendly and helpful MeeGo maintainers) introduced me to some ground rules in OBS&lt;br /&gt;a) I cannot not define a custom build flag TARGET_BOARD omap4_panda and TARGET_CPU=arm were no no.&lt;br /&gt;b) I dont need to use CROSS_COMPILE in MeeGo as it in the backend uses qemu and native-like build (basically, it executes gcc which is internally linked to a cross-arm-gcc - nifty!)&lt;br /&gt;or in other words,&lt;br /&gt;&lt;blockquote&gt;rpmbuild -ba u-boot.spec&lt;/blockquote&gt;should build me a meego rpm for my platform.. But, wait a minute.. how does OBS know which platforms I intended it to build? Stskeeps pointed me to the &lt;a href="https://build.meego.com/project/packages?project=devel%3Akernel"&gt;kernel package&lt;/a&gt;  as an example - exactly the same pain - n900, netbook etc need their own separate builds. in some cases individual patches to be applied independent of each other. Lets digress a little and understand how the trick works for kernel.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MeeGo kernel package spec file trick&lt;/span&gt;&lt;br /&gt;Put in a simple terms:&lt;br /&gt;&lt;blockquote&gt;obs looks for the spec file with the same name as the obs package name&lt;/blockquote&gt;In the case of kernel, the main package &lt;span style="font-style: italic;"&gt;kernel&lt;/span&gt; is linked to packages &lt;span style="font-style: italic;"&gt;kernel-ivi, kernel-mrst, kernel-n900 kernel-netbook&lt;/span&gt;  etc. . The core package &lt;span style="font-style: italic;"&gt;kernel&lt;/span&gt; has the spec files:&lt;span style="font-style: italic;"&gt; kernel.spec, kernel-ivi.spec, kernel-mrst.spec, kernel-n900.spec, kernel-netbook.spec&lt;/span&gt; along with the same source.&lt;br /&gt;&lt;br /&gt;when obs build &lt;span style="font-style: italic;"&gt;kernel-n900&lt;/span&gt; package, it does'nt use &lt;span style="font-style: italic;"&gt;kernel.spec&lt;/span&gt;, instead uses&lt;span style="font-style: italic;"&gt; kernel-n900.spec&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nifty - so in each spec file, you put in the stuff what you need for the platform! Problem solved. But,  would'nt it be a maintainer nightmare to manage few 100 spec files each forgetting to update common stuff? the MeeGo kernel maintainers had a trick up the sleeve as well.&lt;br /&gt;&lt;br /&gt;Use a common kernel.spec.in file to put all data you need, each platform specific data is marked with a tag&lt;span style="font-style: italic;"&gt; @@&lt;/span&gt;. e.g.:&lt;br /&gt;&lt;blockquote&gt;@@N900 Name: kernel-n900&lt;/blockquote&gt;which basically means introduce Name:kernel-n900 only for n900 spec file. This is provided to a simple perl script called makespec.pl -&gt; it is a very simple tag replacement logic -&gt; It checks if a file called N900 exists, if yes, it enables all lines marked with @N900&lt;br /&gt;&lt;br /&gt;all this is wrapped in a Makefile which basically does the following:&lt;br /&gt;&lt;blockquote&gt;touch N900&lt;br /&gt;makespec.pl &lt;kernel.spec.in&gt;kernel-n900.spec&lt;br /&gt;rm N900&lt;br /&gt;&lt;/kernel.spec.in&gt;&lt;/blockquote&gt;so when you do a make in the repo, it generates platform specific spec files from kernel.spec.in -&gt; and you now have spec files for each package(aka platform) and a single spec.in file to maintain.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The U-boot package spec&lt;/span&gt;&lt;br /&gt;For u-boot I did copied the same logic - with the fact that I did not need an additional patch for panda (atleast at the moment). Yep, I know I can improve the script improve the Makefile, remove the touch+rm nonsense.. mebbe a little later, but for the moment, it is not a tragic blocker as it allowed me my primary goal - in addition to pandaboard, the mechanism should scale to any platform and architecture we need it to scale to. so my contents now changed to:&lt;br /&gt;&lt;blockquote&gt;Makefile -&gt; This is for me to generate the platform specific spec files&lt;br /&gt;makespec.pl -&gt; tiny modifications to allow Panda replacements&lt;br /&gt;series -&gt; this was for future patches that might come in.. I need to work this out..&lt;br /&gt;u-boot-2010.09.rc1.tar.bz2 -&gt; rc1 tarball from denx.com&lt;br /&gt;u-boot-omap4panda.spec -&gt; This is the generated file&lt;br /&gt;u-boot.spec -&gt; "generic" spec file: It does a PandaBoard build at the moment, we can figure things out when we enable something else&lt;br /&gt;u-boot.spec.in -&gt; the main spec file&lt;br /&gt;&lt;/blockquote&gt;So, if i do a &lt;span style="font-style: italic;"&gt;make clean&lt;/span&gt; all my platform specific .spec files disappear. on doing a &lt;span style="font-style: italic;"&gt;make &lt;/span&gt;a new set of platform specific spec files are generated from my &lt;span style="font-style: italic;"&gt;u-boot.spec.in&lt;/span&gt; file. Nifty. Tested the build and it built fine with u-boot.spec file&lt;br /&gt;&lt;br /&gt;Created a new package &lt;a href="https://build.meego.com/package/show?package=u-boot-omap4panda&amp;amp;project=home%3Anm%3Abootloader%3Au-boot" class="nowrap"&gt;u-boot-omap4panda&lt;/a&gt; and linked it to home:nm:bootloader:u-boot and viola it built the same with u-boot-omap4panda.spec file instead of u-boot.spec file.&lt;br /&gt;&lt;br /&gt;I needed to see if the logic would work with omap3beagle (my fav platform)&lt;br /&gt;- modified the u-boot.spec.in, Makefile and makespec.pl files for adding Beagleboard relevant entries, did a new make and used osc to commit in the changes&lt;br /&gt;- created a new package                   &lt;a href="https://build.meego.com/package/show?package=u-boot-omap3beagle&amp;amp;project=home%3Anm%3Abootloader%3Au-boot" class="nowrap"&gt;u-boot-omap3beagle&lt;/a&gt; and linked it back to home:nm:bootloader:u-boot&lt;br /&gt;&lt;br /&gt;Build just great.. I then noticed that I had a few rpmlint warnings as well..&lt;br /&gt;&lt;blockquote&gt;RPMLINT report:&lt;br /&gt;===============&lt;br /&gt;u-boot-tools.armv7l: W: package-with-huge-docs  77%&lt;br /&gt;&lt;br /&gt;More than half the size of your package is documentation. Consider splitting&lt;br /&gt;it into a -doc subpackage.&lt;br /&gt;&lt;br /&gt;u-boot.src:143: W: macro-in-%changelog %{TARGET_BOARD}&lt;br /&gt;&lt;br /&gt;Macros are expanded in %changelog too, which can in unfortunate cases lead to&lt;br /&gt;the package not building at all, or other subtle unexpected conditions that&lt;br /&gt;affect the build.  Even when that doesn't happen, the expansion results in&lt;br /&gt;possibly "rewriting history" on subsequent package revisions and generally odd&lt;br /&gt;entries eg. in source rpms, which is rarely wanted.  Avoid use of macros in&lt;br /&gt;%changelog altogether, or use two '%'s to escape them, like '%%foo'.&lt;br /&gt;&lt;br /&gt;u-boot.src:22: W: hardcoded-packager-tag Nishanth&lt;br /&gt;&lt;br /&gt;The Packager tag is hardcoded in your spec file. It should be removed, so as&lt;br /&gt;to use rebuilder's own defaults.&lt;br /&gt;&lt;br /&gt;3 packages and 0 specfiles checked; 0 errors, 3 warnings.&lt;/blockquote&gt;&lt;br /&gt;Never liked warnings and decided to clean them up&lt;br /&gt;a)  looking at the &lt;a href="http://wiki.meego.com/Packaging/Guidelines"&gt;Packaging Guidelines&lt;/a&gt;, realized that the %changelog section in the .spec had to go to .changes file - so bit of mucking around later, did the same thing like the spec file:&lt;br /&gt;u-boot.changes.in is copied to u-boot-&lt;packagename&gt;.change to ensure that the changelog is replicated in all package builds.&lt;br /&gt;b) removed my name off the .spec.in regenerated and checked in the changes&lt;br /&gt;c) split the documentation off to u-boot-docs package (so you now get a package for u-boot, one for tools(mkimage) and one for doc) - added a few of useful docs there as well.. mostly the generic ones.&lt;br /&gt;&lt;br /&gt;Committed and checked in my changes, noticed that with every checkin, obs would automagically build up the linked up packages. final set of files:&lt;br /&gt;&lt;blockquote&gt;Makefile&lt;br /&gt;makespec.pl&lt;br /&gt;series&lt;br /&gt;u-boot-2010.09.rc1.tar.bz2&lt;br /&gt;u-boot.changes&lt;br /&gt;u-boot.changes.in&lt;br /&gt;u-boot-omap3beagle.changes&lt;br /&gt;u-boot-omap3beagle.spec&lt;br /&gt;u-boot-omap4panda.changes&lt;br /&gt;u-boot-omap4panda.spec&lt;br /&gt;u-boot.spec&lt;br /&gt;u-boot.spec.in&lt;br /&gt;&lt;/blockquote&gt;Bingo - for your enjoyment - the final rpm packages are &lt;a href="https://build.meego.com/package/binaries?package=u-boot&amp;amp;project=home%3Anm%3Abootloader%3Au-boot&amp;amp;repository=u-boot-omap4panda"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TODO: to figure out how to get this to mainline&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://en.opensuse.org/Build_Service/CLI"&gt;Osc&lt;/a&gt; Commands I used&lt;/span&gt;&lt;br /&gt;Overall, I found osc extreamely useful once I had reasonable level of confidence by using rpmbuild on my Ubuntu box, I did not have to deal with webpage based updating etc.. osc was a savior there!&lt;br /&gt;&lt;blockquote&gt;osc co home:nm:bootloader:u-boot&lt;/blockquote&gt;Checks out my u-boot repository&lt;br /&gt;&lt;blockquote&gt;osc status&lt;/blockquote&gt;Tells me what files have been modified or if there are any new files what they were&lt;br /&gt;&lt;blockquote&gt;osc add file1 file2 file3...&lt;/blockquote&gt;Adds the files to the list of changes to be pushed to my repo&lt;br /&gt;&lt;blockquote&gt;osc ci -m "my commit message"&lt;/blockquote&gt;Commits my changes and  pushes to my repo with the changes noted with commit message "&lt;span style="font-style: italic;"&gt;my commit message&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Well thats it for today.. Overall, I've been amazed how easy it's been once I figured out the basic things to create a buildable package! hmm..&lt;/packagename&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-9212691234566209699?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/trpxJiiVsUg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/9212691234566209699/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=9212691234566209699" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/9212691234566209699?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/9212691234566209699?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/trpxJiiVsUg/meego-diary-notes-packaging-das-u-boot.html" title="MeeGo diary notes: Packaging the Das U-boot" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>3</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/09/meego-diary-notes-packaging-das-u-boot.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEABSXo8eip7ImA9Wx5XFU0.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-1364876718383236690</id><published>2010-09-14T16:48:00.004-05:00</published><updated>2010-09-14T17:19:18.472-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-14T17:19:18.472-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PandaBoard" /><category scheme="http://www.blogger.com/atom/ns#" term="MeeGo" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="OMAP4" /><title>MeeGo diary notes: getting ready for packaging</title><content type="html">Got myself a build.meego.com account and am attempting to start a new package around meego for pandaboard - an OMAP4 based platform. This series of blog posts will hopefully contain my day to day notes for a better lack of word all under the label of MeeGo ;)..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt; the good folks at &lt;a href="http://www.blogger.com/devicevm.com"&gt;DeviceVM&lt;/a&gt; had already done a &lt;a href="http://wiki.meego.com/ARM/OMAP4_Blaze"&gt;MeeGo port to OMAP4 Blaze&lt;/a&gt; platform sometime back, my approach is a bit different in getting MeeGo port available in main MeeGo repository itself. Different challenge - mostly of the packaging kind as I am starting to realize ;)&lt;br /&gt;&lt;br /&gt;I've started my first experience with packaging for MeeGo with trying to put together a package for U-Boot. my lack of previous experience with rpm packaging has me stumped so far :(.&lt;br /&gt;&lt;br /&gt;On the base level, MeeGo uses rpm packaging - essentially what folks call a &lt;a href="http://www.ibm.com/developerworks/library/l-rpm1/"&gt;spec file&lt;/a&gt;. MeeGo folks have added one layering on top with yaml file which is translated by a set of tools called &lt;a href="http://wiki.meego.com/Spectacle"&gt;spectacle&lt;/a&gt; to translate the yaml to rpm spec file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Spectacle&lt;/span&gt;&lt;br /&gt;Since I like to get my hands on the tools as I learn, the first task of the day was to get spectacle tools loaded and running. Ran into issues immediately trying to get my ubuntu 9.10 box to automagically install the spectacle debian packages. few hours of trying to work around apt sources.list files, I gave up and filed a &lt;a href="http://bugs.meego.com/show_bug.cgi?id=6734"&gt;bug&lt;/a&gt; - steps that worked for me:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Downloaded&lt;a href="http://repo.meego.com/MeeGo/tools/repos/ubuntu/9.10/all/spectacle_0.19_all.deb"&gt; spectacle_0.19_all.deb&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;sudo apt-get install python-yaml libyaml-0-1&lt;/li&gt;&lt;li&gt;sudo dpkg --install spectacle_0.19_all.deb&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Bingo, I now have the specify and other spectacle utilities.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;osc - the OBS command line util&lt;/span&gt;&lt;br /&gt;MeeGo works with &lt;a href="http://en.opensuse.org/Build_Service_Tutorial"&gt;opensuse build system&lt;/a&gt; (or OBS) - more or less a centralized build system which effectively reuses packages from all around for various build configuration. OBS has a command line utility called &lt;a href="http://en.opensuse.org/Build_Service/CLI"&gt;osc&lt;/a&gt; - installed this with:&lt;br /&gt; &lt;blockquote style="font-style: italic;"&gt;sudo apt-get install osc&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So far so good. I now needed to get osc to talk to build.meego.com's servers.. given that I was behind a firewall, I needed a configuration file setup to be done. Bit of  help from the good folks on #meego-arm and #meego-dev irc chatrooms on freenode.net later my ~/.oscrc:&lt;br /&gt;&lt;blockquote&gt;[general]&lt;br /&gt;apiurl = http://api.meego.com&lt;br /&gt;packagecachedir = /home/nmenon/src/meego/osbuild-packagecache&lt;br /&gt;[http://api.meego.com]&lt;br /&gt;user = my_obs_login&lt;br /&gt;pass = my_obs_passwd&lt;br /&gt;aliases = meego&lt;br /&gt;email = my_email_id&lt;br /&gt;http_proxy="https://proxy:80/"&lt;/blockquote&gt;Cute.. "&lt;span style="font-style: italic;"&gt;osc ls&lt;/span&gt;" worked out of the box after this.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.opensuse.org/Build_Service/CLI"&gt;osc&lt;/a&gt; is a must have tool if you want to effectively work with OBS IMHO.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;I am all ready now to create my u-boot repo:&lt;/span&gt;&lt;br /&gt;Following the &lt;a href="http://wiki.meego.com/Build_Infrastructure/Packagers_Developers/WebUI_part_1"&gt;wiki steps&lt;/a&gt; (&lt;span style="font-style: italic;"&gt;note &lt;/span&gt;the build.meego.com looks a bit different from the time the wiki was created ;) but that is expected) Went to the &lt;a href="http://build.meego.com/"&gt;obs site&lt;/a&gt; and clicked on projects and added a &lt;a href="https://build.meego.com/project/show?project=home%3Anm%3Abootloader%3Au-boot"&gt;new project for uboot&lt;/a&gt; under my namespace (home:nm:bootloader:u-boot) - This probably will be different when it enters mainline devel:tools:something/something i guess.. not worrying about it for the moment.&lt;br /&gt;&lt;br /&gt;on my pc:&lt;br /&gt;&lt;blockquote&gt;osc co home:nm:bootloader:u-boot&lt;/blockquote&gt;and viola I have  a clone!&lt;br /&gt;&lt;br /&gt;Things to do next - the real thing: figuring out how to add the spec file and related packaging gimmicry to build in obs..&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-1364876718383236690?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/Yg997KoIK6M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/1364876718383236690/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=1364876718383236690" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/1364876718383236690?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/1364876718383236690?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/Yg997KoIK6M/meego-diary-notes-getting-ready-for.html" title="MeeGo diary notes: getting ready for packaging" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/09/meego-diary-notes-getting-ready-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EGQn84eip7ImA9Wx5XEU4.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-3706252839796147894</id><published>2010-09-09T14:41:00.004-05:00</published><updated>2010-09-10T11:20:23.132-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-10T11:20:23.132-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="News" /><title>next gen arm core</title><content type="html">&lt;div&gt;&lt;a href="http://www.arm.com/products/processors/cortex-a/cortex-a15.php"&gt;Cortex-A15 &lt;/a&gt;MPCore - Welcome to the next generation!!&lt;br /&gt;&lt;span style="font-style: italic;"&gt;update: &lt;/span&gt;20100910: more of the TI story &lt;a href="http://www.slashgear.com/ti-tip-multi-platform-arm-cortex-a15-eagle-mobile-devices-10101702/"&gt;slashgeared&lt;/a&gt;!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img style="display: block; margin: 0px auto 10px; width: 396px; height: 400px; text-align: center;" alt="" src="http://www.arm.com/images/Eagle_New_Look_Chip-600.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-3706252839796147894?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/DDeNsF-b0q4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/3706252839796147894/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=3706252839796147894" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3706252839796147894?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3706252839796147894?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/DDeNsF-b0q4/next-gen-arm-core.html" title="next gen arm core" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/09/next-gen-arm-core.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8NRX84fCp7ImA9Wx5XFU0.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-5304864803835894946</id><published>2010-08-27T09:23:00.006-05:00</published><updated>2010-09-14T16:48:14.134-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-14T16:48:14.134-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>Public OMAP4 TRM released</title><content type="html">TI has released public &lt;a href="http://focus.ti.com/pdfs/wtbu/OMAP4430_ES2.0_Public_TRM_vJ.pdf"&gt;OMAP4430 TRM&lt;/a&gt; and &lt;a href="http://focus.ti.com/pdfs/wtbu/CTT-OMAP4430ES2.0-v1.7.0.3.zip"&gt;clock tool&lt;/a&gt; in the &lt;a href="http://focus.ti.com/general/docs/wtbu/wtbudocumentcenter.tsp?templateId=6123&amp;amp;navigationId=12667"&gt;official site&lt;/a&gt; today.  :).. yaay..&lt;br /&gt;&lt;br /&gt;TRM gives you indepth insight into what OMAP4 is all about&lt;br /&gt;and the clock tool is my favourite tool especially to understand the complex clock framework dependencies on OMAP chips - the released version is custom to TI OMAP4 platform though.. but effective tool if you like to learn/debug/understand the clock framework dependencies -&gt; all the way from the oscillator you use on the board to the clocks you use in the functional block of interest..&lt;br /&gt;&lt;br /&gt;originally note from&lt;a href="http://marc.info/?l=linux-omap&amp;amp;m=128289370422558&amp;amp;w=2"&gt; Mythri on Linux OMAP&lt;/a&gt;&lt;br /&gt;[update: &lt;a href="http://www.omappedia.org/wiki/CTT"&gt;ctt wiki&lt;/a&gt;]&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-5304864803835894946?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/U5uc7uAPEV0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/5304864803835894946/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=5304864803835894946" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/5304864803835894946?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/5304864803835894946?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/U5uc7uAPEV0/public-omap4-trm-released.html" title="Public OMAP4 TRM released" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/08/public-omap4-trm-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEDQns_eyp7ImA9WxBWEEU.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-3015518505437563515</id><published>2010-02-01T22:06:00.001-06:00</published><updated>2010-02-01T22:07:53.543-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-01T22:07:53.543-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="News" /><title>omap4 headsup from slashgear</title><content type="html">found this &lt;a href="http://www.slashgear.com/texas-instruments-omap4-hands-on-0172231/"&gt;article&lt;/a&gt; pretty interesting&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-3015518505437563515?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/JvfcuzkKWGo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/3015518505437563515/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=3015518505437563515" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3015518505437563515?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3015518505437563515?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/JvfcuzkKWGo/omap4-headsup-from-slashgear.html" title="omap4 headsup from slashgear" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/02/omap4-headsup-from-slashgear.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMARX48eSp7ImA9WxBQFkU.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-7648747458791289288</id><published>2010-01-16T12:34:00.005-06:00</published><updated>2010-01-16T16:54:04.071-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-16T16:54:04.071-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP3430" /><category scheme="http://www.blogger.com/atom/ns#" term="beagle" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>how do you start a new year? in style!</title><content type="html">it is exciting news and there is no reason for me to do the good old style of a post.. so here it goes:&lt;br /&gt;&lt;br /&gt;Jason's &lt;a href="http://groups.google.com/group/beagleboard/browse_thread/thread/6604a0debf003c8a#"&gt;state of the beagle&lt;/a&gt; address (somehow sounds similar to &lt;a href="http://en.wikipedia.org/wiki/State_of_the_union"&gt;this&lt;/a&gt; - no offense intended ofcourse) had the following highlights (or my view how as an engineer I'd have paraphrased):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Beagleboard rocks&lt;/span&gt;. (and we have awards to prove it too ;) )..&lt;br /&gt;&lt;/li&gt;&lt;li&gt;We kinda got screwed by beagle's success initially, but now I think things are better now..&lt;/li&gt;&lt;li&gt;beagleboard is getting an engine change soon - blistering speeds ahead dudes.. 720meg beagles.. get those apps rockin..&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Annnndddd..... Yeeeehaaaawww.. &lt;span style="color: rgb(51, 204, 255); font-weight: bold;"&gt;beagleboard&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;XM&lt;/span&gt;!!!!!! DM3730(dudes in &lt;a href="http://marc.info/?l=linux-omap"&gt;l-o&lt;/a&gt; know the diff with OMAP3630).. wow..&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;span style="font-weight: bold;"&gt;more&lt;/span&gt;&lt;/span&gt; juice under the hood man... mama mia!!! camera, 4 port ehci, usb2ethernet the good ol'  lcd and expansion connectors,  everything we all cribbed and wanted our fav beagle to have, is there now! Go Go Gerald ;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;for those newbies.. go do the training and get rockin faster..(android/angstrom.. whatever you need is out there!)&lt;/li&gt;&lt;li&gt;TI is doing better supporting all of us hacker - so more choices for us to do the best hacks! want to create that automated dishwashing robot which also doubles as your lawn mover and your network router ;) go ahead DO it!&lt;/li&gt;&lt;li&gt;yah, as usual, let keep our flames to the usual MLs and ircs..&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;what heights do we take beagle to? &lt;span style="color: rgb(255, 0, 0); font-weight: bold; font-style: italic;"&gt;YOU &lt;/span&gt;decide ;)&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-7648747458791289288?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/c_Xdfjlvm38" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/7648747458791289288/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=7648747458791289288" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/7648747458791289288?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/7648747458791289288?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/c_Xdfjlvm38/how-do-you-start-new-year-in-style.html" title="how do you start a new year? in style!" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2010/01/how-do-you-start-new-year-in-style.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08HQXw-fip7ImA9WxNaGUo.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-6520201583707586969</id><published>2009-12-04T20:12:00.003-06:00</published><updated>2009-12-04T20:23:50.256-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-04T20:23:50.256-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP3430" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>OMAPZoom tutorial hour!!</title><content type="html">So omapzoom folks have a tutorial hour now, some really cool topics get caught up here.. this week:&lt;br /&gt;&lt;h3 style="margin-right: 0in; margin-left: 0.5in; margin-bottom: 0.0001pt; vertical-align: baseline;"&gt;&lt;b&gt;&lt;span style="font-family:Verdana;font-size:78%;color:black;"&gt;&lt;span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;  &lt;h3 style="margin-right: 0in; margin-left: 0.5in; margin-bottom: 0.0001pt; vertical-align: baseline; outline-width: 0px;"&gt;&lt;b&gt;&lt;span style="font-family:Symbol;font-size:85%;color:black;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol; color: black; font-weight: normal;" lang="EN"&gt;·&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:78%;color:black;"&gt;&lt;span style="font-size: 7pt; color: black; font-weight: normal;" lang="EN"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:78%;color:black;"&gt;&lt;span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN"&gt;Android on OMAP Overview and Resources&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;h3 style="margin-right: 0in; margin-left: 0.5in; margin-bottom: 0.0001pt; vertical-align: baseline; outline-width: 0px;"&gt;&lt;b&gt;&lt;span style="font-family:Symbol;font-size:85%;color:black;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol; color: black; font-weight: normal;" lang="EN"&gt;·&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:78%;color:black;"&gt;&lt;span style="font-size: 7pt; color: black; font-weight: normal;" lang="EN"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;st1:place st="on"&gt;&lt;st1:placename st="on"&gt;&lt;span style="font-family:Verdana;font-size:78%;color:black;"&gt;&lt;span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN"&gt;DSP&lt;/span&gt;&lt;/span&gt;&lt;/st1:placename&gt;&lt;span style="font-family:Verdana;font-size:78%;color:black;"&gt;&lt;span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN"&gt; &lt;st1:placetype st="on"&gt;Bridge&lt;/st1:placetype&gt;&lt;/span&gt;&lt;/span&gt;&lt;/st1:place&gt;&lt;span style="font-family:Verdana;font-size:78%;color:black;"&gt;&lt;span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN"&gt; Overview &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;h3 style="margin-right: 0in; margin-left: 0.5in; margin-bottom: 0.0001pt; vertical-align: baseline; outline-width: 0px;"&gt;&lt;b&gt;&lt;span style="font-family:Symbol;font-size:85%;color:black;"&gt;&lt;span style="font-size: 10pt; font-family: Symbol; color: black; font-weight: normal;" lang="EN"&gt;·&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:78%;color:black;"&gt;&lt;span style="font-size: 7pt; color: black; font-weight: normal;" lang="EN"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:78%;color:black;"&gt;&lt;span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN"&gt;OpenEmbedded Overview&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;it is a webex (works on most OSes including a linux PC) + teleconf -&gt;&lt;a href="http://www.ticonferencing.com/globalaccess/"&gt; large number of access &lt;/a&gt;numbers from around the world&lt;br /&gt;more information &lt;a href="http://groups.google.com/group/omapzoom/t/b8c99e1f53cf030a"&gt;here&lt;/a&gt;. the OMAP tutorial hour (including the previous presentations - which by the way explains kernel process from TI) are available &lt;a href="http://omappedia.org/wiki/Tutorial_Hour"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-6520201583707586969?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/2v5RFeRVYUY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/6520201583707586969/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=6520201583707586969" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/6520201583707586969?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/6520201583707586969?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/2v5RFeRVYUY/omapzoom-tutorial-hour.html" title="OMAPZoom tutorial hour!!" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/12/omapzoom-tutorial-hour.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04CQ3o5cCp7ImA9WxNbFko.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-5029125150699163811</id><published>2009-11-19T19:07:00.004-06:00</published><updated>2009-11-19T19:19:22.428-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-19T19:19:22.428-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP3430" /><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><category scheme="http://www.blogger.com/atom/ns#" term="power management" /><title>Smart Reflex what is it?</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.powersystemsdesign.com/images/stories/march2009/Figure_02.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 223px; height: 250px;" src="http://www.powersystemsdesign.com/images/stories/march2009/Figure_02.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Googling around, I found this &lt;a href="http://www.powersystemsdesign.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=168&amp;amp;Itemid=107"&gt;beautiful article &lt;/a&gt;that gives excellent explanation of how Adaptive Voltage  behaves in the system.&lt;br /&gt;&lt;br /&gt;by the way, this is going to be part of my rewrite of smart reflex driver to make the voltage infrastructure a lot more cleaner and easy to use.&lt;br /&gt;General flow I am thinking is as follows(will change ofcourse):&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;voltage driver &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   |------------&gt; No SR PMICs implementation thru regulator framework perhaps.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   \-------&gt; Smart reflex driver&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;             |----&gt; PMIC interface (for class 0 devices)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;             |-----------------------------------\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;             \-----&gt; Voltage processor driver -&gt; Voltage controller driver&lt;/span&gt;&lt;br /&gt;Ofcourse things might change as I move on with the implementation (I need to think a little more on this), but once I am done, you should be able to see it &lt;a href="http://marc.info/?l=linux-omap"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-5029125150699163811?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/LV418jjApKA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/5029125150699163811/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=5029125150699163811" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/5029125150699163811?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/5029125150699163811?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/LV418jjApKA/smart-reflex-what-is-it.html" title="Smart Reflex what is it?" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/11/smart-reflex-what-is-it.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkADSHg4eCp7ImA9WxNWFUo.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-5002473398493183162</id><published>2009-10-14T21:19:00.003-05:00</published><updated>2009-10-14T21:46:19.630-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-14T21:46:19.630-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP3430" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>few new things I see on linux-omap kernel community</title><content type="html">After a long while of staying off linux-omap, been watching it rather closely recently.. here are some interesting stuff I saw this month:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Power Management: Operating points and general PM strategy for handling for various silicons &lt;a href="http://marc.info/?t=125546601600001&amp;amp;r=1&amp;amp;w=2"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Silicon Feature support for OMAP3 &lt;a href="http://marc.info/?t=125441795100004&amp;amp;r=1&amp;amp;w=2"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;New silicon support: &lt;a href="http://marc.info/?t=125511791600002&amp;amp;r=1&amp;amp;w=2"&gt;OMAP35xx&lt;/a&gt; and &lt;a href="http://marc.info/?l=linux-omap&amp;amp;m=125513576328888&amp;amp;w=2"&gt;36xx&lt;/a&gt; support being introduced.&lt;/li&gt;&lt;li&gt;Discussion on memory and cache issue &lt;a href="http://marc.info/?t=125533686700001&amp;amp;r=1&amp;amp;w=2"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;li&gt;ETM, ETM support &lt;a href="http://marc.info/?t=125527963900003&amp;amp;r=1&amp;amp;w=2"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;li&gt;few new PMIC - &lt;a href="http://marc.info/?t=125481441100003&amp;amp;r=1&amp;amp;w=2"&gt;6030&lt;/a&gt; and &lt;a href="http://marc.info/?t=125380781500001&amp;amp;r=1&amp;amp;w=2"&gt;5031&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://marc.info/?l=linux-omap&amp;amp;m=125545826428965&amp;amp;w=2"&gt;hints&lt;/a&gt; of wl1251 support getting upstream&lt;/li&gt;&lt;li&gt;IO_ADDRESS is &lt;a href="http://marc.info/?t=125496165600002&amp;amp;r=1&amp;amp;w=2"&gt;dead&lt;/a&gt; use io_remap like the rest of the world&lt;/li&gt;&lt;li&gt;&lt;a href="http://marc.info/?t=125554993900014&amp;amp;r=1&amp;amp;w=2"&gt;spring cleaning&lt;/a&gt; of omap850/730 series&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;and of course a bunch of stuff I have missed posting here such as move to 2.6.32-rc4 by Tony and Kevin, both pushing out patches to mainline etc.....&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-5002473398493183162?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/-xOMQGtQnnY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/5002473398493183162/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=5002473398493183162" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/5002473398493183162?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/5002473398493183162?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/-xOMQGtQnnY/few-new-things-i-see-on-linux-omap.html" title="few new things I see on linux-omap kernel community" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>3</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/10/few-new-things-i-see-on-linux-omap.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcHRngyeSp7ImA9WxNWFUo.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-3034442399398555939</id><published>2009-10-14T21:09:00.003-05:00</published><updated>2009-10-14T21:17:17.691-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-14T21:17:17.691-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="simple code tricks" /><category scheme="http://www.blogger.com/atom/ns#" term="News" /><title>some interesting posts</title><content type="html">&lt;span&gt;High time&lt;/span&gt;&lt;span&gt; I "ported" my posts from facebook back here..&lt;/span&gt;&lt;span&gt;so here it goes&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Some really bad code stories:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;shared by rob clark - how bad can some code go??&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://thedailywtf.com/Articles/The-Shenanigans-Handler.aspx"&gt;http://thedailywtf.com/Articles/The-Shenanigans-Handler.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Aint this cool:&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://arstechnica.com/web/news/2009/09/horrifically-bad-software-demos-become-performance-art.ars"&gt;http://arstechnica.com/web/news/2009/09/horrifically-bad-software-demos-become-performance-art.ars&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Techno Curios: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tired of fullspeed, highspeed, lowspeed?? how about superspeed?? tired of acronymns already??&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.pcworld.com/article/172757/wheres_usb_30.html"&gt;http://www.pcworld.com/article/172757/wheres_usb_30.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Search for my cheap oscilloscope goes on:&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.micahcarrick.com/06-06-2006/pc-sound-card-oscilloscope-linux.html"&gt;http://www.micahcarrick.com/06-06-2006/pc-sound-card-oscilloscope-linux.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.fpga4fun.com/digitalscope.html"&gt;http://www.fpga4fun.com/digitalscope.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hacks 'nd bytes:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;PS3 back with Hulu..&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.ypass.net/blog/2009/06/got-a-ps3-want-hulu-back-easy-enough/"&gt;http://www.ypass.net/blog/2009/06/got-a-ps3-want-hulu-back-easy-enough/ &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-3034442399398555939?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/FDMLbbu9ULg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/3034442399398555939/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=3034442399398555939" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3034442399398555939?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3034442399398555939?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/FDMLbbu9ULg/some-interesting-posts.html" title="some interesting posts" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/10/some-interesting-posts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQNSXgyeCp7ImA9WxNWFUo.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-4536600509536300277</id><published>2009-10-14T21:02:00.003-05:00</published><updated>2009-10-14T21:06:38.690-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-14T21:06:38.690-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="simple code tricks" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>timing diagrams</title><content type="html">&lt;a href="http://drawtiming.sourceforge.net/samples.html"&gt;drawtime&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is kinda a cool app that runs on ubuntu to draw timing diagrams as follows:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_RmxHIOoZjLU/StaDVsWBJgI/AAAAAAAAA2I/2i01rcxsWhc/s1600-h/a.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 141px;" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/StaDVsWBJgI/AAAAAAAAA2I/2i01rcxsWhc/s320/a.gif" alt="" id="BLOGGER_PHOTO_ID_5392642012526749186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Example(from the drawtime website):&lt;br /&gt;&lt;pre class="code"&gt;&lt;blockquote&gt;CS1 = 1, OE = 1, ADDR = X, DATA = Z.&lt;br /&gt;&lt;br /&gt;CS1 = 0, OE = 0, ADDR = "".&lt;br /&gt;OE -tOE&gt; DATA = "";&lt;br /&gt;CS1 -tCS1&gt; DATA;&lt;br /&gt;ADDR -tACC&gt; DATA.&lt;br /&gt;&lt;br /&gt;OE = 1, CS1 = 1, ADDR = X.&lt;br /&gt;CS1 -tH&gt; DATA = Z;&lt;br /&gt;OE -tH&gt; DATA;&lt;br /&gt;ADDR -tH&gt; DATA.&lt;/blockquote&gt;&lt;br /&gt;and you can now generate all those cool waveforms without having to worry about did you get the lines right etc..&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;more such cool stuff &lt;a href="http://coolarm.wordpress.com/2008/06/16/electronic-software-in-ubuntu-linux/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-4536600509536300277?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/opAiTEwk-Mo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/4536600509536300277/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=4536600509536300277" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/4536600509536300277?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/4536600509536300277?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/opAiTEwk-Mo/timing-diagrams.html" title="timing diagrams" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_RmxHIOoZjLU/StaDVsWBJgI/AAAAAAAAA2I/2i01rcxsWhc/s72-c/a.gif" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/10/timing-diagrams.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQHRXY4cSp7ImA9WxNQE0s.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-7396082379260244705</id><published>2009-09-19T08:47:00.002-05:00</published><updated>2009-09-19T08:52:14.839-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-19T08:52:14.839-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP3430" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>Flashlite and Valgrind for OMAP3!!</title><content type="html">Looking through the &lt;a href="http://www.facebook.com/pages/Beagle-Board/36046586920"&gt;beagleboard facebook group&lt;/a&gt;,&lt;br /&gt;Saw two interesting points:&lt;br /&gt;&lt;div class="note_title"&gt;&lt;a href="http://www.facebook.com/note.php?note_id=135665164361&amp;amp;1&amp;amp;index=1"&gt;Flash Lite 3.1 evaluation version for Beagleboard&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div class="note_title"&gt;For all the Beagleboard fans out there, we’ve created an evaluation version of Flash Lite 3. This is a fully functional version of Flash Lite that times out in 3 minutes. It is built on Angstrom Linux distribution and requires X. Please email me if you are looking for more information or are interested in having one. I should mention that OMAP 3530 (ARM Cortex A8) is a powerful CPU and seems to handle graphics as well as video very well."&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/note.php?note_id=135425019361&amp;amp;ref=nf" onclick="'ft("&gt;How to build Valgrind for Beagleboard&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;1) Get Valgrind source code from SVN using revision 9648 and 1888 for VEX&lt;br /&gt;&lt;span&gt; svn co -r 9648 svn://svn.valgrind.org/val&lt;/span&gt;&lt;div&gt;&lt;wbr&gt;&lt;span class="word_break"&gt;&lt;/span&gt;grind/trunk&lt;br /&gt;cd VEX&lt;br /&gt;svn update -r 1888&lt;br /&gt;&lt;br /&gt;2) Download the patch here &lt;a href="http://www.facebook.com/note_redirect.php?note_id=135425019361&amp;amp;h=126403d0c544adcf681dd634b21dddaa&amp;amp;url=http%3A%2F%2Fbugsfiles.kde.org%2Fattachment.cgi%3Fid%3D32348" target="_blank" title="http://bugsfiles.kde.org/attachment.cgi?id=32348"&gt;&lt;span&gt;http://bugsfiles.kde.org/a&lt;/span&gt;&lt;wbr&gt;&lt;span class="word_break"&gt;&lt;/span&gt;ttachment.cgi?id=32348&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) Apply the patch into the source code&lt;br /&gt;cd valgrind&lt;br /&gt;patch -p1 &lt; [path to the patch]&lt;br /&gt;&lt;br /&gt;4) Run autogen.sh to run autotools&lt;br /&gt;&lt;br /&gt;5) Configure the source code&lt;br /&gt;&lt;span&gt; ./configure --host=arm-angstrom-linux-&lt;/span&gt;&lt;wbr&gt;&lt;span class="word_break"&gt;&lt;/span&gt;gnueabi&lt;br /&gt;&lt;br /&gt;The patch still has some bugs such as CPU instruction alignment you can 'cat /proc/cpu/alignment' to find out if the kernel is configured to fix unaligned accesses, and you can enable it by executing 'echo 2 &gt; /proc/cpu/alignment' but it's enough to use for simple application.&lt;br /&gt;Have fun with Valgrind :-)&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;img src="http://external.ak.fbcdn.net/safe_image.php?d=dc1e186c50d7ad7e528a8fcf448bdc02&amp;amp;url=https%3A%2F%2Fblogger.googleusercontent.com%2Ftracker%2F315920831118778783-4824602383399635642%3Fl%3Dchangetheworldwithyourpassion.blogspot.com" alt="" class="ext_img" onload="var img = this; onloadRegister(function() { adjustImage(img); });" /&gt;&lt;br /&gt;The above quotes are straight from Facebook posts itself..&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-7396082379260244705?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/f74TemKjEdQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/7396082379260244705/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=7396082379260244705" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/7396082379260244705?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/7396082379260244705?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/f74TemKjEdQ/flashlite-and-valgrind-for-omap3.html" title="Flashlite and Valgrind for OMAP3!!" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/09/flashlite-and-valgrind-for-omap3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAMSX4_eCp7ImA9WxNRF0o.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-7703959882445943864</id><published>2009-09-12T11:56:00.003-05:00</published><updated>2009-09-12T11:59:48.040-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-12T11:59:48.040-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="News" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>CELF 2009 - France (ELC-Embedded Linux Conference)</title><content type="html">here are the sessions in the conference: &lt;a href="http://www.embeddedlinuxconference.com/elc_europe09/sessions.html"&gt;http://www.embeddedlinuxconference.com/elc_europe09/sessions.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Includes Sascha and my personal fav - &lt;a href="http://www.embeddedlinuxconference.com/elc_europe09/sessions.html#Hauer"&gt;u-boot v2&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-7703959882445943864?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/d6umHZGD66I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/7703959882445943864/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=7703959882445943864" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/7703959882445943864?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/7703959882445943864?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/d6umHZGD66I/celf-2009-france.html" title="CELF 2009 - France (ELC-Embedded Linux Conference)" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/09/celf-2009-france.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQAQXw9eyp7ImA9WxNRFkw.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-837195427388054648</id><published>2009-09-10T14:51:00.002-05:00</published><updated>2009-09-10T14:52:20.263-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-10T14:52:20.263-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP3430" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>And then Finally TI U-Boot tree!!</title><content type="html">Finally.... &lt;a href="http://git.denx.de/?p=u-boot/u-boot-ti.git;a=summary"&gt;here&lt;/a&gt; it is!!! patches for u-boot to be send straight to &lt;a href="http://lists.denx.de/mailman/listinfo/u-boot"&gt;u-boot mailing list&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-837195427388054648?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/3OEpk4wqngU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/837195427388054648/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=837195427388054648" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/837195427388054648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/837195427388054648?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/3OEpk4wqngU/and-then-finally-ti-u-boot-tree.html" title="And then Finally TI U-Boot tree!!" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>2</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/09/and-then-finally-ti-u-boot-tree.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMCR384eCp7ImA9WxNSF0s.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-5545753642150718545</id><published>2009-08-31T18:12:00.002-05:00</published><updated>2009-08-31T18:14:26.130-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-31T18:14:26.130-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP3430" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>Free DSP codecs!!!</title><content type="html">Wow.. a blast of new sites for omapzoom..&lt;br /&gt;&lt;br /&gt;And then I see &lt;a href="http://groups.google.com/group/omapzoom/browse_thread/thread/6586bddb3fa545f1"&gt;this&lt;/a&gt; on the new &lt;a href="http://groups.google.com/group/omapzoom?pli=1"&gt;omapzoom google groups&lt;/a&gt;!!!&lt;br /&gt;*         MPEG4 Video Dec&lt;br /&gt;*         H263 Video Dec&lt;br /&gt;*         JPEG Dec&lt;br /&gt;*         JPEG Enc&lt;br /&gt;*         AAC Dec&lt;br /&gt; &lt;a href="https://gforge.ti.com/gf/project/openmax/frs/?action=index" target="_blank" rel="nofollow"&gt;https://gforge.ti.com/gf/project/openmax/frs/?action=index&lt;/a&gt;&lt;br /&gt;And you also now have a &lt;a href="http://omappedia.org/"&gt;wiki for omap&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-5545753642150718545?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/7nj7wHK3OR0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/5545753642150718545/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=5545753642150718545" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/5545753642150718545?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/5545753642150718545?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/7nj7wHK3OR0/free-dsp-codecs.html" title="Free DSP codecs!!!" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>8</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/08/free-dsp-codecs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMFQXsyeCp7ImA9WxNTFEk.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-6766081486047084333</id><published>2009-08-16T13:44:00.002-05:00</published><updated>2009-08-16T13:46:50.590-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-16T13:46:50.590-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>Plato! trace-visualize-debug-filter code path!</title><content type="html">Got this&lt;a href="http://code.google.com/p/plato/"&gt; link&lt;/a&gt; from a colleague - kinda useful if you would like to use it for your own purposes.. quote from the site:&lt;br /&gt;&lt;blockquote&gt;PLATO is a tool for displaying and analyzing software traces from an application being debugged. It connects to TTIF (libttif.so, included) which provides a lower overhead replacement for printf(), so as to minimize the chance that timing related bugs disappear when you enable debug traces, and also some binary trace APIs. PLATO can be running on a separate PC from the application being debugged, making it suited for embedded development. PLATO will decode/filter/display/visualize the traces&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-6766081486047084333?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/dKakUkOzNlU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/6766081486047084333/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=6766081486047084333" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/6766081486047084333?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/6766081486047084333?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/dKakUkOzNlU/plato-trace-visualize-debug-filter-code.html" title="Plato! trace-visualize-debug-filter code path!" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/08/plato-trace-visualize-debug-filter-code.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MARX85cCp7ImA9WxNTEkU.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-3353289952612468197</id><published>2009-08-14T17:13:00.005-05:00</published><updated>2009-08-14T17:37:24.128-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-14T17:37:24.128-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OMAP" /><category scheme="http://www.blogger.com/atom/ns#" term="simple code tricks" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><title>towards a integrated infrastructure for feature + errata handling in kernel</title><content type="html">I have a confession to make: I am fanatic about clean code. I like it simple and I like it elegant.&lt;br /&gt;&lt;br /&gt;Few days back, I had a &lt;a href="http://marc.info/?l=linux-omap&amp;amp;m=125018632606920&amp;amp;w=2"&gt;chat&lt;/a&gt; on&lt;a href="http://marc.info/?l=linux-omap"&gt; linux omap mailing list&lt;/a&gt; on what I'd dream to see instead of a half a dozen cpu_has_feature_XYZ() APIs in the system.. The thought is more of this form:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Some sort of infrastructure which is common to all silicons,platforms exist which provides method to register the tuple (silicon_rev_id | ip_module_rev_id, feature_errata_id)&lt;/li&gt;&lt;li&gt;Specific drivers such as DMA, I2C, McBSP, PRCM etc.. on registration provides to the system the an array of tuples for that device.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Platform on bootup provides the platform_data to the driver, which allows the driver to start, but now, it can also detect cpu_rev and can grap it's own IP Module rev from it's own register.. -&gt; that is provided to the infrastructure&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Every time there is a need to check to enable/disable feature/errata, all the code needs to do is:&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;if (is_enabled(dev, OMAP3_ISP) ) {&lt;br /&gt;      do my stuff;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;is'nt that cleaner than&lt;br /&gt;if (cpu_is_3430() &amp;amp;&amp;amp; (cpu_rev &gt;= OMAP3430_ES3P1) ) {&lt;br /&gt;      do my stuff;&lt;br /&gt;}&lt;br /&gt;or&lt;br /&gt;&lt;pre&gt;if (cpu_is_3430() &amp;amp;&amp;amp; (omap_features &amp;amp; OMAP_HAS_ISP) {&lt;br /&gt;      do my stuff;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Now what ever we do here can easily be displayed  by the subsystem by exposing a cat /sys/devices/... /features or even club it with cat /proc/cpuinfo if that is what people want -&gt; you can do it anytime anywhere if you retain just the data you need... ;)&lt;/li&gt;&lt;li&gt;No need to store the entire database of features in the infrastructure for ever, we can save memory by making the original array init_data and copying it into a list which is easier to search for the infrastructure..&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Now, this infrastructure can also be readily used for external peripherals outside the chip - like camera sensors, RFBI displays etc.. come to think of this, it kinda looks the way how I2C board_info is handled in some ways.. hmmm...&lt;br /&gt;&lt;br /&gt;Now, only thing I need is get some time to do this, as Kevin&lt;a href="http://marc.info/?l=linux-omap&amp;amp;m=125018651007272&amp;amp;w=2"&gt; seems interested&lt;/a&gt; in the &lt;a href="http://marc.info/?l=linux-omap&amp;amp;m=125017671720718&amp;amp;w=2"&gt;original patch&lt;/a&gt;.. couple of fortnights to go before i get some personal time to hack some *real* code.. ;) but what the heck.. if there is anyone out there who has the time and interest to do this.. go ahead and do it..&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-3353289952612468197?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/mUHJuVhIljI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/3353289952612468197/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=3353289952612468197" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3353289952612468197?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3353289952612468197?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/mUHJuVhIljI/towards-integrated-infrastructure-for.html" title="towards a integrated infrastructure for feature + errata handling in kernel" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/08/towards-integrated-infrastructure-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEARnY5eSp7ImA9WxNTEk8.&quot;"><id>tag:blogger.com,1999:blog-30598440.post-3696749626387822053</id><published>2009-08-13T22:20:00.004-05:00</published><updated>2009-08-13T22:30:47.821-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-13T22:30:47.821-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="simple code tricks" /><title>Replace CAmELcASiNg with lower_casing</title><content type="html">Finally irritated with a bunch of CaMELcASinG, decided to write a small script albeit not too clean or optimized for the job of a search and destroy&lt;br /&gt;Since it is weird to write my own c interpreter to find the right targets to replace, I use output of &lt;a href="http://ctags.sourceforge.net/"&gt;ctags&lt;/a&gt; to generate tags file. if you are using kernel, you could just do a &lt;span style="font-style: italic;"&gt;make tags&lt;/span&gt; to get the same output file.&lt;br /&gt;&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 300px; text-align: left;"&gt;#!/bin/bash&lt;br /&gt;# Silly little script to replace CaMELCaSInG to lower_casing&lt;br /&gt;# Half a zillion thoughts later,&lt;br /&gt;# why not use ctags which has c interpreter already to do&lt;br /&gt;# function identification for us?&lt;br /&gt;if [ ! -r 'tags'  ]; then&lt;br /&gt;echo "Sorry.. no tags file!"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;br /&gt;if [ ! -r "$1" ]; then&lt;br /&gt;echo "I need a directory or a file for replacing.."&lt;br /&gt;exit 2&lt;br /&gt;fi&lt;br /&gt;DIR_FILE=`echo "$1"|sed -e "s/\//\\\//g"`&lt;br /&gt;# tags have the following notation in field 4 (tab seperated)&lt;br /&gt;# e - enum value&lt;br /&gt;# d - define&lt;br /&gt;# f - function&lt;br /&gt;# F - File itself&lt;br /&gt;# g - enum type&lt;br /&gt;# m - structure parameter&lt;br /&gt;# p - prototype&lt;br /&gt;# r - kconfig define(refered)&lt;br /&gt;# s - structure type&lt;br /&gt;# t - typedefined variable&lt;br /&gt;# v - variable&lt;br /&gt;# x - extern defined variable&lt;br /&gt;# we can choose to have different rules:&lt;br /&gt;# rename rule i am going to follow:&lt;br /&gt;# Any define -&gt; convert camelcase to lower_case_define-&gt;convert to caps&lt;br /&gt;# Any function, enum,struct param,prototype,struct type, typedef var,extern def -&gt;&lt;br /&gt;# camel_case to lower_case_define&lt;br /&gt;# All files will be made unix file only (no point in dos + unix mixtures..)&lt;br /&gt;&lt;br /&gt;#**&lt;br /&gt;#* @brief - changes camel casing to ones with smaller case&lt;br /&gt;#*&lt;br /&gt;camel_to_norm(){&lt;br /&gt;echo $1|tr '\_' '+' |sed 's/\([A-Z]\)/_\l\1/g' | sed 's/^_\([a-z]\)/\1/g' |\&lt;br /&gt; tr 'A-Z' 'a-z' | sed "s/\([a-z][a-z]\+\)/-\1-/g"|tr -d '_'|\&lt;br /&gt; tr '-' '_'|sed -e "s/_$//g"|sed -e "s/^_//g" | tr '+' '_' |\&lt;br /&gt; sed -e "s/__*/_/g"|sed -e "s/_\([0-9][0-9]*\)/\1/g"|\&lt;br /&gt; sed -e "s/^[a-z]\_\([a-z][a-z]\+\)/\1/g"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#**&lt;br /&gt;#* @brief - all_to_upper - Moves all to upper case&lt;br /&gt;#*&lt;br /&gt;all_to_upper(){&lt;br /&gt;camel_to_norm $1 | tr 'a-z' 'A-Z'&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#**&lt;br /&gt;#* @brief generate_list - will generate list of symbols from tags matching&lt;br /&gt;#*&lt;br /&gt;generate_list() {&lt;br /&gt;cut -d' ' -f1,4 $TMPFILE|grep "$1\$"|cut -d' ' -f1|sort|uniq&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#**&lt;br /&gt;#* @brief find_files - finds list of files from tag file matching usage&lt;br /&gt;#*&lt;br /&gt;find_files(){&lt;br /&gt;cut -d' ' -f1,2 $TMPFILE|grep "^$1"|cut -d' ' -f2|sort|uniq&lt;br /&gt;}&lt;br /&gt;TMPFILE=/tmp/cleaner.$$.tmp&lt;br /&gt;TMPFILE1=/tmp/cleaner.$$.1.tmp&lt;br /&gt;# grab the output for only the ones we want..&lt;br /&gt;grep  "$DIR_FILE" tags |grep -v "^\!"|sed -e "s/\/\^.*\"/REPLACE_1/g"&gt;$TMPFILE&lt;br /&gt;&lt;br /&gt;replace_pattern(){&lt;br /&gt;echo "=====&gt;Search and replace for pattern $1 with $2"&lt;br /&gt;# Convert the functions back to smaller case and replace them in the files&lt;br /&gt;for token in `generate_list "[$1]"`&lt;br /&gt;do&lt;br /&gt; if [ $2 -eq "1" ]; then&lt;br /&gt;  new=`camel_to_norm $token`&lt;br /&gt; else&lt;br /&gt;  new=`all_to_upper $token`&lt;br /&gt; fi&lt;br /&gt; if [ "$new" != "$token" ]; then&lt;br /&gt;  echo "==&gt;Replacing $token with $low"&lt;br /&gt;  for file in `find_files $low`&lt;br /&gt;  do&lt;br /&gt;   echo "-&gt;replacing $token to $new in file $file"&lt;br /&gt;   cp $file $TMPFILE1&lt;br /&gt;   dos2unix $TMPFILE1&lt;br /&gt;   sed -e "s/\(W*\)$token\(\W*\)/\1$new\2/g" $TMPFILE1&gt;$file&lt;br /&gt;  done&lt;br /&gt; else&lt;br /&gt;  echo "==&gt;not replacing $token"&lt;br /&gt; fi&lt;br /&gt;done&lt;br /&gt;}&lt;br /&gt;echo "================= Replacing Defines ==============="&lt;br /&gt;replace_pattern d 2&lt;br /&gt;echo "================= Replacing Functions ==============="&lt;br /&gt;replace_pattern efgmpstvx 1&lt;br /&gt;rm -f $TMPFILE $TMPFILE1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;usage:&lt;/span&gt;&lt;br /&gt;Replace file_or_directory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note, we could definitely customize this by adding prefix or in cases where code originates from windoze environment, removing dw_ dl_ etc.. that is pretty easy to do once you pick on tags and know what to do for output ;)&lt;directory&gt;&lt;/directory&gt;&lt;div class="blogger-post-footer"&gt;&lt;script src="http://feedjit.com/map/?bc=FFFFFF&amp;amp;tc=494949&amp;amp;brd1=336699&amp;amp;lnk=494949&amp;amp;hc=336699&amp;amp;dot=FF0000" type="text/javascript"&gt;&lt;/script&gt;&lt;noscript&gt;Live feed&lt;/noscript&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-4505383-1";
urchinTracker();
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30598440-3696749626387822053?l=nishanthmenon.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/NishanthTechRambles/~4/AwL2Cxs46dw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nishanthmenon.blogspot.com/feeds/3696749626387822053/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=30598440&amp;postID=3696749626387822053" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3696749626387822053?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/30598440/posts/default/3696749626387822053?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/NishanthTechRambles/~3/AwL2Cxs46dw/replace-camelcasing-with-lowercasing.html" title="Replace CAmELcASiNg with lower_casing" /><author><name>Nishanth Menon</name><uri>http://www.blogger.com/profile/01095018446163595754</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="15" height="32" src="http://4.bp.blogspot.com/_RmxHIOoZjLU/SwXxYXizgmI/AAAAAAAAA2s/8xZQ7F-RtsM/S220/IMG_9741.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://nishanthmenon.blogspot.com/2009/08/replace-camelcasing-with-lowercasing.html</feedburner:origLink></entry></feed>

