您的位置 首页 观点

怎么把APP中固定函数移植到bootloade

如何把APP中固定函数移植到bootloade-实现IAP升级APP这个功能没有什么问题,但是想把APP中相对固定的函数移植到bootloader中,从而减少APP空间代码,减少升级时间。

完成IAP晋级APP这个功用没有什么问题,可是想把APP中相对固定的函数移植到bootloader中,然后削减APP空间代码,削减晋级时刻。

APP经过调用bootloader导出的函数接口,完成相关功用的调用。

代码举例

在bootloader导出如下接口给APP运用

int exp_forapp_A(void)

{

int k = 5;

return k;

}

int exp_forapp_B(void)

{

int k = 2;

unsigned char *p = malloc(100);

if(p)

{

k = 5

free(p);

p = NULL;

}

return k;

}

在APP的代码调用以上函数

调用exp_forapp_A函数,能够得到正确的回来值5

调用exp_forapp_B函数,永久只能得到回来值2

经过调试剖析,因为exp_forapp_B在调用malloc时分,运用的bootloader内的malloc,此刻因为跳转到app后ram空间现已从头划分了,因而malloc直接失利,回来NULL。

因而,测验运用将app中的malloc函数传到bootloader中,给exp_forapp_B运用

int exp_forapp_B(void)

{

int k = 2;

unsigned char *p = app_malloc(100);

if(p)

{

k = 5

free(p);

p = NULL;

}

return k;

}

此刻,发现p居然分配到0x00最初的地址,而不是0x20000000今后的地址。

经过了,在QQ的学习更必定我的主意是没有错的。接着经过调试代码,发现,Bootloader中本来存在一个全局变量未被从头映射,而在调用的时分会运用到该变量。从而,导致到动态分配内存呈现古怪地址的问题。

总结,本来的想象是正确的,bootloader的动态内存分配函数malloc失效之后,能够运用app的动态内存分配函数,处理导出函数因内存失效而无法运用函数的问题。

特别要注意,bootloader中的全局变量问题从头映射问题,不然会呈现异常。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/347577.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部