Как я могу проверить, записывается ли конкретный физический адрес в ARM, LINUX?

В настоящее время я пытаюсь разработать плату расширения для BeagleBoard-xM, и мое внимание привлекла необычная ошибка: на этой плате есть PINMUX, которым управляет pinctrl-single, который сообщает мне, что MUX, который я установил в моем дерево устройств работает так, как ожидалось, такая же настройка выполняется и в u-boot. Тем не менее, соответствующий GPIO не может видеть, какое напряжение на контакте. Этот вывод хорошо работает с omap_mux на старом ядре, а вывод рядом с ним в нумерации хорошо работает с обоими ядрами.

Мой вопрос: как я могу проверить содержимое соответствующего регистра в Linux? (который может быть достигнут по его физическому адресу)


person Gergő Horváth    schedule 15.04.2015    source источник
comment
Если регистр отображается в память через физический адрес, то mmap()заполнение правильной страницы /dev/mem (которая использует физические адреса) может работать как быстрое и грязное решение для получения значения из пользовательского пространства. См., например. stackoverflow.com/questions/13124271/. Доступ к регистру через указатель на-volatile.   -  person Ulfalizer    schedule 15.04.2015
comment
Какая версия линукса? На моем mount -t debugfs debug /sys/kernel/debug и cat /sys/kernel/debug/pin-ctrl/pinctrl-handles и т. д., кажется, дают некоторую информацию. Физические регистры MUX не будут доступны.   -  person artless noise    schedule 15.04.2015
comment
@artless-noise mainline 4.0-rc7, я уже проверил это, и он сообщает правильные вещи, но булавка все еще, кажется, находится в другом режиме.   -  person Gergő Horváth    schedule 16.04.2015
comment
@ulfalizer спасибо, я попробую сейчас и отчитаюсь через несколько минут   -  person Gergő Horváth    schedule 16.04.2015
comment
Сообщаю вам, что я воспользовался решением @ulfalizer и проверил регистры pinmux и gpio, и все оказалось в порядке. Проблема была вызвана неисправной микросхемой на плате, из-за чего ее напряжение VCC упало ниже 1 В, в результате чего ее выводы не смогли достичь порога высокого напряжения SOC. Замена неисправного компонента решила проблему. Спасибо за вашу помощь!   -  person Gergő Horváth    schedule 16.04.2015