DSPRelated.com
Forums

AVNet USB Board

Started by plex...@gmail.com October 5, 2007
Hi All,

I'm trying to get the AVNet USB Board working on a TMS320C6711 DSK and was wondering if anyone could offer any advice? At the moment I have:

*(int *)EMIF_GCTL = 0x00003080; /* EMIF global control register */
*(int *)EMIF_CE2 = 0xFFFFFF23; /* CE2-32bit async on daughtercard*/

which should setting EMIF up with No Hold, No external clocks, and maximum hold, setup and strobe times (The cyprus chip doesn't seem to have any upper bounds on these so I figured more is better at least until I get something working). I've used 32 bit mode since I don't really want any address shifting - even though only 8 bits of data are being used to send commands.

I'm enabling EXT_INT4 and then writing to the boards command register:

#define CMDADDR 0xA0008000
*(unsigned char *)EMIF_GCTL = 0xC1;

after which I would expect an interrupt on INT4, but no such luck. Reading back from that address will now always give 0xC1. Is endianness an issue?

If anyone who has used the board before, even with a different chip, could offer some advice as to what they had to do to get it working then I would be very grateful.

Regards,
James
Hello James,

Please see comments below.

--- p...@gmail.com wrote:

> Hi All,
>
> I'm trying to get the AVNet USB Board working on a
> TMS320C6711 DSK and was wondering if anyone could
> offer any advice? At the moment I have:
>
> *(int *)EMIF_GCTL = 0x00003080; /* EMIF
> global control register */
> *(int *)EMIF_CE2 = 0xFFFFFF23; /* CE2-32bit
> async on daughtercard*/
>
> which should setting EMIF up with No Hold, No
> external clocks, and maximum hold, setup and strobe
> times (The cyprus chip doesn't seem to have any
> upper bounds on these so I figured more is better at
> least until I get something working). I've used 32
> bit mode since I don't really want any address
> shifting - even though only 8 bits of data are being
> used to send commands.
>
> I'm enabling EXT_INT4 and then writing to the boards
> command register:
>
> #define CMDADDR 0xA0008000
> *(unsigned char *)EMIF_GCTL = 0xC1;
>
> after which I would expect an interrupt on INT4, but
> no such luck. Reading back from that address will
> now always give 0xC1. Is endianness an issue?

I am not sure what you are trying to do and I have no
experience with your particular board. But I won't
let that stop me...

My theory on debug or 'board bring' is that you start
simple and build on your success. That way if you do
not have initial success, the problem that you are
troubleshooting is very basic. I never start off with
interrupts or 'EDMA stuff' - I make sure inteerupts
are disabled until 'something works'. Just do some
peeks and pokes [memory reads/writes] from CCS. If
there are readle registers that have predictable
values, try reading them. Then goto to some writeable
registers and try to 'read what you wrote'.
!!Caution!! The c6711 has 'bus keepers' that retain
the last written value [I am not 100% sure that these
are enabled for all address spaces, but I do know that
it is possible to write to a nonexistent address,
perform an immediate read, and get the correct value.]
The solution is to write pattern A to address B,
write pattern X to address Y, and then read address B
- expecting pattern A. Once you get some of the
manaul reads and writes working, write some simple
test/exercise code. Continue to build on your
accomplishments until you have the proven that the
pieces you will need are working. Then start
developing your application/driver.

This is not the only way to 'skin the cat', but it is
a proven way that this 'old school guy' uses.

,mikedunn
>
> If anyone who has used the board before, even with a
> different chip, could offer some advice as to what
> they had to do to get it working then I would be
> very grateful.
>
> Regards,
> James
James-

> I'm trying to get the AVNet USB Board working on a TMS320C6711 DSK and was
> wondering if anyone could offer any advice? At the moment I have:
>
> *(int *)EMIF_GCTL = 0x00003080; /* EMIF global control register */
> *(int *)EMIF_CE2 = 0xFFFFFF23; /* CE2-32bit async on daughtercard*/
>
> which should setting EMIF up with No Hold, No external clocks, and maximum
> hold, setup and strobe times (The cyprus chip doesn't seem to have any upper
> bounds on these so I figured more is better at least until I get something
> working). I've used 32 bit mode since I don't really want any address
> shifting - even though only 8 bits of data are being used to send commands.
>
> I'm enabling EXT_INT4 and then writing to the boards command register:
>
> #define CMDADDR 0xA0008000
> *(unsigned char *)EMIF_GCTL = 0xC1;
>
> after which I would expect an interrupt on INT4, but no such luck. Reading
> back from that address will now always give 0xC1. Is endianness an issue?
>
> If anyone who has used the board before, even with a different chip, could
> offer some advice as to what they had to do to get it working then I would
> be very grateful.

We've used the Avnet USB daughtercard before with the DSK 6416 board, although I
wasn't closely involved with this work. My first suggestion would be to download the
DSK 6416 schematic and double-check the daughtercard connector -- EMIF interface and
compare with DSK 6711. DSK 6711 is old enough (1999?) that there may even be some
slight daughtercard connector mods you need to make to bring it up to "current" spec
(current defined as recent DSK boards).

My second suggestion would be to get the DSK 6416 CCS examples that come with the
Avnet USB card and compare EMIF settings.

Also, did you see this thread:

http://www.dsprelated.com/groups/c6x/show/7499.php

Sherhrzad is a DSP expert and he's also helpful. I suggest to e-mail him and see if
got the DSK 6713 fully working with the Avnet USB DC. If so then he may have some
code that could be your starting point.

-Jeff