Hi All,
I went through userguide of Ti Keystone multicore navigator and frankly i didnt understand few parameter of usage accumulator. In the Following data structure
1. [max 32 queues per channel]
2. [we have 32 Hi priority channels and 16 low priority channels], so scanning can be possible for 32*48 = 1536 queues [Though there are total of 8192 queues], is this right?
3. [we have timer field, which we set for checking the threshold crossing]. say if the accumulate count didn't cross the threshold within CERTAIN TIME [this certain time is set by the timer], interrupt is raised? please confirm my understanding of accumulator as a whole.
Things i didn't understand is
1. what is the purpose of this ping/pong buffer. please explain?
2. This uint16_t queMgrIndex; is confusing.
does it stand for queue manager [0,1] ?
or
it is the queue index [say general purpose queues any number within 896 to 8191] ?
please explain more on this on how to fill in this value?
3. say i have 32 host descriptors to monitor/observe, what should be the value of uint16_t maxPageEntries;
and how it is related to size of ping/pong buffer. please explain clearly.
4. what is the basis to select this field listEntrySize? There are 3 options..which one to select in which situation.
typedef struct
{
/** Accumulator channel affected (0-47) */
uint8_t channel;
/** Accumulator channel command - Qmss_AccCmd_ENABLE_CHANNEL : Enable channel
* Qmss_AccCmd_DISABLE_CHANNEL : Disable channel */
Qmss_AccCmdType command;
/** This field specifies which queues are to be included in the queue group.
* Bit 0 corresponds to the base queue index, and bit 31 corresponds to the base
* queue index plus 31. For any bit set in this mask, the corresponding queue index
* is included in the monitoring function.
*
* This field is ignored in single-queue mode.*/
uint32_t queueEnMask;
/** Physical pointer to list ping/pong buffer. NULL when channel disabled */
uint32_t listAddress;
/** Queue Manager and Queue Number index to monitor. This serves as a base queue index when the
* channel in multi-queue mode, and must be a multiple of 32 when multi-queue mode is enabled. */
uint16_t queMgrIndex;
/** Max entries per list buffer page */
uint16_t maxPageEntries;
/** Number of timer ticks to delay interrupt */
uint16_t timerLoadCount;
/** Interrupt pacing mode. Specifies when the interrupt should be trigerred */
Qmss_AccPacingMode interruptPacingMode;
/** List entry size. Specifies the size of each data entry */
Qmss_AccEntrySize listEntrySize;
/** List count Mode. The number of entries in the list */
Qmss_AccCountMode listCountMode;
/** Queue mode. Moitor single or multiple queues */
Qmss_AccQueueMode multiQueueMode;
} Qmss_AccCmdCfg;
Before anyone replying,
let me be clear, i even went through examples and i couldn't understand. please explain me understanding "happenings/idea" in the accumulator.
Thanks
RC Reddy