Armadillo-J

「Armadillo-J」の編集履歴(バックアップ)一覧はこちら

Armadillo-J」(2006/02/17 (金) 11:20:55) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

ちいさいちいさいLinux搭載マイコン。 ハード的には、DIGI Connect MEを用いている模様(現物にはしっかり書いてある)。 *tips **DHCP (dhcpcd) dhcpcd でアドレスが更新されたらどうなる? -TCPコネクションが連続しているときはブチ切られる。 -都度コネクション張りなおすものは(偶然繋がってるときは前述のとおり) 新たに繋ぐとき、新しいアドレスで接続している。特に不具合無し。 dhcpcd 動作状態と、ifconfigの出力 -ブートして、dhcpcd起動直後(他のユーザプログラムはまだ無いのでここから)  →eth0 (IPアドレスは 無い), lo -dhcpcdタイムアウトして終了後  →loのみ -dhcpcdが成功した  →eth0(IPアドレス有り), lo この3状態を取っている。(dhcpcd前はloも無いのか?は未確認) オプション -t の挙動 取得の待ち時間指定。デフォルト60、単位=秒。 取れないときに、指定の時間まで待たずに抜けてくる。 3600(1時間待たせるつもり)→20分は経たないで抜けている 1000→12分以内(飛び飛びでみてるので詳細不明) 330→5:30 340→5:40 999→11:44 704→5:30 600→5:30 どうやら~330が適用範囲らしい。 前述のコマンドライン解析に拠れば、signed longな幅で読んでるのだが。 dhcpcdのソースの場所(coLinuxにインストールした状態で) /home/(インストール先ユーザ)/uClinux-dist/user/dhcpcd-new -new の付かないのもある。 (コマンドライン解析を見て-tの範囲を確認した…が…実際は後述のとおり) dhcpcdの動作 # dhcpcd & 110 # dhcpcd & **** dhcpcd: already running ←走っている(=タイムアウト前・正常取得)と 受け付けない **** dhcpcd112 # : if not then delete /var/run/dhcpcd-eth0.pid file # dhcpcd & **** dhcpcd: already running **** dhcpcd: if not then delete /var/run/dhcpcd-eth0.pid file 113 # dhcpcd **** dhcpcd: already running **** dhcpcd: if not then delete /var/run/dhcpcd-eth0.pid file # dhcpcd -k # ps (略。-kでバックグラウンドプロセスはkillされる。) # dhcpcd (コンソールを取りっぱなし。タイムアウトまでなーんにもできない。^C,^Dも効かない。 telnetをブチ切るか…) **遠隔プログラム更新(netflash) スピード Hermitで書くより劇的に早い、ってことはありません。 どっちでやっても結局5分近く掛かるのは同じです。 可能なタイプは限られています AJ010(古い)では出来ません。なぜ? 初めAJ010を入手してがんばってみたのですが全然ダメ。 追加でAJ020を購入したので試してみたら、あっさり。 パラメータ指定間違えると大変。 存在しないファイルを指定されると、 いつまででも待っている。しかしそのファイルをサーバに登場させても 拾ってくれない。 要するに最初に失敗するとアウト。リブートしなければならない。 (ハード的に。他のプロセスを殺してからデータを取りに行くから、  コマンドラインも使えないし、ソフト的ワッチドッグも出来ない) オプションに注意 -k をつけてはいけない。 画面に何か出て楽しいんだけど、代わりに 打率5割(テキトー。9割までは行かない)で失敗します。 失敗した後が、リブートしてた・そのまま固まってた、どっちかは忘れました。 どちらにせよ泣けてきます。5分近く掛かるので。 **リブート # kill 1 ※Linux全般に適用は出来ない。 普通はkillできない(失敗しないが停まらない)、shutdown -r を行う。 これ(kill 1)が動いたことの確認手順: (ログイン) (rootになる) # ledctrl off ←内部で点灯している赤ランプを消灯させます。  点灯は、現在のファームでは、標準パッケージでの“起動完了”タイミング  (ネットワークが立ち上がって、ログインできるタイミング)です。  他のところでは一切点灯させてません。 # cd /etc/cofig # rm dhcpcd-eth0.cache # rm dhcpcd-eth0.info # rm appparam # ls ←消えてるのを確認 # kill 1 telnetが切断される。 しばらく経つとLED点灯する。← つまり「起動完了タイミングを通過」。 なおこれは他のところでは一切点灯させていない。 (telnet接続-DHCPサーバはたいていキャッシュしてるので、多分同じIP) (ログイン) (rootになる) # cd /etc/config # ls  消したはずの3つのファイルを含めて、全ファイルがそろっている  (IP固定ならdhcp* はありませんが)  dhcpcd-* があるので、DHCP引きなおした(その結果のキャッシュ用ファイル)  appparam があるので、フラッシュメモリからの復元が正しく出来ている **NVRAMな使い方をするディレクトリと操作 場所 /etc/config 操作するコマンド flatfsd 必ず/etc/configの「合計サイズ」(ホントはもう少し少ないだろうが) は64kB以下とすること。 64kB超えて保存(killall -USR1 flatfsd)すると、 起動時に/etc/configがdefaultかゴミになる。 (もっと大きいうちの64kB分しか残らないためか?) **NTP msntpの動き ネットワーク生きてないときどうなる? # msntp -r -P no 192.168.(ほげふが) msntp: unable to send NTP packet msntp: Network is unreachable # ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 iB) TX bytes:0 (0.0 iB) # ps (dhcpcd無い) # dhcpcd & # ifconfig eth0 Link encap:Ethernet HWaddr 00:40:9D:26:(もげむが) UP BROADCAST NOTRAILERS RUNNING MTU:1500 Metric:1 (eth0の残りとloは略) ↑IP取得出来ていない状態 # ps PID TTY Uid Size State Command 1 root 0 S init (略) 122 ttyS0 root 0 S dhcpcd ←有る 130 ttyS0 root 0 S dhcpcd ← 132 ttyS0 root 0 R ps # msntp -r -P no 192.168.148.1 msntp: not found ←インターフェース活きてないから? (しばらくして:dhcpcdがタイムアウトのためeth0消滅) # msntp -r -P no 192.168.(ほげふが) msntp: unable to send NTP packet msntp: Network is unreachable msntp の裏コマンド:-> ソースの main.c から。manページには無いオプションが有る。 これで時計あわせはばっちりだ! こう使うらしい: /sbin/msntp -r -P no 192.168.hoge.fuga msntp [ --help | -h | -? ] [ -v | -V | -W ] [ -B [ period ] | -S | -q [ -f savefile ] | [ { -r | -a } [ -P prompt ] [ -l lockfile ] ] [ -c count ] [ -e minerr ][ -E maxerr ] [ -d delay | -x [ separation ] [ -f savefile ] ] [ address(es) ] ] (略) 'prompt' is the maximum clock change that will be made automatically. Acceptable values are from 1 to 3600, and the default is 30. If the program is being run interactively, larger values will cause a prompt. The value may also be 'no', and the change will be made without prompting. **パッチを当てよう Ethernetドライバ更新 1 coLinuxにpatchが無いので取ってきて、作る。 a 探してダウンロードする。 http://directory.fsf.org/ で patchを検索したら、 http://directory.fsf.org/patch.html が出てきた。このページから patch-2.5.4.tar.gz をとってくる。 b コンパイルする。 http://www.iwakimu.ac.jp/~yoshida/solaris2.6/patch-2.5.html を参考に。 windowsのsharedに取ってきたファイルを置き、 # tar zxvf /mnt/smb/patch-2.5.4.tar.gz # cd patch-2.5.4/ ←解ってないのでlsしてこのディレクトリを確認しながら。 # ./configure ↓ココから4行は常套句らしい。 # make # make check # make install | tee install.log ← 参考ページでは |& で繋いでたがエラー 出たので | にしてみた。 # patch ^C ←stdinで受けるので、中断。受けてくれるので「patch」というプログラム が実行パスに出来たことを確認。 # patch -v ← 一応、バージョン確認。 2 使う # cd ~aj1/uClinux-dist/ # find * | grep ns7520 ←当てたいパッチは「ns7520」なんちゃら、という ファイル名なので。要するにどこにあるか解ってないので探す。 # cd linux-2.4.x/drivers/net/ ←あったあった。そこへGO! # patch < /mnt/smb/fix2_ns7520_eth.patch そっけなく、「patching file ns7520_eth.c」と出ておしまい。 makeしたらちゃんと変わるかな。 3 リンク先 http://directory.fsf.org/ http://directory.fsf.org/patch.html http://www.iwakimu.ac.jp/~yoshida/solaris2.6/patch-2.5.html あと上に出してないが、これも参考にした: http://www.ecip.shikoku-u.ac.jp/~togawa/Memo/Solaris/little_tools.html *関連 [[DHCP]]
ちいさいちいさいLinux搭載マイコン。 ハード的には、DIGI Connect MEを用いている模様(現物にはしっかり書いてある)。 *tips **DHCP (dhcpcd) dhcpcd でアドレスが更新されたらどうなる? -TCPコネクションが連続しているときはブチ切られる。 -都度コネクション張りなおすものは(偶然繋がってるときは前述のとおり) 新たに繋ぐとき、新しいアドレスで接続している。特に不具合無し。 dhcpcd 動作状態と、ifconfigの出力 -ブートして、dhcpcd起動直後(他のユーザプログラムはまだ無いのでここから)  →eth0 (IPアドレスは 無い), lo -dhcpcdタイムアウトして終了後  →loのみ -dhcpcdが成功した  →eth0(IPアドレス有り), lo この3状態を取っている。(dhcpcd前はloも無いのか?は未確認) オプション -t の挙動 取得の待ち時間指定。デフォルト60、単位=秒。 取れないときに、指定の時間まで待たずに抜けてくる。 3600(1時間待たせるつもり)→20分は経たないで抜けている 1000→12分以内(飛び飛びでみてるので詳細不明) 330→5:30 340→5:40 999→11:44 704→5:30 600→5:30 どうやら~330が適用範囲らしい。 前述のコマンドライン解析に拠れば、signed longな幅で読んでるのだが。 dhcpcdのソースの場所(coLinuxにインストールした状態で) /home/(インストール先ユーザ)/uClinux-dist/user/dhcpcd-new -new の付かないのもある。 (コマンドライン解析を見て-tの範囲を確認した…が…実際は後述のとおり) dhcpcdの動作 # dhcpcd & 110 # dhcpcd & **** dhcpcd: already running ←走っている(=タイムアウト前・正常取得)と 受け付けない **** dhcpcd112 # : if not then delete /var/run/dhcpcd-eth0.pid file # dhcpcd & **** dhcpcd: already running **** dhcpcd: if not then delete /var/run/dhcpcd-eth0.pid file 113 # dhcpcd **** dhcpcd: already running **** dhcpcd: if not then delete /var/run/dhcpcd-eth0.pid file # dhcpcd -k # ps (略。-kでバックグラウンドプロセスはkillされる。) # dhcpcd (コンソールを取りっぱなし。タイムアウトまでなーんにもできない。^C,^Dも効かない。 telnetをブチ切るか…) **遠隔プログラム更新(netflash) スピード Hermitで書くより劇的に早い、ってことはありません。 どっちでやっても結局5分近く掛かるのは同じです。 可能なタイプは限られています AJ010(古い)では出来ません。なぜ? 初めAJ010を入手してがんばってみたのですが全然ダメ。 追加でAJ020を購入したので試してみたら、あっさり。 パラメータ指定間違えると大変。 存在しないファイルを指定されると、 いつまででも待っている。しかしそのファイルをサーバに登場させても 拾ってくれない。 要するに最初に失敗するとアウト。リブートしなければならない。 (ハード的に。他のプロセスを殺してからデータを取りに行くから、  コマンドラインも使えないし、ソフト的ワッチドッグも出来ない) オプションに注意 -k をつけてはいけない。 画面に何か出て楽しいんだけど、代わりに 打率5割(テキトー。9割までは行かない)で失敗します。 失敗した後が、リブートしてた・そのまま固まってた、どっちかは忘れました。 どちらにせよ泣けてきます。5分近く掛かるので。 **リブート # kill 1 ※Linux全般に適用は出来ない。 普通はkillできない(失敗しないが停まらない)、shutdown -r を行う。 これ(kill 1)が動いたことの確認手順: (ログイン) (rootになる) # ledctrl off ←内部で点灯している赤ランプを消灯させます。  点灯は、現在のファームでは、標準パッケージでの“起動完了”タイミング  (ネットワークが立ち上がって、ログインできるタイミング)です。  他のところでは一切点灯させてません。 # cd /etc/cofig # rm dhcpcd-eth0.cache # rm dhcpcd-eth0.info # rm appparam # ls ←消えてるのを確認 # kill 1 telnetが切断される。 しばらく経つとLED点灯する。← つまり「起動完了タイミングを通過」。 なおこれは他のところでは一切点灯させていない。 (telnet接続-DHCPサーバはたいていキャッシュしてるので、多分同じIP) (ログイン) (rootになる) # cd /etc/config # ls  消したはずの3つのファイルを含めて、全ファイルがそろっている  (IP固定ならdhcp* はありませんが)  dhcpcd-* があるので、DHCP引きなおした(その結果のキャッシュ用ファイル)  appparam があるので、フラッシュメモリからの復元が正しく出来ている **NVRAMな使い方をするディレクトリと操作 場所 /etc/config 操作するコマンド flatfsd 必ず/etc/configの「合計サイズ」(ホントはもう少し少ないだろうが) は64kB以下とすること。 64kB超えて保存(killall -USR1 flatfsd)すると、 起動時に/etc/configがdefaultかゴミになる。 (もっと大きいうちの64kB分しか残らないためか?) **NTP msntpの動き ネットワーク生きてないときどうなる? # msntp -r -P no 192.168.(ほげふが) msntp: unable to send NTP packet msntp: Network is unreachable # ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 iB) TX bytes:0 (0.0 iB) # ps (dhcpcd無い) # dhcpcd & # ifconfig eth0 Link encap:Ethernet HWaddr 00:40:9D:26:(もげむが) UP BROADCAST NOTRAILERS RUNNING MTU:1500 Metric:1 (eth0の残りとloは略) ↑IP取得出来ていない状態 # ps PID TTY Uid Size State Command 1 root 0 S init (略) 122 ttyS0 root 0 S dhcpcd ←有る 130 ttyS0 root 0 S dhcpcd ← 132 ttyS0 root 0 R ps # msntp -r -P no 192.168.148.1 msntp: not found ←インターフェース活きてないから? (しばらくして:dhcpcdがタイムアウトのためeth0消滅) # msntp -r -P no 192.168.(ほげふが) msntp: unable to send NTP packet msntp: Network is unreachable msntp の裏コマンド:-> Armadillo-JはRTCを積んでいないので、中のソフトにとっては、常に1970年1月1日9時0分から世界が始まる。 で。普通に使うと時間が違いすぎて(今2006年、36年の差)スクリプトに組み込むと合わせてくれない。 これのためにNTPDATEに乗り換えようかとだいぶ悩んだ(真っさらのソースからコンパイル….)が、 msntpのソース見たら、manページには無いオプションが有る。 これで時計あわせはばっちりだ! こう使うらしい: /sbin/msntp -r -P no 192.168.hoge.fuga msntpの main.cより。 msntp [ --help | -h | -? ] [ -v | -V | -W ] [ -B [ period ] | -S | -q [ -f savefile ] | [ { -r | -a } [ -P prompt ] [ -l lockfile ] ] [ -c count ] [ -e minerr ][ -E maxerr ] [ -d delay | -x [ separation ] [ -f savefile ] ] [ address(es) ] ] (略) 'prompt' is the maximum clock change that will be made automatically. Acceptable values are from 1 to 3600, and the default is 30. If the program is being run interactively, larger values will cause a prompt. The value may also be 'no', and the change will be made without prompting. **パッチを当てよう Ethernetドライバ更新 1 coLinuxにpatchが無いので取ってきて、作る。 a 探してダウンロードする。 http://directory.fsf.org/ で patchを検索したら、 http://directory.fsf.org/patch.html が出てきた。このページから patch-2.5.4.tar.gz をとってくる。 b コンパイルする。 http://www.iwakimu.ac.jp/~yoshida/solaris2.6/patch-2.5.html を参考に。 windowsのsharedに取ってきたファイルを置き、 # tar zxvf /mnt/smb/patch-2.5.4.tar.gz # cd patch-2.5.4/ ←解ってないのでlsしてこのディレクトリを確認しながら。 # ./configure ↓ココから4行は常套句らしい。 # make # make check # make install | tee install.log ← 参考ページでは |& で繋いでたがエラー 出たので | にしてみた。 # patch ^C ←stdinで受けるので、中断。受けてくれるので「patch」というプログラム が実行パスに出来たことを確認。 # patch -v ← 一応、バージョン確認。 2 使う # cd ~aj1/uClinux-dist/ # find * | grep ns7520 ←当てたいパッチは「ns7520」なんちゃら、という ファイル名なので。要するにどこにあるか解ってないので探す。 # cd linux-2.4.x/drivers/net/ ←あったあった。そこへGO! # patch < /mnt/smb/fix2_ns7520_eth.patch そっけなく、「patching file ns7520_eth.c」と出ておしまい。 makeしたらちゃんと変わるかな。 3 リンク先 http://directory.fsf.org/ http://directory.fsf.org/patch.html http://www.iwakimu.ac.jp/~yoshida/solaris2.6/patch-2.5.html あと上に出してないが、これも参考にした: http://www.ecip.shikoku-u.ac.jp/~togawa/Memo/Solaris/little_tools.html *関連 [[DHCP]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。