i.MX SDMA: RAM usage for storing channel contexts

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX SDMA: RAM usage for storing channel contexts

666 Views
ceggers
Contributor V

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

Labels (1)
0 Kudos
2 Replies

518 Views
igorpadykov
NXP Employee
NXP Employee

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!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

518 Views
ceggers1
Contributor IV

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

0 Kudos