Durante el desarrollo, no es necesario que dispongas de ningún flash para ejecutar tu código desde una RAM externa. El depurador cargará el código allí y ejecutará la CPU desde esa ubicación. Solo necesita lidiar con flash cuando quiere que su código sobreviva a un apagado.
Si necesita flash, debe tener en cuenta que algunos controladores flash admiten la ejecución directa de código, mientras que otros no. Con la primera clase, puede renunciar al cargador de arranque (llamado copiadora de arranque en la documentación) y ejecutar el código directamente desde flash, lo que le ahorra RAM, pero a menudo es significativamente más lento. Con la segunda clase, no tiene más remedio que usar la copiadora de arranque y ejecutar su código desde la RAM.
Un ejemplo típico de la segunda clase es el controlador Legacy EPCS. Asigna una pequeña ROM que contiene la copiadora de arranque al espacio de direcciones, por lo que el vector de reinicio de la CPU debe apuntar hacia ella para que su código entre en la RAM al reiniciar. En particular, este controlador está diseñado de manera que le permite mantener tanto la configuración FPGA como su código en el mismo dispositivo flash. Como resultado, el procedimiento para actualizar su código es algo complicado.
Un ejemplo de la primera clase es el nuevo controlador EPCQ. A diferencia de EPCS, asigna todo el contenido de flash al espacio de memoria, que se requiere para la ejecución en el lugar. Aún puede optar por colocar una copiadora de arranque en ella y ejecutar su código desde la RAM para lograr una velocidad de ejecución más rápida. La Guía de usuario de IP de periféricos integrados le explica cómo elegir entre las dos opciones:
Las herramientas Nios II SBT saben si agregar una copiadora de arranque en función de la ubicación de la sección del vinculador de texto. Si la sección del enlazador de texto está ubicada en una memoria diferente a la del punto de reinicio del vector, indica que se requiere una copia del código. En este escenario se requiere una copiadora de arranque. Puede usar la lógica existente para generar un archivo de programación con o sin una copiadora de arranque según el escenario.
En caso de que no lo sepa, las secciones del enlazador se configuran en el cuadro de diálogo de configuración del paquete de soporte de placa.