Desabilitando a negociação automática PHY durante o processo de inicialização do Linux no Xilinx

9

Estou tentando instalar o Linux em uma placa FPGA. O sabor do linux é petalinux para chips Xilinx FPGA.

O atual Xilinx SoC tem um processador Cortex A9 e uma lógica de hardware programável, ou seja, FPGA. Capturei a mensagem de inicialização no terminal:

.....................U-boot time.......................partition.......................................................

[Fri Dec 27 15:18:53.108 2013] Copying Linux from SD to RAM...
[Fri Dec 27 15:18:53.129 2013] Device: SDHCI
[Fri Dec 27 15:18:53.129 2013] Manufacturer ID: 2
[Fri Dec 27 15:18:53.129 2013] OEM: 544d
[Fri Dec 27 15:18:53.129 2013] Name: SA04G 
[Fri Dec 27 15:18:53.129 2013] Tran Speed: 25000000
[Fri Dec 27 15:18:53.129 2013] Rd Block Len: 512
[Fri Dec 27 15:18:53.129 2013] SD version 1.10
[Fri Dec 27 15:18:53.129 2013] High Capacity: Yes
[Fri Dec 27 15:18:53.129 2013] Capacity: 3951034368
[Fri Dec 27 15:18:53.129 2013] Bus Width: 1-bit
[Fri Dec 27 15:18:53.129 2013] reading zImage
[Fri Dec 27 15:18:59.367 2013] 
[Fri Dec 27 15:18:59.367 2013] 2304852 bytes read
[Fri Dec 27 15:18:59.381 2013] reading devicetree.dtb
[Fri Dec 27 15:18:59.475 2013] 
[Fri Dec 27 15:18:59.475 2013] 2709 bytes read
[Fri Dec 27 15:18:59.491 2013] reading ramdisk8M.image.gz
[Fri Dec 27 15:19:06.121 2013] 
[Fri Dec 27 15:19:06.121 2013] 2501584 bytes read
[Fri Dec 27 15:19:06.144 2013] Trying to set up GEM link...
[Fri Dec 27 15:19:06.144 2013] Resetting PHY...
[Fri Dec 27 15:19:06.144 2013] 
[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive

Estou especificamente interessado nestas linhas:

[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive

Pergunta # 1: Eu acho que essas linhas são para TCP / IP?

Como pode ser visto, cerca de 12 segundos são desperdiçados aqui. O problema é que preciso de um sistema de inicialização rápida e não precisaria de nenhum TCP / IP no aplicativo final.

O Linux que eu instalei até agora estava usando uma imagem pré-construída fornecida pela Xilinx. Agora, para se livrar da parte TCP / IP (já que eu não preciso disso, e se eu não tiver no sistema operacional, esses 12 segundos podem ser salvos - isso é o meu entendimento), estou planejando construir minha próprio kernel Linux.

Então eu baixei o código-fonte do PetaLinux, assumindo que eu teria que cruzar a compilação do meu sistema host.

Pergunta # 2: Mas eu quero saber como posso excluir a parte TCP / IP da fonte do sistema operacional, para que quando o SO for inicializado, ele nunca execute essas rotinas TCP / IP que consomem tempo? ?

Pergunta # 3: Eu também não tenho certeza se na imagem pré-construída podemos ter alguma opção para desativar a parte TCP / IP?

Meu objetivo é livrar-se dessas linhas durante o processo de inicialização:

[Fri Dec 27 15:19:06.144 2013] PHY reset complete.
[Fri Dec 27 15:19:06.144 2013] Waiting for PHY to complete auto-negotiation...
[Fri Dec 27 15:19:18.176 2013] ***Error: Auto-negotiation stalled...
[Fri Dec 27 15:19:18.176 2013] ping failed; host 10.10.70.101 is not alive
    
por user2799508 06.01.2014 / 07:37

3 respostas

2

Pergunta 2: Acredito que essas impressões são do uboot. Se assim for, eu acredito que você tem "CONFIG_PHY_RESET" definido - você poderia por favor verificar sua configuração do uboot para isso? Para desativar esse recurso, você provavelmente teria que verificar sua configuração, geralmente algo semelhante a: ./include/configs/YourBoardConfigFile.h, é o que o uboot usaria.

Uma das outras respostas foi chamada para usar o Kconfig - eu verifiquei o menuconfig do meu uboot e essa opção não estava presente.

Se você der uma olhada no arquivo de origem do uboot:   ./drivers/net/4xx_enet.c , procure por "CONFIG_PHY_RESET", parece que o código está sendo executado:

#if defined(CONFIG_PHY_RESET)
/*
 * Reset the phy, only if its the first time through
 * otherwise, just check the speeds & feeds
 */
if (hw_p->first_init == 0) {

Logo em seguida, você pode ver a mensagem "Aguardando PHY auto negotiation to complete" ser impressa, por isso deve estar exatamente onde está o seu problema (ou próximo a ele - havia alguns outros arquivos que tiveram inicialização semelhante dependendo da arquitetura) ).

Por algum motivo, o LEIAME arquivo na fonte de alto nível do uboot chama CONFIG_PHY_RESET_DELAY, mas não CONFIG_PHY_RESET, então você pode ter perdido lá.

Pergunta 3: Se o CONFIG_PHY_RESET é o problema, então isso precisa ser definido em tempo de compilação. Você deve ser capaz de baixar a fonte uBoot da Xilinx para o seu fórum.

Não sei por que a redefinição é necessária, então realmente não respondi à pergunta 1 da sua, mas parece que alguns PHYs têm requisitos diferentes para serem redefinidos na inicialização e até mesmo alguns precisam de uma certa quantidade de atraso.

    
por 31.03.2017 / 22:29
0

Aparentemente, esse sistema quer fazer ping no endereço IP 10.10.70.101, provavelmente porque está verificando seu próprio endereço IP ou seu gateway. Esta parte significa que o sistema está configurado com uma interface de rede com esse endereço IP ou um similar.

A pausa acontece porque, no processo de configuração do IP, ele carrega o driver de rede Ethernet, que faz a autonegociação PHY, essencialmente, tenta ver o que está conectado a ele. Como nada está conectado, o tempo limite.

Provavelmente você deve procurar onde quer que esta distribuição Linux mantenha as configurações da interface de rede. Uma pesquisa superficial no google indica que o U-Boot tem a variável ipaddr por link

    
por 30.06.2016 / 12:04
-1

Use Kconfig ou seus análogos gráficos para desativar o Networking na compilação do kernel. Exemplos: veja isto .

    
por 06.01.2014 / 08:06