MTK平台 在lk阶段,读取IMEI号

MTK平台 在lk阶段,读取IMEI号

MTK的写号工具“SN_WITER tool”,在写IMEI和SN的时候,会往“proinfo”分区里面也写一份IMEI和SN,可以通过读取这个分区,获取SN和IMEI。

写入“proinfo”的数据结构如下:
在这里插入图片描述
前面64个字节为SN号,紧接着4*10个字节为IMEI。

在lk中,有一个函数“mboot_recovery_load_raw_part”可以用来读取“proinfo”分区,代码如下:

/**********************************************************
 * Routine: mboot_recovery_load_raw_part
 *
 * Description: load raw data for recovery mode support
 *
 **********************************************************/
int mboot_recovery_load_raw_part(char *part_name, unsigned long *addr, unsigned int size)
{
    long len;
	unsigned long begin;

#ifdef MTK_EMMC_SUPPORT
	unsigned long long start_addr;
#else
	unsigned long start_addr;
#endif
    part_t *part;
    part_dev_t *dev;

    dev = mt_part_get_device();
    if (!dev)
    {
        return -ENODEV;
    }

    part = mt_part_get_partition(part_name);
    if (!part)
    {
    	return -ENOENT;
    }
#ifdef MTK_EMMC_SUPPORT
    start_addr = (u64)part->start_sect * BLK_SIZE;
#else
    start_addr = part->startblk * BLK_SIZE;
#endif
	begin = get_timer(0);

#ifdef MTK_EMMC_SUPPORT
#ifdef MTK_NEW_COMBO_EMMC_SUPPORT
    len = dev->read(dev, start_addr,(uchar*)addr, size, part->part_id);
#else
    len = dev->read(dev, start_addr,(uchar*)addr, size);
#endif
#else
    len = dev->read(dev, start_addr,(uchar*)addr, size);
#endif
    if (len < 0)
    {
        len = -EIO;
        goto exit;
    }

    dprintf(CRITICAL, "[%s] Load '%s' partition to 0x%08lX (%d bytes in %ld ms)\n", MODULE_NAME, part->name, (unsigned long)addr, size, get_timer(begin));

exit:
    return len;
}

使用如下方式读取:

char data[104] = {0};
mboot_recovery_load_raw_part("proinfo", data, 104);

这样data[64]~data[71]就是第一个IMEI号,如果没有写号,读出来会是全0!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值