配置系统(Kconfig)
Kconfig基本概念
蓝牙有非常多的feature,在实际细分的应用领域中,为了节省code size和ram size,就要调整一些配置参数。当然有些场景需要修改蓝牙名称之类的行为时,也需要改一些配置参数,这样的灵活性导致蓝牙可配置参数非常多,而且参数之间还有耦合。
如何组织这些参数是一个比较麻烦的问题,zephyr引入了linux的kconfig配置系统,并且zephyr提出了持久化配置的场景,可以确保不同应用使用独立的配置,同时也可以随时修改配置参数。
关于Kconfig的基本概念,可以看从零到一搭建Kconfig配置系统。
配置架构
Kconfig的总入口在src/Kconfig中,由于本项目只为蓝牙服务,所以只有蓝牙系统的配置。
持久化配置
不同应用场景下需要的配置参数各不相同,所以在example/${APP}/prj.conf中定义了当前应用的配置参数。
prj.conf的生成可以通过make menuconfig,修改配置参数后,键入D,就会在根目录生成<home>/defconfig,这个替换所编写应用的prj.conf即可。
临时配置
在写应用时,通常需要动态调整参数,反复改prj.conf并不是很方便,而且没有图形界面,这时可以通过make menuconfig修改,而后键入S,就会使用当前配置。
Note
make clean后,临时配置会清空,请及时将需要的配置保存到prj.conf中。