There was discussions prior to the release of the initial Photon regarding application/user available Flash and RAM. But this was only a wild guess since the firmware was still in development. But with production releases, can engineering report how much user available Flash memory is available for applications code and how much RAM space is available.
Regarding RAM space, can I assume that the stack will be at the high end of available RAM space and working its way down toward the applications variable data? We’re porting an Arduino application in which we have a background stack monitor that operates to let us know how deep the stack might get so we can determine how much RAM we can really use in the application. Is the stack pointer variable and top of RAM location available to the application so we can determine what is available? In one of our applications we use the area above the top of allocated RAM and the bottom most location of the stack as heap space to allocate to the application.
Also, in the Arduino, in order to conserve RAM space you had the option of specifying that constants, such as strings, would be stored along with the code in Flash memory instead of taking up RAM space. Is this implemented in the Photon? A statement such as
const char dbg_message1 PROGMEM = “\nYou are at step 1 of your application\n”;
would not take up RAM space with the text of the message. It would be stored in Flash instead.