TI C2000 内存映射速记笔记
·
C2000 的内存映射表可以简单分成几类:RAM、Flash、外设寄存器、中断向量表、CLA 区域、启动 ROM、安全区和保留区。
从 STM32 转到 C2000 时,最重要的是先记住:
程序主要放 Flash,变量和栈放 RAM,外设寄存器在 Peripheral Frame,外设中断看 PIE Vector。
1. 内存区域总表
| 地址范围 | 名称 | 作用 | 速记 |
|---|---|---|---|
0x000000 ~ 0x000040 |
M0 Vector RAM | CPU 基础中断向量表 | VMAP=0 时使用 |
0x000000 ~ 0x000400 |
M0 SARAM | 1K×16 片内高速 RAM | 可放变量、栈、小段代码 |
0x000400 ~ 0x000800 |
M1 SARAM | 1K×16 片内高速 RAM | 可放变量、栈、小段代码 |
0x000800 ~ 0x002000 |
Peripheral Frame 0 | 外设寄存器区 | 不是 RAM |
0x000D00 ~ 0x000E00 |
PIE Vector RAM | 外设中断向量表 | ADC、PWM、SCI 等中断常用 |
0x001400 ~ 0x001480 |
CLA Registers | CLA 控制寄存器 | 用 CLA 时关注 |
0x001480 ~ 0x001500 |
CLA-to-CPU Message RAM | CLA 发数据给 CPU | CLA 通信区 |
0x001500 ~ 0x001580 |
CPU-to-CLA Message RAM | CPU 发数据给 CLA | CLA 通信区 |
0x002000 ~ 0x006000 |
Reserved | 保留区 | 不要用 |
0x006000 ~ 0x008000 |
Peripheral Frame 1/2/3 | 外设寄存器区 | Protected,常需 EALLOW/EDIS |
0x008000 ~ 0x008800 |
L0 SARAM | 2K×16 高速 RAM | 可放数据或代码,Dual-Mapped |
0x008800 ~ 0x008C00 |
L1 DPSARAM | 1K×16 RAM | 可作 CLA Data RAM 0 |
0x008C00 ~ 0x009000 |
L2 DPSARAM | 1K×16 RAM | 可作 CLA Data RAM 1 |
0x009000 ~ 0x00A000 |
L3 DPSARAM | 4K×16 RAM | 可作 CLA Program RAM |
0x00A000 ~ 0x3D7800 |
Reserved | 保留区 | 不要用 |
0x3D7800 ~ 0x3D7C00 |
User OTP | 一次性可编程区 | 新手不要随便写 |
0x3D7C80 ~ 0x3D7CC0 |
Calibration Data | 出厂校准数据 | 不要擦,不要改 |
0x3D7CC0 ~ 0x3D7CE0 |
Get_mode function | 启动模式判断函数 | Boot ROM 使用 |
0x3D7E80 ~ 0x3D7EB0 |
PARTID | 芯片型号/ID 信息 | 一般只读 |
0x3D7EB0 ~ 0x3D7EC0 |
Calibration Data | 出厂校准数据 | 不要擦,不要改 |
0x3D7EC0 ~ 0x3E8000 |
Reserved | 保留区 | 不要用 |
0x3E8000 ~ 0x3F7FF8 |
FLASH | 主程序存储区 | 程序主要放这里 |
0x3F7FF8 ~ 0x3F8000 |
128-Bit Password | 代码安全密码区 | 不能乱写,可能锁芯片 |
0x3F8000 ~ 0x3F8800 |
L0 SARAM 高地址映射 | L0 RAM 的另一映射地址 | 与低地址 L0 是同一块 |
0x3F8800 ~ 0x3FE000 |
Reserved | 保留区 | 不要用 |
0x3FE000 ~ 0x3FFFC0 |
Boot ROM | TI 固化启动程序 | 用户不能改 |
0x3FFFC0 ~ 0x400000 |
Vector | CPU 基础向量表 | VMAP=1 时使用 |
2. 分类速记
| 类型 | 包含区域 | 作用 |
|---|---|---|
| 片内 RAM | M0、M1、L0、L1、L2、L3 | 放变量、栈、RAM 运行代码 |
| 程序存储区 | FLASH | 用户程序主要存放位置 |
| 外设寄存器区 | Peripheral Frame 0/1/2/3 | 配置 GPIO、ADC、PWM、SCI 等外设 |
| 中断向量区 | M0 Vector、PIE Vector、Vector | 存放中断入口地址 |
| CLA 相关区 | CLA Registers、Message RAM、L1/L2/L3 | CLA 控制、通信、程序和数据 |
| 启动相关区 | Boot ROM、Get_mode function | 上电启动和启动模式判断 |
| 安全相关区 | Password、User OTP、Secure Zone | 代码保护和一次性配置 |
| 保留区 | Reserved | 不要使用 |
3. 重点区域说明
FLASH
0x3E8000 ~ 0x3F7FF8
这是用户程序最主要的存储区域,类似 STM32 的内部 Flash。
常用于存放:
| 内容 | 说明 |
|---|---|
| 程序代码 | 主程序、函数 |
const 常量 |
固定参数、查表数据 |
| 初始化数据 | 上电后需要拷贝到 RAM 的数据 |
SARAM
包括 M0、M1、L0、L1、L2、L3。
这些是片内 RAM,速度快,可用于:
| 用途 | 说明 |
|---|---|
| 全局变量 | 普通运行数据 |
| 栈 | 函数调用、局部变量 |
| RAM 运行代码 | 对速度要求高的函数 |
| CLA 数据/程序 | 使用 CLA 时分配给 CLA |
Peripheral Frame
Peripheral Frame 是外设寄存器区,类似 STM32 的外设寄存器地址空间。
常见外设寄存器包括:
| 外设 | 示例 |
|---|---|
| GPIO | IO 输入输出配置 |
| ADC | 采样配置、中断配置 |
| ePWM | PWM 周期、占空比、触发 |
| SCI | 串口通信 |
| SPI | SPI 通信 |
| I2C | I2C 通信 |
| CAN | CAN 通信 |
带 Protected 的寄存器,写入前通常需要:
EALLOW;
// 写受保护寄存器
EDIS;
PIE Vector RAM
0x000D00 ~ 0x000E00
PIE Vector RAM 是外设中断向量表。
C2000 的外设中断一般不是直接进 CPU,而是先经过 PIE 模块。
中断路径可以记成:
外设中断 → PIE → CPU INTx → PIE Vector Table → ISR
常见写法:
EALLOW;
PieVectTable.ADCA1_INT = &adca1_isr;
PieVectTable.EPWM1_INT = &epwm1_isr;
EDIS;
中断函数末尾通常需要清 PIE ACK:
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
M0 Vector、PIE Vector、Vector 的区别
| 名称 | 作用 | 速记 |
|---|---|---|
| M0 Vector | CPU 基础中断向量表 | VMAP=0 时使用 |
| PIE Vector | 外设中断向量表 | ADC、PWM、SCI 等常用 |
| Vector | 高地址 CPU 基础向量表 | VMAP=1 时使用 |
简单记法:
CPU 基础中断:看 M0 Vector / Vector
外设中断:看 PIE Vector
CLA 区域
CLA 是 C2000 的控制算法协处理器,常用于电机控制、数字电源等实时控制场景。
| 区域 | 作用 |
|---|---|
| CLA Registers | CLA 控制寄存器 |
| CLA-to-CPU Message RAM | CLA 发数据给 CPU |
| CPU-to-CLA Message RAM | CPU 发数据给 CLA |
| L1 DPSARAM | CLA Data RAM 0 |
| L2 DPSARAM | CLA Data RAM 1 |
| L3 DPSARAM | CLA Program RAM |
不用 CLA 时,可以先把这些区域当作普通 RAM 理解,但工程链接文件要配置正确。
4. 从 STM32 角度类比
| STM32 概念 | C2000 对应概念 |
|---|---|
| 内部 Flash | FLASH |
| SRAM | M0/M1/L0/L1/L2/L3 SARAM |
| 外设寄存器区 | Peripheral Frame |
| NVIC | PIE + CPU INTx |
| 中断向量表 | CPU Vector + PIE Vector |
| System Memory Bootloader | Boot ROM |
| Option Bytes / 读保护 | Password / Secure Zone / OTP |
| 出厂校准值 | Calibration Data |
| Device ID | PARTID |
5. 最容易踩坑的地方
| 坑 | 说明 |
|---|---|
| Reserved 区域不要用 | 不要放代码、变量,也不要主动访问 |
| OTP 不要随便写 | 一次性可编程,写错难恢复 |
| Password 区不要乱动 | 可能导致芯片被锁,调试器无法访问 |
| Calibration Data 不要擦 | 里面可能有出厂校准参数 |
| Dual-Mapped 不是两块 RAM | 同一块 RAM 有两个地址映射,不能重复分配 |
| Protected 寄存器要 EALLOW | 否则写操作可能无效 |
| PIE 中断要 PIEACK | 否则同组中断可能无法继续响应 |
6. 总结
| 序号 | 记忆点 |
|---|---|
| 1 | 程序主要放在 FLASH |
| 2 | 变量、栈、高速函数放在 SARAM |
| 3 | 外设寄存器在 Peripheral Frame |
| 4 | 外设中断入口看 PIE Vector RAM |
| 5 | Reserved / OTP / Password / Calibration Data 不要乱碰 |
更多推荐



所有评论(0)