OpenEdv-开源电子网

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

通过TCP/IP 在线IAP升级程序

[复制链接]

38

主题

302

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2012-3-6
在线时间
5 小时
发表于 2014-9-9 10:45:32 | 显示全部楼层 |阅读模式
5金钱
1.我做了个硬件升级功能,通过TCP/IP升级内部程序.以前的升级时候没问题,
最近我把APP函数重写,以前用的2.0的库,现在用的3.5的库,然后boot还是以前的boot ,
我发现程序跳转没问题,但是跳转以后运行函数的时候就硬件错误,如果仿真调试的时候
进入函数内部操作寄存器的时候就不会硬件错误,我在想是不是栈区太小或者其他什么原因.
boot里面设置的栈区有0x1000的大小;
这个APP如果不做在线升级,也就是说 向量表和程序起始地址不设置0x08010000而是0x08000000的时候是可以运行的.
以前的APP和现在APP 的区别在于,

1>.一个是库不同,以前是2.0现在是3.5
2>.现在运行SystemInit()没问题,SystemInit()函数里面设置完SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;
FLASH_BASE 改为0x08010000以后,然后进入Main的第一个初始化函数时候就出现硬件错误,
如果仿真进去F11看操作寄存器的时候不会错误,只有F10跳过函数的时候就硬件错误了.
我判断是不是栈区有问题了.
3>.以前没有堆管理,现在我加入了堆管理,但是还没到堆初始化的时候就硬件异常了.所以我不大明白哪里出问题了.

请求各位支招.

最佳答案

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

1.在system_stm32f10x.c 函数中 #ifdef VECT_TAB_SRAM   SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ #else   SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ 这里 ...
ES?全称?Embedded?Show;ES是由众多嵌入式爱好者组织的一个团队,致力于带领学生进步,帮助毕业生找到工作,更重要的是在职的嵌入式工作者提供自主外包和创业的机会。(详情进群查看) ES的宗旨是:交流共享与合作发展。ES?QQ群?第三群:152820643?。群内论坛有很多嵌入式开发模块解决方案可以参考。进群的立马共享自己做的模块简介。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

38

主题

302

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2012-3-6
在线时间
5 小时
 楼主| 发表于 2014-9-9 10:45:33 | 显示全部楼层
1.在system_stm32f10x.c 函数中
#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#else
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
这里不用去修改.(前面修改的这里,修改以后main进入以后就硬件错误)

2.在misc.h 文件中把#define NVIC_VectTab_FLASH           ((uint32_t)0x08000000) 修改成需要的地址,
3.在main里面 设置向量偏移基地址 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
这样就没有问题了.
ES?全称?Embedded?Show;ES是由众多嵌入式爱好者组织的一个团队,致力于带领学生进步,帮助毕业生找到工作,更重要的是在职的嵌入式工作者提供自主外包和创业的机会。(详情进群查看) ES的宗旨是:交流共享与合作发展。ES?QQ群?第三群:152820643?。群内论坛有很多嵌入式开发模块解决方案可以参考。进群的立马共享自己做的模块简介。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-9-9 12:47:07 | 显示全部楼层
这还真没遇到过
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-9-9 13:12:59 | 显示全部楼层
先不用IAP,直接下载到开发板测试能否正常运行。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

38

主题

302

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2012-3-6
在线时间
5 小时
 楼主| 发表于 2014-9-9 14:09:11 | 显示全部楼层
这个APP如果不做在线升级,也就是说 向量表和程序起始地址不设置0x08010000而是0x08000000的时候是可以运行的.
ES?全称?Embedded?Show;ES是由众多嵌入式爱好者组织的一个团队,致力于带领学生进步,帮助毕业生找到工作,更重要的是在职的嵌入式工作者提供自主外包和创业的机会。(详情进群查看) ES的宗旨是:交流共享与合作发展。ES?QQ群?第三群:152820643?。群内论坛有很多嵌入式开发模块解决方案可以参考。进群的立马共享自己做的模块简介。
回复

使用道具 举报

38

主题

302

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2012-3-6
在线时间
5 小时
 楼主| 发表于 2014-9-9 14:09:25 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
这个APP如果不做在线升级,也就是说 向量表和程序起始地址不设置0x08010000而是0x08000000的时候是可以运行的.


ES?全称?Embedded?Show;ES是由众多嵌入式爱好者组织的一个团队,致力于带领学生进步,帮助毕业生找到工作,更重要的是在职的嵌入式工作者提供自主外包和创业的机会。(详情进群查看) ES的宗旨是:交流共享与合作发展。ES?QQ群?第三群:152820643?。群内论坛有很多嵌入式开发模块解决方案可以参考。进群的立马共享自己做的模块简介。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-9-9 22:07:18 | 显示全部楼层
回复【5楼】a4615800:
---------------------------------
那就一个个排查。
改动不要一次改太多。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-1-9
在线时间
1 小时
发表于 2014-9-10 10:52:09 | 显示全部楼层
建议FLASH_BASE 不要去修改,改动VECT_TAB_OFFSET  boot程序中的VECT_TAB_OFFSET==0  应用程序中的VECT_TAB_OFFSET==0x1000,还有工程配置中,boot程序空间为:start:0x08000000---size:1000,应用程序空间为:0x08001000--size:(自己分配大小),  跳转前先配置好主堆栈(msp),然后再跳转至应用程序
回复

使用道具 举报

38

主题

302

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2012-3-6
在线时间
5 小时
 楼主| 发表于 2014-9-10 11:06:24 | 显示全部楼层
回复【7楼】silente198587:
---------------------------------
多谢.这个问题已经解决了.
ES?全称?Embedded?Show;ES是由众多嵌入式爱好者组织的一个团队,致力于带领学生进步,帮助毕业生找到工作,更重要的是在职的嵌入式工作者提供自主外包和创业的机会。(详情进群查看) ES的宗旨是:交流共享与合作发展。ES?QQ群?第三群:152820643?。群内论坛有很多嵌入式开发模块解决方案可以参考。进群的立马共享自己做的模块简介。
回复

使用道具 举报

38

主题

302

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2012-3-6
在线时间
5 小时
 楼主| 发表于 2014-9-10 11:06:40 | 显示全部楼层
回复【7楼】silente198587:
---------------------------------
多谢.这个问题已经解决了.  
ES?全称?Embedded?Show;ES是由众多嵌入式爱好者组织的一个团队,致力于带领学生进步,帮助毕业生找到工作,更重要的是在职的嵌入式工作者提供自主外包和创业的机会。(详情进群查看) ES的宗旨是:交流共享与合作发展。ES?QQ群?第三群:152820643?。群内论坛有很多嵌入式开发模块解决方案可以参考。进群的立马共享自己做的模块简介。
回复

使用道具 举报

1

主题

20

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-11-22
在线时间
0 小时
发表于 2015-7-16 10:10:55 | 显示全部楼层
我也遇到硬件错误的问题了,可能是文件太大了
回复

使用道具 举报

119

主题

439

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1185
金钱
1185
注册时间
2015-9-18
在线时间
422 小时
发表于 2016-11-2 12:47:02 | 显示全部楼层
大神,小弟也想实现一个通过tcp进行远程IAP升级的实验,可是小弟不会写上位机
能帮忙给小弟这个上位机程序吗?感谢了
电子爱好者
回复

使用道具 举报

58

主题

359

帖子

0

精华

高级会员

Rank: 4

积分
987
金钱
987
注册时间
2014-9-29
在线时间
261 小时
发表于 2016-11-2 13:33:01 | 显示全部楼层
你的头像有点短啊
回复

使用道具 举报

35

主题

181

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1115
金钱
1115
注册时间
2016-8-1
在线时间
235 小时
发表于 2016-11-2 15:59:16 | 显示全部楼层
能换个头像吗
回复

使用道具 举报

38

主题

302

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
439
金钱
439
注册时间
2012-3-6
在线时间
5 小时
 楼主| 发表于 2016-11-24 18:28:48 | 显示全部楼层
liuchang 发表于 2016-11-2 12:47
大神,小弟也想实现一个通过tcp进行远程IAP升级的实验,可是小弟不会写上位机
能帮忙给小弟这个上位机程序吗 ...

上位机很简单的。只是读文件 然后 分包发
ES?全称?Embedded?Show;ES是由众多嵌入式爱好者组织的一个团队,致力于带领学生进步,帮助毕业生找到工作,更重要的是在职的嵌入式工作者提供自主外包和创业的机会。(详情进群查看) ES的宗旨是:交流共享与合作发展。ES?QQ群?第三群:152820643?。群内论坛有很多嵌入式开发模块解决方案可以参考。进群的立马共享自己做的模块简介。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 10:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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