2008年1月29日 星期二

尾牙

對於辛苦的研究生活,挑尾牙地點一定不會手軟-
王品台塑牛排』這種夢幻型的高級餐廳,能享用到的次數應該不多.


餐前麵包


法式杏鮑菇


松露鵝肝濃湯


台塑牛排


烤濃漿巧克力冰淇淋


法式烤布蕾


葡萄紅酒凍

上菜的順序是: 餐前酒→麵包→沙拉→湯→主餐,酸梅湯,配菜→水果→甜點→飲料

意猶未盡是那多汁的杏鮑菇,真的夠嫩,配上法式芥茉醬或義式香醋汁都很搭. 松露鵝肝濃湯聽起來就很補,太濃郁的關係我喝起來有點膩. 牛排真的很紮實,大概8公分厚吧,中式風格都是全熟,嫩度還可以,口感偏乾,大概是吃慣5分熟的.個人偏好沾上醬汁來吃,蠻獨特的有回甘的感覺,另外佐料還有海鹽跟大蒜,搭配上酸梅湯吃起來比較不會膩.不過到主餐時在座都覺得不是那麼餓,多少都會影響到口感,這可能跟上菜的速度有點關係. 點心的部份真的很精緻,每一樣都讓人想品嚐.

服務算是週到,剛就座時等了一段時間都沒有人來,針對這點他們還特地招待一人一杯雞尾酒. 過程中也不時會來清潔桌面,茶飲也會主動詢問是否續杯.
整體來說算很精緻,量足夠一般人吃到很飽,不過我認為東西要好吃還是要少量多樣.

期末心得

碩一上結束了,在專業領域上似乎才懂個皮毛,很難想像畢業的學長怎麼實力這麼堅強,莫非之後的日子更難過了?

這學期修了四門課,沒有太多時間做自己的研究,有點超過. 兩門是跟自己走的方向比較相關,另一是『個人軟體程序』,主要是在探討個人開發軟體的過程,事前的規劃,事後的自我評估,最終目標在提昇軟體品質.coding只是將邏輯轉換成電腦看得懂的程式碼,在開發階段只佔了一部份,漸漸要能了解這道理.

還有一門課是『保健科技特論』-主要在講中醫氣血循環的部份,光聽名字就知道是涼課,大概是電機系老師害怕學生被操出病來所開的.修課人數兩三百人,好大一間階梯教室.去上課的人大部分都是在補眠(冷氣有點強要穿外套),不然就是看paper,一些人會專心聽,不過我很少去也只是猜測,每次都是快下課的時候再跑過去點名,這現象也變成常態了.期末考大家排排坐互相照應,兩三個人用一本書邊抄還邊笑,還有不認識的來問答案QQ.老師人真好.

在這新環境裡認識不少人,Lab的同學都很講義氣,砲口一致對外,學長會主動幫忙我們,這點真的很感動. 不過也有遇到別的實驗室的學長就愛擺一副屌樣,說話頤指氣使,此風不得長阿. 研究生的環境也越趨近職場,自私的人不在話下,一些人就真的只會把自己的分內做好,不會想多問你一句,只能說他們善於保護自己吧,畢竟時間對於一個研究生再寶貴不過.我還是保持一貫的作風樂善好施,量力而為摟.

寫過一次國科會需求報告及計劃書(CMMI這東西很難搞),執行中的案子一件,時間到6月底.除了這個以外,希望下學期能夠多花點心思來念paper,了解目前發展的情況,還有哪邊可以做的...
『Master』就是要擁有獨立思考的能力,學習只是個過程,思考相對來的重要,適時的提出看法,讓別人注意你信任你.
在我們這個年紀,已經有能力去決定要平凡過一生還是出人頭地.
對於未來 會有憧憬,要如何去實現,靠一步一步的規劃摟.

2008年1月9日 星期三

aMSM 0.97

Install aMSM 0.97 (12/25/2007)
Download source file
tar -jxvf amsn-0.97.tar.bz2
./configure
make
make install


Error message: checking tcl build dir... configure: error: Unable to find Tcl directory or Tcl package is not tcl-dev
apt-get install tcl8.4-dev
Error message: ./configure: line 3482: /usr/local/lib/tkConfig.sh: No such file or directory
apt-get install tk8.4-dev

2008年1月1日 星期二

新市花海

從ptt台南版得知這個資訊, 趁著元旦跟內人跑去晃晃.
以往都是在照片上看到, 這次能親身體驗身在花叢裡的感覺.

一望無際向日葵


迷惘的小孩


遊客 高鐵

台南地形平坦, 想看座山都要跑一段距離, 傍晚去了神祕的地方-草山月世界, 這個地方有印象是在國小的地理課本吧? 不過是在台南左鎮鄉岡林跟真正的月世界好像還有點距離@@\
很久沒有騎車上山的感覺了, 隨行還有老伯跟她女朋友, 是他們帶路的. 山上蠻冷的待不久, 相機也沒電了, 下面這張勉強擠出來.

光禿禿山丘

二寮就在附近, 板上也推這邊看日出不錯. 老伯有提到附近的308高地, 查了一下位於內門鄉和台南縣左鎮鄉, 龍崎鄉交界的一處高地, 標高308公尺, 可遠眺草山月世界及嘉南平原, 視野清晰時可看見台南海岸. 看來找到了一處秘密基地.

2007年12月27日 星期四

聖誕夜驚魂

這全台僅有的活動, 已是外語學院的傳統了, 也吸引我每年都來參加. 專程從台南趕過來, 原班人馬我, 廖哥, 皓呆, 老伯, 育誠, 這次還加入許多新血, 都是lab的朋友.
一票難求的盛況, 不排個3小時是進不去的, 在門外當然是亂哈拉, 有這幾個好朋友在不怕冷場, 隨便個話題就笑翻了, 即使沒多大意義. 等了許久也輪到我們, 擺明就是進去惡搞的, 希望這次不要再破壞人家的道具.
阿嘉比較大膽走第一個, 對於未知的世界總是充滿畏懼, 儘管知道裡面都是人扮的還是會被嚇到. 不過照著固定的動線走, 少了點冒險個感覺, 燈光過於昏暗, 看不清楚用心的場佈小可惜. 我們太會拖了, 頻頻被趕, 看得出來他們生氣了, 有好幾隻還笑場 真的好可愛.

嘉義, 好久沒回去了, 比起台南的繁榮, 這邊的步調比較適合我, 至少有山可以看, 還有蘭潭 這個交情很深的地方. 文化路豆奶擔都有店面了, 真可說是看著他長大阿. 時間太晚了,沒到經國新城去探一下.
晚上住在宿舍, 幾個男人住一起不外乎就是亂, 啤酒罐砌成的牆壁, 地板舖滿巧拼, 充氣床墊, 給人一種悠閒放蕩的感覺. 一堆運動器材, 在宿舍沒事就鍊身體, 還有拳擊手套, 怪不得隔壁的宅宅看了都會怕. 好久沒用公共衛浴了, 想到以前洗澡都抓整群的, 大聲說話都沒人管.
man's talk~ 當晚聊到快天亮, 關起門來什麼都能講, 報了好多八卦, 久了沒見面我的思想都快跟不上他們.
一個什麼事都幹得出來的地方, 令人流連忘返.

2007年12月13日 星期四

Porting QT/Embedded-3.3.6 on PXA270

QT/Embedded 3.3.6
Cross-Compiler: gcc-4.0.2
以下流程為編譯QTE並驅動Touch Screen(尚未成功)

事前工作
編kernel時要加入touch screen及LCD module
->UCB1400 Touchscreen support
->LCDtype(MTLCD-0353224A 3.5 inches)

下載:
qt-x11-free-3.3.5.tar.bz2
qt-embedded-free-3.3.6.tar.bz2
tslib-1.0.tar.bz2

編譯Qt-X11 (後面會用到)
./configure -thread -no-xft -no-cups -no-stl -no-ipv6 -no-freetype -disable-opengl -disable-xml -disable-canvas -shared
make

編譯tslib (後面會用到)
將toolchain路徑加入$PATH
echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.autogen
//解決rpl_malloc的error
CONFIG_SITE=arm-linux.autogen ./configure CC=arm-unknown-linux-gnu-gcc CXX=arm-unknown-linux-gnu-g++ --host=arm-linux --target=arm-linux --prefix=$PWD/_install
make; make install

編譯QT/Embedded
QTE對路徑要求嚴格,在target的library路徑需和編譯時的一樣,這邊預設為/opt/qte
為了讓QT支援Touch Screen
修改qte/src/embedded/qmouselinuxtp_qws.h, 加入
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW

修改qte/src/embedded/qmouselinuxtp_qws.cpp, 指定TS的device node為/dev/ts
...
#if defined(QT_QWS_IPAQ)
# ifdef QT_QWS_IPAQ_RAW
if ((mouseFD = open( "/dev/ts", O_RDONLY | O_NDELAY)) < 0) {
# else
if ((mouseFD = open( "/dev/ts", O_RDONLY | O_NDELAY)) < 0) {
# endif
qWarning( "Cannot open /dev/ts (%s)", strerror(errno));
return;
}
...

將QT-X11編出來的bin/uic, bin/moc copy到 qte/bin底下
將tslib編出來的include/tslib.h copy到qte/include底下
修改qte/mkspecs/qws/linux-arm-g++/qmake.conf, 修改gcc為自己所用的
arm-linux-gcc -> arm-unknown-linux-gnu-gcc
arm-linux-g++ -> arm-unknown-linux-gnu-g++

開始編譯
./configure -thread -embedded ipaq -shared -depths 16 -no-cups -no-ipv6 -thread -no-gfx-qvfb -no-freetype -disable-opengl -disable-xml -disable-canvas -qt-libjpeg -qt-mouse-linuxtp -xplatform qws/linux-arm-g++ -L/tslib/lib -L/tslib/lib/ts -I/tslib/include -lts
make sub-src
-L接tslib的library, -I接tslib的include 編譯時一同加入
make完成在qte/lib下產生libqte-mt.so, libqte-mt.so.3, libqte-mt.so.3.3, libqte-mt.so.3.3.6, 前三個為link, 最後一個即為object檔

安裝到target
受限於空間的不足, 可以將object檔放在flash,再用link的方式完成
假設libqte-mt.so.3.3.6放在sda1的根目錄mount /dev/sda1 /mnt/sda1
ln -s /mnt/sda1/libqte-mt.so.3.3.6 /opt/qte/lib/libqte-mt.so
ln -s /mnt/sda1/libqte-mt.so.3.3.6 /opt/qte/lib/libqte-mt.so.3
ln -s /mnt/sda1/libqte-mt.so.3.3.6 /opt/qte/lib/libqte-mt.so.3.3

寫一個hello world放上去跑, 經測試可以正常顯示, 不過touch screen的部份不能使用, 目前僅能以外接滑鼠的方式來操控. (註: 執行程式前要記得export QTDIR=/opt/qte)

參考資料:
QT/Embedded-3.3.8初步交叉编译的完全整理
Qt-embedded-3.2.3到PXA270上的移植
Qt/Embedded 2.3.10 到PXA270上的移植

TSLIB相關資料:
QTE與觸摸屏
tslib 1.4 - WeiBing
Qt-embedded-interest Archive - Touchscreen with qt examples?
Embedded Systems-GUI
tslib download and cross compile for arm

2007年12月12日 星期三

Porting MPlayer on PXA270

期末專題要在PXA270上實做一個播放器, 為了要能播mp3而且支援stream的形式選擇MPlayer. (MADPlayer 不支援stream, VLC太過複雜). 移植過程供大家參考.

Target: Create XScale-PXA270
Kernel: 2.6.15.3
Cross-Compiler: gcc-4.0.2
MPlayer-1.0rc2
libmad-0.15.1b (MAD: MPEG Audio Decoder用來mp3解碼)

事前工作:
toolchain路徑加入$PATH
編譯kernel時把audio相關的module一起編入
在target上建立device node (此為OSS預設的device)
mknod /dev/dsp c 14 3
ln -s /dev/dsp /dev/sound/dsp

編譯libmad
CC=arm-unknown-linux-gnu-gcc ./configure --host=arm-linux --prefix=$LIBMAD
make; make install
$LIBMAD為安裝library的目錄

編譯MPlayer
./configure --cc=arm-unknown-linux-gnu-gcc --host-cc=gcc --enable-cross-compile --target=arm-linux --enable-linux-devfs --disable-dvdread --disable-libdvdcss-internal --enable-fbdev --disable-mencoder --enable-liba52 --enable-mad --disable-libmpeg2 --disable-mp3lib --enable-static --disable-dvb --disable-dvbhead --disable-live --with-extraincdir=$LIBMAD/include --with-extralibdir=$LIBMAD/lib 2>&1 | tee logfile
make
--enable-static 用靜態編譯, 避免安裝library到板子上麻煩.
--enable-mad 採用mad的codec
--with-extraincdir 指向libmad的include
--with-extralibdir 指向libmad的lib
因為我只需要播放mp3的功能, 其他configure的參數就沒太理會, 其實大多可以disable. 只是過程可能會遇到error, 大部分都可以找的解決方法.
make 完之後在目錄下產生mplayer執行檔, 大概7mb, 可以用strip在將其大小縮減.

放到板子上測試
./mplayer -ao oss -ac mad test.mp3
./mplayer -ao oss -ac mad http://192.168.0.1/test.mp3
-ao指定device
-ac指定codec
經測試後播放時delay很嚴重,使用mad library來解碼,將浮點運算轉成整數運算,以滿足沒有浮點數運算的cpu,理論上應該很順才對.

補充: PXA270上對應的audio device node是/dev/dsp 需自行建立.

參考資料:
摩托學園討論區-embedded system
最新版本mplayer移植pxa270成功
MPlayer播放選項