cancel
Showing results for 
Search instead for 
Did you mean: 

Unable to get output SWV for debugging on a STM32H723ZGTX

PadNyammo
Associate II

I do not have any output via SWV or via COM port debugging using a STM32H723ZGTX.

I am using a nucleo ST-link breakoff board to program with no issue.

I have tried solutions provided in both following threads:

https://community.st.com/t5/other-tools-mcus/no-traceswo-output-on-stm32h7xx/m-p/395490

https://community.st.com/t5/stm32-mcus/how-to-redirect-the-printf-function-to-a-uart-for-debug-messages/ta-p/49865

Any suggestions would be much appreciated.

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
PadNyammo
Associate II

This issue has now been resolved, it was a poor solder connection between the SWO pin and the PCB. 

This was a simple mistake that I should have caught early on.

Thanks AScha.3 for helping out.

View solution in original post

15 REPLIES 15
STTwo-32
ST Employee

Hello @PadNyammo and welcome to the ST Community :smiling_face_with_smiling_eyes:.

I suggest you to take a look at this post. It may solve your issue.

Best Regards.

STTwo-32 

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

As suggested in the linked thread, I increased the buffer size to 20,000,000 with no luck. I have also ensured that my ST-Link programmer is up to date, version V2J43M28.

I am able to get an output on the live expressions in the CubeIDE, but no output on any SWV window(ITM data Console, data logger etc.) I have followed this official guide https://www.youtube.com/watch?v=-X8tndfqTu8 .

SWV is enabled in debug configuration and set to the HSI core clock. Under ITM Stimulus Ports port 0 is also checked, and I have started the trace (red button).

Any help would be greatly appreciated, I have been stuck on this for quite some time.

 

PadNyammo
Associate II

Bump?

Bump??

Just - you have connected : swd, swc, swo , gnd  ( + vcc is 3v3 ) ?

IF this connected, set in Cube/.ioc the ->

AScha3_0-1706733193840.png

THEN can get swv working - but little bit of game : (it will not work on first try ! )

Rules : start debug, pause it, open swv window, check port0 is set, -> ok , then click red button, run, stop debug.

Then do same again...if not working : same again ... it should work now.

IF it works, it will work in your next debug sessions also, you need to do nothing then - it just works (no button/start etc.) . 

btw

How you "see" it working ? printf(xx) ? 

you need to put (at end of main.c ) :

 

 

int __io_putchar(int ch)
{
    ITM_SendChar(ch);
    return (ch);
}

/* USER CODE END 4 */

 

 

and in while loop some printf ...but not too much ! (serial buffer will overflow! ) (+ without \n it wont work)

 

 

	  printf("test swv \r\n");
	  HAL_Delay(1000);
    /* USER CODE END WHILE */

 

 

 

 

If you feel a post has answered your question, please click "Accept as Solution".

>>Bump?

Yeah, don't do that, provide a narrative of what exactly you've done, and results you've observed, diagram what your circuit looks like, content of salient registers.

Linking to other posts and videos, and saying "did that" isn't good in understanding YOUR situation.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

SWDIO,SWCLK,SWO,!RST,GND and VCC at 3.3V is connected. I am able to program the board without issue and can read live expressions within the IDE.

Under SYS Mode and configuration I do not have "trace asynchronous Sw" avaliable to choose from, however under Trace and Debug -> Debug "trace asynchronous Sw" has already been selected.

 

PadNyammo_1-1706735158231.png

int __io_putchar(int ch)

function also does not work, there is no output.

I have also attempted using the following, which was suggested in an official ST video https://www.youtube.com/watch?v=-X8tndfqTu8 :

ITM_Port32(31) = 1;
ITM_Port32(31) = 2;
int _write(int file, char *ptr, int len){
int DataIdx;
for(DataIdx=0; DataIdx<len; DataIdx++)
{
ITM_SendChar(*ptr++);
}
return len;
}

I am trying to print the following, and do no think this is enough for the serial buffer to overflow.

printf("Hello World\n\r");
HAL_Delay(1000);

 

If bumping is not correct etiquette on this forum I apologize.

I have provided the steps for what I have done, and the results I have observed.

Do you have a suggestion for which registers you would like me to check the contents of?

Try exactly to do, what i wrote... or find a new way. Its up to you.

If you feel a post has answered your question, please click "Accept as Solution".

? I followed your steps word for word. I checked my connections, checked SYS Mode and explained the trace async option was not available but that it was available under debug. I also explained that adding the

"int __io_putchar(int ch)" function did not result in a printf output the SWV ITM Data console (though i did not say where i was checking for output my bad).

I attempted running,pausing checking port 0 and clicking the start trace button and then stopping the debug. I attempted this multiple times as suggested but to no avail.

I also provided an example message to  show that I believe serial buffer overflow is what is causing this issue.

I also provided an alternate function, which I will not do from here on out. 

Do you have suggestions for next steps, or repeating specific steps you believe I carried out incorrectly?