1

我正在尝试自己编写简单的 Intel HEX 解析器。

在阅读http://en.wikipedia.org/wiki/Intel_HEX wiki 之后,我仍然有一些问题。

1.地址可以重叠吗?我的意思是这个检查总是正确的吗?

if (hexl[k]->address + hexl[k]->count > hexl[k+1]->address)
{
    // These addresses are sorted
    HEX_DEBUG("Addresses [%" PRIx16 "] and [%"PRIx16"]"
              " are overlapping", hexl[k]->address,
              hexl[k+1]->address);
    return HEX_EOVERLAP;
}

2.用于加载到某些EPROM的HEX文件地址之间可以有间隔吗?我的意思是我应该使用

if (hexl[k]->address + hexl[k]->count > hexl[k+1]->address) {} // > comparison
or 
if (hexl[k]->address + hexl[k]->count != hexl[k+1]->address) {} // != comparison

查看。我找不到一些限制。

4

1 回答 1

0
  1. 在我的实践中,我从来没有遇到过重叠,所以我也有兴趣知道这样的事情,但更广泛地说,考虑到这种情况,重叠可能发生在任何记录上,而不仅仅是下一个。intelhex Python 库认为这种情况是错误的。
  2. 它非常特定于目标内存,但很常见。我正在为微控制器开发固件,生成的 hex 文件有几个内存区域。每个区域都以“扩展线性地址”记录开头。
于 2014-11-19T12:32:12.273 回答