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

Tarbal

Свой
  • Постов

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

  • Посещение

Весь контент Tarbal


  1. SFP кто-нибудь подключал?

    Я знаю, что бывают transceivers с PHY и без него. А устройство куда они вставляются вроде всегда имет PHY. Проблема такая. Построил Линукс. Драйвер ethernet встать попробовал, а PHY не видит. Плата KRIA KR260 имеет модуль, схемы которого нету. Непонятно есть ли там PHY или нету. Может оно будет работать только с трансивером с PHY. А как их отличить?
  2. Я о связи барметала и Линукса писал. Тригер внутри барметала. Там можно на прерывании таймера сделать. Можно подобрать частоту SPI так, чтобы читало без остановки, выдавая с нужной скоростью результат.Как раз время транзакции SPI совпадет с sampling rate.
  3. Это иначе делают. Надо настроить DMA (прямой доступ в память) чтобы из одного адреса (вход с порта) в область памяти писал. К порту GPIO подключить источник информации и сигнал готовности данных настроить, чтобы синхронизировал DMA. По заполнению буфера вызывать прерывание, в котором переключать буфер, перенастроив DMA.
  4. Вам надо еще определиться с тем, что у вас за 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/ будет добавлена соответствующая директория.
  5. Это за 2015. Я и за 2018 находил. Только не работало как я и написал. Вот то что посоветовал erikN сработало. Правда, немного пришлось подрихтовть. К тому же синтаксис поменялся. IMAGE_INSTALL_append = " fw_printenv" Теперь надо с ':' писать IMAGE_INSTALL:append = " fw_printenv" Да и fw_printenv неправильно, а вот так работает. IMAGE_INSTALL:append = " u-boot-fw-utils" Но есть другая проблема. Почему-то результат становится меньше размером, busybox отсутствует и криво стартует. Разбираюсь.
  6. Спасибо! А рецепт вы сами написали или следовали какой-то инструкции? Может есть скрипт какой? Поищу что ракое recipe-util IMAGE_INSTALL_append = " fw_printenv" Эту строку я вставил, но рецепта нету рабочего. Последую вашей рекомендации. А не лучше сделать пробел и перед последней кавычкой? Для надежности. Вдруг в следующей IMAGE_INSTALL_append забудете поставить пробел. Здесь от практики конечно зависит, о которой я не знаю из-за неопытности в Yocto. Потому и предлпочитаю все предусмотреть.
  7. Есть здесь спецы по Yocto?

    Я хочу построить fw_printenw и поместить ее в /usr/bin Для этого надо скомпилировать инструменты из пакета u-boot. Вот из этой директории: https://github.com/u-boot/u-boot/tree/master/tools/env Никак не могу уговорить Yocto это сделать. С рецептом никак не получается. Нашел много разных рецептов, но ни один не работает. Yocto же строит u-boot может есть какой-нибудь рецепт в стандартном наборе?
  8. Все определяется тем, что подразумевается под эффективным способом. Для некоторых задач вполне подойдет userspace решение. Ну наполовину задача уже решена будет. А потребуется, то и на винду драйверы пишут обычные люди.
  9. Кто-нибудь попробовал использовать? Может есть какие-нибудь пожелания насчет дополнительных возможностей? Думаю добавить две кнопки для листания дампа вперед и назад.
  10. Немного улучшил код и исправил ошибку в 64 битной архитектуре.
  11. Предупреждаю тех, кто не знает что они смотрят, что есть такие регистры, чтение которых может подвесить систему, а запись в некоторые (например, некоторые регистры PMIC) могут убить железо в компьютере. Используйте доступ только к тем регистрам, назначение которых вам известно. В описании это есть, но не грех и продублировать.
  12. Полностью с вами согласен. Не было времени думать. Надо было быстро что-то сотворить для того, кто со стороны FPGA работал. По стереотипу сделал. Раньше работал с подобными програмамми. Они использовали XML. Будет время, добавлю такую возможность. На самом деле я часто инструменты делаю пока работаю над проектом. Просто этот мне понравился своей простотой и гибкостью, потому его и выставил в гитхаб. Планы другие были пока делал его. Да и для практики в Питоне нужно было что-то сотворить. Питона я совсем не знаю.
  13. С этим я как раз согласен. Добавил описание работы с дополнительными окнами, создаваемыми при помощи простых XML файлов.
  14. Я в большинстве случаев пользуюсь конолью. Вы будете утверждать что ГУИ по информативности не лучше консоли? Когда клубоко в отладке надо набирать в нужном окне терминала нужные команды не сравнимо, на мой взглад, с простым нажатием кнопки и видением всей картины с одного взгляда. Но о вкусах не спорят.
  15. Ну значит забейте. Это вам не подходит. Не буду вспоминать про богатство опций. Навскидку vnc.
  16. Сначала я как раз для devmem сделал GUI на удаленном компьютере, потом оказалось, что devmem, devmem2 и devmem Busybox имеют разный интерфейс. Потому и переделал на независимое от devmem исполнение. devmem2 не позволяет 64битный доступ. С него я и начал. Если посмотрите в скрипте после exit стоит цикл, в котором с devmem шел обмен Будет описано. Там есть примеры xml файлов. Все в них конфигурируется. Они очень простые. Если питоновской апликацией через файл меню открыть, то будет тот набор регистров, что описан в XML файле. Если нужен один регистр -- сделать xml файл с одним регистром. На него откроется соответствующий диалог. Читается все вместе по кноке внизу, пишется индивидуально для каждого регистра. Прикол в том. что для каждого устройства можно открыть индивидуальный диалог с нужными регистрами. Пример файла program (открываается другой строкой меню) просто последовательно совершает чтения и записи регистров. Как написано. Интерфейс унаследован от devmem Busybox: Адрес (8/16/32/64) -- чтение, а если добавить значение следующим элементом, то запись. Правда запись только 32 битная работает. На самом деле я на коленке сделал простой инструмент, чтобы легко разрешать разногласия с группой FPGA. Мне показалось, что может оказаться полезен другим. Если не интересно, то забейте. Открыть нужный набор регистров одновременно с разных компьютеров (если только читать) -- это то, что было надо.
  17. spawn: command not found

    Что показывает команда: which expect А попробуйте написать #!/usr/bin/expect Файл-то не нужен никакой.
  18. В меню File Неужели никто не использует VPN для удаленки? На остальное даже отвечать не буду. Просто будет переливание из пустого в порожнее. Это один из вариантов. Можно читать и один регистр. Можно читать любую группу регистров за раз. Все легко конфигурируется. А можно написать программу из последовательных чтений и записей одним нажатием. Точнее выбором файла программы. Несколько файлов -- несколько программ. Программа состоит из последовательности строк в строке адрес регистра и признаков операции.
  19. Лог включается для протоколирования. Удивительный поворот насчет безопасности. О какой безопасности идет речь? Это для отладки драйверов инструмент. Пока идет отладка сервис включен. Вообще с отдельного интерфейса можно работать если так безопасность волнует. Не вижу смысла выставлять доступ к такому инструменту в сеть. Насчет разрушающего чтения не пойму чем ваш метод лучше. Разве он не разрушит?
  20. Интерфейсом И возможность открыть любое окно с произвольным набором регистров как это: И это. Правда один адрес указан, но это в XML файле ошибка, которую легко исправить:
  21. Построить чтобы работало, а потом можно все части вручную можно поковырять. Главное, что легко строится работающая система. Есть неплохие книги у этого автора: https://www.rulit.me/author/cilyurik-oleg-ivanovich Поищите по ядру Линукс. Автор, кстати сюда заходит. Вот, например: https://www.rulit.me/author/cilyurik-oleg-ivanovich/rasshireniya-yadra-linux-drajvery-i-moduli-str-516-download-730952.html
  22. Пока только для 32 битного Линукса. Там две програмки. Одна на Питоне, которая бежит на любом компьютере и по UDP разговаривает с той, что на исследуемой машине. В директории Target то, что надо построить на исследуемой машине или при помощи кросс компилятора для нее. Исполнение скрипта с sudo стартанет USB сервер. В первый раз ругнется, что не может его удалить. IP address машины нужен в соответствующем поле диалога питоновской программы на удаленном компьютере. В меню File можно открыть скрипт файл, который исполнит желаемую последовательность записей и чтений. xml файлы позволяют открыть любое число окон, в которых регистры собраны произвольно. Это позволяет открыть по окну на каждое устройство или на часть устройства. Програмка еще сырая, но уже рабочая. Запись в регистры работает только 32 битная, а читать можно по 8, 16, 32 и 64 бита. https://github.com/stepanovr/linuxreg2
  23. Зато более популярная и ответы легче найти в поиске по интернету. Кстати, Yocto легко строит Линукс.
×
×
  • Создать...