Как читать регистры MCP2515 из приложения, используя сокеты? - PullRequest
0 голосов
/ 03 апреля 2020

У меня CAN-контроллер MCP2515, подключенный к SPI, и я использую сокеты для отправки / получения фрейма CAN (используя sendto / read) в приложении. Как прочитать регистр CANCTRL MCP2515 из приложения с помощью сокетов?

Дополнительная информация: - Использование Linux и сборка среды Yocto

Просьба ответить как можно скорее. Спасибо

1 Ответ

0 голосов
/ 05 апреля 2020

Есть несколько способов сделать это. На мой взгляд, простейшие 2:

  1. Использование / dev / mem: In linux / dev / mem обеспечивает доступ к физической памяти системы. Если вам известен физический адрес регистра CANCTRL, который должен быть базовым адресом регистров MCP2515 + смещение регистра CANCTRL, вы можете открыть / dev / mem и использовать mmap для отображения адреса регистра CANCTRL в адресное пространство ваших приложений. Затем вы можете получить доступ к этому регистру, используя указатель, возвращаемый mmap. В качестве примера вы можете взглянуть на devmem (утилита, которая делает то же самое из оболочки) исходный код .

Целевой адрес, указанный в исходном коде выше, должен быть физический адрес регистра CANCTRL для вашего случая.

Если у вас есть доступ к драйверу устройства контроллера CAN MCP2515, вы можете добавить в драйвер запись sysfs, чтобы экспортировать содержимое соответствующего регистра в файл sysfs. Вы можете увидеть, как использовать sysfs здесь .
...