《秦韋忠-AI物聯時代下rt-thread的網絡能力及網絡框架代碼詳解.ppt》由會員分享,可在線閱讀,更多相關《秦韋忠-AI物聯時代下rt-thread的網絡能力及網絡框架代碼詳解.ppt(23頁珍藏版)》請在三個皮匠報告上搜索。
1、AI物聯時代下rt-thread的網絡能力及網絡框架代碼詳解by 秦韋忠2024.06.02分享些什么ai和物聯網的行業和應用現狀rt-thread提供的網絡能力,應用層面分享如何通過軟件包實現行業應用,網卡層面分享已經支持的網卡,協議棧層面分享已經支持的tcp/ip協議棧rt-thread sal_socket的工作原理rt-thread 網卡驅動和工作原理,分享通用網卡驅動和wlan網卡驅動、以rw007為示例加深理解聽了能獲得什么有能力使用rt-thread構建基于物聯網的行業應用有能力進行rt-thread的網卡調試和性能調優目錄第一部分 行業和應用一、ai和物聯網的行業和應用現狀二、
2、rt-thread提供的網絡能力2.1 應用開發常用的軟件包2.2 支持的網絡協議棧2.3 支持的網卡第二部分 源碼詳解三、rt-thread sal_socket3.1 sal軟件架構3.2 sal_socket工作原理四、rt-thread 網卡驅動和工作原理4.1 網卡種類和對應驅動框架4.2 網卡數據的收發第三部分 展望和致謝五、展望和致謝5.1 展望5.2 致謝第一部分 行業和應用一、ai和物聯網的行業和應用現狀二、rt-thread提供的網絡能力2.1 應用開發常用的軟件包2.2 支持的網絡協議棧2.3 支持的網卡一、一、aiai和物聯網的行業和應用現狀和物聯網的行業和應用現狀智能
3、家居、智慧樓宇醫療、健康制造業、工業物聯網交通運輸、車聯網1.1 ai1.1 ai和物聯網行業和物聯網行業零售、pos機、共享充電寶農業能源管理智慧城市續1.21.2、應用方式、應用方式EMQX搭建私有mqtt服務器第三方ai、物聯網平臺,調用云api二、二、rt-threadrt-thread提供提供的網絡的網絡能力能力2.1 2.1 常用常用軟件包軟件包paho-mqtt:eclipse mqtt 客戶端WebClient:rt-thread http/https客戶端librws:websocket客戶端CoAP:受限應用協議freemodbus:modbus主從協議棧netutils:
4、rt-thread網絡工具集NimBLE:藍牙5.0協議棧ota_downloader:ota固件下載Ali-iotkit:阿里云物聯網平臺tencent-iot-sdk:騰訊云物聯網平臺OneNet:OneNet物聯網平臺Azure IoT SDK:azure物聯網平臺2.2 2.2 支持的網絡協議棧支持的網絡協議棧lwip:Light weight IP,輕量化TCP/IP協議,是瑞典計算機科學院(SICS)的Adam Dunkels 開發的一個小型開源的TCP/IP協議棧。LwIP的設計初衷是:用少量的資源消耗實現一個較為完整的TCP/IP協議棧,其中“完整”主要指的是TCP協議的完整性
5、,實現的重點是在保持TCP協議主要功能的基礎上減少對RAM 的占用。at:主控外接網絡模塊,通過串口發送at指令實現上網,如esp8266、ec20wiznet:w5500硬件tcp/ip協議棧2.3 2.3 支持的網卡支持的網卡rw007enc28j60dm9000通用網卡驅動,如lan8720W60 xM26/MC20EC200T、EC200SSIM800C、SIM76XX.第二部分 源碼詳解三、rt-thread sal_socket3.1 sal軟件架構3.2 sal_socket工作原理四、rt-thread 網卡驅動和工作原理4.1 網卡種類和對應驅動框架4.2 網卡數據的收發三、
6、三、rt-thread sal_socketrt-thread sal_socket3.1 sal3.1 sal軟件架構軟件架構如圖所示,rt-thread的網絡分為應用層、sal_socket、netdev、協議簇(at、lwip、wiznet)、網卡驅動五層。應用層:調用BSD Socket API實現的網絡應用,如paho-mqtt。sal_socket:對socket的抽象,對上提供BSD socket接口,對下提供socket的標準接口供不同協議棧適配。netdev:netdev的私有數據保存協議簇pf(sal_proto_family),pf保存具體協議棧的操作集,sal_sock
7、et通過netdev調用協議棧接口。協議簇:通過netdev_register實例化一個網卡前,會向netdev的pf注冊一個具體的協議簇。網卡驅動:底層硬件。如果用lwip,會通過eth_device_init注冊一張網卡。3.2 sal_socket3.2 sal_socket工作工作原理原理1 http客戶端應用調用rt-thread提供的http client軟件包webclient的接口2 軟件包webclient調用BSD socket的socket創建套接字,獲取描述符fd3#define socket sal_socket/socketsys_socketsyssocket.h
8、4 sal_socket-socket_init 從netdev_def(默認網卡)或者netdev_list獲取netdev,賦值給sal_socket5 獲取到netdev后,sal_socket通過netdev中的sal_user_data獲取sal_proto_family,從sal_proto_family獲取skt_ops,通過skt_ops調用具體的協議棧6-1 對于lwip來說,調用lwip_socket、lwip_connect、lwip_send等lwip接口7-1 rtthread在lwip原有網卡netif上封裝出了eth_device,在適配網卡時只需要關注實現eth
9、_device,底層數據的收發是通過eth_device的eth_tx和eth_rx完成的。lwip的數據流到此結束。6-2 對于at來說,調用at_socket、at_connect、at_sendto等接口7-2 at_socket創建套接字的時候會獲取協議簇為at的netdev,根據netdev的name獲取at_device,從at_device的class獲取socket_ops給到at_socket8 當進行socket_connect等操作時,從sal_socket的user_data獲取at_socket的fd,進而取到at_socket,接著調用at_socket的ops調用
10、具體設備的at_connect,會發送at指令去連接tcp服務器。at的數據流程到此結束。四、四、rt-thread rt-thread 網卡驅動和工作原理網卡驅動和工作原理4.1 4.1 網卡種類和對應驅動框架網卡種類和對應驅動框架rt-thread分為三類網卡:lwip、at、wiznet,這里只討論前兩種。lwiplwip:用于在mcu上運行協議棧的場合,rt-thread適配好了lwip的port層,并在port層抽象出eth_device,作為rt-thread的網卡接口。eth_device結構體如下圖所示。netif:lwip網卡接口。會在eth_device_init的時候初始
11、化并最終通過netifapi_netif_add添加進lwip內核。eth_tx:網卡發送接口。網卡需要送出ip數據報的時候調用netif的linkoutput,最終會調用eth_device的eth_tx。eth_rx:網卡接收接口。在eth_rx_thread_entry任務中,會調用eth_device的eth_rx接口獲取底層硬件的數據,并通過netif的input接口傳入lwip內核。常規lwip的網卡是通過netif_add向lwip內核注冊一個netif,而rt-thread在適配時將netif封裝在了eth_device,得到了更高級的抽象。對于此類網卡驅動,使用的是eth_d
12、evice驅動框架,如果需要開發一張網卡,重點需要實現eth_device中與硬件相關的eth_tx和eth_rx兩個接口,初始化對應的eth_device結構體并調用eth_device_init將eth_device注冊到系統。atat:用于外接wifi模塊或4g模塊的場合,rt-thread針對通過at指令聯網的網卡實現了at socket的sal_proto_family,這類網卡使用的框架是at_device框架,想要開發一個at設備的網卡,需要實現at_device_class,重點是提供at_device_class的socket_ops,最后通過at_device_class_
13、register注冊。4.2 4.2 網卡數據的收發網卡數據的收發網卡數據的發送網卡數據的發送 netif會在eth_device_init的時候初始化并最終通過netifapi_netif_add添加進lwip內核,網卡需要發送ip數據報的時候調用netif的linkoutput,最終會調用eth_device的eth_tx。網卡數據的接收網卡數據的接收 在eth_rx_thread_entry任務中,會調用eth_device的eth_rx接口獲取底層硬件的數據,并通過netif的input接口傳入lwip內核。如下圖為eth_rx_thread_entry任務的接收部分。第三部分 展望和致謝展望未來,會有更多物聯網的應用場景,特別是ai的進步,類似于chatgpt會提供云端api,這是物聯網的新型應用場景,作為一個小而美的物聯網操作系統,rt-thread在網絡方面提供了sal_socket,能應用于傳統的lwip的網卡和at網卡,基本涵蓋了嵌入式的網卡類型,同時,也提供了常用網絡協議的軟件包,如http的webcleint,mqtt的paho-mqtt,也對接了常用的云平臺,如騰訊云、阿里云,依托軟件包,可以加快部署和驗證。最后,感謝大家捧場,讓我們一起迎接未知而充滿機遇和挑戰的未來,祝rt-thread越來越好,祝大家工作順利。THE END