I would like some clarifications regarding the bootloader and bootload process.
First, we're developing a D2000 based circuit board to be used in an internal project at Intel. The design implements a JTAG connection that matches that found on the D2000 evaluation board.
1. I'm assuming that when we purchase D2000 parts from a distributor the bootloader will not be pre-programmed into the IC. I'm also assuming that in Intel System Studio for Microcontrollers the Project>Update Microcontroller ROM is the process by which the bootloader is programmed into the D2000. Can somebody verify these assumptions?
2. In these forums I've seen that in the event that the JTAG functionality is disabled in firmware, grounding GPIO13 can "unbrick" it (D2000 GPIO13 UART_A_RXD, Arduino pinout DIO_0). In section 3.2.1 of the Software Interface Bootloader User Guide it states the GPIO13 and GPIO2 "do not ground" (Table 6 under Notes). I assume this means on reset. This seems to indicate that the firmware management mode is active on the D2000.
Section 4 through 6 of the bootloader user guide discusses the firmware management mode and using a DFU utility to program the D2000. The document states...
"The FM GPIO pin is the pin used to put the device into FM mode. To enter FM mode, the
device must be reset manually by pressing the reset button while the FM GPIO pin is
grounded. To exit FM mode, unground the FM GPIO pin and press the reset button. The
device cannot exit FM mode while the FM GPIO pin is grounded.
Intel advises you not to use the FM GPIO pin in a FM-enabled ROM. Otherwise, the
board is likely to reboot and enter FM mode unexpectedly."
The way I read the document is that the D2000 may use the JTAG interface to program in the bootloader. But, if during development, you disable JTAG in firmware you need to use the DFU interface to re-enable the JTAG. Is that the case? This would also seem to restrict the FM pin (D2000 GPIO2, Arduino pinout D5) to being an input that must be high on power-up or reset. There's no mention of grounding GPIO2 in the forums to re-enable JTAG (only GPIO13).
It would be great if I could get some explicit advice on the uses of these different bootloader/interface options, and the best way to initially program in the bootloader.