Keil Logo

MDK MIDDLEWARE: STM32F2/F4/F7 EMAC checksum offload bug


Information in this knowledgebase article applies to:

  • ARM-MDK v5.x
  • STM32F2xx DFP v2.7.0 and older versions
  • STM32F4xx DFP v2.11.0 and older versions
  • STM32F7xx DFP v2.9.0 and older versions

SYMPTOM

Middleware v7.4.1 supports the IP fragmentation feature, but after enabling this option in Net_Config_ETH_0.h, sending packets larger than MTU (fragmented packets) always fail with bad packet checksum errors.

What can cause these errors?

CAUSE

There is a silicon problem in the EMAC peripheral on STM32F2xx/F4xx/F7xx devices when calculating the checksum of data packets. When automatic checksum insertion is enabled and the packet is an IPv4 frame fragment, the MAC may incorrectly insert the checksum into the packet. This corrupts the payload data and generates checksum errors at the receiver.

RESOLUTION

This issue can be patched using updated CMSIS EMAC drivers included in the newer Device Family Packs (DFP). Update your STM32F2xx, STM32F4xx or STM32F7xx DFP pack to a newer version.

Alternatively you can download the updated CMSIS EMAC driver files in the attachment and copy them to your current STM32F2xx, STM32F4xx or STM32F7xx DFP pack folder, e.g. C:\Keil\ARM\PACK\Keil\STM32F4xx_DFP\2.11.0\CMSIS\Driver\

This issue has been reported to STMicroelectronics.

SEE ALSO

ATTACHED FILES

Request the files attached to this knowledgebase article.

Last Reviewed: Thursday, November 30, 2017


Did this article provide the answer you needed?
 
Yes
No
Not Sure
 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.