|
Адреса векторов прерывания |
|
|
|
Mar 31 2012, 13:55
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Привет всем! Есть устройство на микроконтроллере MSP430F149. Из этого микроконтроллера слита прошивка и дизассемблирована с помощью IDA. Далее, перейдя в область памяти где хранятся адреса векторов прерывания, я определил адреса процедур обработки этих прерываний. И тут я увидел, что некоторые вектора указывают не на команды микроконтроллера, а просто на данные в памяти. Например, возьмем вектора прерываний асинхронных приемо-передатчиков. Только вектор URXIFG1 указывает на область памяти с инструкциями микроконтроллера. Остальные указывают на область памяти, где инструкций нет. Объясните, пожалуйста, что это значит? Может просто IDA не распознала инструкций?
P.S. Устройство может принимать и отправлять данные через RS485 или через оптический порт, то есть, как я понимаю, хотя бы у одного передатчика должны быть "активны" оба вида прерывания. И еще в устройстве есть несколько микросхем памяти, в которые (и из которых) микроконтроллер пишет (читает) данные.
|
|
|
|
|
 |
Ответов
|
Apr 2 2012, 14:41
|
Местный
  
Группа: Участник
Сообщений: 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 Подскажите, что это значит?
|
|
|
|
|
Apr 3 2012, 08:31
|
Гуру
     
Группа: Свой
Сообщений: 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 там же.
|
|
|
|
|
Apr 3 2012, 14:33
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
Сообщений в этой теме
d7d1cd Адреса векторов прерывания Mar 31 2012, 13:55 bigal При передаче прерывания могут не использоваться, п... Apr 1 2012, 21:03 hash20 d7d1cd, В принципе для 485го вполне достаточно тол... Apr 2 2012, 07:22 MrYuran Цитата(d7d1cd @ Mar 31 2012, 17:55) Тольк... Apr 2 2012, 07:45   MaslovVG Цитата(d7d1cd @ Apr 3 2012, 18:33) Спасиб... Apr 3 2012, 15:00    d7d1cd Цитата(MaslovVG @ Apr 3 2012, 19:00) Здес... Apr 3 2012, 16:32     MaslovVG Цитата(d7d1cd @ Apr 3 2012, 20:32) Спасиб... Apr 3 2012, 17:12      d7d1cd Цитата(MaslovVG @ Apr 3 2012, 21:12) Это ... Apr 4 2012, 02:53       MaslovVG Цитата(d7d1cd @ Apr 4 2012, 06:53) Скажит... Apr 4 2012, 03:23   rezident Цитата(d7d1cd @ Apr 3 2012, 19:33) Можно ... Apr 3 2012, 15:34 Psych Да в адреса векторов можно запихнуть чо угодно. Гл... Apr 3 2012, 05:28 d7d1cd Подскажите еще. Почему, если не разобрать все мест... Apr 4 2012, 16:14 MaslovVG Цитата(d7d1cd @ Apr 4 2012, 20:14) Подска... Apr 4 2012, 18:45 d7d1cd Можно Вас попросить маленький пример на ассемблере... Apr 5 2012, 03:00 MaslovVG Цитата(d7d1cd @ Apr 5 2012, 07:00) Можно ... Apr 5 2012, 03:46 d7d1cd Подумал тут вот над чем. В моей прошивке есть мест... Apr 6 2012, 16:16 MaslovVG Цитата(d7d1cd @ Apr 6 2012, 20:16) Подума... Apr 6 2012, 18:26  d7d1cd Цитата(MaslovVG @ Apr 6 2012, 22:26) В пр... Apr 7 2012, 08:30   MaslovVG Цитата(d7d1cd @ Apr 7 2012, 12:30) Давайт... Apr 7 2012, 09:12 d7d1cd Вот у меня микроконтроллер MSP430F149. В нем реали... Apr 8 2012, 08:23 MaslovVG Цитата(d7d1cd @ Apr 8 2012, 12:23) Вот у ... Apr 9 2012, 15:33  MrYuran Цитата(MaslovVG @ Apr 9 2012, 19:33) Отсу... Apr 10 2012, 05:10  d7d1cd Цитата(MaslovVG @ Apr 9 2012, 19:33) Что ... Apr 10 2012, 09:28   MaslovVG Цитата(d7d1cd @ Apr 10 2012, 13:28) В кни... Apr 11 2012, 08:12 d7d1cd Подскажите отладчик в котором можно "стартану... Apr 11 2012, 15:34 MaslovVG Цитата(d7d1cd @ Apr 11 2012, 19:34) Подск... Apr 11 2012, 17:49  d7d1cd Цитата(MaslovVG @ Apr 11 2012, 21:49) Я с... Apr 13 2012, 02:50   MaslovVG Цитата(d7d1cd @ Apr 13 2012, 06:50) Спаси... Apr 13 2012, 03:14    d7d1cd Цитата(MaslovVG @ Apr 13 2012, 07:14) Ско... Apr 13 2012, 14:26     MaslovVG Цитата(d7d1cd @ Apr 13 2012, 18:26) А это... Apr 15 2012, 12:29 rezident Прошу модератора раздела обратить внимание на злос... Apr 19 2012, 17:13 IgorKossak Сообщения с нарушениями скрыл.
Модератор. Apr 19 2012, 17:22 d7d1cd Прошу прощения за нарушения... Подскажите, в каком... Apr 22 2012, 06:16 rezident Цитата(d7d1cd @ Apr 22 2012, 11:16) Прошу... Apr 23 2012, 15:02  d7d1cd Цитата(rezident @ Apr 23 2012, 19:02) Обс... Apr 23 2012, 16:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|