-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement OTA Firmware upgrade using CC3000 #3
Comments
Before implementing the OTA/WLAN based DFU, we have the following things in place: Note: Here is the next plan and TODO items: When the marvin application is running, it will wait for command/message from the API server for new Firmware availability. As soon as the "Upgrade_Firmware" message is received, the core will reset itself into DFU mode. Now there are few ways how we can proceed with OTA firmware upgrade in DFU codebase: 1)Implement a basic TFTP server on core. Use a TFTP client on PC/Server side to initiate the firmware file transfer for writing on to the Internal Flash memory. This should be very easy to implement. Zac, If you wish to take #3 approach, I need your help in getting the server side code implemented. |
Good suggestions for OTA firmware update. I think the biggest concern is that whatever solution we choose in the DFU codebase must be relatively foolproof, since it will be difficult to update or change once the Cores are in peoples' hands. Which of the three do you think would be least likely to requires changes or updates further down the road? Zach Supalla On Thursday, May 23, 2013 at 11:42 AM, Satish Nair wrote:
|
We should use approach 3, sending the data with appropriate checksums over the existing socket. Understood: I and/or someone else we hire will work with you to write the server-side code. @satishgn Some things to keep in mind:
|
Sure, will try to get my hands on that eBook. On Fri, May 24, 2013 at 2:27 AM, Zachary Crockett
|
I have a suggestion on the partition of our Internal Flash structure. My suggestion is since our USB-DFU is relatively foolproof and reliable, we can keep it separate from OTA-DFU. While shipping out core, we can flash the USB-DFU code and use it to flash 3 and 4 using dfu-util tool. Let me know your viewpoints on the above. |
I am not seeing the big picture. To run ota-dfu is it required for the Don't forget that you will want 2 copies of anything downloadable (perhaps We must avoid the situation where a failed download results in losing a
|
All the executable code(usb-dfu, ota-dfu & marvin) will be organized in Internal flash. With a fresh core in hand, Flags in Backup registers will be used for switching between ota-dfu and marvin after System reset. This is a good use of Backup Registers. When in ota-dfu mode, the first step is to create a backup copy of marvin(application code) in External flash. Also since the usb-dfu is failproof and reliable, the core user can anytime program both the Internal and External Flash via USB. |
OK I think I understand. I would recommend that the production
|
Sounds good. During production, all the binaries can be combined together On Fri, May 24, 2013 at 3:01 PM, andyw-lala [email protected]:
|
But since JTAG cannot write external flash, plan for a program to init
|
I don't see a need to program External Flash during production. On Fri, May 24, 2013 at 3:55 PM, andyw-lala [email protected]:
|
As long as all the possible failure modes have been carefully thought
|
I agree wholeheartedly with the initial suggestion to keep USB-DFU and OTA-DFU separate, since USB-DFU is robust and that means that, no matter what happens, anything can be fixed with an over-USB firmware upgrade. In a consumer product this would be a terrible failsafe, but with the hobbyist market that we're pursuing first, this is fine. In the long run, I think our goal should be to ensure that OTA-DFU is as robust as USB-DFU by the time we're positioning the Core for inclusion in consumer products. So perhaps just as important as making it failsafe now is designing a system where, when there is a failure, we are aware of it so that we can squash bugs as we go. Part of the design of OTA-DFU, therefore, should be that as often as possible, when there is a checksum failure (or any other kind of failure), we send a signal back to our servers with an error code. Next steps, then, are as follows:
Thoughts? Zach Supalla On Friday, May 24, 2013 at 5:45 AM, andyw-lala wrote:
|
Agree with you Zach. Zac, can you please create a new project "ota-dfu" on Github and also rename existing "dfu" project to "usb-dfu" if possible ? Thanks, |
Agreed. Done. You should all have access to the new ota-dfu repository. You'll have to update your existing dfu project to point to the new github URL with this command:
|
No description provided.
The text was updated successfully, but these errors were encountered: