1) Redundant read of same memory location. Just to be sure that there is no error in communication. Same at writing, write 32 bytes, then read them, and compare. Just to on safe side.
2) Scroll little bit down
Code:
'Optional Erase I2C EEPROM
FOR Adr=0 TO 79999 STEP 128
MAdr=Adr.WORD0
MCtrl=$A0 + ((Adr.BYTE2 & %00000011)<<1)
BootI2CW:
I2CWRITE Mem_Sda,Mem_Scl,MCtrl,MAdr,[STR EraseStr\128],BootI2CW
PAUSE 5
Just easy way to dump 128 zeros in memory.
3) Not sure what you are asking, but that is code for bootloader in main app. That code will sit there forever. And execute when jump to label.
Output of first 32 line from random project in MPLAB X program windows(right click output to file)
Code:
Line Address Opcode Label DisAssy
1 00000 EF30 GOTO 0x260
2 00002 F001 NOP
3 00004 FFFF NOP
4 00006 FFFF NOP
5 00008 0012 RETURN 0
6 0000A FFFF NOP
7 0000C FFFF NOP
8 0000E FFFF NOP
9 00010 FFFF NOP
10 00012 FFFF NOP
11 00014 FFFF NOP
12 00016 FFFF NOP
13 00018 0012 RETURN 0
14 0001A 010F HSEROUT MOVLB 0xF
15 0001C 0004 hseroutloop CLRWDT
16 0001E A89E BTFSS PIR1, 4, ACCESS
17 00020 D7FD BRA hseroutloop
Similar thing you will get when compile bootloader, but at different start address. And you need to copy opcode column to to your main program and address must lineup.
I'm not sure that I answered your question.
Bookmarks