打印

请教芯片FLASH无法擦除问题?

[复制链接]
6235|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
randy3418|  楼主 | 2013-10-15 16:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
现使用2808芯片开发(刚接触DSP),在仿真是曾出现使用TI例程无法仿真运行问题,仿真单步运行时C语言下方的汇编程序都是为-------;后修改CMD文件,将其中的PRAML0的起始地址该为0x008000后可仿真运行。现想将程序写人FLASH中,却发现在擦除FLASH时进度条停留在1/3处后就不动,多次重启软硬件都没有无法解决,在本网站上也看到相关的帖子,但是都没有说出是如何解决的,恳请哪为兄台出来指点一二!不胜感激!

相关帖子

沙发
randy3418|  楼主 | 2013-10-15 16:57 | 只看该作者
1.8V与3.3V电源端都采用47uF电容,在芯片附近增加多个105电容问题依旧。是否还有地方设置不当?

使用特权

评论回复
板凳
randy3418|  楼主 | 2013-10-15 17:05 | 只看该作者
在同一台电脑上烧写2802一切正常,但是2808擦除都有问题!是否是电路硬件有问题?但为什么又能仿真呢?真是有点搞不懂

使用特权

评论回复
地板
randy3418|  楼主 | 2013-10-15 17:18 | 只看该作者
在仿真过程中查看变量值时Value中显示的为memory map prevented read of target memory at 0x0000B480@Data,这是什么问题?CMD设置有问题?数据超出了区域?如果RAM不够应该会提示啊?

使用特权

评论回复
5
zhangmangui| | 2013-10-15 23:34 | 只看该作者
randy3418 发表于 2013-10-15 16:57
1.8V与3.3V电源端都采用47uF电容,在芯片附近增加多个105电容问题依旧。是否还有地方设置不当? ...

这个应该与供电没关系

使用特权

评论回复
6
zhangmangui| | 2013-10-15 23:36 | 只看该作者
randy3418 发表于 2013-10-15 17:18
在仿真过程中查看变量值时Value中显示的为memory map prevented read of target memory at 0x0000B480@Data ...

你是怎么查看的  你可以光标放到变量上   然后右击add to watch查看   可以右击refresh

使用特权

评论回复
7
zhangmangui| | 2013-10-15 23:39 | 只看该作者
你可以先找些编译没什么问题的工程单步和烧写一下看看
https://bbs.21ic.com/icview-577686-1-1.html

使用特权

评论回复
8
randy3418|  楼主 | 2013-10-16 10:06 | 只看该作者
zhangmangui 发表于 2013-10-15 23:39
你可以先找些编译没什么问题的工程单步和烧写一下看看
https://bbs.21ic.com/icview-577686-1-1.html
...

版主真是辛苦,都快12点了还帮我解答。十分感激!
使用add to watch查看数据时右击refresh数据还是没有反应依然是那样。见附件中的图片。
我昨天还发现一个问题,当用const定义一个数组时,无**确的读取数值中的具体值(制作LCD字库),如将cons取消,数据能正常读取(用小数组试验)。CMD中DRAML0   : origin = 0x00A000, length = 0x002000,是不是这个有什么讲究?

使用特权

评论回复
9
randy3418|  楼主 | 2013-10-16 10:08 | 只看该作者
附件为add to watch后的窗口图片,我使用TI的例程烧写FLASH试试看。
有一点我没明白TI的例程中为何无法仿真运行?是否是设置CMD文件对芯片造成了什么影响?

add to watch.bmp (651.08 KB )

add to watch.bmp

使用特权

评论回复
10
zhangmangui| | 2013-10-16 11:14 | 只看该作者
randy3418 发表于 2013-10-16 10:06
版主真是辛苦,都快12点了还帮我解答。十分感激!
使用add to watch查看数据时右击refresh数据还是没有反 ...

这完全是C语言功底啊  你如果在定义变量之前加code   就说明你这个量不是变量   
类似常量   烧写后是要存入到flash中  而不是预留RAM区   
是不能修改的  查看当然也不可以了    watch只能是变量

使用特权

评论回复
11
randy3418|  楼主 | 2013-10-16 11:45 | 只看该作者
zhangmangui 发表于 2013-10-16 11:14
这完全是C语言功底啊  你如果在定义变量之前加code   就说明你这个量不是变量   
类似常量   烧写后是要存 ...

在实际应用中主要是查找const定义中的数据以复制到LCDSendBuf中再写入LCD的RAM中,LCDSendBuf是变量。
例如  const u8 Temp[]={0x11,0x12,0x13};
        LCDSendBuf[0] = Temp[0];时LCDSendBuf[0] 的值不为0x11,而将Temp数据定义成普通数据LCDSendBuf[0] 的值才为0x11。
在RAM_Lnk.CMD文件中定义.econst          : > DRAML0,    PAGE = 1
                                      DRAML0   : origin = 0x00A000, length = 0x002000
是否是DRAML0 定义有问题?

使用特权

评论回复
12
randy3418|  楼主 | 2013-10-16 11:57 | 只看该作者
本帖最后由 randy3418 于 2013-10-16 11:59 编辑

调用TI例程gpio_toggle,在InitSysCtrl();后增加
MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);
InitFlash();
在擦除FLASH时停止以下窗口不动。

flash.bmp (907.58 KB )

flash.bmp

使用特权

评论回复
13
zhangmangui| | 2013-10-16 12:54 | 只看该作者
randy3418 发表于 2013-10-16 11:57
调用TI例程gpio_toggle,在InitSysCtrl();后增加
MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsR ...

我看你只选择了Erase Only  所以只能查出  没有烧写
你选择Erase,Program这个看看

使用特权

评论回复
14
zhangmangui| | 2013-10-16 12:55 | 只看该作者
randy3418 发表于 2013-10-16 11:45
在实际应用中主要是查找const定义中的数据以复制到LCDSendBuf中再写入LCD的RAM中,LCDSendBuf是变量。
例 ...

这个与LCD没关系  肯定最后是要到DSP中跑啊  
变量前面加了const在后面是不能修改的  
并且是不能watch的

使用特权

评论回复
15
randy3418|  楼主 | 2013-10-16 13:02 | 只看该作者
zhangmangui 发表于 2013-10-16 12:54
我看你只选择了Erase Only  所以只能查出  没有烧写
你选择Erase,Program这个看看 ...

因为先擦在写不行,我才选只擦除。

使用特权

评论回复
16
zhangmangui| | 2013-10-16 13:52 | 只看该作者
randy3418 发表于 2013-10-16 11:57
调用TI例程gpio_toggle,在InitSysCtrl();后增加
MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsR ...

加了这个也没多大影响MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);
只是将flash的代码搬移到RAM中运行   
这问题就说不好了

使用特权

评论回复
17
tergy2012| | 2013-10-16 14:43 | 只看该作者
路过学习学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

36

帖子

1

粉丝