鼓捣中兴的TCM SSX44B

这次折腾的厉害,所以我不得不多啰嗦几句,来发散我精神上的疲劳。

 

3个星期前,James让我看一下SVE02的主板加上TCM卡后为何会停在87,当时很天真,没有板子给我,让我试着解决这个问题。

我盯着phoenix的代码啃了一天,发现有一个叫做MP的driver ROM必须由TCM厂商提供给我们。于是跟Nationz的FAE联系,让他们给driver和BIOS porting guide。Nationz的中文名字叫国民技术,之前看吓了一跳,还以为是中科院的产品呢,暗自高兴了一下,说咱们都和中科院接轨了,不错呀不错,后来看到spec里的ZTEIC,才发现是中兴。

 

FAE告诉我,TPM和TCM命令的格式不一样,数据帧长度不相同,让我务必拿掉原有的TPM代码,自己动手重写TCM的程序,妈呀,这项任务艰巨的如山,凭着职业感觉立马问他们要sample版代码,他们说没有,我问有没有AMI的,他们说之前AMI有为国内的某电脑厂商写过代码,但他们没有,我随即让Nancy帮忙去问AMI的老同事,结果他们内部也看不到这个module。既然希望全无,那本小姐就自己来吧。

 

花了20个小时研读完ZTEIC的BIOS porting guide,理清了他们ROM有提供的各种function,命令的格式以及如何下命令。又花了一天时间看phoenix原有的代码,发现区别不是太大,phoenix毕竟是按照TPM1.2的国际标准来写code的,中兴的是按照中国内部的标准来写的,真具有中国特色!就为了这个中国特色,花了我20天的时间,茶饭不思,苦苦追寻,我不止一次的感叹为什么还要停留在80端口的debug阶段,是谁如此执着要用中兴的这个卡,James也很无奈的告诉我说是客户ViGood指定的,他认为中国一家亲。。。就在昨天下班的时候,我真的是打算放弃支持这张卡了,跑到Window7的引导程序时系统就重启的问题怎么都解决不了。我的小眼睛都开始委屈的泪眼婆娑了。今早上班时,看《鬼吹灯》看的身临奇境时,James来问我TCM的进展,我赶紧停下找Nancy帮忙一起看。自己突然一个机灵,几分钟后把这问题解决掉了,解决这个问题只需要一句代码,或者说一个单词“ret”,哈哈。我想起了划一条线1元钱,知道在哪里划线999元钱的故事。我很庆幸今天还做了一次努力。

 

总结,这个SSX44B和phoenix TPM 1.2的差异在于:

1 - MP ROM会用eax寄存器来作为入口参数- function number,而非al。

2 - MP function退出时是以retf的形势,所以在调用之前必须先让CS入栈,再去call function。

3 - 在TCM init function做完之后,必须先做startup的动作,后续TCM才能接受下给它的其它命令。

4 - phoenix用cmosMultiCmdPpOperation作为一个flag来记要不要去执行例如force clean, enable, disable之类的动作

5 - 必须拿掉int1a里所有跟hash运算相关的function,因为TCM的hash算法机制和WIN7默认的TPM是不同的。

 

 

你可能感兴趣的:(算法,function,Module,中兴,任务,产品)