booti2c query

stocky6409

Senior Member
Hi all - contemplating purchase of some X2 parts and have a query on the booti2c command.

My project involves use of the i2c bus already - can i use the booti2c command in conjunction with normal i2c operation?

IE - a suitable eeprom in a user removable "plug" that can be shipped for FW upgrading?

Of course suitable safeguards in place that only allow removal/insertion of "plug" on a powered down system would be required!

Project involves devices in remote locations with uses with little technical knowledge - they can probably cope with a plugging/unplugging a D9 connector for example.

Just thinking out loud.........

Stocky
 

hippy

Ex-Staff (retired)
That should work in theory, once BOOTI2C has done its thing the I2C bus should be usable as normal. Any additional Eeprom on the bus would need to be at a different device address and it may require some fiddling around to determine if the Eeprom booting from is in place or not before issuing the command, though a separate 'upgrade plug inserted' signal may cater for that.

It would be possible to create a hot-swappable interface so it didn't matter if the plug were inserted when running, only enable the interface if present at power-up / reset, boot then insist the plug is removed before issuing a RESET.

I don't have all the answers, and it will require some experimenting with different scenarios to see what does happen. I believe it should be possible to do what you want.
 

tiscando

Senior Member
The booti2c is interesting.

Could the booti2c command execute when the version no. on the inside slot is different to the version in the eeprom? in case when you get to version 254 or you want to revert to a previous version.
 

tiscando

Senior Member
I'll take this as a no.

The answer might have been: "the booti2c only executes when the program version number in the EEPROM is higher than the version currently in the picaxe, not the same or lower."
 
Last edited:

hippy

Ex-Staff (retired)
The manual says, "The booti2c command is only processed if the program revision number (set by the #revision directive during download) in the 24LC128 memory slot is greater than the revision number currently in the internal program slot".

When the revision number has reached 255, to allow further revisions to be BootI2c-loaded, download the program with "#Revision 0" to the internal slot, and start again with "#Revision 1" in the external slot.
 
Top