買的CH368+FPGA開發(fā)板,自己在linux下寫驅(qū)動,IO空間的0xFA設(shè)置為了0x43
測試下來,讀取32位和寫入32位的速度差不多都在1600ns左右,之前用過PLX的芯片,讀取也是在1600ns左右,但是寫入不會耗這么多時間,是配置問題還是芯片設(shè)計就是這樣的?
買的CH368+FPGA開發(fā)板,自己在linux下寫驅(qū)動,IO空間的0xFA設(shè)置為了0x43
測試下來,讀取32位和寫入32位的速度差不多都在1600ns左右,之前用過PLX的芯片,讀取也是在1600ns左右,但是寫入不會耗這么多時間,是配置問題還是芯片設(shè)計就是這樣的?
您好,速度寄存器是否配置基本不影響一次IO/MEM的并口操作總時間。對于CH368,寫操作是快于讀操作的。測試時建議循環(huán)測試多次ioread32/iowrite32的總時間,然后算平均一次的讀寫速度。正常情況下32位Memory寫一次操作600ns左右。
?系統(tǒng)用的是自己作的實(shí)時linux,內(nèi)核驅(qū)動也是用到了最高優(yōu)先級,測試程序是
?? ktime_get_ts64(&timew0);
??? iowrite32(led,ch368IO + 0x14);
??? iowrite32(led,ch368IO + 0x14);
??? iowrite32(led,ch368IO + 0x14);
??? iowrite32(led,ch368IO + 0x14);
??? ktime_get_ts64(&timew1);?? ?
??? ktime_get_ts64(&timer0);
??? texti = ioread32(ch368IO + 0x14);
??? ktime_get_ts64(&timer1);
??? ktime_get_ts64(&timeb);
??? ledCount++;
??? if(ledCount > 50 * 1000){
??????? led--;
??????? if (led < 0x0){
??????????? led = 0xff;
??????? }
??????? ledCount = 0;
??????? printk("readime : %ld\n",diff_tv(timer0,timer1));
??????? printk("writetime : %ld\n",diff_tv(timew0,timew1));
??????? printk("sumtime : %ld \n",diff_tv(timea,timeb));
??? }
這段程序使用的hrtimer定的10us定時器中斷,內(nèi)核diff_tv是自己編寫的計算時間差的程序,ns單位。內(nèi)核打印如下
[14457.529909] readime : 1187
[14457.529910] writetime : 4581
[14457.529910] sumtime : 5936
[14458.029919] readime : 1194
[14458.029920] writetime : 4580
[14458.029920] sumtime : 5939
[14458.529929] readime : 1188
[14458.529930] writetime : 4556
[14458.529930] sumtime : 5911
[14459.029939] readime : 1198
[14459.029939] writetime : 4562
[14459.029940] sumtime : 5927
[14459.529949] readime : 1191
[14459.529949] writetime : 4594
[14459.529950] sumtime : 5947
[14460.029959] readime : 1189
[14460.029959] writetime : 4703
[14460.029960] sumtime : 6046
[14460.529968] readime : 1185
寫入時間為4550ns,一共寫入4次,差不多為1200ns一次
讀取時間差不多也是1200ns
之前是1600ns是因?yàn)镻CIE口使用了距離CPU遠(yuǎn)一點(diǎn)的,現(xiàn)在改為使用距離CPU最近的一條
和我之前找到的帖子回復(fù)還是有出入,包括600ns也不太對,是否有對寫入速度有影響的參數(shù)或者電路設(shè)計?
這是之前的帖子
您好,速度和之前同事回復(fù)的速度差不多的。寫20MB/S然后除以32,約為600ns寫一次。你們那邊用的什么CPU?
I5-10700,重新作了liunx實(shí)時系統(tǒng),單獨(dú)隔離出來一個核心來跑PCIE驅(qū)動