Entiendo perfectamente que habría sido más fácil programar la BIOS reescribriendo en el espacio ROM y con el stub, puesto que como está ahora mismo cuando BOOTM está a 1 el espacio ROM está desaprovechado sólo con el bootloader y hay que ubicar código en memoria alta si queremos acceder más allá de la página 7. Pero ya está así, mis conocimientos Verilog no daban para hacer ese cambio en su momento. Como la BIOS es lo único que accede a la paginación especial, lo importante es que funcione bien, independientemente de que haya costado un poco más programarlo.
La única ventaja de tenerlo así es que no necesitas BRAM para implementar esos 16K escribibles por lo que queda libre para otras cosas. En realidad da igual que el bootloader ocupe 56 bytes, ocupando menos de 2K utiliza sólo un bloque BRAM, dejando 7 bloques BRAM extra con respecto a la solución reescribible.
-- Actualizado 21 Abr 2014, 04:41 --
mcleod_ideafix escribió:Ok, pues entonces hacemos esto: el código puede cambiar los valores de los bits 0 a 6 de MasterConf siempre y cuando el valor del bit 7 que se ponga en dicho registro sea 0. Cuando se ponga a 1, se "congela" el valor que tenga MasterConf hasta que de nuevo haya un reset maestro. ¿Te vale? Ese bit además congela el acceso a los puertos SPI Flash de forma que no pueden usarse hasta que no haya de nuevo un reset maestro.
Perfecto. En realidad no me importa que se pueda leer del SPI Flash, lo que no quiero es que nadie pueda escribir en ella fuera de la BIOS. Otra cosa que no hago desde la BIOS es leer del puerto Master_conf así que si ganas algunos recursos quitando el puerto de lectura, pues mejor.