Simon's misc. notes

星期二, 七月 14, 2009

NXT 2.0推出.

不會吧! 我的NXT連直線都還走不太出來,NXT 2.0型號8547巳經上市了。
巳知Sensor有些變動,少了Sound sensor,多了一個touch sensor,light sensor改成color sensor,目前還不清楚8547在控制器上有沒有新增功能,整體看起來,Alpha Rex好像進化了一樣。

可以參考NXT STEP的文章。
緊接著,2009年7月3日,NXT 2.0開始接受訂購了。美國於8月1日上架,目前在英國和德國巳經買得到了。台灣呢?

NXT2.0 8547及NXT 1.0 8527該如何選擇?

NXT 2.0 8547外盒照

星期五, 七月 10, 2009

Single chip和multi chip對Linux研發的影響 - 答客問

僅就自己淺薄的認識來回答,如有不正確之處,歡迎指正。

Q1: What relationship and principles amongst RIL, RPC, and SMD under android/linux?

當初Google釋出Android的源始碼時,在RIL的部分為了顧及Qualcomm以外的其他平台,只在RIL的部分實做出一個reference RIL,以做為採用Qualcomm以外的的參考實做。就採用Qualcomm solution的開發者來說,Qualcomm會提供一個名為qcril的實做,裡面則會完整地提供該有的telephony及data communication功能。
而Qualcomm為Android提供的7K系列均採取Single chip multi core的架構,以一顆ARM9的核心來處理所有Modem方面的功能,所執行的作業系統則是以L4 kernel為base發展出來的AMSS,另一顆ARM11核心則是用來執行Android的所有程式,而二者之間的溝通方式有二種,一為RPC,另一則為Share memory。前者有點類似即時對話式的溝通,而後者則比較像是郵件投遞式的溝通。
回到RIL,在RIL層裡會有許多的ARM9及ARM11之間的溝通動作,可以想像我們一般在下AT command時,行為就像是在和Modem做對話一樣,如ATD後,Modem會回OK一般。因此qcril裡大多是以RPC call來實做出類似AT command的行為。
而share memory的部分,則大多是由Modem將必要的資訊寫入share memory,再由ARM11端將之讀出,比如說,AMSS可以將自己的版號寫入share memory中,讓ARM11的bootloader或kernel driver讀取出來做識別等。AMSS定義許多share memory中的欄位,而ARM11則要能識別這些欄位,這樣在讀寫share memory時才不會出錯。可以參考kernel裡smd_private.c裡的enum。

Q2: What modules/components does AMSS consist of?

嗯,關於這個,由於AMSS為Qualcomm的proprietary OS,我只能說它基本上是建構在L4 kernel上。Qualcomm將ARM9這顆核心當做是整個系統的Master CPU,概略將我所知的分為以下幾點,
1. AMSS除了各種driver之外,當然還會有Modem在運行時該有的task或稱為service。
2. AMSS掌控著所有PIN腳的主控權,可以指定某根GPIO的控制權要不要交給ARM11等。
3. 由於肩負著所有通訊的重任,在BAND的切換以及RF的控制,以及各種protocol等,都是寫在AMSS中。因此在ARM11中執行的RIL就不大會處理到protocol的問題。
4. 關於PMU的控制,在AMSS中都是最直接去做控制。
5. 對於RPC的回應及做相對應的處理等。

Q3: What procedures of booting on android/linux enabled msm7k?

基本上,msm 7K的二顆CPU是各自獨立運行的。當系統上電後,CPU中巳經預燒好的一小段boot code會被執行,在做好CPU本身的初始化後,會將CPU的控制權交給下一階段的primary boot loader(簡稱pbl),pbl係屬於行為控制的bootloader,而對硬體直接的操做,如reset ARM11並將flash中的image載入到RAM裡等,都是交給oemsbl來做,當oemsbl將image載入到flash後,就會reset ARM11,此時ARM11才開始執行Android boot loader,同一個時間,ARM9會繼續向後執行AMSS的main code,而ARM11則並行地由Android boot loader將kernel 載入,之後就如同各有一個單一CPU一樣的執行AMSS以及Linux/Android了。

星期二, 六月 23, 2009

NXT Mindstorms初體驗

打開NXT Mindstorms後,很快地把577片零件全部先塞進整理盒中,等到有時間再來組裝。沒想到我把Start Here那包也一起拆散撒在整理盒和其他的混在一起,當要按圖施工時才發現,在577片中要找出對的零件還真是不容易,加上年際大了,眼力有限,手指頭又粗,組裝機器人的過程對一個半時只會敲鍵盤的中年軟體工程師來說是相當地痛苦。若是只對軟體有興趣但對複雜組裝沒有興趣的,建議可以考慮別的套件。總之,在經過2個小時的奮戰後,第一台樂高NXT車終於完工了。一切都如說書所說的一樣,按下Demo Run後,會繞一圈再加速回到原點。

接著就來測試一下藍芽連線,根據官方網站上的說明,有一些藍芽和NXT的藍芽會有相容性的問題,雖然看上面的藍芽有的巳經很便宜,但明明自己的筆電就有藍芽,卻還要再買Dongle,實在有點不甘心,於是就先用我的X61上的藍芽來試試看,掃瞄藍芽裝置,真的掃得到NXT,再把COM port設定好,再上網把OnBrick的PC版抓下來,按照說明,把藍芽所對應的COM port,居然可以控制耶,雖然是按下去再放開車子才會動作,也就是非同步的控制,但巳經很令人驚艷了。

依照官網的說明,也可以用手機的藍芽來控制NXT,先去Lego官網下載NXT Mobile Application,解壓縮完後,找到SonyEricssonK610i的資料夾,雖然不確定但還是把NXTmobile.jar傳到我的SonyEricssonK618i上, 沒想到用藍芽從PC傳到手機上就可以用了。再來就是先打開藍芽,將手機和NXT連線,再打開應用程式裡的NXTmobile,還真的可以用,當按下上下鍵時,就會看到樂高NXT車跟著一起前進後退,還可以左右轉彎。

就這樣到目前為止,還沒有寫一行程式,就巳經可以順利的操控NXT了。接下來就要驗證Sensor了。

星期一, 六月 22, 2009

教育機器人套件的選擇

以下都只是我個人的看法,也就是最後為何會選擇Lego NXT Mindstroms的理由。

先說我的需求,我只不過是對機器人有興趣,想要選個套件來體驗看看的中年阿宅而巳,既沒有像學生有要升學比賽的壓力,也沒有要做高深的科學研究。加上最近經濟不景氣,口袋縮水必須要把每一分錢都最大的利用。

一般市售較有名的機器人套件大概就是Beo-Bot, iRobot Create及Lego NXT Mindstorm(簡稱NXT)等等,再不然就是KONDO等人形機器人。再來就算是機器人的零件,如機器手臂或半身機器人等。前述價格最低的應該Beo-Bot,再來就是NXT。而KONDO以及其他價錢都要上萬元之譜。

除了價錢之外,就是套件本身變化的多樣性,這點以NXT最好。光是零售版的8527就可以做4-5種的變化。其他的大多就是輪型和雙足式,變化較為少一點。

再者就感應器(Sensor)的多樣性及數量來說,iRobot Create所內建的感應器最多,大多是touch sensor等,而相對地,NXT在不用擴充板的前提下最多接4個感應器,就稍微少了一點。至於Boe-Bot和KONDO等都是類似載俱的本體,感應器方面均要另購,無形中增加了學習成本。

就軟體支援來看,微軟的Robotic Development Studio(簡稱MSRDS)所內建支援的機器人最多,我所看的有,iRobot Create,Boe-Bot,NXT,fischertechnik,KNODO,乃至KUKA的機器手臂等等,雖然使用者也可以自己去客製化MSRDS,使其支援自己的機器人硬體,但那畢竟是進階使用,所以諸如未被MSRDS支援的AROBOT等,就不太方便了。一般來說,出硬體套件的公司都會提供自己的開發工具,如NXT就是由LabView所做的開發工具NXT-G,8527所附的是1.1版,要使用2.0版要另購。
以上是就工具來看,另外,開發機器人的程式語言,除了MSRDS是用.Net CLR(Common Language Runtime)可以通用於微軟的多種程式語言外,一般就是Basic和C二種,Beo-Bot採用前者,iRobot和NXT則採用後者,雖然NXT只是用類C語言,但是NXT另外多了Java語言的支援,使後NXT可以通吃目前最通用的二種程式語言。
基於以上的粗淺的比較,加上NXT的網路可以查到的資源較多,我選擇了NXT。希望這會是個正確的決定。

Beo-Bot

iRobot Create

Lego NXT Mindstorms ToyKONDO

fischertechnik

KUKA

AROBOT

延申閱讀:
書藉類:
Microsoft Robotics Studio 程式開發 - 新一代超智慧機器人開發平台
Microsoft Robotics Developer Studio 實戰手冊 - 智慧型機器人程式模擬與開發
機器人新視界 NXC與NXT
LEGO MINDSTORMS NXT智慧型樂高機器人與Java程式開發
程式語言類
NXC
NXTGCC
lejos
NXT Python

星期一, 六月 15, 2009

[轉貼]當法庭只剩下空殼

文╱鄭文龍律師2009/06/12
轉貼自台灣e新聞 | http://www.taiwanenews.com/doc/WFWT1005.php

自從接任「扁案」辯護工作近半年來,親眼目賭台灣司法的亂象,令人痛心。本來對於此一國人矚目的世紀大案,期望能藉此展現台灣法治及司法健康成熟的一面, 沒想到剛好相反,一些正常法治國家所不應發生,而只有在專制獨裁國家才會發生的現象,竟然在本案都發生了。今藉此文批露此一現象,無非是希望台灣應再次澈 底改造我國的司法,建立公平、公正、有憲法意識、受尊重及信賴的司法。
以行政手段換法官,公然干預司法,違法違憲

陳前總統二次遭公開抽籤而受理本案的周占春法官無保釋放,執政者為了押扁,竟然公然以司法行政之方式干預審判,藉由違法違憲之方式換由蔡守訓先生來審理及 羈押陳前總統。也就是說,為了押扁,竟然可以公然干預審判,以司法行政之方式換法官,讓司法公信力蕩然無存。而更離譜的是,這種公然干預換法官是嚴重地違 法違憲,一般有點良知的法律人或法官絕對不會配合,然而,蔡守訓先生為首的合議庭竟然也甘之如飴,笑罵由人,真的是創造台灣二十一世紀的司法奇蹟。

特偵組洩露案情給媒體,藉媒體審判之方式打擊陳前總統,並變相剝奪其受公平審判之空間

陳前總統早已被部分媒體塑造成「罪人」的形象,不僅一般民眾帶著有色眼鏡看待本案,甚至連審理本案的法官亦難免被媒體影響、污染心證、而對陳前總統充滿偏 執與成見,在如此惡劣的先天環境下,律師如何進行體制內、體制外的實質辦護,為自己的當事人平反以及爭取最起碼的公平審判權,過程中實在是步步危艱。

而本人在陪同陳前總統前往特偵組訊問時,發現竟然早上的偵訓過程,下午的晚報就一五一十的批露,足見特偵組洩密的情形相當嚴重。甚至有記者還主動告稱,特偵組提供偵辦之內容供媒體打擊陳前總統的情形,讓其看不過去。可見此種藉由洩密以打擊陳前總統之作法及心態可議。

羈押、延押不合理、不合法且不合憲

再來看的是我國落伍的羈押制度,對照鄰國日本的立法例,偵查中羈押期間為最長二十天,我國現行羈押制度相形落後,仍有押人取供、押期過長等違反人權之弊 病。無論官方如何將羈押胭脂抺粉為「必要之惡」,事實上,看守所就是監獄,看守所就是把所有尚未定罪的被告都當成是有罪人在處罰。不可諱言,我國現行羈押 制度確實違反聯合國「一九六六年公民與政治權利國際公約」,而有待修法。在「扁案」審理過程中,一再向蔡守訓先生主持的合議庭表示,在立法院通過公民與政 治權利國際公約施行法之後,司法人員應該與時俱進,對於我國過長的押期,做最謹慎的考慮、並做出最符合修法方向的羈押決定。然而,「扁案」的合議庭卻草率 漠視,自創非法羈押之理由,違法違憲。

尤其是,蔡守訓先生所主持的合議庭,表面上羈押的理由包括串證、逃亡之虞,但延押的裁定卻履履出現:「被告為卸任總統尚有社會影響力」、「被告出書」、 「接受外國媒體採訪」、「由卸任總統辦公室召開記者會」、「前往看守所會見者不乏社會知名人士」以及「攻擊司法」等無關乎羈押法定要件的理由,在在透露出 合議庭無法嚴守法律所規定羈押之要件,而自創羈押理由,透露出其羈押有報復性及懲罰性,但是,羈押並不是用來報復及懲罰,可見其羈押、延押已違法違憲。

漠視陳前總統的健康,顯不人道

陳前總統好好的一個人,從去年十二月三十日被押到現在全身都出現問題,例如,依台北縣立醫院之診斷,陳前總統的心、肺、眼、腳都已出現問題,走路也變成跛行,上下囚車也會喘。但是,蔡守訓先生的合議庭,竟然說陳前總統一切正常。

當羈押中的被告在開庭過程中身體極度不適的時候,不具專業醫學知識的法官,竟然不是送醫,而是在法庭上傳紙條,並輕挑嘲笑當事人,立即宣布還押看守所,草率剝奪被告戒護就醫的人權?令人難以置信。

如果不是陳前總統在還押看守所後,以不食、不飲水方式進行抗議,始遭看守所戒護送醫,並經臺北縣立醫院診斷證實陳前總統確實有心、肺、眼及足等多項病症, 其中包括心肌梗塞的前兆即冠狀動脈粥狀硬化、以及有失明可能性的青光眼,陳前總統不就含冤被誣指為作戲了嗎?法院可以輕視被告之健康及人道至此嗎?

欠缺憲法意識的年輕無社會歷練的法官制度,顯有改造之必要

再從其他的角度來看「扁案」,仍是問題叢叢。

(一)首先,「扁案」的合議庭不具有憲法意識,大法官六二七號解釋強調總統有國家機密特權,應予尊重,司法機關不應任意介入總統此項特權。然而,「扁案」 的合議庭卻猶指陳總統核定絕對機密的行為無效,這樣的做法不但逾越「刑事庭」的分際、違反了「權力分立原則」、不尊重「憲法上總統的國家機密特權」,更應 正視的是,依合議庭的見解,以後台灣根本不需要有行政機關,一個法官就可以把行政機關給完全否定、推翻掉,這十分地嚴重。

(二)其次,本文作者多次聲請勘驗偵訊中的光碟,發現諸多的弊端,以李界木於九十七年十月三十一日之偵訊光碟為例,經「扁案」合議庭於九十八年三月十日當 庭勘驗,即發現:(1)特偵組檢察官共有二十四次的脅迫、恫嚇;(2)計有三十二次打斷李界木,不讓其連續陳述;(3)總共有五次脅迫、誘導李界木一定要 指摘總統府的會議,是由陳前總統指示採取第一方案;(4)總共有兩次以利誘方式,要李界木認罪自白;(5)計有一次以詐欺方式要李界木自白。從勘驗光碟的 過程中,可以看到特偵組一再脅迫李界木若不配合,將變更「十年以上有期徒刑」之重罪來訴追(註:事實只有一個,該適用什麼法條、就應適用什麼法條,豈有配 合就訴追輕罪、不配合就訴追重罪,變來變去的道理),更一再恫嚇將「清算」李界木的財產,檢察官甚至說出:「五人共識五人一起辦」、「筆錄做出來,你會死 的很難看」、「你真的會傾家蕩產」、「把你押起來是為了讓你有台階下」等恐嚇性用語,顯然構成刑事訴訟法第一五九條之一 「顯不可信之情況」,依法前開偵訊筆錄不可做為證據。可是即使法官自己都親眼看到特偵組不擇手段的違法辦案實錄,「扁案」合議庭事後仍裁示該次偵訊筆錄具 有證據能力,那麼勘驗光碟作什麼?根本沒有用。「扁案」偵查期間的違法情形嚴重,「扁案」合議庭卻甘為違法之偵查程序背書,實難杜攸攸之眾口;三位法官人 明明身在法庭,法官的眼睛硬是對特偵組的違法視而不見,法官的耳朵硬是對「扁案」律師的訴求置若罔聞,當法庭審理流於形式,法庭不過是一個沒有靈魂的空 殼,最後的結果絕非法治國家正當程序所應許。

審理至今,更顯陳前總統的清白

事實上,「扁案」審理迄今,陳前總統的清白益發清楚明瞭,茲分三大案簡要說明。

(一)國務機要費案的部分:(1)總統府會計處從上到下重要的幹部,共計有五位證人(前總統府會計長馮瑞麟、科長梁恩賜、邱瓊賢、藍梅玲及蘇志)的供述, 已證明慣例上國務機要費具有特別費之性質;(2)其次,包括行政院主計處、總統府、審計處三個行政機關的函覆意見,也都說明國務機要費具有特別費之性質; (3)如比照馬英九市長特別費案「金錢混同」及「大水庫理論」,陳前總統擔任元首任期內,國務機要費確實「因公支出」用罄,並無不法所得,可見陳前總統涉 及的「國務機要費」乙案,並不是法律問題,而是制度設計問題,實不應強行羅織陳前總統入貪污重罪。

(二)龍潭購地案的部分:本案重要之共同被告及證人如林百里、辜成允、蔡銘杰、蔡銘哲、辜仲諒、魏哲和、李界木及夫人吳淑珍等八人皆已在法庭具結供述證明 陳前總統與龍潭案無涉。可見陳前總統在審理過程是經的起考驗。否則焉有所有重要之共同被告及證人都作證與陳前總統無涉。今合議庭竟然在庭訊時,對於有利於 陳前總統之證人,明顯表現出敵視及責難的語氣及詰問,其態度顯有可議。合議庭之指揮及訊問過程,應展現公平、公正,及平和的態度,且不有先入為主偏頗的訊 問態度,也不應該因為過程中有其他公務員行為具有瑕疵,即懷疑國家「兩兆雙星政策」。而既然八位共同被告及證人既然證明陳前總統無辜,亦應尊重,而不是凡 事以懷疑有色的眼光去對待及過度推論,此是檢察官的角色,誠非法官所應辦演的角色。

洗錢案的部分:由共同被告及證人林文淵、黃芳彥、黃維生、陳致中、黃睿靚、陳鎮慧、葉玲玲、徐立德、蔡鎮宇等九人的供述,足以證明陳前總統從來不管錢,且足以證明總統未曾參與開戶、匯款或轉帳等行為,清楚勾勒出陳前總統並無參與洗錢的事實。

扁案凸顯台灣司法再改革的迫切性

自接任「扁案」委任以來,曾見聞過特偵組的吳文忠檢察官「扣應」到「全民開講」的言論,吳文忠檢察官在媒體上公開表示「扁案起訴」有「漏洞」、有「爭執空 間」、「不是沒有無罪的可能」,更可見扁案的起訴確實有草率、證據不足等問題,令人難以理解地是「扁案」合議庭對於檢方的問題反卻沒有任何反應;甚至,近 半年來的審理,交互詰問的諸位證人都指出陳前總統並未涉及貪污,合議庭卻置之度外,執意延押陳前總統,顯然讓交互詰問之制度空洞化?也讓律師在法庭上的辯 護活動只是變成讓「扁案」合議庭正當化其審判權的理由,誠屬悲哀;更遑論,「扁案」律師所提出種種符合人權、符合法治的訴求,合議庭皆置若罔聞、聽而不 理,執意違法、違憲審理「扁案」。當法院的審理徒具形式,聽不進當事人任何聲音的法庭只不過是一個沒有靈魂的空殼法庭,這是台灣司法的悲哀。希望藉由本文 能喚起社會大眾正視「扁案」違法違憲的問題,支持司法改革之呼籲,讓台灣成為真正的民主法治國家。

星期五, 四月 03, 2009

Qt embedded 4.5 與openGL|ES on Windows Mobile 6

先說在前面,因為沒有chip vendor提供相關的3D加速的library,最後雖然example能夠成功地跑起來,但是只有2D看得到,其他的都看不到正確的結果。若有高人路過,請指點迷津。

延續前一篇的結果,

相要加入openGL|ES的支援,你必需要有以下二個檔案
1. libGLES_CM.lib
2. libGLES_CM.dll

通常有3D加速功能的晶片,vendor都會提供相關的library,當然就會包括這二個檔案以及相對應的header files。

在沒有vendor的支援的情況下,就在網路上找了一個open source的專案
OpenGL ES - Vincent ES 1.x
下載說明
本來以為用之前類似的方法就可以build,但看了說明之後,才發現完全不是那麼一回事,只好按照網站上的說明一步一步來。

要build vicentES 1.x需要3種工具,

1. Embedded Visual C++ 4.0
可以在微軟的網站上免費取得,但是沒有序號?只能靠Google大神去找,一定找得到。這裡不綴述。
2. Embedded Visual C++ 4.0 Service Pack 4
一樣可以在微軟的網站上免費取得。
3. Pocket PC 2003 SDK
認證完Windows XP後,即可免費下載。

全部安裝好後,解壓縮檔案ogles-src-1.0.0.zip,我是放在C:\Qt\ogles-src-1.0.0
用eVC4開啟ogles-src-1.0.0\projects\evc4下的OGLES.VCP,按下build按鈕,就會在ogles-src-1.0.0\bin\arm\Release在下面看到libGLES_CM.lib和libGLES_CM.dll二個檔案。

如何與Qt embedded 結合。

1.
cd c:\qt\4.5.0
configure -platform win32-msvc2008 -xplatform wincewm60professional-msvc2008 -webkit -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-openssl -no-dbus -phonon -plugin-sql-sqlite -opengl-es-cm

2. configure完後,

set INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include;C:\Program Files\Windows Mobile 6 SDK\PocketPC\Include\Armv4i;C:\Qt\ogles-src-1.0.0\include

set LIB=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\lib\armv4i;C:\Program Files\Windows Mobile 6 SDK\PocketPC\Lib\Armv4i;C:\Qt\ogles-src-1.0.0\bin\arm\Release

set PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm;%PATH%

cd bin

setcepaths wincewm60professional-msvc2008

nmake

﹝若無法link,就把libGLES_CM.lib複製到C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\lib\armv4i下﹞

接下來是build Qt的openGL|ES example,選擇2Dpainting和hellogl_es二個,
執行結果如下,
1. hellogl_es,視窗有出來,但中間的3D卻看不到。
寄件者 Simon's misc. notes


2. 2Dpainting
寄件者 Simon's misc. notes

星期五, 三月 27, 2009

Qt embedded 4.5於Windows Mobile 6初體驗

一直以來,QT都以跨平台的應用及UI framework著稱。平時因為工作關係,沒什麼機會接觸到embedded Linux以外的嵌入式系統。每每對影片中所展示的畫面,感到不可思議。

最近手上剛好有Windows Mobile的手機,對於從來沒有接觸過Windows CE或Mobile的我來說,這是個滿難得的機會,於是就想到或許可以上面的影片一樣,嚐試著把Qt embedded porting上來玩玩看。

在Qt Software的官方網站上找了一些資料,再加上Google大神的幫助。找到一些資料後,再來就是麻煩的軟體工具的問題了。以下是我選擇的開發工具。
1. Visual Studio 2008,目前官網表示Express edition並不支援,這真的是一大缺陷。
2. Windows Mobile 6 Professional
3. Active sync 4.5
後二者可以在微軟的網站上免費取得。

當安裝好以上二種開發工具後,
1. 將Qt 4.5.0解壓縮,依照Qt software所示,解壓縮到C:\Qt\4.5.0
2.將QT的PATH加入環璄變數。
官方網站上有詳細的說明。

再來Config Qt 4.5.0
1. cd c:\qt\4.5.0
2. configure -h
﹝看一下有哪些選項可以選﹞
3. 我使用的參數
configure -platform win32-msvc2008 -xplatform wincewm60professional-msvc2008 -webkit -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-openssl -no-dbus -phonon -plugin-sql-sqlite

接下來等待Configuration,Config成功後,依以下步驟設定環境變數。
1. set INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include;C:\Program Files\Windows Mobile 6 SDK\PocketPC\Include\Armv4i
2. set LIB=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\lib\armv4i;C:\Program Files\Windows Mobile 6 SDK\PocketPC\Lib\Armv4i
3. set PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm;%PATH%
4. cd bin
5. setcepaths wincewm60professional-msvc2008
若是成功,會看到以下的訊息
Environment Selection:Windows Mobile 6 Professional SDK (ARMV4I)
Windows Mobile 6 Professional selected, environment is set up
6. cd ..
7. nmake

再接下來就是漫長的等待,等全部build完後,就來試試幾個example
1. cd examples\tools\plugandpaint
2. nmake clean
3. qmake -config release
4. nmake
會在release資料夾中看到plugandpaint.exe
官方網站也有詳細的說明。

最後就是如何將build好的code放到target上面去驗證了。
1. 用Dependency Walker看一下要裝的dll檔有哪些,這就相當於在Linux下的ldd。有的dll還有其他的dependency,用這種工具要多看一下。
2. 以目前的例子plugandpaint就是需要,QtGui4.dll, QtCore4.dll以及msvcr90.dll
3. 用Active sync連上target後,打開行動裝置,為了方便起見,我將exe和dll全部放在同一個路徑下。
其他的Qt 程式就依此類推。

結果就是成功的跑起來了。
1. plugandpaint
寄件者 Simon's misc. notes

寄件者 Simon's misc. notes

2. dragrobot,但是event好像有問題。
寄件者 Simon's misc. notes

3. SVG viewer
寄件者 Simon's misc. notes

4. Sample browser
寄件者 Simon's misc. notes