Can internal software change any portion of the ADuC706x Flash/EE memory while executing code from within the chip?
Yes and No - this is related to what you mean.
So code in SRAM will run w/o any constrains - of course you can't access Flash while the erase/programming operation is active.
So code in Flash can start a erase/programming operation as well, but suspended during the µs's the operation need to finish. Also execution from SRAM is suspended during this time if the code tries to access any Flash location.
So a real-time interrupt-handling is also suspended or delayed if the vector-table and the interrupt-handler, or better to say in a ARM7-TDMI context, exception-handler i.e. for IRQ or FIQ is not completely executing from SRAM.
Basically yes, or better to say this is the only way to erase/program the Flash by access to the FLASH/EE control interface.
Also the programming via JTAG or UART does only work this way.
The programming function is always loaded to SRAM from the Development-Tools via JTAG and than the code which need to be programmed. Than this function is executed und the SRAM is, of course previously saved, restored.
But keep in mind the core is stopped if code is executed from Flash during a erase or programming operation.
So one can execute code from SRAM while erasing/programming any user block of Flash/EE ?
But one cannot execute code from Flash/EE while erasing/programming a user block of Flash/EE ?
Also have a look into On the ADuC7060 - How do I write data to the flash?
and ADuC7128/7129 Code execution / Flash programming
Retrieving data ...