This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

(CycloneTCP) - osSemaphoreWait hangs

I have installed CMSIS_RTX on my Infineon XMC4800 microcontroller (ARM Cortex M4). I have also installed CycloneTCP Tcp/Ip stack on top of it and everything compiles fine.
CycloneTCP is a free, opensource library which implements a lot of protocols.

However, when I try one of the examples comming with CycloneTCP for XMC4800, the system hangs when the tcp/ip stack is initialized at the very beginning of the code.

At some place, an OsEventCreate call is made which creates a semaphore. The semaphore is created successfully, but the call to osSemaphoreWait hangs.

bool_t osCreateEvent(OsEvent *event)
{
   //Create a binary semaphore object
   event->id = osSemaphoreCreate(&semaphoreDef, 1);

   //Check whether the returned semaphore ID is valid
   if(event->id != NULL)
   {
      //Force the specified event to the nonsignaled state
      osSemaphoreWait(event->id, 0);
...

I am using the correct drivers for my PHY and for my Ethernet Interface.

Does someone know/have the same experience why the system hangs. It seems unlogical because the call to osSemaphoreWait should return immediately when the resource is locked.

I blocks on the instruction BLX R4 in SVC_User() function in HAL_CM4.S

I have little experience in RTOS, so any help is very welcome.
I'm glad to hear it if more info is needed.

Parents
  • Some early Infineon XMC4 devices required special handling.

    When you select an Infineon XMC4 device in uVision it should automatically select the appropriate RTX library.

    Therefore check first if you have the correct device selected and the Infineon specific RTX library is used.

    You should see the RTX_CM3_IFX.lib or RTX_CM4_IFX.lib in your project.

Reply
  • Some early Infineon XMC4 devices required special handling.

    When you select an Infineon XMC4 device in uVision it should automatically select the appropriate RTX library.

    Therefore check first if you have the correct device selected and the Infineon specific RTX library is used.

    You should see the RTX_CM3_IFX.lib or RTX_CM4_IFX.lib in your project.

Children