乐于分享
好东西不私藏

高通射频软件(RFSW)日志分析入门指南

高通射频软件(RFSW)日志分析入门指南
本文基于过往工作内容整理总结通过 QXDM 工具对射频器件配置及 LTE 信令拨号下的链路性能进行解析。本文按照底层硬件正确开启->上层业务流程跑通的逻辑进行行文。

一 射频器件配置分析

本小节专注于如何通过高通日志分析射频器件(如 PA、ASM、Tuner)的底层配置状态

日志过滤机制:介绍了如何使用 RFDEVICE_LOG_MSG API,以及如何根据 Log ID(如 PA、ASM、Tuner)和日志级别(High/Low)来筛选关键消息。
底层路径验证:详细解析了天线开关 (ASM) 的端口映射、功率放大器 (PA/PAPM) 的功率模式(如 APT/ET)以及天线调优器 (Tuner) 的代码加载状态。

以下是详细拆解:

1.1 射频器件日志掩码 

这一部分介绍了如何开启和过滤射频器件的特定消息:

打印机制:底层使用 RFDEVICE_LOG_MSG_X(X 代表参数数量)API 将消息打印到“Message Packets”中。

示例log:

RFDEVICE_LOG_MSG_6(LOG_RFA_DEVICE_ASM_C, MSG_LEGACY_HIGH, "[ASM] enable(): Called with rx_tx=%dmode=%d, band=%d, sig_path=%d, exec_type=%d, timing=%d",asm_cfg_p->asm_rx_tx,asm_cfg_p->mode,asm_cfg_p->band.lte_band,asm_cfg_p->rfm_path.sig_path,dev_action,script_timing);RFDEVICE_LOG_MSG_6 print the log message in ‘Message Packets’ by ‘RF Device’ type. This API will print 6 items. If only need to print 2 items, use RFDEVICE_LOG_MSG_2. 

示例:RFDEVICE_LOG_MSG_6(LOG_RFA_DEVICE_ASM_C, MSG_LEGACY_HIGH)

过滤与识别:日志可以通过 Log ID 进行过滤,例如 LOG_RFA_DEVICE_ASM_C(天线开关)或 LOG_RFA_DEVICE_PA_C(功率放大器)。

示例:RFDEVICE_LOG_MSG_6(LOG_RFA_DEVICE_ASM_C, MSG_LEGACY_HIG)

日志级别:

MSG_LEGACY_HIGH:必选日志,记录 API 进入、端口号使用及休眠/唤醒投票。

MSG_LEGACY_LOW:包含大部分详细信息,用于深度调试。

1.2 天线开关配置日志 

ASM 日志记录了射频卡(RFC)中定义的逻辑路径与物理端口的映射关系。

实战分析:通过日志可以确认特定频段(如 LTE B1)的 PRx(主接收)、DRx(分集接收)和 Tx(发射)分别使用了哪个 ASM 端口。

示例:在 B1 配置中,

Rx, LTE, B1, path 0: ASM port 9

Rx, LTE, B1, path 1: ASM port 4, QASM port 49

Tx, LTE, B1, path 0: ASM port 0

1.3 PAPM 与 PA 配置日志 

此部分涉及功率放大器及其电源管理芯片(PAPM)的配置。

关键参数:记录了 Xpt_mode(传输模式,如 APT 模式、ET 模式或 Bypass 模式)和 bias(偏置电压)。

配置追踪:日志会显示 PA 关联的物理端口号、信令路径以及对应的 NV 容器索引。

PAPM and PA are configured. LTE, B1, path 0: PAPM port 8, APT_MODE, bias=3700Xpt_mode typedef enum{RFDEVICE_BYPASS_MODE,RFDEVICE_APT_MODE,RFDEVICE_ET_MODE,RFDEVICE_LDO_MODE,RFDEVICE_MAX_MODE,RFDEVICE_NO_PT_MODE,RFDEVICE_STANDBY_MODE,RFDEVICE_PAPM_ENABLE_MODE, // Used for trigger type onlyRFDEVICE_PAPM_DISABLE_MODE, // Used for trigger type onlyRFDEVICE_PAPM_MODE_MAX,RFDEVICE_PAPM_MODE_INVALID = RFDEVICE_PAPM_MODE_MAX} rfdevice_papm_mode_type;LTE B1, path 0: QPA port 57.RFM device 6, sig_path 0, ant_swith_path 0, NV container 0

1.4 天线调谐器配置日志 

记录天线调谐器的运行状态。

加载逻辑:如果未设置调谐器 NV,系统会自动加载默认的 Tuner Code。

技术模式枚举:日志中使用数字代表不同的制式(Mode),

例如 Mode 2 代表 GSM (RFM_EGSM_MODE),Mode 8 代表 LTE (RFM_LTE_MODE)。

typedef enum{RFM_PARKED_MODE, /*!< Parked/sleep mode */RFM_IMT_MODE, /*!< WCDMA @todo depricate this enum @deprecated */RFM_EGSM_MODE, /*!< GSM @todo depricate this enum @deprecated */RFM_1X_MODE, /*!< 1X Mode */RFM_GPS_MODE, /*!< GPS Mode @todo depricate this enum @deprecated */RFM_1XEVDO_MODE, /*!< HDR Rev 0, A, and B modes */RFM_SVDO_MODE, /*!< Mode to support simultaneous 1x and HDR transmit on a single device. */RFM_GNSS_MODE, /*!< Global navigation systems mode. */RFM_LTE_MODE, /*!< UMTS Long Term Evolution mode. */RFM_LTE_FTM_MODE, /*!< UMTS Long Term Evolution FTM Mode */RFM_TDSCDMA_MODE, /*!< TDSCDA mode */RFM_TDSCDMA_MODE_FTM=14,/*!< TDSCDMA FTM NSmode */RFM_EGSM_MODE_2, /*!< Second GSM mode for DSDA case for RF-MCPM interface */RFM_EGSM_MODE_3, /*!< Third GSM mode for TSTS/TSDA case for RF-MCPM interface */RFM_WLAN_MODE, /*!< WLAN Mode */#ifndef FEATURE_TABASCO_MODEMRFM_IMT_MODE_2, /*!< Second WCDMA in W+W mode*/#endifRFM_NUM_MODES, /*!< Total number of supported Modes */RFM_INVALID_MODE = RFM_NUM_MODES, /*!< Invalid RFM Mode */RFM_ALL_MODES = 0x7FFFFFFF/*!< Wildcard to indicate all Modes */RFM_NA_MODE = 0xFFFFFFFF /*!< Defines mode not applicable */} rfm_mode_enum_type;

例如TUNER NV未设置如下所示:

通过上述步骤确保硬件路径在底层的正确开启。

二 LTE 信令链路性能分析

本小节主要解析在 LTE 信令呼叫(Signaling Call) 场景下的发射(Tx)与接收(Rx)日志,涵盖了从日志配置到功率限制逻辑,再到实时增益控制的全面分析。
功率限制 (MTPL):重点阐述了最大发射功率限制的计算逻辑,涉及 3GPP 规范的 MPR、AMPR 以及 SAR、温控等各种限值对最终发射功率的影响。
关键日志包解析:通过监控 0x184C (TxAGC) 确认实时 PA 状态,利用 0x1849 (FBRX) 计算实际发射功率误差,并借助 0xB111/0xB193 (Rx AGC) 分析下行 RSRP 强度。

以下是详细拆解:

2.1 日志掩码配置 

在进行信令分析前,需开启特定的日志项目:

Message Packets:需勾选 Radio Frequency 下从 Low 到 Fatal 的所有级别。

Log Packets:重点关注 LTE 目录下的 0x184C (Tx AGC) 和 0x1849 (FBRX)。

2.2 最大发射功率限制 (MTPL)

这部分揭示了手机“最大功率”背后的复杂计算逻辑:

开启调试:通过设置 NV67108 为 0x10 可在日志中直接观察 RFTXPLIM 限制过程。

rflte_core_txpl.c 11973 rflte_core_txpl_get_max_pwr_from_nv_in_db10: Ant Switch Path for Tx:255 Matched NV Buf Idx:rflte_core_txpl.c 12016 rflte_core_txpl_get_max_pwr_from_nv_in_db10:dB10_max_tx_power_val = 230, db10_lim_adj_vs_freq_vs_temp = 0, dB10_max_tx_power_limit_adjust_val = 0rflte_core_txpl.c 12029 rflte_core_txpl_get_max_pwr_from_nv_in_db10:dB10_max_tx_power_val = 230, dB10_max_tx_power_limit_adjust_val = 0, nv_match_found 1rflte_core_txpl.c 11596 rflte_core_get_pemax_adj_from_nv_in_db10:db10_pemax_adj = 0rflte_core_txpl.c 06970 rflte_core_compute_mpr_single_cell_singlecluster: NV based: 0, MPR: 10, carrier: 0, rb_block: 50, bw_tx: 3, mod: 1, tx_channel: 18300rflte_core_txpl.c 04435 RFTXPLIM-NORM: rflte_core_txpl_calc_target_power:pcmax 220, sar_limit 330,sgsar 32000, coex 32000, overheat 330, coex wlan 330, vbatt_backoff 32000, target_pwr_limit 220rflte_core_txpl.c 04435 RFTXPLIM-NORM: rflte_core_txpl_calc_target_power:pcmax 220, sar_limit 330,sgsar 32000, coex 32000, overheat 330, coex wlan 330, vbatt_backoff 32000, target_pwr_limit 220rflte_core_txpl.c 04435 RFTXPLIM-NORM: rflte_core_txpl_calc_target_power:pcmax 220, sar_limit 330,sgsar 32000, coex 32000, overheat 330, coex wlan 330, vbatt_backoff 32000, target_pwr_limit 220rflte_core_txpl.c 04435 RFTXPLIM-NORM: rflte_core_txpl_calc_target_power:pcmax 220, sar_limit 330,sgsar 32000, coex 32000, overheat 330, coex wlan 330, vbatt_backoff 32000, target_pwr_limit 220rflte_core_txpl.c 10372 RFTXPLIM-NORM: carrier_idx = 0, num_active_clusters = 1, cluster_iter = 0, [INPUT] - rb_start = 0, rb_block = 50, [P_CMAX_UPDATE] - start_rbs = 0, num_rbs = 50rflte_core_txpl.c 10372 RFTXPLIM-NORM: carrier_idx = 0, num_active_clusters = 1, cluster_iter = 1, [INPUT] - rb_start = 0, rb_block = 0, [P_CMAX_UPDATE] - start_rbs = 0, num_rbs = 0rflte_core_txpl.c 10384 RFTXPLIM-NORM: Current ant pos = 0, DTPL default pos = 220, DTPL swap pos = 220,MTPL default pos = 220, MTPL swap pos = 220rflte_core_txpl.c 11101 RFTXPLIM-NORM: SF: 6,curr_ul_carrier_config: 0, Carrier: 0, Slot: 0, Tx handle: 5, Mod: 1,rflte_core_txpl.c 11108 RFTXPLIM-NORM: Cluster0 rb_start: 0, Cluster0 rb_block: 50, Cluster1 rb_start: 0, Cluster1 rb_block: 0rflte_core_txpl.c 11117 RFTXPLIM-NORM: ul_carr_config type: 0, NS type: 0, NS value: 1, P emax: 240, P cmax: 220, DTPL: 220, MTPL: 220, Combined

通过 RFTXPLIM 过滤日志,然后可以看到 PCMAX=220(以 dB10 为单位),MTPL=220(以 dB10 为单位),MPR=10(以 dB10 为单位),AMPR=0(以 dB10 为单位),NS=1 等等。  

PC-MAX = NV 限制功率 - MPR - AMPR = 230-10-0 = 220(以 dB10 为单位)  

MTPL = MIN(PC-MAX, PE-MAX) = MIN(220,240) = 220(以 dB10 为单位)  

Target_pwr_limit = MIN(MTPL, SAR, SGSAR, COEX, OVERHEAT, COEX_WLAN, VBATT_BACKOFF) = 220(以 dB10 为单位)

核心公式:PC-MAX = NV 限制功率 - MPR (3GPP 减额) - AMPR (额外减额)。MTPL = MIN(PC-MAX, PE-MAX)

最终目标功率限制:取 MTPL 与 SAR(人体辐射限制)、热保护、WLAN 共存限制等多个因子的最小值。

2.3 LTE TxAGC 日志 (0x184C)

实时监控发射链路的状态机 :

关键参数:可查看当前子帧的 PA State、XPT Mode(如 ET 包络跟踪或 APT 模式)、UE Power Class 以及 RGI 增益索引 。

功率判定:实际发射功率通过比较 Slot 功率、MTPL 和 SAR 等限制值,取其最小者 。

PA状态 = 1  

XPT模式 = ET  

MTPL = 220  

实际发射功率 = MIN(时隙功率实际220, MTPL 220, SAR MTPL 330,…) = 220 (dB10)  

用户设备功率类别 = POWER_CLASS3

RGI指数 = 44  

PA ICQ = 32639  

2.4 LTE FBRX 日志 (0x1849)

反馈接收机(FBRX)用于实现功率的精准闭环控制 :

误差补偿:日志记录了 ft_err(增益误差),如果该值为 0,表示当前功率非常准确 。

更新逻辑:新功率值 l_new 由旧值 l_old 减去误差 ft_err 计算得出 。

部分参数说明:

txagc: TxAGC for which FBRx gain is computed; target tx power. It is -20dBm in this log.

ft_err: FBRx filtered gain error in dB10 unit for current TxAGC; actual applied correctionthe. 0 means tx power is accurate. ft_err get input value from either hardware gain error or firmware gain error.

h_gn_err: Current hardware gain error result; hardware Gdelta value as an integer.

h_db: The hardware gain error in dB10 unit for current TxAGC.

fw_gn: Current firmware gain estimate result; firmware G value as an integer.

f_gn_err: Current firmware gain error result; firmware Gdelta value as an integer.

f_db: The firmware gain error in dB10 unit for current TxAGC.

l_old: TxAGC value prior to lin update

l_new: New TxAGC value after lin update

2.5 LTE RX AGC 日志 (0xB111, 0xB193)

分析下行链路质量的哨兵 :

0xB111:展示各天线(Rx0, Rx1)的 Total RSSI 强度 。

0xB193:详细报告服务小区(PCell)和辅小区(SCell)在各天线上的 RSRP 指标 。

希望本文能为射频工程师提供了一套从底层驱动验证到高层信令调优的标准化日志分析思路。

Q库全书:高通射频实战录》持续更新,喜欢的小伙伴可以点赞(鼓励一下小编)+ 关注(防止错过后面更新哦)