This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6670 AIF的几个问题



关于AIF的几个问题,谢谢。example的 LTE FDD 20M project

1.  在发送时,mono descriptor的16byte header,是否会一起发送?
     理论上应该只发送mono descriptor的payload,但是在Rx中的PS头信息等是怎么得到的?
     在接收时QMSS是否是自己对每个接收到packet添加mono descriptor header?

     PS. QMSS中mono descriptor header 类型的结构体定义 和 csl_getPSData( ),csl_getPayload( ) 
     等得到的偏移是相重复的。  按照mono descriptor header 的定义,header共有大概 8个Uint32,
     而AIF的 descriptor头只有16byte,其中PSdata 4 byte。 
     在工程中初始化数据以后看Tx 数据,推出PS data偏移是在结构体定义的‘reserved’元素处。payload应该紧接其后开始
     这个确实就是这样的吗?

2.  程序配置为每个subframe产生event,这个event是在subframe的开头产生,还是在subframe的结束时候产生?
     在第N个event 中断函数中push 下次需要发送的symbol(14个),是在第N个event中断后紧接的subframe发出,
     在第N+1个中断后的subframe发出?从程序来看是在N+1个event中断后的subframe发出。

3.  aif 的driver中enum AIF_Mode的选择只有“LTE FDD”,不知道AIF 对LTE TDD的支持是如何的?
     而且MCSDK中没有LTE TDD的样例。可以直接参照FDD?
     mode 中的 ABTburst 和 ABTstream 模式是什么?

4.  AIF 的LLD 对LTE的 extended CP是否支持?有没有样例参考?

5.  在样例project中,如果在event中断中取消 不断从RxQ中pop,程序任然能运行。那么如果不手动回收RxQ的descriptor
     QMSS是否会自己回收RxQ的descriptor 到RxFDQ中(相当于接收的数据覆盖)?那么不会出现RxFDQ starvation什么的?

6.  对5M LTE FDD,驱动的速率配置最小是2x的,为什么没有1x的?此时AIF支持4 channel在每个link上,
     如果只使用一条link上的4个channel的0和1,是否全部4个channel都需初始化?
    在接收时只处理 channel 0和1的RxQ 呢,还是需要pop 4个channel 的RxQ?
     若不管channel 3、4,会不会出现descriptor 消耗完的情况?

 

 

  • 1.  在发送时,mono descriptor的16byte header,是否会一起发送?

          [ZX]不会发送

         理论上应该只发送mono descriptor的payload,但是在Rx中的PS头信息等是怎么得到的?

         在接收时QMSS是否是自己对每个接收到packet添加mono descriptor header?

         [ZX]由PD的配置决定

         PS. QMSS中mono descriptor header 类型的结构体定义 和 csl_getPSData( ),csl_getPayload( ) 
         等得到的偏移是相重复的。  按照mono descriptor header 的定义,header共有大概 8个Uint32,
         而AIF的 descriptor头只有16byte,其中PSdata 4 byte。 
         在工程中初始化数据以后看Tx 数据,推出PS data偏移是在结构体定义的‘reserved’元素处。payload应该紧接其后开始
         这个确实就是这样的吗?

         [ZX]. 是的

    2.  程序配置为每个subframe产生event,这个event是在subframe的开头产生,还是在subframe的结束时候产生?

          [ZX]取决于你event的源,如果本身就是subframe作为触发源,那么event会在subframe触发后加上offset触发,也就是相对开头
         在第N个event 中断函数中push 下次需要发送的symbol(14个),是在第N个event中断后紧接的subframe发出,
         在第N+1个中断后的subframe发出?从程序来看是在N+1个event中断后的subframe发出。

         [ZX]发送时只要保证发送该symbol前push到tx queue即可,例如发送symbol 14,最少在symbol13就要把描述符push进去

    3.  aif 的driver中enum AIF_Mode的选择只有“LTE FDD”,不知道AIF 对LTE TDD的支持是如何的?
         而且MCSDK中没有LTE TDD的样例。可以直接参照FDD?
         mode 中的 ABTburst 和 ABTstream 模式是什么?

    [ZX]你可以参考论坛中的STK代码,里面应该有TDD的模式。对应TDD PD/PE提供寄存器可以动态调整上下行配比

    4.  AIF 的LLD 对LTE的 extended CP是否支持?有没有样例参考?

    [ZX]你可以参考STK的实现

    5.  在样例project中,如果在event中断中取消 不断从RxQ中pop,程序任然能运行。那么如果不手动回收RxQ的descriptor
         QMSS是否会自己回收RxQ的descriptor 到RxFDQ中(相当于接收的数据覆盖)?那么不会出现RxFDQ starvation什么的?

    [ZX]QMSS不会自己回收RXQ的descriptor,你可以考虑用accumulator,这个可以把RXQ的descriptor pop出来,但是需要手动挥手道RXFDQ中

    6.  对5M LTE FDD,驱动的速率配置最小是2x的,为什么没有1x的?

    [ZX]硬件限制,最小只能是2x      

    此时AIF支持4 channel在每个link上,

         如果只使用一条link上的4个channel的0和1,是否全部4个channel都需初始化?

    [ZX]不需要全部初始化
        在接收时只处理 channel 0和1的RxQ 呢,还是需要pop 4个channel 的RxQ?
         若不管channel 3、4,会不会出现descriptor 消耗完的情况?

    [ZX]每个channel的RXQ和RXFDQ是独立的,如果不使用,可以不用配置对应channel的RXFDQ

  • 谢谢Zhan Xiang。还有几个问题:

    1. 如果Tx端没有push data到TxQ,根据调程序的情况,Rx端似乎不会消耗RxFDQ的descriptor,
        而此时链路上的CPRI协议是一直有填充‘0’发送的。是这样吗?
        而在data 被push到TxQ后,Rx端才会需要手动pop RxQ的descriptor

    2. 多个channel情况,若不初始化,貌似会有打印错误出来;