Skip to content

Update the Nordic nRF52 SDK 15 feature branch #10441

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

Merged
merged 46 commits into from
Apr 29, 2019

Conversation

j3hill
Copy link
Contributor

@j3hill j3hill commented Apr 18, 2019

Description

Update the Nordic nRF52 SDK 15 feature branch to merge the latest QSPI functionality and other updates into Mbed-OS Master.

Pull request type

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

TacoGrandeTX and others added 30 commits April 18, 2019 11:01
- 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)
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
- 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)
Enable UART interfaces to enable serial debug prints.
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.
- 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
- 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
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.
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.
* 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
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.
nRF5x PinNames.h never utilized PORT_SHIFT so removed for clarity after
user commented on it.
- 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
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.
* Update TARGET_NRF5x/README.md to improve "Changing SoftDevice" section
  and added section on NRF52840 CryptoCell310 Support
* Update the file list in TARGET_SDK_15_0/TARGET_SOFTDEVICE_COMMON/README.md
* Add missing CR-LF to Nordic-provided SDK file
* Rename a header file in the TARGET_SOFTDEVICE_S112 tree
 - Brought in new nrfx APIs
 - Brought in PPI additions
 - Removed dead code for RTC
@j3hill
Copy link
Contributor Author

j3hill commented Apr 24, 2019

Thanks to everyone who has taken the time to review this (large) PR to update the Nordic nRF5x target to SDK 15. It is important to note that this PR will replace the Nordic Softdevice (from SDK 14.2) with the Cordio BLE stack. Once this PR is merged, the Mbed-OS will no longer support the Nordic Softdevice. Developers who want to use the Nordic Softdevice (from SDK 14.2) will need to use a previous version of Mbed-OS.

@0Grit
Copy link

0Grit commented Apr 24, 2019

So the Cordio stack will continue to receive first class support in Mbed then?

@pan-
Copy link
Member

pan- commented Apr 25, 2019

Once this PR is merged, the Mbed-OS will no longer support the Nordic Softdevice.

@donatieng Was it planned that way ? I'm confused to say the least as I though soft device and cordio would be both supported at the current time.

@donatieng
Copy link
Contributor

donatieng commented Apr 25, 2019

We'll need #10272 to go on top of that work first to avoid having an un-tested/unsupported configuration on master (Cordio 18.02 LL + SDK15).
What we've tested:

  • Cordio 18.02 LL + nRF SDK 14.2
  • Cordio 19.02 LL + nRF SDK 15

What I suggest:

Also,

Once this PR is merged, the Mbed-OS will no longer support the Nordic Softdevice.

@j3hill Could you confirm this is not the case (current situation is we support both)?
We still need support for both at this stage.

@donatieng
Copy link
Contributor

@loverdeg-ep

So the Cordio stack will continue to receive first class support in Mbed then?

We have no plans to change how we deliver Cordio within Mbed OS.

@j3hill
Copy link
Contributor Author

j3hill commented Apr 25, 2019

I'm adding @desmond-blue to this thread. As you can see in the work he has done for this PR, he certainly provides first class support for the Mbed-OS Cordio BLE stack (and much more). @donatieng Yes. I have confirmed that it is not possible to select the SDK 15 Softdevice with the the changes completed for this PR. It would be possible in a future PR to add support for the SDK 15 Softdevice back into Mbed OS, but it is not part of this (already significant amount of) work.

@adbridge adbridge changed the base branch from master to feature-nrf52-sdk15 April 26, 2019 14:22
@adbridge adbridge changed the title Update the Nordic nRF52 SDK 15 feature branch to merge into Mbed-OS master Update the Nordic nRF52 SDK 15 feature branch Apr 26, 2019
@adbridge
Copy link
Contributor

ci started

@adbridge
Copy link
Contributor

At @donatieng 's request, the feature branch has been reset to current master and then this PR retargeted there.

@donatieng
Copy link
Contributor

Thanks @adbridge !

@mbed-ci
Copy link

mbed-ci commented Apr 26, 2019

Test run: FAILED

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

Failed test jobs:

  • jenkins-ci/mbed-os-ci_cloud-client-test

@alekla01
Copy link
Contributor

Restarted cloud-client-test

@maclobdell
Copy link
Contributor

Any update on this one? We have partners/customers anxiously awaiting this.

@pan-
Copy link
Member

pan- commented May 10, 2019

@maclobdell Softdevice support is being reintroduced.

@paul-szczepanek-arm
Copy link
Member

I am working to get the link layer needed by the SDK 15 merged into the feature branch prior to it being merged into master.

@paul-szczepanek-arm
Copy link
Member

depends on #10542

@edablan
Copy link

edablan commented Jun 10, 2019

@pan-
Any word on how long softdevice support will continue for newer version of mbedOS? The comment above makes it seem its being reintroduced for newer upcoming versions of mbedOS, but not sure for how long. When will the Cordio Stack be fully implemented with SDK15? I ask because we have a product that is in its final stages. Not sure if we will have time to quickly port to Cordio by then.

@pan-
Copy link
Member

pan- commented Jun 11, 2019

@edablan One month later I can announce that mbed-os 5.13 will just support the Cordio stack and uses SDK15. There's no plans (yet) to reintroduce the softdevice - I know it contradicts with my previous statement.
Cordio or SoftDevice are just implementation details; there's a single API for BLE that is supposed to work on multiple stacks. Please don't hesitate to report issues if you have any.

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.