Задать вопрос
  • Возможно ли собрать libffi под esp32(esp-idf)?

    jcmvbkbc
    @jcmvbkbc
    А можно допустим libffi просто включить в CMake файл?

    Catmengi, я не знаю. Возможно чтение документации IDF и поиск по esp32.com помогут найти ответ на этот вопрос.

    Где можно узнать подробнее процесс компиляции?(Где и какие файлы в libffi отвечают за это)

    libffi использует классические autotools, её интерфейс сборки -- configure / make / make install. На выходе этого процесса получается статическая библиотека и заголовочные файлы. Можно тупо сконфигурировать для xtensa и посмотреть в лог сборки, у меня из
    $ ../libffi/configure --host=xtensa-esp32s3-elf --prefix=`pwd`/root
    $ make

    получилось вот что, главная строчка там такая:
    xtensa-esp32s3-elf-ar cru .libs/libffi.a  src/prep_cif.o src/types.o src/raw_api.o src/java_raw_api.o src/closures.o src/tramp.o src/xtensa/ffi.o src/xtensa/sysv.o
    по ней можно найти все команды для компиляции составных частей библиотеки.
    Написано
  • Makefile не правильно раскрывает переменные, почему?

    jcmvbkbc
    @jcmvbkbc
    N_eFFe_X, кнопочка "отметить решением" как раз для этого предназначена.
    Написано
  • Какое напряжение на контактах spi esp32s3 n16r8?

    jcmvbkbc
    @jcmvbkbc
    на моей плате на ножках написаны номера gpio а не номера контактов

    Catmengi, это как раз нормально, на моих платах то же самое.
    Написано
  • Какое напряжение на контактах spi esp32s3 n16r8?

    jcmvbkbc
    @jcmvbkbc
    Типа того. В этом примере я вешаю SD на GPIO 10-13 и она работает как на esp32s3 n32r8 с внутренним FLASH на 1.8v, так и на esp32s3 n16r8 с внутренним FLASH на 3.3.
    Написано
  • Какое напряжение на контактах spi esp32s3 n16r8?

    jcmvbkbc
    @jcmvbkbc
    На тех, которые помечены VDD_SPI в табличке.
    Написано
  • Какое напряжение на контактах spi esp32s3 n16r8?

    jcmvbkbc
    @jcmvbkbc
    spi через gpiomux будет 3.3v? Или как?

    Зависит от того, на какие пины вывести. Можно вывести половину сигналов на пины с 3.3, а половину -- на пины с 1.8
    Написано
  • Какое напряжение на контактах spi esp32s3 n16r8?

    jcmvbkbc
    @jcmvbkbc
    этот spi всегда будет работать на 1.8v?

    Catmengi, ну если на ходу его не переключать на другие пины, и не переклюать напряжение VDD_SPI, то будет всегда работать на 1.8.

    проблема в том то что большинство spi устройств требуют 3.3v

    В esp32s3 два gp-spi контроллера.
    Написано
  • Какое напряжение на контактах spi esp32s3 n16r8?

    jcmvbkbc
    @jcmvbkbc
    Тоесть через iomux на gpio 37,36,35 будет работать на 1.8v?

    Да, так можно сделать.

    Но как мне допустим подключать sd карту по spi или экран?

    Вопрос непонятен. В чём проблема?
    Написано
  • #Define TRUE FALSE. Что произойдёт?

    jcmvbkbc
    @jcmvbkbc
    Равносильно тому, что после этой строки в текстовом редакторе выполнить операцию "найти и заменить целое слово с учётом регистра" TRUE на FALSE

    Не, не равносильно, смотри.
    Написано
  • Каким образом прерывания работают в esp8266?

    jcmvbkbc
    @jcmvbkbc
    а у тебя случаем нет списка книг, по которым ты обучался встроенным системам да и работе с микропроцессорами

    djEban, конкретно по этим двум топикам -- нет. Мой опыт в основном получен из разборок с реальными системами и эмуляторами и из взаимодействия с людьми делающими железо. Хотя, можно упомянуть "Digital Design and Computer Architecture" Харрис и Харрис и какой-нибудь базовый учебник по верилогу, типа FPGA Prototyping by Verilog Examples.
    Написано
  • Каким образом прерывания работают в esp8266?

    jcmvbkbc
    @jcmvbkbc
    djEban, идея в том, что блок GPIO дёргает единственное IRQ процессора для любой комбинации GPIO вызывающей прерывание. Поскольку почти вся документация на esp8266 -- это результат реверс-инжениринга, можно считать, что ты экспериментально выяснил, что это IRQ #4. Могу добавить, что UART привязан к IRQ 5, а SPI -- к внешнему IRQ 6/внутреннему IRQ 8 (разница из-за того, что внутренние IRQ 6 и 7 -- это таймер и softirq, никакие внешние линии им не соответствуют).
    Написано
  • Каким образом прерывания работают в esp8266?

    jcmvbkbc
    @jcmvbkbc
    djEban, непонятен контекст того, что ты делаешь. Если ты запускаешь что-то в esp-open-rtos, то там всё настраивается собственными примитивами. Если ты программируешь голый esp8266, то всё надо настраивать. Нужны подробности.

    в GPIO пин прокинул пятерку с 7 по 9 биты, т.е. тем самым включил прерывание при высоком уровне

    переход от "прокинул" к "тем самым включил" непонятен. В esp8266 есть pinmux которым нужно настроить, что конкретно присоединяется к ногам чипа -- gpio или сигналы от другой периферии.

    Может прерывания нужно как-то явно включать процессорной командой, не знаешь?

    В самом процессоре прерывания включаются 1) очисткой PS.EXCM и установкой PS.INTLEVEL в значение ниже уровня прерываний которые нужно разрешить и 2) установкой битов в регистре INTENABLE соответствующих конкретным IRQ которые нужно разрешить.
    Написано
  • Каким образом прерывания работают в esp8266?

    jcmvbkbc
    @jcmvbkbc
    djEban, в оверлее адреса по умолчанию, вообще они перемещаются записью базового адреса в регистр vecbase, о чём можно прочитать в isa book.

    В esp-sdk почему-то векторы загружаются по 0x40010000

    По твоим ссылочкам, кстати, как будто выходит 0x40100000
    Написано
  • Есть ли модуль реального времени в AI Thinker ESP32 (ESP32 CAM)?

    jcmvbkbc
    @jcmvbkbc
    Контроллер который может работать когда весь остальной ESP32 находится в состоянии сна. 669569677749e831696479.png
    На его базе можно сделать часы реального времени, если озаботиться его непрерывным питанием.
    Написано
  • Какая сложность у std::sort?

    jcmvbkbc
    @jcmvbkbc
    Основание логарифма не имеет значения, потому что смена основания эквивалентна домножению на константу, которую в O-записи игнорируют.
    Написано
  • Как общаться с устройствами ввода вывода на Си в linux?

    jcmvbkbc
    @jcmvbkbc
    ты утверждаешь что mmap при мапинге /dev/mem будет напрямую писать в физическую память ??

    pfg21, mmap не будет никуда писать. Но mmap может отобразить любую область физической памяти в адресное пространство процесса для прямого доступа.

    тогда получается любой пользователь может получить доступ к любому участку физической памяти без каких-либо проверок, только за'mmap'ив /dev/mem в своей проге ??

    Почти. Любой пользователь который может открыть /dev/mem.
    Написано
  • Как общаться с устройствами ввода вывода на Си в linux?

    jcmvbkbc
    @jcmvbkbc
    pfg21, функция mmap_mem -- этот самый "хук". Она зарегистрирована здесь как обработчик mmap в mem_fops, mem_fops указаны как fops в массиве devlist для устройства с минорным кодом DEVMEM_MINOR, этот массив обрабатывается здесь, где регистрируются устройства с мажорным кодом MEM_MAJOR. Устройство с кодом 1, 1 -- это /dev/mem и есть, как можно увидеть здесь
    Написано
  • Как общаться с устройствами ввода вывода на Си в linux?

    jcmvbkbc
    @jcmvbkbc
    …но это совсем не в тему

    …в контексте вопроса сие не имеет значения.

    pfg21, твой последний вопрос был, я напомню, "в каком месте бредовость", в контексте этого вопроса это имеет непосредственное значение.

    код, реализующий mmap под /dev/mem, не приводил :)

    Я из этого могу сделать только вывод о том, что ты мои ответы не читаешь. Потому что я приводил ссылку на этот код, вот в этом комментарии: "Эта функция, как можно увидеть здесь, вызывает…". Как тебя после этого воспринимать хоть сколько-нибудь серьёзно -- непонятно.
    Написано
  • Как общаться с устройствами ввода вывода на Си в linux?

    jcmvbkbc
    @jcmvbkbc
    это потребует наличие в хуке кода обработки доступов пользователя к /dev/mem.

    pfg21, Нет, не потребует. Потому что проверкой доступа занимается вызов open, которым файл открывают.

    сильно сомневаюсь что такой хук будет внедрен, смысл в нем ??

    Я выше приводил ссылки в код ядра реализующий mmap для /dev/mem, в чём ты конкретно сомневаешься, я не понял?
    Написано
  • Как общаться с устройствами ввода вывода на Си в linux?

    jcmvbkbc
    @jcmvbkbc
    в каком месте бредовость ??

    pfg21, в каждом предложении. Конкретно:

    mmap отлавливает это изменение…

    когда пользователь обращается к отображённой памяти, вызов mmap уже давно закончился и не может "отловить это изменение". Ты имел в виду подсистему виртуальной памяти?

    …и формирует файловый запрос на запись. запрос получает драйвер VFS разбирает путь

    Т.е., я правильно понимаю, мы отобразили файл в память (а это значит, откыли его перед этим), а теперь "mmap, отловивший изменения в памяти" посылает запрос, в котором фигурирует путь до этого файла? А если файл тем временем удалили? Или переименовали? Или удалили и создали другой файл с таким же именем на его месте?

    выявляет подстрочку /dev

    Т.е., я правильно понимаю, что по-твоему /dev/mem работает только пока он в /dev, а если его перенести в какое-нибудь другое место, то он работать перестанет?

    и направляет его в драйвер udev ответственный за этот путь

    Что это за термин, "драйвер udev"? devtmpfs?
    Написано