Question: How can I place code and interrupt handlers in RAM using the GCC compiler?
Answer: Gcc supports the use of the __attribute__ keyword which allows you to apply special attributes to your code. The “section” attribute places code in a specific memory section as defined in the cm3gcc.ld file. RAM is defined as the “.data” section. So, for example, if you wanted to place a function in RAM the code for the function prototype would look like this: void foo (void) __attribute__ ((section(“.data”))); This method can be used for variables as well. A great use of this feature is to place interrupt handlers in RAM for faster execution time. If you define your own ISRs you can do this by placing __attribute__ ((section “.data”))) after the ISR prototype like a normal function declaration. The other option is to use the Cypress generated ISR code that comes with an ISR component. You can add a declaration statement to the section of code provided for the user to include modules and declare variables. Here is an example: // place interrupt in SRAM to improve speed extern CY_ISR_PROTO(isr_1_Interrupt) __attribute__ ((section(".data"))); For an isr named isr_1.