2008年10月29日 星期三

Linux - uBuntu 下 RealPlayer 10 播放沒有聲音!

1.安裝ALSA OSS驅動程式

$ sudo apt-get install alsa-oss

2.使用vim編輯realplay這一個檔案

$ vim /usr/lib/realplay-10.0.9/realplay

將第73

$REALPLAYBIN “$@”

改成...

aoss $REALPLAYBIN “$@”

之後儲存,就可以解決realplayer啟動時只有影像沒有聲音的問題。

Linux - uBuntu最新版本8.10 Intrepid Ibex

原本小素在Linux領域是Fedora的忠實愛好者。
因為本人實在很不習慣在ubuntu下面不允許root權限。

在小素的概念中,個人使用的桌面系統就是應該隨心所欲,就算中毒也沒關係。
不管什麼東西就是方便快速最重要。

總之就不想要什麼東西都輸入密碼!
所以對我來說Fedora可以用root帳號登入這件事就帶給我無比的方便!

而在ubuntu沒辦法使用root登入就算了,還不能用su切到super user的模式。
後來在爬文之後,發現解決之道,就是用passwd替root設定密碼之後,就可以使用su這個指令切換到super user這個等級的管理模式。

於是小素從8.04開始就正式加入ubuntu的行列囉!

現在8.10這個比8.04更進步的版本就要發佈,想嘗鮮的人可以用以下方法去更新成8.10喔!

1.sudo update-manager -dc

2.用系統->管理->更新管理員->檢查->安裝更新套件

之後就可以開始享受全新的ubuntu8.10囉!

對了~ubuntu 8.10 的開發代號為: Intrepid Ibex,又名為:堅毅的山羊!

很屌的一種動物喔!



2008年10月23日 星期四

Windows CE - Windows Mobile 6 常見三種錯誤中斷(Data Abort、Raise Exception、Prefetch abort)

在開發Windows Mobile 6.1的過程中,常常要解決很多Bug。
在根據MSDN的文件中,當錯誤產生時,大約有三種(其實不只,但是這邊就只先紀錄三種)。
在下摘錄Edwin兄的在這篇文章的解釋:

而Windows Mobile產生的格式如下,小素將附上MSDN裡面的定義與介紹。
Exception type: Thread=%x Proc=%x ‘%s‘ AKY=%x PC=%x(%s+%x) RA=%x(%s+%x) BVA=%x FSR=%x

1.Thread = PTHREAD address
2.Proc = PPROCESS address ‘Process name’
3.AKY = Access key

MSDN中對AKY的解釋是:

Process slot bitmask corresponding to the processes the excepting thread has access to. For example, the above exception is 0x00000005, which corresponds to:

Nk.exe 0x00000001

Shell32.exe 0x00000004

簡單的說,就是32個slot都會有一個對應的Key,當意外產生時,我們可以藉由出現的數值去推斷這個錯誤(意外)產生有哪些程序去參與。
4.PC = Program counter (Module name + Offset)
5.RA = Return address (Module name + Offset)
6.FSR = Fault status register

MSDN中對FSR的解釋是:

The FSR represents several flags that will help you understand the nature of your exception. For ARM devices the following flags can be set:

#define FSR_ALIGNMENT 0x01

#define FSR_PAGE_ERROR 0x02

#define FSR_TRANSLATION 0x05

#define FSR_DOMAIN_ERROR 0x09

#define FSR_PERMISSION 0x0D

Using the example above gives us:

FSR=00000007 == FSR_PAGE_ERROR | FSR_TRANSLATION

簡單的說就是對錯誤或是意外產生的分類,從FSR中,我們可以發現哪幾種類型的錯誤再次的意外中出現。


以上就是對Windows Mobile 6錯誤的簡單介紹。

2008年10月12日 星期日

Windows CE - 編譯時出現錯誤訊息 : LNK2019: unresolved external symbol

最近小素再解一條Issue,所以需要呼叫到 GetTcpStatistics 這個函數。
於是我在開頭加入了:

#include <Iphlpapi.h>

之後編譯出現了錯誤:

Driver.obj : error LNK2019: unresolved external symbol GetTcpStatistics referenced ...

之後小素就為了這個編譯錯誤Google了一整個下午。
Google上面有許多解決辦法,包括使用exten "c"{}把標頭檔放在中間,可惜小素放進去後依然出現錯誤。
後來發現許多人都說是link的時候沒有連結到 :

Iphlpapi.lib

後來小素把這個lib檔放進source fire中告訴編譯器編譯的時候要link起來,就解決這個問題了!

2008年10月6日 星期一

Windows CE - Build Code 基本介紹

因為之前接觸的嵌入式系統(Embedded system)是用VC++6.0進行Build Code的動作。
所以一開始接觸Windows CE這個微軟的嵌入式系統中關於Build這個部份著實摸了很久。
對於Build Phase這些基本的概念就不加詳述了。
現在介紹WM6.x下面一些基本的操作。

建立Build Code的基本參數設定,可以利用PB5.0所提供的"New Build Window Wizard"這個方便的Tool建立基本的參數環境設定。當使用這個類似的精靈的模式建立出來的環境設定,會在桌面製造三個簡單的short cut:

a.Update Loader
b.Base OS
c.Build All

Update Loader這個就先不說了,因為感覺對自己的工作沒有很大的影響,所以也沒深入去探討。

一開始Get Code下來之後,可以先用Build All建立基本的Windows 跟簡單的CE Base(包含Driver)。之後要寫Driver要各別去compile 單一的driver的時候可以利用Base OS這個Short cut去建立各別的程式。要Build各別的Driver的時候,只要去Soruce Code資料夾下輸入:

build -c

這樣Compiler 就會根據資料夾下的source裡面的順序去compile soruce檔。並且已經編譯好的檔案就會放在之前Build All產生的Release folder裡面。

這時候如果你需要Make Image也不用Build All。一樣用Base OS這個Short Cut用Command Line在Release Folder下輸入:

makeimg

就可以重新建立CE的Image。

參考文章:
1.Edwin's blog-Windows CE Build Phases:http://www.wretch.cc/blog/edwin0324/11496432
2.CHECKO's Blog-CE 的Build Phase:http://checko.blogspot.com/2006/10/ce-build-phase.html
3.MSDN-Build Phases:http://msdn.microsoft.com/en-us/library/aa909653.aspx

2008年10月1日 星期三

Windows CE - 編譯時出現錯誤訊息:NMAKE : fatal error U1077: 'cscript' : return code '0x1'

今天在build all時候,出現:

Input Error: There is no script engine for file extension ".js".
NMAKE : fatal error U1077: 'cscript' : return code '0x1'
Stop.

看了老半天看不出個所以然。

後來去Google搜尋有沒有人有類似的錯誤。
發現了這一篇文章:

http://blog.csdn.net/Envelope_Emputy/archive/2008/09/02/2868168.aspx

搞了半天原來是UltraEdit搞得鬼。
難怪我看了半天看不出這個到底哪邊出問題。

解決方法,其實就是刪掉UltraEdit跟 "js"這個副檔名的關聯就可以了!

1. 安裝完UltraEdit第一次使用的時候彈出的一個界面讓我們選擇需要關聯的檔案類型,此時按它的默認選項直接點擊確定就可以了,不要將JS與其關聯。

2. 不小心已經關聯的,可以打開UltraEdit在進階→配置→檔案關聯→
選擇js文件類型,然後點擊刪除,確定將關聯取消了。

以上的方法,就可以解決在Winodws CE 6.1 build all時出現這個錯誤訊息的辦法。