系统与协议栈 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配置同理。

实际使用中,大部分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;
|
默认值 |
|
备注 |
- |
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有效值: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波特率下该配置无效同属性。
该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;
|
默认值 |
|
备注 |
|
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 |
备注 |
|
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;
|
备注 |
|
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为空。 |