Hello,
I tried to generate and service a NMI on a C6678. As I'm using SYS/BIOS, I've had to use the appropriate interfaces. At the moment I use a timed IPC interrupt, see below.
Hwi_Params sHwiParams;
Hwi_Handle HwiHandle;
Error_Block ErrorBlock;
Error_init(&ErrorBlock);
Hwi_Params_init(&sHwiParams);
sHwiParams.arg = 9;
sHwiParams.eventId = CSL_GEM_IPC_LOCAL;
sHwiParams.enableInt = true;
HwiHandle = Hwi_create(5, IPCHandler, &sHwiParams, &ErrorBlock);
if(HwiHandle == NULL)
{
setStatus(&uiIRQStatus, IRQ_ERROR_IPC_SETUP_FAILED, 0, DSP_IRQ_ERROR, 0);
return false;
}
Hwi_enable();
This code cannot be reused as no eventId is given for the NMI. Instead of this, I use the NMIGR(x) to generate the interrupt. I tried to register the ISR like this (http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/276577.aspx):
var Exception = xdc.useModule('ti.sysbios.family.c64p.Exception');
Exception.nmiHook = '&myNmiHookFxn';
But this ISR is not recognized and I end up with this:
Exception at 0xc087d54
EFR=0x80000000 NRP=0xc087d54
Legacy NMI Exception
ti.sysbios.family.c64p.Exception: line 255: E_exceptionMin: pc = 0x00000000, sp = 0x0c0b5c74.
To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'
xdc.runtime.Error.raise: terminating execution
Can somebody explain what's the correct approach to generate and service an NMI with SYS/BIOS?
Best Regards,
Bernd