概述
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)
今天拿到了测试板,可以把UEFI Oprom写到硬件里面去了。手有点痒,想写一个程序来试试。
测试用的板子非常简单,去除了所有实际的硬件控制元器件,只留下了WCH366和一个128K的ROM。不过按照沁恒电子的资料,WCH366只支持64K的寻址,而且还不能同时寻址,意味着我们只有32K的空间可以写代码。
做了十个,足够我折腾很长时间了。
图1 测试用的小板卡
测试用的板子非常简单,去除了所有实际的硬件控制元器件,只留下了WCH366和一个128K的ROM。不过按照沁恒电子的资料,WCH366只支持64K的寻址,而且还不能同时寻址,意味着我们只有32K的空间可以写代码。
图2 WCH366 spec
我直接在已经实现的Option ROM代码上修改了一下,用来演示。如果有读过Foxdisk代码的技术同好,可能会发现我的代码有点熟悉:
图3 代码列表
如图,实际上很多代码确实是从Foxdisk中移植过来的,特别是图形和文字显示部分。毕竟这是为了开发产品而做的,我力图做到屏蔽底层细节。也就是说,所有和硬件打交道的部分,都提供同样或者类似的接口,让用户层去调用。
这是很自然的做法,由此能保证以前的一些工具和函数能够共用。比如提取汉字、提取图形,调试smbus的工具等,都可以直接或者略微修改就可使用了。
在Foxdisk中介绍了一些这样的工具(那个系列的博客还没有写完,后续会继续写),这里就不讨论细节了。
如何编写Option ROM,要放到比较后面的章节来记录。在那之前,还有太多的程序需要写,包括PCIE设备的访问、汉字显示、BMP/PCX图形显示、SMBUS访问等。今天主要试一下到手的测试板卡。
编译好了之后,我准备将ROM代码写入板卡。用DOS下的一个工具来刷写,沁恒电子提供的。
我的测试平台是AMD A8,MSI的BIOS。测试中发现,这个平台不支持大容量存储设备的PCIE ROM,将PCI子设备改为网络设备后可以了。(修改inf文件)
图4 测试平台
写入固件代码:
图5 写入固件
写完后重启,最后的显示效果:
图6 显示效果
大功告成!
最后
以上就是安静小伙为你收集整理的UEFI开发探索12 – Oprom测试板的全部内容,希望文章能够帮你解决UEFI开发探索12 – Oprom测试板所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复