主题中讨论的其他器件:TMDX570LC43HDK、 HALCOGEN、
工具与软件:
您好!
我们在 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
您知道为什么会有差异吗?
谢谢你。