请保留-> 【原文: https://blog.csdn.net/luobing4365 和 http://yiiyee.cn/blog/author/luobing/】
有段时间没有更新博客了,最近大部分时间都用在公司项目上、以及整理书稿了。在整理书稿的过程中,到了讲述PCIe协议这章的时候,总觉得只是介绍协议和UEFI代码,未免有点太枯燥了。
因此,我把之前写好的章节全部推翻,介绍PCI协议的内容,改为做一个PCIE的开发板,并动手实现板卡的UEFI Option ROM。
也就是说,我按照想象开发了带Flash ROM的PCIE开发板,把UEFI Oprom代码灌入,设备插在计算机上,就可以显示编写好的界面,并能控制开发板上器件,实现一些有趣的功能。
开发板我取名为YIE001,来源于我们博客网站的缩写。目前的计划如下:
- 实现基本的Oprom代码;
- 实现界面和键盘控制功能;
- 实现跑马灯程序;
- 实现开发板的按键控制功能;
- 实现开发板上的屏幕显示功能;
- 移植基础的GUI到开发板上;
- 读取插在主机上U盘的内容;
- 做个贪吃蛇的游戏。
- More……
其中第5个,是指开发板上的I2C接口的OLED屏幕,而不是主机的屏幕。目前不确定这个功能是否能实现,我所用的PCIE芯片Ch366,它的I2C时序很奇怪,我还没有调试,不知道结果如何。当然,时间原因,以上的计划很有可能改变,我尽量按照这些目标开展计划。
另一个计划是关于UEFI与USB的,我准备稍微拓展一下,把如何用单片机实现HID通讯,Windows下如何访问HID设备、UEFI下如何访问HID设备,作为一个大专题,全面讲一下。时间足够的话,Linux系统下访问HID设备的方法也试着实现一下。这就把USB HID从上到下,我觉得应该掌握的知识,全部都探索了一遍。
本篇博客,主要介绍下刚打样回来的YIE001的硬件结构。
开发板YIE001主要就是为开发UEFI Option ROM而制作的,其目的为了演示Option ROM代码如何调用Protocol、如何控制硬件。它是一块PCIe的板卡,提供了拨动开关控制、LED灯的控制以及I2C的接口,其产品结构示如图1所示。
实际的板卡,如图2所示。
YIE001的主芯片为CH366,在7.1.1节介绍UEFI环境下与PCI/PCIe设备通信时,曾经介绍过其部分内部寄存器的功能。CH366是PCI-Express 总线的扩展 ROM 控制卡的专用芯片,它支持容量为 64KB~1MB的可电擦写只读存储器Flash ROM。开发板中所用的Flash ROM为SST公司的SST25VF010A,容量为1Mb,也即128KB。
在YIE001上,提供的硬件资源有2个拨动开关、4个LED灯,以及I2C接口。开发板上的CH366,采用的是LQFP-44无铅封装。其中,拨动开关分别连接了CH366的引脚GPI1和GPI2;LED灯通过低电平触发,LED1、LED2、LED3、LED4分别连接到CH366的引脚SW0、SW1、GPO和RSTO;I2C接口则是直接将CH366中兼容I2C的4个引脚引出,以方便连接其他I2C设备。
查看CH366的芯片手册,可知这LED1和LED2对应CH366的控制寄存器的位0和位1。将控制寄存器的位0的值设置为0,即可点亮LED1,设置为1,即可关闭LED1。LED2的亮灭,可同样通过设置控制寄存器位1的值来实现。其余硬件资源的对应,如图3所示。
YIE001的硬件结构介绍,就到此完成了。下一篇开始,我将使用这个开发板,按计划实现各种功能,做一些有意思的实验。
1,816 total views, 2 views today