主题中讨论的其他器件:HALCOGEN、
大家好!
首先、我想说这是我在论坛上的第一个帖子、如果不是发布它的合适位置、请告知我、我会更正它。 我不是专家、因此我提前感谢您的时间和帮助。
一些上下文:
我使用的是基于 TMS570LS0914的特定器件应用。 该应用使用自定义引导加载程序和外部添加的 FREETOS (该微处理器没有 HalCoGen 选项)。 此外、应用程序使用 FEE 库来访问 EEPROM 内存并保存一些数据。 这些功能是代码中可能的关键部分。
我正在实验的问题是、微处理器在多于或少于1小时的正常运行期间挂起。 故障并不总是同时发生、但在大多数情况下、故障是在这段时间发生的。 这里的问题是、我需要一些帮助以进行更详细的调试、而这些可能是发生故障的准确原因。
我一直在进行调试、在检测到系统故障时试图停止调试器。 在第一次测试中、我在微处理器上加载了引导加载程序、然后配置 CSS、使其不会删除、而是加载应用程序映像。 由于这些测试,我怀疑故障与 FEE 驱动器有关。 有时、当失败时、系统会跳转到数据中止处理程序、然后再执行中止。 ASM 当我检查寄存器 R14并减去8个单位来找出原因时、我已经看到有一些 FEE 函数在休息时运行。 关于 FEE 驱动器的配置、我一直在其他项目中使用它、并使用相同的配置(2个大小相同的虚拟块、1个或2个数据块; 需要更新时将数据写入 EEPROM、并重复调用 TI_FEE_MainFunction、包括操作系统的一个任务)。 此功能正常工作、我可以将信息保存在内存上、关闭设备并恢复、不会出现任何问题。 如果我修改了虚拟扇区和块的配置,在某些情况下,应用程序似乎会更快地挂起。
另一方面、有时调试器会从应用程序代码(0x14C98 addr)之外跳转并在那里挂起。 此地址不是应用程序代码的一部分、因此我开始怀疑引导加载程序和一些 ECC 自检功能会出现问题。 我在论坛中阅读了大量信息、并检查了引导加载程序代码的 ECC 测试配置和应用程序代码之间的不一致性。 此外、我认为中止的可能原因可能是对引导加载程序 intvect 的寻址错误(发生数据中止时不会指向应用程序代码的正确地址)。 但是、今天我测试了从地址0x0开始的代码、并且该代码也会挂起、因此我认为它必须与 FEE 驱动器或堆栈大小相关。 然而、每次测试都意味着至少只针对触发故障执行1小时的操作、因此这个方法并未真正被优化。。。
要强调的最后一个重要事项是、当我关闭微处理器的电源时、它同样运行良好。 在我启用了看门狗的情况下、系统能够复位并继续运行。 但是、我需要了解问题的原因和解决方法。
下面我附加了许多可能有助于理解错误的文件(sys_intvects、sys_link、systartup.c、ti_fee_cfg..) 引导加载程序和应用程序。 如果需要、我可以分享更多信息。 我想强调的是、在另一个具有不同功能的器件中、我在同一个微处理器上有一个非常相似的结构代码(引导加载程序和应用程序)、并且它运行良好。 它使用的关键部分与我之前提到的相同、所以我认为我遇到了一些我没有看到的溢出、堆栈问题、但我需要高级调试来真正捕捉并修复它。
感谢您的参与、希望您能帮助我解决这个问题。
此致、
日文