函数问题

函数问题

此问题已被解答
All Replies
  • 秀才240分

    CheckForceUpdate()检测是否有更新,

    pui32App = (uint32_t *)APP_START_ADDRESS;
        if((pui32App[0] == 0xffffffff) ||
           ((pui32App[0] & 0xfff00000) != 0x20000000) ||
           (pui32App[1] == 0xffffffff) ||
           ((pui32App[1] & 0xfff00001) != 0x00000001))
        {
            return(1);
        }

    应用程序收到更新然后进入SVC异常服务中断,然后回到BootLoader的UpdateHandler执行,然后进入CheckForceUpdate,这里面判断不是很清楚,可以解释一下吗?

    还有后续进入的UpdateBOOTP接收到bin文件后存储到哪里,接收完成后怎么跳出来的?

  • 状元39840分

    flash区分为两部分,0x000到某一个地址为boot区,这个地址以后为应用程序区。上电后先进去boot区判断程序是否给升级指令,有升级指令后,传输升级代码到应用区,无升级指令,调到应用区执行代码。大概就是这个流程。具体的详细过程,可以看看艾研科技出的一个文档,介绍的比较详细。

    苦行僧。

  • 秀才240分

    苦行僧:你好 我之前看到你回复的一个人的,给了他这个文档,但是我现在去下载没有找到,你可以把连接给我吗?我知道汇编判断后进入了UpdateBOOTP(),在UpdateBOOTP()中调用BOOTPThread(),然后发送包解析包等。但是始终不明白UpdateBOOTP()怎么跳出来的。

  • 状元39840分

    我找了好几天,确实找不到了,电脑装系统,丢失了好多文档。你搞定了吗,分享下经验

    苦行僧。

  • 秀才240分

    苦行僧:你好,我也没有找到,我去了你说的那个网站里面找也没有找到。我修改了BootLoader源码,没有用demo里面的方式。

  • 状元39840分

    赞一个!可以分享下你的源码或者部分源码吗,我也学习下。看看你的思路

    苦行僧。