РадиоКот >Статьи >
Реверсим код из MSP430 ч2.
Приветствую всех усатых ;-).
Продолжу рассказ о своих изысканиях в области реверса кода из MSP430i2031 добытого
из счётчика Меркурий 231АМ Ш.
В предыдущей статье я говорил, как получил код, дизассемблировал его, и собрал в IAR.
Рассмотрим в кратце как происходит накопление и учёт потреблённой энергии.
Импульсы по входам P1.5 P1.6 P1.7 вызывают прерывания процессора, запуская п/п
обработки. Вектор прерывания порта P1 (если верить datasheet), находится по адресу
0xFFE8 смотрим туда - там лежит адрес п/п обработчика, в моём случае это 0х0C422.
В зависимости от режима, происходит либо увеличение счётчиков фазных токов, либо суммирование.
Далее очистка флага прерывания и выход. А что если подменить эту процедуру другой, которая будет
пропускать некоторое кол-во импульсов со входа прерываний ?
Для этого напишем нехитрую программку, расположив её код в конце основного, а в таблице векторов
прерываний, укажем её адрес как адрес п/п обработчика.
На фото адрес стандартной процедуры, заменён на адрес новой процедуры обработчика.
А вот и сам обработчик. В нём создадим переменную, в которую будет занесёно ко-во
пропусков прерываний, такой себе делитель ;-)
Каждый раз, когда будет происходить прерывание от счётчиков фазных токов, на порту Р1, будет
вызываться новая процедура. На самом деле всё довольно просто, и по коментариям понятно,
что и как происходит. Записав при программировании в переменную div_dat значение к примеру 2,
мы получим деление на 2, записав 4 - получим деление на 4, и т. д.
К статье я прикрепил файл ассемблера и готовый файл прошивки, который можно зашить в тестовый
аппарат (секция INFO должна быть от вашего прибора) и проверить на практике.
Весь изложенный материал носит исключительно ознакомительный характер, и не преследут иные цели.
Как говаривал известный герой - "Надо чтить уголовный кодекс..."
За сим позвольте откланяться, всем здравия.
Файлы:
info
M231SH.txt
arhiv
Все вопросы в
Форум.
Как вам эта статья?
|
Заработало ли это устройство у вас?
|
|
|