一位台湾BIOS工程师的工作心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一位台湾BIOS工程师的工作心得
默认分类2008-05-14 22:06:42 阅读66 评论0 字号:大中小
分享一位台湾BIOS工程师的工作心得报告(转)
hi all
跟大家报告一下工作内容以及工作心得,其实之前po过了但是比较随便一点
找了一下也没发现自己以前的写的跑去哪了所以重写一次。
同时也是分享也是希望多让一些工作信息透明化,也希望多多少少造成抛砖引玉的效果。
小弟毕业四年工作两年。做的工作是开发HP服务器的BIOS。
小弟做这行的源由,就不多叙述了,直接进入主题。
目前业界,开发BIOS的方法有两种
1.一种有专门开发BIOS code的公司所提供的BIOS code 先帮你搞到可以开机,之后你在为自己的code 加强功能。
2.另外一种是自己开发BIOS code ,开发的工程师负担就会比较重,但是可以达到跟人家与众不同的效果,开发的秘密也不会被发现。(我们公司就属于这种的)
开发的过程:
当主板的版子电路等等硬件的部分都已经ready,(有可能是已经笔记本电脑的主板或是服务器的主板),当工厂把版子打好几块样本,我们就把自己开发的BIOS code烧到一颗ROM里面,然后把ROM(只读存储器)放在版子上,电源一打开,计算机就会去执行BIOS第一行的程序,开始做开机的动作。
这时候全天下的人都在观望你提供的BIOS是否能够顺利开机。差不多是一个礼拜多的时间给你,这时候是压力最大的时候,某某大头就跑来问,BIOS开机起来了没有,假如在短时间内可以开机,便有一笔奖金,若是拖太久,后果自行负责。基本上开机要能够开到操作系统,为第一阶段的首要目标,这阶段也是所谓的porting(移植)了。而新型的主板往往会有新的CPU跟不同的芯片,以及不同的架构,因此了解新架构(读技术文件就是很重要的一件事情),小弟我最近常就跑去听CPU 的新架构(AMD 的四核心跟八核心的架构),最近也在k新的spec。
BIOS工程师的培养过程:
BIOS工程师培养的过程是非常漫长的,我们相信一位学习两年的工程师是拥有基本功,就像是小孩刚学会走路般的脆弱,但是却已经可以帮忙做点家事了,因此就会开始负担起一些家事,完成一些资深工程师没有时间完成的小工作。已经光是学习的时间是很长的。当你有了五六年的经验,而有独立完成案子的能力,我相信这种人要请很难请的到。已经算是满重要的公司资产了。
新人刚进来公司,我们公司的新人训练流程如下
1从基本总线的架构要有所了解(ISA spec 跟PCI spec) 约一个月写PCI 程序约半个月
2.对于多CPU的系统架构要有所了解(MP spec)约半个月MP 程序约半个月
3.对于x86 CPU架构要有所了解(AMD SPEC or INTEL SPEC) 通常也是半个月
4.对于BIOS选单的spec 要有所了解(约一个星期)
5. 开始了解BIOS code 流程的架构以及三部分最重要的程序代码的架构约需要四个月
这时候差不多已经过了七个月多了,开始有一丝丝不算强烈的体会。
6.开始看其他部分的spec BBS spec (就是BIOS如何选择从哪种装置去执行操作系统like C槽A 槽)
看spec 一个星期看code 三个星期也是一个月
7. 开始让你摸摸主板,拿旧案子的主板让你玩,给你那块主板的开发文件开始模拟考,刚开始就是要看开发文件,系统架构、南北桥的
spec 跟datasheet ,其他辅助chip的的spec 约一两个月
8.开始看一些也是很重要但是相对次要的东西,譬如如何读取系统温度,控制系统风扇,向这两件事情,就是某个辅助的chip所做的事情,就是要看spec 也要看code是如何运做。这部分就是杂七杂八的但是有系统的去看,也是一两个月。
9.因为BIOS的领域太广了,所以各个重要的功能都会有专人去负责,譬如USB debug或Windows debug 或LINUX DEBUG 或ATA SATA (硬盘啦) 或CPU code 或Memory或ACPI 或IPMI
你要选个领域去专精.譬如USB 就要看懂USB的spec 大概有七八个PDF档(USB 2.0 spec xxx传输方式spec ooo装置spec) USB 的code ,还有USB debug 的方式.ATA 也差不多看懂spec 开始看code 如何跟硬件上的FW做沟通(USB 我花了四个月摸皮毛ATA 我也花了四个月摸皮毛windows debug 花了一个月学皮毛中的皮毛)
至今你会发现已经过了两年多,接下来也就是摸熟了一块换下一块.
至今我是个堪用的新人,可以做点小家事了.不过我们主管比较冲,我刚进来三个月什么都不懂就开始接案子以战养战恩效果的确不错
其他工作
顺便讲讲其他软件的工作
1.写Driver 其中有个team就是专门写Linux Driver 据说是改良一些Driver 我也不是很懂有时候开课会过去听一下
2.写测试程序其中有个team就是专门写测试程序给测试部门测试东西用
3.各种公司内部使用的系统:譬如一些管理系统有可能有好几套某个TEAM就要负责某一套也要负责起教育训练以及维护跟开发
4.测试工程师可能分成Windows 测试Linux 测试BIOS 测试效能测试各种网卡测试(以软件测试来说我们只有五个team 每个team约十几个人) 另外的就是硬体测试的部分了,基本上就是某层楼就是测试的部门
5.公司专利工程师但是基本上公司的专利工程师都是在专利事务所呆过几年的了
6.有时候因为任务需要刚好接到客户要求要做一些跟java程序的开发就会有比较熟悉高级语言的人组team 去接
大致上就是如此希望对大家职场上的了解有所帮助
/中国BIOS联盟BIOS工程师的伊甸园
BIOS 工程师通常要熟悉汇编语言(Assembly)、C 语言等,而且要仔细阅读与各种硬件设备有关的规格定义与技术文件,如各种CPU 的BIOS Programming Guide(BIOS 引导程序),与操作系统相关的规格,如Windows 操作系统的PnP(P1ug and Play,即插即用),ESCD (Extended System Configuration Database,扩充系统配置数据库),ACPI(Advanced Configuration and Power Interface,高级能源管理)等。总之,要时常去了解最新的各种设备规格,了解最新操作系统、应用程序与硬件规格的动态,这些都是BIOS 程序设计师经常要做的功课。对于硬件部分,也要有一定程度的了解,要知道各种零组件的Data Sheet(数据工作表)是怎么初始化(Initializing)、调整,从显示字符、接受使用者按键信息,到控制CPU、芯片组、内存、软盘、硬盘等所有琐碎的细节,都要自己来一步一步地去控制;但万一CPU 或芯片组出现错误,或者跟某一种类型的芯片发生不兼容的问题,这时得根据问题的严重性来进行某种程度上的搭配与解决。还有Flash 内存芯片的特性是,容量越大价钱越昂贵,而且现在缺货,因此主板厂商在做主板零件采购的成本分析时,当然希望采用的Flash 芯片容量越小、越便宜越好;而BIOS 程序代码长度能够压缩得越小,就越能烧到容量较小的Flash ROM 芯片,以缩减主板的成本,因此大多数BIOS 内部的程序模块,都是以预先被压缩(Compressed)的形式存储的,有必要时才被解压到映射内存(Shadow RAM)来执行,丝毫都浪费不得。总之,开发、维护BIOS 是一件技术含量很高的工作,而且会写BIOS 的专家,对汇编语言具有一流的超凡实力,对硬件设备的规格掌握也了然于胸,将来即使转移到显卡、磁盘控制卡或其他硬件去开发ROM 程序,想必也是游刃有余的;甚至对于今后PC 时代便携式信息获取设备(Information Appliance,IA)的研发,也绝对不成问题。