搜索
bottom↓
回复: 11

MSP430使用BSL方式,读取不到正确代码,但是烧录正常

[复制链接]

出0入0汤圆

发表于 2012-11-7 09:15:54 | 显示全部楼层 |阅读模式
MSP430F2252使用BSL烧录方式(熔丝未烧断)可以正常烧写程序,但是读取不到正确的代码。请大家帮忙分析可能的原因。

目前的现象:
读取时密码设置为全0xFF,则可以读取,但是读到的内容全为0xff,如果密码设置为中断向量,则显示获取版本号失败!
而且,如果密码设置为中断向量,则擦除也会失败,失败提示“获取BSL版本号失败!”,设为全FF就可以正常烧录。

查数据手册看到BSL版本V2.x的读取版本号也需要密码。看来烧录玩程序后密码并没有更新,是什么原因呢?
难道要烧断熔丝密码才有效吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2012-11-7 14:37:21 | 显示全部楼层
本帖最后由 gdmgb520 于 2012-11-7 14:40 编辑
qiuchen 发表于 2012-11-7 14:00
这是密码验证失效,原来的代码被芯片自动清除了。


谢谢 qiuchen

确实发现烧录软件显示烧录成功,但是程序没有运行。
使用FET-Pro430 通过JTAG读取Flash,发现程序已经烧入,中断向量也是正常的,
但是,DCO constant部分被擦除了。
再使用FET-Pro430烧录:
=====================================
Reading Code File ...........................         done
-- Code size = 0x2628 ( 9768 ) bytes
JTAG communication initialization....         OK
Verifying Security Fuse ....................         OK
Reading Retain Data .............         done
Erasing memory ...............................         done
Verifying Retain Data ......................         done
JTAG communication initialization....         OK
All memory Blank checking.............         OK
Flash programming ....................         done
Verifying check sum .........................         OK
DCO constants verification.......         failed
--------------- FAILED !!! -----------------

看来可能是使用BSL编程时把DCO constant部分的数据破坏了,是不是没有办法恢复了?
另外,就算DCO constant被破坏,应该不影响我使用BSL方式读取代码啊?

是不是这样呢?
BSL的运行时依赖于DCO时钟的,DCO constant破坏后DCO无法工作导致BSL也无法工作?貌似有道理!那为什么还可以用BSL方式写入代码呢?

出0入0汤圆

 楼主| 发表于 2012-11-7 15:45:25 | 显示全部楼层
qiuchen 发表于 2012-11-7 15:23
其实BSL写入的时候,也会验证密码的。只是验证密码失败擦除了FLASH的数据,而这个过程又和擦除FLASH的效果 ...

谢谢!

问题已解决。
分析原因是DCO constant被破坏!由于使用一个BSL烧录软件烧入时去掉了保护信息段选项,导致DCO constant(0x10f8--0x10ff)内容被清除,该段被清除后MCU无法工作。
该段与BSL的关系:我好像看到过BSL的运行也是基于DCO时钟源的,可能DCO constant 破坏后会导致BSL运行不正常。

解决的过程:
1.使用JTAG从另一块板读出了DCO constant
2.把读出的代码烧入到DCO constant被破坏的板(FET-Pro430烧录选项现在擦除(包含info 菲拉斯)并去掉保护DCO constant)
3.再使用BSL读取数据。

另外:我使用MSP430F2252,BSL密码错误时芯片并没有自动擦除Flash。

出0入0汤圆

 楼主| 发表于 2012-11-7 10:03:41 | 显示全部楼层
自己顶一个

出0入0汤圆

发表于 2012-11-7 14:00:12 | 显示全部楼层
这是密码验证失效,原来的代码被芯片自动清除了。

出0入0汤圆

发表于 2012-11-7 09:15:55 | 显示全部楼层
本帖最后由 qiuchen 于 2012-11-7 15:24 编辑

其实BSL写入的时候,也会验证密码的。只是验证密码失败擦除了FLASH的数据,而这个过程又和擦除FLASH的效果相同,所以用户一般觉察不到。你说的DCO被擦除的事情,一般的工具在用户不选择的时候,是不会对信息段做操作的;我猜你可能不小心选择了擦除信息段的选项。另外DCO是否和BSL有关我不清楚,个人感觉是不会影响或者影响不大。

出0入0汤圆

发表于 2012-11-7 16:05:01 | 显示全部楼层
这比较奇怪,看看你芯片的BSL版本把。现在密码验证失败的时候,是默认全部清除mian flash的。

出0入0汤圆

发表于 2012-11-7 16:05:47 | 显示全部楼层
另外你从其他芯片拷贝的DCO信息是有偏差的,偏差一般不大。

出0入0汤圆

 楼主| 发表于 2012-11-8 11:04:14 | 显示全部楼层
qiuchen 发表于 2012-11-7 16:05
另外你从其他芯片拷贝的DCO信息是有偏差的,偏差一般不大。

恩,知道的。这个DCO校准值应该是出厂时烧入的。
DCO不准肯定会影响程序运行。
所以,这块板不拿出去安装,只在家里用了。

谢谢

出0入0汤圆

发表于 2012-11-8 11:17:40 | 显示全部楼层

出0入0汤圆

发表于 2012-11-9 14:41:01 | 显示全部楼层
前期调试时先不要加密
软件稳定后 在发布加密

出0入0汤圆

 楼主| 发表于 2012-11-9 16:57:11 | 显示全部楼层
chenwan67 发表于 2012-11-9 14:41
前期调试时先不要加密
软件稳定后 在发布加密

恩,目前开始要考虑这个问题了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-2 04:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表