У меня есть плата MicroZed, на которой работает Xillinux 1.3. Я хотел подключить к нему внешний АЦП SPI и написать приложение в Linux для чтения значений из АЦП. Аппаратный SPI-интерфейс устройства Zynq не включен в Xillinux. Как я могу его включить, мне придется перекомпилировать FSBL и U-boot, но я не знаю, с чего начать. Могу ли я просто изменить дизайн Xillinux Vivado и начать с него, или мне придется начинать с нуля?
Включить аппаратный SPI на Xillinux
Ответы (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>;
};
};
нужно сделать 2 шага.
1- измените файл аппаратного дескриптора (.h) вашей платы в исходниках ядра и добавьте устройство spi. Во-первых, взгляните на схему платы и техническое описание процессора, чтобы убедиться, что вы используете правильное устройство с правильным именем.
2- добавьте spidev в конфигурацию вашего ядра
теперь соберите и загрузите ядро, если вы заглянете в /dev/, вы должны найти что-то вроде spidev**.