Armadilloフォーラム

LAN~シリアル変換の実績について

nagaishi

2016年10月21日 9時55分

いつもありがとうございます。
また問題が発生した為、大変お手数ですが、ご教授いただけないでしょうか?

■質問事項
・Armadillo-440とNPort5450を使ったシリアル通信の実績の有無。
・Armadillo-440とNPort5450のようなLAN~シリアル変換機器を使ったシリアル通信の実績がある機器について。

※NPort5450…LAN~シリアル(RS232C/422/485)の変換を行うシリアルデバイスサーバ
http://www.ibsjapan.co.jp/products/NPort5450.html

■目的
Armadillo-440とNPort5450を使って、シリアル通信を行いたい。

※シリアルポートは12台使用予定です。その為、NPortは複数台使用予定です。
※ATDE5上での操作は確認済みです。

■問題点
NPort5450のドライバーをクロスコンパイル出来ない。

[NPort5450を操作するのに必要なファイル]
mxaddsvr…クロスコンパイル出来た
mxcfmat…クロスコンパイル出来た
mxdelsvr…クロスコンパイル出来た
mxloadsvr…クロスコンパイル出来た
mxmknod…クロスコンパイル出来た
mxsetsec…クロスコンパイル出来た
npreal2.ko…作成するのに、npreal2.mod.oとnpreal2.oをクロスコンパイルして生成する必要あり

npreal2.mod.oとnpreal2.oのクロスコンパイルする方法がわからないのが現状です。

npreal2.mod.oのクロスコンパイル方法として、以下ではないかと思い、
実行するが以下エラーが出力され、無理やり参照を追加する等してもやればやるほど、
進んだ先にまたエラーが発生してイタチごっこのようになっていて、終わりが見えない状態です。
なお、クロスコンパイルの実績がある環境(ATDE5以外など)があれば知りたいです。

[想定する実行コマンド]
arm-linux-gnueabi-gcc -Wp,-MD,/tmp/moxa/.npreal2.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.6/include -I/usr/src/linux-headers-3.2.0-4-common/arch/x86/include -Iarch/x86/include/generated -Iinclude -I/usr/src/linux-headers-3.2.0-4-common/include -include /usr/src/linux-headers-3.2.0-4-common/include/linux/kconfig.h -I/tmp/moxa -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -Os -funit-at-a-time -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -Wframe-larger-than=2048 -Wno-unused-but-set-variable -fomit-frame-pointer -fno-var-tracking-assignments -g -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(npreal2)" -D"KBUILD_MODNAME=KBUILD_STR(npreal2)" -c -o /tmp/moxa/.tmp_npreal2.o /tmp/moxa/npreal2.c

[出力されるエラー]
/usr/src/linux-headers-3.2.0-4-common/include/linux/kconfig.h:4:32: fatal error: generated/autoconf.h: そのようなファイルやディレクトリはありません

コメント

at_takashi.sasayama

2016年10月21日 13時28分

笹山です。

ビルドされようとしているソースは以下でしょうか?

rchovan/npreal2
https://github.com/rchovan/npreal2

でしたら、添付のパッチを適用することにより、以下の手順で npreal2.ko の insmod までは確認できました。

[ATDE5]$ git clone https://github.com/rchovan/npreal2.git
[ATDE5]$ cd npreal2
[ATDE5]$ patch -p1 < replace_cc_strip_as_val.patch
patching file Makefile
[ATDE5]$ make ARCH=arm CC=arm-linux-gnueabi-gcc KDIR=~/linux-3.14-at LD=arm-linux-gnueabi-ld -I~/linux-3.14-at/include STRIP=arm-linux-gnueabi-strip
 
※ 上記コマンドは linux-3.14-at ソースがホームディレクトリに展開されていることを想定しています。
展開先が異なる場合は、KDIR と -I の後のカーネルソースへのパスを適宜読み替えてください。

ビルドで生成された、npreal2.ko を Armadillo-440 に転送し insmod を実行

[root@armadillo440]# insmod npreal2.ko
MOXA Async/NPort server family Real TTY driver ttymajor 33 calloutmajor 38 verbose 1 (1.18.33 Build 14060316)
ファイル ファイルの説明
replace_cc_strip_as_val.patch npreal2 ATDE5ビルドパッチ for Latest commit b3c3e27

nagaishi

2016年10月25日 11時02分

回答ありがとうございます。
おかげさまで少し進みましたが、別箇所でハマりました。

/dev/ttyr02が作成されたが、「No such device or address」と出力され、
操作できない事象が発生しました。

[root@armadillo440-0 (pts/0) /usr/lib/npreal2/driver]# echo aaaa >> /dev/ttyr02
-ash: can't create /dev/ttyr02: No such device or address

なお、ATDE5でクロスコンパイルしない版では動作しました。

■やった手順
1)以下コマンドを実行
[ATDE5]$ git clone https://github.com/rchovan/npreal2.git
[ATDE5]$ cd npreal2
[ATDE5]$ patch -p1 < replace_cc_strip_as_val.patch
[ATDE5]$ make ARCH=arm CC=arm-linux-gnueabi-gcc KDIR=~/linux-3.14-at5 LD=arm-linux-gnueabi-ld -I~/linux-3.14-at5/include STRIP=arm-linux-gnueabi-strip

2)mxinstを編集
make処理を全て削除して、以下に変更。
※添付ファイル参照(.txtを付加して添付しています)

cp -p npreal2.ko /lib/modules/3.14.36-at5/kernel/drivers/char/
depmod -a

3)npreal2を圧縮して、armadilloに転送
[ATDE5]$ tar zcf npreal2.tar.gz npreal2
[ATDE5]$ lftp 10.0.0.91 -e "cd pub;put npreal2.tar.gz;bye"

4)npreal2をインストール
[root@armadillo440-0 (pts/0) ~]# cd /home/ftp/pub/
[root@armadillo440-0 (pts/0) /home/ftp/pub]# tar zxf npreal2.tar.gz
[root@armadillo440-0 (pts/0) /home/ftp/pub]# cd npreal2/
[root@armadillo440-0 (pts/0) /home/ftp/pub]# ./mxinst
※インストール時のメッセージは「mxinst実行結果」を参照
[root@armadillo440-0 (pts/0) /home/ftp/pub/npreal2]# cd /usr/lib/npreal2/driver

5)サーバ設定
[root@armadillo440-0 (pts/0) /usr/lib/npreal2/driver]# ./mxaddsvr 10.0.0.96 4
※実行結果は「mxaddsvr実行結果」を参照

6)デバイス操作
[root@armadillo440-0 (pts/0) /usr/lib/npreal2/driver]# echo aaaa >> /dev/ttyr02

■mxinst実行結果
==============================================================================
Copyright (C) 2002-2014 Moxa Inc.
All Rights Reserved.

MOXA NPort Server Real TTY Driver V1.18.33 Installation.
System Information: Kernel 3.14.36-at5; Machine armv5tejl.
===============================================================================

Tar files, please wait ... OK!
Building driver...
Check Driver...
Copying configurations files ... OK!
Copying driver files ... OK!
Load driver...
OK!
Loading TTY Driver...
Complete.

===============================================================================
Installation process is completed.
The all driver files are installed on /usr/lib/npreal2/driver.
Now you can cd /usr/lib/npreal2/driver and run ./mxaddsvr to add tty port.
===============================================================================

■mxaddsvr実行結果
Adding Server...

ttyr00, cur00
ttyr01, cur01
ttyr02, cur02
ttyr03, cur03
Added RealCom server: ip : 10.0.0.96

mknod -m 666 ttyr00 c 33 0
mknod -m 666 cur00 c 38 0
mknod -m 666 ttyr01 c 33 1
mknod -m 666 cur01 c 38 1
mknod -m 666 ttyr02 c 33 2
mknod -m 666 cur02 c 38 2
mknod -m 666 ttyr03 c 33 3
mknod -m 666 cur03 c 38 3
Complete.

ファイル ファイルの説明
mxinst.txt

nagaishi

2016年10月31日 10時39分

いつもありがとうございます。
実績について、ご教授いただけないでしょうか?

■質問事項
1)Armadillo-440とNPort5450を使ったシリアル通信の実績の有無。
2)Armadillo-440とNPort5450のようなLAN~シリアル変換機器を使ったシリアル通信の実績がある機器について。

※NPort5450…LAN~シリアル(RS232C/422/485)の変換を行うシリアルデバイスサーバ
http://www.ibsjapan.co.jp/products/NPort5450.html

■目的
Armadillo-440とNPort5450を使って、シリアル通信を行いたい。

※シリアルポートは12台使用予定です。その為、NPortは複数台使用予定です。
※ATDE5上での操作は確認済みです。

また1)について実績がある場合、「No such device or address」についても発生したのかご教授いただければと思います。
質問が多くて大変申し訳ありません。

at_ito

2016年11月8日 18時14分

伊藤と申します。

Armadillo-440でNPort5450を動かした際の情報は私のほうではありませんが、
実施した内容を確認してみました。

内容確認してみたところ、特に問題となる点は見つけられませんでしたが、
気になる点として、Armadilloでのスクリプト実行が含まれているため、
busyboxが原因で動作が異なるなどの可能性は考えられませんでしょうか。

一度ArmadilloをSDカード、Debian GNU/Linuxの環境にして、
動作するかどうか確認してみてはいかがでしょうか。

nagaishi

2016年11月9日 9時48分

回答ありがとうございます。

>一度ArmadilloをSDカード、Debian GNU/Linuxの環境にして、
>動作するかどうか確認してみてはいかがでしょうか。
確認してみます。
以下を参考にする認識でよろしいでしょうか?

第4章 Armadillo上にDebian GNU/Linuxを構築する
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-3…

at_ito

2016年11月9日 11時16分

伊藤です。

> 以下を参考にする認識でよろしいでしょうか?
>
> 第4章 Armadillo上にDebian GNU/Linuxを構築する
> http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-3…

上記はLinux-2.6.26のころの環境で記載しておりますので、
以下のURLを参照したほうが適切かと思います。

http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_soft…

nagaishi

2016年11月9日 17時34分

ご教示ありがとうございます。

一旦状況報告いたします。
手順に従い、カーネルイメージとルートファイルシステムをSDに格納して、bootしました。
結果、以下メッセージが出力されて、1時間待っても変化がありませんでした。

電源OFFして、再度電源ONするが、同じ箇所で止まりました。
再度手順をもう一度やり直してみます。

---- 抜粋ログ(ここから) ----
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
Listening on LPF/eth0/00:11:0c:10:0e:a1
Sending on LPF/eth0/00:11:0c:10:0e:a1
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8
libphy: imx25-fec-1:00 - Link is Up - 100/Full
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPOFFER from 10.0.0.254
DHCPACK from 10.0.0.254
bound to 10.0.0.23 -- renewal in 127162 seconds.
done.
[ ok ] Cleaning up temporary files....

---- 抜粋ログ(ここまで) ----
※ログ全体は添付ファイル参照ください。

<補足>
・カーネルイメージは、atmark-distを使って作成したイメージを使用
・ルートファイルシステムは、armadillo-440付属DVD内に入っていた"debian-wheezy-armel_a440_20151218.tar.gz"を使用

ファイル ファイルの説明
boot.log

at_ito

2016年11月9日 18時06分

伊藤です。

ログを見ましたが、現時点で思い当たる所はありませんでした。

再起動を何回か繰り返すか、もしくはLinuxカーネルを標準の物に変更すれば、現象変わりますでしょうか。

nagaishi

2016年11月10日 9時59分

取り急ぎ、報告です。
debianが無事起動しました。

起動しなかった原因は、一部手順を誤っていた為です。
ご協力ありがとうございました。
debianにNPortドライバをインストールして、結果ご報告します。

■やっていた手順
(1)SDフォーマット
[armadillo ~]# fdisk /dev/mmcblk0
[armadillo ~]# mke2fs -j /dev/mmcblk0p1

(2)カーネルイメージの配置
[ATDE ~]$ lftp 10.0.0.91 -e "cd pub;put linux.bin.gz;bye"
[armadillo ~]# mkdir /mnt/boot
[armadillo ~]# cd /mnt/boot
[armadillo /mnt/boot]# mv /home/ftp/pub/linux.bin.gz ./
[armadillo /mnt/boot]# cd
[armadillo ~]# umount /mnt

(3)Debian GNU/Linuxのルートファイルシステムを構築
[ATDE ~]$ mkdir sd
[ATDE ~]$ sudo mount -t ext3 /dev/sdc1 sd
[ATDE ~]$ sudo tar zxf debian-wheezy-armel_a440_20151218.tar.gz -C sd
[ATDE ~]$ sudo umount sd
[ATDE ~]$ rmdir sd

(4)/etc/fstabの設定
※※本作業が余計でした。本作業を飛ばして実施した場合にdebianが起動しました。
[armadillo ~]# mount /dev/mmcblk0p1 /mnt/
[armadillo ~]# vi /mnt/etc/fstab
/dev/mmcblk0p1 / ext3 defaults 0 1
proc /proc proc defaults 0 0
udev /dev tmpfs mode=0755 0 0
run /run tmpfs mode=0755 0 0
sysfs /sys sysfs defaults 0 0
[armadillo ~]# umount /mnt

(5)debian起動
hermit> setbootdevice mmcblk0p1
hermit> setenv console=ttymxc1,115200 root=/dev/mmcblk0p1 noinitrd rootwait
hermit> boot

nagaishi

2016年11月10日 14時22分

状況報告です。
何か対処がわかりましたら、ご教示お願いいたします。

debianに、npreal2をインストールしてみました。
「depmod -a」の箇所で以下エラーが発生しました。

WARNING: could not open /lib/modules/3.14.36-at5/modules.order: No such file or directory
WARNING: could not open /lib/modules/3.14.36-at5/modules.builtin: No such file or directory

なお、modules.orderとmodules.builtinをATDE5環境からコピーして、「depmod -a」を実行したところ
通りましたが、コマンド実行時に「No such device or address」が発生しました。

nagaishi

2016年11月11日 12時15分

状況報告です。
何か対処がわかりましたら、ご教示お願いいたします。

ATDE5からTelnetで接続し、armadilloを以下操作しました。
結果、「update-rc.d」のログが発生した辺りから、
TeraTerm側から添付ファイルのログが出力されました。

<< 環境 >>
・ATDE5を使って、armadilloにTelnet(操作あり)
・TeraTermを使って、armadilloにシリアル接続(操作なし)

<< 操作手順 >>
root@debian:/usr/lib/npreal2/driver# depmod -a
WARNING: could not open /lib/modules/3.14.36-at5/modules.order: No such file or directory
WARNING: could not open /lib/modules/3.14.36-at5/modules.builtin: No such file or directory
root@debian:/usr/lib/npreal2/driver# touch /lib/modules/3.14.36-at5/modules.order
root@debian:/usr/lib/npreal2/driver# touch /lib/modules/3.14.36-at5/modules.builtin
root@debian:/usr/lib/npreal2/driver# depmod -a
root@debian:/usr/lib/npreal2/driver# ./mxloadsvr
rm -f /dev/ttyr00
rm -f /dev/ttyr01
rm -f /dev/ttyr02
rm -f /dev/ttyr03
mknod -m 666 ttyr00 c 33 0
rm -f /dev/cur00
mknod -m 666 cur00 c 38 0
mknod -m 666 ttyr01 c 33 1
rm -f /dev/cur01
mknod -m 666 cur01 c 38 1
mknod -m 666 ttyr02 c 33 2
rm -f /dev/cur02
mknod -m 666 cur02 c 38 2
mknod -m 666 ttyr03 c 33 3
rm -f /dev/cur03
mknod -m 666 cur03 c 38 3
update-rc.d: using dependency based boot sequencing
Complete.

root@debian:/usr/lib/npreal2/driver#

ファイル ファイルの説明
armadillo.log