请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C129XNCZAD 您好!
spma057示例代码(修订版 C) www.ti.com/.../litabsmultiplefilelist.tsp
问题发生在与要读取的第一个 ROM ID 第一次冲突时、如下所示:
- 起始条件:i32ConflictBitNumber =-1 (有符号)、ui32BitNumber = 0 (无符号)、i32NumSlaves = 0 (有符号)
- 由于第376行中有一个隐式类型转换、比较进入其它路径
-
否则 if (ui32BitNumber > i32ConflictBitNumber) {
- 通过访问之前的 ROM ID、i32NumSlaves=0、我们超出了 ROM ID 数组的边界、导致不可预知的代码执行
// //采用上一个 ROM 编号的路径。 //从找到的最后一个 ROM 编号获取最后一条路径 // ui32WriteBit =(g_pui64SlaveAddr[i32NumSlaves-1] >> ui32BitNumber)& 1);
在大多数情况下、这不会导致严重问题、因为无效的数组 locatoin 只被读取、并且算法将继续用于所有其他冲突位置。
但是、由于此问题、我遇到了一些 ID 未找到的问题。 由于它取决于存储器布局、调试过程有点令人沮丧。
@TI 支持:您可以确认吗? 请使用以下任一修复更新您的示例代码:
- 第376行
否则、if (((int32_t) ui32BitNumber > i32ConflictBitNumber) {
第199行
// //在细胞迭代中被考虑的位的数量。 // int32_t ui32BitNumber;
此致
Fabian