OpenEdv-开源电子网

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

IAP移植到stm32f103c8t6,可以复制APP,跳不到APP程序执行

[复制链接]

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-11-25
在线时间
86 小时
发表于 2016-9-23 18:52:41 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 zws625974711 于 2016-9-23 18:52 编辑

用原子哥的stm32f103zet6(flash 512k)的IAP例程移植到f103c8t6(flash 128k),发现IAP-Bootloader可以复制APP到flash中,不过跳不到APP中去执行,一直执行的IAP-Bootloader的程序,贴我的配置吧


111.png

重设中断向量表的起始地址

重设中断向量表的起始地址

生成.bin文件

生成.bin文件

接收。bin文件数组最大字节数

接收。bin文件数组最大字节数

中容量flash大小128k

中容量flash大小128k

这里多了个疑问?

这里多了个疑问?

调试的现象

调试的现象

最佳答案

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

将MDK里面的options--->Linker里面的Use Memory Layout from Target Dialog选项勾上即可
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-11-25
在线时间
86 小时
 楼主| 发表于 2016-9-23 18:52:42 | 显示全部楼层
将MDK里面的options--->Linker里面的Use Memory Layout from Target Dialog选项勾上即可
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-11-25
在线时间
86 小时
 楼主| 发表于 2016-9-23 18:59:30 | 显示全部楼层
排版不好,,,还有就是stm32f103c8t6(flash 128k,sram 20k),个人能想到的配置修改就这些了,程序会一直执行IAP-Bootloader的代码,希望懂的小伙伴能帮一下。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-9-24 08:59:14 | 显示全部楼层
zws625974711 发表于 2016-9-23 18:59
排版不好,,,还有就是stm32f103c8t6(flash 128k,sram 20k),个人能想到的配置修改就这些了,程序会一 ...

bootloader写入flash的app程序数据对不对?用st-link读取出来和你的bin文件对比一下看下正确啵,记得C8的flash一个page是1K的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2015-3-21
在线时间
20 小时
发表于 2016-9-24 15:09:13 | 显示全部楼层
八度空间 发表于 2016-9-24 08:59
bootloader写入flash的app程序数据对不对?用st-link读取出来和你的bin文件对比一下看下正确啵,记得C8的 ...

我也觉得,应该看下Flash写入是否正确。不过不一定用STlink查看,可以通过串口打印出来也行呀
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-9-25 01:11:44 | 显示全部楼层
cs1222 发表于 2016-9-24 15:09
我也觉得,应该看下Flash写入是否正确。不过不一定用STlink查看,可以通过串口打印出来也行呀

打出来用眼睛看么???
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

2

主题

58

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5460
金钱
5460
注册时间
2016-3-23
在线时间
483 小时
发表于 2016-9-25 12:33:19 | 显示全部楼层
if (((*(vu32 *)IN_FLASH_STAR) & 0x2FFE0000 ) == 0x20000000)   这个是没错的

截图中, 没看到appxaddr的设定值,   应改appxaddr为你的APP程序的起始地址0x8008000
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-11-25
在线时间
86 小时
 楼主| 发表于 2016-9-27 16:00:13 | 显示全部楼层
八度空间 发表于 2016-9-24 08:59
bootloader写入flash的app程序数据对不对?用st-link读取出来和你的bin文件对比一下看下正确啵,记得C8的 ...

flash读出来的app程序数据跟bin文件是一样的,只不过地址后面还紧跟着一个bin文件大小的数据,也就是两个bin文件的大小,原子的IAP例程支持128K flash的吧file:///C:/Users/zhangwensong/Desktop/flash_bin.html  
file:///C:/Users/zhangwensong/Desktop/APP_bin.html
file:///C:/Users/zhangwensong/Desktop/333.html
file:///C:/Users/zhangwensong/Desktop/444.html
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-11-25
在线时间
86 小时
 楼主| 发表于 2016-9-27 16:02:27 | 显示全部楼层
八度空间 发表于 2016-9-24 08:59
bootloader写入flash的app程序数据对不对?用st-link读取出来和你的bin文件对比一下看下正确啵,记得C8的 ...

图片看得到吗?  为什么会有两个连续的bin文件大小的数据?
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-11-25
在线时间
86 小时
 楼主| 发表于 2016-9-27 22:57:53 | 显示全部楼层
skygz 发表于 2016-9-25 12:33
if (((*(vu32 *)IN_FLASH_STAR) & 0x2FFE0000 ) == 0x20000000)   这个是没错的

截图中, 没看到appxaddr ...

appxaddr设置成0x8008000,0x08xxxxxx & 0x2FFE000会等于0x20000000???
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-9-28 09:05:37 | 显示全部楼层
FLASH_APP1_ADDR 地址修改了吗?
flash每次写2k对吗?大容量是2k,你这个也是2k一个page?
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-11-25
在线时间
86 小时
 楼主| 发表于 2016-9-28 09:27:02 | 显示全部楼层
ysq7120 发表于 2016-9-28 09:05
FLASH_APP1_ADDR 地址修改了吗?
flash每次写2k对吗?大容量是2k,你这个也是2k一个page?

FLASH_APP1_ADDR改了,原子IAP例程支持1k的
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-11-25
在线时间
86 小时
 楼主| 发表于 2016-9-28 09:36:17 | 显示全部楼层
zws625974711 发表于 2016-9-27 16:00
flash读出来的app程序数据跟bin文件是一样的,只不过地址后面还紧跟着一个bin文件大小的数据,也就是两个 ...

http://yun.baidu.com/share/link? ... 7&uk=1780728623
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-9-28 10:15:53 | 显示全部楼层
zws625974711 发表于 2016-9-28 09:27
FLASH_APP1_ADDR改了,原子IAP例程支持1k的

原子是2k的吧,1024*2=2048,以战舰v3的例子。我说的不是代码里面的1024.
c8t6你最好查查具体一个page多大。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-11-25
在线时间
86 小时
 楼主| 发表于 2016-9-28 11:12:54 | 显示全部楼层
ysq7120 发表于 2016-9-28 10:15
原子是2k的吧,1024*2=2048,以战舰v3的例子。我说的不是代码里面的1024.
c8t6你最好查查具体一个page多 ...

c8t6的flash为128k,一个page 1k,原子里面代码
#if STM32_FLASH_SIZE<256
#define STM_SECTOR_SIZE 1024 //字节
#else
#define STM_SECTOR_SIZE        2048
#endif       
回复

使用道具 举报

3

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
金钱
338
注册时间
2015-11-25
在线时间
86 小时
 楼主| 发表于 2016-9-28 11:32:44 | 显示全部楼层
发现问题出在bin文件上面,原因还在找


appxaddr+4 的地址不是0x0801xxxx

appxaddr+4 的地址不是0x0801xxxx
回复

使用道具 举报

15

主题

96

帖子

0

精华

高级会员

Rank: 4

积分
650
金钱
650
注册时间
2017-4-21
在线时间
151 小时
发表于 2018-6-1 11:30:13 | 显示全部楼层
zws625974711 发表于 2016-9-28 11:32
发现问题出在bin文件上面,原因还在找

现在的问题也是和你的一样
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2018-6-7
在线时间
2 小时
发表于 2018-6-10 11:05:31 | 显示全部楼层
zws625974711 发表于 2016-9-23 18:52
将MDK里面的options--->Linker里面的Use Memory Layout from Target Dialog选项勾上即可

我也是这样的情况,用了你的方法就好了,大神能跟我解释下嘛这个选项勾了和没勾的区别,感激不尽!
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
发表于 2018-7-2 16:15:17 | 显示全部楼层
楼主,你成功了吗?我现在也在用C8T6尝试,搞半天搞不出来,可否将你的程序分享一下,谢谢
回复

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-12-16
在线时间
27 小时
发表于 2019-5-16 10:08:28 | 显示全部楼层
遇到同样问题,bin文件烧写成功,app程序不能执行。烧写到flash里的文件和app的bin文件作对比相同。Linker里面的Use Memory Layout from Target Dialog选项勾上试过,还是不行。求解!
回复

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-12-16
在线时间
27 小时
发表于 2019-5-16 10:08:57 | 显示全部楼层
午夜狼嚎 发表于 2018-7-2 16:15
楼主,你成功了吗?我现在也在用C8T6尝试,搞半天搞不出来,可否将你的程序分享一下,谢谢

解决没?
回复

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-12-16
在线时间
27 小时
发表于 2019-5-16 11:11:20 | 显示全部楼层
zws625974711 发表于 2016-9-23 18:52
将MDK里面的options--->Linker里面的Use Memory Layout from Target Dialog选项勾上即可

nb,谢了。在app程序里进行设置
回复

使用道具 举报

7

主题

20

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-12-6
在线时间
6 小时
发表于 2019-6-3 00:21:56 | 显示全部楼层
LuoBen 发表于 2019-5-16 11:11
nb,谢了。在app程序里进行设置

兄弟您好,我遇到您之前一样的问题了。参考原子哥的实例,flash大小设置成256就没问题,但是回到c8t6的128(官方手册写64k,试过了也不行),就无法跳转。配置啥的都没问题呀,包括勾选的也都试了。想问您要一下iap和app的工程源码,您可以上传一下参考么?谢谢了
回复

使用道具 举报

7

主题

20

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-12-6
在线时间
6 小时
发表于 2019-6-3 17:09:02 | 显示全部楼层
我要上自习 发表于 2019-6-3 00:21
兄弟您好,我遇到您之前一样的问题了。参考原子哥的实例,flash大小设置成256就没问题,但是回到c8t6的12 ...

我查到c8t6的flash大小为64K(虽然也有一种说法是128K,但其实后64K属于官方未测试范围,以后出问题官方是不负责的,这个先不表)。64Kflash的片子,每页大小是1K,所以iapbuf应为512,写数据也按照512来写,这样就可以了。整体代码如下图:
tt6.png
回复

使用道具 举报

7

主题

20

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-12-6
在线时间
6 小时
发表于 2019-6-3 17:09:38 | 显示全部楼层
LuoBen 发表于 2019-5-16 11:11
nb,谢了。在app程序里进行设置

所以还是想问您要一下工程源码,对比一下,是否这样修改,谢谢了
回复

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2016-12-16
在线时间
27 小时
发表于 2019-6-12 21:15:54 | 显示全部楼层
我要上自习 发表于 2019-6-3 17:09
所以还是想问您要一下工程源码,对比一下,是否这样修改,谢谢了

工程涉密,给不了你呀
回复

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2020-2-15
在线时间
46 小时
发表于 2020-3-2 19:21:53 | 显示全部楼层
本帖最后由 m1y2c3 于 2020-3-2 19:28 编辑

同样的问题,费了几天劲了,最后对照RTC实验的设置,把use memory layout from tatget dialog勾选就好了,标记并转帖
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-21 10:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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