I recently bought the Olimex H64 and P64 AT91SAM7 development boards and have been writing some bootloader/debugger tools for them. I’ve done the bulk of my development on the P64 (mostly because the H64 lacks a pullup control PIO so I have to physically unplug/replug it to test usb code).
My bootloader is working great on the P64. On the H64 I’m seeing USB CRC errors on some (not all) IN packets (using a CATC USB Chief analyzer). The P64 never exhibits this problem. The H64 does not seem to have problems with USB using the SAM-BA loader (I’ve traced it and see no CRC errors there).
What is confusing me is the same exact code that works just great on the P64 is failing on the H64. The boards both use 18.432MHz crystals and the same AT91SAM7S64 part. My clock init code sets everything up exactly the same as the SAM-BA init code does. Yet, I see problems on the H64.
Any suggestions for debugging this further? I’d suspect a hardware problem since my code works fine on one board but not the other, however the SAM-BA code does work. Puzzling.
The schematics show little difference in the USB connection layout except for the controllable pullup on the P64. I do notice that the D+/D- usb lines run under the voltage regulator on the H64 but have a clear (if longer) path to the CPU on the P64 (though they do run past the crystal there).
-Q