cortex m3/m4处理器在复位层面总体上可以划分为core和debug logic两部分。core部分包括处理器内核(core)以及NVIC,BUS Matrix,MPU的非debug部分。debug logic部分包括debug模块(SWD接口,ETM, AHB-AP, TPIU等)以及NVIC,BUS Matrix,MPU的debug部分。下文中,用core代指core部分,debug代指debug部分。
除JTAG的reset信号nTRST外,cortex m3/m4相关的复位信号主要有四个:
1.VECTRESET,向AIRCR的bit 0写1产生可触发,只会复位core部分,且不会送到处理器输出端口上,从而不会复位其他外设。因此,这个feature一般只会由debugger使用或者是用于多核芯片中(只复位某一个处理器核),而不应在正常的应用程序中使用。
2.SYSRESETREQ(system reset request),向AIRCR的bit 2写1产生可触发,被送到处理器输出端口上,然后会由时钟/复位产生模块(CRGU)处理,以复位除debug部分外的整个芯片系统。这一复位通常由keil通过SWD发出,为了软件的方便,在CRGU设计中,这个复位不应该复位debug部分,防止SWD断开。
3.SYSRESETn,由外部电路(一般是CRGU)提供给处理器,复位处理器的core部分,也会同时复位芯片上全部或大多数外设(取决于具体的芯片设计)。
4.PORESETn,由外部电路(一般是CRGU)提供给处理器,通常是整个芯片的power on reset(POR),复位core和debug,也同时会复位芯片上全部外设(取决于具体的芯片设计)。