Lauterbach trace32: как работать с точкой останова в кэшированной области - PullRequest
0 голосов
/ 30 сентября 2018

Я недавно отлаживаю программу Cortex-M4, текстовая часть которой находится в области кэшированной памяти.После подключения к устройству я пытаюсь установить программную точку останова.Точка останова может быть достигнута, и процессор остановлен.Однако я не могу выполнить дальнейшую отладку (либо STEP, либо установить другую точку останова и запустить), ПК всегда придерживается первой точки останова.

Возможно, проблема связана с кешем.При достижении точки останова программного обеспечения отладчик должен был изменить область физической памяти обратно на свое первоначальное значение, однако кэш инструкций не обновляется.Таким образом, ЦП продолжает выполнять код операции точки останова и никогда не двигаться вперед.

Документ ARM имеет следующее описание в Эта ссылка

Кэш инструкций недоступенотладчику.Поэтому доступ отладчика к кешируемым исполняемым областям памяти может не совпадать с инструкциями, видимыми на стороне команд процессора.

Однако это не дает решения.

Я думаю о том, чтобы вручную сделать недействительной кэш инструкций после того, как достигнута точка останова.Попробуйте использовать команду trace32 cache clean IC, но она говорит, что команда заблокирована.Не уверен, что это проблема с лицензией или команда не поддерживается Cortex-M4.

Кто-нибудь имеет опыт справиться с этим?

...