When your flash target is mmcblk0p1 extlinux (and “/boot” files) are read from eMMC. When the flash target is mmcblk1p1, then extlinux (and “/boot” files) are read from SD card. U-Boot binary and some of its environment are stored in hidden partitions of eMMC regardless of root partition location.
To see partitions try this:
sudo gdisk -l /dev/mmcblk0
There is a possibility of cloning or writing individual partitions. The main caveat is that your partition data must fit in the size of the current partition size if writing…I don’t think there is any guarantee the same size partition will be valid across releases. Second, not all U-Boot or hidden partition content will be compatible across releases. So clone and restore within a single release version (such as R28.1) should be fine, but mixing releases (such as R27.1, R24.2.1, and R28.1) will not necessarily work.
On a prior release for the TK1 there was an alias for the entire eMMC, “all”. It would be nice if newer releases were to add this ability back in (subtle feature request hint! :). However, each individual image concatenated in the correct order is the same as “all”. When cloning on a TK1 with “all” you can use dd at the right offsets and get a subset of the image which corresponds exactly to cloning just that one partition…you can go back and forth between concatenating individual partitions or taking subsets of multiple partitions and be guaranteed of exactly the same results.
If you want to put all hidden partitions on SD card I don’t believe this is possible. You could of course put those partitions on SD card, and while booted to SD card, use those partition for dd replication onto eMMC…those partitions though would not be active until you reboot since the SD card hidden partitions would basically be just data and not participate in the boot process.
Testing a root partition (APP partition) from SD card is easy, just change the extlinux.conf on eMMC after flash to mmcblk0p1 to “root=/dev/mmcblk1p1”, or if using SD card boot partition, then changing to this on the SD card version of extlinux.conf (the extlinux.conf on SD card could be named during flash, yet have it point at eMMC instead of itself…the corollary of being on eMMC and pointing at SD card is interchangeable).
Additional note: U-Boot environment variables can be set for a search order. One can say search first for extlinux.conf on eMMC, then other devices; or you could alter the variables to search first on SD card, and if not there, only then boot to eMMC version. Much of the boot behavior is customizable from the serial console U-Boot shell.