本文作者:icy

pascal-无需数据线!详解如何用Android App实现CC2650 SensorTag的无线固件升级(OTA)

icy 昨天 11 抢沙发
pascal-无需数据线!详解如何用Android App实现CC2650 SensorTag的无线固件升级(OTA)摘要: 项目概述 Over-the-Air-OAD-of-SensorTag-CC2650-Firmware-Android-App 是一个专门为 TI(德州仪器)CC2650 Senso...

pascal-无需数据线!详解如何用Android App实现CC2650 SensorTag的无线固件升级(OTA)

项目概述

Over-the-Air-OAD-of-SensorTag-CC2650-Firmware-Android-App 是一个专门为 TI(德州仪器)CC2650 SensorTag 设计的 Android 应用程序。其核心功能是实现 OAD (Over-the-Air Download),即通过蓝牙低功耗(BLE)协议,将编译好的固件二进制文件从 Android 手机无线传输到 CC2650 硬件设备中,从而完成远程固件更新。

在传统的嵌入式开发中,更新固件通常需要通过 JTAG 或 SWD 仿真器连接电脑,而该项目通过软件定义,将 Android 设备变成了一个便捷的“无线刷机器”,极大地提高了产品在实际部署场景下的维护效率。


核心技术原理

该项目的实现基于 BLE 的通用属性配置文件(GATT)机制。其工作流程可分为以下几个关键阶段:

1. 建立连接与服务发现

App 启动后,通过 BLE 扫描寻找特定的 SensorTag 设备。一旦连接成功,App 会检索设备端提供的 OAD 服务 UUID。CC2650 的 OAD 引导加载程序(Bootloader)会暴露一组特定的特征值(Characteristics),用于接收指令和数据。

2. 握手与参数协商

在传输固件前,App 需要与设备进行“握手”。这包括: - 版本校验:确认当前固件版本。 - 传输参数:确定每次写入的数据包大小(MTU),以确保传输效率与稳定性的平衡。

3. 固件分片传输(The Chunking Process)

由于 BLE 单个数据包的载荷有限,巨大的 .bin 固件文件不能一次性发送。App 将固件切分为多个小数据块(Chunks),并依次写入 OAD 服务的写入特征值中。 - 顺序写入:确保每个数据块按地址顺序排列。 - 校验机制:在传输过程中,设备端会校验数据的完整性。

4. 激活与重启

所有数据块传输完毕后,App 发送一个“激活”指令。CC2650 的 Bootloader 验证镜像签名后,将新固件从 Flash 的下载区搬运到运行区,并重启设备,从而完成升级。


项目功能亮点

  • 完全无线化:摆脱了昂贵的 XDS110 或 CCDebugger 仿真器,仅需一部 Android 手机。
  • 二进制文件直接加载:支持从手机本地存储中选择 .bin 固件文件。
  • 实时进度监控:界面实时显示传输百分比,让用户清晰感知升级进度。
  • 针对 SensorTag 优化:专门适配了 CC2650 的内存布局和 OAD 协议栈。

快速上手实例:如何使用该项目升级固件

如果你拥有一个 CC2650 SensorTag 开发板并希望尝试此项目,可以参考以下步骤:

第一步:准备工作

  1. 硬件:CC2650 SensorTag 硬件。
  2. 固件:确保你的 CC2650 已经刷入了支持 OAD 的 Bootloader(这是前提,如果没有 Bootloader,设备无法响应无线升级请求)。
  3. 文件:准备好编译生成的 .bin 格式固件文件,并将其存储在 Android 手机的内部存储中。

第二步:部署 App

  1. 克隆项目:git clone https://github.com/saitronkarthi/Over-the-Air-OAD-of-SensorTag-CC2650-Firmware-Android-App.git
  2. 使用 Android Studio 打开项目。
  3. 将项目编译并安装到你的 Android 手机上。

第三步:执行升级操作

  1. 开启设备:启动 CC2650 SensorTag,确保其处于广播状态。
  2. 扫描连接:打开 App \(\rightarrow\) 点击扫描 \(\rightarrow\) 选中你的 SensorTag 设备 \(\rightarrow\) 点击连接。
  3. 选择文件:在 App 界面中点击“Select Firmware”或类似按钮,在文件管理器中找到之前准备好的 .bin 文件。
  4. 开始传输:点击“Start Update”或“Upload”。此时你会看到进度条开始增长。
  5. 完成重启:进度达到 100% 后,App 会发送激活指令。观察 SensorTag 的 LED 灯,设备重启后即运行新版本固件。

潜在的开发扩展方向

如果你打算基于此项目进行二次开发,可以考虑以下优化方向:

  1. 增加 MD5/SHA 校验:在 App 端计算固件的哈希值并发送给设备,确保传输过程中没有发生位翻转。
  2. 支持云端下载:将固件托管在服务器上,App 下载后自动触发 OAD,实现真正的远程升级(Remote Update)。
  3. 适配更多芯片:将该逻辑迁移至 CC2640R2 或 CC2652 等更新的 TI 芯片。
  4. 优化 MTU 协商:通过动态调整 BLE MTU 大小,将传输速度提升 2-3 倍。

总结

该项目为嵌入式开发者提供了一个极佳的 BLE 固件升级参考实现。它不仅展示了 Android 端如何处理大文件的分片传输,也揭示了 TI CC2650 OAD 协议的运作机制。对于需要开发低功耗物联网设备且要求具备远程维护能力的工程师来说,这是一个非常实用的开源脚手架。

Over-the-Air-OAD-of-SensorTag-CC2650-Firmware-Android-App_20210918130843.zip
类型:压缩文件|已下载:0|下载方式:免费下载
立即下载
文章版权及转载声明

作者:icy本文地址:https://www.zelig.cn/delphi/751.html发布于 昨天
文章转载或复制请以超链接形式并注明出处软角落-SoftNook

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,11人围观)参与讨论

还没有评论,来说两句吧...