I have been trying to understand the factors in controller / SoC design such that it can execute code from either XIP flash or from a RAM. There are controllers that support an XIP flash of around 5MB and there are SoCs where there is no XIP at all, there is only external memory present. The code is executed from the external DRAM in these cases (which I can relate to how PC works).
Some conclusions observed so far include:
- Using a XiP is no longer efficient after a certain size/speed, considering both the cost and the actual operation.
- The manufacturing process affects the design too?
- Some hybrid solutions are also present, where the instruction bus can fetch from a XIP or an External DRAM
In summary the question would be where is the line drawn between the two solutions : execution in RAM and execution in place from flash (XIP).