-
Notifications
You must be signed in to change notification settings - Fork 173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
QSPI support #49
Comments
The implementation currently used polling transactions even with DMA. Am I correct in that this prevents other tasks from being executed while the transfer is executing? |
What do you mean? You are on top of ESP IDF / FreeRTOS. When the driver polls for transactions, it does not busy loop, but sleeps the current task. You can execute as many other tasks during that time as you want.
Haven't heard of anybody else doing that, and your mileage might vary. Not sure why you want to do that in the first place. |
I asked this because the esp-idf documentation says the following:
It wasn’t clear to me before if this meant the task busy loops or if it just blocks each time the task is activated. |
Good point, let me check again actually... |
@madwizard-thomas Argh you are right that it is actually busy looping: https://github.com/espressif/esp-idf/blob/release/v4.4/components/driver/spi_master.c#L983 Yet, I don't see any disabling of the FreeRTOS task scheduler, or holding a critical section. Which means that though the task is busy looping, it can be interrupted by the scheduler by another task with a higher priority (or same prio task due to time-slicing). So it should still work IMO. A bit not so efficient in terms of CPU power consumption though. Once we have the async SPI driver merged, as a side effect we'll get interrupt transactions as well though. |
dont forget you are on an FreeRTOS with preemptive scheduling, if the task here has lower prio than some other task you run concurrently this should be preempted on the while loop right? |
Changing the title to reflect that DMA support is in place since quite some time. Mainline also now supports async, as well as blocking+non-polling mode. |
Hoping to take advantage of the QSPI and DMA features of the SPI peripheral. This is listed as TODO in spi.rs
The text was updated successfully, but these errors were encountered: