[经验] 使用STVP对STM8进行加密和解除写保护

电子_精灵   2019-5-9 16:12 楼主
1. 下载和安装 ST-LINK 驱动和 STVP 软件 - STVP 和 STVD 都在 sttoolset 里面: http://www.st.com/st-web-ui/stat ... /resource/technical /software/sw_development_suite/sttoolset.zip - ST-LINK 驱动好像 sttoolset 里面也有了。

2. 板子上电,连接好 ST-LINK。

3. 打开 STVP: 运行“开始”->ST Toolset->Development Tools -> ST Visual Programmer

4. 连接配置:运行 Configure -> Configure ST Visual Programmer 选择 ST-LINK, USB, SWIM, STM8S003F3

5. 选择程序:运行 File->Open,选择要下载的.hex 或者.srec 文件。 6. 下载程序:运行 Program -> All tabs ,执行下载。 Hardware: 烧录工具。 Port: USB。 Programming mode: SWIM。 Device: 选择要烧录的型号。 打开要烧录的目标文件 “File -> Open…”。

DATA MEMORY: EEPROM 数据区。 配置 OPTION BYTE 选项的界面如图 2-67 所示。

图 2-67 配置 OPTION BYTE Value: 可直接在此框内直接输入配置好的 OPTION BYTE 值,OPTION BYTE 内容根据 Value 的值自动配置好。 以 STM8S105S4 为例说明 OPTION BYTE 的配置。如图 2-68 所示。

图 2-68 OPTION BYTE 配置举例 ROP:读出保护设置。若设置了 ON,那么程序是就无法读出。 UBC [7:0]:用户启动代码区。一般用户在做 IAP 时,需要保护的代码部分设置。 AFR[7:0]: 备选功能重映射选项。通过此来设置需要的功能。比如同一个引脚会有不同的 功能。可通过此选项来设置需要的功能。 HSITRIM:高速内部时钟调节寄存器大小。 LSI_EN: 低速内部时钟使能。 IWDG_HW: 独立看门狗。 WWDG_HW: 窗口看门狗激活。 WWDG_HALT: 当芯片进入停机模式时窗口看门狗的复位动作。 EXT_CLK: 外部时钟选择。 CKAWUSEL: 自动唤醒单元/时钟。 PRSC[1:0]: AWU 时钟预分频。 HSECNT[7:0]: HSE 晶体振荡器稳定时间。 BOOTLOADER ENABLE: 如果用户使用 UART 来下载程序,可通过此选项位来设置。

更多的信息,可参考 STM8S105S4 的数据手册。 选择“Program>All tabs(on action sectors if any)”。 此选项可将“PROGRAMM MEMORY,DATA MEMORY 和 OPTION BYTE”一起烧录到 STM8 里面去。如图 2-69 所示。

编程的三个区域:
程序区 数据区 选项区,点击三个中的任意一个,出现黑体表示被激活

程序区:写程序的 FLASH 区域

数据区: 保存数据的 EEPROM 区域

选项区:加密等功能

加密设置
第一步,点击进入选项区,将 ROP 项设为 Read Out Pretection ON

第二步,执行当前窗口中中间红色的,就把加密位写进去了,这样芯片就加密了,再也不能 读出其中的内容了。

解除芯片加密
如果芯片已经加密,想重新写程序进去,必须先擦除保密位 第一步,点击激活选项区,ROP 设为 Read Out Pretection OFF

第二部 执行所有窗口中中间红色的,芯片加密位擦除,可以重新写程序,但是里面的内容 全部清除了

回复评论 (4)

自己回复一下
点赞  2019-5-10 08:40
谢谢分享!
点赞  2019-5-10 13:26

利用id做软件加密

1,如果板子上有外部存储器,可以先编写一个程序,利用算法把id计算得到一些值存入外部存储器,然后再烧写真正的程序,真正的程序去校验外部存储器的数据是否合法即可

 

2,利用板子上按键组合,或是上电按住某些键,程序在这个时候利用算法把id计算得到一些值存入程序区,程序运行时去验证程序区数据是否正确

 

3,轩微编程器有软件加密的功能,编程器会读芯片id,根据算法直接改写缓冲区,达到软件加密的作用

 

4,读出的id通过一定算法,例如异或加上一个数,得到的数据存入flash(只运行一次,运行后标志位也存入flash),下次读到这个标志位,就不运行这个程序。//QQ9272078

 

四、做软件加密时注意

1,不要在程序中直接出现id地址,stm32例如1FFFF7E8 1FFFF7EC 1FFFF7F0

stm8:0x4865~0x4870

      

2, 利用校验和或是crc对程序区进行校验,防止改程序

点赞  2019-11-8 08:26

没看到图啊

点赞  2019-12-23 14:51
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复