FPB (Flash Patch and Breakpoint)
Блок Cortex-M, дающий аппаратные точки останова во флеш-памяти — и объясняющий, почему отладчик вдруг отказывается ставить седьмую.
На ПК GDB ставит точку останова, записывая в код инструкцию-ловушку. Во флеше так не получится: придётся стирать и переписывать целый сектор. FPB обходит это с помощью нескольких компараторов, следящих за адресом выборки инструкции и останавливающих ядро при совпадении. В Cortex-M3 и M4 их шесть для кода, в M0 — не больше четырёх. За обращениями к данным следит другой блок — DWT.
Когда компараторы кончаются, вы получаете либо ошибку, либо зонд незаметно перепрограммирует флеш у вас за спиной; SEGGER продаёт это как неограниченное число точек останова. Вторая половина названия, «flash patch», позволяла блоку подменять слова во флеше значениями из ОЗУ — способ исправлять ошибки в ПЗУ после выпуска. Заодно это оказалось удобным способом спрятать код, и более поздние ядра от него отказались, но название осталось.