打印
[技术相关]

华芯微特MCU加密

[复制链接]
386|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
此文章介绍华芯微特MCU加密操作,在这里我们以SWM190为例给大家简单介绍一下MCU的加密功能。
我们程序加密的目的是防止芯片中的程序被他人读出使用,现主要介绍的加密方法有:
1. 读  保  护
2. S W D 封 锁
以上加密方法通过在用户程序中将0x1C偏移地址初始化为指定关键字,即可实现以下指定级别的加密。

程序下载后再次上电,芯片将处于指定加密级别的状态。

SWM190
# 加密操作函数配置 #
以SWM190为例,我们打开工程文件中的startup_SWM190.s文件,找到__Vectors,以其为0x00地址,找到0x1c地址处,此处默认值为0,默认FLASH读正常。
正常读写具体配置函数如下图所示:
__Vectors       DCD     __initial_sp               ; Top of Stack
                DCD    Reset_Handler              ; Reset Handler
                DCD    NMI_Handler                ; NMI Handler
                DCD    HardFault_Handler          ; Hard Fault Handler
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    MEM_CONFIG
                DCD    SVC_Handler                ; SVCall Handler
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    PendSV_Handler             ; PendSV Handler
                DCD    SysTick_Handler            ; SysTick Handler

SWD读取加密时,将0x1c处写0x43211234,编译程序并下载,重新上电后芯片处于SWD读加密状态,无法访问FLASH,但可以读取RAM中的数据,可通过擦除FALSH并复位解除SWD读锁定。
具体操作如下:
__Vectors       DCD     __initial_sp               ; Top of Stack
                DCD    Reset_Handler              ; Reset Handler
                DCD    NMI_Handler                ; NMI Handler
                DCD    HardFault_Handler          ; Hard Fault Handler
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    0x43211234                 ; Reserved
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    MEM_CONFIG
                DCD    SVC_Handler                ; SVCall Handler
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    PendSV_Handler             ; PendSV Handler
                DCD    SysTick_Handler            ; SysTick Handler

SWD封锁加密时,将0x1c处写0xABCD1234,编译程序并下载,重新上电后无法通过仿真器访问芯片,不能执行读写擦除操作。
此时SWD端口切换为通用IO。
只能通过ISP进行单向访问。具体操作如下:
__Vectors       DCD     __initial_sp               ; Top of Stack
                DCD    Reset_Handler              ; Reset Handler
                DCD    NMI_Handler                ; NMI Handler
                DCD    HardFault_Handler          ; Hard Fault Handler
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    0xABCD1234                 ; Reserved
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    MEM_CONFIG
                DCD    SVC_Handler                ; SVCall Handler
                DCD    0                          ; Reserved
                DCD    0                          ; Reserved
                DCD    PendSV_Handler             ; PendSV Handler
                DCD    SysTick_Handler            ; SysTick Handler

我们需要将ISP引脚(B0)接高,当芯片重新上电后检测到B0引脚持续1ms以上的高电平后,将会进入ISP(在应用编程)模式。
通用ISP程序使用串口进行通信,默认为UART0,引脚为A0(RX),A1(TX),硬件连接完成后打开我司提供的上位机软件,选择SWM190芯片型号,可执行擦除或下载操作来更新程序以解除加密。

使用特权

评论回复

相关帖子

沙发
lix1yr| | 2023-3-28 11:48 | 只看该作者
这种加密模式挺好,降低成本了,哈哈

使用特权

评论回复
板凳
g0d5xs| | 2023-3-28 12:50 | 只看该作者
其实用jlink的读保护也是可以的,针对一般**是有效的

使用特权

评论回复
地板
ex7s4| | 2023-3-28 13:57 | 只看该作者
如果可以买个加密器吧,能好很多

使用特权

评论回复
5
小夏天的大西瓜| | 2023-3-28 13:58 | 只看该作者
SWD接口锁住就是SWD引脚被锁住了,根本原因是用户使用这个引脚做其它功能了

使用特权

评论回复
6
zhizia4f| | 2023-3-28 15:06 | 只看该作者
这种操作很强啊,可以手动配置一下了

使用特权

评论回复
7
y1n9an| | 2023-3-28 17:15 | 只看该作者
话说这种加密之后,还能仿真之类的了吗?

使用特权

评论回复
8
su1yirg| | 2023-3-28 18:23 | 只看该作者
我觉得还是用自己写的加密算法吧,通用,哈哈

使用特权

评论回复
9
b5z1giu| | 2023-3-29 07:06 | 只看该作者
我想知道,如果把SWD复用打开,变成复用普通IO,是不是就读不出固件了

使用特权

评论回复
10
suw12q| | 2023-3-29 08:32 | 只看该作者
这算是华芯微特专用的加密方式吗?

使用特权

评论回复
11
华芯微特FAE| | 2023-3-29 09:25 | 只看该作者
y1n9an 发表于 2023-3-28 17:15
话说这种加密之后,还能仿真之类的了吗?

二级加密只能擦,一级加密什么都做不了

使用特权

评论回复
12
华芯微特FAE| | 2023-3-29 09:26 | 只看该作者
b5z1giu 发表于 2023-3-29 07:06
我想知道,如果把SWD复用打开,变成复用普通IO,是不是就读不出固件了

是的

使用特权

评论回复
13
q1d0mnx| | 2023-3-29 10:21 | 只看该作者
级别3是不是就最高级别了啊

使用特权

评论回复
14
l1uyn9b| | 2023-3-29 13:05 | 只看该作者
读保护就行的,很有意义

使用特权

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

本版积分规则

认证:广东华芯微特集成电路有限公司
简介:华芯微特是一家由留美归国资深技术团队创立的中国芯片设计公司,是国家高新技术企业。2014年进军MCU产业,专注于32位MCU研发设计,并针对细分市场提供参考解决方案。

30

主题

50

帖子

1

粉丝