Вопрос в следующем. Есть OpenOcd. Есть ARM7 с его двумя Watchpoint. Я подключаю JTAG-адаптер к целевому контроллеру (NXP2378 для конкретики, но не суть), запускаю OpenOCD, запускаю telnet сессию. Командой reg могу посмотреть все регистры и адреса, на которые установлены breakpoint / watchpoint. Могу установить breakpoint командой bp на определенный адрес, например: bp 0x100 потом могу снять его с этого адреса, rbp 0x100 Но я бы хотел снимать breakpoint без указания адреса, просто убить существующие и все. Нужно это вот для чего. Я запускаю gdb отладчик, в котором ставлю breakpoint на main. Если я из отладчика выхожу, предварительно остановив программу, то все хорошо, breakpoint снимается при выходе автоматически. Но если я закрываю сессию отладки без предварительной отсановки, то этот breakpoint отстается и считается занятым. Таким образом, когда я компилирую программу в следующий раз, у меня адрес main смещается, и при установке занимается второй аппаратный watchpoint. Отладчик частично перестает работать, потому что у него занят нужный ему watchpoint, OpenOCD начинает ругаться на то, что аппаратный компаратор недоступен. Если убить сам OpenOCD и запустить его снова, то я вижу, что все breakpoint сброшены, то есть сам по себе при инициализации он это делает. Конкретно я пытаюсь использовать GBD встроенный в SlikEdit. Я думаю, что в скрипте перед загрузкой флеш нужно просто снять все breakpoint командой для OpenOCD, тогда это решит проблему. Но такой команды я не нашел. Ее нет? Плохо искал? А в Eclipse существует аналогичная проблема? Кто работает, можете попробовать?
Если немного сумбурно, прошу прощения, просто конец дня, и уже убегаю домой, а вопрос хотелось бы решить поскорее..
--------------------
Пасу котов...
|