R6L-025 1 14 марта, 2017 Опубликовано 14 марта, 2017 · Жалоба Добрый день! Собственно проблема: Есть DE0-Nano-SoC, есть задача собрать свое ядро под нее. При этом нужно чтоб там были SPI, I2C, FPGA-manager, Ethernet. Если взять собранное 3.13 ядро от терасика - то все отлично работает, интерфейсы есть, fpga-mngr позволяет перезаливать прошивку FPGA, сеть есть, все хорошо. Но, как только начинаю собирать собственное ядро происходит магия. Под одной версией ядра (4.1_15.09.01) работает fpga_mngr, но не работает spi и сеть, под 4.4 работает сеть, но нет ни менеджера, ни spi, под более высокими версиями примерно то же самое. При этом под нерабочим spi я подразумеваю что он создается как устройство spidev31765.1, но принимать данные упорно не хочет. Да и номер "31765" очень смущает. (spidev31765.1 появляется если использовать драйвер "snps,dw-spi-mmio", если указывать "snps,dw-apb-ssi", как это делают в socfpga.dtsi, в исходниках ядра - то вообще устройство исчезает, нет ни в /sys/class, ни в /sys/devices) FPGA_mngr под версиями старше 4.1 попросту исчезает из /dev. Хотя /sys/class есть директория fpga0. Если собирать вручную ядро 3.13, как у терасика, то все что нужно появляется, но ядро стартует только с прелоадером терасика. Если генерить через bsp-editor или bsp-create-settings - то ядро попросту не стартует после загрузки u-boot. Ядра из ветки linux-socfpga, для сборки брал конфиги из "socfpga_defconfog" + добавлял поддержку блочных устройств +2Tb для работы ext4. прелоадер и бутлоадер собирал как описано на rocketboards: https://rocketboards.org/foswiki/view/Docum...xBeginnerSGuide https://rocketboards.org/foswiki/view/Docum...CWorkshopSeries Ни у кого не возникало таких проблем? на хабре как-то была статья про исчезновения fpga-mngr https://habrahabr.ru/post/267273/, но лично у меня он в исходниках присутствует Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosu-art 0 30 марта, 2017 Опубликовано 30 марта, 2017 · Жалоба Здравствуйте. Приходилось включать I2C и GPIO для своих нужд. До FPGA manager еще не добрался. Пока гружу прошивку из UBOOT, но вскоре с ним тоже придется разбираться. При сборке Linux (я остановился на 4.10.0) в menuconfig нужно поставить галочки на поддержке I2C и SPI. В итоге они должны появиться cat /proc/devices, однако, это не значит, что они появятся в /dev и ими можно будет пользоваться (так у меня было с I2C) Добавляем в /etc/modules i2c-dev и делаем перезагрузку. После этого в /dev появляется i2c-0. Чтобы воспользоваться GPIO , нужно было вначале найти его номер, который ему присвоил линукс. Мне лично помогло это https://support.criticallink.com/redmine/pr...IO_Chip_Mapping (тут я больше пишу для себя, чтобы не забыть ) Все это работает с моим прелодером и UBOOT, но чтобы линукс при загрузке не зависал, нужно найти правильный dtb/dts. То что генериться из .sopcinfo - полная хрень, которая не работает. Я недавно выкладывал рабочий файл в соседней теме. Посмотрите, может поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 30 марта, 2017 Опубликовано 30 марта, 2017 (изменено) · Жалоба gosu-art, спасибо что ответили А Вы могли бы поподробней на этом месте Добавляем в /etc/modules i2c-dev вы собирали подгружаемые модули, или что туда требуется положить? Спасибо, на счет GPIO надо доки к ядру почитать. Я на скору руку пока сделал прямое управление контроллером GPIO через отображение на память его регистров. Вы сказали 4.10 ядро, а вы откуда его стягивали, если не секрет? Я обычно здесь ищу https://github.com/altera-opensource/linux-socfpga. У них, вроде, 4.8 крайняя сборка под socfpga. Или вы из основной ветки брали? А на счет dts/dtb - у меня тоже генерируемые sopc2dts (хотя на rocketboards именно этот способ рассматривают) криво работают. Более рабочий путь для меня получился как написано тут: https://rocketboards.org/foswiki/view/Docum...FPGALinuxKernel На основе файла socfpga_cyclone5_de0.dts, или другого создаем свой, с нужными конфигами, и потом наитивным ядру способом собираем dtb. Так под 4.1 у меня сеть заработала, чего с sopc2dts не случалось. Как я понял между версиями ядра меняется интерфейс bindings для отдельных модулей, в т.ч. для fpga manager, и собранные наитивным способом dtb будут более адекватными. Хотя spi у меня пока никаким способом не заработал... P.S. хотя, генерируемый dts из *.sopcinfo может быть полезен тем, что там описана периферия подключенная на шину hps. Из него можно куски покопипастить в собственный dts, это как-то надежнее выглядит :) Изменено 30 марта, 2017 пользователем R6L-025 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosu-art 0 30 марта, 2017 Опубликовано 30 марта, 2017 · Жалоба Ядро брал отсюда https://github.com/altera-opensource/linux-socfpga/releases А Вы могли бы поподробней на этом месте Цитата Добавляем в /etc/modules i2c-dev Нужно просто добавить строчку i2c-dev в файл modules. nano /etc/modules Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 30 марта, 2017 Опубликовано 30 марта, 2017 · Жалоба Интересно, я думал это ванильные ветки ядра (не помеченные rel_socfpga*), но вроде и альтеровские исходники лежат в них А, понял. Да я в вопросах модуля ядра сильно плаваю :) Надо попробовать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 31 марта, 2017 Опубликовано 31 марта, 2017 · Жалоба Все же, как я понимаю, для того чтоб данный способ заработал, нужно чтоб в директории /lib/modules/<version_of_kernel> лежали соответствующие модули, а строка в /etc/modules лишь указывает подгрузить их оттуда. А у меня модули встроенные в ядро при сборке Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 31 марта, 2017 Опубликовано 31 марта, 2017 · Жалоба UPDATE: заработала периферия (i2c,spi, fpga-mgr) на ядре rel_socfpga-3.10-ltsi-rt_16.03.02_pr. На более старших версиях так и не вышло Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosu-art 0 15 апреля, 2017 Опубликовано 15 апреля, 2017 · Жалоба Похоже что то поменялось для FPGA манагера. https://forum.rocketboards.org/t/missing-de...e0-nano-soc/526 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
R6L-025 1 15 апреля, 2017 Опубликовано 15 апреля, 2017 · Жалоба Спасибо, интересный пост, надо попробовать. Вообще, как я понял, там довольно много между версиями меняется. Еще Altera ввела фичу base_region начиная с какого-то ядра. В общем нужно еще следить за изменениями в device trree Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться