OpenEdv-开源电子网

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

STM32F4 IAP求教

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-3-11
在线时间
0 小时
发表于 2013-3-11 10:57:04 | 显示全部楼层 |阅读模式
    使用ST官方提供的F4的基于以太网的IAP例程中的http方式将上传的BIN文件下载到FLASH中后从FLASH中读出发现开头竟然是文件的路径信息(如图);而我直接使用JFlash下载BIN文件到FLASH中则是正常的(不会有路径信息)。

    请问诸位大侠,有人用过这个例程吗?这是什么原因?莫非是官方的httpserver有问题?





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

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-3-11
在线时间
0 小时
 楼主| 发表于 2013-3-11 11:18:47 | 显示全部楼层
没人有用过这个例程吗?  。。难道大家都没出问题,就我悲剧了?%>_<%
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2013-3-11 11:19:17 | 显示全部楼层
用WINHEX打开看看。
不应该含路径的哦
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-3-11
在线时间
0 小时
 楼主| 发表于 2013-3-11 11:42:45 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
我用UltraEdit打开看BIN文件,内容的前四字节是 B0 84 00 20,我用FLASH直接下载进去的话,在0x08010000地址的内容刚好是0x200084B0(倒序),是合理的。。。不明白为什么用http就会带上路径信息了。
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-3-11
在线时间
0 小时
 楼主| 发表于 2013-3-11 12:58:47 | 显示全部楼层
求教啊。大家用例程都没出现问题么???
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-3-11
在线时间
0 小时
 楼主| 发表于 2013-3-11 13:02:32 | 显示全部楼层
哪位好心人发个可用的例程让我参照下调试下也行啊,376209377@qq.com
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2013-3-11 15:10:50 | 显示全部楼层
原来是没有 的,发送过去有,说明不是bin文件的问题,应该是你处理上,哪里没注意,跟踪下源码,就好分析了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-3-11
在线时间
0 小时
 楼主| 发表于 2013-3-11 17:44:18 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
问题终于找到了,感谢原子哥的提示。前后摸索了一个星期左右。。。我一直以为是我操作有问题。。最终问题还是出现在官方的源文件中。。看来不能迷信官方资料。。


最终还是官方例程中的HttpServer有问题,估计是HTTP协议更新了但ST官方人员移植没有更新相关处理的原因,又或者是BIN文件在HTTP协议中不是以octet-stream形式(无文件格式,二进制流)而是以text/plain形式传输的原因,总之从我开始发的图片可以看到,FLASH中多写入了很多额外的信息,此外在0x080100E0那一行可以找到BIN文件的开头B0 84 00 20,因此很显然是数据指针指错。然后对照图片右侧的ASCII码可以发现上面一行指定了Content-Type 为 text-plain。直接百度:http content-type,找到一个对照表 http://www.ostools.net/commons ,之后的问题就迎刃而解了。主要是在httpserver.c两处类型处理的地方修改以下代码就OK了。

 /* parse packet for the octet-stream field */
             for (i=0;i<len;i++)
             {
               if ((strncmp ((char*)(data+i), octet_stream, 13)==0))
               {
                 DataOffset = i+16;
                 break;
               }
//增加对plain类型的处理  
 if( (strncmp ((char*)(data+i), plain, 6)==0))
{
 DataOffset = i+9;
 break;
}
             }
----------------------------------------------------------------------------------------------------------
FLASH中的内容终于正常了。但是一跳转就进HardFault,而且官方的tftpserver方式的IAP貌似也有问题,等调试完了自己写一个算了。>
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-3-11
在线时间
0 小时
 楼主| 发表于 2013-3-11 18:05:40 | 显示全部楼层
回复【8楼】Kael_Zhou:
---------------------------------
经测试不修改官方例程直接将BIN文件后缀去掉也可以。或许将BIN文件的默认打开方式设置为无也可以吧(我的BIN文件默认是记事本打开的),未测。

跳转HardFault是我粗心用错BIN文件。

摸索tftp方式IAP中、、、
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2013-3-11 18:10:52 | 显示全部楼层
恭喜
回复 支持 反对

使用道具 举报

1

主题

20

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-11-22
在线时间
0 小时
发表于 2015-7-13 17:09:30 | 显示全部楼层
我也遇到类似的问题了!在写到FLASH的bin文件的末尾多了一些后缀,原来是协议更新了,没能把非bin文件滤掉。。。我回头改改。。。多谢多谢!
回复 支持 反对

使用道具 举报

1

主题

20

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-11-22
在线时间
0 小时
发表于 2015-7-16 09:48:51 | 显示全部楼层
我的bin文件多后缀的问题解决了,跟楼主类似的情况,是bin文件后面多了一些字符串,只要在程序中处理一些,略去这部分字符即可。
但有了一个新问题,写较小的bin文件工作正常,写较大的bin文件则进入harddefault。。。这个原因是什么呢?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 21:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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