背景
在ESP32C3模组软件开发中,我们知道乐鑫的IDF中有大量的应用例程,官方的应用例程在我们实际的开发过程中发挥了很大的帮助,可以让我们了解ESP32C3基本功能开发,甚至有很大部分的官方应用例程所实现的功能是可以移植到我们的工程里面的,但是不同的例程可能有不同的配置文件sdkconfig,如果要移植就要满足两个方面:
1、深入了解该例程中独有的配置参数是否会影响ESP32C3底层库的功能,如果不影响我们则可以通过宏定义的方式在自己的工程中定义好即可。
2、了解sdkconfig重构方法,ESP32C3工程的sdkconfig是可以进行重构的。
我在功能开发时就遇到了移植官方例程后因sdkconfig不同造成编译报参数未定义的错。
如果直接修改sdkconfig,在编译时我们的修改是无效的,因为编译器会根据menuconfig的配置来重写sdkconfig文件。
过程
今天就来学习一下sdkconfig的作用和重构。
在官方的编程指南中对sdkconfig有介绍:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32c3/api-reference/kconfig.html#id2
但是官方的文档我看的是挺迷糊的,像这种重要的的开发技能,希望官方的编程指南可以提供简单易懂的使用教程。
虽然官方没有教程,但是广大的开发朋友里有人总结了重构sdkconfig的方法和步骤,在这里我也学习了他的文章:https://blog.csdn.net/zhangzhoulzl/article/details/120657936非常的感谢这位博主,
有同样问题的朋友也可以这位博主的文章。
想必ESP32C3开发者对于menuconfig都不会陌生,我们通过menuconfig配置一些重要的系统或者功能参数来使能或失能某些功能,还能将自己的一些参数也放到menuconfig的配置项中进行修改,然后再程序中进行调用。当我们完成menuconfig的配置并保存后,那么就会根据配置来生成sdkconfig.h和sdkconfig文件里面的参数定义。
下面是我学习完后成功更改Kconfig文件配置并重构了sdkconfig文件的步骤:
1、将需要新增的配置项添加到Kconfig.projbuild文件中;
2、删除之前的编译文件;
3、进入menuconfig进行配置;
4、编译。
重构sdkconfig文件
我是基于VScode环境来开发,具有较好的可视化界面。
修改Kconfig.projbuild文件
修改前:
修改后:增加了一些新的目录
保存之后要删除之前的编译文件,在VScode直接点击底部栏的“垃圾桶”图标,如果是离线的IDF开发环境则要执行指令“idf.py fullclean”
然后在VScode再点击底部栏的“配置”图标,打开menuconfig就可以看到添加的配置项
之后就可以进行编译了。
是不是很简单,如果只是普通的参数添加就还好,如果要进行复杂的配置就要熟悉Kcongfig的语法,看似简单其实深入后就不简单。
结语
通过自己操作后再去看官方的编程指南就会容易多了,在ESP32C3的开发上又进步了一小步。困难有,但解决困难的方法也总会有的。