本文档仅适用于AliOS Things 3.1及其后续版本,3.1之前版本请忽略。

自AliOS Things 2.1开始,引入了基于Menuconfig的图形配置系统,组件配置文件(Config.in)是配置系统工作的基础。本文将对系统中配置文件及其组织方式进行简要介绍。

更多关于配置文件编写和语法介绍请参考Linux官方文档

在系统范围内,配置文件划分为两类:

  • 顶层配置文件:配置文件入口,包含组件配置文件和系统配置变量
  • 组件配置文件:描述组件配置能力,定义与组件相关的配置选项

顶层配置文件

顶层配置文件,在用户创建工程时动态生成,放置于工程目录下:$APPDIR/Config.in。它仅包含了当前工程所依赖组件的配置文件。 用户修改了应用代码,并且引入了新的组件或者删除以前引入的组件,代码编译时会先自动更新顶级配置文件,增加或删除相应组件的配置文件。 一个典型的顶层配置文件采用如下格式:

APP配置项

系统配置项

source 必选组件配置文件
if 选择条件
source 可选组件配置文件
endif

组件配置文件

组件配置文件是构成组件的基本要素,系统通过组件配置文件描述组件的配置能力。自AliOS Things2.1起,开发组件配置文件将与添加组件代码、添加组件Makefile一样,成为组件开发的必要步骤。通常情况下,每个组件都应该具有:

  • 一个唯一的组件ID
  • 根据组件配置能力提供具体的配置选项

配置项命名规范

  • 配置项全部使用大写字母,各域之间使用“_”分隔;
  • 组件ID定义:AOS_组件类型_组件名称。类型取值范围:APP,COMP,BOARD,MCU,ARCH。例如:AOS_BOARD_DEVELOPERKIT,AOS_APP_HELLOWORLD,AOS_COMP_RHINO。
  • 组件内部配置项推荐的定义方式:组件名称_CONFIG_XXX。例如:RHINO_CONFIG_SEM。

与传统配置系统的差异点

  • 顶层配置文件在工程目录下,$APPDIR/Config.in。
  • 组件配置文件中的差异点:
  • 组件默认为使能,且不允许改为禁止。
  • 不使用select使能其它组件,而是在组件Makefile里面选择依赖组件。
  • 可以配置可选组件的选择条件,配合组件Makefile完成选择依赖组件。

一个典型的组件配置文件采用如下格式:

关键字 组件ID
    类型 
    默认值
    
关键字 组件配置项
    类型 “提示信息”
    默认值
    帮助信息

例如:

# components/network/http
# 组件唯一ID,默认为使能,不允许改为n
config AOS_COMP_HTTP
    bool 
    default y

# 组件内部的配置项
menu "HTTP Client Configuration"

config HTTP_CONFIG_SERVER_NAME_SIZE
    int "The size of server name"
    default 64
    help
        The size of server name in bytes

config HTTP_CONFIG_SECURE
    bool "Support HTTP Secure"
    default n
    help 
        set to y if use HTTPS
        default n

if HTTP_CONFIG_SECURE
#  配置可选组件mbedtls、itls的条件HTTP_CONFIG_SECURE_TLS、HTTP_CONFIG_SECURE_ITLS
# 组件Makefile根据此处的配置,引入相应的组件
choice
    prompt "Security Selection"
    default HTTP_CONFIG_SECURE_TLS
    help
      HTTPS over MbedTLS or iTLS

    config HTTP_CONFIG_SECURE_TLS
        bool "HTTPS over MbedTLS"

    config HTTP_CONFIG_SECURE_ITLS
        bool "HTTPS over iTLS"
endchoice
endif

endmenu

关于不同类型组件配置文件开发请参考:板级移植指导

使用menuconfig配置

请参见更多配置操作