社区导航

 

搜索
查看: 1064|回复: 3

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

[复制链接]

19

TA的帖子

6

TA的资源

一粒金砂(初级)

Rank: 1

发表于 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

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


回复

使用道具 举报

19

TA的帖子

6

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2019-5-10 08:40 | 显示全部楼层
自己回复一下


回复

使用道具 举报

174

TA的帖子

0

TA的资源

宇宙尘埃

发表于 2019-5-10 13:26 | 显示全部楼层
谢谢分享!


回复

使用道具 举报

5

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-11-8 08:26 | 显示全部楼层

利用id做软件加密



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



 



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



 



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



 



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



 



四、做软件加密时注意



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



stm8:0x4865~0x4870



      



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




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-11-14 06:17 , Processed in 0.140916 second(s), 16 queries , Gzip On, MemCache On.

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