2017-06-22 93 views
1

我在ST的Nucleo板上使用了J-Link EDU和STLink調試器。對於測試,引導加載程序代碼存在於0x8000000處,並且跳轉到主要應用程序代碼所在的0x8020000處。當我使用Jlink EDU時,每次成功都無法在0x8020000編程閃存,如果我修改程序並開始調試,Jlink將擦除閃存,但不會成功編程,並且在引導加載程序跳轉後,MCU得到HardFault。無論我使用Jlink還是STLINK(轉換爲Jlink),現在都會發生這種情況。通常我看到它被卡在0xFFFFFFFE。此時,JLINK已經擦除了應用程序代碼,但未能對其進行編程。 有趣的是,當轉換回來並與openocd一起使用時,STlink調試器對於引導加載程序跳轉到主應用程序代碼以及從那裏調試沒有任何問題。 我還發現,如果我通過STLink和OpenOCD將主應用程序代碼編程在0x8020000處,然後切換到JLINK EDU進行調試,只要JLINK不重新編程它就可以工作。如果在日誌中,我看到JLINK閃爍代碼,然後ST從引導加載程序跳轉後崩潰。所以我絕對認爲這與JLINK在調試過程中如何擦除和編程ST有關。 我也嘗試用JLINK指揮官進行編程,這似乎也失敗了。除非我完全擦除芯片。 我使用System Workbench 2.0和GNU ARM Eclipse插件進行Jlink調試,使用最新的ARM工具鏈以及Jlink 616c。我在雙銀行配置中使用閃存中的STM32F765VI。 爲了清晰起見,我還附加了JLINK和STLINK的GDB日誌。我想使用JLINK進行調試,因爲我可以在Eclipse中使用SWO控制檯,而在OpenOCD中它非常麻煩,所以想要解決它。在使用STM32F765上的引導加載程序時使用J-Link調試器時出現的問題

失敗JLINK調試後,它試圖程序:

SEGGER J-Link GDB Server V6.16c Command Line Version 
JLinkARM.dll V6.16c (DLL compiled Jun 16 2017 18:14:49) 

WARNING: Unknown command line parameter -timeout found. 
WARNING: Unknown command line parameter 0 found. 
-----GDB Server start settings----- 
GDBInit file:     none 
GDB Server Listening port:  2331 
SWO raw output listening port: 2332 
Terminal I/O port:    2333 
Accept remote connection:  localhost only 
Generate logfile:    off 
Verify download:    on 
Init regs on start:   on 
Silent mode:     off 
Single run mode:    on 
Target connection timeout:  0 ms 
------J-Link related settings------ 
J-Link Host interface:   USB 
J-Link script:     none 
J-Link settings file:   none 
------Target related settings------ 
Target device:     STM32F765VI 
Target interface:    SWD 
Target interface speed:  1000kHz 
Target endian:     little 

Connecting to J-Link... 
J-Link is connected. 
Firmware: J-Link V10 compiled Jun 16 2017 16:15:19 
Hardware: V10.10 
S/N: 260101191 
OEM: SEGGER-EDU 
Feature(s): FlashBP, GDB 
Checking target voltage... 
Target voltage: 3.35 V 
Listening on TCP/IP port 2331 
Connecting to target...Connected to target 
Waiting for GDB connection...Connected to 127.0.0.1 
Reading all registers 
Read 4 bytes @ address 0x00000000 (Data = 0x51E9FF66) 
Read 2 bytes @ address 0x00000000 (Data = 0xFF66) 
Target interface speed set to 1000 kHz 
Resetting target 
Halting target CPU... 
...Target halted (PC = 0x080023CC) 
R0 = 00000000, R1 = 00000000, R2 = 00000000, R3 = 00000000 
R4 = 00000000, R5 = 00000000, R6 = 00000000, R7 = 00000000 
R8 = 00000000, R9 = 00000000, R10= 00000000, R11= 00000000 
R12= 00000000, R13= 20080000, MSP= 20080000, PSP= 00000000 
R14(LR) = FFFFFFFF, R15(PC) = 080023CC 
XPSR 01000000, APSR 00000000, EPSR 01000000, IPSR 00000000 
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00 
Reading all registers 
Read 4 bytes @ address 0x080023CC (Data = 0xD034F8DF) 
Read 2 bytes @ address 0x080023CC (Data = 0xF8DF) 
Target interface speed set to 15000 kHz 
Flash breakpoints enabled 
SWO disabled succesfully. 
SWO enabled succesfully. 
Read 4 bytes @ address 0x080023CC (Data = 0xD034F8DF) 
Read 2 bytes @ address 0x080023CC (Data = 0xF8DF) 
Downloading 520 bytes @ address 0x08020000 - Verified OK 
Downloading 16064 bytes @ address 0x08020210 - Verified OK 
Downloading 16096 bytes @ address 0x080240D0 - Verified OK 
Downloading 16048 bytes @ address 0x08027FB0 - Verified OK 
Downloading 16112 bytes @ address 0x0802BE60 - Verified OK 
Downloading 16096 bytes @ address 0x0802FD50 - Verified OK 
Downloading 16112 bytes @ address 0x08033C30 - Verified OK 
Downloading 16144 bytes @ address 0x08037B20 - Verified OK 
Downloading 16000 bytes @ address 0x0803BA30 - Verified OK 
Downloading 15920 bytes @ address 0x0803F8B0 - Verified OK 
Downloading 16176 bytes @ address 0x080436E0 - Verified OK 
Downloading 16064 bytes @ address 0x08047610 - Verified OK 
Downloading 16032 bytes @ address 0x0804B4D0 - Verified OK 
Downloading 15696 bytes @ address 0x0804F370 - Verified OK 
Downloading 16032 bytes @ address 0x080530C0 - Verified OK 
Downloading 16176 bytes @ address 0x08056F60 - Verified OK 
Downloading 16064 bytes @ address 0x0805AE90 - Verified OK 
Downloading 16064 bytes @ address 0x0805ED50 - Verified OK 
Downloading 16128 bytes @ address 0x08062C10 - Verified OK 
Downloading 16176 bytes @ address 0x08066B10 - Verified OK 
Downloading 16112 bytes @ address 0x0806AA40 - Verified OK 
Downloading 16304 bytes @ address 0x0806E930 - Verified OK 
Downloading 16272 bytes @ address 0x080728E0 - Verified OK 
Downloading 16048 bytes @ address 0x08076870 - Verified OK 
Downloading 16080 bytes @ address 0x0807A720 - Verified OK 
Downloading 16048 bytes @ address 0x0807E5F0 - Verified OK 
Downloading 16048 bytes @ address 0x080824A0 - Verified OK 
Downloading 14616 bytes @ address 0x08086350 - Verified OK 
Downloading 16144 bytes @ address 0x08089C80 - Verified OK 
Downloading 16224 bytes @ address 0x0808DB90 - Verified OK 
Downloading 16128 bytes @ address 0x08091AF0 - Verified OK 
Downloading 16288 bytes @ address 0x080959F0 - Verified OK 
Downloading 16272 bytes @ address 0x08099990 - Verified OK 
Downloading 16256 bytes @ address 0x0809D920 - Verified OK 
Downloading 14880 bytes @ address 0x080A18A0 - Verified OK 
Downloading 8 bytes @ address 0x080A52C0 - Verified OK 
Downloading 4 bytes @ address 0x080A52C8 - Verified OK 
Downloading 4 bytes @ address 0x080A52CC - Verified OK 
Downloading 1068 bytes @ address 0x080A52D0 - Verified OK 
Comparing flash [....................] Done. 
Erasing flash  [....................] Done. 
Programming flash [....................] Done. 
Verifying flash [....................] Done. 
Writing register (PC = 0x08083ED0) 
Read 4 bytes @ address 0x08083ED0 (Data = 0xE0) 
Read 2 bytes @ address 0x08083ED0 (Data = 0x2100) 
Read 2 bytes @ address 0x0807BAAE (Data = 0xF44F) 
Read 2 bytes @ address 0x0807BAAE (Data = 0xF44F) 
Read 2 bytes @ address 0x0807BAFA (Data = 0xF44F) 
Read 2 bytes @ address 0x0807BAFA (Data = 0xF44F) 
Read 2 bytes @ address 0x08080814 (Data = 0x4B14) 
Read 4 bytes @ address 0x08080868 (Data = 0x2002B994) 
Read 2 bytes @ address 0x08080814 (Data = 0x4B14) 
Read 2 bytes @ address 0x0807BB44 (Data = 0x687B) 
Read 2 bytes @ address 0x0807BBB2 (Data = 0xF897) 
Resetting target 
Halting target CPU... 
...Target halted (PC = 0x080023CC) 
Read 2 bytes @ address 0x08080814 (Data = 0x4B14) 
Read 4 bytes @ address 0x08080868 (Data = 0x2002B994) 
Read 2 bytes @ address 0x08080814 (Data = 0x4B14) 
Read 4 bytes @ address 0x08080868 (Data = 0x2002B994) 
Read 2 bytes @ address 0x08080814 (Data = 0x4B14) 
R0 = 00000000, R1 = 00000000, R2 = 00000000, R3 = 00000000 
R4 = 00000000, R5 = 00000000, R6 = 00000000, R7 = 00000000 
R8 = 00000000, R9 = 00000000, R10= 00000000, R11= 00000000 
R12= 00000000, R13= 20080000, MSP= 20080000, PSP= 00000000 
R14(LR) = FFFFFFFF, R15(PC) = 080023CC 
XPSR 01000000, APSR 00000000, EPSR 01000000, IPSR 00000000 
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00 
Reading all registers 
Read 4 bytes @ address 0x080023CC (Data = 0xD034F8DF) 
Read 2 bytes @ address 0x080023CC (Data = 0xF8DF) 
Setting breakpoint @ address 0x0807BAAE, Size = 2, BPHandle = 0x0001 
Setting breakpoint @ address 0x0807BAFA, Size = 2, BPHandle = 0x0002 
Setting breakpoint @ address 0x0807BBB2, Size = 2, BPHandle = 0x0003 
Setting breakpoint @ address 0x08080814, Size = 2, BPHandle = 0x0004 
Starting target CPU... 
...Target halted (DBGRQ, PC = 0xFFFFFFFE) 
Reading all registers 
WARNING: Failed to read memory @ address 0xFFFFFFFE 
Removing breakpoint @ address 0x0807BAAE, Size = 2 
Removing breakpoint @ address 0x0807BAFA, Size = 2 
Removing breakpoint @ address 0x0807BBB2, Size = 2 
Removing breakpoint @ address 0x08080814, Size = 2 
WARNING: Failed to read memory @ address 0xFFFFFFF4 
Reading 64 bytes @ address 0xFFFFFFC0 
WARNING: Failed to read memory @ address 0xFFFFFFC0 
WARNING: Failed to read memory @ address 0xFFFFFFF0 
Reading 64 bytes @ address 0xFFFFFFC0 
WARNING: Failed to read memory @ address 0xFFFFFFC0 
WARNING: Failed to read memory @ address 0xFFFFFFF0 

成功JLINK調試,如果它不閃:

SEGGER J-Link GDB Server V6.16c Command Line Version 
JLinkARM.dll V6.16c (DLL compiled Jun 16 2017 18:14:49) 

WARNING: Unknown command line parameter -timeout found. 
WARNING: Unknown command line parameter 0 found. 
-----GDB Server start settings----- 
GDBInit file:     none 
GDB Server Listening port:  2331 
SWO raw output listening port: 2332 
Terminal I/O port:    2333 
Accept remote connection:  localhost only 
Generate logfile:    off 
Verify download:    on 
Init regs on start:   on 
Silent mode:     off 
Single run mode:    on 
Target connection timeout:  0 ms 
------J-Link related settings------ 
J-Link Host interface:   USB 
J-Link script:     none 
J-Link settings file:   none 
------Target related settings------ 
Target device:     STM32F765VI 
Target interface:    SWD 
Target interface speed:  1000kHz 
Target endian:     little 

Connecting to J-Link... 
J-Link is connected. 
Firmware: J-Link V10 compiled Jun 16 2017 16:15:19 
Hardware: V10.10 
S/N: 260101191 
OEM: SEGGER-EDU 
Feature(s): FlashBP, GDB 
Checking target voltage... 
Target voltage: 3.35 V 
Listening on TCP/IP port 2331 
Connecting to target...Connected to target 
Waiting for GDB connection...Connected to 127.0.0.1 
Reading all registers 
Read 4 bytes @ address 0x00000000 (Data = 0x51E9FF66) 
Read 2 bytes @ address 0x00000000 (Data = 0xFF66) 
Target interface speed set to 1000 kHz 
Resetting target 
Halting target CPU... 
...Target halted (PC = 0x080023CC) 
R0 = 00000000, R1 = 00000000, R2 = 00000000, R3 = 00000000 
R4 = 00000000, R5 = 00000000, R6 = 00000000, R7 = 00000000 
R8 = 00000000, R9 = 00000000, R10= 00000000, R11= 00000000 
R12= 00000000, R13= 20080000, MSP= 20080000, PSP= 00000000 
R14(LR) = FFFFFFFF, R15(PC) = 080023CC 
XPSR 01000000, APSR 00000000, EPSR 01000000, IPSR 00000000 
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00 
Reading all registers 
Read 4 bytes @ address 0x080023CC (Data = 0xD034F8DF) 
Read 2 bytes @ address 0x080023CC (Data = 0xF8DF) 
Target interface speed set to 15000 kHz 
Flash breakpoints enabled 
SWO disabled succesfully. 
SWO enabled succesfully. 
Read 4 bytes @ address 0x080023CC (Data = 0xD034F8DF) 
Read 2 bytes @ address 0x080023CC (Data = 0xF8DF) 
Downloading 520 bytes @ address 0x08020000 - Verified OK 
Downloading 16064 bytes @ address 0x08020210 - Verified OK 
Downloading 16096 bytes @ address 0x080240D0 - Verified OK 
Downloading 16048 bytes @ address 0x08027FB0 - Verified OK 
Downloading 16112 bytes @ address 0x0802BE60 - Verified OK 
Downloading 16096 bytes @ address 0x0802FD50 - Verified OK 
Downloading 16112 bytes @ address 0x08033C30 - Verified OK 
Downloading 16144 bytes @ address 0x08037B20 - Verified OK 
Downloading 16000 bytes @ address 0x0803BA30 - Verified OK 
Downloading 15920 bytes @ address 0x0803F8B0 - Verified OK 
Downloading 16176 bytes @ address 0x080436E0 - Verified OK 
Downloading 16064 bytes @ address 0x08047610 - Verified OK 
Downloading 16032 bytes @ address 0x0804B4D0 - Verified OK 
Downloading 15696 bytes @ address 0x0804F370 - Verified OK 
Downloading 16032 bytes @ address 0x080530C0 - Verified OK 
Downloading 16176 bytes @ address 0x08056F60 - Verified OK 
Downloading 16064 bytes @ address 0x0805AE90 - Verified OK 
Downloading 16064 bytes @ address 0x0805ED50 - Verified OK 
Downloading 16128 bytes @ address 0x08062C10 - Verified OK 
Downloading 16176 bytes @ address 0x08066B10 - Verified OK 
Downloading 16112 bytes @ address 0x0806AA40 - Verified OK 
Downloading 16304 bytes @ address 0x0806E930 - Verified OK 
Downloading 16272 bytes @ address 0x080728E0 - Verified OK 
Downloading 16048 bytes @ address 0x08076870 - Verified OK 
Downloading 16080 bytes @ address 0x0807A720 - Verified OK 
Downloading 16048 bytes @ address 0x0807E5F0 - Verified OK 
Downloading 16048 bytes @ address 0x080824A0 - Verified OK 
Downloading 14616 bytes @ address 0x08086350 - Verified OK 
Downloading 16144 bytes @ address 0x08089C80 - Verified OK 
Downloading 16224 bytes @ address 0x0808DB90 - Verified OK 
Downloading 16128 bytes @ address 0x08091AF0 - Verified OK 
Downloading 16288 bytes @ address 0x080959F0 - Verified OK 
Downloading 16272 bytes @ address 0x08099990 - Verified OK 
Downloading 16256 bytes @ address 0x0809D920 - Verified OK 
Downloading 14880 bytes @ address 0x080A18A0 - Verified OK 
Downloading 8 bytes @ address 0x080A52C0 - Verified OK 
Downloading 4 bytes @ address 0x080A52C8 - Verified OK 
Downloading 4 bytes @ address 0x080A52CC - Verified OK 
Downloading 1068 bytes @ address 0x080A52D0 - Verified OK 
Comparing flash [....................] Done. 
Verifying flash [....................] Done. 
Writing register (PC = 0x08083ED0) 
Read 4 bytes @ address 0x08083ED0 (Data = 0xD034F8DF) 
Read 2 bytes @ address 0x08083ED0 (Data = 0xF8DF) 
Read 2 bytes @ address 0x08083ED2 (Data = 0xD034) 
Read 2 bytes @ address 0x0807BAAE (Data = 0xF44F) 
Read 2 bytes @ address 0x0807BAAE (Data = 0xF44F) 
Read 2 bytes @ address 0x0807BB44 (Data = 0x687B) 
Read 2 bytes @ address 0x0807BBB2 (Data = 0xF897) 
Read 2 bytes @ address 0x0807BAFA (Data = 0xF44F) 
Read 2 bytes @ address 0x0807BAFA (Data = 0xF44F) 
Resetting target 
Halting target CPU... 
...Target halted (PC = 0x080023CC) 
Read 2 bytes @ address 0x08080814 (Data = 0x4B15) 
Read 4 bytes @ address 0x0808086C (Data = 0x2002B994) 
Read 2 bytes @ address 0x08080814 (Data = 0x4B15) 
Read 4 bytes @ address 0x0808086C (Data = 0x2002B994) 
Read 2 bytes @ address 0x08080814 (Data = 0x4B15) 
R0 = 00000000, R1 = 00000000, R2 = 00000000, R3 = 00000000 
R4 = 00000000, R5 = 00000000, R6 = 00000000, R7 = 00000000 
R8 = 00000000, R9 = 00000000, R10= 00000000, R11= 00000000 
R12= 00000000, R13= 20080000, MSP= 20080000, PSP= 00000000 
R14(LR) = FFFFFFFF, R15(PC) = 080023CC 
XPSR 01000000, APSR 00000000, EPSR 01000000, IPSR 00000000 
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00 
Reading all registers 
Read 4 bytes @ address 0x080023CC (Data = 0xD034F8DF) 
Read 2 bytes @ address 0x080023CC (Data = 0xF8DF) 
Setting breakpoint @ address 0x0807BAAE, Size = 2, BPHandle = 0x0001 
Setting breakpoint @ address 0x0807BAFA, Size = 2, BPHandle = 0x0002 
Setting breakpoint @ address 0x0807BBB2, Size = 2, BPHandle = 0x0003 
Setting breakpoint @ address 0x08080814, Size = 2, BPHandle = 0x0004 
Starting target CPU... 
...Breakpoint reached @ address 0x08080814 
Reading all registers 
Read 4 bytes @ address 0x08080814 (Data = 0x68184B15) 
Removing breakpoint @ address 0x0807BAAE, Size = 2 
Removing breakpoint @ address 0x0807BAFA, Size = 2 
Removing breakpoint @ address 0x0807BBB2, Size = 2 
Removing breakpoint @ address 0x08080814, Size = 2 
Reading 64 bytes @ address 0x20003A40 
Read 4 bytes @ address 0x0802ED40 (Data = 0xB083B480) 
Reading 64 bytes @ address 0x200039C0 
Read 4 bytes @ address 0x0802ED40 (Data = 0xB083B480) 

STLINK成功調試

Open On-Chip Debugger 0.10.0-dev-00278-ga53935e-dirty (2017-05-09-09:25) 
Licensed under GNU GPL v2 
For bug reports, read 
    http://openocd.org/doc/doxygen/bugs.html 
srst_only separate srst_nogate srst_open_drain connect_assert_srst 
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD 
adapter speed: 4000 kHz 
adapter_nsrst_delay: 100 
Info : clock speed 4000 kHz 
Info : STLINK v2 JTAG v27 API v2 M v15 VID 0x0483 PID 0x374B 
Info : using stlink api v2 
Info : Target voltage: 0.023669 
Error: target voltage may be too low for reliable debugging 
Info : STM32F765VITx.cpu: hardware has 8 breakpoints, 4 watchpoints 
Info : accepting 'gdb' connection on tcp/3333 
STM32F765VITx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x080023cc msp: 0x20080000 
Info : flash size probed value 2048 
Info : flash size probed value 2048 
STM32F765VITx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x080023cc msp: 0x20080000 
STM32F765VITx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x080023cc msp: 0x20080000 
Info : Padding image section 0 with 8 bytes 
Info : Padding image section 1 with 24 bytes 
STM32F765VITx.cpu: target state: halted 
target halted due to breakpoint, current mode: Thread 
xPSR: 0x61000000 pc: 0x20000084 msp: 0x20080000 
Warn : keep_alive() was not invoked in the 1000ms timelimit. GDB alive packet not sent! (4290). Workaround: increase "set remotetimeout" in GDB 
STM32F765VITx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x080023cc msp: 0x20080000 

JLINK指揮官失敗日誌

SEGGER J-Link Commander V6.16c (Compiled Jun 16 2017 18:15:26) 
DLL version V6.16c, compiled Jun 16 2017 18:14:49 

Connecting to J-Link via USB...O.K. 
Firmware: J-Link V10 compiled Jun 16 2017 16:15:19 
Hardware version: V10.10 
S/N: 260101191 
License(s): FlashBP, GDB 
OEM: SEGGER-EDU 
VTref = 3.348V 


Type "connect" to establish a target connection, '?' for help 
J-Link>connect 
Please specify device/core. <Default>: STM32F765VI 
Type '?' for selection dialog 
Device> 
Please specify target interface: 
    J) JTAG (Default) 
    S) SWD 
TIF>s 
Specify target interface speed [kHz]. <Default>: 4000 kHz 
Speed> 
Device "STM32F765VI" selected. 


Connecting to target via SWD 
Found SW-DP with ID 0x5BA02477 
Found SW-DP with ID 0x5BA02477 
Scanning APs, stopping at first AHB-AP found. 
AP[0] IDR: 0x74770001 (AHB-AP) 
AHB-AP ROM: 0xE00FD000 (Base addr. of first ROM table) 
CPUID reg: 0x411FC270. Implementer code: 0x41 (ARM) 
Found Cortex-M7 r1p0, Little endian. 
FPUnit: 8 code (BP) slots and 0 literal slots 
CoreSight components: 
ROMTbl[0] @ E00FD000 
ROMTbl[0][0]: E00FE000, CID: B105100D, PID: 000BB4C8 ROM Table 
ROMTbl[1] @ E00FE000 
ROMTbl[1][0]: E00FF000, CID: B105100D, PID: 000BB4C7 ROM Table 
ROMTbl[2] @ E00FF000 
ROMTbl[2][0]: E000E000, CID: B105E00D, PID: 000BB00C SCS 
ROMTbl[2][1]: E0001000, CID: B105E00D, PID: 000BB002 DWT 
ROMTbl[2][2]: E0002000, CID: B105E00D, PID: 000BB00E FPB 
ROMTbl[2][3]: E0000000, CID: B105E00D, PID: 000BB001 ITM 
ROMTbl[1][1]: E0041000, CID: B105900D, PID: 001BB975 ETM-M7 
ROMTbl[0][1]: E0040000, CID: B105900D, PID: 000BB9A9 TPIU-M7 
Cache: Separate I- and D-cache. 
I-Cache L1: 16 KB, 256 Sets, 32 Bytes/Line, 2-Way 
D-Cache L1: 16 KB, 128 Sets, 32 Bytes/Line, 4-Way 
Cortex-M7 identified. 
J-Link>r 
Reset delay: 0 ms 
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit. 
Setting AIRCR.SYSRESETREQ 
J-Link>loadbin C:\Users\User\workspace_10\DC_Booster_F756\Debug\DC_Booster_F756.bin,0x08020000 
Downloading file [C:\Users\User\workspace_10\DC_Booster_F756\Debug\DC_Booster_F756.bin]... 
J-Link: Flash download: Flash programming performed for 2 ranges (131072 bytes) 
J-Link: Flash download: Total time needed: 6.157s (Prepare: 0.022s, Compare: 0.081s, Erase: 4.931s, Program: 1.116s, Verify: 0.000s, Restore: 0.005s) 
J-Link: Flash download: Restarting flash programming due to program error (possibly skipped erasure of half-way erased sector). 
J-Link: Flash download: Skip optimizations disabled for second try. 
Error while programming flash: Programming failed. 
J-Link>verifybin C:\Users\User\workspace_10\DC_Booster_F756\Debug\DC_Booster_F756.bin,0x08020000 
Loading binary file C:\Users\User\workspace_10\DC_Booster_F756\Debug\DC_Booster_F756.bin 
Reading 546556 bytes data from target memory @ 0x08020000. 
Verify failed @ address 0x08065522. 
Expected FE read 00J-Link> 
+0

從一個地址跳轉到另一個,而在大多數情況下使用硬件調試器是不可靠的,當在軟件中實施的跳躍作爲外部硬件不更多地瞭解它,因爲通常調試是一個連續的過程。 我在使用Bootstrap loader for MSP430時也面臨類似的問題。硬件調試器首先加載關於從一個單獨的文件刷新當前程序的調試信息,當控制轉移到另一個不同的程序所在的地址時,調試器不知道該程序的調試符號 – Gaurav

+0

我也這麼認爲。那麼如何調試在bootloader之後運行的代碼?我可以調用調試器從主應用程序地址開始調試嗎? –

+0

另一個有趣的事情是,OpenOCD上的STLINK工作正常。我之前在STM32F4上使用舊版本的eclipse和較早版本的GNU ARM插件和舊版本的Jlink進行了這個項目。在Jlink –

回答

0

我接觸到Segger的傢伙,他們創建了一個wiki頁面,詳細說明如何解決問題。要使Jlink知道STM32F7器件上的Dual Bank配置,必須將Jlink Open Flash加載器與包含Dual Bank配置信息的自定義腳本一起使用。一旦完成,當程序從引導加載程序跳轉到主應用程序時,Jlink調試程序沒有問題。以下是讓Jlink能夠在Dual Bank模式下工作的步驟。

  • 首先,使用最新版本的616F起
  • 下載和Jlink wiki放置預編譯的二進制(ST STM32F7xxxx_2MB_DualBank.elf)到文件夾包含Jlink.exe和JLinkDevices.xml
  • 編輯JLinkDevices。 xml包含與MCU相關的信息,並指示它使用預編譯的二進制文件,而不是Jlink中的默認文件。添加數據庫標籤之下以下的開始: <!-- This entry will overwrite the existing device entry in the J-Link software, so that a custom flash algorithm is used for the internal flash --> <Device>
    <ChipInfo Vendor="ST" Name="STM32F765VI" Core="JLINK_CORE_CORTEX_M7" /> <FlashBankInfo Name="Internes Flash" BaseAddr="0x08000000" MaxSize="0x00200000 " Loader="ST_STM32F7xxxx_2MB_DualBank.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" /> </Device>

  • 如果您安裝了JLINK的多個版本,請確保您正在使用的有JLinkDevices.xml編輯使用預編譯的二進制在調試一個會話。

0

根據第一個日誌,在我看來,J-Link會擦除閃存,然後從地址0x08020000開始對其進行編程 - > no bootloader,並且在0x08000000處執行任何操作 - >跳至hardFault(儘管未找到處理程序在向量表中並且CPU鎖定)。我不是的J-Link的專家,但我們用它在一個類似的工具鏈,具有以下情形:

  • 的BSL和應用程序二進制文件使用一個簡單的工具組合並通過的J-Link一起閃現。之後可以通過連接到運行目標來調試任何一個。
  • BSL被排除和取代的由「存根」僅執行跳轉到應用

兩個工作得很好。

+0

我已經檢查過讀出閃存,即使在bootloader和mainapp出現時,它仍然存在跳躍問題。但我相信我已經隔離了這個問題。我在Dual Bank配置中運行控制器。如果我切換到Single Bank Configuration,那麼在Jlink中跳轉沒有問題。使用OpenOCD的STLink調試器也知道這個配置,並且在Dual Bank模式下跳轉時沒有問題。但我認爲Jlink不知道Dual Bank模式,所以在跳轉模式時會出現問題。我怎樣才能讓它意識到行業數量和地址的變化? –

+0

關於您關於正在擦除引導加載程序的建議不正確。它只是Jlink正在擦除的應用代碼區域。引導加載程序總是運行良好,並且只有發生硬故障跳轉後。 –

+0

我想你已經嘗試了傾銷和比較由JLink和OpenOCD – gyorig

相關問題