According to the MCUXpresso IDE User Guide, to run an application from RAM one can check "Link application to RAM" in Project Properties > C/C++ Build > Settings > Tool Settings > MCU Linker > Managed Linker Script. Alternatively, one can edit the project memory map and remove all references to QSPI, but the first option is more elegant.
However, just this is not sufficient. In [project root]/MIMXRT685S/mcuxpresso/startup_mimxrt685s.c, the ResetISR function must be the defined with __attribute__ ((naked, section(".after_vectors.reset"))). The PSRAM example in SDK 2.9.0 was missing the "naked" keyword.
With this, I'll be able to develop and debug my application which uses the PSRAM, which will be good for a while, but I still will eventually need to know how to use PSRAM after booting from the QSPI. IS there any documentation or examples for this? Alternatively, is there documentation for copying the application from QSPI to RAM on boot and running from RAM? Thanks.