英特尔十六进制中的地址可以重叠吗



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

阅读后http://en.wikipedia.org/wiki/Intel_HEX维基我还有一些问题。

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

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

  1. 在我的实践中,我从未遇到过重叠,所以我也很想知道这件事,但更广泛地说,考虑到这种情况,重叠可能发生在任何记录上,而不仅仅是下一个。intelhex Python库认为这种情况是错误的
  2. 这是非常具体的目标记忆,但它是非常常见的发生。我正在为微控制器开发固件,生成的十六进制文件有几个内存区域。每个区域都以"扩展线性地址"记录开头

最新更新