реклама на сайте
подробности

 
 
> Адреса векторов прерывания
d7d1cd
сообщение Mar 31 2012, 13:55
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Привет всем! Есть устройство на микроконтроллере MSP430F149. Из этого микроконтроллера слита прошивка и дизассемблирована с помощью IDA. Далее, перейдя в область памяти где хранятся адреса векторов прерывания, я определил адреса процедур обработки этих прерываний. И тут я увидел, что некоторые вектора указывают не на команды микроконтроллера, а просто на данные в памяти.
Например, возьмем вектора прерываний асинхронных приемо-передатчиков. Только вектор URXIFG1 указывает на область памяти с инструкциями микроконтроллера. Остальные указывают на область памяти, где инструкций нет.
Объясните, пожалуйста, что это значит? Может просто IDA не распознала инструкций?

P.S. Устройство может принимать и отправлять данные через RS485 или через оптический порт, то есть, как я понимаю, хотя бы у одного передатчика должны быть "активны" оба вида прерывания. И еще в устройстве есть несколько микросхем памяти, в которые (и из которых) микроконтроллер пишет (читает) данные.
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 37)
bigal
сообщение Apr 1 2012, 21:03
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 16-08-06
Из: Москва
Пользователь №: 19 581



При передаче прерывания могут не использоваться, применяется опрос флагов. В коде стоит заглушка. С приемом сложнее хотя бы первый байт целесообразно ловить прерыванием, а то придеться висеть на приеме. Если задача позволяет то могли так сделать, хотя "некрасиво", но работоспособно.
Go to the top of the page
 
+Quote Post
hash20
сообщение Apr 2 2012, 07:22
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 24-01-12
Пользователь №: 69 858



d7d1cd, В принципе для 485го вполне достаточно только прерывания по RX (даже в двухстороннем режиме). А вы можете показать код инициализации вашего USARTа ? И желательно кусочек схемки как включена ваша интерфейсная микросхема 485 ? (в часности 2,3,4 пины куда подключены если у вас ADM485 стоит или её аналог).
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 2 2012, 07:45
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(d7d1cd @ Mar 31 2012, 17:55) *
Только вектор URXIFG1 указывает на область памяти с инструкциями микроконтроллера. Остальные указывают на область памяти, где инструкций нет.

Покажите, что конкретно там лежит и на что указывает.
Случаем, не FFFF?
Если да, то это просто неиспользованный вектор


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 2 2012, 14:41
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Вот таблица векторов прерывания:
Код
0000FFE0  00 12 34 21 A0 B8 C8 B8  00 12 00 12 00 12 FC 14
0000FFF0  F4 B8 1E B9 00 12 00 12  00 12 00 12 E0 14 00 12

Далее привожу куски кода из IDA, куда указывают вектора обоих USART-ов:

USART1 transmit (0xB8A0)
Код
seg000:0000B8A0                 .byte    4
seg000:0000B8A1                 .byte  12h
seg000:0000B8A2                 .byte  54h; T


USART1 receive (0xB8C8)
Код
seg000:0000B8C8                 push.w  R4
seg000:0000B8CA                 mov.b   &byte_914, R4
seg000:0000B8CE                 cmp.w   #8Ch, R4


USART0 transmit (0xB8F4)
Код
seg000:0000B8F4                 .byte    4
seg000:0000B8F5                 .byte  12h
seg000:0000B8F6                 .byte  54h; T


USART0 receive (0xB91E)
Код
seg000:0000B91E                 .byte    4
seg000:0000B91F                 .byte  12h
seg000:0000B920                 .byte  54h; T


Подскажите, что это значит?
Go to the top of the page
 
+Quote Post
Psych
сообщение Apr 3 2012, 05:28
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 88
Регистрация: 5-03-11
Пользователь №: 63 410



Да в адреса векторов можно запихнуть чо угодно. Главное не использовать их.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 3 2012, 08:31
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Apr 2 2012, 19:41) *
Подскажите, что это значит?

Это видимо означает, что ваша IDA плохо отрабатывает дизасемблирование для MSP430. Насколько я себе представляю два байта 0x04 0x12 с учетом little-endian представляют из себя код операции 0x1204 PUSH.W R4. Можете сами проверить, заглянув в User's Manual в таблицу Figure 3−20. Core Instruction Map, а затем глянув отписание команды PUSH в разделе 3.4.2 Single-Operand (Format II) Instructions там же.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 3 2012, 14:33
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(rezident @ Apr 3 2012, 12:31) *
Это видимо означает, что ваша IDA плохо отрабатывает дизасемблирование для MSP430. Насколько я себе представляю два байта 0x04 0x12 с учетом little-endian представляют из себя код операции 0x1204 PUSH.W R4. Можете сами проверить, заглянув в User's Manual в таблицу Figure 3−20. Core Instruction Map, а затем глянув отписание команды PUSH в разделе 3.4.2 Single-Operand (Format II) Instructions там же.


Спасибо за помощь. Скорее всего, вы правы. Используемый вектор, например, начинается с этой команды...
Можно Вас попросить дать ссылку на эти документы. И еще такой вопрос: в MSP все команды занимают 2 байта?

Сообщение отредактировал d7d1cd - Apr 3 2012, 14:54
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 3 2012, 15:00
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 3 2012, 18:33) *
Спасибо за помощь. Скорее всего, вы правы. Используемый вектор, например, начинается с этой команды...
Не подскажите, какую версию IDA использовать?

Здесь дело не в IDA. Программа не может распознать данные это или программа, если на эти адреса нет ссылок из программы. Дизаасемблер потому и называется интерактивным, что работает совместно с оператором. Просматривая дизассемблированный текст, в нужныж местах, по адресам векторов прерываний, установите вид данных Code и повторите дизассеблирование. Просмотрите листинг на предмет "ереси" програмного кода" это могут быть таблицы данных или векторов. Некоторые подпрограммы могут вызываться через таблицы, тогда их коды могут быть неправильно восприняты IDA как данные. В общем дизассемблирование это некоторый вид искуства. Влоб дизассемблируются только простейшие программы, без хитростей и приемов защиты от взлома.
Это касается любого процессора.
Поищите книги Касперского по IDA многое прояснится.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 3 2012, 15:34
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Apr 3 2012, 19:33) *
Можно Вас попросить дать ссылку на эти документы.

Все основные документы (User's Guide, Datasheet, Errata) есть на страничке продукта на сайте производителя (TI).
Цитата(d7d1cd @ Apr 3 2012, 19:33) *
И еще такой вопрос: в MSP все команды занимают 2 байта?

А вы не хотели бы краткое изложение всего руководства пользователя? biggrin.gif Может вначале вы сами User's Guide почитаете? Вот даже в переводе на русский.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 3 2012, 16:32
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(MaslovVG @ Apr 3 2012, 19:00) *
Здесь дело не в IDA. Программа не может распознать данные это или программа, если на эти адреса нет ссылок из программы. Дизаасемблер потому и называется интерактивным, что работает совместно с оператором. Просматривая дизассемблированный текст, в нужныж местах, по адресам векторов прерываний, установите вид данных Code и повторите дизассеблирование. Просмотрите листинг на предмет "ереси" програмного кода" это могут быть таблицы данных или векторов. Некоторые подпрограммы могут вызываться через таблицы, тогда их коды могут быть неправильно восприняты IDA как данные. В общем дизассемблирование это некоторый вид искуства. Влоб дизассемблируются только простейшие программы, без хитростей и приемов защиты от взлома.
Это касается любого процессора.
Поищите книги Касперского по IDA многое прояснится.


Спасибо большое! Все получилось. Я установил курсор на адрес вектора прерывания, нажал кнопку Convert to instruction и вуа-ля! Там где раньше дизассемблер показывал данные, появились инструкции процессора, где в самом конце стоит команда reti, то есть возврат из прерывания.
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 3 2012, 17:12
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 3 2012, 20:32) *
Спасибо большое! Все получилось. Я установил курсор на адрес вектора прерывания, нажал кнопку Convert to instruction и вуа-ля! Там где раньше дизассемблер показывал данные, появились инструкции процессора, где в самом конце стоит команда reti, то есть возврат из прерывания.

Это только начало. Необходимо найти все таблицы и все данные. Иначе после добавления даже одной команды после обратной трансляции программа будет неработоспособной. Тем паче в таких программах как правило встроен контроль целоности. После сброса программа зачастую производит контроль кода по контрольным суммам.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 4 2012, 02:53
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(MaslovVG @ Apr 3 2012, 21:12) *
Это только начало. Необходимо найти все таблицы и все данные. Иначе после добавления даже одной команды после обратной трансляции программа будет неработоспособной. Тем паче в таких программах как правило встроен контроль целоности. После сброса программа зачастую производит контроль кода по контрольным суммам.


Скажите, а что значит таблицы? Как я понимаю, это места в памяти, где указаны начальные адреса процедур. Тогда одна из таблиц - вектора прерываний. А могут быть еще какие-то?
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 4 2012, 03:23
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 4 2012, 06:53) *
Скажите, а что значит таблицы? Как я понимаю, это места в памяти, где указаны начальные адреса процедур. Тогда одна из таблиц - вектора прерываний. А могут быть еще какие-то?

С точки зрения ветвления таблицы могут иметь разную структуру. Простейшая вектотра как адреса. Иногда код команды и исполнительнай адрес. Но существуют и таблицы чисто данных. Таблицы линеаризации, стандартные сообщения, коэффициенты фильтров. Их вид определяеся используемыми библиотеками и предпочтениями автора программы.
Обычно на начало таблицы (реже конец) IDA ставит метку. Я в этих случаях ищу место где эти данные используюся (IDA деёт соответствующий список ссылок) и разбираюсь с этим куском программы. При обнаружении векторов адресов присваиваю им символьные имена. (для обеспечения в дальнейшем возможности модификации)

P.S Еще маленькая хитрость. Если на ячейке следующей за командой RET или безусловного перехода нет метки это явный признак что не все дизассемблировано верно. С такими местами нужно разбиратся особо.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 4 2012, 16:14
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Подскажите еще. Почему, если не разобрать все места программы (где код, а где данные) и добавить свой код, то после компиляции программа станет не работоспособной?
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 4 2012, 18:45
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 4 2012, 20:14) *
Подскажите еще. Почему, если не разобрать все места программы (где код, а где данные) и добавить свой код, то после компиляции программа станет не работоспособной?

Потому что при вставке дополнителных команд смещаются адреса переходов и если эти переходы осуществлялись через таблицы то их значения в данных компилятор не изменит, и переходы будут исполнятся некорректно. Таких таблиц в программе может быть много. Через них часто выполняют оператор CASE.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 5 2012, 03:00
Сообщение #17


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Можно Вас попросить маленький пример на ассемблере как осуществляется переход через таблицу. Что-то мутен для меня этот вопрос...
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 5 2012, 03:46
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 5 2012, 07:00) *
Можно Вас попросить маленький пример на ассемблере как осуществляется переход через таблицу. Что-то мутен для меня этот вопрос...

Все это общие принципы прграмм на ассемлере
Например так
MOV TABL,R11
ADD KOMANDA,R11
MOV @R11,R12
PUSH R12
RET

Не работал с MSP430
Не знаю есть ли там команды типа MOV @METKA ,PC или MOV Rxx,PC можно через них.
Можно в озу по адресу PEREXOD cформировать команду JMP VECTOR а в основной программе выполнить JMP PEREXOD
Все дело вкуса програмиста и возможности системы команд процессора.

P.S. У MSP430 Эти возможности реализованы через
MOV dst, PC
Посмотрите страницы 60-62 Руроводства на русском из поста 10
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 6 2012, 16:16
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Подумал тут вот над чем. В моей прошивке есть места, в которых, как я подозреваю, нет кода и данных (там забито FF). Что если написать свою процедуру обработки, перевести ее в байты и эти байты занести в то место, где нет кода. Затем адрес вектора прерывания изменить на начало моей самописной процедуры. В конце своей процедуры предусмотреть переход на истинный обработчик прерывания.
Ведь в этом случае при возникновении прерывания сначала выполнится моя процедура, а затем стандартная. И никакого смещения адресов.
Есть в моих рассуждениях ошибки?
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 6 2012, 18:26
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 6 2012, 20:16) *
Подумал тут вот над чем. В моей прошивке есть места, в которых, как я подозреваю, нет кода и данных (там забито FF). Что если написать свою процедуру обработки, перевести ее в байты и эти байты занести в то место, где нет кода. Затем адрес вектора прерывания изменить на начало моей самописной процедуры. В конце своей процедуры предусмотреть переход на истинный обработчик прерывания.
Ведь в этом случае при возникновении прерывания сначала выполнится моя процедура, а затем стандартная. И никакого смещения адресов.
Есть в моих рассуждениях ошибки?


В прерывании будет всего навсего приём одного байта.
Вам нужно в программе найти дешифратор команд. Там дожна быть ветка "комады нет" или "код команды некоректен". Переаресовать эту ветку на свою вставку.
Кроме того просмотреть начало программы на предмет проверки контрольной суммы.
при наличии оного принять меры чтобы программа не вылетала.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 7 2012, 08:30
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(MaslovVG @ Apr 6 2012, 22:26) *
В прерывании будет всего навсего приём одного байта.
Вам нужно в программе найти дешифратор команд. Там дожна быть ветка комады нет или код команды некоректен. Переаресовать эту ветку на свою вставку.
Кроме того просмотреть начало программы на предмет проверки контрольной суммы.
при наличии оного принять меры чтобы программа не вылетала.


Давайте по порядку. Просто я не знаю некоторых моментов. Скажите, когда я в прибор отправляю команду, состоящую из 20 байт, то прерывание вызывается 20 раз? На каждый байт?
Если это так, то я уже разработал алгоритм своей процедуры...
Про контрольную сумму. Ее проверка существует. При неправильной контрольной сумме прибор на экран выводит номер ошибки на экран, но продолжает функционировать. Как можно найти то место, где программа считает контрольную сумму?
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 7 2012, 09:12
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 7 2012, 12:30) *
Давайте по порядку. Просто я не знаю некоторых моментов. Скажите, когда я в прибор отправляю команду, состоящую из 20 байт, то прерывание вызывается 20 раз? На каждый байт?
Если это так, то я уже разработал алгоритм своей процедуры...
Про контрольную сумму. Ее проверка существует. При неправильной контрольной сумме прибор на экран выводит номер ошибки на экран, но продолжает функционировать. Как можно найти то место, где программа считает контрольную сумму?


По порядку.
1 Да прерывание сработает 20 раз. по прерыванию байты обычно складываются в некий буфер. Основная прграмма анализирует этот буфер и обнаружив признак конца командного пакета (это может быть число символов или код Enter 0DH) приступает к разборке этого пакета. Ищите куда складываются принятые байты и что с ними происходит.
2. Начните анализировать программу с начала как правило процедура проверки контрольной суммы в пакете инициализации. Другой подход найдите место в программе выводящее сообщение об ошибке и пляшите от него.

Но работы очень много. Помню лет 10 назад в программе на MCS51 нужно было одну задержку увеличить в 4 раза. На ковыряние кода ушло больше месяца.
Не зря говорят что часто написать свою программу быстрее чем переделать чужую.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 8 2012, 08:23
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Вот у меня микроконтроллер MSP430F149. В нем реализовано 2 USART-а. Как определить какой из них используется для "общения" с внешним миром? Ведь USART может еще использоваться для "общения" с микросхемами памяти. Чтобы это определить, как я понимаю, нужна принципиальная схема устройства, да?
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 9 2012, 15:33
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 8 2012, 12:23) *
Вот у меня микроконтроллер MSP430F149. В нем реализовано 2 USART-а. Как определить какой из них используется для "общения" с внешним миром? Ведь USART может еще использоваться для "общения" с микросхемами памяти. Чтобы это определить, как я понимаю, нужна принципиальная схема устройства, да?

Отсутствие схемы существенно затрудняет понимание работы программы.
Что то я не знаю микросхем памяти с интерфейсом USART. Как правило I2C или SPI, или же паралельный интерфейс.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 10 2012, 05:10
Сообщение #25


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(MaslovVG @ Apr 9 2012, 19:33) *
Отсутствие схемы существенно затрудняет понимание работы программы.
Что то я не знаю микросхем памяти с интерфейсом USART. Как правило I2C или SPI, или же паралельный интерфейс.

1-wire можно с уарта опрашивать. С небольшими внешними навесками.
Двухногие далласы DS243x и им подобные


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 10 2012, 09:28
Сообщение #26


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(MaslovVG @ Apr 9 2012, 19:33) *
Что то я не знаю микросхем памяти с интерфейсом USART. Как правило I2C или SPI, или же паралельный интерфейс.


В книге Семейство микроконтроллеров MSP430x1xx описано несколько режимов периферийного интерфейса USART: режим UART, режим SPI, режим I2C. И не нужны микросхемы памяти с интерфейсом USART.

Исходя из этого как можно определить какой из USART (первый или второй) работает на прием и передачу данных во внешний мир?
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 11 2012, 08:12
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 10 2012, 13:28) *
В книге Семейство микроконтроллеров MSP430x1xx описано несколько режимов периферийного интерфейса USART: режим UART, режим SPI, режим I2C. И не нужны микросхемы памяти с интерфейсом USART.

Исходя из этого как можно определить какой из USART (первый или второй) работает на прием и передачу данных во внешний мир?

В каких режимах работают порты можно узнать из блока инициализации в программе. Стартуете программу в отладчике по шагам и разбираете начиная со старта. Обычно инициализация портов проходит в первых двух сотнях команд (в порядке исполнения а не листинга), кстати там же проводится подсчет контрольных сумм.
Но отсутствие схемы существенно затрудняет понимание логики программы.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 11 2012, 15:34
Сообщение #28


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Подскажите отладчик в котором можно "стартануть"...
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 11 2012, 17:49
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 11 2012, 19:34) *
Подскажите отладчик в котором можно "стартануть"...

Я с MPS430 не работал. Но приципы работы с любым семейством одинаковы. Могу порекомендовать для начала
"IAR Embedded Workbench for MSP430 v.5.10.1 Full" http://rutracker.org/forum/viewtopic.php?t=2975395.
Можно попытатся в Proteus. Поройтесь в закромах.
Если уж решили с семейством работать обзаводитесь инструментарием и литературой. С наскоку задачу не решишь.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 13 2012, 02:50
Сообщение #30


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(MaslovVG @ Apr 11 2012, 21:49) *
Я с MPS430 не работал. Но приципы работы с любым семейством одинаковы. Могу порекомендовать для начала
"IAR Embedded Workbench for MSP430 v.5.10.1 Full" http://rutracker.org/forum/viewtopic.php?t=2975395.
Можно попытатся в Proteus. Поройтесь в закромах.
Если уж решили с семейством работать обзаводитесь инструментарием и литературой. С наскоку задачу не решишь.


Спасибо за ссылку, однако стартануть не удалось. Хотя, наивно было полагать, что стартанет сразу 01.gif
Я слил прошивку, дизассемблировал ее с помощью IDA и сохранил в файле. Затем в IAR создал новый проект, открыл в этом проекте свой файл и, ничего не меняя, попытался скомпилировать. "Всего" компилятор обнаружил около 32000 ошибок lol.gif Все не проверял, но всегда ошибка на строках вида:
Код
byte_0        .byte 3Ah

            .byte  78h

word_120    .short 7880h


Тип ошибки: Bad instruction. Я понимаю, что это не инструкции. Это просто переменные. Но как это объяснить IAR-у? А может можно в IDA сделать так, чтобы он делал файл ASM понятный для IAR?
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 13 2012, 03:14
Сообщение #31


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 13 2012, 06:50) *
Спасибо за ссылку, однако стартануть не удалось. Хотя, наивно было полагать, что стартанет сразу 01.gif
Я слил прошивку, дизассемблировал ее с помощью IDA и сохранил в файле. Затем в IAR создал новый проект, открыл в этом проекте свой файл и, ничего не меняя, попытался скомпилировать. "Всего" компилятор обнаружил около 32000 ошибок lol.gif Все не проверял, но всегда ошибка на строках вида:
Код
byte_0        .byte 3Ah

            .byte  78h

word_120    .short 7880h


Тип ошибки: Bad instruction. Я понимаю, что это не инструкции. Это просто переменные. Но как это объяснить IAR-у? А может можно в IDA сделать так, чтобы он делал файл ASM понятный для IAR?

Это места Которые IDA Не смогла индентифицировать (Или синтаксис IDA не совпадает с синтаксисом ассемблера в IAR). Скормите IAR-у исходную прошивку (HEX-файл).
Посмотрите синтасис в в трансляторе как описываются в вашем ассемблере константы и переменные.
Обычно строка выглядит так
DB 3ah,78h,'Tekst'
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 13 2012, 14:26
Сообщение #32


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(MaslovVG @ Apr 13 2012, 07:14) *
Скормите IAR-у исходную прошивку (HEX-файл)...


А это можно сделать? Я что-то не нашел там такого действия. Подскажите, как сделать такое...
Go to the top of the page
 
+Quote Post
MaslovVG
сообщение Apr 15 2012, 12:29
Сообщение #33


Профессионал
*****

Группа: Свой
Сообщений: 1 210
Регистрация: 24-01-05
Из: Россия Волгодонск
Пользователь №: 2 134



Цитата(d7d1cd @ Apr 13 2012, 18:26) *
А это можно сделать? Я что-то не нашел там такого действия. Подскажите, как сделать такое...

Да проверил IAR НЕХ файлы не берет.
Попробуйте загрузить в NoICE 9.4 for MSP430, http://www.noicedebugger.com/download/noice_94_MSP430.exe
Проверил Можно загужать как HEX так и BIN.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 19 2012, 17:13
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Прошу модератора раздела обратить внимание на злостный оффтопик в теме - обсуждение "взлома" и нелицензионного использования проприетарной программы вне соответствующего раздела форума, что является нарушением п.3.1 Правил форума.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 19 2012, 17:22
Сообщение #35


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Сообщения с нарушениями скрыл.
Модератор.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 22 2012, 06:16
Сообщение #36


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Прошу прощения за нарушения... Подскажите, в каком разделе я могу задать вопрос по работе программы NoICE?
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 23 2012, 15:02
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Apr 22 2012, 11:16) *
Прошу прощения за нарушения... Подскажите, в каком разделе я могу задать вопрос по работе программы NoICE?

Обсуждать работу с программой можно и здесь. Нельзя лишь обсуждать способы "взлома" программ, а также выкладывать серийники и ссылки на всякие кряки, кейгены и т.п. Есть специальный раздел, который скрыт от незарегистрированных пользователей и роботов-поисковиков. Ссылка на него в моем предыдущем сообщении.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Apr 23 2012, 16:39
Сообщение #38


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(rezident @ Apr 23 2012, 19:02) *
Обсуждать работу с программой можно и здесь. Нельзя лишь обсуждать способы "взлома" программ, а также выкладывать серийники и ссылки на всякие кряки, кейгены и т.п. Есть специальный раздел, который скрыт от незарегистрированных пользователей и роботов-поисковиков. Ссылка на него в моем предыдущем сообщении.


Ясно. Тогда вопрос: я в NoICE запустил программу на выполнение (не по шагам, а непрерывно). Могу ли я имитировать поступление байта в приемо-передатчик?
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 03:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01765 секунд с 7
ELECTRONIX ©2004-2016