Hello,
I'm trying to use TMS320C28x Instruction Set Simulator to simulate f2812 with CCS v3.3.38. I created a simple application that initializes CPU-Timer0 to issue periodic interrupts and then runs infinite loop. Application also contains simple Timer0 ISR. This works fine on a 2812 EVM.
To connect timer0 interrupts to PIE INT1.7 I added one line to sim2812.cfg in my <CCS_root>\drivers directory. PIE module now looks like:
module pie;
cssi_library Pie.dll;
init_function initPIE;
int7 timer0;
end pie;
On simulator, application performs initializations well and runs OK until first timer0 interrupt (I tried single-stepping it). On first interrupt simulation stops, and disassembly window is displayed, showing that executions stopped at instruction:
000000 0000 ITRAP0
VMAP and ENPIE bits are both set, which according to SPRU078E section 6.2, means that vector table is mapped to PIE Block (data space addresses 0x000D00−0x000DFF). I checked data space address 0x0000 0D4C (INT1.7), and it really contains address of my timer0 ISR. When I manually put it into PC, it executes normally.
Why simulated PIE doesn't fetch correct ISR vector? Am I missing something?