Re: Reprogramming dsPIC33EP521GM710 with data read from RN4020 interface
Again, that is part of your design.
You could set aside a section of code at (say) the very top of memory and not over-write that. You can just to that part of the code when you are ready to start transferring the data from the EEPROM to the FLASH memory (where you validate the new code is up to you). That way you can make sure the code does not over-write itself. When you are done, you can do a 'reset' which will then start the new code running.
I'm not sure what you mean by a 'goto' to get to the new code. There is always an effective 'goto' at program location 0 which is how resets are make to work. All traps and interrupt that have a vector location hold an address of the routine to be executed when the trap/interrupt is triggered. If you have not supplied such a function, then the address is set to '0' which is the 'reset' vector.
In this program location, you are supposed to have written an 'GOTO <start address>' instruction if you use assembler, or the C compilers will do this for you. This is the way you code always starts at power on, after a reset or when you don't write a function for a triggered trap/interrupt.
Of course, if you write your own bootloader and set up your own rules (i.e.load the program into some other part of memory using a customised linker script) then you need to follow your own rules.