工具/软件:TI-RTOS
大家好
我仍在为 EDMA 的实现带来问题。 我的代码如下所示:
静态无符号 int edma3InstanceId = 0、edma3RegionId = 1; extern EDMA3_DRV_GblConfigParams sampleEdma3GblCfgParams[]; //还尝试:extern EDMA3_DRV_GblConfigParams sampleEdma3GblCfgParams; extern EDMA3_DRV_InstanceInitConfig sampleInstInitConfig[][EDMA3_MAX_region];//还尝试:extern EDMA3_DRV_InstanceInitConfig;
//在同一源文件中: void EDMA_CONFIG (EDMA_T * EdmaObj) { EDMA3_DRV_Result edma3Result = EDMA3_DRV_Sok; //将全局配置设置为样本参数中的默认值(位于 BIOS_EDMA&3_DRV_SAMPLE_C6455_cfg.c 中);//将全局配置设置为默认值(位于 BIOS_DRMADCMOS_DR3中 ); //在 DRM37_DRMP.param 命令中指定 DR3;//创建 DRM3_DRM37_DRMP.param 命令= DR3;/DRM3GPBLDMA3+ DRMADDR3; //用于 EDMA3_DRV_open() API 和中定义的 initCfg 结构 EDMA3_DRV_initconfig initCfg; //位于 BIOS_EDMA3_drv_SAMPLE_C6455_cfg.c EDMA3_DRV_InstanceInitConfig * instanceConfig =&sampleInstInitConfig;//[edma3InstanceId]+ edma3RegionId; //声明初始化 initCDV.ID 所需的配置结构 ;initedionId.DRV=initId=uedInd//用户必须指定区域(LLD/DRV 不支持"全局"区域) initCfg.drvSemHandle =(void*)&os_sem;// os_sem 在 semaphore.c 中创建 initCfg.drvInstitConfig = instanceConfig;//特定于设备的配置-区域 edma3jc 拥有的资源 ,initCfg.drvInstInitConfig = instanceConfig;//特定于区域调用 cyberrbleb 控制器错误,例如从区域 cyberrbleb 控制器返回到通道 cybleb;//区域控制器错误 //超过队列阈值等。 initCfg.gblerrData = NULL;//错误回调函数 miscParam.isSlave = false 所需的任何数据; // arm + dsp,指定谁是主控方,单芯片=使用 false // EDMA3驱动程序创建(对于每个 EDMA3硬件实例只调用一次) edma3Result = EDMA3_DRV_create (edma3InstanceId,globalConfig,(void *)&miscParam); if (edma3Result!= EDMA3 log_info0 ("e@EDMA_config:EDMA3_DRV_CREATE ()"); 返回; }
返回值不是 EDMA3_DRV_Sok。 上下文 ma 很重要、因此下面是整个项目(CCS7.3、PDK_2_0_7、EDMA3_LLD_2_12_05_29)的 zip:
e2e.ti.com/.../gpio_5F00_edma1.zip
我在 main.c 中进行了相同的清理、因此只有 EDMA3功能仍然存在、但还有更多的源文件。
如果有人给我小费、那对我会很有帮助。
此致、
Pablo