OpenEdv-开源电子网

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

F107 用USB实现IAP时程序跳转不过去

[复制链接]

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-6-18
在线时间
1 小时
发表于 2014-6-18 15:15:23 | 显示全部楼层 |阅读模式
5金钱
    最近在用F107实现USB下的IAP,思路是这样的:在APP中加入USB功能,读取BIN文件,并写入flash的0x0801400(备份flash区),然后设置升级标志,在IAP程序中,当检测到升级标志时,会吧0x08014000区的内容复制到0x08004000(APP区), 然后实现跳转。

   现在的问题是:我将两段代码分别用JILINK下载到板子上,可以运行,也可以跳转,可以争取读取bin文件并正确写入到flash中,但是在此跳转时,就跳转不过去。会进入HardFault_Handler。
   如果我将去掉USB初始化的BIN文件读取,是可以正常跳转的。
   试图读取了寄存器,但是还是没有找到原因啊,有高手麻烦帮忙分析一下。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-6-18 23:47:15 | 显示全部楼层
第一次可以跳转,并正常执行,第二次就不行了?按复位后,第一次跳转,可以么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-6-18
在线时间
1 小时
 楼主| 发表于 2014-6-19 10:47:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
        第一次是通过JTAG吧APP下载进去的,然后重启后,可以正常跳转到APP,但是再次复位后,就跳转不过去了。
        我是这样操作的,用JILINK吧APP下载到板子里,然后,调试运行IAP程序,然后可以跳转到APP,并执行了从U盘读取文件写入flash;---然后再次复位,IAP程序开始复制完备份flash中数据到APP运行的flash中,然后执行跳转,就进入HardFault_Handler了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-6-19 22:53:08 | 显示全部楼层
回复【3楼】luting409@163.com:
---------------------------------
问题可能出在你U盘复制这个地方.

你别复制试试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2014-6-18
在线时间
1 小时
 楼主| 发表于 2014-6-20 09:43:28 | 显示全部楼层
回复【4楼】正点原子:
你的意思是我U盘读BIN文件的地方,这一块应该没有问题,我自信核对过读进去的数据,完全没有问题。

我现在自己调试了几天,现在的情况是,我用U盘读进去bin文件后,把U盘拔掉,已经可以正常跳转了,但是插入U盘程序还是执行不下去,我调试运行了一下,发现,用U盘升级完后重启设备,
      USBH_Open_Channel (&USB_OTG_FS_dev,
                           USBH_Machine.Control.hc_num_in,
                           USBH_Device.address,
                           USBH_Device.speed,
                           EP_TYPE_CTRL,
                           USBH_Machine.Control.ep0size); 

这一个函数执行不过去,一执行就进入错误中断了,这个是在检测到U盘,枚举之前用来打开USB端口的,我现在还在调试,不知道是问题出在哪里了
回复

使用道具 举报

11

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2016-7-19
在线时间
43 小时
发表于 2018-2-11 16:44:54 | 显示全部楼层
正点原子 发表于 2014-6-18 23:47
第一次可以跳转,并正常执行,第二次就不行了?按复位后,第一次跳转,可以么?

我也遇到了这个问题     第一次可以跳转   复位  第二次就不行了  复位 然后第三次  就又行了
第四次  不行  第五次 行  原子哥  这是怎么回事呀???
回复

使用道具 举报

11

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2016-7-19
在线时间
43 小时
发表于 2018-2-11 16:53:38 | 显示全部楼层
luting409@163.c 发表于 2014-6-20 09:43
回复【4楼】正点原子:
你的意思是我U盘读BIN文件的地方,这一块应该没有问题,我自信核对过读进去的数据, ...

您是怎么解决这个问题的   我的 现在   只要  没有跳转到app  拔出U盘以后  再按复位  还是  跳不进 app
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 07:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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