DSP28335开发中的Flash与RAM模式切换详解

CCS5.5 开发 DSP28335 Flash RAM 模式快速切换指南

在 DSP28335 开发中,Flash 和 RAM 模式的灵活切换是提升调试效率与保证产品稳定性的关键。本文将详解两种模式的核心区别,并提供仅需修改三处的快速切换方法。

1 Flash RAM 模式的核心定义与区别

RAM 模式

  • 定义:程序加载到 DSP 内部 RAM 中运行,依赖临时存储介质
  • 核心特点
    • 读写速度快(无 Flash 擦写延迟),调试时程序下载速度快
    • 断电后程序丢失,需重新下载
    • 适合开发阶段的功能验证与调试

Flash 模式

  • 定义:程序烧录到 DSP 的非易失性 Flash 存储器中运行
  • 核心特点
    • 断电后程序不丢失,适合最终产品发布
    • 首次烧录需擦写 Flash,速度较慢
    • 部分高频函数需复制到 RAM 运行(解决 Flash 访问延迟问题)

关键区别对照表

维度 RAM 模式 Flash 模式
存储介质 内部 RAM 片上 Flash
断电保存
下载速度 快(毫秒级) 慢(需擦写,秒级)
适用场景 开发调试阶段 最终产品部署
函数运行位置 全部在 RAM 部分核心函数需复制到 RAM

2. 对应的 CMD 文件配置

Flash 模式 CMD 文件

bash 复制代码
/* F28335.cmd - Flash版本 */

MEMORY

{

    PAGE 0:   /* Program Memory */

    PRAML0  : origin = 0x008000, length = 0x001000

    FLASHA  : origin = 0x3F0000, length = 0x008000

   

    PAGE 1:   /* Data Memory */

    DRAML1  : origin = 0x009000, length = 0x001000

}


SECTIONS

{

    .text     : > FLASHA,   PAGE = 0  /* 代码段放在Flash */

    .cinit    : > FLASHA,   PAGE = 0

    .switch   : > FLASHA,   PAGE = 0

    /* 其他段配置... */

}

RAM 模式 CMD 文件

bash 复制代码
/* F28335_RAM_lnk.cmd - RAM版本 */

MEMORY

{

    PAGE 0:   /* Program Memory */

    PRAML0  : origin = 0x008000, length = 0x001000

    RAML0   : origin = 0x009000, length = 0x001000

   

    PAGE 1:   /* Data Memory */

    DRAML1  : origin = 0x00A000, length = 0x001000

}


SECTIONS

{

    .text     : > RAML0,    PAGE = 0  /* 代码段放在RAM */

    .cinit    : > RAML0,    PAGE = 0

    .switch   : > RAML0,    PAGE = 0

    /* 其他段配置... */

}

3. 关键源文件解析

DSP2833x_CodeStartBranch.asm

  • 用途:Flash模式下的启动分支代码
  • 功能
    • 在Flash启动时执行必要的初始化
    • 处理Flash等待状态配置
    • 跳转到主程序入口
  • 调用时机:系统复位后首先执行

DSP2833x_SectionCopy_nonBIOS.asm

  • 用途:非BIOS环境下的段复制功能
  • 功能
    • 将初始化数据从Flash复制到RAM
    • 处理.cinit段的初始化
    • 支持运行时内存初始化
  • 适用模式:主要用于Flash模式

DSP2833x_CodeStartBranchRAM.asm

  • 用途:RAM模式下的启动分支代码
  • 功能
    • 简化版的启动代码
    • 直接跳转到主程序,无需Flash初始化
    • 适合调试和快速启动
  • 调用时机:RAM调试时使用

4. 最方便的切换方式:修改三处

第一处:主函数的宏定义

cpp 复制代码
// 运行模式定义

#define RUNMODE FLASH    // FLASH模式

// #define RUNMODE RAM   // RAM模式


//===================== Flash 专用函数声明 =====================

#if RUNMODE == FLASH

extern void MemCopy(Uint16 *SourceAddr, Uint16 *SourceEndAddr, Uint16 *DestAddr);

extern Uint16 RamfuncsLoadStart, RamfuncsLoadEnd, RamfuncsRunStart;

#endif

第二处:切换 CMD 文件

在CCS项目属性中修改链接器命令文件:

Flash 模式

  • F28335.cmd

RAM 模式

  • F28335_RAM_lnk.cmd

第三处:禁用及释放相关源文件

在项目文件管理器中:

Flash模式配置:

✅ 包含 DSP2833x_CodeStartBranch.asm

✅ 包含 DSP2833x_SectionCopy_nonBIOS.asm

❌ 排除 DSP2833x_CodeStartBranchRAM.asm

RAM模式配置:

❌ 排除 DSP2833x_CodeStartBranch.asm

❌ 排除 DSP2833x_SectionCopy_nonBIOS.asm

✅ 包含 DSP2833x_CodeStartBranchRAM.asm

相关推荐
小郭团队2 天前
2_6_五段式SVPWM(经典算法+DPWM2)算法理论与MATLAB实现详解
算法·matlab·硬件架构·arm·dsp开发
yrZXiZUdP3 天前
玩转光伏储能充电:PI双闭环控制仿真之旅
dsp开发
小郭团队11 天前
2_1_七段式SVPWM (经典算法)算法理论与 MATLAB 实现详解
嵌入式硬件·算法·硬件架构·arm·dsp开发
小郭团队12 天前
1_6_五段式SVPWM (传统算法反正切+DPWM2)算法理论与 MATLAB 实现详解
嵌入式硬件·算法·matlab·dsp开发
小郭团队12 天前
1_7_五段式SVPWM (传统算法反正切+DPWM3)算法理论与 MATLAB 实现详解
开发语言·嵌入式硬件·算法·matlab·dsp开发
大江东去浪淘尽千古风流人物12 天前
【Project Aria】Meta新一代的AR眼镜及其数据集
人工智能·嵌入式硬件·算法·性能优化·ar·dsp开发
Nautiluss15 天前
一起调试XVF3800麦克风阵列(十六)
人工智能·单片机·音频·语音识别·dsp开发·智能硬件
小郭团队16 天前
1_5_五段式SVPWM (传统算法反正切+DPWM1)算法理论与 MATLAB 实现详解
人工智能·嵌入式硬件·算法·dsp开发
LCMICRO-1331084774616 天前
长芯微LD8574完全P2P替代PCF8574,主要用于扩展通用输入输出端口(GPIO)
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发
Nautiluss17 天前
一起调试XVF3800麦克风阵列(十四)
linux·人工智能·音频·语音识别·dsp开发