Loading...
 

SW4STM32 and SW4Linux fully supports the STM32MP1 asymmetric multicore Cortex/A7+M4 MPUs

   With System Workbench for Linux, Embedded Linux on the STM32MP1 family of MPUs from ST was never as simple to build and maintain, even for newcomers in the Linux world. And, if you install System Workbench for Linux in System Workbench for STM32 you can seamlessly develop and debug asymmetric applications running partly on Linux, partly on the Cortex-M4.
You can get more information from the ac6-tools website and download (registration required) various documents highlighting:

System Workbench for STM32


STM32F417 USB stop communicating

if you did not read it yet i sugest you had a look at
http://stackoverflow.com/questions/33549084/stm32cubemx-usb-cdc-vcp/33555364#33555364Question

in your Transmit you shoud check that usb got connected basicaly that hUsbDevice_0 is not NULL.
also in between this 2 check and CDC_TransmitPacket use no CDC state change shoud hapen ie check and actions shall be atomic with respect to CDC events !
while executing CDC_TransmitPacket it’s best not new usb interrupt can occur or it may corrupt the internal USB controler state, i’m not sure if this happen how well the ST HAL and midleware behave :-(

i remenber i could hangs terminal emulator (no more rx not tx) with simple loopback cdc f/w like yours why i suspect they are some races or tricky things going on the cdc class but i’m not to debug it .

I have a more complex cdc based app very stressing with free rtos i have critical section arround packet send and “shared critical” flag setup, This app brake or misbehave without the cirtical section so to me this where thing go wrongs.


vPortEnterCritical();
pDev->CurOutXFer=pXFer;
pDev->OutState=2;
status = CDC_Transmit_FS(pXFer->TxBuf, pXFer->TxLen);
vPortExitCritical(); //moving this before Tramsit cos races we get stuck


if you have 2 version one ok and not the 2nd is should be easy to spot where is the difference are no ?.