软件断点和硬件断点的区别和数量限制

软件断点和硬件断点的区别和数量限制
所有的ARM7/ARM9芯片,内部有2个断点单元。断点单元可以用于设置硬件断点或是软件断点。

先说说硬件断点和软件断点的区别。硬件断点是通过监测地址来触发断点的。所以,硬件断点可以设置在任何地方,不管是FLASH,ROM还是RAM,只要给定地址就可以了。而软件断点是通过监测特定的指令来触发断点的。在某个地址设置软件断点的时候,仿真器会将这个地址的数据/指令替换成一个特殊格式的指令。断点单元通过监测这个特殊格式的指令来触发断点。因为需要执行替换操作,所以软件断点只能设置在RAM里面。如果断点单元设置成监测某个地址,那一个断点单元只能监测一个地址,所以只能设置2个硬件断点。如果断点单元设置成监测某个固定格式的指令,那一个断点单元可以支持数量没有限制的软件断点。因为设置软件断点的时候只需要把要说着断点的位置的数据替换成被监测的固定格式的指令就可以了。
这就是为什么大家经常看到说支持2个硬件断点和数目不限的软件断点。但这里还是要提醒以下,如果2个断点单元都用于硬件断点,那用户就不可以设置软件断点了。

你可能感兴趣的:(STM32编程)