rtthread_uart
rtthread平臺下通用uart接口實現(xiàn)。
Ubuntu平臺下利用qemu實現(xiàn)藍牙功能
搭建 RT-Thread QEMU 環(huán)境
目前我們使用qemu-vexpress-a9的bsp環(huán)境。
配置 zephyr_polling 軟件包
1、在 qemu-vexpress-a9 BSP 根目錄輸入:
scons --menuconfig
2、進入 RT-Thread online packages → IoT - internet of things 目錄即可看到 zephyr_polling軟件包,勾選軟件包。
3、配置 zephyr_polling項目的參數(shù),如下述配置chipset選common,example選beacon,platform選rtthread_uart。
4、選擇HCI接口參數(shù)
這里 The uart for HCI Transport 默認輸入 “uart1” 就好
保存后退出。
下載軟件包
使用 scons —menuconfig 命令后會安裝及初始化 Env 工具,并在 home 目錄下面生成 “.env” 文件夾,此文件夾為隱藏文件夾,切換到 home 目錄,使用 ls 命令可查看所有目錄和文件。
$ ls ~/.env
env.sh local_pkgs packages tools
運行 env.sh 會配置好環(huán)境變量,讓我們可以使用 pkgs 命令來更新軟件包,執(zhí)行
$ source ~/.env/env.sh
使用 pkgs —update 命令下載 NimBLE 軟件包到 BSP 目錄下的 packages 文件夾里。
$ pkgs --update
btproxy方式
如果你手頭有一個USB藍牙dongle。只要Ubuntu能識別的都可以使用。
環(huán)境介紹
本次搭建環(huán)境所使用的資源和版本為:
Ubuntu 18.04
Bluez - v5.55
ell - v0.35
qemu - v2.11.1
RT-Thread - v5.0.0
一個藍牙適配器
環(huán)境搭建
環(huán)境搭建主要分為兩部分,
bluez 的編譯
Ubuntu里 RT-Thread QEMU 環(huán)境的搭建
首先需要更新源:
sudo apt update
sudo apt upgrade
安裝所需要的依賴:
sudo apt install git automake libtool libelf-dev elfutils libdw-dev libjson-c-dev libical-dev libreadline-dev libglib2.0-dev libdbus-1-dev libudev-dev libncurses5-dev python3 python3-pip qemu
bluez 編譯安裝
bluez 里有許多實用的工具,例如 btproxy,但是 Ubuntu 自帶的 bluez 并未將這些工具都編譯出來,因此需要我們重新編譯 bluez。
在相同目錄下克隆獲取 0.35 版本的 ell,5.55 版本的 bluez 。
最終 ell 和 bluez 應(yīng)該在同一個目錄級別下,目錄結(jié)構(gòu)為:
.
|--- ell
| |--- ell
| |--- unit
|--- bluez
| |--- src
| |--- tools
然后輸入下述命令編譯 bluez:
cd bluez
./bootstrap-configure --disable-android --disable-midi --disable-mesh
make
注意,這個時候會報錯,但是不用管,tools目錄下已經(jīng)有所需的btproxy。
QEMU 運行 BLE
qemu 運行 BLE 時,本質(zhì)上還是在和物理機的藍牙設(shè)備通信,下面介紹如何在 qemu 環(huán)境中使用藍牙設(shè)備。
首先輸入 hciconfig 查看本機的藍牙設(shè)備,
我這里是 hci0 藍牙設(shè)備,需要保證上述紅框框住的部分為 DOWN,也就是該藍牙設(shè)備未打開,否則需要輸入下述命令關(guān)閉該藍牙設(shè)備:
sudo hciconfig hci0 down
然后進入 bluez 的 tools 目錄,輸入命令為該藍牙設(shè)備創(chuàng)建一個代理(proxy)。
sudo ./btproxy -u -i 0
其中 -u 代表使用 Unix Server,默認路徑為 /tmp/bt-server-bredr,-i 0 指使用 hci0 藍牙設(shè)備,如果是 hci1 藍牙設(shè)備,則需更改為 -i 1 。運行成功后會有下述顯示:
然后在 RT-Thread 的 bsp/qemu-vexpress-a9 目錄下編譯運行:
scons
qemu-system-arm -M vexpress-a9 -kernel rtthread.bin -nographic -serial mon:stdio -serial unix:/tmp/bt-server-bredr
即可成功在 qemu 環(huán)境里與藍牙卡片交互,下面稍微介紹下原理和注意事項。
qemu 命令參數(shù)里與串口相關(guān)的有 -serial mon:stdio -serial unix:/tmp/bt-server-bredr,-serial 參數(shù)的介紹為:
-serial dev redirect the serial port to char device ‘dev’
這個參數(shù)將 qemu 程序的串口重定向到物理機的設(shè)備文件,
第一個 -serial mon:stdio 將 qemu 里的 uart0 重定向到了物理機的 stdio 設(shè)備文件,而且在 qemu 程序里 uart0 用作 msh 命令行工具,類似 stdio,因此我們可以在物理機上看到 qemu 程序的打印數(shù)據(jù),也可以輸入命令。
第二個 -serial unix:/tmp/bt-server-bredr 是將 qemu 里的 uart1 重定向到物理機的 /tmp/bt-server-bredr 文件,而這個文件又是 hci0 設(shè)備的代理,因此從 qemu 程序的角度來看,就是使用 H4 協(xié)議,通過 uart1 去訪問藍牙設(shè)備。uart1 的波特率使用 115200 即可(未找到說明,但一般都是這樣使用)。
注意:上述兩個 -serial 的順序不能顛倒,否則 qemu 程序無法正常運行。
若成功運行,則在 btproxy 界面會有如下顯示:
若藍牙設(shè)備未關(guān)閉,則會顯示設(shè)備或資源忙:
建議每次運行前都關(guān)閉一次藍牙設(shè)備:sudo hciconfig hci0 down 。
測試運行
而后輸入zephyr_polling_init既可以運行demo工程了??梢钥吹剿{牙地址是11:22:33:44:55:66。
用nordic的app搜索,就可以看到發(fā)送的beacon數(shù)據(jù)包了。
串口方式
如果你手頭就是一個uart設(shè)備,系統(tǒng)中還沒驅(qū)動的情況下。
環(huán)境介紹
本次搭建環(huán)境所使用的資源和版本為:
Ubuntu 18.04
qemu - v2.11.1
RT-Thread - v5.0.0
一個藍牙UART模組
環(huán)境搭建
連接藍牙 Control 芯片(使用 pts_dongle 進行演示,將其直接連接電腦)。
需要注意,下面的/dev/ttyACM0需要根據(jù)具體情況調(diào)整,看你實際的串口是哪個。Linux串口是默認普通用戶沒有讀寫權(quán)限的,每次開機后對串口讀寫都要附加權(quán)限。
sudo chmod 666 /dev/ttyACM0
qemu-system-arm -M vexpress-a9 -smp cpus=2 -kernel rtthread.bin -nographic -sd sd.bin -serial mon:stdio -serial /dev/ttyACM0
測試運行
而后輸入zephyr_polling_init既可以運行demo工程了。可以看到藍牙地址是c007e8e12d:e8。
用nordic的app搜索,就可以看到發(fā)送的beacon數(shù)據(jù)包了。
-
UART接口
+關(guān)注
關(guān)注
0文章
124瀏覽量
16216 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1498瀏覽量
43552 -
BLE技術(shù)
+關(guān)注
關(guān)注
0文章
34瀏覽量
6866 -
Ubuntu系統(tǒng)
+關(guān)注
關(guān)注
0文章
92瀏覽量
4471 -
IoT芯片
+關(guān)注
關(guān)注
0文章
23瀏覽量
6696
發(fā)布評論請先 登錄
RTT_Zephyr_Polling BlueNRG2 SPI使用說明

RTT平臺zephyr_polling軟件包SPI Bluenrg2芯片宕機問題與修復(fù)

RTT zephyr_polling軟件包 Bluenrg2藍牙芯片啟動流程

如何在Ubuntu平臺使用QEMU運行RT-Threadqemu-vexpress-a9BSP工程?
手把手教你在Ubuntu系統(tǒng)中通過QEMU來運行基于Arm CPU的Linux系統(tǒng)
如何在RT-Thread的qemu環(huán)境里接入Bluetooth Controller
在Ubuntu平臺開發(fā)RT-Thread文檔中步驟搭建QEMU環(huán)境
如何在Window及Ubuntu平臺使用QEMU運行 RT-Thread qemu-vexpress-a9 BSP工程
Ubuntu下使用配置qemu環(huán)境為什么不能更新軟件包呢?
如何使用RT685的DSP搭配Zephyr OS?
如果在Zephyr內(nèi)如何使用ESP32藍牙
QEMU模擬不同的硬件單板使用教程
RT-Thread平臺 zephyr_polling軟件包 Bluenrg2 藍牙芯片啟動流程

評論