射频卡中增加GRFC控制导致重启

问题:
某项目需要增加一个GRFC脚来控制某个对应band的逻辑,在对应的band中增加GRFC控制后,测试发现注册到该band就会重启。

rfc_sig_info_type rf_card_sdr105_riot_cls3_9x05_rx0_gsm_g900_sig_cfg = 
{
  RFC_ENCODED_REVISION, 
  {
//begin: stone added for ana switch
#ifdef  RF_TUNER
	{ (int)RFC_SDR105_RIOT_CLS3_9X05_RF_PATH_SEL_09, { RFC_HIGH, -10 }, {RFC_LOW, 0 } },
	{ (int)RFC_SDR105_RIOT_CLS3_9X05_RF_PATH_SEL_01, { RFC_LOW, -10 }, {RFC_LOW, 0 } },
#endif
//end: stone added for ana switch 
  
    { (int)RFC_SDR105_RIOT_CLS3_9X05_TIMING_ASM_CTL,   { RFC_CONFIG_ONLY  /*Warning: Not specified*/ , -40 }, {RFC_LOW, 0 }  },
    { (int)RFC_SDR105_RIOT_CLS3_9X05_TIMING_TUNER_CTL,   { RFC_CONFIG_ONLY  /*Warning: Not specified*/ , -100 }, {RFC_LOW, 0 }  },
    { (int)RFC_SIG_LIST_END,   { RFC_LOW, 0 }, {RFC_LOW, 0 } }
  },
};

如上所示,在gsm900的接收sig中增加了两个GRFC,就会导致在gsm测试时重启。

分析:
在lte对应的band中增加GRFC并没有出现这个问题。解析dump,发现了crash的原因:

As per information from the dumps, we can observe while accessing GSM900 RX Start Burst, number of FE devices configured from your end were 3, while based on number of FE components we have made the MACRO as #define RFGSM_RX_START_MAX_TASKS_TASKQ_B 3, but now from the dumps we can see for ASM two transactions were happen consider 2 tasks were marked, for GRFC also 2 transactions were happen consider 2 tasks were added here, so in total we can there are 4 tasks were created but we have limit only for 3 tasks which is the reason for crash,

Could you please share build details and about.html on which we can provide an debug ST by increasing the MACRO value to 4 as we can observe 4 tasks were active, #define RFGSM_RX_START_MAX_TASKS_TASKQ_B 4

//CSR prints:
0x0000000020BFB0A1 | 28.616328: CCS:H rflm_ccs.cc:455 | CCS_RF_CALLBACK 0xd4030b40 finished, start_time=12561969, duration=614, event_id/task_idx=0x1000002, tq_idx=0
0x0000000020BFB0B3 | 28.616329: NONE:E rflm_ccs.cc:462 | RFLM_WARNING_CCS_LONG_USR_CALLBACK: CCS_RF_CALLBACK 0xd4030b40 start_time=12561969, duration=614, event_id/task_idx=0x1000002, tq_idx=0
0x0000000020C4F2E6 | 28.634279: NONE:F rfcommon_mdsp_event_builder_internal.c:1081 | RFCCS Event: Out of pool resources. max_tasks_allocated=3 not enough. Curr_idx=3. handle=0x804beb10

//ASM:
Here from the below info we can observe that slave_id, channel and star_delta were changed so it is considered to be 2 tasks were happen this.
rffe = 0x802058B0 -> (
(rd_wr = RF_HAL_BUS_WRITE, channel = 1, slave_id = 14, rd_delay = 0, half_rate = 0, num_bytes = 1, addr = 2, data = (18, 0, 0, 0), start_delta = -43, extended_cmd = 0),
(rd_wr = RF_HAL_BUS_WRITE, channel = 1, slave_id = 14, rd_delay = 0, half_rate = 0, num_bytes = 1, addr = 28, data = (1, 0, 0, 0), start_delta = -43, extended_cmd = 0),
(rd_wr = RF_HAL_BUS_WRITE, channel = 1, slave_id = 10, rd_delay = 0, half_rate = 0, num_bytes = 1, addr = 11, data = (12, 0, 0, 0), start_delta = -45, extended_cmd = 0),
(rd_wr = RF_HAL_BUS_WRITE, channel = 1, slave_id = 10, rd_delay = 0, half_rate = 0, num_bytes = 1, addr = 1, data = (7, 0, 0, 0), start_delta = -45, extended_cmd = 0),
(rd_wr = RF_HAL_BUS_WRITE, channel = 1, slave_id = 10, rd_delay = 0, half_rate = 0, num_bytes = 1, addr = 28, data = (2, 0, 0, 0), start_delta = -45, extended_cmd = 0)),
rffe_groups = 0x802058B0),

//GRFC
Here from the GRFC we can observe grfc_id changed from 1 to 0 which is considered as 2 tasks were active
grfc = (
script_type = RF_HAL_BUS_RESOURCE_GRFC,
script_ptr = (
sbi = 0x80205F80,
grfc = 0x80205F80 -> (
(grfc_id = 1, start_delta = 0, start_logic = 1),
(grfc_id = 0, start_delta = 0, start_logic = 0),
(grfc_id = 0, start_delta = 0, start_logic = 0),
(grfc_id = 0, start_delta = 0, start_logic = 0),
(grfc_id = 0, start_delta = 0, start_logic = 0)),

From these analysis we have observed that MAX_TASKS were reached out of 3,
there is CR#2651037 attached for this known issue, also the MACRO changes for RX_START and RX_STOP were mainlined in latest CRM build,

Actually from the latest dumps we can observe some memory corruption this might be due to compilation or integration issue which will be raised when changes were made from your end,

Could you please include the CR which i have attached, test the scenario with the CR changes and kindly share the results, after that we can raise CR planner request to TAM.

这里rx /tx task的任务总数超过了范围,按照CR#2651037改大后就可以了。修改文件为:modem_proc/rflm/api/gsm/rflm_gsm_dm.h
#define RFGSM_RX_START_MAX_TASKS_TASKQ_A 3 -->4
#define RFGSM_TX_START_MAX_TASKS_TASKQ_A 3 -->4

同样在WCDMA和LTE中也要注意:不能在rfc_sig_info_type中加太多的GRFC,会导致任务总数超过范围值而重启的。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归心2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值