K210 Over-the-Air or In-App-Programming (Flashing) Example?

  • Is Kendryte or anyone else able to provide and example for programming/flashing the K210 from a FreeRTOS/Standalone application already running in memory on the K210?

    To use the K210 in any practical application and be able to maintain and update the firmware there needs to be a way to provide OTA or at least IAP programming of the Flash.

    Can anyone provide more documentation or an example?


  • Just a quick update for anyone looking for OTA/IAP information: @loboris is working on a second stage bootloader that will support OTA and other firmware boot sources. Check out his post over here: https://forum.kendryte.com/topic/409/is-anyone-interested-in-collaborating-to-develop-ota-capability

  • Thanks @hukai.
    Do you have any documentation on the structure of flash address space and where the binary image is located vs SRAM at 0x80000000? Looking at kflash.py it only seems to pass 0x80000000 address to bootloader for start location but nothing about flash location... is it the same?
    How does the the caching mechanism impact loading additional section?
    Would I need to modify the ELF section address/offset from the standard to allow for second section to work?
    Would I be able to use w25qxx library/driver from running firmware to load updated firmware to second location in flash?
    Would I need to generate any additional CRC for the new section?
    Also, what would be the most efficient way to call the new code from existing running code - just jump to it from assembly code?

    It would be great if Kendryte could create a quick and dirty example (Just the IAP portion) of how this could be done on the K210 considering how little documentation there is at this time.

    Thanks in advance.

  • Global Moderator |  Mod


    1. We have no any code to support OTA;
    2. You can implement OTA funciton by follow steps:
      a). Please divide your code to 2 sections.
      b). The first section could be download by Kflash, this section support wifi, eth etc.
      c). The second section is application, it could be update by first section.