taskAVR C Runtime Library - Tasks: task #7546, Rework the default interrupt...

 
 

You are not allowed to post comments on this tracker with your current authentification level.

task #7546: Rework the default interrupt handler

Submitted by:  Joerg Wunsch <joerg_wunsch>
Submitted on:  Sat 22 Dec 2007 08:34:53 PM UTC  
 
Should Start On: Fri 21 Dec 2007 11:00:00 PM UTCShould be Finished on: Fri 21 Dec 2007 11:00:00 PM UTC
Category: NonePriority: 5 - Normal
Status: NonePrivacy: Public
Percent Complete: 0%Assigned to: None
Open/Closed: Open

Thu 12 May 2011 11:04:52 PM UTC, comment #1:

Good ideas still here. Any more thoughts on moving this forward?

Eric Weddington <arcanum>
Project Administrator
Sat 22 Dec 2007 08:34:53 PM UTC, original submission:

Right now, the default interrupt handler eventually ends up
in restarting the application at address 0, so the user-
visible effect is almost similar to a reset, which has turned
out to cause minor surprises occasionally.

Other ideas have been discussed about the default ISR. Just
using a RETI is not really better: some interrupts are not
auto-clearing so they would end up in an infinite loop, and
in all other cases a missing ISR is a programming error most
of the time which would go completely unnoticed for a long
time then.

The best idea so far came once from Peter Dannegger. He
suggested to CALL/RCALL the default handler from within the
vector table, rather than JMP/RJMP to it. That way, the
default handler can then pop the return address into a register
where it can be examined with a debugger (or inside the default
handler itself if it's a custom handler). That way, programmers
will get an idea what interrupt triggered.

Finally, the default handler should best run into an infinite
loop with interrupts disabled. abort() has been suggested a
possible implementation for that which is already there.

The difficulty of this idea is that the current scheme to
fill the vector table with JMP/RJMP instructions to locations
that are eventually inserted by the linker won't work anymore.
A new scheme would be needed where by default, a CALL/RCALL
is placed into the slot, and is then replaced by a jump
instructions for all vectors that are actually defined by
the application.

Joerg Wunsch <joerg_wunsch>
Project Administrator

 

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by arcanum (Posted a comment)
  • -unavailable- added by joerg_wunsch (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    No Changes Have Been Made to This Item

    Back to the top


    Powered by Savane 3.1-cleanup