SPRUJ79 November 2024 F29H850TU , F29H859TU-Q1
All DLT entries, both TAG and REG, that have passed the FILTERs are recorded in the FIFO. The FIFO is constructed as 64 bit rows, with the REG/TAG, TIMESTAMP/PC source and Overflow Indicators.
Each packet received is entered on a new row. The C29x CPU and DLT both support TAG of size 8 bits and 16 bits. Always allocate 16 bits for the TAG in the FIFO irrespective of the incoming TAG size. The maximum size of REG supported in the C29x CPU is 64 bits, but only up-to 32 bits are supported in DLT. The 64-bit REG is not supported.
DLT Capture mode static configuration decides whether to capture TIMER/PC value. A packet does not differentiate between them and must be analyzed by the user based on the configuration set. The following tables depict how the raw data stored in the FIFO must be interpreted. The LSB represents whether the data log is a TAG or REG, where TAG = 1 and REG = 0.
Higher 32 Bits (FIFO_BUF_H) | Lower 32 Bits (FIFO_BUF_L) | ||||
---|---|---|---|---|---|
TIMER1's MSBs | 16-bit TAG Entry (MSBs Padded with Zeros if 8-bit TAG) | TIMER1's LSBs | TIMER1's Overflow | FIFO Overflow | TAG |
16 bits [31:16] | 16 bits [15:0] | 29 bits [31:3] | 1 bit [2] | 1 bit [1] | 1 |
Higher 32 Bits (FIFO_BUF_H) | Lower 32 Bits (FIFO_BUF_L) | |||
---|---|---|---|---|
Reserved | TAG Entry | Program Counter | FIFO Overflow | TAG |
16 bits [31:16] | 16 bits [15:0] | 30 bits [31:2] | 1 bit [1] | 1 |
Higher 32 Bits (FIFO_BUF_H) | Lower 32 Bits (FIFO_BUF_L) | |||
---|---|---|---|---|
REG Content | TIMER2's Count | TIMER2's Overflow | FIFO Overflow | REG |
32 bits [63:32] | 29 bits [31:3] | 1 bit [2] | 1 bit [1] | 0 |
Higher 32 Bits (FIFO_BUF_H) | Lower 32 Bits (FIFO_BUF_L) | ||
---|---|---|---|
REG Content | Program Counter | FIFO Overflow | REG |
32 bits [63:32] | 30 bits [31:2] | 1 bit [1] | 0 |
In C29x CPU, the minimum instruction is 16-bit size. Hence, the PC always points to a 16-bit word size, and the 0th bit of the PC is irrelevant. The EMIF space in the first device is in the upper 2GB, and is not covered, but you cannot execute code from EMIF space anyway. Hence, using PC[30:1] as a Trace source is used. Also note that in PC mode, there is no Time entry in FIFO. Hence, no TIMER overflow is indicated. To read the PC value properly, left shift by 1 yields the correct PC capture.
TAG/REG indication has been kept at bit[0] of the FIFO for ease of software processing. In assembly, the LSB can be ANDed with 1 and an if-else discontinuity can be executed. Moving it elsewhere requires code to an add right-shift operation that you want to avoid. Similarly, TAGs are also preferred to be aligned to 32-bit boundary for ease of software processing, since TAGs are decision making points. To enable this, DLTIME has been split up into lower and higher words, when Capture mode is TIMER.