Instale o driver para o Exar XR17V358 no Linarto Ubuntu 12.04 LTS

1

Eu tenho um módulo e uma placa de suporte do Freescale iMX6 SMARC. Ele veio do fabricante com o Ubuntu Linaro 12.04 LTS (kernel 3.0.35). Eu preciso de um monte de portas seriais, então eu tenho a placa PCIe Syba 8 portas com o chipset Exar XR17V358 para ir com ele. Quando tentei instalar o driver do site da Exar, recebi um erro:

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

Estou assumindo que os cabeçalhos do kernel não estão instalados e é por isso que não funcionou. Infelizmente, não parece que os cabeçalhos do Linux estejam disponíveis nos repositórios apt padrão.

sudo apt-get install linux-headers-3.0.35  

Retornado:

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

Fazendo algumas pesquisas, parece que esse é um problema comum. Eu encontrei um link para um tarball dos arquivos de cabeçalho e instruções para uma placa iMX6 diferente executando 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

O download foi bem-sucedido, mas quando tentei criar o driver exar novamente, a mesma saída acima.

Os cabeçalhos do Linux não estão instalados corretamente.

dpkg -l | grep linux-headers 

não retorna resultados.

Tentei instalar o linux-headers-generic, sem sucesso.

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.

Alguém mais instalando os drivers Exar PCIe no Linaro?

Sugestões?

    
por Axe 04.06.2015 / 20:45

2 respostas

0

Consegui fazê-lo funcionar. Aqui está como eu fiz:

Primeiro, eu peguei o código-fonte do kernel do fabricante e baixei para uma máquina Ubuntu 12.04 em uma pasta que eu chamei de kernel no desktop

Em segundo lugar, eu baixei a fonte do driver do exar ( link ) e coloquei na VM em uma pasta eu chamei exar na área de trabalho.

Em seguida, eu compilei usando o gcc-arm-linux-gnueabihf na VM

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

Faça o arquivo de configuração para compilação cruzada

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

Build Kernel (etapa opcional, poderia copiar o kernel da imagem do iMX6)

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

Cross compile o driver

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

Depois copiei o diretório exar para o destino e concluí a instalação

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

Por fim, verifiquei que o driver estava registrado e as portas estavam listadas.

lsmod
ls -l /dev/ttyXR*

as portas / dev / ttyXR0 a XR7 estavam disponíveis e funcionais.

Depois de fazer uma reinicialização, parece que o driver não persiste. Como patch eu adicionei um script de configuração serial em /etc/rc3.d/S50SerialPortSetup

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

Eu também faço alguns comandos stty para inicializar as portas para o meu aplicativo específico.

    
por Axe 17.06.2015 / 18:48
0

Você precisa instalar os cabeçalhos do linux. O Ubuntu 12.04 nunca teve kernels 3.0.

Executar no terminal

sudo apt-get install linux-generic

Isto irá instalar a imagem do kernel e os cabeçalhos 3.2.

Se você não pode fazer isso, então você precisa instalar os cabeçalhos Ubuntu para o kernel que você tem.

    
por Pilot6 05.06.2015 / 00:08