STM32CubeMX 5.4.0: code generation for TRACER_EMB fails when choosing USART2 as Uart Trace Source
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-11-08 1:08 AM
Hi,
When choosing USART2 as "Uart Trace Source" for the TRACER_EMB the generated tracer_emb_conf.h file contains a Java backtrace, and the generated project cannot be built.
#define TRACER_EMB_USART_IRQHANDLER USART2_IRQHandler
#define TRACER_EMB_TX_AF_FUNCTION LL_GPIO_SetAFPin_0_7
Error: on line 185, column 6 in tracer_emb_conf_g0.ftl
Expecting a number here, found: valueNotSetted
The problematic instruction:
----------
==> if-else [on line 185, column 1 in tracer_emb_conf_g0.ftl]
----------
Java backtrace for programmers:
----------
freemarker.core.NonNumericalException: Error: on line 185, column 6 in tracer_emb_conf_g0.ftl
Expecting a number here, found: valueNotSetted
I have attached the full STM32CubeMX project file, and the generated tracer_emb_conf.h.
As a workaround I use the LPUART, code generation works in this case.
Best regards,
Christoph
- Labels:
-
Bug-report
-
STM32CubeMX
-
UART-USART
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-11-08 1:54 AM
​Hello @Christoph Rüdisser​
Thanks for the feedback, Issue will be fixed in the next release.
We are deeply sorry for any inconvenience this may have caused.
Best Regards,
Khouloud
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-11-08 2:17 AM
Thanks.
More things which took me some time to figure out:
- I had to select the LL driver for the LPUART in the advanced settings in the "Project Manager" tab in STM32CubeMX. Only then I could get TRACER_EMB to work with the LPUART, by default the HAL driver was selected.
- The calls to the tracer interrupt handlers in stm32g0xx_it.c were not generated by CubeMX. I have added the following:
void DMA1_Channel2_3_IRQHandler(void)
{
/* USER CODE BEGIN DMA1_Channel2_3_IRQn 0 */
#if defined(_TRACE)
TRACER_EMB_IRQHandlerDMA();
#endif /* _TRACE */
/* USER CODE END DMA1_Channel2_3_IRQn 0 */
void USART3_4_LPUART1_IRQHandler(void)
{
/* USER CODE BEGIN USART3_4_LPUART1_IRQn 0 */
#if defined(_TRACE)
TRACER_EMB_IRQHandlerUSART();
#endif /* _TRACE */
/* USER CODE END USART3_4_LPUART1_IRQn 0 */
Shouldn't these things also be done by STM32CubeMX? If not, some documentation / implementation guide would be really helpful!
Best regards,
Christoph
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-11-08 7:20 AM
​I'll share your request with team.
Regrads,
Khouloud
