web-dev-qa-db-fra.com

Installer le pilote pour Exar XR17V358 dans Linarto Ubuntu 12.04 LTS

J'ai un module SMARC Freescale iMX6 et une carte de support. Il est venu du fabricant avec Ubuntu Linaro 12.04 LTS (noyau 3.0.35). J'ai besoin de beaucoup de ports série, j'ai donc eu la carte PCIe 8 ports Syba avec le chipset Exar XR17V358 pour aller avec. Lorsque j'ai tenté d'installer le pilote à partir du site Web d'Exar, j'obtiens une erreur:

make -C /lib/modules/'uname -r'/build SUBDIRS=/home/linaro/Desktop/exar modules
make: *** /lib/modules/3.0.35/build: No such file of directory. Stop
make: *** [build] Error 2

Je suppose que les en-têtes du noyau ne sont pas installés et c'est pourquoi cela n'a pas fonctionné. Malheureusement, il ne semble pas que les en-têtes linux soient disponibles à partir du référentiel apt par défaut.

Sudo apt-get install linux-headers-3.0.35  

Revenu:

E: Unable to locate package linux-headers-3.0.35 
E: Couldn't find any package by regex 'linux-headers-3.0.35'

En faisant quelques recherches, il semble que ce soit un problème courant. J'ai trouvé un lien vers une archive tar des fichiers d'en-tête et des instructions pour une autre carte iMX6 exécutant linaro.

wget http://commondatastorage.googleapis.com/boundarydevices.com/linux-headers-3.0.35-02829-gac24896_4.1.0.tar.gz
tar zxvf linux-headers-3.0.35-02829-gac24896_4.1.0.tar.gz -C /usr

Le téléchargement a réussi, mais lorsque j'ai essayé de reconstruire le pilote exar, même sortie que ci-dessus.

Les en-têtes Linux ne sont pas correctement installés.

dpkg -l | grep linux-headers 

ne renvoie aucun résultat.

J'ai essayé d'installer linux-headers-generic, en vain.

Package linux-headers-generic is not available, but is referred to by 
another package.  This may mean that the package is missing, has been
obsoleted, or is only available from another source.

Quelqu'un d'autre installe-t-il des pilotes PCI Exar sur Linaro?

Suggestions?

1
Axe

J'ai pu le faire fonctionner. Voici comment je l'ai fait:

Tout d'abord, j'ai obtenu la source du noyau auprès du fabricant et je l'ai téléchargée sur un Ubuntu 12.04 VM dans un dossier que j'ai appelé noyau sur le bureau

Deuxièmement, j'ai téléchargé la source du pilote depuis exar ( https://www.exar.com/common/content/document.ashx?id=20121 ) et l'ai placée dans le VM dans un dossier que j'ai appelé exar sur le bureau.

Ensuite, je croise compilé en utilisant gcc-arm-linux-gnueabihf dans la VM

Sudo apt-get install gcc-arm-linux-gnueabihf

Créer un fichier de configuration pour la compilation croisée

make Arch=arm CROSS_COMPILE=arm-linux-gnueabihf- imx6_rev_sa01_defconfig

Build Kernel (étape facultative, pourrait copier le noyau à partir de l'image iMX6)

make Arch=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage

Compilation croisée du pilote

make Arch=arm CROSS_COMPILE=arm-linux-gnueabihf- -C /home/ubuntu/Desktop/kernel/ M=/home/ubuntu/Desktop/exar/ modules

J'ai ensuite copié le répertoire exar sur la cible et terminé l'installation

tar -xzvf exar.tgz
cd exar
cp xr17v35x.ko /lib/modules/3.0.35/kernel/drivers/misc/.
cd /lib/modules/3.0.35/kernel/drivers/misc/.
insmod xr17v35x.ko

Enfin, j'ai vérifié que le pilote était enregistré et que les ports étaient répertoriés.

lsmod
ls -l /dev/ttyXR*

les ports/dev/ttyXR0 à XR7 étaient disponibles et fonctionnels.

Après avoir redémarré, il semble que le pilote ne persiste pas. En tant que patch, j'ai ajouté un script de configuration série à /etc/rc3.d/S50SerialPortSetup

#! /bin/sh
cd /lib/modules/3.0.35/kernel/drivers/misc/.
insmod xr17v35x.ko

Je fais également quelques commandes stty pour initialiser les ports pour mon application spécifique.

0
Axe

Vous devez installer les en-têtes Linux. Ubuntu 12.04 n'a jamais eu de noyaux 3.0.

Exécuter dans le terminal

Sudo apt-get install linux-generic

Cela installera l'image du noyau et les en-têtes 3.2.

Si vous ne pouvez pas le faire, vous devez installer bunt en-têtes pour le noyau que vous avez.

0
Pilot6