Hello Erich!
Thank you for your reply. Let me first say, that your blog is one of my go-to resources and I enjoy reading it, even when I don't try out everything that you share... Consequently, I first tried to fix it using your suggestion for bootloader recovery, the download of the original bootloader from the OpenSDAv2 page here on Freescale/NXP, and the flashing through Eclipse after J-Flash Lite could not circumvent the bootloader region lock.
No luck. Turns out, the bootloader is just fine and the fault is with Windows 10. My problem seems to be the dreaded USB connect/disconnect issue, that Microsoft cannot seem to get right.
I had not worked with my FRDM-K64F since I upgraded to Windows 10, and yesterday was the first time I did it. What I noticed immediately was that the MBED usb drive detached and re-attached itself very frequently without any user activity - that's the reason why I assumed that the firmware in the MK20DX was corrupt. Sometimes it would refuse to save a bin file at all, sometimes the copy process would finish without errors but nothing would happen on power-cycling the devboard. So up I went and erased the chip, trying to re-flash the bootloader and the K64F interface.
In the end I downloaded MDK5, installed the v4 legacy support, recompiled the bootloader from Git, and re-flashed everything directly from the Keil IDE. The result was the same as at the very beginning of the ordeal. I also tried SEGGER's own OpenSDAv2 firmware, with the same result. So I used my wife's laptop running Windows 7, and everything worked just fine - the USB drive emulation, dropping a bin file and programming, executing the app from the K64F flash on power cycle. Interestingly, I then reattached the already programmed board back to the Windows 10 host and it failed to execute. I suspect that since the bootloader and the OpenSDAv2 firmware do not work well with Windows 10, all this connect/disconnect activity is making the MK20DX128 to keep the main CPU in reset state. Some threads on the mbed Developer site point to a possible race condition in the Windows USB init routines, which is sending spurious USB bus reset signal to the dev-board.