Armadilloでシリアル・イーサネット変換

Armadilloで、seri2ethを使ってシリアル・イーサネット変換を行う事が出来たのでまとめます。

参考にしたページ

前提条件

  • シリアルインターフェースが解放済みである事
  • TCPクライアントが作成済みである事
  • TFTPブートの設定済みである事

1.seri2ethの組み込み

Armadilloにはシリアル・イーサネット変換を行うアプリ"seri2eth"が付属しているので、組み込みを行う。

Main Menu

Kernel/Library/Defaults Selection  ---> を<Select>
Customize Vendor/User Settings を<Select>
< Exit > をEnter
< Exit > をEnter

Do you wish to save your new kernel configuration? 
で、< Yes > をEnter

Userland Configuration

Network Applications  ---> を<Select>
seri2eth を<Select>

< Exit > をEnter
< Exit > をEnter

Do you wish to save your new kernel configuration? 
で、< Yes > をEnter

設定変更が終わったらmakeを実行します。

2.serial.confの作成

ATDE上でseri2ethの設定ファイルを作成する

atmark@atde3:~/source/20100603/atmark-dist$ vi romfs/etc/config/serial.conf

中身は以下の通り。

SOCKPROTO 0
CONNECTADDR 0.0.0.0
BAUDRATE 115200
DATALEN 3
PARITY 0
STOPBIT 0
FLOWCTRL 0
PORTNO 21347

編集が終わったらイメージファイルを作成し、Armadilloに転送する。

atmark@atde3:~/source/20100603/atmark-dist$ make image

3.TeraTermの設定変更

端末の設定を変更します。

  • 送信の改行コード:CR+LF
  • ローカルエコー:チェック

4.seri2ethの実行

Armadilloにtelnetで接続してrootにsuし、seri2ethを起動します。

atmark@atde3:~/source/20100603/atmark-dist$ telnet 192.168.1.119
Trying 192.168.1.119...
Connected to 192.168.1.119.
Escape character is '^]'.

atmark-dist v1.26.1 (AtmarkTechno/Armadillo-420)
Linux 2.6.26-at9 [armv5tejl arch]

armadillo420-0 login: guest
[guest@armadillo420-0 (ttyp0) ~]$ su -  
Password: 
[root@armadillo420-0 (ttyp0) ~]# seri2eth -d /dev/ttymxc1

5.TCPクライアントの実行

以前作成したTCPクライアントをネットワークにつながるところで起動します。

コードは以下の通り。

require 'socket'

host = if ARGV[0] then ARGV[0] else "localhost" end
port = if ARGV[1] then ARGV[1] else "echo" end
sock = TCPSocket.open(host, port)

while msg = STDIN.gets
  sock.write(msg)
  print sock.gets
end
sock.close


起動します。

C:\Users\toshifusa\Documents\NetBeansProjects\Armadillo\lib>ruby tcpclient.rb 192.168.1.119 21347

まずは、こちらからメッセージを送信。

aaa

TeraTerm側から返信。

bbb


交互に繰り返した結果は以下のようになります。

TCPクライアント側

C:\Users\toshifusa\Documents\NetBeansProjects\Armadillo\lib>ruby tcpclient.rb 19
2.168.1.119 21347
aaa
bbb
ccc
ddd

TeraTerm

aaa
   bbb
ccc
   ddd

つまずいたポイント

  • seial.confファイルを作らないとデフォルトのボーレートで起動しちゃいます
  • "-d /dev/ttymxc1"オプションを指定してseri2ethを起動しないと、デフォルトのttyS0と接続しちゃいます
  • TeraTermでローカルエコーの設定がないと、入力した文字が表示されなくて不便です
  • TeraTermで送信の改行コードをCR+LFにしておかないと、エンターキーを押してもイーサネット側へ送信しません