.. _低功耗复用功能: 低功耗复用功能 ========================================= | AD24N 支持 低功耗部分代码、变量与其他功能复用,从而节省空间。 | 默认SDK低功耗部分暂无与其他功能进行复用。 | 下面介绍如何把低功耗部分与解码部分的功能的进行复用,从而节省ram空间 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _低功耗复用示例: 低功耗复用示例 ##################################### | 该示例为低功耗与解码格式复用。 | 经测试,该示例在AD24N最多可节省1.8k空间。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 打开低功耗复用功能宏 ***************************************** 在app_config.h 文件里打开TCFG_LOWPOWER_OVERLAY宏 .. image:: open_overlay.png :alt: "打开低功耗复用功能宏" :align: center .. centered:: 打开低功耗复用功能宏 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 修改链接文件 ***************************************** 1. 打开app_ld.c文件,找到低功耗使用的ram空间 如图为低功耗使用的ram空间暂时单独出来,并无与其他功能复用。 .. image:: lowpower_location.png :alt: "低功耗使用的ram空间" :align: center .. centered:: 低功耗使用的ram空间 2. 修改lowpower_overlay段位置,与目标功能复用 如图为将原本低功耗使用的ram空间移入OVERLAY区域,并与解码格式进行复用。 .. image:: lowpower_over_dec.png :alt: "低功耗复用解码功能" :align: center .. centered:: 低功耗复用解码功能 3. 调整cache_Lx_code_text_end位置 .. image:: adjust_code_text_end.png :alt: "调整pc_limit范围" :align: center .. centered:: 调整pc_limit范围 4. 调整lowpower_overlay_begin位置 该变量为低功耗从app.bin当中加载回低功耗代码地址 .. image:: adjust_lowpower_overlay_begin.png :alt: "调整lowpower_overlay_begin位置" :align: center .. centered:: 调整lowpower_overlay_begin位置 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 修改应用层与低功耗复用的功能 ***************************************** | 当前示例中,低功耗与解码功能复用同一块ram空间,即两者功能 **不能** 同时执行。 | 常见的在音乐模式里,默认SDK是500ms的时候判断到当前没有在播放歌曲,就会进入powerdown当中。 | 当低功耗与解码复用后,如暂停音乐后,500ms消息判断到当前没有播放音乐,就会进入powerdown。 | 此时原本存储解码信息的ram空间被破坏用于了低功耗执行,等到退出低功耗后,解码功能需要重新执行初始化才可以使用。 | 通俗来讲:解码的暂停功能在进入低功耗后已失效,因为重新播放需要获取原本解码位置信息,但存储这些信息的ram空间都被破坏用于了低功耗使用。 下图把暂停功能改为关闭解码模块,避免退出低功耗后,继续使用暂停播放功能导致异常。 .. image:: modify_music_fun.png :alt: "修改音乐模式与低功耗复用的功能" :align: center .. centered:: 修改音乐模式与低功耗复用的功能 .. note:: 用户若复用其他功能,需要注意复用的功能使用的RAM空间是否会被低功耗破坏,做好初始化或者其他规避手段。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 最终 ***************************************** | 编译,查看heap_buf空间多出空间大小。 | 修改前,剩余RAM空间为0x10af; | 修改后,剩余RAM空间为0x17cf; | 经对比,多出约1.8K空间; | (codeblock版本可以查看 logs & others 里的 build_log界面) .. image:: build_log.png :alt: "修改前后的剩余RAM空间大小对比" :align: center .. centered:: 修改前后的剩余RAM空间大小对比