硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2475|回复: 5
收起左侧

[BOOT/IAP] 写了一个BOOT,跳转了但应用程序没有执行??

[复制链接]

27

主题

95

回帖

181

积分

初级会员

积分
181
发表于 2020-1-15 14:20:30 | 显示全部楼层 |阅读模式


最近在整H743的boot, 参考了一下H7-TOOL的程序,写了一个从U盘升级的BOOT,  前面都是OK,包括栈地址和应用程序地址验证都正常,
但是跳转后,程序却没有执行,考虑可能是中断没开,于是在应用程序启动时,打开全局中断,但还是没有成功,考虑可能是跳转前要关中断,
于是在跳转前关掉总中断,还是不行,头疼


之前在F4上做的BOOT 跳转很好使,移到H7上怎么不好使了??


希望大佬们能解惑!!


应用程序就是点个流水灯验证一下跳转有没有成功,设置如下:
1.png

BOOT程序设置如下:
boot.png


写了2个跳转程序:

void iap_load_app(u32 appxaddr)
{
        if(((*(vu32*)appxaddr)&0x2FF00000)==0x20000000)        //检查栈顶地址是否合法.
        {
                /* 关中断 */
                DISABLE_INT();               
                SCB_DisableDCache();
               
                jump2app=(iapfun)*(vu32*)(appxaddr+4);                //用户代码区第二个字为程序开始地址(复位地址)               
                MSR_MSP(*(vu32*)appxaddr);                                        //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
                jump2app();                                                                        //跳转到APP.
                NVIC_SystemReset();        /* 复位CPU */
        }
}                 


void JumpToApp(u32 appxaddr)
{
        pFunction Jump_To_Application;
        uint32_t StackAddr;
        uint32_t ResetVector;
        
        /* 关中断 */
        DISABLE_INT();
        
        SCB_DisableDCache();
        
        StackAddr = *(__IO uint32_t*)appxaddr;                        //0x08002000;
        ResetVector = *(__IO uint32_t*)(appxaddr + 4);        //0x08002004;
        
        /* Initialize user application's Stack Pointer */
        __set_MSP(StackAddr);                /* 设置主栈指针 */

        /* 函数指针赋值 */
        Jump_To_Application = (pFunction)ResetVector;               
        Jump_To_Application();
}







回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106692
QQ
发表于 2020-1-15 15:05:50 | 显示全部楼层
直接把H7-TOOL的APP和BOOT的应用部分删掉,使用框架即可。

http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

27

主题

95

回帖

181

积分

初级会员

积分
181
 楼主| 发表于 2020-1-15 15:08:49 | 显示全部楼层
eric2013 发表于 2020-1-15 15:05
直接把H7-TOOL的APP和BOOT的应用部分删掉,使用框架即可。

http://www.armbbs.cn/forum.php?mod=viewthr ...

我从网上看了几个H7 上做的BOOT, 基本大同小异,原理都差不多,会不会是硬件问题了?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106692
QQ
发表于 2020-1-15 21:15:59 | 显示全部楼层
chinacool 发表于 2020-1-15 15:08
我从网上看了几个H7 上做的BOOT, 基本大同小异,原理都差不多,会不会是硬件问题了?

都有可能,先把软件各种情况捋顺。
回复

使用道具 举报

27

主题

95

回帖

181

积分

初级会员

积分
181
 楼主| 发表于 2020-1-15 21:19:06 | 显示全部楼层
eric2013 发表于 2020-1-15 21:15
都有可能,先把软件各种情况捋顺。

已经解决了,是FLASH写入等待时间太短了,导致程序文件很多内容没有写入到FLASH中,把时间改长一点就好了,后面整理好了,把代码上传,不能光伸手要
回复

使用道具 举报

609

主题

3049

回帖

4896

积分

至尊会员

积分
4896
发表于 2020-1-15 21:51:06 | 显示全部楼层
chinacool 发表于 2020-1-15 21:19
已经解决了,是FLASH写入等待时间太短了,导致程序文件很多内容没有写入到FLASH中,把时间改长一点就好了 ...

期待大神作品,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-30 04:08 , Processed in 0.182576 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表