This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

When calling sd_ble_version_get(&soft_version) I get an

I am attempting to port code from sdk 11 to 15. Some of the code is __older__ and in need of updating. A line which runs during the application init calls the sd_ble_version_get function with a non NULL pointer of the correct type. Immediately the SD throws an error and jumps to the debug error handler.

My search revealed this in the docs

my info in null, so I seem to be suffering an invalid memory access. The passed pointer is in the application memory (as far as I can tell) and should not be protected.

I look forward to feedback.

Parents
  • Found that part of the library code which has been imported was attempting to access soft device ram directly, The access seems to have not thrown an error, but when this gets called it __looks__ like a write and I get the access fault. Reworking the library has made all the difference.

  • Nordic has installed a memory write protection detector in their device to guard against invalid writes into the softdevice memory region. It is pretty cool. They call it an MWU "Memory Watch Unit". See chapter 45 of the nRF52 product specification. When you get their assert - this happens you write to their memory - you can check the MWU registers and see if indeed a memory write happened that was in their region. Unfortunately, there is no traceback capability back to the offending caller.

Reply
  • Nordic has installed a memory write protection detector in their device to guard against invalid writes into the softdevice memory region. It is pretty cool. They call it an MWU "Memory Watch Unit". See chapter 45 of the nRF52 product specification. When you get their assert - this happens you write to their memory - you can check the MWU registers and see if indeed a memory write happened that was in their region. Unfortunately, there is no traceback capability back to the offending caller.

Children
No Data
Related