错误 #2955
L1C卡死不运行,导致无法接受FAPI消息
开始日期:
2025-03-11
计划完成日期:
% 完成:
0%
预期时间:
描述
MAC层发送FAPI_UE_COMMON_CHANNEL_CONFIG_REQ,接收到Response后,接着发送FAPI_UE_RA_CONFIG_REQ,(0x2c),概率性出现接收不到; 导致PHY无法发送MSG1,导致整个随机接入过程无法进行下去
文件
历史记录
由 雪峰 赖 更新于 3 个月 之前
通过在RFM1的代码打印发现:FAPI_UE_RA_CONFIG_REQ,(0x2c)已经被RFM1的SPU从SM空间取出,已经放入到ring Buffer中,但是运行在APE4 上的L1C,由于运行时间稍有迟滞,导致队列中的消息超过8个,后续的消息取出到非法空间中,导致消息丢失。
uint32_t msg_hdr[8] = {0};
uint32_t msg_len[8] = {0};
//从物理层的SM的软队列中出队消息,不是平台的队列
while(deque_msg_buffer(l1c_que_index, &msg_hdr[msg_in_que], &msg_len[msg_in_que]))
{
msg_in_que++;
}
加大一次性读出消息的个数到16,这和队列的最大长度一致
由 雪峰 赖 更新于 大约一个月 之前
- 文件 L1C_hand_up.docx L1C_hand_up.docx 已添加
原来入口处的Trace +, FAPI处的Trance+,和出口处的TRACE++,不一致的原因是代码在接收到MSG2的时候有一处对相应地址有操作,是踩内存导致的,修改后三处的TRACE一致了
由 雪峰 赖 更新于 大约一个月 之前
- 文件 L1C_hand_up.docx L1C_hand_up.docx 已添加
通过在500us 的定时器中断处理函数 isr_stc_timer_int()中根据配置L1C的Task_ID 36 在函数osp_post_timer_event_sem()中在osp_post_sem()之前 来填写DDR 的 TRACE++ 信息,在 osp_mtimer_task()函数中的osp_wait_sem() 之后填写DDR中的TRACE++, 然后再L1C的入口,FAPI处理完之后的地方和出口,加上TRACE++, 发现:这五个地方的TRACE值一样,出现L1C挂死的时候, osp_post_sem()之前的TRACE就已经不动了