IAR仿真STM8单片机报错解决方法

1,301 阅读3分钟

这是我参与8月更文挑战的第21天,活动详情查看:8月更文挑战

   在刚发开始使用IAR软件调试STM8单片机时,经常会弹出如下错误。

image.png

image.png

  根据弹出的错误提示来看,是因为工程中缺少了*.out文件,打开项目查看后发现.out文件存在,为了确保生成的文件正常,将项目中临时生成的文件全部删除,然后重新编译,然后点IAR中的调试下载按钮,依然会弹出同样的错误。   重新装仿真器的驱动,重新装IAR软件,等等各种方法都尝试过,这个错误依然存在,难道是芯片坏了吗?换一个新的芯片后一切正常。一直以为是这芯片容易坏。后来有一次,有十几个产品返修,出现的都是这个错误。而且好几个产品使用都不到一星期,STM8单片机的质量难道这么次吗?于是怀疑不是芯片的问题,而是有其他没发现的地方。

  于是开启了漫长的查找bug时间,一直没有突破性的进展。有一天看到了批量烧写代码的脱机烧写器的时候,突然想到了,是不是脱机烧写器烧写完程序之后,芯片被加密了。禁止其他软件对芯片进行读写设置。

image.png

于是找了一个全新的芯片,然后用脱机烧写器给芯片里面烧写程序,然后在使用IAR向这个芯片下载程序,果然弹出了上面图片中的错误。罪魁祸首终于找到了。看来就是脱机烧写器对芯片加密了,如果要正常使用IAR软件对芯片进行仿真,第一步必须将芯片中的加密信息擦除掉。

使用STVP软件直接擦除芯片

image.png

这是会提示芯片写保护,不能进行擦除。于是又开始了第二轮探索,如何擦除芯片写保护。功能不负有心人,终于还是找到了方法。

image.png

首先将在STVP软件上选择 OPTION BYTE选项。

image.png

然后将第一行中的 ROP 后面的选项选择为 Read Out Protetion ON

接着点工具栏中第二个烧写按钮 image.png

此时又会弹出一个对话框,提示芯片的保护功能已经打开了,关掉对话框。

然后将ROP后面的选择重新选回 Read Out Protetion OFF 。

image.png

接下来继续点工具栏中的第二个烧写按钮。

image.png

这时候奇迹出现了,芯片可以正常烧写了。说明芯片的保护已经被解除了。

接下来继续使用IAR软件对此芯片进行仿真调试

image.png

此时IAR也可以正常仿真调试了,到此这个错误原因终于彻底解决了。这个错误原因前前后后折腾了好几个月,万幸的是找到了根本原因,否则只能向以前一样,不停地换芯片了。

STM8单片机功能很强大,但是在使用的过程中会有很多坑,需要自己慢慢去踩,也许技术人员就是在踩坑的过程中才成长起来的。