Bootup serial protocol
HollyMinkowski
Posts: 1,398
Is there any documentation that describes precisely the protocol the Propeller
uses when it first powers on and attempts to communicate using pins 30,31 ?
It would be nice to make a portable device that you could hook to those pins and program the eeprom
connected to a propeller. I'm thinking of being able to easily reprogram devices in the field.
uses when it first powers on and attempts to communicate using pins 30,31 ?
It would be nice to make a portable device that you could hook to those pins and program the eeprom
connected to a propeller. I'm thinking of being able to easily reprogram devices in the field.
Comments
so if you use a serial eeprom, it is just a matter of having a pluggable device with the eeprom.
I've attached a copy of bootsequence.spin which has a bit of documentation on the process.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Eccles : How do I open the door?
Bluebottle : You turn the knob on your side
Eccles : I haven't got a knob on my side!
Yes, of course you are right
I'm still living with the mindset of controllers that have flash/eeprom on board.
It is simpler to just program the eeprom directly..doh.
I could just use an AVR butterfly to do the programming..it has a nice lcd and
lots of eeprom storage.
The project does have an SD card for storing data. You are right, the updates could just be added to it.
Now why didn't I think of that..it seems so obvious
A method that uses the eeprom connection or the usual prop boot connection gives you better recovery options.
Of course, you might find it useful to have both an easy-to-use SD method and a serial de-bricking method. Depends on your application.
Tricky part of that is how to figure out where the updater starts and where it ends.
Another solution:
Have a second EEPROM which contains the updater. If you press a button during boot, it loads the updater, otherwise the program.
"Have a second EEPROM which contains the updater. If you press a button during boot, it loads the updater, otherwise the program."
Hey, that's a really good idea...thanks
Hardware solution:
·
If you press the pushbutton short it's a reset only, but still loading from EEPROM1
If you press the pushbutton until the prop went over the "Load from PC" waittime, it's loading from EEPROM2
Drawback: the pushbutton can't be used for other things during runtime.
Software solution:
EEPROM adresses are fixed.
You first load the Updater-code. The updater checks the pushbutton and if pressed starts EEPROM programming.
Otherwise it loads the whole RAM with the code from EEPROM2 (like the FEMTO SD card driver) and restarts from beginning.
The pushbutton can be used for other functions during runtime.
Drawback: the EEPROM2 is not reachable through PC load to EEPROM-function.
In that case, you can just have a bootloader in the EEPROM, which starts an application-binary from SD card.
For an update you can always overwrite this binray with the newest version (i.e. with a cardreader on the PC).
Andy
I'd go with Mike's suggestion of the Ybox2 - it's pretty useful, and there's a fair amount of discussion on it scattered throughoutt the forum. " FILE " makes it so much simplier to manage.
Plus, it can be packaged in a client-friendly, mouth-watering, container: http://www.deepdarc.com/ybox2/
- Howard
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Got Electrons?
Yep, and if you have no SD card inserted your system won't even boot properly. That's why I recently moved all my drivers to upper EEPROM. So, it depends on the application. If the SD card is mandatory anyway then you can keep the image on the SD cars.
But it also adds boot-time, as you have to boot twice. First the propeller boots the whole 32k from EEPROM which only contains a <2k bootloader and then you load up to 32k again from SD to run the real program.