yasuda0108
2022年2月16日 13時26分
お世話になります。
Armadillo-G4 CN4のUSBポートを使用して、シリアル通信データを受信しようと考えております。
マニュアル「9.1.4.7. USB を扱う」を参考にコンテナを作成しようとしているのですが、
/devディレクトリ下に/ttyUSBNが存在しません。
こちらはどのように対応すればよろしいでしょうか。
armadillo:~# ls /dev autofs loop-control ptyp3 tty17 tty51 ttypf block loop0 ptyp4 tty18 tty52 ubi_ctrl bsg loop1 ptyp5 tty19 tty53 uhid btrfs-control loop2 ptyp6 tty2 tty54 urandom bus loop3 ptyp7 tty20 tty55 v4l caam-keygen loop4 ptyp8 tty21 tty56 vcs cec0 loop5 ptyp9 tty22 tty57 vcs1 char loop6 ptypa tty23 tty58 vcs2 console loop7 ptypb tty24 tty59 vcs3 core mapper ptypc tty25 tty6 vcs4 cpu_dma_latency mem ptypd tty26 tty60 vcs5 cuse mmcblk2 ptype tty27 tty61 vcs6 disk mmcblk2boot0 ptypf tty28 tty62 vcsa dlm-control mmcblk2boot1 random tty29 tty63 vcsa1 dlm-monitor mmcblk2gp0 rfkill tty3 tty7 vcsa2 dlm_plock mmcblk2gp1 rtc tty30 tty8 vcsa3 dri mmcblk2gp2 rtc0 tty31 tty9 vcsa4 fb0 mmcblk2gp3 rtc1 tty32 ttyS0 vcsa5 fd mmcblk2p1 sda tty33 ttyS1 vcsa6 full mmcblk2p2 sda1 tty34 ttyS2 vcsu fuse mmcblk2p3 shm tty35 ttyS3 vcsu1 galcore mmcblk2p4 snapshot tty36 ttymxc0 vcsu2 gpiochip0 mmcblk2p5 snd tty37 ttymxc1 vcsu3 gpiochip1 mmcblk2rpmb stderr tty38 ttyp0 vcsu4 gpiochip2 mqueue stdin tty39 ttyp1 vcsu5 gpiochip3 mxc_hantro stdout tty4 ttyp2 vcsu6 gpiochip4 mxc_hantro_vc8000e tee0 tty40 ttyp3 vfio gpiochip5 net teepriv0 tty41 ttyp4 vga_arbiter hwrng null tty tty42 ttyp5 vhci i2c-0 port tty0 tty43 ttyp6 video0 i2c-1 pps0 tty1 tty44 ttyp7 video1 i2c-2 ptmx tty10 tty45 ttyp8 video2 i2c-3 ptp0 tty11 tty46 ttyp9 vsi_daemon_ctrl i2c-6 ptp1 tty12 tty47 ttypa watchdog input pts tty13 tty48 ttypb watchdog0 ion ptyp0 tty14 tty49 ttypc zero kmsg ptyp1 tty15 tty5 ttypd zram0 log ptyp2 tty16 tty50 ttype
コメント
yasuda0108
回答致します。
1. USBデバイスはArmadilloに正しく接続されておりますでしょうか。
2. USBデバイスをArmadilloに接続した時の出力されるログをいただけますでしょうか。
→接続時にUSBを認識しているようですので、接続はされていると考えられます。
以下接続時ログです。
armadillo:~# [ 65.836479] usb 1-1: new full-speed USB device number 2 using xhci-hcd
3. 可能であればご使用されるUSBデバイスの詳細を教えていただけますでしょうか。
→RS-422通信をUSBに変換するアダプターになります。
製品:MOXA Uport 1130
回答をしていて思いましたが、この製品のドライバはインストールが必要ですよね。。
https://moxa.com/en/support/product-support/software-and-documentation/…
ドライバをインストールする際は、armadilloのどこかのディレクトリにて.tgzを解凍しmake→make installの手順でよろしいでしょうか?
> 入江です。
>
> > マニュアル「9.1.4.7. USB を扱う」を参考にコンテナを作成しようとしているのですが、
> > /devディレクトリ下に/ttyUSBNが存在しません。
>
> いくつか確認させてください。
>
> 1. USBデバイスはArmadilloに正しく接続されておりますでしょうか。
>
> 2. USBデバイスをArmadilloに接続した時の出力されるログをいただけますでしょうか。
>
> 3. 可能であればご使用されるUSBデバイスの詳細を教えていただけますでしょうか。
>
> 以上、よろしくお願いいたします。
>
at_akihito.irie
yasuda0108
CN4に接続し、lsusb実行の結果、出力は下記になります。
armadillo:~# [ 33.160212] usb 1-1: new full-speed USB device number 2 using xhci-hcd armadillo:~# lsusb Bus 003 Device 001: ID 1d6b:0002 Bus 001 Device 001: ID 1d6b:0002 Bus 001 Device 002: ID 110a:1131 Bus 004 Device 001: ID 1d6b:0003 Bus 002 Device 001: ID 1d6b:0003 Bus 003 Device 002: ID 0424:2422
> 入江です。
>
> > ドライバをインストールする際は、armadilloのどこかのディレクトリにて.tgzを解凍しmake→make installの手順でよろしいでしょうか?
>
> arm64向けにビルドするには少し違う手順が必要かもしれません。
>
> ご自身でドライバをビルドしても良いですが、Linuxカーネル内に用意されて
> いるドライバも使えるかもしれません。
> つきましては当該USBデバイスを接続した状態で、lsusb
を実行した際の出力をい
> ただけますでしょうか。
>
> 以上、よろしくお願いいたします。
>
at_akihito.irie
入江です。
情報ありがとうございます。
少々長くなりますが、以下の手順を試していただけますでしょうか。
まず、以下のマニュアルを参考にLinuxカーネルをビルドできる環境を整えま
す。すでにカーネルがビルドできる状態にあるのであれば実行する必要はあり
ません。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
次にカーネルコンフィギュレーションを変更し、当該USBデバイスのドライバ
を有効にします。
[ATDE]$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
menuconfigでは以下を有効にしてください。
Device Drivers ---> [*] USB support ---> <*> USB Serial Converter support ---> <*> USB TI 3410/5052 Serial Driver <- これを有効化(スペースキー押下で<*>にする)
コンフィギュレーションの変更後、カーネルをビルドしてください。
[ATDE]$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j5
次に、生成したカーネルイメージのArmadilloへの書込みと、当該デバイスを
使用するのに必要なファームウェアをArmadilloにインストールするために、
SWUpdateを使用するのでswuイメージを作成します。
別スレッドのご質問にて既にinitial_setupは完了しているようですので、
SWUpdateは使用できる前提で説明します。
まず、ホームディレクトリにあるmkswuディレクトリに移動し、カーネルとファー
ムウェアのアップデート用ディレクトリとdescファイルを作成します。
以下の例ではviを用いていますがお好きなエディタでdescファイルを編集して
ください。
[ATDE]$ cd /home/atmark/mkswu [ATDE]$ mkdir for-moxa-uport1130 [ATDE]$ vi for-moxa-uport1130/kernel_firmware_update.desc // 編集 [ATDE]$ cat for-moxa-uport1130/kernel_firmware_update.desc // 編集後のdescファイルの内容 swdesc_files --version extra_os.kernel 5.10.82-1 \ --install-if different --dest /boot \ "Image" swdesc_command "apk add linux-firmware-moxa" --version extra_os.firmware-moxa 1 install_if=different swdesc_command --version extra_os.kernel 5.10.82-1 \ 'grep -qE "^POST /boot" /etc/swupdate_preserve_files || echo -e "POST /boot\nPOST /lib/modules" >> /etc/swupdate_preserve_files'
次に、先程生成したカーネルイメージ(Image)ファイルをfor-moxa-uport1130/
の下に配置し、mkswuを実行します。
カーネルイメージへのパスは適宜読み替えてください。
[ATDE]$ cp /home/atmark/linux-5.10-at/arch/arm64/boot/Image ./for-moxa-uport1130/ [ATDE]$ mkswu for-moxa-uport1130/kernel_firmware_update.desc [ATDE]$ ls for-moxa-uport1130/kernel_firmware_update.swu for-moxa-uport1130/kernel_firmware_update.swu // swuパッケージが生成されていることを確認
上記手順で生成されたkernel_firmware_update.swuをUSBメモリに書き込み、
Armadilloに挿入してSWUpdateを実行してください。
正常にSWUpdateが実行されると、Armadilloが再起動します。
以下のコマンドで、正しくカーネルがアップデートされ、ファームウェアが書
き込まれていることが確認できます。
[armadillo]# zcat /proc/config.gz | grep CONFIG_USB_SERIAL_TI CONFIG_USB_SERIAL_TI=y <- =yになっている [armadillo]# ls /lib/firmware/moxa/ <- ファームウェアが存在している moxa-1110.fw moxa-1150.fw moxa-1251.fw moxa-1451.fw moxa-1653.fw moxa-1130.fw moxa-1151.fw moxa-1410.fw moxa-1613.fw moxa-1658.fw moxa-1131.fw moxa-1250.fw moxa-1450.fw moxa-1618.fw
この状態で、当該USBデバイスをArmadilloに接続して正しく認識されるか確認
していただけますでしょうか。
以上、よろしくお願いいたします。
yasuda0108
ご丁寧にご対応ありがとうございます。
記載いただいた内容通りに試してみます。
質問が2点ございます。
①新規の.descファイルはどのように作成するのでしょうか
前回のものをコピーしrenameしようとしましたがエラ-が出力されます。
ご回答内容から抜粋 [ATDE]$ vi for-moxa-uport1130/kernel_firmware_update.desc ←こちらの作成方法 リネームエラー atmark@atde9:~/mkswu$ rename kernel_update_plain.desc kernel_firmware_plain.desc Bareword "kernel_update_plain" not allowed while "strict subs" in use at (user-supplied code) line 3.
②今回作成するkernel_firmware_update.descを使用してG4をアップデートした際、
以前実施したデバイスツリーのSWupdate更新内容(GPIOの設定)は、G4に残ったままアップデートされるのでしょうか
yasuda0108
先ほどの質問内容ですが、①については、下記の方法で名前を変更し解決しました。
atmark@atde9:~/mkswu$ cp update-dtb/kernel_update_plain.desc for-moxa-uport1130/kernel_firmware_update.desc
mkswuを実行しましたが、エラ-が出力されますので、ご確認をお願いします。
atmark@atde9:~/mkswu$ cat for-moxa-uport1130/kernel_firmware_update.desc # We expose `--install-if different` here in two different ways for # demonstration purpose (either using the switch or setting the variable) # Anything below the variable being set will have the switch automatically # set unless they specify --install-if higher manually # Note that if a component is installed in both modes, the swu generation # will fail. swdesc_files --version extra_os.kernel 5.10.82-1 \ --install-if different --dest /boot \ "Image" swdesc_command "apk add linux-firmware-moxa" --version extra_os.firmware-moxa 1 swdesc_command --version extra_os.kernel 5.10.82-1 \ 'grep -qE "^POST /boot" /etc/swupdate_preserve_files || echo -e "POST /boot\nPOST /lib/modules" >> /etc/swupdate_preserve_files' atmark@atde9:~/mkswu$ mkswu for-moxa-uport1130/kernel_firmware_update.desc sort: -:3: 順序が不規則: extra_os.kernel 5.10.82-1 higher * ERROR: 上記のcomponentが別のバージョンかinstall-ifで使われました。
また、②についてもご回答お待ちしております。
yasuda0108
失礼いたしました。
install_if=differentが抜けておりました。無事.swu作成が完了しました。
> 先ほどの質問内容ですが、①については、下記の方法で名前を変更し解決しました。
>
> atmark@atde9:~/mkswu$ cp update-dtb/kernel_update_plain.desc for-moxa-uport1130/kernel_firmware_update.desc >
>
> mkswuを実行しましたが、エラ-が出力されますので、ご確認をお願いします。
>
> atmark@atde9:~/mkswu$ cat for-moxa-uport1130/kernel_firmware_update.desc > # We expose `--install-if different` here in two different ways for > # demonstration purpose (either using the switch or setting the variable) > # Anything below the variable being set will have the switch automatically > # set unless they specify --install-if higher manually > # Note that if a component is installed in both modes, the swu generation > # will fail. > > > swdesc_files --version extra_os.kernel 5.10.82-1 \ > --install-if different --dest /boot \ > "Image" > > swdesc_command "apk add linux-firmware-moxa" --version extra_os.firmware-moxa 1 > > swdesc_command --version extra_os.kernel 5.10.82-1 \ > 'grep -qE "^POST /boot" /etc/swupdate_preserve_files || echo -e "POST /boot\nPOST /lib/modules" >> /etc/swupdate_preserve_files' > > atmark@atde9:~/mkswu$ mkswu for-moxa-uport1130/kernel_firmware_update.desc > sort: -:3: 順序が不規則: extra_os.kernel 5.10.82-1 higher * > ERROR: 上記のcomponentが別のバージョンかinstall-ifで使われました。 > >
>
> また、②についてもご回答お待ちしております。
yasuda0108
お世話になります。
ご回答頂いた通り、USBドライバを有効にした.swuにてアップデートを実施しました。
G4が再起動されたのち、RS422↔USB変換ケーブルを差し、下記の通り確認しましたが、以下のように表示されます。
ご対応方法のご教示お願い致します。
USB接続 armadillo:~# [ 26.564529] usb 1-1: new full-speed USB device number 2 using xhci-hcd ★ =y と表示されない armadillo:~# zcat /proc/config.gz | grep CONFIG_USB_SERIAL_TI # CONFIG_USB_SERIAL_TI is not set ファームウェア確認 armadillo:~# ls /lib/firmware/moxa moxa-1110.fw moxa-1150.fw moxa-1251.fw moxa-1451.fw moxa-1653.fw moxa-1130.fw moxa-1151.fw moxa-1410.fw moxa-1613.fw moxa-1658.fw moxa-1131.fw moxa-1250.fw moxa-1450.fw moxa-1618.fw
at_akihito.irie
入江です。
以下のコマンドをArmadillo上で実行し、その結果を送っていただけますでしょうか。
[armadillo]# ls -l /boot
また、ATDEにて、ビルドしたLinuxカーネルソースコードのディレクトリ内で
以下を実行し、その結果を送っていただけますでしょうか。
(linux-5.10-atへのパスは適宜読み替えてください。)
[ATDE]$ cd /path/to/linux-5.10-at [ATDE]$ cat .config | grep CONFIG_USB_SERIAL_TI
以上、よろしくお願いいたします。
yasuda0108
実行結果は下記になります。
ご回答宜しくお願い致します。
Armadillo-G4
armadillo:~# ls -l /boot total 30617 -rw-r--r-- 1 root root 31051784 Dec 2 2021 Image lrwxrwxrwx 1 root root 30 Jan 1 1970 armadillo.dtb -> armadillo_iotg_g4-at-dtweb.dtb -rw-r--r-- 1 root root 59915 Jan 1 1970 armadillo_iotg_g4-at-dtweb.dtb -rw-r--r-- 1 root root 59796 Dec 2 2021 armadillo_iotg_g4-nousb.dtb -rw-r--r-- 1 root root 60012 Dec 2 2021 armadillo_iotg_g4.dtb -rw-r--r-- 1 root root 63003 Dec 2 2021 imx8mp-evk.dtb -rw-r--r-- 1 root root 53982 Dec 2 2021 yakushima-eva.dtb
ATDE
atmark@atde9:~$ ls /home/atmark Qt kernel_update_plain.swu mkswu デスクトップ 音楽 drv linux-5.10-5.10.93-r0 ダウンロード ドキュメント 画像 initial_setup.swu linux-at-5.10.93-r0 テンプレート ビデオ 公開 atmark@atde9:~$ cd linux-5.10-5.10.93-r0 atmark@atde9:~/linux-5.10-5.10.93-r0$ cat .config | grep CONFIG_USB_SERIAL_TI CONFIG_USB_SERIAL_TI=y
at_akihito.irie
入江です。
> -rw-r--r-- 1 root root 31051784 Dec 2 2021 Image
日付から察するに、Imageファイルの書き換えができていないように見えます。
開発時以外は非推奨ですが、以下の手順を実行し、swuを使用しないでImageファ
イルの書き換えを試してみていただけますでしょうか。
まず、CONFIG_USB_SERIAL_TIを有効にして生成したImageファイルをArmadillo
に送ってください。
その後、/boot/Image(既存のカーネルイメージ)のバックアップをとりつつ、
新たなImageファイルを/boot以下にコピーします。
persist_file(ファイルの永続化)も忘れずに行ってください。
[armadillo]# ls Image Image //CONFIG_USB_SERIAL_TIを有効にしたImage [armadillo]# ls /boot/Image /boot/Image //既存のカーネルイメージ [armadillo]# cp --backup=numbered Image /boot/Image //元のImageのバックアップをとりつつcp [armadillo]# persist_file /boot/Image /boot/Image.~1~ //コピーしたファイルとバックアップの永続化
その後、reboot
コマンドでArmadilloを再起動し、以下のコマンドの出力をご
確認ください。
[armadillo]# zcat /proc/config.gz | grep CONFIG_USB_SERIAL_TI CONFIG_USB_SERIAL_TI=y <- =yになっている
以上、よろしくお願いいたします。
yasuda0108
ご回答ありがとうございます。
cpコマンド実施時に、/以下がReadOnlyである旨表示されました。
armadillo:~# cp --backup=numbered /mnt/Image /boot/Image cp: cannot backup '/boot/Image': Read-only file system
こちらについては、以下のリンク先を参考に「新Imageをコピー」「初期Imageはリネームしてバックアップ保存」
すればよいかなと考えられますが、persist_fileにて初期Imageをリネームすることは可能なのでしょうか。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
また、その他解決方法ありましたらご教示お願い致します。
at_akihito.irie
入江です。
以下の手順でルートファイルシステムを読み書き可能でremountしてから、
Imageの書き換えを行ってみてください。
[armadillo]# mount -o remount,rw / [armadillo]# cp --backup=numbered /mnt/Image /boot/Image [armadillo]# persist_file /boot/Image /boot/Image.~1~
その後、reboot
コマンドで再起動して、CONFIG_USB_SERIAL_TI=y
になっている
か確認してください。
以上、よろしくお願いいたします。
yasuda0108
ご回答ありがとうございます。
persist_fileを実行すると、下記のように表示されます。
この場合正しく永続化が出来ていないのでしょうか。
armadillo:~# mount -o remount,rw / armadillo:~# cp --backup=numbered /mnt/Image /boot/Image armadillo:~# ls /boot Image armadillo_iotg_g4-at-dtweb.dtb imx8mp-evk.dtb Image.~1~ armadillo_iotg_g4-nousb.dtb yakushima-eva.dtb armadillo.dtb armadillo_iotg_g4.dtb armadillo:~# persist_file /boot/Image /boot/Image.~1~ Could not find what filesystem /boot/Image belongs to
at_akihito.irie
yasuda0108
at_akihito.irie
2022年2月16日 14時39分
入江です。
> マニュアル「9.1.4.7. USB を扱う」を参考にコンテナを作成しようとしているのですが、
> /devディレクトリ下に/ttyUSBNが存在しません。
いくつか確認させてください。
1. USBデバイスはArmadilloに正しく接続されておりますでしょうか。
2. USBデバイスをArmadilloに接続した時の出力されるログをいただけますでしょうか。
3. 可能であればご使用されるUSBデバイスの詳細を教えていただけますでしょうか。
以上、よろしくお願いいたします。