13 | | The _bdv_read() and _bdv_write() functions are always blocking. They can be called in 2 modes: |
14 | | * In '''synchronous''' mode, these functions use a polling policy on the BDV STATUS register to detect transfer completion, as interrupts are not activated. This mode is used by the boot code to load the map.bin file into memory (before MMU activation), or to load the .elf files (after MMU activation). |
| 13 | The _bdv_access() function is always blocking, and can be called in 2 modes: |
| 14 | * In '''synchronous''' mode, these functions use a polling policy on the BDV STATUS register to detect transfer completion (busy waiting). It does not use interrupt. This mode is used by the boot code to load the map.bin file into memory (before MMU activation), or to load the .elf files (after MMU activation). |
37 | | This Interrupt Service Routine save the status register value in the ''_bdv_status'' global variable, acknowledge the IRQ, and activates the task waiting on IO transfer. It can be an HWI or a SWI. |
38 | | * irq_type : HWI / PTI / WTI |
39 | | * irq-id : index returned by ICU/XCU |
40 | | * channel : unused (block-device peripheral is single channel). |
| 37 | This Interrupt Service Routine is only used in descheduling mode. It save the status register value in the ''_bdv_status'' global variable, acknowledge the IRQ, and activates the task waiting on IO transfer. It can be an HWI or a SWI. |
| 38 | * '''irq_type''' : HWI / PTI / WTI |
| 39 | * '''irq-id''' : index returned by XCU |
| 40 | * '''channel''' : unused (BDV device is single channel). |