#

過年前在電腦商場看到店家放的數位相框覺得滿有趣的,所以就自己做了一個,我目標要實作的功能有播圖片、鬧鐘、播MP3、定時關MP3等。硬體的話我挑了一個ARM9的板子,用到的裝置大概如下:

  • CPU: 400 MHz Samsung S3C2440A ARM920T
  • Flash: 64 MB
  • RAM: 64 MB
  • NIC: DM9000 10/100M
  • LCD: 240x320的TFT (Touch Panel)
  • RTC、Serial、USB、Audio

板子上跑的軟體:

  • Linux kernel 2.6.30.10
  • busybox
  • Tiny X
  • Tcl/Tk 8.5.8
  • SDL
  • ezShow (自製的播放軟體:JPG,PNG,MP3,WAV)

一些實際遇到的狀況

1.整個開發過程只有移植Linux kernel(官方版)比較痛,因為不想用廠商給的,其它的像busybox、Tiny X、SDL用buildroot直接編就可以用了,沒遇到什麼問題。Tcl/Tk、snack、tkpng則是抓source下來自己編,要記得configure時把--disable-xft加上。

2.用Tk載一張240x320的png大約要150~200ms,顯示圖片在label上話大約要50~100ms,用在不需要速度的人機介面,免強過得去,真的需要速度改用SDL。

3.libmad解MP3真的很流暢,但音質好像差了一點(個人感覺)。用snack和smpeg似乎好些,但寫程式的時候要技巧~畢竟純軟處理浮點數運算~CPU吃得緊,加上圖片的轉場效果...CPU使用率時常處於90%以上。結論是...SDL+libmad滿適合用在嵌入式平台。

4.過程中也有用過nano-X + nxlib + Tcl/Tk一樣行得通,但只建議有經驗及熱愛編譯的人這樣做,因為問題多多。

5.寫程式大部份的時間花在圖片轉場的特效,沒有影像處理的底....一邊寫一邊學累人 > <"。

6.雖然現在PC上的CPU都很猛,但編toolchan的工作仍然適合在飯前、洗澡前、睡前執行,最好是make然後睡覺去。

目前的成果


到目前為止大部份的功能都完成了,整個趨型系統的外觀像這樣:

圖 X01-1


圖片顯示有淡入/淡出的轉場效果,有背景音樂,下方有半透明的時間條,按一下LCD面板可以切換時間條或叫出其它功能。從上電到第一張圖片出來約6秒。

從framebuffer倒出來的圖片長這樣:

圖 X01-2


突然有點想做點餐系統,配資料庫應該也滿多好玩的。

17 個意見

Zsh | 2010年3月5日 下午1:06

恩恩... 看起來非常棒^^ 真的可以用在點餐/點歌系統.

dai | 2010年3月5日 下午8:11

Zsh...ben是你吧?? 哈哈

sam | 2010年3月11日 下午5:44

Hi Dai:
看到這一篇害我忍不住去買了一樣的回來玩,
新手上路,只好乖乖的從手冊第1頁開始看,
第200頁,安裝linux的部份,想問Dai有沒有做到這個地方,
不知為何,在最後一步啟動系統的地方(第204頁),錯了...
想跟Dai你驗証一下,是不是光碟中的檔案有錯誤???

dai | 2010年3月11日 下午8:55

真的嗎?拍謝~~看來我害到你了... 呵呵!!
我的204頁不是啟動系統 @@ 你買的也是mini2440嗎?
我光碟片裡的檔案是真的有問題,所以都從網路上下來的.

sam | 2010年3月12日 上午9:15

嗯...
友善的臂mini2440...
應該是說第200頁為為安裝linux的章節,在這章節的最後一步驟,安裝完linux重新啟動的地方錯了,
沒關係,我再研究一下好了,
說真的,這東西還真不錯玩,觸控面板,好炫丫,^v^

sam | 2010年3月12日 上午9:22

Hi Dai:

我眼殘了...
剛開了用戶手冊發現安裝linux系統是在第196頁,-___-"
所以我想手冊與光碟應該是一樣的,
看來只好上網抓檔案了。

dai | 2010年3月12日 下午12:45

呵 ~ 加油!! 跟你說我用的狀況:

1. 光碟片的內容沒燒好 (應該只有我的這樣吧)。
2. 他附的kernel source編完以後不會動,因為MTD的設定和vivi的不一致,另外許多狀置的driver設定值也有問題,感覺是for另一塊板子用的.
3. 注意mach_type。
因為問題太多了,用他的kernel有點不太舒服的感覺,我的解決辦法是去kernel.org下載官方的版本,然後參考他附的kernel自己port就都沒問題了。

sam | 2010年3月12日 下午1:51

Hi Dai

看來友善的臂一點也不友善,
我到http://www.friendlyarm.net/去下載不同的linux kernel、QT、Supervivi來裝都是一樣的問題,錯誤訊息如下:

----------------------------------------------------------------
.
.
.
block 436 is bad
block 437 is bad
block 438 is bad
block 439 is bad
block 440 is bad
block 441 is bad
block 442 is bad
block 443 is bad
block 444 is bad
block 445 is bad
block 446 is bad
block 447 is bad
block 448 is bad
block 449 is bad
block 450 is bad
block 451 is bad
block 452 is bad
yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs filesystem) on device 31:3.
Freeing init memory: 128K
Warning: unable to open an initial console.
Failed to execute /linuxrc. Attempting defaults...
Kernel panic - not syncing: No init found. Try passing init= option to
kernel.
----------------------------------------------------------------

不知道Dai之前的問題有沒有跟我一樣,
我一開始以為板子被我玩壞了,不過我再灌Win CE6.0又好好的說~
上面的錯誤訊息是最後一部份,因為太長了,前面一點好像有看到讀取啥米S3C2410的檔案錯誤,
所以也許就像Dai大大說的,這是給另一塊板子用的,不知道有沒有相容的問題。

dai | 2010年3月12日 下午3:13

我只能跟你說 ~~ 問題多多阿!!

沒記錯的話從開始玩這塊板子,一直到自己的Linux跑起來,大概是3天以後的事了

然後TinyX , Tk 上去MP3出來到電子相框用好...已經又是1~2個星期後的事了

中間遇到的問題...手指+腳指不夠數了 = =

sam | 2010年3月16日 上午11:14

Hi Dai...

我要瘋了(爆氣ing),我搞了足足五天,
也在美國官網發問,我發現其它人都不會有我這樣的問題,
愈想愈奇怪,一樣的產品為什麼只有我有這樣的問題,難道是我帶x...
灌WinCE又好好的,OK,沒關係,我照手冊重編一次KERNEL,嗯,又失敗,
沒關係,放大絕,我採用暴力法,每個版本的QT、KERNEL、VIVI我都灌,
不行就再把不同版本QT、KERNEL、VIVI作個交叉灌,嗯,還是失敗,
我再灌NEC LCD的版本(明明就是統寶的LCD),嗯,失敗中的失敗,
最後,再灌個128M的VIVI和QT(我瘋了,明明就是買64M的mini2440),
竟然…成功了…
我想…應該是號稱唯一代理的德x科技,自動好心的幫我升級為128(揪感心ㄟ...-___-""")
還是說廠商現在的標準配備升級為128了沒通知德x科技我不知道,
不過奇x拍賣的網頁就是註明64M(標準配備),我也沒升級,
真不知道我現在是要笑還是要哭,五天...
不過終於找到原因了...

dai | 2010年3月16日 下午12:33

我倒是沒有這個問題 ~ 因為我買來以後就一直用Linux沒有用CE,所以vivi都沒有動到。

不過話說回來,在embedded system的世界裡,5天就把板子setup起來,並不算慢也 ~ 記得很久~很久~很久~以前,第一次玩板子的時候(at9140800)...好像用了快2個月..才讓跑馬燈run起來...所以你已經很行了~

sam | 2010年3月26日 下午1:41

Hi Dai:

請問大大一個題外話,
如果我想要在linux上面開發C++ GUI的程式(不是指Embedded system的GUI開發),
有沒有比要好的選擇,例如QT、GTK等等,
我孤狗了一下,好像是QT會比較方便的樣子,
想請問一下Dai大大,有沒有這方面的經驗可以給小的開示推薦一下,3Q...

dai | 2010年3月26日 下午6:54

hi sam,

我的考量點 除了好用之外...還包含商業用途...據說QT的license是天價

所以我就發棄它他 我目前只有用GTK+Tk前

一陣子有玩過fltk還滿好玩的~簡單又好用,配nano-X在embedded system上

也是一個可行的方案


dai

sam | 2010年3月27日 下午3:43

Hi Dai:

嗯,我有看到有人討論QT的License問題,如Dai所說太貴而放棄使用,

但是好像被Nokia收購後,QT 4.5之後好像有改變授權的方式,
http://jarsing.blogspot.com/2009/02/qtnokiaqtlgplqt.html
http://blog.linux.org.tw/~jserv/archives/002085.html
我有狐狗到幾篇文章,QT4.5之後轉為LGPL的意思不知道是不是指:
(1)免費使用
(2)自已開發的程式碼可以不用開放
如果是醬子的話,那就太棒了!


GPL與LGPL的解譯太不白話文了,庵的國文造詣不是很好的說,
所以想確認一下~
-------------------------------------------------
LGPL仍是基於GPL精神所發展出,且與GPL相容,
但使得開放原始碼軟體得以與GPL或非GPL軟體結合。
GNU C程式庫便是採用LGPL的授權方式公開,並得到軟體開發人員廣泛的採用。
(當然,對於程式庫開發而言,若專屬領域無相同的選擇方案,
開放軟體基金會仍建議採GPL授權方式,以擴大開放程式碼軟體的推廣工作。)

sam | 2010年3月27日 下午3:53

Hi Dai:

終於找到了比較白話文的解譯了,科科。


GPL 的特性之一就是:您可以隨意使用GPL的軟體程式碼來做其他產品,但一旦您的軟體用了任何GPL版權的程式碼,那麼您的軟體就變成了GPL版權的軟體,也就是說,您的軟體也要把程式碼公開給別人看。

LGPL版權是所謂的『較寬鬆GPL版權』,只要是遵循LGPL版權的軟體,您可以自由取得該軟體程式碼,而且您可以拿來用,用了也可以不用公開,這是LGPL版權所允許的。
------------------

太。好。了... ^^

dai | 2010年3月27日 下午4:54

原來去年QT增加了LGPL的license ... 真是個好消息

有機會的話 再重拾它 @ @

jserv | 2010年5月11日 上午12:06

感覺是很好的練習題材,感謝分享 :)

留下您的意見

Theme Design by devolux.org. Converted by Wordpress To Blogger for WP Blogger Themes. Sponsored by iBlogtoBlog
This template is brought to you by : allblogtools.com | Blogger Templates