OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1435|回复: 3

STM32F407VGT6芯片自己写的BOOT跳转到APP不成功

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-7-4
在线时间
17 小时
发表于 2023-11-7 19:22:53 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 bowlder2008 于 2023-11-7 19:28 编辑

F407芯片,片上FLASH 1M
1)BOOT地址分配:起始地址0x 0800 0000  大小0x8000=32k--占据第0和第1扇区,分别16K,16K
2)  APP地址分配 : 起始地址0x  0800 8000  大小0x58000=352K--占据第2、3、4、5、6扇区,分别16k,16k,64k,128k,128k
在keil中BOOT设置如下:

在keil中app设置如下:

勾选了

BOOT下载后仿真调试没有问题。BOOT中的指示灯闪烁,与预期相符。但是烧写APP后但是总是不能从BOOT跳转到APP中去。
APP的main函数中进行了中断向量表重定位:SCB->VTOR = (0x08008000);
APP烧写后点击debug开始调试按钮,无法定位到main函数(已勾选Run to Main等),并且run按钮呈白色,反汇编窗口的黄色箭头显示在ldr行如下图。

在boot中调试跟踪,发现是APP读取FLASH校验有错误,无法实现跳转到APP,就一直在boot中运行.
我想问下如下几个问题:
1)APP烧录进去后点DEBUG调试按钮无法运行定位到main函数,是因为BOOT没有正常跳转的原因吗?这里一头雾水,不晓得怎么排查,也不知道是怎么原因?
2)APP和BOOT的设置,看了网上很多资料,也就是以上设置啊,以上图片上的配置是否有错?
3)编译后的APP烧录到flash,经过调试和j-flash查看,发现最后有一串零,造成读出来的CRC(烧写自动加上的)和计算出来的CRC不相等,造成跳转失败.以下是APP烧录进flash中末尾的一些字符,怎么会出现这么多0,好像最后2个字节就是CRC。

7.png
6.png
5.png
4.png
3.png
2.png
1.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2105

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4593
金钱
4593
注册时间
2015-1-10
在线时间
574 小时
发表于 2023-11-10 16:24:48 | 显示全部楼层
配置看上去没啥问题,J-Flash烧录后多出来0可能是烧录算法的问题,换个烧录器试试
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-7-4
在线时间
17 小时
 楼主| 发表于 2023-11-20 09:17:46 | 显示全部楼层
阿侑kevin 发表于 2023-11-10 16:24
配置看上去没啥问题,J-Flash烧录后多出来0可能是烧录算法的问题,换个烧录器试试

谢谢回复
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-7-4
在线时间
17 小时
 楼主| 发表于 2023-11-20 09:19:39 | 显示全部楼层
谢谢回复!已解决!
1)主要要烧写带CRC校验的APP到FLASH,不然BOOT中验证通不过就跳不过去;
2)对于APP烧写地址不在0x0800 0000,确实不能仿真DEBUG;可自行百度方法,一般有两种方法进行调试;
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-26 13:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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