РадиоКот >Статьи >
Реверсим код из MSP430
Приветствую вас друзья.
На днях разбирая завалы в своих закромах, наткнулся на счётчик Меркурий 231АМ-Ш.
В своё время мне его презентовал кто то из знакомых на запчасти. На борту имеется микроконтролер MSP430i2031.
Решил поверить, можно ли его куда применить в своих поделках.
Полистав описание выяснил, что у этих контролеров есть интерфейс SBW (Spy-Bi-Wire) разъём которого видно на фото.
Прозвонкой установил назначение выводов, получилось так.
Далее оставалось подключиться к нему и выяснить, установлена ли защита ? Использовал недорогую плату
MSP-EXP430F5529LP на которой есть свой собственный программатор/дебагер.
Запускаем программу FET-Pro430 выбираем в ней нужный контролер, тип соединения и пробуем читать...
Как видим - всё прекрасно прочиталось, и значит бит защиты не установлен. А это значит контролер можно оставить
для своих поделок. Но мне стало интересно, как эта система работает ? Как учитывает наши денежки ?
Тогда, сохранив файл в ххх.hex, решил его дизассемблировать. Для этого использовал хорошо известную прогу IDA.
Открыв в ней сохранённый файл, отправился по адресу 0x0FFFE, потому как именно там находится адрес вектора сброса.
После старта, контролер загружает в РС адрес 0x0C012 и с него начинает выполнять пограмму, что же - идём туда.
Для сборки своего проекта, установил IAR IDE for msp430 и в нём стал собирать прошивку. Собственно это свелось
к копированию листинга из IDA в окно проекта в IAR и некоторыми правками самого текста для лучшего понимания
работы программы. Получилось вот так:
Откомпилировав проект, зашил полученный дамп обратно в контролер и подключл счётчик в сеть. Всё заработало.
Срисовав с платы часть схемы, узнал откуда и куда поступают сигналы учёта.
Сигнал с шунтов каждой из фаз А В С поступают на свои счётчики AD71056, откуда через опторазвязки поступают в виде
импульсов прерываний на вход порта P1.5-A, P1.6-B, P1.7-C. Дальнейшая обработака происходит в цикле прерывания от порта Р1.
Сигналы управления для шагового двигателя механизма счёта, формируются на выходах Imp1 и Imp2.
Рассказ о дальнейших изысканиях, с удовольствием продолжу, если кому то будет интересно.
А на этом позвольте закончить, и не судите строго, это моя первая статья. Все данные приведённые тут даны в целях самообразования.
С уважением Dismas.
Все вопросы в
Форум.
Как вам эта статья?
|
Заработало ли это устройство у вас?
|
|
|