主题中讨论的其他器件:UNIFLASH、 SEGGER、 RM48L952、 HALCOGEN、 TMS570LS0432、 LAUNCHXL-TMS57004、 RM42L432、 LAUNCHXL-RM42
我们有一个 Hercules 应用、该应用链接到 F021闪存 API 库以进行闪存编程。 使用 CCS 11调试器加载应用程序时、不会加载闪存 API 部分、但会加载应用程序的其余部分。 使用 Segger 工具、Uniflash 7或 CCS 10.4加载相同的应用程序时、不会重现此行为: 所有段均按预期加载。
环境:
- MCU: TMS570LS3137
-编程器: SEGGER J-Link Pro
- IDE: Windows 和 Linux 上的 Code Composer Studio 11.0.0.00012 (在两者上复制)
重现步骤:
1.编写一个使用 F021闪存 API 的 Hercules 应用程序。 将闪存 API 配置为从闪存复制到 RAM 中。 我们将闪存 API 库与以下链接器脚本(摘录)链接在一起:
flashAPI : fill = 0xFFFFFFFF // This guarantees that the holes will be filled with this value. { Fapi_UserDefinedFunctions.obj (.text) bl_flash.obj (.text) --library= ../../common/flash_lib/F021_API_CortexR4_BE.lib (.text) . += FLASH_API_LENGTH - .; // Aforementioned hole that will be filled (remaining flash in this section). } load = FLASH_API, LOAD_START(api_load), RUN_START(api_run), SIZE(api_size)
2.获取具有空闪存的 TMS570器件、或擦除之前使用的器件上的闪存。 空闪存可确保您检测到闪存 API 部分是否未加载。
3.使用 CCS 11调试器将应用程序加载到器件上。
使用调试器、观察为闪存 API 部分保留的存储器部分未编程(0xFF)。
当在同一 ELF 二进制文件上运行时、以下工具会根据需要加载闪存 API 部分:
Code Composer Studio 10.4.0.00006
Uniflash 7.0.0.3615
SEGGER J-Flash 7.56.d