This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/PROCESSOR-SDK-AM335X:GPMC EDMA 测试

Guru**** 2539500 points
Other Parts Discussed in Thread: AM3359

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/770569/linux-processor-sdk-am335x-gpmc-edma-test

器件型号:PROCESSOR-SDK-AM335X
主题中讨论的其他器件:AM3359

工具/软件:Linux

我们正在开发包含 AM3359处理器的电路板。

我们使用的 SDK 是 ti-processor-sdk-linux-am335x-evm-05.00.15

我们的客户希望查看处理器(AM3359)和 FPGA 之间使用 EDMA 通过8条 GPMC 线路连接的数据传输吞吐量

到目前为止,我们已经在 Code Composer Studio ( CCS )中创建了一个包含 GEL 文件和 C 程序的项目,并且我们能够通过这8条 GPMC 线路将数据发送到 FPGA。

现在、我们没有插入任何 SD 卡(即 处理器未启动)。

仅使用 JTAG 和 CCS、我们就做到了。

现在、我们不清楚如何在这方面进一步进行下一步、了解如何在 Linux-SDK 中将此 GPMC 程序与 EDMA 协议相关联、以将数据发送到 FPGA。

我们现在只需要按照以下流程实施 GPMC_EDMA 数据传输程序。

处理器已引导-->运行 GPMC_EDMA 数据传输程序-->完成数据传输-->计算吞吐量。

这是我通过8条 GPMC 线路将数据传输到 FPGA 的代码。

e2e.ti.com/.../gpmc_5F00_transfer.c

有人帮助我进一步开展工作、因为我们有严格的时间限制、而且我们也不熟悉这个。

谢谢、此致

Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vamsi、

    您可以参阅 此帖子中提供的材料。

    此致、
    Kemal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kemal、

    我们已经完成了。

    我们的 EDMA 定义:

    EDMA:EDMA@49000000{
    兼容="ti、edma3-tpcc";
    ti、hwmds ="tpcc";
    reg =<0x49000000 0x10000>;
    reg-names ="EDMA3_cc";
    中断=<12 13 14>;
    中断名称="EDMA3_ccint"、"EDMA3_mperr"、
    "edma3_cerrint";
    DMA 请求=<64>;
    dma-cells =<2>;

    TI、tptcs =<&EDMA_tptc0 7>、<&EDMA_tptc1 5>、
    <EDMA_tptc2 0>;

    TI、EDMA-memcpy 通道=<20 21>;
    };

    EDMA_tptc0:tptc@49800000{
    兼容="ti、edma3-tptc";
    ti、hwmonds ="tptc0";
    REG =<0x49800000 0x100000>;
    中断=<112>;
    中断名称="EDMA3_tcertrint";
    };

    eDMA_tptc1:tptc@49900000{
    兼容="ti、edma3-tptc";
    ti、hwmonds ="tptc1";
    REG =<0x49900000 0x100000>;
    中断=<113>;
    中断名称="EDMA3_tcertrint";
    };

    eDMA_tptc2:tptc@49a00000{
    兼容="ti、edma3-tptc";
    ti、hwmonds ="tptc2";
    REG =<0x49a00000 0x100000>;
    中断=<114>;
    中断名称="EDMA3_tcertrint";
    };
    mmc1:MMC@48060000{
    兼容="ti、omAP4-hsmmc";
    ti、hwmds ="mmc1";
    TI、双电压;
    TI,需要特殊重置;
    TI、需要特殊处理;
    DMA =<&EDMA_Xbar 24 0
    EDMA_Xbar 25 0 0>;
    dma-names ="TX"、"Rx";
    中断=<64>;
    REG =<0x48060000 0x1000>;
    STATUS ="禁用";
    };

    mmc2:MMC@481d8000{
    兼容="ti、omAP4-hsmmc";
    ti、hwmds ="mmc2";
    TI,需要特殊重置;
    DMA =<&EDMA 2 0
    EDMA 3 0>(&E);
    dma-names ="TX"、"Rx";
    中断=<28>;
    reg =<0x481d8000 0x1000>;
    STATUS ="禁用";
    };

    mmc3:MMC@47810000{
    兼容="ti、omAP4-hsmmc";
    ti、hwmds ="mmc3";
    TI,需要特殊重置;
    中断=<29>;
    REG =<0x47810000 0x1000>;
    STATUS ="禁用";
    };

    root@AM335x-EVM:~# modprobe dmatest timeout=200 iterations=10000 run=1

    [585.652192] dmatest:使用 dma1chan0开始1个线程

    [585.667611] dmatest:使用 dma1chan1启动1个线程

    root@AM335x-EVM:~#[599.547727] dmatest:dma1chan1-copy0:摘要10000测试、0失败1388 IOPS 11161 kB/s (0)

    [599.559230] dmatest:dma1chan0-copy0:摘要10000测试、0失败1392 IOPS 11001kB/s (0)

    在这里、我不清楚有两件事。

    1、如何说、数据仅通过8条 GPMC 线路在处理器和 FPGA 之间传输、仅使用 EDMA。

    2.如何发送一些自定义数据并查看。 如何提供输入。 在这里、我没有找到任何这样的配置来输入一些数据。


    请帮帮我。


    此致
    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否有人能帮助我修改随附的 dmatest.c
    此应用程序使用线程和通道在处理器内存中传输数据。
    现在、我想对其进行修改、以便将数据发送到 FPGA。 我有一个包含1到4096个数字的缓冲区。
    当我使用 modprobe dmatest 运行这个最差的 它应将数据发送到 FPGA 并打印吞吐量。

    在过去的3周里、我真的非常紧张、因为我们的客户施加了如此大的压力。 而且、我对内核编程也不熟悉。

    请帮帮我。

    e2e.ti.com/.../dmatest.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vamsi、

    您还可以参考 、本和本材料。

    此致、
    Kemal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能否从下面的 DTS 文件中检查 GPMC 节点声明。 我对 NOR GPMC 接口进行了更改。

    请告诉我是否需要进行任何更改。

    GPMC (&G)

       pinctrl-names ="default";
       pinctrl-0 =<&GPMC_PINs>;
       ti、pidd-d0-out-d1-in =<1>;
       状态="正常";
       NOR@0、0{
          兼容="CFI-FLASH";
          //linux,MTD-name="英特尔,pf48f6000m0y1be ";
          #address-cells =<1>;
          大小单元格=<1>;
          reg =<0 0x08000000>;
          组宽度=<8>;

          GPMC、mux-add-data;
          GPMC、cs-on-ns =<0>;
          GPMC、cs-rd-off-ns =<10>;
          GPMC、cs-wr-off-ns =<6>;
          GPMC、Adv-on-ns =<1>;
          GPMC、Ad-rd -关闭-ns =<1>;
          GPMC、Adv-wr-off-ns =<1>;
          GPMC、OE-ON-ns =<3>;
          GPMC、OE-OFF-ns =<10>;
          GPMC、WE-ON-ns =<1>;
          GPMC、WE-OFF-ns =<5>;
          GPMC、第周期-ns =<9>;
          GPMC、功率周期-ns =<6>;
          GPMC、ACCESS ns =<9>;
          GPMC、PAGE-BURST-ACCESS ns =<1>;
          GPMC、总线翻转-ns =<12>;
          GPMC、cycle2cycle-delay-ns =<18>;
          GPMC、wr-data-mux-bus-ns =<90>;
          GPMC、wr 访问-ns =<9>;
          GPMC、cycle2cycle-samecsen;
          GPMC、cycle2cycle-diffcsen;

          //分区@0{
          //   标签="bootloader-nor";
          //   reg =0 0x40000>;
          //};
          //分区@0x40000{
          //   标签="params-nor";
          //   reg =<0x40000 0x40000>;
          //};
          //分区@0x80000{
          //   标签=“kernel-norm”;
          //   reg =<0x80000 0x200000>;
          //};
          //分区@0x280000{
          //   label =“filesystem-NOR”;
          //   reg =<0x240000 0x7d80000>;
          //};
       };
    };

    GPMC_PINS:pinmux_GPMC_PINS{
          pinctrl-single、pins =<
             AM33XX_IOPAD (0x800、PIN_INPUT_PULLUP | MUX_MODE0)   /* GPMC_AD0.GPMC_AD0 *
             AM33XX_IOPAD (0x804、PIN_INPUT_PULLUP | MUX_MODE0)   /* GPMC_AD1.GPMC_AD1 *
             AM33XX_IOPAD (0x808、PIN_INPUT_PULLUP | MUX_MODE0)   /* GPMC_AD2.GPMC_AD2 *
             AM33XX_IOPAD (0x80c、PIN_INPUT_PULLUP | MUX_MODE0)   /* GPMC_AD3.GPMC_AD3 *
             AM33XX_IOPAD (0x810、PIN_INPUT_PULLUP | MUX_MODE0)   /* GPMC_AD4.GPMC_AD4 *
             AM33XX_IOPAD (0x814、PIN_INPUT_PULLUP | MUX_MODE0)   /* GPMC_AD5.GPMC_AD5 *
             AM33XX_IOPAD (0x818、PIN_INPUT_PULLUP | MUX_MODE0)   /* GPMC_AD6.GPMC_AD6 *
             AM33XX_IOPAD (0x81c、PIN_INPUT_PULLUP | MUX_MODE0)   /* GPMC_AD7.GPMC_AD7 *
             AM33XX_IOPAD (0x894、PIN_OUTPLUG_PULLUP | MUX_MODE0)   /* GPMC_oen_Ren.GPMC_oen_Ren *
             AM33XX_IOPAD (0x890、PIN_OUTPUT 上拉| MUX_MODE0)   /* GPMC_ADVn_ALE.GPMC_ADVn_ALE */
             AM33XX_IOPAD (0x89c、PIN_OUTPUT 上拉| MUX_MODE0)   /* GPMC_BEn0_CLE.GPMC_BEn0_CLE *
          >;
       };    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    linuxutils_2_24_03.tar.gz
    在中
    software-dl.ti.com/.../ 与 AM335x SDK 配合使用:TI-PROCESSOR-SDK-LINUX-AM335x-EVM-05.00.00.15 ????????

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在 DTS 中添加了 GPMC 节点和引脚多路复用器。

    GPMC 节点:

    GPMC (&G)

    pinctrl-names ="default";
    pinctrl-0 =<&GPMC_PINs>;
    ti、pidd-d0-out-d1-in =<1>;
    状态="正常";
    NOR@0、0{
    兼容="CFI-FLASH";
    //linux,MTD-name="英特尔,pf48f6000m0y1be ";
    #address-cells =<1>;
    大小单元格=<1>;
    reg =<0 0x08000000>;
    组宽度=<8>;

    GPMC、mux-add-data;
    GPMC、cs-on-ns =<0>;
    GPMC、cs-rd-off-ns =<10>;
    GPMC、cs-wr-off-ns =<6>;
    GPMC、Adv-on-ns =<1>;
    GPMC、Ad-rd -关闭-ns =<1>;
    GPMC、Adv-wr-off-ns =<1>;
    GPMC、OE-ON-ns =<3>;
    GPMC、OE-OFF-ns =<10>;
    GPMC、WE-ON-ns =<1>;
    GPMC、WE-OFF-ns =<5>;
    GPMC、第周期-ns =<9>;
    GPMC、功率周期-ns =<6>;
    GPMC、ACCESS ns =<9>;
    GPMC、PAGE-BURST-ACCESS ns =<1>;
    GPMC、总线翻转-ns =<12>;
    GPMC、cycle2cycle-delay-ns =<18>;
    GPMC、wr-data-mux-bus-ns =<90>;
    GPMC、wr 访问-ns =<9>;
    GPMC、cycle2cycle-samecsen;
    GPMC、cycle2cycle-diffcsen;

    //分区@0{
    //标签="bootloader-nor";
    // reg =0 0x40000>;
    //};
    //分区@0x40000{
    //标签="params-nor";
    // reg =<0x40000 0x40000>;
    //};
    //分区@0x80000{
    //标签=“kernel-norm”;
    // reg =<0x80000 0x200000>;
    //};
    //分区@0x280000{
    // label =“filesystem-NOR”;
    // reg =<0x240000 0x7d80000>;
    //};
    };
    };

    引脚多路复用:

    GPMC_PINS:pinmux_GPMC_PINS{
    pinctrl-single、pins =<
    AM33XX_IOPAD (0x800、PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD0.GPMC_AD0 *
    AM33XX_IOPAD (0x804、PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD1.GPMC_AD1 *
    AM33XX_IOPAD (0x808、PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD2.GPMC_AD2 *
    AM33XX_IOPAD (0x80c、PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD3.GPMC_AD3 *
    AM33XX_IOPAD (0x810、PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD4.GPMC_AD4 *
    AM33XX_IOPAD (0x814、PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD5.GPMC_AD5 *
    AM33XX_IOPAD (0x818、PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD6.GPMC_AD6 *
    AM33XX_IOPAD (0x81c、PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_AD7.GPMC_AD7 *
    AM33XX_IOPAD (0x894、PIN_OUTPLUG_PULLUP | MUX_MODE0)/* GPMC_oen_Ren.GPMC_oen_Ren *
    AM33XX_IOPAD (0x890、PIN_OUTPUT 上拉| MUX_MODE0)/* GPMC_ADVn_ALE.GPMC_ADVn_ALE */
    AM33XX_IOPAD (0x89c、PIN_OUTPUT 上拉| MUX_MODE0)/* GPMC_BEn0_CLE.GPMC_BEn0_CLE *
    >;
    };

    --------------------------------------------------------------------

    2.我在/proc/iomem 下检查了 GPMC (下面以红色突出显示)

    root@AM335x-EVM:~/boot# cat /proc/iomem
    40300000-4030FFFF:40300000.ocmcram
    44d00000-44d03fff:内存
    44d80000-44d81fff : DMEM
    44e07000-44e07fff:/ocp/gpio@44e07000
    44e090-44e0901f:串行
    44e0b000-44e0bfff:/ocp/i2c@44e0b000
    44e0d000-44e0dfff:/ocp/tscadc@44e0d000
    44e10650-44e10653:gmii-SEL
    44e10800-44e10a37:pinctrl-single
    44e10f90-44e10fcf:/ocp/l4_wkup@44c00000/CSCM@2K00/dma-router@f90
    44e11324-44e11347:/ocp/l4_wkup@44c00000/CSCM@2K00/wkup_m3_IPC@1324
    44e35000-44e35fff:/ocp/wdt@44e35000
    44e3e000-44e3efff:/ocp/rtc@44e3e000
    48022000-4802201f:串行
    48030000-480303ff:/ocp/spi@48030000
    48042000-480423ff:/ocp/timer@48042000
    48044000-480443ff:/ocp/timer@48044000
    48046000-480463ff:/ocp/timer@48046000
    48048000-480483ff:/ocp/timer@48048000
    4804a000-4804a3ff:/ocp/timer@4804a000
    4804c000-4804cfff:/ocp/gpio@4804c000
    48060000-48060fff:/ocp/mmc@48060000
    480c8000-480c81ff:/ocp/mailbox@480C8000
    481a0000-481a03ff:/ocp/spi@481a0000
    481ac000-481acfff:/ocp/gpio@481ac000
    481ae000-481aefff:/ocp/gpio@481ae000
    481d8000-481d8fff:/ocp/mmc@481d8000
    48304100-4830417f:/ocp/epwmss@48304000/ECAP@48304100
    48310000-48311fff:/ocp/rng@48310000
    49000000-4900FFFF:EDMA3_cc
    4a100000-4a1007ff:/ocp/ethernet@4a100000
    4a101000-4a10ff:/ocp/ethernet@4a100000/MDIO@4a101000
    4a101200-4a1012ff:/ocp/ethernet@4a100000
    4a320000-4a321fff:intc
    4a322000-4a3223ff:控制
    4a322400-4a3224ff:调试
    4a324000-4a3243ff:控制
    4a324400-4a3244ff:调试
    4a334000-4a335fff:IRAM
    4a338000-4a339fff:IRAM
    4c000000-4c000fff:/ocp/emif@4c000000
    50000000-50001fff:/ocp/gpmc@50000000
    53100000-531001ff:/ocp/sham@53100000
    53500000-5350009f:/ocp/aes@53500000
    8000000000-8ffffffff:系统 RAM
    80008000-80bfff:内核代码
    80d00000-80d94923:内核数据

    --------------------------------------------------------------------

    3.下面是我使用 GPMC 线路将数据发送到 FPGA 的代码。

    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    #define fatal do{fprintf (stderr、"Error at line %d、file %s (%d)[%s]\n"、\
    _line__、__file__、errno、strerror (errno));exit (1);} while (0)

    int verbose = 0;

    int main(){
       int fd;char ch;
       if ((fd=open ("/dev/mem、O_RDWR | O_sync))=-1){printf ("打开 GPMC\n"时出错);return 0;}
       printf ("已成功打开\n");
       volatile uint8_t * map_BASE;
       MAP_BASE =(uint8_t *) mmap (0、0x01000000、PROT_READ | PROT_WRITE、MAP_SHARED、FD、 0x02000000);
       if (map_base =(void *)-1) fatal;if (verbose){
              printf ("在地址%p.\n"、map_BASE 映射的内存);
              fflush (stdout);
        }
        volatile uint32_t * p32 =(uint32_t *)&map_based[0x100020];

        printf ("Hello 2\n");
        *P32=0x1;//It is causing bus error.(* P32=0x1;//它导致总线错误。)

        printf ("关闭 FD\n");
        关闭(FD);

    --------------------------------------------------------------------

    输出:

    root@AM335x-EVM:~/boot#./a.out
    已成功打开[3348.926190]未处理故障:在 b5eab800的非线性获取(0x1818)上的外部中止
    [3348.934354] PgD = c60f0000
    [3348.937074][b5eab800]* PgD=86028831,* Pte=02000343,* Ppte=02000833

    你好2.
    总线错误(转储内核)

    --------------------------------------------------------------------

    请核实上述情况、并在我出错的情况下帮助我。

    此致

    Vamsi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我很高兴告诉大家、GPMC FPGA 数据传输正常。 按照我所做的更改、使其正常工作。

    在中添加了 GPMC-FPGA 引脚多路复用器
    e2e.ti.com/.../555762



    2.添加到/linux-4.14.40+gitAUTOINC+4796173fc5-g4796173fc5/drivers/memoryomap-gpcmc.c

    替换了以下函数:

    静态空 GPMC_cs_set_reserved (int cs、int reserved)

    结构 GPMC_cs_data * GPMC =&GPMC_cs[cs];

    GPMC->flags |= GPMC_CS_reserved;


    其中:

    静态空 GPMC_cs_set_reserved (int cs、int reserved)

    结构 GPMC_cs_data * GPMC =&GPMC_cs[cs];

    IF (保留)
    GPMC->flags |= GPMC_CS_reserved;
    其他
    GPMC->flags &=~GPMC_CS_reserved;

    用于使用 GPMC 将数据传输到 FPGA 的用户级程序。

    #include                                                            
    #include                                                          
    #include                                                          
    #include                                                         
    #include                                                          
    #include                                                          
    #include                                                           
    #include                                                           
    #include                                                            
    #include                                                        
                                                                                
    #define fatal do{fprintf (stderr、"Error at line %d、file %s (%d)[%s]\n"、\
     _line__、__file__、errno、strerror (errno));exit (1);} while (0)
                                                              
    int verbose = 0;                                                                                                      
                                                                                                                         
    #define BUF_SIZE 4096                                                                                                 
                                                                                                                         
    int main(){                                                                                                           
           int i、fd;char ch;                                                                                             
           int buf[BUF_SIZE];                                                                                            
           volatile uint8_t * map_BASE;                                                                                   
           int a=1;    

           for (i=0;<BUF_SIZE;i++){ )                                             
                   if (i%100=0){                                                
                           A++;                                                 
                           printf ("i:%d、  a:%d\n"、i、a);                      
                   }                                                 
                   buf[i]=a;                                                    
           }                                                                    
           //buf[BUF_size=43;                                                  
                                                                                
           if ((fd=open ("/dev/mem、O_RDWR | O_sync))=-1){                   
                   printf ("打开 GPMC\n"时出错);返回0;                  
           }                                                                    
           printf ("已成功打开\n");                          
                                                              
           MAP_BASE =(uint8_t *) mmap (((void*) 0x01000000、0x01000000、PROT_READ | PROT_WRITE、MAP_SHARED、FD、 0x01000000);
           if (map_base =(void *)-1) fatal;                                                                            
           if (verbose){                                                                                                
             printf ("在地址%p.\n"、map_BASE 映射的内存);                                                         
             fflush (stdout);                                                                                             
           }                                                                                                             
           易失性 uint32_t * p32 =(uint32_t *)&map_basel[0x0800];                                                      
           //while (1/*(ch=getchar ())!='\n'*/){                                                                           
                   //*P32 = 0x1;                                                                                         
                   for (i=0;<BUF_SIZE;i++){ )                                                                              
                           *P32=buf[i];                                                                                
                   }                                                                                                     
                   printf ("已发送%d 个字节\n"、BUF_SIZE);                                                                   
           //}                                                                                                           
           printf ("关闭 FD\n");                                                                                       
           关闭(FD);                                                                                                    
    }  

    现在、我们已经看到 GPMC 工作了、我们希望添加 EDMA 来加快数据传输。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请有人在我的上述帖子中告诉我如何联系 GPMC 的 EDMA。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们是否也可以在用户级别编写 EDMA 应用程序? 还是只能在内核级实现它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vamsi、

    请参阅以下螺纹: 螺纹1 和 螺纹2

    此致、

    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Krunal。

    我已经提到过它们。

    我在编辑 dmatest.c 时遇到困难 它是一个内核应用程序、用于在处理器本身内部的2个缓冲区之间移动数据。 但我的要求是将数据发送到 FPGA。 在这里、我必须更改遇到困难的代码。

    在函数 dmatest_func ()中,我想更改 dmatest_init_SRCS ()和 dmatest_init_dsts ()。 另外,还必须更改 device_prep_dma_memcpy()。

    请帮助我继续。

    此致
    Vamsi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vamsi、

    Dmatest 是内核中集成的参考示例、TI 不支持它。

    此致、
    Krunal
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我同意这是一个参考示例。 但是、如果它正在编译并运行、TI SDK 将支持该 DMA 测试。 不是吗?
    如果我错了、请纠正我的问题。

    此致
    Vamsi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vamsi、

    Sitara 器件上的 Processor SDK Linux 集成了许多免费开源软件(FOSS)、可用于演示 Sitara SoC 的硬件功能。 虽然 TI 集成了这些 FOSS 并将示例应用整合到处理器 SDK Linux 中以方便软件开发、但 TI 不拥有、维护和支持这些 FOSS。

    此致、
    Krunal