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.

[参考译文] CCS/CCStudio:DSP-BIOS项目上的CSL导入

Guru**** 2587365 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/602805/ccs-ccstudio-csl-import-on-a-dsp-bios-project

部件号:CCStudio

工具/软件:Code Composer Studio

您好,

我正确测试了CSL USB CDC示例,现在我想使用DSP-BIOS将该模块导入到我的项目中。

我不能让它工作,问题似乎在于中断向量分配。

如果我注释"IRQ_setVecs((UINT32)(&VECSTART))"行,DSP-BIOS工作,但USB驱动程序不工作。

如果我使用函数 IRQ_setVecs(UINT32)(&VECSTART),DSP-BIOS将不起作用。

我注意到在CSL示例中,矢量位置与DSP-BIOS定义的地址不同。

如何在此应用程序中将CSL与DSP-BIOS配合使用?

在哪里可以找到DSP -BIOS上使用的CSL示例?

我已经在一个DSP-BIOS项目上使用了CSL UART,没有问题!

谢谢你

Stefano  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用的是什么设备? BIOS管理向量表,因此您需要通过HWI模块创建/插入向量。

    托德
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用C5515。 您能否详细解释我应该怎么做?

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

    更多详细信息:

    运行:CCS5, C55_CSL_EVM,C5515 3.04 ,DSP BIOS 5.41 11.38

    我通过HWI DSP BIOS模块配置了USB中断,如下所示:

    然后,我修改 了CSL_USB_CDC_Example.c代码,对CSL USB示例所完成的矢量表非标准化进行了注释:

    /*设置中断向量起始地址*/
    //IRQ_setVecs((UINT32)(&VECSTART));

    /*将USB ISR插入矢量表*/
    //config.funcAddr =&USB_ISR;
    //IRQ_plug (USB_event,config.funcAddr);

    /*启用USB中断*/
    irq_enable (usb_event);
    /*启用CPU中断*/
    IRQ_globalEnable();

    USB中断似乎已启用:

    但CSL模块仍出现错误, CDC_Open函数出现错误("CDC打开失败\n");  

    //设置USB配置结构
    USBConfig.opMode = CSL_USB_OPMODE_Polled;
    USBConfig.maxCurrent = CSL_USB_MAX_CURRENT;
    USBConfig.appSuspendCallBack =(CSL_USB_app_callback) CSL_suspendCallBack;
    USBConfig.appWakeupCallBack =(CSL_USB_APP_callback) CSL_selfWakeupCallBack;
    USBConfig.startTransferCallback = CSL_startTransferCallback;
    usbConfig.completeTransferCallback = CSL_completeTransferCallback;

    //创建CDC句柄
    状态= CDC_Open(&CDC_AppHandle,&USBConfig);
    IF (STATUS!= CSL_SOK)

    IF (STATUS == CSL_ESYS_BADHANDLE)

    CSL_USB_DEBUG_PRINT ("打开CDC模块失败!\n");
    CSL_USB_DEBUG_PRINT ("CDC_Open Returned - Bad handle \n");
    }否则

    CSL_USB_DEBUG_PRINT ("CDC打开失败\n");
    }

    返回(状态);
    }
    否则

    CSL_USB_DEBUG_PRINT ("CSL CDC模块打开成功\n");
    }

    使用CSL时,如何使用DSP-BIOS配置和管理中断?

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

    我认为目前为止您所做的工作的主要问题是USB_ISR()函数是用'interrupt (中断)'关键字声明的:

    中断无效USB_ISR(void)

    该关键字使ISR的HWI调度程序处理混乱,不能由HWI派遣的ISR使用。

    另一个可能导致问题的原因是IRQ_globalEnable()调用。  BIOS将在适当的时间全局启用中断,一旦main()返回,就会发生这种情况。

    因此,请尝试删除'interrupt'关键字,并注释掉IRQ_globalEnable()调用。

    有一种方法允许在ISR上使用'interrupt (中断)'关键字,这要求HWI *不*发送ISR,并要求运行时HWI_plug()调用,而不是在gconf中静态配置HWI_INT20。  但是,我不建议使用这种方法,但如果您想继续使用,我会详细解释。

    此致,

    - Rob