CH268读写速度问题

买的CH368+FPGA开发板,自己在linux下写驱动,IO空间的0xFA设置为了0x43

测试下来,读取32位和写入32位的速度差不多都在1600ns左右,之前用过PLX的芯片,读取也是在1600ns左右,但是写入不会耗这么多时间,是配置问题还是芯片设计就是这样的?

您好,速度寄存器是否配置基本不影响一次IO/MEM的并口操作总时间。对于CH368,写操作是快于读操作的。测试时建议循环测试多次ioread32/iowrite32的总时间,然后算平均一次的读写速度。正常情况下32位Memory写一次操作600ns左右。


 系统用的是自己作的实时linux,内核驱动也是用到了最高优先级,测试程序是

   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定时器中断,内核diff_tv是自己编写的计算时间差的程序,ns单位。内核打印如下

[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是因为PCIE口使用了距离CPU远一点的,现在改为使用距离CPU最近的一条

和我之前找到的帖子回复还是有出入,包括600ns也不太对,是否有对写入速度有影响的参数或者电路设计?

这是之前的帖子

2021-08-11 13-16-25 的屏幕截图.png



您好,速度和之前同事回复的速度差不多的。写20MB/S然后除以32,约为600ns写一次。你们那边用的什么CPU?


I5-10700,重新作了liunx实时系统,单独隔离出来一个核心来跑PCIE驱动


只有登录才能回复,可以选择微信账号登录