OpenEdv-开源电子网

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

关于iap的bootloader程序和app程序

[复制链接]

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
发表于 2018-8-20 11:21:54 | 显示全部楼层 |阅读模式
5金钱
板子的核心芯片是stm32f103的,bootloader程序用ulink下到板子里,可以运行,在将app程序下到板子里,按理来说应该是运行bootloader,但板子什么程序都运行不了。查看了keil的target,分配给bootloader和app的flash空间都是足够的,有没有大神知道问题出在哪里了吗

最佳答案

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

“下载app程序”是怎么下载的?是否会把IAP程序擦除掉。你可以这样试下,设置iap程序上电直接跳转到APP程序,然后合并iap程序和APP程序再把合并后的程序下载到单片机里看能不能运行APP程序。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

67

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
5009
金钱
5009
注册时间
2014-10-24
在线时间
980 小时
发表于 2018-8-20 11:21:55 | 显示全部楼层
守望者2481632 发表于 2018-8-20 14:24
先用ulink下载iap程序,能正常运行,再下载app程序之后,板子就死机了

“下载app程序”是怎么下载的?是否会把IAP程序擦除掉。你可以这样试下,设置iap程序上电直接跳转到APP程序,然后合并iap程序和APP程序再把合并后的程序下载到单片机里看能不能运行APP程序。
回复

使用道具 举报

8

主题

572

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2930
金钱
2930
注册时间
2016-5-13
在线时间
185 小时
发表于 2018-8-20 11:50:38 | 显示全部楼层
bootloader和app应该合并到一起后再烧录的。去看我之前分享的一个合并的帖子吧:http://www.openedv.com/forum.php ... id=76644&extra=
虽然不明白你们在说什么,但感觉很厉害的样子。
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17786
金钱
17786
注册时间
2018-3-3
在线时间
523 小时
发表于 2018-8-20 12:02:35 | 显示全部楼层
你关全部的中断了吗
/*
*
*
*
*
*
*/
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
 楼主| 发表于 2018-8-20 13:30:55 | 显示全部楼层
本帖最后由 守望者2481632 于 2018-8-20 13:32 编辑

这是bootloader的target配置以及编译后的文件大小

这是bootloader的target配置以及编译后的文件大小
这是bootloader的target配置以及编译后的文件大小
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
 楼主| 发表于 2018-8-20 13:32:42 | 显示全部楼层
Psheng 发表于 2018-8-20 12:02
你关全部的中断了吗

为什么要关中断啊?
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
 楼主| 发表于 2018-8-20 13:33:43 | 显示全部楼层
TIM图片20180820113140.png 这是app的target配置和编译后的文件大小
回复

使用道具 举报

3

主题

67

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
5009
金钱
5009
注册时间
2014-10-24
在线时间
980 小时
发表于 2018-8-20 14:05:05 | 显示全部楼层
首先判断你的APP程序正常情况下即不设置偏移能不能跑,还有就是APP程序main开头有没有添加“SCB->VTOR = FLASH_BASE | 0x10000; //应用程序中断向量表偏移量设定”,其次还有检查下iap能不能正常跳转。
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
 楼主| 发表于 2018-8-20 14:22:30 | 显示全部楼层
小小的爱 发表于 2018-8-20 14:05
首先判断你的APP程序正常情况下即不设置偏移能不能跑,还有就是APP程序main开头有没有添加“SCB->VTOR = FL ...

app程序在不设置偏移的情况下是可以正常运行的,app的main函数的开头也加上了中断向量偏移,iap也能跳转到app程序。
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
 楼主| 发表于 2018-8-20 14:24:15 | 显示全部楼层
小小的爱 发表于 2018-8-20 14:05
首先判断你的APP程序正常情况下即不设置偏移能不能跑,还有就是APP程序main开头有没有添加“SCB->VTOR = FL ...

先用ulink下载iap程序,能正常运行,再下载app程序之后,板子就死机了
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
 楼主| 发表于 2018-8-20 15:37:12 | 显示全部楼层
小小的爱 发表于 2018-8-20 15:16
“下载app程序”是怎么下载的?是否会把IAP程序擦除掉。你可以这样试下,设置iap程序上电直接跳转到APP程 ...

下载app程序也是用ulink下载的,在target里面设置了app程序在flash中的存放地址,是从0x08010000开始存放的。设置iap程序上电直接跳转到app,最后的结果也是死机了,所以我怀疑是不是我的app程序没有从0x8010000开始存放。
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-20 15:42:28 | 显示全部楼层
1.调试boot程序是否正常运行
2.调试app程序查看boot程序是否跳转到app(打开调试一段时间后程序会停在app开头),若一直没法停下来说明boot程序没有正确跳转
3.若程序跳转到app,程序仍无法运行,看看是不是中断向量表没有重映射
猪猪熊呢?
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
 楼主| 发表于 2018-8-20 15:47:17 | 显示全部楼层
小小的爱 发表于 2018-8-20 11:21
“下载app程序”是怎么下载的?是否会把IAP程序擦除掉。你可以这样试下,设置iap程序上电直接跳转到APP程 ...

还有,之前也有个iap的项目,和现在手头上的项目唯一的区别就是,之前项目iap接收app的bin文件是通过串口接受的,手头项目是要通过CAN接收。就这点区别,之前项目也是先下载iap程序,然后在下载app程序,一切都正常的,不知道为什么改成CAN接收之后就出现了问题
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17786
金钱
17786
注册时间
2018-3-3
在线时间
523 小时
发表于 2018-8-20 16:09:24 | 显示全部楼层
守望者2481632 发表于 2018-8-20 13:32
为什么要关中断啊?

你bootloder里面有用中断吗? 有的话在跳转之前要关闭。不然在APP中没有对应的中断服务函数,响应不了中断 会卡死
/*
*
*
*
*
*
*/
回复

使用道具 举报

3

主题

67

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
5009
金钱
5009
注册时间
2014-10-24
在线时间
980 小时
发表于 2018-8-20 16:21:38 | 显示全部楼层
守望者2481632 发表于 2018-8-20 15:37
下载app程序也是用ulink下载的,在target里面设置了app程序在flash中的存放地址,是从0x08010000开始存放 ...

你可以把flash内容读出来看一下!
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
 楼主| 发表于 2018-8-23 14:58:24 | 显示全部楼层
小小的爱 发表于 2018-8-20 16:21
你可以把flash内容读出来看一下!

flash内容读出来了,从0x8010000开始读取的,确实是app程序的代码,现在让iap程序开机跳转app,板子就在不停地重启
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
 楼主| 发表于 2018-8-23 15:02:25 | 显示全部楼层
323232 发表于 2018-8-20 15:42
1.调试boot程序是否正常运行
2.调试app程序查看boot程序是否跳转到app(打开调试一段时间后程序会停在app ...

调试了,执行到跳转函数的时候,往下再执行的时候就跳到了bootloader的main函数开头,没能跳到app程序的起始地址
回复

使用道具 举报

3

主题

67

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
5009
金钱
5009
注册时间
2014-10-24
在线时间
980 小时
发表于 2018-8-23 15:05:12 | 显示全部楼层
守望者2481632 发表于 2018-8-23 14:58
flash内容读出来了,从0x8010000开始读取的,确实是app程序的代码,现在让iap程序开机跳转app,板子就在 ...

1.检查是否在IAP里开启了看门狗 2.简化APP程序--点灯。再看下是否正常
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2017-8-4
在线时间
48 小时
 楼主| 发表于 2018-8-23 15:50:19 | 显示全部楼层
小小的爱 发表于 2018-8-23 15:05
1.检查是否在IAP里开启了看门狗 2.简化APP程序--点灯。再看下是否正常

app的代码量小的话,iap跳转到app就正常,代码量大的话,iap跳转到app,板子就不停地重启了
回复

使用道具 举报

3

主题

67

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
5009
金钱
5009
注册时间
2014-10-24
在线时间
980 小时
发表于 2018-8-23 15:59:55 | 显示全部楼层
守望者2481632 发表于 2018-8-23 15:50
app的代码量小的话,iap跳转到app就正常,代码量大的话,iap跳转到app,板子就不停地重启了

那就读出flash内容对比下写入的程序是否完整。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-11 13:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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