システムを初期化するとき、カーネルまたはBerkeley Socketsシステムはネットワークインタフェースデバイスをどのように識別して初期化しますか?私のRaspberry Pi Zero Wでは、Wi-FiチップはSOCのsdhostアダプタに接続されているデバイスに接続されています。
私は、SDhostデバイスが初期化されると、デバイスドライバがSDhostに接続されているすべてのサブデバイスを調べると思います。パイには1)実際のSDCARDと2)Wi-Fiチップがあります。ソケットコードは、SDhostに接続されているデバイスが実際にWi-Fiデバイスであるかどうかを判断する必要があります。
カスタムカーネルを構築することが私の没落でした。餅はきれいです。 github.com/raspberrypi/linuxの私のraspbianバージョン4.14.83以降がwlan0デバイスを見つけることができません(私はgcc-linaro-arm-linux-gnueabihf-raspbian-x64を使ってUbuntuでクロスコンパイルしています)。ストックカーネルはバージョン4.14.71+です(crosstool-ng-1.22.0-88-g8460611にクロスコンパイルされています)。
SDhostでデバイスの初期化を処理するコードが含まれていることを望み、カーネルコードでdrivers/net/hosts/bcm2835.cとbcm2835-sdhost.cを見つけました。
仕様:pi 0 wは、SDカードホストアダプタを含むBroadcom BCM2538システムオンチップ(SOC)を使用します。 SDIOインターフェイスを介してCypress CYW43455 Wi-Fiチップ(私の意見では)とmicroSDスロットに接続します。
Wi-Fiを見つけることができるカーネルがあるシステムでは、「ls -l /sys/class/net」は以下を表示します。
wlan0 -> ../../devices/platform/soc/20300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0
wlan0はSOCのMMC(SD)ホストにあります。
そうであれば、どのコードスニペットがデバイス(デバイスツリー?)を見て、それがネットワークデバイスかを判断します。またはソケットコードはどのようにデバイスを見つけるのですか? そのコードが見つかったら、Wi-Fiアダプタが見つからない理由を理解できます。