找回密码
 立即注册
查看: 951|回复: 9

【已解决】STC32G关于ID号加密问题。

[复制链接]

8

主题

10

回帖

68

积分

注册会员

积分
68
发表于 2023-9-4 23:51:27 | 显示全部楼层 |阅读模式
本帖最后由 STCAI 于 2023-9-6 08:51 编辑

原先在0xE100,0xE400位置有设置ID号加密,现在地址如何设置?现在还是原设置,已经不对了。

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-9-5 09:09:38 | 显示全部楼层
如果你现在需要放在STC32G12K128的FF:E100H和FF:E400H
则ID号加密的地址需要设置为0x1E100和0x1E400

因为这个地址是内部FLASH的绝对物理地址
逻辑地址FE:0000对应绝对物理地址0x00000
逻辑地址FF:0000对应绝对物理地址0x10000
回复 支持 反对

使用道具 举报 送花

8

主题

10

回帖

68

积分

注册会员

积分
68
发表于 2023-9-5 09:50:43 | 显示全部楼层
zh*** 发表于 2023-9-5 09:09
如果你现在需要放在STC32G12K128的FF:E100H和FF:E400H
则ID号加密的地址需要设置为0x1E100和0x1E400

如果这样,
#define ID_ADDR_Check1        0xE100        //定义ID_check1存放地址
#define ID_ADDR_Check2        0xE400        //定义ID_check2存放地址
是否也对应修改为
#define ID_ADDR_Check1        0x1E100        //定义ID_check1存放地址
#define ID_ADDR_Check2        0x1E400        //定义ID_check2存放地址
回复 支持 反对

使用道具 举报 送花

8

主题

10

回帖

68

积分

注册会员

积分
68
发表于 2023-9-5 10:01:48 | 显示全部楼层
BYTE        code *cptr;
BYTE        code *cptr1;
BYTE        code *cptr2;//这三个定义也要修改一下了,不然会保错。
有如下代码:
        cptr1 = ID_ADDR_Check1;
        cptr2 = ID_ADDR_Check2;


截图202309051001433498.jpg
回复 支持 反对

使用道具 举报 送花

8

主题

10

回帖

68

积分

注册会员

积分
68
发表于 2023-9-5 12:01:31 | 显示全部楼层
这样修改完,编译没有报错,但ID检测还不对。
截图202309051158496546.jpg
截图202309051200151420.jpg
截图202309051200257347.jpg
截图202309051201064531.jpg
回复 支持 反对

使用道具 举报 送花

8

主题

10

回帖

68

积分

注册会员

积分
68
发表于 2023-9-5 12:03:55 | 显示全部楼层
本帖最后由 jnyyz 于 2023-9-6 08:51 编辑

int ID_CheckPro()
{
        int        idcki;
        BYTE SysIDtmp1;
        BYTE SysIDtmp2;
        cptr1 =(WORD)ID_ADDR_Check1;
        cptr2 =(WORD)ID_ADDR_Check2;
        for (idcki=0; idcki<7; idcki++)
    {
      SysID1[idcki]= *cptr1++;
                        SysID2[idcki]= *cptr2++;
                        
                        SysIDtmp1=SysID[idcki]-1;
                        SysIDtmp1*=3;
                        SysIDtmp1/=4;
                        SysIDtmp1+=8;                        
                        SysIDtmp2=SysID[idcki]*2;
                        SysIDtmp2/=3;
                        SysIDtmp2+=7;
                        SysIDtmp2*=7;
               
                        if(SysID1[idcki]!=SysIDtmp1)
                        {
                                SendString1("Check id1 is error!\r\n");
                                return 0;
                        }        
                        if(SysID2[idcki]!=SysIDtmp2)
                        {
                                SendString1("Check id2 is error!\r\n");
                                return 0;
                        }        
                }
                return 1;        
}

点评

只在下载软件中,0xe100才需要改为FLASH绝对地址0x1e100 在你自己的代码中,则需要使用逻辑地址进行访问, 例如: *(BYTE code *)0xe100 或者 *(BYTE ecode *)0xffe100  详情 回复 发表于 2023-9-5 14:24
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-9-5 14:24:33 | 显示全部楼层
jny*** 发表于 2023-9-5 12:03
int ID_CheckPro()
{
        int        idcki;

只在下载软件中,0xe100才需要改为FLASH绝对地址0x1e100
在你自己的代码中,则需要使用逻辑地址进行访问,
例如:
*(BYTE code *)0xe100
或者
*(BYTE ecode *)0xffe100
回复 支持 反对

使用道具 举报 送花

8

主题

10

回帖

68

积分

注册会员

积分
68
发表于 2023-9-5 16:33:13 | 显示全部楼层
好的,我上机试一下。
回复 支持 反对

使用道具 举报 送花

8

主题

10

回帖

68

积分

注册会员

积分
68
发表于 2023-9-6 08:48:58 | 显示全部楼层
jny*** 发表于 2023-9-5 16:33
好的,我上机试一下。

已经解决。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 08:51 , Processed in 0.231359 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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