Аппаратные точки останова - это фактически компараторы, сравнивающие текущий ПК с адресом в компараторе (если он включен).Аппаратные точки останова - лучшее решение при установке точек останова.Обычно устанавливается через отладочный зонд (используя JTAG, SWD, ...).Недостаток аппаратных точек останова: они ограничены.Процессоры имеют только ограниченное количество аппаратных точек останова (компараторов).Количество доступных аппаратных точек останова зависит от процессора.Ядра ARM 7/9 имеют 2 современных ARM-устройства (Cortex-M 0,3,4) между 2 и 6, x86 обычно 4.
Программные точки останова фактически устанавливаются путем замены инструкции, которая должна быть остановлена наинструкция точки останова.Инструкция точки останова присутствует в большинстве процессоров и, как правило, такая же короткая, как и самая короткая команда, поэтому в x86 только один байт (0xcc, INT 3).В процессорах Cortex-M инструкции составляют 2 или 4 байта, поэтому инструкция точки останова - это инструкция 2 байта.
Программные точки останова можно легко установить, если программа находится в ОЗУ (например, на ПК).Многие встроенные системы имеют программу, расположенную во флэш-памяти.Здесь не так легко обменяться инструкцией, так как флэш-память должна быть перепрограммирована, поэтому аппаратные точки останова используются в первую очередь.Большинство зондов отладки поддерживают только аппаратные точки останова, если программа находится во флэш-памяти.Однако некоторые (например, J-Link от SEGGER) позволяют перепрограммировать флэш-память с помощью инструкций точки останова, а также позволяют неограниченное количество (программных) точек останова даже при отладке программы, находящейся во флэш-памяти.
Подробнеео программных точках останова во флэш-памяти