-
Notifications
You must be signed in to change notification settings - Fork 119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ARM newlib contains unoptimised implementations #151
Comments
The Zephyr SDK choose to focus on code size over performance. The ARM Embedded toolchains provides the customer 2 options (newlib and newlib-nano). Currently crosstool-ng doesn't support a means to build multiple newlib's and this enhancement would need to be made to support something similar to the ARM embedded toolchain. |
The following PR crosstool-ng/crosstool-ng#1225 was a starting to at least having the layout for a newlib-nano match how things are done w/the ARM embedded toolchain. |
The following is a summary of the current situation:
Note that the PR #106 only renames the newlib built using the crosstool-ng config to nano; meaning the toolchain will only have the nano variant (without the normal variant). |
In order to resolve this issue, the following changes should be implemented:
@galak Feel free to comment on this. |
That sounds correct. |
The newlib library included as part of the Zephyr SDK ARM toolchain contains unoptimised function implementations (e.g. memset, memcpy) that are normally used in the nano variant.
Since this newlib library is intended to be the full version (i.e. not nano), it should include the optimised function implementations, as the GNU ARM Embedded toolchain does.
This is especially important because the unoptimised implementations (in particular, memcpy) have been reported to be over 10 times slower than the optimised implementations, and this is simply an unacceptable level of performance.
Unoptimised memcpy implementation (gnuarmemb newlib nano / current Zephyr SDK newlib)
Optimised memcpy implementation (gnuarmemb newlib full / should be Zephyr SDK newlib)
A further investigation into this issue is required.
The text was updated successfully, but these errors were encountered: