(GDB) Пытаясь взломать доступ к определенному адресу для ARM IP, контрольные точки, похоже, не работают - PullRequest
0 голосов
/ 12 ноября 2018

Я использую программное обеспечение C на ARM IP (имя модуля ARM926EJS), предоставленном Synopsis, и весь инструмент, который я использую, - это Platform Architect, также Synopsis (на основе симулятора TLM, аппаратная часть реализована в SystemC) ,

Я получил от моего аппаратного модуля адрес, к которому у программного обеспечения нет доступа. Аппаратные модули не могут видеть информацию о программном обеспечении (или я просто не знаю), поэтому я обычно присоединяю arm-none-eabi-gdb к IP ARM во время симуляции для отладки программного обеспечения.

Я должен проверить, но я считаю, что IP ARM, который я использую, не поддерживает аппаратную точку наблюдения (при использовании только одной аппаратной точки наблюдения возвращается «слишком много аппаратных точек наблюдения»). Я пытаюсь установить точку наблюдения, набрав

    set can-use-hw-watchpoints 0

Я пытался увидеть, когда программа обращается к странному адресу, набрав

    watch *(int*)(0x2056604+0xd0000000)

номер которого является адресом, который я получаю на оборудовании. Однако программа зависает, и прерывание на GDB даже не работает, мне нужно остановить симуляцию и удалить точку наблюдения, чтобы продолжить.

Как ни странно, rwatch работает правильно (хотя проблема сохраняется, поскольку к адресу обращаются как «write»). Было бы действительно полезно увидеть, какая точка в программном обеспечении вызвала доступ к адресу 0x2056604 + 0xd0000000, но, поскольку у меня не работают контрольные точки, есть ли альтернативные способы прервать такой доступ? Или есть способ решить проблему зависания программных точек наблюдения?

Дополнительное примечание) Я также попытался приостановить симуляцию при доступе к памяти, а затем просмотреть кадр стека программного обеспечения. У программного обеспечения странный стек, и GDB говорит мне, что стек может быть поврежден. Вывод следующий ..

    #0  0x00002bf0 in ?? ()
    #1  0x00001b94 in ?? ()
    #2  0x00001b94 in ?? ()
    Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...