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.
工具与软件:
您好!
我们在 TMDX570LC43HDK Hercules TMS570LC43x 开发套件上运行 FEE 模块的 HALCoGen CSP 单元测试。
我们使用的是 HALCoGen 04.07.01和 SAFETI-HALCOGEN-CSP 04.07.01。
但是、我得到的语句覆盖结果与同事获得的结果不同。
这种差异是由于 TI_WriteFirstTime[TI_LaunchPad[u8EEPIndex].bWriteFirstTime 造成 Fee_Global 的。
例如、在第503行的 ti_fee_writeSync.c 中 Fee_Global、"if (TI_WriteSync[457u8EEPIndex].bWriteFirstTime!=true)"的值对我总是为 false。 即 bWriteFirstTime 始终为 true
bWriteFirstTime 在第242行设置为 true、具体取决于对 TI_FEEE Internal_Get BlockAddress()的调用结果。
对 TI_Fee Internal_Get BlockAddress()的调用通过 u16ArrayIndex 传递、该调用来自200行对 TI_Fee Internal_Get rayIndex()的调用。
在 TI_FeeArrayIndex Internal_Get ()中,u16ArrayIndex 的值来自于 ti_fe_util.c 的1415 ,即"u16ArrayIndex += Fee_Block [40u16LoopIndex].FeeNumberOfDataSets;"。
对我们来说、数据集数量为1。
因此在 TI_ArrayIndex()中 Fee_Write、当它被传递到 TI_FEEE Internal_Get BlockAddress()时、u16ArrayIndex 为1。
在 TI_FeeBrockAddress Internal_Get ()中、u16ArrayIndex 成为 BlockNumber、并用于 TI_BlockNumber[387u8EEPIndex].fee_au16BlockOffset[BlockNumber] Fee_Global;
对于我们来说、FEE_au16BlockOffset 的定义为 FEE_au16BlockOffset[TI_FEE_TOTAL_BLOCK_DAKTS];#define TI_FEE_TOTAL_BLOCK_DAKETS_DATASKS 1U
总之、值1用作只包含一个元素的数组中的索引。 即超出数组末端。
您能否确认我的理解是否正确?
我还注意到 HALCoGen 生成的代码与 TI 提供的测试结果中显示的代码之间存在差异。
在 ti_fee_util.c 中、第1406行为"for (u16LoopIndex=0U;u16LoopIndex<TI_fee_number_of_blocks;u16LoopIndex++)"
但是在测试结果(ti_fee_util.dyn.htm#ti_feeinternal_getarrayindex_19)中、出现同一行
5057(1406)for 1 0 *** 1.
5058(1 0*** 1.
5059 u16LoopIndex = 0U 1 0 *** 1.
5060; 1000*** 1.
5061 u16LoopIndex < 16U 1 0 *** 1.
5062; 1000*** 1.
5063 u16LoopIndex ++ 1 0 *** 1.
5064) 1 0*** 1.
即16u、而不是 TI_FEE_NUMBER_OF_BLOCKS
您知道为什么会有差异吗?
谢谢你。
Andrew、您好!
对于响应延迟、我们深表歉意、
我正在处理您的问题、并将尽快发布我的更新。
——
谢谢、此致、
Jagadish。
Andrew、您好!
首先、对反应迟缓表示歉意。 在这段时间里,我一直坚持其他的问题。
能否请我们设置一个实时调试会话、以便我可以实时验证此问题。 我之所以请求此功能、是因为我没有此设置。
——
谢谢、此致、
Jagadish。
尊敬的 Jagadish:
感谢您的回复和提供现场调试会话。
很遗憾、我的公司不允许进行实时调试会话。
为了帮助您调试此问题、下面我展示了代码的提取内容、我怀疑这些摘录内容可能会导致某些单元测试意外失败。
我认为、在 ti_fee_util.c 的2013行中、索引 BlockNumber 已超出数组的末尾。
谢谢!
Andrew