Tuesday, September 15, 2009

Hello AVR - Atmel ATmega328P

AVR是由Atmel公司從1996年開始發行的一系列單晶片,
它採用Modified Harvard architecture(8-bit)的RISC架構,
它採用Flash memory[註一]來儲存program,採用RAM來儲存data,


我試著將一個簡單的code寫入AVR,
首先我利用AVR Studio 4將程式編譯 (編譯成.hex檔),
然後透過ISP功能(In-System Programming)將它寫(燒)入其中一款microcontroller - ATmega328P中,
這個程式的目的是將一些文字show在LCD上,


需要注意的一點是,
當你要利用AVR Studio 4來compile時,
要注意code的路徑是否有包含中文名稱,
因為有中文名稱的話,
compiler會出現以下錯誤訊息:












於是乎,我們即可開始把玩AVR。

[註一]
我們來看一下Flash Memory的歷史 、應用及其優點,
以下資料取自http://shop.transcend.com.tw/index.asp,

快閃記憶體(Flash Memory)  
對一般消費者是陌生的科技名詞,但目前當紅的數位記憶卡、讀卡機、隨身碟等,卻都是由快閃記憶體製造而成的數位產品。快閃記憶體到底具備何種魔力讓資料儲存變得快速且易於攜帶?

快閃記憶體v.s.一般電腦記憶體
快閃記憶體和一般電腦記憶體最大不同為:一般電腦記憶體(DRAM),當使用硬體電源關閉後,儲存於記憶體中的資料會消失,因此,又稱為動態隨機存取記憶體。而快閃記憶體卻不需要電力來維持已儲存的資料。在電源關閉後,原本寫入的資料仍可保存於記憶體中,再加上小體積大容量的特性,使快閃記憶體廣泛應用於許多可攜式的3C產品,如PDA、手機、數位相機搭配使用數位記憶卡(如CF、MMC、SM Card)、讀卡機、行動碟、轉接卡等。

快閃記憶體簡史與應用
1984年,日本東芝職員藤尾增岡(Fujio Masuoka)率先提出快閃記憶體概念。快閃屬於非揮發記憶體,即使電腦關機資料依然還留存在晶片上,與一般電腦記憶體不同,由於這種記憶體可以非常快速的存取資料,因此稱為快閃記憶體。

快閃記憶體 的產品優點與主要應用產品 
產品優點
主要應用產品
● 體積小容量大
● 讀取速度快
● 低耗電量
● 高耐久性:可重複讀寫資料十萬次


● 記憶卡:使用於數位相機、PDA等3C產品
● 行動碟
● 讀卡機
● 轉接卡
● 微型硬碟記憶卡(DOM)
 

Saturday, September 12, 2009

Physical Computing

這是最近常看到的一個名詞,
在看了一些資料後,
我認為應該可以這樣子來解釋它,


Physical Computing:
當我們藉由程式(軟體)來控制某個裝置上的Microcontroller(硬體),
使得該裝置可以跟人們產生某些互動,
即是Physical Computing,
因此, 它的概念就像"如何設計出一款有創意或是實用的Embedded System"!


例如:
當有了完善的Physical Computing,
我們就可以讓Robot變聰明,
讓Robot有辨識人類或是幫人類打掃...等等功能




大家也可以參考wiki上的解釋:
http://en.wikipedia.org/wiki/Physical_computing


以及相關課程
http://itp.nyu.edu/physcomp/

Friday, September 11, 2009

mmap()

mmap is sometimes used for Interprocess Communication (IPC). On modern operating systems mmap is typically preferred to the System V IPC Shared Memory facility.
~ http://en.wikipedia.org/wiki/Mmap


mmap(), 即memory map,用來將某個檔案的內容map到memory,使得各個process之間可以利用shared memory的方式來做資料的存取。


例如,在一個存取資料的程式中,我們可能透過fread來將資料讀出,經過修改後,再經由fwrite將資料寫入,但fread與fwrite皆需先透過fseek找出讀寫的記憶體位置。


然而,mmap()一開始會分配固定的記憶體區塊給某個檔案,因此多個程式便可以直接存取該共同記憶體區塊裡的任何資料。當然,shared memory可能引起race condition等問題,關於這部份可以參考其它資料說明。


[Ref.]
Beginning Linux Programming 4/e, Richard Stones and Neil Matthew

Wednesday, September 9, 2009

[轉載] ubuntu8.04 解决pdf中文乱码问题

1、sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional


2、搜索并安装poppler-data软件包


3、sudo rm /etc/fonts/conf.d/49-sansserif.conf


[Ref.]
http://evan2008.blog.51cto.com/509463/112539

Tuesday, September 8, 2009

System Call

簡單講, System Call就是一些低階函式, 它可以讓我們存取和控制檔案和設備。利用System Call, 且透過Linux Kernel的一些device driver, 可以讓我們跟硬體設備溝通。


然而, 執行system call會降低系統效率, 因為程式需經由切換到Kernel來呼叫system call, 且執行完還需返回。


舉個例子:
"read" system call, read會從檔案中讀取我們所設定的資料大小, 並將它存放在buffer中, 接著, 我們可以用"write"這個system call來將buffer裡的資料寫出來。


因此我們可以做個實驗, 也就是觀察在不同的buffer大小底下, 程式執行時間的差別。我們可以發現在buffer設定越大的時候, 其程式執行時間越短。原因就是, 在所要讀取的檔案大小固定之下, 當buffer越大, 則所需的system call次數就越少, 其執行時間當然就會越短。




[Ref.]
Beginning Linux Programming 4/e, Richard Stones and Neil Matthew

Sunday, September 6, 2009

如何在Linux線上收聽ICRT或Apple Line等電台

[Step1]


安裝mplayer


[Step2]


在終端機輸入指令 

ICRT:
mplayer mms://bcr.media.hinet.net/RA000038

Apple Line:
mplayer mms://bcr.media.hinet.net/RA000001


Kiss Radio:
mplayer mms://bcr.media.hinet.net/RA000042

台北愛樂:
mplayer mms://bcr.media.hinet.net/RA000018


POP Radio:
mplayer mms://bcr.media.hinet.net/RA000080

Tuesday, September 1, 2009

Windows 常用快速鍵及操作

(1) 全螢幕與小視窗的互相切換 : Alt + Enter


(2) 叫出windows的"執行" : Windows鍵 + R


(3) 如何刪除常駐程式 ? "開始" → "執行" → 輸入"msconfig" → 在"啟動"中即可設定


(4) 如何將副檔名顯示或隱藏 ? "我的電腦" → "工具" → "資料夾選項" → "顯示" → "進階設定"