本帖最后由 xxkj2010 于 2024-7-22 17:42 编辑
STC 芯片的加密可以使用ISP中的ID加密工具,
今天就测试一下这个加密方法是否有效
芯片用STC8H8K64U-TSSOP20,程序用的是STC8H2K08U-USB_to_2_UART-20240618\12-CDC(Communication Device Class)协议范例 - USB-CDC转单串口修改,加入定时闪灯程序(这样有利于观察),mail.c代码如下:
- /*---------------------------------------------------------------------*/
- /* --- STC MCU Limited ------------------------------------------------*/
- /* --- STC 1T Series MCU Demo Programme -------------------------------*/
- /* --- Mobile: (86)13922805190 ----------------------------------------*/
- /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
- /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
- /* --- Web: www.STCAI.com ---------------------------------------------*/
- /* --- BBS: www.STCAIMCU.com -----------------------------------------*/
- /* --- QQ: 800003751 -------------------------------------------------*/
- /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
- /*---------------------------------------------------------------------*/
-
- /************* 功能说明 **************
-
- 本例程基于STC USB转双串口核心功能实验板进行编写测试。
-
- CDC(Communication Device Class)协议范例
-
- 将代码下载到核心板后,在PC端可识别为USB-CDC串口设备
-
- USB-CDC转UART2(P1.0,P1.1)串口功能,通过核心板S-TXD2,S-RXD2接口进行收发
- USB-CDC从电脑接收的数据通过S-TXD2,S-RXD2接口发送
- S-TXD2,S-RXD2接口收取的数据通过USB-CDC发送给电脑
-
- 串口的数据位只支持8位,停止位只支持1位
- 校验位可支持:无校验、奇校验、偶校验、1校验和0校验
- 支持自定义波特率
-
- 下载时, 设置IRC工作频率为 24MHz.
-
- ******************************************/
-
- #include "stc.h"
- #include "usb.h"
- #include "uart.h"
-
- void sys_init();
- u32 i;
-
-
- void Timer2_Init(void) //10毫秒@24.000MHz
- {
- AUXR &= 0xFB; //定时器时钟12T模式
- T2L = 0xE0; //设置定时初始值
- T2H = 0xB1; //设置定时初始值
- AUXR |= 0x10; //定时器2开始计时
- IE2 |= 0x04; //使能定时器2中断
- }
-
-
- void main()
- {
- P_SW2 |= 0x80; //扩展寄存器(XFR)访问使能
- P3M0 = 0x08; P3M1 = 0x00;
- #pragma asm
- ORG 1000H
- DB 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 0FFH, 000H
- #pragma endasm
- uart_init();
- usb_init();
- Timer2_Init(); //10毫秒@24.000MHz
-
- EA = 1;
-
- while (1)
- {
- uart_polling();
- }
- }
-
- void Timer2_Isr(void) interrupt 12
- {
- i++;
- if(i>50)
- {
- i=0;
- P33=!P33;
- }
- }
-
复制代码
上述故意把1000H后的第6位先改写为0x00,目的是让ISP写入运算后的ID号失效,
从而判断该程序运行的芯片不是原来的芯片,致使ID加密起作用。
烧写程序后,多次重新上电,看能否做到有时可以运行程序,有时不能运行程序,
结果:暂时看不到异常的情况。
上述的测试是否得当,请大佬指教,谢谢!
哎,明天再通电试试了,希望ID加密真的起作用。
|