а у тебя случаем нет списка книг, по которым ты обучался встроенным системам да и работе с микропроцессорами
в GPIO пин прокинул пятерку с 7 по 9 биты, т.е. тем самым включил прерывание при высоком уровне
Может прерывания нужно как-то явно включать процессорной командой, не знаешь?
PS.EXCM
и установкой PS.INTLEVEL
в значение ниже уровня прерываний которые нужно разрешить и 2) установкой битов в регистре INTENABLE
соответствующих конкретным IRQ которые нужно разрешить. ты утверждаешь что mmap при мапинге /dev/mem будет напрямую писать в физическую память ??
mmap
не будет никуда писать. Но mmap
может отобразить любую область физической памяти в адресное пространство процесса для прямого доступа.тогда получается любой пользователь может получить доступ к любому участку физической памяти без каких-либо проверок, только за'mmap'ив /dev/mem в своей проге ??
/dev/mem
. mmap
в mem_fops
, mem_fops
указаны как fops в массиве devlist
для устройства с минорным кодом DEVMEM_MINOR
, этот массив обрабатывается здесь, где регистрируются устройства с мажорным кодом MEM_MAJOR
. Устройство с кодом 1, 1 -- это /dev/mem и есть, как можно увидеть здесь …но это совсем не в тему
…в контексте вопроса сие не имеет значения.
код, реализующий mmap под /dev/mem, не приводил :)
это потребует наличие в хуке кода обработки доступов пользователя к /dev/mem.
open
, которым файл открывают.сильно сомневаюсь что такой хук будет внедрен, смысл в нем ??
mmap
для /dev/mem
, в чём ты конкретно сомневаешься, я не понял? в каком месте бредовость ??
mmap отлавливает это изменение…
…и формирует файловый запрос на запись. запрос получает драйвер VFS разбирает путь
выявляет подстрочку /dev
/dev/mem
работает только пока он в /dev
, а если его перенести в какое-нибудь другое место, то он работать перестанет?и направляет его в драйвер udev ответственный за этот путь
Catmengi, я не знаю. Возможно чтение документации IDF и поиск по esp32.com помогут найти ответ на этот вопрос.
libffi использует классические autotools, её интерфейс сборки -- configure / make / make install. На выходе этого процесса получается статическая библиотека и заголовочные файлы. Можно тупо сконфигурировать для xtensa и посмотреть в лог сборки, у меня из
получилось вот что, главная строчка там такая: по ней можно найти все команды для компиляции составных частей библиотеки.