女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

rt-thread源碼分析之socket抽象層和網卡注冊

冬至子 ? 來源:happycode999 ? 作者:happycode999 ? 2023-11-13 12:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

rt-thread網絡架構

如圖所示,rt-thread的網絡分為應用層、sal_socket、netdev、協議簇(at、lwip、wiznet)、網卡驅動五層。

應用層:調用BSD Socket API實現的網絡應用,如前面介紹的paho-mqtt。

sal_socket:對socket的抽象,通過網卡(netdev)的pf(sal_proto_family)調用具體的協議簇。

netdev:netdev的私有數據保存協議簇pf(sal_proto_family),pf中的family用于匹配socket需要的協議簇。

協議簇:當socekt匹配上協議簇后,pf的skt_ops調用具體的協議簇。協議簇的實現在sal_socket文件夾下的impl文件夾下,在每一類協議簇的實現中,都有一個向netdev設置協議簇的接口,如lwip中的sal_lwip_netdev_set_pf_info。這樣就可以通過netdev訪問到具體的協議簇。

網卡驅動:底層硬件。

二 sal_socket

2.1 BSD socket

當我們在調用BSD socket寫代碼時,實際上是調用sal_xxx(如sal_socket),在sys/socket.h文件中,通過#define將socket轉換成sal_socket的接口。

2.2 sal_init

sal_init從堆中分配出一個socket表sal_socket_table。sal_socket_table用于保存所有的sockets的信息,當需要創建一個sal_socket時,會從表中取出一個未使用的sal_socket,表的索引(數組下標)是sal_socket的描述符。

2.3 socket函數

2.3.1 socket_new

socket_new從sal_socket_table中獲取一個未使用的socket,并返回描述符。

2.3.2 socket_init

socket_init根據domain在netdev_get_by_family函數中匹配netdev。socket原型為
int socket(int domain, int type, int protocol);

不同協議簇的domain值如下:

lwIP 協議棧: family = AF_INET、sec_family = AF_INET

AT Socket 協議棧: family = AF_AT、sec_family = AF_INET

WIZnet 硬件 TCP/IP 協議棧: family = AF_WIZ、sec_family = AF_INET

與之相應的,netdev私有數據所保存的協議簇sal_proto_family中有一個family字段,用于與socket進行匹配,這樣socket函數通過doamin參數就可以指定使用lwip、at、wiznet三種協議簇的一種。

2.3.3 pf->skt_ops->socket

通過pf->skt_ops->socket調用具體協議簇的socket函數,如lwip的lwip_socket。

三 網卡的匹配和注冊

3.1 網卡的匹配-netdev_get_by_family

for (node = &(netdev_list->list); node; node = rt_slist_next(node))
{
netdev = rt_slist_entry(node, struct netdev, list);
pf = (struct sal_proto_family *) netdev->sal_user_data;
if (pf && pf->skt_ops && pf->family == family && netdev_is_up(netdev))
{
rt_hw_interrupt_enable(level);
return netdev;
}
}

遍歷netdev_list,查找與socket函數傳入的domain(family)參數一致netdev。

3.2 網卡的注冊-netdev_add

在component文件夾的driver文件夾下,不同網卡驅動最終會調用到netdev_add向netdev_list添加netdev,向內核注冊一個網卡,以rw009為例。

rt_hw_wifi_init -> eth_device_init -> eth_device_init_with_flag -> eth_netif_device_init -> netdev_add。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • TCP協議
    +關注

    關注

    1

    文章

    101

    瀏覽量

    12439
  • LwIP協議棧
    +關注

    關注

    0

    文章

    19

    瀏覽量

    7673
  • BSD
    BSD
    +關注

    關注

    0

    文章

    32

    瀏覽量

    10610
  • RT-Thread
    +關注

    關注

    32

    文章

    1400

    瀏覽量

    41824
  • MQTT
    +關注

    關注

    5

    文章

    680

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RT-Thread記錄(十一、UART設備—源碼解析)

    一文帶你深入理解 RT-Thread I/O 設備模型 — UART 設備源碼分析
    的頭像 發表于 07-01 11:24 ?6189次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(十一、UART設備—<b class='flag-5'>源碼</b>解析)

    RT-thread源碼移植到STM32F10x和STM32F4xx

    RT-thread源碼移植到STM32F10x和STM32F4xx: 一、源碼下載 點擊入門->下載 ? 在歷史版本里邊隨便選取一個 ? 會進入百度云盤的下載地址,里邊有全部版本的源碼
    的頭像 發表于 11-15 09:38 ?3353次閱讀
    <b class='flag-5'>RT-thread</b><b class='flag-5'>源碼</b>移植到STM32F10x和STM32F4xx

    一文讀懂RT-Thread的SAL套接字抽象

    SAL 簡介為了適配更多的網絡協議棧類型,避免系統對單一網絡協議棧的依賴,RT-Thread 系統提供了一套 SAL(套接字抽象)組件,該組件完成對不同網絡協議棧或網絡實現接口的抽象
    發表于 04-08 15:44

    WIZnet軟件包對接RT-Thread SAL套接字抽象實現對BSD Socket APIs的支持

    RT-Thread SAL 套接字抽象,實現對標準 BSD Socket APIs 的支持,完美的兼容多種軟件包和網絡功能實現,提高 WIZnet 設備兼容性。1.1 目錄結構WI
    發表于 05-17 17:00

    RTT網絡框架及SAL套接字抽象介紹

    RTT 中提供了標準的 BSD Socket 接口,同時也完成上面所說的兩大工作。為了解決協議棧與標準 Socket 的對接,RT-Thread 提供了一套 SAL(套接字抽象
    發表于 07-28 11:40

    基于RT-Thread的FM1702源碼

    RT-Thread是一款來自中國的開源嵌入式實時操作系統,包括一系列應用組件和驅動框架,如TCP/IP協議棧,虛擬文件系統,POSIX接口,圖形用戶界面。---(轉自RTT官網)。 FM1702是無線射頻的一種,現將其移植到RT-Thread操作系統中。
    發表于 12-28 10:54 ?15次下載

    RT-Thread發布SAL套接字抽象,帶來全新物聯網軟件開發模式

    Socket CAN 作為Linux上CAN編程的一種方式,它簡易易用,編程順手。很多用戶也想在 RT-Thread 上實現 Socket CAN 編程,這個時候就需要 SAL 上場了。只需要我們在底層使用
    發表于 07-22 12:37 ?2647次閱讀
    <b class='flag-5'>RT-Thread</b>發布SAL套接字<b class='flag-5'>抽象</b><b class='flag-5'>層</b>,帶來全新物聯網軟件開發模式

    HC32F460移植RT-Thread Nano+FinSh工程源碼下載

    HC32F460移植RT-Thread Nano+FinSh工程源碼下載
    發表于 01-05 10:30 ?6次下載

    RT-Thread設備模型框架及創建注冊設備的實現

    RT-Thread設備模型框架及創建注冊設備的實現方式介紹如下:
    的頭像 發表于 05-28 10:38 ?2413次閱讀
    <b class='flag-5'>RT-Thread</b>設備模型框架及創建<b class='flag-5'>注冊</b>設備的實現

    RT-Thread操作系統的FreeRTOS兼容

    Github地址 https://github.com/RT-Thread-packages/FreeRTOS-Wrapper 期待您的 Star 本項目是2022年開源夏,RT-Thread社區
    的頭像 發表于 01-14 00:55 ?2035次閱讀

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    淺析RT-Thread設備驅動框架

    RT-Thread 設備框架屬于組件和服務,是基于 RT-Thread 內核之上的上層軟件。設備框架是針對某一類外設,抽象出來的一套統一的操作方法及接入標準,可以屏蔽硬件差異,為應用
    的頭像 發表于 08-07 15:39 ?2576次閱讀

    RT-Thread源碼分析網卡數據的接收和發送

    ethernetif.c是lwip的網卡接口,在該接口中處理網卡的數據接收和發送,rt-thread在該接口文件中抽象了一個eth_device,管理網絡數據的收發和向內核的netde
    的頭像 發表于 08-11 16:49 ?2408次閱讀

    基于rt-threadsocket通信設計

    最近再研究 rt-thread 的通信 ,想設計出 eps8266(多個) rt-thread(作為中控) 服務器的通信框架,使用的開發板是 潘多拉
    的頭像 發表于 10-13 15:02 ?1678次閱讀
    基于<b class='flag-5'>rt-thread</b>的<b class='flag-5'>socket</b>通信設計
    主站蜘蛛池模板: 兰州市| 海口市| 南丰县| 克什克腾旗| 新闻| 江西省| 班玛县| 曲阜市| 平和县| 渑池县| 昌邑市| 广元市| 蓬溪县| 新宁县| 澄迈县| 明光市| 威信县| 那坡县| 阆中市| 潜江市| 新野县| 广灵县| 湖南省| 云和县| 松江区| 赤城县| 兰考县| 通州市| 商洛市| 九龙县| 孟州市| 基隆市| 香港 | 翁牛特旗| 云南省| 南宁市| 嘉善县| 通道| 双流县| 进贤县| 彝良县|