РадиоКот >Статьи >

Теги статьи:

Реверсим код из MSP430 ч2.

Автор: Dismas
Опубликовано 29.06.2021
Создано при помощи КотоРед.

Приветствую всех усатых  ;-).
Продолжу рассказ о своих изысканиях в области реверса кода из 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


Все вопросы в Форум.