Skip to content
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

PSOC6: correctly align hex files with split text sections #9781

Merged
merged 1 commit into from Feb 25, 2019

Conversation

Projects
None yet
6 participants
@vmedcy
Copy link
Contributor

commented Feb 20, 2019

Description

When the original PSOC6 CM4 hex file contains unalinged text sections
that span through multiple intelhex segments, aligned segments (filled
with zeroes) overlap with the original data segments, resulting in
error thrown by ihex.merge(alignments, overlap='error').
Such hex file can be produced when the ELF is built with ARM MDK Compiler
with --split_sections option:
http://www.keil.com/support/man/docs/armcc/armcc_chr1359124944914.htm

Change the merge strategy to overlap='ignore', so that the overlapping
zero-filled segments are skipped.

Pull request type

[ ] Fix
[ ] Refactor
[X] Target update
[ ] Functionality change
[ ] Docs update1
[ ] Test update
[ ] Breaking change

Reviewers

Release Notes

PSOC6: correctly align hex files with split text sections
When the original PSOC6 CM4 hex file contains unalinged text sections
that span through multiple intelhex segments, aligned segments (filled
with zeroes) overlap with the original data segments, resulting in
error thrown by ihex.merge(alignments, overlap='error').
Such hex file can be produced when the ELF is built with ARM MDK Compiler
with --split_sections option:
http://www.keil.com/support/man/docs/armcc/armcc_chr1359124944914.htm

Change the merge strategy to overlap='ignore', so that the overlapping
zero-filled segments are skipped.

@cmonr cmonr requested review from theotherjimmy and bridadan Feb 20, 2019

@cmonr cmonr added the needs: review label Feb 20, 2019

@cmonr cmonr requested a review from deepikabhavnani Feb 20, 2019

@deepikabhavnani

This comment has been minimized.

Copy link
Contributor

commented Feb 20, 2019

Split section is always enabled for ARM compiler, not sure why this issue was not seen earlier. Am I missing sometime here?

"common": ["-c", "--gnu", "-Otime", "--split_sections",

@bridadan
Copy link
Contributor

left a comment

I would defer to @vmedcy and @deepikabhavnani in this case, its a bit target-specific for me.

@vmedcy

This comment has been minimized.

Copy link
Contributor Author

commented Feb 21, 2019

@deepikabhavnani:

Split section is always enabled for ARM compiler, not sure why this issue was not seen earlier

The issue with unaligned HEX segments was first observed by Cypress BLE development team that tried to include prebuilt BLE stack controller library in GCC_ARM build. The stack library was precompiled using ARM Compiler 5 (with --split_sections option), then linked with arm-none-eabi-gcc using standard mbed compile -t GCC_ARM. GCC linker, unlike armlink, cannot align split functions from object code produced by ARM compiler. PSOC6.py re-aligns the HEX file correctly with this PR applied.
ELF file is aligned correctly when all object code is compiled and linked with ARM Compiler.

@deepikabhavnani

This comment has been minimized.

Copy link
Contributor

commented Feb 21, 2019

@vmedcy - Thanks for explanation

@deepikabhavnani
Copy link
Contributor

left a comment

👍

@0xc0170 0xc0170 added needs: CI and removed needs: review labels Feb 25, 2019

@0xc0170

This comment has been minimized.

Copy link
Member

commented Feb 25, 2019

CI started

@mbed-ci

This comment has been minimized.

Copy link

commented Feb 25, 2019

Test run: SUCCESS

Summary: 12 of 12 test jobs passed
Build number : 1
Build artifacts

@cmonr cmonr added ready for merge and removed needs: CI labels Feb 25, 2019

@cmonr cmonr merged commit 4532e41 into ARMmbed:master Feb 25, 2019

27 checks passed

continuous-integration/jenkins/pr-head This commit looks good
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
jenkins-ci/build-ARM Success
Details
jenkins-ci/build-ARMC6 Success
Details
jenkins-ci/build-GCC_ARM Success
Details
jenkins-ci/build-IAR Success
Details
jenkins-ci/cloud-client-test Success
Details
jenkins-ci/dynamic-memory-usage RTOS ROM(+0 bytes) RAM(+0 bytes)
Details
jenkins-ci/exporter Success
Details
jenkins-ci/greentea-test Success
Details
jenkins-ci/mbed2-build-ARM Success
Details
jenkins-ci/mbed2-build-GCC_ARM Success
Details
jenkins-ci/mbed2-build-IAR Success
Details
jenkins-ci/unittests Success
Details
travis-ci/astyle Local astyle testing has passed
Details
travis-ci/docs Local docs testing has passed
Details
travis-ci/doxy-spellcheck Local doxy-spellcheck testing has passed
Details
travis-ci/events Passed, runtime is 10219 cycles (+1095 cycles)
Details
travis-ci/gitattributestest Local gitattributestest testing has passed
Details
travis-ci/include_check Local include_check testing has passed
Details
travis-ci/licence_check Local licence_check testing has passed
Details
travis-ci/littlefs Passed, code size is 8408B (+0.00%)
Details
travis-ci/psa-autogen Local psa-autogen testing has passed
Details
travis-ci/tools-py2.7 Local tools-py2.7 testing has passed
Details
travis-ci/tools-py3.5 Local tools-py3.5 testing has passed
Details
travis-ci/tools-py3.6 Local tools-py3.6 testing has passed
Details
travis-ci/tools-py3.7 Local tools-py3.7 testing has passed
Details

@cmonr cmonr removed the ready for merge label Feb 25, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.