【目的】把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防火墙的机制,但是现在还是没有方向。
请问是否有什么建议或者我不知道的机制?
Nancy Wang:
参考以下帖子看一下是否有帮助。
e2e.ti.com/…/522451
您在英文论坛发布的帖子,我再帮您发邮件问一下。
,
Nancy Wang:
您在英文论坛发布的帖子已有工程师回复,请跟进。