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.

[参考译文] CC2640R2F:具有 OAD 的 CC2640R2F

Guru**** 2553450 points
Other Parts Discussed in Thread: CC2640R2F

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/568655/cc2640r2f-cc2640r2f-with-oad

器件型号:CC2640R2F

尊敬的先生

我使用了 CC2640R2F SDK 并尝试基于 CC2640R2F→LaunchPad→SimpleBLEPeripheral→FlashROM_StackLibrary 项目构建 OAD 项目。 但它注意到我的错误、如下图所示。

我参考了《《蓝牙低功耗软件开发人员指南》3.0.0 片外 OAD (文件:///C:/ti/simplelink_cc2640r2_sdk_1_00_00_22/docs/blestack/html/oad/oad.html #off-chip-OAD)》分步构建我的项目。

BTW,我在  simple_peripheral  文件夹中测试了 FlashROM_OAD_Offchip 项目。 但它必须与下载的 CC2640r2lp_stack 项目一同运行、并且堆栈仍在128KB 闪存中占据很大的空间。

我的产品需要更大的应用尺寸和 OAD 功能、CC2640R1 不满足我们的基本 要求。

您能告诉我如何使用 OAD 函数创建我的项目、并为我的应用和 BIM 使用所有128K 闪存吗?

谢谢

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

    即使使用 stackLibrary 配置、应用程序/堆栈代码也永远不能驻留在第31页或 SNV 页中。 因此、您实际上可以为应用/堆栈提供32 -(1 + SNV_PAGES)的闪存。

    使用当前框架、您只需合并栈十六进制文件和应用十六进制文件即可创建超级十六进制文件、并通过 OAD_IMAGE_TOOL 运行该文件以生成 OAD 映像。 它将是一个大图像、但它可以正常工作。

    您能否在 IAR 中启用详细选项后发布完整日志? (tools->options->Messages All)

    在内部、我们目前正在记录如何创建 FlashROM_StackLibrary_OAD_Offchip 配置-在发布之前、我将向您简要介绍需要执行的操作。 注意:如果您想控制 SNV、则必须修整应用程序/堆栈的大小。

    1) 1)修改链接器文件以排除最后一页。
    2) 2)修改链接器文件以为元数据留出空隙
    3)指南中指定的所有内容
    4) 4)将生成的图像剪裁为 APP/STACK 大小(可选)

    此致、
    反叛分子
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Rebel:
    感谢您的回复。 您能告诉我 TI 什么时候可以发布 FlashROM_StackLibrary_OAD_Offchip 项目吗?
    它是我们产品的一项非常重要的功能、我们必须调整我们的开发计划以适应 FlashROM_StackLibrary_OAD_Offchip 版本的发布。
    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Rebel:
    顺便说一下、FlashROM_StackLibrary_OAD_Offchip 的 OAD 操作过程是否与 FlashROM_OAD_Offchip 相同? 如果是、那么我将使用 FlashROM_OAD_Offchip 过程来验证是否可以实现它。
    谢谢~
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Kane、

    遗憾的是、发布日期不确定。 我将确保返回到此主题、并在我知道新内容后立即更新您。

    关于您的第二个问题-是的、OAD 配置文件和 BIM 完全相同。 实际上、您现在可以使用 FlashROM_OAD_Offchip 来实现这一点。

    我已附加一个示例链接器文件供您查看。 它执行上面概述的步骤1和2。

    /cfs-file/__key/communityserver-discussions-components-files/538/cc2640r2_5F00_oad_5F00_app_5F00_stack_5F00_example.icf

    您仍需要启用 OAD 配置文件和指南中的所有其他步骤。

    另请注意、在生成库编译输出的 OAD 就绪映像时、映像会很大(因为它包含所有具有 FF 的页面)、您需要使用 OAD_IMAGE_TOOL 中的"-r"参数将其限制为应用程序的大小。


    此致、

    反叛分子

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

    你好,Rebel,

    很抱歉、我偷走了这个线。 您是否有 CCS 的示例链接器文件? 我目前正在使用使用 FlashROM_StackLibrary 的多角色项目、并希望在该项目上启用 OAD。

    此致、

    Danh

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

    您好!

    只需详细介绍我要测试的设置。我正在使用 CC2640R2 LaunchPad 开发套件。

    安装 simplelink_cc2640r2_sdk_1_00_00_22后、我将 bim_oad_offchip、 multi_role_cc2640r2lp_app 和 multi_role_cc2640r2lp_stack_library 导入 CCS。

    我构建了全部三个项目(从 bim_oad_offchip 开始、然后 是 multi_role_cc2640r2lp_stack_library、最后是 multi_role_cc2640r2lp_app)、并且全部三个项目都成功构建。

    然后、我将 multi_role_cc2640r2lp_app.hex 下的 multi_role_cc2640r2lp_app/FlashROM_StackLibrary/刷写到 开发套件。 打开一个终端、然后看到终端上打印了消息。

    4.我将链接器文件"cc26xx_app.cmd"复制到同一位置下的"cc26xx_app_stack_oad.cmd"(examples\rtos\cc2640R2_LAUNCHXL_blestack\ccommon\cc26xx\ccs)、并修改项目属性以使用新 的"cc26xx_app_stack_oad.cmd"

    浏览 了 multi_role_cc2640r2lp_app 的项目属性-> CCS 编译-> ARM 链接器->文件搜索路径-> "${TI_BLE_SDK_base}/examples/rtos/CC2640R2_LAUNCHXL/blestack/common/cc26xx/ccs/cc26xx_app_stack_oad.cmd

    5. 再次构建 multi_role_cc2640r2lp_app 并刷写十六进制文件,以确保不会丢失函数,并且一切正常。

    6.编辑 cc26xx_app_stack_oad.cmd 文件

    添加这些定义

    #define FLASH_OAD_IMG_HDR_SIZE 0x10
    #define FLASH_OAD_IMG_START (FLASH_APP_BASE + FLASH_OAD_IMG_HDR_SIZE)
    #define FLASH_OAD_IMG_MAX_LEN (FLASH_LEN -(1 * FLASH_PAGE_LEN)- FLASH_OAD_IMG_HDR_SIZE)

    在系统内存映射中、修改为以下内容:

    #ifdef ICALL_STACK0_START
      //FLASH (RX):origin = flash_app_BASE,length = ADJ_ICALL_STACK0_start - flash_app_BASE
      闪存(RX):原点= FLASH_OAD_IMG_START,长度= ADJ_ICALL_STACK0_START - FLASH_OAD_IMG_START
    #else //默认值
      //FLASH (RX):origin = flash_app_BASE,length = flash_LEN - flash_page_LEN
      闪存(RX):原点= FLASH_OAD_IMG_START,长度= FLASH_OAD_IMG_MAX_LEN
    #endif

    // CCFG 页面、包含.ccfg 代码段和一些应用代码。
    //flash_last_page (RX):origin = flash_last_page_start,length = flash_page_LEN
    IMAGE_HEADER (RX):origin = FLASH_APP_base,length = FLASH_OAD_IMG_HDR_SIZE

    在存储器中的段分配中、修改为以下内容:

    部分

     /*.intvecs:> flash_app_base
       .text:>> FLASH | FLASH_LAST_PAGE
       .const:>> FLASH | FLASH_LAST_PAGE
       constdata:>> FLASH | FLASH_LAST_PAGE
       rodata:>> FLASH | FLASH_LAST_PAGE
       .cinit:> FLASH | FLASH_LAST_PAGE
       .pinit:>> FLASH | FLASH_LAST_PAGE
       init_array:>> FLASH | FLASH_LAST_PAGE
       EMB_text:>> FLASH | FLASH_LAST_PAGE
       ccfg:> FLASH_LAST_PAGE (高电平)
    *


       .imgHdr :> image_header
        .intvecs :>闪存
        .text:> FLASH
        .const:> FLASH
        .constdata:> FLASH
        .rodata:> FLASH
        .cinit:>闪存
        .pinit:> FLASH
        init_array:> FLASH
        .EMB_text:> FLASH

    Group (组)> SRAM

    .data
    #ifndef cache_as RAM
    .bss
    #endif /* cache_as RAM *
    .vtable
    .vtable_ram
    VTABLE RAM
    sysmem
    .nonretenvar
    } load_end (heapStart)

    .stack:> SRAM (高电平) load_start (heapEnd)

    #ifdef cache_as RAM
    .bss:> GPRAM
    #endif /* cache_as RAM *

    可以在 zip 文件中找到完整文件

    7.生成并命中错误:

    说明资源路径位置类型
    #10010链接期间遇到错误;"multi_role_cc2640r2lp_app.out"未构建 multi_role_cc2640r2lp_app C/C++问题
    "="">processors.wiki.ti.com/.../10099"> configPkg/linker.cmd 程序不能放入可用内存中。 ".resetVecs"段大小0x3c multi_role_cc2640r2lp_app 第696行 C/C++问题导致定位失败
    gmake:***[All]错误2 multi_role_cc2640r2lp_app C/C++问题
    gmake[1]:***[multi_role_cc2640r2lp_app.out]错误1 multi_role_cc2640r2lp_app C/C++问题

    可以在 zip 文件中找到完整的控制台日志

    e2e.ti.com/.../files.zip