Board logo

标题: 我参与的一个x86平台项目的经历 [打印本页]

作者: look_w    时间: 2017-10-24 23:07     标题: 我参与的一个x86平台项目的经历

今年是第一次完整参与一个项目的方方面面——当然,是站在开发人员的角度的,至于市场需求收集,采购元件生产,新品发布,销售拿钱,就不可能有我的份了。以前参与项目,都是只负责一点点东西,而且中后期完全处于边缘状态,有事就找,没事就忙别的事,我在之前写的年度总结文章也提到我都不好意思参加项目聚餐了。这次比以前有进步,想了好久,觉得有必要写一写自己的经历。下面的话,是从作为开发人员的我的角度出发来描述的。
中秋节过后,即9月中旬,老大找我让我做一个项目的方案负责人(即负责实现某一个方案),于是我就开始了这个项目涉及到我那部分的初期调查研究。到2月中旬,阶段性验收完毕。小半年就过去了,时间过得真快。
起初,我一听到方案负责人心就慌,自打来公司这么久,一切在搞底层并做些杂事,对于公司的代码架构等,可以说不熟悉。同时,这个项目是基于x86平台的,之前也没搞过。老大又说这次我们采用第三方厂家做好的主板,我们直接拿来用,只用开发应用程序即可,我很关注技术支持的问题,于是问内核啊,驱动啊,SDK啊有没有,回答说目前还不了解。
开始我对这个项目还没有什么整体认识,很多概念都很模糊,于是发了电子邮件向有关领导询问,主要是想得到一些疑问的明确答案,但却没有得到回复。部门例会上主管还专门就此事做了讲话,以至后来我不敢不做调查就发问题出来,后来有很多问题也是自己在网络上四处搜索得到解决的。
接着我进行了Linux内核和根文件系统的构建——此时我对提供主板的第三方厂家的支持不抱希望,只要自己公司要进行的东西,都得自己掌握,因为原原本本用现成的,到时候出了问题都不知道找谁。基于这个想法,我决定了自己裁剪内核,自己构建根文件系统。其实内核的裁剪更多的是内核的精简,主要是去掉不必要的模块,因为是x86的平台,直接用现成的基本配置就行了,这由另一个同事负责完成。而这期间,我同时着手构建系统,本想用LFS的,但太耗时了,后来找到一个ubuntu下的工具,于是决定使用这个工具来完成。先是用虚拟机做测试,测试没问题后再搞到主板上外接的硬盘上。之后就直接在板子上进行完善。这过程真的学习了很多东西,像硬盘分区UUID啊、grub安装配置啊、重定向控制台啊、网上名称修改啊、日志配置啊、硬盘分区拷贝啊,都一一接触了,确实学到不少东西,见识增长不少。而为了将系统内容搞到硬盘上,又接触了Linux的Live CD,还专门研究了一下。因为使用现成的x86平台的Linux系统,有太多的不必要的东西(比如xorg,我们项目用不到,平时观察到与界面有关的进程占了不少资源),最终使我做出自己构建的决定。不过这个过程耗时也很多。
接着就是驱动了,主要新加了2个驱动,一个是基于SMBus操作如LED、GPIO的控制驱动,一个是基于PCI的SPI Flash的驱动。前一个驱动由厂家给出demo,我们自己进行移植,这个驱动比较简单;后一个驱动是参加了开源项目coreboot进行移植的,由于flash有点特殊,搞了好久,我定位到是主板BIOS搞了什么而导致驱动不正常,这是我不断看datasheet,不断实验,最终得到结论的。最后在厂家修改BIOS情况下顺利完成,这也证实了我的判断。厂家所谓的技术支持,就是提供了一个驱动的demo,修改了BIOS。
说起BIOS,有些事不得不提,在我移植Flash驱动时,需要更新BIOS,而厂家给的更新BIOS只有一个EXE程序,一个BIN文件,一个很简单的说明文件:在DOS下,执行以下命令。某部门不太懂怎么在DOS下执行程序,或者说怎么进入DOS,我想靠他们不知要得到什么时候,而恰好我又得更新BIOS来验证驱动的正常性,没法,只好自己找资料了。好容易找到方法更新BIOS了,结果所有的主板的BIOS都要我来更新——因为只有我知道方法,后来又不得不截图、写文档教人怎么更新BIOS。对于此类杂事我意见十分大,但不上达,又得自己吞下去。
一路跌跌撞撞,所谓的“底层”、“平台”的东西,算是基本搞好了。接着就是业务程序了。其实这时候,项目时间已经过了一半了,前面提过,我对公司的架构不熟悉(只有代码,没有文档),但作为方案负责人,不得不面对,于是收拾心态看代码、学习代码。其它项目参与人员只有负责其中一个或多个模块,已经在该模块研究很深了,我当然不可能做他们的东西。于是我实际上是一个“整合”人员。即哪些出问题了,先反应到我这里,而我分析后给出相应的人员,对于一些项目前期没有明确的模块,只好我搞了。在此过程中,遇到了几个只用改一个字符就可以解决的“难题”。同时我也担任着提交测试的人员,即我负责向测试部门提供测试的资源、软件版本。由于某些原因,机子不够用,领导又安排我做资源协调人员。
到后期,我又跑到外场和测试人员一起测试性能、指标等等。测试人员第一次去外场时,不太懂设备怎么用,怎么配置,后来反馈到项目经理处,我的观点是领导不安排我去外场,我是不会去的。有一次,气温只有6摄氏度,我和测试人员2个人在外面呆了3个小时,实在冷得难受。
最后终于迎来了产品经理的审查,第一阶段可以宣告结束了,产品经理提了很多意见;接着我们又要迎接下一阶段的修改了。

后记:
在这类很多方面都基于第三方厂商的合作过程中,厂商的支持力度是十分关键的。不过有些事并不是想当然的,即使我一再提及需要厂家提供什么样的支持,如果没有,那也不能强求。另外,我真的不想再做像上面所讲的项目的角色了。不但累而且还不受待见。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0