I have been suffering from problems while loading an EVM6678L using Ethernet. I posted about this over TWO YEARS ago, but that received no response. I have now tracked the problem down a bit further, so I hope someone from TI can comment.
I am sending three Ethernet packets to the C6678 bootloader. There are many more that should be sent, but I stop the PC program from sending any more after the first three. I then look at what the bootloader has done using Code Composer.
I can see the three packets in the bootloader's memory and have (tediously) checked that they a) are what I thought I was sending, and b) exactly match what Wireshark reports being sent out.
The first two packets correctly load the memory from 10800000 to 108007BB. No other addresses are involved in these packets.
For completeness, here is the control information from those packets (the data values have been omitted):
Packet 0: 1024 bytes
Entry point = 10800000
size = 00000404 bytes, address = 10800000
<data from 10800000 to 1080003EF>
Packet 1: 00000100 @ 108003F0
<data from 108003F0 to 1080403>
size = 0000001C bytes, address = 10800404
<data from 10800404 to 1080041F>
size = 00000008 bytes, address = 10800420
<data from 10800420 to 10800427>
size = 00000018 bytes, address = 10800428
<data from 10800428 to 1080043F>
size = 00000128 bytes, address = 10800440
<data from 10800440 to 10800567>
size = 00000018 bytes, address = 10800568
<data from 10800568 to 1080057F>
size = 00000368, bytes, address = 10800580
<data from 10800580 to 108007BB>
The third packet contains the following data (it starts in the middle of a payload block):
Packet 2: 00000100 words of data
108007BC: 0D29A365 0D29A3E7 077C03A3 0FFC1FDA 0E29C365 0E29C3E6 0F29E365 0F29E3E7
108007DC: 0DFC03A2 009013A3 00A8E046 00ACC244 00A90066 022C8264 021048F0 521049C0
108007FC: 8FFFE011 009013A2 96286067 90AC62E4 90AC02F7 922CC264 92118BB0 96298264
1080081C: 90ACE255 823397A0 55AC22F7 522C8275 033003A2 00A82265 00A822E7 021021E0
1080083C: 02288265 062982E7 001800E2 0528A365 0528A3E6 022D2274 0528E074 00002000
1080085C: 00000000 0001E000 00000012 00008000 00000000 00000000 00000000 00000000
1080087C: 00000000 0100A35A 60000092 001002E6 009042E6 60000212 00002000 2FFF8C12
1080089C: 300C0362 30842942 309042F6 00004000 00000000 00000000 00000000 00000000
108008BC: 00000000 0100A35A 60000092 001042E6 60000192 00004000 3FFF8812 200C0362
108008DC: 208029C2 209042F6 00004000
size = 00000018 bytes, address = 108008E8
108008E8: 00000000 00000000 00000000 00000000 00000000 00000000
size = 00000CE0 bytes, address = 10800900
10800900: 0010A266 03104265 0104A35A 020403E2 0093C9F2 008403A2 00908266 0080A359
10800920: 021068F2 00186265 041818F2 00982274 018015A0 010479B0 B00C0362 B09003A2
10800940: A110C256 A110E256 A1002266 A198A276 00980274 03002274 008408B3 04005452
10800960: 00908277 030802F4 009003A3 059A6274 052142F7 052006A2 051A4275 059006A1
10800980: 0FFFAC12 05A962F7 051808F0 061A8275 062982F6 069AA275 06A9A2F7 061006A3
108009A0: 05001050 071AC275 0729C2F7 023397A0 079AE275 07A9E2F7 009013A2 00000000
108009C0: 00906264 013C54F6 02102277 020403E2 0013C9F2 008003A2 00842266 00BC22F7
108009E0: 0100A35A 01100277 010C582A 0100406A 008882E4 008842E6 02044264 02042274
10800A00: 0008A2E6 020402F4 020502C4 008488B0 00BC22E6 0188C2C6 00101BFB 000C0362
10800A20: 013C52E6 009003A2 008882F4 020C98B0 2208C2D4 00000000 00000000 00000000
10800A40: 0000A35A 20000093 010C0264 01C003E2 00004000 20000293 5100A358 B20C4266
10800A60: A0080266 B0001362 00002000 B2048842 B20C4276 A00C0277 AFFFEC12 318C2274
10800A80: 020808F0 0200A35A 008429C2 010018F0 00000000 00000000 00000000 00000000
10800AA0: 0080A358 80000093 00100266 00006000 80000213 20002942 008059F0 300C0363
10800AC0: 8FFFFC11 020008F3 8000A35A 2FFFE012 00FCA358 00900274 021399F0 00000000
10800AE0: 0200A35A 00005493 00000000 0084A358 0090E254 0185802A 0180406A 00000000
10800B00: 0FFF5D93 058C5828 05804068 00FCA359 0104A35A 000403E2 000068F2 008003A2
10800B20: 018DD028 018040E8 05BC54F4 000C1362 053C22F4 058C1FD8 01874162 020DE02A
10800B40: 020040EA 00100362 01838162 018C9429 028BDE2A 01804069 8DD00A13 E8002000
10800B60: 0280406A 031391C1 020C5829 04140264 1FFFF093 56C6006D 020C0267 E4400C0C
10800B80: 02004069 0400A35A 01EF7587 053C22E4 6C6E65F7 020403E2 0293CF5A E2800020
10800BA0: 009403A2 924681EF
Looking at memory, I see that everything has been loaded correctly except the bold section. I suspect that more parts of the load are corrupted, but one bit wrong is more than enough.
If I try loading the exact same data over and over again, resetting or power-cycling the C6678 each time, I get the same results. In particular, the wrong data loaded from 10800980 to 10800A3F are always identical but do not appear anywhere in the data being sent over the Ethernet.
Eventually, after a random number of attempts, the code is loaded correctly (and executes correctly) and continues to load and execute correctly for several further attempts before the erroneous behaviour always returns.
I can see nothing wrong or unusual with the data I am sending (and the other cores are not active), so it looks like the random behaviour is coming from the bootloader.
Would someone from TI like to comment?