DSPRelated.com
Forums

Re: Problem using SBSRAM, COFF start address

Started by Jeff Brower June 27, 2006
Tobias-

> Thanks for your reply, Jeff. It works now, the EMIF was in fact not
> initialized correctly because I forgot to reset the board while
> writing HPI.

Ok, progress then.

> Now I have another question: The COFF-files contain a start address
> which says, where the c_int00 label is loaded to and where to start
> executing the program. This is a problem for my loader at the moment
> because it resets the board, loads code via HPI and sets a DSPINT to
> wake it up and start execution. But it starts at Address 0x0 (for
> Memory Map1). Is there a possibility to change the instruction
> pointer or is it the program's task to jump to the right address at
> the beginning?

Doesn't your loader also load int vectors, including Reset vector? If so
then prior to Reset memory should already be correctly initialized to jump
to c_int00 location.

Maybe what you're doing is avoiding to write to int vectors, otherwise
your HPI-based loader will commit a suicide by writing over the HPI
vector. But the HPI vector is the only one you actually have to "skip",
others should be written according to COFF file contents.

-Jeff

> --- In c..., Jeff Brower wrote:
>>
>> Tobias-
>>
>> > I am using the TI EVM board with a C6201 DSP under Linux. For a
>> > student research project I am programming a COFF loader for this
>> > board. Communicating with the hardware is done by directly
> accessing
>> > the Base Address Registers of the PCI interface, where code can
> be
>> > loaded via HPI.
>> > This works fine except for the SBSRAM. When I write some words
> to
>> > consecutive addresses in this address space and try to read
> these
>> > words out after it, I always get the last word I wrote in. So
> i.e. if
>> > I write 1, 2, 3, 4, the word which is read out for each of the
>> > addresses is always 4.
>>
>> This is probably "bus hold"; i.e. last value is hanging on the bus
> due to buffers
>> along the way. It sounds to me like you're not reaching SBSRAM
> mem at all.
>>
>> > Other address spaces are read correctly and I
>> > think the EMIF registers are also initialized right.
>>
>> Those are some big assumptions. I would first verify you have
> SBSRAM configured
>> correctly by using CCS + JTAG to download a small, simple DSP
> program that
>> read/writes SBSRAM mem. Once you know that's good, then go back
> to PCI interface.
>>
>> -Jeff
>