08-20-2018, 04:26 PM
(08-19-2018, 12:54 AM)lucho Wrote: [ . . . ] How exactly does it work? Because of what? Can someone explain it in details? (I mean the internal mechanism due to which it works, not its usage, which has already been discussed.)
If you look at the schematics (rev 2, sht. 22B4), you'll see the jumper shorts the eMMC clock to ground. That severely restricts the ability of the eMMC card to respond - no clock, no data out. Whatever the RK3399 gets when it tries to read from the eMMC module, it will not be a good signature. Thus, it will be skipped and the next boot device in sequence (SD card, IIRC) is checked. [ If there is no jumper and the eMMC returns valid data for the signature, eMMC is used to boot.
Once the boot has started on the SD card, you can remove the jumper, enabling the clock to the eMMC connector. Then the eMMC module can respond to further requests.
For my part, I'm curious about some things:
- Given the scheme to look for a couple of signature bytes at the bottom memory locations, why do you need to disable the eMMC clock? As long as those first bytes aren't the signature, the eMMC should be skipped, right? And if nothing is installed, then you're going to get all ones or zeroes, depending on how (or if) the EMMC_D[7:0] lines are pulled.
[ this makes sense, but I wonder if real-world behavior deviates. it does that sometimes. ]
- Does the short on EMMC_CLKO overstress the output driver? I know there's a 22 ohm termination resistor. Is that sufficient current limit when the clock goes high?
- Does the notation "ON/OFF_KEY" on SW4 mean anything (other than perhaps this symbol was copied and only the reference designator updated)?