问题描述: 使用BSP Assistant 后,ModusToolbox™ 开发的应用出现build errors报错,如下: proj_cm0p.elf section '.text' will not fit in region 'flash' ld.exe: region 'flash' overflowed by 8500 bytes #error "Unhandled Device/PinPackage combination" 回答: 这类问题常见于多核代码环境,代码中既有自定义链接脚本,又有启动代码和BSP配置文件。在这种情况下使用BSP Assistant 更改设备,会自动备份自定义文件,然后将其替换为默认文件。此时,BSP Assistant 会显示如下警告信息: WARNING:[PATH]/bsps/TARGET_APP_CY8CPROTO-062S3-4343W/COMPONENT_CM0P/TOOLCHAIN_GCC_ARM/linker.ld had local edits. A backup was placed in [PATH]/bsps/TARGET_APP_CY8CPROTO-062S3-4343W/COMPONENT_CM0P/TOOLCHAIN_GCC_ARM/linker.ld.bak. WARNING:[PATH]/bsps/TARGET_APP_CY8CPROTO-062S3-4343W/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/linker.ld had local edits. A backup was placed in [PATH]/bsps/TARGET_APP_CY8CPROTO-062S3-4343W/COMPONENT_CM4/TOOLCHAIN_GCC_ARM/linker.ld.bak. 多核代码环境下,CM0p 镜像需要更多flash空间来运行自定义链接脚本。而BSP自带的默认链接脚本不适用于多核设计,没有为CM0p分配足够的flash空间。所以 BSP Assistant 使用默认链接脚本替代自定义链接脚本后,程序出现build errors报错。解决步骤如下: - 在CM0p链接脚本中,把flash空间最小化至0x4400。请在.bak 文件中进行检查,确保修改成功。
- 在CM4链接脚本中,使用FLASH_CM0P_SIZE 命令,修改flash空间大小,与CM0p链接脚本中数值保持一致。
- 在CM0p project Makefile中,设置/更新CY_CORTEX_M4_APPL_ADDR定义,完成修改CM4镜像的起始地址。
其他原因 如果上述步骤后问题仍未得到解决,对比原*.bak 文件和替换后的新文件的差异,做出相应修改,直至不再出现build errors。
|