atsushi
2018年9月27日 17時53分
お世話になっております、藤森と申します。
今回、Armadillo IoT-G3にSilicon Labs社様のCP210x USB to UART Bridge VCP Driversをインストールしようとしておりますが、
イントールがうまくできておりません。
行った作業といたしましては、
①linux-4.9-x1-at1.tar.gzを御社ホームページからダウンロードし、ATDE7上に展開(~/Kernel/linux-4.9-x1-at1)
②CP210x USB to UART Bridge VCP DriversのLinux 3.x.x and 4.x.x用ドライバをダウンロードし、ATDE7上に展開
③クロスコンパイルを行うため、CP210xのMakefileを以下のように変更
obj-m = cp210x.o
KDIR = ~/Kernel/linux-4.9-x1-at1
SRCDIR = $(PWD)
# try this instead if you don't have PWD defined
# SRCDIR = $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
all:
$(MAKE) -C $(KDIR) M=$(SRCDIR) modules
clean:
$(MAKE) -C $(KDIR) M=$(SRCDIR) clean
④Makefileが存在するディレクトリ上でmakeコマンドを実行
⑤作成されたcp210x.koをArmadillo IoT-G3の適当な場所へコピー
⑥modprobe cp210x.koコマンドを実行
modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.9.107-at1/modules.dep.bin'
modprobe: FATAL: Module cp210x not found in directory /lib/modules/4.9.107-at1
とのエラーが発生し、モジュールのロードができませんでした。
Armadillo IoT-G3上でuname -aコマンドを送った結果は以下の通りです。
Linux armadillo 4.9.107-at1 #4 SMP PREEMPT Mon Jun 18 19:03:12 JST 2018 armv7l GNU/Linux
modinfo cp210x.koの結果は以下の通りです。
filename: /root/Share/cp210x.ko
license: GPL
description: Silicon Labs CP210x RS232 serial adaptor driver
alias: usb:v413Cp9500d*dc*dsc*dp*ic*isc*ip*in*
alias: usb:v3195pF281d*dc*dsc*dp*ic*isc*ip*in*
(省略)
depends:
retpoline: Y
vermagic: 4.9.107-at1 SMP mod_unload modversions 686
方針としては問題ありませんでしょうか。
また、どこか間違っている手順はありますでしょうか。
基本的な質問かもしれませんが、よろしくお願いいたします。
コメント
atsushi
お世話になっております、藤森です。
迅速なご返事ありがとうございます。
早速make menuconfigを実行したところ、
Device Drivers ---> [*] USB support ---> <*> USB Serial Converter support ---> <M> USB CP210x family of UART Bridge Controllers
となっており、
Yを押したところ、
this feature depends on another which has been configured as a module
との表示が現れました。
とりあえずこのままconfigを保存し、makeを行ってから実機のカーネルを差し替えて確認を行ってみます。
よろしくお願いいたします。
atsushi
お世話になっております、藤森です。
上記の方法ではビルド時にエラーが発生してしまいましたので、
ユーザーマニュアルのカーネルビルド方法
https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_pro…
を参照し、
make ARCH=arm x1_defconfig make ARCH=arm menuconfig
コマンドからCP210Xを有効にしたConfigを変更し、カーネルをクロスコンパイルしました。
その後にSDブートディスクの作成
https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_pro…
を参照して、SDブートディスクを作成いたしました。
SDからブートを行い、CP210Xを使用している装置を差したところ、
usb 1-1: new full-speed USB device number 2 using ci_hdrc cp210x 1-1:1.0: cp210x converter detected usb 1-1: cp210x converter now attached to ttyUSB4
との表示がなされましたので、カーネルにドライバが組み込めたと思われます。
ご教授ありがとうございました。
y.nakamura
中村です。
> usb 1-1: cp210x converter now attached to ttyUSB4
認識してくれたようで、よかったです。
ttyUSB4になるということは、G3のM1モデルですよね。
M1モデルのG3/LTEモデム関連のソフトや設定などが、
モデムのポートがttyUSB0~ttyUSB3となることを
前提としてるところがあった場合、
CP210xの機器をつないだ状態で起動すると、
このttyUSBxの順番が変わってしまって、
モデムに影響がでるかもしれません。
> ユーザーマニュアルのカーネルビルド方法
> https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_pro…
書いてあることはほとんど同じなのですが、
マニュアルのこのページも参考に。
第22章 Howto
22.1. イメージをカスタマイズする
https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_pro…
--
なかむら
y.nakamura
2018年9月27日 18時12分
中村です。
> ②CP210x USB to UART Bridge VCP DriversのLinux 3.x.x and 4.x.x用ドライバをダウンロードし、ATDE7上に展開
>
> ③クロスコンパイルを行うため、CP210xのMakefileを以下のように変更
...
> ⑥modprobe cp210x.koコマンドを実行
...
> 方針としては問題ありませんでしょうか。
カーネルとは別にソースからクロスコンパイルしてモジュールにするのではなく、
カーネル組み込みでよければ、カーネルのコンフィグレーション変更だけで、
CP210xが使えるようになるはずです。
このCP210xのところを<*>変更して、カーネルの再コンパイルです。
--
なかむら