主题中讨论的其他器件:CC2640
我们目前正在处理具有堆栈库构建功能的 CC2640R2RHB 的 OAD、但我们仍在处理一个问题。 这些芯片似乎不会引导到引导加载程序(BIM)、而是始终引导到应用程序代码中。
显然、所有部分、尤其是 BIM 的 intvec 和 APP 都位于正确的位置。 仅链接一组 CCFG、来自 BIM 代码。 选中的 SET_CCFG_IMAGE_VALVE_CONF_IMAGE_VALID 定义为0x1F000。 我使用了旧的 OAD 方法(cc2640中采用的技术)将一组中断向量放入0x00000000、强制它引导至新的 BIM、并且成功。 下载 BIM 后、我检查了存储器浏览器、地址为0x1FFEC、显示0x0001f000;在0x50003FEC、也显示0x0001F000。
我们使用的开发平台是 CCS7.0和 SDKcc2640r2_SDK_1.00.00.22
您能不能帮助我们建议我应该检查的内容、或者为我们提供用于上述目的的演示代码?
顺便说一下、我对有关堆栈库构建的另一个问题感到困惑。 使用堆栈库构建时、应用程序和堆栈之间是否不需要页面对齐? 那么、在这个构建配置中、ICALL_STACK0_ADDR、ICALL_STACK0_START 和 ICALL_RAM_START 将没有使用? 我发现应用程序代码中的多个场合仍然依赖于这些定义,如 ble_user_config.c。 在 ccs_compiler_defines.bcfg 和 ccs_linker_defines.cmd 内部、即使在堆栈库编译中、所有这些仍然是定义的、如果我删除其中的任何一个、应用程序根本无法正确编译。 但是、根据上述链接中提供的指南、链接器命令会重新引用 ICALL_STACK0_START 上的链接器命令来区分它、而是栈构建或栈库构建。 您能帮助解释如何正确处理所有这些定义吗?