SAM4 ASF freeRTOS peripheral control vs PDC vs standard driver

cpasset3 wrote on Thursday, May 22, 2014:


I am developing a firmware for a product which have a SAM4 inside (L or N family, not decided yet). We are going with FreeRTOS as OS. I am having some trouble using the freeRTOS_peripheral_control on the SAM4N (and it is not implemented for the SAM4L).

In our application only one task will be able to access a given peripheral (SPI/TWI and UART), for this case do we need to use the ASF freeRTOS_peripheral control or can we go only with the standard driver (on which we can add the PDC feature if we want to loose less CPU time ?)

Furthermore if we want some access control (in cause of two tasks need to send data to the task control the peripheral), instead of using the ASF freeRTOS_peripheral_control could we just use a mutex which will be taken when the task will use the peripheral and release afterward ?

Thank you,


rtel wrote on Thursday, May 22, 2014:

There is absolutely nothing to prevent you using the standard ASF drivers, as long you are are aware that they are not written for use in a multi tasking environment so use them appropriately, with things like mutexes as you suggest. The FreeRTOS Peripheral Control drivers take care of that for you.

Also some of the older ASF drivers for the older parts also used a lot of polling, which is extremely inefficient, although a lot of the newer ASF drivers do allow more event driven use. The FreeRTOS Peripheral Control drivers are written to be as efficient as they can eb from the outset, but do have a dependency on the PDC being available.