[Armadillo:00139] Re: Armadillo-J   /rc.d/rc.start/ にて自作プログラムを起動するとシリアル通信が上手くできません。

Fumito Morishima email@hidden
2005年 2月 18日 (金) 11:03:09 JST


森島です。

> アルマジロは、
> telnetのログイン後のシリアルの設定と
> /etc/rc.start/ 呼び出し時では何か留意する
> 違いがあるのでしょうか?


違いは無いはずですが・・・

実際に私も open->write->read->close を2回行うプログラムを作成し、
起動スクリプトから実行させてみましたが、エラーは発生しませんでした。

シリアルを使用するにあたり、

1. カーネルオプションで console=null を指定

2. /etc/inittab の、::respawn:/bin/getty ... 行をコメントアウト

3. /etc/inittab の、::respawn:/bin/sh 行のコメントアウトを解除

上記3点を行っているか、念のため確認してもらえますか?


長家 正和 wrote:

>ながやです。
>
>返信ありがとうございます。
>
>下記の件通り、起動スクリプトから呼べなくし
>telnetでログイン後以下の2通りを試しました。
># /bin/sh /etc/rc.d/rc.start/bak.95.jst
># ./(自作プログラム) &
>この方法ですと、正常に動作しています。
>
>しかし、相変わらず、
>起動時 /etc/rc.sysinit からの実行はうまくいきません。
>
>あのあと、試行錯誤した結果。
>誤作動を引き起こしている箇所が違うことがわかりました。
>正確には、シリアルの2回目のOpenの箇所ではなく、
>その直後の通信部分でした。大変失礼いたしました。
>-------------------------------------------- 
>1 シリアルを開く(2回目)
>2 write() (コマンド送出)
>3 read()  (結果受信)   ← で正常時と違うデータが返る
>4 エラー処理にて終了
>   このとき /dev/ttyS0 が開放されない模様
>
>---------------------------------------------
>
>私の作成したソースにバグを含んでおり
>telnetでログインしたとき、たまたまそれが露呈してない
>可能性が大いにありえるのですが・・
>
>アルマジロは、
>telnetのログイン後のシリアルの設定と
>/etc/rc.start/ 呼び出し時では何か留意する
>違いがあるのでしょうか?
>
>
>
>
>
>
>
>
>
>
>
>
>telnet ログイン後
>
>
>
>
>
>
>--- Fumito Morishima <email@hidden> からのメ
>ッセージ:
>  
>
>>森島です。
>>
>>以下のことを試してもらえますか?
>>
>>1.
>>/etc/rc.d/rc.start/rc.95.jst
>>>>/etc/rc.d/rc.start/bak.95.jst
>>に名前を変える
>>(これで起動時に実行されないはず)
>>
>>2.
>>Armadillo-Jを起動し、Telnetでログイン
>>
>>3.
>>コマンドラインから /etc/rc.d/rc.start/bak.95.jst
>>を実行
>>
>>
>>長家 正和 wrote:
>>
>>    
>>
>>>ながやと申します。
>>>
>>>開発環境を以下に示します
>>>------------------------------------------------
>>>Armadillo-J [PN(1p)*************-01P]
>>>VineLinux 2.6r4
>>>arm-elf-tools-20030314.sh  // こんぱいら?
>>>uClinux-dist-aj20050105.tar.gz  // そーす
>>>-----------------------------------------------
>>>
>>>Armadillo-J
>>>      
>>>
>>にて、シリアルを介して接続された機器を、
>>    
>>
>>>制御するプログラムを作成しております。
>>>
>>>私が作成したプログラムを、イメージにし、転送します。
>>>そして
>>>      
>>>
>>telnetにてログイン後、起動しますと、無事シリアル
>>    
>>
>>>と通信し正常に動作します。
>>>
>>>しかしながら、
>>>/etc/rc.d/rc.start/ 内に
>>>      
>>>
>>[rc.95.jst]というシェルを書き
>>    
>>
>>>--------------------------------
>>>#!/bin/sh
>>>
>>>PATH=/bin:/sbin:/usr/bin:/usr/sbin
>>>TZ=JST-9
>>>export PATH TZ
>>>
>>>echo -n "Starting jst: "
>>>/bin/jst2000 -mas &
>>>if [ $? = 0 ]; then echo "done"; else echo
>>>      
>>>
>>"failed"; fi
>>    
>>
>>>-------------------------------
>>>イメージを転送し、電源をいれたところ
>>>動作せず、シリアルの通信のところでエラーが生じていま
>>>      
>>>
>す。
>  
>
>>>発生したエラーは以下の模様です。
>>>------------------------------
>>>/dev/ttyS0: Invalid argument
>>>------------------------------
>>>
>>>発生したタイミングですが、
>>>私のプログラムは一度の起動で 
>>>シリアルのOpenを2回行います。
>>>2回目の Openで発生しております。
>>>[シリアルOpen]
>>>>>>[処理]
>>>>>>[シリアルClose]
>>>>>>[ソケット通信]
>>>>>>[シリアルOpen] (エラー発生)
>>>Openの引数は次のとおりです。
>>>-------------------------------------
>>>fd = open(Modemdevice, O_RDWR | O_NOCTTY );
>>>-------------------------------------
>>>シリアル /dev/ttyS0 の利用は、このMLのログを参考に
>>>/etc/inittabの ある一行をコメントアウトしています。
>>>
>>>これは,telnet時(正常動作時)にたまたま私のプログラムが
>>>動いただけと考えたほうがよろしいでしょうか?
>>>
>>>原因として、現在いろいろ探しているのですが、
>>>いきずまったためメールさせていただきました。
>>>どうかご教授お願いします。
>>>
>>>Nagaya Msakazu
>>>
>>>
>>>__________________________________
>>>Let's Celebrate Together!
>>>Yahoo! JAPAN
>>>http://pr.mail.yahoo.co.jp/so2005/
>>>
>>>_______________________________________________
>>>armadillo mailing list
>>>email@hidden
>>>      
>>>
>>http://lists.atmark-techno.com/mailman/listinfo/armadillo
>>    
>>
>>>      
>>>
>>_______________________________________________
>>armadillo mailing list
>>email@hidden
>>
>>    
>>
>http://lists.atmark-techno.com/mailman/listinfo/armadillo
>
>
>__________________________________
>Let's Celebrate Together!
>Yahoo! JAPAN
>http://pr.mail.yahoo.co.jp/so2005/
>
>_______________________________________________
>armadillo mailing list
>email@hidden
>http://lists.atmark-techno.com/mailman/listinfo/armadillo
>  
>




armadillo メーリングリストの案内