开发初期IMEI号的写入

1. 为什么要写入IMEI

项目初期,板子中可能不包含IMEI号,但是又需要读取IMEI来验证某些功能。

2. 如何修改

通过修改NV550,其中ue_imei[0]表示的序列号的长度,这一位设置错误会导致设置的nv不生效,nv550如下图所示

ue_imei[1]~ue_imei[8]为IMEI序列号,写入的值是反的,举例如下:

IMEI:1 23 45 67 89 87 65 43

写入的值为:1A 32 54 76 98 78 56 34

其中第一个值很特殊,A是可以用其他数字代替,在QMI消息读取IMEI号时,会将第一位排除,见下面的代码:

modem_procdatamodeminterfaceqmidatasrcds_qmi_dms.c

static qmi_error_type_v01 qmi_dmsi_get_device_serial_numbers_ext
(
  boolean                   is_encrypted,
  void*                     resp_msg,
  qmi_dmsi_client_info_type *clnt_info
  
)
{
...
      /* Skip the first byte because it is just the ID */
      memscpy( (uint8*)dev_serial_num_info, 
               (NV_UE_IMEI_SIZE-1)*2-1,
               imei_ascii + 1, 
               (NV_UE_IMEI_SIZE-1)*2-1 );
...

3. 验证是否写入成功 

利用AT+CGSN命令,来查询IMEI,若出现下面结果,则代表IMEI写入成功。

原文地址:https://www.cnblogs.com/xiangxyq/p/7738181.html