I have successfully updated the xapp1078 to Vivado 2018.2 and created a PetaLinux configuration based on XAPP1078 Latest Information.
I used the design files from here. Inside the zip-folder there is a detailed step by step documentation included, which says something about extending the device tree.
You can read the document here.
In the petalinux-create section of the document there is the following instruction how to extend the device tree.
Add one of the following sections to the end of subsystems/linux/configs/device-tree/system-top.dts This action will add peripherals that are external to the FPGA and it will disable the driver for the PL330 dma controller. Currently, there is a problem in the PL330 driver that causes cpu1 to randomly run code when maxcpu=1.
I’m using a zc702 Board and when I read the device tree extension for this board, I can find four sections for dma, i2c, qspi and phy
/* *********************************
* zc702 Board peripherals
* *********************************
*/
&dmac_s {
status = "disabled";
};
&i2c0 {
#address-cells = <1>;
#size-cells = <0>;
i2cswitch@74 {
compatible = "nxp,pca9548";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x74>;
i2c@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
si570: clock-generator@5d {
#clock-cells = <0>;
compatible = "silabs,si570";
temperature-stability = <50>;
reg = <0x5d>;
factory-fout = <156250000>;
clock-frequency = <148500000>;
};
};
i2c@2 {
#address-cells = <1>;
#size-cells = <0>;
reg = <2>;
eeprom@54 {
compatible = "at,24c08";
reg = <0x54>;
};
};
i2c@3 {
#address-cells = <1>;
#size-cells = <0>;
reg = <3>;
gpio@21 {
compatible = "ti,tca6416";
reg = <0x21>;
gpio-controller;
#gpio-cells = <2>;
};
};
i2c@4 {
#address-cells = <1>;
#size-cells = <0>;
reg = <4>;
rtc@54 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};
i2c@7 {
#address-cells = <1>;
#size-cells = <0>;
reg = <7>;
hwmon@52 {
compatible = "ti,ucd9248";
reg = <52>;
};
hwmon@53 {
compatible = "ti,ucd9248";
reg = <53>;
};
hwmon@54 {
compatible = "ti,ucd9248";
reg = <54>;
};
};
};
};
&qspi {
flash0: flash@0 {
compatible = "micron,n25q128a13";
};
};
&gem0 {
phy-handle = <&phy0>;
ps7_ethernet_0_mdio: mdio {
phy0: phy@7 {
compatible = "marvell,88e1116r";
device_type = "ethernet-phy";
reg = <7>;
};
};
};
My questions about this topics are:
Is it still recommended to disabling the driver for the PL330 dma, or is the dma problem fixed in petalinux 2018.2 ?
Why do I have to add information for I2C, QSPI and the PHY? I would expect the Vivado Hardware export (hdf) files has all necessary information or if not I can add device drivers in the petalinux-config menu.
In other words, do I have to make the device tree extensions for every Vivado project which uses petalinux, or is this a special extension only for xapp1078 and what is the the reasion?
Even my application works as expected without the device tree extension so far. I would like to understand the extensions.