Other Parts Discussed in Thread: SYSBIOS
Hello,
I have a big problem with the PDK of the AM6548 in general and the (missing) platform documentation - this time with UDMA:
I have to implement a bare metal application (as small as possible) that utilizes DMA to transfer data from DDR4 to shared SRAM. As the application must be as fast as possible, it must reside in shared SRAM.
First I had a look at examples in the PDK. And (this is a general problem with your PDK!) After several hours, I noticed, that the EDMA examples cannot be used for the A53 core. This is because I found another document in some subtree that states how to port applications using EDMA to UDMA - stating that UDMA is something new and even more complex. So I must use UDMA. And there is only one usable example I thought I could break down: the one in this porting document.
pdk_am65xx_1_0_7\packages\ti\drv\udma\docs\Migrating_Applications_from_EDMA_to_UDMA_using_TI-RTOS.pdf
(but I don't want to use TI-RTOS!)
So the UDMA Driver
packages/ti/drv/udma/lib/am65xx/mpu1_0/release/udma.aa53fg
depends on
packages/sciclient/lib/am65xx/mpu1_0/release/sciclient.aa53fg
packages/osal/lib/nonos/am65xx/a53/release/ti.osal.aa53fg
and hence introduces dependencies into OSAL which leads to linking my bare metal app to these. Why is there a hard dependency to semaphore support, firmware library (!) ? (This means I also have to load a firmware binary to use DMA !?, because otherwhise the UDMA init function hangs...) So far no RTOS dependency, so the pdf title is misleading as well, don't you agree?
This leads to an application that does barely fit into half a Megabyte, i.e. if two cores share the MSMC SRAM equally, the software that should run the UDMA transfer is already full...
So the following thoughts and questions arose:
- Why are a lot (if not most) examples in the PDK, that I download for the 6548 (!) not for the 6548 but for other platforms – that does not make sense!
- Where is an understandable documentation of UDMA. One cannot follow any usable register access order from the 14 thousand pages of TRM.
- How can I use UDMA without introducing a ton of dependencies to other libraries...
- UDMA is a very basic feature and as such, software needed for it should also be small and fast! 170 lines of C code to transfer 1024 bytes seem like a bad joke – and with the documentation I fould almost nothing of the defines, macros and functions is really explained. It is merely an empty doxygen documentation... at least IMHO.
I am looking forward to any help!
Andreas