Можно ли использовать контрольные точки в ISR? - PullRequest
4 голосов
/ 28 ноября 2008

Можно ли использовать точки останова в процедурах обслуживания прерываний (ISR)?

Ответы [ 3 ]

8 голосов
/ 29 декабря 2008

Да - в эмуляторе .

В противном случае нет. Это трудно осуществить, и в любом случае это плохая идея. ISR (как правило) должны (как правило) работать с аппаратными средствами, и аппаратные средства могут легко вести себя по-разному, если между каждой инструкцией оставляется промежуток в полсекунды.

Вместо этого настройте какую-нибудь систему ведения журнала.

ISR также незаметно «крадут» процессор у других процессов, поэтому многие операционные системы рекомендуют делать ваши ISR очень короткими и делать только то, что строго необходимо (например, иметь дело с срочным аппаратные средства и планирование задачи, которая будет правильно обрабатывать событие). Поэтому теоретически ISR должны быть настолько простыми, что их не нужно отлаживать.

Если проблема связана с аппаратным поведением, используйте вместо этого какое-либо ведение журнала, как я и предлагал. Если на самом деле оборудование не против больших промежутков времени между инструкциями, вы можете просто написать большую часть драйвера в пространстве пользователя - и вы можете использовать отладчик для этого!

3 голосов
/ 12 января 2009

В зависимости от вашей платформы вы можете сделать это, получив доступ к порту отладки вашего процессора, обычно используя интерфейс JTAG. Имейте в виду, что вы резко изменили все, что связано с синхронизацией, с помощью этого метода, поэтому сеанс отладки может оказаться бесполезным. Но опять же, многие ошибки могут быть обнаружены таким образом. Также учитывайте отображения памяти на основе MMU, поскольку отладчики JTAG часто не учитывают их.

1 голос
/ 12 января 2009

В Windows с подключенным отладчиком ядра вы действительно можете устанавливать точки останова в обработчиках прерываний.

...