2014-02-18 14 views
1

Я пытаюсь написать простой парсер Intel HEX самостоятельно.Можно ли перекрывать адреса в 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.Can HEX-файл, который используется для загрузки в некоторый EPROM, имеет промежутки между адресами? Я хотел бы использовать

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 

проверка. Я не мог найти никаких ограничений по этому поводу.

ответ

0
  1. В моей практике я никогда не сталкивался с перекрытием, поэтому мне также интересно знать такое, но более широко, учитывая случай, когда перекрытие может происходить в любой записи, а не только в следующей. intelhex Python library считает случай ошибочным.
  2. Это очень специфично для целевой памяти, но это очень часто происходит. Я разрабатываю прошивку для микроконтроллера, и в результате шестнадцатеричный файл имеет несколько областей памяти. Каждая область начинается с записи «Extended Linear Address».