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.

AM5728 PRU读取DCAN寄存器一直返回0x00000000

【目的】把PRU当作单片机,通过CCS裸机C语言编程,编写DCAN驱动,达到与外部设备DCAN通信的功能。

【IDE】CCS10.1

【OS】linux,kernel version:4.9.69-rr-1.1+

【遇到的问题】通过映射DCAN1寄存器的地址的方式,读取及修改DCAN1寄存器的配置,但通过这种方式,读取到的值一直是0x00000000。用同样的方式可以驱动内部总线上的GPO。

【实现方式】

#define DCAN1_CTL             0x4AE3C000

#define HWREG(x)                (*((volatile unsigned int *)(x)))

volatile unsigned int ReadDCAN1Reg(void)

{

volatile unsigned int r_DCAN1_CTL = 0;

r_DCAN1_CTL = HWREG(DCAN1_CTL);

return r_DCAN1_CTL ;

}

【假想】

1. 是否存在资源冲突

2. 访问保护机制,如防火墙?

【尝试】

针对第一点,我把OS的设备树中的DCAN1资源,不给OS层,但结果还是一样,返回的值一直是0x00000000

针对第二点,我正在查阅数据手册,L3,L4防火墙的机制,但是现在还是没有方向。

请问是否有什么建议或者我不知道的机制?