99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

NCS更改MTU大小

TedLee ? 來源:jf_29076475 ? 作者:jf_29076475 ? 2025-06-27 17:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

NCS更改MTU大小

一、 什么是MTU

MTU(Maximum Transmission Unit)即最大傳輸單元,它定義了藍牙網(wǎng)絡層協(xié)議一次能傳輸?shù)淖畲髷?shù)據(jù)量。在藍牙低功耗(BLE)通信中,MTU的大小直接影響到數(shù)據(jù)傳輸?shù)男屎托阅?/p>

MTU過小的影響

當MTU設置過小時,會導致以下問題:

  • 數(shù)據(jù)分片增加 :數(shù)據(jù)需要被分成更小的片段進行傳輸,增加了傳輸?shù)拇螖?shù)和復雜性。
  • 傳輸效率降低 :頻繁的數(shù)據(jù)分片和重組會消耗更多的帶寬和時間。
  • 連接穩(wěn)定性下降 :過小的MTU可能導致數(shù)據(jù)包丟失或傳輸錯誤,影響連接的穩(wěn)定性

所以為了能夠單包發(fā)送更大的數(shù)據(jù),服務器和客戶端都需要更新它們的MTU。MTU需要滿足主機和從機之間允許的最小值,必須支持更大的MTU的遷就支持更小的

MTU

在Zephyr里面CONFIG_BT_BUF_ACL_RX_SIZE CONFIG_BT_L2CAP_TX_MTU這兩個宏決定了ZephyrMTU的大小,下圖是MTU的關系已經(jīng)Kconfig對應表
在這里插入圖片描述

調(diào)用這個發(fā)送函數(shù)會報-128錯誤在這里插入圖片描述

二、如何修改MTU大小

1、增加主機向從機配置的MTU大小

在prj.conf添加如下幾個宏:

CONFIG_BT_L2CAP_TX_MTU=247
CONFIG_BT_BUF_ACL_RX_SIZE=251
CONFIG_BT_BUF_ACL_TX_SIZE=251

添加如上幾個宏,從機就支持支持最大的247的MTU了,但是這個是初始化協(xié)議棧的時候設置的,而MTU交換是主機和從機建立連接之后進行協(xié)商,所以主機可以在連接之后,主動設置從機的MTU大小了,那么怎么設置從機主動發(fā)起MTU請求和請求的大小呢:

有兩個辦法

1.1 第一個辦法:固定MTU大小

再上面的宏里面,再添加一個宏就可以實現(xiàn)連接后自動更新NTU大小了

CONFIG_BT_GATT_AUTO_UPDATE_MTU=y

在這里插入圖片描述

使用Kconfig search 查詢MTU,可以看到下面的描述連接后自動申請MTU大小,為什么我要多此一舉呢,因為有些客戶不需要申請這么大的MTU,需要動態(tài)去修改MTU大小或者自己隨著在某個操作里面修改MTU大小,

2、第二個辦法:使用函數(shù)從機主動向主機申請增加MTU大小

2.1 添加宏

CONFIG_BT_GATT_CLIENT

2.2 在函數(shù)里面添加如下代碼,然后再connect回調(diào)時間里面調(diào)用

/*MTU exchange*/
static struct bt_gatt_exchange_params mtu_exchange_params[CONFIG_BT_MAX_CONN];

static void mtu_exchange_cb(struct bt_conn *conn, uint8_t err,
			    struct bt_gatt_exchange_params *params)
{
    LOG_INF("MTU exchange %u %s (%u)", bt_conn_index(conn),
	       err == 0U ? "successful" : "failed", bt_gatt_get_mtu(conn));
}



static int mtu_exchange(struct bt_conn *conn)
{
    uint8_t conn_index;
    int err;

    conn_index = bt_conn_index(conn);

    LOG_INF("MTU (%u): %u", conn_index, bt_gatt_get_mtu(conn));

    mtu_exchange_params[conn_index].func = mtu_exchange_cb;

    err = bt_gatt_exchange_mtu(conn, &mtu_exchange_params[conn_index]);
    if (err) LOG_INF("MTU exchange failed (err %d)", err);
    else LOG_INF("Exchange pending...");

    return err;
}

在connect回調(diào)調(diào)用:
在這里插入圖片描述

三、測試

我們使用nrf下面的串口服務例程進行測試,具體怎么編譯程序和燒錄可以看我之前寫的博客

3.1 添加LOG

void mtu_updated(struct bt_conn *conn, uint16_t tx, uint16_t rx)
{
	LOG_INF("Updated MTU: TX: %d RX: %d bytesn", tx, rx);
}

static struct bt_gatt_cb gatt_callbacks = {
	.att_mtu_updated = mtu_updated,
};

隨后在main函數(shù)注冊回調(diào):

在這里插入圖片描述

3.2 可以看到,默認例程的MTU大小只有23字節(jié)大小,每包數(shù)據(jù)發(fā)送超過了這個大小就會報錯,

在這里插入圖片描述

3.3、在手機上面申請

兩個都是一樣的,可以看到,連接之后,通過主機更新或者從機和主機申請交換MTU大小也會改變,

在這里插入圖片描述

3.4 添加自動連接更新MTU的宏&自己在連接添加MTU更換的宏

在這里插入圖片描述

審核編輯 黃宇

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

    關注

    1

    文章

    19

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    NCS放大器DAD3350使用場景與效果

    NCS放大器DAD3350使用場景與效果 ? ? 使用場景 ? ? 半導體切割設備 ? ? 核心應用 ?:NCS放大器DAD3350是DISCO DAD3350切割機的關鍵組件,用于信號放大,確保
    的頭像 發(fā)表于 07-12 09:34 ?262次閱讀

    NCS放大器DAD3350詳細信息

    ? NCS放大器DAD3350詳細信息 ? ? 產(chǎn)品概述 ? ? 型號 ?:DAD3350 ? 品牌 ?:NCS ? 應用領域 ?:主要用于半導體劃片機(如DISCO DAD3350系列)的信號放大
    的頭像 發(fā)表于 07-12 09:31 ?239次閱讀

    Android14在BLE中,當MTU超過 517時,如何處理數(shù)據(jù)傳輸?

    /behavior-changes-all#mtu-set-to-517 我們在應用更改后進行了測試,但遇到了無法傳輸超過 512 字節(jié)數(shù)據(jù)的問題。 由于客戶的工作數(shù)據(jù)通常超過 512 字節(jié),我們預計需要分割數(shù)據(jù)進行傳輸。 在分段傳輸
    發(fā)表于 07-01 06:56

    NCS怎么添加.c.h文件到工程

    NCS隨筆】 SEGGER添加方式 在介紹NCS工程之前,我們先看看大家熟悉的SEGGER工程(Keil同理): 左邊的項目欄可以看到工程的配置,通過點擊 User Include
    的頭像 發(fā)表于 06-27 14:48 ?204次閱讀
    <b class='flag-5'>NCS</b>怎么添加.c.h文件到工程

    更改最大數(shù)據(jù)包大小時無法識別USB設備如何解決?

    將生產(chǎn)者 EP 端點描述符中的最大數(shù)據(jù)包大小從 1024 字節(jié)更改為 512 字節(jié)時,無法識別 USB 設備。 請告知如何解決這個問題。
    發(fā)表于 05-20 08:13

    nRF Connect SDK(NCS)/Zephyr固件升級詳解 – 重點講述MCUboot和藍牙空中升級

    如何在nRF Connect SDK(NCS)中實現(xiàn)藍牙空中升級?MCUboot和B0兩個Bootloader有什么區(qū)別?MCUboot升級使用的image格式是怎么樣的?什么是SMP協(xié)議?CBOR
    的頭像 發(fā)表于 05-09 14:14 ?1779次閱讀
    nRF Connect SDK(<b class='flag-5'>NCS</b>)/Zephyr固件升級詳解 – 重點講述MCUboot和藍牙空中升級

    mtu大小對云服務的影響

    了數(shù)據(jù)包的最大尺寸,從而影響數(shù)據(jù)傳輸?shù)男省?b class='flag-5'>MTU的大小取決于網(wǎng)絡層協(xié)議和物理介質(zhì)。例如,以太網(wǎng)的標準MTU大小為1500字節(jié),而MPLS的MTU
    的頭像 發(fā)表于 12-16 14:37 ?856次閱讀

    mtu和網(wǎng)絡安全的關系

    1. MTU的定義和作用 MTU是網(wǎng)絡協(xié)議棧中的一個重要參數(shù),它定義了網(wǎng)絡層可以處理的最大數(shù)據(jù)包大小。在以太網(wǎng)中,標準的MTU大小是1500
    的頭像 發(fā)表于 12-16 14:35 ?1230次閱讀

    mtu配置步驟詳解 mtu與數(shù)據(jù)包丟失的關系

    MTU(Maximum Transmission Unit)即最大傳輸單元,是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)報大小,單位是字節(jié)。MTU配置步驟及其與數(shù)據(jù)包丟失的關系如下: MTU
    的頭像 發(fā)表于 12-16 14:33 ?2559次閱讀

    常見的mtu相關問題及解決方案

    1. MTU不匹配導致的數(shù)據(jù)包分片 問題描述: 當數(shù)據(jù)包從一個網(wǎng)絡傳輸?shù)搅硪粋€網(wǎng)絡時,如果兩個網(wǎng)絡的MTU值不匹配,較大的數(shù)據(jù)包可能會被分片,這可能導致性能下降和數(shù)據(jù)丟失。 解決方案: 自動調(diào)整
    的頭像 發(fā)表于 12-16 14:25 ?2887次閱讀

    mtu在不同網(wǎng)絡協(xié)議中的應用

    包括數(shù)據(jù)包頭和數(shù)據(jù)負載。MTU大小決定了網(wǎng)絡中可以傳輸?shù)淖畲髷?shù)據(jù)量,同時也影響了數(shù)據(jù)包的分片和重組過程。如果數(shù)據(jù)包超過MTU,它將被分片成更小的單元進行傳輸,這會增加網(wǎng)絡的復雜性和延遲。 M
    的頭像 發(fā)表于 12-16 14:22 ?1321次閱讀

    mtu與網(wǎng)絡性能的關系 mtu調(diào)整對網(wǎng)絡的影響

    ,網(wǎng)絡設備能夠發(fā)送或接收的最大數(shù)據(jù)包大小。這個參數(shù)對于確保數(shù)據(jù)包在不同網(wǎng)絡設備間順利傳輸至關重要。如果數(shù)據(jù)包大小超過了接收設備的MTU,那么數(shù)據(jù)包就需要被分片,這會增加網(wǎng)絡的復雜性和延遲。 M
    的頭像 發(fā)表于 12-16 14:21 ?3115次閱讀

    mtu是什么?解釋和定義

    MTU(Maximum Transmission Unit)是一個網(wǎng)絡術語,指的是在網(wǎng)絡層(如以太網(wǎng))上可以傳輸?shù)淖畲髷?shù)據(jù)包大小。MTU大小決定了網(wǎng)絡設備在發(fā)送數(shù)據(jù)時能夠處理的最大數(shù)
    的頭像 發(fā)表于 12-16 14:19 ?5092次閱讀

    新港海岸NCS8803,HDMI to EDP帶Scaler

    NCS8803 是一款低功耗 HDMI 轉 DisplayPort/eDP 轉換器,具有先進的縮放功能,從 2:1 到 1:2 的小數(shù)縮放比,專為移動設備(包括平板電腦)設計,筆記本電腦、顯示器等
    的頭像 發(fā)表于 10-23 13:54 ?1489次閱讀
    新港海岸<b class='flag-5'>NCS</b>8803,HDMI to EDP帶Scaler

    世界最小的Intel Core Ultra超高效能主板---PICO-MTU4

    作為配備全新IntelCoreUltra的最小主板,PICO-MTU4利用了存算分離架構設計中的混合CPU核心架構和專用AI引擎NPU,從而實現(xiàn)了多線程性能提升高達24%和SoC功耗降低高達50
    的頭像 發(fā)表于 09-28 08:01 ?721次閱讀
    世界最小的Intel Core Ultra超高效能主板---PICO-<b class='flag-5'>MTU</b>4