увы, кода, читающего HEX файл под рукой у меня сейчас нет, а то бы показал.
Каждая пара аски-символов (после ':') - это байт.
Суммировать надо байты, тупо:
uint8 sum=0;
uint8 idx;
for(idx=0; idx < record_length; idx++)
sum+= record[idx];
record[] = это массив прочитанных байтов одной записи (включая crc)
в результате sum должен равняться нулю.
Наглядный пример - запись EndOfFile:
:00000001FF