Установить драйвер для Exar XR17V358 в Linarto Ubuntu 12.04 LTS

У меня есть модуль Freescale iMX6 SMARC и несущая плата. Он пришел от производителя с Ubuntu Linaro 12.04 LTS (ядро 3.0.35). Мне нужно много последовательных портов, поэтому я получил карту PCIe Syba с 8 портами и чипсетом Exar XR17V358. При попытке установить драйвер с веб-сайта Exar я получаю сообщение об ошибке:

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

Я предполагаю, что заголовки ядра не установлены, и поэтому он не работает. К сожалению, не представляется, что заголовочные файлы Linux доступны из репозиториев apt по умолчанию.

sudo apt-get install linux-headers-3.0.35  

Возвращается:

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

Делая некоторые поиски, кажется, что это общая проблема. Я нашел ссылку на архив заголовочных файлов и инструкции для другой платы iMX6 под управлением 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

Загрузка прошла успешно, но когда я снова попытался собрать драйвер exar, выглядело то же, что и выше.

Linux-заголовки установлены неправильно.

dpkg -l | grep linux-headers 

не возвращает результатов.

Пробовал устанавливать linux-headers-generic, но безрезультатно.

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.

Кто-нибудь еще устанавливает драйверы Exar PCIe на Linaro?

Предложения?

2 ответа

Решение

Я смог заставить его работать. Вот как я это сделал:

Сначала я получил исходный код ядра от производителя и загрузил его на виртуальную машину Ubuntu 12.04 в папке, которую я назвал ядром на рабочем столе.

Во-вторых, я скачал источник драйвера из exar ( https://www.exar.com/common/content/document.ashx?id=20121) и поместил его в виртуальную машину в папку, которую я назвал exar на рабочем столе.

Затем я кросс-скомпилировал с помощью gcc-arm-linux-gnueabihf в виртуальной машине

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

Сделать файл конфигурации для кросс-компиляции

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

Сборка ядра (необязательный шаг, можно скопировать ядро ​​из образа iMX6)

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

Кросс-компиляция драйвера

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

Затем я скопировал каталог exar на цель и завершил установку

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

Наконец, я проверил, что драйвер был зарегистрирован и что порты были перечислены.

lsmod
ls -l /dev/ttyXR*

порты /dev/ttyXR0 - XR7 были доступны и работоспособны.

После перезагрузки кажется, что драйвер не сохраняется. В качестве патча я добавил скрипт настройки последовательного порта в /etc/rc3.d/S50SerialPortSetup

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

Я также делаю некоторые команды stty для инициализации портов для моего конкретного приложения.

Вам необходимо установить заголовки Linux. В Ubuntu 12.04 никогда не было ядер 3.0.

Запустить в терминале

sudo apt-get install linux-generic

Это установит образ ядра и заголовки 3.2.

Если вы не можете сделать это, вам нужно установить заголовки Ubuntu для вашего ядра.

Другие вопросы по тегам