PDA

View Full Version : Booting the 56371 via serial EEPROM


BazookaJoe
09-05-2006, 10:17 PM
Hello,

I'm using the 56371 DSP and I have to boot it with serial EEPROM in
I2C-Mode. The Procedure is described in the manual, but I do not know
how to make a boot image from the *.cld file.
I managed to make a .s file using srec.exe and then I converted that to
intel hex format. Now, I don't know how to put the information about
start adresses and record length at the file header. Does anyone know a
tool (or methode), which can do that?

Thanks for any help in advance!

Roman Rumian
09-06-2006, 02:46 PM
Hi,

BazookaJoe napisał(a):
> Hello,
>
> I'm using the 56371 DSP and I have to boot it with serial EEPROM in
> I2C-Mode. The Procedure is described in the manual, but I do not know
> how to make a boot image from the *.cld file.
> I managed to make a .s file using srec.exe and then I converted that to
> intel hex format. Now, I don't know how to put the information about
> start adresses and record length at the file header. Does anyone know a
> tool (or methode), which can do that?
>
> Thanks for any help in advance!

you can make a .lod (use cldlod utility) where the data structure will
be easily seen in text format.
Another way is to use emulator: you have to load program into DSP563xx
internal RAM and then copy it into EEPROM by a small utility written for
that DSP.
It is not complicated - belive me ! :-)

Regards

Roman Rumian

BazookaJoe
09-06-2006, 07:29 PM
Hi,

Roman Rumian wrote:
> Another way is to use emulator: you have to load program into DSP563xx
> internal RAM and then copy it into EEPROM by a small utility written for
> that DSP.

where may I get such a utility?

Regards, BJ

Roman Rumian
09-07-2006, 07:30 AM
BazookaJoe napisał(a):
> Hi,
>
> Roman Rumian wrote:
>> Another way is to use emulator: you have to load program into DSP563xx
>> internal RAM and then copy it into EEPROM by a small utility written for
>> that DSP.
>
> where may I get such a utility?

you have to write it oneself. It depends on EEPROM type you used.
Ooops ! New, DSP56371 BootROM loads X: and Y: RAM also.
Thats great !

"(...)
Assuming the EEPROM address starts at 0: -
EEPROM Byte expected at DSP Example
Address
0 PstartAddress2 00
1 PstartAddress1 04
2 PstartAddress0 00
3 XstartAddress2 00
4 XstartAddress1 05
5 XstartAddress0 00
6 YstartAddress2 00
7 YstartAddress1 06
8 YstartAddress0 00
9 PdataLength2 67
10 PdataLength1 45
11 PdataLength0 00
12 XdataLength2 21
13 XdataLength1 35
14 XdataLength0 43
15 YdataLength2 56
16 YdataLength1 64
17 YdataLength0 24
18 data in P, X and Y order -
19 must make up whole 24 bit words
-
-
-
- PstartAddress2 00
- PstartAddress1 04
- PstartAddress0 00
(final word is start address of rogram to run)
The above example would store: $004567 words from P:$400
$433521 words from X:$500
$246456 words from Y:$600
And will start running from P:$400 once all of the data has been downloaded.
(...)"
----------------

So, you must write a simple routine which will write to EEPROM a block
of data (size of block may depend on EEEPROM organisation), and then
call it three times for your P:, X: and Y: data, after writing 18 bytes
of header first, of course.

I did it for DSP56362, but for emulated on SPI interface on GPIO pins,
so its useless for you.

Good luck !

Roman Rumian

geroldschrutz
09-07-2006, 12:59 PM
"Roman Rumian" <[email protected]> schrieb im Newsbeitrag
news:[email protected]...
> BazookaJoe napisał(a):
>> Hi,
>>
>> Roman Rumian wrote:
>>> Another way is to use emulator: you have to load program into DSP563xx
>>> internal RAM and then copy it into EEPROM by a small utility written for
>>> that DSP.
>>
>> where may I get such a utility?
>
> you have to write it oneself. It depends on EEPROM type you used.
> Ooops ! New, DSP56371 BootROM loads X: and Y: RAM also.
> Thats great !
>
> "(...)
> Assuming the EEPROM address starts at 0: -
> EEPROM Byte expected at DSP Example
> Address
> 0 PstartAddress2 00
> 1 PstartAddress1 04
> 2 PstartAddress0 00
> 3 XstartAddress2 00
> 4 XstartAddress1 05
> 5 XstartAddress0 00
> 6 YstartAddress2 00
> 7 YstartAddress1 06
> 8 YstartAddress0 00
> 9 PdataLength2 67
> 10 PdataLength1 45
> 11 PdataLength0 00
> 12 XdataLength2 21
> 13 XdataLength1 35
> 14 XdataLength0 43
> 15 YdataLength2 56
> 16 YdataLength1 64
> 17 YdataLength0 24
> 18 data in P, X and Y order -
> 19 must make up whole 24 bit words
> -
> -
> -
> - PstartAddress2 00
> - PstartAddress1 04
> - PstartAddress0 00
> (final word is start address of rogram to run)
> The above example would store: $004567 words from P:$400
> $433521 words from X:$500
> $246456 words from Y:$600
> And will start running from P:$400 once all of the data has been
> downloaded.
> (...)"
> ----------------
>
> So, you must write a simple routine which will write to EEPROM a block of
> data (size of block may depend on EEEPROM organisation), and then call it
> three times for your P:, X: and Y: data, after writing 18 bytes of header
> first, of course.
>
> I did it for DSP56362, but for emulated on SPI interface on GPIO pins, so
> its useless for you.
>
> Good luck !
>
> Roman Rumian

Hello Roman,
you have to insert an extra Byte in front of "0 PstartAddress2 00" to get it
running. The bootcode from freescale is wrong.

Gerold

BazookaJoe
09-21-2006, 05:20 PM
Hello,

thanks a lot for your posts. I'm using a 25MHz crystal oscillator for
the dsp. According to the manual, the i2c clock should be something
around 400khz, with that oscillator. But I've measured something higher
than 1MHz! The EEPROM seems not to work at that high frequency.
Has anyone also noticed that the i2c clock is too high, when using i2c
boot mode?