準(zhǔn)備 RT-Thread Smart 開發(fā)環(huán)境
主要按照 ART-Pi-Smart 官方用戶手冊進(jìn)行開發(fā)環(huán)境的搭建:
1、通過ART-Pi-Smart SDK 倉庫 (Gitee)下載最新的 ART-Pi Smart SDK 軟件包。
2、通過用戶手冊中相關(guān)章節(jié)下載一下 Windows 版本的 arm-linux-musleabi 工具鏈,將解壓出來的 arm-linux-musleabi_for_i686-w64-mingw32 文件夾整個(gè)拷貝到 ./tools/gnu_gcc/ 下面,如圖:
3、裝一下 env 開發(fā)工具,這個(gè)不多說。
4、加載工具鏈,在 ART-Pi-Smart SDK 根目錄下打開 env 工具,依次運(yùn)行命令:
smart-env.bat - 設(shè)置當(dāng)前環(huán)境變量
set RTT - 查看環(huán)境變量信息,檢查交叉編譯器路徑是否成功添加
arm-linux-musleabi-gcc -v - 檢查交叉編譯器是否生效
結(jié)果應(yīng)該顯示如下:
注意:每一次重新打開 env 工具都需要通過運(yùn)行 ART-Pi-Smart SDK 根目錄下的 smart-env.bat 來設(shè)置當(dāng)前環(huán)境變量,添加交叉編譯器路徑,否則編譯會(huì)出錯(cuò)。
5、依據(jù) USB方式啟動(dòng) rt-smart 內(nèi)核 章節(jié),下載 100ask_imx6ull 燒寫工具(由百問網(wǎng)提供)。
配置相關(guān)串口
需要使用串口來連接外部的藍(lán)牙 Controller 芯片,這里我們使用 “uart3”
1、在設(shè)置好環(huán)境的 env 工具下進(jìn)入 kernelspimx6ull-artpi-smart 路徑,這個(gè)路徑下工程就是為 ART-Pi-Smart 做的 bsp 工程,也是 ART-Pi-Smart 上的rt-smart 內(nèi)核工程。
2、運(yùn)行 menuconfig 命令后,選擇進(jìn)入 Platform Driver Configuration → Select UART Driver 目錄下進(jìn)行 UART 設(shè)備的使能,這里使能 uart3 。
保存退出,接著下面章節(jié)配置 NimBLE。
在內(nèi)核 bsp 下配置使用 NimBLE
env 工具還是進(jìn)入 kernelspimx6ull-artpi-smart 路徑。
1、運(yùn)行 menuconfig 命令后,進(jìn)入 RT-Thread online packages → IoT - internet of things 目錄即可看到 NimBLE 軟件包,勾選軟件包
2、將 NimBLE 下 Controller Configuration 里的配置關(guān)閉
在 RT-Thread Smart 上 NimBLE 不需要運(yùn)行 Controller ,使用 藍(lán)牙 Controller 芯片代替。
3、HCI Transport support 下配置 HCI uart 設(shè)備為 “uart2”(這里使用設(shè)備 uart2 正是對應(yīng)之前 使能的 uart3,這里序號有出入和實(shí)際系統(tǒng)的設(shè)備管理有關(guān),實(shí)際板上外設(shè)接口是 uart3 但是系統(tǒng)內(nèi)核映射為 uart2 設(shè)備了)。
4、Bluetooth Samples 選擇 “BLE peripheral heartrate sensor” ;Version 選擇 “l(fā)atest”。最后如下圖所示:
目前支持以下幾個(gè)例程:
BLE peripheral heartrate sensor
BLE peripheral cycling speed and cadence sensor
BLE central role sample
BLE peripheral role sample
BLE beacon sample
BLE advertiser sample
配置完成后保存。
編譯 & 連接外部藍(lán)牙芯片
1、在前面的 menuconfig 配置完成后,使用 pkgs --update 命令更新 NimBLE 軟件包
1$pkgs--update
2、運(yùn)行 scons -c 清除之前的構(gòu)建后,運(yùn)行 scons 命令進(jìn)行內(nèi)核代碼的編譯。
3、編譯成功后, kernelspimx6ull-artpi-smart 路徑下會(huì)生成 rtthread.imx 文件。
4、把外部的藍(lán)牙 Control 芯片連接好,注意 UART 的引腳,這里使用 nrf52840dk 連接 ART-Pi-Smart 的 UART3。務(wù)必在后面內(nèi)核燒寫的步驟前連接好 Control 芯片。關(guān)于藍(lán)牙控制器選擇可以參考 藍(lán)牙控制器固件 (或 NimBLE 軟件包目錄下 /docs/firmwares/README.md)。
燒寫內(nèi)核 & 運(yùn)行 NimBLE
windows 下燒寫內(nèi)核的過程,按照文檔的相關(guān)章節(jié)(USB方式啟動(dòng) rt-smart 內(nèi)核);連好兩根線后,應(yīng)該可以用終端軟件打開其中一根串口線。
1、配置 ART-Pi Smart 開發(fā)板進(jìn)入到 USB 固件下載模式
操作方法:開發(fā)板上電之后,先按下 “BOOT 啟動(dòng)按鍵” 不松開,然后,再按下 “RST 復(fù)位鍵”,即可切換到 USB 固件下載模式
2、打開之前下載好的燒錄工具 100ask_imx6ull_flashing_tool.exe,顯示設(shè)備已連接即可。(顯示未連接則重復(fù) 1 中的操作)
3、選擇“專業(yè)版”,點(diǎn)擊第一排“固件/裸機(jī)”按鈕,選擇剛剛編譯出來的 rtthread.imx 文件(這里要注意絕對路徑里面不要包含中文和空格)。然后點(diǎn)擊 “運(yùn)行” 按鈕即可,等待內(nèi)核下載完畢。如下圖顯示:
4、內(nèi)核燒寫完成后,不要按復(fù)位按鈕,這時(shí)候觀察終端,可以發(fā)現(xiàn)系統(tǒng)內(nèi)核已經(jīng)跑起來了(如下圖)。
注意:如果按了復(fù)位按鈕,bootloader 則會(huì)默認(rèn)加載固化在 emmc 中的出廠內(nèi)核鏡像,就不是我們自己編譯的了
5、在系統(tǒng)命令行 輸入 ble_hr 命令,即可運(yùn)行剛剛配置編譯進(jìn)內(nèi)核的 NimBLE 軟件包例程。
6、 使用 nRF Connect 手機(jī) APP 即可成功觀察到藍(lán)牙設(shè)備,名稱為 blehr_sensor :
點(diǎn)擊連接后,在 CLIENT 下即可看到 Heart Rate 相關(guān)數(shù)據(jù)。
需要注意的地方
1、之前系統(tǒng)中 uart 設(shè)備編號與芯片 uart 接口編號不一致的問題:
menuconfig 中的 uart 配置和實(shí)際系統(tǒng)中 uart 對象名是不匹配的。實(shí)際使用時(shí),系統(tǒng)中的 uart 序號應(yīng)該減一。即 menuconfig 中的 uart1 對應(yīng) 實(shí)際系統(tǒng)中的 uart0, menuconfig 中的 uart2 對應(yīng) 實(shí)際系統(tǒng)中的 uart1。
2、一定要在 USB 燒寫內(nèi)核步驟之前連接好外部的藍(lán)牙 Controller 芯片,否則燒寫完成后自動(dòng)加載內(nèi)核會(huì)出現(xiàn)斷言錯(cuò)誤,因?yàn)閷?yīng)串口沒接好。這時(shí)如果使用復(fù)位按鈕來重新加載內(nèi)核,又會(huì)自動(dòng)加載 emmc 中固化的出廠內(nèi)核,就不是我們包含 NimBLE 的內(nèi)核了。
3、針對 USB 燒寫內(nèi)核只能加載一次的問題,應(yīng)該可以使用之前的燒寫工具,將重新編譯的內(nèi)核固化到 emmc 中,這樣就不用每次都重新燒寫了。
審核編輯:劉清
-
藍(lán)牙協(xié)議棧
+關(guān)注
關(guān)注
0文章
7瀏覽量
7192 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1261瀏覽量
39839 -
gcc編譯器
+關(guān)注
關(guān)注
0文章
78瀏覽量
3346
原文標(biāo)題:如何在 RT-Thread Smart 下使用 NimBLE 藍(lán)牙協(xié)議棧
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論