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写入成功。