Other Parts Discussed in Thread: TMS570LS0914
器件型号: TMS570LS0914
项目说明:
尝试通过 SPI1 将固件数据从主机 (TMS570LS0914) 推送到 PLC 芯片 (QCA7006)。 执行某些命令后、它将取消 defEntry。


当达到 undefEntry 时、LR 始终指向此__TI_XML Decompress_None。
此问题会影响工程流程、解决此问题将有助于我们继续执行 PLC 芯片的固件下载活动。
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.
Other Parts Discussed in Thread: TMS570LS0914
器件型号: TMS570LS0914
项目说明:
尝试通过 SPI1 将固件数据从主机 (TMS570LS0914) 推送到 PLC 芯片 (QCA7006)。 执行某些命令后、它将取消 defEntry。


当达到 undefEntry 时、LR 始终指向此__TI_XML Decompress_None。
此问题会影响工程流程、解决此问题将有助于我们继续执行 PLC 芯片的固件下载活动。
你好、Usha、
对延迟的回复表示歉意!
我以前从未遇到过这个问题。
但是、我们有一个内部 AI、可以分析旧的数据 e2e 数据库以及与此控制器相关的所有文档。 当我提出这个问题时、我得到了以下有用的信息和解决方案。 请验证它们并使用一次。
您遇到的问题__TI_Decompress_NoneundefEntry与指向和跳到的 LR 有关 BFI.W(位字段插入)指令不兼容 。
。 BFI.W 指令是 Thumb-2 指令 就是这样 Cortex-R4F 内核不支持 TMS570LS0914。 此指令仅适用于:
当处理器遇到 BFI.W 指令时、它会触发 未定义指令异常 、导致执行跳到 undefEntry
该问题通常在以下情况下发生:
预编译库 (如 F021 闪存 API、TI_Fee 库或解压缩例程)是使用会生成 Thumb-2 指令(包括 BFI.W)的优化设置进行编译的
__TI_Decompress_None函数是的一部分 由链接器生成的初始化/解压缩例程 在 C/C++引导时自动初始化期间使用
这些例程可能是针对不同的目标 (Cortex-R5F) 或使用不兼容的编译器标志进行编译的
您需要确保所有库和代码都是专门为 Cortex-R4F 编译的、而无需 Thumb-2 高级指令:
CCS 中的编译器设置:
Project Properties -> Build -> ARM Compiler -> Advanced Options -> Target--code_state=32(ARM 模式)或确保 Thumb 模式不使用高级指令 --float_support=VFPv3D16-O2-O3-O4对于 F021 闪存 API 库: 如果您使用的是预编译的 F021 闪存 API 库、可能需要:
确保链接器命令文件正确处理初始化段:
SECTIONS
{
.text:decompress : {} > FLASH /* Decompression routines */
.cinit : {} > FLASH /* C initialization table */
.pinit : {} > FLASH /* C++ initialization */
}
确保解压缩例程放置在可执行存储器中并正确对齐
如果问题出在解压缩例程中、可以禁用链接器压缩:
在链接器选项中、添加:
--compress=off
这可以防止链接器压缩初始化数据、从而无需解压缩例程
确保链接到 Cortex-R4F 的正确运行时支持库:
rtsv7R4_T_le_v3D16_eabi.lib(适用于小端字节序,VFPv3D16、EABI) 检查拆卸 在 LR 指向的地址:
检查指令故障状态寄存器 :
验证库编译 :
SPI 通信 :确保您的 SPI1 配置正确,并且不会导致内存损坏,从而导致执行无效指令
协议栈配置 :验证是否分配了足够的堆栈空间、因为堆栈溢出可能会导致类似的症状
存储器保护 :如果启用了 MPU 设置,请检查这些设置,因为它们可能会导致异常
--
此致、
Jagadish。