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.

[参考译文] CC2640:OAD 构建错误

Guru**** 2562340 points
Other Parts Discussed in Thread: CC2640, BLE-STACK

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/567078/cc2640-oad-build-error

器件型号:CC2640
Thread 中讨论的其他器件: BLE-STACK

CC2640 4x4定制板、ble_sdk_2_02_01_18、CCS6.2

在尝试使用定制板上的 OAD 进行构建时、我收到一个构建错误

屏幕快照已附加。

请确认以下参数是否设置正确:

定制板具有2MB 外部闪存。 我更改了以下参数

网址为 ext_flash_layout.h

#define EFL_FLASH_SIZE             0x100000

2.我将 EFL_ADDR_META 设置为以下值。

//图像信息(元数据)
#define EFL_ADDR_META              0x1F000

3.在 cc26xx_app_oad.cmd 文件中、我将闪存长度参数加倍。

#define FLASH_LEN              0x40000

我应该更改哪些其他参数?

谢谢、

Priya

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

    我想问题是您要更改 FLASH_LEN。 该参数指内部闪存。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我返回到使用 cc26xx_app_oad.cmd 中的默认 FLASH_LEN。

    #define FLASH_LEN        0x20000

    错误消息中没有任何变化。

    某些其他参数必须设置不正确。 是否有解决此问题的方法?

    Priya

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

    您可能会内存不足。 我建议您查看从编译生成的映射文件、并查看剩余的闪存数量。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已附上地图文件的屏幕截图、供您解释和使用。

    谢谢、

    Priya

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

    链接器正在尝试找到~3k 的打开位置、并且您的可用值小于该值。 除了外部闪存的更改之外、您是否向项目添加了任何内容? 您是否对项目设置进行了任何其他更改?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在询问预处理器符号? 我向应用项目添加了定制板和 OAD 功能。 我将其他所有内容用作默认值。 栈项目中未使用新的预定义符号。 是否有任何想法可以释放这一需要的空间?
    谢谢、
    Priya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在查看 build_config.opt 文件时、应用程序不使用该功能

    是 GAP 键合管理器。 关闭此功能后、构建错误消失

    应用程序中。 但是、我无法成功执行 OAD 下载。

    下面是 BTool 窗口的屏幕截图。 OAD 闪存错误是什么意思?

    定制板使用 XDS200调试器。

    谢谢、

    Priya

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

    OAD_FLASH_ERR 表示应用程序无法打开外部闪存。 这可能是因为您没有为此正确设置引脚。

    要了解如何更改 extFlash OAD 的引脚、请参阅 CC2640R2 SDK 中软件开发人员指南的 OAD 部分。 即使这适用于 CC2640R2/BLE-Stack 3.0、有关更改外部闪存引脚的部分也应适用于您正在使用的 BLE-Stack 2.2.1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果没有 OAD、应用程序将与外部闪存和定制板上的其他 SPI 从器件进行良好通信。 我更新了 bsp.h 内已有的定制板引脚 不确定为什么在添加 OAD 挂钩后、与外部闪存通信有困难?
    谢谢、
    Priya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Priya、

    遗憾的是、有两个地方需要更新:

    - bsp.h:这会影响 BIM_extFlash 与外部闪存的连接方式
    -您的板级配置文件。 这会影响高级应用程序与外部闪存的连接方式

    理想情况下、两个文件都将与外部闪存的引脚相匹配。 请验证这一点。

    另外一点、ExtFlash 中间件模块(ExtFlash.c、h)使用 PIN 驱动程序和 SPI 驱动程序、如果它们各自的未决调用之一失败、ExtFlash 模块将返回一个故障代码、这将导致 OAD_FLASH_ERR。 您是否知道是通过调用 PIN 还是 SPI 导致故障?

    通常、驱动程序无法打开的原因有两个:

    -外设已在使用中(即已使用该 PIN 调用 PIN_OPEN)
    -另一个外设正在使用该引脚。 (即在 SPI 正在使用的引脚上调用 PIN_OPEN)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    相同的定制板引脚(IOID_1)用作中的闪存芯片选择
    所有需要的文件。 我将此引脚的名称命名为 BSP_IOID_FLASH_CS
    中间件、板等文件

    以前、在驱动程序中间件目录中、
    C:\ti_tirtos_cc13xx_cc26xx_2_20_01_08\products\tidrivers_cc13xx_cc26xx_2_20_01_10\packages/ti\mw\extflash\ExtFlash.c
    该引脚称为 Board_SPI_FLASH_CS

    而在 C:\ti\simplelink\ble_sdk_2_02_00_31\src\examples\util\bim_extflash\cc2640\board\ext_flash.c 内
    同一引脚被称为 BSP_IOID_FLASH_CS。

    让我知道、如果在两个位置使该引脚名称相同、这是一个问题。

    应用程序不调用 PIN_OPEN。 在 OAD 下载期间、我无法使用 CCS 调试器。
    是否有其他方法可以判断在 PIN_OPEN 或 SPI_OPEN 期间是否发生了 OAD_FLASH_ERR?

    谢谢、
    Priya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在更多地讨论这个错误--定制板正在运行使用 SPI 进行测量的应用程序。 应用程序需要知道何时会发生 OAD、因此在 OAD 完成之前它会禁用 SPI 的使用。 是否有用于此目的的 API? 请参阅 BLE SDG 部分。
    谢谢、
    Priya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Priya、

    是的、假设您使用的方法与 simple_peripheral 实现 OAD 的方法类似、您将从 OAD 配置文件获得对应用程序的回调:

    例如 SimpleBLEPeripheral_processOadWriteCB(),带有事件 OAD_WRITE_Identify_Req

    一旦您的应用接收 到 OAD_WRITE_Identify_Req 事件、它应该关闭 SPI 外设、这将允许外部闪存模块在 OAD 期间使用它。

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

     如果 OAD 队列中有任何事件、我尝试避免应用程序使用 SPI 驱动程序

    OAD 标志来实现。 如果存在 OAD 标志、则传感器不使用 SPI 驱动程序  

    在广播和连接事件结束期间。 是一个简单标志以外的东西

    需要什么?

    OAD 闪存错误消失了、但现在传感器根本不请求第一个块写入

    (OAD 等待第一个块请求)。

    监听器捕获显示 OAD 初始化、但没有来自传感器的通知。

    谢谢、

    Priya

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

    我已评论 SPI 驱动器的所有应用使用。 我使 OAD 版本号为0。 这将启动 OAD 下载。 我可以在 BLE 监听器上看到通知、尽管监听器在这之后很快崩溃。 BTool 写入所有 OAD 块并以 OAD 缓冲区溢出错误结束。 导致此误差的原因是什么?

    谢谢、

    Priya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    问题最终解决-- OAD 现在正在定制板上工作!
    e2e.ti.com/.../569718
    谢谢、
    Priya