-
Notifications
You must be signed in to change notification settings - Fork 3k
K64F, STM32F429: IAR linker scripts dynamic heap fix #10938
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
Conversation
… available memory.
@tymoteuszblochmobica, thank you for your changes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Is it this generic change which is not tied to specific IAR version? If it is I like a lot. I try to google that with expanding size and did not found any matching content than GitHub mbedos #8306.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Should this be done for all targets?
@deepikabhavnani was working on this for all targets. Can't quite follow where that work reached. This was PR reverting it? Earlier version: #9205 It does require IAR 8, but IAR 7 is not officially supported any more. |
I'd like to see it done for all targets, but don't have a particular problem with doing it piecemeal for a board that needs the memory now for some test, if there's no resource to do the full systematic sweep. Another memory thing that came to my attention recently is having static prioritisation correct in ARM builds for split memory devices like K64F - it should have If you don't fill the small area, spare space there goes totally wasted. Heap won't use it. (Only GCC retarget has split heap support at the moment). How does IAR handle its two DATA regions? Will it fill the small one first? |
Also for K64F, it doesn't have the GCC split heap addition. Unlike IAR+ARM, the first 64K can't be used for static data in GCC, because it can't auto-distribute it between regions, but you could use it for a second heap area. You'd need to turn on |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We already have couple of boards with the expanding heap.
cc @ARMmbed/mbed-os-core |
This PR is to fix following problems for STM32F429 and K64F target |
Dynamic heap support was the needed feature as other toolchains do support it, it was done as part of compiler upgraded by management decision was not to have breaking changes in same release as compiler update. Plan was to un-revert that commit in next minor release. |
I will create a task in the backlog to do the same for all targets. |
It would be worth incorporating my points about GCC split heap and ARMC6 (and IAR?) region prioritization into the same issue. Those will only be relevant to targets with split memory maps like the K64F, but for those, there may be an easy memory gain to get. For K64F, all tools are currently wasting memory for different reasons, so it's kind of a no-score draw. This fix on its own would leave IAR 60-or-so KiB ahead of GCC and ARM. |
CI started |
Test run: SUCCESSSummary: 11 of 11 test jobs passed |
Description
IAR icf linker scripts modified to use dynamic heap allocation of all available memory.
Modified targets
STM32F429
K64F
Pull request type
Reviewers
@kjbracey-arm
@juhhei01
@teetak01
@juhoeskeli
Release Notes