What sort of microcontrollers? Could it just be the interface is not yet mature?
Normally we'd have the firmware loaded from elsewhere on system boot at the cost of a few hundred miliseconds, but for the current project we need a much larger firmware and the bootup time is prohibitive. So we've ended up with a three-way partition of functionality. A "standard library" of mature functions in ROM, an application-specific set of medium maturity functions in OTP (one time programmable) which can be changed without needing an expensive metal layer respin, and finally the actual application in RAM.