diff --git a/Kconfig b/Kconfig index 3a794d5..bdb43ca 100644 --- a/Kconfig +++ b/Kconfig @@ -16,7 +16,7 @@ config PKGS_DIR default "packages" source "$RTT_DIR/Kconfig" -#source "$PKGS_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" source "libraries/Kconfig" source "board/Kconfig" diff --git a/applications/main.c b/applications/main.c index 92815c4..c558c36 100644 --- a/applications/main.c +++ b/applications/main.c @@ -25,6 +25,7 @@ int main(void) while (1) { + rt_thread_delay(1000); /* code */ } diff --git a/rt-thread/tools/menuconfig.py b/rt-thread/tools/menuconfig.py index aaf4c9e..c71be49 100644 --- a/rt-thread/tools/menuconfig.py +++ b/rt-thread/tools/menuconfig.py @@ -44,25 +44,34 @@ def is_pkg_special_config(config_str): return True return False +# 从.config文件生成rtconfig.h,在Kconfig中如果默认为n,则在.config中会以#开头,即被注释掉。因此,只有=y的才会被添加到.config文件中 def mk_rtconfig(filename): + + # 打开 .config 文件,以读取其中的配置选项。 try: config = open(filename, 'r') except: print('open config:%s failed' % filename) return + # 打开 rtconfig.h 文件,以写入转换后的宏定义。 rtconfig = open('rtconfig.h', 'w') rtconfig.write('#ifndef RT_CONFIG_H__\n') rtconfig.write('#define RT_CONFIG_H__\n\n') + # 定义一个空行变量。 empty_line = 1 + # 遍历 .config 文件中的每一行。 for line in config: + # 移除行首的空格,以及行尾的换行符和回车符。 line = line.lstrip(' ').replace('\n', '').replace('\r', '') + # 如果该行为空行,则跳过。 if len(line) == 0: continue + # 如果该行是以 "#" 开头的注释行,则将该行中的 CONFIG_ 前缀替换为空格,并添加到 rtconfig.h 文件中。 if line[0] == '#': if len(line) == 1: if empty_line: @@ -80,6 +89,7 @@ def mk_rtconfig(filename): empty_line = 0 else: + # 否则,将该行转换为宏定义,并添加到 rtconfig.h 文件中。 empty_line = 0 setting = line.split('=') if len(setting) >= 2: @@ -95,9 +105,11 @@ def mk_rtconfig(filename): else: rtconfig.write('#define %s %s\n' % (setting[0], re.findall(r"^.*?=(.*)$",line)[0])) + # 如果 .config 文件中有 rtconfig_project.h 文件,则将其包含在生成的 rtconfig.h 文件中。 if os.path.isfile('rtconfig_project.h'): rtconfig.write('#include "rtconfig_project.h"\n') + # 在文件的末尾添加 RT_CONFIG_H__ 宏定义,以防止头文件被多次包含。 rtconfig.write('\n') rtconfig.write('#endif\n') rtconfig.close() @@ -242,16 +254,22 @@ def exclude_utestcases(RTT_ROOT): def menuconfig(RTT_ROOT): # Exclude utestcases + # 排除 utestcases 目录,因为该目录不需要在配置界面中进行配置。 exclude_utestcases(RTT_ROOT) + # 构建 Kconfig 工具 kconfig_dir = os.path.join(RTT_ROOT, 'tools', 'kconfig-frontends') os.system('scons -C ' + kconfig_dir) + # 设置 PKGS_ROOT 环境变量 touch_env() env_dir = get_env_dir() if isinstance(env_dir, str): os.environ['PKGS_ROOT'] = os.path.join(env_dir, 'packages') + # 检查 .config 文件是否已经生成,并检查 .config.old 文件是否存在。 + # 如果两个文件的 MD5 值相同,则表示用户没有更改配置选项。 + # 否则,使用新的 .config 文件生成 RT-Thread 的配置文件 rtconfig.h,并将新的 .config 文件复制到 .config.old 中保存。 fn = '.config' fn_old = '.config.old' @@ -266,6 +284,7 @@ def menuconfig(RTT_ROOT): else: sys.exit(-1) + # 如果两个文件的 MD5 值不同,则使用新的 .config 文件生成 RT-Thread 的配置文件 rtconfig.h,并将新的 .config 文件复制到 .config.old 中保存。 # make rtconfig.h if diff_eq == False: shutil.copyfile(fn, fn_old)