0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍NimBLE软件包在RT-Thread Smart下的使用

RTThread物联网操作系统 来源:RTThread物联网操作系统 作者:RT-Thread 2022-10-28 09:37 次阅读

准备 RT-Thread Smart 开发环境

主要按照 ART-Pi-Smart 官方用户手册进行开发环境的搭建:

1、通过ART-Pi-Smart SDK 仓库 (Gitee)下载最新的 ART-Pi Smart SDK 软件包。

2、通过用户手册中相关章节下载一下 Windows 版本的 arm-linux-musleabi 工具链,将解压出来的 arm-linux-musleabi_for_i686-w64-mingw32 文件夹整个拷贝到 ./tools/gnu_gcc/ 下面,如图:

3ac192ba-5608-11ed-a3b6-dac502259ad0.png

3、装一下 env 开发工具,这个不多说。

4、加载工具链,在 ART-Pi-Smart SDK 根目录下打开 env 工具,依次运行命令:

smart-env.bat - 设置当前环境变量

set RTT - 查看环境变量信息,检查交叉编译器路径是否成功添加

arm-linux-musleabi-gcc -v - 检查交叉编译器是否生效

结果应该显示如下:

3afc141c-5608-11ed-a3b6-dac502259ad0.png

注意:每一次重新打开 env 工具都需要通过运行 ART-Pi-Smart SDK 根目录下的 smart-env.bat 来设置当前环境变量,添加交叉编译器路径,否则编译会出错。

5、依据 USB方式启动 rt-smart 内核 章节,下载 100ask_imx6ull 烧写工具(由百问网提供)。

配置相关串口

需要使用串口来连接外部的蓝牙 Controller 芯片,这里我们使用 “uart3”

1、在设置好环境的 env 工具下进入 kernelspimx6ull-artpi-smart 路径,这个路径下工程就是为 ART-Pi-Smart 做的 bsp 工程,也是 ART-Pi-Smart 上的rt-smart 内核工程。

2、运行 menuconfig 命令后,选择进入 Platform Driver Configuration → Select UART Driver 目录下进行 UART 设备的使能,这里使能 uart3 。

3b9df098-5608-11ed-a3b6-dac502259ad0.png

保存退出,接着下面章节配置 NimBLE。

在内核 bsp 下配置使用 NimBLE

env 工具还是进入 kernelspimx6ull-artpi-smart 路径。

1、运行 menuconfig 命令后,进入 RT-Thread online packages → IoT - internet of things 目录即可看到 NimBLE 软件包,勾选软件包

3baf19e0-5608-11ed-a3b6-dac502259ad0.png

2、将 NimBLE 下 Controller Configuration 里的配置关闭

3bd86e62-5608-11ed-a3b6-dac502259ad0.png

在 RT-Thread Smart 上 NimBLE 不需要运行 Controller ,使用 蓝牙 Controller 芯片代替。

3、HCI Transport support 下配置 HCI uart 设备为 “uart2”(这里使用设备 uart2 正是对应之前 使能的 uart3,这里序号有出入和实际系统的设备管理有关,实际板上外设接口是 uart3 但是系统内核映射为 uart2 设备了)。

3ccf80da-5608-11ed-a3b6-dac502259ad0.png

4、Bluetooth Samples 选择 “BLE peripheral heartrate sensor” ;Version 选择 “latest”。最后如下图所示:

3d4b43c8-5608-11ed-a3b6-dac502259ad0.png

目前支持以下几个例程:

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

配置完成后保存。

编译 & 连接外部蓝牙芯片

1、在前面的 menuconfig 配置完成后,使用 pkgs --update 命令更新 NimBLE 软件包

1$pkgs--update

2、运行 scons -c 清除之前的构建后,运行 scons 命令进行内核代码的编译。

3、编译成功后, kernelspimx6ull-artpi-smart 路径下会生成 rtthread.imx 文件。

3dcc26aa-5608-11ed-a3b6-dac502259ad0.png

4、把外部的蓝牙 Control 芯片连接好,注意 UART 的引脚,这里使用 nrf52840dk 连接 ART-Pi-Smart 的 UART3。务必在后面内核烧写的步骤前连接好 Control 芯片。关于蓝牙控制器选择可以参考 蓝牙控制器固件 (或 NimBLE 软件包目录下 /docs/firmwares/README.md)。

3e080080-5608-11ed-a3b6-dac502259ad0.png

烧写内核 & 运行 NimBLE

windows 下烧写内核的过程,按照文档的相关章节(USB方式启动 rt-smart 内核);连好两根线后,应该可以用终端软件打开其中一根串口线。

1、配置 ART-Pi Smart 开发板进入到 USB 固件下载模式

操作方法:开发板上电之后,先按下 “BOOT 启动按键” 不松开,然后,再按下 “RST 复位键”,即可切换到 USB 固件下载模式

2、打开之前下载好的烧录工具 100ask_imx6ull_flashing_tool.exe,显示设备已连接即可。(显示未连接则重复 1 中的操作)

3、选择“专业版”,点击第一排“固件/裸机”按钮,选择刚刚编译出来的 rtthread.imx 文件(这里要注意绝对路径里面不要包含中文和空格)。然后点击 “运行” 按钮即可,等待内核下载完毕。如下图显示:

4009a7d0-5608-11ed-a3b6-dac502259ad0.png

4、内核烧写完成后,不要按复位按钮,这时候观察终端,可以发现系统内核已经跑起来了(如下图)。

注意:如果按了复位按钮,bootloader 则会默认加载固化在 emmc 中的出厂内核镜像,就不是我们自己编译的了

405b1c00-5608-11ed-a3b6-dac502259ad0.png

5、在系统命令行 输入 ble_hr 命令,即可运行刚刚配置编译进内核的 NimBLE 软件包例程。

40fc9242-5608-11ed-a3b6-dac502259ad0.png

6、 使用 nRF Connect 手机 APP 即可成功观察到蓝牙设备,名称为 blehr_sensor :

411ee284-5608-11ed-a3b6-dac502259ad0.png

点击连接后,在 CLIENT 下即可看到 Heart Rate 相关数据。

4197edc8-5608-11ed-a3b6-dac502259ad0.png

需要注意的地方

1、之前系统中 uart 设备编号与芯片 uart 接口编号不一致的问题:

menuconfig 中的 uart 配置和实际系统中 uart 对象名是不匹配的。实际使用时,系统中的 uart 序号应该减一。即 menuconfig 中的 uart1 对应 实际系统中的 uart0, menuconfig 中的 uart2 对应 实际系统中的 uart1。

2、一定要在 USB 烧写内核步骤之前连接好外部的蓝牙 Controller 芯片,否则烧写完成后自动加载内核会出现断言错误,因为对应串口没接好。这时如果使用复位按钮来重新加载内核,又会自动加载 emmc 中固化的出厂内核,就不是我们包含 NimBLE 的内核了。

3、针对 USB 烧写内核只能加载一次的问题,应该可以使用之前的烧写工具,将重新编译的内核固化到 emmc 中,这样就不用每次都重新烧写了。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 蓝牙协议栈
    +关注

    关注

    0

    文章

    7

    浏览量

    7173
  • RT-Thread
    +关注

    关注

    31

    文章

    1150

    浏览量

    38909
  • gcc编译器
    +关注

    关注

    0

    文章

    78

    浏览量

    3234

原文标题:如何在 RT-Thread Smart 下使用 NimBLE 蓝牙协议栈

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    送给工程师路上正迷茫的你:RT-Thread 软件包构建指南

    对应的软件包平台,软件包生态对于一门语言的选择至关重要,本次讲座将会讲述如何快速构建一个可通用的软件包介绍RT-Thread可兼容的标准,
    发表于 09-27 15:53

    RT-Thread Smart 入门指南

    rt-smart 软件包RT-Thread Smart 的用户体验软件包,可在 QEMU 模拟的 VExpress-A9 机器中或树莓
    发表于 03-29 06:40

    RT-Thread OneNET软件包的功能特点是什么?

    有哪位大神能否介绍OneNET 平台 。 RT-Thread OneNET 软件包功能特点是什么?
    发表于 04-02 06:39

    介绍RT-Thread软件包

    学习要点介绍 RT-Thread软件包;简介 nRF24L01 软件包的使用,讲解如何使用此软件包将数据正确发送和接收;学习线程间的通信
    发表于 07-27 06:07

    使用menuconfig配置基于RT-ThreadNimBLE软件包

    最近在学习 RT-Thread 中的 NimBLE 软件包,使用 menuconfig 配置选中 NimBLE 软件包,设置各种选项后,成功
    发表于 06-27 11:18

    主要介绍NimBLE软件包的使用说明

    NimBLE 使用说明本文主要介绍 NimBLE 软件包的使用RT-Thread Studio 工程中配置使用 NimBLEBSP 下工程配
    发表于 08-18 10:22

    NimBLE软件包在ART-Pi bsp工程的使用

    本文主要介绍 NimBLE 软件包的在 ART-Pi bsp 工程的使用目前 NimBLE 支持 BLE Host 层,同时 bsp 工程
    发表于 09-13 15:43

    RT-Thread Smart怎样去使用NimBLE软件包

    本文主要介绍 NimBLE 软件包的在 RT-Thread Smart 的使用目前官方使用 A
    发表于 09-13 15:50

    RT-Thread 软件包介绍

    RT-Thread 软件包介绍软件包的目的软件包在高级语言中非常常见,很多高级语言都有对应的软件包
    发表于 05-21 19:38 5246次阅读

    RT-Thread软件包定义和使用

    RT-Thread软件包是运行于RT-Thread物联网操作系统平台上,面向不同应用领域的通用软件组件 。RT-Thread 同时提供了开放
    的头像 发表于 05-21 11:29 9674次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>软件包</b>定义和使用

    RT-Thread社区上有哪些优秀的软件包

    SX12XX 软件包是基于 semtech 官网 Firmware Drivers V2.1.0代码库的移植实现,目前只支持 SX1278 LoRa设备。该软件包在原代码库功能的基础上,对接 RT-Thread SPI 设备驱动
    的头像 发表于 04-03 15:35 7243次阅读

    RT-Thread Smart已正式上线

    构建或其他的构建工具,例如xmake,cmake等,并对接 RT-Thread 在线软件包;同时支持 POSIX,方便 Linux 应用的移植。
    的头像 发表于 11-29 10:31 2466次阅读

    RT-Thread使用cjson软件包发送64位长整型数据

    开发环境:野火的stm32f407,rt-thread studio版本是版本: 2.2.6,stm32f4的资源包为0.2.2,rt-thread版本为4.1.1,cjson软件包使用的版本是latest。
    的头像 发表于 10-11 15:09 407次阅读
    <b class='flag-5'>RT-Thread</b>使用cjson<b class='flag-5'>软件包</b>发送64位长整型数据

    RT-Thread中Agile Modbus软件包的使用方法

    开发环境:野火的stm32f407,rt-thread studio版本是版本: 2.2.6,stm32f4的资源包为0.2.2,Agile Modbus软件包版本为v1.1.2。工程使用上一篇 RT-Thread中RS485驱
    的头像 发表于 10-11 15:37 657次阅读
    <b class='flag-5'>RT-Thread</b>中Agile Modbus<b class='flag-5'>软件包</b>的使用方法

    RT-Thread中mymqtt软件包的使用方法

    在上一篇文章 RT-Thread中Lan8720和lwip协议栈的使用的工程基础上添加mymqtt软件包。 使能mqtt example和mqtt test,保存,等待下载更新软件包
    的头像 发表于 10-13 10:44 529次阅读
    <b class='flag-5'>RT-Thread</b>中mymqtt<b class='flag-5'>软件包</b>的使用方法