<?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>SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/89471/ses-6-32-strange-behaviour</link><description>I am experiencing a strange behavior with SES 6.32, using GCC and I wonder if I should choose a different compiler. 
 COMPILING THIS PART OF CODE (I added line numbers for reference) 
 342 static void gap_params_init(void) 343 { 344 ret_code_t err_code;</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 08 Jul 2022 11:42:19 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/89471/ses-6-32-strange-behaviour" /><item><title>RE: SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/thread/376189?ContentTypeID=1</link><pubDate>Fri, 08 Jul 2022 11:42:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:533d6307-315c-487a-a5dd-4a9ba11375e5</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Aha, I see. I was not able to reproduce here, but that could be a coincidence. Generally it could be a good idea to use a toolchain version that is mentioned in the release notes of the SDK you are using, as that version was used during release testing. It is not the first time we have seen issues with specific compiler versions, though it is quite rare.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/thread/376133?ContentTypeID=1</link><pubDate>Fri, 08 Jul 2022 08:31:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8b1aaa6b-767b-48e6-ba35-8c781a82dcff</guid><dc:creator>cmag</dc:creator><description>&lt;p&gt;With the old compiler release I used to have the following settings for DEBUG and RELEASE:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; &amp;lt;configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; Name=&amp;quot;Debug&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; c_preprocessor_definitions=&amp;quot;DEBUG&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; gcc_debugging_level=&amp;quot;Level 3&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; gcc_optimization_level=&amp;quot;&lt;span style="color:#ff0000;"&gt;None&lt;/span&gt;&amp;quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; &amp;lt;configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; Name=&amp;quot;Release&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; c_preprocessor_definitions=&amp;quot;NDEBUG&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; gcc_debugging_level=&amp;quot;None&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; gcc_omit_frame_pointer=&amp;quot;Yes&amp;quot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; gcc_optimization_level=&amp;quot;&lt;span style="color:#ff0000;"&gt;Level 1&lt;/span&gt;&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;With the new compiler DEBUG configuration works fine, while RELEASE crashes, unless I set&amp;nbsp;&lt;span&gt;gcc_optimization_level=&amp;quot;None&amp;quot;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This was the origin of all.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;What I have noticed that in RELEASE configuration the&amp;nbsp;sec_mode parameter was not initialized before calling&amp;nbsp;sd_ble_gap_device_name_set and&amp;nbsp;sd_ble_gap_device_name_set gave an error of invalid parameter.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/thread/376023?ContentTypeID=1</link><pubDate>Thu, 07 Jul 2022 13:00:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f12b1ec0-c991-428f-a1fb-3fdece7c4212</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;All SoftDevice API calls are SVC calls,&amp;nbsp;so you should not compare with normal function calls.&lt;/p&gt;
&lt;p&gt;I am still unsure about what the issue issue is and why you are digging into this, though? What is not working? Which problem are you trying to solve?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/thread/375976?ContentTypeID=1</link><pubDate>Thu, 07 Jul 2022 09:52:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7c52a3a6-f1ca-43f7-b9cc-50d0f0ac55b8</guid><dc:creator>cmag</dc:creator><description>&lt;p&gt;My mistake: the call was by reference, so the register overwritten is not the problem.&lt;/p&gt;
&lt;p&gt;Still there is a difference when calling the Softdevice function defined as follows (a few excerpts):&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;#define SVCALL(number, return_type, signature) \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; _Pragma(&amp;quot;GCC diagnostic push&amp;quot;) \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; _Pragma(&amp;quot;GCC diagnostic ignored \&amp;quot;-Wreturn-type\&amp;quot;&amp;quot;) \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; __attribute__((naked)) \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; __attribute__((unused)) \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; static return_type signature \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; { \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; __asm( \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; &amp;quot;svc %0\n&amp;quot; \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; &amp;quot;bx r14&amp;quot; : : &amp;quot;I&amp;quot; (GCC_CAST_CPP number) : &amp;quot;r0&amp;quot; \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; ); \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; } \&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; _Pragma(&amp;quot;GCC diagnostic pop&amp;quot;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len));&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;With the following line of code:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; err_code = sd_ble_gap_device_name_set(&amp;amp;sec_mode,&amp;nbsp;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;(const uint8_t *)cfgGetDeviceName(),&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; strlen(cfgGetDeviceName()));&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:arial, helvetica, sans-serif;"&gt;R0 point to sec_mode:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;R0: 0x2003ff8c -&amp;gt; &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;07&lt;/span&gt; &lt;/strong&gt;79&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;And calling a function with a standard C signature:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;__attribute__ ( (noinline))&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;uint32_t sd_ble_gap_device_name_set0(ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; sd_ble_gap_device_name_set0test = *p_write_perm;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;With the following line of code:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; err_code = sd_ble_gap_device_name_set0(&amp;amp;sec_mode, (const uint8_t *)cfgGetDeviceName(),&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strlen(cfgGetDeviceName()));&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;R0 points to sec_mode:&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;R0: 0x2003ff8c -&amp;gt; &lt;span style="color:#008000;"&gt;&lt;strong&gt;11&lt;/strong&gt; &lt;/span&gt;0C&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;But the time the correct value is stored in memory.&lt;/p&gt;
&lt;p&gt;So maybe it is an incompatibility between the compiler and the library. It seems that the compiler still tries to pass &amp;amp;sec_mode in R0 (I do not know if this is correct with SVCALL) but the fails to initialize sec_mode.&lt;/p&gt;
&lt;p&gt;I will try to recompile with the latest library to check if this solves the problem.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/thread/375949?ContentTypeID=1</link><pubDate>Thu, 07 Jul 2022 08:03:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:37a06d9d-964b-48e8-9663-6025f47286da</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I must admit I am not fluent in assembly, but I do not see what is obviously wrong here? Also, I still do not get why you are digging into this particular part? I wonder if it is related to the next question though, with SoftDevice version compatibility?&lt;/p&gt;
[quote user="cmag"]&lt;p&gt;What happen if I switch to SDK version 2; I suspect that having:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SoftDevice 1&lt;/li&gt;
&lt;li&gt;Bootloader 1&lt;/li&gt;
&lt;li&gt;Application 2.3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Could cause problems, as Application 2.3 would expect to interact with SoftDevice 2; what is the correct way to proceed at this point, using the BLE DFU?&lt;/p&gt;[/quote]
&lt;p&gt;The &lt;a href="https://infocenter.nordicsemi.com/topic/sds_s140/SDS/s1xx/overview/api_overview.html"&gt;SoftDevice API&lt;/a&gt; is generally not compatible between major versions, so in this case you cannot update the application without also updating the SoftDevice. Moreover, the BLE bootloader also relies on the SoftDevice, so you need to update this at the same time as well. If you want to keep the old SoftDevice and bootloader, you could change the SoftDevice header files in the application to use the old header files and port the new application to the old SoftDevice (there will typically be some API changes, and this goes both ways). If you build the new application for the old SoftDevice, then you can update just the application via DFU.&lt;/p&gt;
&lt;p&gt;I would generally say that if you update SDK version it probably also makes sense to update the SoftDevice, though. And if you update the SoftDevice, you must also update the BLE Bootloader, as that depends on the SoftDevice. So in this case you would need to update all three, and make a DFU zip package that include all three. Then the DFU procedure works so that the application is deleted, and the SoftDevice and bootloader are updated together (first transferred to the application region, before being copied into the correct place by the MBR which is never updated). Lastly the new application is transferred.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/thread/375875?ContentTypeID=1</link><pubDate>Wed, 06 Jul 2022 17:58:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bc47fdf5-add4-4359-8f7c-4a4dc277fb8c</guid><dc:creator>cmag</dc:creator><description>&lt;p&gt;I am using the standard SDK, but I am starting to suspect that the SDK has nothing to do with it.&lt;/p&gt;
&lt;p&gt;To prove this I have defined my version of the called procedure:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;__attribute__ ((noinline))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;uint32_t sd_ble_gap_device_name_set0(ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;&amp;nbsp; &amp;nbsp;sd_ble_gap_device_name_set0test = *p_write_perm;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The code generated to call this function is:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;BLE_GAP_CONN_SEC_MODE_SET_OPEN(&amp;amp;sec_mode);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; B500&amp;nbsp; &amp;nbsp; &amp;nbsp;push {lr}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; B087&amp;nbsp; &amp;nbsp; &amp;nbsp;sub sp, sp, #28&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; 2311&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;movs r3, #17&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; F88D300C strb.w r3, [sp, #12]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;--- main.c -- 358 ------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt;err_code = sd_ble_gap_device_name_set0(&amp;amp;sec_mode,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; F001FE7F bl 0x0002935C &amp;lt;cfgGetDeviceName&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; 9001&amp;nbsp; &amp;nbsp; &amp;nbsp;str r0, [sp, #4]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; F001FE7C bl 0x0002935C &amp;lt;cfgGetDeviceName&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; F012F93A &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;bl 0x000398DC &amp;lt;strlen&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; 9901&amp;nbsp; &amp;nbsp; &amp;nbsp;ldr r1, [sp, #4]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; B282&amp;nbsp; &amp;nbsp; &amp;nbsp;uxth r2, r0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; A803&amp;nbsp; &amp;nbsp; &amp;nbsp;add r0, sp, #12&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:&amp;#39;courier new&amp;#39;, courier;"&gt; F7FFFFE9 &lt;span style="color:#ff0000;"&gt;&lt;strong&gt;bl 0x00027644 &amp;lt;sd_ble_gap_device_name_set0&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It keeps sec_mode in r3, then calls strlen, which (I checked) uses R3, and has any right to use R0 to R3 for its own purposes, then calls&amp;nbsp;&lt;span&gt;sd_ble_gap_device_name_set0&lt;/span&gt;&amp;nbsp;with R3 corrupted.&lt;/p&gt;
&lt;p&gt;Frankly I cannot believe that GNU C compiler makes such mistakes; I am starting to suspect that the project has some settings appropriate with the old version that interfere with the new version.&lt;/p&gt;
&lt;p&gt;I will try to rebuild the project settings from scratch with the new release.&lt;/p&gt;
&lt;p&gt;To make the second part of my question more clear. Say that I build my application with version 1 of the SDK and libraries, then I deploy and my device has:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SoftDevice 1&lt;/li&gt;
&lt;li&gt;Bootloader 1&lt;/li&gt;
&lt;li&gt;Application 1.1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No problem till I keep using the same SDK; I will get:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SoftDevice 1&lt;/li&gt;
&lt;li&gt;Bootloader 1&lt;/li&gt;
&lt;li&gt;Application 1.2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What happen if I switch to SDK version 2; I suspect that having:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SoftDevice 1&lt;/li&gt;
&lt;li&gt;Bootloader 1&lt;/li&gt;
&lt;li&gt;Application 2.3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Could cause problems, as Application 2.3 would expect to interact with SoftDevice 2; what is the correct way to proceed at this point, using the BLE DFU?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/thread/375524?ContentTypeID=1</link><pubDate>Tue, 05 Jul 2022 10:43:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4908b120-95b3-4dc1-a0b6-6b1537a9dd78</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Are you using a vanilla SDK or have you made any changes to it?&lt;/p&gt;
&lt;p&gt;What error do you get now? Is it sill that you get&amp;nbsp;NRF_ERROR_INVALID_PARAM returned from&amp;nbsp;sd_ble_gap_device_name_set(), or is the issue something else? Please explain. If this is the error, then what parameters do you provide to&amp;nbsp;sd_ble_gap_device_name_set()? (the error indicate an issue here)&lt;/p&gt;
[quote user="cmag"]Maybe I should try upgrading to latest softdevice; but I wonder what happens on existing products; I mean, a product contains:[/quote]
&lt;p&gt;The application (firmware) is built with header files for a specific SoftDevice. If you change to a new SoftDevice you need to rebuild the application. Also, a SoftDevice with a different version number typically has a number of API changes that needs to be addresses when updating SoftDevice.&lt;/p&gt;
[quote user="cmag"]What happens of the other components when I upgrade the FIRMWARE compiled for the new SDK/SOFTDEVICE?[/quote]
&lt;p&gt;If you update just the application, then that is OK as long as it is built for the SoftDevice you are using. Typically the bootloader has no dependency on the application. However, the bootloader also has dependencies on the SoftDevice (provided it uses Bluetooth), so you also need to re-build the bootloader if changing SoftDevice.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/thread/375467?ContentTypeID=1</link><pubDate>Tue, 05 Jul 2022 07:59:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:58b8fe4e-138f-4877-b0de-da3144e91373</guid><dc:creator>cmag</dc:creator><description>&lt;p&gt;I have tried on a clean machine, to check if there was an interference with other software, but the problem persists.&lt;/p&gt;
&lt;p&gt;I am using:&lt;/p&gt;
&lt;p&gt;nRF5 SDK v16.0.0&lt;br /&gt;------------------------&lt;br /&gt;Release Date: October, 2019&lt;/p&gt;
&lt;p&gt;Maybe I should try upgrading to latest softdevice; but I wonder what happens on existing products; I mean, a product contains:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;SOFTDEVICE&lt;/li&gt;
&lt;li&gt;DFU&lt;/li&gt;
&lt;li&gt;FIRMWARE&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What happens of the other components when I upgrade the FIRMWARE compiled for the new SDK/SOFTDEVICE?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/thread/374897?ContentTypeID=1</link><pubDate>Thu, 30 Jun 2022 11:58:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a12fea26-e94c-4394-b1d5-7bf388a121f0</guid><dc:creator>cmag</dc:creator><description>&lt;p&gt;Actually the problem was that&amp;nbsp;&lt;span&gt;sd_ble_gap_device_name_set returned an error for invalid parameters.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Besides SES 6.32 crashes very frequently with my PC.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;So I reverted to version 5.66 which works fine.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SES 6.32: Strange behaviour</title><link>https://devzone.nordicsemi.com/thread/374880?ContentTypeID=1</link><pubDate>Thu, 30 Jun 2022 11:28:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8069ec5e-4c08-489b-aeaa-477710d41b03</guid><dc:creator>Einar Thorsrud</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am not sure I understand the main issue here. Do you see unexpected behavior, or is it just that you decided to take a look at the disassembly and are wondering about what you are seeing?&lt;/p&gt;
&lt;p&gt;Generally, debug configurations should not do any optimization, to make the machine code map as closely to the C code as possible. So it is intentional and expected that there is no&amp;nbsp;constant folding etc. For the release configuration it is&amp;nbsp;different, but exactly how the compiler optimized the code depends on the optimization configuration. Generally though the compiler is much better at finding smart optimizations than humans, so it is not normally so that you can look at a small piece of disassembly and with good reason conclude that &amp;quot;here the compiler did something wrong/stupid&amp;quot;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>