<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8469912421183119143</id><updated>2011-08-29T08:48:51.670-07:00</updated><category term='Qi'/><category term='TuxOnIce'/><category term='motion sensor'/><category term='openmoko'/><category term='ARM'/><category term='beagleboard'/><category term='battery'/><category term='OpenOCD'/><category term='servo'/><category term='Nikka'/><category term='voltage level translator'/><category term='android'/><category term='highland park'/><category term='whisky'/><category term='swsusp'/><category term='debugboard'/><category term='CTS'/><category term='0xlab'/><category term='GPIO'/><category term='coscup'/><category term='xloader'/><category term='libftdi'/><category term='single malt'/><category term='ardbeg'/><category term='hibernation'/><title type='text'>Game Changer</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-6595112817597864867</id><published>2011-04-12T04:50:00.000-07:00</published><updated>2011-04-12T23:36:00.030-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ARM'/><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernation'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='beagleboard'/><title type='text'>Beagleboard Hibernation DEMO</title><content type='html'>I gave a talk in &lt;a href="http://osdc.tw/schedule.html"&gt;OSDC&lt;/a&gt;. But I did not provide _visible_ demo by that time.&lt;br /&gt;Now, seeing is believing.&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="390" height="390" src="http://www.youtube.com/embed/pvcQiiikJDU" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The idea behind this technology is not something new. It's based on hibernation.&lt;br /&gt;Special thanks for walkingice's help out on filming this, &lt;a href="http://www.catcan.com.tw/"&gt;CATCAN&lt;/a&gt;'s sponsor on LCD expansion board.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-6595112817597864867?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/6595112817597864867/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2011/04/seeing-is-believing.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/6595112817597864867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/6595112817597864867'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2011/04/seeing-is-believing.html' title='Beagleboard Hibernation DEMO'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/pvcQiiikJDU/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-1502547502008886243</id><published>2011-03-29T03:09:00.000-07:00</published><updated>2011-03-29T03:54:27.073-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libftdi'/><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><category scheme='http://www.blogger.com/atom/ns#' term='GPIO'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='debugboard'/><category scheme='http://www.blogger.com/atom/ns#' term='CTS'/><title type='text'>Alternative use of Openmoko  debug board</title><content type='html'>If you have an &lt;a href="http://wiki.openmoko.org/wiki/Debug_Board_v3"&gt;openmoko debug board&lt;/a&gt;, don't throw it away as recycling.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-By17kco19z0/TZG0XlqaLFI/AAAAAAAAAGQ/GxxR_b5ixm4/s1600/IMG_20110329_181001.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://4.bp.blogspot.com/-By17kco19z0/TZG0XlqaLFI/AAAAAAAAAGQ/GxxR_b5ixm4/s200/IMG_20110329_181001.jpg" alt="" id="BLOGGER_PHOTO_ID_5589446929883475026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;By combining om-debugboard and MOSFET drivers, you can issue commands to power on/off your device. But why do so?&lt;br /&gt;&lt;br /&gt;Sometimes, when a system such as android is in development, system library would be crashed from time to time. Even adbd is down. At this moment, what you can do is to reset the device through power on/off. But this usually requires manual operation. Think about another scenario, if you want to run CTS on android device, you of course prefer everything is automatic. You definitely need an approach to shutdown the power of your device or turn it on.&lt;br /&gt;&lt;br /&gt;The keyword is openmoko debug board, relay leg and &lt;a href="http://www.blogger.com/ww1.microchip.com/downloads/en/DeviceDoc/21420d.pdf"&gt;MOSEFT drivers&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks my bro's help out and his lab from NTUST. The corresponding circuit is simple enough. I will make  schematic later. Since my TODO list can't be added any more options recently.  :(&lt;br /&gt;&lt;br /&gt;The way to control the GPIO on debugboard is easy. &lt;a href="http://www.intra2net.com/en/developer/libftdi/"&gt;libftdi &lt;/a&gt;provides many features on this. The easiest approach is to enable bitbang mode. I implemented a simple program to control GPIO(TDO pin) output.&lt;br /&gt;You can download it here:&lt;br /&gt;&lt;br /&gt;http://www.0xlab.org/~matt/om-debugb-gpio.tar.bz2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-1502547502008886243?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/1502547502008886243/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2011/03/alternative-use-of-openmoko-debug-board.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/1502547502008886243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/1502547502008886243'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2011/03/alternative-use-of-openmoko-debug-board.html' title='Alternative use of Openmoko  debug board'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-By17kco19z0/TZG0XlqaLFI/AAAAAAAAAGQ/GxxR_b5ixm4/s72-c/IMG_20110329_181001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-4280720503962523075</id><published>2010-12-01T22:38:00.000-08:00</published><updated>2010-12-02T07:07:04.214-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><category scheme='http://www.blogger.com/atom/ns#' term='swsusp'/><category scheme='http://www.blogger.com/atom/ns#' term='TuxOnIce'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernation'/><category scheme='http://www.blogger.com/atom/ns#' term='beagleboard'/><title type='text'>Make Beagleboard to Be Hibernated</title><content type='html'>Previously, there's a Japanese company called &lt;a href="http://www.ubiquitous.co.jp/En/"&gt;Ubiquitous&lt;/a&gt;. It achieves very impressive demo which makes machine's boot time as one second. Its primitive idea is based on hibernation. IMHO, this solution is not _generic_ enough. It means that, the porting for platform would take a lot of effort. So it might be better to use more generic solution to achieve hibernation.&lt;br /&gt;&lt;br /&gt;However, Hiroshi did a good job on improving boot time for &lt;a href="http://meego.com/"&gt;Meego&lt;/a&gt; platform.&lt;br /&gt;He gave a talk on LinuxConf in Japan. After his experiments, the boot time could be reduced about 3 seconds at some certain points.&lt;br /&gt;&lt;br /&gt;http://www.slideshare.net/doyu/improving-meegobootuptime&lt;br /&gt;&lt;br /&gt;or you can build the slide locally:&lt;br /&gt;&lt;br /&gt;git clone git://gitorious.org/improving-meego-boot-up-time/t2t.git&lt;br /&gt;&lt;br /&gt;Fortunately, his target platform is N900 whose CPU core is also ARM cortex A8 (OMAP3430). So, Beagleboard should be worked on hibernation. After some modification, either SWSUSP or TuxOnIce can work on Beagleboard.&lt;br /&gt;&lt;br /&gt;Here is the result:&lt;br /&gt;&lt;br /&gt;root@beagleboard:~# echo disk &gt;/sys/power/state&lt;br /&gt;[   97.613098] Initiating a hibernation cycle.&lt;br /&gt;[   97.617980] Failed to launch userspace program '/usr/local/sbin/tuxoniceui_text': Error -2&lt;br /&gt;[   97.626403] Launch userspace program failed.&lt;br /&gt;[   97.630767] Freezing processes &amp;amp; syncing filesystems.&lt;br /&gt;[   97.635864] Stopping fuse filesystems.&lt;br /&gt;[   97.639648] Freezing user space processes ... (elapsed 0.00 seconds) done.&lt;br /&gt;[   99.313568] Stopping normal filesystems.&lt;br /&gt;[   99.379211] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.&lt;br /&gt;[   99.435852] Preparing Image. Try 1.&lt;br /&gt;[   99.440734] Restarting normal filesystems.&lt;br /&gt;[   99.466796] Stopping fuse filesystems.&lt;br /&gt;[   99.470611] Freezing user space processes ... (elapsed 0.00 seconds) done.&lt;br /&gt;[   99.532409] Stopping normal filesystems.&lt;br /&gt;[   99.590179] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.&lt;br /&gt;[   99.651702] Starting to save the image..&lt;br /&gt;[   99.655670] Writing caches...&lt;br /&gt;[  100.171966] ...20%...40%...60%...80%&lt;br /&gt;[  102.023406] Doing atomic copy/restore.&lt;br /&gt;[  102.027221] Suspending console(s) (use no_console_suspend to debug)&lt;br /&gt;[  102.906646] nand_resume called for a chip which is not in suspended state&lt;br /&gt;[  102.939483] Post atomic.&lt;br /&gt;[  102.942047] Writing kernel &amp;amp; process data...&lt;br /&gt;[  103.593719] ...20%...40%...60%...80%&lt;br /&gt;[  104.767242] Power down.&lt;br /&gt;[  104.769897] System halted.&lt;br /&gt;&lt;br /&gt;[   14.434020] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 1&lt;br /&gt;[   14.443267] TuxOnIce 3.2-rc2 (http://tuxonice.net)&lt;br /&gt;[   14.449829] TuxOnIce: Image found.&lt;br /&gt;[   14.982788] Failed to launch userspace program '/usr/local/sbin/tuxoniceui_text': Error -2&lt;br /&gt;[   14.991149] Launch userspace program failed.&lt;br /&gt;[   14.995513] Stopping fuse filesystems.&lt;br /&gt;[   14.999328] Freezing user space processes ... (elapsed 0.00 seconds) done.&lt;br /&gt;[   15.006591] Stopping normal filesystems.&lt;br /&gt;[   15.010559] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.&lt;br /&gt;[   15.032104] Reading kernel &amp;amp; process data...&lt;br /&gt;[   15.420349] ...20%...40%...60%...80%&lt;br /&gt;[   15.822692] Atomic restore.&lt;br /&gt;[   15.825622] Doing atomic copy/restore.&lt;br /&gt;[   15.829376] Suspending console(s) (use no_console_suspend to debug)&lt;br /&gt;[   16.302551] omapdss DISPC error: SYNC_LOST, disabling LCD&lt;br /&gt;[   16.849487] nand_resume called for a chip which is not in suspended state&lt;br /&gt;[   17.184478] Post atomic.&lt;br /&gt;[   17.187103] Reading caches...&lt;br /&gt;[   18.130859] ...20%...40%...60%...80%&lt;br /&gt;[   18.612609] Cleaning up...&lt;br /&gt;[   18.616302] Restarting all filesystems ...&lt;br /&gt;[   18.620452] Restarting tasks ... Restarting tasks ... done.&lt;br /&gt;[   18.679138] TuxOnIce debugging info:&lt;br /&gt;[   18.679138] - TuxOnIce core  : 3.2-rc2                                                                                                            &lt;br /&gt;[   18.679168] - Kernel Version : 2.6.32.9-g25bf98b-dirty&lt;br /&gt;[   18.679168] - Compiler vers. : 4.4&lt;br /&gt;[   18.679168] - Attempt number : 3&lt;br /&gt;[   18.679168] - Parameters     : 0 667648 0 0 0 0&lt;br /&gt;[   18.679199] - Overall expected compression percentage: 0.&lt;br /&gt;[   18.679199] - Compressor is 'lzo'.&lt;br /&gt;[   18.679199]   Compressed 52920320 bytes into 16659760 (68 percent compression).&lt;br /&gt;[   18.679229] - Block I/O active.&lt;br /&gt;[   18.679229]   Used 4110 pages from swap on /dev/......&lt;br /&gt;[   18.679229] - Max outstanding reads 404. Max writes 195.&lt;br /&gt;[   18.679229]   Memory_needed: 1024 x (4096 + 200 + 72) = 4472832 bytes.&lt;br /&gt;[   18.679260]   Free mem throttle point reached 0.&lt;br /&gt;[   18.679260] - Swap Allocator enabled.&lt;br /&gt;[   18.679260]   Swap available for image: 34136 pages.&lt;br /&gt;[   18.679290] - File Allocator active.&lt;br /&gt;[   18.679290]   Storage available for image: 0 pages.&lt;br /&gt;[   18.679290] - I/O speed: Write 12 MB/s, Read 22 MB/s.&lt;br /&gt;[   18.679290] - Extra pages    : 0 used/2000.&lt;br /&gt;[   18.679321] - Result         : Succeeded.&lt;br /&gt;root@beagleboard:~#&lt;br /&gt;&lt;br /&gt;Obviously, the boot time has a lot of space to improve. But it a first step to hack hibernation. And thanks Hiroshi's suggestion to make this working. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-4280720503962523075?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/4280720503962523075/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2010/12/make-beagleboard-to-be-hibernated.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/4280720503962523075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/4280720503962523075'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2010/12/make-beagleboard-to-be-hibernated.html' title='Make Beagleboard to Be Hibernated'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-2238543784023825907</id><published>2010-07-13T20:56:00.000-07:00</published><updated>2010-07-13T23:20:00.866-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='battery'/><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><category scheme='http://www.blogger.com/atom/ns#' term='servo'/><category scheme='http://www.blogger.com/atom/ns#' term='coscup'/><category scheme='http://www.blogger.com/atom/ns#' term='beagleboard'/><title type='text'>Power is not enough</title><content type='html'>Eventually, I got damn-spare time to post something interesting.&lt;br /&gt;Last update was posted in the last year. It's so obvious to see&lt;br /&gt;how busy/lazy I was in the past half year.&lt;br /&gt;&lt;br /&gt;Tick and I are managed to build a robot project based on Beagleboard. We plan to share this project and concepts behind this on the event of &lt;a href="http://coscup.org/2010/zh-tw/program"&gt;COSCUP&lt;/a&gt;.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YkjZ-0s1Rbg/TD1UZPlmp9I/AAAAAAAAAEY/Dp4xKRGDnAE/s1600/IMG_20100713_121643.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 150px; height: 200px;" src="http://2.bp.blogspot.com/_YkjZ-0s1Rbg/TD1UZPlmp9I/AAAAAAAAAEY/Dp4xKRGDnAE/s200/IMG_20100713_121643.jpg" alt="" id="BLOGGER_PHOTO_ID_5493639913119590354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Well, I can say so far, the most tough work is not writing software to control robot. Instead, it's all about hardware such as providing power to servos. The ultimate goal is to make everything on robot wireless such as communication and power supply. Of course high capacity battery becomes the only option. Initially, we tried Ni-MH battery bought from RC car store. Even battery is full, it can't drive all revolute joints (servos). So we need plan B. :(&lt;br /&gt;&lt;br /&gt;Occasionally, I found lead acid battery might be the candidate. After go shopping in the Guang-Hua market, Its voltage and capacity and size are all satisfied with our requirement. Most of important, it could drive all servos, totally 18 servos. Here is snapshot of the battery and debut robot.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YkjZ-0s1Rbg/TD1SG0iVg3I/AAAAAAAAAEI/Nulq6nGmwSI/s1600/IMG_20100713_095304.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_YkjZ-0s1Rbg/TD1SG0iVg3I/AAAAAAAAAEI/Nulq6nGmwSI/s200/IMG_20100713_095304.jpg" alt="" id="BLOGGER_PHOTO_ID_5493637397597225842" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-2238543784023825907?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/2238543784023825907/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2010/07/power-is-not-enough.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/2238543784023825907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/2238543784023825907'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2010/07/power-is-not-enough.html' title='Power is not enough'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_YkjZ-0s1Rbg/TD1UZPlmp9I/AAAAAAAAAEY/Dp4xKRGDnAE/s72-c/IMG_20100713_121643.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-4805876207807514350</id><published>2009-12-30T06:03:00.000-08:00</published><updated>2009-12-30T06:38:58.251-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='single malt'/><category scheme='http://www.blogger.com/atom/ns#' term='highland park'/><category scheme='http://www.blogger.com/atom/ns#' term='ardbeg'/><category scheme='http://www.blogger.com/atom/ns#' term='Nikka'/><category scheme='http://www.blogger.com/atom/ns#' term='whisky'/><title type='text'>My blood has whisky</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_YkjZ-0s1Rbg/Szte1GkbglI/AAAAAAAAAC8/3QnQFqoS8PE/s1600-h/R1037247.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://1.bp.blogspot.com/_YkjZ-0s1Rbg/Szte1GkbglI/AAAAAAAAAC8/3QnQFqoS8PE/s200/R1037247.JPG" alt="" id="BLOGGER_PHOTO_ID_5421030842860012114" border="0" /&gt;&lt;/a&gt;馬上要邁入"twenty ten"了, 回頭看看這一年&lt;br /&gt;失去了不少, 也得到了很多&lt;br /&gt;關於30歲這一年, 我一直在想, Peter Pan他30的時候會不會也跟我&lt;br /&gt;一樣徬徨, 猶豫著結與不結的抉擇, 生氣著台北房子貴的離譜&lt;br /&gt;的現象&lt;br /&gt;&lt;br /&gt;就這樣吧, 跟著心走, 隨遇而安&lt;br /&gt;&lt;br /&gt;可能是因為要跨年的關係, 加上晚上剛解完的issue&lt;br /&gt;我決定要好好來慰勞一下自己, 所以我就跑去敗了三瓶whisky&lt;br /&gt;&lt;br /&gt;為什麼是whisky? 很簡單, 我生下來就是whisky控&lt;br /&gt;&lt;br /&gt;左上角的酒, 應該是我目前買的最貴的whisky, Ardbeg, 味道我之前有試過&lt;br /&gt;帶有很濃的泥煤味, 但這種味道則是見人見智, 不是每個人都喜歡&lt;br /&gt;我買的是"almost there"的年份&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_YkjZ-0s1Rbg/Sztin2isJmI/AAAAAAAAADE/1yOLgOjzLRs/s1600-h/R1037246.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://1.bp.blogspot.com/_YkjZ-0s1Rbg/Sztin2isJmI/AAAAAAAAADE/1yOLgOjzLRs/s200/R1037246.JPG" alt="" id="BLOGGER_PHOTO_ID_5421035013265958498" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YkjZ-0s1Rbg/SztkZPLi36I/AAAAAAAAADM/XW3u7-MCMeo/s1600-h/R1037244.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://4.bp.blogspot.com/_YkjZ-0s1Rbg/SztkZPLi36I/AAAAAAAAADM/XW3u7-MCMeo/s200/R1037244.JPG" alt="" id="BLOGGER_PHOTO_ID_5421036961204985762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第二瓶, Highland Park, 老實說, 我沒喝過, 是老闆說值得試試的酒&lt;br /&gt;而且是舊瓶裝, 聽說新瓶跟舊瓶的味道不一樣&lt;br /&gt;那一種好? 我想你應該猜得到&lt;br /&gt;&lt;br /&gt;最後一瓶就是我的最愛啦, 目前啦, 余市十五年, Nikka single malt&lt;br /&gt;一想到跨年可以品嘗這些酒, 我身體都熱了起來&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YkjZ-0s1Rbg/SztkZPLi36I/AAAAAAAAADM/XW3u7-MCMeo/s1600-h/R1037244.JPG"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-4805876207807514350?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/4805876207807514350/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/12/my-blood-has-whisky.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/4805876207807514350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/4805876207807514350'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/12/my-blood-has-whisky.html' title='My blood has whisky'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YkjZ-0s1Rbg/Szte1GkbglI/AAAAAAAAAC8/3QnQFqoS8PE/s72-c/R1037247.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-3641214318614045562</id><published>2009-12-10T01:51:00.000-08:00</published><updated>2009-12-10T03:17:03.080-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='motion sensor'/><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='beagleboard'/><title type='text'>Motion Sensor Demo on Beagleboard</title><content type='html'>If you saw my previous post, it was mentioned my next step is to integrate this 3-axis accelerometer into Android. To prove my implementation could work flawlessly, I ask my colleague, &lt;a href="http://jeremyone.blogspot.com/"&gt;Jeremy&lt;/a&gt; to record the following clip.&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wNSgHPO4hB4&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/wNSgHPO4hB4&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;The demo application is called 3D Level.&lt;br /&gt;&lt;br /&gt;The HAL implementation could be found here:&lt;br /&gt;&lt;a href="http://gitorious.org/0xdroid/hardware_libhardware"&gt;http://gitorious.org/0xdroid/hardware_libhardware&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's based on Michael's porting on Android for Openmoko GTA02.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-3641214318614045562?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/3641214318614045562/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/12/motion-sensor-demo-on-beagleboard.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/3641214318614045562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/3641214318614045562'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/12/motion-sensor-demo-on-beagleboard.html' title='Motion Sensor Demo on Beagleboard'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-3119835837779052849</id><published>2009-11-30T20:05:00.000-08:00</published><updated>2009-12-02T18:40:06.711-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='motion sensor'/><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><category scheme='http://www.blogger.com/atom/ns#' term='voltage level translator'/><category scheme='http://www.blogger.com/atom/ns#' term='beagleboard'/><title type='text'>Build 3-axis Accelerometer on Beagleboard from Scratch</title><content type='html'>First of all, I would like to thanks Jerry, who is the project manager from STMicroelectronic Taiwan branch. He sponsored 0xlab couple chips of LIS302DL, which is a 3-axis accelerometer device. And Neo (YOSUN's FAE) provides me a fixture for this device. So everything is ready for me to make it work on the Beagleboard.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.st.com/stonline/products/literature/ds/12726.pdf"&gt;LIS302DL&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YkjZ-0s1Rbg/SxTsgDVsb_I/AAAAAAAAABM/7miDXbGhUUY/s1600/dscf1100.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_YkjZ-0s1Rbg/SxTsgDVsb_I/AAAAAAAAABM/7miDXbGhUUY/s320/dscf1100.jpg" alt="" id="BLOGGER_PHOTO_ID_5410209087775076338" border="0" /&gt;&lt;/a&gt;You probably feel it is looked familiar. Yes, this chip is the same motion sensor as Openmoko Freerunner used. The only difference is that its interface would be adopted I2C instead of 3-wire SPI for Beagleboard.&lt;br /&gt;&lt;cite&gt;&lt;/cite&gt;&lt;br /&gt;- Power source for LIS302DL&lt;br /&gt;If you probe the schematic of Beagleboard, the expansion header (J3) reserved DC 5v and VIO 1v8 respectively. You can leverage these as the power source for your own devices. Unfortunately, the range of Vdd for LIS302DL is located between 2v16 and 3v6. DC 5v is not fulfilled for this case. So tinker DC 5v is needed. Zerner diode can regulator the voltage as you want. In this case, one reistor and one zerner diode are required.&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://focus.ti.com/docs/prod/folders/print/txs0102.html"&gt;TSX0102&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YkjZ-0s1Rbg/SxTysvSnYPI/AAAAAAAAABc/bmukWmyp_pw/s1600/dscf1102.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_YkjZ-0s1Rbg/SxTysvSnYPI/AAAAAAAAABc/bmukWmyp_pw/s320/dscf1102.jpg" alt="" id="BLOGGER_PHOTO_ID_5410215902801518834" border="0" /&gt;&lt;/a&gt;It's very Beagleboard specific or you can say it's TI specific. If you want to add an external device on the Beagleboard, a voltage level translator might be necessity. Since most of current devices, the least signaling I/O would be around 2v6. But Beagleboard only provides 1v8 voltage as I/O signaling. The real reason behind this I don't know about it. Maybe for the power consumption issue. Or can I call it's a kind of "product placement"? :p&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Interrupt&lt;br /&gt;Basically, all the I/O to the host controller, Beagleboard, are based on 1v8 signaling. The I2C communication is through TXS0102 to talk between host and device. But there is one more line for one-directional signaling, that is interrupt from LIS302DL to host. My former colleague, Dkay, suggested a simple approach to reslove this. A diode and two pull high resistors would be enough&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YkjZ-0s1Rbg/SxXpJ1CtTTI/AAAAAAAAABk/EZ_q7MPhVCw/s1600-h/int.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 135px;" src="http://4.bp.blogspot.com/_YkjZ-0s1Rbg/SxXpJ1CtTTI/AAAAAAAAABk/EZ_q7MPhVCw/s320/int.jpeg" alt="" id="BLOGGER_PHOTO_ID_5410486882422050098" border="0" /&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- Kernel driver&lt;br /&gt;The corresponding kernel driver is put here:&lt;br /&gt;&lt;br /&gt;http://gitorious.org/0xlab-kernel/kernel&lt;br /&gt;&lt;br /&gt;Edit your kernel config with CONFIG_INPUT_ST_MOTION_SENSOR=y.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The following picture is the overall picture for this work. Although it's not pretty, but it works perfectly. With evtest utility, I can retrieve input events from LIS302DL device.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YkjZ-0s1Rbg/SxXsaexxs6I/AAAAAAAAABs/L2AxJfpteAs/s1600-h/dscf1125.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_YkjZ-0s1Rbg/SxXsaexxs6I/AAAAAAAAABs/L2AxJfpteAs/s320/dscf1125.jpg" alt="" id="BLOGGER_PHOTO_ID_5410490467038114722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="programlisting"&gt;&lt;br /&gt;# ./evtest /dev/input/event1&lt;br /&gt;Input driver version is 1.0.0&lt;br /&gt;Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0&lt;br /&gt;Input device name: "LIS302DL Motion Sensor"&lt;br /&gt;Supported events:&lt;br /&gt;Event type 0 (Sync)&lt;br /&gt;Event type 3 (Absolute)&lt;br /&gt;Event code 0 (X)&lt;br /&gt;Value      3&lt;br /&gt;Min        0&lt;br /&gt;Max        0&lt;br /&gt;Event code 1 (Y)&lt;br /&gt;Value    245&lt;br /&gt;Min        0&lt;br /&gt;Max        0&lt;br /&gt;Event code 2 (Z)&lt;br /&gt;Value     56&lt;br /&gt;Min        0&lt;br /&gt;Max        0&lt;br /&gt;Testing ... (interrupt to exit)&lt;br /&gt;Event: time 12.269714, type 3 (Absolute), code 0 (X), value 4&lt;br /&gt;Event: time 12.269989, type 3 (Absolute), code 1 (Y), value 245&lt;br /&gt;Event: time 12.270233, type 3 (Absolute), code 2 (Z), value 55&lt;br /&gt;Event: time 12.270233, -------------- Report Sync ------------&lt;br /&gt;Event: time 12.273864, type 3 (Absolute), code 0 (X), value 3&lt;br /&gt;Event: time 12.274200, type 3 (Absolute), code 2 (Z), value 56&lt;br /&gt;Event: time 12.274200, -------------- Report Sync ------------&lt;br /&gt;Event: time 12.284332, type 3 (Absolute), code 0 (X), value 4&lt;br /&gt;Event: time 12.284545, type 3 (Absolute), code 1 (Y), value 244&lt;br /&gt;Event: time 12.284698, -------------- Report Sync ------------&lt;br /&gt;Event: time 12.294403, type 3 (Absolute), code 0 (X), value 3&lt;br /&gt;Event: time 12.294799, type 3 (Absolute), code 2 (Z), value 55&lt;br /&gt;Event: time 12.294799, -------------- Report Sync ------------&lt;br /&gt;Event: time 12.304840, type 3 (Absolute), code 1 (Y), value 245&lt;br /&gt;Event: time 12.305023, -------------- Report Sync ------------&lt;br /&gt;Event: time 12.315063, type 3 (Absolute), code 1 (Y), value 244&lt;br /&gt;Event: time 12.315277, type 3 (Absolute), code 2 (Z), value 56&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So, what's the next? Making it integrated into Android would be a good idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-3119835837779052849?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/3119835837779052849/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/11/build-3-axis-accelerometer-on.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/3119835837779052849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/3119835837779052849'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/11/build-3-axis-accelerometer-on.html' title='Build 3-axis Accelerometer on Beagleboard from Scratch'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_YkjZ-0s1Rbg/SxTsgDVsb_I/AAAAAAAAABM/7miDXbGhUUY/s72-c/dscf1100.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-6177152211122020336</id><published>2009-09-21T18:41:00.000-07:00</published><updated>2009-09-30T05:18:47.872-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Qi'/><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><category scheme='http://www.blogger.com/atom/ns#' term='beagleboard'/><title type='text'>Add omap3 beagleboard support in Qi</title><content type='html'>My previous post said adding support of beagleboard was the next step in &lt;a href="http://wiki.openmoko.org/wiki/Qi"&gt;Qi&lt;/a&gt;. It seems to be time to release this work. But it's not yet finished. There're couple things on my TODO list. Here is a brief HowTo of building Qi for beagleboard.&lt;br /&gt;&lt;br /&gt;- git clone git://git.warmcat.com/qi&lt;br /&gt;- git checkout -b beagle origin/omap3530&lt;br /&gt;- edit CROSS_TUPLE parameter in build script according to your setup&lt;br /&gt;- ./build&lt;br /&gt;- Using the &lt;a href="http://beagleboard.googlecode.com/files/signGP"&gt;signGP&lt;/a&gt; to manipulate qi image. The following is my script to generate bootable image for beagleboard.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#!/bin/sh -x&lt;br /&gt;signGP ./image/qi-omap3530*bin&lt;br /&gt;mv ./image/*.ift MLO&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://wiki.omap.com/index.php?title=MMC_Boot_Format"&gt;Make partitions&lt;/a&gt; for VFAT and EXT3 respectively in your SD card.&lt;br /&gt;- copy your rootfs into EXT3 partition&lt;br /&gt;- copy MLO file to VFAT partition&lt;br /&gt;- copy your kernel uImage to /boot/ directory and rename it as&lt;br /&gt;uImage-OMAPBEAGLE.bin&lt;br /&gt;- If you have any kernel command needed to add, you can add text file /boot/boot/append-OMAP_BEAGLE&lt;br /&gt;- Boot from SD        /* Holding USER key and press RESET key */&lt;br /&gt;&lt;br /&gt;If everything goes as well, you can see&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Qi Bootloader omap3530  matt-abacus omap3530_146fa25ffad66c65&lt;br /&gt;一 9月 21 19:01:16 CST 2009  Copyright (C) 2009 0xlab.org.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Detected: OMAP3530_BEAGLE, Beagle C3&lt;br /&gt;&lt;br /&gt;Trying kernel: SD Card rootfs&lt;br /&gt;Partition: 2 start +819315 512-byte blocks, size 266 MiB&lt;br /&gt;Found: "Linux-2.6.29-omap1-06519-gc3598"&lt;br /&gt;Size: 2089 KiB&lt;br /&gt;Cmdline: console=ttyS2,115200n8 init=/sbin/init loglevel=8 rootfstype=ext3 rootwait root=/dev/mmcblk0p2&lt;br /&gt;Starting ---&gt;&lt;br /&gt;&lt;br /&gt;Uncompressing Linux.........................................................................done, booting the kernel.&lt;br /&gt;Linux version 2.6.29-omap1-06519-gc3598c9-dirty (matt@matt-abacus) (gcc version 4.2.3 (SQL Star ARM Cross Toolchain 2008-beta1)) #395 Fri Sep 18 14:42:37 CST 2009&lt;br /&gt;CPU: ARMv7 Processor [411fc083] revision 3 (ARMv7), cr=10c5387f&lt;br /&gt;CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache&lt;br /&gt;Machine: OMAP3 Beagle Board&lt;br /&gt;Memory policy: ECC disabled, Data cache writeback&lt;br /&gt;On node 0 totalpages: 65536&lt;br /&gt;free_area_init_node: node 0, pgdat c0432be8, node_mem_map c04af000&lt;br /&gt;Normal zone: 512 pages used for memmap&lt;br /&gt;Normal zone: 0 pages reserved&lt;br /&gt;Normal zone: 65024 pages, LIFO batch:15&lt;br /&gt;OMAP3430 ES3.0&lt;br /&gt;SRAM: Mapped pa 0x40200000 to va 0xd7000000 size: 0x100000&lt;br /&gt;Reserving 12582912 bytes SDRAM for VRAM&lt;br /&gt;Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024&lt;br /&gt;Kernel command line: console=ttyS2,115200n8 init=/sbin/init loglevel=8 rootfstype=ext3 rootwait root=/dev/mmcblk0p2&lt;br /&gt;..........&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Here is my TODO list for reminding,&lt;br /&gt;&lt;br /&gt;- Add support for booting from NAND&lt;br /&gt;- Add hardware version detection&lt;br /&gt;&lt;br /&gt;PS. Since the DVI module would be only reset one time. So the flash phenomenon on the display device as getting into kernel would not be existed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-6177152211122020336?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/6177152211122020336/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/09/add-omap3-beagleboard-support-in-qi.html#comment-form' title='7 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/6177152211122020336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/6177152211122020336'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/09/add-omap3-beagleboard-support-in-qi.html' title='Add omap3 beagleboard support in Qi'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-1406504437297791396</id><published>2009-09-04T03:13:00.000-07:00</published><updated>2009-09-23T01:08:00.848-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenOCD'/><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><category scheme='http://www.blogger.com/atom/ns#' term='beagleboard'/><title type='text'>Getting start to know ARM-based debug system</title><content type='html'>It's a VERY VERY late post.&lt;br /&gt;&lt;br /&gt;When I was stuck on porting Qi on the beagleboard, the first thought is to use openOCD to see where problem is. Unfortunately, the support for ARM cortex A8 is provided but not full functional. The good thing of opensource is, anything goes wrong or you don't like it, you can just fix by yourself. But the assumption is, you need to know how to fix. So I can't help myself to start to learn the knowledge about ARM debug system. After the co-work with Holger, my ex-colleague, we have some progress to make openOCD work as we expect. He also posted the thing on his blog:&lt;br /&gt;&lt;br /&gt;-&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;a href="http://zecke.blogspot.com/2009/08/standing-on-shoulders-of-giants-fixing.html"&gt;Standing on the shoulders of giants - Fixing OpenOCD for the Beagleboard      &lt;br /&gt;&lt;/a&gt;&lt;br /&gt;If you are interesting with how to get familiar with ARM-based debug system for Cortex A8, Magnus provides a great introduction:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://arttools.blogspot.com/2009/09/debugging-on-cortex-a8-system.html"&gt;- Debugging on Cortex-A8, System components&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-1406504437297791396?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/1406504437297791396/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/09/getting-start-to-know-arm-based-debug.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/1406504437297791396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/1406504437297791396'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/09/getting-start-to-know-arm-based-debug.html' title='Getting start to know ARM-based debug system'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-7196446456644875081</id><published>2009-08-18T00:20:00.000-07:00</published><updated>2009-08-18T04:36:03.895-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xloader'/><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><category scheme='http://www.blogger.com/atom/ns#' term='beagleboard'/><title type='text'>Kill u-boot in the beagle board</title><content type='html'>If you want to boot up Linux kernel on the beagle board. You need to have two different-phase bootloaders for kernel. The first phase is &lt;a href="http://beagleboard.org/project/X-Loader/"&gt;xloader&lt;/a&gt; which take cares CPU, memory, vector table setup stuff. The second one is uboot, it provides interactive commands, verbose booting environment setup, initialization for lots perhiphals of SoC. Of course, it loads the kernel image eventually. But it might not be the best choice for you. Sometimes you just want to get into the kernel, that's it.&lt;br /&gt;&lt;br /&gt;I did some dirty hack here:&lt;br /&gt;&lt;br /&gt;http://0xlab.org/~matt/kill-uboot-patches/&lt;br /&gt;&lt;br /&gt;which against xloader&lt;br /&gt;http://gitorious.org/x-load-omap3/mainline/commit/319b26586fafb86f919f514bcd175838aaab96b3&lt;br /&gt;&lt;br /&gt;After applying these patches, you just need to put your xloader(MLO) and your kernel into SD card. Make beagle board boot from SDcard then. You will get a running kernel. But this is still not flexible somehow. Like, you need to edit and re-compile the xloader to change your kernel cmdline. My next plan is to support &lt;a href="http://wiki.openmoko.org/wiki/Qi"&gt;Qi boot loader&lt;/a&gt; in the beagle board.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-7196446456644875081?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/7196446456644875081/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/08/kill-u-boot-in-beagle-board.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/7196446456644875081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/7196446456644875081'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/08/kill-u-boot-in-beagle-board.html' title='Kill u-boot in the beagle board'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-6908779153327446217</id><published>2009-08-02T08:56:00.000-07:00</published><updated>2009-08-02T23:30:56.124-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0xlab'/><title type='text'>Dual MMC/SDIO support on Beagle board.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YkjZ-0s1Rbg/SnXCq-FsuRI/AAAAAAAAAAU/mUuaqIatMwY/s1600-h/DSCF0788.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_YkjZ-0s1Rbg/SnXCq-FsuRI/AAAAAAAAAAU/mUuaqIatMwY/s320/DSCF0788.JPG" alt="" id="BLOGGER_PHOTO_ID_5365408574559009042" border="0" /&gt;&lt;/a&gt;My recent work is to add 2nd MMC/SD support for Beagle board.&lt;br /&gt;The reason is simple, the 1st MMC/SD slot could be used as bootable device, the 2nd one could be the WLAN card interface (SDIO).&lt;br /&gt;&lt;br /&gt;To achieve this, you need to tinker your beagle board like the following.&lt;br /&gt;&lt;br /&gt;1. Attach the jumper on the location of J3(see &lt;a href="http://beagleboard.org/static/BBSRM_latest.pdf"&gt;schematic&lt;/a&gt;).&lt;br /&gt;2. Make a home brew cable to wire up the SDIO interface.&lt;br /&gt;&lt;br /&gt;The WLAN module shown on the below picture is GH600 from Azurewave.&lt;br /&gt;Its corresponding GPL-ed driver is available.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://android.git.kernel.org/?p=platform/system/wlan/broadcom.git;a=summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_YkjZ-0s1Rbg/SnXDMJ4ZRRI/AAAAAAAAAAc/vjJJhQKrdUY/s1600-h/DSCF0786.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_YkjZ-0s1Rbg/SnXDMJ4ZRRI/AAAAAAAAAAc/vjJJhQKrdUY/s320/DSCF0786.JPG" alt="" id="BLOGGER_PHOTO_ID_5365409144660116754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the host side, couple patches could make this work.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://gitorious.org/0xlab-kernel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enabling the 2nd MMC/SDIO slot has two approaches. The first one is to wire up the MMC2 slot directly. But the operating voltage of these ports are based on 1v8. Fortunately, the SDIO of this module could be signaling as low as 1v8. In this case,&lt;br /&gt;wiring up to the module directly is much simple.&lt;br /&gt;&lt;br /&gt;If the operating voltage of your WLAN module is around 2v6~3v3, transceiver is you plan B. Either designing a level shift circuit or using available voltage level translator could fulfill this requirement. I would suggest using level shift IC such as TXS0108E. &lt;a href="http://focus.ti.com/docs/prod/folders/print/txs0108e.html"&gt;TXS0108E&lt;/a&gt; is a level shift IC, whcih is designed for the expansion of MMC/SD/SDIO interface particularly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-6908779153327446217?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/6908779153327446217/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/08/dual-mmcsdio-support-on-beage-board.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/6908779153327446217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/6908779153327446217'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/08/dual-mmcsdio-support-on-beage-board.html' title='Dual MMC/SDIO support on Beagle board.'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_YkjZ-0s1Rbg/SnXCq-FsuRI/AAAAAAAAAAU/mUuaqIatMwY/s72-c/DSCF0788.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-6096111849987393104</id><published>2009-07-20T04:21:00.000-07:00</published><updated>2009-07-20T05:04:49.782-07:00</updated><title type='text'>壓力來自別人還是自己!?</title><content type='html'>I'm old school man. 對於生活的大事小事, 都是透過朋友及親人的傾聽來宣洩&lt;br /&gt;會想透過blog來紀錄一切, 可能是因為年紀大了, 記不住了&lt;br /&gt;&lt;br /&gt;最近嚴重的陷入自我否定的Loop, 雖然明知這種現象是一陣一陣, 也是有一番說詞可以解釋&lt;br /&gt;但就是擋不住自己的失落&lt;br /&gt;&lt;br /&gt;可能是因為跟Andy, Werner 共事過吧, 總覺得像是driver development, machine porting&lt;br /&gt;這類的事情應該並不是難事. 而實際上當所有的事情都得自己一步一步做的時候&lt;br /&gt;你會感覺像在山洞行走一般, 永遠不知道什麼時候會有出口&lt;br /&gt;&lt;br /&gt;漸漸的, 你會被"懷疑"的心魔給吞噬.&lt;br /&gt;&lt;br /&gt;吊詭的是, 沒有人給我壓力. 沒有人告訴我, 你應該要像誰誰誰一樣強&lt;br /&gt;你應該只花幾天就把事情搞定,你應該要送多少patch....諸如此類的.&lt;br /&gt;&lt;br /&gt;我不知道我能不能應付這些關卡&lt;br /&gt;我只求我能有勇氣,一步步去發掘自己的無限可能&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-6096111849987393104?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/6096111849987393104/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/07/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/6096111849987393104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/6096111849987393104'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/07/blog-post.html' title='壓力來自別人還是自己!?'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8469912421183119143.post-6347615772301719344</id><published>2009-06-03T19:50:00.000-07:00</published><updated>2009-06-03T19:52:43.145-07:00</updated><title type='text'>Hello! 0xlab</title><content type='html'>I love this team. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8469912421183119143-6347615772301719344?l=matthsu-abacus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://matthsu-abacus.blogspot.com/feeds/6347615772301719344/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/06/hello-0xlab.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/6347615772301719344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8469912421183119143/posts/default/6347615772301719344'/><link rel='alternate' type='text/html' href='http://matthsu-abacus.blogspot.com/2009/06/hello-0xlab.html' title='Hello! 0xlab'/><author><name>matt</name><uri>http://www.blogger.com/profile/01114029611991643298</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-dKximIur7dk/TaU9zUyf91I/AAAAAAAAAGk/NX8YnB0X3YY/s220/matt.gif'/></author><thr:total>0</thr:total></entry></feed>
