<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>NRF Connect SDK, build elf with Softdevice</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/123048/nrf-connect-sdk-build-elf-with-softdevice</link><description>I am using the NRF Connect SDK package provided by Qorvo, and adding BLE functions to their package. I am now trying to debug my added code. 
 I am using Ozone as the debugger. 
 if I locate my code at 0, it boots and crashes when it want to talk to the</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 13 Feb 2026 14:25:57 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/123048/nrf-connect-sdk-build-elf-with-softdevice" /><item><title>RE: NRF Connect SDK, build elf with Softdevice</title><link>https://devzone.nordicsemi.com/thread/561124?ContentTypeID=1</link><pubDate>Fri, 13 Feb 2026 14:25:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ab2a4c60-1d0e-4b25-949f-53e2bffe5d85</guid><dc:creator>rexxdad</dc:creator><description>&lt;p&gt;or, Qorvo found another way, create a c file for the softdevice binary, &amp;nbsp;compile to obj, with a linker placement label and use the linker script (.ld) to position this label..&amp;nbsp; builds elf, and produces hex without merghex..&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF Connect SDK, build elf with Softdevice</title><link>https://devzone.nordicsemi.com/thread/543217?ContentTypeID=1</link><pubDate>Tue, 22 Jul 2025 14:00:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2bdb290e-bc19-4829-bf93-25d7dc4eca20</guid><dc:creator>rexxdad</dc:creator><description>&lt;p&gt;So, the net for the original question, use mergehex to merge the hex files and use that to program the device in runtime enviroment.. use debugger the load the elf and softdevice hex while developing under debugger&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF Connect SDK, build elf with Softdevice</title><link>https://devzone.nordicsemi.com/thread/543067?ContentTypeID=1</link><pubDate>Mon, 21 Jul 2025 16:46:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e42f29ad-3786-4abf-b5d2-1480f1c9e037</guid><dc:creator>rexxdad</dc:creator><description>&lt;p&gt;I see&amp;nbsp;&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;// Notify observers about SoftDevice enable request.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;nrf_sdh.c&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;sdh_request_observer_notify&lt;/span&gt;&lt;span&gt;(NRF_SDH_EVT_ENABLE_REQUEST) &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_ERROR_BUSY&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;// Enable process was stopped.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_SUCCESS&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;```&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;in&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;nrf_sdh_enable_request&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;how can&amp;nbsp;it return success, when the observer notify failed?&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF Connect SDK, build elf with Softdevice</title><link>https://devzone.nordicsemi.com/thread/543063?ContentTypeID=1</link><pubDate>Mon, 21 Jul 2025 16:15:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a015947c-fb9a-4b00-86f1-6525445516d9</guid><dc:creator>rexxdad</dc:creator><description>&lt;p&gt;i stepped into nrf_sdh_ble_enable(), and the call to&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ret_code_t ret_code = sd_ble_enable(p_app_ram_start);&lt;/p&gt;
&lt;p&gt;returns rc=2.&lt;/p&gt;
&lt;p&gt;I made the ram usage size extra large&lt;/p&gt;
&lt;p&gt;RAM (rwx) :&amp;nbsp; ORIGIN = 0x200054F8, LENGTH = 0x3AB08&lt;/p&gt;
&lt;p&gt;no change.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF Connect SDK, build elf with Softdevice</title><link>https://devzone.nordicsemi.com/thread/543048?ContentTypeID=1</link><pubDate>Mon, 21 Jul 2025 13:59:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:499c8b58-6b2d-4dbc-a6be-142af33f30f7</guid><dc:creator>rexxdad</dc:creator><description>&lt;p&gt;rc 2 is&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;#define&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_ERROR_SOFTDEVICE_NOT_ENABLED&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;NRF_ERROR_BASE_NUM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; ///&amp;lt; SoftDevice has not been enabled&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF Connect SDK, build elf with Softdevice</title><link>https://devzone.nordicsemi.com/thread/543038?ContentTypeID=1</link><pubDate>Mon, 21 Jul 2025 13:24:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2d4dd4ed-434f-4b35-9296-c5bb53f41918</guid><dc:creator>rexxdad</dc:creator><description>&lt;p&gt;I should have added, using the above startup in Ozone, my application is launched correctly at Reset_Handler, and proceeds to my main function as expected. so whatever the softdevice boot manager invokes did that part correctly&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF Connect SDK, build elf with Softdevice</title><link>https://devzone.nordicsemi.com/thread/542944?ContentTypeID=1</link><pubDate>Mon, 21 Jul 2025 01:27:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e7a6117a-d198-4117-82ca-8fd29003939a</guid><dc:creator>rexxdad</dc:creator><description>&lt;p&gt;I think Softdevice was at lesat initialized at boot,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;the Ozone startup gets the info from address 0 in flash&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Target.LoadMemory (&amp;quot;/home/sam/Downloads/DW3_QM33_SDK_1.0.2.new/SDK/Firmware/SDK_BSP/Nordic/NORDIC_SDK_17_1_0/components/softdevice/s140/hex/s140_nrf52_7.2.0_softdevice.hex&amp;quot;, 0x00000000);&lt;br /&gt;J-Link: Flash download: Bank 0 @ 0x00000000: Skipped. Contents already match&lt;br /&gt;Target.ReadU32 (0x00000000); // returns 0x4, data is 0x20000400&lt;br /&gt;Target.SetReg (&amp;quot;SP&amp;quot;, 0x20000400);&lt;br /&gt;Target.ReadU32 (0x00000004); // returns 0x4, data is 0xA81&lt;/p&gt;
&lt;p&gt;Target.SetReg (&amp;quot;PC&amp;quot;, 0xA81);&lt;/p&gt;
&lt;p&gt;the app startup addresses&amp;nbsp; are different(at 0x27000)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: NRF Connect SDK, build elf with Softdevice</title><link>https://devzone.nordicsemi.com/thread/542941?ContentTypeID=1</link><pubDate>Sun, 20 Jul 2025 22:14:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cfd8cbd2-e93e-4ecc-81cf-7d46cb5fa8c9</guid><dc:creator>rexxdad</dc:creator><description>&lt;p&gt;I havent solved the elf build issue, but using the Ozone startup script I can get both loaded..&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;now I am trying to figure out what rc=2 means&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I copied the startup code from the SDK_BSP/Nordic/NORDIC_SDK_17_1_0/examples/ble_central_and_peripheral/experimental/ble_app_multirole_lesc/main.c&lt;/p&gt;
&lt;p&gt;using this layout from the ld file&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MEMORY&lt;br /&gt;{&lt;br /&gt;FLASH (rwx) : ORIGIN = 0x00027000, LENGTH = 1M - 156K - 4K - 4K &lt;br /&gt;CALIB_SHA (rw) : ORIGIN = 0x000FE000, LENGTH = 4K&lt;br /&gt;CALIB (rw) : ORIGIN = 0x000FF000, LENGTH = 4K&lt;br /&gt;RAM (rwx) : ORIGIN = 0x20002ae8, LENGTH = 0x3d518&lt;br /&gt;}&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;```&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;/**@brief Function for initializing the BLE stack.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; *&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; * @details Initializes the SoftDevice and the BLE event interrupts.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; */&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;static&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ble_stack_init&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ret_code_t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;err_code&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;err_code&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nrf_sdh_enable_request&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;APP_ERROR_CHECK&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;err_code&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;// Configure the BLE stack by using the default settings.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;// Fetch the start address of the application RAM.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;uint32_t&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;strong&gt;app_ram_base&lt;/strong&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;err_code&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nrf_sdh_ble_default_cfg_set&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;APP_BLE_CONN_CFG_TAG&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&amp;amp;&lt;strong&gt;app_ram_base&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;); &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// this got the value from the RAM stmt in the ld file.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;0x20002AE8&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;APP_ERROR_CHECK&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;err_code&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;// Enable BLE stack.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;err_code&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;nrf_sdh_ble_enable&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;strong&gt;app_ram_base&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;APP_ERROR_CHECK&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;err_code&lt;/span&gt;&lt;span&gt;); &amp;lt;---------- (my code below)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;// Register a handler for BLE events.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;NRF_SDH_BLE_OBSERVER&lt;/span&gt;&lt;span&gt;(m_ble_observer, &lt;/span&gt;&lt;span&gt;APP_BLE_OBSERVER_PRIO&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;ble_evt_handler&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;NULL&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;
```&lt;/div&gt;
&lt;p&gt;and get to here&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;app_ram_base = 0x20002ea8;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; err_code = nrf_sdh_ble_enable(&amp;amp;app_ram_base);&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; APP_ERROR_CHECK(err_code);&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;and err_code = 2&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>