Ответы пользователя по тегу DTS
  • Как регистры SOC отображаются на память Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как узнать, какой адрес этих регистров уже после инициализации устройств и загрузки ОС?

    Физический адрес -- как и написано в dts: 0xfe600000. Виртуальный адрес -- какой-то сравнительно случайный, выделенный вызовом ioremap() или какой-нибудь его обёрткой. Если драйверу нужен доступ к регистрам -- драйвер просто вызывает ioremap() сам и получает адрес. Если доступ нужен в юзерспейсе -- можно (при наличии разрешений) сделать mmap() файлу /dev/mem по смещению равному физическому адресу устройства.

    Или обратная задача: есть процесс, который пишет в некоторую область памяти, как узнать, возможно, это какие-то регистры SOM

    Сделать cat /proc/<pid>/maps и посмотреть, что отображено в эту область виртуальных адресов.

    Но обычно люди не отображают регистры устройств напрямую в пользовательскую память, максимум -- отображают файл обрабатываемый драйвером устройства, а драйвер уже может выступить дополнительным слоем абстракции и подставить в отображение часть адресного пространства устройства, если такое им поддерживается. В этом случае для понимания что куда отображается без чтения исходников драйвера не обойтись.
    Ответ написан
    Комментировать