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


USB CDC Receiving

Hello.

I transmit from PC to STM32F4 big packets through USB CDC FS. There aare more than 64 bytes. In this case funtion CDC_Receive_FS () is called more than one time. I want to know, can I know if the receiving frame is a single message or part of big packet, can I know the size of such big packet? (Maybe there is some flag or smth else.)

yes you can but you have to modify the cdc base class code

the usb transaction is is setup in
USBD_CDC_ReceivePacket
...
USBD_LL_PrepareReceive(pdev,
CDC_OUT_EP,
hcdc->RxBuffer,
CDC_DATA_FS_OUT_PACKET_SIZE);
}

CDC_DATA_FS_OUT_PACKET_SIZE is 64 that tell usb layer to get ready to receive up to 64 byte from host.

you could set this to any 64 mulmiple if to receie more at once
But if you do it is likley to brake any default host “com driver” and s/w.

With that you’ll be abble to receive longer “usb transfer” but you want get any “64” byte long message :-(
on usb when both host and device side want to to do biger transfer than the max packet size (64 here)
it require both side to be aware of it so that a spcial zero length packet is send for any exact 64 byte transfer. without it the over side wait for more.

So it may work but with custom host s/w only.


Hi everyone,

I am looking for an answer to the same question as Slavius.

Here, I do not want to modify the USBD_CDC_ReceivePacket that can break any default host “com driver” as diabolo38 said. I want to know if there is any raised flag when receiving more than 64 bytes? (the max packet size to receive is 64).

example:
the host send a 100 bytes packet to the device. (the packet size can differ in time). So it will be splitted into a 64 bytes and a 36 bytes.
the question is: will there be a flag that will be raised to say to the device “you received a 64 bytes packet but another to complete the packet is coming”?

thanks