Thursday, February 9, 2017

PIC32MM support - PICkit 2

Code Memory Size
Device
Row Size
(Words)
Page Size
(Words)
Boot Flash Size
PIC32MM
64
512
0x1FC00000-0x1FC016FF (5.75KB)
PIC32MX1/2
32
256
0x1FC00000-0x1FC00BFF (3KB)
PIC32MX3/4/6/7
128
1024
0x1FC00000-0x1FC02FFF (12KB)


int progMemP32 = (int)Pk2.DevFile.PartsList[Pk2.ActivePart].ProgramMem;
int bootMemP32 = (int)Pk2.DevFile.PartsList[Pk2.ActivePart].BootFlash;

ProgramMem = (0x10000+0x1700)/4 = 17856 (including boot flash)
BootFlash = 0x1700/4= 1472

PE Command
   remove 0x03: WORD_PROGRAM
   add 0x0E: DOUBLE_WORD_PGRM

Configuration Bits: Double Word

FSIGN (0x1FC0.17E0) 0x7FFF (must)


Code Execution from RAM: A000:0800  == not required ==
Set CFGCON.EXECADDR<7:0> to 0x02
CFGCON at 0xBF80.3B00

PICkitFunctions.searchDevice
=========================

Move PE Loader to 0xA000.0200, PE to 0xA000.0300

v
PIC32BlankCheck
v
PIC32Read
v
PIC32CRC
v
PIC32Verify
v
PIC32Erase


Change the ChipEraseScript
v
PIC32Write


if the JTAGEN is programmed, the MCHP TAP controller must be selected immediately after any PROGRAM command.  This can be done by using a SendCommand(MTAP_SW_MTAP) pseudo operation.  After 400 us, the EJTAG TAP controller can be selected again by calling the SendCommand(MTAP_SW_ETAP) pseudo operation.  -- ch 16.3

ImportHex - 90%, UserID (WIP)
ExportHex

Configuration Bits - DialogConfigEdit - OK(display)

=============================

PE Loader: (swap HI/LO word, 41A3, FF20, 41A5, DEAD, 6A30, 6930...)



ChipEraseScript:
 $JT2_SENDCMD 07        //<--- SendCMD(MTAP_CMD)
 $JT2_XFERDATA8_LIT FC  //<--- Xferdata(MCHP_ERASE)
 $JT2_XFERDATA8_LIT D0  //<--- Xferdata(MCHP_DE_ASSERT_RST)
 $DELAY_LONG 4A



===== Notes: JTAG =====

MTAP
  - MTAP_SW_MTAP[5h0x04]
  - MTAP_SW_ETAP[5h0x05]
  - MTAP_IDCODE[5h0x01]
  - MTAP_COMMAND[5h0x07]
    - MCHP_STATUS
    - MCHP_ASSERT_RST
    - MCHP_DE_ASSERT_RST
    - MCHP_ERASE

EJTAG
  - ETAP_ADDRESS[5h0x08]
  - ETAP_DATA[5h0x09]
  - ETAP_CONTROL[5h0x0A]
  - ETAP_EJTAGBOOT[5h0x0C]*
  - ETAP_FASTDATA[5h0x0E]*
  # XferFastData
      ETAP_FASTDATA
  # XferInstruction
      ETAP_CONTROL
      ETAP_DATA
      ETAP_CONTROL