衡阳派盒市场营销有限公司

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

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

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

【RT-Thread學(xué)習(xí)筆記】好用高性?xún)r(jià)比的BLE藍(lán)牙抓包器

嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 來(lái)源:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 2022-07-30 11:45 ? 次閱讀

作為基于藍(lán)牙協(xié)議的開(kāi)發(fā)者,少不了各種需要抓包分析藍(lán)牙報(bào)文的應(yīng)用場(chǎng)景;而專(zhuān)業(yè)的藍(lán)牙抓包器非常昂貴,可能會(huì)讓初學(xué)者望而卻步。本文結(jié)合實(shí)際的工程場(chǎng)景,安利一款簡(jiǎn)單好用且高性?xún)r(jià)比的藍(lán)牙抓包器,基本可以滿(mǎn)足日常的抓包分析,希望對(duì)大家有所幫助。

1 寫(xiě)在前面

作為一個(gè)基于藍(lán)牙協(xié)議的開(kāi)發(fā)者,少不了各種需要抓包分析藍(lán)牙報(bào)文的應(yīng)用場(chǎng)景;這就好比分析電路少不了萬(wàn)用表,分析串行通訊協(xié)議少不了示波器/邏輯分析儀,分析網(wǎng)絡(luò)通訊少不了網(wǎng)絡(luò)抓包。

作為BLE藍(lán)牙的入門(mén)級(jí)開(kāi)發(fā)者,前期對(duì)藍(lán)牙的很多特性都不能很好的把握,所以能多抓抓實(shí)際的通訊報(bào)文來(lái)分析分析,一定能夠加快對(duì)藍(lán)牙通訊協(xié)議的理解。

無(wú)奈,市面上真正專(zhuān)業(yè)級(jí)別的藍(lán)牙抓包器還是比較昂貴的,一般只有藍(lán)牙芯片開(kāi)發(fā)公司或者相關(guān)的實(shí)驗(yàn)室會(huì)配備這樣的儀器,而對(duì)于普通的開(kāi)發(fā)者,更多的是希望能有一塊使用比較簡(jiǎn)單,并且性?xún)r(jià)比能夠被開(kāi)發(fā)者接受的抓包器。

下文將會(huì)結(jié)合我自己的工程實(shí)例,給大家安利一塊藍(lán)牙抓包器;雖然前期使用的過(guò)程中,也遇到各種各樣的坑,慢慢在使用過(guò)程中 自己動(dòng)手優(yōu)化,慢慢打造成適合自己使用的小工具,目前也能滿(mǎn)足自己的開(kāi)發(fā)需求,所以推薦給大家。

2 工具簡(jiǎn)介

本文要介紹的這個(gè)工具是:NRF52832模塊 USB Dongle 支持BLE 5.0藍(lán)牙Sniffer抓包協(xié)議分析

image-20220629181513676

這款抓包器的底層使用的是 Nordic 的藍(lán)牙芯片 nRF52832,這款藍(lán)牙芯片可以支持到 BLE5.01Mbps 速率的報(bào)文,同時(shí)可向下兼容BLE4.2

帶外殼的成品長(zhǎng)這樣,價(jià)格稍貴一點(diǎn)點(diǎn):

image-20220630131314034

不帶外殼的成品長(zhǎng)這樣,經(jīng)濟(jì)一些(沒(méi)錯(cuò),我選的就是這個(gè)):

image-20220630131354417

當(dāng)然,如果你有二次開(kāi)發(fā)的能力,這個(gè)抓包器還預(yù)留了二次開(kāi)發(fā)接口,你可以編譯你自己的固件進(jìn)行燒錄使用:

image-20220630131153618

3 使用指南

要想成功使用上它,需要搭建一個(gè)環(huán)境,不過(guò)還是比較簡(jiǎn)單的,基本參考文檔就可以完成的。

3.1 下載相關(guān)資料

Wireshark下載地址: 點(diǎn)這里

Python環(huán)境下載地址: 點(diǎn)這里

taobao下單后直接聯(lián)系售后,他會(huì)發(fā)給你一堆資料,如下:

image-20220630132014661

3.2 配置安裝相關(guān)環(huán)境

image-20220630131724543

最重要的就是最后這個(gè)PDF指引文檔 《低功耗藍(lán)牙 5.0 Sniffer 抓包工具 RF-DG-32B User Guide 1263534592RF-DG-32B 使用說(shuō)明_201127.pdf》,參考它基本就可以完成整個(gè)環(huán)境的搭建安裝。

3.3 使用步驟

image-20220630132453385image-20220630132512015image-20220630132621191image-20220630132656854image-20220630132714081image-20220630132736095image-20220630132759740

3.4 動(dòng)手抓一抓現(xiàn)場(chǎng)報(bào)文

配合一些手機(jī)端的BLE調(diào)試APP,就可以抓到手機(jī)側(cè)與終端側(cè)交互的報(bào)文了,下面來(lái)一段實(shí)戰(zhàn)操作。

3.4.1 開(kāi)啟抓包監(jiān)聽(tīng)

按照上面的步驟,有過(guò)wireshark操作經(jīng)驗(yàn)的開(kāi)發(fā)者很快就可以上手,注意一定要把這個(gè)勾選上:

image-20220630134055548

然后在這里選上你要監(jiān)聽(tīng)(抓取)BLE終端的MAC地址:

image-20220630134156107

3.4.2 廣播包

如果BLE設(shè)備正常廣播中,那么在數(shù)據(jù)區(qū)就可以看到廣播包、廣播掃描請(qǐng)求包、廣播掃描回應(yīng)包都會(huì)被抓取到:

image-20220630134508066image-20220630134618939image-20220630134730630

3.4.3 交互數(shù)據(jù)包

一般BLE有五種數(shù)據(jù)交互方式,如下所示:

image-20220630140152707

下面以 notify 的交互報(bào)文做演示:

手機(jī)APP發(fā)往BLE終端

image-20220630140648041

BLE終端回復(fù)手機(jī)APP

image-20220630140817151

3.4.4 其他報(bào)文

還有一些其他類(lèi)型的BLE報(bào)文,這個(gè)需要對(duì)BLE協(xié)議有些了解才能明白:

image-20220630135353473image-20220630135241430image-20220630135224343image-20220630140541704image-20220630140931190

4 動(dòng)手改造

4.1 發(fā)現(xiàn)痛點(diǎn)

在上面的使用步驟中,大家也可以會(huì)發(fā)現(xiàn),在決定要抓取 哪個(gè) BLE終端的報(bào)文時(shí),需要在wireshark的插件中的 Device 下拉框中選中對(duì)應(yīng)設(shè)備的 MAC,而這恰恰就是最難的,也是最頭疼的,最最主要的原因是,它沒(méi)有輸入搜索篩選框,只能勾選,而且這些MAC地址還是沒(méi)有經(jīng)過(guò)排序的,來(lái),感受一下:

find-mac

怎么樣,眼睛花了嗎你的MAC地址,找到了嗎

如果沒(méi)有,那重新再找一遍吧!!!

每次使用這個(gè),我吐槽一次,太不任性化了,你搞個(gè) 輸入搜索框 會(huì)死啊???

4.2 改造優(yōu)化

說(shuō)到改造,我也想直接加個(gè) 輸入搜索框 完事,但我一個(gè)搞嵌入式的,搞不了這些上層UI啊,無(wú)奈,放棄了!

后來(lái),通過(guò)觀察和摸索,我發(fā)現(xiàn)整個(gè)wireshark的插件在執(zhí)行相關(guān)抓包操作的時(shí)候都是調(diào)用到Python方法,在安裝環(huán)境的時(shí)候我們有裝Python3,而且把相關(guān)的wireshark擴(kuò)展包放到了指定的擴(kuò)展包目錄,打開(kāi)一看,里面全是一些腳本和Python文件。

于是,我開(kāi)始想,既然這個(gè)插件找到這些 Device 列表都是通過(guò)Python接口返回的,那么我們可不可以,在返回這個(gè)Device列表的時(shí)候,加些規(guī)則限制,比如 只把我需要的MAC地址的設(shè)備呈現(xiàn)出來(lái)

于是開(kāi)始去分析它的擴(kuò)展包的工程代碼,如下所示:

image-20220630150526288

還真被我找到了一個(gè) 設(shè)備添加 相關(guān)的方法,如上圖所示。

里面的設(shè)備信息,跟我們?cè)谀莻€(gè)設(shè)備選擇框看到的信息基本一致:設(shè)備名 + 信號(hào)強(qiáng)度 + MAC地址 + public/random

image-20220630150708304

順著這條線(xiàn)索,我找到了它的代碼邏輯:

首先是 nrfsnifferble.py 初始化的時(shí)候進(jìn)行 DEVICEADDED 消息的訂閱,當(dāng)收到這個(gè)消息的時(shí)候,執(zhí)行 deviceadded 回調(diào);看處理,應(yīng)該是這個(gè) device_added就會(huì)把設(shè)備的相應(yīng)信息內(nèi)容更新到插件的選擇框里面。

image-20220630151603091

然后再跟蹤一下,發(fā)出 DEVICE_ADDED 這個(gè)消息是在 Device.py 里面

image-20220630151514449

所以接下來(lái)的改造思路就很清晰了,我只需要在append接口里面動(dòng)手腳攔截就好了。

根據(jù)上下文,可以知道device參數(shù)包含了設(shè)備的MAC地址信息,那么只需要把這個(gè)MAC地址信息轉(zhuǎn)換一下,然后跟我要監(jiān)聽(tīng)的設(shè)備的MAC地址進(jìn)行比較過(guò)濾,就能到到我的預(yù)想目的了。

就像這樣,新增一個(gè) check 函數(shù),不符合我要求的設(shè)備,我就直接返回退出:

  1. def append(self, device):
  2. address = device.address
  3. if not self.device_append_check(address):
  4. return
  5. self.devices.append(device)
  6. self.notify("DEVICE_ADDED", device)

為了保證我再抓取其他BLE設(shè)備的時(shí)候(別的MAC地址),不需要再次改python代碼,那么我需要其他的地方配置一下我需要監(jiān)聽(tīng)的MAC地址,于是我想到了在 桌面建立一個(gè)文本文件,然后把你要過(guò)濾的MAC地址填里面,腳本啟動(dòng)的時(shí)候把這個(gè)過(guò)濾的MAC地址讀上來(lái),存起來(lái),以備后續(xù)做過(guò)濾比較。

于是就有了這個(gè)一段代碼:

  1. def device_append_check(self, address):
  2. global desktop_ble_mac_file
  3. if not os.path.exists(desktop_ble_mac_file):
  4. return True
  5. str_device_address = self.string_address(address)
  6. str_device_address = str_device_address[0:17]
  7. with open(desktop_ble_mac_file, 'r') as f:
  8. mac=f.read().strip().lower()
  9. filter_device_address = mac[0:2] + ':' + mac[2:4] + ':' + mac[4:6] + ':'
  10. filter_device_address += mac[6:8] + ':' + mac[8:10] + ':' + mac[10:12]
  11. #logging.info(str_device_address)
  12. #logging.info(filter_device_address)
  13. if str_device_address == filter_device_address:
  14. logging.info('----append(follow) filter device address(MAC): ' + str_device_address)
  15. return True
  16. else:
  17. return False

MAC文件的內(nèi)容是:DC234E864004 字符串格式。

這么一頓操作之后,抓包插件一起來(lái)后,我們?nèi)ピO(shè)備篩選框里面,就只能看到我要的設(shè)備,再也不用增大個(gè)眼睛去一個(gè)個(gè)找了。

真是倍兒爽 ... ...

要想恢復(fù)原來(lái)那種 看到所有設(shè)備 的模式,也很簡(jiǎn)單,把桌面那個(gè)記錄過(guò)濾MAC地址的文件刪除即可,無(wú)縫銜接

還有個(gè)有趣的事是,在debug的過(guò)程中,把這些代碼的log機(jī)制也摸通了,下次有空都可以更精細(xì)地研究他們的實(shí)現(xiàn)代碼了,哈哈哈。

4.3 效果展示

最后,我們來(lái)體驗(yàn)一下改造后的效果,簡(jiǎn)直不要太清爽:

new-find-mac

媽媽再也不用擔(dān)心我的眼睛了 @_@

5 經(jīng)驗(yàn)總結(jié)

  • 藍(lán)牙抓包能了解一些通訊協(xié)議細(xì)節(jié)的地方,有助于排查一些報(bào)文通訊問(wèn)題;
  • 工欲善其事,必先利其器,發(fā)現(xiàn)工具的缺點(diǎn),自己動(dòng)手優(yōu)化改善,小有成就;
  • 該工具借助wireshark的插件完成對(duì)報(bào)文的解析,對(duì)開(kāi)發(fā)者還是很友好的,使用過(guò)wireshark的人基本就能夠無(wú)障礙使用它;
  • 改造工具的同時(shí),增強(qiáng)了自己摸索未知技術(shù)領(lǐng)域的能力和技巧,也順帶學(xué)習(xí)了一些基礎(chǔ)的python知識(shí);后面學(xué)以致用;
  • 科技(工具)的進(jìn)步,源于有人想要 偷懶
  • 抓包器購(gòu)買(mǎi)鏈接非廣告,感興趣的可以一看;
  • 改造后的完整python腳本,有興趣的可以聯(lián)系我獲取。

6 更多分享

架構(gòu)師李肯

架構(gòu)師李肯全網(wǎng)同名),一個(gè)專(zhuān)注于嵌入式IoT領(lǐng)域的架構(gòu)師。有著近10年的嵌入式一線(xiàn)開(kāi)發(fā)經(jīng)驗(yàn),深耕IoT領(lǐng)域多年,熟知IoT領(lǐng)域的業(yè)務(wù)發(fā)展,深度掌握IoT領(lǐng)域的相關(guān)技術(shù)棧,包括但不限于主流RTOS內(nèi)核的實(shí)現(xiàn)及其移植、硬件驅(qū)動(dòng)移植開(kāi)發(fā)、網(wǎng)絡(luò)通訊協(xié)議開(kāi)發(fā)、編譯構(gòu)建原理及其實(shí)現(xiàn)、底層匯編及編譯原理、編譯優(yōu)化及代碼重構(gòu)、主流IoT云平臺(tái)的對(duì)接、嵌入式IoT系統(tǒng)的架構(gòu)設(shè)計(jì)等等。擁有多項(xiàng)IoT領(lǐng)域的發(fā)明專(zhuān)利,熱衷于技術(shù)分享,有多年撰寫(xiě)技術(shù)博客的經(jīng)驗(yàn)積累,連續(xù)多月獲得RT-Thread官方技術(shù)社區(qū)原創(chuàng)技術(shù)博文優(yōu)秀獎(jiǎng),榮獲CSDN博客專(zhuān)家、CSDN物聯(lián)網(wǎng)領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、2021年度CSDN&RT-Thread技術(shù)社區(qū)之星、2022年RT-Thread全球技術(shù)大會(huì)講師、RT-Thread官方嵌入式開(kāi)源社區(qū)認(rèn)證專(zhuān)家、RT-Thread 2021年度論壇之星TOP4、華為云云享專(zhuān)家(嵌入式物聯(lián)網(wǎng)架構(gòu)設(shè)計(jì)師)等榮譽(yù)。堅(jiān)信【知識(shí)改變命運(yùn),技術(shù)改變世界】!


歡迎關(guān)注我的gitee倉(cāng)庫(kù)01workstation ,日常分享一些開(kāi)發(fā)筆記和項(xiàng)目實(shí)戰(zhàn),歡迎指正問(wèn)題。

同時(shí)也非常歡迎關(guān)注我的CSDN主頁(yè)和專(zhuān)欄:

【CSDN主頁(yè)-架構(gòu)師李肯】

【RT-Thread主頁(yè)-架構(gòu)師李肯】

【C/C++語(yǔ)言編程專(zhuān)欄】

【GCC專(zhuān)欄】

【信息安全專(zhuān)欄】

【RT-Thread開(kāi)發(fā)筆記】

freeRTOS開(kāi)發(fā)筆記】

有問(wèn)題的話(huà),可以跟我討論,知無(wú)不答,謝謝大家。

審核編輯:湯梓紅

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

    關(guān)注

    114

    文章

    5869

    瀏覽量

    171228
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    12

    文章

    670

    瀏覽量

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

    關(guān)注

    31

    文章

    1305

    瀏覽量

    40387
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RT-Thread學(xué)習(xí)筆記】使用scons命令生成靜態(tài)庫(kù)

    RT-Thread學(xué)習(xí)筆記】如何使用scons 命令中buildlib的生成靜態(tài)庫(kù)?
    的頭像 發(fā)表于 07-27 09:13 ?6195次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】使用scons命令生成靜態(tài)庫(kù)

    RT-Thread軟件定義和使用

    RT-Thread軟件是運(yùn)行于RT-Thread物聯(lián)網(wǎng)操作系統(tǒng)平臺(tái)上,面向不同應(yīng)用領(lǐng)域的通用軟件組件 。RT-Thread 同時(shí)提供了開(kāi)放的軟件
    的頭像 發(fā)表于 05-21 11:29 ?1.1w次閱讀
    <b class='flag-5'>RT-Thread</b>軟件<b class='flag-5'>包</b>定義和使用

    RT-Thread Nano入門(mén)學(xué)習(xí)筆記

    RT-Thread Nano入門(mén)學(xué)習(xí)筆記
    發(fā)表于 11-26 12:36 ?20次下載
    <b class='flag-5'>RT-Thread</b> Nano入門(mén)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    STM32WB55在RT-Thread系統(tǒng)上移植官方藍(lán)牙BLE功能

    STM32WB55在RT-Thread系統(tǒng)上移植官方藍(lán)牙BLE功能硬件環(huán)境:(1)開(kāi)發(fā)板:ST官方的stm32wb55-st-nucleo開(kāi)發(fā)板軟件環(huán)境:(1)開(kāi)發(fā)環(huán)境:RT-Thread
    發(fā)表于 12-04 12:51 ?17次下載
    STM32WB55在<b class='flag-5'>RT-Thread</b>系統(tǒng)上移植官方<b class='flag-5'>藍(lán)牙</b><b class='flag-5'>BLE</b>功能

    RT-Thread 應(yīng)用筆記 - RTC Alarm 組件的使用

    RT-Thread 應(yīng)用筆記 - 不正確使用LOG也會(huì)引發(fā)hard faultRT-Thread 應(yīng)用筆記 - RTC Alarm 組件的使用RT-
    發(fā)表于 01-25 18:18 ?10次下載
    <b class='flag-5'>RT-Thread</b> 應(yīng)用<b class='flag-5'>筆記</b> - RTC Alarm 組件的使用

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 理解defunct僵尸線(xiàn)程

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 理解defunct僵尸線(xiàn)程

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 設(shè)備模型rt_device的理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 設(shè)備模型<b class='flag-5'>rt</b>_device的理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象鏈表結(jié)構(gòu)深入理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:23 ?6次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對(duì)象鏈表結(jié)構(gòu)深入理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象初始化鏈表組織方式

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:24 ?3次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對(duì)象初始化鏈表組織方式

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象操作API

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對(duì)象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:26 ?7次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對(duì)象操作API

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡(jiǎn)介 作為一名 RTOS 的初學(xué)者,也許你對(duì) RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會(huì)逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類(lèi)型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?4611次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread學(xué)習(xí)筆記】Makefile的FORCE

    RT-Thread學(xué)習(xí)筆記】十分鐘學(xué)會(huì)Makefile的FORCE
    的頭像 發(fā)表于 07-30 13:55 ?2685次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】Makefile的FORCE

    RT-Thread學(xué)習(xí)筆記】如何抓取終端的網(wǎng)絡(luò)報(bào)文

    RT-Thread學(xué)習(xí)筆記】如何抓取終端的網(wǎng)絡(luò)報(bào)文?
    的頭像 發(fā)表于 07-30 13:57 ?2921次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】如何抓取終端的網(wǎng)絡(luò)報(bào)文

    RT-Thread學(xué)習(xí)筆記】用memwatch排除內(nèi)存泄露

    RT-Thread學(xué)習(xí)筆記】使用memwatch排除內(nèi)存泄露
    的頭像 發(fā)表于 07-30 14:01 ?2414次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】用memwatch排除內(nèi)存泄露

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個(gè)賬號(hào)登陸,開(kāi)啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?4138次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio<b class='flag-5'>學(xué)習(xí)</b>
    24山是那二十四山| 元游棋牌游戏大厅下载| 可以玩百家乐官网的博彩网站 | 汽车| 澳门百家乐娱乐城怎么样| 在线百家乐官网娱乐| 百家乐赌的是心态吗| 百家乐官网技巧之微笑心法| rmb百家乐的玩法技巧和规则| 百家乐官网记牌器| 百家乐骗局视频| 百家乐官网押注最多是多少| 大发888娱乐登录| 利来百家乐官网的玩法技巧和规则 | 免费下百家乐官网赌博软件| 大发888娱乐场优惠| 赌场百家乐官网的玩法技巧和规则| 九游棋牌大厅| 百家乐游戏机博彩正网| 百家乐官网使用技法| 百家乐7人桌布| 旧金山百家乐官网的玩法技巧和规则| 顶旺亚洲| 百家乐怎么才能| 百家乐官网园36bol在线| 皇冠网上开户| 百家乐自动投注| 玩百家乐官网犯法| 博彩通评价| 中国百家乐技巧| 澳门百家乐官网娱乐场开户注册 | 网上百家乐骗人的| 百家乐官网视频游戏会员| 太阳城论坛| 百家乐群东方鸿运| 澳门百家乐官网网站bt| 金沙网上娱乐城| 网上百家乐打牌| 威斯汀百家乐官网的玩法技巧和规则 | 百家乐有没有攻略| 职业赌百家乐官网技巧|