linuxsdio
㈠ 求助,linux SDIO WIFI realtek8189 驅動移植
應該可以支持,你這種情況可能是無線網卡沒有載入到linux裡面去。 如果在linux的可移動設備里不能直接載入的話,需要你把無線網卡拔掉再插上,linux就能找到並載入你的無線網卡了。健康好心情您好!僅供參考,相互交流!更多交流在CSDN,365testin
㈡ linux下如何開發sdio設備驅動
以LinuxKernelSdioMx28 / LinuxKernelSdioMx53項目代碼為例:
- mole_init(DibBridgeTargetMoleInit)
驅動模塊初始化入口
- DibBridgeTargetMoleInit():模塊初始化函數。
1.調用sdio_register_driver()注冊sdio介面驅動,
2.調用register_chrdev()注冊驅動模塊為字元設備。
- sdio_register_driver():向系統注冊sdio介面驅動,調用以後,系統會觸發sdio設備id檢測,如果設備id和介面驅動里.id_table里定義的id一致,則系統調用probe函數。
1. 可以在DibBridgeTargetMoleInit()里調用,這樣insmod之後,驅動介面即被注冊(設備id被注冊),有相應設備插入則probe會被調用(此種做法參考LinuxKernelSdioMx28)
2. 也可以在sdio初始化時調用,這樣設備插入時,probe不會被調用,只有在sdio初始化,sdio_register_driver()被調用時,系統才會重新檢測設備id,並調用probe。(此種做法好處是,模塊初始化不涉及何種設備,具有更好的通用性。參考LinuxKernelSdioMx53)
- static struct sdio_driver Dib_sdio_driver
是sdio介面驅動的結構體,包括.id_table, .probe()函數等,如下
static struct sdio_driver Dib_sdio_driver = {
.name = "Dib_sdio",
.id_table = Dib_sdio_ids,
.probe = Dib_sdio_probe,
.remove = __devexit_p(Dib_sdio_remove),
};
其中.id_table很重要,它裡面定義了此sdio驅動模塊關心的sdio設備id號,只有插入的sdio設備的id號和這裡面定義的id對應上,系統才會調用.probe函數。
- register_chrdev()
將驅動模塊向系統注冊為字元設備,並將操作該設備的介面函數file_operations也一起注冊了。
1.可以在DibBridgeTargetMoleInit()里調用。(參考LinuxKernelSdioMx53/LinuxKernelSdioMx28代碼)
2.也可以在probe函數里調用,即只有在系統檢測到硬體設備時才去注冊字元設備(參考sdk8remote代碼)
- struct file_operations
包含如下最基本的文件操作函數,
struct file_operations fops =
{
.ioctl = DibBridgeTargetMoleIoctl, //控制命令傳輸或數據傳輸
.open = DibBridgeTargetMoleOpen,
.read = DibBridgeTargetMoleReadData, //數據傳輸
.write = DibBridgeTargetMoleWriteData
.release = DibBridgeTargetMoleRelease,
};
- .ioctl/.read 等等
user space和kernel space的傳輸通道,通過使用_from_user和_to_user這樣的函數來實現數據傳遞
Linux方面的想相關知識可以網路搜索《Linux就該這么學》進行學習了解
㈢ Linux也瘋狂 夏普Zaurus SL6000L評測
【IT168 專稿】這款Zaurus SL-6000L是Sharp(夏普)最新發布的一款基於linux操作系統的多功能PDA。它配備了400 MHz Intel XScale PXA255處理器,內存為64MB SDRAM可用空間為25MB。
#$[*168665.jpg*#a*#0*#0*#center*]$#
從某些方面來看這款Zaurus SL-6000L就象是之前發布的Zaurus SL-5600和Zaurus SL- C750/760/860的混合產物。在Zaurus SL-6000L上最主要的特點是配備了更好的顯示屏、內置了Wi-Fi和藍芽無線模塊和增強了擴展性。在機身的底部還有一個Mini A USB連接器,此外還有一支長的觸控筆。我測試的這款是Zaurus SL-6000L是面向普通的消費群所以只內置了Wi-Fi無線模塊。
除了SL-6000L之外SL-6000系列還包括其它的兩個機型:只內置了藍芽的SL-6000N和內置了藍芽和802.11b無線模塊的SL-6000W。我在測試這款Zaurus SL-6000的時候使用了一個Viking 512 MB Compact Flash卡和一個Sandisk 64 MB Secure Digital卡。使用中沒有出現兼容問題。在關閉藍芽的情況下,我還用一個Aerlink NPC卡把SL-6000連接到我的Sony Ericsson T610手機上而且順利的接入了互聯網。
包裝:
Zaurus SL-6000L的包裝盒非常的簡單。只是一個上面印有藍色圖案的白色硬紙板盒,上面沒有現在包裝盒上非常流行的可以看到裡面產品的透明塑料窗口。重量很輕而且非常環保。在包裝盒裡PDA被放在一個隔開的另外的空間里,其它還有USB連接線、塑料底座、電源連接器、CD-ROM、快速上手向導和一本104頁的使用指南。
設計:
Zaurus SL-6000L的表面材質較為粗糙,這樣的設計可以有效的防止PDA在使用中從手中滑落。SL-6000L的屏幕翻蓋彈力很大打開/關閉時感覺有點費力,而且也限制了觸控筆的使用。我還是比較喜歡SL-5600的屏幕翻蓋。SL-6000L和SL-5600的底座非常類似都比較大。
#$[*168690.JPG*#a*#0*#0*#center*]$#
SL-6000L的機身右側沒有任何的按鈕和埠。
#$[*168691.JPG*#a*#0*#0*#center*]$#
在機身的左側的頂部是一個開/關按鈕、IR埠和一個銀色的錄音按鈕,它可以啟動錄音功能你可以方便的錄制聲音日記或會議記錄。按鈕下面是一個非標準的2.5mm音頻插孔,如果你想使用標準的3.5mm耳機必需得有一個轉接器。
#$[*168699.JPG*#a*#0*#0*#center*]$#
在SL-6000L機身的頂端是一個支持CF(type I或 II)卡和SD卡的內存卡插槽(不能支持SDIO)。機身的後面可以看到一個內置喇叭和不同於早先的Zaurus機型的電池。
#$[*168702.JPG*#a*#0*#0*#center*]$#
機身的底部是DC電源插孔、標準的Zaurus I/O埠、擴充連接器和一個Mini-A USB介面。在USB介面的下面是麥克風插孔。用來連接底座的塑料附件可以取下來,所以SL-6000L也可以允許你把它直接插在底座的擴充介面上。
顯示屏:
#$[*168712.jpg*#a*#0*#0*#center*]$#
這款Zaurus SL-6000L配備的是一個480×640解析度,65536色的4英寸背光顯示屏。清晰度和對比度都非常出色,是我在掌上電腦上所見過的最好的顯示屏。明顯要比Zaurus SL- C750/760/860上的顯示屏好的多,盡管它們的顯示屏已經非常好了。屏幕上的彩色應用程序圖標非常的漂亮,並且網頁的顯示也非常精細就象是在圖片瀏覽器中打開的照片。我認為SL-6000L的屏幕的顯示質量完全可以與桌面電腦的顯示器媲美。先前的SL- C860的屏幕亮度雖然非常出色,但是在高亮度設置下對比度較差圖像顯得非常虛。SL-6000L的屏幕在高亮度設置下則仍然可以保持極好的對比度和色彩深度。屏幕背光的亮度可以在設置頁中使用工具進行多種設定,但是不能象SL- C750那樣用鍵盤的快捷鍵設置。在測試中手寫區響應靈敏精確給我留下了非常深的印象。
按鈕:
#$[*168708.JPG*#a*#0*#0*#center*]$#
在SL-6000L的前面板上一共有九個按鈕和一個導航鍵,Action按鈕在導航鍵的中心。導航鍵的左側是Cancel按鈕右側是OK按鈕,上面有一個圓點的是Dot按鈕,上面畫了一個燈泡的是背光開/關按鈕。
觸控筆:
SL-6000L附帶的是一支4英寸長的黑色塑料製成的觸控筆。它只是採用翻蓋設計的5000系列上觸控筆的加長版。它的設計不是非常好手感太輕。在不使用時可以把它插在屏幕右側邊緣的插槽內。這對於象我這樣的左撇子來說非常的不便。如果你安裝了屏幕翻蓋情況會更糟,你幾乎不可能把它取出來。
鍵盤:
#$[*168731.JPG*#a*#0*#0*#center*]$#
SL-6000L的鍵盤與早先的機型一樣也是通過向下滑動按鈕區把它露出來。鍵位的響應非常靈敏,但是按上去鍵位顯得有些硬長時間的鍵入手指會有些疲勞。鍵盤上的Fn鍵是橙色的非常醒目但是說實話不是太好看。在直接的光照下想看清每個鍵非常困難,這是一個非常令人討厭的問題。
#$[*168733.JPG*#a*#0*#0*#center*]$#
與SL- C860扁平的鍵盤按壓式相比,SL-6000L的鍵盤更加真實立體但是小了許多(左側是SL- C860右側是SL-6000L)。與SL- C860的鍵盤相比除了尺寸之外,SL-6000L的鍵盤還少了一行數字鍵,這意味著你在鍵入數字時必須按住Fn鍵。除了物理鍵盤之外SL-6000L的主要輸入方式還有屏幕鍵盤和手寫識別。
電池:
SL-6000L配備的是一塊可抽取式1500 mAh電池。在SL-5500上倍受批評的電池壽命在SL-5600上就得到了改進。在SL-6000L上的電池採用了外形又寬又薄的全新設計。
#$[*168735.jpg*#a*#0*#0*#center*]$#
在手冊上標稱的電池壽命是11小時。在我的測試中,在打開Wi-Fi連接的情況下處理日常的工作SL-6000L的電池壽命比標稱的下降了百分之25。在測試中把背光亮度設置成最大而且也打開Wi-Fi連接,從完全充滿電到不能用只維持了幾乎整整兩小時。在關閉Wi-Fi連接的情況下進行與上面測試相同的操作SL-6000L可以維持6到8小時。在這種情況下編輯文檔和運行程序2小時以後屏幕上的電池指示器圖標幾乎沒有移動,屏幕上顯示的剩餘電量在百分之90到百分之95之間。整體來看SL-6000L的電池壽命還是非常的不錯。
音頻:
#$[*168740.JPG*#a*#0*#0*#center*]$#
SL-6000L的內置喇叭非常不錯。音質相當於小無線電的質量,音量也足夠高完全可以當鬧鍾來用。我甚至還可以用它來聽MP3。內置麥克風的錄音效果也非常不錯。最初當我看到SL-6000L上的2.5mm音頻插孔時感到非常驚訝,這顯然是因為我以前的SL-5600的主要特點非常象一款MP3播放器的原因。我用一個手機上的耳機對它進行了測試音質非常的細膩。
結論:
這款SL-6000L外型設計漂亮,機身結實防滑,電池壽命優秀而且還配備了極好的顯示屏和功能強大的操作系統。整體性能超出了大多數人的預期。經過一周的使用我對這款SL-6000L的表現非常滿意,它操作容易機身結實但有不是太重最重要的是體積不是非常大。如果你的大部分需求只是PIM功能,那這款SL-6000L也許並不適合你。如果用它來進行辦公應用、網路應用、瀏覽圖片那它的確是一個極好的設計。整體來看盡管價格有點高但是你為它花的每一分錢都非常的值。
㈣ 內核模塊編譯怎樣繞過insmod時的版本檢查
一、先把 Moudle version 檢查關掉。
user@host # ARCH=arm make menuconfig
--- Enable loadable mole support │ │
│ │ [ ] Forced mole loading │ │
│ │ [*] Mole unloading │ │
│ │ [*] Forced mole unloading │ │
│ │ [ ] Mole versioning support │ │
│ │ [ ] Source checksum for all moles
二、 使用modinfo時,可以看到目前這driver的vermagic
filename: external_drivers/omap3530/Linux/sdio/sdio.ko
author: Texas Instruments Inc
alias: TIWLAN_SDIO
license: GPL
description: TI WLAN SDIO driver
depends:
vermagic: 2.6.28-271-gec75a15 preempt mod_unload ARMv7
parm: g_sdio_debug_level:debug level (int)
三、 修改 kernel 的 vermagic,再重新編譯driver
vermagic 的第一個值 2.6.28-noneed 是由這 include/linux/utsrelease.h里的 UTS_RELEASE 所定義。
#define UTS_RELEASE "2.6.28-271-gec75a15"
之後再由 include/linux/vermagic.h 里的 macro
去組合出 VERMAGIC_STRING , 也就是 kernel 的vermagic。
#include
#include
#ifdef CONFIG_SMP
#define MODULE_VERMAGIC_SMP "SMP "
#else
#define MODULE_VERMAGIC_SMP ""
#endif
#ifdef CONFIG_PREEMPT
#define MODULE_VERMAGIC_PREEMPT "preempt "
#else
#define MODULE_VERMAGIC_PREEMPT ""
#endif完成編譯後,你就可以得
#ifdef CONFIG_MODULE_UNLOAD
#define MODULE_VERMAGIC_MODULE_UNLOAD "mod_unload "
#else
#define MODULE_VERMAGIC_MODULE_UNLOAD ""
#endif
#ifndef CONFIG_MODVERSIONS
#define MODULE_VERMAGIC_MODVERSIONS "modversions "
#else
#define MODULE_VERMAGIC_MODVERSIONS ""
#endif
#ifndef MODULE_ARCH_VERMAGIC
#define MODULE_ARCH_VERMAGIC ""
#endif
#define VERMAGIC_STRING \
UTS_RELEASE " " \
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
MODULE_ARCH_VERMAGIC
所以, 我們只要把 UTS_RELEASE 改成我們的數字即可,當然若是懶得去try組合後的字串,也可以直接將VERMAGIC_STRING改成你要的字串
建議修改完 vermagic.h, utsrelease.h後,還是把kernel重編完再編kernel,比較保險。
㈤ 為什麼SD卡在Linux下/dev下的設備名叫mmcblk0p1
SD/MMC 卡的設備構造差不多,MMC 應該是 SD 的前身,不過 MMC 當時的設計比 SD 小一半。
所以,SD/MMC 的驅動通用,進一步的,Linux 的設備節點就延續了 MMC 的這個名字,後面的 blk 是塊設備這個英文的簡寫, mmcblk 也就是「 mmc/sd 塊設備」,0 就是這個 mmc/sd 設備的順序編號,p1 就是第一個分區。
mmc卡與sd卡的區別:
1、mmc卡和sd卡的長寬是一樣的,SD卡略厚。
2、SD卡的觸點比MMC卡多一個,是用於數字版權保護(DRM)的。
3、SD卡的側邊比MMC卡多一個防寫的開關。
(5)linuxsdio擴展閱讀:
SD模式
驅動模式
SD卡有兩種驅動模式:SPI模式與SDIO模式。它們所使用的介面信號是不同的。在SPI模式下,只會用到SD卡的4根信號線,即CS、DI、SCLK與DO(分別是SD卡的片選、數據輸入、時鍾與數據輸出)。
傳輸模式
SD卡共支持三種傳輸模式:SPI模式(獨立序列輸入和序列輸出),1位SD模式 (獨立指令和數據通道,獨有的傳輸格式), 4位SD模式 (使用額外的針腳以及某些重新設置的針腳。支持四位寬的並行傳輸)。