• Installer les drivers nécessaires à Diamond sous Linux.

    02/14/2016 at 22:13 0 comments

    INSTALLATION DES DRIVERS USB NECESSAIRES A L'UTILISATION DE LATTICE DIAMOND SOUS LINUX UBUNTU 14

    MATERIEL:

    Device sur la carte MachXO2 Pico: LCMXO2-1200ZE-2MG132CES1104RH01


    PROBLEME:

    Au premier lancement de Diamond:
    Q: yoda@yoda-W253EU-SSD:~$ /usr/local/diamond/3.5_x64/bin/lin64/diamond
    R:
    yoda@yoda-W253EU-SSD:~$ libusb couldn't open USB device /dev/bus/usb/003/007: Permission denied.
    libusb requires write access to USB device nodes.
    Erreur de segmentation
    (ceci est le problème du lancement non root, résolue par l'affectation au groupe 'usbdev')
    Le problème résolu ici est celui de pouvoir ouvrir le mode 'programmer' depuis Diamond pour
    downloader le Jedec dans le PLD.


    SOLUTION:

    • Listage des périphériques usb:

    Q: yoda@yoda-W253EU-SSD:~$ lsusb
    R:
    Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 003: ID 046d:c03e Logitech, Inc. Premium Optical Wheel Mouse (M-BT58)
    Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 003 Device 004: ID 0480:0201 Toshiba America Info. Systems, Inc.
    Bus 003 Device 007: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC
    Bus 003 Device 005: ID 04a9:173a Canon, Inc.
    Bus 003 Device 003: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
    Bus 003 Device 002: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    • demande d'infos du périph concerné (chemin).

    Q: yoda@yoda-W253EU-SSD:~$ sudo udevadm info -q path -n /dev/bus/usb/003/007
    R: /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1.3

    • demande des caractéristiques complètes du périphérique.

    Q: yoda@yoda-W253EU-SSD:~$ sudo udevadm info -a -p /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1.3
    R: Udevadm info starts with the device specified by the devpath and then

    walks up the chain of parent devices. It prints for every device

    found, all possible attributes in the udev rules key format.

    A rule to match, can be composed by the attributes of the device

    and the attributes from one single parent device.

    looking at device '/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1.3':

    KERNEL=="3-2.1.3"

    SUBSYSTEM=="usb"

    DRIVER=="usb"

    ATTR{bDeviceSubClass}=="00"

    ATTR{bDeviceProtocol}=="00"

    ATTR{devpath}=="2.1.3"

    ATTR{idVendor}=="0403"

    ... blablabla ...

    ATTR{manufacturer}=="Lattice"

    ATTR{removable}=="unknown"

    ATTR{idProduct}=="6010"

    ATTR{bDeviceClass}=="00"

    ATTR{product}=="Lattice FTUSB Interface Cable"

    looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1':

    ... blablabla ...

    ATTRS{bDeviceClass}=="09"

    ATTRS{product}=="USB 2.0 Hub [MTT]"

    looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3/3-2':

    ... blablabla ...

    ATTRS{bDeviceClass}=="09"

    ATTRS{product}=="USB 2.0 Hub [MTT]"

    looking at parent device '/devices/pci0000:00/0000:00:14.0/usb3':

    ... blablabla ...

    ATTRS{bDeviceClass}=="09"

    ATTRS{product}=="xHCI Host Controller"

    looking at parent device '/devices/pci0000:00/0000:00:14.0':

    KERNELS=="0000:00:14.0"

    ... blablabla ...

    ATTRS{numa_node}=="-1"

    ATTRS{d3cold_allowed}=="1"

    looking at parent device '/devices/pci0000:00':

    KERNELS=="pci0000:00"

    SUBSYSTEMS==""

    DRIVERS==""

    yoda@yoda-W253EU-SSD:~$

    • Mes recherches m'ont amené à créer un fichier:

    /etc/udev/rules.d/90-usb-special-yoda.rules
    (avec nano dans le répertoire en tant que 'root').
    c'est la solution proposée la meilleure et la plus universelle.
    Ce fichier contient:
    (voir listing ci dessus, le périphérique posant problème est le "Lattice FTUSB Interface Cable")

    SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="0403", MODE="0666", GROUP="plugdev"

    • Pour finaliser, il faut d'abord débrancher les périphériques concernés, puis lancer au choix l'une de ces commandes...
    Read more »