Re: UMDK manufacturing, part 2: Software
Posted: Mon Dec 28, 2015 10:31 pm
I may have located the problem. I spent a fair bit of time inspecting the fine solder joints to the leads of the IC's, but what I obviously didn't remember to inspect was the bigger simpler joints to the SMD caps. I've spotted some very suspect looking solder work on C3 and C19, which could be the problem here. Once I can unearth my soldering iron, I'll fix them up and see if that makes the difference.
I tried out the speed grade 3 chsum.xsvf file you sent through, on Windows this time since my USB linux install self-destructed last night, no change in results. I'll try again once I've fixed the identified soldering issues though.
On another note, thanks for that debug build of gordon, I've analysed the crash. The issues center around flash_chips.cpp, in the findChip function. Basically, what's happening on my device right now is that the vendorID and deviceID are being calculated as 0. This is causing the flashChips array to iterate to the end, then get an apparent match on the null entry which is meant to terminate the list. This then causes the if statement at line 332 to pass, and attempt to call the selectorFunc on the target chip, which is null, hence we get a read attempt from address 0 and the program goes boom. I've also spotted some entries in the flashChips array which have NULL for their selector functions, which would cause the same problem if they were ever detected. Were these supposed to be nullSelector? At any rate, the if statement at line 332 should be changed from this:
to this:
which will prevent the terminating entry from being inspected any further, and cause it to pass through to the else clause in all cases.
I tried out the speed grade 3 chsum.xsvf file you sent through, on Windows this time since my USB linux install self-destructed last night, no change in results. I'll try again once I've fixed the identified soldering issues though.
On another note, thanks for that debug build of gordon, I've analysed the crash. The issues center around flash_chips.cpp, in the findChip function. Basically, what's happening on my device right now is that the vendorID and deviceID are being calculated as 0. This is causing the flashChips array to iterate to the end, then get an apparent match on the null entry which is meant to terminate the list. This then causes the if statement at line 332 to pass, and attempt to call the selectorFunc on the target chip, which is null, hence we get a read attempt from address 0 and the program goes boom. I've also spotted some entries in the flashChips array which have NULL for their selector functions, which would cause the same problem if they were ever detected. Were these supposed to be nullSelector? At any rate, the if statement at line 332 should be changed from this:
Code: Select all
if ( thisChip->vendorID == vendorID && thisChip->deviceID == deviceID )
Code: Select all
if ( thisChip->deviceName && thisChip->vendorID == vendorID && thisChip->deviceID == deviceID )