[方案相关] 华大MCU的IAP升级(源码+PC工具)

[复制链接]
151909|1143
cliff_w 发表于 2021-10-26 10:58 | 显示全部楼层
谢谢分享的资料,可以参考下。
colorpp 发表于 2021-10-26 16:07 | 显示全部楼层
正好用到,谢谢分享
自己造声卡 发表于 2021-10-28 10:07 | 显示全部楼层
是不是这些芯片都是支持IAP升级的?
fh0chen 发表于 2021-10-29 09:35 | 显示全部楼层
最近在换华大,正好做参考。
qihao74 发表于 2021-10-29 14:15 | 显示全部楼层
lu50211 发表于 2021-10-30 08:42 | 显示全部楼层
谢谢分享
CJQ_ENJOY 发表于 2021-10-30 09:44 | 显示全部楼层
MJ2018 发表于 2021-10-31 23:47 | 显示全部楼层
参考下代码
szsfy 发表于 2021-11-1 07:51 | 显示全部楼层
感谢分享
xwpcom 发表于 2021-11-1 10:14 | 显示全部楼层
有个问题要注意一下
编译时至少要开启-O1或更高级的优化
如果采用-O0来禁用优化,IAP_JumpToApp会无法跳转,原因见下面的注释

int IAP_JumpToApp(uint32_t u32Addr)
{
    uint32_t u32StackTop = *((__IO uint32_t *)u32Addr);  //读取APP程序栈顶地址
        LogV(TAG,"u32StackTop=%p",u32StackTop);
       
    /* 判断栈顶地址有效性 */
    if ((u32StackTop > SRAM_BASE) && (u32StackTop <= (SRAM_BASE + RAM_SIZE)))
    {
        /* 配置跳转到用户程序复位中断入口 */
        JumpAddress = *(__IO uint32_t *)(u32Addr + 4);
        JumpToApplication = (func_ptr_t)JumpAddress;
               
                LogV(TAG,"JumpAddress=%p",JumpAddress);
               
        /* 初始化用户程序的栈顶指针 */
        __set_MSP(*(__IO uint32_t *)u32Addr);
                /*
                注意上面的__set_MSP会修改sp,
                而如果采用-O0来编译运行时,下面的JumpToApplication()会从sp偏移取JumpToApplication变量
                导致访问到错误的地址从而进入HardFault_Handler,导致没法跳转到hdapp
                */
        JumpToApplication();
    }

    return 0;
}
xhd1099924128 发表于 2021-11-2 14:22 | 显示全部楼层
谢谢分享的资料,正好有项目需要IAP功能
swustlx86 发表于 2021-11-8 00:07 | 显示全部楼层
感谢分享  下载备用
迪飞 发表于 2021-11-8 10:50 | 显示全部楼层
谢谢分享~!
wifi99 发表于 2021-11-9 15:35 | 显示全部楼层
参考下
CJF_2014 发表于 2021-11-11 14:28 | 显示全部楼层
谢谢分享
ligen13872 发表于 2021-11-12 10:04 | 显示全部楼层
学习性
wcheng13 发表于 2021-11-12 14:26 | 显示全部楼层
先来 研究研究看看,后面可能会用这个 片子
flytianya2010 发表于 2021-11-12 14:31 来自手机 | 显示全部楼层
学习一下,谢谢分享。
usysm 发表于 2021-11-12 20:43 | 显示全部楼层
IAP升级下载一下。   
jkl21 发表于 2021-11-12 20:43 | 显示全部楼层
这个是串口代码   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部