目录

1、 FLASH介绍

2、  FLASH功能测试


调试的前期准备可以参考前面的博文:DSP篇--C6701功能调试系列之前期准备_nanke_yh的博客-CSDN博客

1、 FLASH介绍

FLASH作为EMIF的外设,对其操作就需要根据EMIF相关配置来确定FLASH的地址了。

一般地,用CPLD或者FPGA对其进行译码,分别给各个外设的片选分配一个唯一的地址。这个地址是物理地址,是用CEx和EA[21:2]硬线做译码得到的。而DSP要操作这个地址,必须使用逻辑地址(字节地址),这就要求有一个物理地址和逻辑地址的对应关系。在建立这种关系的时候,我们要明确地指出某个CEx的数据宽度,是8位还是16位。需要熟悉EMIF寄存器的配置:

2、  FLASH功能测试

对于Flash的操作主要是flash擦除,flash读和flash写。DSP通过EMIF的CE1存储空间外扩flash,根据Flash的数据手册可以得到Flash的相应操作的命令定义表:

擦除FLASH主要有片擦除和扇区擦除两种方法。一般调试大部分使用片擦除,也就是全部擦除。

查看flash手册重点需要找到以下几个关键点:1、FLASH的起始地址,也即基地址(0x01400000);2、扇区擦除时,每一扇区的起始地址和长度。

代码示例:

#define FLASH_ADR1  (0x01400000+(0x555<<2))
#define FLASH_ADR2  (0x01400000+(0x2aa<<2))
#define FLASH_ADR3  0x01400000 //基地址
//写*((Uint16 *)FLASH_ADR1) = 0x00AA;*((Uint16 *)FLASH_ADR2) = 0x0055;*((Uint16 *)FLASH_ADR1) = 0x00A0;*((volatile Uint16 *)Dst) = *SrcWord; // transfer the Uint16 to destinationwhile((*((volatile Uint16 *)Dst))!= (*SrcWord));//自主判断是否完成
//擦除
void EraseFlash(void)
{       *(volatile Int16 *)FLASH_ADR1 = 0x00AA;        *(volatile Int16 *)FLASH_ADR2 = 0x0055;        *(volatile Int16 *)FLASH_ADR1 = 0x0080;        *(volatile Int16 *)FLASH_ADR1 = 0x00AA;        *(volatile Int16 *)FLASH_ADR2 = 0x0055;        *(volatile Int16 *)FLASH_ADR1 = 0x0010;        while((*(volatile Uint16 *)0x01400000) != 0xffff);
}
void Erasecetor(Uint16 SAnum)
{*(volatile Int16 *)FLASH_ADR1 = 0x00AA;       *(volatile Int16 *)FLASH_ADR2 = 0x0055;        *(volatile Int16 *)FLASH_ADR1 = 0x0080;        *(volatile Int16 *)FLASH_ADR1 = 0x00AA;        *(volatile Int16 *)FLASH_ADR2 = 0x0055;            *(volatile Uint16*)(FLASH_ADR3+0x10000*SAnum) = 0x30;while(*(volatile Uint16*)(FLASH_ADR3+0x10000*SAnum) != 0xFFFF);
}

擦除完成后,所有地址上的值都会是FFFF的。

总结:首先需确定Flash的硬件引线的bit位;再确认Flash的起始地址位置;最后根据flash手册中操作命令调试读写、擦除功能。

DSP篇--C6701功能调试系列之 FLASH测试相关推荐

  1. DSP篇--C6678功能调试系列之EMIF、GPIO调试

    目录 1.EMIF调试 2.GPIO调试 前言不用多说,详见DSP篇--C6678功能调试系列之DDR3调试_nanke_yh的博客-CSDN博客 1.EMIF调试 EMIF主要是提供挂载的NOR F ...

  2. DSP篇--C6701 BOOT(头文件烧写法)

    目录 1.简介 2.具体步骤 2.1编写应用程序工程 2.2生成头文件 2.2.1分析.dat和.h文件 2.2.2头文件生成器软件设计和开发 2.3加载flash烧写程序完成烧写过程 1.简介 这是 ...

  3. 佛祖保佑,永无 BUG,永不修改 | KEIL 调试系列总结篇

    本篇将总结前面关于KEIL调试系列文章,方便后来人系统查看文章. 在此之前,请看以下视频: (视频请看原文链接) 这个视频展示了鱼鹰平时是如何运用前面的KEIL调试方法进行调试的. 为了让自己能够在遗 ...

  4. 三大电机控制方案之DSP篇(1):TMS320F28335

    三大电机控制方案之DSP篇(1):TMS320F28335 简介: TMS320F28335数字信号处理器是属于C2000系列的一款浮点DSP控制器.与以往的定点DSP相比,该器件的精度高,成本低, ...

  5. F28335 学习系列一——FLASH 搬移到 RAM 运行实现方法

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! F283 ...

  6. Android调试系列之dumpsys命令

    Android调试系列之dumpsys命令 版权声明:本文为[viclee]原创,如需转载请注明出处~ https://blog.csdn.net/goodlixueyong/article/deta ...

  7. 山外多功能调试助手用作虚拟服务器

    Foreword 这周体会到你以前学的东西真的是不知道在什么时候就要用到,当时为什么不好好学计算机网络呢.这几周有点儿怀念小老头儿,教了我计算机网络.Linux.MATLAB,最近用到了不少,是个可爱 ...

  8. 【GAL中的标注弹窗功能——Renpy系列1】

    GAL中的标注弹窗功能--Renpy系列1 注:面对没有python和renpy基础的萌新而设计的易理解,好修改的系统,代码简陋,请见谅哦~ 文章目录 GAL中的标注弹窗功能--Renpy系列1 前言 ...

  9. DSP一个程序如何实现RAM和Flash两种下载方式,CCS9

    我们都知道,DSP在进行程序调试时有两种运行模式,一种是程序在RAM中运行调试,另一种是在Flash中运行调试,在RAM中的Debug时间特别短,板子一旦掉电程序将不复存在:在Flash中下载程序特别 ...

最新文章

  1. 小孩子如何学会语言?科学家使用计算机模型解释儿童语言学习过程
  2. Ant在MyEclipse中的配置总结
  3. 跟着iMX28x开发套件学linux-02
  4. 485 九针头_张元英安宥真还是孩子,手臂还有疫苗接种痕迹,九针头太吓人
  5. c语言专属英语单词,C语言 V 编程英语单词.doc
  6. JAVA核心知识总结
  7. 【华为云实战开发】6.Cocos游戏项目如何在云端开发
  8. c开头英文语言,C开头的考研英语词汇
  9. emacs(考场+平时)配置方案
  10. JDBC03 利用JDBC实现事务提交与回滚【调用Connection中的方法实现事务管理】
  11. Lattice Diamond 的学习之新建工程
  12. 3dsmax动画六、骨骼调整及蒙皮。
  13. kdj买卖指标公式源码_KDJ胜率极高的买入机会,死记一个指标(附KDJ背离指标源码)...
  14. 华为云OBS创建对象时以HTTP方式通知订阅终端
  15. Win10如何删除输入法(删除默认输入法)
  16. 【程序员如何买基金 六】买卖指数基金的合适时机
  17. 【机器学习】李宏毅-预测PM2.5
  18. 基础拓扑学笔记(2)——拓扑不变量
  19. 一秒给黑白照片上色、模糊图片变清晰
  20. 一名渗透工程师所必备的技能(一)

热门文章

  1. Word安全警告 宏已被禁用解决
  2. Leetcode刷题-最长公共前缀
  3. ISCSI linux/windows配置及使用
  4. oracle ora-3136,[转]ORA-3136(WARNING Inbound Connection Timed Out)分析
  5. 【按键精灵】实战案例教你POST请求字符串相似度比较
  6. Postfix邮箱(八):安装反垃圾邮件系统Spam Locker
  7. python三原色组合白色_为何色光三原色三三相加得到白色,这其中加色原理是如何起作用的?...
  8. Android使用七牛实现录像加时间水印和拍照(截帧回调)
  9. SAP中参照采购协议发票校验时带出价格与协议当前价格不一致的案例分析
  10. 对交换机与路由器的认知