Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15317658
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: LINUX

2008-05-28 16:49:39

使用同一个u盘安装的ubuntu-7.10操作系统的两台电脑,
一个AMD处理器(DELL OptiPlex 740)
一个Intel处理器(DELL OptiPlex 330)
安装完成后两台电脑均使用gcc4.1.3、g++4.1.3编译器对gliethttp_flash.c进行编译,
结果分别生成的gliethttp_flash.ko文件使用diff比较之后,出现不同,
ls -l发现两个文件大小竟然都不一样,

125431 AMD处理器(DELL OptiPlex 740)
125335 Intel处理器(DELL OptiPlex 330)

怎么会这样溺?

经过询问,原来两台机子,一台机子经过了ubuntu升级,另一台没有经过ubuntu升级,但是并不是这里的问题,
因为都经过升级后,依然不同,对于升级所说的lib库,因为编译的是ko内核驱动程序,所以和用户态的库并无关系,

另外因为Intel处理器(DELL OptiPlex 330)的指令cache和数据cache都比AMD处理器(DELL OptiPlex 740)大,
所以Intel处理器(DELL OptiPlex 330)上运行的程序要快很多也是正常的!!

先下载userdata.img然后烧写会消耗一定时间,接下来
下载system.img然后又会烧写消耗一定时间,最后
下载剩下的7个小文件,一般都是在下载system.img的时候出现异常,那么干脆
将userdata.img和system.img分别制作成.mff文件下载,将另外的7个小文件制作成单独的.mff文件,
这样能够临时的使用usb下载烧写文件,不查了,浪费时间,实在是找不到问题在哪了,唉!



ps:可以肯定的是pc确实已经把通信数据发送下去了,在调用read的时候,一直不能等到设备返回应该返回的状态信息,协议上可能不存在丢包后数据重发机制,所以可能确实是因为pc下发的数据包丢失了,所以设备端因为没有收到数据,以及校验包完整性措施,进而,不能和tcp/ip数据传输那样有很好的容错能力,看来marvell设计的这个通信不成熟阿,
所以在协议设计上,对丢包处理、数据干扰后的校验重传机制等对任何产品来说不是必要的,而是必须的,所以文件切包之后进行包序号标记是很有意义的,可以参考成熟的tcp/ip数据传输、校验、重传等方式![gliethttp_20080529]

ps:所以从这里来看,所谓的设备通信不稳定,就是在于设备对丢包和误码处理不完善,虽然bulk类型端口的通信能够保证数据传输正确性,但是不能保证因 为线路干扰严重或者系统自身的问题超过bulk内定的重试次数之后引起的丢包现象![gliethttp_20080529]
阅读(2028) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~