wiki:linux_pour_zynq_de_xilinx:projet_spidev_buildroot
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
wiki:linux_pour_zynq_de_xilinx:projet_spidev_buildroot [2016/11/23 18:02] – [Modifications pour prendre en compte la configuration du processeur] emeyer | wiki:linux_pour_zynq_de_xilinx:projet_spidev_buildroot [2016/11/24 13:54] (Version actuelle) – emeyer | ||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
Nous allons utiliser la configuration par défaut de // | Nous allons utiliser la configuration par défaut de // | ||
- | $ ls ~/ | + | $ ls ~/ |
... | ... | ||
zynq_zed_defconfig | zynq_zed_defconfig | ||
Ligne 44: | Ligne 44: | ||
==== configurer u-boot ==== | ==== configurer u-boot ==== | ||
- | Cocher la case //Use custom ps7_init provided by Xilinx tool// du menu configuratrion. | + | Cocher la case //Use custom ps7_init provided by Xilinx tool// du menu de configuration. |
$ make O=../ | $ make O=../ | ||
dans le menu : -> //ARM archtecture -->[*] Use custom ps7_init provided by Xilinx tool// | dans le menu : -> //ARM archtecture -->[*] Use custom ps7_init provided by Xilinx tool// | ||
+ | |||
+ | ==== changer le device tree ==== | ||
+ | Il est nécessaire de prendre en compte le périphérique SPI0 comme étant rattaché qu driver SPIDEV. Pour cela il faut modifier le fichier // | ||
+ | Voici un exemple de fichier que nous appellerons // | ||
+ | ++++ zynq-zed_spi0_spidev.dts | | ||
+ | <code c> | ||
+ | /* | ||
+ | | ||
+ | | ||
+ | * | ||
+ | * This software is licensed under the terms of the GNU General Public | ||
+ | * License version 2, as published by the Free Software Foundation, and | ||
+ | * may be copied, distributed, | ||
+ | * | ||
+ | * This program is distributed in the hope that it will be useful, | ||
+ | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
+ | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
+ | * GNU General Public License for more details. | ||
+ | */ | ||
+ | /dts-v1/; | ||
+ | #include " | ||
+ | |||
+ | / { | ||
+ | model = "Zynq Zed Development Board"; | ||
+ | compatible = " | ||
+ | |||
+ | aliases { | ||
+ | ethernet0 = &gem0; | ||
+ | serial0 = &uart1; | ||
+ | /*spi0 = & | ||
+ | mmc0 = & | ||
+ | }; | ||
+ | |||
+ | memory { | ||
+ | device_type = " | ||
+ | reg = <0x0 0x20000000>; | ||
+ | }; | ||
+ | |||
+ | chosen { | ||
+ | bootargs = ""; | ||
+ | stdout-path = " | ||
+ | }; | ||
+ | |||
+ | usb_phy0: phy0 { | ||
+ | compatible = " | ||
+ | # | ||
+ | reg = < | ||
+ | view-port = < | ||
+ | drv-vbus; | ||
+ | }; | ||
+ | regulators { | ||
+ | compatible = " | ||
+ | # | ||
+ | # | ||
+ | |||
+ | reg_dac_vdd: | ||
+ | compatible = " | ||
+ | reg = <0>; | ||
+ | regulator-name = " | ||
+ | regulator-min-microvolt = < | ||
+ | regulator-max-microvolt = < | ||
+ | }; | ||
+ | reg_dac_vss: | ||
+ | compatible = " | ||
+ | reg = <1>; | ||
+ | regulator-name = " | ||
+ | regulator-min-microvolt = < | ||
+ | regulator-max-microvolt = < | ||
+ | }; | ||
+ | }; | ||
+ | }; | ||
+ | |||
+ | &clkc { | ||
+ | ps-clk-frequency = < | ||
+ | }; | ||
+ | |||
+ | &gem0 { | ||
+ | status = " | ||
+ | phy-mode = " | ||
+ | phy-handle = <& | ||
+ | |||
+ | ethernet_phy: | ||
+ | reg = <0>; | ||
+ | }; | ||
+ | }; | ||
+ | |||
+ | &qspi { | ||
+ | status = " | ||
+ | is-dual = <0>; | ||
+ | num-cs = <1>; | ||
+ | flash@0 { | ||
+ | compatible = " | ||
+ | reg = < | ||
+ | spi-tx-bus-width = <1>; | ||
+ | spi-rx-bus-width = <4>; | ||
+ | spi-max-frequency = < | ||
+ | # | ||
+ | # | ||
+ | partition@qspi-fsbl-uboot { | ||
+ | label = " | ||
+ | reg = <0x0 0x100000>; | ||
+ | }; | ||
+ | partition@qspi-linux { | ||
+ | label = " | ||
+ | reg = < | ||
+ | }; | ||
+ | partition@qspi-device-tree { | ||
+ | label = " | ||
+ | reg = < | ||
+ | }; | ||
+ | partition@qspi-rootfs { | ||
+ | label = " | ||
+ | reg = < | ||
+ | }; | ||
+ | partition@qspi-bitstream { | ||
+ | label = " | ||
+ | reg = < | ||
+ | }; | ||
+ | }; | ||
+ | }; | ||
+ | |||
+ | &spi0 { | ||
+ | num-cs = <4>; | ||
+ | is-decoded-cs = <0>; | ||
+ | status = " | ||
+ | spidev@0 { | ||
+ | compatible = " | ||
+ | reg = <0>; | ||
+ | spi-max-frequency = < | ||
+ | spi-cpha ; | ||
+ | }; | ||
+ | }; | ||
+ | |||
+ | |||
+ | &sdhci0 { | ||
+ | status = " | ||
+ | }; | ||
+ | |||
+ | &uart1 { | ||
+ | status = " | ||
+ | }; | ||
+ | |||
+ | &usb0 { | ||
+ | status = " | ||
+ | dr_mode = " | ||
+ | usb-phy = <& | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | ++++ | ||
+ | ==== configurer la prise en charge du nouveau device tree ==== | ||
+ | $ make O=../ | ||
+ | dans le menu -> Kernel --> Device tree source ---> (X) Use a custom device tree file | ||
+ | dans le menu -> Kernel --> Device Tree Source file paths ---> / | ||
+ | ==== configurer linux avec le driver //SPIDEV// ==== | ||
+ | $ make O=../ | ||
+ | dans le menu -> Device Drivers --> [*] SPI support | ||
+ | ==== appliquer les changements ==== | ||
+ | $ make O=../ | ||
+ | Il se peut que seul la génération //uImage// et le fichier //dtb// soit nécessaire à regénérer. Alors : | ||
+ | $ make O=../ | ||
+ | |||
+ | ==== mettre les fichiers sur la carte SD ==== | ||
+ | Quels sont les résultats ? | ||
+ | * <color blue> ~/ | ||
+ | |||
+ | Nous devons alors copier certains de ces fichiers sur la carte SD. Pour cela, il va falloir passer par le répertoire commun entre l' | ||
+ | $ cp ~/ | ||
+ | |||
+ | Ensuite, se référer à cette section : [[wiki: | ||
+ | |||
+ | ==== mettre le bitstream sur la carte SD ==== | ||
+ | |||
+ | Pour que le contenu du FPGA soit chargé dans le composant, dans notre cas le bistrean sera chargé après le lancement de //linux//. Cela peut se faire au chargement de //u-boot//, mais nous ne verrons pas cela ici. \\ | ||
+ | Dans une console du système où le répertoire utilisé pour le projet avec //Xilinx SDK//, on copie le fichier //.bit// sur la carte SD | ||
+ | |||
+ | $ cp ~/ | ||
+ | |||
+ | ===== Une fois la carte Microzed allumée ===== | ||
+ | |||
+ | Lorsque que vous avez installé la carte SD dans la Microzed et que vous avez une console pour communiquer avec, vous devez monter la partition où vous avez votre bitstream, puis le charge dans le FPGA : | ||
+ | |||
+ | Welcome to Buildroot | ||
+ | buildroot login: root | ||
+ | # mount -a / | ||
+ | # cat / | ||
+ | |||
+ | Là, vérifiez que le driver //spidev// a bien pris en compte le périphérique //spi// | ||
+ | # ls / | ||
+ | / | ||
+ | | ||
+ | Vous pouvez communiquer avec le bus spi : | ||
+ | # echo -n 1 > / | ||
+ | | ||
+ | Ensuite, pour vos programmes, vous pouvez utiliser l' | ||
+ |
wiki/linux_pour_zynq_de_xilinx/projet_spidev_buildroot.1479920554.txt.gz · Dernière modification : 2016/11/23 18:02 de emeyer