Reply by john...@yahoo.com March 9, 20102010-03-09
I got it to work.

You must reformat your hex file to be 32bit longwords and be in the order below.

Pretty stupid to have to do that yourself without some program.

I am trying to serial bootload my program, with matlab.
>
>Once I have my program in intel hex format do I just send those words as is?
>
>The boot-loader source does not seem to take into account the hex format. Do I have to write a program to re-form this into the correct format?
>
>what about the hex lines that aren't 32 bits long yet I have to send 32 bits over the serial port by default?(do I prepend zeros?) Do I send the check-sum?
>
>The data-sheet says the output file structure should be:
>
>1. Size of first data block (# 32 bit words)
>2. Destination address (valid 24 bit address)
>3. first word of first block
> ...
>N. last word of first block
> ...
>M. Size of last data block
>M+1. Destination address (valid 24 bit address)
>M+2. first word of first block
> ...
>J. last word of last block
>J+1 Zero word (end bootload)
>Here is an example of the intel hex file (toggles XF0/1 IO pins):
>
>:0200000400807A
>:200000000F2B0000500B00140878002208780022087800220878002208780022087800226B
>:20000800087800220878002208780022087800220878002208780022087800660878006640
>:200010000878006608780066087800660878006608780066087800660878006608780066A0
>:2000180008780066087800666080000250410B01504BC30018740002680000010080006048
>:20002000FFFFFFFF087000800834001F080B0014087000800828002004E8FFFF6A05000C9D
>:20002800084120016A250008084920010840200118610001139B0001DA002120080100008F
>:200030006A26FFFA08492001084020011861000108700080086A00000F2A0000628000004D
>:200038006280003A780000000F2B0000500B00140F2400000F2C0000082440006A0500061C
>:20004000502C4022020C000450401C0170000000186400016A06FFFC0820400170060000CC
>:200048000C8000006A00FFFF0F2B00005031400004F100206A270005500B001450400B02F2
>:2000500053A840226A2000060C8000000C800000506000015061000115404000020100117F
>:20005800506000001521400050510B01682000110C800000504BC300187400026A00FFFF3C
>:084000000000000000000000B8
>:0440220000804002D8
>:00000001FF
>why would there be a conversion utility to a format that the chip doesn't readily support? This does not make sense to me.
>
>_____________________________________

_____________________________________
Reply by Bill Finger March 9, 20102010-03-09
Daniel,

The hex file formats are intended for EEPROM programmers which take
those formats. The bootloader will require binary data. The hex30.exe
utility can convert the Code Composer .out file into the correct format
for the bootloader. It should come with your code development tools.

Regards,
Bill

> -----Original Message-----
> From: c... [mailto:c...] On
> Behalf Of j...@yahoo.com
> Sent: Monday, March 08, 2010 3:18 PM
> To: c...
> Subject: [c3x] TMS320VC33 Serial Bootload Program format
>
> I am trying to serial bootload my program, with matlab.
>
> Once I have my program in intel hex format do I just send
> those words as is?
>
> The boot-loader source does not seem to take into account the
> hex format. Do I have to write a program to re-form this
> into the correct format?
>
> what about the hex lines that aren't 32 bits long yet I have
> to send 32 bits over the serial port by default?(do I prepend
> zeros?) Do I send the check-sum?
>
> The data-sheet says the output file structure should be:
>
> 1. Size of first data block (# 32 bit words)
> 2. Destination address (valid 24 bit address)
> 3. first word of first block
> ...
> N. last word of first block
> ...
> M. Size of last data block
> M+1. Destination address (valid 24 bit address)
> M+2. first word of first block
> ...
> J. last word of last block
> J+1 Zero word (end bootload)
> Here is an example of the intel hex file (toggles XF0/1 IO pins):
>
> :0200000400807A
> :200000000F2B0000500B00140878002208780022087800220878002208780
> 022087800226B
> :2000080008780022087800220878002208780022087800220878002208780
> 0660878006640
> :2000100008780066087800660878006608780066087800660878006608780
> 06608780066A0
> :2000180008780066087800666080000250410B01504BC3001874000268000
> 0010080006048
> :20002000FFFFFFFF087000800834001F080B0014087000800828002004E8F
> FFF6A05000C9D
> :20002800084120016A250008084920010840200118610001139B0001DA002
> 120080100008F
> :200030006A26FFFA08492001084020011861000108700080086A00000F2A0
> 000628000004D
> :200038006280003A780000000F2B0000500B00140F2400000F2C000008244
> 0006A0500061C
> :20004000502C4022020C000450401C0170000000186400016A06FFFC08204
> 00170060000CC
> :200048000C8000006A00FFFF0F2B00005031400004F100206A270005500B0
> 01450400B02F2
> :2000500053A840226A2000060C8000000C800000506000015061000115404
> 000020100117F
> :20005800506000001521400050510B01682000110C800000504BC30018740
> 0026A00FFFF3C
> :084000000000000000000000B8
> :0440220000804002D8
> :00000001FF
> why would there be a conversion utility to a format that the
> chip doesn't readily support? This does not make sense to me.
>
>
> _____________________________________
>

_____________________________________
Reply by john...@yahoo.com March 9, 20102010-03-09
I am trying to serial bootload my program, with matlab.

Once I have my program in intel hex format do I just send those words as is?

The boot-loader source does not seem to take into account the hex format. Do I have to write a program to re-form this into the correct format?

what about the hex lines that aren't 32 bits long yet I have to send 32 bits over the serial port by default?(do I prepend zeros?) Do I send the check-sum?

The data-sheet says the output file structure should be:

1. Size of first data block (# 32 bit words)
2. Destination address (valid 24 bit address)
3. first word of first block
...
N. last word of first block
...
M. Size of last data block
M+1. Destination address (valid 24 bit address)
M+2. first word of first block
...
J. last word of last block
J+1 Zero word (end bootload)
Here is an example of the intel hex file (toggles XF0/1 IO pins):

:0200000400807A
:200000000F2B0000500B00140878002208780022087800220878002208780022087800226B
:20000800087800220878002208780022087800220878002208780022087800660878006640
:200010000878006608780066087800660878006608780066087800660878006608780066A0
:2000180008780066087800666080000250410B01504BC30018740002680000010080006048
:20002000FFFFFFFF087000800834001F080B0014087000800828002004E8FFFF6A05000C9D
:20002800084120016A250008084920010840200118610001139B0001DA002120080100008F
:200030006A26FFFA08492001084020011861000108700080086A00000F2A0000628000004D
:200038006280003A780000000F2B0000500B00140F2400000F2C0000082440006A0500061C
:20004000502C4022020C000450401C0170000000186400016A06FFFC0820400170060000CC
:200048000C8000006A00FFFF0F2B00005031400004F100206A270005500B001450400B02F2
:2000500053A840226A2000060C8000000C800000506000015061000115404000020100117F
:20005800506000001521400050510B01682000110C800000504BC300187400026A00FFFF3C
:084000000000000000000000B8
:0440220000804002D8
:00000001FF
why would there be a conversion utility to a format that the chip doesn't readily support? This does not make sense to me.

_____________________________________