This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2540DK:无线(OTA)演示、外设不工作

Guru**** 2573695 points
Other Parts Discussed in Thread: CC2540, BLE-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/587283/cc2540dk-over-the-air-ota-demo-peripheral-not-working

器件型号:CC2540DK

您好!

我正在尝试使用 CC2540DK 开发套件获取 OTA 演示。  我已认真遵循《适用于 CC254x 的 BLE 无线下载开发人员指南》(http://processors.wiki.ti.com/images/8/82/OAD_for_CC254x.pdf)第9至11节的说明。

外设无法正常工作(正在广播、正在运行图像 A 或 B...)?  LCD 屏幕仅显示(我怀疑 SmartRF05默认值):

德州仪器

SmartRF05 EB

CC2540

我没有按照指南中的建议执行"超级十六进制"、而是对 BIM、img_a 和 img_B 进行了编程  我在每一步后都复制了.hex、并比较了这三个图像、看起来就像您所期望的那样。  此外、仅在进行踢脚时、我重启电源并让它运行以查看会发生什么情况。  在每个阶段、我看到完全相同的 LCD 消息。

电路板看起来已死。  游戏手柄不执行任何操作。  在中央运行的 OAD_manager (看起来与 SimpleBLE 演示类似)和我手机上的 BLE 扫描仪没有看到来自外设的广播。

我认为:

BIM 未运行

BIM 正在运行、但它认为 img_A 或 img_B 无效、因此两者都不运行

感谢您的任何帮助、

Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:

    根据您提供的说明、似乎 EM 板未正确编程、否则它会在显示屏上显示消息"OAD Manager"。 您能描述一下电路板编程所采取的步骤吗?

    Lenio
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Lenio、

    OAD 管理器(又名 中央)似乎工作正常、尽管 LCD 没有显示"OAD Manager"、而是显示"BLE 中央"。

    我想重点介绍目标(又名 外设)、因为如果没有外设、显然不会发生任何事情。  我从器件上读取了十六进制文件、检查了映射、在我看来、BIM、ImgA 和 ImgB 都是它们应该位于的位置。
    我可以稍微调试 BIM (单步执行程序)。  在函数 main ()中、在第一次调用 HalFlashRead ()后、CRC[0]= 33211且 CRC[1]= 65535。  由于 crc[0]!= crc[1],BIM 不会启动 img_B,而是执行 crcCheck()。  我不能单步执行 crcCheck(),因为 BIM 已进行了高度优化。  但我相当肯定 会跳过 crcCheck()的整个主体(第一个'if'失败),因为我没有在函数内执行复位。  因此,我必须得出的结论 是 crcCalcDMA()没有返回预期的 CRC。  Img_A 也会发生同样的情况
    因此、BIM 基本上会唤醒、拒绝两个图像、进入睡眠模式、LCD 保持不变。  (IMHO 进入无限 LED 闪烁模式而不进入睡眠模式会更有用)
    我确认了映像 A 和映像 B 的 CRC 字在编程器件中与它们在每个编程器件的原始编译.hex 文件中相同。  指南的第8.4.2节说 IAR 编译器计算每个映像 CRC 并将其放置在映像的开头--也许 IAR 编译器计算 CRC 的方法与 BIM 中的 crcCalcDMA ()函数不同?
    关于编程步骤,我尽可能地遵循《指南》第9和第10节。
    如果有人了解如何解决此 CRC 问题、我很乐意听到
    Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    自从我上一篇文章以来,我学到了很多。 有四种计算 CRC 的方法、因此必须在编译器/链接器和 BIM 中设置 CRC 方法、并且他们必须同意以相同的方式计算 CRC。

    编译器/链接器:

    指南第8.4.1节说明“映像 CRC 由 IAR 编译器计算”,在我看来,Linker 指令正在设置它。 在 IAR 嵌入式工作平台中,Project->Linker->Checksum 对话框全部呈灰色显示,因为“填充未使用的代码内存”框未被选中。 因此该对话框不会被使用。 相反、在项目.xcl 文件(链接器命令行文件\common\CC2540\cc254x_f256_imgA.xcl)中、我发现了以下内容:

    -J2、CRC=8005、=0804-_BANK7_END

    根据《IAR 链接器参考指南》、它定义了如何生成校验和:
    -‘2’是校验和结果中的字节数
    -‘CRC’设置 CRC 计算的多项式方法
    ‘8005’是多项式种子
    ‘0804…’ 是计算校验和的范围(本例中为图像 A)

    BIM 固件:

    我不清楚 BIM 计算 CRC 的方式,但在函数调用之后,我看不到 CRC 的设置方式。  在 crcCalcDMA()中,我确实看到了一个注释“0x0000的 CRC 种子”,这关系到我。  我在项目中找不到"8005"。

    为了证明我的理论,我制作了一份 BIM 的副本,并通过注释掉 bim_main.c 中 main()中的前两条‘if’行(共4行)来进行 CRC 校验。 现在、该版本的 BIM 将直接启动到图像 B 中、而不首先检查 CRC。 现在、图像 B 正在运行、LCD 上显示"BLE PERI-B"、监听器上显示广播包。

    SimpleBLE 演示项目是否与 OTA 演示项目不同步? 也许 SimpleBLE 在 OTA 未发展的情况下取得了进步?

    BIM 采用什么 CRC 方法? --然后我可以更改 ImgA/ImgB 链接器命令以匹配,例如。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您使用的是 BLE-STACK 版本?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在一个完全不相关的事件中,我的硬盘在周五死亡。  所以我不确定,明天我可能知道我的技术人员是否可以恢复任何数据。  我下载了大约4周前 TI 网站上的任何内容--从您发送给我的链接上看,它看起来像是2016年6月7日的版本1.4.2。  

    我的计算机应该修复并在明天归还给我--如果他们无法恢复数据,我将不得不重新构建项目。

    我听说254x v1.4.2.2有新版本的 BT 堆栈、这是真的吗?  如果是、我在哪里获得它、还是应该获得它?

    Dave

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更新:硬盘发生故障前的一天:

    外设正在工作(使用我的修改后的引导加载程序、该引导加载程序不执行 CRC 校验图像 B)
    OAD 管理器正在工作

    仍然没有 OAD 映像传输。 根据 CC254x 无线下载开发人员指南、您可以在 PC 上使用串行引导加载程序演示工具、通过串行电缆将新映像 B 加载到运行 OAD 管理器的 CC2540模块中。 我执行该操作、然后文件传输。 OAD 管理器完成并显示"OAD 字符已找到!"。 然后、本指南将告诉您通过向上按控制杆并连接到外设来开始扫描。 第11.10步(第11页)中显示了连接完成后 OTA 传输将自动开始。

    但是、我的板没有做任何事情、它们只是坐在那里。 OAD 管理器上的游戏手柄的作用与 SimpleBLE 演示非常相似、您可以开始扫描、关闭连接等。 否则、I/ve 会尝试两个板上的所有内容、而没有任何内容会启动 OAD 传输。

    我在源代码中花了一点时间尝试查看这种自动操作应该发生在何处、但这并不清楚。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我刚刚发现、在 BT 堆栈下载页面上、如果您选择 v1.4.2、您实际得到的是1.4.2.2。 这种情况发生了多长时间?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、当您下载 v1.4.2时、您会得到 v1.4.2.2、但 readme.txt 文件的第六行显示"BLE-Stack (TM)版本1.4.2"。 那么、v1.4.2.2何时发布呢? 什么改变了?