Hi Nick,
This is a VERY advanced topic. I'd be happy to provide some starter pointers, but you're probably going to want a nice compiler and a few weeks to digest how the ARM processors work in assembly and C...
For instance, in "C:\MicroFrameworkPK\Application\common\assemblycode\ARM\RVD_S\BooterVectorTable.s" you might want to re-enable FIQs by removing the IF...END IF in the following code:
FIQ_Handler
; IF :DEF: FIQ_SAMPLING_PROFILER
ldr pc, FIQ_SubHandler_Trampoline
FIQ_SubHandler_Trampoline
DCD FIQ_SubHandler
; ENDIF
And in "C:\MicroFrameworkPK_v4_2\DeviceCode\cores\arm\AssemblyCode\arm\RVD_S\VectorsHandlers.s" you might do the same... Setting the PSR_ values to 0x9# instead of 0xD# will enable the FIQ interrupt
PSR_MODE_USER EQU 0x90
; vs.
; PSR_MODE_USER EQU 0xD0
And in "C:\MicroFrameworkPK_v4_2\DeviceCode\cores\arm\AssemblyCode\arm\RVD_S\VectorsTrampolines.s" you'll enable the FIQ handler (via vector trampolines).
You'd also need to actually enable the FIQs at the processor level. One way to do this is to hack the SmartPtr_arm.cpp file and change the BIC operation in SmartPtr_IRQ::Restore() to:
BIC Cp, Cp, #0xC0
; instead of
; BIC Cp, Cp, #0x80
Although there are a lot of ways to handle the situation... There are also a few other places that you'd need to enable the FIQ code.
After all that, you'll write your C/C++ code to handle the actual interrupts, set the interrupt (timer or hardware) which you want to have FIQ priority, etc.
Needless to say, a fairly advanced topic
If you really, really want to go this path...I'd recommend picking up a few ARM books to dig into it...
BTW, in a future firmware update we plan on enabling software PWM for the Netduino. If we use FIQ for this, you'll be able to simply modify our FIQ code hooks and repurpose them for your own application.
Chris