core-v-mcu
core-v-mcu copied to clipboard
Add programming example for micro-DMA function
Task Description
Currently the micro-DMA chapter of the User Manual is a description of how the uDMA works. We need a programmer's view that explains how to write/read the uDMA and peripheral CSRs to transfer data to/from the L2 memories.
Let's start with a simple peripheral for this. I recommend either the uDMA UART or uDMA I2CM peripherals.
Description of Done
Merge pull-request attributed to this issue for docs/doc-src/udma_subsystem.rst plus the associated uDMA peripheral chapter (e.g. docs/doc-src/ip-blocks/udma_uart.rst).
Associated PRs
No response
@MikeOpenHWGroup are you advocating a new chapter or augmenting the existing micro-DMA chapter?
@MikeOpenHWGroup are you advocating a new chapter or augmenting the existing micro-DMA chapter?
I would recommend adding this to the peripheral function chapter (e.g. uDMA UART).
@MikeOpenHWGroup are you advocating a new chapter or augmenting the existing micro-DMA chapter?
I would recommend adding this to the peripheral function chapter (e.g. uDMA UART).
Under the Programming Model Section?
I started working on this. The programming sequence for all uDMA peripheral follow roughly the same scheme, only Step 1 and Step 2 make use of the general uDMA configuration registers. The other steps involve the specific register section of the each peripheral inside the uDMA memory map.
- Clear the clock gating bit of the associated peripheral
- Enable interrupt on the associated peripheral
- Setup the peripheral
- Setup the transfer parameters (address and size)
- Start operation (tx/rx)
We could add this generic description to the uDMA section and add the specifics for each uDMA peripheral. @MikeOpenHWGroup what do you say?
That works for me @abberthe. It will be important to specify the specific CSRs and CSR fields that s/w needs to write/read for each the above steps. Of course, step 3 will be peripheral dependent, so we could simply point the reader to the appropriate section of the User Manual (e.g. uDMA UART).