2009年4月29日 星期三

夏川里美 - 你的原點(故鄉)

"心靈之歌"專輯封面為瑞芳車站一景


夏川里美最為台灣人熟悉的, 應該是已經廣被翻唱的"淚光閃閃"和"島歌"了

這個月月中下班開車聽廣播時
聽到新專輯"心靈之歌"的廣告, 當下覺得不錯就想要去買這張專輯
然而平時沒有時間跑唱片行, 而工作附近的家樂福也沒賣這張

就這樣拖到了上週末, 陪大姊去大潤發時看到了
回程放了來聽, 發現當時吸引我注意的是曲目的第一首 - "你的原點"
之後細看歌詞, 與曲風相當符合
再加上夏川里美輕亮柔美的歌聲, 為緊張忙碌的生活帶來一絲悠閒




你的原點(故鄉)

歡迎回來 一定累了吧 用南風包裡著你
母親依然沒有變在田中忙碌 只是增加了幾莖白髮
漫步在出生至今的旅程上 這是你的原點(故鄉)阿
要不要 再一次 再一次 回去看看

不變的歌 不論何時總是溫柔的海
連煩惱的事 也隨之忘卻
遮蔽靈魂 到手的東西 真的真的就是重要的東西嗎?
再見了 歡迎回來 你該回去的地方在哪裡

過來這裡 擦掉淚水 我能瞭解 你努力過了
偶爾和哥哥一起喝喝泡盛酒吧 雖然知道你會不好意思

凝視從前搖盪過的鞦韆 懷念起純真的自己
是不是 如此正真直地 一路走來

不變的歌 不論何時總是溫柔的海
連煩惱的事 也隨之忘卻
遮蔽靈魂 到手的東西 真的真的就是重要的東西嗎?
再見了 歡迎回來 你該回去的地方在哪裡

時代在逐漸擴張的黑暗中 逐漸失去了互助
逐漸習慣了 悲傷 想要回去 那個地方

不變的歌 不論何時總是溫柔的海
連煩惱的事 也隨之忘卻
遮蔽靈魂 到手的東西 真的真的就是重要的東西嗎?
再見了 歡迎回來 你該回去的地方在哪裡

share buildroot toolchain with others

由於工作平台環境限制的緣故(見buildroot: 三個願望一次滿足一文),
所以當時採用了buildroot, 以利於產生toolchain與使用uClibc

當然, 單單在個人環境下使用buildroot不太會有問題
(意外是會接二連三發生的...:P)
最近要與他人co-work, 所以要把開發環境設好
天真如我, 反射性地, 就把 buildroot目錄下的 build_arm/staging_dir 打包後丟了出去
直到同事遇到了一堆 include/library search path 問題, 向我反映, 這才發現不妙
套句國見比呂的話, 現在才想要轉用crosstool-ng實在是太遜了
而使用alias 去傳入 sysroot 參數對於別人也不是好主意

問題發生的主要原因在於toolchain 對於 include/library search path找不到所需檔案
簡單的說, 就去觀察toolchain的path 設置, 並且把找不到的檔案放在適當位置即可
預設的include path可以透過 arm-linux-cpp -v 來取得
而library path 是由 arm-linux-gcc -print-search-dirs 取得

接著就是做一些file link or move
比較要注意的是libc.so 這個文字檔, 把裡面GROUP的path prefix 移除就可以了

anyway, 不這麼做的話, 比呂和英雄是不會對決的...
但是我們可不會水平外曲球, 下次還是改用crosstool-ng or scratchbox吧

2009年4月26日 星期日

0x1ab

好一陣子前與jserv聊天談到他對於之後的規劃

他提到了0xlab, 該組織亦在今日也開了成立記者會

0xlab成員們自我期許開創出更好的軟體環境,為台灣提昇軟體技術紮根且與世界接軌

而這樣的抱負和理想也讓我聯想起現今失落已久的工匠精神

細看0xlab的專案細目, 涵蓋範圍相當廣,

從platform construction, software and compilation technology, robotics 到 computer graphics

不甚瞭解的人可能以為單單是充數的

這可是這群人一路走來累積的成果

可以如此說0xlab只是具體的組織化

在此之前, 它即已存在了

是的, 充滿理想抱負的行動, 比精心設計的講演更能感動和激勵人心

儘管規模並不大, 然而我相信會持續帶給人耳目一新的作品

Rocks the world! 0x1ab

2009年4月20日 星期一

zotero - 整理資料的好幫手

由於手邊有不少電子文件檔案
起先也只是用OpenOffice 編個 spreadsheet 來歸類處理
問題在文件累積到一定的數量後開始出現

很簡單的問題像是, 假設你有兩個類別 linux 與 network
而當你拿到了"linux network programming guide" 的文章, 你會如何分類?
當然, 應該還是會歸類在linux類別, 但是心裡又覺得它應該也要有network屬性

這時心裡難免會想, 資料的整理功能若能像寫blog 或是 gmail的標籤一樣, 那該多好!?

有了這樣的需求, 當然就開始找方案
一開始是從file tagging著手, 但是看到了相關的方案(gnome/kde/tag2find...etc)
看了看又覺得太簡略了, 畢竟除了標籤外, 每個文件還有各字的屬性

就這樣, 中途還嘗試使用GcStar, 但是似乎又不太好用
之後的過程就看到了referencer, 雖是管理引用資料的程式, 但心裡已經覺得功能上很接近了
最後是在wiki的相關軟體比較列表看到了zotero

zotero的slogon為 The Next-Generation Research Tool
個人用過的感想是, 這樣的說法一點也不誇張
也建議好好看一下網路上的功能展示影片
相信一定會愛上這個擴充套件

最近找到這個套件後, 就開始使用zotero來重編手邊資料的索引
使用中發現超出預期的好用, 除了拿來寫論文引用
像我拿來管理資料的用途, 如果想要拿來管理會議記錄, 雜項資料也是不錯的
甚至功能上取代google notebook也是可行的
真的是相當實用的firefox套件

2009年4月17日 星期五

HiRadioTray Beta 20090417



今晚做了些修正
主要是實作了mplayer slave mode控制
目前用在切換電台, 靜音 與 音量控制

另外新增了停止選項, 提示顯示目前收聽電台名稱
有時間改為使用home中的隱藏目錄
到時就會包成 deb file

有興趣請到此下載

2009年4月16日 星期四

HiRadioTray




雖然個人偏好script, 但是....
Yeah..everyone loves GUI
昨晚花了點空餘時間(事實上被老婆念了一下),撰寫了HiRadio這支程式
程式目的跟hinet radio script一樣, 只是整合了GUI
目前的版本可到此下載
這只是堪用的初始版本

未來要透過mplayer的slave mode加上音量控制之類的選項
切換電台也會使用不同的機制, 另外建立.hiradiotray 目錄

有不錯的想法也歡迎提供

話說wxWidgets挺好上手的, 下午看文件學wxWidgets
晚上就把這支程式主架構完成了

2009年4月14日 星期二

Hinet radio script 20090414

今日忽然發現連不上Hinet網路電台了
透過Firefox連上網頁, 看了看頁面全改了
看來Hinet 打算在Hichannel全面採用DRM了
看來臺灣網路電台被Hinet壟斷的苦果開始出現了....

今日依照這篇留言改了一下script
有需要者請到此下載

有時間得來想想其他solution了

2009年4月12日 星期日

linux porting for new ARM platform 簡報上線





工作緣故, 這陣子將手邊關於在ARM平台上的Linux Porting過程,
以及收集到的相關資料整理了一番, 製作了份簡報



Apr 23rd, 2009: slides updated for DMA and make use of slideshare

2009年4月8日 星期三

Essential Linux Device Drivers



上一份的工作主要是個人踏入撰寫linux driver的起點
而Linux Device Driver的撰寫以往只有Oreilly 的 Linux Device Drivers 一書
(後簡稱LDD, 目前出到第三版)
個人在去年十月注意到2008年8月出版的Essential Linux Device Drivers(後簡稱ELDD)這本書
而這次的工作, 這兩本書也都用上了

個人的想法是:
LDD該書的內容, 比較偏向以linux kernel的角度來談linux device driver
對於了解driver 與 Linux系統內部行為以及底層的意義上相當不錯
然而在Device Model上, 對於現今Linux Kernel中眾多的Subsystem就顯得力不從心
相對地, ELDD這本書的內容比較單純的以Device Driver的角度
一開始系統的從kernel 提供 device driver的服務
接著切入 linux kernel中各個subsystem (從input, audio, video 到 PCI, PCMCIA)
對於想直接以device driver著手的人來說, 相較於LDD是值得列為優先閱讀的書籍
等上手之後再閱讀LDD以了解更深入的部分.

當然個人最推薦同時擁有這兩本切入角度不同的書

2009年4月6日 星期一

Embedded Linux Porting

Framebuffer device 驅動後的Tux logo


使用PicoTK在Framebuffer上隨機繪圖(線圓/長方形, 實心圓/長方形)
來產生類似screensaver的效果


新工作一個多月了, 上面兩張圖是這一陣子來的工作成果
工作內容的緣故需要在工作平台上建構Linux 環境
儘管port過幾個embedded os, 針對embedded linux platform寫過driver
然而從頭到尾作Linux kernel porting這倒是頭一遭
兩張圖是porting後實作framebuffer device driver, 並且在kernel與application上的結果
(picotk的畫圓的過程, 是相當著名的演算法)

出乎我意料的是, linux porting相關的資訊並不算是豐富
有機會再在blog上分享一些心得


以下是boot log (敏感部份, 經過馬賽克處理)

Uncompressing Linux.........................
.. done, booting the kernel.
Linux version 2.6.27.15 (champ@champ-laptop) (gcc version 4.3.2 (GCC)
) #423 Fri Apr 3 15:05:02 CST 2009
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
Machine: XXXXX XXXXX Technology XXXXXX processor
Memory policy: ECC disabled, Data cache writeback
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
Built 1 zonelists in Zone order, mobility grouping off. Total pages: 508
Kernel command line: mem=2M@0x1000000 initrd=0x1180000,161524
Trying to install interrupt handler for IRQ0
Trying to install interrupt handler for IRQ1
Trying to install interrupt handler for IRQ2
Trying to install interrupt handler for IRQ3
Trying to install interrupt handler for IRQ4
Trying to install interrupt handler for IRQ5
Trying to install interrupt handler for IRQ6
Trying to install interrupt handler for IRQ7
Trying to install interrupt handler for IRQ8
Trying to install interrupt handler for IRQ9
Trying to install interrupt handler for IRQ10
Trying to install interrupt handler for IRQ11
Trying to install interrupt handler for IRQ12
Trying to install interrupt handler for IRQ13
Trying to install interrupt handler for IRQ14
Trying to install interrupt handler for IRQ15
Trying to install interrupt handler for IRQ16
Trying to install interrupt handler for IRQ17
Trying to install interrupt handler for IRQ18
Trying to install interrupt handler for IRQ19
Trying to install interrupt handler for IRQ20
Trying to install interrupt handler for IRQ21
Trying to install interrupt handler for IRQ22
Trying to install interrupt handler for IRQ23
Trying to install interrupt handler for IRQ24
Trying to install interrupt handler for IRQ25
Trying to install interrupt handler for IRQ26
Trying to install interrupt handler for IRQ27
Trying to install interrupt handler for IRQ28
Trying to install interrupt handler for IRQ29
Trying to install interrupt handler for IRQ30
Trying to install interrupt handler for IRQ31
PID hash table entries: 16 (order: 4, 64 bytes)
console [ttyXXX0] enabled
Dentry cache hash table entries: 1024 (order: 0, 4096 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 2MB = 2MB total
Memory: 1036KB available (660K code, 45K data, 60K init)
Calibrating delay loop... 47.82 BogoMIPS (lpj=239104)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
done
Freeing initrd memory: 157K
fb0: XXXXXX frame buffer alive and kicking !
Serial: XXXXXX driver
ttyXXX0 at I/O 0xe0006400 (irq = 25) is a XXXXXX
Freeing init memory: 60K
sh: can't access tty; job control turned off
#

是的, 你沒看錯, 記憶體只有2MB
經過調整, 開機後還有600KB 左右的空間

過程中使用的是buildroot 建構toolchain, 以降低application的大小
有興趣的或是工作相關者, 歡迎討論, 並交換一下訊息與意見.

2009年4月2日 星期四

Hinet radio script 20090403

昨天還可以聽的. 今日發現怎麼也連不上

是的Hinet又更動了連結方式

如有需要最新的script 請到此下載

在 ARM 平台上使用 Function Multi-Versioning (FMV) - 以使用 Android NDK 為例

Function Multi-Versioning (FMV) 過往的 CPU 發展歷程中, x86 平台由於因應各種應用需求的提出, 而陸陸續續加入了不同的指令集, 此外也可能因為針對市場做等級區隔, 支援的數量與種類也不等. 在 Linux 平台上這些 CPU 資訊可以透過...