OpenEdv-开源电子网

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

IAP实验不能正确执行flash APP,望帮助分析原因!!

[复制链接]

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
发表于 2017-8-31 15:13:56 | 显示全部楼层 |阅读模式
3金钱
本帖最后由 q247341184 于 2017-9-4 19:33 编辑

用原子哥IAP例程的进行实验的时候,在板子里下载好BootLoader,然后生成bin文件,用XCOM发送,接收几乎没有问题,但是无法执行。我用的是mini版,给BootLoader分了32K的空间。地址从0X08000000~0X08008000。合计32K;
也将APP的初始地址设置成0X08008000,尺寸为0X8000;合计32K。
也设置了中断向量表的偏移量 SCB->VTOR = FLASH_BASE |0X8000;
但是执行的时候还是有问题,APP程序无法正常执行,求指教调试的方法,我哪里的操作出现了错误?IAP仿真调试应该和其他的不太一样吧?

附上设置的图

中断向量偏移量设置

中断向量偏移量设置

起始地址和大小设置

起始地址和大小设置

最佳答案

查看完整内容[请看2#楼]

经多次测试,发现问题,原因在于中断向量表的设置问题,还有因为忘记设置大小固超出范围了。所以才会这样。以此贴告诫自己多加细心。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-31 15:13:57 | 显示全部楼层
经多次测试,发现问题,原因在于中断向量表的设置问题,还有因为忘记设置大小固超出范围了。所以才会这样。以此贴告诫自己多加细心。
回复

使用道具 举报

4

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
775
金钱
775
注册时间
2017-1-23
在线时间
163 小时
发表于 2017-8-31 15:18:50 | 显示全部楼层
本帖最后由 jxlgdxyuh 于 2017-8-31 15:30 编辑

Linker    那一窗口呢?
QQ截图20170831152944.jpg
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-31 15:28:40 | 显示全部楼层
jxlgdxyuh 发表于 2017-8-31 15:18
Linker    那一窗口呢?

现在附上。

LINKER

LINKER
回复

使用道具 举报

4

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
775
金钱
775
注册时间
2017-1-23
在线时间
163 小时
发表于 2017-8-31 15:42:24 | 显示全部楼层

我也不是很懂,你可以试下,跳转前后关闭再开启总中断:__disable_irq();__enable_irq()。
另外你的时钟应该是8MHz吧
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-31 15:50:37 | 显示全部楼层
jxlgdxyuh 发表于 2017-8-31 15:42
我也不是很懂,你可以试下,跳转前后关闭再开启总中断:__disable_irq();__enable_irq()。
另外你的时 ...

好,我先去试一下。时钟不是只有软件仿真才改8MHz嘛?
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-31 15:56:40 | 显示全部楼层
jxlgdxyuh 发表于 2017-8-31 15:42
我也不是很懂,你可以试下,跳转前后关闭再开启总中断:__disable_irq();__enable_irq()。
另外你的时 ...

其实我挺好奇的,因为我只是把原子哥例程中的sram程序按照手册改成了flash的程序。就无法运行了
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-31 16:07:43 | 显示全部楼层
jxlgdxyuh 发表于 2017-8-31 15:42
我也不是很懂,你可以试下,跳转前后关闭再开启总中断:__disable_irq();__enable_irq()。
另外你的时 ...

我用的环境是MDK5,我在跳转函数前加入关闭中断 INTX_DISABLE();    在跳转后加入开启中断 INTX_ENABLE();,但是好像不管事。
QQ截图20170831160657.png
QQ截图20170831160709.png
回复

使用道具 举报

4

主题

37

帖子

0

精华

高级会员

Rank: 4

积分
775
金钱
775
注册时间
2017-1-23
在线时间
163 小时
发表于 2017-8-31 16:18:41 | 显示全部楼层
q247341184 发表于 2017-8-31 15:56
其实我挺好奇的,因为我只是把原子哥例程中的sram程序按照手册改成了flash的程序。就无法运行了

原来是这样,那把“IRAM1”按照flash的改回去吧,0x20000000
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-8-31 16:24:32 | 显示全部楼层
jxlgdxyuh 发表于 2017-8-31 16:18
原来是这样,那把“IRAM1”按照flash的改回去吧,0x20000000

已经改回去了,也没有用,手册里对flash执行的app没要求ram。所以我觉得应该关系不大吧?
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-9-1 07:52:10 | 显示全部楼层
自己顶一下
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
 楼主| 发表于 2017-9-4 19:33:54 | 显示全部楼层
顶一下,求帮助,求解答。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 22:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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