ARM-software / MDK-Middleware

MDK-Middleware (file system, network and USB components) source code for Arm Cortex-M using CMSIS-Drivers and CMSIS-RTOS2 APIs.
https://arm-software.github.io/MDK-Middleware/
99 stars 25 forks source link

Compiler settings of MDK Middleware library version 7 #80

Closed mf301 closed 2 weeks ago

mf301 commented 2 weeks ago

I am in the progress of transitioning a project from MDK Middleware version 7 to version 8. The previous version was provided as prebuilt library (Net4_CM3.lib and USB_CM3_L.lib). With the same compiler settings in the project, there is a significant increase in ROM consumption after switching to the source file based version 8.

Is there any guide containing the compiler settings, which were applied for the library build of Middleware version 7 (optimization, compile switches, etc.)? I checked the migration guide, but couldn't find this information.

furbanc commented 2 weeks ago

You have indicated that you are using the "IPv4 only" variant (Net4_CM3_L.lib) and may have forgotten to change the default settings in Net_Config.h. Therefore, the "IPv4/IPv6 dual stack" variant is used, which also adds the IPv6 code to the application.

mf301 commented 2 weeks ago

Thanks for the response, I selected IPv4 only in Net_Config.h. Can you let me know the compiler settings with which Middleware version 7 was built? Especially the optimization level would be good to know.

furbanc commented 2 weeks ago

AC6 compiler settings:

RobertRostohar commented 2 weeks ago

Comparing object image size of prebuilt libraries from V7 and V8 built with AC6 optimization size (-Oz) shows similar sizes.

See the following excerpt for a few Network modules:

MDK-Middleware 7.17.0: Net4_CM3_L.lib - code (ROM) in bytes net_eth.o: 2636 net_tcp.o: 6144 net_http_server.o: 7286

MDK-Middleware 8.0.0: Network - code (ROM) in bytes net_eth.o: 2670 net_tcp.o: 6436 net_http_server.o: 7356

Code size is similar (slightly different due to potentially new features or minor module reorganization).

mf301 commented 2 weeks ago

Thanks for the information. My project is built with -Os, that explains the increase in size.