I have the device firmware built on Tracker Edge Firware version 17
I have an External EEPROM used to store the Non-Volatile data from. for this i am using the SPIFlashRK library. I had to change the manufacturer ID for the EEPROM in SPIFlashRK.
inside this class
class SpiFlash : public SpiFlashBase
}
/**
* @brief The expected manufacturerId, used by isValid(). This is overridden by flash-chip-specific subclasses.
*/
||uint8_t manufacturerId = 0x20;|
{
0x20 is the ID of my EEPROM
and when i FLASH locally vis USB i am able to read this ID and do the read write operations and everything works fine.
but when i do the Cloud FLASH from the command pallete of the work bench Flash is scuccess but I am not getting the read ID as 0x20 and it says EEPROM not found in the Log as i have written.
I am not sure, what is wrong, is it possible that when i do Cloud Flash the Cloud is compiling this against original SPiFlash RK library or the one one in my project with my manufacturer ID modified if it is also compiling ?
also is there any other way to Flash only the binary via cloud from command Pallette or the CLI ?
It's not clear why this is happening. I'd guess it's probably timing related, but I can't think of why it should matter. Instead of trying the flash once during setup() I'd change it to try a few times during loop or until it succeeds, and see if that makes a difference.
You can OTA flash using the Particle CLI from a terminal window, but that's essentially what the command palette does, so it probably will not make a difference in this case.
Apparently the Cloud compile is taking the dependencies as precedence and not considering my locally installed library changes, I commented the dependencies and then i do cloud compile and Flash every thing works fine Now. The Device is able to find the EEPROM and do work as expected.