<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

如何用Ubuntu qemu跑zephyr_polling的藍牙?

冬至子 ? 來源:wenbo13579 ? 作者:wenbo13579 ? 2023-09-28 11:24 ? 次閱讀

rtthread_uart
rtthread平臺下通用uart接口實現。

Ubuntu平臺下利用qemu實現藍牙功能
搭建 RT-Thread QEMU 環境

目前我們使用qemu-vexpress-a9的bsp環境。

配置 zephyr_polling 軟件包

1、在 qemu-vexpress-a9 BSP 根目錄輸入:

scons --menuconfig

2、進入 RT-Thread online packages → IoT - internet of things 目錄即可看到 zephyr_polling軟件包,勾選軟件包。

1.jpg

3、配置 zephyr_polling項目的參數,如下述配置chipset選common,example選beacon,platform選rtthread_uart。

1.jpg

4、選擇HCI接口參數

這里 The uart for HCI Transport 默認輸入 “uart1” 就好

1.jpg

保存后退出。

下載軟件包
使用 scons —menuconfig 命令后會安裝及初始化 Env 工具,并在 home 目錄下面生成 “.env” 文件夾,此文件夾為隱藏文件夾,切換到 home 目錄,使用 ls 命令可查看所有目錄和文件。

$ ls ~/.env
env.sh local_pkgs packages tools
運行 env.sh 會配置好環境變量,讓我們可以使用 pkgs 命令來更新軟件包,執行

$ source ~/.env/env.sh
使用 pkgs —update 命令下載 NimBLE 軟件包到 BSP 目錄下的 packages 文件夾里。

$ pkgs --update
btproxy方式

如果你手頭有一個USB藍牙dongle。只要Ubuntu能識別的都可以使用。

環境介紹
本次搭建環境所使用的資源和版本為:

Ubuntu 18.04
Bluez - v5.55
ell - v0.35
qemu - v2.11.1
RT-Thread - v5.0.0
一個藍牙適配器
環境搭建
環境搭建主要分為兩部分,

bluez 的編譯
Ubuntu里 RT-Thread QEMU 環境的搭建
首先需要更新源:

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 應該在同一個目錄級別下,目錄結構為:

.
|--- ell
| |--- ell
| |--- unit
|--- bluez
| |--- src
| |--- tools
然后輸入下述命令編譯 bluez:

cd bluez
./bootstrap-configure --disable-android --disable-midi --disable-mesh
make
注意,這個時候會報錯,但是不用管,tools目錄下已經有所需的btproxy。

1.jpg

1.jpg

QEMU 運行 BLE
qemu 運行 BLE 時,本質上還是在和物理機的藍牙設備通信,下面介紹如何在 qemu 環境中使用藍牙設備。

首先輸入 hciconfig 查看本機的藍牙設備,

1.jpg

我這里是 hci0 藍牙設備,需要保證上述紅框框住的部分為 DOWN,也就是該藍牙設備未打開,否則需要輸入下述命令關閉該藍牙設備:

sudo hciconfig hci0 down
然后進入 bluez 的 tools 目錄,輸入命令為該藍牙設備創建一個代理(proxy)。

sudo ./btproxy -u -i 0
其中 -u 代表使用 Unix Server,默認路徑為 /tmp/bt-server-bredr,-i 0 指使用 hci0 藍牙設備,如果是 hci1 藍牙設備,則需更改為 -i 1 。運行成功后會有下述顯示:

1.jpg

然后在 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 環境里與藍牙卡片交互,下面稍微介紹下原理和注意事項。

qemu 命令參數里與串口相關的有 -serial mon:stdio -serial unix:/tmp/bt-server-bredr,-serial 參數的介紹為:

-serial dev redirect the serial port to char device ‘dev’

這個參數將 qemu 程序的串口重定向到物理機的設備文件,

第一個 -serial mon:stdio 將 qemu 里的 uart0 重定向到了物理機的 stdio 設備文件,而且在 qemu 程序里 uart0 用作 msh 命令行工具,類似 stdio,因此我們可以在物理機上看到 qemu 程序的打印數據,也可以輸入命令。

第二個 -serial unix:/tmp/bt-server-bredr 是將 qemu 里的 uart1 重定向到物理機的 /tmp/bt-server-bredr 文件,而這個文件又是 hci0 設備的代理,因此從 qemu 程序的角度來看,就是使用 H4 協議,通過 uart1 去訪問藍牙設備。uart1 的波特率使用 115200 即可(未找到說明,但一般都是這樣使用)。

注意:上述兩個 -serial 的順序不能顛倒,否則 qemu 程序無法正常運行。

若成功運行,則在 btproxy 界面會有如下顯示:

1.jpg

若藍牙設備未關閉,則會顯示設備或資源忙:

1.jpg

建議每次運行前都關閉一次藍牙設備:sudo hciconfig hci0 down 。

測試運行

而后輸入zephyr_polling_init既可以運行demo工程了??梢钥吹剿{牙地址是11:22:33:44:55:66。

1.jpg

用nordic的app搜索,就可以看到發送的beacon數據包了。

1.jpg

2.jpg

3.jpg

串口方式

如果你手頭就是一個uart設備,系統中還沒驅動的情況下。

環境介紹
本次搭建環境所使用的資源和版本為:

Ubuntu 18.04
qemu - v2.11.1
RT-Thread - v5.0.0
一個藍牙UART模組

環境搭建
連接藍牙 Control 芯片(使用 pts_dongle 進行演示,將其直接連接電腦)。

需要注意,下面的/dev/ttyACM0需要根據具體情況調整,看你實際的串口是哪個。Linux串口是默認普通用戶沒有讀寫權限的,每次開機后對串口讀寫都要附加權限。

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。

1.jpg

用nordic的app搜索,就可以看到發送的beacon數據包了。

1.jpg

2.jpg

3.jpg

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

    關注

    0

    文章

    123

    瀏覽量

    15066
  • RT-Thread
    +關注

    關注

    31

    文章

    1148

    瀏覽量

    38868
  • BLE技術
    +關注

    關注

    0

    文章

    24

    瀏覽量

    5795
  • Ubuntu系統
    +關注

    關注

    0

    文章

    84

    瀏覽量

    3785
  • IoT芯片
    +關注

    關注

    0

    文章

    22

    瀏覽量

    6262
收藏 人收藏

    評論

    相關推薦

    RTT_Zephyr_Polling BlueNRG2 SPI使用說明

    在RT-Thread平臺下,利用 BlueNRG2 藍牙芯片運行 RTT_Zephyr_Polling 協議棧。使用 SPI 作為 HCI 傳輸方式。
    的頭像 發表于 09-21 14:54 ?724次閱讀
    RTT_<b class='flag-5'>Zephyr_Polling</b> BlueNRG2 SPI使用說明

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

    項目的代碼測試完成之后,準備收尾時,出現了問題。清除掉開發過程中用來調試的print打印之后,zephyr_polling 的 HCI 突然不能正常工作了,之前測試可用的 zephyr_polling 中的各個例程都不再能運行。
    的頭像 發表于 09-25 17:08 ?782次閱讀
    RTT平臺<b class='flag-5'>zephyr_polling</b>軟件包SPI Bluenrg2芯片宕機問題與修復

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

    在用標準的 HCI 指令控制設備進行藍牙操作之前,需要提前通過 VS Command 對設備進行配置,只有正確配置好的設備才能正常使用。
    的頭像 發表于 09-27 11:19 ?754次閱讀
    RTT <b class='flag-5'>zephyr_polling</b>軟件包 Bluenrg2<b class='flag-5'>藍牙</b>芯片啟動流程

    如何在Ubuntu平臺使用QEMU運行RT-Threadqemu-vexpress-a9BSP工程?

    本文描述了如何在 Ubuntu 平臺使用 QEMU 運行 RT-Thread qemu-vexpress-a9 BSP 工程。
    發表于 03-30 07:40

    手把手教你在Ubuntu系統中通過QEMU來運行基于Arm CPU的Linux系統

    怎樣去安裝QEMU?如何去編譯U-Boot?怎樣在Ubuntu系統中通過QEMU來運行基于Arm CPU的Linux系統?
    發表于 08-19 06:57

    何用Qemu去模擬ARM平臺呢

    qemu-arm和qemu-system-arm的區別在哪?如何用Qemu去模擬ARM平臺呢?
    發表于 10-22 06:37

    如何在RT-Thread的qemu環境里接入Bluetooth Controller

    最近在基于 RT-Thread 環境開發 BLE,覺得每次都需要燒錄代碼到開發板太麻煩了,想利用 RT-Thread 的 qemu 環境開發 BLE 應用,于是我想起了之前使用 Zephyr 時,它
    發表于 06-22 11:48

    Ubuntu平臺開發RT-Thread文檔中步驟搭建QEMU環境

    NimBLE 可在 QEMU 環境下搭配藍牙 Control 芯片運行,目前在 Ubuntu 18.04 下運行成功。QEMU 環境搭建主要參考 在
    發表于 07-27 11:19

    如何在Window及Ubuntu平臺使用QEMU運行 RT-Thread qemu-vexpress-a9 BSP工程

    摘要本應用筆記描述了如何在 Window 及 Ubuntu 平臺使用 QEMU 運行 RT-Thread qemu-vexpress-a9 BSP 工程。本文的目的和結構本文的目的和背景嵌入式
    發表于 10-26 15:19

    Ubuntu下使用配置qemu環境為什么不能更新軟件包呢?

    Ubuntu下使用配置qemu環境不能更新軟件包,顯示Permission denied: 'packages'是怎么回事
    發表于 02-15 10:48

    如何使用RT685的DSP搭配Zephyr OS?

    “evkmimxrt685_dsp_mu_polling”完成了此操作,它運行良好。 現在我想對 Zephyr OS 做同樣的事情。我用這個平臺制作了幾個應用程序,這適用于 ARM 部分。 我沒有
    發表于 05-18 08:04

    如果在Zephyr內如何使用ESP32藍牙

    Zephyr ESP32 藍牙驅動簡析一文中簡要分析了esp32 藍牙如何集成進Zephyr,本文接著說明如果在Zephyr內使用ESP3
    的頭像 發表于 06-07 16:42 ?3180次閱讀

    QEMU模擬不同的硬件單板使用教程

    簡介 QEMU可以模擬內核運行在不同的單板,解除對物理開發板的依賴。 QEMU安裝 1.安裝依賴(Ubuntu 18+) sudo apt install build-essential
    發表于 04-13 11:22 ?6次下載

    何用ART-PI跑zephyr_polling藍牙?

    rtthread在ArtPi硬件平臺下和AP6212藍牙實現。
    的頭像 發表于 06-07 15:47 ?574次閱讀
    如<b class='flag-5'>何用</b>ART-PI跑<b class='flag-5'>zephyr_polling</b>的<b class='flag-5'>藍牙</b>?

    RT-Thread平臺 zephyr_polling軟件包 Bluenrg2 藍牙芯片啟動流程

    RTT zephyr_polling軟件包 Bluenrg2 藍牙芯片啟動流程 “開源之夏”“藍牙HOST協議棧zephyr_polling完善” 項目個人記錄 菜雞參與項目的個人記錄
    的頭像 發表于 09-27 18:40 ?412次閱讀
    RT-Thread平臺 <b class='flag-5'>zephyr_polling</b>軟件包 Bluenrg2 <b class='flag-5'>藍牙</b>芯片啟動流程
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>