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: そのようなファイルやディレクトリはありません
コメント
nagaishi
回答ありがとうございます。
おかげさまで少し進みましたが、別箇所でハマりました。
/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
いつもありがとうございます。
実績について、ご教授いただけないでしょうか?
■質問事項
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
nagaishi
回答ありがとうございます。
>一度ArmadilloをSDカード、Debian GNU/Linuxの環境にして、
>動作するかどうか確認してみてはいかがでしょうか。
確認してみます。
以下を参考にする認識でよろしいでしょうか?
第4章 Armadillo上にDebian GNU/Linuxを構築する
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-3…
at_ito
伊藤です。
> 以下を参考にする認識でよろしいでしょうか?
>
> 第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
ご教示ありがとうございます。
一旦状況報告いたします。
手順に従い、カーネルイメージとルートファイルシステムを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
nagaishi
取り急ぎ、報告です。
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
状況報告です。
何か対処がわかりましたら、ご教示お願いいたします。
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
状況報告です。
何か対処がわかりましたら、ご教示お願いいたします。
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 |
at_takashi.sasayama
2016年10月21日 13時28分
笹山です。
ビルドされようとしているソースは以下でしょうか?
rchovan/npreal2
https://github.com/rchovan/npreal2
でしたら、添付のパッチを適用することにより、以下の手順で npreal2.ko の insmod までは確認できました。
ビルドで生成された、npreal2.ko を Armadillo-440 に転送し insmod を実行