У меня есть модуль 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?
Предложения?
Необходимо установить заголовки Linux. Ubuntu 12.04 никогда не имел 3,0 ядра.
Выполнение в терминале
sudo apt-get install linux-generic
Это установит изображение ядра и заголовки 3.2.
, Если Вы не можете сделать этого, тогда необходимо установить Ubuntu заголовки для ядра, которое Вы имеете.
Я смог заставить его работать. Вот то, как я сделал это:
Первый, я получил источник ядра от производителя и загрузил его на Ubuntu 12.04 VM в папке, я назвал ядро на рабочем столе
1110-секундным, я загрузил источник драйвера с exar ( https://www.exar.com/common/content/document.ashx? id=20121) и помещенный это в VM в папке я назвал exar на рабочем столе.
Затем, я пересекаюсь, скомпилированное использование gcc-arm-linux-gnueabihf в VM
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 для инициализации портов для моего определенного приложения.