cancel
Showing results for 
Search instead for 
Did you mean: 

How do you formally report bugs in the HAL drivers and MX Cube?

Garnett.Robert
Senior III

Hi All,

I continually have problems with the HAL drivers and CubeMX. ST Doesn't seem to have a proper bug tracking and reporting system. If they have, I haven't been able to find it.

I have posted bugs to the support system, but never seem to get any response.

Yesterday I built a SPI to Ethernet interface with a simple LCD display for use as a data server interface to a real time power monitor. I used CubeMX to do this.

When I built it I had errors when compiling lwip.c. Viz

compiling lwip.c...
../LWIP/App/lwip.c(85): error:  #55-D: too many arguments in invocation of macro "osThreadDef" 
    osThreadDef(EthLink, ethernet_link_thread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE *2);
../LWIP/App/lwip.c(85): error:  #20: identifier "EthLink" is undefined
    osThreadDef(EthLink, ethernet_link_thread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE *2);
../LWIP/App/lwip.c(85): error:  #144: a value of type "void (*)(void *)" cannot be used to initialize an entity of type "osPriority_t"
    osThreadDef(EthLink, ethernet_link_thread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE *2);

This code used to compile OK in previous versions and I have working ethernet on these projects.

The code in error is shown below:

  /* Create the Ethernet link handler thread */
  osThreadDef(EthLink, ethernet_link_thread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE * 2);
  osThreadCreate (osThread(EthLink), &gnetif);

The definition of osThreadDef found by right clicking and looking up the definition is found in cmsis_0s.h and is shown below;

//  ==== Thread Management Functions ====
 
/// Create a Thread Definition with function, priority, and stack requirements.
/// \param         name          name of the thread function.
/// \param         priority      initial priority of the thread function.
/// \param         instances     number of possible thread instances (used to statically allocate memory).
/// \param         stacksz       stack size (in bytes) requirements for the thread function.
#if defined (osObjectsExternal)  // object is external
#define osThreadDef(name, priority, instances, stacksz) \
extern const osThreadDef_t os_thread_def_##name
#else                            // define the object
#define osThreadDef(name, priority, instances, stacksz) \
static uint32_t os_thread_stack##name[(stacksz)?(((stacksz+3)/4)):1]; \
static StaticTask_t os_thread_cb_##name; \
const osThreadDef_t os_thread_def_##name = \
{ (name), \
  { NULL, osThreadDetached, \
    (instances == 1) ? (&os_thread_cb_##name) : NULL,\
    (instances == 1) ? sizeof(StaticTask_t) : 0U, \
    ((stacksz) && (instances == 1)) ? (&os_thread_stack##name) : NULL, \
    4*((stacksz+3)/4), \
    (priority), 0U, 0U } }
#endif

I do not understand what the problem is as I am no C expert. Can anyone help me on what the problem might be.

I have had three bugs in AHL drivers over the past six months and patched them myself as I have given up on ST.

What annoys me is that ST Bug Support is pretty much non-existent as far as I can see. Bug reporting is as much a service to the company as it is to customers as it represents testing of the software. Complex bugs can take an hour to properly define and write up, The company is getting that time for free.

I use KiCad for my pcb design. I always use the Nightly builds of this and have had a couple of bugs which I have reported on their bug reporting system. The system is great easy, to use and it gets fast reposes from their staff. Why can't a large company like ST do the same?

What do other people think?

Best regards

Rob

3 REPLIES 3
Garnett.Robert
Senior III

Additional

I patched lwip.c with a "raw" freeRTOS call to create a task:

	/******************************* rjgMod **********************************/	
  /* Create the Ethernet link handler thread */
//  osThreadDef(EthLink, ethernet_link_thread, osPriorityNormal, 0, configMINIMAL_STACK_SIZE * 2);
//  osThreadCreate (osThread(EthLink), &gnetif);
 
	/* Monitor  Task */
	xTaskCreate(ethernet_link_thread,
							(char const*)"ethernetLinkTsk",
							600,
							NULL,
							6,
							ethernetTaskHnd);	
							
	/******************************* End rjgMod ******************************/		

It now compiles and builds. (Don't like cmsis os interface anyway. It's obtuse)

I don't know if it works yet.

That's for another installement!

S.Ma
Principal

It would be interesting to know how SW bug reporting / experience is done in similar companies for microcontrollers.

Anyone?

Garnett.Robert
Senior III

As usual no interest shown from ST in this topic!