(请保留->发布地址: http://yiiyee.cn/blog/author/luobing/ )
今天拿到了测试板,可以把UEFI Oprom写到硬件里面去了。手有点痒,想写一个程序来试试。
测试用的板子非常简单,去除了所有实际的硬件控制元器件,只留下了WCH366和一个128K的ROM。不过按照沁恒电子的资料,WCH366只支持64K的寻址,而且还不能同时寻址,意味着我们只有32K的空间可以写代码。
做了十个,足够我折腾很长时间了。

测试用的板子非常简单,去除了所有实际的硬件控制元器件,只留下了WCH366和一个128K的ROM。不过按照沁恒电子的资料,WCH366只支持64K的寻址,而且还不能同时寻址,意味着我们只有32K的空间可以写代码。

我直接在已经实现的Option ROM代码上修改了一下,用来演示。如果有读过Foxdisk代码的技术同好,可能会发现我的代码有点熟悉:

如图,实际上很多代码确实是从Foxdisk中移植过来的,特别是图形和文字显示部分。毕竟这是为了开发产品而做的,我力图做到屏蔽底层细节。也就是说,所有和硬件打交道的部分,都提供同样或者类似的接口,让用户层去调用。
这是很自然的做法,由此能保证以前的一些工具和函数能够共用。比如提取汉字、提取图形,调试smbus的工具等,都可以直接或者略微修改就可使用了。
在Foxdisk中介绍了一些这样的工具(那个系列的博客还没有写完,后续会继续写),这里就不讨论细节了。
如何编写Option ROM,要放到比较后面的章节来记录。在那之前,还有太多的程序需要写,包括PCIE设备的访问、汉字显示、BMP/PCX图形显示、SMBUS访问等。今天主要试一下到手的测试板卡。
编译好了之后,我准备将ROM代码写入板卡。用DOS下的一个工具来刷写,沁恒电子提供的。
我的测试平台是AMD A8,MSI的BIOS。测试中发现,这个平台不支持大容量存储设备的PCIE ROM,将PCI子设备改为网络设备后可以了。(修改inf文件)

写入固件代码:

写完后重启,最后的显示效果:

大功告成!
3,246 total views, 1 views today
你这个测试板在哪买的呀,我们也想买来测试一下。
我才刚做啊,之前手焊了一点,都用光了