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

Bring Nordic SDK v15 Update to Master #10666

merged 74 commits into from May 28, 2019


None yet
8 participants
Copy link

commented May 24, 2019


This is a target update for NRF52 targets in Mbed OS and updates the Nordic SDK to version 15. Depends on #10542.

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



TacoGrandeTX and others added some commits Jun 26, 2018

First porting effort covered by JIRA IOTDEV-1572:
- top level files ported from TARGET_NORDIC/TARGET_NRF5x/

Also addressed:
- fixed linking issue for gcc
- added support for nRF52-DK builds, but reverted to using nRF52840 sdk_config.h (must be updated)
- introduced "RTC" to targets.json (might need to be removed eventually)
Ported analogin and pwm_out for IOTDEV-1573.
Also addressed:
- removed dependency on legacy config (excluded apply_old_config.h)
- removed legacy pwm and saadc headers
- Arm Compiler 5 linking issue (a band-aid for now... needs to
  be properly addressed for peripheral sharing)
- added missing header in SoftDevice file
Updates to PWM for IOTDEV-1573
- Missed some NRFX defines that needed to changed
- Set PWM base clock to 125kHz (needs to be reverted back to 1 MHz)
- Updated sdk_config.h for nRF52_DK builds
- Brought in updates from PR7779 (fix for nRF52 PWM issues)
Nordic sdk_config: Configure UART instances
Enable UART interfaces to enable serial debug prints.
serial_api: Fix the interrupt registration for Nordic Serial Device
Using the nrfx_get_irq_number only works with the handle. Since we
know the IRQ numbers for UART0, RTC2 and EGU0, use them directly.
Updates for IOTDEV-1575 and nRF52_DK builds
- Use new NRFX header file
- Fix nRF52832 linker script/ld files (hardcoded addresses for now)
- Temporarily remove DEVICE_TRNG for nRF52832 (which broke the build)
- Improve serial_putc() fix so we don't rely on "extra" functions
Updates for IOTDEV-1576 (only TRNG API)
- Added legacy nrf_drv_rng.c as there is no merit in fully adopting nrfx_rng.c
- Added nrf_queue library component
- Removed apply_old_config.h (unused for some time now)
- Updated sdk_config.h for queue and RNG support for nRF52832
- Brought back RNG into targets.json for nRF52832
Note: nRF52840 still uses CryptoCell 310 for TRNG
NRF52: Fix vector table
Ensure that vector table gets initialized properly. The table that we
initialize in startup_nrf52840.S gets wiped out as the section is
declared as noinit. Fix this by implementing the weak function mbed_sdk_init
that inits the vector table.
nRF52_DK: Use mbed_lib.json to set app_offset (MBED_APP_START)
When the SoftDevice (SD) is enabled we need to set the app_offset
to 0x26000 to make room for the SoftDevice.  If we let the build
tools self-manage this, MBED_APP_START is coming out at 0x25000
which is not correct for the Nordic 15.0 SDK.

The app_offset value is translated to MBED_APP_START by the build
infrastructure.  We were hard coding MBED_APP_START in the scatter
and ld files as a temporary measure while testing.  This now sets
it properly if the SD is being brought in.
Updates after rebase with Mbed master (circa OS v5.10.1)
* Remove NRF_SDH_CLOCK parameters from mbed_lib.json
* Bring in QSPI for nRF52840
* Migrate legacy QSPI driver to SDK v15 (nrfx_qspi.h)
* Remove outdated comment in i2c_api.c
Fix build for nRF51 (fewer common files with nRF52)
The 15.0 SDK doesn't support the nRF51 so it must continue to use the legacy
NRF drivers.  Thus the original common_rtc.c, gpio_api.c and us_ticker.c are
restored and placed under TARGET_NRF5x/TARGET_NRF51.

Likewise the modified common_rtc.c, gpio_api.c and us_ticker.c are moved to
TARGET_NRF5x/TARGET_NRF52 so they are excluded from nRF51 builds.
Remove dead #define PORT_SHIFT
nRF5x PinNames.h never utilized PORT_SHIFT so removed for clarity after
user commented on it.
Add missing SoftDevice build support (MBR, NONE, OTA)
- Add MBR, NONE and OTA SoftDevice build options for S132 and S140
- Add S112 SoftDevice (single build option)
- Some folder restructuring in TARGET_SOFTDEVICE_COMMON was required
Revert "NRF52: Fix vector table"
This reverts commit 3d2fa53.

This was a breaking change for the "MBR" and "NONE" builds.
After testing it was also determined that copying the vector
table a second time wasn't required for the "FULL" build.
Cleanup for feature release
* Update TARGET_NRF5x/ to improve "Changing SoftDevice" section
  and added section on NRF52840 CryptoCell310 Support
* Update the file list in TARGET_SDK_15_0/TARGET_SOFTDEVICE_COMMON/
* Add missing CR-LF to Nordic-provided SDK file
* Rename a header file in the TARGET_SOFTDEVICE_S112 tree
Changes required for rebase:
 - Brought in new nrfx APIs
 - Brought in PPI additions
 - Removed dead code for RTC

This comment has been minimized.

Copy link

commented May 27, 2019

This is a target update for NRF52 targets in Mbed OS and updates the Nordic SDK to version 15. Depends on #10542.

Merged, will start CI shortly


This comment has been minimized.

Copy link

commented May 27, 2019

Test run: SUCCESS

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

Copy link

left a comment

Huge update , lot of work here!

I fetched it locally to review commits.

I would add more details to some fixes, will be checking it more the next time for feature branches integrations.


This comment has been minimized.

Copy link

commented May 27, 2019

@ARMmbed/mbed-os-pan Any testing still to be done, all good ?


This comment has been minimized.

Copy link
Member Author

commented May 27, 2019

Thanks @0xc0170, this is the same code as #10542 which @paul-szczepanek-arm validated so we should be good!

I'll let him give the approval on behalf on the team.

Copy link

left a comment

I take full responsibility.

@0xc0170 0xc0170 merged commit 19e7622 into master May 28, 2019

27 checks passed

continuous-integration/jenkins/pr-head This commit looks good
continuous-integration/travis-ci/pr The Travis CI build passed
continuous-integration/travis-ci/push The Travis CI build passed
jenkins-ci/build-ARM Success
jenkins-ci/build-GCC_ARM Success
jenkins-ci/build-IAR Success
jenkins-ci/cloud-client-test Success
jenkins-ci/dynamic-memory-usage Success
jenkins-ci/exporter Success
jenkins-ci/greentea-test Success
jenkins-ci/mbed2-build-ARM Success
jenkins-ci/mbed2-build-GCC_ARM Success
jenkins-ci/mbed2-build-IAR Success
jenkins-ci/unittests Success
travis-ci/astyle Success!
travis-ci/docs Success!
travis-ci/doxy-spellcheck Success!
travis-ci/events Success! Runtime is 8590 cycles.
travis-ci/gitattributestest Success!
travis-ci/include_check Success!
travis-ci/licence_check Success!
travis-ci/littlefs Success! Code size is 8448B.
travis-ci/psa-autogen Success!
travis-ci/tools-py2.7 Success!
travis-ci/tools-py3.5 Success!
travis-ci/tools-py3.6 Success!
travis-ci/tools-py3.7 Success!

@pan- pan- referenced this pull request May 31, 2019


Fix nrf52 memory pools #10733

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.