web-dev-qa-db-ja.com

Linarto Ubuntu 12.04 LTSにExar XR17V358のドライバーをインストールする

Freescale iMX6 SMARCモジュールとキャリアボードを持っています。それは、Ubuntu Linaro 12.04 LTS(カーネル3.0.35)の製造元からのものです。たくさんのシリアルポートが必要なので、Exar XR17V358チップセットを搭載したSyba 8ポートPCIeカードを入手しました。 ExarのWebサイトからドライバーをインストールしようとすると、エラーが発生します。

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

カーネルヘッダーがインストールされていないと想定しているため、機能しませんでした。残念ながら、デフォルトのaptリポジトリからLinuxヘッダーを利用できるようには見えません。

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'

検索を行うと、これは一般的な問題のようです。ヘッダーファイルのtarballへのリンクと、linaroを実行している別のiMX6ボードの手順を見つけました。

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.

LinaroにExar PCIeドライバーをインストールしている人はいますか?

提案?

1
Axe

私はそれを機能させることができました。ここに私がそれをした方法があります:

まず、製造元からカーネルソースを入手し、Ubuntu 12.04にダウンロードしましたVMデスクトップ上のカーネルと呼ばれるフォルダにあります

次に、ドライバソースをexar( https://www.exar.com/common/content/document.ashx?id=20121 )からダウンロードし、VMデスクトップ上のexarと呼ばれるフォルダ内。

次に、VMで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コマンドも実行します。

0
Axe

Linuxヘッダーをインストールする必要があります。 Ubuntu 12.04には3.0カーネルがありませんでした。

端末で実行

Sudo apt-get install linux-generic

これにより、カーネルイメージとヘッダー3.2がインストールされます。

これができない場合は、お持ちのカーネルにbuntヘッダーをインストールする必要があります。

0
Pilot6