Перейти к содержанию
    

Tarbal

Свой
  • Постов

    1 672
  • Зарегистрирован

  • Посещение

Репутация

4 Обычный

1 Подписчик

Информация о Tarbal

  • Звание
    Профессионал
    Профессионал

Контакты

  • ICQ
    Array

Посетители профиля

9 241 просмотр профиля
  1. EEPROM disk

    Вопрос знатокам. Как подключить 24C256 к системе, чтобы использовать как блоковое устройство. В таком случае я смогу создать и смонтировать партишн. Драйвер, который я нашел (https://fossd.anu.edu.au/linux/latest/source/drivers/misc/eeprom/at42.c) является char driver. Есть другой драйвер в ядре?
  2. Недавно нашел непростой баг. При переходе с 7 на 10 версию FreeRTOS система подвисала. Проблема оказалась была связана с мютексом. Дело в том, что мютекс имеет хозяина (тред, который его установил) и снять его может только тот кто поставил. В семерке это игнорировалось. В версии 10 тред, который не был хозяином использовал неинициалисированный указатель, что приводило к exception. Затруднило поиск отсутствие системы защиты памяти. Заменили мютекс на бинарный семафор и стало можно снимать его не тем тредом, который его установил. Зато хорошо запомнил чем отличаются вышеназванные семафоры.
  3. Это единственная ОС, которая подробнейше описана в книге ее автора. Точнее ее начальная версия описана. Там описаны детали имплементации, приведен код. Я 20 лет назад прочитал книгу с большим удовольствием. Считаю, что это лучший учебник по RTOS.
  4. Графика для Linux.

    Кстати, сейчас уже многие с Х-ов переходят на Wayland/Weston. Самый легкий вариант GUI без X-ов был QT. Вроде они перестали поддерживать его. Я не уверен в последнем.
  5. Смешно получилось. Это мой вопрос по ссылке. Я его задал.
  6. У меня, похоже, нет физически PHУ. В device tree его нету и на схеме не могу найти.
  7. Пока не получил. Просто теоретически предположил. Что можно почитать по теме подскажите пожалуйста. Спасибо Надо детектировать сигнал.
  8. Когда мы делали FWT (интерфейс проводного телефона к мобильной сети), то именно так и вырабатывали звонок.
  9. Всем привет! Я немного далек от радио. Понадобился детектор излучения на 5 гигагерц. Сигнал в районе -80 dbm Вот думаю что проще, сначала усилить, а потом выпрямлять или поставить смеситель и усиливать уже разностные сотню мегагерц. Что посоветуете? Может есть готовые решения или модули уже готовые. Паять и отлаживать не проблема.
  10. SFP кто-нибудь подключал?

    Я знаю, что бывают transceivers с PHY и без него. А устройство куда они вставляются вроде всегда имет PHY. Проблема такая. Построил Линукс. Драйвер ethernet встать попробовал, а PHY не видит. Плата KRIA KR260 имеет модуль, схемы которого нету. Непонятно есть ли там PHY или нету. Может оно будет работать только с трансивером с PHY. А как их отличить?
  11. Я о связи барметала и Линукса писал. Тригер внутри барметала. Там можно на прерывании таймера сделать. Можно подобрать частоту SPI так, чтобы читало без остановки, выдавая с нужной скоростью результат.Как раз время транзакции SPI совпадет с sampling rate.
  12. Это иначе делают. Надо настроить DMA (прямой доступ в память) чтобы из одного адреса (вход с порта) в область памяти писал. К порту GPIO подключить источник информации и сигнал готовности данных настроить, чтобы синхронизировал DMA. По заполнению буфера вызывать прерывание, в котором переключать буфер, перенастроив DMA.
  13. Вам надо еще определиться с тем, что у вас за SPI контроллер стоит. Найти в дереве устройств описание. Что за Линукс у вас? Линукс уже стоит на устройстве? Какие файлы в /boot/ директории? Примеры можно найти в коде ядра: https://elixir.bootlin.com/linux/latest/source/drivers/spi Инструкции там же: https://elixir.bootlin.com/linux/latest/source/Documentation/spi Вам с нуля все будет непонятно. Спрашивайте. Глобально выглядит так: Каждому устройству соответствует его описание в дереве устройств. Режимы работы, адреса регистров и т.д.. Если одинаковых устройств несколько, то каждому индивидуальное описание и регистры точно будут другими в этих описаниях одного и тогоже типа устройства. Еще есть драйвер, который для работы с этим устройством. Вам надо и драйвер и описание в дерево добавить. В описании и драйвере есть признак, по которому для каждого описания ищется драйвер. Если нашелся драйвер, то устройство может быть использовано. В директории /sys/ можно посмотреть. Там каждому драйверу и каждому описанию посвящена директория. Вот дерево для вашего процессора: https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/allwinner/suniv-f1c200s-lctech-pi.dts или https://elixir.bootlin.com/linux/latest/source/arch/arm/boot/dts/allwinner/suniv-f1c200s-popstick-v1.1.dts Найдите этот файл в вашем коде ядра. Там та же директория. Одно SPI устройство уже описано. &spi0 { pinctrl-names = "default"; pinctrl-0 = <&spi0_pc_pins>; status = "okay"; flash@0 { compatible = "spi-nand"; reg = <0>; spi-max-frequency = <40000000>; }; }; Где compatible = "spi-nand"; есть признак ("spi-nand" -- признак), который должен совпасть с драйвером. У вас будет другой признак. Можете поискать среди драйверов. Вдруг найдете подходящий, тогда из него признак возьмете и впишите в свое дерево. Можно любой признак вписать. Напишите имя микросхемы, например. Главное чтобы в обоих местах имя в точности совпадало. Там еще ножки описаны: spi0_pc_pins: spi0-pc-pins { pins = "PC0", "PC1", "PC2", "PC3"; function = "spi0"; }; Вот похожий драйвер: https://github.com/torvalds/linux/blob/master/drivers/iio/adc/ad7476.c Он с правильного источника. То, что я давал выше -- производный источник (https://elixir.bootlin.com). В структуре static struct spi_driver ad7476_driver = { .driver = { .name = "ad7476", }, .probe = ad7476_probe, .id_table = ad7476_id, }; .name = "ad7476" "ad7476" -- признак, по которому будет найдено описание в дереве устройств для этого драйвера. Когда добавите код драйвера в соответствующее место в директории ядра, надо будет добавить описание вашего драйвера в Kconfig и Makefile. Посмотрите как сделано здесь: https://github.com/torvalds/linux/tree/master/drivers/iio/adc Потом в окне, созданном командой make menuconfig добавьте этот драйвер. Там будет строка, что вы добавили в Kconfig Теперь при компиляции ядра ваш драйвер будет присутствовать. При запуске Линукса на вашем устройстве, в директории /sys/ будет добавлена соответствующая директория.
  14. Это за 2015. Я и за 2018 находил. Только не работало как я и написал. Вот то что посоветовал erikN сработало. Правда, немного пришлось подрихтовть. К тому же синтаксис поменялся. IMAGE_INSTALL_append = " fw_printenv" Теперь надо с ':' писать IMAGE_INSTALL:append = " fw_printenv" Да и fw_printenv неправильно, а вот так работает. IMAGE_INSTALL:append = " u-boot-fw-utils" Но есть другая проблема. Почему-то результат становится меньше размером, busybox отсутствует и криво стартует. Разбираюсь.
×
×
  • Создать...