2017-07-17 51 views
-1

由於我將stm32cubef1固件版本上傳至1.6.0,因此我無法再調試我的主板。我正在使用SWSTM32和ST-LINK/V2。 一旦我按「播放」按鈕一樣,當我試圖阻止它在Windows中打開它說:無法調試我的微型

"No source available for "dt_TPS()at 0x20000004" 

其中dt_TPS是我的變量之一。 在頁面底部的窗口,我看這個:

Open On-Chip Debugger 0.10.0-dev-00302-gc211ca5-dirty (2017-07-03-10:41) 
Licensed under GNU GPL v2 
For bug reports, read 
    http://openocd.org/doc/doxygen/bugs.html 
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD 
adapter speed: 1000 kHz 
adapter_nsrst_delay: 100 
srst_only separate srst_nogate srst_open_drain connect_assert_srst 
srst_only separate srst_nogate srst_open_drain connect_assert_srst 
Info : clock speed 1000 kHz 
Info : STLINK v2 JTAG v28 API v2 SWIM v6 VID 0x0483 PID 0x3748 
Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748 
Info : using stlink api v2 
Info : Target voltage: 3.239921 
Info : Unable to match requested speed 1000 kHz, using 950 kHz 
Info : STM32F105R8Tx.cpu: hardware has 6 breakpoints, 4 watchpoints 
Info : accepting 'gdb' connection on tcp/3333 
STM32F105R8Tx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x200001e0 msp: 0x20005000 
Info : device id = 0x10016418 
Info : flash size = 64kbytes 
STM32F105R8Tx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x200001e0 msp: 0x20005000 
STM32F105R8Tx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x200001e0 msp: 0x20005000 
Info : Padding image section 0 with 4 bytes 
STM32F105R8Tx.cpu: target state: halted 
target halted due to breakpoint, current mode: Thread 
xPSR: 0x61000000 pc: 0x2000003a msp: 0x20005000 
STM32F105R8Tx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x200001e0 msp: 0x20005000 
Error: address + size wrapped(0xffffffff, 0x00000004) 
Error: address + size wrapped(0xffffffff, 0x00000002) 
Error: address + size wrapped(0xffffffff, 0x00000004) 
Error: address + size wrapped(0xffffffff, 0x00000002) 

其他相關信息:我目前的工具鏈:AC6 STM32單片機GCC,目前建設者:GNU的make Builder和我使用的微是STM32F105R8T6 有誰知道發生了什麼事?

+0

差點忘了:我的微型是STM32F105R8 –

+0

你應該通過編輯問題來解決這個問題,而不是通過添加註釋。這就是說在OCD輸出中明確指出了目標。錯誤信息表明它正在RAM地址尋找_function_'dt_TPS'。你做了一個清潔和構建?地址表明您可能已將啓動模式設置爲SRAM而不是閃存 - 您的主板是否有跳線? – Clifford

回答

0

你似乎是從SRAM執行代碼,而不是閃存。這是不尋常的,可能不是故意的。

當BOOT0和BOOT1引腳均爲高電平時,處理器將從SRAM執行復位。通常情況下,您可以從閃存加載並執行代碼(BOOT0低,BOOT1不關心) - 您的開發板可能會有跳線用於啓動模式選擇。

+0

嗨克利福德,謝謝你的回答。在我的主板上,我使用了一個開關來選擇啓動模式,我認爲它是從閃存啓動的,因爲如果關閉然後打開電源,我可以用示波器看到該MCU正在執行我的代碼。我已經降級了我的固件版本,現在一切正常。也許這是新的固件版本?我不知道,但我想我會堅持使用舊版本,直到有新的更新可用 –

+0

@SandroSartoni - 輸出中顯示的PC地址清晰地顯示在RAM中,而不是閃存。因此,無論是從那裏開始執行,還是在閃存中啓動並轉移到RAM,可能是由於堆棧損壞或某種其他類型的失控。 –

+0

奧卡姆的剃鬚刀暗示該錯誤在您的代碼中。 STM32Cube不是'固件',它只是一個庫(從中建立你的固件)。你應該通過在復位地址設置一個斷點來進行調試,如果它沒有進入main(),並且通過代碼來發現從RAM中激發的原因。這是可疑的,因爲0x02000004是SRAM引導模式中的復位向量。 – Clifford