Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вычисления контрольной суммы векторов прерывания
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
TanT
И снова здравствуйте, возникла недопонимаение по поводу вычисления контрольной суммы векторов прерывания (LPC2378), дословно "Criterion for valid user code: The reserved ARM interrupt vector location (0x0000 0014)
should contain the 2’s complement of the check-sum of the remaining interrupt vectors.
This causes the checksum of all of the vectors together to be 0."

Просматриваю рабочий код с помощью FlashMagic , суммирую вектора прерывания ноль никак не получается. Собственно может я не то суммирую, поправьте, если ошибаюбсь: вектора прерывания - 4х байтные расположенны по адресам 0х00, 0х04, 0х08, 0х0С, 0х10, 0х14(зарезервирован - хранит действительную сигнатуру), 0х1С. В сумме должны дать ноль? unsure.gif

Нажмите для просмотра прикрепленного файла
Rusoil
Алгоритм: суммируем 7 векторов(7х4байта) и потом от 0х0 отнимаем полученное число.

__vector:
00000000 E59FF018
__undef_handler:
00000004 E59FF018
__swi_handler:
00000008 E59FF018
__prefetch_handler:
0000000C E59FF018
__data_handler:
00000010 E59FF018
__vector_0x14:
00000014 B9206E50

__irq_handler:
00000018 E51FF120
__fiq_handler:
0000001C E59FF018


Cумма семи векторов = 0x46DF91B0.
0x00000000 - 0x46DF91B0 = B9206E50.
TanT
Rusoil, спасиб, благодаря вашему примеру нашёл глюк в программке, которой считал сумму. суммировал вектора не стого конца, получал естественно бредятину. biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.