Part Number: TMS320F280049C
Other Parts Discussed in Thread: C2000WARE
Hello,
I read the document "running_application_from_internal_flash_tms320f28xxx.pdf" and everything is clear so far.
But one section confuses me: 4.1 Copying the Interrupt Vectors
Here it says you need to do sth linke
/*** Initialize the PIE_RAM ***/
PieCtrlRegs.PIECTRL.bit.ENPIE = 0; // Disable the PIE
asm(" EALLOW"); // Enable EALLOW protected register access
memcpy((void *)0x000D00, &PieVectTableInit, 256);
asm(" EDIS");
Now I am using the newest C2000 Ware as a reference and I did not see sth. comparable.
I copied my ti rampfunctions like:
#ifdef _FLASH // // Copy critical sections to in linker command file defined sections. // Critical sections can be defined via __attribute__((ramfunc)) or #pragma // memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize); // Initialization of flash waite states. Wait states has been selected // according to CPUCLK and choise of external osci Flash_initModule(FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES); #endif
But now I wonder if I also need to copy my interrupt vectors, or where it is done. I am using the interrupt.c file.
Furthermore, my watchDogTimeOut routine is placed on flash, if I got the map file right.
Can I speed up the handling of my interrupt routines by placing the routine on ram e.g. with __attribute__((ramfunc)) (pretty silly question, I guess yes couse zero wait states)?
Thanks in advance.
Best wishes
Jan