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