TravisSmith
Member
Hi all-
I have a project with two FW options and would prefer to be able to execute either one at startup, probably based on an "EEPROM" (upper flash) byte setting. They will both fit in the flash together, no problem there. In fact, I'm doing that now and have code to copy the alt flash into the main location so it will be booted instead of the main FW. That works, but is of course fairly slow and does a lot of flash writing. I'd much rather be able to go directly into either at startup and not juggle flash contents. Is there any way to do this? Guessing one would need to be compiled for a different address, and possibly a 3rd image to make the decision at boot.
I realize this is unorthodox, but I do think it's the best solution in my case. The project (known as TeensyROM) is a ROM emulator. Through exhaustive testing, I know that RAM (1 and 2) are the only sources with fast enough latency to serve up ROM emulation data. Direct from flash or external (serial) RAM/Flash are not fast enough to serve the host bus. Therefore, RAM availability is critical. The main FW has support for Ethernet, USB Hosting, MIDI, etc. The mere inclusion of these libs takes up valuable RAM space (both code and variables). So, when I need to emulate a particularly large ROM, I load a stripped down version of FW to clear out as much RAM as I can muster and drop all those other features. I don't see a way to do this within a single image as there's no way to "unload" an included lib.
I know this won't be easy, but appreciate any thoughts on how to make this happen.
Thank you,
Travis
I have a project with two FW options and would prefer to be able to execute either one at startup, probably based on an "EEPROM" (upper flash) byte setting. They will both fit in the flash together, no problem there. In fact, I'm doing that now and have code to copy the alt flash into the main location so it will be booted instead of the main FW. That works, but is of course fairly slow and does a lot of flash writing. I'd much rather be able to go directly into either at startup and not juggle flash contents. Is there any way to do this? Guessing one would need to be compiled for a different address, and possibly a 3rd image to make the decision at boot.
I realize this is unorthodox, but I do think it's the best solution in my case. The project (known as TeensyROM) is a ROM emulator. Through exhaustive testing, I know that RAM (1 and 2) are the only sources with fast enough latency to serve up ROM emulation data. Direct from flash or external (serial) RAM/Flash are not fast enough to serve the host bus. Therefore, RAM availability is critical. The main FW has support for Ethernet, USB Hosting, MIDI, etc. The mere inclusion of these libs takes up valuable RAM space (both code and variables). So, when I need to emulate a particularly large ROM, I load a stripped down version of FW to clear out as much RAM as I can muster and drop all those other features. I don't see a way to do this within a single image as there's no way to "unload" an included lib.
I know this won't be easy, but appreciate any thoughts on how to make this happen.
Thank you,
Travis