DSP

FPGA+DSP SRIO通信(二)——DSP端参数设置(DEVICEID)

2019-07-13 10:46发布

上回书说到,我们已经配置好了FPGA和DSP通信的通道速率,但是在调试时总是不知道怎样设置deviceID,本节就来说说,DSP端的deviceID怎么配置。 deviceID就是设备的标识,别的设备与你用SRIO通信时,只认你这个标识。也就是DSP的SRIO户口本上的名字。
首先附上官方给出的基于CSL的SRIO配置程序,该程序和上一章所用到的程序是同一个。 device_srio_loopback.c

对于DEVICEID的设置:

1、DEVICEID声明和调用

/********************************************************************** ************************* Extern Definitions ************************* **********************************************************************/ extern const uint32_t DEVICE_ID1_16BIT; extern const uint32_t DEVICE_ID1_8BIT; extern const uint32_t DEVICE_ID2_16BIT; extern const uint32_t DEVICE_ID2_8BIT; extern const uint32_t DEVICE_ID3_16BIT; extern const uint32_t DEVICE_ID3_8BIT_ID; extern const uint32_t DEVICE_ID4_16BIT; extern const uint32_t DEVICE_ID4_8BIT_ID; extern关键词声明的外部定义的变量,即如果同一个工程下有两个.c文件,A.c和B.c,在A中用extern关键字声明一个变量VAL,又在B中声明一个变量VAL,那么A中的变量VAL值来自于B中VAL值。 调试DSP端的SRIO时,你的工程下肯定会包含一个SRIO配置程序,如device_srio_loopback.c,还有一个主程序,如main.c。我的工程界面截图如下: 这里写图片描述 由于DEVICEID在device_srio_loopback.c中已经声明为外部变量,在main中使用时还需要在main.c中声明。

2、对DEVICEID的设置

在device_srio_loopback.c中可以看到以下语句,该语句设置的是你所使用到底是哪一个DEVICEID,原因是你上面声明了那么多DEVICEID,谁知道你用的是哪个。 /* Set the Host Device Identifier. */ CSL_SRIO_SetHostDeviceID (hSrio, DEVICE_ID1_16BIT); 同样,还需要对设备的8bit deviceID和16bit 的deviceID进行设置,所以就有了以下语句。 /* Set the 16 bit and 8 bit identifier for the SRIO Device. */ CSL_SRIO_SetDeviceIDCSR (hSrio, DEVICE_ID1_8BIT, DEVICE_ID1_16BIT); 当然还会看到以下有关deviceID的语句,但该语句的作用类似于设置生产日期什么的,与具体功能没什么关系。默认就好。 /* Set the Device Information */ CSL_SRIO_SetDeviceInfo (hSrio, DEVICE_ID1_16BIT, DEVICE_VENDOR_ID, DEVICE_REVISION); /* Set the Assembly Information */ CSL_SRIO_SetAssemblyInfo(hSrio, DEVICE_ASSEMBLY_ID, DEVICE_ASSEMBLY_VENDOR_ID, DEVICE_ASSEMBLY_REVISION, DEVICE_ASSEMBLY_INFO); 其余device_srio_loopback.c中对于DEVICEID的函数默认即可,无需修改。 参考文献
http://www.ti.com/cn/litv/pdf/sprugw1b
PS:欢迎大家与我讨论文章中的问题,包括反对我的观点。