Keil 中配置 SysConfig(MSPM0)
本文使用下面的安装路径:
Keil:D:\develop\Keil_v5 SysConfig:D:\develop\ti\sysconfig_1.28.0 MSPM0 SDK:D:\develop\ti\mspm0_sdk_2_11_00_07如果软件装在其他位置,把文中的路径换成自己的实际路径即可。
1. 确认文件存在
先确认下面三个文件能够找到:
D:\develop\ti\sysconfig_1.28.0\sysconfig_gui.bat D:\develop\ti\mspm0_sdk_2_11_00_07\.metadata\product.json D:\develop\ti\mspm0_sdk_2_11_00_07\tools\keil\MSPM0_SDK_syscfg_menu_import.cfg2. 建立工程启动脚本
在下面的目录中新建sysconfig_project_gui.bat:
D:\develop\ti\mspm0_sdk_2_11_00_07\tools\keil这个批处理脚本是连接 Keil 工程与 SysConfig 图形界面的关键桥梁。它的核心功能是:智能定位当前工程对应的.syscfg配置文件,然后调用 SysConfig GUI 工具打开它。
脚本设计原理
文件内容如下:
@echo off setlocal EnableExtensions rem 设置工具路径变量 set "SYSCONFIG_GUI=D:\develop\ti\sysconfig_1.28.0\sysconfig_gui.bat" set "SDK_ROOT=D:\develop\ti\mspm0_sdk_2_11_00_07" rem 参数检查和路径验证 if "%~1"=="" goto not_found if not exist "%SYSCONFIG_GUI%" goto not_found if not exist "%SDK_ROOT%\.metadata\product.json" goto not_found rem 获取并规范化搜索起始目录(Keil 传入的工程目录) for %%D in ("%~1") do set "SEARCH_DIR=%%~fD" :search rem 在当前目录及其子目录中查找 .syscfg 文件 for %%F in ( "%SEARCH_DIR%\*.syscfg" "%SEARCH_DIR%\libraries\sdk\ti_config\*.syscfg" ) do ( if exist "%%~fF" ( set "SYSCFG_FILE=%%~fF" goto open_sysconfig ) ) rem 如果当前目录未找到,向上级目录递归搜索 for %%D in ("%SEARCH_DIR%\..") do set "PARENT_DIR=%%~fD" if /I "%PARENT_DIR%"=="%SEARCH_DIR%" goto not_found set "SEARCH_DIR=%PARENT_DIR%" goto search :open_sysconfig rem 找到文件后,调用 SysConfig GUI 打开 call "%SYSCONFIG_GUI%" --compiler keil -s "%SDK_ROOT%\.metadata\product.json" "%SYSCFG_FILE%" exit /b 0 :not_found echo Could not find the SysConfig tool or a .syscfg file for this project. pause exit /b 1搜索逻辑详解
脚本采用从近到远、逐级向上的搜索策略:
- 第一优先级:当前 Keil 工程目录(
%SEARCH_DIR%)下的*.syscfg - 第二优先级:当前目录的
libraries\sdk\ti_config\*.syscfg子目录 - 如果未找到:向上一级目录(
..)移动,重复上述搜索 - 终止条件:到达根目录(父目录与当前目录相同)仍未找到
这种设计适应了多种项目组织结构:
- 独立工程:
.syscfg直接放在工程根目录 - 共享配置:
.syscfg放在公共的libraries\sdk\ti_config目录(如 SeekFree 示例) - 嵌套项目:工程位于深层子目录,配置文件在上级公共目录
错误处理机制
脚本包含三层保护:
- 参数检查:确保 Keil 传入了有效的工程路径(
%~1) - 工具验证:确认 SysConfig GUI 和 SDK 的
product.json文件存在 - 文件查找:如果搜索失败,显示明确错误信息并暂停,避免窗口闪退
使用场景说明
这个搜索路径设计特别适合:
- Coreboard/Motherboard 开发板:配置文件通常放在工程目录或公共库目录
- 开源库项目结构:多个示例共享同一份配置,减少重复文件
- 团队协作:保持配置文件的集中管理,避免散落在各个工程中
脚本会从当前 Keil 工程目录开始向上查找,优先使用最近的:
*.syscfg libraries\sdk\ti_config\*.syscfg这适用于当前的 Coreboard、Motherboard 和开源库目录结构,确保了配置文件的灵活定位和高效管理。
3. 修改 Keil 菜单配置
打开:
D:\develop\ti\mspm0_sdk_2_11_00_07\tools\keil\MSPM0_SDK_syscfg_menu_import.cfg将内容改为:
[Sysconfig v1.28.0 - MSPM0 SDK v2_11_00_07] Command=D:\develop\ti\mspm0_sdk_2_11_00_07\tools\keil\sysconfig_project_gui.bat Initial Folder=D:\develop\ti\mspm0_sdk_2_11_00_07 Arguments="$P" Prompt for Arguments=0 Run Minimized=0 Run Independent=-1$P表示 Keil 当前打开的工程目录。这里不使用#E,因为#E取得的是当前编辑器文件,容易把main.c误传给 SysConfig。
4. 导入菜单
- 打开 Keil。
- 进入
Tools -> Customize Tools Menu。 - 删除原来的 SysConfig 菜单项。
- 点击
Import,选择修改后的MSPM0_SDK_syscfg_menu_import.cfg。 - 确认菜单中出现
Sysconfig v1.28.0 - MSPM0 SDK v2_11_00_07。
修改.cfg后需要重新导入。Keil 不会自动更新已经导入的菜单配置。
5. 使用方法
- 在 Keil 中打开一个 MSPM0 工程。
- 点击
Tools -> Sysconfig v1.28.0 - MSPM0 SDK v2_11_00_07。 - 脚本会找到该工程对应的
.syscfg,随后打开图形配置界面。
保存 SysConfig 配置前,建议先备份.syscfg和生成的ti_msp_dl_config.c/.h。不同 SDK 版本首次打开旧配置时,可能会提示迁移。
6. 常见问题
Missing argument: --board or --device must be specified
通常是把main.c等普通源文件传给了 SysConfig。检查菜单参数是否仍为#E,并确认已经改成Arguments="$P"和工程启动脚本。
failed to execute
检查Command、Initial Folder、SysConfig 安装路径和 MSPM0 SDK 路径是否真实存在。路径修改后,需要重新导入菜单配置。
找不到.syscfg
先在工程目录附近查找*.syscfg。如果文件不在工程目录或上层的libraries\sdk\ti_config中,需要把脚本的搜索路径补充为实际目录。
工程中看不到.cfg
MSPM0_SDK_syscfg_menu_import.cfg只是 Keil 工具菜单的导入文件,不是芯片配置文件,因此不会显示在工程树中。
真正用于图形配置的是.syscfg。Keil 工程树只显示.uvprojx中明确加入的文件,不会自动显示磁盘上的所有文件。当前 SeekFree 示例把.syscfg放在公共的libraries\sdk\ti_config目录中,多个示例可能共用一份配置。
如需在工程树中看到它,可以右键工程分组,选择Add Existing Files to Group,文件类型选择All Files,再加入对应的.syscfg。这一步不是启动图形界面的必要条件。