I run a project on RTOS base on embOS of Segger. Now I want to add a BLE task base on Nordic BLE peripheral UART. As a standalone project not on RTOS it is run O.K. But when I add it to the RTOS I get a warning it is overlap on other sectors. When I check in the option menu of the SES I found there is a softdevice hex which load into the FLASH and it make the problem. I descase this issue with Segger support and they told me I can write this hex to a dedicate add in the FLASH. But I don't know when it best fit in my project and don't make sectors problem. I also don't know how can I set the BLE to read the hex file from the address I put it on.
If there someone use the BLE UART in RTOS project and face this overlap problem, can help we where address is safe to place it on and which define I need to use to inform the task to read the softdevice hex from that address?
The embOS RTOS is provided by Segger, and not officially supported by Nordic, so we in Nordic have little experience with it. The nRF5 SDK officially support FreeRTOS, and you can find examples that uses FreeRTOS in the nRF5 SDK. You might also want to take a look at Zephyr RTOS.
That said, it might be easier to start with a SES BLE project in the nRF5 SDK, and try to add embOS to that project. Documentation for the SoftDevice Memory resource map and usage can be found here.
I was copy the flash placement Macro as was show on the BLE project to my project and add the relevant define in the flash_placment.xml. I look on the MAP and I see that I get a reserve area on start of the FLASH size 0x26000 and start of the RAM size 0x2a98 as written in the Macros .But I don't understand how the SoftDevice know it reserve for him?
More then that I can make the linking and get run but very quickly it go to no code because the FLASH has some corrupt. It is look the SoftDevice get out of its bondury, or not set on the right place.
So the question is the SoftDevice as in FLASH use and RAm know where to be place without any command from me?
In the S140 v6.1.1 release notes we have the following:
Flash: 152 kB (0x26000 bytes).RAM: 5.54 kB (0x1628 bytes). This is the minimum required memory. The actual requirements depend on the configuration chosen at sd_ble_enable() time.
And from the figure here, flash starts at 0x0000000, and RAM at 0x20000000