2022-11-18 09:25 PM
I'm debugging STM32F767NIH6 on a custom board (similar to F767-DISCO).
The program runs in internal RAM (at 0x20000000)
When the debugger is OpenOCD, HAL_RCC_OscConfig fails.
When the debugger is the ST-Link GDB server, all is good. At least, the cube-generated init code passes SystemClock_Config successfully.
The adapter is external ST-LINK v3 mini.
I need the OpenOCD because it can do semihosting.
Any idea why it is failing?
This is my SystemClock_Config:
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
HAL_PWR_EnableBkUpAccess();
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
RCC_OscInitStruct.OscillatorType =
RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE
|RCC_OSCILLATORTYPE_LSE;
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 25;
RCC_OscInitStruct.PLL.PLLN = 432;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 9;
RCC_OscInitStruct.PLL.PLLR = 2;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler(); //<<<<<<<< here it fails
}
//................ etc
}
Below is the OOCD startup log:
Open On-Chip Debugger 0.11.0-rc2+dev-00044-g8340bb0 (2021-06-02-17:29)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
swv
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : STLINK V3J8M3 (API v3) VID:PID 0483:374E
Info : Target voltage: 0.022222
Error: target voltage may be too low for reliable debugging
Info : clock speed 8000 kHz
Info : stlink_dap_op_connect(connect)
Info : SWD DPIDR 0x5ba02477
Info : STM32F767NIHx.cpu: hardware has 8 breakpoints, 4 watchpoints
Info : STM32F767NIHx.cpu: external reset detected
Info : starting gdb server for STM32F767NIHx.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : accepting 'gdb' connection on tcp/3333
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08005e94 msp: 0x20000b38
Info : device id = 0x10016451
Info : flash size = 2048 kbytes
Info : Single Bank 2048 kiB STM32F76x/77x found
OK:2ee0;2;5dc00,18,1f;2ee00,10,ffff;
Info : starting trace server for STM32F767NIHx.tpiu on 3344
Info : Listening on port 3344 for tpiu_swo_trace connections
OK
Info : accepting 'tpiu_swo_trace' connection on tcp/3344
The ST server does NOT complain about the target voltage.
STMicroelectronics ST-LINK GDB server. Version 5.9.1
Copyright (c) 2021, STMicroelectronics. All rights reserved.
Starting server with the following options:
Persistent Mode : Disabled
Logging Level : 1
Listen Port Number : 61234
Status Refresh Delay : 15s
Verbose Mode : Disabled
SWD Debug : Enabled
Waiting for debugger connection...
Debugger connected
2022-11-19 06:42 AM
> When the debugger is OpenOCD, HAL_RCC_OscConfig fails.
Determine the exact line in that function and you will have a clue of the problem.