打造BIOS.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
打造BIOS

HYPERLINK /2007/11/x86-bios1.html 纯手工打造你自己的x86 BIOS(1) 存放BIOS的设备从早期都放在EEPROM到现在的Flash ROM,一路上的演变已经可以写成一部BIOS历史课本。 在早期的BIOS中,BIOS本身程序代码就是用来当成一个Boot Loader,但是由于后来的芯片功能越来越强大且BIOS除了初始化硬设备之外还要协助OS去支持一些功能,所以整个BIOS程序代码就已经变成了一个庞然大物,而维护整个BIOS程序代码也非一个人的能力所及。 因此后来的BIOS程序代码都是由一些BIOS供货商来负责维护,各家BIOS供货商会有自己的撰写方式与架构。正因为如此,开发BIOS的程序代码目前也都是使用各家厂商所提供的开发环境来建构。 而这篇文章的目的在于如何在目前的PC架构下纯手工打造一个属于自己的BIOS环境以及撰写一个简单的BIOS程序代码可以让系统输出一个值到Port 80h,我同事问我为什么不写一个mini BIOS可以开到DOS下去,因为如同我上述所说,写是可以写啦,要花很多的精力跟体力,这边只是抛砖引玉说一个大概,然后描述一下如果自己真的要撰写一个BIOS 要如何做? 或许有些人有兴趣可以找几个朋友一起写BIOS,或许哪一天就可以开ㄧ家台湾BIOS供货商...(呵呵,我自己在幻想啦!) 需要用到的工具以及相关知识: 1.MASM 6.15 2.Turbo C++ 3.0 3.基本汇编语言撰写能力 4.基本C语言撰写能力 5.IA32 Spec vol 1~3 6.EC BIOS ROM(可以请EC BIOS Eng协助) 实验目的与方法: 1. 建立一个BIOS 开发环境 2. 建立一个1MB BIOS ROM file 3. 利用汇编语言撰写一个64kb 大小的BIOS程序代码的 binary file 4. 利用C语言撰写一个Build Tools,并将EC与64k BIOS塞进去1MB BIOS ROM 5.利用烧入器将1MB BIOS ROM烧入到MLB中,并且上电后检查Port 80h是否有正确的输出我们程序代码中撰写的值。 上面的程序撰写部分不需要很强的能力,只要基本的C或是汇编语言语法就可以了,所以算是基本入门,重点还是在我ㄧ直强调的地方 懂架构才是重点,程序语言只是工具而已...。 HYPERLINK /2007/11/x86-bios2.html 纯手工打造你自己的x86 BIOS(2) 计算机发展至今已经经过了很长的时间,许多遇到的问题也都被ㄧ些前辈解决了,因此目前学校或是市面上的书籍几乎都是讲解如何在一个现成且成熟的平台上发展。 例如很多书会教你写VC/.net/Java ,但是,说到如何去写编译器、操作系统及开发BIOS的书就不多了,也因此大家比较专注于如何在成熟的平台上能够快速/有效率/有系统性的开发以及提出解决问题的办法,而像我因为兴趣而去探讨BIOS的本质的人就应该比较少吧,毕竟这些问题在之前的前辈都已经遭遇过,也提出了很好的解决方式,所以才会有目前一些实力坚强的BIOS 供货商的存在,因此也没必要像我这样纯手工打造。 在前ㄧ篇的文章中我已经大致上描述了一下我的实验方式,这边就针对整个流程作ㄧ些详细的介绍。 在纯手工打造你自己的x86 BIOS(1) 中有提到,你可以学习到的东西是比较基本的概念,所以我并不会把完整的Sample code贴上来,毕竟教钓鱼比给鱼吃还重要,因此请大家轻松看待我的拙作(小弟也只入行1年多 ,还请前辈还多多指导)。 前一篇文章中所提到的核心部份在于我撰写了64K 的BIOS程序代码 (MyBIOS.asm),实际不到64k ,只是我利用了填00h的方式填满到64k。 而组译与连结是透过ML.EXE ,输出的是一个MyBIOS.exe ,而这个是一个DOS下的执行档,所以里面有MZ Header ,因为被多加了这个Header 因此MyBIOS.exe约65k ,而我会再利用Build tools取出里面的64k ,然后变成MyBios.bin,当然这只是最简单的方法而已,但不是唯一。 [注] EXE2BIN 只能转换小于64k 的档案,所以这边不能使用它,所以我才自己转换。 当取出了MyBios.bin 之后连同EC.bin 经由Build.exe 产生一个1MB 大小的BIOS ROM Image file,然后把位置固定住。 固定地址是因为: 1. 我的范例中的Platform 上面的EC Controller是采用Share ROM方式,也就是把EC BIOS包在System BIOS中,因此我们需要固定住地址,这样子EC Controller 才能去System B

文档评论(0)

书房 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档