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?
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.
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.