RaspberryPiでRS485のUSB UARTドライバーをコンパイルする方法

このQ&Aのポイント
  • RS485のUSB UARTドライバーをRaspberryPiでコンパイルする方法について教えてください。
  • RaspberryPiで動作するRS485のUSB UARTドライバーをコンパイルする方法を教えてください。
  • RaspberryPiでのRS485のUSB UARTドライバーのコンパイル方法を教えてください。
回答を見る
  • ベストアンサー

makeによるソースのコンパイル方法について

RS485の規格で、動作する、USBとRJ45を接続するケーブルを使用したいと考えています。 Linux(Raspberrypi(debian_version9.1))で作動をさせたいのですが、ドライバーが、 https://www.exar.com/design-tools/software-drivers のサイトにある、 Product Family /USB UART Part Number(s)/XR21V1410, XR21V1412, XR21V1414, XR21B1411, XR21B1420, XR21B1422, XR21B1424, XR22801, XR22802, XR22804 Operating System/Linux 3.6.x and newer Driver Version/1B を、ダウンロードすると、 xr_usb_serial_common_lnx-3.6-and-newer-pak.zip  Makefile  README.txt  xr_usb_serial_common.c  xr_usb_serial_common.h  xr_usb_serial_hal.c  xr_usb_serial_ioctl.h というファイルが入っていました。 README.txtを見て、 --------------------------------------------------------------------------- Installation ------------ * Compile and install the common usb serial driver module # make # insmod ./xr_usb_serial_common.ko --------------------------------------------------------------------------- 「make」というコマンドを実行しているのですが、 --------------------------------------------------------------------------- make -C /lib/modules/4.9.59-v7+/build M=/lib/modules/4.9.59-v7+/build make[12]: ディレクトリ '/lib/modules/4.9.59-v7+/build' に入ります --------------------------------------------------------------------------- を繰り返し表示し、 CTRL+Cを押して止めようとすると、 --------------------------------------------------------------------------- makefile:9: ターゲット 'all' のレシピで失敗しました make[11]: *** [all] 割り込み makefile:9: ターゲット 'all' のレシピで失敗しました --------------------------------------------------------------------------- のようなものを繰り返し表示します。  Linuxのコマンドはある程度わかりますが、添付されているCのファイルをコンパイル して、ドライバーをつくるんだろうくらいしかわからない初心者です。  このmakeはどうやったらRaspberryPiで正常にコンパイルができるようになるのでしょうか。  具体的なやり方を、教えていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1619/5654)
回答No.2

xr_usb_serial_common_lnx-3.6-and-newer-pak.zip に入っていた  Makefile  README.txt  xr_usb_serial_common.c  xr_usb_serial_common.h  xr_usb_serial_hal.c  xr_usb_serial_ioctl.h を /lib/modules/4.9.59-v7+/build に置いたりしていませんか?(質問に書かれているログを見る限りまず間違いなく置かれてると思いますが) 置いてしまうと同じ Makefile の内容を実行して、そのようになりますよ。 /lib/modules/4.9.59-v7+ にはドライバを作成するのに必要なファイルらが置かれるはずなので入手してください(私はDebianは使用していないので具体的なパッケージ名等はわかりません)。 また、そのソースはkernel 3.6.x~3.17.x でしか動作確認されていないようですから、kernel 4.9.x系のDebian9.1ではビルドできなかったりビルドはできても動作しないかもしれません。

kuga_shou
質問者

お礼

お礼が遅くなりまして申し訳ありません。 ご指摘いただきました通り、buildの中にも同じものを置いておりました。 実際には、ドライバーをコンパイルするための、カーネルの環境が整っていなかったという結論に達し、色々と試行錯誤の結果、ドライバーは生成されました。 とりあえず、デバイスとしての認識はしているみたいなのですが、まだ、実際の通信テスト等がこれからの状況です。 ありがとうございました。

その他の回答 (1)

  • skp026
  • ベストアンサー率45% (1011/2238)
回答No.1

私のほうが初心者かもしれないですが、、、 参考になりそうなご案内をします。 メッセージはディレクトリに入れない事を示しているようですが、 該当のディレクトリは存在しているか確認ください。 ディレクトリが存在して無いなら、 おそらくそこは、関連するソースコードやライブラリが入る所です。 どこかで配布してたり、インストーラーが用意されていると思います。 (開発環境に関する情報としてまとまっているかも) ディレクトリが存在しているなら、 アクセス権かもしれません。 あと見るとするならMakefileです。 これは、makeコマンドの動作を指定しているテキストファイルです。 (多分ディレクトリ指定する記述があると思います) ※ 今回のご案内は自信はあまりないです。 「すでに知ってます」という内容でしたらごめんなさい。 どこかにラズパイのフォーラムがあると思いますが それも見つけられずごめんなさい。

kuga_shou
質問者

お礼

お礼が遅くなりまして申し訳ありません。 ドライバーをコンパイルするための、カーネルの環境が整っていなかったという結論に達し、色々と試行錯誤の結果、ドライバーは生成されました。 とりあえず、デバイスとしての認識はしているみたいなのですが、まだ、実際の通信テスト等がこれからの状況です。 ありがとうございました。

関連するQ&A

  • makeでエラー

    opensuseでUE-1000T-U3を使おうと思ったんですが ax88179のドライバが入りません。 詳しく説明しますと、AX88179_178A_LINUX_DRIVER_v1.5.0_SOURCE.tar.bz2を 展開したあと # make make -C /lib/modules/3.7.10-1.16-desktop/build SUBDIRS=/home/username/ダウンロード/AX88179_178A_LINUX_DRIVER_v1.5.0_SOURCE modules make[1]: ディレクトリ `/lib/modules/3.7.10-1.16-desktop/build' に入ります make[1]: *** ターゲット `modules' を make するルールがありません. 中止. make[1]: ディレクトリ `/lib/modules/3.7.10-1.16-desktop/build' から出ます make: *** [default] エラー 2 で、エラーが出るんですけど どういう状態で、どう直せばいいでしょうか 教えてください、お願いします。

  • makeがエラーを吐く

    makeがエラーを吐く 今、Fedora13で無線LANのドライバ(RT2870)をインストールしているのですが・・・ makeを行うと下記のような表示で止まってしまいます # make make -C tools make[1]: ディレクトリ `/home/makoto/rt2870/tools' に入ります gcc -g bin2h.c -o bin2h make[1]: ディレクトリ `/home/makoto/rt2870/tools' から出ます /home/makoto/rt2870/tools/bin2h cp -f os/linux/Makefile.6 /home/makoto/rt2870/os/linux/Makefile make -C /lib/modules/2.6.33.3-85.fc13.i686/build SUBDIRS=/home/makoto/rt2870/os/linux modules make: *** /lib/modules/2.6.33.3-85.fc13.i686/build: そのようなファイルやディレクトリはありません. 中止. make: *** [LINUX] エラー 2 一応、カーネルソースなども一通りインストールしましたが、やはり上記のような状態です。 そこで、エラーを吐く/lib/modules/2.6.33.3-85.fc13.i686/buildへ行って見たところ、「このリンクはリンク切れです」と出ました。 そこで質問なのですが、このリンク切れを直したいのですが、どこにたどればいいのでしょうか。 よろしくお願いします。

  • Debian(amd64)でdriverをコンパイルに失敗する

    Debian(amd64)でdriverをコンパイルに失敗する DebianでPT1のドライバをコンパイルしようとしたところ、 make[1]: ディレクトリ `/lib/modules/2.6.26-2-amd64/build' に入ります make[1]: *** ターゲット `modules' を make するルールがありません。中止 make[1]: ディレクトリから `/lib/modules/2.6.26-2-amd64/build' 出ます make" ***[pt1_drv.ko] エラー 2 となりドライバが作成できません。 調べたところmakeに失敗するのは下記がバージョンがずれているときと出ていましたがこれ以上は疎くわかりません。 dpkg -l | grep linux-source ii linux-source-2.6.26 2.6.26-24lenny1 dpkg -l | grep linux-headers ii linux-headers-2.6.26-2-amd64 2.6.26-24lenny1 ii linux-headers-2.6.26-2-common 2.6.26-24lenny1

  • Vine Linux3.2で無線LANを使いたい

    OSはVine Linux 3.2です。 無線ルーターはBUFFALOのAir Station G、アダプタはUSBタイプのG54(WLI-US-KG54)です。 使用PCはソニーの古いノートパソコンです。 ネットで調べると、rt2570というドライバーが利用できるようなので、「rt2570-1.1.0-b2.tar.gz」というファイルを入手しました。 コマンドで解答したフォルダにある「Module」に移動して、makeコマンドを入力したら以下のエラーが出ました。 Makefile:170: /lib/modules/2.4.31-0vl1.8/build/Rules.make: そのようなファイルや ディレクトリはありません make: *** ターゲット `/lib/modules/2.4.31-0vl1.8/build/Rules.make' を make する ルールがありません。中止。 rpmファイル「rt2570-1.1.0-uvl0.b2.src.rpm」でも同じエラーが出ました。 [root@localhost root]# rpm --rebuild rt2570-1.1.0-uvl0.b2.src.rpm rt2570-1.1.0-uvl0.b2.src.rpm をインストール中 実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.27974 (省略) + cd rt2570-1.1.0-b2 + cd Module + make Makefile:170: /lib/modules/2.4.31-0vl1.8/build/Rules.make: そのようなファイルや ディレクトリはありません make: *** ターゲット `/lib/modules/2.4.31-0vl1.8/build/Rules.make' を make する ルールがありません。中止。 エラー: /var/tmp/rpm-tmp.27974 の不正な終了ステータス (%build) RPM ビルドエラー: /var/tmp/rpm-tmp.27974 の不正な終了ステータス (%build) 何が原因でインストールが出来ないのか全くわかりません。 どうすれば、正常にインストール出来るでしょうか? こちらはリナックス勉強中の初心者です。よろしくお願いします。 また、無線LANの設定方法などを詳しく解説したサイトなどがあれば教えて下さい。 よろしくお願いします。

  • コンパイルの方法を教えてください。

    現在Windows環境にてPoco(C++ Portable Components)を使用するため、環境の構築を行っていますが、Pocoのコンパイル方法がわからず途方にくれています。 環境はWindowsXPにMinGW3.4.5をインストールし、EclipseCDTから自作のC++ソースはコンパイルできる環境となっています。 MinGWはC:\MinGWにインストール済みで、Pathも通していますので、 C:\PocoのFoundationのMakefileを実行すると、 makefile:9: /build/rules/global: No such file or directory makefile:44: /build/rules/lib: No such file or directory mingw32-make.exe: *** No rule to make target `/build/rules/lib'. Stop. とエラーが出てしまいます。 環境変数が足りないのかと思い、Dos窓で set POCO_BASE=C:/poco set POCO_BUILD=C:/poco set POCO_CONFIG=MinGW とたたいた後に再度実行すると、 process_begin: CreateProcess(NULL, uname, ...) failed. 'C:/poco/build/script/projname' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 process_begin: CreateProcess(NULL, cat C:/poco/components, ...) failed. process_begin: CreateProcess(NULL, cat C:/poco/libversion, ...) failed. "** Creating dependency info for" src/pcre_xclass.c mkdir -p C:/poco//.dep/MinGW/ia32 コマンドの構文が誤っています。 "** Creating dependency info for" src/pcre_fullinfo.c mkdir -p C:/poco//.dep/MinGW/ia32 ・・・ と大量のエラーが出てしまいます。 C/C++を触るのは初めてで、構文等は理解できても、環境周りが全くわからないため、どうやったらコンパイルできるのか教えてください。

  • Linuxで無線LAN

    corega WLCB54AG2を購入したためTurboLinux10desktopで使いたいのですが、coregaサイトを参照しました。makeの時にエラーがでます。 /bin/sh: cd: /lib/modules/2.6.0-24/build: そのようなファイルやディレクトリはありません Makefile.inc:95: *** /lib/modules/2.6.0-24/build is missing, please set KERNELPATH。中止。 と、表示されます。どのようにすればよいのかご教授していただける方よろしくおねがいします。

  • Debian squeezeのカーネルソースの場所

    現在、Debian squueze(kernel:2.6.32-5-amd64)を入れたPCに 無線LAN(RaLink RT2860)のドライバをインストール(コンパイル)するため、 付属のReadmeを読みながらMakefileの設定を行っています。 しかし、肝心のカーネルソースが自分のPCのどこにあるか分からず、 Makefile内のカーネルソース(LINUX_SRC)をどう指定すればよいのか分かりません。 どのように設定、もしくはどのようにして調べたら良いのでしょうか? Makefile内の該当箇所を以下に抜粋します。 (このままmakeを実行してもエラーが出ます。) =================================================== ifeq ($(PLATFORM),PC) # Linux 2.6 LINUX_SRC = /lib/modules/$(shell uname -r)/kernel/build # Linux 2.4 Change to your local setting #LINUX_SRC = /usr/src/linux-2.4 LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/ CROSS_COMPILE = endif =================================================== Linuxを始めてまだ一週間程度で右も左も分からないので、 変な質問の仕方をしているかもしれませんが、 是非ご教授、アドバイス等を頂きたいと思います。 よろしくお願いします。

  • CentOSにRTL8111Cインストールできない

    CentOSをインストールしましたがNICを検出しません。 調査しRTL8111Cであることが分かり、ReadMeに書かれているように 以下の手順を試みましたが、組み込めません。 どなたか対策方法がお分かりになる方教えて下さい。 尚、PCはPCIBusを持っていませんので、別売りの100BASENICに換え ることもできません。初心者で手順が悪いのかよく分かりません。 (1)Realtekからドライバの入手   r8168-8.008.00tar.bz2 (2)ドライバのコピー先を”/root/DownLoad”作成 (3)ドライバをこのフォルダーに入れダブルクリック(解凍) (4)"r8168-8.008.00"が作られ中に以下のフォルダとファイルが生成される  src  Makefile  readme  release_note.txt (5)GNOME端末で # cd Download # cd r8186-8.008.00  # make clean modules (6)表示 [root@localhost Download]# cd r8168-8.008.00 [root@localhost r8168-8.008.00]# make clean modules make -C src/ clean make[1]: ディレクトリ `/root/Download/r8168-8.008.00/src' に入ります rm -rf *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers *.order make[1]: ディレクトリ `/root/Download/r8168-8.008.00/src' から出ます make -C src/ modules make[1]: ディレクトリ `/root/Download/r8168-8.008.00/src' に入ります make -C /lib/modules/2.6.18-8.el5/build SUBDIRS=/root/Download/r8168-8.008.00/src modules make: Entering an unknown directory make: *** /lib/modules/2.6.18-8.el5/build: そのようなファイルやディレクトリはありません. 中止. make: Leaving an unknown directory make[1]: *** [modules] エラー 2 make[1]: ディレクトリ `/root/Download/r8168-8.008.00/src' から出ます make: *** [modules] エラー 2 [root@localhost r8168-8.008.00]# 宜しくお願いします

  • Fedora32でUSB Wi-Fiを使いたい

    ノートPCにFedoraをインストールして使っています。 内臓のWi-Fiが11nまでの対応なので、11ac対応のUSB Wi-Fiを導入しようと思い、 以下のURL等を参考にしました。 https://blog.techlab-xe.net/linux-use-usb-wifi-2016/ 以下の製品を購入しました。 WN-AC433UA (IO DATA) https://github.com/gnab/rtl8812au のReadmeにあるようにしてインストールを行いました。 $ git clone https://github.com/gnab/rtl8812au $ cd rtl8812au $ make このとき、以下のようなエラーが出ました。 --------------------------- make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/5.8.13-200.fc32.x86_64/build M=/home/nob/rtl8812au modules make[1]: *** /lib/modules/5.8.13-200.fc32.x86_64/build: そのようなファイルやディレクトリはありません. 中止. make: *** [Makefile:1068: modules] エラー 2 --------------------------- OS : Fedora release 32 (Thirty Two) kernel : 5.8.13-200.fc32.x86_64 どのように対処すればよいのか分からずに困っております。 以上、よろしくお願いいたします。

  • CentOS 5 での無線LAN接続設定について

    CentOS 5 での無線LAN接続設定について Linux設定初心者です。 無線LANへの接続設定の方法がネットで調べてもできません。 「Ethernet controller」のドライバをダウンロード・解凍したのですが、「make all」実行中にエラーが起きてしまいます。 何をどうすればいいのか分からないです。 アドバイスいただきたいです。 DELL Inspiron Mini 10v に[CentOS 5.4]をインストールしてます。 /************************ lspci の実行結果 ************************/ [root@localhost /]# lspci : 03:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g (rev 01) 04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02) /************************ make all の実行 ************************/ $ make all make -C src/ clean make[1]: ディレクトリ `/home/tatsuya/nic/r8101-1.019.00/src' に入ります rm -rf *.o *.ko *~ core* .dep* .*.d .*.cmd *.mod.c *.a *.s .*.flags .tmp_versions Module.symvers Modules.symvers Module.markers *.order make[1]: ディレクトリ `/home/tatsuya/nic/r8101-1.019.00/src' から出ます make -C src/ modules make[1]: ディレクトリ `/home/tatsuya/nic/r8101-1.019.00/src' に入ります make -C /lib/modules/2.6.18-164.el5xen/build SUBDIRS=/home/tatsuya/nic/r8101-1.019.00/src modules make: Entering an unknown directory make: *** /lib/modules/2.6.18-164.el5xen/build: そのようなファイルやディレクトリはありません. 中止. make: Leaving an unknown directory make[1]: *** [modules] エラー 2 make[1]: ディレクトリ `/home/tatsuya/nic/r8101-1.019.00/src' から出ます make: *** [modules] エラー 2 /************************ エラーの原因はディレクトリが無いようです ************************/ $ ll /lib/modules/2.6.18-164.el5xen/build /lib/modules/2.6.18-164.el5xen/build -> ../../../usr/src/kernels/2.6.18-164.el5-xen-i686 /usr/src には何も入っていません $ cd /lib/modules/2.6.18-164.el5xen $ ll ../../../usr/src 合計 0

専門家に質問してみよう