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...

Nathan

Reply via email to