星期三, 8月 30, 2006

Online Presentation Website



這個線上簡報編輯網站挺不錯的,基本功能都有,又能export成html+folder格式(一般browser就可以撥),反應速度也不錯。
還可以將簡報 publish出來,這樣只要寄link給別人就可以了,別人可以在線上看(所以也可以link在自己的 blog )。

另外還有一個remote功能,可以讓你控制公開簡報的換頁動作,所以配上只要將link寄給所有人,在將大家一起加入skype,就可以作線上簡報囉。

http://www.thumbstacks.com/index.php


喔,是免費的。

這是測試的Link (http://www.thumbstacks.com/play.html?show=98481cdd620bda98da77eeaaa3600e4b )

嗯。越用越不錯.. 速度快,還有一些標準的"Arrow", "Circle", 基本圖案可以用。

據Thumbstacks的"development blog"所述,由於 google code 提供的javascript chart library,將會有以下的圖形元件功能:


這樣就更好用囉。
希望他們加加油,以後或許有機會像writely一樣被google買下。增加 "google office online"的實力。

Google Maps and Google Earth

LinuxJournal #145, May, 2006 有一篇說明,這一篇文章已經公開 (不用access account):
http://www.linuxjournal.com/article/8932

這篇文章簡單說明使用Google Maps API的步驟 (取得id, server side scripting..etc)。
Example是用Google Maps在自己的網頁上顯示Maps和在Map上做標示。

有一篇類似的文章,是中文的,在
http://blog.yam.com/syshen/archives/347151.html


Google Maps API,最詳細的當然還是在Google :
http://www.google.com/apis/maps/documentation/


Google Maps API 的應用主要在web server上,要使用Google API,需要一個web server。client端是browser。
利用Google Maps API的產品 :http://mehere.glenmurphy.com/
安裝這個軟體,用 ie 開啟 http://localhost:7305 ,連接上gps,就可以在ie上顯示gps所在地圖
(當然,pc要有連線到google maps server的能力)。



如果是在一般desktop上,就要使用Google earth。
Google earth除了提供和Google Maps一樣的衛星地圖外,還增加了3D影像的能力。

Google earth提供客製化的方式是plugin,google earth公開plugin interface(這一點有待商確),讓user自行撰寫plugin。
有名的plugin如近來推出的3D飛行模擬。

google earth另外有定義KML格式,相關文件在 http://earth.google.com/kml/

星期一, 8月 28, 2006

Wiki is not easy..

維基百科從成立到今天,經過多人的維護,據說條目已經超過大英百科,而且還不斷的增加中。

以前因為查到的東西都不錯,所以對他也有點好印象。如果真有機會,自己也會寫些東西在裡面,當作是報答。所以每次要是發現查不到的,或是只有英文的部份,還是自己知道的,就會加上/或是修改一下Wikipedia的條目。

Wiki的編輯是有一點特殊啦,用了一陣子還是不習慣,總是要看看別人的source才知道要用甚麼tag。Server的反應也還好,最近是有點慢了起來。不曉得是自己寬頻的限制還是用戶變多了。

剩下的,就是內容的部份了..

我沒有仔細閱讀Wikipedia的說明,不知道"不是甚麼知識都可以放入Wikipedia中",所以寫了一個智力測驗的條目。結果,馬上就被投票刪除。我看到通知之後,還真是不好意思,沒幫上忙,還替大家惹了麻煩。還好,這個條目無異議,一個月後就刪除了。後來,我也小心翼翼,注意一下哪些可以當作條目,哪些不行。

前一陣子因為TS強力推薦Coda這個Filesystem,我也Google了一下,順便看看Wiki沒有。我也就順便翻譯了一下我剛剛學會的部份,大概是Coda的sourceforge網頁太過炫耀,所以,我的內容也太過炫耀了。結果:


被認為是廣告啦!

寫 維基還真不是件容易的事呀。

星期五, 8月 25, 2006

Some Writely Format Testing

用Writely 寫出漂亮的文件

這只是練習用,所以是亂寫的,別當真。

版面設定

大概常常要注意縮排,這應該是首先要注意的事。但是這是用在很明顯的大量內容的文章。如果是一般電腦常用的log方式,就是item by item,這樣。另外,要多利用Writely的"Style"。明確區分出"Header"和"Normal Paragraph"。然後在本文部份,要是當設定好"Page Spacing",讓文件看起來清爽。


內文要分斷的話,怎麼辦? 好像就只有分行? 這樣比較不方便。也不好。這樣就表示Page Spacing要大於1。才會明顯區分header和內文的不同。

使用分項符號

內容要分條列的地方,可以用分項符號
  • 用這個
  • 和這個
  • 奇怪的是,Writely的分項符號會自動縮一排
  • 所以不會對齊
  • 但也好過沒有
縮排回來,這樣有比較好嗎?至少不會亂七八糟。

使用圖片

writely也允許使用內嵌圖片,但是當po到blog時,不知道image會link到哪裡。可以試試看..

writely的image可以設定size, padding, border,limit size = 2M。但是不方便的是,不會自動縮圖,項上面的圖垂直pixel size就不對。



所以也是有一些問題存在的...
  • 像h1, h2, h3 tag的定義就不一樣,所以在writely看到的內容和實際po出來時會不一樣。
  • 圖片的link不能用,就像上面一樣,writely的link沒辦法在blogger中使用。
  • Title 不見
或許,Writely, GooglePage和Blogger本來就是不同的三種東西..

但是 Writely 的"Public"功能,好像也可以代替 GooglePages。像這一篇在Writely的Public link就是: http://www.writely.com/View.aspx?docid=ajb6rhmm7kmw_9s6sf7m

不曉得是不是所有人都看得到 ?

星期四, 8月 24, 2006

GreenPhone

最近Linux Mobile很盛行 (雖然看不到什麼實際產品)。

Trolltech 宣佈一個 greenphone的開發平台(?)。
有圖片,和實際的操作影片。看起來好像都跟真的一樣。
但是... SDK 還沒開放下載,東西還沒得買,有關比較詳細一點的資料就只有 User Guide,從那裡面,大概可以猜一下,有哪些功能和application。連到底有沒有Wifi也都要猜半天。

有forume, mailinglist, irc。但是也都是空殼,甚麼都沒有。
(是說"蓄勢待發"的態勢嗎?)。

其他的開發文件就更不用說啦。


由以前的新聞和user guide來看,介面大概是Qtopia Phone Edition。
先前Trolltech還出了一個Qtopia Phone Edition的VMware image(http://www.trolltech.com/products/qtopia/learnmore/qtopiademo),讓你可以用Vmwae來run這一個UI。

...喔,的確是這樣,greenphone的新聞網頁第一頁就有說,SDK包含QPE。

好奇怪,是2.4的kernel,大概是因為size比較小吧。

Build ViewML

備份一下...

很多Embedded System都需要Browser,但是受限於system resource。沒有辦法使用標準的Browser。需要使用功能縮減後的Browser。

ViewML 應該是目前Open Source Project中footprint最小的Browser。

他使用KFM(KDE File Manager) 1.0 核心。原作者將KFM中對Qt的API 呼叫用FLTK重新實做。去除他對KDE(Qt)的依賴。另外將FLTK 對X-lib的部份修改使用Nano-X。去除對X Server的依賴。所以ViewML 特別適合小型系統。

ViewML的缺點在於:由KFM 1.0 修改。所以只有支援HTML3.01。不支援javascript。CSS和SSL。

ViewML 需要的library有:FLTK,LibWWW


問題:
因為g++ 的STL在3.3後經過大幅度的改版,所以和2.95 版所附的STL差異很大。原作者因為相容性問題。在2001年後就停止維護ViewML。

目的:
修改ViewML code,能在目前的Linux 系統中build。 完成後再在uclinux, uClibc , STLport , Nono-X , Flnx 上build。

風險
1. 目前Linux 上的STL不知道和STLport 差異是否很大。
2. ViewML 的功能會不會太過簡單。
3. 多國語系的支援


Start :

確認developement platform 的版本( 這裡使用Debian 3.1, stable )
到 ftp.viewml.com 下載ViewML 0.23.
到 fltk.org 下載 fltk 1.1.0


check 系統有沒有安裝libwww,如果沒有,安裝libwww:

# aptitude install libwww-dev


接著build fltk :

$ ./configure –-prefix=要安裝的位置
$ make
$ make install

可以run一下test folder下的program,看看是否成功

再build ViewML:

$ ./configure –-with-fltk=剛剛buildfltk的安裝位置
$ make 2>&1 | tee makeoutput

應該會有很多error了..會log在makeoutput中


已知紀錄:

先是config.h 找不到==>作一個假的 :

$ touch src/kdecore/config.h

接著是qstringl.h 的compile error : 這是因為namespace的問題 ==>在qstring.h中加入
using namespace std;
接著是 "沒有transform( )" function。這大概是因為algo.h 太舊,改為

#include <algorithm>

找不到par.h,google了一下。有人也問過這個問題。先刪除這個include 指述。

cmath : acosf, asinf not declared.-->google一下,發現是compiler 以為要使用C99 的header。


CE BSP Installation & Deploy Image to DOM

Windows CE的BSP安裝方式... BSP的提供廠商會提供一個msi 安裝檔。
執行就可以安裝。
以VIA CLE266為例,公司網站有提供下載viacle-cn bsp 下載。
安裝後,會在Third Party下,出現BSP分支。有VIA CN400/CLE266 CEPC:x86

然後在New Platform 時,BSP部份就會有VIA這一項可以選。

Application 部份選Digital Media Receiver (Window CE devices)

新platform會出現VIA CN400/CLE266 CEPC:x86這一個category。
展開後可以看到包含Device Drier這一個分之而已,分為Audio, Display, Networking三項。

由 於network card不是使用CLE266內建的 Via Rhine NIC,而是外加RTL8139。所以在右邊 Catalog - Device Drivers - Networking - Local Area Networking (LAN) device 中,選Realtek RTL8139 加入到OS中。


之後 BuildOS - Sysgen 開始 generate system base image(要一段時間)。
完成後,會放在 WINCE500\PBWorkspace\ViaTrial1\RelDir\VIACN_x86_Release

這個動作完成後,會在release folder下產生一個nk.bin 的檔案。
這個檔案包含了kernel和一些resource。

要在PC的平台下開機,必須要作開機磁片。要利用CE Platformbuild的tool來作

這個build boot image的tool所在位置比較奇怪,在 Windows CE tools install folder中(Program Files那一個,不是WINCE500那一個)。

這個動作是要做出一個用來boot nk.bin的environment,並不會自動將剛剛build好的nk.bin copy進去。

  1. 準備一個floppy disk (如果沒有,就用vfdwin 這個floppy emulator,類似DaemonTools)。
  2. 執行websetup,會出現dialog,要求安裝目錄,安裝websetup(因為是win2000,所以他default是Win2000)。
  3. 完成後,準備1.44的floppy (真的或是vfd)。
  4. 執行 CEPB\Utility的cepcboot.144 這個image (double click on this file, though its extension is not 'EXE')
  5. 出現dialog,選floppy driver。progress bar 到100% (之後又回到0, vfd的話很快)。
  6. OK! floppy內就是 boot environment。
將DOM format成fat,DOS bootable (也就是會包含command.com)。
將剛剛做好的boot floppy內的data都copy到DOM。
到release folder,把nk.bin 複製過來。

開機,出現start DOS。接著出現resolution選單,然後screen switch,顯示Jumping to 0x0022ae8..
black screen。

所以算是 Fail.. :P

查到..應該要選local boot,那些jump xxxx的message是eboot和sboot的message。
還有即使選eboot,出現jump to 0x00XXXXX 的message,等3 min後 還是會boot起來。

在boot floppy image中有readme.txt。有一些說明:

製作boot disk的方法,除了用剛剛cepcboot.144 這個image外,也可以用format dos bootable的方式。
如果可以自己做出dos boot disk,建議使用這個方法。
CE work folder中包含一個dos boot environment : public\common\oak\csp\i486\dos\bootdisk
  1. create一個dos bootable disk
  2. 將dos 的himen.sys copy到disk中
  3. 將 ce500\public\common\oak\csp\i486\dos\bootdisk的所有內容都copy到disk中
  4. 如果需要作ether boot,就copy eboot.bin。需要由serial boot就copy sboot.bin
  5. copy 自己build好的nk.bin到disk中
  6. 修改autoexec.bat。(也可以用default的,但是啟動時要選)。
開機,出現選單,選local boot。下方出現progress bar。完成,等1 min。CE才出來 (非常的慢)。

開機出現選單是因為Autoexec.bat 和 config.sys內有選單設定。



很奇怪的是,很多application (*.exe)都是在Windows目錄下,但是大多是隱藏起來。要開啟command prompt,用dir/a 命令才會全部顯示出來。

網路的部份,開機後是顯示xx,要等約1 min才會正常。

XPE : Use Prebuild Environment to get the Taret's device list

使用XPE的prebuild environment (也就是XPE CD第一片)來開機,會進入只有console的XPE。
利用這個console,執行TAP。產生taret board's device list。

所以在開啟電源前,先把要裝device都加上去:

  • Wifi USB Dangle
  • Touch Panel
還要準備一個HD (DOM),是writeable的,讓CD BOOT的Prebuild Environment能將TAP的probe結果寫到HD (DOM)中。不然就要用網路硬碟的方法,寫入到其他host share出來的HD。

Prebuild Environment沒有USB Storage的driver,所以pen driver不能用。
Prebuild Environment會自動啟動網路(不知道支援的網卡有哪些,但是已經確認rtl8139可以用)。

TAP.EXE在CD的 XPE 目錄下。因為default會將probe的result存在當下目錄,所以要在HD所在目錄進行工作(由你IDE插曹位置決定,我的HD是在C:)
C:>D:\XPE\TAP.EXE
TAP的probe結果存成 "devices.pmq"

設法把HD(DOM)的devices.pmq拿出來..rename成C3VCM6.pmq
使用網路HD
  1. 當然要先再網路上,找一台pc(10.3.5.30),把一個folder share出來(sharefolder)。
  2. target board要接上網路。網路最好有dhcp server,比較簡單。
  3. 啟動 XPE prebuild environment
  4. 確認網路ok
  5. 連線網路磁碟機到driver X:net use x: \\10.3.5.30\sharefolder password /user:10.3.5.30\username
  6. 執行TAP,輸出到x:\C3VCM6.pmq : tap /o x:\C3VCM6.pmq
OK.

Blogger icon changed ? and I'm not a blog-spammer no more

原來的Blogger icon是一個 B。
今天login卻出現這個:


是? 一隻狗 ?

很有趣。


還....有...一...件...事.....

我的 PO 文"影像確認" 動作已經沒了~!!

yeh !

因為這個"影像確認"實在很麻煩,所以就follow (?),去申請 "review"。
今天收到這個..
Hello,

Your blog has been reviewed, verified, and cleared for regular use so that
it will no longer appear as potential spam. If you sign out of Blogger and
sign back in again, you should be able to post as normal. Thanks for your
patience, and we apologize for any inconvenience this has caused.

Sincerely,
The Blogger Team
.哇! 看到Create Post 下方 一點東西都沒有,真是高興呀。

一些有趣的msn暱稱

eason's Blog 看到的,因為這台電腦沒弄好hemidemi,只好copy下來
*平生不識朝河蘭,就稱痴 漢也枉然

*肝若差人生是黑白,肝若好考卷是空白

*薏仁做事薏仁湯,小叮做 事小叮噹

*我可以為兄弟兩肋插刀,但是我會為女人插兄弟兩刀

*無心插柳柳橙汁

*兄弟如手足,女人如衣服, 誰碰我衣服,我砍他手足,誰碰我手足,我穿他衣服

*乳搖知馬力-日久變人妻

*君子坦蕩蕩~小人長雞雞

*人生自古誰無屎 有誰大 便不用紙 若君不用衛生紙 除非汝是用手指

* 山不轉路轉...路不轉你迴轉阿...

*聾子聽到啞巴說瞎子看到鬼

*汝父久未贊汝,汝不知吾足著幾番

*遠眺望山....看山小...? 登高視水....真 水小...

星期二, 8月 22, 2006

Missing Component : VIA AC97 Audio Control

依照TAP的結果,到VIA site download CLE266的XPe driver (sld) import到data base後。
這樣build出來的C3VCM6 image不能開機,出現XP logo, 一下後,就出現blue death畫面。

將前新店team的提供的driver import後,再重新import TAP的結果,產生的image 就Ok 。

但是出現WDM missing:"Vinyle AC 97 Audio Codec Combo Driver"。
但是這個Component是真的有加入..

查VIA AC97 Audio Control 沒有加進去。

星期一, 8月 21, 2006

Diskpart : console mode disk management in XPE prebuild

在XPE prebuild Environment內的console mode 磁碟管理程式 : diskpart (在system32下).

這裡有說明 : http://support.microsoft.com/default.aspx?scid=kb%3Bzh-tw%3B300415

大略說一下..執行 diskpart後,進入diskpart console程式,然後會出現:DISKPART>的prompt,等你輸入命令,
help 會出現一個不太清楚的說明,

一般是先用 "detail disk" 來看disk的詳細資料,
用 "select disk 0,1,2,..."來選定對哪一個disk工作.

..... 白搭...EWF的partition刪不掉。

網路芳鄰,連線網路磁碟機 - Console Command :

問TS才知道的,就是"net use" command (對,中間空一格)。
實際上的command是"net", net /h 會出現一些"net" command的選項。
其中 use 是有關網路硬碟的,net use /h 會出現"net use" command的選項。
net use 連線成本地碟機名(A:~Z:)   \\遠端ip\foldername   password  USER:domain\username
在msdn中,如果不知道net use這個command的話,很難查到,用"共享資源"才會連到這個command的說明:

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-cht/library/ServerHelp/759fedf5-ddce-4747-ba22-156ae16a06b1.mspx?mfr=true

以上的link有所有 net 命令的內容。

retty, Code injection..

在Jserv的這篇看到retty 這一個程式,可以重導其他program的 stdio (or stdout only ?) 到自己的這一個terminal。
因為前一陣子也有需要作重導program stdio,覺得很有趣。

看了一下retty的code,大概是用ptrace( )這個function,對他process的stack操作。
其中 inject_attach( )這一個function,利用ptrace,暫停 目標process,修改stack,將一段code放到目標process的stack中,讓target process執行這一段code。

要讓target process執行這段code,同時又要能返回原來被ptrace( )中斷的地方,所以整個stack frame也要做起來。

那一段被加入的code,是用assembly寫的,大約是用dup2這個function,複製(導向?) 原來的stdio 到準備好的pipe中。

這個動作(大概就叫做code_injection吧)做好後,就可以恢復target process的執行動作,因為stack frame 被改,ip也被改,所以會去執行injected code。把自己的stdout重導到retty準備好的pipe中。

然後... retty的mainloop就把pipe中的資料印出來到自己的stdout,

真有趣,這樣,被 retty 處理過的code,都不知道自己已經執行過dup2( )這樣的動作。

奇怪的是,這 injected code 是放在 target process的stack中,stack 的segment不是 read/write attribe ? 怎麼可以執行呢 ? 不必用上次 Jserv的這一篇,修改memory attrib嗎 ?

星期六, 8月 19, 2006

About Pentax S5z

大小剛好,因為Lcd size的關係,也不能再小了。
鏡頭是pentax的"shift-lenze",所以厚度也OK。(不然就要用Sony T?的潛望鏡式)。
開機時間有點不夠快(還是U10比較剛好)。
LCD螢幕在大太陽下很不清楚,要開到最亮,才大約看得到,但是這樣很耗電。
因為機體小,所以按快門時,很容易手震。
MP4 AVI錄影很不錯,僅受限於storage size,640x480的解析度也OK。
有要遙控器,這是最OK的,約650就可以買到。 也有標準腳架孔。
電池....拍Mp4 AVI時很耗電,其他狀況倒是OK。應該可以拍到300張吧。

ha ha 真是有趣... (OnePiece)-423

海賊王真是有趣..

可可羅奶奶 原來是 美人魚 ..

ha ha ...

learned .. from ....

喔,發生了一大堆問題。先是啟動後,有些機器的螢幕不會顯示。
有些機器沒辦法通訊,找不到AP。

查了一下,因為是以costdown為目的的板子,所以電源配置和一般板子不同,導致各電壓的線元需求比例和一般的Power(大)不相同。
啟動時的螢幕問題就是因為啟動電流大過power輸出能力,導致該電壓有一個surge,讓螢幕的mcu reset。產生與週邊不一致的行為。所以無法顯示。

找不到AP,因為機器的Wifi採用USB類型,查到costdown板子的usb output波形沒有sharp的很好,以eye-diagram來看,有些已經超出usb規範,所以wifi usb dongle 的base mcu 和mainboard的溝通上有問題。

修改過power輸出和調整板子usb output path的限流電阻後,已經OK。

修改後的板子,上述現象已經排除,但是出現機器的application啟動後,無法正常自server download application。還有偶而在操作中的機器,會出現通訊中斷問題。

使用ethernet取代wifi,一切動作正常,猜測是Wifi bandwidth的影響。

用iperf 測試802.11g的bandwidth只有14Mbps 並非54Mbps - 查802.11規範,得知54Mbps是raw data bandwidth,加上802.11的handshake,, linking control data後,有效data bandwidth只剩下14Mbps,還發現AP 工作在pure 802.11g模式才有辦法達到24Mbps的有效頻寬。如果工作在b+g mode,即使與g的client連線,也只能達到14Mbps。

安排機器,AP一對一測試,大量的sample測試,以上狀況完全沒有發生。

客戶以Ping的los packet numbber來決定Wifi好壞,多數機器在200個packet中,lost 1~2次,有1,2個sample lost 5次。

因為ping 動作的影響變因過多,所以用ping AP的ipaddress來測試,並且ap與機器距離限制在2m以內,並且盡量減少周圍其他發社員的的情況下,ping測試的結果大幅度改善。

了解802.11原理,發現雖然

用流量軟體偵測到Application的設計,開機後向Server download的application約12Mbps維持12sec。

星期五, 8月 18, 2006

WXIII

Waste the XIII.

姑且不論事實的對錯,要是真能成功,也可以給將來的人一個警惕,不也是一件好事 ?

... 有點剩餘價值的感覺

星期四, 8月 17, 2006

Technorati

在 http://m955.com/plog/index.php?op=ViewArticle&articleId=56&blogId=1 看到有關 Technorati 的註冊教學,照著做了一下,把這裡加入。

有甚麼功能?好處?不知道。好像會出現有幾個blog link到幾個post。
但是這也不準,因為我本來就有自動同步post到另一(兩)個blog。

但是 有一個功能不錯,就是可以search 這個blog啦,
原來blogspot就有這個功能,但是 前一陣子不知道出甚麼原因,8月以前的都搜尋不到了。

現在有 technorati, 又可以搜尋了。

星期三, 8月 16, 2006

WDM : Driver's Life

IRP (I/O Request Packet) : 內含command, data的一組封包。系統和Driver溝通時使用。

  1. 系統偵測到device,將對應的driver load到memory,呼叫driver的DeviceEntry()。
  2. 系統的PnP Manager 呼叫driver的AddDevice( )。
  3. PnP將IRP 傳送給driver,讓driver處理。
  4. Application 開啟裝置,導致系統將一些IRP傳送給driver。
  5. Application 讀取裝置,系統將對應的IRP傳送給driver,driver把data備妥,放到message中傳回給系統。
  6. device有INT 發生時,driver的中斷服務常式開始工作。
  7. 系統偵測到device移除,PnP Manager 送一些IRP給driver,然後呼叫driver的DriverUnload( )。完成後,系統將driver從memory中移出。

以上看來Driver要實做三類function:
  1. Basic
    DriverEntry( ), AddDevice( ), DriverUnload( )
  2. I/O control
    StartIo( ), AdapterControl( ), OnInterrupt( ),
  3. Dispatch
    DispatchPnP, DispatchPower, DispatchWmi
系統偵測到裝置時,如何找倒對應的driver呢?
  • PnP裝置:
    PnP裝置必須要包含自己的id,大概是像PCI device中的Vender-function-type code,所以當PCI controller可以讀取pci card的這個id。 對照 Registry 和 INF 檔,找到對應的driver
    • 有PnP功能的bus有: PCI,USB,PCMCIA。
  • 非PnP裝置:
    非PnP裝置沒有id,所以需要user作加入device的動作( Add New Hardware Wizard)。 之後,系統由registry和INF檔找到driver。
    • 沒有PnP功能的bus有:ISA。
WDM和以往NT, 95的VxD不一樣,WDM完全被動的由系統呼叫,VxD則要自己載入,自己偵測硬體。


WDM 至少包含兩種driver 程式:function driver 和 bus driver。
  • Function Driver : 處理device的function
  • Bus Driver : 處理device hardware - bus相關的動作
有些WDM還會有 Filter Driver: Upper-level Filter / Lower-Level Filter
這些driver的相依關係可以由IRP的傳遞過程來看,系統利用IRP和driver溝通
IRP -> UpperLevelFilter -> Function -> LowerLevel -> Bus
把一開始的第一點: "系統偵測到裝置,把對應的driver load到memory"的動作說得更詳細一點:
  1. 系統的bus drver (PCI, USB, PCMCIA)偵測到有hardware 加入,呼叫系統的IoInvalidate DeviceRelation( ),這個function 會通知PnP Manager 硬體裝置有改變。
  2. PnP Manager知道硬體裝置有改變後,發送一個IRP給bus driver,取得更新後的裝置PDO (Physical Device Object)序列。PnP可以對照序列中有哪一個PDO是新增加的。
  3. PnP Manager傳送另一個IRP給bus driver,詢問某個新增加的PDO他的device identifier是甚麼。
  4. device driver讀取該硬體的id,轉成device identifier傳給PnP Manager
    device identifier 是一個像這樣的字串: "PCI\VEN_100C&DEV_001E&SUBSYS_000001"
  5. PnP Manager將device_identifier的hardware_key(VEN_..以下)放到registry中 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\...busname..)。

星期二, 8月 15, 2006

Blogger 升級!! Beta

歷史最悠久的blog host : blogger 終於要升級了,不過不是馬上就全面升級,是一部分,一部分 慢慢的升級,如果覺得不耐煩,可以到 http://beta.bogger.com 去申請一個新的account。
新account 用gmail帳號就可以login了,不是像blogger一樣,用另外的帳號 (因為當初blogger出來時,還沒有gmail呀 )。

但是 url 是共用的,所以這個 checko.blogspot.com 已經被我自己這註冊走了,沒法再用。
新的 account 就是 : realchecko.blogspot.com --- 了無新意

新功能有甚麼有趣的地方呢?到 beta.blogspot.com 去,會有一個預覽新功能的link。裡頭有介紹。
自己用起來感覺大概是....
  1. .文章新增 label (就是tag)
  2. 每次po文,不用等那個 三角形 符號 轉呀轉的
  3. 版型可以像msn哪樣 拖拉 控制,還有font, color都可以分開選了。
    但是 版型 html 編輯功能 消失了 <-- 這是致命的。
  4. 右邊的archive可以用javascript拉開,並且show出title。
  5. RSS Feed/ Atom 的選項更多了
    但是發佈到ftp, sftp 的功能消失了。
  6. 可以控制 誰能看到
  7. 控制中心變了,但是內容好像還是差不多。
先寫這樣好了,剛剛看到好像有把blogger帳號和gmail帳號合併的方法,先log out try try看...

星期一, 8月 14, 2006

debian - updates-alternatives

Debian提供一個方便的工具 : update-alternatives 讓你選擇一些工具。

update-alternatives 在 dpkg 中,所以要 install dpkg。

在 /etc/alternatives 下有一堆設定檔,update-alternatives提供一個方便的介面讓你選擇藥用哪一個工具。

簡單的用法就是:
#update-alternatives --config  x-terminal-emulator 
上面"x-terminal-emulator"就在 /etc/alternative中。

上面的command會列出一些 有安裝的 Xterminal,讓裡選你的"xterm"要link到哪裡。

除了這個外,比較方便的是 x-session-manager 和 x-windows-manager,可以方便的更換 windows-manger。

所以安裝了gnome, kde, icewm,... 都可以用這個command來選default windows manager。

Windows Remote Desktop Client

Windows XP之後都有遠端桌面連線功能。
Server 2003更可以提供 Thin Client 連線。
以上都是用 Microsoft的RDP (Remote Desktop Protocol)作溝通。

Windows系統內建RDP Client ,如果沒有,可以到MS download。

Linux 上的實做有 rdesktop。-- protocol 部份。
但是rdesktop好像只是protocol部份,Windows操作部份要另外安裝
krdc - kde的rdesktop client。
grdesktop - gnome的。

IBM 570 touch-pad (red-point) driver

一樣,原來都OK的,竟然再進入X時,出現 "Cannot open input device"。
跟以前一樣,用Xorg -allNoInputDevice可以打開。所以應該只是mouse driver的問題。

所以手動lod mouse driver : 一個一個試,是mousedev.ko。

這樣就OK啦。

但是每次重開機,還是要手動load 這一個mouse module。

psmouse 和 mousedev 都要

Debian - pcmcia, cardbus ethernet card

原來可以動的ZEN1200 (8139too),竟然沒動作了。
插入 card ,ethernet led亮,但是ethernet卻沒動作。

用 lsmod,看看 r8139too這個module 有沒有load在kernel中。==>沒有。
用 lspci 看,RTL-8139 有偵測得到。==> OK。
用 cardctl status 看看 card slot狀態是否正確。==> OK。

所以問題只剩下... 8139too 沒有載入...

手動載入..

modprobe 8139too

再 啟動 eth0

ifup eth0

OK !

這樣作過後,下次再放入 ethernet card 後,就會自動 load module,同時 ip 取得。

Some Practices about x86 Linux Assembly Programming

x86 Linux 上的 Assembly Programming。
語法 - 由assembler決定,如果是用最普通的,binutil附的gas,那就要follow AT&T 語法 (我們以前常用的MASM用的是intel語法)。

AT&amp;amp;T語法和intel語法差異蠻大的。
寫寫AT&T語法的注意事項:
  1. register 要加 % 作prefix。
  2. literature要加 $ 作prefix。
  3. 操作的順序是 : operation source destination。
  4. operation的size由加在instruction後的(b, w, l)決定。
  5. 位址計算語法是: section:disp(base, index, scale) -- target = disp+base+index*scale。
    linux是linear mode沒有(section)。
範例:

helloas.s
.data
msg : .string "Hello, world!\n"
len = . - msg
.text
.global _start

_start:
movl $len, %edx
movl $msg, %ecx
movl $1, %ebx
movl $4, %eax
int $0x80

movl $0, %ebx
movl $1, %eax
int $0x80
先用gas (as) assembly to .o
$as -o helloas.o helloas.s
再用linker (ld) linker成 executable file
$ld -o helloas helloas.o
OK!
可以執行helloas試試。

以上範例可以看到 Linux 的 Kernel Service是由 INT 80h 提供的。
eax作service name,
ebx, ecx,....依序存放service argument。

星期六, 8月 12, 2006

星期四, 8月 10, 2006

Install Debian Sarge in IBM 570

follow http://encypher.net/node/57
和 http://sarge570e.blogspot.com/2005_05_01_sarge570e_archive.html

使用底座的CDROM。
570底座CDROM最大麻煩是,常常偵測不到,而且要等很久,
所以 開機後,出現IBM logo時,按 "ESC" 會出現 bootlog,
HD偵測完後,就會出現CDROM偵測(結果是HD偵測很慢)。

因為CDROM不穩,所以用Sarge 的Netinstall CD,只有130M 比較容易成功。
網路使用rtl8139。
啟動用option : linux26 安裝2.6版kernel。

插著 網卡 安裝,這樣會自動偵測到網卡,注意 當詢問 "remove pcmcia package"時,要回答 NO。

正常裝完,重新開機。
將CDROM取出。
因為設定boot sequence是CDROM,HD。
所以有時候會出現"GRUB stage 1.5"的Error。
這時候,重新開機幾次就可以,不然,就把dock拿掉(因為使用Netinstall,所以這時候已經不用cdrom了)。
開機後可以看到rtl8139 模組已經load。
繼續安裝動作,因為是 netinstall,所以選source site(會修改sources.list),和proxy(會修改 apt.conf)。
先不要安裝package。會出現error。calcel,手動繼續下一步.. MTA...到結束。

安裝netselect,用netselect-apt testing 選 一個source site。
將 source 改成testing.. apt-get upate,apt-get upgrade。

follow http://sarge570e.blogspot.com/2005_05_01_sarge570e_archive.html
安裝
kdebase x-window-system xmms mozilla-firefox ssh vim sudo

....因為是netinstall....很久....

星期二, 8月 08, 2006

uC/OS II v 2.51 - sample proram setup

uC/OS II v2.51 的pc BC4.5 port。
實際上要修改一些部份才能正常build (可能有寫在textbook上吧)。

問題發生在 uC/OS sample 自己本身的位置。
有兩個file要修改,將sample folder中的兩個檔

SOURCE/INCLUDES.H
TEST/TEST.MAK

和OS source code

uCOS-II/SOURCE/uCOS-II.C

中,加入folder path.


例如,整個sample code folder在 d:\ucosv251

SOURCE/INCLUDES.H 內含..
#include "\software\ucos-ii\....
要改成
#include "d:\ucosv251\software\ucos-ii\...
實際上可能可能有參數可以指定local include path,但是不知道borland C compiler的option是怎樣,所以沒辦法加。

TEST.MAK內也一樣:
OS=\SOFTWARE\uCOS-II\SOURCE
要加上..
OS=D:\UCOSV251\SOFTWARE\uCOS-II\SOURCE
所有sample project : EX1_x86L, EX2_x86L, EX3_x86L, EX4_x86L.FP 都要這樣改。

OS code : uCOS_II.C S裡面也有這樣的include 指令,也要一樣修改。



看makefile : TEST.MAK 大概可以知道。

還有用maketest.bat作build時的error log (用 > error 導入file)可以查出以上需要的修正。

Borland C++ 4.5 Installtion and Setup


uC/OS的sample 是用BC4.5的,所以要setup BorlandC 4.5的Compiler.

BC 4.5 解開後是 BC45 這個folder。只有command line tools。

把BC45放到"容易access"的位置,例如: C:\BC45
將 BC45\BIN 加入system的PATH中 (Win2000以上在我的電腦--內容--進階)。

一定要在系統中將 C:\BC45\BIN 加入PATH中 (以";"為分界)。
這樣輸入 BCC (Borland C Compiler)才會找得到,同時,才會出現help message。


測試compile一個source file,會發現找不到include file的error。
代表 include folder path 還沒設。
從bcc的help message可以看到,是用"-I"option指定的。

所以用...
>bcc -IC:\BC45\INCLUDE -LC:\BC45\LIB myprog.c
就可以成功build program出來。

Cannot Search My Blog

Blogger真是問題不斷...
現在上面的search (NavBar)失效了,搜尋沒結果。

真糟,這下反而要用google來search才找得到。只不過我的pagerank不高,所以很難找得到我的內容。

已經填寫 Blogger的"問題請求"信了。

希望會修復才好....

:(

星期一, 8月 07, 2006

Ruby on Rail - Debian

Ruby on Rail (ROR)最近真是紅到不行,所以要try一下。當然,也是在Debian上。
發現這一頁(http://www.debian-administration.org/articles/329)就是我要作的。
照著作..


Installling Ruby, Gems and Rails

Ruby

Debian的stable已經包含ruby了(所以不用backport,或升級到testing)。
除了ruby本體外,還要安裝ruby需要的zlib,文件產生程式和 command line ruby interface.
$ aptitude install ruby libzlib-ruby rdoc irb
裝完後,可以試試 irb
$ irb
irb(main):001:0> 1+2
=> 3
irb(main):002:0> 3*4
=> 12
irb(main):003:0> foo="bar"
=> "bar"
irb(main):004:0> foo.reverse
=> "rab"
irb(main):005:0> bar=40
=> 40
irb(main):006:0> bar.to_s.reverse
=> "04"
irb(main):007:0> exit

Gems

Gems是Ruby library的管理程式(像Perl的CPAN一樣),這個debian stable沒有包(testing也沒有),所以要到sourceforge download .. (http://rubyforge.org/projects/rubygems/)
我download的是 (http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz)
解開,run setup,因為gem的setup也是用ruby寫的,所以要確實安裝好ruby才行。
$ tar zxvf rubygems-0.9.0.tgz
$ cd rubygem-0.9.0
$ sudo ruby setup.rb all
因為要給所有user使用,所以要sudo成root才能install到/user/local中。

Rails

Rail是Ruby的一個package,所以可以用Gems來安裝..
$ sudo gem install rails --include-dependencies
因為要安裝到/usr/local,所以也要sudo 成root。
如果要透過proxy, 可以用 -p option
 -p http://10.3.3.194:8888
OK, Ruby on Rail 已經安裝完畢。
$ gem list
列出所有installed gem package,可以看到rails(和一些其他的)已經安裝完成。


另外 (http://wiki.rubyonrails.com/rails/pages/RailsOnDebianStable)也有Debian Stable的安裝範例。
因為Rails不在"stable"中,所以是加入testing feed,然後修改apt.conf來安裝的。

如果是Debian Testing的話就容易了..(http://wiki.rubyonrails.com/rails/pages/RailsOnDebianTesting)。
因為Rails已經在"Testing"中,所以直接用apt安裝 Rails,就會安裝Rails, Ruby等等相關package。

星期六, 8月 05, 2006

Bandwidth of 802.11g usb dangle - 11Mbps ?

因為發生五台以上就容易出現連線出錯的問題,所以測一下那一支dangle的bandwidth。
方法是

TARGET--WifiDangle ==== AP ---ethernet NB
跑iperf,用udbp,設定bandwidth 到50M..
 iperf -c  host-ip -u -b 50M
結果測出來是20Mbps, packet lost 約45%。
用tcp 測的話 bandwidth 是 11Mbps。
一直加到3台target。都是一樣,同時測試,每台還是11Mbps。沒有被share調流量。
AP端當然是30M多bps.

所以5台發生問題的原因會是 11 x 5 = 55M > 54M (802.11g bandwidth) ?

也就是說802.11g client 端流量只有11M,AP的流量才有到54M ?

星期五, 8月 04, 2006

可以呀,Writely的post to blog...

我從來不知道可以直接由Writely post到blogger..
試試看...

真的可以呀,雖然po時會有error message,但其實是save as draft。

星期四, 8月 03, 2006

msn space 改版了...變成 windows live..

改版也還好,麻煩的是把 link 也改了,
這下子所有的搜尋結果都失效了...

Live ? 是不是要作online版 windows ?

還有 Beta 字樣?
這個其實不用寫。
因為MS即使是正式release版,也一定馬上就會出Service Pack 或"重大更新",
Beta還是正式版,都沒差...
有差,而且差很多,
便得更ie專屬,速度也便慢,更慘的是mail to blog功能沒辦法動作..
這下當backup的用途消失了..

星期三, 8月 02, 2006

CE 5.0 platform build cannot be installed in Windows Server 2003

竟然有這種事,Windows CE 5.0 platform builder竟然不能安裝在Windows Server 2003上。
因為CE 5.0的需求是 XP Sp1 或2000 SP4 ..

用 Windows Server 2003 的相容性執行(TS教的,在exe檔按右鍵,會有一個tab可以選相容性執行)。也不行。


這是因為Server 2003太新還是太舊?

(說明一下,是Windows Server 2003 sp1)。

所以?花大錢買Windows Server 2003當開發平台,結果不能run CE platform builder,導致要?
另外買 零售版XP裝在Server上?

真是..........