infineon4engineers Facebook

infineon@google+ Google+

infineon@linkedin linkedin

infineon4engi@twitter twitter

infineon@youtube youtube

+ Reply to Thread
Results 1 to 2 of 2

Thread: Illegal word operand access trap

  1. #1
    Beginner Beginner Daan1 is on a distinguished road
    Join Date
    Oct 2018
    Posts
    2
    Points
    55

    Illegal word operand access trap

    For our project we use the XE167FH controller. I notice that the ILLOPA trap is triggered when the MCU is rather busy.

    The information from the datasheet is quite limited regarding this issue:

    Illegal Word Operand Access Trap (B): Whenever a word operand read or write
    access (including Flash commands!) is attempted to an odd byte address, the
    ILLOPA flag in register TFR is set and the CPU enters the illegal word operand
    access trap routine.

    What may trigger this trap and shouldn't the compiler generate clean code in order this not to happen? And how do I exit the trap function in a decent way, so that my program can continue? Because right now, it just seems to get stuck, even if I have my own defined trap routine.

    Thanks in advance,
    Daan

  2. #2
    Beginner Beginner Daan1 is on a distinguished road
    Join Date
    Oct 2018
    Posts
    2
    Points
    55
    With the support of a Tasking/Altium engineer I got this very nasty bug resolved. It turns out that the compiler has the "feature" to share register banks whenever
    multiple interrupt service routines are defined in the same source file. So if one ISR will be interrupted by another ISR, all registers from the bank used will be overwritten,
    on return to the first ISR, the registers used will contain rubbish, causing illegal data and pointers, which results in the trap. To avoid this, all ISRs must have
    their own register bank, this is achieved by using the _using(REGISTERBANK_NAME) keyword. After applying this resolution, the trap didn't occur any more.
    Last edited by Daan1; Dec 12th, 2018 at 01:48 AM.

+ Reply to Thread

Tags for this Thread

Disclaimer

All content and materials on this site are provided “as is“. Infineon makes no warranties or representations with regard to this content and these materials of any kind, whether express or implied, including without limitation, warranties or representations of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. No license, whether express or implied, is granted by Infineon. Use of the information on this site may require a license from a third party, or a license from Infineon.


Infineon accepts no liability for the content and materials on this site being accurate, complete or up- to-date or for the contents of external links. Infineon distances itself expressly from the contents of the linked pages, over the structure of which Infineon has no control.


Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Usage Terms of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Usage Terms of this site. Infineon reserves the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.