This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3220MODA: Faster wake-up from hibernation / separate firmware?

Part Number: CC3220MODA
Other Parts Discussed in Thread: CC3200

Hi, 

I'd like to know if it is possible to wake-up faster from hibernation by any kind of trick.

As datasheet describes, there is 50 ms + (KB)*1.7 ms wake-up time which is about 450 ms in my case.

But the problem is my application has frequent wake-up (not short enough to have LPDS reasonable) so a battery is unhappy with 450 ms at every wake-up.

(currently, bin size is about 240 KB, wake-up every 10 mins)

So my questions are

  1. Is there any trick to reduce this time?
  2. Would it be possible to have two different binary files? One for normal firmware, another for frequent wake-up firmware.

Thanks!

Yun

  • Hi Yun,

    There is no easy solution.

    Are you able to to split your firmware to 2 (small wake-up firmware and then another normal one)?

    Is the normal firmware required frequently?

    You can use 2 firmware files or one firmware with overlays but you will need to manage the code replacement and the authentication by your self.

    It will be worth implementing only if the switch from wakeup firmware to the full one is rare enough.

    In such case you can store the 2 FW files on the file system and copy the required one as "/sys/mcuimg.bin" (Such as during OTA), or you can just copy the overlay part. In both cases you will need the NWP to be up (to access the file system) which will add to the wakeup time - so it won't be useful if this happens frequently.

     br,

    Kobi

  • Hi Kobi,

    I think approach with two interchangeable file /sys/mcuimg.bin is not a best way. Better is to have one small /sys/mcuimg.bin with wake-up functionality. And if will be needed that this firmware will load full firmware into RAM and jump there for execution. This approach is similar like a secondary bootlaoder at CC3200 OTA example. Another option can be use approach similar like dynamic_lib_loader at CC3200 SDK.

    Jan

  • I agree. Using a "secondary bootloader" to the wakeup fw is probably the most efficient way. if you compile the code with overlays, the "2nd bootloader" can just replace the relevant "overlay" sections.

    Using 2 files, can be easier as it uses standard mechanism of cc3220, but it will be less efficient.  

    br,

    Kobi

  • Hi Kobi,

    My application can be split into two - a very light wake-up firmware which supposed to run over 100 times a day and a relatively heavy one which will run 10~20 times a day.

    Now I roughly understand the situation but I would appreciate if you could share more things (examples or docs) I can practice with. Quite hard to find one.

    Regards,

    Yun

  • As Jan mentioned you can download the CC3200 sdk (https://www.ti.com/tool/CC3200SDK) and check the code of application_bootloader (specifically refer to the LoadAndExecute() function).

    Note that the loadAndExecute code should be placed  in a special section (that is supported by the linker cmd file) in a location that is not overwritten (in the cc3200 SDK, the first 16KB of the RAM were reserved for the entire application_bootloader code, so other applications started in address 0x20004000 rather then 0x20000000)

    The CC3220 SDK doesn't include similar example.

     

    br,

    Kobi

  • Hi Yun,

    A few comments. Some additional information related to this topic you find here. But as Kobi mentioned it is crucial to properly set memory sections (linker file). What device do you use it is CC3220MODASF or CC3220MODAS?

    Jan

  • Hi Jan,

    Thanks for the link!

    I'm using MODAS without internal flash.

    Regards,

    Yun