Compiler settings of MDK Middleware library version 7
Closed this issue · 5 comments
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.
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.
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.
AC6 compiler settings:
- Optimization: -Oz image size
- Language C: c99
- Short enums/wchar
- One ELF Section per Function
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).
Thanks for the information. My project is built with -Os, that explains the increase in size.