oscarstephens
11-16-2011, 06:36 PM
I am new to Propeller and have a question which has probably been answered in the past, and is buried in the forum base.
I've read the docos and understand the basic compile-download process. I understand program storage in RAM vs EEPROM, and loading from EEPROM at bootup time. I've also read the section in the Propeller Help where it says ....
... On the Propeller, the objects are “created” at compile time and are never “created” or “destroyed” at run time because the act of doing so would fragment memory and cause indeterministic behavior in real-time embedded systems. ...
However, what I would like to do is to make firmware updates "in the field" by downloading compiled object code over the RS232 port (rather than having to attach a Prop Plug), to be read by the currently executing program, and to have that program then store the new object code in the high 32 Kbytes of a 64KB EEPROM.
My plan is to have a default program always in the low 32KB of EEPROM to always bootup. It would then interrogate the high EEPROM pages to see if a new program is stored there, and then load that for running. Alternatively, it would be nice to be able to boot out of the low 32KB of EEPROM, or out of the high 32KB, but I don't see how to do that.
I would actually have preferred it if I could just store new program objects for execution on a "single" COG only, but the paragraph mentioned above appears to rule that out.
If someone could point me in the right direction on implementing something like this, or to a pertinent forum thread, that would be most helpful. Thanks.
I've read the docos and understand the basic compile-download process. I understand program storage in RAM vs EEPROM, and loading from EEPROM at bootup time. I've also read the section in the Propeller Help where it says ....
... On the Propeller, the objects are “created” at compile time and are never “created” or “destroyed” at run time because the act of doing so would fragment memory and cause indeterministic behavior in real-time embedded systems. ...
However, what I would like to do is to make firmware updates "in the field" by downloading compiled object code over the RS232 port (rather than having to attach a Prop Plug), to be read by the currently executing program, and to have that program then store the new object code in the high 32 Kbytes of a 64KB EEPROM.
My plan is to have a default program always in the low 32KB of EEPROM to always bootup. It would then interrogate the high EEPROM pages to see if a new program is stored there, and then load that for running. Alternatively, it would be nice to be able to boot out of the low 32KB of EEPROM, or out of the high 32KB, but I don't see how to do that.
I would actually have preferred it if I could just store new program objects for execution on a "single" COG only, but the paragraph mentioned above appears to rule that out.
If someone could point me in the right direction on implementing something like this, or to a pertinent forum thread, that would be most helpful. Thanks.