Other Parts Discussed in Thread: OMAP-L137
I am developing the server side of a codec. It runs on the DSP side of the OMAP-L137. The app is on the ARM9 side of the OMAP-L137. In addition to the codec, I have two DSP background tasks. One of them calls SEM_pendBinary to wait for a response from another board. The SEM_postBinary is in an ISR that I expect to execute on the rising edge of GPIO9. (I've debugged all of the behavior by spoofing data from the board up until now. That is, I've allowed the SEM_pendBinary to return with a timeout, and spoofed data when that happens.)
My GT trace output (from the background task that waits for the semaphore) indicates that the pin is low before SEM_pendBinary and high after timing out. My tcf file has the following:
bios.HWI.instance("HWI_INT4").interruptSelectNumber = 65;
bios.HWI.instance("HWI_INT4").fxn = prog.extern("MSI_ctl_intr");
bios.HWI.instance("HWI_INT4").useDispatcher = 1;
bios.HWI.instance("HWI_INT4").interruptMask = "all";
The ISR MSI_ctl_intr is this:
void MSI_ctl_intr()
{
SEM_postBinary(&SEM_MSIready);
}
The task that calls SEM_pendBinary, initializes as follows:
CSL_GpioRegs *hGpio = (CSL_GpioRegs*)CSL_GPIO_0_REGS;
GPIO_setDirection(9, GPIO_IN); //(The associated line is driven as expected.)
hGpio->BANK[GP0].SET_RIS_TRIG = GP0P9;
hGpio->BINTEN = 1;
SEM_pendBinary still times out. I've tried adding lighting an LED in the ISR, and there is no evidence that it executes the ISR. Is there another Interrupt Enable that I'm missing (other than BINTEN)? I've looked at the vector table, and there is something in the HWI4 locations. All code is in external memory. I based the initialization on the GPIO interrupt sample code, although it seems to have been written for a different processor (soc, etc are different).