Other Parts Discussed in Thread: TMS320F28388D, C2000WARE
器件型号: TMS320F28388D
主题: C2000WARE 中讨论的其他器件
您好 TI、
我很关心在 TMS320F28388D(CM 内核)上的闪存 API 上观察到的 GCC 兼容性问题。
使用 GCC 从 RAM 执行闪存 API 时、几个函数(例如 CM_FLASHREGS_LOCK 和 CM_FLASHREGS_UNLOCK)访问绝对地址、而不是使用通过 Fapi_initializeAPI () 提供的基址。
例如、CM_FLASHREGS_LOCK 函数对地址 0x00001FD8 进行解引用、该地址不在 CM 的 RAM 或闪存寄存器区域内:
Movw R1、#0x1FD8
movt R1、#0x0
LDR R1、[R1]
ldr.w r1、[r1、#0x2FC]
MOV.w r0、#0x5A5A5A5A5A
str.w r0、[R2、#0x2FC]
BX r14
这种绝对寻址可防止闪存 API 重定位到 RAM、并在执行期间导致总线故障。
问题似乎源自 TI 构建环境假定的内部符号或由链接器定义的常量。
摘要:
器件:TMS320F28388D
核心:厘米
编译器:GCC
库:C2000Ware→libraries/flash_api/f2838x/cm/include/FlashAPI
问题:闪存 API 使用固定地址(例如 0x1FD8)→中断 GCC 下的 RAM 执行
目标:使用 GCC 工具链从 RAM 启用闪存 API 执行
请确认:
闪存 API 是否存在或计划使用与 GCC 兼容或可重定位版本、以及
如果没有、是否有建议的权变措施或补丁(例如重新定义地址符号或修改链接器命令文件)?
此限制目前会阻止我们在 Lauterbach 工具中提供的闪存编程支持、因此任何指导或更新都将非常有用。
此致、
多伊亚