在CDK的workspace中,我们有一个组件工程,接下来会将每个组件的组件配置详细讲解一下。
首先,最简单的配置是我们的common类型的组件,我们右击common类型的组件,选择option for wn_console
我们可以看到任何一个common类型的组件都包含四个部分,分别是base,compiler,assembler和linker
首先,我们可以看到base界面,是配置组件基本信息的描述。
compiler是配置组件编译当前组件C文件的一些选项,其中包含两个大的部分,一个是global config,另一个是local config
其中,global config是用来配置所有组件的编译选项,也就是说,这里配置的选项会影响代码的编译,其中包含了define选项,也就是我们编译的宏,以及include选项
local config选项的配置只对当前组件的源代码有效果,包含了define选项以及组件编译常用到的调试信息,优化选项以及一些其他的配置选项。
界面没有的选项可以在other flags里面去增加需要的选项配置
Assembler选项只包含了一个global config的选项,他可以配置调试信息的格式以及,他的配置是用来编译汇编文件的
linker选项是用来配置组件包含的一些库,在linker选项中可以配置库的名称以及库的路径,那么会把组件包含的库链接到最终生成的镜像文件中
开发板的组件配置如下,我们点击开发板组件右击option for danica evb
可以看到它与common组件的tag是类似的,base的tag和assembler的tag与common组件是一样的,区别在于compiler的local config配置只包含了define和include,其他的配置内容和common是一样的。
linker选项相比于common组件的linker多了一个general的选项,他是用来配置我们工程中所使用到的链接描述脚本,也可以在其他地方配置这种脚本
芯片组件的配置入口如下所示
芯片组件的配置与开发板组件的配置相比的话,base,compiler和assembler是一致的,linker与common组件的配置是一致的。
芯片组件会多一个info的tag,是用来配置我们CPU的信息,我们的芯片组件是可以配置成单核和多核两种方式,每一种芯片的配置信息包含我们的芯片的CPU型号。
link file是和我们的开发板组件配置是一样的,都是指定我们程序的链接描述脚本,如果我们的开发板配置了脚本,那么,我们这里芯片组件link file的配置将会无效,会被覆盖掉。
算法选项的话是用来配置我们的flash烧写
方案组件的配置入口如下
solution组件的base、assembler、compiler和linker的配置选项与芯片组件配置是类似的,这里还多了tager、output、user和flash配置选项,这些配置与我们工程的一些配置有关
我们发现,每一个组件都可以配置base、assembler、compiler和linker的配置选项,那么在我们的编译中,是有优先级的顺序,solution的配置选项优先级>board的配置选项优先级>chip的配置选项优先级>common的配置选项优先级。
那么,我们可以看到,对于一个全局配置的选项来说,会根据我们这种规则去判断其有效性,比如说,我们在方案组件的global config中配置了CONFIG_CHIP_DANICA这个宏
如果在我们的common组件中也配置了一个这样的宏,这个宏虽然值不一样,当时由于优先级的关系,这个宏CONFIG_CHIP_DANICA的有效值为1,而不是为0。所以根据优先级的顺序的话,建议一下common常用的配置都放到solution中,跟开发板严格相关的会放在开发板中,同理,芯片严格相关的会放在芯片中,与硬件和方案无关的一些配置可以放在一个具体的common组件中。
参考视频:
https://www.bilibili.com/video/BV1gA411K7Qr?p=4&vd_source=77c874a500ef21df351103560dada737