打印

危险!!!单片机CIH病毒:一段锁死STM8芯片的代码。

[复制链接]
5208|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mcuisp|  楼主 | 2009-10-8 02:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mcuisp 于 2009-10-8 02:34 编辑

;...以下这段代码写OptionBytes,并造成STVD和STVP均无法操作该器件(锁死)
ld a,#$56
ld $5062,a
ld a,#$ae
ld $5062,a;Unlock Program Memory

ld a,#$ae
ld $5064,a
ld a,#$56
ld $5064,a;Unlock DataEEPROM and Optionbytes

ld  a,#$80
ld $505b,a
ld  a,#$7f
ld  $505c,a;Set FLASH_CR2 to enable OptionBytes Write

ld  a,#$a5
ld  $4800,a
ld  a,#$a5
ld  $4801,a
ld  a,#$a5
ld  $4802,a;Write OptionBytes,to Lock the Chip

ld  a,#$00
ld $505b,a
ld  a,#$ff
ld  $505c,a;Reset FLASH_CR2

有谁敢运行一下这段代码,他的芯片立马锁死,STVD和STVP都不能再对这个芯片做仿真、编程、擦除了。

STVD需擦除的场合.JPG (11.33 KB )

STVD需擦除的场合.JPG

STVD需擦除的场合1.JPG (9.38 KB )

STVD需擦除的场合1.JPG
沙发
birenai| | 2009-10-9 14:54 | 只看该作者
有意思,我得试试。

使用特权

评论回复
板凳
birenai| | 2009-10-9 14:55 | 只看该作者
ld  a,#$a5
ld  $4800,a
ld  a,#$a5
ld  $4801,a
ld  a,#$a5
ld  $4802,a;Write OptionBytes,to Lock the Chip

这里有没有错?是不是这样的
ld  a,#$a5
ld  $4800,a
ld  a,#$a5
ld  $4801,a
ld  a,#$5a
ld  $4802,a;Write OptionBytes,to Lock the Chip

使用特权

评论回复
地板
mcuisp|  楼主 | 2009-10-9 19:11 | 只看该作者
呵呵,LS写成红字的,就不会锁死了。
OptionBytes就相当于STM8的BIOS,写得不符合规范,STVD和STVP就无法操作。
但是通过编程器可以恢复。
这个现象是我在测试我的EP868仿真STM8过程中发现的。
所以在EP868的仿真菜单特别增加了个选项,就是复原芯片到出厂状态。

使用特权

评论回复
5
birenai| | 2009-10-10 11:23 | 只看该作者
我记得资料里面讲过,如果OPT的互补字节不匹配,则会强制为默认值,为什么这样写却没有被强制为默认值?

使用特权

评论回复
6
mcuisp|  楼主 | 2009-10-10 14:13 | 只看该作者
本帖最后由 mcuisp 于 2009-10-10 14:49 编辑

我猜是OptionByte的功能会强制为默认值,但是OptByte本身的内容却不会被改写为默认值。
上电时这些OptionByte会Load到SRAM寄存器内。

相信STVD会改进这个问题。
如果有兄弟用ST-link不幸碰到了这个问题,也可以找我帮忙解决。
呵呵,保证免费帮忙,不会强卖EP868的。

使用特权

评论回复
7
birenai| | 2009-10-10 15:29 | 只看该作者
没事,我是买了ST的三合一板,用兄弟的代码跑了一下,呵呵。

使用特权

评论回复
8
mcuisp|  楼主 | 2009-10-10 18:20 | 只看该作者
本帖最后由 mcuisp 于 2009-10-10 18:55 编辑

LS测试,没锁死呀?
把OptionBytes截个屏看看。
我刚才再试了一次,还是会锁死。
STVD版本是4.13,最新的版本。

使用特权

评论回复
9
birenai| | 2009-10-12 08:41 | 只看该作者
锁死掉了。OptionBytes的值读出A5  A5  FF  00  FF……

使用特权

评论回复
10
mcuisp|  楼主 | 2009-10-12 11:11 | 只看该作者
本帖最后由 mcuisp 于 2009-10-12 11:19 编辑

呵呵,LS敢于尝试,真英雄!:victory:
握个手:handshake

使用特权

评论回复
11
birenai| | 2009-10-12 16:40 | 只看该作者
我只是玩,不就坏了一片STM8S。不过还是希望ST能解释一下这个问题。

使用特权

评论回复
12
汉之云| | 2009-10-12 17:11 | 只看该作者
用STVP,选到option byte页面,直接烧一下就可以了,芯片可以用的

使用特权

评论回复
13
mcuisp|  楼主 | 2009-10-12 17:51 | 只看该作者
本帖最后由 mcuisp 于 2009-10-12 17:59 编辑

经试验,楼上兄弟所言非虚,功力深厚呀。用STVP可以恢复。
但注意烧OptionByte时,一定要设成Read Out Protection ON,才能成功。
如果设成Read Out Protection OFF,则还是不能恢复。
还要注意要用Program->Current Tab菜单命令,不能选All Tabs。

使用特权

评论回复
14
xuwei9686| | 2010-12-13 16:39 | 只看该作者
STM32如果如果打开硬件看门狗,也不能在更改程序了

使用特权

评论回复
15
xsgy123| | 2010-12-13 17:01 | 只看该作者
这个得试试,能解锁不

使用特权

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

本版积分规则

个人签名:www.mcuisp.com 免费STM32 ISP软件 EP968手持烧录器,现场升级/生产线量产STM32,STM8S/L,FreeScale,LPC2000,LPC9xx,C8051F,AVR,PIC......

340

主题

4985

帖子

22

粉丝