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

请求官方出一个万能的芯片ID读取程序,

[复制链接]

该用户从未签到

5

主题

4

回帖

43

积分

新手上路

积分
43
发表于 2023-1-21 14:34:18 | 显示全部楼层 |阅读模式
请求官方出一个万能的芯片ID读取小程序,

只要启动程序后一插上芯片就能读取ID并显示,不伤内部程序
回复 送花

使用道具 举报

该用户从未签到

548

主题

9177

回帖

1万

积分

管理员

积分
13952
发表于 2023-1-21 16:39:40 | 显示全部楼层
ID是公开的
1.png
读取ID参考程序
2.png

该用户从未签到

61

主题

620

回帖

1万

积分

荣誉版主

积分
10790
发表于 2023-1-21 20:16:20 | 显示全部楼层
"只要启动程序后一插上芯片就能读取ID并显示,不伤内部程序"这是想站在门外,不开门就能知道主人的身份证号

该用户从未签到

548

主题

9177

回帖

1万

积分

管理员

积分
13952
发表于 2023-1-21 20:24:01 | 显示全部楼层
楼主以为 ID号 是加密的,不让读,其实 ID号 是公开的,随他读
1.png

该用户从未签到

5

主题

4

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2023-3-18 18:35:41 | 显示全部楼层
杨为民 发表于 2023-1-21 20:16
"只要启动程序后一插上芯片就能读取ID并显示,不伤内部程序"这是想站在门外,不开门就能知道主人的身份证号 ...

是这个意思,你既然已经拥有硬件和内部的软件使用权,读出id又何妨,又不是读取程序

该用户从未签到

45

主题

2884

回帖

6482

积分

超级版主

积分
6482
发表于 2023-3-18 19:34:44 | 显示全部楼层
必须要植入读ID的程序才可以,串口返回ID。

该用户从未签到

548

主题

9177

回帖

1万

积分

管理员

积分
13952
发表于 2023-3-18 20:57:30 | 显示全部楼层
1.png

检测MCU选项,我映像都是送出ID号显示的,ID号是公开的

该用户从未签到

0

主题

1

回帖

8

积分

新手上路

积分
8
发表于 2023-3-26 01:01:23 来自手机 | 显示全部楼层
这个id是变动的吗,为什么我访问的是会变动的

该用户从未签到

548

主题

9177

回帖

1万

积分

管理员

积分
13952
发表于 2023-3-26 10:26:57 | 显示全部楼层
用有CHIPID的,自己直接读取
1.png
2.png
3.png
  • TA的每日心情
    奋斗
    14 小时前
  • 签到天数: 128 天

    [LV.7]常住居民III

    17

    主题

    527

    回帖

    1185

    积分

    金牌会员

    积分
    1185
    发表于 2023-3-26 11:04:08 | 显示全部楼层
    这里有一个读取芯片ID的示例,不过本示例程序只在下载成功时、或MCU复位后进行读出1次,但是可以进行修改为当芯片上电或插入芯片后读取一次,只要芯片是同一个,读出的ID就是唯一不变的。代码如下:
    /*芯片型号:STC8H3K64S4*/
    /*时钟说明:MCU内部高速30MHz时钟,波特率说明:9600b/s */
    //本示例程序已于2023-03-05下午测试通过,读出结果如下:
    /*
    ------------------------------------------
    ---------------MCU-ID-READ----------------
    ------------------------------------------
    [RAM-ID]F744C42503468E
    [ROM-ID]F744C42503468E
    */
    //本示例程序通过从RAM区域及ROM区域分别读出的MCU的ID序列号进行对比验证,并与
    //程序下载成功时下载软件显示的ID序列号进行对比验证,测试正确无误。
    //本示例程序只在下载成功时、或MCU复位后进行读出1次。

    #include <STC8H.H>

    #define SYSCLK 30000000UL                               //系统时钟频率值【用户指定值】,定义主频 30MHz,请按实际频率修改(用于delay函数自适应主频)
    #define BAUD_SET (65536 - SYSCLK/9600/4)                //波特率设定与计算【只在编译时计算1次】

    #define RAM_AD 0xF1                                     //ID序列号在RAM空间的存放地址(首地址),具体MCU的该地址需要查阅具体手册获取
    #define ROM_AD 0xFDF9                                   //ID序列号在ROM空间的存放地址(首地址),具体MCU的该地址需要查阅具体手册获取

    typedef unsigned char u8;
    typedef unsigned int  u16;

    u16 AID[7] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00};      //用于存放RAM里面读出的ID序列号(7B,即7个字节)
    u16 OID[7] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00};      //用于存放ROM里面读出的ID序列号(7B,即7个字节)

    //********************************函数声明区域********************************                                      
    void UART1_Init(void);                                  //串口1初始化函数
    void U1SEND_C(u8 SEND_C);                               //串口1发送单个字符数据函数
    void U1SEND_S(u8* SEND_S);                              //串口1发送字符串数据函数

    //********************************主函数区域********************************
    void main()
    {
        u8 i;               //定义循环控制变量i
        u8 idata *RAM_P;    //定义指针RAM_P,指向idata区域(若定义指向RAM区的指针则用idata关键字修饰)
        u8 code *ROM_P;     //定义指针ROM_P,指向code区域(若定义指向ROM区的指针则用code关键字修饰)
        UART1_Init();       //串口1初始化
        U1SEND_S("------------------------------------------\r\n");
        U1SEND_S("---------------MCU-ID-READ----------------\r\n");
        U1SEND_S("------------------------------------------\r\n");
        RAM_P = RAM_AD;     //让指针RAM_P指向0xF1(位于RAM区的首地址)
        U1SEND_S("[RAM-ID]:");//从RAM读出的ID序列号为:
        for(i=0;i < 7;i++)  //读7B(高字节在前)
        {
            AID[i] = * RAM_P++;//取回RAM中的ID序列号依次存入RAM_ID[]
            U1SEND_C((AID[i]/16 > 9)?AID[i]/16 - 10 +'A':AID[i]/16 + '0');//把读出的16进制的数据转换为ASCII字符格式
            U1SEND_C((AID[i]%16 > 9)?AID[i]%16 - 10 +'A':AID[i]%16 + '0');//把读出的16进制的数据转换为ASCII字符格式
        }
        ROM_P = ROM_AD;     //让指针ROM_P指向0xFDF9(位于ROM区的首地址)
        U1SEND_S("\r\n");
        U1SEND_S("[ROM-ID]:");//从ROM读出的ID序列号为:
        for(i=0;i < 7;i++)  //读7B(高字节在前)
        {
            OID[i] = * ROM_P++;//取回ROM中的ID序列号依次存入ROM_ID[]
            U1SEND_C((OID[i]/16 > 9)?OID[i]/16 - 10 +'A':OID[i]/16 + '0');//把读出的16进制的数据转换为ASCII字符格式
            U1SEND_C((OID[i]%16 > 9)?OID[i]%16 - 10 +'A':OID[i]%16 + '0');//把读出的16进制的数据转换为ASCII字符格式
        }
        U1SEND_S("\r\n");
        U1SEND_S("------------------------------------------\r\n");
       
        while(1)
        {
            ;
        }
    }

    //********************************自定义函数区域********************************
    /*******************************************************
    串口1初始化函数
    无形参,
    无返回值
    9600bps@30MHz
    */
    void UART1_Init(void)                                   //串口1初始化函数
    {
        SCON = 0x50;                //8位数据,可变波特率
            AUXR |= 0x01;                //串口1选择定时器2为波特率发生器
            AUXR |= 0x04;                //定时器时钟1T模式
            T2L = BAUD_SET;                //利用波特率设置定时初始值
            T2H = BAUD_SET >> 8;//利用波特率设置定时初始值
            AUXR |= 0x10;                //定时器2开始计时
        RI = 0;             //清除接收标志位
        TI = 0;             //清除发送标志位
    }

    /********************************************************
    串口1发送单个字符数据函数
    有形参,SEND_C即待发送的单字节数据;
    无返回值
    */
    void U1SEND_C(u8 SEND_C)                                //串口1发送单个字符数据函数
    {
        TI = 0;             //清除发送完成标志位
        SBUF = SEND_C;      //开始发送单字节数据
        while(!TI);         //等待数据发送完成
    }

    /********************************************************
    串口1发送字符串数据函数
    有形参,SEND_S即待发送的单字节数据;
    无返回值
    */
    void U1SEND_S(u8* SEND_S)                                //串口1发送字符串数据函数
    {
        while(*SEND_S != '\0')//检测字符串结束标志
        {
            U1SEND_C(*SEND_S++);                             //串口1发送单个字符数据
        }
    }

    /********************************************************/




    不停地学习
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-4-23 23:15 , Processed in 0.072575 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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