使用环境

  • 操作系统版本:Windows11 Home 22H2
  • 操作系统平台(x86/x64):x86
  • VsCode 版本:1.69.2
  • EIDE 插件版本:[v3.7.2022072103] preview version
  • C/C++ 插件版本:Version 1.11.4: July 21, 2022
  • 何种编译器(keil_c51/sdcc/armcc5/armgcc/...):IAR_STM8?
  • 编译器版本(非编译问题可忽略):

描述问题

之前把芯片读保护打开了,之后就没法烧录了,提示读保护
现在想全片擦除,但是执行Erase命令后报错了
或者说EIDE有其他解除读保护并烧录的功能吗?

屏幕截图

控制台输出

STVP_CmdLine version 1.6

Verbose ON
Log activity OFF
Display Progress OFF
Message box warning if protect option byte ON
Loop mode OFF
Erase device ON
Blank check device OFF
Verify device OFF

Configuration:
BoardName=ST-LINK ST-LINK_ID=0 Device=STM8L052C6 Port=USB ProgMode=SWIM

Hit 'Esc' key to abort during communication.

>>> Erasing PROGRAM MEMORY
(API) ERROR : Erase is not available on PROGRAM MEMORY for STM8L052C6

<<< Erasing PROGRAM MEMORY fails

 *  终端进程“cmd.exe /C "C:\Users\30207\.eide\tools\stvp\STVP_CmdLine.exe -BoardName=ST-LINK -Port=USB -ProgMode=SWIM -Device=STM8L052C6 -no_progress -no_loop -no_log -no_progProg -no_verif -erase"”已终止,退出代码: 1。 
 *  终端将被任务重用,按任意键关闭。
  • inspire

    EIDE 上的操作方法:

    • 准备一个空的选项字节文件:

      stm8-empty-opt-bytes.txt
      148B
    • 将该选项字节文件复制到项目根目录下,然后将其设置到 选项字节文件 中:

    • 将 Program File,eeprom File 选项的值设置为 ‘null’(此步很重要)

    • 点击烧录,会直接覆盖选项字节,这样读保护就被去除掉了,实测:

      用软件读芯片,提示无法读取:

      使用上面的步骤,覆盖选项字节:

      再次用 STVP 软件读取成功,已经自动擦除为全 0 了:

inspire

这个 STVP 本来就不支持直接擦除;

网上有很多方法,你可以搜索一下:stvp stm8 擦除芯片

inspire

EIDE 上的操作方法:

  • 准备一个空的选项字节文件:

    stm8-empty-opt-bytes.txt
    148B
  • 将该选项字节文件复制到项目根目录下,然后将其设置到 选项字节文件 中:

  • 将 Program File,eeprom File 选项的值设置为 ‘null’(此步很重要)

  • 点击烧录,会直接覆盖选项字节,这样读保护就被去除掉了,实测:

    用软件读芯片,提示无法读取:

    使用上面的步骤,覆盖选项字节:

    再次用 STVP 软件读取成功,已经自动擦除为全 0 了:

stvp 的这个 -erase 选项真的有点坑,后面把这些步骤做到插件里,再增加一个解除读保护选项,就行了

    admin
    太感谢了,我这边也成功了,期待EIDE改进的越来越优秀~

    Write a Reply...