atom
2014年12月16日 13時41分
お世話になっております。佐藤です。
seri2eth を試したところ、どうしても上手くいかなかったのでご教授ください。
よろしくお願いします。
・開発環境
ターゲット : Armadillo-460 (ATDE3 使用)
ユーザーランド : atmark-dist-20141128
カーネル : linux-3.6.36-at20
・実際に行った手順 (ATDE 上での作業)
(1) "make menuconfig" の実行
Kernel/Library/Defaults Selection --->
Customize Vendor/User Settings にチェックを付ける
Userland Configurationの画面にて
Network Applications --->
seri2eth にチェックを付ける
上記終了後 "make romfs" の実行
(2) serial.conf ファイルの作成
atmark-dist/romfs/etc/default/ に "serial.conf" を作成
ファイルの内容は以下の通り
SOCKPROTO 0
CONNECTADDR 0.0.0.0
BAUDRATE 115200
DATALEN 3
PARITY 0
STOPBIT 0
FLOWCTRL 0
PORTNO 21347
(3) 使用ポートの設定
標準コンソールとして「CON4」を使用できるようにしたままとしたいので
「CON19」を使用可能となるように設定 (CON4 のポート開放は実施せず)
atmark-dist/romfs/etc/default/ に "rc.local" を作成
ファイルの内容は以下の通り
seri2eth -d /dev/ttymxc3
上記ファイル作成後、実行権限の追加を実施
chmod 777 romfs/etc/default/rc.local
(5) ネットワークの設定実施
atmark-dist/romfs/etc/default/ にある "interfaces" を編集
以下のように設定を変更
iface eth0 inet static
address 192.168.139.100
netmask 255.255.255.0
(6) "make image" の実行 (イメージファイルの作成)
作成したイメージファイルを公開用ディレクトリにコピー
sudo cp /home/atmark/atmark-dist/images/*.gz /var/www/
・実際に行った手順 (Armadiilo 上での作業)
(1) カーネル及びユーザーランドのイメージファイルコピー
netflash -bknsr /dev/flash/kernel http://192.168.139.101/linux.bin.gz
netflash -bknsr /dev/flash/userland http://192.168.139.101/romfs.img.gz
reboot
(2) "flatfsd -w" の実行
"flatfsd -w" の実行後、Armadillo の再起動を行う
現時点での状況
TeraTerm を使用して接続しようとした場合に「接続が拒否されました」となる
作業用PCからエクスプローラーでArmadilloのデフォルトページへのアクセスは可能
/etc/config/ 内にATDE上での作業にて作成したファイルと同じものが出来ているのは確認済み
Telnet で下記の設定で接続しようとしても接続が出来ない
ホスト : 192.168.139.100
ポート : 21347
起動時のログを見ると
/etc/config/rc.local: 1: seri2eth: not found
とログがあるので"seri2eth"が正しく読み込めていない or ATDE上での作業で不足がありイメージファイルに
正しく反映されていないのではないかと考えられるのですが、どこの手順がまずいのかがわかりません。
以上、長文となりますたがよろしくお願いします。
コメント
atom
返信ありがとうございます。
"make romfs" => "make" と変更することにより、「seri2eth」を使用して
TCP/IP <=> UART での通信を確認出来ました。
以下、追加での質問となるのですが、
① Armadillo 上でネットワークからイメージのダウンロード完了して"reboot"を実行し再起動を行った後に
"flatfsd コマンド"必要になるかと思っていたのですが"flatfsd コマンド"を使用せずにATDE上での設定が
有効とり"seri2eth"が起動されていました。
この場合、"flatfsd コマンド"は不要なのでしょうか?
② 現在の状況だと、ログインしなくても"seri2eth"が自動的に起動するようになっているのですが、
"seri2eth"を終了するにはどのような手順を踏めばよいのでしょうか?
現時点では、終了方法が不明のためArmadilloへのログインが出来ずイメージの書き換えなども出来ない状態です。
③ 実際に製品の書き込むイメージファイルでもログインしなくても自動的に起動する必要があります。
実行させるプログラムは別途作成する必要があるのですが、"seri2eth"と同様にログインせずに自動的に起動
できるようにするにはどのように設定をすればいいのでしょうか?
ATDE上からの設定、Armadillo上で直接それぞれ設定方法があればその方法を教えてください。
以上、よろしくお願いします。
atom
atom
at_ohsawa
> この場合、"flatfsd コマンド"は不要なのでしょうか?
atom様は、先に一度、flatfsd -wで /etc/defaultの内容をNOR Flashメモリのconfig領域に
書き込んでいます。従って /etc/default の内容を変えていないのであれば、再度の書き込みは
不要です。
Armadilloはlinuxのブート時にNOR Flashメモリ上の(kernel,userlandとは別の)config領域
から読み出したデータを /etc/config に展開しています。
一方、flatfsd -w は、ramdisk上の/etc/default/を NOR Flashメモリ上の config領域に
書き込むコマンドです。
NOR Flash上のデータは、flatfsdやhermitのdownloadコマンド、netflash等で上書きしない
限り永続的に残ります。
参考: ソフトウェアマニュアル: 表3.12 Armadillo-440/460 フラッシュメモリ メモリマップ
http://manual.atmark-techno.com/armadillo-4x0/armadillo-400_series_soft…
> Armadilloへのログインが出来ず
Running local start script (/etc/config/rc.local).
で止っている状態ですね。
上記の表示のまま Ctrl+Cを押すとseri2ethが終了します。
rc.localに
-----
seri2eth -d /dev/ttymxc3
-----
のみ書いてあるので、seri2ethが起動ログを表示している
ttymxc1を掴んだままになっています。
-----
seri2eth -d /dev/ttymxc3 &
-----
のように最後に"&"を書いてバックグラウンドで実行すると良いです。
> "seri2eth"と同様にログインせずに自動的に起動
seri2eth同様に、rc.localに書けば起動します。
もしsomething_your_program1 と something_your_program2という
名前のプログラムを起動したければ、次のように書く事ができます。
seri2eth -d /dev/ttymxc3 & something_your_program1 & something_your_program2 &
自作したアプリケーションをユーザーランドに追加する方法は
Armadillo実践開発ガイド 第2部 の次の章を中心に解説しています。
7.6.3. アプリケーションプログラムの追加
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…
atom
at_ohsawa
2014年12月16日 15時18分
> 上記終了後 "make romfs" の実行
ここでは、seri2ethのバイナリを新たにビルドする必要があるので、
make romfs ではなく make subdirs romfs を行ってください。
ここで、seri2ethのバイナリが作られなかったため、ユーザーランド
イメージ(romfs.img.gz)にseri2ethが入っていない状態です。
もしmakeの実行時間が気にならないのであれば、romfs subdirs等の
ターゲットを何も指定せずに make を実行すると確実に必要なビルド
が行われます。