跳转至

系统与协议栈 NV 配置

NV 功能与配置

NV 黑名单机制

在“nv_blacklist.h”的数组g_blacklist_array中配置不需要备份的NV_ID,配置后,当正常工作区找不到该NV后不会从备份区去读,同时该NV也不会进行备份和恢复动作。

预定义 Key 说明

简介

本节主要针对json配置文件中预定义的Key进行解释说明,便于用户在使用中进行二次开发。文中列出了所有外部出厂预定义的Key,包括Key的所属模块,含义及NVvalue的结构定义,方便开发人员在不同的场景下对Key进行预置和修改。

Key 默认值

在以下Key说明中,“默认值”的概念是Key在没有预置值时,软件读取NV失败后使用的软件默认值。

图1中AT UART配置相关的NV_ID_AT_CMD_UART_CONFIG为例,当NVvalue无预置时,UART波特率会使用软件默认的AT_UART_DEFAULT_BAUD_RATE,即9600;其余UART配置同理。

图 1 AT UART配置读取

**图 1** AT UART配置读取

实际使用中,大部分NV都没有预置,使用软件的默认值。

建议默认值满足使用需求时,保留预置值为空,而非将默认值填入预置中。

Key 取值范围

在以下说明中,Key的取值范围同时满足:

  • 数据类型本身范围。即首先满足整型范围,如果是枚举型必须是某一枚举成员,如果是bool型可能取值仅有false (0) 和true (1)。
  • 结构类型中代码注释和备注中额外说明的范围。

NV配置是开发者行为,超出范围的配置可能导致非预期的UE行为。

使用DebugKits工具修改NV值无法进行非法参数拦截,必须按有效值配置。

预定义 Key

本章按所属模块列出可定制 NV 的 Key、结构定义、默认值、取值范围和备注。配置前应结合NV 功能与配置中的默认值与取值范围说明确认参数有效性。

BASE

模块说明

参数

说明

模块ID

0

模块名

BASE

模块描述

通用基础模块

模块类型

Custom

模块Key

NV_ID_MANUFACTURER_IDENTIFIER

Key ID

0x0002

Key状态

alive

Key描述

制造商标识Key。

结构类型

undetermined_size_buffer:不定长字符数组。

默认值

-

备注

最大长度为40,取值可以为任意字符串(存在ASCII码即可)。

NV_ID_MANUFACTURER_MODEL_IDENTIFIER

Key ID

0x0003

Key状态

alive

Key描述

芯片版本标识Key。

结构类型

undetermined_size_buffer:不定长字符数组。

默认值

-

备注

最大长度为40,取值可以为任意字符串(存在ASCII码即可)。

NV_ID_UART_AT_CONFIG

Key ID

0x000A

Key状态

alive

Key描述

AT串口引脚配置。

结构类型

typedef struct {
    pin_t tx_pin;
    pin_t rx_pin;
    pin_t cts_pin;
    pin_t rts_pin;
} uart_pin_config_t;

默认值

  • tx_pin=S_MGPIO20
  • rx_pin=S_MGPIO21
  • rts_pin=PIN_NONE
  • cts_pin=PIN_NONE

备注

-

NV_ID_AT_CMD_UART_CONFIG

Key ID

0x0600

Key状态

alive

Key描述

AT配置。

结构类型

typedef struct {
    uint32_t baudrate;
    uint8_t stopbits;
    uint8_t parity;
    uint8_t sw_flow_control;
    uint8_t lpextra_xo_encfg;
} at_uart_config;

默认值

  • baudrate=9600
  • stopbits=0,停止位为1。
  • parity=0,无奇偶校验。
  • sw_flow_control=0,无流控。
  • lpextra_xo_encfg=0,深睡不开启XO时钟ATUART额外属性配置,默认为0。

备注

baudrate有效值:4800/9600/57600/115200/230400/921600/1000000/2000000/4000000。

stopbits有效值:0,对应停止位为1。

parity有效值:0/1/2,对应无校验位/奇校验/偶校验。

sw_flow_control有效值:0,对应无流控。

lpextra_xo_en有效值cfg:bits[7:0/1,对应深睡]分别控制ATUART不开启XO时钟/开启XO时钟,9600波特率下该配置无效同属性。

  • bit[7:3]:预留,均为0。
  • bit[2]:ATUART自适应模式开关,单板复位时启动生效。

    0:ATUART不进入自适应模式;

    1:ATUART进入自适应模式。

  • bit[1]:LPUART时钟选择开关。

    0:波特率小于等于9600时使用RTC时钟分频,大于9600且小于等于230400使用XO时钟分频;

    1:LP_UART全波特率使用XO时钟分频。

  • bit[0]:深睡XO使能开关。0/1对应深睡不开启XO时钟/开启XO时钟,波特率大于230400或bit[1]为0且波特率小于等于9600该配置无效。

该NV涉及FOTA升级进度显示,不支持变更该NV数据结构体类型,否则可能出现显示异常。同时baudrate不支持预置为0,否则会导致FOTA打印异常。

NV_ID_DIAG_CON_UART_ATTR

Key ID

0x2005

Key状态

alive

Key描述

DebugKits使用UART连接方式时的串口属性配置。

结构类型

typedef struct {
    uint32_t baud_rate;
    uint8_t data_bits;
    uint8_t stop_bits;
    uint8_t parity;
    uint8_t flow_ctrl;
} diag_uart_attr;

默认值

  • baud_rate=4000000
  • data_bits=3,数据位为8。
  • stop_bits=0,停止位为1。
  • parity=0,无奇偶校验。
  • flow_ctrl=0,无流控。

备注

  • baud_rate可配置如下值:4800、9600、57600、115200、230400、460800、921600、1000000、2000000、4000000(默认)。
  • 其余字段固定使用默认值,不支持修改。

NV_ID_SECURE_CONN

Key ID

0x2006

Key状态

alive

Key描述

DIAG安全连接参数。

结构类型

typedef struct {
    uint8_t conn_vertify[384];
    uint8_t conn_salt[20];
    uint32_t salt_len;
} secure_conn_t;

默认值

-

备注

SDK包内无默认值,需要预置此NV,否则DIAG模块无法正常使用。

NV_ID_RATE_MODE

Key ID

0x2007

Key状态

alive

Key描述

速率模式。

结构类型

uint32_t

默认值

-

备注

NV在重新开机后生效。

可配置值0、1。

0:高速模式;

1:低速模式。

NV_ID_SYSERR_UNREBOOT

Key ID

0x3001

Key状态

alive

Key描述

设置系统异常恢复模式。

结构类型

uint32_t

默认值

-

备注

预置值:

0x554E5253:系统异常时不复位,保留死机现场;

非0x554E5253:系统异常时复位,防外场挂死。

NV_ID_RTC_CALI_INTERVAL_KEY

Key ID

0x4006

Key状态

alive

Key描述

配置深睡场景下自动校准RTC的周期。

结构类型

uint32_t

默认值

0

备注

周期单位:s,配置为0代表关闭该功能。(PSM场景下配置为非0值时,会周期性唤醒进行校准,此时查询核状态会显示为唤醒态。不建议配置太小的值,频繁唤醒会影响功耗。)

NV_ID_TX_POWER_VALIDITY_KEY

Key ID

0x4007

Key状态

alive

Key描述

配置AT+NTXPOWER可获取的最近一次TX发射功率的时间范围。

结构类型

uint32_t

默认值

10000

备注

周期单位:ms,最小值为10,NV配置小于10时,实际使用10;最大值为10000,NV配置大于10000时,实际使用10000。

NV_ID_BANKAD_OFF_MIN_TIME_KEY

Key ID

0x400B

Key状态

alive

Key描述

BankA\D上电距离上次下电的低电平最小保持时间,单位:ms。

结构类型

uint8_t

默认值

-

备注

本NV默认不配置,不配置时使用默认值0。配置值小于系统实际低电平保持时间时不生效。

NV_ID_UL_SCHEDULE_LIMIT_THRD_KEY

Key ID

0x400C

Key状态

alive

Key描述

配置UE在连续收到小调度时逃逸处理的相关参数。

结构类型

typedef struct {
    uint16_t schedule_limit_min_cnt;
    int16_t schedule_limit_rsrp_value;
} schedule_limit_thrd_t;

默认值

-

备注

本NV默认不配置,不配置时schedule_limit_min_cnt使用默认值50,schedule_limit_rsrp_value使用默认值-120。schedule_limit_min_cnt最小值为10,schedule_limit_rsrp_value范围在(-140,-30),超过范围使用默认值。

NV_ID_SPURIOUS_EMISSIONS_SUPPRESSION_CENTRY_FREQUENCIES_KEY

Key ID

0x400D

Key状态

alive

Key描述

配置杂散抑制的中心频点。

结构类型

typedef struct {
    uint32_t len;
    uint32_t list[5];
} centry_frequencies_list;

默认值

-

备注

len是频点个数配置,最大不能超过5;list是小区的中心频点(单位:Hz),而不是杂散的频点,配置完后单板重启才能生效。

NV_ID_LOG_LEVEL_KEY

Key ID

0x4100

Key状态

alive

Key描述

LOG等级。

结构类型

uint8_t

默认值

0

备注

0:VERBOSE,冗长;

1:NORMAL,正常;

2:WARNING,警告;

3:ERROR,错误;

4:NONE, 无。

NV_ID_BANKD_LEVEL_KEY

Key ID

0x4200

Key状态

alive

Key描述

配置BANKD电压。

结构类型

uint32_t

默认值

3300

备注

仅可以预置2800,3000,3300,单位:mV,其余值预置不生效。

USIM

模块说明

参数

说明

模块ID

0

模块名

USIM

模块描述

全球用户身份模块(Universal Subscriber Identity Module)

模块类型

Common

模块Key

NV_ID_USIM_SIM_LOCK_CONFIG

Key ID

0x6001

Key状态

alive

Key描述

simlock锁卡模式和号段配置。

结构类型

typedef struct {
    sim_lock_mode       mode;    /* 锁卡模式 */
    uint8_t             intervals_num;  /* 号段组数 */
    uint8_t             res[2];   /* 预留位 */
    imsi_mask_interval  intervals[20];  /* 号段配置 */
} sim_lock_config;

typedef struct {
    uint8_t len;        /* 检查imsi的长度 */
    uint8_t start[15];  /* 号段起始imsi */
    uint8_t end[15];    /* 号段结束imsi */
    uint8_t res;        /* 预留位 */
} imsi_mask_interval;

默认值

0

备注

  • mode取值(默认为0):

    0:不开启;

    1:黑名单模式;

    2:白名单模式。

  • intervals_num:取值为 0~20;mode不为0时,不能为0,否则返回配置错误。
  • len:0~15,假如mode不为0,intervals_num为1,则第0组的len不能为0,否则返回配置错误,因为只配置了1组数据,则其他的imsi号段配置不检测。
  • start/end:0~9的15位数组,start≤end,否则,返回配置错误。

NV_ID_USIM_RETRY_TIMES

Key ID

0x6010

Key状态

alive

Key描述

usim救卡次数。

结构类型

typedef struct {
    uint8_t             times;  
} usim_retry_times;

默认值

3

备注

times取值(默认为3):0~3,次数为0不救卡。

NV_ID_USIM_DELAY_UPDATE_FILE

Key ID

0x6011

Key状态

alive

Key描述

USIM延迟更新文件开关和最大次数配置。

结构类型

typedef struct {
    _Bool       delay_switch;
    uint8_t       rsv[3];
    uint16_t      effplmn_count;
    uint16_t      efepsloci_count;
    uint16_t      efepsnsc_count;
    uint16_t      efplmnwact_count;
} usim_delay_update_file;

默认值

0

备注

delay_switch(默认为0):

0:不开启;

1:开启。

xxx_count(默认值为100):对应卡文件最大保存次数,达到该次数后会触发一次写卡。

开关关闭时,每次收到更新文件请求就会进行一次写卡;

开关打开时,如果对应文件count小于等于1则每次都会写卡,大于1后在ram中保存次数达到count时,触发一次写卡。

RRC

模块说明

参数

说明

模块ID

12

模块名

RRC

模块描述

无线资源控制模块(Radio Resource Control)

模块类型

Custom

模块Key

NV_ID_RRC_PCELL_ESIB_FAILURE_BARRING_TIME

Key ID

0x7207

Key状态

alive

Key描述

服务小区读ESIB失败bar小区的时间,单位:s。

结构类型

uint16_t

默认值

#define ESIB_FAILURE_BARRING_DEFAULT_TIME   5

备注

NV在重新开机后生效。

用户可在开机前配置该值,范围0~300(单位:s),若超出范围则返回默认值5(单位:s)。

NV_ID_RRC_NCELL_ESIB_FAILURE_BARRING_TIME

Key ID

0x7208

Key状态

alive

Key描述

邻区读ESIB失败bar小区的时间,单位:s。

结构类型

uint16_t

默认值

#define ESIB_FAILURE_BARRING_DEFAULT_TIME   5

备注

NV在重新开机后生效。

用户可在开机前配置该值,范围1~300(单位:s),配置值在范围之外则返回默认值5(单位:s)。

SOC_UE

模块说明

参数

说明

模块ID

16

模块名

SOC_UE(system on a chip)

模块描述

终端模块

模块类型

Custom

模块Key

NV_ID_UE_SUPPORTED_BANDS

Key ID

0x7000

Key状态

alive

Key描述

UE工作的EUTRA频段。

结构类型

#define NUM_SUPPORTED_BANDS_MAX  18
typedef struct {
    uint8_t  len;                            /*!< Number of supported bands */
    uint8_t  list[NUM_SUPPORTED_BANDS_MAX];  /*!< List of 1 to NUM_SUPPORTED_BANDS_MAX band IDs */
} eutra_band_list;

默认值

len = 18;
list = {1, 2, 3, 4, 5, 7, 8, 18, 19, 20, 26, 28, 34, 38, 39, 40, 41, 66};

备注

一般选取默认值的一个子集,根据运营商频段部署进行预置。

NV_ID_UE_AUTOSTART_CONFIG

Key ID

0x7001

Key状态

alive

Key描述

复位或上电后是否自动开机入网,及入网选择的默认PLMN。

结构类型

#define PLMN_ID_LEN  3
typedef struct {
    uint8_t  autostart_mode;  /*!< 1 - automatically start registration on power on, 2 - automatically start NDIS registration on power on */
    uint8_t  default_plmn[PLMN_ID_LEN];       /*!< if autostart_mode=1 then defines manual PLMN, or FF FF FF to use automatic mode */
} nb_iot_ue_nvconfig_autostart_config_t;

默认值

autostart_mode = 0;
default_plmn = {0xFF, 0xFF, 0xFF};

备注

autostart_mode = 0,关闭自动入网功能;

autostart_mode = 1,自动内置拨号打开;

autostart_mode = 2,自动外置NDIS拨号打开,此时default plmn不可用;

预置其他非法值会导致UE非预期行为,不建议预置。

NV_ID_UE_IPV6_GET_PREFIX_TIME

Key ID

0x7002

Key状态

alive

Key描述

IPv6前缀获取的最大时间(单位:s)。

结构类型

uint16_t

默认值

0xFFFF

备注

-

NV_ID_UE_SYNC_TIME_PERIOD

Key ID

0x7003

Key状态

alive

Key描述

获取SIB16同步网络时间的周期(单位:min)。

结构类型

uint16_t

默认值

0

备注

取0时关闭同步。

NV_ID_UE_T3324_T3412_EXT_VALUE_REPORT_ENABLED

Key ID

0x7004

Key状态

alive

Key描述

T3324和扩展T3412变更上报使能开关。

结构类型

bool

默认值

false

备注

-

NV_ID_UE_REG_MONITOR_TIMER_LEN

Key ID

0x7005

Key状态

alive

Key描述

入网保护定时器功能使能及时长配置(单位:h)。

结构类型

uint16_t

默认值

24(打开功能且时长为24h。)

备注

配置在下次开机后生效。

配置为0时,功能关闭;

配置为24~320时,使用配置值;

配置小于24的非0值时,生效值为24;

配置大于320的值时,生效值为320。

NV_ID_UE_SIB_ATTEMPT_COUNTER

Key ID

0x7009

Key状态

alive

Key描述

服务小区MIB或SIB1尝试读取最大次数。

结构类型

uint8_t

默认值

5

备注

允许配置范围是[1,0xFF]。

其他SIB总是仅允许尝试读取1次。

NV_ID_UE_NCELL_SIB_ATTEMPT_COUNTER

Key ID

0x700A

Key状态

alive

Key描述

邻小区MIB或SIB1尝试读取最大次数。

结构类型

uint8_t

默认值

5

备注

允许配置范围是[1,0xFF]。

其他SIB总是仅允许尝试读取1次。

NV_ID_UE_SEMI_PERSISTENT_SCHEDULING_SUPPORTED

Key ID

0x700C

Key状态

alive

Key描述

半静态调度功能支持开关。

结构类型

bool

默认值

true

备注

-

NV_ID_UE_DATA_INACTIVITY_TIMEOUT

Key ID

0x7010

Key状态

alive

Key描述

UE数据不活动定时器时长。

结构类型

uint8_t

默认值

180

备注

当网络配置了DataInactivityTimer-r14 (3GPP TS 36.331) 时使用网络配置值,否则使用NV取值。

单位:s。不可以配置为0,配置为0时使用默认值。

NV_ID_UE_UPDATE_TPUT_ENABLED

Key ID

0x7013

Key状态

alive

Key描述

UE更新误码率和吞吐量上下文、输出TPUT相关log的开关。

结构类型

bool

默认值

true

备注

开关开启时,UE会更新误码率和吞吐量上下文,此时可通过NUESTATS=BLER和NUESTATS=THP查询误码率和吞吐量,而且能输出TPUT相关log:

PROTO_UE_STATS_MDL_TPUT_BLER_REPORT

PROTO_UE_STATS_MUL_TPUT_BLER_REPORT

PROTO_UE_STATS_RDL_TPUT_BLER_REPORT

PROTO_UE_STATS_RUL_TPUT_BLER_REPORT

开关关闭时,UE不更新误码率和吞吐量上下文,此时通过NUESTATS=BLER和NUESTATS=THP查询误码率和吞吐量的数据不正确,且不输出TPUT相关log。

该NV开关手动配置后不会立即生效,可通过上下电或开关机使其生效。

NV_ID_UE_RESELECTION_ENABLED

Key ID

0x7014

Key状态

alive

Key描述

是否开启空闲态测量和小区重选。

结构类型

bool

默认值

true

备注

关闭空闲态测量和小区重选将产生违背协议行为,严重影响UE在空闲态的移动性。

仅在完全静止稳定环境下,可以谨慎考虑关闭。

可以通过命令AT+NCONFIG=CELL_RESELECTION操作写入该NV并实时开启/关闭功能。

使用DebugKits工具实时修改NV不能达到实时开启/关闭功能目的,重启后才生效。

NV_ID_UE_CONNECTED_MEAS_ENABLED

Key ID

0x7015

Key状态

alive

Key描述

是否开启连接态测量和小区切换。

结构类型

bool

默认值

true

备注

关闭连接态测量和小区切换将产生违背协议行为,严重影响UE在连接态的移动性。

仅在完全静止稳定环境下,可以谨慎考虑关闭。

可以通过命令AT+NCONFIG=CONNECTED_MEASUREMENTS操作写入该NV并实时开启/关闭功能。

使用DebugKits工具实时修改NV不能达到实时开启/关闭功能目的,重启后才生效。

NV_ID_UE_OVERSEAS_SEARCH_OPT

Key ID

0x7017

Key状态

alive

Key描述

漫游场景搜网优化开关。

结构类型

bool

默认值

false

备注

-

NV_ID_UE_USER_BLACKCELLS

Key ID

0x7021

Key状态

alive

Key描述

存储用户添加的黑名单小区信息。

结构类型

typedef struct {
    soc_ue_user_blackcell_item  item[20]; /*!< 黑名单小区数组*/
} soc_ue_user_blackcells;
typedef struct {
    uint8_t    mode;
    uint8_t    plmn[3];
    uint32_t   earfcn_cellid;
    uint16_t   pci_tac;
    uint16_t   reserved;   /*!< 预留用与结构体对齐,无意义*/
} soc_ue_user_blackcell_item;

默认值

黑名单小区数组中的每一项:
mode = 0;
plmn = {0xFF, 0xFF, 0xFF};
earfcn_cellid = 0;
pci_tac = 0;

备注

  • mode:

    存储黑名单小区信息的模式:

    1=>earfcn+pci;2=>cellid+tac+plmn。

    【注】mode=0表示该条目无效,请勿添加mode非1、2的条目(不生效、AT查询不打印)。

  • plmn:

    小区SIB1中的plmn,3字节格式:

    e.g. “45001” => 0x54, 0xF0, 0x10。 “302104” => 0x03, 0x42, 0x01。

  • earfcn_cellid:

    当mode=1时,为小区频点earfcn;

    当mode=2时,为小区SIB1中的CellIdentity。

  • pci_tac:

    当mode=1时,为物理小区标识pci;

    当mode=2时,为小区SIB1中的TrackingAreaCode。

NV_ID_UE_PROHIBIT_PLMN_REPORT_TIMER_LENGTH

Key ID

0x7022

Key状态

alive

Key描述

漫游场景进全频段搜索后,不被打断的时间。(单位:秒)

结构类型

uint16_t

默认值

0

备注

-

NV_ID_UE_INTERFERENCE_DETECTION_NBRSSI_THRESH

Key ID

0x701D

Key状态

alive

Key描述

异常干扰监测门限。单位:dBm

结构类型

uint16_t

默认值

-40

备注

该NV用以配置对应AT命令 +INTDET 中干扰判决的门限。

当所有无线频率上的NBRSSI均超过配置值时,认为周围环境中有异常的干扰屏蔽。

NV_ID_UE_EARFCN_LOCKING_STATUS_STORED_IN_NV

Key ID

0x7023

Key状态

alive

Key描述

AT+NEARFCN锁频配置是否掉电保存。

结构类型

bool

默认值

false

备注

-

NV_ID_UE_FAKE_CELL_DETECT_CONFIG

Key ID

0x7026

Key状态

alive

Key描述

保存伪基站检测配置

结构类型

typedef struct {
    uint16_t     bar_time;             /*!< Unit: second(s) */
    uint8_t      max_fake_cell_num;
    bool          enable_zero_imsi;
} soc_ue_fake_cell_detect_config_t;

默认值

bar_time = 900s
max_fake_cell_num = 1
enable_zero_imsi = false

备注

bar_time:检测到某小区是伪基站后多长时间内不尝试接入该小区;

max_fake_cell_num:周围最大的伪基站数量;

enable_zero_imsi:是否使用全0 imsi。

LL1

模块说明

参数

说明

模块ID

21

模块名

LL1

模块描述

逻辑物理层模块

模块类型

Custom

模块Key

NV_ID_RF_GOLD_BOARD_CABLE_LOSS_DEFAULT_VALUE

Key ID

0x9000

Key状态

alive

Key描述

金板数据起始地址。

结构类型

uint8_t

默认值

0

备注

金板数据最大支持512Byte,起始地址的值指金板数据所属band的数量,置0为空。