This is commonly called "boot holding". So yes it is common to hold the processor in reset while you update the software image. Another method is to make a small rom that you jump to while the main memory is being updated by some other host before jumping to the new application. I made one a long time ago that took a bit in from outside the system which would force the processor to jump to it and it only contained one instruction "PC <- PC + 4 - 4" (i.e. keep executing the same instruction). If you update the contents of the memory after the processor has been running you may need to invalidate the cache since old values may be cached still. Cache invalidation is part of the Nios II boot code so if you jump directly to the new main() then you'll be skipping all the initialization code and bad things will happen as a result.