3GO模拟飞行网|3GO Cyber Air Force

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: austin

[通告] 购买了猪肝的兄弟们请注意,不要像我这么手贱

[复制链接]
发表于 2011-2-21 16:24:26 | 显示全部楼层
刚才浏览了一下外国的网站论坛,包括ED和一些其它的外网,才发现猪杆Firmware update的问题不胜枚举,从去年12月份就有了,并不是更新了较旧的固件而产生问题,有些是正常的更新也是如此。而且已经不是小概率性事件,问题如出一辙,升级失败后右手杆失效,导致大量玩家不敢升级。而且给Thrustmaster去信也基本上没有回音,这说明至少是目前,HOTAS WARTHOG的固件升级是极其危险和不稳定的,是好是坏要看运气和人品了。我也奇怪,这么严重的问题在国内却极少有人提及,至少是在昨天,在我拿到杆子前没有看到这方面的案例报道。也许是大意,也许是过于兴奋,以至于一向谨慎我在收到货后没有留意561在淘宝上的留言,当看到第一起报道贴子时,一切都太晚了,这也算是经验教训吧。
发表于 2011-2-21 16:31:52 | 显示全部楼层
不要急,肯定有解决方法。
发表于 2011-2-21 16:40:34 | 显示全部楼层
已经联系法国方面,当然比给他写信要来的真实。
发表于 2011-2-21 16:55:45 | 显示全部楼层
转几个比较有代表性的帖子。

这个Teej可能是TM的内部人员,但是他又说自己和TM的客服没有关系,可能属于别的部门。他是拿XBOX360做反面教材来对比猪肝的故障率。统计出在那段时间内出问题的杆子好像有六七个,而且多数不是像山沟里这样升级固件造成的,而是更邪乎——什么都没干,好好的放在那里,第二天再用就不识别了。故障多见于左手油门。他认为3%的故障率算不了什么。
thread1.png

谢谢Pilotasso对Made in China stereotype的再次强化,不过6Σ质量控制标准确实很有道理,3%的故障率确实算是很高的了。
thread2.png

Teej对杆子故障率的解释:
thread3.png
他说零件品质所导致故障率的正态分布曲线是个浴池截面形状,从产品发售之日开始,会出现一段故障高发期,通常是个别次品电子元件失效造成的,在前几个星期过后,故障率会递减,分布曲线形似浴池一端越来越深。直到曲线达到浴池底部的水平线,这是一批产品真正稳定下来的时候。这段时间故障率维持在均衡的低水平。直到产品达到设计寿命,这批产品会陆续失效,再次出现一个故障高发期,分布曲线形似浴池另一端越来越高。

如果符合这种曲线分布,说明设计没有问题,而是产品原料的问题,换句话说是俺们世界工厂替TM背黑锅。但是现在都过去两个月了,还这么邪乎就是设计问题了。PC端软件功能设计缺陷是大家前面都说过的。昨天好像听说在真正升级之前应该先把新的固件文件下载到本地,但如果不小心没有下载到本地就去点升级,居然也能升,就是不知道PC端软件把什么东西写进猪肝的芯片里了。它这个PC端软件进行这种关键操作之前就不能先做一个基本的握手校验吗?

昨天545帮我抓了猪肝升级固件过程的数据包。我发现他们是用摇杆的报告数据(HID Report)来升级固件的。这种机理有一个隐患就是HID接口太通用,与CDC或DFU类相比,遇到第三方软件发疯的时候被误写入的几率相对较高,估计这就是TM后来发布固件版本声称可预防这种情况的原因。

至于他们说的hard reset我相信山沟有人试过。我没杆子所以不知道是同时按住哪两个按钮再插入杆子。ED官网上那几个老外多数都返厂了,有的再次收到杆子都没敢用,就等官方出一个最终解释。此前官方只是私下发了一个读取芯片内部flash的小软件,让用户先hard reset,然后运行软件读出猪肝内部的程序,发回TM帮助他们分析。而杆子本身仍然需要返厂才能搞定。
发表于 2011-2-21 18:12:11 | 显示全部楼层
那个Hard reset 的Flash小软件我下了,也试过了,产生一个不知用什么才能打开的文件,后来一看没用全删了,情况看起来不太妙,这情况不是一两天了,也没见TM有什么解决的方法。老外的杆子处理方法最终的确是换新杆来解决的。
发表于 2011-2-21 18:22:14 | 显示全部楼层
估计是硬件的芯片或者类似BIOS之类的东西被刷了错误的数据,得等新的ROM了
发表于 2011-2-21 18:32:56 | 显示全部楼层
那个Hard reset 的Flash小软件我下了,也试过了,产生一个不知用什么才能打开的文件,后来一看没用全删了, ...
panzer0001 发表于 2011-2-21 18:12



    那个文件是芯片内固件的镜像。官方是指望你把这个文件发回TM帮助他们做分析的。他们分析的时候第一步就是用这个文件和以往的版本进行二进制比较,如果同某个版本完全吻合(每个字节都相同),他们也没有办法。ED有人遇到过这种情况,说没发现异常,请在别的电脑上试试你的杆子。
发表于 2011-2-21 19:10:09 | 显示全部楼层
hard reset 如何操作,有高手知道不
发表于 2011-2-21 19:57:31 | 显示全部楼层
估计是硬件的芯片或者类似BIOS之类的东西被刷了错误的数据,得等新的ROM了
foxwxl 发表于 2011-2-21 18:22


我扯点闲犊子,无法解决实际问题,旨在解惑。求奇迹者慎入。

那个东西类似电脑的BIOS,严格来讲叫做boot loader,其实就是ROM里的一段代码。bootloader是与application对立的。Application是实现产品主要功能的代码,也就是我们所刷的这部分固件(firmware)。

猪肝插入USB口,芯片开始工作,从复位地址开始运行。Bootloader代码入口就在复位地址的位置,这个和电脑BIOS的运行顺序是一样的。

任何电子系统上bootloader要做几件必要的事情:
1. 检测application存储区是否为空。通常application的入口地址上有几个字节的值是固定不变的,无论什么版本的新固件都不会变。如果检测到这几个字节存在,则认为这个产品有效,bootloader会让程序跳转到application的入口开始执行。如果未检测到这些字节,则认为产品没有初始化,这时应当等待写入application。至于怎么写入,是否提示,各家做法不一。
2. 在需要写入application时,首先要自己安排好应该写到存储器的哪段地址,这个需要简单的初始化。
3. 在需要写入application时,建立一个从外界获取新application的渠道。这个取决于芯片的资源,有的用大家不熟悉的接口,这里猪肝当然用USB。所以bootloader自身会让电脑把它识别成一个USB设备,接下来才能通过USB接收新固件。

还有些可选的功能,比如尽管bootloader检测到了application的特征,但是由于这个application有bug,或者其它原因,我不想让它跳转过去执行application。那么我可以强制让它开机后停留在bootloader里面,执行一些只有bootloader才能做的事情,比如强制刷固件,比如读出固件,比如自诊断,比如其它神马诡秘的工作。那么我可以hard reset。猪肝就有这个功能,插USB之前按住两个键,bootloader每次启动的时候都会检测一次这两个按键。如果发现被按下,则无论application区的数据是否有效,猪肝都认为无效,拒绝跳转至application。

另外要提的就是我application已经运行上了,要想升级怎么办?这就是application本身设计的功能了。我们在电脑上点升级固件的时候,其实是通过USB向正在运行的application发了一个命令,application接到这个命令后会用某种方式把芯片的管理权限重新交给bootloader。最重要的是,芯片此刻不会去存储application的空间运行代码,因为那段代码要被覆盖了。而Bootloader所在的空间是安全的。这时候芯片的工作状态和hard reset后是一样的。都是bootloader掌权的状态。

不考虑芯片本身损坏的情况,如果仅仅是application数据被损坏,bootloader未被改动的话,只要hard reset都可以进入bootloader。按理说这个和用户点击升级固件后最终达到的状态是一致的。但实际上由于先前执行过的代码所产生的效果不一定全被取消,因此不能保证这个状态真一致。也就是说,正常杆子插上去点升级固件可以升级,hard reset插上去还用TM软件,还点升级固件就不一定能升级。这样用户就不一定能自己通过hard reset来修复猪肝的问题。

更糟的情况是bootloader损坏,这个类似电脑的BIOS刷死。杯具程度很明显,但也不是硬伤,并不可怕,返厂即可……反正要返厂的。这个原理如下:

芯片的boot loader大致分为两类,一类是硬的,一类是软的,但归根结底都是软的 ,因为本质都是一段代码。

所谓硬的就是代码在生产芯片时一次性固化在芯片里头,就算工程师拿专业编程器也无法修改的。软的就是工程师自己写的一段程序,起到修改其它位置程序的作用,这个工程师可以改。猪肝的bootloader就是软的,是TM官方的工程师自己设计的。

这年头微控制器芯片里的存储空间常见的有三类:SRAM、Flash、EEPROM。

SRAM功能等效于电脑的内存,在芯片里专门用来存储数据,小部分做保留功能用,这玩意里头存的东西掉电就丢。
Flash就是闪存,跟U盘里的差不多。芯片里闪存很小的,估计猪肝那片也就几十KB的容量。Flash寿命有限,平均能擦写十万次左右吧。所以每升级一回固件就消耗一次。
*因为硬盘太慢,电脑运行程序都是从硬盘调进内存运行的,PC指针的地址都是指向内存,当然数据也放在内存里。而常见的芯片不一样,内存里只放数据,程序直接从flash里跑。RAM狂奔的芯片这里不提。
EEPROM可有可无,通常只用来存数据。这些数据可掉电保存,下次开机不会变的。而且通常EEPROM擦写寿命是Flash的10倍左右。有些数据总去改它的话,鸭梨比直接改flash要小很多。

那个bootloader,无论软硬,都是存在flash里的。我们刷新固件,也是存在flash里的。杆子再牛屄,再不给力,都是这几十KB甚至几KB的flash搞出来的幺蛾子。允许刷固件的芯片,指令集都支持擦写自己的flash。记住前面说的程序也是直接在flash里面跑的,这个潜在的风险就是搬起石头砸了自己的脚,一段程序把自己马上要运行的位置给写乱了,这个程序肯定就跑飞了,接下来就是死机,或者无法预料的神马现象。

bootloader和application这两个对立的概念就是为了避免风险而产生的:把flash空间分成两部分,让程序在一部分里面跑,用来升级另一部分。如果application自身也具备擦写flash的功能,那在运行application的时候就可以把二者关系倒过来看了。这时候就可以通过application来升级bootloader。但如果这个过程失败,你就糗大了,开机连hard reset都没门,因为芯片的复位地址在bootloader那里,application再完美也没用。

我不知道连hard reset都不好使的那些杆子是不是遇到了这个毛病。但我觉得猪肝根本没有必要在application里面设计一个升级bootloader的功能。这种规模的小系统,一个bootloader够丫用上十年了,干嘛去升级。所以觉得这里头可能还有别的什么问题。
发表于 2011-2-21 20:47:05 | 显示全部楼层
Cougar倒是可以很方便的刷固件

在非官方的Thrustmaster HOTAS Cougar New User Guide 里,要求首次使用就刷固件

而且作者写的非常详细

哈哈
发表于 2011-2-21 22:36:44 | 显示全部楼层
我就是看了这篇文章,到手毫不犹豫不管3721的升级,结果杯具
发表于 2011-2-22 09:33:24 | 显示全部楼层
我就是看了这篇文章,到手毫不犹豫不管3721的升级,结果杯具
kuku 发表于 2011-2-21 22:36


我晕,更不不是一个杆子啊!!!
而且,这个新手指导里,都说了要按指导一步一步来
老杆子都要如此谨慎升固件,何况新的猪肝
发表于 2011-2-22 19:36:11 | 显示全部楼层
前车之鉴 引以为戒
发表于 2011-2-22 23:08:30 | 显示全部楼层
卧槽,这年头杆都可以刷了啊。。。。。谁知道有没有可以刷的鼠标。。。。。
发表于 2011-2-22 23:41:58 | 显示全部楼层
我做个可以刷的闹钟蛋疼一下?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|3GO模拟飞行网|3GO Cyber Air Force ( 沪ICP备08002287号|沪ICP备14050587号 )

GMT+8, 2024-5-19 04:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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