embarqu´es 6 J.-M Friedt
Syst` emes embarqu´ es 6
J.-M Friedt
FEMTO-ST/d´ epartement temps-fr´ equence jmfriedt@femto-st.fr
transparents ` a jmfriedt.free.fr
18 janvier 2018
1 / 6
embarqu´es 6
J.-M Friedt
P´ eriph´ erique dans le FPGA
• XADC : convertisseur
analogique-num´ erique 1 MS/s (12 bits) ...
• ... connect´ e au PS et au PL
• Instantiation comme p´ eriph´ erique dans Vivado (XADC Wizard)
• PL : source de donn´ ees vers le
PS ou vers d’autres blocs
FPGA pour traitement
temps-r´ eel
embarqu´es 6
J.-M Friedt
Configuration dans Vivado
• Mesure en continu (pas de trigger)
• Activation des voies 8 et 9
• Autoroutage pour les horloges et les signaux du bus AXI
3 / 6
embarqu´es 6
J.-M Friedt
Acc` es ` a XADC depuis le PS
• Xilinx fournit un pilote IIO pour XADC : xilinx xadc.ko
• ce pilote se configure par le devicetree
• Reconfiguration du pilote n´ ecessite de le passer en module
• Eviter de rebooter lors du chargement de l’XADC dans le ´ devicetree : overlay
/dts-v1/;
/plugin/;
/ {compatible = "xlnx,zynq-7000";
fragment@0 {
target = <&fpga_full>;
#address-cells = <1>;
#size-cells = <1>;
__overlay__ {
#address-cells = <1>;
#size-cells = <1>;
firmware-name = "system_wrapper.bit.bin";
};
};
fragment@1 { target = <&adc>;
__overlay__ { xlnx,channels {
#address-cells = <1>;
#size-cells = <0>;
channel@0 {reg = <0>;};
channel@1 {reg = <1>;};
channel@2 {reg = <2>;};
channel@9 {reg = <9>;};
channel@10 {reg = <10>;};
};
};
};
Le nœud fragment@1 surcharge les pa- ram` etres du nœud adc du devicetree ori- ginal
adc: adc@f8007100 {
compatible = "xlnx,zynq-xadc-1.00.a";
reg = <0xf8007100 0x20>;
interrupts = <0 7 4>;
interrupt-parent = <&intc>;
clocks = <&clkc 12>;
};
avec compatible identique au pilote drivers/iio/adc/xilinx-xadc-core.c
static const struct of_device_id xadc_of_match_table[] = { {.compatible = "xlnx,zynq-xadc-1.00.a", (void *)&xadc_zynq_ops }, {.compatible = "xlnx,axi-xadc-1.00.a", (void *)&xadc_axi_ops }, { },
};
Le nœud fragment@0 fait r´ ef´ erence au
fpga manager pour surcharger le nom du
embarqu´es 6
J.-M Friedt
Chargement du bitstream et du
pilote IIO
$ mkdir /sys/kernel/config/device-tree/overlays/toto
$ rmmod xilinx_xadc
$ cp system_wrapper.bit.bin /lib/firmware
$ cat xadc.dtbo > /sys/kernel/config/device-tree/overlays/toto/dtbo
$ dmesg | tail -1
fpga_manager fpga0: writing system_wrapper.bit.bin to Xilinx Zynq FPGA Manager
$ modprobe xilinx_xadc
$ pwd
/sys/bus/iio/devices/iio:device0
$ ls ...
in_voltage10_vaux1_scale in_voltage8_vaux9_raw in_voltage11_vaux0_raw in_voltage8_vaux9_scale in_voltage11_vaux0_scale in_voltage9_vaux8_raw in_voltage12_vpvn_raw in_voltage9_vaux8_scale
• Une interface standard pour les p´ eriph´ eriques d’acquisition (raw, scale, offset ...)
5 / 6
embarqu´es 6
J.-M Friedt