| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 嵌入式 -GD32代码读保护 -> 正文阅读 |
|
[嵌入式]嵌入式 -GD32代码读保护 |
引言公司产品换料,使用了 GD32F3 系列的 MCU,客户要求对代码进行读保护,再查看用户手册时,看到了其提供的“安全保护”,就想通过实验来看下实际效果; 手册介绍这里从 GD32F303 的用户手册摘录关键信息: 芯片内存结构
这里我们需要注意的是,这里的主存分为了 bank0, bank1. bank0 的页大小为 2KB 每页,bank1 的大小为 4KB 每页; 这里我们先明确,启用读保护功能是需要设置 可选字节块的,所以下面我们围绕可选字节块进行展开。 闪存操作说明我们知道,常规内存编程前需要进行一定的动作,擦除、解锁等操作,这里是通过 两层解锁和先擦除后编程的: 通过图 2 中,我们可以得知以下关键信息:
可选字节块说明功能生效条件每次系统复位后,闪存的可选字节块被重加载到FMC_OBSTAT和FMC_WP寄存器,可选字节生效。可选字节的补字节具体为可选字节取反。当可选字节被重装载时,如果可选字节的补字节和可选字节不匹配,FMC_OBSTAT寄存器的OBERR位将被置1,可选字节被强制设置为0xFF。若可选字节和其补字节同为0xFF,则OBERR位不置位。 上述我们可提取到关键信息:
可选字节的具体含义见下图: 安全保护功能说明
从图 4 的说明中我们可知:
代码实现保护功能开启经过上述的分析,结合库函数,我们确定了驱动函数为:
测试方法测试过程中,由于 SPC 字节仅支持用户代码修改,所以在代码中加入了某一 IO 电平检测,并修改 SPC 字节的代码,这里简单分享下:
现象说明
此时需要重启生效; 整体分析
进一步测试后面尝试了将 SWJ 重映射来实现防复制的目的,参考《GD32 SWJ调试接口关闭》添加链接描述。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:24:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |