This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

HWI is not triggering by setting EventSet Register

Other Parts Discussed in Thread: SYSBIOS

5722.Interrupt_UnitTest.zipHi,

I was creating and testing HWI on simulator and Beagle board-XM

On simulator:-  By using Hwi_post and Setting Event Flag(0x01800020) Register,i was able to trigger ISR function,No issues

On Board:-        By using Hwi_post,am able trigger ISR but by Setting Event Flag(0x01800020) Register,my ISR not triggering,Am i missing something.

Can you please look at my cfg file.

 

SYSBIOS Ver:6.41.2.41

CCS:6.0

Board:BeagleBoard-XM

  • Hi,

    It wasn't all that clear that you were talking about the DSP on this device. I tried to find that address mentioned and figured it must be on the DSP.

    I think in addition to setting the event flag, you also need to unmask the event in order for the ISR to be triggered. Address 0x01800080.
    I think the Simulator could be incorrectly unmasking all events by default.

    Hwi_post() triggers the IFR register and does not look at the event. But I'm still not quite getting what you are doing in the .cfg file.

    You have eventId 4 mapped to interrupt vector 6...Is that correct?

    Judah
  • Thank you.

    I was supposed to verify EventID = 60 mapped to Interrupt vector 6 and it did not worked.

    The doc"C64x+ Megamodule(spru871k)" says,The mask register is zero by default, thus all system events are unmasked.

    as you suggest, i have also tried by unmasking mask register(0x01800080) but still ISR not triggered.

     

     

     

  • If you look at figure 7-1 on page 157 of SPRU871k, it describes where the EVENT FLAG registers go. Its even a bit more detailed in Figure 7-9 on page 162.
    You see that EVENT FLAG do not directly go into the Interrupt Selector but rather goes through the Event Combiner. So setting the event id in the Event Flag isn't going to trigger that event's interrupt. What it is going to do is trigger an event combiner interrupt.

    So basically what I'm trying to say is that you have 2 options:
    1. You can directly map event #60 into one of the avaible 12 CPU interrupts [4-15]. To trigger this, you would call Hwi_post(interrupt number). Modifying the Event Set register has no effect on this!!!

    2. You can route event #60 through the event combiner. You are correct that by default all events are unmasked, however, if using SYSBIOS's EventCombiner module, we mask all events except for the ones you have specified to be unmasked. This would mean you map one of the combined eventIds (In this case, eventId #60 falls in group 1 so use event Id #1) into one of the 12 CPU interrupts. Now you can do Event Set on that event and it should trigger the CPU interrupt in which you used for the group eventId #1.

    Hopefully that makes sense.

    Judah

  • Hi Judah,

     

    its working...Thank you.