Armadilloフォーラム

SIOCSIFADDR: No such device

terui.akihiro

2017年10月13日 15時04分

お世話になります。照井です。

これまでは開発キット(ロット140F01,S/N005985)のArmadillo-460基板で開発を進めてきたのですが、同じバイナリコードでも量産ボード(ロット171701,S/N009260)と動作が異なります。
具体的には量産ボードでネットワークチップの認識に失敗しているようです。
お客様向けにコンフィグレーションしたカーネルですと話がややこしくなるため、アルマジロのダウンロードサイトからatmark-dist-20170726.tar.gzとlinux-2.6.26-at27.tar.gzをダウンロードし、開発者ガイド(atmark-dist_developers_guide_ja-1.0.11.pdf)の3章に従ってカーネルをまっさらな状態から作成しました。
この手順で作成した linux.bin.gzをSDカード(/boot)にコピーしてSDカードから起動した場合、以下のような差が出ます。
OKのとき
Setting up networking....
Configuring network interfaces...Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

fec: PHY @ 0x0, ID 0x0007c0f1 -- LAN8720
eth0: link down
Listening on LPF/eth0/00:11:0c:13:0f:90
Sending on LPF/eth0/00:11:0c:13:0f:90
Sending on Socket/fallback
DHCPREQUEST on eth0 to 255.255.255.255 port 67
eth0: link up, 100Mbps, full-duplex
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.1.1
bound to 192.168.1.104 -- renewal in 6693 seconds.
done.
NGのとき
Setting up networking....
Configuring network interfaces...Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

SIOCSIFADDR: No such device
eth0: ERROR while getting interface flags: No such device
eth0: ERROR while getting interface flags: No such device
Bind socket to interface: No such device
Failed to bring up eth0.
done.
なお、SDカードの中身は同一です。ロット171701,S/N009260の基板の出荷状態ではFlashからカーネルlinux-2.6.26-at20が起動するようですが、at20からat27になるまでの間に何かの問題があるのか、それとも私の確認手順で抜けている所があったりするのか見地を得られればと思いメールさせて頂きました。

何か情報などございましたらアドバイスの程、お願い致します。
以上

ファイル ファイルの説明
linux.bin.gz 作成したカーネル
コメント

at_ohsawa

2017年10月13日 16時29分

ログを取った時に使用した S/N005985 と S/N009260 の
bootloader(hermit-at)のバージョンを教えてもらえますか?

terui.akihiro

2017年10月13日 17時50分

お世話になります。照井です。

> ログを取った時に使用した S/N005985 と S/N009260 の
> bootloader(hermit-at)のバージョンを教えてもらえますか?
>
>
どちらも同じバージョンでした。
Hermit-At v2.2.0 (armadillo4x0) compiled at 12:00:50, Jun 04 2013

at_ohsawa

2017年10月16日 13時46分

> どちらも同じバージョンでした。
> Hermit-At v2.2.0 (armadillo4x0) compiled at 12:00:50, Jun 04 2013

ありがとうございます。
hermitのバージョンは問題ありません。

もう1点確認したいのですが
「OKのとき」「NGのとき」というのは、お手持ちの量産ボードでは
OKとNGのどちらも確率的に発生するということでしょうか。

それとも、量産ボードでは常にNGの結果が出力されて、開発キット
ではOKということでしょうか。
もし確率的にOK/NGが再現するのであれば何回の起動に対してNGに
なるのか、頻度を教えてもらえるでしょうか。

また、SDブートではなくuserland含め全てArmadillo-460製品ページに
掲載されているビルド済みの標準イメージファイルにて、
NORフラッシュメモリからの起動でも、本件発生するでしょうか。

terui.akihiro

2017年10月17日 7時58分

お世話になります。照井です。

> それとも、量産ボードでは常にNGの結果が出力されて、開発キット
> ではOKということでしょうか。
OK/NGは上記の意味で使っております。確率的な話ではありません(判り難い表現をしてしまい申し訳ございませんでした)。

量産ボードはとりあえず10台仕入れたのですが、最初の動作確認2台で同様の現象が発生しており、
個体差によるものではないだろう、との判断でご相談させて頂いている次第です。
また、アルマジロのサイト(https://armadillo.atmark-techno.com/armadillo-460/downloads)からバイナリ(linux-a460-1.08.bin.gz)をダウンロードしてみたのですが、同じ現象になります。
at27カーネルをNORから起動させた場合の結果はまだやっておらず、解りませんが、
アットマークテクノさまから出荷されたままのNORからの起動(デフォルトカーネル=2.6.26-at20)では上記のエラーは発生しておりません。

また、ログ出力の載せましたが、かなり手前の方でFastEthernetControllerドライバ(以下FECドライバ)が呼ばれているログが出ている事を確認しましたが、どういうわけか eth0 として登録されておらず、後段の処理で失敗しているようです。
 brd: module loaded
 loop: module loaded
 FEC Ethernet Driver
 PPP generic driver version 2.4.2

未だ断片的な情報しか判っておりません.
以上

> > どちらも同じバージョンでした。
> > Hermit-At v2.2.0 (armadillo4x0) compiled at 12:00:50, Jun 04 2013
>
> ありがとうございます。
> hermitのバージョンは問題ありません。
>
> もう1点確認したいのですが
> 「OKのとき」「NGのとき」というのは、お手持ちの量産ボードでは
> OKとNGのどちらも確率的に発生するということでしょうか。
>
> それとも、量産ボードでは常にNGの結果が出力されて、開発キット
> ではOKということでしょうか。
> もし確率的にOK/NGが再現するのであれば何回の起動に対してNGに
> なるのか、頻度を教えてもらえるでしょうか。
>
> また、SDブートではなくuserland含め全てArmadillo-460製品ページに
> 掲載されているビルド済みの標準イメージファイルにて、
> NORフラッシュメモリからの起動でも、本件発生するでしょうか。

ファイル ファイルの説明
lan.ng_.20171015-01.log NGケース時のログファイル
dmesg-HYEL版bootOK.SN005085.log OKケース時のログファイル

at_ohsawa

2017年10月17日 11時10分

atmark-distではなくdebian userlandを使っているのですね。

そうであれば一度起動したボードから別のボードに、そのまま
debian userlandを書いたSDカードを差し換えるときは、SDカード内の
/etc/udev/rules.d/70-persistent-net.rules
を削除してから起動させてください。

このファイルは初回起動時、eth0 等のネットワークインターフェース名と
MACアドレスの関係が、(次回起動以降USB ethernetアダプタ等が接続されても)
一定になるようにudevによって生成される、ルールを定義したファイルです。

次の状況かと思います。

1, 開発セットでdebian ユーザーランドを SDブート
2, 開発セットの MACアドレスにeth0を割り当てるruleが生成
3, 量産基板に1, のSDカードを挿入しSDブート
4, eth0は開発セットのMACアドレスに割り当て済みのため
量産ボードのMACアドレスはeth1に割り当て
5, ifupdownによるネットワーク設定をeth0に対して試行
6, eth0が存在しないため、ioctlが失敗しエラー