对网卡cs8900的模拟是通过类IOCS8900IO来进行的,不过主要工作是要VPCNetDriver这个类来做,在IOCS8900IO里有这个类的一个成员变量。而这个类主要是通过file文件来传输
数据以及一些network API来获得或者设置一些pc网卡的信息。
------------------------------------------------------------------------------------------------
|IOCS8900IO | TxBuffer | RxBuffer |
| | TransmitPacket函数 | ReceiveCompletionRoutine |
|----------------------|-----------------------------------|-------------------------------------|
|VPCNetDriver | BeginAsyncTranmitPacket | BeginAsyncReceivePacket |
|----------------------|-----------------------------------|-------------------------------------|
|File(CreateFileW) | WriteFile | ReadFile |
|创建一个pc | 发送数据 | 接收数据 |
|adaptor文件, | | |
|用于读写数据 | | |
-----------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
|IOCS8900IO | TxBuffer | RxBuffer |
| | TransmitPacket函数 | ReceiveCompletionRoutine |
|----------------------|-----------------------------------|-------------------------------------|
|VPCNetDriver | BeginAsyncTranmitPacket | BeginAsyncReceivePacket |
|----------------------|-----------------------------------|-------------------------------------|
|File(CreateFileW) | WriteFile | ReadFile |
|创建一个pc | 发送数据 | 接收数据 |
|adaptor文件, | | |
|用于读写数据 | | |
-----------------------------------------------------------------------------------------------
串口也是通过file来模拟的,如果向transmit buffer register中写数据则writefile;接收数据是通过CompletionRoutine来进行的,也就是处理receive的callback来readfile数据到receivebuffer(为一字符数组),如果读寄存器receive buffer register中的数据,则返回receivebuffer中的值。
而nandflash的模拟是用一个字符指针成员变量m_Flash = new unsigned_int8[]来实现的。
USBDevice和USBHostController则只实现了模拟读写寄存器,而没有实现实际的功能。
转载于:https://blog.51cto.com/bluefish/70963