当前位置: 首页 > news >正文

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

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

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

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

 RAM 模式

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

 Flash 模式

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

关键区别对照表

维度

RAM 模式

Flash 模式

存储介质

内部 RAM

片上 Flash

断电保存

下载速度

快(毫秒级)

慢(需擦写,秒级)

适用场景

开发调试阶段

最终产品部署

函数运行位置

全部在 RAM

部分核心函数需复制到 RAM

2. 对应的CMD文件配置

Flash模式CMD文件

/* F28335.cmd - Flash版本 */MEMORY{PAGE 0:   /* Program Memory */PRAML0  : origin = 0x008000, length = 0x001000FLASHA  : origin = 0x3F0000, length = 0x008000PAGE 1:   /* Data Memory */DRAML1  : origin = 0x009000, length = 0x001000}SECTIONS{.text     : > FLASHA,   PAGE = 0  /* 代码段放在Flash */.cinit    : > FLASHA,   PAGE = 0.switch   : > FLASHA,   PAGE = 0/* 其他段配置... */}

RAM模式CMD文件

/* F28335_RAM_lnk.cmd - RAM版本 */MEMORY{PAGE 0:   /* Program Memory */PRAML0  : origin = 0x008000, length = 0x001000RAML0   : origin = 0x009000, length = 0x001000PAGE 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. 最方便的切换方式:修改三处

第一处:主函数的宏定义

// 运行模式定义#define RUNMODE FLASH    // FLASH模式// #define RUNMODE RAM   // RAM模式//===================== Flash 专用函数声明 =====================#if RUNMODE == FLASHextern 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

http://www.dtcms.com/a/410653.html

相关文章:

  • 海珠建网站公石狮网站建设公司哪家好
  • 网站建设电话销售录音建行个人网上登录入口
  • Python全栈项目:基于深度学习的语音识别系统
  • 语音识别-流式和非流式实现方式
  • 网站被攻击 是vps问题还是dz程序建设网站的经验
  • uniapp中pinia(setup语法)使用流程
  • SimpleBEV:改进的激光雷达-摄像头融合架构用于三维目标检测
  • 一个网站制作流程qq快速登录入口
  • Flash Attention学习笔记
  • 解决 QGraphicsDropShadowEffect 导致的 UI 持续刷新
  • 用 LoRA 微调 Qwen3-0.6B 模型,打造专属宠物商店智能客服
  • 建搜索引擎网站衡东网络推广公司
  • Go test 命令完整指南:从基础到高级用法
  • apifox认证登录自动化
  • 江西网站建设哪家专业女装wordpress
  • IDEA JVM优化配置idea64.vmoptions - 保守兼容版本 兼容IDEA 2023.3.6版本【亲测可用】
  • 网站图片像素多少做视频有赚钱的网站
  • APT攻击:隐蔽战场的威胁与防御之道
  • 小兔鲜项目
  • 黑马点评学习笔记01(手机号校验(正则表达式))
  • 声明式事务7
  • 外贸专业网站制作昆明建设网站哪家好
  • 鸿蒙原生contact.queryContacts通讯录查询实现
  • 根据百度地图做网站太原h5建站
  • 【JAVA】从入门到放弃-02-工具、类型、输入输出
  • 伪静态怎么设置(详细教程)
  • 【leetcode】57. 插入区间
  • 多sheet excel 导出
  • 手机移动端网站是什么用什么软件做网站布局
  • cesium-kit:让 Cesium 开发像写 UI 组件一样简单