tag:blogger.com,1999:blog-305984402024-03-05T10:41:18.581-06:00Nishanth' tech ramblesLinux, U-Boot, OMAP, opensource, scripting, technology news are my interest areas.Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.comBlogger173125tag:blogger.com,1999:blog-30598440.post-49698916622885831982015-10-18T17:34:00.001-05:002015-10-18T17:34:10.521-05:00ubuntu14.04 Android build environment in Debian JessieWhile attempting to build up my 1 year old android beagleboard-x15 image back again to verify functionality, well.. I had left ubuntu behind and had moved on to debian. Unfortunately, I dont seem to have the patience to get debian android build stable... so chroot of ubuntu 14.04 and build of android in that environment.<br />
<br />
sudo apt-get install schroot dchroot debootstrap<br />
sudo vim /etc/schroot/schroot.conf<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><i>[android]</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>description=Ubuntu Trusty Android build env</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>location=/opt/android-build/</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>priority=3</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>users=USER #update with your user</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>groups=GROUP #update with your user group</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>root-groups=root</i><br />
<br />
<br />
sudo mkdir -p /opt/android-build<br />
sudo debootstrap --arch amd64 trusty /opt/android-build http://archive.ubuntu.com/ubuntu/<br />
<br />
sudo vim /opt/android-build/etc/apt/sources.list<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><i>###### Ubuntu Main Repos</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>deb http://us.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse </i><br />
<i><br /></i>
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>###### Ubuntu Update Repos</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>deb http://us.archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse </i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse </i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span>deb http://us.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse </i><br />
<br />
<br />
sudo vim /etc/fstab<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><i> proc /opt/android-build/proc proc defaults 0 0</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span> /dev/ /opt/android-build/dev none rbind 0 0</i><br />
<i><span class="Apple-tab-span" style="white-space: pre;"> </span> sysfs /opt/android-build/sys sysfs defaults 0 0</i><br />
<br />
<br />
sudo cp /etc/resolv.conf /opt/android-build/etc/<br />
sudo mount -a<br />
<br />
sudo cp /etc/sudoers /opt/android-build/etc/<br />
sudo cp /etc/passwd /opt/android-build/etc/<br />
sudo sed 's/\([^:]*\):[^:]*:/\1:*:/' /etc/shadow | sudo tee /opt/android-build/etc/shadow<br />
sudo cp /etc/group /opt/android-build/etc/<br />
sudo cp /etc/hosts /opt/android-build/etc/<br />
sudo mkdir /opt/android-build/home/$(USER); sudo chown $(USER).$(USER) /opt/android-build/home/$(USER)<br />
<br />
sudo chroot /opt/android-build/<br />
<b> apt-get update</b><br />
<b> apt-get --no-install-recommends install wget debconf devscripts gnupg vim nano ctags cscope gcc-arm-linux-gnueabi bc linux-generic #For package-building</b><br />
<b> apt-get update #clean the gpg error message</b><br />
<b> apt-get install locales dialog #If you don't talk en_US</b><br />
<b> locale-gen en_US.UTF-8 # or your preferred locale</b><br />
<b> tzselect; TZ='Continent/Country'; export TZ #Configure and use our local time instead of UTC; save in .profile</b><br />
<b> dpkg --add-architecture i386</b><br />
<b> wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -;sudo rm -rvf /var/lib/apt/lists/* -vf;sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get autoclean -y && sudo apt-get autoremove -y && sudo apt-get --purge --reinstall -y install flashplugin-installer;sudo apt-get update;dpkg --list | grep linux-image|grep -v 'Generic'|head --lines=-3|sed -e 's/\s\s*/ /g'|grep -v `uname -r`|cut -d ' ' -f2|xargs sudo apt-get purge -y</b><br />
<b> apt-get purge openjdk-\* icedtea-\* icedtea6-\* </b><br />
<b> apt-get install git ccache automake lzop bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 g++-multilib python-networkx libxml2-utils bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev squashfs-tools pngcrush schedtool dpkg-dev liblz4-tool make optipng</b><br />
<b> apt-get install openjdk-7-jdk</b><br />
<b> exit</b><br />
<br />
dchroot -c android -d<br />
cd ~<br />
mkdir ~/bin ; curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo<br />
<br />
<br />
Building for BeagleBoard-X15 (still to be completed)<br />
Lollipop: mkdir ~/android-lollipop-build;cd ~/android-lollipop-build;repo init -u https://github.com/nmenon/aosp-manifest-x.git -b x15-loli-dev<br />
Marshmallow: mkdir ~/android-marshmallow-build;cd ~/android-marshmallow-build;repo init -u https://github.com/nmenon/aosp-manifest-x.git -b x15-marshy-dev<br />
<br />
repo sync<br />
<br />
<br />
<br />
<br />
<br /><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-65044029334854733732013-04-26T17:11:00.000-05:002013-04-26T17:42:07.908-05:00Quick and Dirty userspace testing of regulator with virtual consumerWriting a driver for a new regulator is usually fun, until you need to test the darned thing. Many of the users of the regulator is probably not yet ready in an development environment and need to test cant wait.
<br>
I had recently a similar situation and found <b>CONFIG_REGULATOR_VIRTUAL_CONSUMER</b>
<br>
You'd probably register and provide and regulator supply, but without a driver using it in a controlled environment (read shell script or so), it is hard to poke holes completely into your driver.
<br><br>
Steps are rather simple.
<br>
<i>Assumption</i> - you already have a regulator registered in the system and you are aware of the regulator name - You can also figure out it's name by the following (an example from 3.9-rc8 on Beagle-XM):
<br>
<pre class="alt2" dir="ltr" style="border: 1px inset; height: 300px; margin: 0px; overflow: auto; padding: 6px; text-align: left; width: 640px;">
# head /sys/class/regulator/*/name
==> /sys/class/regulator/regulator.0/name <==
regulator-dummy
==> /sys/class/regulator/regulator.1/name <==
VDD1
==> /sys/class/regulator/regulator.2/name <==
VDAC
==> /sys/class/regulator/regulator.3/name <==
VPLL2
==> /sys/class/regulator/regulator.4/name <==
VMMC1
==> /sys/class/regulator/regulator.5/name <==
VUSB1V5
==> /sys/class/regulator/regulator.6/name <==
VUSB1V8
==> /sys/class/regulator/regulator.7/name <==
VUSB3V1
==> <b>/sys/class/regulator/regulator.8/</b>name <==
<b>VSIM</b>
</pre>
Assume for the moment, we'd like to test VSIM. Fastest is often the simplest for testing needs. We introduce an dummy device which virtual-consumer picks up and exposes sysfs nodes- late init is usually an handy place to plug this dummy device injector ;)
<br>
<pre class="alt2" dir="ltr" style="border: 1px inset; height: 125px; margin: 0px; overflow: auto; padding: 6px; text-align: left; width: 640px;">
char name[] = "<b>VSIM</b>";
struct platform_device_info devinfo = {
.name = "reg-virt-consumer",
.id = <b>0</b>, /* if registering more than a single regulator, increment the ID */
.data = name,
.size_data = sizeof(name),
};
platform_device_register_full(&devinfo);
</pre>
<i>NOTE</i>: do this for every "virtual consumer" you need to add for testing<br>
Bingo, job done. Now you should be able to see the virtual consumer (the .0 matches to the id we give)
<pre class="alt2" dir="ltr" style="border: 1px inset; height: 235px; margin: 0px; overflow: auto; padding: 6px; text-align: left; width: 640px;">
/ # ls -al /sys/devices/platform/reg-virt-consumer.<b>0</b>
total 0
drwxr-xr-x 3 root root 0 Dec 31 20:30 .
drwxr-xr-x 17 root root 0 Dec 31 20:30 ..
lrwxrwxrwx 1 root root 0 Dec 31 23:15 driver -> ../../../bus/platform/drivers/reg-virt-consumer
-rw-rw-rw- 1 root root 4096 Dec 31 23:15 max_microamps
-rw-rw-rw- 1 root root 4096 Dec 31 20:30 max_microvolts
-rw-rw-rw- 1 root root 4096 Dec 31 23:15 min_microamps
-rw-rw-rw- 1 root root 4096 Dec 31 20:30 min_microvolts
-r--r--r-- 1 root root 4096 Dec 31 23:15 modalias
-rw-rw-rw- 1 root root 4096 Dec 31 23:15 mode
drwxr-xr-x 2 root root 0 Dec 31 23:15 power
lrwxrwxrwx 1 root root 0 Dec 31 23:15 subsystem -> ../../../bus/platform
-rw-r--r-- 1 root root 4096 Dec 31 23:15 uevent
/ #
</pre>
Here is a quick test:
<pre class="alt2" dir="ltr" style="border: 1px inset; height: 135px; margin: 0px; overflow: auto; padding: 6px; text-align: left; width: 640px;">
REG=<b>/sys/class/regulator/regulator.8</b>
CONS=<b>/sys/devices/platform/reg-virt-consumer.0</b>
for V in 1000000 1200000
do
echo -n "$V">$CONS/min_microvolts
echo -n "$V">$CONS/max_microvolts
echo "Tried $V, Voltage =" `cat $REG/microvolts`
done
</pre>
<i>Now the homework</i>: do this using device tree :)
<br>
<i>More info</i>: Documentation/ABI/testing/sysfs-class-regulator and <a href="https://www.kernel.org/doc/htmldocs/regulator.htm">https://www.kernel.org/doc/htmldocs/regulator.html</a> - Happy hacking..
<br>
<i>Caveats</i>: posting upstream patches making this standard user-space control for regulators is usually frowned upon.<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com3tag:blogger.com,1999:blog-30598440.post-80151036418825863782012-04-03T17:28:00.001-05:002012-04-03T17:30:04.972-05:00Linux<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/yVpbFMhOAwE" width="360"></iframe><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-38945146415233781922012-03-03T08:56:00.001-06:002012-03-03T09:11:54.109-06:00*Browser-based circuit simulator boasts a...<div style="border: solid 1px #dfdfdf; color: #686868; font: 13px Arial;">
<div style="background-color: white; padding: 20px;">
<table cellpadding="0" cellspacing="0"><tbody>
<tr><td style="padding-right: 15px; vertical-align: top;"></td><td style="color: #333333; font: 13px Arial; vertical-align: top; width: 578px;"><div style="padding-bottom: 10px;">
<b>Browser-based circuit simulator boasts a mountain of features</b><br />
<br />
You can build your schematic in the editor mode, then switch over to the simulator to get data back from the components. In that mode, your cursor becomes a probe, and clicking on different parts of the circuit will return the calculated input and output voltages for that component. But wait, there's more. It's got time and frequency simulation in addition to the voltage simulator. This lets you look at waveforms fed through analog filters, or timing data like in the 555 timer circuit above.<br />
<br />
<a class="ot-anchor" href="http://hackaday.com/2012/03/02/browser-based-circuit-simulator-boasts-a-mountain-of-features/">http://hackada<wbr></wbr>y.com/2012/03/02/bro<wbr></wbr>wser-based-circuit-s<wbr></wbr>imulator-boasts-a-mo<wbr></wbr>untain-of-features/</a></div>
<div style="border-left: 2px solid #EAEAEA; margin-top: 10px; padding-left: 10px;">
<span style="margin-right: 5px;"></span><br />
<div style="font-weight: bold; margin-bottom: 4px;">
<span style="margin-right: 5px;"><a href="https://plus.google.com/_/notifications/ngemlink?&emid=CLjN37j-yq4CFcF83godbmsAAA&path=%2F112464029509057661457%2Fposts%2F8aHBemmwzxQ%3Fgpinv%3DAMIXal_JmyJPcoWIbBuoVyNdkUMI7txvgVrKZZq143C-HwBG63DxsxWlH7c76_N2D1ebaU3chM6buj4bLwOstm2SRj7GNnxkjSJ_zIwbX4wXTIyxnkZlxmM%26hl%3Den&dt=1330786608871" style="text-decoration: none;">Getting Started with CircuitLab</a></span></div>
<span style="margin-right: 5px;"><a href="https://plus.google.com/_/notifications/ngemlink?&emid=CLjN37j-yq4CFcF83godbmsAAA&path=%2F112464029509057661457%2Fposts%2F8aHBemmwzxQ%3Fgpinv%3DAMIXal_JmyJPcoWIbBuoVyNdkUMI7txvgVrKZZq143C-HwBG63DxsxWlH7c76_N2D1ebaU3chM6buj4bLwOstm2SRj7GNnxkjSJ_zIwbX4wXTIyxnkZlxmM%26hl%3Den&dt=1330786608871"><img border="0" src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=https://ytimg.googleusercontent.com/vi/f52GV1IpwVk/hqdefault.jpg&container=focus&gadget=a&rewriteMime=image/*&refresh=31536000&resize_h=195" style="display: block; height: 195px; width: 312px;" /></a></span><br />
<div style="margin: 5px 0 12px 0;">
<span style="margin-right: 5px;"><a href="http://www.youtube.com/v/f52GV1IpwVk&hl=en&fs=1&autoplay=1" style="text-decoration: none;">youtube.com</a> - www.circuitlab.com CircuitLab is a suite of web-based electronics design tools, including the first web-based circuit simulator with the power and ...</span></div>
<span style="margin-right: 5px;">
</span></div>
</td></tr>
</tbody></table>
</div>
<div style="background-color: whitesmoke; border-top: solid 1px #dfdfdf; padding: 0 20px;">
<table cellpadding="0" cellspacing="0" style="height: 50px;"><tbody>
<tr><td style="color: #636363; font: 11px Arial; line-height: 120%; vertical-align: middle; width: 100%;"><br /></td><td><img src="https://ssl.gstatic.com/s2/oz/images/notifications/logo/google-plus-6617a72bb36cc548861652780c9e6ff1.png" /></td></tr>
</tbody></table>
</div>
</div><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com1tag:blogger.com,1999:blog-30598440.post-27747018235728686712012-02-25T10:11:00.001-06:002012-02-25T20:25:40.504-06:00Measuring boot voltage on PandaBoard ES - part 1<u><span style="font-size: small;"><b>What am I trying to do?</b></span></u><br />
<br />
<a href="http://pandaboard.org/content/pandaboard-es" target="_blank">Pandaboard ES</a> <a href="http://www.ti.com/general/docs/wtbu/wtbuproductcontent.tsp?templateId=6123&navigationId=12843&contentId=53243" target="_blank">OMAP4460</a>'s main voltage rails are vdd_mpu, vdd_core, vdd_iva.<br />
<br />
MPU and IVA domains have dependency on Core (obvious since Core drives the common bus on OMAP called the L3 bus). Our intent here is to measure voltages of these rails and ensure they are the right voltage levels and in the right sequence as <a href="https://blueprints.launchpad.net/linaro-ubuntu/+spec/o-uboot-spl-support-omap4" target="_blank">U-boot SPL</a> comes up.<br />
<br />
<b>Stage #1 - knowing what to measure</b><br />
This is pretty easy on most other boards, but on PandaBoard ES, things are a mite more interesting. Unlike most other OMAP3 and OMAP4430 boards, OMAP4460 on Pandaboard ES is powered by 2 PMICs!. A TPS62361 drives it's vdd_mpu rail while TWL6030 supplies the vdd_iva and vdd_core rails.<br />
<br />
lets look at each one in detail: (the following figures are excerpts from <a href="http://pandaboard.org/sites/default/files/board_reference/pandaboard-es-b/panda-es-b-schematic.pdf" target="_blank">schematics</a> of PandBoard ES)<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfoY_Ao_QA0xLVuAES2gj8lCBx9a5CnuUIsJdrObAjEeO-Ld3P0gSYJ5dLcRyvxCeNEP3i-rurgkmVSEwakQO1H2p04i5jHx3fNPR91Tc6GLrQEIuq5kvwJS17RbU43UCQ8TE/s1600/vdd_mpu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfoY_Ao_QA0xLVuAES2gj8lCBx9a5CnuUIsJdrObAjEeO-Ld3P0gSYJ5dLcRyvxCeNEP3i-rurgkmVSEwakQO1H2p04i5jHx3fNPR91Tc6GLrQEIuq5kvwJS17RbU43UCQ8TE/s320/vdd_mpu.jpg" width="320" /></a></div>
As seen in the schematics, TPS62361 is a slightly different beast to deal with. Three paramaters play an important role for the voltage to appear in the inductor at L23.<br />
<ol>
<li> is "EN" (signal PHO_SYSEN)</li>
<li>The internal registers used to select the voltage is selected by VSEL0 and VSEL1 (only VSEL0 is controlled by OMAP over the signal H_GPIO_WK_7) - this basically means that VSEL0 allows the selection of 2 registers - SET0 or SET1 register inside TPS (SET0 default is <1V, which SET1 defaults approx to 1.4ish volt - refer to latest dataasheet for accurate spec).</li>
<li>and finally the voltage itself which is send from OMAP to TPS over I2C (SRI2C for OMAP).</li>
</ol>
This chip is like any other chip - Programming sequence in a nutshell is simple:<br />
ensure that EN pin is active and VSEL0 is set properly, program the voltage and bingo, the voltage appears on L23 inductor. A small point to remember is that EN pin actually is driven by SYSEN line of TWL6030. SYSEN is asserted when OMAP4460's PWRREQ is asserted - so this allows for TPS to hit 0V when OMAP4460's "OFF" mode is achieved. Kinda wicked if you saw this the first time coming from simple OMAP <-> PMIC story..<br />
<br />
Now to vdd_iva and vdd_core:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPCRhxnJVPAWZUXy1LqZDCFuWGmkBMxHq6v82UarGpmNL8Er65Ix0-45D2ZDXKw4JygrjKAuvTMwQTYqcezIlmlSZfHn5A6Zv6247gLpJrhCTHUv7urwFHCZ6tBagg0p8trZM/s1600/VCORE2-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="109" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPCRhxnJVPAWZUXy1LqZDCFuWGmkBMxHq6v82UarGpmNL8Er65Ix0-45D2ZDXKw4JygrjKAuvTMwQTYqcezIlmlSZfHn5A6Zv6247gLpJrhCTHUv7urwFHCZ6tBagg0p8trZM/s320/VCORE2-3.jpg" width="320" /></a></div>
<br />
Good news: this side of the story is rather simple :). Since VDD_MPU is now driven by TPS, TWL6030 VCORE1 supplies vdd_Core (VDD_VCORE3 in the schematics) and VCORE2 supplies vdd_IVA (VDD_VCORE2 in the schematics) - without going into much details, it is just programming the voltage register over SRI2C.<br />
<br />
<u><i>Bottom line:</i></u><br />
vdd_MPU = L23<br />
vdd_Core = L14<br />
vdd_IVA = L16<br />
<br />
Remember typically the inductors when probed show noisy signal towards PMIC and clean signal towards OMAP (duh.. that is exactly what an inductor is supposed to do in the first place) - so use it to figure out which side of the inductor to solder the wire on..<br />
<br />
<u><i>umm... where are the inductors on the board??</i></u><br />
A <a href="http://www.pandaboard.org/pbirclogs/index.php?date=2012-02-21#T16:42:01%20" target="_blank">long story</a> short download the <a href="http://pandaboard.org/sites/default/files/board_reference/pandaboard-es-b/panda-es-b-manual.pdf" target="_blank">user manual</a> and look it up. I was told to RTFM after a failed experiment with gerbv and following which I ended up getting access to a windows machine and installing allegro - converting the brd file to search-able PDFs.<br />
<br />
<b>Stage #2 - An soldering strategy</b><br />
Deciding to solder is usually easy, but the hard part is looking at the components. Disclaimer: Am just a code junkie, so many of my personal thoughts on soldering may be outright wrong ;).. Read at your own risk..<br />
<br />
If the wire is too thick, e.g. a 22guage on a tiny resistor puts a lot of pressure on the poor little thing and will break off eventually. if too long it picks up all kind of noise distorting the measurements.<br />
<br />
Now, I have a <a href="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CEMQFjAA&url=http%3A%2F%2Fwww.sparkfun.com%2Fproducts%2F10388&ei=5QNJT5v0H4SKsAK6nPTqCA&usg=AFQjCNGMt09qQBEkLKRf7hy0fZIKjDXbVg" target="_blank">DSO Quad</a> (handy little oscilloscope that could be praised in it's own right). Anyways the connectors are standard passive scope connector like + "clumsy me" factor - I always tend to get something caught in power wire or in the scope cable or so and.....<br />
<br />
Found some of PCB board headers I had lying around and decided to stick them with super glue to the PCB. This lets me connector jumpers that I can remove + add more wires in the future as I need, once I am done probing, I wont have wires waving in the air looking for the closest ground source either ;) - of course stick it someplace close to a ground point..<br />
<br />
[Update: 2012025:1931: David Anders pointed that the entire steps have been simplified <a href="http://www.elinux.org/PandaBoard_Power_Measurements" target="_blank">here</a> I still think this series is useful as it explains the fundamentals of the same.]<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwECdjVTgshPhMkZHQb7JrkCGKqLnDVw-bcLOzNUHPZFw15Iea9Q7loq5T0ZcmdA5t-fqG7hKU4uMCwiPVEoVtDxmyJnzquecyy8Zph26R7YtLNLQm6H-QYSLHXVLsz_eqdJQ/s1600/mpu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwECdjVTgshPhMkZHQb7JrkCGKqLnDVw-bcLOzNUHPZFw15Iea9Q7loq5T0ZcmdA5t-fqG7hKU4uMCwiPVEoVtDxmyJnzquecyy8Zph26R7YtLNLQm6H-QYSLHXVLsz_eqdJQ/s320/mpu.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPJut-SfzM3eit1JjJf7ucwoXDkkfZoYCLHlKfl66ogAC6dx-RhJAaDaCM0WA08MS5pQRTGx__r1K6fVX4441w6kbAQ2VHwiooCvzzZ03Kv3B8cM1cpwoSuz2zZmhS8LVV2uI/s1600/iva_core.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPJut-SfzM3eit1JjJf7ucwoXDkkfZoYCLHlKfl66ogAC6dx-RhJAaDaCM0WA08MS5pQRTGx__r1K6fVX4441w6kbAQ2VHwiooCvzzZ03Kv3B8cM1cpwoSuz2zZmhS8LVV2uI/s320/iva_core.jpg" width="320" /></a></div>
<br />
<br />
<br /><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-33761289333531206652012-01-13T06:59:00.001-06:002012-01-14T09:57:42.600-06:00So we hit the next gen<div><p><a href="http://www.engadget.com/2012/01/12/ti-omap-5-exclusive-demo-laptops-ultrabooks-ces-2012-video/">Texas Instruments demos first OMAP 5, Android 4.0-based reference design, promises it in laptops next year (video) -- </a><a href="http://www.engadget.com/2012/01/12/ti-omap-5-exclusive-demo-laptops-ultrabooks-ces-2012-video/">Engadget</a></p>
</div><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-8027094692773035462011-02-03T14:45:00.006-06:002011-02-03T15:34:49.846-06:00firewall on N900Grr my first post of this year and I plan to start "I confess: I am a paranoid". what the heck, lets go with it:<br /><br />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..<br /><br />Maemo <a href="http://wiki.maemo.org/index.php?title=User_FAQ&section=56">wiki</a>(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).<br /><br />Since even "<a href="http://www.linuxjournal.com/article/10767">ET call home</a>" 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 <a href="http://gufw.tuxfamily.org/">gufw</a><br />yes OR no.<br /><br />Since I am never the first to look for something, bit of googling later, found <a href="http://electron.mit.edu/%7Egsteele/firewall/">this</a><br />few customizations for this script I setup the following with the <a href="http://wiki.maemo.org/Kernel_Power">N900 power kernel</a>:<br />Note: for what ever reasons, N900 default kernel on PR1.3 does'nt come with these modules in /lib/modules/`uname -a` :(<br /><br /><span style="font-weight: bold;">~/bin/fire:</span><br /><pre class="alt2" dir="ltr" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 560px; height: 300px; text-align: left;"><br />#!/bin/bash<br /><br />set -x<br /><br /># Load needed kernel modules<br /><br />modprobe ipt_MASQUERADE<br />modprobe ipt_NETMAP<br />modprobe ipt_REDIRECT<br />modprobe ip_tables<br />modprobe ipt_REJECT<br />modprobe iptable_filter<br />modprobe iptable_mangle<br />modprobe iptable_nat<br /><br /><br /># Clear any existing firewall stuff before we start<br /># TODO: really not secure thingy- might wanna do REJECT rules before this..<br />iptables --flush<br /><br /># As the default policies, drop all incoming traffic but allow all<br /># outgoing traffic. This will allow us to make outgoing connections<br /># from any port, but will only allow incoming connections on the ports<br /># specified below.<br /><br />iptables --policy INPUT DROP<br />iptables --policy OUTPUT ACCEPT<br /><br /># Allow all incoming traffic if it is coming from the local loopback device<br />iptables -A INPUT -i lo -j ACCEPT<br /><br /># Related and established connections: see<br /># http://www.sns.ias.edu/~jns/security/iptables/iptables_conntrack.html<br />#<br /># Accept all incoming traffic associated with an established<br /># connection, or a "related" connection<br />#<br /># This will automatically handle incoming UDP traffic associated with<br /># DNS queries, as well as PASSIVE mode FTP (provided the<br /># ip_conntrack_ftp module is loaded)<br /><br />iptables -A INPUT -i phonet0 -m state --state ESTABLISHED,RELATED -j ACCEPT<br />iptables -A INPUT -i wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT<br />iptables -A INPUT -i wmaster0 -m state --state ESTABLISHED,RELATED -j ACCEPT<br /><br /># Allow connections on selected ports to the firewalled computer:<br /><br /># Logging: first, eliminate any packets that are going to broadcast<br /># addresses, since they will overwhelm the log files if there are any<br /># windows computers on our network. Also, don't log pesky multicast<br /># packets that we block.<br /><br />iptables -A INPUT -d 255.255.255.255/0.0.0.255 -j DROP<br />iptables -A INPUT -d 224.0.0.1 -j DROP<br /><br /># Log all other blocked packets, and change DROP to REJECT to be<br /># polite and allow people connecting to a blocked port to receive a<br /># "connection refused" message instead of timing out after 30 seconds.<br /><br />#iptables -A INPUT -j LOG<br />iptables -A INPUT -j REJECT<br /><br /></pre><br /><br />And the reverse: <span style="font-weight: bold;">~/bin/nofire</span><br /><pre class="alt2" dir="ltr" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 560px; height: 200px; text-align: left;"><br />#!/bin/bash<br />set -x<br /><br /># Clear any existing firewall stuff before we start<br /><br />iptables --flush<br /><br /># A dumb set of steps - just being explicit here..<br />iptables --policy INPUT ACCEPT<br />iptables --policy OUTPUT ACCEPT<br /></pre><br /><br />I then added <a href="http://nokia-n900.com/desktop-command-execution-widget-in-detail/">desktop command execution widget</a> to basically use call firewall ON and OFF with a dumb command of <span style="font-style: italic;">/bin/bash -c "/usr/bin/rootsh /home/user/bin/fire"</span> for firewall on and <span style="font-style: italic;">/bin/bash -c "/usr/bin/rootsh /home/user/bin/nofire"</span> for no firewall - activated only if I click on it.<br /><br />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..<br /><br />Ofcourse, the only pet peeve I have is <a href="http://talk.maemo.org/showthread.php?p=870831">this</a> - I, for some reason cannot use my camera with power kernel. mebbe some day will have time to look at all things I want..<br /><br />[Late realization of searching for N900 ufw on google gave me <a href="http://talk.maemo.org/showthread.php?t=66045">this</a>]<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-18269499579603622082010-10-16T10:30:00.002-05:002010-10-16T10:49:17.337-05:00meego kernel on pandaboard?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 <a href="http://pandaboard.org">PandaBoard</a> that I <a href="http://lists.meego.com/pipermail/meego-kernel/2010-October/000577.html">requested MeeGo kernel</a> maintainers to pick up yesterday. Now to wait and see if they actually get accepted. Next steps would be tough:<br /><br />DSS - omapfb enablement<br />EHCI - keyboard and mouse<br /><br />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:<br /><blockquote>DID YOU CHECK YOUR PATCH STATUS: xyz </blockquote><span style="display: block;" id="formatbar_Buttons"><span class=" on down" style="display: block;" id="formatbar_CreateLink" title="Link">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<img src="img/blank.gif" alt="Link" class="gl_link" border="0" /> 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 -> 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* ;)..<br /><br />Felipe B's <a href="http://blog.felipebalbi.com/2010/09/22/working-with-open-source-communities/">post</a> 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 <a href="http://omappedia.org/wiki/Releasing_to_Linux_kernel_using_patches_and_emails">how to post a patch</a> ;)<br /><br /><br /></span></span><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com1tag:blogger.com,1999:blog-30598440.post-79921675822669411272010-10-14T13:41:00.002-05:002010-10-14T13:47:10.584-05:00Tired of ttySx and ttyOxRecently 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<br />In my busybox /etc/init.d/rcS file:<br /><pre class="alt2" dir="ltr" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 300px; text-align: left;"><br />proc=`mount|grep "proc"`<br />if [ -z "proc" ]; then<br /> mount -t procfs none /proc<br />fi <br />if [ -f /proc/cmdline ]; then<br /> # grab console from cmdline and use it..<br /> tty=`cat /proc/cmdline|sed -e "s/ /\n/g"|grep console|cut -d '=' -f2|cut -d ',' -f1`<br /> if [ -z "tty" ]; then<br /> echo `cat /proc/cmdline` "does'nt have console?"<br /> else<br /> # remove my previous one if it exists<br /> rm -f /dev/tty-bd<br /> ln -s /dev/$tty /dev/tty-bd<br /> echo "/dev/$tty linked to /dev/tty-bd - using as console"<br /> fi<br />else<br /> echo "cmdline not found - no console?"<br />fi<br /></pre><br />In my inittab:<br /><pre class="alt2" dir="ltr" style="border: 1px inset; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 40px; text-align: left;"><br />tty-bd::askfirst:-/bin/sh<br /></pre><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com1tag:blogger.com,1999:blog-30598440.post-85386913284552702662010-09-29T11:36:00.005-05:002010-10-01T03:06:26.826-05:00PandaBoard un-veiled: get even more power with dual core ARM cortex A9 OMAP4!<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.omappedia.org/images/5/54/PandaBoard_Setup.png"><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" /></a>This year seems to be the year of the hacker community :) TI opened <a href="http://pandaboard.org/">PandaBoard </a>for early adopters today :).. Good details on PandaBoard <a href="http://www.omappedia.org/wiki/PandaBoard">here</a>. The usual goodies <a href="http://pandaboard.org/sites/default/files/board_reference/EA1/750-2152-001-SCH_REVEA1.pdf">schematics</a> and <a href="http://pandaboard.org/sites/default/files/board_reference/EA1/Panda_Board_Spec_REVEA1_04.pdf">userguide</a> etc are already up as well.. Some of the stuff that impressed me:<br /><ul><li>HDMI AND DVI options</li><li>HSUSB hub and Ethernet yaay..</li><li>Serial port is a decent serial port and no weird wiring needed ;)</li><li>Connectors pin compatible to <a href="http://beagleboard.org/">beagle</a> and xm.. :)</li><li>Did I forget to say you have 1271 onboard wlan??<br /></li></ul>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 <a href="http://meego.com/">MeeGo</a> up and running as well. Supported in mainline kernel and mainline u-boot as well.. :) fun time ahead with multi core processing ;)<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-36352913544986654522010-09-29T10:24:00.003-05:002010-09-29T11:52:26.738-05:00my kernel does'nt boot: the magic of EARLY_PRINTKI am subscribed to TI's <a href="http://e2e.ti.com/">e2e</a> portal and this <a href="http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/p/66406/240049.aspx#240049">post</a> 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:<br /><blockquote>## Booting kernel from Legacy Image at c0700000 ...<br /> Image Name: Linux-2.6.32-rc6<br /> Image Type: ARM Linux Kernel Image (uncompressed)<br /> Data Size: 1939152 Bytes = 1.8 MB<br /> Load Address: c0008000<br /> Entry Point: c0008000<br /> Verifying Checksum ... OK<br /> Loading Kernel Image ... OK<br />OK<br /><br />Starting kernel ...</blockquote>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!<br /><br /><span style="font-weight: bold;">So the first question: why the kernel silence?</span><br />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..<br /><br /><span style="font-weight: bold;">Now the solution: EARLY_PRINTK</span><br />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 <a href="http://www.arm.linux.org.uk/developer/booting.php#2">boot requirements</a> 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 <a href="http://cateee.net/lkddb/web-lkddb/EARLY_PRINTK.html">many platforms </a>that use this. How do we use this? two steps:<br />a) Build a kernel with EARLY PRINTK<br />b) provide earlyprintk as bootargs to actually get a more detailed log:<br /><br /><span style="font-style: italic;">Step a) building kernel with EARLY_PRINTK</span><br />build with your default configuration of your choice, and then enable CONFIG_DEBUG_LL and CONFIG_EARLY_PRINTK in your kernel hacking options:<br /><br /><blockquote>Kernel low-level debugging functions (DEBUG_LL) [N/y/?] (NEW) y<br />Early printk (EARLY_PRINTK) [N/y/?] (NEW) y<br />Kernel low-level debugging via EmbeddedICE DCC channel (DEBUG_ICEDCC) [N/y/?] (NEW) n</blockquote><br /><br />and build your uImage, zImage etc..<br /><br /><span style="font-style: italic;">Step b) add earlyprintk to your bootargs</span><br />it is as simple as that - just add the word earlyprintk to the bootargs<br />example on u-boot.:<br /><blockquote>setenv bootargs console=ttyS0,115200n8 root=/dev/mmcblk0p2 rootdelay=2 init=/bin/ash</blockquote><br />becomes:<br /><blockquote>setenv bootargs console=ttyS0,115200n8 root=/dev/mmcblk0p2 rootdelay=2 init=/bin/ash earlyprintk</blockquote><br /><br />and we are done, bootup and see detailed logs now...<br /><br /><span style="font-weight: bold;">Sidenote:</span> 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..<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-65121572794962930022010-09-22T12:37:00.001-05:002010-09-22T12:39:43.648-05:00linux on C64 DSP!Thanks to rkw, heard of this: <a href="http://linux-c6x.org/wiki/index.php/Main_Page">http://linux-c6x.org/wiki/index.php/Main_Page</a> 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 <a href="http://beagleboard.org">beagleboard</a>! I cant think why not.. ;)<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com4tag:blogger.com,1999:blog-30598440.post-92126912345662096992010-09-15T15:53:00.004-05:002010-09-15T19:38:16.255-05:00MeeGo diary notes: Packaging the Das U-bootMy Odyssey into MeeGo packaging continues today with U-boot packaging.<br /><br /><span style="font-weight: bold;">Decision on the source</span><br />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 <a href="http://sakoman.com/">sakoman</a> and rest of the u-boot community have done a great job in making omap3 and omap4 support available in <a href="http://git.denx.de/?p=u-boot.git;a=summary">Mainline u-boot</a>. And yep, it does have PandaBoard and obviously beagleboard support as well.<br /><br /><span style="font-weight: bold;">RPM saga</span><br />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 <a href="http://www.imxdev.org/wiki/index.php?title=I.MX25_PDK_U-boot_SplashScreen">packaging u-boot</a>. But, looking closely I was not too impressed, searching a bit more, hit on the <a href="http://www.openmamba.org/">openmamba project</a> and the excellent <a href="http://www.openmamba.org/distribution/distromatic.html?tag=devel&pkg=u-boot.source">packaging </a>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 :).<br /><br /><span style="font-weight: bold;">Cross building rpm on a Ubuntu PC</span><br />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 <a href="http://virtualbox.org/">virtualbox</a> and attempting to install <a href="http://software.opensuse.org/113/en">opensuse dvd,</a> I decided that it was a waste of my time. Instead found the following:<br /><blockquote>sudo apt-get install rpm</blockquote>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:<br /><blockquote>rpmbuild -ba u-boot.spec --define="CROSS_COMPILE arm-none-linux-gnueabi-" --define="TARGET_BOARD omap4_panda" --define "TARGET_CPU arm" --target="arm"<br /></blockquote><span style="font-style: italic;">(note: I was still ignorant of OBS realities at this point ;).. Remember, I am a newbie ;) )..</span><br /><br /><span style="font-weight: bold;">MeeGo Packaging gimmicry</span><br />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).<br /><br />So in I go to the good ol' <a href="http://build.meego.com/">build.meego.com</a> following the rules as written in the <a href="http://wiki.meego.com/Build_Infrastructure/Packagers_Developers/WebUI_part_2">wiki</a>, and reading the <a href="http://wiki.meego.com/Packaging/Guidelines">guidelines</a> just to get my bearings right,<br />a) I created my own u-boot project <a href="https://build.meego.com/project/show?project=home%3Anm%3Abootloader%3Au-boot">home:nm:bootloader:u-boot</a> (within my namespace ofcourse as I mentioned <a href="http://nishanthmenon.blogspot.com/2010/09/meego-diary-notes-getting-ready-for.html">yesterday</a>).<br />b) I created my first package inside the project called <a href="https://build.meego.com/package/show?package=u-boot&project=home%3Anm%3Abootloader%3Au-boot">u-boot</a><br />c) Then added a new repository <strong style="font-weight: normal;">u-boot-omap4panda</strong> 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..<br /><span style="font-style: italic;"> note: I should have created the repository as u-boot.. but I guess we can fix it later on..</span><br />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.<br /><br />On #meego-dev Stskeeps (one of the nice, friendly and helpful MeeGo maintainers) introduced me to some ground rules in OBS<br />a) I cannot not define a custom build flag TARGET_BOARD omap4_panda and TARGET_CPU=arm were no no.<br />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!)<br />or in other words,<br /><blockquote>rpmbuild -ba u-boot.spec</blockquote>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 <a href="https://build.meego.com/project/packages?project=devel%3Akernel">kernel package</a> 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.<br /><br /><span style="font-weight: bold;">MeeGo kernel package spec file trick</span><br />Put in a simple terms:<br /><blockquote>obs looks for the spec file with the same name as the obs package name</blockquote>In the case of kernel, the main package <span style="font-style: italic;">kernel</span> is linked to packages <span style="font-style: italic;">kernel-ivi, kernel-mrst, kernel-n900 kernel-netbook</span> etc. . The core package <span style="font-style: italic;">kernel</span> has the spec files:<span style="font-style: italic;"> kernel.spec, kernel-ivi.spec, kernel-mrst.spec, kernel-n900.spec, kernel-netbook.spec</span> along with the same source.<br /><br />when obs build <span style="font-style: italic;">kernel-n900</span> package, it does'nt use <span style="font-style: italic;">kernel.spec</span>, instead uses<span style="font-style: italic;"> kernel-n900.spec</span><br /><br />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.<br /><br />Use a common kernel.spec.in file to put all data you need, each platform specific data is marked with a tag<span style="font-style: italic;"> @@</span>. e.g.:<br /><blockquote>@@N900 Name: kernel-n900</blockquote>which basically means introduce Name:kernel-n900 only for n900 spec file. This is provided to a simple perl script called makespec.pl -> it is a very simple tag replacement logic -> It checks if a file called N900 exists, if yes, it enables all lines marked with @N900<br /><br />all this is wrapped in a Makefile which basically does the following:<br /><blockquote>touch N900<br />makespec.pl <kernel.spec.in>kernel-n900.spec<br />rm N900<br /></kernel.spec.in></blockquote>so when you do a make in the repo, it generates platform specific spec files from kernel.spec.in -> and you now have spec files for each package(aka platform) and a single spec.in file to maintain.<br /><br /><span style="font-weight: bold;">The U-boot package spec</span><br />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:<br /><blockquote>Makefile -> This is for me to generate the platform specific spec files<br />makespec.pl -> tiny modifications to allow Panda replacements<br />series -> this was for future patches that might come in.. I need to work this out..<br />u-boot-2010.09.rc1.tar.bz2 -> rc1 tarball from denx.com<br />u-boot-omap4panda.spec -> This is the generated file<br />u-boot.spec -> "generic" spec file: It does a PandaBoard build at the moment, we can figure things out when we enable something else<br />u-boot.spec.in -> the main spec file<br /></blockquote>So, if i do a <span style="font-style: italic;">make clean</span> all my platform specific .spec files disappear. on doing a <span style="font-style: italic;">make </span>a new set of platform specific spec files are generated from my <span style="font-style: italic;">u-boot.spec.in</span> file. Nifty. Tested the build and it built fine with u-boot.spec file<br /><br />Created a new package <a href="https://build.meego.com/package/show?package=u-boot-omap4panda&project=home%3Anm%3Abootloader%3Au-boot" class="nowrap">u-boot-omap4panda</a> 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.<br /><br />I needed to see if the logic would work with omap3beagle (my fav platform)<br />- 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<br />- created a new package <a href="https://build.meego.com/package/show?package=u-boot-omap3beagle&project=home%3Anm%3Abootloader%3Au-boot" class="nowrap">u-boot-omap3beagle</a> and linked it back to home:nm:bootloader:u-boot<br /><br />Build just great.. I then noticed that I had a few rpmlint warnings as well..<br /><blockquote>RPMLINT report:<br />===============<br />u-boot-tools.armv7l: W: package-with-huge-docs 77%<br /><br />More than half the size of your package is documentation. Consider splitting<br />it into a -doc subpackage.<br /><br />u-boot.src:143: W: macro-in-%changelog %{TARGET_BOARD}<br /><br />Macros are expanded in %changelog too, which can in unfortunate cases lead to<br />the package not building at all, or other subtle unexpected conditions that<br />affect the build. Even when that doesn't happen, the expansion results in<br />possibly "rewriting history" on subsequent package revisions and generally odd<br />entries eg. in source rpms, which is rarely wanted. Avoid use of macros in<br />%changelog altogether, or use two '%'s to escape them, like '%%foo'.<br /><br />u-boot.src:22: W: hardcoded-packager-tag Nishanth<br /><br />The Packager tag is hardcoded in your spec file. It should be removed, so as<br />to use rebuilder's own defaults.<br /><br />3 packages and 0 specfiles checked; 0 errors, 3 warnings.</blockquote><br />Never liked warnings and decided to clean them up<br />a) looking at the <a href="http://wiki.meego.com/Packaging/Guidelines">Packaging Guidelines</a>, 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:<br />u-boot.changes.in is copied to u-boot-<packagename>.change to ensure that the changelog is replicated in all package builds.<br />b) removed my name off the .spec.in regenerated and checked in the changes<br />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.<br /><br />Committed and checked in my changes, noticed that with every checkin, obs would automagically build up the linked up packages. final set of files:<br /><blockquote>Makefile<br />makespec.pl<br />series<br />u-boot-2010.09.rc1.tar.bz2<br />u-boot.changes<br />u-boot.changes.in<br />u-boot-omap3beagle.changes<br />u-boot-omap3beagle.spec<br />u-boot-omap4panda.changes<br />u-boot-omap4panda.spec<br />u-boot.spec<br />u-boot.spec.in<br /></blockquote>Bingo - for your enjoyment - the final rpm packages are <a href="https://build.meego.com/package/binaries?package=u-boot&project=home%3Anm%3Abootloader%3Au-boot&repository=u-boot-omap4panda">here</a><br /><br />TODO: to figure out how to get this to mainline<br /><br /><span style="font-weight: bold;"><a href="http://en.opensuse.org/Build_Service/CLI">Osc</a> Commands I used</span><br />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!<br /><blockquote>osc co home:nm:bootloader:u-boot</blockquote>Checks out my u-boot repository<br /><blockquote>osc status</blockquote>Tells me what files have been modified or if there are any new files what they were<br /><blockquote>osc add file1 file2 file3...</blockquote>Adds the files to the list of changes to be pushed to my repo<br /><blockquote>osc ci -m "my commit message"</blockquote>Commits my changes and pushes to my repo with the changes noted with commit message "<span style="font-style: italic;">my commit message</span>"<br /><br />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..</packagename><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com3tag:blogger.com,1999:blog-30598440.post-13648767183832366902010-09-14T16:48:00.004-05:002010-09-14T17:19:18.472-05:00MeeGo diary notes: getting ready for packagingGot 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 ;)..<br /><br /><span style="font-weight: bold;">Note:</span> the good folks at <a href="http://www.blogger.com/devicevm.com">DeviceVM</a> had already done a <a href="http://wiki.meego.com/ARM/OMAP4_Blaze">MeeGo port to OMAP4 Blaze</a> 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 ;)<br /><br />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 :(.<br /><br />On the base level, MeeGo uses rpm packaging - essentially what folks call a <a href="http://www.ibm.com/developerworks/library/l-rpm1/">spec file</a>. MeeGo folks have added one layering on top with yaml file which is translated by a set of tools called <a href="http://wiki.meego.com/Spectacle">spectacle</a> to translate the yaml to rpm spec file.<br /><br /><span style="font-weight: bold; font-style: italic;">Spectacle</span><br />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 <a href="http://bugs.meego.com/show_bug.cgi?id=6734">bug</a> - steps that worked for me:<br /><ul><li>Downloaded<a href="http://repo.meego.com/MeeGo/tools/repos/ubuntu/9.10/all/spectacle_0.19_all.deb"> spectacle_0.19_all.deb</a> </li><li>sudo apt-get install python-yaml libyaml-0-1</li><li>sudo dpkg --install spectacle_0.19_all.deb<br /></li></ul>Bingo, I now have the specify and other spectacle utilities.<br /><br /><span style="font-weight: bold; font-style: italic;">osc - the OBS command line util</span><br />MeeGo works with <a href="http://en.opensuse.org/Build_Service_Tutorial">opensuse build system</a> (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 <a href="http://en.opensuse.org/Build_Service/CLI">osc</a> - installed this with:<br /> <blockquote style="font-style: italic;">sudo apt-get install osc</blockquote><br /><br />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:<br /><blockquote>[general]<br />apiurl = http://api.meego.com<br />packagecachedir = /home/nmenon/src/meego/osbuild-packagecache<br />[http://api.meego.com]<br />user = my_obs_login<br />pass = my_obs_passwd<br />aliases = meego<br />email = my_email_id<br />http_proxy="https://proxy:80/"</blockquote>Cute.. "<span style="font-style: italic;">osc ls</span>" worked out of the box after this.<br /><br /><a href="http://en.opensuse.org/Build_Service/CLI">osc</a> is a must have tool if you want to effectively work with OBS IMHO.<br /><br /><span style="font-style: italic; font-weight: bold;">I am all ready now to create my u-boot repo:</span><br />Following the <a href="http://wiki.meego.com/Build_Infrastructure/Packagers_Developers/WebUI_part_1">wiki steps</a> (<span style="font-style: italic;">note </span>the build.meego.com looks a bit different from the time the wiki was created ;) but that is expected) Went to the <a href="http://build.meego.com/">obs site</a> and clicked on projects and added a <a href="https://build.meego.com/project/show?project=home%3Anm%3Abootloader%3Au-boot">new project for uboot</a> 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.<br /><br />on my pc:<br /><blockquote>osc co home:nm:bootloader:u-boot</blockquote>and viola I have a clone!<br /><br />Things to do next - the real thing: figuring out how to add the spec file and related packaging gimmicry to build in obs..<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-37062528397961478942010-09-09T14:41:00.004-05:002010-09-10T11:20:23.132-05:00next gen arm core<div><a href="http://www.arm.com/products/processors/cortex-a/cortex-a15.php">Cortex-A15 </a>MPCore - Welcome to the next generation!!<br /><span style="font-style: italic;">update: </span>20100910: more of the TI story <a href="http://www.slashgear.com/ti-tip-multi-platform-arm-cortex-a15-eagle-mobile-devices-10101702/">slashgeared</a>!<br /></div><div></div><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" /><br /><div></div><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com2tag:blogger.com,1999:blog-30598440.post-53048648038358949462010-08-27T09:23:00.006-05:002012-10-17T10:58:07.829-05:00Public OMAP4 TRM releasedTI has released public <a href="http://focus.ti.com/pdfs/wtbu/OMAP4430_ES2.0_Public_TRM_vJ.pdf">OMAP4430 TRM</a> and <a href="http://focus.ti.com/pdfs/wtbu/CTT-OMAP4430ES2.0-v1.7.0.3.zip">clock tool</a> in the <a href="http://focus.ti.com/general/docs/wtbu/wtbudocumentcenter.tsp?templateId=6123&navigationId=12667">official site</a> today. :).. yaay..<br />
[<b>WARNING 17 Oct 2012</b>]: ALWAYS GO <a href="http://www.ti.com/general/docs/wtbu/wtbudocumentcenter.tsp?templateId=6123&navigationId=12667#62" target="_blank">HERE</a> for the very latest documentation - Thanks to a few people ignoring the "official site" link above<br />
<br />
TRM gives you indepth insight into what OMAP4 is all about<br />
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 -> all the way from the oscillator you use on the board to the clocks you use in the functional block of interest..<br />
<br />
originally note from<a href="http://marc.info/?l=linux-omap&m=128289370422558&w=2"> Mythri on Linux OMAP</a><br />
[update: <a href="http://www.omappedia.org/wiki/CTT">ctt wiki</a>]<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-30155185054375635152010-02-01T22:06:00.001-06:002010-02-01T22:07:53.543-06:00omap4 headsup from slashgearfound this <a href="http://www.slashgear.com/texas-instruments-omap4-hands-on-0172231/">article</a> pretty interesting<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-76487474587912892882010-01-16T12:34:00.005-06:002010-01-16T16:54:04.071-06:00how do you start a new year? in style!it is exciting news and there is no reason for me to do the good old style of a post.. so here it goes:<br /><br />Jason's <a href="http://groups.google.com/group/beagleboard/browse_thread/thread/6604a0debf003c8a#">state of the beagle</a> address (somehow sounds similar to <a href="http://en.wikipedia.org/wiki/State_of_the_union">this</a> - no offense intended ofcourse) had the following highlights (or my view how as an engineer I'd have paraphrased):<br /><ul><li><span style="font-weight: bold;">Beagleboard rocks</span>. (and we have awards to prove it too ;) )..<br /></li><li>We kinda got screwed by beagle's success initially, but now I think things are better now..</li><li>beagleboard is getting an engine change soon - blistering speeds ahead dudes.. 720meg beagles.. get those apps rockin..<br /></li><li>Annnndddd..... Yeeeehaaaawww.. <span style="color: rgb(51, 204, 255); font-weight: bold;">beagleboard</span> <span style="color: rgb(255, 0, 0); font-weight: bold;">XM</span>!!!!!! DM3730(dudes in <a href="http://marc.info/?l=linux-omap">l-o</a> know the diff with OMAP3630).. wow..<span style="color: rgb(255, 0, 0);"> <span style="font-weight: bold;">more</span></span> 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 ;)<br /></li><li>for those newbies.. go do the training and get rockin faster..(android/angstrom.. whatever you need is out there!)</li><li>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!</li><li>yah, as usual, let keep our flames to the usual MLs and ircs..<br /></li></ul><br />what heights do we take beagle to? <span style="color: rgb(255, 0, 0); font-weight: bold; font-style: italic;">YOU </span>decide ;)<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-65202015837075869692009-12-04T20:12:00.003-06:002009-12-04T20:23:50.256-06:00OMAPZoom tutorial hour!!So omapzoom folks have a tutorial hour now, some really cool topics get caught up here.. this week:<br /><h3 style="margin-right: 0in; margin-left: 0.5in; margin-bottom: 0.0001pt; vertical-align: baseline;"><b><span style="font-family:Verdana;font-size:78%;color:black;"><span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN"><o:p></o:p></span></span></b></h3> <h3 style="margin-right: 0in; margin-left: 0.5in; margin-bottom: 0.0001pt; vertical-align: baseline; outline-width: 0px;"><b><span style="font-family:Symbol;font-size:85%;color:black;"><span style="font-size: 10pt; font-family: Symbol; color: black; font-weight: normal;" lang="EN">·</span></span></b><span style="font-size:78%;color:black;"><span style="font-size: 7pt; color: black; font-weight: normal;" lang="EN"> </span></span><span style="font-family:Verdana;font-size:78%;color:black;"><span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN">Android on OMAP Overview and Resources<o:p></o:p></span></span></h3> <h3 style="margin-right: 0in; margin-left: 0.5in; margin-bottom: 0.0001pt; vertical-align: baseline; outline-width: 0px;"><b><span style="font-family:Symbol;font-size:85%;color:black;"><span style="font-size: 10pt; font-family: Symbol; color: black; font-weight: normal;" lang="EN">·</span></span></b><span style="font-size:78%;color:black;"><span style="font-size: 7pt; color: black; font-weight: normal;" lang="EN"> </span></span><st1:place st="on"><st1:placename st="on"><span style="font-family:Verdana;font-size:78%;color:black;"><span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN">DSP</span></span></st1:placename><span style="font-family:Verdana;font-size:78%;color:black;"><span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN"> <st1:placetype st="on">Bridge</st1:placetype></span></span></st1:place><span style="font-family:Verdana;font-size:78%;color:black;"><span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN"> Overview <o:p></o:p></span></span></h3> <h3 style="margin-right: 0in; margin-left: 0.5in; margin-bottom: 0.0001pt; vertical-align: baseline; outline-width: 0px;"><b><span style="font-family:Symbol;font-size:85%;color:black;"><span style="font-size: 10pt; font-family: Symbol; color: black; font-weight: normal;" lang="EN">·</span></span></b><span style="font-size:78%;color:black;"><span style="font-size: 7pt; color: black; font-weight: normal;" lang="EN"> </span></span><span style="font-family:Verdana;font-size:78%;color:black;"><span style="font-size: 9pt; font-family: Verdana; color: black;" lang="EN">OpenEmbedded Overview</span></span></h3><br />it is a webex (works on most OSes including a linux PC) + teleconf -><a href="http://www.ticonferencing.com/globalaccess/"> large number of access </a>numbers from around the world<br />more information <a href="http://groups.google.com/group/omapzoom/t/b8c99e1f53cf030a">here</a>. the OMAP tutorial hour (including the previous presentations - which by the way explains kernel process from TI) are available <a href="http://omappedia.org/wiki/Tutorial_Hour">here</a>.<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-50291251506991638112009-11-19T19:07:00.004-06:002009-11-19T19:19:22.428-06:00Smart Reflex what is it?<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.powersystemsdesign.com/images/stories/march2009/Figure_02.jpg"><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" /></a><br />Googling around, I found this <a href="http://www.powersystemsdesign.com/index.php?option=com_content&view=article&id=168&Itemid=107">beautiful article </a>that gives excellent explanation of how Adaptive Voltage behaves in the system.<br /><br />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.<br />General flow I am thinking is as follows(will change ofcourse):<br /><span style="font-family:courier new;">voltage driver </span><br /><span style="font-family:courier new;"> |------------> No SR PMICs implementation thru regulator framework perhaps.</span><br /><span style="font-family:courier new;"> \-------> Smart reflex driver</span><br /><span style="font-family:courier new;"> |----> PMIC interface (for class 0 devices)</span><br /><span style="font-family:courier new;"> |-----------------------------------\</span><br /><span style="font-family:courier new;"> \-----> Voltage processor driver -> Voltage controller driver</span><br />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 <a href="http://marc.info/?l=linux-omap">here</a><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com2tag:blogger.com,1999:blog-30598440.post-50024733984931831622009-10-14T21:19:00.003-05:002009-10-14T21:46:19.630-05:00few new things I see on linux-omap kernel communityAfter a long while of staying off linux-omap, been watching it rather closely recently.. here are some interesting stuff I saw this month:<br /><ul><li>Power Management: Operating points and general PM strategy for handling for various silicons <a href="http://marc.info/?t=125546601600001&r=1&w=2">here</a><br /></li><li>Silicon Feature support for OMAP3 <a href="http://marc.info/?t=125441795100004&r=1&w=2">here</a><br /></li><li>New silicon support: <a href="http://marc.info/?t=125511791600002&r=1&w=2">OMAP35xx</a> and <a href="http://marc.info/?l=linux-omap&m=125513576328888&w=2">36xx</a> support being introduced.</li><li>Discussion on memory and cache issue <a href="http://marc.info/?t=125533686700001&r=1&w=2">here</a></li><li>ETM, ETM support <a href="http://marc.info/?t=125527963900003&r=1&w=2">here</a></li><li>few new PMIC - <a href="http://marc.info/?t=125481441100003&r=1&w=2">6030</a> and <a href="http://marc.info/?t=125380781500001&r=1&w=2">5031</a></li><li><a href="http://marc.info/?l=linux-omap&m=125545826428965&w=2">hints</a> of wl1251 support getting upstream</li><li>IO_ADDRESS is <a href="http://marc.info/?t=125496165600002&r=1&w=2">dead</a> use io_remap like the rest of the world</li><li><a href="http://marc.info/?t=125554993900014&r=1&w=2">spring cleaning</a> of omap850/730 series<br /></li></ul>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.....<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com3tag:blogger.com,1999:blog-30598440.post-30344423993985559392009-10-14T21:09:00.003-05:002009-10-14T21:17:17.691-05:00some interesting posts<span>High time</span><span> I "ported" my posts from facebook back here..</span><span>so here it goes</span><span style="font-weight: bold;"><br />Some really bad code stories:</span><br /><ul><li>shared by rob clark - how bad can some code go??</li></ul><a href="http://thedailywtf.com/Articles/The-Shenanigans-Handler.aspx">http://thedailywtf.com/Articles/The-Shenanigans-Handler.aspx</a><br /><br /><ul><li>Aint this cool:</li></ul><a href="http://arstechnica.com/web/news/2009/09/horrifically-bad-software-demos-become-performance-art.ars">http://arstechnica.com/web/news/2009/09/horrifically-bad-software-demos-become-performance-art.ars</a><br /><br /><span style="font-weight: bold;">Techno Curios: </span><br /><ul><li>Tired of fullspeed, highspeed, lowspeed?? how about superspeed?? tired of acronymns already??</li></ul><a href="http://www.pcworld.com/article/172757/wheres_usb_30.html">http://www.pcworld.com/article/172757/wheres_usb_30.html</a><br /><br /><ul><li>Search for my cheap oscilloscope goes on:</li></ul><a href="http://www.micahcarrick.com/06-06-2006/pc-sound-card-oscilloscope-linux.html">http://www.micahcarrick.com/06-06-2006/pc-sound-card-oscilloscope-linux.html</a><br /><a href="http://www.fpga4fun.com/digitalscope.html">http://www.fpga4fun.com/digitalscope.html</a><br /><br /><span style="font-weight: bold;">Hacks 'nd bytes:</span><br /><ul><li>PS3 back with Hulu..</li></ul><a href="http://www.ypass.net/blog/2009/06/got-a-ps3-want-hulu-back-easy-enough/">http://www.ypass.net/blog/2009/06/got-a-ps3-want-hulu-back-easy-enough/ </a><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-45366005095363002772009-10-14T21:02:00.003-05:002009-10-14T21:06:38.690-05:00timing diagrams<a href="http://drawtiming.sourceforge.net/samples.html">drawtime</a><br /><br />This is kinda a cool app that runs on ubuntu to draw timing diagrams as follows:<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjki01ScgRdfWYfYa1e2ooo_LG_PUeRAB1X0MjAUgB1emBu76niuxlBDSITu7xYzIQ2cnrB8xZHtSGVo1NZ2MaUZUrn9nGYE9eQC9f6v6GR65Uzzl8dcxVCT6r_FSh6gItCRfc/s1600-h/a.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 141px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjki01ScgRdfWYfYa1e2ooo_LG_PUeRAB1X0MjAUgB1emBu76niuxlBDSITu7xYzIQ2cnrB8xZHtSGVo1NZ2MaUZUrn9nGYE9eQC9f6v6GR65Uzzl8dcxVCT6r_FSh6gItCRfc/s320/a.gif" alt="" id="BLOGGER_PHOTO_ID_5392642012526749186" border="0" /></a><br />Example(from the drawtime website):<br /><pre class="code"><blockquote>CS1 = 1, OE = 1, ADDR = X, DATA = Z.<br /><br />CS1 = 0, OE = 0, ADDR = "".<br />OE -tOE> DATA = "";<br />CS1 -tCS1> DATA;<br />ADDR -tACC> DATA.<br /><br />OE = 1, CS1 = 1, ADDR = X.<br />CS1 -tH> DATA = Z;<br />OE -tH> DATA;<br />ADDR -tH> DATA.</blockquote><br />and you can now generate all those cool waveforms without having to worry about did you get the lines right etc..<br /><br /></pre>more such cool stuff <a href="http://coolarm.wordpress.com/2008/06/16/electronic-software-in-ubuntu-linux/">here</a><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com3tag:blogger.com,1999:blog-30598440.post-73960823792602447052009-09-19T08:47:00.002-05:002009-09-19T08:52:14.839-05:00Flashlite and Valgrind for OMAP3!!Looking through the <a href="http://www.facebook.com/pages/Beagle-Board/36046586920">beagleboard facebook group</a>,<br />Saw two interesting points:<br /><div class="note_title"><a href="http://www.facebook.com/note.php?note_id=135665164361&1&index=1">Flash Lite 3.1 evaluation version for Beagleboard</a><br /></div><blockquote><div class="note_title">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."<br /></div></blockquote><br /><a href="http://www.facebook.com/note.php?note_id=135425019361&ref=nf" onclick="'ft(">How to build Valgrind for Beagleboard</a><br /><blockquote>1) Get Valgrind source code from SVN using revision 9648 and 1888 for VEX<br /><span> svn co -r 9648 svn://svn.valgrind.org/val</span><div><wbr><span class="word_break"></span>grind/trunk<br />cd VEX<br />svn update -r 1888<br /><br />2) Download the patch here <a href="http://www.facebook.com/note_redirect.php?note_id=135425019361&h=126403d0c544adcf681dd634b21dddaa&url=http%3A%2F%2Fbugsfiles.kde.org%2Fattachment.cgi%3Fid%3D32348" target="_blank" title="http://bugsfiles.kde.org/attachment.cgi?id=32348"><span>http://bugsfiles.kde.org/a</span><wbr><span class="word_break"></span>ttachment.cgi?id=32348</a><br /><br />3) Apply the patch into the source code<br />cd valgrind<br />patch -p1 < [path to the patch]<br /><br />4) Run autogen.sh to run autotools<br /><br />5) Configure the source code<br /><span> ./configure --host=arm-angstrom-linux-</span><wbr><span class="word_break"></span>gnueabi<br /><br />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 > /proc/cpu/alignment' but it's enough to use for simple application.<br />Have fun with Valgrind :-)</div></blockquote><div><br /><img src="http://external.ak.fbcdn.net/safe_image.php?d=dc1e186c50d7ad7e528a8fcf448bdc02&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); });" /><br />The above quotes are straight from Facebook posts itself..<br /></div><div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0tag:blogger.com,1999:blog-30598440.post-77039598824459438642009-09-12T11:56:00.003-05:002009-09-12T11:59:48.040-05:00CELF 2009 - France (ELC-Embedded Linux Conference)here are the sessions in the conference: <a href="http://www.embeddedlinuxconference.com/elc_europe09/sessions.html">http://www.embeddedlinuxconference.com/elc_europe09/sessions.html</a><br /><br />Includes Sascha and my personal fav - <a href="http://www.embeddedlinuxconference.com/elc_europe09/sessions.html#Hauer">u-boot v2</a>.<div class="blogger-post-footer"><script src="http://feedjit.com/map/?bc=FFFFFF&tc=494949&brd1=336699&lnk=494949&hc=336699&dot=FF0000" type="text/javascript"></script><noscript>Live feed</noscript>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-4505383-1";
urchinTracker();
</script></div>Nishanth Menonhttp://www.blogger.com/profile/01095018446163595754noreply@blogger.com0