On Thu, May 4, 2023 at 7:11 AM Nathan Hartman <hartman.nat...@gmail.com>
wrote:

> On Thu, May 4, 2023 at 5:46 AM Jernej Turnsek <jernej.turn...@gmail.com>
> wrote:
>
>> I am developing a driver which is processing peripheral interrupts every
>> 6.4 microseconds and every 16th interrupt calling notify function from HP
>> work queue. But scheduling workqueue does lock interrupts (through
>> critical
>> section) up to 20us sometimes, causing my peripheral missing interrupts.
>> The same thing occurs if calling the notify function with nxsem_post
>> directly from ISR. DMA is not an option. I am working with the NXP RT1064
>> board. How can I wake the read function without locking interrupts?
>> Thanks.
>>
> That chip is Arm Cortex M7. I think zero-latency interrupts are supported
> on that. If so, you could try to use that to service the 6.4us interrupt.
>
> Zero-latency interrupts cannot use OS services because they exist outside
> the OS. Therefore, to rendezvous with the hp queue, each 16th interrupt,
> trigger an otherwise unused interrupt vector, which will be serviced by a
> "normal" ISR, which can in turn hand off the data to the hp queue.
>
> There's a page about this somewhere...
>


I found it in the old wiki:

https://cwiki.apache.org/confluence/display/NUTTX/High+Performance%2C+Zero+Latency+Interrupts

I don't see it in the repo Documentation. This is an important thing that
should be in the repo.

Cheers
Nathan

Reply via email to