开发环境:
MDK:Keil 5.30
开发板:GD32F207I-EVAL
MCU:GD32F207IK
1 程序加密工作原理
GD32通过读取芯片唯一ID号来实现程序的保护,防止被抄袭。96位的产品唯一身份标识所提供的参考号码对任意一个GD32微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。按照用户不同的用法,可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。在这里要提醒读者, 要注意大端小端模式 。
2 程序加密具体代码实现
其实读取ID很简单,如果存储ID的变量为8位。则需要读取12次,如下所示。
uint8_t Sys_ID[12],i;
for(i=0;i<12;i++)
{
Sys_ID[i]=*( uint8_t*)(0x1FFFF7E8+i);
printf(' %0.2X',Sys_ID[i]);
}
如果存储ID的变量为32位。则需要读取3次。
u32 Sys_ID[3];
Sys_ID[2] = *(__IO u32*)(0X1FFFF7E8); // 低字节
Sys_ID[1] = *(__IO u32 *)(0X1FFFF7EC); //
Sys_ID[0] = *(__IO u32 *)(0X1FFFF7F0); // 高字节
STM32单片机的存储方式为小端模式。
【注】大小端
地址从小到大,先放低字节,再放高字节:小端模式
地址从小到大,先放高字节,再放低字节:大端模式
主函数代码如下:
/*
brief main function
param[in] none
param[out] none
retval none
*/
int main(void)
{
uint8_t Sys_ID[12],i;
//systick init
sysTick_init();
//usart init 115200 8-N-1
com_init(COM1, 115200, 0, 1);
for(i=0;i<12;i++)
{
Sys_ID[i]=*(uint8_t*)(0x1FFFF7E8+i);
printf(' %0.2X',Sys_ID[i]);
}
//ID 48 1D 35 54 33 34 34 08 33 31 35 36
if(Sys_ID[0]==0x48 && Sys_ID[1]==0x1D && Sys_ID[2]==0x35 &&
Sys_ID[3]==0x54 && Sys_ID[4]==0x33 && Sys_ID[5]==0x34 &&
Sys_ID[6]==0x34 && Sys_ID[7]==0x08 && Sys_ID[8]==0x33 &&
Sys_ID[9]==0x31 && Sys_ID[10]==0x35 && Sys_ID[11]==0x36)
{
printf('\r\nPass\r\n');
}
else
{
printf('\r\nFail\r\n');
}
while(1)
{
delay_ms(1000);
}
}
3 实验现象
将程序编译完成后下载到板子中,可以看到打印出来的唯一ID,该程序是通过现读取ID在通过ID判断,才会打印出ID后面的“通过”字样。
当然啦,每个芯片的ID是不一样。
上一篇:GD32开发实战指南(基础篇) 第4章 GD32启动流程详解(Keil版)
下一篇:GD32 ADC内部通道采样异常原因
推荐阅读最新更新时间:2026-03-25 11:25
- 用于 7VIN 至 16VIN、1.5V 和 1.2V 输出的 LTM4628EV DC/DC 模块稳压器的典型应用电路
- 使用 Analog Devices 的 LTC3728LIGN 的参考设计
- DER-406 - 适用于 A19 灯的 5.76 W 高 PF 非隔离降压-升压型 TRIAC 调光 LED 驱动器
- ADR5045B 5V 输出精密微功率并联模式电压基准的典型应用
- LT3970EDDB-3.42 2.5V 降压转换器的典型应用
- MC78M08BDTG 8V 电流调节器的典型应用
- LT1021DCN8-5 精密电压基准的典型应用
- DER-282 - 100W, 扁平(11 mm), LLC DC-DC转换器
- REF193 低压差开尔文连接电压基准的典型应用电路
- LT3088EM 线性稳压器用于添加软启动的典型应用
- MTBF突破4万小时!这家工业级3D相机品牌产品稳定性获权威机构认可
- 英特尔创始人、“摩尔定律”提出者戈登·摩尔去世
- 本周机器人行业大事件TOP5
- G20周刊|埃斯顿与北自所达成战略合作、海康机器人发布光伏组件汇流带视觉检测解决方案
- 14家工业智能企业入选《上海市智能机器人标杆企业与应用场景推荐目录》
- 大联大世平集团推出基于NXP产品的电竞鼠标方案
- STM32 Cubemax(一)——PWM配置及控制SG90舵机
- STM32 Cubemax(三)——时序读写完成称重传感器+HX711的使用
- STM32 Cubemax(四) —— STM32利用DMA空闲中断与Openmv通信
- 肖特®UTG超薄玻璃助力小米MIX Fold 2冲刺折叠屏“最后一公里”

GD32F30X_Firmware_Libarary
【Follow me第三季第4期】英飞凌CY8CPROTO-063-BLE开发板全任务实战源码
【野火】《电机应用开发实战指南—基于STM32》
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号