我安裝的Visual Studio 2015年VisualGDB和設置使用HAL的LED閃爍的項目,如本例說明:http://visualgdb.com/tutorials/arm/stm32/stm32l4/VisualGDB與STM32L476RG核蛋白
安裝正確的工具,而我的項目遵循的例子正好,包括第6步,再向上至步驟7.但是,設置一個斷點,並試圖按照步驟8運行它後,我得到了在輸出窗口如下:
Open On-Chip Debugger 0.9.0 (2015-10-08-15:57)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 500 kHz
adapter_nsrst_delay: 100
none separate
Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : Unable to match requested speed 500 kHz, using 480 kHz
Info : clock speed 480 kHz
Info : STLINK v2 JTAG v24 API v2 SWIM v10 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.263434
Info : stm32l4x.cpu: hardware has 6 breakpoints, 4 watchpoints
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x0800027c msp: 0x20020000
adapter speed: 4000 kHz
Info : accepting 'gdb' connection on tcp/3333
Info : device id = 0x10076415
Info : flash size = 1024kbytes
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x0800027c msp: 0x20020000
adapter speed: 4000 kHz
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x0800027c msp: 0x20020000
adapter speed: 4000 kHz
Warn : Padding 4 bytes to keep 8-byte write size
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x2000004a msp: 0x20020000
Warn : block write succeeded
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x0800027c msp: 0x20020000
Error: Memory write failure!
與此同時,我得到彈出一個對話框:「用於堆棧的內存位置不可寫,請檢查設備類型和鏈接器CRIPT。您可以禁用自動堆棧通過VisualGDB項目屬性」
檢查展望這是構建過程中產生的.MAP文件,沒有什麼接近0x61000000或爲0x01000000任何東西。有一個_estack = 0x20020000。
我在鏈接器標誌(LDFLAGS:= -Wl,-N,-gc-sections)中添加-N,以查看這是否會影響任何內容,並且ID沒有。
對於可能出錯的任何想法?
提前致謝。
錯誤後調試器可以停止目標,這是在Default_Handler()startup_stm32l476xx.c在文件的底部。 每說評論功能,增加了生成文件參數DEFAULT_INTERRUPT_HANDLERS然後 的土地我的HardFault_Handler()。根據函數 中的註釋,發生了未處理的中斷,並且需要一個處理它的函數定義:** extern「C」void HardFault_Handler();但是,根本原因似乎是未正確配置的內存,無論是在鏈接器文件中還是在另一個VisualGDB設置中。仍然試圖解決這個問題... – Walt
我的工作在我的項目來診斷硬故障,並發現這篇文章有幫助:http://support.code-red-tech.com/CodeRedWiki/DebugHardFault這提供了更多的信息發生故障時處理器的狀態。我正在開發STM32F0(Cortex M0),它不包含所有「故障狀態」寄存器,所以我不得不刪除代碼中的那些部分,儘管表明了適用性。 – mbmcavoy