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ドライバーをインストールしている人はいますか?
提案?
私はそれを機能させることができました。ここに私がそれをした方法があります:
まず、製造元からカーネルソースを入手し、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コマンドも実行します。
Linuxヘッダーをインストールする必要があります。 Ubuntu 12.04には3.0カーネルがありませんでした。
端末で実行
Sudo apt-get install linux-generic
これにより、カーネルイメージとヘッダー3.2がインストールされます。
これができない場合は、お持ちのカーネルにbuntヘッダーをインストールする必要があります。