【问题标题】:Enable hardware SPI on Xillinux在 Xillinux 上启用硬件 SPI
【发布时间】:2016-08-31 18:49:30
【问题描述】:
我有一块运行 Xillinux 1.3 的 MicroZed 板。我想将一个外部 SPI ADC 连接到它,并在 linux 中编写一个应用程序来从 ADC 读取值。 Xillinux 中未启用 Zynq 设备的硬件 SPI 接口。我该如何启用它,我必须重新编译 FSBL 和 U-boot,但我不知道从哪里开始。我可以只修改 Xillinux 的 Vivado 设计并从那里开始,还是必须从头开始?
【问题讨论】:
标签:
embedded-linux
fpga
xilinx
vivado
zynq
【解决方案1】:
您不必修改 FSBL 或 U-boot。您只需要将 SPI 控制器添加到设备树并更新可编程逻辑,以便 SPI 引脚连接到您的 ADC。
Xilinx SDK 具有用于创建设备树文件的工具,如Build Device Tree Blob 页面所述。
我通常手动编辑 .dts 文件,但您仍需要运行 dtc 将它们转换为该页面所述的二进制格式。
例如,下面是zynq-zc770-xm013.dts 板的 .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】:
您必须执行 2 个步骤。
1- 在内核源代码中修改主板的硬件描述符文件 (.h) 并添加 spi 设备。首先,看一下电路板的原理图和处理器的数据表,以确保使用正确名称的正确器件
2- 在你的内核配置中添加 spidev
现在构建并启动内核,如果您检查 /dev/,您应该会找到 spidev** 的东西。