91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

BL808 RT-Thread Wi-Fi 驅(qū)動適配

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RT-Thread論壇「燕十三」 ? 作者:RT-Thread論壇「燕十 ? 2023-12-02 11:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

BL808 WiFi 屬于 SOC 單芯片型無線 MCU,片上集成 WiFi 功能,移植 RT-Thread 過程中,需要使用 RT-Thread wlan 框架。RT-Thread wlan 框架是用于管理 Wi-Fi 驅(qū)動設(shè)備的框架,對下連接具體的 Wi-Fi 驅(qū)動,控制 Wi-Fi 的連接斷開、掃描等操作,對上為應(yīng)用提供統(tǒng)一的 Wi-Fi 控制接口。wlan 框架主要有 3 部分組成:
  • dev 驅(qū)動接口層:為 wlan 框架提供統(tǒng)一的接口調(diào)用。
  • manage 管理層:為用戶提供 Wi-Fi 掃描,鏈接,斷線重連等功能。
  • protocol 協(xié)議:負(fù)責(zé)處理 Wi-Fi 產(chǎn)生的數(shù)據(jù)流,如 lwip。
使用了 wlan 驅(qū)動框架之后,Wi-Fi 驅(qū)動只需要關(guān)注 Wi-Fi 的連接、斷開、掃描等動作,并通過 event 將相關(guān)動作告知 wlan 框架,由 wlan 框架根據(jù)收到的 event 管理 lwip。

1、使能 wlan 驅(qū)動

Linux 下 執(zhí)行如下命令,并開啟 wlan 驅(qū)動。

1$scons--menuconfig
2RT-ThreadComponents--->
3DeviceDrivers--->
4[*]UsingWi-Fiframework--->

開啟 wlan 驅(qū)動后,默認(rèn)會選中 lwip。

如 WiFi SOC 類芯片,原廠 SDK 中已經(jīng)有線程管理 WiFi 數(shù)據(jù)收發(fā),可關(guān)閉 lwip 中的 Rx thread 和 Tx thread,以節(jié)省系統(tǒng)資源。

1Network--->
2-*-LwIP:lightweightTCP/IPstack--->
3[*]NotuseRxthread
4[*]NotuseTxthread

2、wlan 驅(qū)動框架適配

初始化

通過 rt_wlan_dev_register() 注冊 STATION 和 AP 設(shè)備,并將 wlan 設(shè)備接口函數(shù)注冊進(jìn)對應(yīng)設(shè)備。

 1staticconststructrt_wlan_dev_opsops=
 2{
 3.wlan_init=drv_wlan_init,
 4.wlan_mode=drv_wlan_mode,
 5.wlan_scan=drv_wlan_scan,
 6.wlan_join=drv_wlan_join,
 7.wlan_softap=drv_wlan_softap,
 8.wlan_disconnect=drv_wlan_disconnect,
 9.wlan_ap_stop=drv_wlan_ap_stop,
10.wlan_ap_deauth=drv_wlan_ap_deauth,
11.wlan_scan_stop=drv_wlan_scan_stop,
12.wlan_get_rssi=drv_wlan_get_rssi,
13.wlan_set_powersave=drv_wlan_set_powersave,
14.wlan_get_powersave=drv_wlan_get_powersave,
15.wlan_cfg_promisc=drv_wlan_cfg_promisc,
16.wlan_cfg_filter=drv_wlan_cfg_filter,
17.wlan_cfg_mgnt_filter=drv_wlan_cfg_mgnt_filter,
18.wlan_set_channel=drv_wlan_set_channel,
19.wlan_get_channel=drv_wlan_get_channel,
20.wlan_set_country=drv_wlan_set_country,
21.wlan_get_country=drv_wlan_get_country,
22.wlan_set_mac=drv_wlan_set_mac,
23.wlan_get_mac=drv_wlan_get_mac,
24.wlan_recv=drv_wlan_recv,
25.wlan_send=drv_wlan_send,
26};
27intrt_hw_wifi_init(void)
28{
29rt_err_tret=RT_EOK;
30staticstructrt_wlan_devicewlan0;
31staticstructrt_wlan_devicewlan1;
32memset(&wifi_sta,0,sizeof(wifi_sta));
33ret=rt_wlan_dev_register(&wlan0,RT_WLAN_DEVICE_STA_NAME,&ops,0,&wifi_sta);
34wifi_sta.wlan=&wlan0;
35memset(&wifi_ap,0,sizeof(wifi_ap));
36ret|=rt_wlan_dev_register(&wlan1,RT_WLAN_DEVICE_AP_NAME,&ops,0,&wifi_ap);
37wifi_ap.wlan=&wlan1;
38returnret;
39}
40INIT_DEVICE_EXPORT(rt_hw_wifi_init);

啟動設(shè)備

在 main.c 中 加入 rt_wlan_set_mode 分別設(shè)置 STATION 和 AP 模式。

1intmain(void)
2{
3rt_kprintf("Hello,RISC-V!
");
4/*setwifiworkmode*/
5rt_wlan_set_mode(RT_WLAN_DEVICE_STA_NAME,RT_WLAN_STATION);
6rt_wlan_set_mode(RT_WLAN_DEVICE_AP_NAME,RT_WLAN_AP);
7return0;
8}

接口實現(xiàn)

在 STATION 模式下,至少需要實現(xiàn)連接路由器 drv_wlan_join() 和斷開路由器 drv_wlan_disconnect() 這 2 個函數(shù)。

在 AP 模式下,至少要實現(xiàn) AP 開啟 drv_wlan_softap 和 AP 關(guān)閉 drv_wlan_ap_stop() 這 2個函數(shù)。

這 4 個函數(shù)可以按照芯片 SDK 上的接口對應(yīng)實現(xiàn)即可。

event 管理

在實現(xiàn)以上接口用,需要在 Wi-Fi 觸發(fā)對應(yīng)事件后,通過 event 通知 wlan 驅(qū)動框架。

在 STATION 模式下,當(dāng)連接路由器成功后,通過 rt_wlan_dev_indicate_event_handle(wifi_sta.wlan, RT_WLAN_DEV_EVT_CONNECT, RT_NULL) 函數(shù)通知 wlan 框架 station 已經(jīng)連接路由成功。當(dāng)斷開路由器后,通過 rt_wlan_dev_indicate_event_handle(wifi_sta.wlan, RT_WLAN_DEV_EVT_DISCONNECT, RT_NULL) 函數(shù)通過 wlan 框架 station 已經(jīng)斷開路由器。

wlan 框架在收到 RT_WLAN_DEV_EVT_CONNECT 時間后會通過 dhcp 服務(wù)獲取 IP。

在 AP 模式下,開啟軟 AP 成功后,通過 rt_wlan_dev_indicate_event_handle(wifi_ap.wlan, RT_WLAN_DEV_EVT_AP_START, RT_NULL) 函數(shù)通知 wlan 框架 AP 模式開啟成功。關(guān)閉軟 AP 成功后,通過 rt_wlan_dev_indicate_event_handle(wifi_ap.wlan, RT_WLAN_DEV_EVT_AP_STOP, RT_NULL) 函數(shù)通知 wlan 框架軟 AP 關(guān)閉。

wlan 框架在收到 RT_WLAN_DEV_EVT_AP_START 時間后會開啟 DHCP_SERVER 服務(wù)。

采用了 RT-Thread wlan 驅(qū)動框架后,芯片 SDK 只需要負(fù)責(zé)管理 WiFi 相關(guān)的連接服務(wù),而不需要管理 lwip 協(xié)議棧,

數(shù)據(jù)收發(fā)

上面說到 wlan 框架在收到對應(yīng)的 evnet 后,負(fù)責(zé)啟動 lwip 中的對應(yīng)服務(wù)。

  • wlan 框架通過 drv_wlan_send() 函數(shù)將需要發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)包發(fā)輸出去。針對WiFi 而言,需要通過判斷設(shè)備是 station 還是 ap 后,將對應(yīng)的數(shù)據(jù)包發(fā)送給 WiFi 。

1staticintdrv_wlan_send(structrt_wlan_device*wlan,void*buff,intlen)
2{
3if(wlan->user_data==&wifi_sta)
4bl_wifi_tx(0,(structpbuf*)buff);
5else
6bl_wifi_tx(1,(structpbuf*)buff);
7returnRT_EOK;
8}
  • WiFi 設(shè)備接收到數(shù)據(jù)后,通過 rt_wlan_dev_report_data() 函數(shù),將數(shù)據(jù)傳遞給 wlan 框架,wlan 框架會進(jìn)一步通過 lwip 做進(jìn)一步處理。

1intbl_wifi_rx(uint8_tidx,structpbuf*p)
2{
3rt_err_tret=RT_EOK;
4if(idx==0)
5ret=rt_wlan_dev_report_data(wifi_sta.wlan,p,p->tot_len);
6else
7ret=rt_wlan_dev_report_data(wifi_ap.wlan,p,p->tot_len);
8returnret;
9}

其他必須實現(xiàn)的接口

  • mac相關(guān)

主要實現(xiàn) mac 地址讀取和寫入。

1staticrt_err_tdrv_wlan_set_mac(structrt_wlan_device*wlan,rt_uint8_tmac[])
2{
3wifi_mgmr_sta_mac_set(mac);
4returnRT_EOK;
1staticrt_err_tdrv_wlan_get_mac(structrt_wlan_device*wlan,rt_uint8_tmac[])
2{
3wifi_mgmr_sta_mac_get(mac);
4returnRT_EOK;
5}
  • Wi-Fi scan

 1staticrt_err_tdrv_wlan_scan(structrt_wlan_device*wlan,structrt_scan_info*scan_info)
 2{
 3intchannel_input_num=0;
 4uint8_tchannel_input[MAX_FIXED_CHANNELS_LIMIT]={0};
 5constchar*ssid=NULL;
 6uint8_tbssid[6]={0xff,0xff,0xff,0xff,0xff,0xff};
 7uint8_tscan_mode=SCAN_ACTIVE;
 8uint32_tduration_scan_us=0;
 9if(scan_info!=NULL&&scan_info->ssid.len>0)
10{
11ssid=scan_info->ssid.val;
12}
13if(wifi_mgmr_scan_adv(wlan,wifi_scan_complete_callback,channel_input,channel_input_num,bssid,ssid,scan_mode,duration_scan_us)!=0)
14return-RT_ERROR;
15returnRT_EOK;
16}

BL808 WiFi 屬于 SOC 單芯片型無線 MCU,片上集成 WiFi 功能,移植 RT-Thread 過程中,需要使用 RT-Thread wlan 框架。

本文為RT-Thread論壇用戶「燕十三」的原創(chuàng)文章,再次感謝


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 驅(qū)動
    +關(guān)注

    關(guān)注

    12

    文章

    1954

    瀏覽量

    88522
  • WIFI
    +關(guān)注

    關(guān)注

    82

    文章

    5509

    瀏覽量

    213515
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1613

    瀏覽量

    44821

原文標(biāo)題:BL808 RT-Thread Wi-Fi 驅(qū)動適配

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    技術(shù)資訊 I Wi-Fi 模塊設(shè)計

    本文要點Wi-Fi模塊設(shè)計旨在打造一套緊湊且高效的硬件和軟件解決方案,使設(shè)備能夠通過Wi-Fi網(wǎng)絡(luò)實現(xiàn)通信。Wi-Fi模塊設(shè)計是一個復(fù)雜的過程,要求研發(fā)人員兼具硬件與軟件工程方面的專業(yè)知識
    的頭像 發(fā)表于 02-27 17:12 ?550次閱讀
    技術(shù)資訊 I <b class='flag-5'>Wi-Fi</b> 模塊設(shè)計

    恩智浦亮相RT-Thread 20周年開發(fā)者大會

    日前,“開源向?qū)崱どa(chǎn)力進(jìn)化啟示錄”全球峰會暨RT-Thread 20周年開發(fā)者大會在上海成功舉辦,恩智浦作為RT-Thread的緊密合作伙伴,在活動中重磅亮相,展示雙方在共建RT-Thread OS開發(fā)生態(tài)方面的新成果、新方案
    的頭像 發(fā)表于 01-26 09:07 ?548次閱讀

    Wi-Fi:無線連接的全球通用語

    一、什么是Wi-Fi?Wi-FiWi-Fi聯(lián)盟制造商的商標(biāo)認(rèn)證,是基于IEEE 802.11標(biāo)準(zhǔn)的無線局域網(wǎng)技術(shù)。它允許電子設(shè)備在特定范圍內(nèi)無線接入網(wǎng)絡(luò),實現(xiàn)高速數(shù)據(jù)交換與互聯(lián)網(wǎng)訪問,已成為
    發(fā)表于 01-07 09:49

    基于RT-Thread的簡單物聯(lián)網(wǎng)溫控箱 | 技術(shù)集結(jié)

    目錄項目概述RT-Thread使用情況概述硬件框架軟件框架說明演示效果改進(jìn)方向代碼地址1項目概述本項目是一個簡易的、較高精度的、易于擴(kuò)展的桌面級溫控系統(tǒng)。實現(xiàn)對箱內(nèi)溫度的精確控制,并通過Wi-Fi
    的頭像 發(fā)表于 12-26 18:18 ?7232次閱讀
    基于<b class='flag-5'>RT-Thread</b>的簡單物聯(lián)網(wǎng)溫控箱 | 技術(shù)集結(jié)

    【W(wǎng)iFi+藍(lán)牙模組】高性能 Wi-Fi +藍(lán)牙模組的國產(chǎn)替代方案

    模組,基于 BL618 和 BL616 芯片,支持 Wi-Fi 6 (802.11ax) + BLE 5.3 + Thread 協(xié)議,高帶寬、低延遲、低功耗。 Ai-M61系列 ? 基
    的頭像 發(fā)表于 11-26 17:44 ?401次閱讀
    【W(wǎng)iFi+藍(lán)牙模組】高性能 <b class='flag-5'>Wi-Fi</b> +藍(lán)牙模組的國產(chǎn)替代方案

    使用RT-Thread studio 開發(fā)RT-Thread Nano項目的時候 串口的驅(qū)動是要自己寫嗎?

    剛?cè)肟?。使?b class='flag-5'>RT-Thread studio 開發(fā)RT-Thread 標(biāo)準(zhǔn)板項目的時候直接使用里邊的串口uart_dev=rt_device_find(“uart5”);然后操作設(shè)備,在開發(fā)R
    發(fā)表于 09-26 08:14

    淺談Wi-Fi 6E與Wi-Fi 7的關(guān)鍵器件——BAW濾波器新技術(shù)

    作者: Qorvo 亞太區(qū)無線連接事業(yè)部高級行銷經(jīng)理林健富 ? 2020年1月,Wi-Fi聯(lián)盟正式宣布開放6GHz頻段(5925MHz-7125MHz),并將其命名為Wi-Fi 6E。2020年4月
    發(fā)表于 09-19 18:29 ?2109次閱讀
    淺談<b class='flag-5'>Wi-Fi</b> 6E與<b class='flag-5'>Wi-Fi</b> 7的關(guān)鍵器件——BAW濾波器新技術(shù)

    RT-Thread Nano硬核移植指南:手把手實現(xiàn)VGLite圖形驅(qū)動適配 | 技術(shù)集結(jié)

    VGLite是NXP提供的輕量級2D圖形API,本文將手把手帶你實現(xiàn)VGLite圖形驅(qū)動適配RT-Thread。文章分為上、下兩篇,將手把手教您移植。上篇對RT-ThreadNano內(nèi)
    的頭像 發(fā)表于 07-17 14:40 ?3388次閱讀
    <b class='flag-5'>RT-Thread</b> Nano硬核移植指南:手把手實現(xiàn)VGLite圖形<b class='flag-5'>驅(qū)動</b><b class='flag-5'>適配</b> | 技術(shù)集結(jié)

    用SPI玩轉(zhuǎn)WiFi,RT-Thread ESP-Hosted驅(qū)動深度適配指南 | 技術(shù)集結(jié)

    還在為MCU的WiFi連接方案發(fā)愁?RT-Thread社區(qū)開源ESP-Hosted驅(qū)動,通過標(biāo)準(zhǔn)SPI接口即可實現(xiàn),并且該倉庫已整理成RT-Thread軟件包。RT
    的頭像 發(fā)表于 07-09 19:03 ?1648次閱讀
    用SPI玩轉(zhuǎn)WiFi,<b class='flag-5'>RT-Thread</b> ESP-Hosted<b class='flag-5'>驅(qū)動</b>深度<b class='flag-5'>適配</b>指南 | 技術(shù)集結(jié)

    RT-Thread榮獲2025優(yōu)秀開源項目 | 新聞速遞

    6月底,RT-Thread睿賽德受邀參與由上海開源信息技術(shù)協(xié)會主辦的2025上海開源創(chuàng)新精英薈。上海市商委副主任張杰出席會議并致辭。RT-Thread嵌入式操作系統(tǒng)項目憑借其卓越的技術(shù)創(chuàng)新與開源生態(tài)
    的頭像 發(fā)表于 07-04 09:04 ?2640次閱讀
    <b class='flag-5'>RT-Thread</b>榮獲2025優(yōu)秀開源項目 | 新聞速遞

    玄鐵加入RT-Thread 高級會員合作伙伴 | 戰(zhàn)略新篇

    。深化合作,共建RISC-V生態(tài)RT-Thread作為國內(nèi)領(lǐng)先的嵌入式操作系統(tǒng),與玄鐵團(tuán)隊在技術(shù)適配、生態(tài)共建方面已建立長期緊密的合作關(guān)系。目前,RT-Thread
    的頭像 發(fā)表于 06-23 20:22 ?1105次閱讀
    玄鐵加入<b class='flag-5'>RT-Thread</b> 高級會員合作伙伴 | 戰(zhàn)略新篇

    nRF Cloud Wi-Fi 定位服務(wù)

    、Predictive-GPS、Single-Cell、Multi-Cell 和 Wi-Fi 定位。通過利用 nRF Cloud 的優(yōu)化定位算法,基于 Nordic SoC 和 模組的產(chǎn)品可在定位用例
    發(fā)表于 04-17 15:07

    Wi-Fi 定位服務(wù)

    Wi-Fi 是一種著名的無線網(wǎng)絡(luò)技術(shù),用于設(shè)備的局域網(wǎng)和互聯(lián)網(wǎng)接入。Wi-Fi 通過 Wi-Fi 網(wǎng)絡(luò)為家庭、辦公室和學(xué)校等環(huán)境提供便捷的無線互聯(lián)網(wǎng)接入服務(wù)。 Wi-Fi 定位是一種
    發(fā)表于 04-17 15:01

    如何為驅(qū)動板添加Wi-Fi功能

    驅(qū)動板添加Wi-Fi功能,可以通過硬件和軟件兩種途徑實現(xiàn)。
    的頭像 發(fā)表于 04-16 14:22 ?921次閱讀

    推出了期待已久的 nRF7002 低功耗Wi-Fi 6

    支持長壽命的電池供電Wi-Fi操作。 借助 Wi-Fi 6,我們將支持用于 Matter 的所有無線協(xié)議、用于調(diào)試的藍(lán)牙 LE、用于低功耗mesh網(wǎng)絡(luò)的 Thread 以及用于高吞吐量的Wi-
    發(fā)表于 03-26 11:00