Включить аппаратный SPI на Xillinux

У меня есть плата MicroZed, на которой работает Xillinux 1.3. Я хотел подключить к нему внешний АЦП SPI и написать приложение в Linux для чтения значений из АЦП. Аппаратный SPI-интерфейс устройства Zynq не включен в Xillinux. Как я могу его включить, мне придется перекомпилировать FSBL и U-boot, но я не знаю, с чего начать. Могу ли я просто изменить дизайн Xillinux Vivado и начать с него, или мне придется начинать с нуля?


person zer0c00l    schedule 31.08.2016    source источник


Ответы (2)


Вам не нужно изменять FSBL или U-boot. Вам нужно только добавить контроллер SPI в дерево устройств и обновить программируемую логику, чтобы контакты SPI подключались к вашему АЦП.

В Xilinx SDK есть инструменты для создания файла дерева устройств, описанные в Build Device Tree Blob< /а> страница.

Обычно я редактирую файлы .dts вручную, но вам все равно нужно запустить dtc, чтобы преобразовать их в двоичный формат, как описано на этой странице.

Например, вот фрагмент .dts для zynq-zc770-xm013.dts, позволяющая подключить SPI к флэш-чипу:

&spi0 {
    status = "okay";
    num-cs = <4>;
    is-decoded-cs = <0>;
    eeprom: at25@0 {
        at25,byte-len = <8192>;
        at25,addr-mode = <2>;
        at25,page-size = <32>;

        compatible = "atmel,at25";
        reg = <2>;
        spi-max-frequency = <1000000>;
    };
};
person Jamey Hicks    schedule 08.09.2016

нужно сделать 2 шага.

1- измените файл аппаратного дескриптора (.h) вашей платы в исходниках ядра и добавьте устройство spi. Во-первых, взгляните на схему платы и техническое описание процессора, чтобы убедиться, что вы используете правильное устройство с правильным именем.

2- добавьте spidev в конфигурацию вашего ядра

теперь соберите и загрузите ядро, если вы заглянете в /dev/, вы должны найти что-то вроде spidev**.

person JosephITA    schedule 09.09.2016