TI MSPM0 one-click project init tool — bootstrap embedded projects from SysConfig
Project description
TI Project Assistant(TI 项目助手)
一行命令,从 SysConfig 图形化配置出发,自动生成完整的 TI MSPM0 嵌入式项目。告别 CCS 手动配置。
安装
pip install ti-project-assistant
安装完成后,mspm0-init 命令即可在终端中使用(Windows / Linux / macOS)。
验证安装:
mspm0-init --version # 或 -V,输出版本号确认安装成功
快速开始
# 1. 用 SysConfig GUI 配好芯片和引脚,保存 .syscfg 到空目录,然后:
mspm0-init
# 2. 构建
cmake --build build -j$(nproc)
# 3. 调试(VSCode)
code .
# 按 F5 → 选择 CMSIS-DAP / XDS110 / JLink
修改配置后:
mspm0-init regenerate # 仅更新生成文件,src/ 下手写代码安全无虞
功能
| 子命令 | 用途 |
|---|---|
| (无参数) | 自动发现当前目录 .syscfg,原地创建项目 |
new |
从 .syscfg 创建新项目 |
regenerate |
修改引脚/外设配置后重新生成代码,不改动手写代码 |
check |
自检开发环境:arm-gcc、CMake、SysConfig、SDK、OpenOCD 等工具链状态 |
--version / -V |
显示当前版本号,用于验证安装 |
脚本自动完成:
- 调用 SysConfig CLI 生成
ti_msp_dl_config.c/h、链接脚本 - 动态解析 SDK,自动匹配 全部 58 款 MSPM0 芯片的启动文件、driverlib、内存布局(无需硬编码)
- 创建标准分层项目目录结构(
config/、src/app/、src/modules/、src/utils/) - 生成
CMakeLists.txt(file(GLOB_RECURSE)递归链接,arm-none-eabi-gcc 工具链) - 生成
.vscode/全套配置(launch.json/tasks.json/settings.json/c_cpp_properties.json) - 内置
⚙️ 打开 TI SysConfigVSCode 任务,一键启动图形化配置 - 支持 Task Buttons 插件,状态栏直接点击 SysConfig / Build / Clean
- 支持 4 种调试器:CMSIS-DAP、XDS110、JLink(原生 Segger GDB Server)、无调试器
- 跨平台工具自动发现:可执行工具优先从 PATH 读取(Windows/Linux/macOS 一致),环境变量作为回退
- 自动 cmake configure + build 验证
- 自动
git init+ 写入.gitignore(检测到 Git 已安装时启用,可用--no-git跳过)
依赖安装
Linux
| 依赖 | 版本 | 安装方式 |
|---|---|---|
| Python | ≥ 3.8 | 系统自带,或 sudo apt install python3 |
| ARM GCC | 13.x | sudo apt install gcc-arm-none-eabi |
| CMake | ≥ 3.13 | sudo apt install cmake |
| Ninja | 任意 | sudo apt install ninja-build |
| TI MSPM0 SDK | 2.x | 下载 → 解压到 ~/ti/ |
| TI SysConfig | 1.x | 下载 → 解压到 ~/ti/ |
| OpenOCD (TI 定制) | 1.3.x | 从 PATH 自动发现,或 TI VSCode 插件自动安装 |
| arm-none-eabi-gdb | 14.x | 从 PATH 自动发现,或 apt install gdb-multiarch,或 TI VSCode 插件 |
| JLink (可选) | 7.x+ | SEGGER 官网 → 安装后自动加入 PATH |
一行装完基础工具:
sudo apt install python3 gcc-arm-none-eabi cmake ninja-build
Windows
| 依赖 | 版本 | 安装方式 |
|---|---|---|
| Python | ≥ 3.8 | python.org 或 winget install Python.Python.3.12 |
| ARM GCC | 13.x | ARM 官网 → 把 bin\ 加入 PATH |
| CMake | ≥ 3.13 | cmake.org 或 winget install Kitware.CMake |
| Ninja | 任意 | ninja-build.org 或 winget install Ninja-build.Ninja |
| TI MSPM0 SDK | 2.x | 下载 → 解压到 C:\ti\ |
| TI SysConfig | 1.x | 下载 → 解压到 C:\ti\ |
| OpenOCD (TI 定制) | 1.3.x | 从 PATH 自动发现,或 TI VSCode 插件自动安装 |
| arm-none-eabi-gdb | 14.x | 从 PATH 自动发现,或 TI VSCode 插件自动安装 |
| JLink (可选) | 7.x+ | SEGGER 官网 → 安装后自动加入 PATH |
环境变量
全部可选。不设置时脚本从 PATH 自动发现可执行工具,或搜索 TI 工具目录。
| 变量 | Linux 默认值 | Windows 默认值 | 说明 |
|---|---|---|---|
MSPM0_SDK |
~/ti/mspm0_sdk_* |
C:\ti\mspm0_sdk_* |
MSPM0 SDK 根目录 |
SYSCONFIG_DIR |
~/ti/sysconfig_* |
C:\ti\sysconfig_* |
SysConfig 安装目录 |
TI_ROOT |
~/ti |
C:\ti |
所有 TI 工具的根目录 |
OPENOCD_DIR |
PATH → ~/.config/.../openocd/* |
PATH → C:\ti\ccs_base\...\openocd.exe |
OpenOCD 目录(PATH 优先,此处为回退) |
GDB_DIR |
PATH → ~/.config/.../gdb/* |
PATH → C:\ti\ccs_base\...\arm-none-eabi-gdb.exe |
GDB 目录(PATH 优先,此处为回退) |
JLINK_DIR |
PATH → /opt/SEGGER/JLink* |
PATH → C:\Program Files\SEGGER\JLink |
JLink 安装目录(PATH 优先,此处为回退) |
工具解析优先级(所有可执行工具统一)
1. CLI 参数 (--openocd / --gdb / --jlink-path) ← 显式指定
2. 环境变量 (OPENOCD_DIR / GDB_DIR / JLINK_DIR) ← 手动配置
3. PATH (shutil.which) ← 跨平台自动发现
4. TI 插件缓存 / 平台特定路径 ← 兜底扫描
5. 历史遗留路径 (TI_ROOT / CCS_BASE) ← 最后手段
推荐配置
Linux — 加入 ~/.zshrc 或 ~/.bashrc:
export MSPM0_SDK=~/ti/mspm0_sdk_2_10_00_04
export SYSCONFIG_DIR=~/ti/sysconfig_1.27.1
Windows — 在系统环境变量或 PowerShell 中设置:
$env:MSPM0_SDK = "C:\ti\mspm0_sdk_2_10_00_04"
$env:SYSCONFIG_DIR = "C:\ti\sysconfig_1.27.1"
$env:TI_ROOT = "C:\ti"
使用详解
创建新项目
# 最简单:在只有 .syscfg 的目录下直接运行
mspm0-init
# 自动发现当前目录的 .syscfg
mspm0-init new -n my_project
# 手动指定 syscfg 文件
mspm0-init new myboard.syscfg -n my_project -d xds110
# 无 syscfg,纯裸机起点
mspm0-init new --device MSPM0G3507 --package "LQFP-48(PT)" -n bare_start
# 跳过 Git 初始化
mspm0-init new -n my_project --no-git
重新生成配置
mspm0-init regenerate # 在项目目录内执行
mspm0-init regenerate /path/to/proj # 指定项目路径
regenerate 会备份旧文件到 .sysconfig_backup/,可通过 --no-backup 跳过。
更换调试器无需重建项目:
mspm0-init regenerate -d xds110 # 从 CMSIS-DAP 切换到 XDS110
mspm0-init regenerate -d jlink # 切换到 JLink(原生 Segger GDB Server)
全部参数
mspm0-init new [syscfg] -n NAME [选项]
-n, --name NAME 项目名称(必填)
-o, --output DIR 输出目录(默认 ./<name>/)
-s, --sdk PATH MSPM0 SDK 路径
--sysconfig PATH SysConfig 安装目录
-d, --debugger TYPE cmsis-dap(默认)| xds110 | jlink | none
--jlink-path PATH JLink 安装路径(可选,PATH 优先)
--device DEVICE 手动指定芯片,如 MSPM0G3507
--package PACKAGE 手动指定封装,如 LQFP-48(PT)
--dry-run 预览模式,不创建文件
--no-build 跳过 cmake 构建验证
--no-git 禁用 Git 自动初始化
mspm0-init regenerate [项目目录] [选项]
-d, --debugger TYPE 更换调试器:cmsis-dap | xds110 | jlink | none
--jlink-path PATH JLink 安装路径(可选,PATH 优先)
--no-build 跳过重编译
--no-backup 不备份旧文件
--dry-run 预览模式
--no-git 禁用 Git 自动初始化
通用选项:
--version, -V 显示版本号并退出
--check 自检开发环境
-h, --help 显示完整帮助
生成的项目结构
my_project/
├── CMakeLists.txt # CMake 构建定义
├── .gitignore # Git 忽略规则(自动生成)
├── my_project.syscfg # 原始 SysConfig 配置
├── config/
│ ├── ti_msp_dl_config.h # 自动生成 — 请勿手动编辑
│ ├── ti_msp_dl_config.c # 自动生成 — 请勿手动编辑
│ ├── device_linker.lds # 链接脚本
│ └── device.opt # 编译选项
├── inc/
│ ├── main.h # 应用头文件
│ ├── app/ # 应用层头文件
│ ├── driver/ # 驱动头文件
│ ├── modules/ # 功能模块头文件
│ └── utils/ # 工具头文件
├── src/
│ ├── main.c # 应用入口(在此写代码)
│ ├── app/ # 应用层实现
│ ├── driver/ # 驱动实现
│ ├── modules/ # 功能模块实现
│ └── utils/ # 工具实现
├── lib/ # 本地静态库
├── excluded/ # 不参与编译的 SysConfig 产物
├── build/ # 构建输出(ELF / HEX / BIN / MAP)
└── .vscode/
├── launch.json # 调试配置(CMSIS-DAP / XDS110 / JLink)
├── tasks.json # 构建任务 + 打开 SysConfig
├── settings.json # Task Buttons 状态栏按钮
└── c_cpp_properties.json # IntelliSense 配置
支持的芯片
SDK 中的全部 58 款 MSPM0 芯片开箱即用。 无需手动添加芯片型号。
工具通过运行时解析 SDK 的 DeviceFamily.h、启动文件目录、预编译链接脚本和 macros.tirex.json 自动发现芯片参数,包括 Flash/SRAM 布局、启动文件、driverlib 路径等。
只要 TI MSPM0 SDK 支持的芯片,mspm0-init 就能自动识别。
支持的系列包括:
| 系列 | 代表型号 |
|---|---|
| MSPM0Gx5xx | G3507, G3519, G3107, G1507, G1519 … |
| MSPM0Gx1xx | G1105, G1106 … |
| MSPM0Lx3xx | L1306, L1345, L2228 … |
| MSPM0Lx2xx | L1227, L2227, L1228 … |
| MSPM0Cx1xx | C1105, C1106 … |
| MSPM0Hx2xx | H3215 … |
依赖关系
mspm0-init
├── SysConfig 1.x ────────────── 生成 ti_msp_dl_config.c/h、linker script
├── MSPM0 SDK 2.x
│ ├── driverlib.a ──────────── 硬件抽象层
│ ├── startup_*.c ──────────── 中断向量表 + 启动代码
│ ├── CMSIS Core ───────────── Cortex-M0+ 寄存器定义
│ └── DeviceFamily.h ──────── 芯片系列宏
├── arm-none-eabi-gcc 13.x ──── 交叉编译
├── CMake + Ninja ───────────── 构建系统
├── OpenOCD 1.3.x (可选) ────── GDB Server + 烧录(cmsis-dap / xds110 必装)
├── JLink 7.x+ ──────────────── 原生 GDB Server + 烧录(jlink 模式,推荐 ≥ 7.70)
├── arm-none-eabi-gdb 14.x ──── 源码级调试
├── Git ──────────────────────── 版本控制(自动初始化)
└── VS Code + Cortex-Debug ──── IDE 集成
开发
git clone git@github.com:AndyYang12345/Ti-Project-Assistant.git
cd ti-project-assistant
# 可编辑安装(推荐,修改即时生效)
pip install -e .
版本号由 git tag 驱动(hatch-vcs),无需手动修改源文件。构建时自动从 tag 提取版本。
发布流程
git tag vX.Y.Z && git push origin vX.Y.Z
推送 tag 后 GitHub Actions 自动构建 wheel 并发布到 PyPI。无需手动运行 build 或 twine。
许可证
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ti_project_assistant-1.0.3.tar.gz.
File metadata
- Download URL: ti_project_assistant-1.0.3.tar.gz
- Upload date:
- Size: 40.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fac9df5a7ada1ebf1e0cad5845699adcd734d2cbc785e1db2f541c3fcb78f6b4
|
|
| MD5 |
2fc403f9b53d5bef3f3fc1e8012cb083
|
|
| BLAKE2b-256 |
90bfdb638588c8e458c4b0979372ca20cd614de7180b638b1cb8271931cc8e4f
|
Provenance
The following attestation bundles were made for ti_project_assistant-1.0.3.tar.gz:
Publisher:
publish.yml on AndyYang12345/Ti-Project-Assistant
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ti_project_assistant-1.0.3.tar.gz -
Subject digest:
fac9df5a7ada1ebf1e0cad5845699adcd734d2cbc785e1db2f541c3fcb78f6b4 - Sigstore transparency entry: 2226612271
- Sigstore integration time:
-
Permalink:
AndyYang12345/Ti-Project-Assistant@85885cb0ee74c866d91a25da3585f0856c2e4e32 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/AndyYang12345
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@85885cb0ee74c866d91a25da3585f0856c2e4e32 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ti_project_assistant-1.0.3-py3-none-any.whl.
File metadata
- Download URL: ti_project_assistant-1.0.3-py3-none-any.whl
- Upload date:
- Size: 37.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90696965ddcae0e6a21d42fbf4943e228a4fe60365744ac9ccadef24b43e33c0
|
|
| MD5 |
07b2c514e41702232dcfc9a68e151b4e
|
|
| BLAKE2b-256 |
89a6872ecc979f7ef20bfa639f043abeaaaa6029d4e13b451d0dd68714ba7819
|
Provenance
The following attestation bundles were made for ti_project_assistant-1.0.3-py3-none-any.whl:
Publisher:
publish.yml on AndyYang12345/Ti-Project-Assistant
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ti_project_assistant-1.0.3-py3-none-any.whl -
Subject digest:
90696965ddcae0e6a21d42fbf4943e228a4fe60365744ac9ccadef24b43e33c0 - Sigstore transparency entry: 2226612527
- Sigstore integration time:
-
Permalink:
AndyYang12345/Ti-Project-Assistant@85885cb0ee74c866d91a25da3585f0856c2e4e32 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/AndyYang12345
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@85885cb0ee74c866d91a25da3585f0856c2e4e32 -
Trigger Event:
push
-
Statement type: