STM32 jtag調(diào)試程序時(shí)程序跑飛
開發(fā)環(huán)境:keil MDK V5.10
操作系統(tǒng):windows 7(32位)
目標(biāo)硬件:STM32F103C8
問題描述:在使用jtag對某軟件進(jìn)行調(diào)試的時(shí)候,KEIL可以正常的進(jìn)行軟件下載,一旦使用F5全速運(yùn)行時(shí),立即發(fā)現(xiàn)程序跑飛了,暫停后匯編代碼顯示“MOVS R0 R0”。程序跑飛的時(shí)候可以看到目標(biāo)設(shè)備程序執(zhí)行過程正常(燈正常閃爍,串口調(diào)試信息正常輸出)。
問題原因:芯片的JTAG引腳被復(fù)用,在程序初始化階段將JTAG引腳remap為了普通的IO引腳導(dǎo)致。
PS:在使用JTAG進(jìn)行程序調(diào)試的時(shí)候,如果程序中開了看門狗,調(diào)試程序進(jìn)行了單步調(diào)試的情況也可能導(dǎo)致JTAG無法正常使用,因?yàn)槟繕?biāo)設(shè)備的看門狗不能因?yàn)閱尾綀?zhí)行而暫停,從而導(dǎo)致在JTAG在線調(diào)試的單步執(zhí)行或者暫停執(zhí)行的情況下,目標(biāo)設(shè)備由于看門狗不能暫停,已經(jīng)導(dǎo)致硬件復(fù)位,從而脫離JTAG的調(diào)試模式,導(dǎo)致看起來程序跑飛。