<?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/"><channel><title>Debunking misconceptions: A technical analysis of nRF5 SDK and nRF Connect SDK</title><link>/nordic/nordic-blog/b/blog/posts/debunking-misconceptions-a-technical-analysis-of-nrf5-sdk-and-nrf-connect-sdk</link><description>Embedded software for IoT applications often requires a high degree of optimization, especially around fitting the image into constrained Flash/RAM space and reaching tight power consumption targets.
In 2018 Nordic released the nRF Connect SDK , ...</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><item><title>RE: Debunking misconceptions: A technical analysis of nRF5 SDK and nRF Connect SDK</title><link>https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/debunking-misconceptions-a-technical-analysis-of-nrf5-sdk-and-nrf-connect-sdk</link><pubDate>Mon, 22 Jan 2024 11:31:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:51734b08-72b7-462e-932d-0855f2f74022</guid><dc:creator>The_C_Advocate</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Thank for the well -written article.&lt;/p&gt;&lt;img src="https://devzone.nordicsemi.com/aggbug?PostID=1466&amp;AppID=4&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Debunking misconceptions: A technical analysis of nRF5 SDK and nRF Connect SDK</title><link>https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/debunking-misconceptions-a-technical-analysis-of-nrf5-sdk-and-nrf-connect-sdk</link><pubDate>Tue, 11 Apr 2023 16:47:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:51734b08-72b7-462e-932d-0855f2f74022</guid><dc:creator>Induthings</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;After several migration jobs, we have concluded that it is necessary to have more FLASH/RAM memory. Our products/projects under nRF5 fitted well on nRF52820, but with Zephyr nRF52833 is needed as minimum. We reported some&amp;nbsp;topics related with it:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;[mention:5b4f7af208f34e3a96e7a73dcfabe092:46448885d0e64133bbfbf0cd7b0fd6f7]&amp;nbsp;&lt;/p&gt;&lt;img src="https://devzone.nordicsemi.com/aggbug?PostID=1466&amp;AppID=4&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Debunking misconceptions: A technical analysis of nRF5 SDK and nRF Connect SDK</title><link>https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/debunking-misconceptions-a-technical-analysis-of-nrf5-sdk-and-nrf-connect-sdk</link><pubDate>Thu, 06 Apr 2023 11:12:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:51734b08-72b7-462e-932d-0855f2f74022</guid><dc:creator>Griffin</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I have been developing on nRF51, nRF52 and nRF53. Used both SDK5 and now nRF Connect SDK on the nRF52840; nRF5340 only on the nRF Connect SDK. Real-world projects with actual product results that do something.&lt;/p&gt;
&lt;p&gt;It is hard to discuss these numbers with such small examples.&amp;nbsp; IMHO, it doesn&amp;#39;t make sense to use these minimal &amp;quot;applications&amp;quot; as a reference. Take a real project and then compare. My observations:&lt;/p&gt;
&lt;p&gt;- For a multi-core system, there is no viable alternative to using an RTOS. The way Zephyr handles multi-core however leaves to be desired.&lt;/p&gt;
&lt;p&gt;- The use of Zephyr device drivers is limited. A lot of the nice things available in the nRF silicon can only partly be used since they are too specific to Nordic. Example: the Zephyr PWM implementation does not allow strings of values to be sent which cripples the device significantly. Use of the nrfx library solves this partly (but be aware: these big warnings all over the library when using them in a multitasking environment are there for good reason!). Things get really interesting when you mix nrfx and zephyr drivers for the same type of peripherals by the way ;).&lt;/p&gt;
&lt;p&gt;- When using RTOS features like the event bus (which is a very useful thing!) means the kernel runs through time consuming looping mechanisms all the time. That overhead is not to be ignored. Same for device drivers and many other parts. Pretty inefficient, but there often is no other way.&lt;/p&gt;
&lt;p&gt;- When using an RTOS, one is inclined to start new tasks for many parts of the software. Each task requires its own stack which really eats through RAM like my cat plows through his food in the morning.&lt;/p&gt;
&lt;p&gt;- The use of device driver structures with functionpointers as used in Zephyr means the compiler cannot optimize away unused parts of the device drivers. Optimization is sub-par in gcc anyway and with nRF Connect SDK you realistically have no choice.&lt;/p&gt;
&lt;p&gt;- There&amp;#39;s a lot going on pre-main. Devices are (at least partially) initialized pre-main for example. If you need your code to initialize software before initialization of the device, you are in for quite some trickery. These are hard to optimize this way.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;- All negative? No, don&amp;#39;t get me wrong. Once you get used to the runtime environment and you do not run into resource limits, Zephyr is quite nice. It allows you to design and implement your software development in nice and organized modules which is a lot harder when writing &amp;quot;on the naked iron&amp;quot;. In our last project, we run some async protocols; you simply cannot beat a good multitasking architecture here. Maybe the code is not as compact compared to a cold metal solution, maybe it uses more RAM. But the convenience of having an RTOS available in such a case is unbeatable.&lt;/p&gt;&lt;img src="https://devzone.nordicsemi.com/aggbug?PostID=1466&amp;AppID=4&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>