CLK信號:HOST給DEVICE的 時鐘信號,每個時鐘周期傳輸一個命令或數(shù)據(jù)位 。
CMD信號:命令在 CMD 線上串行傳輸,是雙向半雙工的(命令從主機(jī)到從卡,而命令的響應(yīng)是從卡發(fā)送到主機(jī))。
DAT0-DAT3 信號:四條用于快速傳送數(shù)據(jù)的數(shù)據(jù)線,由CLK同步的信號。 ?1、設(shè)備驅(qū)動的注冊與匹配
[Drivers/net/wireless/libertas/if_sdio.c]
/* sdio function device driver*/
struct sdio_driver {
char *name; //設(shè)備名
const struct sdio_device_id *id_table; //設(shè)備驅(qū)動ID
int (*probe)(struct sdio_func *, const struct sdio_device_id *);//匹配函數(shù)
void (*remove)(struct sdio_func *);
struct device_driver drv;
};
數(shù)據(jù)的接收,通過中斷的方式來解決
網(wǎng)絡(luò)設(shè)備接收數(shù)據(jù)的主要方法是由中斷引發(fā)設(shè)備的中斷處理函數(shù),中斷處理函數(shù)推斷中斷的類型,假設(shè)為接收中斷。則讀取接收到的數(shù)據(jù)。分配sk_buff數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)緩沖區(qū)。并將接收的數(shù)據(jù)拷貝到數(shù)據(jù)緩存區(qū)。并調(diào)用netif_rx()函數(shù)將sk_buff傳遞給上層協(xié)議。
搜索if_sdio_interrupt,可知道它是在if_sdio.c文件里if_sdio_probe()函數(shù)中sdio_claim_irq(func, if_sdio_interrupt) ,func->irq_handler = if_sdio_interrupt。當(dāng)s3cmci_irq中斷處理函數(shù)的S3C2410_SDIIMSK_sdioIRQ 中斷被觸發(fā)時將調(diào)用if_sdio_interrupt()函數(shù),進(jìn)行接收數(shù)據(jù)。
static void if_sdio_interrupt(struct sdio_func *func)
數(shù)據(jù)發(fā)送維護(hù)了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),是比較重要的調(diào)試接口,可以由此獲得全部的輸出數(shù)據(jù)信息。
//IP層通過dev_queue_xmit()將數(shù)據(jù)交給網(wǎng)絡(luò)設(shè)備協(xié)議接口層,網(wǎng)絡(luò)接口層通過netdevice中的注冊函數(shù)的數(shù)據(jù)發(fā)送函數(shù)int dev_queue_xmit(struct sk_buff *skb)
移除函數(shù)當(dāng)sdio卡拔除時。驅(qū)動會調(diào)用該函數(shù)。完畢對應(yīng)操作。
拔除后,首先是管腳電平發(fā)生變化,從而觸發(fā)管腳中斷,程序由此得到消息,執(zhí)行了釋放函數(shù)
如釋放占有的資源。禁止func功能函數(shù)。釋放host。
if_sdio_remove(struct sdio_func *func)
---->lbs_stop_card(card->priv);
lbs_remove_card(card->priv);
---->kthread_stop(priv->main_thread); //終止內(nèi)核線程
lbs_free_adapter(priv);
lbs_cfg_free(priv);
free_netdev(dev);
flush_workqueue(card->workqueue); //刷新工作隊列
destroy_workqueue(card->workqueue);
sdio_claim_host(func);
sdio_release_irq(func);
sdio_disable_func(func);
sdio_release_host(func);
本文介紹了基于SDIO接口協(xié)議的WiFi模塊,簡單闡述了SDIO總線通信原理,列舉了設(shè)備驅(qū)動的注冊、匹配中使用到的重點(diǎn)接口函數(shù)的作用,包含數(shù)據(jù)接收,發(fā)送,以及資源的釋放。讓用戶在一些設(shè)備上使用SDIO接口協(xié)議開發(fā)時,更清晰方便的了解其工作原理和重點(diǎn)接口函數(shù)的使用,幫助用戶提升開發(fā)效率。
更多熱點(diǎn)文章閱讀- 粵港澳大灣區(qū)國際人工智能與機(jī)器人高峰會2022重磅來襲!
- 搜電充電:創(chuàng)新“服務(wù)卡片”,讓即時充電更便捷
- ArkUI框架,更懂程序員的UI信息語法
- 全球首個港口全面數(shù)字孿生技術(shù)底座“津鴻”系統(tǒng)發(fā)布
-
一個在線閱讀OpenHarmony全量代碼的網(wǎng)站
提示:本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請注明以上來源。如需社區(qū)合作及入群交流,請?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。
原文標(biāo)題:基于SDIO協(xié)議的WiFi模塊實現(xiàn)指南
文章出處:【微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
電子發(fā)燒友
+關(guān)注
關(guān)注
33文章
549瀏覽量
32958 -
開源社區(qū)
+關(guān)注
關(guān)注
0文章
94瀏覽量
406
原文標(biāo)題:基于SDIO協(xié)議的WiFi模塊實現(xiàn)指南
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論