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

M2354: Fix potential issues in TF-M #15174

Conversation

ccli8
Copy link
Contributor

@ccli8 ccli8 commented Nov 22, 2021

Summary of changes

This PR tries to fix the following issues in TF-M, though they are not emergent currently::

  1. Enable initial stack not located in SRAM bank0

    On reset, only SRAM bank0 is enabled. And SRAM bank1/2 will be enabled in immediately following SystemInit(). When initial stack is located in SRAM bank1/2, we will meet trouble because SystemInit() itself needs to use initial stack. To conquer the dilemma, we add preceding code in front of original Systeminit(), which is responsible for enabling SRAM bank1/2 and guarantees no using initial stack.

  2. Fix sector maps of internal/external (SDH) Flash are incompatible, caused by TF-M's MCUboot port.

    This is done by adapting external (SDH) Flash sector size to internal Flash's.

  3. Enlarge firmware upgrade scratch size. There are two advantages:

    1. Get around MCUboot limit which requires scratch size not smaller than image trailer size
    2. Improve wear leveling for the scratch area

Pull request type

[x] Patch update (Bug fix / Target update / Docs update / Test update / Refactor)
[] Feature update (New feature / Functionality change / New API)
[] Major update (Breaking change E.g. Return code change / API behaviour change)

Test results

[] No Tests required for this change (E.g docs only update)
[x] Covered by existing mbed-os tests (Greentea or Unittest)
[] Tests / results supplied as part of this PR

Fix the following issues in TF-M to avoid emergence in the future:
1.  Enable initial stack not located in SRAM bank0
    On reset, only SRAM bank0 is enabled. And SRAM bank1/2 will be enabled in immediately following SystemInit().
    When initial stack is located in SRAM bank1/2, we will meet trouble because SystemInit() itself needs to use initial stack.
    To conquer the dilemma, we add preceding code in front of original Systeminit(), which is responsible for enabling SRAM bank1/2 and guarantees no using initial stack.
2.  Fix sector maps of internal/external (SDH) Flash are incompatible, caused by TF-M's MCUboot port.
    This is done by adapting external (SDH) Flash sector size to internal Flash's.
3.  Enlarge firmware upgrade scratch size. There are two advantages:
    (1) Get around MCUboot limit which requires scratch size not smaller than image trailer size
    (2) Improve wear leveling for the scratch area
@ciarmcom ciarmcom added the release-type: patch Indentifies a PR as containing just a patch label Nov 22, 2021
@ciarmcom ciarmcom requested a review from a team November 22, 2021 07:30
@ciarmcom
Copy link
Member

@ccli8, thank you for your changes.
@ARMmbed/mbed-os-maintainers please review.

@0xc0170
Copy link
Contributor

0xc0170 commented Nov 22, 2021

CI started

@mergify mergify bot added needs: CI and removed needs: review labels Nov 22, 2021
@mbed-ci
Copy link

mbed-ci commented Nov 22, 2021

Jenkins CI Test : ✔️ SUCCESS

Build Number: 1 | 🔒 Jenkins CI Job | 🌐 Logs & Artifacts

CLICK for Detailed Summary

jobs Status
jenkins-ci/mbed-os-ci_build-cloud-example-ARM ✔️
jenkins-ci/mbed-os-ci_build-cloud-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_unittests ✔️
jenkins-ci/mbed-os-ci_build-greentea-ARM ✔️
jenkins-ci/mbed-os-ci_build-greentea-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-example-ARM ✔️
jenkins-ci/mbed-os-ci_build-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_greentea-test ✔️

@0xc0170 0xc0170 merged commit 01ef431 into ARMmbed:master Nov 22, 2021
@mergify mergify bot removed the ready for merge label Nov 22, 2021
@ccli8 ccli8 deleted the nuvoton_m2354_tfm_sram-bank_sector-map_scratch branch November 23, 2021 01:13
@mbedmain mbedmain removed release-type: patch Indentifies a PR as containing just a patch Release-pending labels Nov 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants