<?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>Compare sdk_config files</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/60127/compare-sdk_config-files</link><description>Hi! 
 What is the easiest way to compare two sdk_config files? Some tools, etc. Why do I need it: 
 
 My idea is to use &amp;quot;$NRF_SDK/config/nrf52840/config/sdk_config.h&amp;quot; as base config and don&amp;#39;t change it. All changed parameters (&amp;quot;diff&amp;quot;) put into &amp;quot;app_config</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 20 Jul 2022 07:52:16 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/60127/compare-sdk_config-files" /><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/377783?ContentTypeID=1</link><pubDate>Wed, 20 Jul 2022 07:52:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e6dc51fd-3bec-497f-b201-e67104944097</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;Thanks for sharing!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/377758?ContentTypeID=1</link><pubDate>Wed, 20 Jul 2022 04:59:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3eb82efb-4ab5-44e0-b3b9-974bd62cc161</guid><dc:creator>Yohann</dc:creator><description>&lt;p&gt;I made a python script to pretty print the differences between sdk_config.h files.&lt;br /&gt;&lt;br /&gt;It looks like this:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;$ ./compare_sdkconfig.py examples/sdk_config_1.h examples/sdk_config_2.h
╒════════════════════════════════════╤═══════════════════╤═══════════════════╕
│ Define                             │   examples/sdk_co │ examples/sdk_co   │
│                                    │          nfig_1.h │ nfig_2.h          │
╞════════════════════════════════════╪═══════════════════╪═══════════════════╡
│ NRF_RADIO_ANTENNA_COUNT            │                12 │ 3                 │
├────────────────────────────────────┼───────────────────┼───────────────────┤
│ DTM_ANOMALY_172_TIMER_IRQ_PRIORITY │                 2 │ None              │
╘════════════════════════════════════╧═══════════════════╧═══════════════════╛&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;You can find the script here:&amp;nbsp;&lt;a href="https://github.com/Yohannfra/nrf_sdk_sdkconfig_diff"&gt;github.com/.../nrf_sdk_sdkconfig_diff&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/348542?ContentTypeID=1</link><pubDate>Wed, 19 Jan 2022 14:25:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:45f069ca-37ca-4ecf-9a92-0ea43552db8c</guid><dc:creator>Bruno Randolf</dc:creator><description>&lt;p&gt;Here is a Python script to show the difference between two sdk_config.h files:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="python"&gt;import re
from argparse import ArgumentParser
from pprint import pprint

arg_parser = ArgumentParser(description=&amp;quot;Nordic SDK sdk_config.h diff utility&amp;quot;)
arg_parser.add_argument(&amp;#39;-o&amp;#39;, &amp;#39;--output&amp;#39;, default=&amp;quot;def&amp;quot;)
arg_parser.add_argument(&amp;#39;-i2&amp;#39;, &amp;#39;--ignore2&amp;#39;, action=&amp;#39;store_true&amp;#39;)
arg_parser.add_argument(&amp;#39;file1&amp;#39;)
arg_parser.add_argument(&amp;#39;file2&amp;#39;)
args = arg_parser.parse_args()

pattern = re.compile(r&amp;#39;\s?#define\s+(\w*)\s+(\w*)\s*&amp;#39;)

def read_file(name):
	defs = {}
	file = open(name, &amp;quot;r&amp;quot;)
	for line in file:
		match = pattern.match(line)
		if match:
			if match.group(1) == &amp;quot;SDK_CONFIG_H&amp;quot;:
				continue
			defs[match.group(1)] = match.group(2)
	return defs

d1 = read_file(args.file1)
d2 = read_file(args.file2)

diff = {}

# find items in d1 which are different in d2, including non existent
for k, v1 in d1.items():
	v2 = d2.get(k)
	if v2 != v1:
		diff[k] = [v1, v2]

# find items which are in d2 but not d1
for k, v2 in d2.items():
	v1 = d1.get(k)
	if not v1:
		diff[k] = [v1, v2]

# output
if args.output == &amp;quot;pprint&amp;quot;:
	pprint(diff)
elif args.output == &amp;quot;list&amp;quot;:
	for k in sorted(diff):
		print(k, diff[k])
elif args.output == &amp;quot;def&amp;quot;:
	for k in sorted(diff):
		if diff[k][0] and diff[k][1]:
			print(&amp;quot;#define&amp;quot;, k, diff[k][1], &amp;quot;// was:&amp;quot;, diff[k][0])
		elif not diff[k][0]:
			print(&amp;quot;#define&amp;quot;, k, diff[k][1], &amp;quot;// not set in file 1&amp;quot;)
		elif not diff[k][1] and diff[k][0] != &amp;quot;0&amp;quot;:
			if not args.ignore2:
				print(&amp;quot;#define&amp;quot;, k, &amp;quot;0 // not set in file 2, was:&amp;quot;, diff[k][0])&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/266802?ContentTypeID=1</link><pubDate>Thu, 27 Aug 2020 15:27:32 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:96383e34-33f0-489b-991a-83cd472a3d72</guid><dc:creator>spekary</dc:creator><description>&lt;p&gt;Your post should be required reading for all Nordic users. This is still a problem in SDK 17. Absolutely horrible architecture. And telling people that they can use an app_config.h file when they really can&amp;#39;t?&lt;/p&gt;
&lt;p&gt;Nordic, if you really want to support legacy systems, you should have a separate include file for that, and document it.&lt;/p&gt;
&lt;p&gt;Also, this architecture makes it extremely difficult to port a project to a newer SDK.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/250066?ContentTypeID=1</link><pubDate>Thu, 14 May 2020 21:54:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:28dd95ea-22c2-4bdb-9dc7-a7ca119fe74b</guid><dc:creator>mtsunstrum</dc:creator><description>&lt;p&gt;Yes, at some point in the future we can only hope a major SDK update will enforce users having to upgrade their apps to non-legacy ...&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/247721?ContentTypeID=1</link><pubDate>Sat, 02 May 2020 20:46:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bfb071f7-d016-4e84-a4ed-99d89d62a130</guid><dc:creator>RayFoulkes</dc:creator><description>&lt;p&gt;PPS, I failed to identify the other coders having problems. Well done. The advice needs to be &amp;quot;only put into your own version of sdk_config.h what you absolutely need for your application&amp;quot; the remainder is dangerous.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/247720?ContentTypeID=1</link><pubDate>Sat, 02 May 2020 20:31:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e77e9ea-c5d6-4bfa-bbb3-60aefd23fa3f</guid><dc:creator>RayFoulkes</dc:creator><description>&lt;p&gt;I should have added: what did I do? I started with minimal sdk_config.h My code failed to compile. I looked at the first thing that was missing, searched all sdk_config until I found it, copied and pasted the entire chunk in which it appeared. Thereafer rinse and repeat until it compiles... A bit crude but it works ;-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/247719?ContentTypeID=1</link><pubDate>Sat, 02 May 2020 20:26:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:705c5f66-7f55-4044-b539-9af31601b676</guid><dc:creator>RayFoulkes</dc:creator><description>&lt;p&gt;Hi mtsunstrum, I had sort-of given up on anyone responding - Phew, I have a fellow coder who understands the issue. Unfortunately there is a BUT. The BUT is that I suspect any fix to this is likely to make some end-user legacy code fail to compile. If it uses the original nrf&amp;nbsp; stuff then anything that triggers nrfx code is likely to screw up the nrf stuff. I suspect that is why they tried to default back to the nrf code - albeit with the consequence that sdk_config cannot be used both by the legacy AND the nrfx stuff.&lt;/p&gt;
&lt;p&gt;I really don&amp;#39;t have concrete evidence of this, not having tested it, but surely there must be a reason other than failure to separate legacy and new.&lt;/p&gt;
&lt;p&gt;In any case, thanks for the support, I wasted quite&amp;nbsp; a bit of time to decide it was a mess. Perhaps others will read and understand this, and thereby avoid wasting their time.&lt;/p&gt;
&lt;p&gt;My wish is that Nordic abandon the documentation encouraging the use of app_config.h until (and if) the problem with legacy code is resolved. I don&amp;#39;t like the &amp;quot;copy and edit&amp;quot; model for sdk_config.h but at least it works and is simple.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/247717?ContentTypeID=1</link><pubDate>Sat, 02 May 2020 18:21:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4fae321c-3364-4fac-b1ef-55cb023c48f5</guid><dc:creator>mtsunstrum</dc:creator><description>&lt;p&gt;Oh Ray you hit the nail on the head.&lt;/p&gt;
&lt;p&gt;In nrfx_glue.h this tiny line:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp;&lt;span style="background-color:#ffffff;"&gt;#include &amp;lt;legacy/apply_old_config.h&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;is the source of all EVIL :}&amp;nbsp; and days of wasted time&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;This is a very poorly explained legacy issue I think that Nordic should (&lt;strong&gt;must&lt;/strong&gt;) obliterate.&lt;/p&gt;
&lt;p&gt;What is killing me is seeing that a fresh download of SDK16.0.0 applies this by default, and many (or possibly all) example projects are based on these legacy nrf_drv implementations. &amp;nbsp; But elsewhere, I see the nrfx_ are the preferred route, so why they have defaulted to legacy is unknown.&lt;/p&gt;
&lt;p&gt;Many others are getting tripped up by this issue ...&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/59960/how-to-use-the-nrf5_sdk/244087#244087"&gt;https://devzone.nordicsemi.com/f/nordic-q-a/59960/how-to-use-the-nrf5_sdk/244087#244087&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/60536/do-we-need-to-define-nrfx_timer1_enabled-inorder-to-use-timer1/246209#246209"&gt;https://devzone.nordicsemi.com/f/nordic-q-a/60536/do-we-need-to-define-nrfx_timer1_enabled-inorder-to-use-timer1/246209#246209&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;We should start a Nordic bounty to remove all EVIL legacy stuff in SDK16 &amp;hellip; I would throw in $100 &amp;hellip; :}&lt;/p&gt;
&lt;p&gt;It is never explained properly anywhere, and the 16K line sdk_config.h is full of surprises like this.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/246490?ContentTypeID=1</link><pubDate>Fri, 24 Apr 2020 11:36:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:538d572d-bae9-4253-b6f9-e9b3c73633b8</guid><dc:creator>RayFoulkes</dc:creator><description>&lt;p&gt;&lt;strong&gt;Why it seems that using &amp;quot;$NRF_SDK/config/nrf52840/config/sdk_config.h&amp;quot; unchanged from the SDK and overriding with my own &amp;quot;app_config.h&amp;quot; can never work.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This discussion is based on SDK 15.2 and using SES to develop for nrf52840 on both the DK and the dongle. Development environment on both Windows 10 and Linux.&lt;br /&gt;I developed my application using my own version of sdk_config.h edited from an existing one, adding chunks as needed from others until all the packages I needed behaved well. I do not consider this good practice despite all the Nordic provided examples doing exactly that.&lt;br /&gt;&lt;br /&gt;I relied on the following from the Nordic infocenter:&lt;br /&gt;&lt;br /&gt;Quote[&lt;br /&gt;Overriding the sdk_config.h configuration&lt;br /&gt;&lt;br /&gt;Each define in the sdk_config.h file is a conditional define that is added only if it has not been defined previously so it can be easily overriden.&lt;br /&gt;&lt;br /&gt;Configuration in sdk_config.h can be overriden in two ways:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Adding a project flag/define.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Adding the USE_APP_CONFIG flag to the project settings and creating an app_config.h file which is included at the top of the sdk_config.h file.&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;Therefore I added the path $NRF_SDK/config/nrf52840/config/sdk_config.h at the top of the include search list, defined USE_APP_CONFIG and, sure enough, it accessed my app_config.h file. For the purpose of this explanation I will concentrate on the first problem that this generated. There may be others, but I cannot find an elegant way of avoiding this problem.&lt;br /&gt;&lt;br /&gt;Amongst others, I had the lines:&lt;br /&gt;#define NRFX_CLOCK_ENABLED 1&lt;br /&gt;#define NRFX_TIMER_ENABLED 1&lt;br /&gt;#define NRFX_TIMER1_ENABLED 1&lt;br /&gt;#define APP_PWM_ENABLED 1&lt;br /&gt;&amp;nbsp;&lt;br /&gt;which had previously been at the top of my own version of sdk_config.h and worked.&lt;br /&gt;&lt;br /&gt;Attempting to compile my application, I had a compilation error:&lt;br /&gt;&lt;br /&gt;At the line &amp;quot;APP_PWM_INSTANCE(analogue_out,1); // Create the instance &amp;quot;analogue_out&amp;quot; using TIMER1.&amp;quot;&lt;br /&gt;I got the error:&lt;br /&gt;error: &amp;#39;NRFX_TIMER1_INST_IDX&amp;#39; undeclared here (not in a function);&lt;br /&gt;&lt;br /&gt;In the crumb-trail back to the problem was the area of Nordic code that creates the value NRFX_TIMER1_INST_IDX which is from nrfx_timer.h:&lt;br /&gt;&lt;br /&gt;enum {&lt;br /&gt;#if NRFX_CHECK(NRFX_TIMER0_ENABLED)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_TIMER0_INST_IDX,&lt;br /&gt;#endif&lt;br /&gt;#if NRFX_CHECK(NRFX_TIMER1_ENABLED)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_TIMER1_INST_IDX,&lt;br /&gt;#endif&lt;br /&gt;#if NRFX_CHECK(NRFX_TIMER2_ENABLED)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_TIMER2_INST_IDX,&lt;br /&gt;#endif&lt;br /&gt;#if NRFX_CHECK(NRFX_TIMER3_ENABLED)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_TIMER3_INST_IDX,&lt;br /&gt;#endif&lt;br /&gt;#if NRFX_CHECK(NRFX_TIMER4_ENABLED)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_TIMER4_INST_IDX,&lt;br /&gt;#endif&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NRFX_TIMER_ENABLED_COUNT&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;This is an anonymous enum which generates an index for enabled timers. Essentially the code NRFX_CHECK(NRFX_TIMER1_ENABLED) turned out to be returning &amp;quot;false&amp;quot; and therefore failed to generate TIMER1 index. But just a minute, I had defined it right at the beginning of includes to be 1 - what gives???&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The culprit.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It has to be said that it took me a few Sherlock Holmes moments to get to the bottom of this.&lt;br /&gt;&lt;br /&gt;In $NRF_SDK/config/nrf52840/config/sdk_config.h&lt;br /&gt;I found:&lt;br /&gt;#ifndef NRFX_TIMER1_ENABLED&lt;br /&gt;#define NRFX_TIMER1_ENABLED 0&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;but that is fine, since I had defined it already as 1 so the first line returned false - I checked - it did. There are no other references to&lt;br /&gt;NRFX_TIMER1_ENABLED in $NRF_SDK/config/nrf52840/config/sdk_config.h so the culprit for undefining or zeroing it is not there.&lt;br /&gt;&lt;br /&gt;But there is a culprit and they are the following lines in $NRF_SDK/config/nrf52840/config/sdk_config.h:&lt;br /&gt;&lt;br /&gt;// &amp;lt;e&amp;gt; TIMER_ENABLED - nrf_drv_timer - TIMER periperal driver - legacy layer&lt;br /&gt;//==========================================================&lt;br /&gt;#ifndef TIMER_ENABLED&lt;br /&gt;#define TIMER_ENABLED 0&lt;br /&gt;#endif&lt;br /&gt;and&lt;br /&gt;#ifndef TIMER1_ENABLED&lt;br /&gt;#define TIMER1_ENABLED 0&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;Now, I had not defined TIMER_ENABLED so the ifndef returned TRUE so TIMER_ENABLED and TIMER1_ENABLED were defined as zero.&lt;br /&gt;&amp;quot;So what?&amp;quot;, I hear you ask, &amp;quot;0 means &amp;#39;not enabled&amp;#39; so that is fine&amp;quot;. Well it would be but for some code lurking elsewhere.&lt;br /&gt;Read now the file &amp;quot;apply_old_config.h&amp;quot; which arrives via nrfx_clock.h via nrfx.h via nrfx_glue.h&lt;br /&gt;&lt;br /&gt;That file contains the code:&lt;br /&gt;&lt;br /&gt;#if defined(TIMER_ENABLED)&lt;br /&gt;#undef NRFX_TIMER_ENABLED&lt;br /&gt;#define NRFX_TIMER_ENABLED&amp;nbsp; TIMER_ENABLED&lt;br /&gt;&lt;br /&gt;#if defined(TIMER0_ENABLED)&lt;br /&gt;#undef NRFX_TIMER0_ENABLED&lt;br /&gt;#define NRFX_TIMER0_ENABLED&amp;nbsp; TIMER0_ENABLED&lt;br /&gt;#endif&lt;br /&gt;#if defined(TIMER1_ENABLED)&lt;br /&gt;#undef NRFX_TIMER1_ENABLED&lt;br /&gt;#define NRFX_TIMER1_ENABLED&amp;nbsp; TIMER1_ENABLED&lt;br /&gt;#endif&lt;br /&gt;...ETC.&lt;br /&gt;&lt;br /&gt;This file DOESN&amp;#39;T CARE what TIMER_ENABLED is set to, just that it has been defined. It then quite happily sets&lt;br /&gt;NRFX_TIMER1_ENABLED to TIMER1_ENABLED which, of course, $NRF_SDK/config/nrf52840/config/sdk_config.h set to zero - disabled!&lt;br /&gt;&lt;br /&gt;TA-DAH Dr Watson, all is revealed! We now know who is the guilty party for the murder of NRFX_TIMER1_ENABLED.&lt;br /&gt;&lt;br /&gt;If only $NRF_SDK/config/nrf52840/config/sdk_config.h had not fiddled with TIMER_ENABLED.&lt;br /&gt;Worse, there is nothing you can do in app_config because that it called before the evil deed is done by defining TIMER_ENABLED&lt;br /&gt;essentially we cannot AFAIK &amp;quot;undefine&amp;quot; it in advance. I did think about defining APPLY_OLD_CONFIG_H__ which would block&lt;br /&gt;&amp;quot;apply_old_config.h&amp;quot; from doing anything, but that file is a catch-all for lots of other stuff as well so I cannot predict the side&lt;br /&gt;effects.&lt;br /&gt;&lt;br /&gt;For the future - This was only the first of perhaps many problems that direct use of $NRF_SDK/config/nrf52840/config/sdk_config.h&lt;br /&gt;might cause so I conclude that it is just too dangerous to try to use it without modification OR changing the legacy code to&lt;br /&gt;correspond to the later protocol of the value of a definition determining the yes/no and not simply the act of defining.&lt;/p&gt;
&lt;p&gt;So I conclude that the entry in the documentation of Nordic Infocenter is essentially useless. Sure, pre-defining things might work, but using a standard sdk_config certainly doesn&amp;#39;t. I have checked with SDK 16 : It has the same problem as far as I can tell.&lt;br /&gt;&lt;br /&gt;I hope that this explanation will help others in the future - it sure wasted a lot of my time.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/246436?ContentTypeID=1</link><pubDate>Fri, 24 Apr 2020 09:21:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4f756d9a-a6cd-44d0-9d62-b26fd2c3a1cb</guid><dc:creator>RayFoulkes</dc:creator><description>&lt;p&gt;Hello, your question seems to lack answers so here is a bit of moral support from Ray. First, I have just been trying to do the same for my project i.e. use &amp;quot;$NRF_SDK/config/nrf52840/config/sdk_config.h&amp;quot; and provide an &amp;quot;app_config.h&amp;quot; to enable the parts of the SDK that I actually need. I previously simply edited an existing sdk_config.h and placed that in the include tree before all the others. I wanted to change to what you propose because, for professonal development, copying huge chunks of an SDK and modifying them for your project is not a good idea since Nordic might decide to change things in the sdk_config.h original thereby making it tricky to upgrade to new versions of the SDK.&lt;/p&gt;
&lt;p&gt;Like you in my case it fails to work and, as far as I can tell, can never work. I will try to explain why but first I will try to help you with what I think is a question you asked.&lt;/p&gt;
&lt;p&gt;You don&amp;#39;t say what OS you&amp;nbsp; are using for development, but you seem to have access to diff which is OK but tough to use for looking for reasons for failure. I think that you are asking what better tool to use for text comparisons. I am developing on Windows 10 and normally use a paid-for tool, UltraCompare, part of the Ultraedit package. If you are using linux, I have used Kompare previously which is a gui file compare system which shows two files side by side and easy to see differences. It is part of KDE but can be used on other distributions if you install it.&lt;/p&gt;
&lt;p&gt;If you are developing on Windows 10 then it is possible to install the Linux subsystem, install Kompare and an X server - it runs although it will show an error in the console. Tell me if file comparison is still a problem for you. &lt;/p&gt;
&lt;p&gt;I will explain why app_config.h fails to work in my application and why it can never work (I think) in another answer to your original question.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/244424?ContentTypeID=1</link><pubDate>Tue, 14 Apr 2020 12:13:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ee45d496-5245-4778-ab0a-22e964a9b000</guid><dc:creator>lybrus</dc:creator><description>&lt;p&gt;Suddenly, using app_config with diff and replacing sdk_config with base config dosn&amp;#39;t work &lt;span class="emoticon" data-url="https://devzone.nordicsemi.com/cfs-file/__key/system/emoji/1f61e.svg" title="Disappointed"&gt;&amp;#x1f61e;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s some definitions in base config (&lt;span&gt;$NRF_SDK/config/nrf52840/config/sdk_config.h&lt;/span&gt;) aren&amp;#39;t neutral. And I have Fourth step, to make it neutral.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/244368?ContentTypeID=1</link><pubDate>Tue, 14 Apr 2020 09:24:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d552219a-ef1c-4813-94e8-d71513c9ff27</guid><dc:creator>lybrus</dc:creator><description>&lt;p&gt;I continue to work on it. Trying to make complete config.&lt;/p&gt;
&lt;p&gt;First step - find all definitions.&lt;/p&gt;
&lt;p&gt;Second - default values.&lt;/p&gt;
&lt;p&gt;Third - add definitions to sdk_config.h&amp;nbsp;to correct sections.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I parsed all sdk_config.h from examples, made full list of definitions.&lt;/li&gt;
&lt;li&gt;I parsed all&amp;nbsp;&lt;strong&gt;/config/**/config/sdk_config.h&lt;/strong&gt;, made full list of know definition.&lt;/li&gt;
&lt;li&gt;Calculate all unknown definition. Total 585.&lt;/li&gt;
&lt;li&gt;and tried to find them in SDK folder except &amp;#39;examples&amp;#39; (grep -Rlwn [defintion] $NRF_SDK --exclude-dir=examples). Some of definitions like &amp;#39;_ENABLED&amp;#39; ended weren&amp;#39;t found, I added to search this definition without this ending. Total 374.&lt;/li&gt;
&lt;li&gt;Looked into all found definitions, there are seem a lot of trash.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I have assumption, that all sdk libraries must contain &amp;#39;[library_name]_ENABLED&amp;#39; definition. Is it correct? If it&amp;#39;s true, I can found all libraries by &amp;#39;library_name&amp;#39;, and left definitions which starts with found &amp;#39;library_name&amp;#39;s.&lt;/p&gt;
&lt;p&gt;Regarding second and third step - I don&amp;#39;t have any ideas.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/244295?ContentTypeID=1</link><pubDate>Mon, 13 Apr 2020 17:51:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:39fc54ed-4920-4612-8a56-1eaf98b1d523</guid><dc:creator>lybrus</dc:creator><description>&lt;p&gt;&lt;span&gt;Currently it works only with &lt;/span&gt;&lt;strong&gt;$NRF_SDK/config/nrf52840/config/sdk_config.h &lt;/strong&gt;&lt;span&gt;as base configuration. &lt;/span&gt;&lt;br /&gt;&lt;span&gt;It&amp;#39;s not complete configuration, if somebody suggest another one - great.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Any improvements are welcome. Also share your experience from the topic.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Compare sdk_config files</title><link>https://devzone.nordicsemi.com/thread/244294?ContentTypeID=1</link><pubDate>Mon, 13 Apr 2020 17:43:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4a89367e-9d40-45d2-8e68-68bfd0ecbca7</guid><dc:creator>lybrus</dc:creator><description>&lt;p&gt;I wrote simple npm package, which could be used in command line&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/lybrus/nrf-config-diff-cli"&gt;https://github.com/lybrus/nrf-config-diff-cli&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;For&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;code&gt;blinky_freertos&lt;/code&gt;&lt;/strong&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;strong&gt;&lt;code&gt;$NRF_SDK/examples/peripheral/blinky_freertos/pca10056/blank/config/&lt;/code&gt;&lt;/strong&gt;) it creates file with content:&lt;/p&gt;
&lt;div class="highlight highlight-source-c"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;/span&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/* Generated by nrf-config-diff-cli */

#ifndef APP_CONFIG_H__
#define APP_CONFIG_H__

#define USE_APP_CONFIG

/* Changed variables */
#define GPIOTE_ENABLED 1
#define GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS 4
#define NRFX_CLOCK_ENABLED 1
#define NRFX_GPIOTE_ENABLED 1
#define NRF_CLOCK_ENABLED 1
#define APP_TIMER_ENABLED 1
#define BUTTON_ENABLED 1

#endif // APP_CONFIG_H__&lt;/pre&gt;&lt;br /&gt;&lt;span class="pl-c"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="left:-22px;position:absolute;top:341px;" id="gtx-trans"&gt;
&lt;div class="gtx-trans-icon"&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>