M051也支持!semihost只跟开发工具和CPU内核有关。
要使用semihost, 软件的HardFault中断需要加特别处理(如下),
我看官网的M051 BSP, IAR版本的已加,Keil版本的还没加。(当然用户自己加入也行)
HardFault_Handler
LDR R0, [R13, #24] ; Get previous PC
LDRH R1, [R0] ; Get instruction
LDR R2, =0xBEAB ; The sepcial BKPT instruction
CMP R1, R2 ; Test if the instruction at previous PC is BKPT
BNE HardFault_Handler_Ret ; Not BKPT
ADDS R0, #4 ; Skip BKPT and next line
STR R0, [R13, #24] ; Save previous PC
BX LR
ENDIF
|