关于C2000芯片的FLASH锁死----以及解决办法
<div class='showpostmsg'><P>FLASH锁死了这是为什么,有没有办法解锁。为什么会有类似下面这几种报错:</P><P>Read status value 0x0001 from symbol PRG_status(24x系列)</P>
<P>ADC Calibration not complete, check if device is unlocked and recalibrate.(2833x系列)</P>
<P> </P>
<P>答:FLASH锁死是由于在FLASH中的密码部分写入了密码。如果在烧写的的过程中,受到干扰就有机会导致FLASH锁死,如果试了下面的方法,仍旧没有办法解锁,那么没只能够更换芯片。</P>
<P>在C2000烧写过程中(clear)-->erase-->(depletion)-->program-->verify。如果在Erase的时候,芯片因为强行断电,供电不稳定导致类似于强行断电的情况,时钟不稳定,那么FLASH中的密码段有可能成为随机值或全0。</P>
<P>1、确认一下是不是有程序放在FLASH的密码区(查看芯片的datasheet,比如2833x在0x33FFF8~0x33FFFF),如果是那么想办法得到.out中这里的数据,这就是密码、</P>
<P>2、断电,上电,用CCS-->memory看看FLASH区是不是全0,用GEL功能中的Code Security Module-->Unlock_CSM试试能不能解锁。</P>
<P> </P></div><script> var loginstr = '<div class="locked">查看精华帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
}
</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <P>关于上帖谈到的解锁方法的第一种解锁方法,下面是详述:</P>
<P>(本帖的引用地址:<A href="http://www.hellodsp.com/bbs/forum.php?mod=viewthread&tid=48620&extra=&page=1">http://www.hellodsp.com/bbs/forum.php?mod=viewthread&tid=48620&extra=&page=1</A>)</P>
<P> </P>
<P> </P>
<P><FONT face=Tahoma size=2>接触dsp已经有一段时间了,从Hellodsp得到了很多帮助<FONT color=black>,前段时间本人也进行了第一次烧写,幸运的遇到了FLASH锁死的情况,不知该哭该笑,我们系很少人玩DSP,少写过的人不多,遇到锁死的就更少了,没人给解决,只能在网上搜,最终皇天不负有心人,搞定!!废话不多说,下面就分享一下该怎么解锁(部分借用网络资源,在此感谢!!):</FONT><BR><FONT color=black>根据得到的.out文件,通过hex2000.exe来得到相应的ASCII码文件,文件中</FONT><BR><FONT color=black>00 08 00 3F 7F F8 EE EE FF FF FF FF FF FF FF FF FF FF FF FF FF FF</FONT><BR><FONT color=black>为密码区,其中00 08 00 3F 7F F8为密码区地址,后面16组为实际密码,LSB到HSB。</FONT><BR></FONT><FONT face=Tahoma color=purple><FONT size=3>需要:对应的.out 和.map文件,分别用来生成hex文件和查看链接关系。<BR>配置:build.bat 批处理文件,用windows的命令提示符来得到所需要的hex文件,编码为ASCII;用记事本打开 内填写hex2000.exe在你电脑中的目录<BR> build.cmd 命令文件,采用hex2000.exe程序选项命令来得到所需文件。<BR> 具体命令 :<BR> -memwidth 16 设定存储器格式为16bit ,不用管<BR> -romwidth 16 设定rom格式为16bit&</FONT></FONT><FONT size=3><FONT color=purple><FONT face=Tahoma>,不用管</FONT></FONT></FONT><FONT size=3><FONT color=purple><BR></FONT></FONT><FONT size=3><FONT color=purple><FONT face=Tahoma> -a 设定输出文件格式,</FONT></FONT></FONT><FONT size=3><FONT color=purple><FONT face=Tahoma>填写你的.OUT名如我的是Tlv320aic23x.out <BR> -o 设定输出文件名,随便起个名字,是你得到密码的文件名<BR> -map 设定输出映射文件</FONT></FONT></FONT><FONT size=3><FONT color=purple><FONT face=Tahoma>,填写你的.map名 如我的是Tlv320aic23x.map</FONT></FONT></FONT><FONT size=3><FONT color=purple><BR></FONT></FONT><FONT size=3><FONT color=purple><FONT face=Tahoma> -boot 设定引导数据流,不做操作</FONT></FONT></FONT><FONT size=2><FONT face=Tahoma><BR>hex2000.exe 程序文件, ccs自带的,路径为..\C2000\cgtools\bin\hex2000.exe<BR></FONT></FONT><FONT size=2><FONT face=Tahoma>更多有关此程序的命令选项请参考相关资料。<BR><FONT size=5><FONT color=red>具体你要做的是:</FONT><BR><FONT color=red>1、回帖,下载压缩包并解压</FONT><BR><FONT color=red>2、把文件夹中的.out和.map文件换成你的文件,</FONT><BR><FONT color=red>3、按照上面说的修改</FONT></FONT></FONT></FONT><FONT size=5><FONT color=red><FONT face=Tahoma>buildhex.cmd里面的内容,然后将文件夹拷贝到ccs安装目录下(不知道不考行不行,没试)</FONT></FONT></FONT><FONT size=5><FONT color=red><FONT face=Tahoma><BR>4、打开ccs连接目标板 <BR>5、双击</FONT></FONT></FONT><FONT size=5><FONT color=red><FONT face=Tahoma>build.bat</FONT></FONT></FONT><FONT size=5><FONT color=red><FONT face=Tahoma>会产生一个记事本文件,打开找到</FONT></FONT></FONT><FONT size=5><FONT color=red><FONT face=Tahoma>00 08 00 3F 7F F8即可</FONT></FONT></FONT><BR><FONT size=2><FONT face=Tahoma><BR>00 3F 7F F8 这段数字后的数据为地址003f7ff8中的内容,也即密码区的首字节,根据前面<BR>得到的ascii格式的文本文件,搜索3F 7F数据组合,然后其后的就是实际烧进去的数据。如果是<BR>错误烧写锁定DSP的话,则把后续的指令代码作为密码写进去即可,一般为32bit,程序长跳转二进制代码。<BR>如果是自己烧写了代码,则后续的16组数据即为所设密码。<BR><BR>具体写的是什么,可以参考对应的.map文件,其中列出了所有symble,以及他们的输入输出段,可以看到003f7ff8地址中对应的是那个symble和所占字节数。</FONT></FONT></P> 楼主 请问下 C2000很容易误操作锁死么 谢谢啦 我正好用过这几代C2000芯片。
在2407 2812上非常容易,因为他们TI没有放power-on-reset (POR) and brown-out-reset (BOR),提供的供电不稳定的时候很容易导致烧写过程中断,然后就锁死.
在280X 2833X上还行,估计是有改进,但还没有增加BOR POR
在最新的芯片上,开始少见,有POR BOR。一般锁死是由于上面谈到的第一条误操作导致 :) :) :) 我之前也有遇到过被锁死的现象,只能重新换芯片,也尝试了楼主所说的办法。 帖子里面谈到的方法,其实主要是针对误把FLASH密码段当做程序段使用后的补救方法。
如果是烧写(或者更明确的说就是erase吧)中途断电或者中途卡断,又或其他的原因导致烧写过程不成功,导致芯片的密码区变为全0(默认锁死),或者有些0有些1;那么没有任何办法,只能换芯片。