Вопрос такой. У меня есть hex мне в нем надо изменить несколько кодов, но проблема следующая.
Если рассмотреть любую строку в hex файле полученном той же AvrStudio там видно что первые 8 символов это адрес в памяти, следующие 32 это данные, а последние 2 я подозреваю что это контрольная сумма, но чего, строки в которой стоит этот байт или чегото другого. Т.е. мне надо понять что это за 2 символа, и если это контрольная сумма то как она расчитывается.
Пробовал подсчитать, сложил все 32 символа в строке получил число, отбросил старшие полубайты так чтобы два младших осталось и не совпадает.
Исследования hex файла
Она высчитывается сложением по модулю два..
Попробуй сложи все байты данных /в HEX конечно/, а потом прибавь контрольную сумму - должен получится 0...
..
Вот нашёл, посмотри, заодно и меня проверишь..
http://www.8052.com/tutintel
Попробуй сложи все байты данных /в HEX конечно/, а потом прибавь контрольную сумму - должен получится 0...
..
Вот нашёл, посмотри, заодно и меня проверишь..
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
у меня на сайте в файловом архиве имеется описание на русском языке формата Intel-HEX - можете найти, скачать, прочесть и тогда все станет понятно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Moyo
- Первый раз сказал Мяу!
- Сообщения: 39
- Зарегистрирован: Пн май 08, 2006 07:25:21
- Откуда: Екатеринбург
Спасибо всем за ответ. Я нашол как вычислять контрольную сумму.
Пример:
Имеем строку из hex файла.
:1001B00010001A0020001A001E001A001E001A006B
:1001B000 10001A0020001A001E001A001E001A00 6B
первые 4 байта служебные символы нистал подробно их разбирать, следующие 16 байт данные и последний байт контрольная сумма
Произведем расчет контрольной суммы следующим образом.
Суммируем все символы строки по байтно (4 байта служебных и 16 байт данных).
10+01+B0+00+10+00+1A+00+20+00+1A+00+1E+00+1A+00+1E+00+1A+00=0195
инвертируем результат,
0195 Not = FE6A
прибавляем единицу,
FE6A+1=FE6B
отбрасив старшие байты,получаем 6B что мы и видим выше в конце строки.
Пример:
Имеем строку из hex файла.
:1001B00010001A0020001A001E001A001E001A006B
:1001B000 10001A0020001A001E001A001E001A00 6B
первые 4 байта служебные символы нистал подробно их разбирать, следующие 16 байт данные и последний байт контрольная сумма
Произведем расчет контрольной суммы следующим образом.
Суммируем все символы строки по байтно (4 байта служебных и 16 байт данных).
10+01+B0+00+10+00+1A+00+20+00+1A+00+1E+00+1A+00+1E+00+1A+00=0195
инвертируем результат,
0195 Not = FE6A
прибавляем единицу,
FE6A+1=FE6B
отбрасив старшие байты,получаем 6B что мы и видим выше в конце строки.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
лучше бы все-таки прочли о формате файла... есть там тонкости...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!