My understanding is that there is no sample host code available to exercise the USB RBL. I wrote my own using WinUSB and I am observing the following:
1. The USB RBL enumerates just fine. VID 0x451 matches spec. PID is reported as 0x9815 vs. 0x55AA per spec.
2. I am able to issue requests over control pipe to read device descriptor on demand.
3. When writing UBL descriptor to the OUT pipe, the operation succeeds, but the RBL does not appear to jump to the UBL code no matter what. (I am still able to read device descriptor on demand which implies the RBL code still running). Instead what apppears to be happpening is that the content being sent to the OUT pipe is being stored in the internal RAM until it just overrides the RBL stack, and then RBL stops responding. If the UBL load address is specified at 0, it takes about 32K of data written to the OUT pipe to make the RBL stop responding. Changing the UBL load address to 8192 or 16384, reduces the amount of data proportionally, which sort of proves the theory. The exact value of Magic Number (0xA1ACED00) has absolutely no impact on this behaviour. The value of UBL data size does not matter either, unless set to 0, in which case the RBL stops responding right after the first OUT packet. Any other value of UBL data size, including playing with byte order, does not appear to impact anything.
Unfortunately I don't have either a USB traffic capturer or a JTAG to prove it further.
It does feel like the RBL is for some reason not recognizing the Magic number + UBL size combination, but I don't have any clue as to why that could be.
Any advise will be highly appreciated.
Thanks,
Eugene