国产精品久久久久久一区二区三区,国产精品美女乱子伦高潮,被强到爽的邻居人妻完整版,国产成人国产三级,国产精品白浆无码流出

我的訂單購(gòu)物車(0)會(huì)員中心 聯(lián)系客服 幫助中心供應(yīng)商合作 嘉立創(chuàng)產(chǎn)業(yè)服務(wù)群
領(lǐng)券中心備貨找料立推專區(qū)爆款推薦PLUS會(huì)員BOM配單品牌庫(kù)PCB/SMT工業(yè)品面板定制

嵌入式WiFi與普通WiFi有什么不一樣?

2018-07-20 17:29:32閱讀量:15694

首先我們來(lái)看一下嵌入式WiFi的來(lái)源以及與普通WiFi的區(qū)別。

我們都知道筆記本、手機(jī)、平板電腦等這類產(chǎn)品具有強(qiáng)大的CPU和大容量的存儲(chǔ)器進(jìn)行網(wǎng)絡(luò)通信數(shù)據(jù)的處理和存儲(chǔ),因此在使用WiFi時(shí)不需要額外的MCU,完全借助其高速處理器和龐大的軟件系統(tǒng)。但是對(duì)于家電、儀表、LED燈等智能家居產(chǎn)品,因?yàn)樵擃惍a(chǎn)品的主控芯片可能是成本很低、功能簡(jiǎn)單的MCU,因此這類產(chǎn)品無(wú)法支持普通Wi-Fi的功能。同時(shí),還有一個(gè)重要的原因就是普通Wi-F的功耗比較高,而嵌入式WIFI在功耗上做了很大的改善,比較適合對(duì)功耗要求高的無(wú)線家電設(shè)備。

基于上述原因,各個(gè)無(wú)線廠商相繼推出了嵌入式WiFi模塊。嵌入式WiFi模塊的特點(diǎn)是軟硬件集成度高,整個(gè)嵌入式WiFi模塊集成了射頻收發(fā)器、MAC、WIFI驅(qū)動(dòng)、所有WIFI協(xié)議、無(wú)線安全協(xié)議、一鍵連接等。總之,一句話:嵌入式WiFi應(yīng)物聯(lián)網(wǎng)而生!

下面我們針對(duì)嵌入式WiFi與普通WiFi來(lái)進(jìn)行對(duì)比,通過(guò)下表的對(duì)比,我們大致上可以理解到什么是嵌入式WiFi。

在分析WiFi驅(qū)動(dòng)前,分享一下本人對(duì)Linux驅(qū)動(dòng)的一些了解,其實(shí)縱觀Linux眾多的設(shè)備驅(qū)動(dòng),幾乎都是以總線為載體,所有的數(shù)據(jù)傳輸都是基于總線形式的,即使設(shè)備沒(méi)有所謂的總線接口,但是Linux還是會(huì)給它添加一條虛擬總線,如platform總線等;介于WIFI的驅(qū)動(dòng)實(shí)在是太龐大了,同時(shí)又是基于比較復(fù)雜的USB總線,所以建議大家先了解一下USB設(shè)備驅(qū)動(dòng)和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)。

我們要看懂WiFi驅(qū)動(dòng),首先要明白WiFi的工作原理。從對(duì)于支持802.11n、802.11ac這些比較無(wú)線標(biāo)準(zhǔn)的WiFi芯片,其驅(qū)動(dòng)程序也會(huì)越來(lái)越復(fù)雜。那么我們?cè)趺慈胧秩チ私饧胺治鏊兀?/span>

網(wǎng)上很多人分析Linux設(shè)備驅(qū)動(dòng)都是從模塊加載入手去分析它的驅(qū)動(dòng)源碼。以本人從事Linux設(shè)備驅(qū)動(dòng)多年的經(jīng)驗(yàn),這確實(shí)是一條很直觀又非常好的思路。但是這只局限于設(shè)備功能少、接口較簡(jiǎn)單、驅(qū)動(dòng)源碼較少的設(shè)備驅(qū)動(dòng)。對(duì)于功能復(fù)雜、驅(qū)動(dòng)源碼龐大的設(shè)備驅(qū)動(dòng),根據(jù)這條思路,很多開發(fā)者可能會(huì)無(wú)耐心走下去,或者會(huì)走向死胡同。

現(xiàn)在我們可以這樣來(lái)看,從硬件層面上看,WIFI設(shè)備與CPU通信是通過(guò)USB接口的,與其他WiFi設(shè)備之間的通信是通過(guò)無(wú)線射頻(RF)。從軟件層面上看,Linux操作系統(tǒng)要管理WiFi設(shè)備,那么就要將WiFi設(shè)備掛載到USB總線上,通過(guò)USB子系統(tǒng)實(shí)現(xiàn)管理。而同時(shí)為了對(duì)接網(wǎng)絡(luò),又將WiFi設(shè)備封裝成一個(gè)網(wǎng)絡(luò)設(shè)備。

我們以USB接口的WIFI模塊進(jìn)行分析:

(1)從USB總線的角度去看,它是USB設(shè)備;

(2)從Linux設(shè)備的分類上看,它又是網(wǎng)絡(luò)設(shè)備;

(3)從WIFI本身的角度去看,它又有自己獨(dú)特的功能及屬性,因此它又是一個(gè)私有的設(shè)備。

通過(guò)上述的分析,我們只要抓住這三條線索深入去分析它的驅(qū)動(dòng)源碼,整個(gè)WIFI驅(qū)動(dòng)框架就會(huì)浮現(xiàn)在你眼前。

1、現(xiàn)在我們先從USB設(shè)備開始,要寫一個(gè)USB設(shè)備驅(qū)動(dòng),那么大致步驟如下:

(1)需要針對(duì)該設(shè)備定義一個(gè)USB驅(qū)動(dòng),對(duì)應(yīng)到代碼中即定義一個(gè)usb_driver結(jié)構(gòu)體變量。代碼如下:

struct usb_driver xxx_usb_wifi_driver;

(2)填充該設(shè)備的usb_driver結(jié)構(gòu)體成員變量。代碼如下:

static struct usb_driver xxx_usb_wifi_driver = {

.name =             "XXX_USB_WIFI",

.probe=   xxx_probe,

.disconnect=   xxx_disconnect,

.suspend=        xxx_suspend,

.resume=         xxx_resume,

.id_table=        xxx_table,

};

(3)將該驅(qū)動(dòng)注冊(cè)到USB子系統(tǒng)。代碼如下:

usb_register(&xxx_usb_wifi_driver);

以上步驟只是一個(gè)大致的USB驅(qū)動(dòng)框架流程,而最大和最復(fù)雜的工作是填充usb_driver結(jié)構(gòu)體成員變量。以上步驟的主要工作是將USB接口的WIFI設(shè)備掛載到USB總線上,以便Linux系統(tǒng)在USB總線上就能夠找到該設(shè)備。

2、接下來(lái)是網(wǎng)絡(luò)設(shè)備的線索,網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)大致步驟如下:

(1)定義一個(gè)net_device結(jié)構(gòu)體變量ndev。代碼如下:

struct net_device *ndev;

(2)初始化ndev變量并分配內(nèi)存。代碼如下:

ndev=alloc_etherdev();

(3)填充ndev -> netdev_ops結(jié)構(gòu)體成員變量。代碼如下:

static const struct net_device_ops xxx_netdev_ops= {

.ndo_init= xxx_ndev_init,

.ndo_uninit= xxx _ndev_uninit,

.ndo_open= netdev_open,

.ndo_stop= netdev_close,

.ndo_start_xmit= xxx_xmit_entry,

.ndo_set_mac_address= xxx_net_set_mac_address,

.ndo_get_stats= xxx_net_get_stats,

.ndo_do_ioctl= xxx_ioctl,

};

(4)填充ndev->wireless_handlers結(jié)構(gòu)體成員變量,該變量是無(wú)線擴(kuò)展功能。代碼如下:

ndev->wireless_handlers = (struct iw_handler_def *)&xxx_handlers_def;

(5)將ndev設(shè)備注冊(cè)到網(wǎng)絡(luò)子系統(tǒng)。代碼如下:

register_netdev(ndev);

3、WiFi設(shè)備本身私有的功能及屬性,如自身的配置及初始化、建立與用戶空間的交互接口、自身功能的實(shí)現(xiàn)等。

(1)自身的配置及初始化。代碼如下:

xxx_read_chip_info();

xxx_chip_configure();

xxx_hal_init();

(2)主要是在proc和sys文件系統(tǒng)上建立與用戶空間的交互接口。代碼如下:

xxx_drv_proc_init();

xxx_ndev_notifier_register();

(3)自身功能的實(shí)現(xiàn),在前面已經(jīng)講解過(guò)WiFi的網(wǎng)絡(luò)及接入原理,如掃描等。同時(shí)由于WiFi在移動(dòng)設(shè)備中,相對(duì)功耗比較大,因此,對(duì)于功耗、電源管理也會(huì)在驅(qū)動(dòng)中體現(xiàn)。