新手上路
- 积分
- 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貌似也有问题,等调试完了自己写一个算了。> |
|