基于網(wǎng)絡(luò )編碼的多信源組播通信系統,包括源代碼,原理圖等(二)
模塊中的狀態(tài)和階段,任何一個(gè)模塊都可以響應來(lái)自PCI總線(xiàn)寄存器的訪(fǎng)問(wèn)和控制要求,而PCI總線(xiàn)寄存器可以通過(guò)軟件來(lái)控制。也就是說(shuō),硬件和軟件的通信是通過(guò)PCI總線(xiàn)完成的。
本文引用地址:http://dyxdggzs.com/article/201612/326828.htm數據以及控信息在硬件和主機系統之間是通過(guò)PCI總線(xiàn)傳輸的,以L(fǎng)inux網(wǎng)絡(luò )存儲棧作為接口的。NetFPGA向主機發(fā)送分組數據的過(guò)程如圖2.5-2a所示:
分組到達,發(fā)往CPU隊列;
中斷程序通知驅動(dòng)程序有分組到達;
驅動(dòng)程序設置和初始化DMA傳送器;
NetFPGA通過(guò)DMA總線(xiàn)發(fā)送分組;
中斷程序發(fā)送DMA結束信號;
驅動(dòng)程序把分組傳遞到網(wǎng)絡(luò )存儲棧;


圖2.5-2a:NetFPGA向主機發(fā)送數據 圖2.5-2b:主機向NetFPGA發(fā)送數據
主機向NetFPGA發(fā)送分組數據的過(guò)程如圖2.5-2b所示:
控制軟件通過(guò)網(wǎng)絡(luò )socket發(fā)送分組,分組被遞交給驅動(dòng)程序;
驅動(dòng)程序設置和初始化DMA傳送器;
中斷程序發(fā)送DMA結束信號;
主機訪(fǎng)問(wèn)寄存器是通過(guò)系統調用系統內核的ioctl( )函數作為接口的。讀寫(xiě)寄存器的操作函數如下,這兩個(gè)函數內部調用了ioctl( )函數。
readReg(nf2device *dev, int address, unsigned *rd_data)
writeReg(nf2device *dev, int address, unsigned *wr_data)
例如: readReg(&nf2, OQ_NUM_PKTS_STORED_0, &val);
主機訪(fǎng)問(wèn)NetFPGA寄存器的過(guò)程如下:
(1)控制軟件調用ioctl( )函數操作網(wǎng)絡(luò )socket,由函數ioctl傳遞給驅動(dòng)程序;
(2)驅動(dòng)程序完成PCI寄存器的讀寫(xiě)
評論