i.MX6UL reference manual, Table 43-14. SDMA Data Memory Space shows:
RAM 0x0800 → 0x0FFF 8 Kbyte 8 Kbyte internal RAM with channels contexts and user data/routines
It look like the channel contexts require 32 channels x 32 words / channel x 4 byte / word = 4096 bytes of memory.
43.4.9.4 Context Switching-Programming
CONTEXT_BASE equals 0x0800
At which location inside the internal RAM are the contexts stored? Is CONTEXT_BASE the address on the data bus or the offset from the start of the RAM? Is CONTEXT_BASE a byte address (2048 bytes from start of RAM) or word address (8192 bytes from start of RAM)?
How much RAM is available for user scripts? Is any RAM in use by the NXP scripts for storing data (not code)?
regards
Christian
Hi Christian
"CONTEXT_BASE equals 0x0800"
is ram address described in Table 43-14. SDMA Data Memory Space,
note sdma is separate starcore dsp processor with own memory map. This map
is not accessible from i.MX6UL side and not used in applications.
May be useful to look at overview of sdma usage on
Freescale i.MX SDMA tutorial (part I)
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Igor,
thanks for responding to my question.
So if CONTEXT_BASE is an address in the Data Memory Space, this means that the contexts are stored at the beginning (first half) of the RAM. So user scripts and their data must use the 2nd half of the RAM.
The image sdma-imx6q.bin from linux-firmware.git contains 2004 (0x7d4 at offset 0x1C in the image) bytes RAM code which is copied to address 0x1800 (at offset 0xA4 in the image). 0x1800 doesn't look like a RAM address in Data Memory Space but in Instruction Memory Space this starting at the 2nd half of the the RAM which makes sense.
Figure 43-18 on page 2745 confirms that ("Content Area" seems to be misspelled, Program Memory seems to be used synonymous for Instruction Memory).
Prior starting my first SDMA project I would like to know how much memory is available for my own code. So currently about 2 kB seems to be available.
How can I determine whether any SDMA RAM is used for DATA by the NXP ROM/RAM scripts?
regards
Christian