|
|
  |
Отладка в Keil |
|
|
|
Sep 28 2013, 07:06
|
Местный
  
Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753

|
Цитата(Сергей Борщ @ Sep 28 2013, 09:52)  Нет, нельзя. Потому что по мере выполнения функции эта переменная может "блуждать" из регистра в регистр. Хм. Логично. Во время выполнения регистр будет использоваться для разных нужд. Так что лучше "не искушать". Читать ассемблер даже полезно. А как насчет первого вопроса? Как посмотреть - где я был, когда пришел интеррапт?
|
|
|
|
|
Sep 28 2013, 08:47
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (igorle @ Sep 28 2013, 09:06)  А как насчет первого вопроса? Открываем документ PM0056 "STM32F10xxx/20xxx/21xxx/L1xxxx Cortex-M3 programming manual", читаем раздел "2.3.7 Exception entry and return", узнаем, что в момент возникновения исключения на текущий стек (MSP или PSP) складывается содержимое регистров R0-R3, R12, адрес возврата, содержимое PSR и LR. После этого в LR заносится одна из констант, описанных в таблице 17. Значит, надо по содержимому LR и таблице 17 определить, в каком из регистров (MSPили PSP) лежит указатель на стековый кадр и по этому указателю найти на стеке адрес возврата. Возможно, ваш отладчик умеет это делать сам. Кейлом не пользуюсь.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Sep 28 2013, 15:47
|
Местный
  
Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753

|
Спасибо. Но поскольку топик называется "Отладка в Кейл" - спрошу еще совета бывалых. Я написал некий код, который имплементирует USB. Железо не поддерживает сигнала подключения USB (не дергает программно резистор на DP). Возможно, поэтому у меня под отладчиком USB код не работает корректно. Винда не видит, когда я забегаю отлаживаемое устройство заново. Есть какие-то специальные приемы у Кейла, для отладки USB? Я, бродя по старым темам форума, натыкался на упоминания методов отладки. Но тогда не понял, а сейчас не нашел
|
|
|
|
|
Sep 29 2013, 05:45
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414

|
Цитата(Сергей Борщ @ Sep 28 2013, 12:47)  Открываем документ PM0056 "STM32F10xxx/20xxx/21xxx/L1xxxx Cortex-M3 programming manual", читаем раздел "2.3.7 Exception entry and return", узнаем, что в момент возникновения исключения на текущий стек (MSP или PSP) складывается содержимое регистров R0-R3, R12, адрес возврата, содержимое PSR и LR. После этого в LR заносится одна из констант, описанных в таблице 17. Значит, надо по содержимому LR и таблице 17 определить, в каком из регистров (MSPили PSP) лежит указатель на стековый кадр и по этому указателю найти на стеке адрес возврата. Возможно, ваш отладчик умеет это делать сам. Кейлом не пользуюсь. Ещё можно посмотреть здесь, особенно если с английским плоховато.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|