Como o kernel encontra e inicializa dispositivos de interface de rede (wifi)?

0

Ao inicializar o sistema, como o kernel ou o sistema Berkeley Sockets identifica e inicializa os dispositivos de interface de rede? No meu Raspberry Pi Zero W, o chip wifi está conectado como um dispositivo conectado ao adaptador sdhost no SOC.

Eu estou supondo que quando o dispositivo SDhost é inicializado, seu driver de dispositivo investiga cada dispositivo filho conectado ao SDhost - o pi tem 1) um SDCARD real e 2) o chip wifi. De alguma forma, o código Sockets deve descobrir que o dispositivo conectado ao SDhost é na verdade um dispositivo wifi.

Construir um kernel personalizado foi a minha queda. A construção estava limpa. Minha versão 4.14.83+ do raspbian do github.com/raspberrypi/linux não pode encontrar o dispositivo wlan0 (eu estava compilando através do Ubuntu usando o gcc-linaro-arm-linux-gnueabihf-raspbian-x64). O kernel de ações é a versão 4.14.71+ (que eles cruzam compilado com crosstool-ng-1.22.0-88-g8460611)

Eu encontrei nos drivers de código do kernel / net / hosts / bcm2835.c e bcm2835-sdhost.c, esperando que eles contenham código que manipule a inicialização de dispositivos no SDhost.

Específicos: O pi zero w usa um sistema Broadcom BCM2538 no chip (SOC) com e um adaptador host sdcard nele. Isso se conecta pela interface SDIO a um chip wifi Cypress CYW43455 (eu acho) e ao soquete microSD.

Em um sistema com um kernel que pode encontrar o wifi, 'ls -l / sys / class / net' mostra:

wlan0 -> ../../devices/platform/soc/20300000.mmc/mmc_host/mmc1/mmc1:0001/mmc1:0001:1/net/wlan0

que o wlan0 está no host MMC (SD) no SOC.

Então, qual parte do código examina os dispositivos (árvore de dispositivos?) e descobre que é um dispositivo de rede - ou como o código Sockets encontra o dispositivo? Se eu puder encontrar esse código, então eu deveria ser capaz de ver por que ele não encontra o adaptador wi-fi.

    
por Ribo 27.11.2018 / 04:05

0 respostas