2039|0

2014

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

TMS320F2812中FLASH寄存器的配置问题解答汇总 [复制链接]

问:我使用的是TI 2000系列芯片中的2812!

  我使用的是汇编语言对其进行开发,目前主程序已经完成,需要烧写到FLASH中运行,但烧写过后发现在FLASH中运行的速度和在RAM中用仿真器仿真的速度差不多!这样就太慢了,我设置的PLL倍频到150MHZ,后来发现是有关FLASH的一些配置寄存器没有进行配置,我想在FLASH中运行速度过慢的原因可能是这个造成的吧!

  我查看了TI的说明文档,其中关于FLASH寄存器的介绍中,有如下的一段:

  Note: Flash configuration registers should not be accessed while an access is in progress in flash or OTPmemory
The flash registers should not beaccessed from code that is running from  OTP or flash memory or while an accessmay be in progress. All register accesses to the flash registers should be madefrom code executing outside of flash/OTP memory and an access shouldnot be attempted until all activity on the flash/OTP has completed. Nohardware is included to protect for this.
You can read the flash registers fromcode executing in flash/OTP; however,do not write to the registers.

  从上面的一段看出,如果需要配置FLASH的寄存器,必须执行FLASH以外存储空间的程序才可以实现,我又发现这些寄存器是受EALLOW和CSM保护的,所以我按照以下步骤试图重新配置寄存器:

  1,在执行存放于FLASH中的主程序段时,将一段存于FLASH中的初始化flash配置寄存器的程序完全复制到片内L0SARAM中,该初始化程序如下:
MOVW  DP,#DP_FLASH           ;指向FLASH寄存器所在的页面

               EALLOW

              MOV   AL,#01H

               MOV   @FOPT,AL               ;使能FLASH流水线模式

               MOV   AL,#03H

               MOV   @FPWR,AL

               MOV   AL,#0FFH

               MOV   @FSTDBYWAIT,AL

               MOV   AL,#0FFH

               MOV   @FACTIVEWAIT,AL

               MOV   AL,#0203H

               MOV   @FBANKWAIT,AL

               MOV   AL,#06H

               MOV   @FOTPWAIT,AL

               EDIS

               LB     FLASH_RET    ;FLASH_RET 是我这段程序需要返回到的地址
复制代码
2,我配置了CSM模块的寄存器,使得器件不受CSM的保护

     3, 用   MOVL  XAR7,#8300H       ;200H是初始化程序复制到RAM中的地址            

               LB    *XAR7

               从FLASH跳转到RAM中执行该段初始化FLASH的程序

     4,从RAM中返回到FLASH中的主程序继续执行  但发现这段程序烧写到片子里面后,不能按照我的意图执行,FLASH寄存器没有得到重新
配置,   请问这是什么原因呢?

        我上述的几个步骤对不对呢?

      请问,如果在程序烧写到片内FLASH中,在执行该程序时,想调到RAM中执行另一段程序,

             这种情况应该如何实现呢?

             应该有哪些需要注意的地方呢?

     如果那位有配置FLASH寄存器的例子的话,请发给我一份做一下参考吧!

========================================================

答:在flash中怎么能运行配置属于flash的寄存器呢?自己改变自己是不行的。
要配置flash的寄存器,需要把对应的代码拷贝到RAM中运行,这样才能起作用。具体参考spra958c    Running an Application fromInternal Flash Memory on the TMS320F281x DSP (Rev. C).pdf

其实在flash中也可以运行配置flash的寄存器,只不过中间要加NOP,和循环延迟。

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
立即报名 | 2025 瑞萨电子工业以太网技术日即将开启!
3月-4月 深圳、广州、北京、苏州、西安、上海 走进全国6城
2025瑞萨电子工业以太网技术巡回沙龙聚焦工业4.0核心需求,为工程师与企业决策者提供实时通信技术最佳解决方案。
预报从速,好礼等您拿~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表