alex.young wrote: > Hi Andor,
>
> unless ADI have changed the way in which the kernel operates, the
> following happens:
> 1. The DSP autonomously loads (via DMA) 256 instruction words (the
> boot kernel) into memory from the boot device.
> 2. The kernel reads single 32-bit words from the boot device (via
> DMA) and copies most of these (using a data move instruction) to
> the destination (internal or external).
> 3. The boot kernel in over-written by a final DMA transfer of 256
> instruction words.
Ah ok, we are not talking about the same thing. You are describing
EPROM booting, while I'm using host booting. In host booting, a host
processor downloads code and data into the DSP via external port DMA
(in slave mode), in contrast to EPROM booting, where the DSP is
repsonsible for getting data and code from an EPROM via external port
DMA (in master mode).
I'm currently trying to find a work around to my problem by using
core SDRAM copy loops instead of DMA - this is ok for my application,
where SDRAM is initialized at boot time, and no further access from
the host to the SDRAM is necessary.
Regards,
Andor
Reply by ●April 20, 20042004-04-20
Hi Andor,
unless ADI have changed the way in which
the kernel operates, the following happens:
1. The DSP autonomously loads (via DMA)
256 instruction words (the boot kernel) into memory from the boot device.
2. The kernel reads single 32-bit words
from the boot device (via DMA) and copies most of these (using a data move
instruction) to the destination (internal or external).
3. The boot kernel in over-written by a
final DMA transfer of 256 instruction words.
The SDRAM can be written to in step 2 as
the data from flash is DMA transferred word-by-word into a single scratch
location in internal memory and then copied by a data move to external
memory.
Regards,
Alex Young
DSP software Engineer
Consultant for Philips Digital Systems Laboratories
"andor_bariska"
<a...@weiss.ch>
20/04/04 15:25
To:
a...@yahoogroups.com
cc:
(bcc: Alex Young/LEU/PDSL/PHILIPS)
Subject:
[adsp] Re: SDRAM DMA
Classification:
Hi Alex!
Thanks for your reply. Comments below.
> Hi Andor,
>
> if you are booting from the host then the SDRAM could be
> initialised as part of the boot process (just define your data
> structure(s) in SDRAM space).
Well, that's basically what I'm trying to do. The host boots the DSP
by downloading code from an external flash via external port DMA into
the DSP. The problem is that writing to SDRAM cannot be achieved with
a direct DMA into SDRAM, you first have to DMA the data into internal
memory, and then setup an external port DMA which moves the data from
the internal memory into the external memory (SDRAM).
Or am I missing something?
>
> Either way you must make sure that the SDRAM is configured
> correctly (in the boot kernel).
I'm not using a boot kernel. The host loads the code via DMA into the
DSP. Once the DSP is running (and has initialized its SDRAM
correctly) it sets a flag for the host indicating that it is ready
for the external port DMAs to write to SDRAM.
Regards,
Andor
_____________________________________
Note: If you do a simple "reply" with your email client, only the
author of this message will receive your answer. You need to do a
"reply all" if you want your answer to be distributed to the entire
group.
_____________________________________
About this discussion group:
<*> To unsubscribe from this group, send an email to:
a...@yahoogroups.com
<*
Reply by Steve Holle●April 20, 20042004-04-20
We ard successfully using the Host Port Boot method which sounds very
similar to what you are doing. You might want to take a look at how
the bootloader source for the 65L as an example of how to DMA from the
host port.
At 04:47 AM 4/20/2004, andor_bariska wrote:
Friends,
I have to initialize a section in SDRAM connected to a 65L from a
host processor.
What language are you using. If C or C++ could this just be
initialized data placed in external memory? The compiler would take
care of the initialization then.
It is not possible to do so
directly. One first has to download a
block of data into 65L internal memory (also via DMA), and afterwards
setup an external port DMA which copies from 65L internal to external
(SDRAM) memory.
This works in theory (one can use the simulator to simulate external
port DMA into SDRAM). Since the segment in SDRAM is fairly large and
does not fit into the 65L internal memory, I have to do piecewise
transfers in smaller blocks.
After I have downloaded the first block of data into internal memory,
I setup an external port DMA into SDRAM, and the block seems to get
copied into the external memory. I then download a second block of
data into internal memory, which works as well. However, when I setup
and enable the external port DMA, the DMA hangs. The external port
counter register remains constant, and the DMASTAT shows busy for the
external port.
Are you sure the problem isn't on the host side? I believe that
host port DMA transfers are clocked by the host.
Has anybody done successful DMA
transfers from a host processor to
SDRAM? Any gotchas?
Regards,
Andor
WEISS ENGINEERING LTD. - Professional Digital Audio Products
Florastrasse 42 8610 Uster Switzerland
phone: +41 1 940 20 06, fax: +41 1 940 22 14
mailto:a...@weiss.ch
web: <http://www.weiss.ch/>
Maillist: http:/groups.yahoo.com/group/weiss-audio
_____________________________________
Note: If you do a simple "reply" with your email client, only the
author of this message will receive your answer. You need to do a
"reply all" if you want your answer to be distributed to the entire
group.
_____________________________________
About this discussion group:
--------------------------
Steve Holle
Link Communications, Inc.
1035 Cerise Road
Billings, Montana 59101-7378
406.245.5002
s...@link-comm.com
--------------------------
Reply by andor_bariska●April 20, 20042004-04-20
Hi Alex!
Thanks for your reply. Comments below.
> Hi Andor,
>
> if you are booting from the host then the SDRAM could be
> initialised as part of the boot process (just define your data
> structure(s) in SDRAM space).
Well, that's basically what I'm trying to do. The host boots the
DSP
by downloading code from an external flash via external port DMA into
the DSP. The problem is that writing to SDRAM cannot be achieved with
a direct DMA into SDRAM, you first have to DMA the data into internal
memory, and then setup an external port DMA which moves the data from
the internal memory into the external memory (SDRAM).
Or am I missing something?
>
> Either way you must make sure that the SDRAM is configured
> correctly (in the boot kernel).
I'm not using a boot kernel. The host loads the code via DMA into the
DSP. Once the DSP is running (and has initialized its SDRAM
correctly) it sets a flag for the host indicating that it is ready
for the external port DMAs to write to SDRAM.
Regards,
Andor
Reply by Mike Rosing●April 20, 20042004-04-20
On Tue, 20 Apr 2004, andor_bariska wrote:
> I have to initialize a section in SDRAM connected
to a 65L from a
> host processor.
>
> It is not possible to do so directly. One first has to download a
> block of data into 65L internal memory (also via DMA), and afterwards
> setup an external port DMA which copies from 65L internal to external
> (SDRAM) memory.
>
> This works in theory (one can use the simulator to simulate external
> port DMA into SDRAM). Since the segment in SDRAM is fairly large and
> does not fit into the 65L internal memory, I have to do piecewise
> transfers in smaller blocks.
>
> After I have downloaded the first block of data into internal memory,
> I setup an external port DMA into SDRAM, and the block seems to get
> copied into the external memory. I then download a second block of
> data into internal memory, which works as well. However, when I setup
> and enable the external port DMA, the DMA hangs. The external port
> counter register remains constant, and the DMASTAT shows busy for the
> external port.
I've not done it, so I don't know. But I'd check the last couple
of
words and see if they fully finished. I have seen problems with the
DMA control lines with large blocks of data. They need to be really
clean signals. Scope your DMA control lines and see if there's
a lot of noise or bouncing (reflections). Most likely the previous
DMA didn't really finish, so the new commands aren't being
accepted.
Patience, persistence, truth,
Dr. mike
Reply by ●April 20, 20042004-04-20
Hi Andor,
if you are booting from the host then the
SDRAM could be initialised as part of the boot process (just define your data
structure(s) in SDRAM space).
Either way you must make sure that the
SDRAM is configured correctly (in the boot kernel).
Regards,
Alex Young
DSP software Engineer
Consultant for Philips Digital Systems Laboratories
"andor_bariska"
<a...@weiss.ch>
20/04/04 12:47
To:
a...@yahoogroups.com
cc:
(bcc: Alex Young/LEU/PDSL/PHILIPS)
Subject:
[adsp] SDRAM DMA
Classification:
Friends,
I have to initialize a section in SDRAM connected to a 65L from a
host processor.
It is not possible to do so directly. One first has to download a
block of data into 65L internal memory (also via DMA), and afterwards
setup an external port DMA which copies from 65L internal to external
(SDRAM) memory.
This works in theory (one can use the simulator to simulate external
port DMA into SDRAM). Since the segment in SDRAM is fairly large and
does not fit into the 65L internal memory, I have to do piecewise
transfers in smaller blocks.
After I have downloaded the first block of data into internal memory,
I setup an external port DMA into SDRAM, and the block seems to get
copied into the external memory. I then download a second block of
data into internal memory, which works as well. However, when I setup
and enable the external port DMA, the DMA hangs. The external port
counter register remains constant, and the DMASTAT shows busy for the
external port.
Has anybody done successful DMA transfers from a host processor to
SDRAM? Any gotchas?
Regards,
Andor
WEISS ENGINEERING LTD. - Professional Digital Audio Products
Florastrasse 42 8610 Uster Switzerland
phone: +41 1 940 20 06, fax: +41 1 940 22 14
mailto:a...@weiss.ch web: <http://www.weiss.ch/>
Maillist: http:/groups.yahoo.com/group/weiss-audio
_____________________________________
Note: If you do a simple "reply" with your email client, only the
author of this message will receive your answer. You need to do a
"reply all" if you want your answer to be distributed to the entire
group.
_____________________________________
About this discussion group:
<*> To unsubscribe from this group, send an email to:
a...@yahoogroups.com
<*
Reply by andor_bariska●April 20, 20042004-04-20
Friends,
I have to initialize a section in SDRAM connected to a 65L from a
host processor.
It is not possible to do so directly. One first has to download a
block of data into 65L internal memory (also via DMA), and afterwards
setup an external port DMA which copies from 65L internal to external
(SDRAM) memory.
This works in theory (one can use the simulator to simulate external
port DMA into SDRAM). Since the segment in SDRAM is fairly large and
does not fit into the 65L internal memory, I have to do piecewise
transfers in smaller blocks.
After I have downloaded the first block of data into internal memory,
I setup an external port DMA into SDRAM, and the block seems to get
copied into the external memory. I then download a second block of
data into internal memory, which works as well. However, when I setup
and enable the external port DMA, the DMA hangs. The external port
counter register remains constant, and the DMASTAT shows busy for the
external port.
Has anybody done successful DMA transfers from a host processor to
SDRAM? Any gotchas?