來源: http://www.flatws.cn/article/program/embed/2010-08-23/9289.html
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。
RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓 冲。另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很 多,计算机内存就是DRAM的。
DRAM分为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。
DDR RAM(Date-Rate RAM)也称作DDR SDRAM,这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用 得最多的内存,而且它有着成本优势,事实上击败了Intel的另外一种内存标准-Rambus DRAM。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
由超微(AMD)與富士通(Fujitsu)共同投資成立的快閃記憶體(Flash)供應商Spansion公司日前指出,在高階應用日漸普及以及低階應用講求成本效益的兩種趨勢推動下,高容量的64Mb NOR Flash成長快速,同時32Mb以下的產品則迅速移轉至成本更低的SPI串列介面。
Spansion 公司嵌入式與媒體儲存器部門市場營銷總監黃主照表示,NOR Flash廣泛應用在包括汽車、消費性電子、通訊網路、個人電腦等各領域。就此市場的發展趨勢來看,他認為在降低設計複雜度的需求下,客戶需要NOR快閃 記憶體能夠具備易於使用的可升級(migratable)封裝與接腳設計,也因此記憶體供應商必須能夠提供完整的軟體驅動程式支援。
此外,對高階應用來說,採用更高容量的NOR Flash也將是一趨勢,特別是64Mb產品的成長快速。他指出,根據iSuppli的研究資料,到2010年時64Mb產品將佔市場50%的比例,遠高於目前的20%。
同時,他也強調Spansion是目前唯一推出512Mb Single-Die產品的業者,並預期今年內將會有1Gb的產品送樣。
另 外一個趨勢是,低階產品市場,特別是32Mb以下的容量,開始向低接腳的SPI串列式介面移轉。他解釋說,Flash市場長久以來可說一直不停地在進行各 種降低成本的做法,對於低密度的產品來說,當單位容量價格無法再往下降時,轉而向更低成本的封裝與介面發展便是一必然趨勢。也因此,雖然SPI介面已經有 一段時間,但也是到最近才開始有顯著朝這方面發展的趨勢。
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
Character or block device?
Character指的是keyboard,mouse這類device。可以向這些device讀東西出來,但不能做seek,也沒有size的觀念。而block device則可seek,也有size,一個block通常是512 bytes。
而flash的bahavior像block device,其不同點為:
1. block device的write/erash是沒有區別的
2. block device是由sector組成,而MTD則是erase block
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
Super I/O早期是一張卡,後來變成一顆在主機版上的IC,已經很普遍了。接在Super I/O上的device通常是low-bandwidth,包括floopy disk controller, parallel port, serial port, keyboard mouse和sensor。在bring up板子時,Super I/O可能會是最早要被support的,因為debug message是從com port吐出來。
下面的圖是從Wiki貼過來的,參考一下架構圖。
而super IO的programming,是對CR07這個register操作,寫到其config address。然後再指定logic device的offset到其data address。更詳細的步驟要看datasheet了。
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
先從幾個重要的structure 看起,並以wm8580為例,這些屬於platform driver,請見smdkc100_wm8580.c:
platform device註冊
snd_soc_device: audio subsystem
這個結構是platform device註冊最主要的,註冊就是利用這個結構來填platform drvdata。
/* SoC Device - the audio subsystem */
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
新增一個bus的範例程式如下,這個範例新增了一個bus叫testbus。這是一個空的bus,只有基本的sysfs entry,沒有任何的device和driver註冊到該bus,所以/sys/bus/testbus下的devices和drivers folder都是空的。
範例程式很短,一目了然,不需要說明。
空的bus
#include <linux/module.h>
#include <linux/kobject.h>
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
循著前人的分享,為自己的理解做記錄。
三角關係
Linux Device Model由bus, device, driver所組成。其關係為: bus是cpu與device溝通的橋樑,而driver賦與device行為的能力。因此有人說,device是男人,driver是女人,而bus則是媒人。媒人有match的功能,讓男人與女人彼此 認識。在coldplug的時代,男人先登記後,由媒人去match女人。而後來的hotplug,則讓女人先提供資訊,讓後來有意願的男人match。 device與driver對bus而言,就沒有一定誰先誰後了。
基礎
kobject做為LDM的最基本結構,提供了reference count (kref)、sysfs的dirent和hotplug相的的event等其他屬性。bus, device, driver都會是一個kobject,意即其struct都內含一個kobject。
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
Author:Titan.Song
Suumary:
简单介绍了一下SD卡的历史和发展,同时结合MX31 ADS上的WINCE 下SDHC驱动更深入的了解该硬件的一些行为特点。
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
來源: Ramax 喵董
目前進行中的項目是在 DaVinci 平台上開發 SPI 控制器驅動程式,不過由於手邊缺乏硬體平台可供測試的關係,現在仍然進度緩慢。不過這期間也研究了一下 Linux SPI 子系統,稍微有一些心得,來和各位分享一下。
SPI 是 Serial Peripheral Interface 的縮寫,它是一種串列式的 IO 介面,時脈約 1~ 70MHz,詳細資料可見 [1]。 DaVinci DM6446 上配備了一個 SPI 控制器,支援二個 chip select,時脈可達 33MHz。
kezeodsnx 發表在 痞客邦 留言(1) 人氣()
記憶卡的support,一是看讀卡機本身,一是看host controller。記憶卡包括sd/mmc/xD/ms/mspro等,二分法來看,windows全部都support,而linux則要排列組合一下,才有機會。問題出在xD跟MS/MS Pro,這是proprietary的driver。製造商不願意出driver或是把spec公開,就只能依賴反向工程什麼的。
Host controller大部份是走pci bus,所以lspci一下,就可以知道有哪些host controller,如
0000:03:01.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
0000:03:01.3 SD Host controller: Texas Instruments PCIxx12 SDA Standard Compliant SD Host Controller
表示有兩個host controller,如果是在windows,大概就都能讀到所有的記憶卡。如果只有一個SD/MMC,那當然就無法支援MS/MSPRO/xD了。
kezeodsnx 發表在 痞客邦 留言(1) 人氣()
USB是Universal Serial Bus,是一個讓電腦跟週邊設備 (包括usb storage,HID, 數位相機等)。版本區分為1.1,2.0,以及最新的3.0。其頻寬從1.5MB/s, 60MB/s,提升到625MB/s。新版皆向前相容。另一特色就是hotplug。
架構上是由host controller和hubs組成,其中最上層的稱為root hub,支援到127個devices,包括串接的hub。host controller是介於os和usb device之間的一層hardware interface。目前有三種interfaces (register level): OHCI (open, by compaq, 1.1),UHCI (universal, by intel,1,1),EHCI (Enhanced, by intel,2.0)。
hardware vendor也提供一層HCD (Host Controller Device) interface讓system software跟device互動
USB 2.0 support
用lspci查詢,可看出目前支援UHCI和EHCI。
kezeodsnx 發表在 痞客邦 留言(5) 人氣()
最近對audio codec/pcm/spdif/analog/digital這些名詞搞的有點亂,查了一下,整理如下:
關係
首先是codec和audio file format的關係: codec是對raw audio data做編碼/解碼,而raw data則以某種audio file format存在。
再由以上關係做更多的解釋:
1. audio file format指的是audio data以什麼樣的格式存在電腦上。
kezeodsnx 發表在 痞客邦 留言(3) 人氣()
原文:http://lxr.linux.no/#linux+v2.6.32/Documentation/sound/alsa/soc/
Embedded linux 裡的audio通常是由ASoC (Alsa System on Chip)這個subsystem實作,此subsystem由Wolfson提出,用來針對portable embedded system的聲音支援。
ASoC subsystem對embedded SoC及可攜式的auido codec提供較好alsa支援。在ASoC subsystem之前,在kernel也有SoC audio的支援,但有一些限制:
1. codec driver跟SoC CPU有相依性,因此不同的cpu就需要不同的driver
2. 對於audio event (如插入headphone/mic)並沒有標準的通知方法。
kezeodsnx 發表在 痞客邦 留言(1) 人氣()
1. usb不支援peer to peer的傳輸,因此必須是master/slave
2. 隨身碟插入電腦,host為電腦,隨身碟為device (通常pc都是host)
3. 在沒有電腦的情況下,兩個devices要傳輸,仍然必須基於master/slave的架構。因此就有了OTG這個技術,使得device可藉由protocol ( HNPHost negotiation protocol)的溝通決定誰是host/device。例如,camera直接輸出到printer,則camera須為host,printer需為device。因此camera必須支援OTG傳輸。兩台mp3 player的情況也類似,兩台支援OTG的mp3連在一起,一樣會有一個host一個device。
4. 通常pc上不會有OTG,而都是host,但公板上可能會有一個OTG,這是為了在download mode的需要。
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
1. power consumption包括static和dynamic。static主要是因為leakage current,而dynamic是因為state轉換,因此隨著複雜度昇高
2. 省電技術:
frequency scaling: 對clock降頻
clock gating: adds additional logic to a circuit to prune the clock tree,因此F/F的狀態不變,降低dynamic,只剩下static power consumption。用clock gating cell disable某些IP (intellectual property)module。
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
來源: http://www.digitimes.com.tw/tw/dt/n/shwnws.asp?CnlID=10&cat=30&id=0000134347_WOQ2P3YI5WDWNT6PU5EVU&ct=2
PLL(Phase Lock Loop),照字面上解釋為鎖相迴路技術,此技術演進已有數十年歷史,以往多用來作為對產品、晶片時脈或頻率的精確控制。
基本上,任何有關頻率調諧,或是數位電子產品的時脈控制功能,都可使用PLL來設計頻率控制迴路,一方面簡化電路本身設計的複雜度,另一方面,也可增加精確性。
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
來源: Linux 使用 USB 裝置筆記
USB規格簡介
USB Univeral Serial Bus (通用串列匯流排),常見的外部匯流排,支援熱插拔 (hot plugable),一個 USB 最多可以連接127個裝置。
目前規格包括:
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
device透過bus來跟系統做communication。系統上有好幾種bus,cpu bus,pci bus等,每種bus的spec不用,因此不會隨便接。platform device是linux下,一種與cpu bus連接的機制,因此其特色就是direct addressing。其與傳統的linux device driver在資源管理上有些優勢: 藉由將自己本身的資源向kernel註冊,由kernel來做統一管理。其方式為使用platform device所提供的api,這樣在可移植性和安全性上也會有一些好處。
下面以framebuffer device做例子,說明如何註冊device與driver。
Platform device
include/linux/platform_device.h
這個檔案描述了一個device的結構,其中比較重要的是name和resource。
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
了解framebuffer driver,skeletonfb.c有著一個framebuffer基本的架構,值得參考。筆記如下:
顯卡可支援多螢幕,因此可能有多個display。而每個display可有自己的data,因此每個display都是一個framebuffer device,意即各有其fb_info。fb_info中的par是硬體相關的state,硬體只有一份,因此這些state對每個display來說是共享的。任一個display做了改變 (如resolution,var->xres和var->yres),其他的display都可得知此狀況。以下是framebuffer driver需要或不需要實作的function:
int xxxfb_init(void):
在linux kernel 2.6後引入platform的概念,讓driver更加容易實作。這個function的功能是向platform註冊這支driver,即執行platform_driver_register()。如int __init s3c2410fb_init(void)
static int xxxfb_open(struct fb_info *info, int user) / static int xxxfb_release(struct fb_info *info, int user):
kezeodsnx 發表在 痞客邦 留言(0) 人氣()
來源: LCD Driver 筆記 - Frame Buffer
什麼是framebuffer 設備:
framebuffer 是一種能夠提取圖形的硬件設備,是用戶進入圖形界面很好的接口。
有了framebuffer,用戶的應用程序不需要對底層的驅動的深入瞭解就能夠做出很好的圖形。
對於用戶而言,它和 /dev 下面的其他設備沒有什麼區別,用戶可以把 framebuffer 看成一塊內存,既可以向這塊內存中寫入數據,也可以從這塊內存中讀取數據。
kezeodsnx 發表在 痞客邦 留言(1) 人氣()