<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUQAQ3g7cSp7ImA9WhRVEUo.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310</id><updated>2012-01-10T14:35:42.609+08:00</updated><category term="dev" /><category term="不爽" /><category term="coffee" /><category term="惡搞" /><category term="食記" /><category term="game" /><category term="心情" /><category term="八卦" /><category term="電腦" /><title>GasVosky的芭樂格</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://yoko-hama.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>168</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Gasvosky" /><feedburner:info uri="gasvosky" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUQAQ3g4cCp7ImA9WhRVEUo.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-8613294494671807836</id><published>2012-01-10T14:34:00.001+08:00</published><updated>2012-01-10T14:35:42.638+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-10T14:35:42.638+08:00</app:edited><title>USB image tool</title><content type="html">備份一下這個工具&lt;div&gt;&lt;a href="http://www.alexpage.de/"&gt;http://www.alexpage.de/&lt;/a&gt; &lt;/div&gt;&lt;div&gt;它是整個 USB storage 備份/還原 的軟體, 所以 storage 有多大它就備份多少...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-8613294494671807836?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3S27RGPCuqgomFZAgTxclfOrhL8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3S27RGPCuqgomFZAgTxclfOrhL8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3S27RGPCuqgomFZAgTxclfOrhL8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3S27RGPCuqgomFZAgTxclfOrhL8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/Gv2qBAe1EYE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/8613294494671807836/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=8613294494671807836" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/8613294494671807836?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/8613294494671807836?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/Gv2qBAe1EYE/usb-image-tool.html" title="USB image tool" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2012/01/usb-image-tool.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YAQng5eCp7ImA9WhRWF0g.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-8749310245858060362</id><published>2012-01-05T16:11:00.002+08:00</published><updated>2012-01-05T16:12:23.620+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-05T16:12:23.620+08:00</app:edited><title>有關選舉...</title><content type="html">南方公園這集對選舉的描述, 中肯跟貼切的程度, 只有核彈爆炸可以比擬...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://disp.cc/b/163-2Tjf"&gt;http://disp.cc/b/163-2Tjf&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;南方公園S08E08，由於動物保護聯盟強烈譴責南方公園小學女籃隊的吉祥物是一隻乳牛，然後到南方公園小學去潑紅漆，搞到全校都很不爽，但是最後校方還是妥協了。&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;因此到最後學校準備了投票表決新吉祥物。憤怒的凱子決定發起南方公園吉祥物是"巨型浣腸器"的運動，用這種方法來表達南方公園小學生的不滿。&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;然後阿ㄆㄧㄚˇ拾人牙慧，推出另一個候選人"大便三明治"，後來學校重選吉祥物的事件演變成兩個超爛吉祥物候選人的PK戰，巨型浣腸器 vs 大便三明治。&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;屎蛋變成雙方拉票的焦點，但是他在遭受凱子派饒舌歌手拿槍威脅他(vote or die, bitch)投票之後，又受到阿ㄆㄧㄚˇ拿糖果賄選的雙重打擊之下，提出了"兩黨一樣爛，我決定不投票"的看法。&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;結果因為這個決定，讓屎蛋被自己老爸老媽，還有全南方公園的鎮民唾棄，還被他們驅逐出南方公園。&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;被驅逐的屎蛋因緣際會之下加入動保聯盟，沒想到動保聯盟只是一群熱愛人獸交的白痴，但是其中有一個動保聯盟的成員說了一番話，啟發了他：&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;小屎蛋，你說要在浣腸器跟大便中間選一個，很白痴，但問題是，自從有投票之後，所有人一向都是在浣腸器跟大便中間，選一個他們覺得比較好的，不管他們覺得浣腸器比較好，還是大便比較好。&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;最後想通的屎蛋終於回去南方公園投票了，因為他明白，雖然他只能在浣腸器跟大便中間選一個，但是這一票的價值是不容許抹滅的，而他如果什麼都不投，等於是蔑視自己身為公民的權利與義務，還有過去這麼多人犧牲性命與人生，所換來的民主成果以及社會價值。&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;這個故事告訴我們，當你以為你在享受民主成果的時候，你不是一個合格的公民，民主，自由，公民投票，這些東西不是你他媽的與生俱來的，是你的前輩，你的同胞，你的很多很多不太相關的人幫你爭取來的，當你以為你可以什麼都不付出就享受民主的權利，當你以為你可以什麼都不管就踐踏你自己的那張票，當你以為你可以輕視你那張票的價值的時候，你完全就搞不清楚狀況。&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;因為民主不只是你的權利，她還是你他媽的義務，因為只有每個人都不再輕視自己手上的票，只有當每個人都願意揹上自己這個選擇的責任，只有當每個人都願意為民主而鄭重且忠於良心地投下這一票，並且在選出浣腸器或者是大便之後，能夠把責任放在自己的選擇上面，民主才能夠真正延續，我們的未來才有一個真正的民主，而非死去的民主軀殼。&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;所以你懂了沒??小屁孩??&lt;/span&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;br style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;&lt;span style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; text-align: -webkit-auto; background-color: rgb(255, 255, 255); "&gt;不管你要選一號二號還是三號，快點去投票吧。&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-8749310245858060362?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oSgrao4cJ8hgacfKjcYSFLpCecg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oSgrao4cJ8hgacfKjcYSFLpCecg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oSgrao4cJ8hgacfKjcYSFLpCecg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oSgrao4cJ8hgacfKjcYSFLpCecg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/2k4hNj2j1eM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/8749310245858060362/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=8749310245858060362" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/8749310245858060362?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/8749310245858060362?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/2k4hNj2j1eM/blog-post.html" title="有關選舉..." /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2012/01/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IERX85eip7ImA9WhRQFUQ.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-2504778773742648954</id><published>2011-12-11T16:16:00.001+08:00</published><updated>2011-12-11T16:18:24.122+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-11T16:18:24.122+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="惡搞" /><title>[心得] intel 跟 microsoft 的差別..</title><content type="html">&lt;span class="Apple-style-span" style="color: rgb(17, 17, 17); font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 12px; line-height: 15px; background-color: rgb(255, 255, 255); "&gt;intel 努力把機器的速度從石器時代提升到文明時代,&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(17, 17, 17); font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 12px; line-height: 15px; background-color: rgb(255, 255, 255); "&gt;microsoft 努力把機器的速度從&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(17, 17, 17); font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 12px; line-height: 15px; background-color: rgb(255, 255, 255); "&gt;文明時代拉回到&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(17, 17, 17); font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 12px; line-height: 15px; background-color: rgb(255, 255, 255); "&gt;石器時代.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-2504778773742648954?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wH8DJdp93nwtUXEFPXSvKiImXjE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wH8DJdp93nwtUXEFPXSvKiImXjE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wH8DJdp93nwtUXEFPXSvKiImXjE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wH8DJdp93nwtUXEFPXSvKiImXjE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/YHN9CCpz11c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/2504778773742648954/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=2504778773742648954" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/2504778773742648954?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/2504778773742648954?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/YHN9CCpz11c/intel-microsoft.html" title="[心得] intel 跟 microsoft 的差別.." /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/12/intel-microsoft.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YCSH87eCp7ImA9WhRRFU8.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-4265962147798944562</id><published>2011-11-29T09:10:00.002+08:00</published><updated>2011-11-29T09:12:49.100+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-29T09:12:49.100+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>沒有標題</title><content type="html">ARM_VFPv2_R0P0_00BET0.zip 請不要問我這是什麼東西..&lt;div&gt;我只是很討厭 ARM 沒事情就亂改 link.&lt;/div&gt;&lt;div&gt;ｈｔｔｐｓ://skydrive.live.com/?cid=ea95177ed13eeda8&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=EA95177ED13EEDA8%21342&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-4265962147798944562?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VABQSHatnK4qbJ83C59sng9EebY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VABQSHatnK4qbJ83C59sng9EebY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VABQSHatnK4qbJ83C59sng9EebY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VABQSHatnK4qbJ83C59sng9EebY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/Bi_xoJEPsfw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/4265962147798944562/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=4265962147798944562" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/4265962147798944562?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/4265962147798944562?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/Bi_xoJEPsfw/blog-post.html" title="沒有標題" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/11/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04AQHw-cSp7ImA9WhRREE8.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-330648785768056077</id><published>2011-11-23T13:17:00.003+08:00</published><updated>2011-11-23T13:25:41.259+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-23T13:25:41.259+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>FAT 12/16/32 檔案讀寫機</title><content type="html">&lt;div&gt;修改自這個東西&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.zws.com/products/dosfs/index.html"&gt;http://www.zws.com/products/dosfs/index.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;因為這個會不時去讀 FAT, 往往會因為相對位址跳太遠造成 cache miss, 我就寫了一個 LRU cache 外掛給它用, 讓它即使是回去讀 FAT 都可以在 cache memory 裡找到資料. 檔案:&lt;/div&gt;https://skydrive.live.com/?cid=ea95177ed13eeda8&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=EA95177ED13EEDA8%21342#&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;原本這個軟體就是寫給 SD/MMC 卡用的, 還是需要自行將 raw data 讀寫 function 掛上去, 掛的方法可以參考 hostemu.h, hostemu.c 中的寫法.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;會特別去找這個東西, 是因為 eboot 中 aruba board bsp 中的 FAT 讀檔機讀 FAT32 會不明原因死當, 有個自己可以掌握的 code 以後也可以方便 porting 到 MCU 之類的東西上..&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-330648785768056077?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uBjYTZad2JPliweMk5bq1mjljo4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uBjYTZad2JPliweMk5bq1mjljo4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uBjYTZad2JPliweMk5bq1mjljo4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uBjYTZad2JPliweMk5bq1mjljo4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/pvUL-sn1XyY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/330648785768056077/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=330648785768056077" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/330648785768056077?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/330648785768056077?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/pvUL-sn1XyY/fat-121632.html" title="FAT 12/16/32 檔案讀寫機" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/11/fat-121632.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQNRH4_fip7ImA9WhRSEkg.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-277040508623055501</id><published>2011-11-14T13:56:00.002+08:00</published><updated>2011-11-14T13:59:55.046+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-14T13:59:55.046+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>CE 6.0 HIVE</title><content type="html">很久以前解掉的, 留一下筆記.&lt;div&gt;除了網路上找的到的設定以外, environment 裡加上兩個很重要的參數:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;PRJ_ENABLE_FSREGHIVE=1&lt;/div&gt;&lt;div&gt;PRJ_BOOTDEVICE_MSFLASH=1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這兩個的相關設定被擺在 &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C:\WINCE600\PUBLIC\COMMON\OAK\FILES\common.reg&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;裡, 而 PRJ_BOOTDEVICE_MSFLASH 這個跟用什麼 storage 存 HIVE 有關係.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-277040508623055501?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OpzzGEXPRzexr2ENg-V2txF4X1g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OpzzGEXPRzexr2ENg-V2txF4X1g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OpzzGEXPRzexr2ENg-V2txF4X1g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OpzzGEXPRzexr2ENg-V2txF4X1g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/R8KfyDaMr1k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/277040508623055501/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=277040508623055501" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/277040508623055501?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/277040508623055501?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/R8KfyDaMr1k/ce-60-hive.html" title="CE 6.0 HIVE" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/11/ce-60-hive.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEGRH0-cSp7ImA9WhRTGUQ.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-8356986622314648136</id><published>2011-11-11T15:18:00.003+08:00</published><updated>2011-11-11T15:47:05.359+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-11T15:47:05.359+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>i.MX35 e-boot splash</title><content type="html">&lt;div&gt;這個 driver 是別人從 i.MX31 IPU driver 中的 SDC.C 裡改出來的, 我再給它改成 i.MX35 使用, main function 是 OALDisplaySplashScreen(). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;改到 i.MX35要更動的東西, 我現在只剩下記得: &lt;/div&gt;&lt;div&gt;1.DISP3 pin (DISP0~2 是 ADC 用的非 SDC 用的).&lt;/div&gt;&lt;div&gt;2.CCM 中 IPU clock 對應的啟動 bits 要打開, i.MX35 上是 CCM[1] bit 18,19. &lt;/div&gt;&lt;div&gt;3.DMA address, i.MX35 我把它指到 image_cfg.h 中 IPU_PA_START, i.MX31 跟 i.MX35 的 frame buffer 地點似乎都不一樣, 寫圖片載入器時記得加載到 OALPAtoUA(IMAGE_BOOT_DISPLAY_RAM_START) 去.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這裡預設的圖片格式是 RGB565 而非 windows 的 ARGB1555, 寫轉換程式時要梢加注意.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;兩個要自行 implement.&lt;/div&gt;&lt;div&gt;1.LCD power GPIO pin, 這個要記得給它 enable 而且打開.&lt;/div&gt;&lt;div&gt;2.圖片載入. 這個可能從外面讀進來, 可能從 image 裡解壓縮出來, 不一定, 看使用者高興.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;檔案下載:&lt;/div&gt;&lt;div&gt;https://skydrive.live.com/?cid=ea95177ed13eeda8&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=EA95177ED13EEDA8%21342#&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;source code:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#pragma warning(disable: 4100 4115 4201 4204 4214 4702)&lt;/div&gt;&lt;div&gt;#include &lt;bsp.h&gt;&lt;/bsp.h&gt;&lt;/div&gt;&lt;div&gt;#include &lt;common_ipu.h&gt;&lt;/common_ipu.h&gt;&lt;/div&gt;&lt;div&gt;#include "loader.h"&lt;/div&gt;&lt;div&gt;// Defines&lt;/div&gt;&lt;div&gt;#define FLOW_ARM&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;0&lt;/div&gt;&lt;div&gt;#define SDC_DMA_CHANNEL&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;IPU_DMA_CHA_DMASDC_0_LSH&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//  background&lt;/div&gt;&lt;div&gt;//#define SDC_DMA_CHANNEL&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;IPU_DMA_CHA_DMASDC_1_LSH&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//  background&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// #define IMAGE_BOOT_DISPLAY_RAM_START&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;IMAGE_WINCE_IPU_RAM_PA_START&lt;/div&gt;&lt;div&gt;// #define IMAGE_BOOT_DISPLAY_RAM_SIZE&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;IMAGE_WINCE_IPU_RAM_SIZE&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;BOOL OALDisplaySplashScreen(void);&lt;/div&gt;&lt;div&gt;void DumpIMA(PCSP_IPU_REGS&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;pIPU, int ch);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// i.MX35 Registers&lt;/div&gt;&lt;div&gt;static PCSP_CCM_REGS&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g_pCCM&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0;&lt;/div&gt;&lt;div&gt;static PCSP_IOMUX_REGS&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g_pIOMUX&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0;&lt;/div&gt;&lt;div&gt;static PCSP_IPU_REGS&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g_pIPU&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0;&lt;/div&gt;&lt;div&gt;extern BOOL NANDLoadLogoPicture(VOID);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// Init the IPU DMA module&lt;/div&gt;&lt;div&gt;static void SetupIDMAC(int width, int height, int bpp, int nFlip, const int channel)&lt;/div&gt;&lt;div&gt;{&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//setup IDMAC Channel Parameter Memory.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;UINT32 bpp_code, npb_code, sat_code, bam_code, ofs[4], wid[4];&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//=================================&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Configure First 132 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//=================================&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Default access type to 32-bit&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;sat_code&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;2;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;bam_code&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;nFlip ? 1 : 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;npb_code&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;switch (bpp)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;case 32:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;bpp_code = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;npb_code = 8 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[0] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[1] = 8;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[2] = 16;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[3] = 24;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[0] = 8 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[1] = 8 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[2] = 8 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[3] = 8 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;break;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;case 24:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;bpp_code = 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;npb_code = 10 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;sat_code = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[0] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[1] = 8;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[2] = 16;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[3] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[0] = 8 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[1] = 8 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[2] = 8 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[3] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;break;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;case 16:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;bpp_code = 2;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;npb_code = 16 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[0] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[1] = 5;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[2] = 11;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[3] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[0] = 5 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[1] = 6 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[2] = 5 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[3] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;break;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;case 8:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;bpp_code = 3;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;npb_code = 32 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[0] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[1] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[2] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[3] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[0] = 8 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[1] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[2] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[3] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;break;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;case 4:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;bpp_code = 4;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;npb_code = 32 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[0] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[1] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[2] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[3] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[0] = 4 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[1] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[2] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[3] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;break;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;case 1:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;bpp_code = 5;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;npb_code = 64 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[0] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[1] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[2] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ofs[3] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[0] = 1 - 1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[1] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[2] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;wid[3] = 0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;break;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;default:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;bpp_code = 7;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// TODO:  Should report error here.  bpp_code is reserved.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;break;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Set IPU_IMA_ADDR (IPU Internal Memory Access Address)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_ADDR,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_ADDR_MEM_NU, IPU_IMA_ADDR_MEM_NU_CPM) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_ADDR_ROW_NU, (2 * channel )) | // channel is 14&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_ADDR_WORD_NU, 0));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//...0th 32 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// XV [9:0], YV [19:10], XB [31:20]&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_DATA,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_XV, 0) | // 0&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_YV, 0) | // 10&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_XB, 0)); // 20&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//...1st 32 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// YB [11:0], SCE [12], RESERVED [13], NSB [14], LNPB [20:15], SX [30:21],&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// SY~ [31]&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// - Set NSB&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_DATA,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_YB, 0) |&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// 32-32&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_SCE, 0) |&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// 44-32&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_NSB, 1) |&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// 46-32&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_LNPB, 0) |  // 47-32&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_SX, 0) |&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// 53-32&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_LOW_SY, 0)); // 63-32&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//...2nd 32 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// ~SY [8:0], NS [18:9], SM [28:10] SDX~ [31:29]&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_DATA,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_HIGH_SY, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_NS, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_SM, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_LOW_SDX, 0));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//...3rd 32 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// ~SDX [1:0], SDY [6:2], SDRX [7], SDRY [8], SCRQ [9], RESERVED [11:10]&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// - FW [23:12], FH~ [31:24]&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// - Set FW &amp;amp; FH&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_DATA,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_HIGH_SDX, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_SDY, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_SDRX, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_SDRY, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_SCRQ, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_FW, (width - 1)) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_LOW_FH, (height - 1)));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//...4th 32 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// ~FH [3:0]&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// NOTE: this takes care of the upper four bits in the FH field&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_DATA, ((height - 1) &amp;gt;&amp;gt; 8));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//=================================&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Configure Second 132 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//=================================&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if(channel == IPU_DMA_CHA_DMASDC_0_LSH || channel == IPU_DMA_CHA_DMASDC_1_LSH)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// Set IPU IPU_IMA_ADDR (IPU Internal Memory Access Address)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// MEM_NU = 0x0001 (CPM)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// ROW_NU = 2*N + 1 (N is channel number)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// WORD_NU = 0&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;OALMSG(1, (TEXT("SDC DMA addr 0x%08x\r\n"), IMAGE_BOOT_DISPLAY_RAM_START));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_ADDR,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_ADDR_MEM_NU, IPU_IMA_ADDR_MEM_NU_CPM) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_ADDR_ROW_NU, (2 * channel + 1)) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_ADDR_WORD_NU, 0));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//...parameters for YUV/RGB interleaved - 2nd 132 bit word&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//...0th 32 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// EBA0 [31:0], double buffer page 0&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// Set buffer #1 to physical frame buffer address&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// 在這裡設定 double buffer page 0 起始位置, 必需是絕對位址.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_DATA, IMAGE_BOOT_DISPLAY_RAM_START);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//...1st 32 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;// EBA1 [31:0], double buffer page 1&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_DATA, 0);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;else&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//..skip over EBA0 and EBA1 for the viewfinder mode&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//.. Set IPU_IMA_ADDR (IPU Internal Memory Access Address)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//EBA0 與 EBA1 不設定, ADDR_WORD_NU = 2 表從第二個 dword 開始設定.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_ADDR,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_ADDR_MEM_NU, IPU_IMA_ADDR_MEM_NU_CPM) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_ADDR_ROW_NU, (2 * channel + 1)) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_ADDR_WORD_NU, 2));&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//...2nd 32 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// - BPP [2:0], SL [16:3], PFS [19:17], BAM [24:20], NPB [30:25],&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// - RESERVED [31]&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// - Set BPP to 24bpp (1)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// - Set SL (Scaling Factor) to bytes_pp * width&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// - Set PFS (Packing) to RGB (%100)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_DATA,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_BPP, bpp_code) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_SL, ((width * bpp / 8) - 1)) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_PFS, 0x4) |&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//0x4 是 RGB&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_BAM, bam_code) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_NPB, npb_code));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//...3rd 32 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// SAT [1:0], SCC [2], OFS0 [7:3], 0FS1 [12:8], OFS2 [17:13], OFS3 [22:18]&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// - WID0 [25:23], WID1 [28:26], WID2 [31:29]&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_DATA,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_SAT, sat_code) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_SCC, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_OFS0, ofs[0]) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_OFS1, ofs[1]) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_OFS2, ofs[2]) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_OFS3, ofs[3]) |&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_WID0, wid[0]) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_WID1, wid[1]) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_IMA_DATA_PARAM_WID2, wid[2]));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//...4th 32 bit word&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// WID3 [2:0], DEC_SEL [3],&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Set WID3 (7 - 8 bit size), Color component 3 width (Alpha)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_IMA_DATA,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL(IPU_IPU_IMA_DATA_PARAM_WID3, wid[3]));&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static void EnableSDC2(void)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g_pIOMUX&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;(PCSP_IOMUX_REGS)OALPAtoUA(CSP_BASE_REG_PA_IOMUXC);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g_pIPU&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;(PCSP_IPU_REGS)OALPAtoUA(CSP_BASE_REG_PA_IPU);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g_pCCM&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;(PCSP_CCM_REGS)OALPAtoUA(CSP_BASE_REG_PA_CCM);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Configure IOMUX to request IPU SDC pins&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD0, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD1, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD2, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD3, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD4, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD5, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD6, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD7, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD8, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD9, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD10, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD11, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD12, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD13, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD14, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD15, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD16, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD17, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD18, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD19, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD20, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD21, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD22, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_LD23, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_D3_VSYNC, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_D3_HSYNC, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_D3_FPSHIFT, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_D3_DRDY, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_D3_REV, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);//&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_D3_CLS, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);//&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_D3_SPL, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);//&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OAL_IOMUX_SET_MUX(g_pIOMUX, DDK_IOMUX_PIN_CONTRAST, DDK_IOMUX_PIN_MUXMODE_ALT0, DDK_IOMUX_PIN_SION_REGULAR);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Enable DI and SDC&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;SETREG32(&amp;amp;g_pIPU-&amp;gt;IPU_CONF,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_CONF_DI_EN, IPU_IPU_CONF_DI_EN_ENABLE) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_CONF_SDC_EN, IPU_IPU_CONF_SDC_EN_ENABLE));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Enable DMA SDC Channel 0&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IDMAC_CHA_EN,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;IPU_DMA_CHA_DMASDC_0, IPU_ENABLE);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Enable SDC background&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Set BG_EN = 1 (Background is enabled)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;SDC_COM_CONF,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;IPU_SDC_COM_CONF_BG_EN, IPU_ENABLE);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Set DMA SDC Channel 0 as ready&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IPU_CHA_BUF0_RDY,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;IPU_DMA_CHA_DMASDC_0, IPU_DMA_CHA_READY);&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static void InitializeSDC2(void)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;    UINT32&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g_IPUCLK&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0x7ed6b40;&lt;/div&gt;&lt;div&gt;    UINT32 m_PixelClock =&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0, m_PixelDivider;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INT WIDTH &lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;320;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//以下參數比照 driver 中 sdc.c 的修改值.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INT HEIGHT &lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;240;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INT VSYNCWIDTH  &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INT VSTARTWIDTH &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;17;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INT VENDWIDTH &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;4;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INT HSYNCWIDTH &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INT HSTARTWIDTH &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;67;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INT HENDWIDTH &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;20;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// map registers&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g_pIOMUX&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;(PCSP_IOMUX_REGS)OALPAtoUA(CSP_BASE_REG_PA_IOMUXC);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g_pIPU&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;(PCSP_IPU_REGS)OALPAtoUA(CSP_BASE_REG_PA_IPU);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;g_pCCM&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;(PCSP_CCM_REGS)OALPAtoUA(CSP_BASE_REG_PA_CCM);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Enable clock to IPU -- bits 18-19 of CGR1&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Read in current value, "or" it with bits 22-23, write the value back to the register&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32( &amp;amp;g_pCCM-&amp;gt;CGR[1], INREG32(&amp;amp;g_pCCM-&amp;gt;CGR[1]) | 0xc0000 );&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//----- General configuration&lt;/div&gt;&lt;div&gt;       //step 1&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Set little endian&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IPU_CONF, IPU_IPU_CONF_PXL_ENDIAN, IPU_LITTLE_ENDIAN);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//----- Display interface configuration&lt;/div&gt;&lt;div&gt;       //step 2&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//... SDC_COM_CONF&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32( &amp;amp;g_pIPU-&amp;gt;SDC_COM_CONF,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//.. SDC mode, TFT color&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL(IPU_SDC_COM_CONF_SDC_MODE, IPU_SDC_MODE_TFT_COLOR) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//.. sharp pannel enable&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL(IPU_SDC_COM_CONF_SHARP, 0x0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//.. dual mode disable, only smart lcd supports dual mode&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL(IPU_SDC_COM_CONF_DUAL_MODE, 0));&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;       //step 3, setup panel&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//... SDC_HOR_CONF&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32( &amp;amp;g_pIPU-&amp;gt;SDC_HOR_CONF,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//.. display width for tearing and Vsync calculation&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// Screen width minus 1. Specifies the number of pixel clock periods between&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// the last HSYNC and the new HSYNC.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL(IPU_SDC_HOR_CONF_SCREEN_WIDTH, (WIDTH + HSTARTWIDTH + HENDWIDTH )) | //nathan&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//.. horizontal synchronization pulse, actually hsync pulse width is 1&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL(IPU_SDC_HOR_CONF_H_SYNC_WIDTH, HSYNCWIDTH - 1));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//... SDC_VER_CONF&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32( &amp;amp;g_pIPU-&amp;gt;SDC_VER_CONF,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//..line/pixel resolution&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL(IPU_SDC_VER_CONF_V_SYNC_WIDTH_L, 0x1) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//..display height for tearing and Vsync calculation&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL(IPU_SDC_VER_CONF_SCREEN_HEIGHT, (HEIGHT + VSTARTWIDTH + VENDWIDTH)) | //nathan&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//..vsync size, vsync width is 1&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL(IPU_SDC_VER_CONF_V_SYNC_WIDTH, VSYNCWIDTH));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;       //step 4&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;DI_DISP_IF_CONF,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//..data mask for display 3&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP_IF_CONF_DISP3_DATAMSK, 0x0) | //0&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// select interface display clock for display 3&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP_IF_CONF_DISP3_CLK_SEL, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// display clock idle enable&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP_IF_CONF_DISP3_CLK_IDLE, 0)); // 0x1&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;DI_DISP_SIG_POL,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//..1: inverse data polarity&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP_SIG_POL_D3_DATA_POL, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//..display interface clock polarity&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP_SIG_POL_D3_CLK_POL, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//..1: active high horizontal signal polarity&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP_SIG_POL_D3_HSYNC_POL, 1) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//..1: active high vertical signal polarity&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP_SIG_POL_D3_VSYNC_POL, 1) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// output enable polarity&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP_SIG_POL_D3_DRDY_SHARP_POL, 1));&lt;/div&gt;&lt;div&gt;                  &lt;/div&gt;&lt;div&gt;       //step 5&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// HSP_CLK = 133 MHz&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// DI_CLK = HSP_CLK * HSP_CLOCK_PER = 133 MHz&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;==&amp;gt; HSP_CLOCK_PER = 1&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// these are 7 bit fields iiiffff&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// where i = integer part and f = fractional part of the value&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;DI_HSP_CLK_PER,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_HSP_CLK_PER_HSP_CLK_PERIOD_1, 1 &amp;lt;&amp;lt; 4) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_HSP_CLK_PER_HSP_CLK_PERIOD_2, 1 &amp;lt;&amp;lt; 4));&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;m_PixelClock = ( WIDTH + HSTARTWIDTH + HSYNCWIDTH + HENDWIDTH) * ( HEIGHT + VSTARTWIDTH + VSYNCWIDTH + VENDWIDTH) * 60;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;   g_IPUCLK = 0x7ed6b40;&lt;/div&gt;&lt;div&gt;    m_PixelDivider = (g_IPUCLK &amp;lt;&amp;lt; 4) / m_PixelClock;    // g_IPUClk is 0x3F6B5A0&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    if (m_PixelDivider &amp;lt; 0x40) // Divider less than 4&lt;/div&gt;&lt;div&gt;    {&lt;/div&gt;&lt;div&gt;        DEBUGMSG(SDC_ERROR,&lt;/div&gt;&lt;div&gt;            (TEXT("InitPanel() - Pixel clock divider less than 1\r\n")));&lt;/div&gt;&lt;div&gt;        m_PixelDivider = 0x40;&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;    OUTREG32(&amp;amp;g_pIPU-&amp;gt;DI_DISP3_TIME_CONF,&lt;/div&gt;&lt;div&gt;                  //..write strobe end&lt;/div&gt;&lt;div&gt;                  CSP_BITFVAL( IPU_DI_DISP3_TIME_CONF_DISP3_IF_CLK_DOWN_WR, (m_PixelDivider / 8) - 1) |&lt;/div&gt;&lt;div&gt;                  //.. period&lt;/div&gt;&lt;div&gt;                  CSP_BITFVAL( IPU_DI_DISP3_TIME_CONF_DISP3_IF_CLK_PER_WR, m_PixelDivider));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//step 6&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//... DI_DISP_ACC_CC&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;DI_DISP_ACC_CC,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// Display clock cycles number minus 1 for output/input one data word. This&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// bit describe in which clock displayed bit is masked.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;IPU_DI_DISP_ACC_CC_DISP3_IF_CLK_CNT_D, 0);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;      //step 7&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//... DI_DISP3_B0_MAP&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;DI_DISP3_B0_MAP,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// set0; data offset&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_OFFS0, 0x5) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_OFFS1, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_OFFS2, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// set0; data maping&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// mask LSB&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_M0, 3) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// mask LSB&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_M1, 3) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// Enable LSB in the first clock cycle&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_M2, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// enable LSB in the first clock cycle&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_M3, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// enable LSB in the first clock cycle&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_M4, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// enable LSB in the first clock cycle&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_M5, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// enable LSB in the first clock cycle&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_M6, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// enable LSB in the first clock cycle&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B0_MAP_M30_M7, 0));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//... DI_DISP3_B1_MAP&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;DI_DISP3_B1_MAP,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// set1; data offset&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_OFFS0, 0xb) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_OFFS1, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_OFFS2, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// set1; data maping&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_M0, 3) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_M1, 3) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_M2, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_M3, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_M4, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_M5, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_M6, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B1_MAP_M31_M7, 0));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//... DI_DISP3_B2_MAP&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;DI_DISP3_B2_MAP,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// set2; data offset&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_OFFS0, 0x11) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_OFFS1, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_OFFS2, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// set2; data maping&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_M0, 3) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_M1, 3) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_M2, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_M3, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_M4, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_M5, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_M6, 0) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_DI_DISP3_B2_MAP_M32_M7, 0));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;       //step 8&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//----- SDC Configuration&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//Select graphic window to be on foreground or background.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// background selected&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;SDC_COM_CONF,&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;IPU_SDC_COM_CONF_GWSEL, IPU_SDC_COM_CONF_GWSEL_BG);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Graphic window alpha mode. Select the use of alpha to be global or local.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// global alpha selcted&lt;/div&gt;&lt;div&gt;// &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;SDC_COM_CONF,&lt;/div&gt;&lt;div&gt;// &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;IPU_SDC_COM_CONF_SDC_GLB_LOC_A, 1);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//disable alpha channel, 這部份是參考 u-boot 2011.09 的版本.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;SDC_GRAPH_WIND_CTRL, INREG32(&amp;amp;g_pIPU-&amp;gt;SDC_GRAPH_WIND_CTRL) &amp;amp; 0x00ffffffL);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;UINT32&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;reg;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;reg&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INREG32(&amp;amp;g_pIPU-&amp;gt;SDC_COM_CONF);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//Graphic window alpha mode is global (1).&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;reg&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;|=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0x40L;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//Graphic window select. Graphic window is background (0).&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;reg&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;amp;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;~0x20L;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;//Graphic window color keying enable, Disable color keying of graphic window (0)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;reg&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&amp;amp;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;~0x80L;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;SDC_COM_CONF, reg);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;SDC_BG_POS,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_SDC_BG_POS_BGXP, HSTARTWIDTH) | //nathan&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_SDC_BG_POS_BGYP, VSTARTWIDTH)); //nathan&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;SDC_FG_POS,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_SDC_FG_POS_FGXP, HSTARTWIDTH+1) | //nathan&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_SDC_FG_POS_FGYP, VSTARTWIDTH)); //nathan&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;       //step 9&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//----- IDMAC Configuration&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Set no double-buffer, use single buffer&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IPU_CHA_DB_MODE_SEL, IPU_DMA_CHA_DMASDC_0, IPU_SIG_BUF); //14&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IPU_CHA_DB_MODE_SEL, IPU_DMA_CHA_DMASDC_1, IPU_SIG_BUF); //15&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Set buffer 0 as current buffer (non double buffered)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// for chanel DMASDC_0, current buffer is buffer 0&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IPU_CHA_CUR_BUF, IPU_DMA_CHA_DMASDC_0, IPU_SIG_BUF);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// for chanel DMASDC_1, current buffer is buffer 0 too.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IPU_CHA_CUR_BUF, IPU_DMA_CHA_DMASDC_1, IPU_SIG_BUF);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Set high priority for DMA SDC Channel 0&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IDMAC_CHA_PRI,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;IPU_DMA_CHA_DMASDC_0, 1);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Set high priority for DMA SDC Channel 1&lt;/div&gt;&lt;div&gt;  &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IDMAC_CHA_PRI,&lt;/div&gt;&lt;div&gt;  &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;IPU_DMA_CHA_DMASDC_1, 1);&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//original is 1.&lt;/div&gt;&lt;div&gt;    // Set high priority for DMA SDC Channel 1&lt;/div&gt;&lt;div&gt;//     INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IDMAC_CHA_PRI,&lt;/div&gt;&lt;div&gt;//                 IPU_DMA_CHA_DMASDC_3, 1);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;       // Set max for consecutive bursts for each channel&lt;/div&gt;&lt;div&gt;      INSREG32BF(&amp;amp;g_pIPU-&amp;gt;IDMAC_CONF,&lt;/div&gt;&lt;div&gt;                IPU_IDMAC_CONF_SRCNT, 7);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Select source of SDC channel as ARM&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// SDC background channel 0 source select as MCU(arm).&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// SDC foreground channel 1 source select as MCU(arm).&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;IPU_FS_DISP_FLOW,&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_FS_DISP_FLOW_SDC0_SRC_SEL, FLOW_ARM) |&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_IPU_FS_DISP_FLOW_SDC1_SRC_SEL, FLOW_ARM));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Turn contrast fully on&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;OUTREG32(&amp;amp;g_pIPU-&amp;gt;SDC_CUR_BLINK_PWM_CTRL,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt; // Source select. Selects the input clock source for the PWM counter. The&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt; // PWM output frequency is equal to the frequency of the input clock divided by 256.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt; // source select as pixel clock&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_SDC_CUR_BLINK_PWM_CTRL_SCR, 1) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;// Contrast control is on.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_SDC_CUR_BLINK_PWM_CTRL_CC_EN, 1) |&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;//&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;CSP_BITFVAL( IPU_SDC_CUR_BLINK_PWM_CTRL_PWM, 0xffL));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;SetupIDMAC(320, 240, 16, FALSE, IPU_DMA_CHA_DMASDC_0_LSH); // SDC_DMA_CHANNEL is 14&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;BOOL OALDisplaySplashScreen(void)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;InitializeSDC2();&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//NANDLoadLogoPicture();&lt;/div&gt;&lt;div&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;EnableSDC2();&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;    OALMSG(1, (TEXT("-DisplaySplashScreen(%d)\r\n"), success));&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;return&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;TRUE;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-8356986622314648136?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wIITywuAgG68ul8L5vOCDoTiMfo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wIITywuAgG68ul8L5vOCDoTiMfo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wIITywuAgG68ul8L5vOCDoTiMfo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wIITywuAgG68ul8L5vOCDoTiMfo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/fEPBjOJSsRI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/8356986622314648136/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=8356986622314648136" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/8356986622314648136?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/8356986622314648136?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/fEPBjOJSsRI/imx35-e-boot-splash.html" title="i.MX35 e-boot splash" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/11/imx35-e-boot-splash.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIEQH05cSp7ImA9WhdbGUw.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-486753740005865255</id><published>2011-10-17T19:16:00.005+08:00</published><updated>2011-10-18T12:51:41.329+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-18T12:51:41.329+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>Windows CE 多語系切換</title><content type="html">&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-3AKD0W7RpUA/Tp0C2vq-ROI/AAAAAAAAAvk/vqu4k3r5hDs/s1600/1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;這裡要講的是一個以上非英語系的切換. 首先感謝 &lt;a href="http://johnny0627.blogspot.com/2011/02/wince.html"&gt;http://johnny0627.blogspot.com/2011/02/wince.html&lt;/a&gt; 這篇裡講到如何實作英語與法語間的切換實作. 不過在下用的 BSP 上有一個問題是, 在 rebuild driver 時會順路把這些 MUI 的 .exe 跟 .dll 清掉, 為了解決這個問題, 我把方法重寫一下. 基本上根本作法跟這篇寫的一樣, 只是有幾個重點:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1.build 時設定非英語語系當主要語系, 否則 "user interface language" 裡不給你選.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.這裡假設我們要簡中, 英文, 日文這三個語系, 就在 build -&amp;gt; open release directory in build window 裡下指令建立 MUI 所需的檔案: createmui 0409 0411 0804. (1.前面沒有 0x, MSDN 寫說前面要接 0x 如 0x409, 這樣反而會找不到檔案. 2.中間是空格, 有人說是逗點 ',' 我試過後者似乎也可以用) 建立一大票 .exe 跟 .dll, 還有 multiui.bib&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3.如引用文章所說, 把 multiui.bib 中 k.core 開頭的敘述都拿掉.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4.參考 BSP 裡擺檔案的路徑與擺法, 如我的 BSP 擺 \windows 是 "$(_FLATRELEASEDIR)\", 那麼就把 bulti.bib 裡的路徑加個... 例如說是 "_mui", 改成 "$(_FLATRELEASEDIR)\_mui\" 這樣.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5.把剛剛建好, 擺在 release 目錄裡的那群 .exe .dll (目錄為 mui) copy 到 &lt;/div&gt;&lt;div&gt;(_$platfrom)\FILES\_mui (此時後面的 _mui 就是 4. 講的例子) 裡.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;6.這時再修改 (_$platfrom)\FILES\platfrom.bib 中的檔案清單, 把 multiui.bib 中已修改過路徑的內容貼到尾端.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這時整個 BSP 不管怎麼建, 這些檔案都會在, 而且不會因為重 build 就消失, 還要再回 console 裡再下一次指令.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;如果沒有成功的話, 可以檢查看看檔案有沒有被綁進去. 首先隨便開一個 folder 如 my document, 選到 "view -&amp;gt; option" 這裡, 如圖:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-3AKD0W7RpUA/Tp0C2vq-ROI/AAAAAAAAAvk/vqu4k3r5hDs/s1600/1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://4.bp.blogspot.com/-3AKD0W7RpUA/Tp0C2vq-ROI/AAAAAAAAAvk/vqu4k3r5hDs/s400/1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5664687045834851554" style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;可以看到這三個item&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/-a0XZ21wJIpk/Tp0DH8TAhyI/AAAAAAAAAwI/0uZvReku7GQ/s1600/2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://3.bp.blogspot.com/-a0XZ21wJIpk/Tp0DH8TAhyI/AAAAAAAAAwI/0uZvReku7GQ/s400/2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5664687341281773346" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;br /&gt;把勾選全拿掉後&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-aJPftn1fKp4/Tp0DDzQ4qTI/AAAAAAAAAv8/5LrWRja5NO0/s1600/3.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://3.bp.blogspot.com/-aJPftn1fKp4/Tp0DDzQ4qTI/AAAAAAAAAv8/5LrWRja5NO0/s400/3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5664687270137473330" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;br /&gt;在 windows 目錄下查看是不是有 .0409 這類的檔案:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-tsn3DMgAlmU/Tp0C95411WI/AAAAAAAAAvw/XkGn-KwI5lg/s1600/4.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://4.bp.blogspot.com/-tsn3DMgAlmU/Tp0C95411WI/AAAAAAAAAvw/XkGn-KwI5lg/s400/4.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5664687168836457826" style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;檔案有確實綁進去的話, 控制臺底下的語言控制選項才會出現.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-486753740005865255?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ltQ4l4xu_Q11thFPlz2FmahqctU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ltQ4l4xu_Q11thFPlz2FmahqctU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ltQ4l4xu_Q11thFPlz2FmahqctU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ltQ4l4xu_Q11thFPlz2FmahqctU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/hDPe3Y4b8OI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/486753740005865255/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=486753740005865255" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/486753740005865255?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/486753740005865255?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/hDPe3Y4b8OI/windows-ce.html" title="Windows CE 多語系切換" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-3AKD0W7RpUA/Tp0C2vq-ROI/AAAAAAAAAvk/vqu4k3r5hDs/s72-c/1.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/10/windows-ce.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IASXg_cCp7ImA9WhdbGE8.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-1513275878357895178</id><published>2011-10-17T11:11:00.002+08:00</published><updated>2011-10-17T11:19:08.648+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-17T11:19:08.648+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>[筆記] Windows CE eboot 裡自己加選單</title><content type="html">我改的是 FreeScale 的 BSP, 因為 eboot 選單會隨著每種 BSP 的不同而自訂出不一樣的功能, FreeScale i.MX35 裡的是在:&lt;div&gt;C:\WINCE600\PLATFORM\iMX35-3DS-PDK1_7\SRC\BOOTLOADER\EBOOT\menu.c&lt;/div&gt;&lt;div&gt;中, 語法大概是這樣:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;BOOL BLrescure_cmd(BLMENU_ITEM *pMenu);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#define MENUrescure { L'A', L"rescure from SD", BLrescure_cmd, 0, 0, 0 }&lt;/div&gt;&lt;div&gt;#define SocMenu MENUrescure, Null_Menu&lt;/div&gt;&lt;div&gt;#define MainMenu  { CommonMenu, SocMenu } &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;// Local Variables&lt;/div&gt;&lt;div&gt;static BLMENU_ITEM g_menu[] = MainMenu;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;基本上 g_menu 裡擺的全是 BOOL (BLMENU_ITEM*) 的 function pointer, 而擺進去的 function 就自己在外面另開 .c 去 implement 就可以, 只是要留意一下各家 BSP 對 BLmenu() 的處理手法都不太一樣, 隨著 return 值的不同, 有的還可以跳回選單, 有的就直接跳去開機.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-1513275878357895178?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZlWymafpCYQhm4QTHQKp6Przslw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZlWymafpCYQhm4QTHQKp6Przslw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZlWymafpCYQhm4QTHQKp6Przslw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZlWymafpCYQhm4QTHQKp6Przslw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/ioUBp00lIu0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/1513275878357895178/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=1513275878357895178" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/1513275878357895178?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/1513275878357895178?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/ioUBp00lIu0/windows-ce-eboot.html" title="[筆記] Windows CE eboot 裡自己加選單" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/10/windows-ce-eboot.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQNQ3czeCp7ImA9WhdUEEk.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-5660500552770242092</id><published>2011-09-26T22:29:00.001+08:00</published><updated>2011-09-26T22:29:52.980+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-26T22:29:52.980+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="惡搞" /><title>我工作兩年來得到的東西</title><content type="html">&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-5660500552770242092?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qwXAE0sTv-gDyG6DHeO37ZE_BoY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qwXAE0sTv-gDyG6DHeO37ZE_BoY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qwXAE0sTv-gDyG6DHeO37ZE_BoY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qwXAE0sTv-gDyG6DHeO37ZE_BoY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/kIQ61ivzE0U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/5660500552770242092/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=5660500552770242092" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/5660500552770242092?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/5660500552770242092?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/kIQ61ivzE0U/blog-post_26.html" title="我工作兩年來得到的東西" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/09/blog-post_26.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQNQ3w7fyp7ImA9WhdWEUQ.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-2037298824277648781</id><published>2011-09-05T10:13:00.002+08:00</published><updated>2011-09-05T10:39:52.207+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-05T10:39:52.207+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>[筆記] Windows CE 硬體中斷處理</title><content type="html">這裡只講 IST, 不是 ISR, 而實際上我覺的 IST 稍稍好用一點, 雖然它比較不即時.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;構成硬體中斷通知總共須要四樣東西, 產生步驟大概是這樣:&lt;/div&gt;&lt;div&gt;1.硬體的中斷向量值, 這個要 chip design vendor 提供. 這裡稱 A.&lt;/div&gt;&lt;div&gt;2.CreateEvent 產生的 Event handle, 這裡稱 B.&lt;/div&gt;&lt;div&gt;3.KernelIoControl 用 IOCTL_HAL_REQUEST_SYSINTR, 這裡是傳入 A, 產生 C.&lt;/div&gt;&lt;div&gt;4.InterruptInitialize function 傳入 C 和 B, 到這裡才算是把中斷跟事件連接起來.&lt;/div&gt;&lt;div&gt;5.用 CreateThread 產生一個 IST (Interrupt Service Thread) (稱為D) 去等那個 C.&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;example. IRQ_GPIO2_PIN20 這個是 BSP 裡提供的一個定義值, 也就是 A.&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static DWORD WINAPI ThreadHDS(LPVOID lpParam);&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;HANDLE&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;hHND&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;CreateEvent(0, 0, 0, 0); //這個是B.&lt;/div&gt;&lt;div&gt;HANDLE&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;hThread&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;0; //要被產生的 D.&lt;/div&gt;&lt;div&gt;DWORD&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;dwSysIntr&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;0; //要被產生的 C.&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;if(hHND &amp;amp;&amp;amp; hHND!=INVALID_HANDLE_VALUE)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;DWORD&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;dwIRQ&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;IRQ_GPIO2_PIN20;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;if(KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &amp;amp;dwIRQ, sizeof(dwIRQ), &amp;amp;dwSysIntr, sizeof(DWORD), 0))&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;{&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;//這裡開始把中斷向量掛上去, 在 dwIRQ 裡傳回一個系統裡的對應代號.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;if(InterruptInitialize(dwSysIntr, hHND, NULL, 0))&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;{&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;//當這個中斷進來後, 就去 SetEvent(hHND).&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;//開一個 thread (D) 下去等那個 event (&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;hThrea&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;=&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;CreateThread(&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;0,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;							&lt;/span&gt;0,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;							&lt;/span&gt;(LPTHREAD_START_ROUTINE)ThreadHDS&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;							&lt;/span&gt;hHND, //在這裡只傳入被產生的那個 handle.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;							&lt;/span&gt;0,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;							&lt;/span&gt;&amp;amp;dwThreadID&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;							&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;static DWORD WINAPI ThreadHDS(LPVOID lpParam)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;HANDLE hHND = (HANDLE)hHND; //HANDLE 本身是 void* 所以可以這樣玩..&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;while(WaitForSingleObject(hHND, INFINITE) != WAIT_FAILED)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;{&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;//以下是如果有等到事件觸發時才會有的動作.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;Sleep(100);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;//這邊就可以再塞 SendMessage 這類的東西把事件傳給 MFC 的 AP 使用.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;return&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;0;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;WaitForMultipleObject 我沒有實驗成功, 有人說 CE 底下這個 function 不 work, 等哪天試出來時再丟上來修改範例...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-2037298824277648781?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fjflzLcCXCWeTdC3fcz35GwCeJ0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fjflzLcCXCWeTdC3fcz35GwCeJ0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fjflzLcCXCWeTdC3fcz35GwCeJ0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fjflzLcCXCWeTdC3fcz35GwCeJ0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/txKCzd_Ksms" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/2037298824277648781/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=2037298824277648781" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/2037298824277648781?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/2037298824277648781?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/txKCzd_Ksms/windows-ce.html" title="[筆記] Windows CE 硬體中斷處理" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/09/windows-ce.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8BRnk5eCp7ImA9WhdWEU8.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-3836597831794946193</id><published>2011-09-04T16:47:00.002+08:00</published><updated>2011-09-04T17:00:57.720+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-04T17:00:57.720+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="心情" /><title>同樣是看電影...</title><content type="html">有兩個國家, 各自拍兩部電影, 然後去問這兩個這兩個國家的人, 他們會不會去看自己國家的電影.. 一個人說: "我們自己國產的片子拍的這麼爛, 我為什麼要去看?? 我寧可去看____國出的電影!!" 一個人說: "這部片看起來不錯, 我會去看". 如果你追問他說 "可是這部片聽說影評很差耶??, 他還是會說 "不用阻止我, 我會去看國產的電影".&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這兩個國家, 約莫25年前時, 前一個國家的電影在東南亞圈還撐起一片天, 但是這個國家的人很媚外, 始終會認為外國電影才是好. 另一個國家完全的默默無聞, 這個國家的國民, 看自己家的電影, 即使踩到地雷片, 看的幹不絕口, 下一次看電影仍然會選擇國片. 25年後, 那個默默耕云的國家把電影外銷給那個 25 年前電影很丘的國家.&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;也許市場淘汰機制是促使產業進步的動力之一, 但這些自以為良禽擇木而棲的人始終沒有想過, 國內這些產業蕭條了, 這些人失業了, 這些人失業後也就沒有收入來支撐這些所謂高知識份子的產物, 循環下去沒有多久, 這些高知識份子也失業了, 不一樣的是後者這些人始終對著自己人指著鼻子罵: "景氣就是被你們這些人搞差的" ....&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;某個也曾被看不起的東南亞半島國, 現在全球 DRAM 跟 Flash 都是他們在掌控, 有人有想過背後真正的原因是什麼嗎... ?&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;我不想明講說哪個國家是哪個, 哪個人是哪個, 我只希望大家能團結一點, 敵人最想看到的就是一個國家的人, 內鬥內行外鬥外行.&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-3836597831794946193?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_69C3R7-WrPZqeTe9JP01mgH4FE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_69C3R7-WrPZqeTe9JP01mgH4FE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_69C3R7-WrPZqeTe9JP01mgH4FE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_69C3R7-WrPZqeTe9JP01mgH4FE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/RCLHbO1ckoU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/3836597831794946193/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=3836597831794946193" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/3836597831794946193?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/3836597831794946193?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/RCLHbO1ckoU/blog-post.html" title="同樣是看電影..." /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/09/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYCRXo4eSp7ImA9WhRSE0g.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-261199573725599780</id><published>2011-09-02T13:45:00.006+08:00</published><updated>2011-11-15T18:16:04.431+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-15T18:16:04.431+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>Windows CE 的 debug console</title><content type="html">&lt;span class="Apple-style-span" &gt;一般來講, Windows CE (或 mobile 或 phone, ...) 都會用到一個 UART port 當 debug console, 因為最少 e-boot 裡會用到 debug console, 進 OS 後也會在 debug console 裡秀一些錯誤訊息.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;OK, 有人提議說把這個 debug console 拿掉, 還原回一般 UART 的功能. 怎麼做咧? 一開始想到的就是改掉整個 BSP 裡對 OALMSG, DEBUGMSG, RETAILMSG 的定義, 我的 BSP 裡是被轉向到 printf_exp 這個東西, 但我找不到 printf_exp 的進入點在哪裡...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;於是我轉而去改另一樣東西, 也就是 e-boot 跟 kernel 在啟始時都會啟始的 debug console, 這個 function 一般是 "OEMDebugInit" (BOOL OEMDebugInit(void)), 在 blcommon.c 中 BootloadertMain 裡會呼叫它, 如果都追不到這些 function name 也沒關係, 因為這些都還不算重點, 我覺的重點在 "OALLogSetZones" 這個 function 上, 用 ultraedit 搜尋 BSP 裡有沒有地方用上, 有用上就是了.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;一般 BSP 會用 OALLogSetZones(initialOALLogZones); 的方式向系統告知有 debug console 可用, 如果可以的話, 在這之前做點要不要 debug console 的判斷, 來打開或關掉 (移作它用) 它吧.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre" &gt;後記:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="white-space: normal; " &gt;OALLogSetZones 設定的是要輸出哪些 debug message, 設 0 就是不輸出任何訊息, 而 console debug message 的實作是 call 兩個東西:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;int OEMReadDebugByte();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;VOID OEMWriteDebugByte(UINT8 ch);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;(ps.它本來就沒有佔用任何 COM 的 file header)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;要在這裡直接攔掉 debug console 的操作.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;至於要不要把 output console message 轉向到 IPU, input 指去 keyboard array, 那又是另一段工程了....&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;2011/11/15 update:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;這樣做還有另一個副作用, 就是進 suspend 會死當, 不過這種情況要滿足兩種條件:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;1.UART1 為 debug port, 而且 OALLogSetZones() 設定時不為 0 (message enable)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;2.UART1 設定可以被 OS 使用.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;這樣在進 suspend 時, UART1 也當然會 power-off, 但當 power-off 時, debug message 也就跟著送不出去, 然後系統就 hang 住.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;可以靠修改 code 解這個問題.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;------------------&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;\\WINCE600\PLATFORM\COMMON\src\soc\COMMON_FSL_V2_PDK1_7\SERIAL\serial.c&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;extern DWORD initialOALLogZones;&lt;br /&gt;static BOOL SerPowerOff(PVOID pContext)&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;{&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;&lt;span style="position: static !important; "&gt; &lt;/span&gt; PUART_INFO   pHWHead   = (PUART_INFO)pContext;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;if(pHWHead-&amp;gt;HwAddr == 0x43f90000L &amp;amp;&amp;amp; initialOALLogZones != 0) return TRUE;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;...&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;------------------&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;在這兩個 sources 檔案的 link 裡加上 "$(_PLATCOMMONLIB)\$(_CPUDEPPATH)\oal_log.lib":&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;\\WINCE600\PLATFORM\COMMON\src\soc\COMMON_FSL_V2_PDK1_7\SERIAL\sources&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;span class="Apple-style-span" &gt;\\WINCE600\PLATFORM\iMX35-3DS-PDK1_7\src\DRIVERS\SERIAL\sources&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.4em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 17px; font-size: 13px; position: static !important; color: rgb(51, 51, 51); font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; background-color: rgb(255, 255, 255); "&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-261199573725599780?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ThDtJuZwP2oxEOgrxMvgJEwLTKM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ThDtJuZwP2oxEOgrxMvgJEwLTKM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ThDtJuZwP2oxEOgrxMvgJEwLTKM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ThDtJuZwP2oxEOgrxMvgJEwLTKM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/zKXopi-olCM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/261199573725599780/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=261199573725599780" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/261199573725599780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/261199573725599780?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/zKXopi-olCM/windows-ce-debug-console.html" title="Windows CE 的 debug console" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/09/windows-ce-debug-console.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8NRX49cSp7ImA9WhdXEUo.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-911621506359082980</id><published>2011-08-24T16:08:00.005+08:00</published><updated>2011-08-24T16:34:54.069+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-24T16:34:54.069+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>Windows CE 的 kernelIoControl</title><content type="html">&lt;span class="Apple-style-span"&gt;&lt;div&gt;這些是 KernelIoControl 中 FILE_DEVICE_HAL 用的 control code, 號碼是十進位, 這些是從 FreeScale 的 BSP 裡挖出來的, 還不是全部的 Control Code..&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CTL_CODE(FILE_DEVICE_HAL, xx, METHOD_BUFFERED, FILE_ANY_ACCESS)&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;xx:&lt;/div&gt;&lt;div&gt;01 HAL_GET_DEVICE_INFO      &lt;/div&gt;&lt;div&gt;03 HAL_GET_IP_ADDR          &lt;/div&gt;&lt;div&gt;04 HAL_RADIO_CNTRL          &lt;/div&gt;&lt;div&gt;05 HAL_DDK_CALL             &lt;/div&gt;&lt;div&gt;06 EDBG_REGISTER_CLIENT     &lt;/div&gt;&lt;div&gt;07 EDBG_DEREGISTER_CLIENT   &lt;/div&gt;&lt;div&gt;08 EDBG_REGISTER_DFLT_CLIENT&lt;/div&gt;&lt;div&gt;09 EDBG_SEND                &lt;/div&gt;&lt;div&gt;10 EDBG_RECV                &lt;/div&gt;&lt;div&gt;11 EDBG_SET_DEBUG           &lt;/div&gt;&lt;div&gt;78 KITL_STARTUP             &lt;/div&gt;&lt;div&gt;79 KITL_INTRINIT            &lt;/div&gt;&lt;div&gt;80 KITL_IS_KDBG_REGISTERED  &lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// KITL PowerOn/Off ioctl, *lpInBuf = 0 for off, 1 for on.&lt;/div&gt;&lt;div&gt;81 KITL_POWER_CALL                   &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;12 SET_KERNEL_COMM_DEV               &lt;/div&gt;&lt;div&gt;13 HAL_GET_UUID                      &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;14 HAL_INIT_RTC                      &lt;/div&gt;&lt;div&gt;15 HAL_REBOOT                        &lt;/div&gt;&lt;div&gt;16 HAL_HALT                          &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;17 SET_KERNEL_DEV_PORT               &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;18 HAL_TRANSLATE_IRQ                 &lt;/div&gt;&lt;div&gt;19 HAL_GET_RIO_INFO                  &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;20 HAL_ILTIMING                      &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;21 HAL_GET_DEVICEID                  &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;22 HAL_PROFILE                       &lt;/div&gt;&lt;div&gt;23 HAL_SET_DEVICE_INFO               &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;24 QUERY_PHYSICALMEM                 &lt;/div&gt;&lt;div&gt;25 PROCESSOR_INFORMATION             &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;35 HAL_GETREGSECUREKEYS              &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;36 HAL_REQUEST_IRQ                   &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;38 HAL_REQUEST_SYSINTR               &lt;/div&gt;&lt;div&gt;54 HAL_RELEASE_SYSINTR               &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;// IOCTL to get KITL transport info&lt;/div&gt;&lt;div&gt;37 KITL_GET_INFO                     &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;40 HAL_ENABLE_WAKE                   &lt;/div&gt;&lt;div&gt;41 HAL_DISABLE_WAKE                  &lt;/div&gt;&lt;div&gt;42 HAL_GET_WAKE_SOURCE               &lt;/div&gt;&lt;div&gt;61 HAL_PRESUSPEND                    &lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;// IOCTL to tell OEM to initialize registry on boot&lt;/div&gt;&lt;div&gt;44 HAL_INITREGISTRY              &lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to give OEM a more full-featured init when the kernel is ready to go&lt;/div&gt;&lt;div&gt;// and before any apps are started&lt;/div&gt;&lt;div&gt;45 HAL_POSTINIT&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to ask OEM whether to force clean registry hive&lt;/div&gt;&lt;div&gt;49 HAL_GET_HIVE_CLEAN_FLAG&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to ask OEM the reason for power on&lt;/div&gt;&lt;div&gt;50 HAL_GET_POWERONREASON&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to get random hardware seed&lt;/div&gt;&lt;div&gt;52 HAL_GET_RANDOM_SEED&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to ask OEM for a RAM region to put the registry hive into&lt;/div&gt;&lt;div&gt;53 GET_HIVE_RAM_REGION&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to tell OEM to save the RAM region where the registry hive is stored&lt;/div&gt;&lt;div&gt;55 SAVE_HIVE_RAM_REGION&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to write XIP section.&lt;/div&gt;&lt;div&gt;46 HAL_WRITE_XIP&lt;/div&gt;&lt;div&gt;47 HAL_XIPCHAIN&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL for authenticate device&lt;/div&gt;&lt;div&gt;60 HAL_AUTHENTICATE_DEVICE&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL for WHQL testing (used to check whether hardware is in a jumpered test mode)&lt;/div&gt;&lt;div&gt;56 WHQL_TEST_MODE&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL for retrieving location and size of bootloader in flash&lt;/div&gt;&lt;div&gt;57 HAL_GET_BOOTLOADER_PARAMS&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL for retrieving the signed state of an OS image&lt;/div&gt;&lt;div&gt;58 HAL_GET_IMAGE_SIGNED_STATE&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to query for a default display resolution.&lt;/div&gt;&lt;div&gt;63 HAL_QUERY_DISPLAYSETTINGS&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to query device for device-specific information&lt;/div&gt;&lt;div&gt;64 HAL_QUERY_DEVICE_SETTINGS&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to allow the HAL to override the extension region&lt;/div&gt;&lt;div&gt;65 HAL_GET_BIN_CHAIN&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to retrieve cache information&lt;/div&gt;&lt;div&gt;66 HAL_GET_CACHE_INFO&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to control OEM-specified profiler&lt;/div&gt;&lt;div&gt;67 HAL_OEM_PROFILER&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to allow the networking component interrupts to use one SYSINTR_NETWORK_SHARED&lt;/div&gt;&lt;div&gt;68 HAL_SYSINTR_NETWORK_SHARED&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to allow OEM specify MAC address for RNDIS&lt;/div&gt;&lt;div&gt;69 HAL_GET_RNDIS_MACADDR&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL to allow OEM's to specify if a partition is to be formated before being mounted.&lt;/div&gt;&lt;div&gt;70 HAL_QUERY_FORMAT_PARTITION&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL used by halflat display driver&lt;/div&gt;&lt;div&gt;71 HAL_DDI&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// This IOCTL enables/disables update mode.  It's used when updating system images and it sets/clears a flag in&lt;/div&gt;&lt;div&gt;// an OEM-defined location that's interpreted by the initial program loader (IPL) at boot time.  Based on the&lt;/div&gt;&lt;div&gt;// flag, the IPL will either boot the OS image or it'll load the update loader which starts the update process.&lt;/div&gt;&lt;div&gt;//&lt;/div&gt;&lt;div&gt;// The IOCTL takes a single boolean input parameter: TRUE == update mode and FALSE == normal OS&lt;/div&gt;&lt;div&gt;//&lt;/div&gt;&lt;div&gt;77 HAL_UPDATE_MODE&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// IOCTL used by kernel to query page pool parameters from the OAL&lt;/div&gt;&lt;div&gt;// The IOCTL takes no input parameters but returns an NKPoolParameters struct as output.&lt;/div&gt;&lt;div&gt;82 HAL_GET_POOL_PARAMETERS&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;////////////////////////////////////////////////////////////////////////////////&lt;/div&gt;&lt;div&gt;//  VBridge support in kernel, used by VMini (Null miniport driver).&lt;/div&gt;&lt;div&gt;//&lt;/div&gt;&lt;div&gt;26 VBRIDGE_GET_TX_PACKET         &lt;/div&gt;&lt;div&gt;27 VBRIDGE_GET_TX_PACKET_COMPLETE&lt;/div&gt;&lt;div&gt;28 VBRIDGE_GET_RX_PACKET         &lt;/div&gt;&lt;div&gt;29 VBRIDGE_GET_RX_PACKET_COMPLETE&lt;/div&gt;&lt;div&gt;30 VBRIDGE_GET_ETHERNET_MAC      &lt;/div&gt;&lt;div&gt;31 VBRIDGE_ADD_MAC               &lt;/div&gt;&lt;div&gt;32 VBRIDGE_SHARED_ETHERNET       &lt;/div&gt;&lt;div&gt;33 VBRIDGE_CURRENT_PACKET_FILTER &lt;/div&gt;&lt;div&gt;34 VBRIDGE_802_3_MULTICAST_LIST  &lt;/div&gt;&lt;div&gt;39 VBRIDGE_WILD_CARD             &lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;//&lt;/div&gt;&lt;div&gt;//  These are only handled in vbridge.lib&lt;/div&gt;&lt;div&gt;//&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;42 VBRIDGE_WILD_CARD_RESET_BUFFER  &lt;/div&gt;&lt;div&gt;43 VBRIDGE_WILD_CARD_VB_INITIALIZED&lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;   //  Ioctl to retrieve OutputDebugString&lt;/div&gt;&lt;div&gt;48 EDBG_GET_OUTPUT_DEBUG_FN&lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;51 EDBG_IS_STARTED&lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;   // IOCTL to retrieve hardware-generated entropy&lt;/div&gt;&lt;div&gt;62 HAL_GET_HWENTROPY&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;例如呼叫已經被串接好的 RTC_init 就像這樣:&lt;/div&gt;&lt;div&gt;SYSTEMTIME tTIME = { 0 };&lt;/div&gt;&lt;div&gt;&lt;div&gt;KernelIoControl(CTL_CODE(FILE_DEVICE_HAL, 14, METHOD_BUFFERED, FILE_ANY_ACCESS), &amp;amp;tTIME, sizeof(SYSTEMTIME), NULL, 0, NULL);&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;至於串接到 OEM function 這個是在 WinCE 裡被定義好的, 能不能改我就不確定了..&lt;/div&gt;&lt;div&gt;{WINCE_ROOT}\\PLATFORM\\COMMON\\SRC\\INC\\oal_ioctl_tab.h : &lt;/div&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div&gt;{ IOCTL_HAL_INIT_RTC,                       0,  OALIoCtlHalInitRTC          },&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-911621506359082980?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8IwEyGVAOswjeZIsdRxCOl3sk2A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8IwEyGVAOswjeZIsdRxCOl3sk2A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8IwEyGVAOswjeZIsdRxCOl3sk2A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8IwEyGVAOswjeZIsdRxCOl3sk2A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/cGK0V7EhBus" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/911621506359082980/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=911621506359082980" title="2 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/911621506359082980?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/911621506359082980?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/cGK0V7EhBus/windows-ce-kerneliocontrol.html" title="Windows CE 的 kernelIoControl" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/08/windows-ce-kerneliocontrol.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQEQHo7fCp7ImA9WhdQEEU.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-7505002965982894792</id><published>2011-08-12T01:13:00.003+08:00</published><updated>2011-08-12T01:21:41.404+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-12T01:21:41.404+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="心情" /><title>嗯, 真的, why so serious?</title><content type="html">&lt;a href="http://2.bp.blogspot.com/-P2Faz_ibpBk/TkQO2NFz1UI/AAAAAAAAAks/1i96R5SkN5k/s1600/03.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 350px;" src="http://2.bp.blogspot.com/-P2Faz_ibpBk/TkQO2NFz1UI/AAAAAAAAAks/1i96R5SkN5k/s400/03.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5639648957764457794" /&gt;&lt;/a&gt;&lt;div&gt;我現在不會想那麼好心跟客戶打招呼, 我只是想告訴客戶, 前面有水雷, 不要過去.
&lt;br /&gt;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-7505002965982894792?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5fnNT3JvyFtyvXT7IaZMaVd8NkI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5fnNT3JvyFtyvXT7IaZMaVd8NkI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5fnNT3JvyFtyvXT7IaZMaVd8NkI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5fnNT3JvyFtyvXT7IaZMaVd8NkI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/hRc5SCJf424" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/7505002965982894792/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=7505002965982894792" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/7505002965982894792?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/7505002965982894792?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/hRc5SCJf424/why-so-serious.html" title="嗯, 真的, why so serious?" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-P2Faz_ibpBk/TkQO2NFz1UI/AAAAAAAAAks/1i96R5SkN5k/s72-c/03.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/08/why-so-serious.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8BQXkyeip7ImA9WhdRFUo.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-2302076885089141287</id><published>2011-08-05T18:10:00.005+08:00</published><updated>2011-08-06T03:00:50.792+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-06T03:00:50.792+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>Windows CE 輸入法...</title><content type="html">&lt;div style="text-align: left;"&gt;先寫在這做筆記, 我不確定完全正確...&lt;/div&gt;&lt;div&gt;在做 windows CE 的東西時, 只要碰上非英語語系界面時都會碰上這個問題:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ERROR: C:\WINCE600\public\common\oak\drivers\keybd\LAYMGR\.\LayMgr.cpp line 1600: MapVirtualKey: No input language installed&lt;/div&gt;&lt;div&gt;ERROR: C:\WINCE600\public\common\oak\drivers\keybd\LAYMGR\.\LayMgr.cpp line 1411: KeybdDriverVKeyToUnicode: No input language installed&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;google 半天的結果當然是無解.. (google 能找到答案的問題本來就不叫問題..), 如 debug console 所說, 這是欠輸入法, 但只講對 1/5, 實際上這除了欠輸入法以外, 還欠 keyboard layout. 而更奇怪的是, CE 上 keyboard layout 竟然是用輸入法所用的代號..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;以下假設是日文環境, 輸入法用 IME 3.1, BSP會這樣設定:&lt;/div&gt;&lt;div&gt;&lt;div&gt;[HKEY_CURRENT_USER\Keyboard Layout\Preload]&lt;/div&gt;&lt;div&gt;@="00000411"&lt;/div&gt;&lt;div&gt;[HKEY_CURRENT_USER\Keyboard Layout\Preload\1]&lt;/div&gt;&lt;div&gt;@="00000411"&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這個在 \wince600\PUBLIC\COMMON\OAK\DRIVERS\KEYBD\LAYMGR.reg 裡, 而被 BSP 用的 platform.reg include 進來:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Layouts\00000411]&lt;/div&gt;&lt;div&gt;"Layout File"="kbdmouse.dll"&lt;/div&gt;&lt;div&gt;"Layout Text"="Japanese"&lt;/div&gt;&lt;div&gt;"PS2_AT"="kbdmouse.dll"&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;但實際上這樣做有幾個問題在於&lt;/div&gt;&lt;div&gt;1.實際上沒有一個輸入法叫 00000411, 這是國家代碼, 當然不會是輸入法代碼..&lt;/div&gt;&lt;div&gt;2.IME 3.1 的輸入法代號叫 e001, 所以在 laymgr.cpp 中尋找的是 e0010411....&lt;/div&gt;&lt;div&gt;3.這個 e0010411 會在以上的 Preload 裡尋找, 如果沒有的話, 表示預設就沒有它..&lt;/div&gt;&lt;div&gt;4.這個 e0010411 也會 在 Layouts 裡尋找, 如果沒有, 就沒有對應表..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這個問題源自於 laymgr.cpp GetDefaultInputMethodName()中的一行&lt;/div&gt;&lt;div&gt;_tcsicmp( szTempInputMethodName, szTempDefaultInputMethodName)&lt;/div&gt;&lt;div&gt;(line 2963 at wince 6.0 R3 patch 2011-06-30) 中的判斷, 傳進去的是輸入法代碼 + 國碼一起比較, 也就所以為什麼英語語系 (00000409) 都沒有問題, 因為英語語系沒有輸入法, 前面都是0, 所以不會有找不到的問題. &lt;/div&gt;&lt;div&gt;(實際上我會建議在 laymgr.cpp 中安插自己的 debug message 把輸入法的代號 dump 出來, 以利日後 registery 值的建立.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;也就是說, 如果是用日文語系+IME的話, laymgr 會去找一個叫 "日文語系+IME"  的鍵盤, 實際上當然是不會有這種東西, 但我們要在 registery 裡造個假的去騙過檢查...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;所以我現在用的設定是這樣子, 平臺是 FreeScale i.MX35&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;i.MX35 用的 platform registery key 在:&lt;/div&gt;&lt;div&gt;C:\WINCE600\PLATFORM\iMX35-3DS-PDK1_7\FILES\platform.reg&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;修改幾個:&lt;/div&gt;&lt;div&gt;; #include "$(DRIVERS_DIR)\keybd\LayMgr.reg" ;&amp;lt;= mark 掉&lt;/div&gt;&lt;div&gt;因為全域變數不一定 100% work, 所以被 include 進去的東西&lt;/div&gt;&lt;div&gt;往往會被設定成預設的 0409 而非想要的其它語系.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在最後面加上:&lt;/div&gt;&lt;div&gt;&lt;div&gt;[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\KEYBD]&lt;/div&gt;&lt;div&gt;"DriverName"="kbdmouse.dll"     ;這是預設 driver.&lt;/div&gt;&lt;div&gt;[HKEY_CURRENT_USER\Keyboard Layout\Preload]&lt;/div&gt;&lt;div&gt;@="e0010411"                    ;預設使用的輸入法&lt;/div&gt;&lt;div&gt;[HKEY_CURRENT_USER\Keyboard Layout\Preload\1]&lt;/div&gt;&lt;div&gt;@="00000409"                    ;有這三個可以備選&lt;/div&gt;&lt;div&gt;[HKEY_CURRENT_USER\Keyboard Layout\Preload\2]&lt;/div&gt;&lt;div&gt;@="e0010411"&lt;/div&gt;&lt;div&gt;[HKEY_CURRENT_USER\Keyboard Layout\Preload\3]&lt;/div&gt;&lt;div&gt;@="00000411"                    ;這個是被列給 keyboard layout 用的.&lt;/div&gt;&lt;div&gt;[HKEY_LOCAL_MACHINE\Security\Policies]&lt;/div&gt;&lt;div&gt;@="00000411"                    ;這個不確定幹麻的.&lt;/div&gt;&lt;div&gt;[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Layouts\00000409]&lt;/div&gt;&lt;div&gt;"Layout File"="kbdmouse.dll"    ;其實這裡指的都是對應表.&lt;/div&gt;&lt;div&gt;"Layout Text"="US"&lt;/div&gt;&lt;div&gt;"PS2_AT"="kbdmouse.dll"&lt;/div&gt;&lt;div&gt;[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Layouts\e0010411]&lt;/div&gt;&lt;div&gt;"Layout File"="KbdNopJpn1.dll"  ;JPN IBM layout 是 jpn1, NEC 是 jpn2.&lt;/div&gt;&lt;div&gt;"Layout Text"="Japanese"&lt;/div&gt;&lt;div&gt;"PS2_AT"="KbdNopJpn1.dll"&lt;/div&gt;&lt;div&gt;[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Layouts\00000411]&lt;/div&gt;&lt;div&gt;"Layout File"="KbdNopJpn1.dll"  ;這裡也要再設定一個.&lt;/div&gt;&lt;div&gt;"Layout Text"="Japanese"&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其中指定用 kbdnopjpn1.dll 的主要原因, 是因為它有 export PS2AT_00000411 跟 IL_00000411 兩個 function 出來, 這個是 CE 一拿到就會有已經建好的東西, 其它像法文鍵盤等, 就要參考網路上的文章 (也是被找到最多的文章..)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;開機進 CE 裡後, 還要先把輸入法切回英數再切回 IME 才可以兩個都載入進來.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ps. OS component 中, international-&amp;gt;locale_specific_support-&amp;gt;Japanese-&amp;gt;Keyboard 確定要選. 而 NOP-en., NOP keyboard/mouse japan2 這兩個其實一定要選, 才會有 kbdnopjpn1.dll 被包進 kernel image 中, 圖中是因為 BSP 還啥的影響不能全選:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://2.bp.blogspot.com/-zQPAYHT--_8/Tjw74wksLII/AAAAAAAAAg0/RaMbEAy_e_U/s400/kbd.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5637446679858523266" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 312px; height: 400px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;不過仍有繞路走的解法. 在 sysgen 時, 會幾乎把所有不管你有用到沒用到的 .DLL 全部編譯, 先盡可能浪費你所有的時間後, 然後再看要不要加進來... 也就是說, 編好後, 用搜尋是可以搜尋的到這些 .DLL 檔案的. 把這些 .DLL 檔案抓出來後, 可以用內建檔案的玩法給它內建在 kernel image 裡.&lt;/div&gt;&lt;div&gt;也就是修改 platform.bib, 加上&lt;/div&gt;&lt;div&gt;    KbdNopJpn1.dll        $(_FLATRELEASEDIR)\KbdNopJpn1.dll       NK      U&lt;/div&gt;&lt;div&gt;這樣在執行時, 會擺在 \\windows\\ 下, 輸入法檔案是可以找的到的.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;先這樣, 這還不是很好的解法...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-2302076885089141287?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iuII_MAN1LSIf5tlI_Mvta6aS5g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iuII_MAN1LSIf5tlI_Mvta6aS5g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iuII_MAN1LSIf5tlI_Mvta6aS5g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iuII_MAN1LSIf5tlI_Mvta6aS5g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/r4SKznDEsz0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/2302076885089141287/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=2302076885089141287" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/2302076885089141287?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/2302076885089141287?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/r4SKznDEsz0/windows-ce.html" title="Windows CE 輸入法..." /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-zQPAYHT--_8/Tjw74wksLII/AAAAAAAAAg0/RaMbEAy_e_U/s72-c/kbd.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/08/windows-ce.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AGQn86eCp7ImA9WhdSGUg.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-4928133224276750067</id><published>2011-07-29T22:51:00.003+08:00</published><updated>2011-07-29T23:02:03.110+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-29T23:02:03.110+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="心情" /><title>穩定</title><content type="html">也許只是一秒, 我想要有陸地, 有一個立足點可以站, 這樣我的雙手才可以穩定的做別的事.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;也許只是一小時, 我想要安靜, 只因為我想要思考下一步該怎麼走.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;也許只是一天, 我想要有個僻護所, 只因為我每天都需要睡幾小時, 否則沒有體力面對明天.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;也許只是幾年, 我只想要有個穩定的工作, 因為我要有穩定的經濟來源來支配生活所需.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;也許時間長, 也許時間短, 我一直覺的, 不管做什麼事, 總要有個穩固的基礎, 才能往上爬, 然而..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;我今天才意識到, 這些只是一時的穩定, 它不但只是一時, 而且可能還只是一場巧合, 而且更有失去這些辛苦打起來基礎的機會. 我以前以為在這個世界上要找到能一直存活下去的方法是存在的, 長大後才慢慢明瞭到這種學能並不存在, 用上這些學能的那一天, 我開始發現然還是要一直學習一直成長, 才能在人群中走下去, 當在人群中行走數年, 我才發現能幫助你的人是一時的, 人群更不會是永遠存在的, 而我卻需要這些人群換得我日常所需...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;我知道這世界上唯一不變的就是 "一直在改變", 只是真正面對時, 那又是另一種心情...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-4928133224276750067?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EpW7HlQfz0KUPgkJMgxFfJg53FM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EpW7HlQfz0KUPgkJMgxFfJg53FM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EpW7HlQfz0KUPgkJMgxFfJg53FM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EpW7HlQfz0KUPgkJMgxFfJg53FM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/DXo0peXyTZg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/4928133224276750067/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=4928133224276750067" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/4928133224276750067?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/4928133224276750067?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/DXo0peXyTZg/blog-post.html" title="穩定" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/07/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIGSH4zfSp7ImA9WhZaEkU.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-5998310477582179900</id><published>2011-06-29T00:42:00.002+08:00</published><updated>2011-06-29T01:02:09.085+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-29T01:02:09.085+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="心情" /><title>最後一天</title><content type="html">會寫下這文章其實並不代表今天是什麼的最後一天, 也不是紀念什麼日子, 而我想講的是, 每天都是最後一天.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其實這是一年多前開始到現在都有的想法, 我每天都曾面對一種心情, 像父親每天為我準備的早餐, 但今天是最後一天為我準備早餐, 也是我最後一份父親為我準備的早餐, 我會怎樣去面對呢? 哽咽著, 放在一邊, 還是若無其事的吃掉? 沒了它之後, 哪一天哪一刻想再回到那個感覺時呢? 嗯, 沒錯, 現在就是我想要找的那一刻, 回頭看同樣的事物, 會有失而復得的感受.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這樣看起來會負面, 會灰色嗎? 嗯, 沒錯, 是非常的灰色, 我只是把事情擺在最壞的角度去想它而已, 當日常的某些事物消失了, 開始想念起它了, 總是會有那種 "當初為什麼沒有好好珍惜呢!?" 的想法, 把未來的時間點拉回到現在, 就如同把現在的時間點拉回過去一樣. 但是, 已經有的, 很多人會把它當理所當然, 不會去珍惜, 因為不曾去考慮過這些被認為理所當然存在的事物不見時的樣子.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;當今天是你生命中的最後一天, 最後一刻, 也許第一個想到的是, 想要做什麼, 但實際上走到那一刻時, 想到的卻是什麼還沒做. 而我們曾擁有過完成它的時間跟機會嗎? 通常有, 而且很多很多, 多到不會去注意. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;也就所以這樣, 我不會當拿別人的好處聽別人的好話是應該的, 享受自由跟衣食無虞的生活是天賦人權, 每一刻的美好, 都有機會成為最後一次, 不珍惜就沒有後悔的機會. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-5998310477582179900?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mulOt94YwwevfRl6K_tOcqXm_9k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mulOt94YwwevfRl6K_tOcqXm_9k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mulOt94YwwevfRl6K_tOcqXm_9k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mulOt94YwwevfRl6K_tOcqXm_9k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/rlfADpKV_tA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/5998310477582179900/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=5998310477582179900" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/5998310477582179900?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/5998310477582179900?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/rlfADpKV_tA/blog-post_29.html" title="最後一天" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/06/blog-post_29.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ENQH88eyp7ImA9WhZbGE8.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-1278674068423432045</id><published>2011-06-23T18:38:00.002+08:00</published><updated>2011-06-23T18:41:31.173+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-23T18:41:31.173+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="電腦" /><title>PDF-XChange Viewer</title><content type="html">&lt;div&gt;在這裡挖來的, 而且又免安裝, 又有中文化: &lt;/div&gt;&lt;div&gt;&lt;a href="http://azo-freeware.blogspot.com/2007/10/pdf-xchange-viewer-1026.html"&gt;http://azo-freeware.blogspot.com/2007/10/pdf-xchange-viewer-1026.html&lt;/a&gt;&lt;/div&gt;簡而言之, 現在換這個 PDF reader, 只是它預設不會把書籤 (bookmark) 功能打開, 要在 view -&amp;gt; bookmarks 裡另外打開它.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;adobe 的東西嘛.... ignore it....&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-1278674068423432045?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2TmuRZqm6sRgdOR5nVESI4jOoTI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2TmuRZqm6sRgdOR5nVESI4jOoTI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2TmuRZqm6sRgdOR5nVESI4jOoTI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2TmuRZqm6sRgdOR5nVESI4jOoTI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/d76qDvxRRPk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/1278674068423432045/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=1278674068423432045" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/1278674068423432045?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/1278674068423432045?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/d76qDvxRRPk/pdf-xchange-viewer.html" title="PDF-XChange Viewer" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/06/pdf-xchange-viewer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIASHg4fip7ImA9WhZUF0o.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-5715559590510555226</id><published>2011-06-09T15:00:00.006+08:00</published><updated>2011-06-11T15:49:09.636+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-11T15:49:09.636+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>busybox 下的校時</title><content type="html">&lt;div&gt;[修正一下以前的問題..]&lt;/div&gt;busybox 我不知道幾版開始有支援 ntpd (ntp server/client), 而這個 ntpd 的用法跟以前的 ntptime/ntpdate 有點差別...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ntpd 對 time server 校時 (假設 server 用 watch.stdtime.gov.tw):&lt;/div&gt;&lt;div&gt;#&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0); "&gt;mv /etc/localtime /etc/_localtime&lt;/span&gt;&lt;/div&gt;&lt;div&gt;ntpd -nqp watch.stdtime.gov.tw&lt;/div&gt;&lt;div&gt;hwclock -w&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0); "&gt;mv /etc/_localtime /etc/localtime&lt;/span&gt;&lt;/div&gt;&lt;div&gt;#&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這樣就可以將 ntpd 抓回來的時間設定在 RTC 上.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;但如果此時 /etc/localtime 沒有東西的話, ntpd 會抓回沒有 GTM 修正的時間, 系統時間 (date) 也不會有 GTM offset 修正. 這時還要再加上 /etc/localtime 的設定, 才會有 GTM 的 offset.&lt;/div&gt;&lt;div&gt;這裡是中華民國臺北 (嚴正強調絕不是中國台北), 時區是 GTM+8, 時區資料在 /usr/share/zoneinfo/Asia/Taipei, 可以直接 ln -s /usr/share/zoneinfo/Asia/Taipei /etc/localtime 或乾脆直接把檔案 co 過去變 localtime 檔案, 這樣系統時間會參考 /etc/localtime 的資料, 修正為當地時區時間.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;但 1.18.4 版的 busybox 似乎有個問題, /etc/localtime 存在時, ntpd 抓回來的時間也會自動做 GTM offset 修正, 如果此時剛上述一樣, 後面再做一個 hwclock -w 的動作時, h/w RTC 被存進去的時間就不再是沒有 GTM offset 的時間, 而是被加過的時間, 然後下次開機回來看時, 會發現系統時間被設定成 GTM offset 被加過兩次的時間....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;所以 ntpd 在抓時間時, 要先把 /etc/localtime 先給 hidden 起來, 讓 ntpd 抓到的都是 GTM+0 的時間. 待 ntpd 設定好時間後, 再把 /etc/localtime 修正回來, 讓系統時間回到 GTM+offset 的時間上..&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-5715559590510555226?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Fq2HLXicEiJky9YephAhBLQ04Z4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Fq2HLXicEiJky9YephAhBLQ04Z4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Fq2HLXicEiJky9YephAhBLQ04Z4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Fq2HLXicEiJky9YephAhBLQ04Z4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/smvZ9IyCokM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/5715559590510555226/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=5715559590510555226" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/5715559590510555226?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/5715559590510555226?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/smvZ9IyCokM/busybox.html" title="busybox 下的校時" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/06/busybox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08FQXg5eSp7ImA9WhZUFkw.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-4261627546031963286</id><published>2011-06-09T14:41:00.004+08:00</published><updated>2011-06-09T17:30:10.621+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-09T17:30:10.621+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>gpio driver 筆記整理</title><content type="html">簡單的說, 是 CPU register 的 access driver, 像 freescale 那種 EIM bus access 應該不能這樣寫. 這是用很老式的 file_operations 寫法, 要用到 /dev/??? 的 character 檔案去做媒界, 所以僅參考用:&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;static int libGPIO_open(struct inode *inode, struct file *file)&lt;/div&gt;&lt;div&gt;{ return 0; }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static int libGPIO_release(struct inode *inode, struct file *file)&lt;/div&gt;&lt;div&gt;{ return 0; }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static ssize_t libGPIO_read(struct file *filp, char *buffer, size_t count, loff_t *f_pos)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;//&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static ssize_t libGPIO_write(struct file *filp, const char *buffer, size_t count, loff_t *f_pos)&lt;/div&gt;&lt;div&gt;{&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;unsigned long&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;lADDR&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0x73f8400L;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;unsigned long&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;lDATA&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;*(unsigned long *)buffer;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;void&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;*pvPTR&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;struct&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;resource&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;*ptRES&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;0;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//在有 OS 保護下, 要存取實際位址的東西前, 要做一些動作&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//尋問這段記憶體有沒有其它程式佔用&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;ptRES&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;request_mem_region(lADDR, 8, "GPIOmem");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if(!ptRES)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;printk("mem_rgn_req_fail\n");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;return -1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//把這段記憶體位址映射到一塊可存取的空間上, 使用 8byte 大小的空間.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;pvPTR&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;ioremap(lADDR, 8);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if(!pvPTR)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;printk("ioremap_fail\n");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;return -1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//對這段記憶體做存取動作&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;iowrite32(lDATA, pvPTR);&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;iounmap(pvPTR);&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//釋放映射位址.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;release_mem_region(lADDR, 8);&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;//解除使用鎖定.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static int libGPIO_ioctl(struct inode *inode, struct file *file, unsigned int ctl_code, unsigned long param)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;//&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;...&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static struct file_operations tMODULE&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;= &lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;.open&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;libGPIO_open,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;.release&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;libGPIO_release,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;.read&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;libGPIO_read,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;.write&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;libGPIO_write,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;.ioctl&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;libGPIO_ioctl,&lt;/div&gt;&lt;div&gt;};&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static int __init ____init(void)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;return&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;register_chrdev(240, "gpio_acs", &amp;amp;tMODULE);&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;static void __exit ____exit(void)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;unregister_chrdev(240, "gpio_acs");&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;module_init(____init);&lt;/div&gt;&lt;div&gt;module_exit(____exit);&lt;/div&gt;&lt;div&gt;MODULE_LICENSE("GPL");&lt;/div&gt;&lt;div&gt;MODULE_AUTHOR("spam &lt;spam@127.0.0.1&gt;");&lt;/spam@127.0.0.1&gt;&lt;/div&gt;&lt;div&gt;MODULE_DESCRIPTION("GPIO read/write module");&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其中 iowrite32 跟以前 writel 一樣, 但兩個參數剛好顛倒.&lt;/div&gt;&lt;div&gt;其它還有 ioread8/16/32 (做用和 readb/w/l一樣), iowrite8/16/32 (做用和 writeb/w/l一樣)可用.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;然後 AP 這邊就要應用 open/close/read/write/ioctl 這些動作去觸發 driver 裡的對應動作:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;int GPIOopen(void)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;return open(_LIB_NOD_FILENAME_, O_RDWR);&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;int GPIOclose(unsigned int nHeader)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;return close(nHeader);&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;int GPIOopt(unsigned int nHeader, unsigned long lADDR, unsigned long *plValue)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;int&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;ret&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-1;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if(!plValue || !nHeader)&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;return&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;-1;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;ret&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;ioctl(nHeader, 1, lADDR);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;ret&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;read(nHeader, plValue, 4);&lt;/div&gt;&lt;div&gt;//&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;ret&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;=&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;write(nHeader, &amp;amp;lValue, 4);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;return ret;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這樣的動作. 只是 ioctl 第二個 parameter 要非 0, 否則無法觸發. read/write 原本的 count 定義是 ssize_t, 在 -m32 下最大就到 2G, 2G 以上的數字會被直接擋掉, 不會進到 module 裡面運作..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;btw, 這是實驗用的東西才這樣寫, 真正商業的東西已經不能這樣搞了...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-4261627546031963286?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tc5k-MoA7ER48kiYY5NNQTcsAas/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tc5k-MoA7ER48kiYY5NNQTcsAas/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tc5k-MoA7ER48kiYY5NNQTcsAas/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tc5k-MoA7ER48kiYY5NNQTcsAas/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/Xy9hXJ_If7g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/4261627546031963286/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=4261627546031963286" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/4261627546031963286?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/4261627546031963286?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/Xy9hXJ_If7g/gpio-driver.html" title="gpio driver 筆記整理" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/06/gpio-driver.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIESX0yeCp7ImA9WhZUEUQ.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-6108386523833112819</id><published>2011-06-04T21:22:00.003+08:00</published><updated>2011-06-04T21:35:08.390+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-04T21:35:08.390+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="心情" /><title>忠犬小八</title><content type="html">會知道這個電影, 是因為台北愛樂電臺撥的電影原聲音樂, 電影用的鋼琴樂原本就很好聽, 不過聽了電影的界紹說明後, 我比聽它的音樂還要感動.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;以下引自&lt;a href="http://www.e-classical.com.tw/prtasp/prtcalander/prtprogmain.asp"&gt;愛樂電臺內容&lt;/a&gt; &lt;/div&gt;&lt;div&gt;------------------------&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 128, 0); letter-spacing: 1px; line-height: 18px; font-size: small; font-family: 'Times New Roman'; "&gt;&lt;p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; background-image: none; background-attachment: scroll; background-origin: initial; background-clip: initial; background-color: white; background-position: 0% 50%; background-repeat: repeat repeat; "&gt;瑞 典導演Lasse Hallström執導的《忠犬小八（Hachiko: A Dog's Story）》是一部平凡的人與狗的故 事，強調的是人生中一種不變的信念與堅持。首先，電影反映人生的期待，本片透過對手的手法，讓人們看見了愛的內涵：(01).怕狗的女主人，接納了狗兒， 因為她看見了老公的喜悅。 (02).老公過世10年，女主人舊地重遊，發現狗兒依舊在守候，人癡狗也癡。&lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; background-image: none; background-attachment: scroll; background-origin: initial; background-clip: initial; background-color: white; background-position: 0% 50%; background-repeat: repeat repeat; "&gt; &lt;/p&gt;&lt;p class="MsoNormal" style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; background-image: none; background-attachment: scroll; background-origin: initial; background-clip: initial; background-color: white; background-position: 0% 50%; background-repeat: repeat repeat; "&gt;其 次，秋田狗小八是有所為有所不為的狗兒，永遠不肯聽從主人帕克教授（由李察．吉爾／Richard Gere飾演）的指揮，演出「揀球」秀：只要主人把網 球（或棒球）往前一拋，狗兒就會欣然前奔，再把球兒銜回給主人。但是平常不肯做的事，最後卻做了，事出必有因，這個因就是狗兒的真心與癡情，觀眾很難不動 容的。這段戲因而也可以和張曉風把自己為202兵工廠的溼地抗爭的心情，自比為狗吠火車，做對比了。&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;------------------------&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這隻狗, 當初被寄到車站時, 郵件標籤不見了, 所以無從聯絡收件人, 只能留下來, 不過狗不是物品, 過了保管期限就丟掉, 是於有不忍的. 漸漸的, 原本保管狗的人慢慢帶起這隻狗, 帶牠出去散步, 帶牠出去玩, 替牠清理大小便. 養過狗的人都會有一種感覺, 那不是狗, 那是家裡的一份子.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;而狗主人的太太看在眼中, 很敏感的看出他先生的改變, 一開始, 有人如果來領走這隻狗, 他們都會很理所當然的說 "交給你吧", 而幾個月過去後, 女主人覺的, 如果這隻狗的主人哪天出現了, 她會對他說 "狗已經找到主人了".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其實整個聽下來, 很有末代皇帝的感覺, 優雅的旋律裡卻總是讓人感覺的到那股哀傷, 彷彿大家都在害怕彼此離開的那一天到來. 不知道為什麼, 很深受感動, 被它的平凡所感動.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-6108386523833112819?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ot6lwV-NHRfHr0zgZnQi-e_l9hE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ot6lwV-NHRfHr0zgZnQi-e_l9hE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ot6lwV-NHRfHr0zgZnQi-e_l9hE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ot6lwV-NHRfHr0zgZnQi-e_l9hE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/kBddHew80BA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/6108386523833112819/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=6108386523833112819" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/6108386523833112819?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/6108386523833112819?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/kBddHew80BA/blog-post.html" title="忠犬小八" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/06/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QFSXY-eip7ImA9WhZVEUs.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-6786294339525762210</id><published>2011-05-24T00:05:00.003+08:00</published><updated>2011-05-24T00:48:38.852+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-24T00:48:38.852+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="心情" /><title>一點回憶..</title><content type="html">即使已經退伍十年了, 有時仍然會夢到在服役中的日子, 畢竟那段每天都在高壓下渡過的日子, 不會那麼容易忘記. 這次要講的是當兵時經歷的最後一個連長 (也是這篇的主角), 跟倒數第二個連長. 之所以提這兩位, 其實也只是經過的時間比較久, 印像比較深刻而已.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;最早對他的印像, 就是他接任這個連時開始, 那時也是他第一次任連長, 而且只有中尉而已, 這位連長跟過去遇到的軍官都不太一樣, 軍校出身的官畢竟對於士校出身的, 還有一般兵之間都會有點隔闔, 他瞭解這個問題, 從一開始對連上的獎逞都表現的很極端, 就是重罰跟重賞. 但這個連長讓我覺的最不一樣的地方就是, 他很多事情會身先士卒的下去做, 身為一個連隊的領導者, 他要表現出讓人服從的理由, 自己就給自己很大的壓力要去做好領導的角色.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;最讓我覺的印像很深刻的一次是去淡水河旁邊自己挖陣地, 那時有些老兵, 剛好沒被排到工作, 就只能在旁邊看. 連長那時是拿著圓鍬在那挖, 我也在那挖, 沒去注意連長在幹麻 (連長說, 能夠做好自己的角色就不容易了. 其實我非常讚同這句話), 忽然的就聽到連長在鏢 "你們在那幹嘛!? 納涼啊!? 過太爽是不是!? 我都下來構工了, 我官階比你低, 比你菜是不是!? ....."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;嗯, 就是這樣. 這是好處也是壞處, 壞處就是以為自已完全掌握狀況, 實際上不是. 所以連長也有另一個綽號叫 "豬頭". 講到這點, 在這之前的那位連長 (因為高升旅部的關係離開) 就完全不會這樣, 但也幾乎不會下來構工, 他的好處就是會盡可能掌握到所有狀況, 也是壞處, 他不一定掌握的到某些細節. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;不過平心而論, 從退伍之後的學校+職場十年中, 我的確沒有再碰過這樣會身先士卒的長官過, 特別是在職場這個個人價值衰減速度每年以倍數成長的地方裡, 大多數人都會在自己技術能力不行, 學新的東西也不行, 掌握狀況能力更不行之前, 努力爬上高位當嘴砲部隊, 一路努力的洗經歷往上爬, 爬到最後只剩下年資跟當年的學歷可以拿出來說嘴... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在職場裡要做到這種可以帶頭殺陣的將領, 其實背後要付出的代價遠遠比我當年想像的還要多, 努力的要比別人多, 學的要比別人快, 也要比別人精, 看的要比別人遠, 也更要比別人有能力爭取時間利用時間, 而且更不要說, 這樣上進的人在華人世界裡, 一向是最被排擠的.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;而且這樣看似努力的連長, 有一次對我講一句話讓我真的嚇到. &lt;/div&gt;&lt;div&gt;"那麼認真幹麻?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;我愣在那最少五分鐘, 始終不能相信這樣的話會出自於這樣的人口中, 這句話, 始終是和 "努力上進" 是對等關係的, 但擺在眼前的事實就是, 這兩著是在一起的, 就像光跟影子永遠是在一起的一樣. 在那之後, 我當兵的態度開始散漫起來, 連長也開始看我不爽, 一直到退伍都想盡辦法把我調開連部. 不過說實在話, 於情於理, 我都很感謝這位連長, 退伍當天, 我還是請大家相信連長的領導, 畢竟對於一個團體, 團結的心是最重要的. 我很驚訝的, 連長給我一個深深的擁抱.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;如同退伍一樣, 一件事的結束, 我會去檢討這過去的時間裡學到什麼, 過去那兩年間多麼不成熟的處事, 夢裡都一一呈現一一讓我檢討當時的態度跟心理, 其實, 並不是所有的狀況到現在都想的到最佳解, 而連長那句話, 老實講我到現在都還在思索. "why so serious"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://encefalus.com/general/dark-knight-psychology/"&gt;&lt;img src="http://3.bp.blogspot.com/-Uz1ik1U3_vc/TdqPHqFA4hI/AAAAAAAAAX4/brQ6i1iFftA/s400/joker.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5609953647560548882" style="cursor: pointer; width: 400px; height: 235px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;我感謝過去帶過我的連長, 所有的連長, 感謝所有陪我走過人生的所有人. 人生中問題的答案絕非從一而終, 但哪個時點什麼樣是最好的答案, 這才是成長.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-6786294339525762210?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MUDNE_rwghFMxipdDWa1MikxHYY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MUDNE_rwghFMxipdDWa1MikxHYY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MUDNE_rwghFMxipdDWa1MikxHYY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MUDNE_rwghFMxipdDWa1MikxHYY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/2YeSToACH6s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/6786294339525762210/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=6786294339525762210" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/6786294339525762210?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/6786294339525762210?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/2YeSToACH6s/blog-post_24.html" title="一點回憶.." /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Uz1ik1U3_vc/TdqPHqFA4hI/AAAAAAAAAX4/brQ6i1iFftA/s72-c/joker.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/05/blog-post_24.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IHSHgzcCp7ImA9WhZVEUk.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-8396151322618677357</id><published>2011-05-23T19:12:00.002+08:00</published><updated>2011-05-23T19:18:59.688+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-23T19:18:59.688+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dev" /><title>無聊的跨平臺小測試..</title><content type="html">同樣,  寫這篇也是因為很久沒灌水了, 跑來灌點水... 測試方法是 bilinear 式的 resampling, 取樣起始是從中間展開到兩側跟上下, 所以迴圈裡一次是計算四個點. 測試的 source code 在這  &lt;a href="http://cid-ea95177ed13eeda8.office.live.com/self.aspx/.Public/rztest-110113.zip"&gt;http://cid-ea95177ed13eeda8.office.live.com/self.aspx/.Public/rztest-110113.zip&lt;/a&gt;  (不要直接下載, 要點進去..)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這是目前測過的機器 (感謝大家熱情支援) 數據:&lt;/div&gt;&lt;div&gt;&lt;div&gt;GRain GM8160 ARM9TDMI 331Mhz loop:100 72877mS (evBoard)&lt;/div&gt;&lt;div&gt;GRain GM8160 ARM9TDMI 307Mhz loop:100 78750mS (isi350)&lt;/div&gt;&lt;div&gt;Marvell 88F6281-A1 ARM926EJ-S 1200Mhz loop:100 16743mS&lt;/div&gt;&lt;div&gt;Marvell 88F6281-A1 ARM926EJ-S 400Mhz loop:100 50288mS&lt;/div&gt;&lt;div&gt;AMD x4 925 2.5Ghz loop:100 3880mS 4T/avg. (-mtune=k8, -O3, CentOS5.5 in VM)&lt;/div&gt;&lt;div&gt;AMD x4 925 3.3Ghz loop:100 2461mS 4T/avg. (VS2008 -O2, Win7 x64)&lt;/div&gt;&lt;div&gt;intel ATOM330 1.6Ghz loop:100 19847mS 4T/4 avg.&lt;/div&gt;&lt;div&gt;intel ATOM330 1.6Ghz loop:100 16809mS 2T/2 avg. 關  HT.&lt;/div&gt;&lt;div&gt;intel ATOM330 1.6Ghz loop:100 14820mS 1T/1. 關 HT&lt;/div&gt;&lt;div&gt;AMD GeodeLX800 500Mhz loop:100 61926mS&lt;/div&gt;&lt;div&gt;AMD x6 1055T 2.8Ghz loop:100 2825mS 6T/6 avg.&lt;/div&gt;&lt;div&gt;intel E2140 2.025Ghz loop:100 3528mS 2T/2 avg. (FSB oc 225Mhz, 1M L2)&lt;/div&gt;&lt;div&gt;intel i3 2533Mhz loop:100 6194.4mS 4T/4 avg.&lt;/div&gt;&lt;div&gt;intel i3 2533Mhz loop:100 4688mS 2T/2 avg. 關 HT&lt;/div&gt;&lt;div&gt;FreeScale iMX515 800Mhz loop:100 23086mS&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;以上機器在 100Mhz 下跑一次迴圈所花的時間:&lt;/div&gt;&lt;div&gt;&lt;div&gt;GM8160  2412.23mS   331Mhz. (evBoard)&lt;/div&gt;&lt;div&gt;GM8160  2417.63mS   307Mhz. (isi350)&lt;/div&gt;&lt;div&gt;88F6281 2011.52mS   400Mhz.&lt;/div&gt;&lt;div&gt;88F6281 2009.16mS   1.2Ghz.&lt;/div&gt;&lt;div&gt;x4-925   970.00mS   2.5Ghz. (CentOS 5.5 in VM)&lt;/div&gt;&lt;div&gt;x4-925   812.13mS   3.3Ghz. (Win7 x64 hostOS)&lt;/div&gt;&lt;div&gt;ATOM330 2371.20mS   1.6Ghz. (w/HT 1T)&lt;/div&gt;&lt;div&gt;ATOM330 2689.44mS   1.6Ghz. (w/HT 2T/2) total-loop 200&lt;/div&gt;&lt;div&gt;ATOM330 3175.52mS   1.6Ghz. (w/HT 4T/4) total-loop 400&lt;/div&gt;&lt;div&gt;GeodeLX 3096.30mS   500Mhz.&lt;/div&gt;&lt;div&gt;x6-1055  791.00mS   2.8Ghz. (Win7 x64 hostOS)&lt;/div&gt;&lt;div&gt;E2140oc  714.42mS  2025Mhz. xp x86 hostos&lt;/div&gt;&lt;div&gt;i3      1569.04mS  2533Mhz. (w/HT 4T/4)&lt;/div&gt;&lt;div&gt;i3      1187.47mS  2533Mhz. (w/HT 2T/2)&lt;/div&gt;&lt;div&gt;iMX515  1846.48mS   800Mhz. (iVC1)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;所以其實雙核 Cortex-A9 的 CPU 如果時脈在 1.1Ghz 以上的話, 整體效能是高過 atom 330 的..&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-8396151322618677357?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6K8e67k4_mdXKl63ju0n5CO9i4E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6K8e67k4_mdXKl63ju0n5CO9i4E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6K8e67k4_mdXKl63ju0n5CO9i4E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6K8e67k4_mdXKl63ju0n5CO9i4E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/w52GbX_bk0g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/8396151322618677357/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=8396151322618677357" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/8396151322618677357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/8396151322618677357?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/w52GbX_bk0g/blog-post.html" title="無聊的跨平臺小測試.." /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/05/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYFRHY5eSp7ImA9WhZQFUo.&quot;"><id>tag:blogger.com,1999:blog-8694106037992029310.post-4712376901499626695</id><published>2011-04-23T23:08:00.003+08:00</published><updated>2011-04-23T23:38:35.821+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-23T23:38:35.821+08:00</app:edited><title>[灌水] win7 下架 filezilla server</title><content type="html">其實是因為太久沒新文章, 所以貼個一篇來灌水...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ftp server 不含 SSL 的話, 不外乎幾個設定 1. 主要監聽 port, TCP. 2.PASV port, 這個好像也只有 TCP.. 3.PASV IP address 修正. 而一開始安裝 filezilla server 時第一個設定的 port 跟以上都沒有關係, 所以用預設的 14147 即可. 第一跟第二個設定, 是機器躲在 NAT 後面時才需要特別指定. 現在開始設定一堆東西....&lt;/div&gt;&lt;div&gt;1.監聽 port, general setting 裡 listen on these ports. 我都是設 15978, NAT 裡也別忘了追加這項設定.&lt;/div&gt;&lt;div&gt;2.PASV port, Passive mode setting -&amp;gt; "Use custom port range" 這個設定一個範圍, 我是用 65152 - 65215. 當然 NAT 也要跟著把這些 port 打開, 設定為可進可出.&lt;/div&gt;&lt;div&gt;3.PASV IP, 就在上面 External Server IP Address for pasive mode transfers 裡 "Use the following IP", 設定這個, 就要知道出 NAT 後的真實 IP 是幾號. (如果不知道的話, 選第三個 "Retrieve external IP address from" 看看, 不過第三個我沒有實驗過是否 work.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;如果是在 XP 上的話, 以上步驟就可以讓 ftp server 動作了, win7 的話要再額外設定一些東西...&lt;/div&gt;&lt;div&gt;1.請進到控制臺裡 -&amp;gt; 系統及安全性 -&amp;gt; 允許程式通過防火牆-&amp;gt;允許其它程式  這裡面來, 將原本安裝的 filezilla server 中 "FileZilla server.exe" 的完整路徑貼上, 選家用網路.. 這步驟裡會開通 filezilla server 設定的監聽 port 還有管理者用 (Administrator) port.&lt;/div&gt;&lt;div&gt;2.請進到控制臺裡 -&amp;gt; 系統及安全性 -&amp;gt; windows 防火牆 -&amp;gt; 進階設定 裡, 選到左上角 "本機電腦上具有進階安全性的 windows 防火牆 -&amp;gt; 輸入規則" 後, 看到右邊的 "動作" 裡的 "新增規則", 點下去..&lt;/div&gt;&lt;div&gt;2-1.想要建立何種類型規則? -&amp;gt; 選到連接埠 (O) -&amp;gt; 下一個&lt;/div&gt;&lt;div&gt;2-2-1.此規則會套用至 TCP 或 UDP? -&amp;gt; 選 TCP. &lt;/div&gt;&lt;div&gt;2-2-2.這個規則套用至所有本機連接埠或特定本機連接埠? -&amp;gt; 特定本機連接埠(S) -&amp;gt; 這裡設定 65152-65215 (也就是上面寫的 PASV port 範圍)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;喔對, NAT 的話, 一般就是指你的網路分享設備而言..&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8694106037992029310-4712376901499626695?l=yoko-hama.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0ANBOKr1R8uYCdj1Xc6_zoNk9GQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0ANBOKr1R8uYCdj1Xc6_zoNk9GQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0ANBOKr1R8uYCdj1Xc6_zoNk9GQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0ANBOKr1R8uYCdj1Xc6_zoNk9GQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Gasvosky/~4/pDG7gzl8jB4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://yoko-hama.blogspot.com/feeds/4712376901499626695/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8694106037992029310&amp;postID=4712376901499626695" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/4712376901499626695?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8694106037992029310/posts/default/4712376901499626695?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Gasvosky/~3/pDG7gzl8jB4/win7-filezilla-server.html" title="[灌水] win7 下架 filezilla server" /><author><name>GasVosky</name><uri>http://www.blogger.com/profile/04082292876495683610</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://3.bp.blogspot.com/_HoHUzxWfXOk/Sw34EwvEPEI/AAAAAAAAAL8/lMy7F-KxKwo/S220/msn.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://yoko-hama.blogspot.com/2011/04/win7-filezilla-server.html</feedburner:origLink></entry></feed>

