如何使用套接字从应用程序读取MCP2515寄存器?

问题描述 投票:0回答:1

我有一个MCP2515 CAN控制器连接到SPI,我正在使用套接字在应用程序中发送/接收CAN帧(使用sendto / read)。如何使用套接字从应用程序读取MCP2515的CANCTRL寄存器?

附加信息:-使用Linux和Yocto环境构建

请尽早回答。谢谢

linux-device-driver
1个回答
0
投票

有几种方法可以完成此操作。我认为最简单的2如下:

  1. 使用/ dev / mem:在Linux中,/ dev / mem提供对系统物理内存的访问。如果知道CANCTRL寄存器的物理地址应该是MCP2515寄存器的基地址+ CANCTRL寄存器的偏移量,则可以打开/ dev / mem并使用mmap将CANCTRL寄存器的地址映射到应用程序地址空间中。然后,您可以使用mmap返回的指针访问该寄存器。例如,您可以在以下位置查看devmem(从shell执行相同操作的实用程序)源代码:https://github.com/brgl/busybox/blob/master/miscutils/devmem.c

上面的源代码中提到的目标地址应为您所用情况的CANCTRL寄存器的物理地址。

  1. 如果可以访问MCP2515 CAN控制器的设备驱动程序,则可以在驱动程序中添加sysfs条目,以将相关寄存器的内容导出到sysfs文件中。您可以在此处查看如何使用sysfs:https://www.kernel.org/doc/Documentation/filesystems/sysfs.txt
© www.soinside.com 2019 - 2024. All rights reserved.