[U-Boot-Users] FW: PPC405EP ethernet problems

Stalder, Reto reto.stalder at schmid-telecom.ch
Tue Jun 20 11:19:14 CEST 2006


Hi,

<snip1>
> Forgot this one: Debian also tends to use some beta versions  of  the 
> "make"  tool  which  are obviously very broken. Make sure to use only 
> stable versions.
</snip1>

<snip2>
> Is it possible that there is any chace that you get an enetInt just 
> after the first irq_install_handler? Can you put a printf at the 
> beginning of the entInt?
</snip2>

First of all a big thank you to Matthias and Wolfgang for their answers!

I've put some printf statements into enetInt and associated functions
and tested the code with CONFIG_NET_MULTI enabled and disabled. As
Matthias suspected an enetInt is fired just after the first
irq_install_handler. The console output of both configurations is
inserted below. 

For both configurations:
- The 'mtdcr (uicer, mfdcr (uicer) | (0x80000000 >> i)' statement in
irq_install_handler is the last instruction, before enetInt is entered.
- As soon as enetInt returns, it re-enters.

But:
- For CONFIG_NET_MULTI defined the problem occurs already while
starting. In contrast I get the U-Boot prompt, if it is not defined.  
- For CONFIG_NET_MULTI defined, there is _NO_ printf output in
enet_init, which seems very strange to me (see console output below).

Do the console output and my observations ring any bells? Do you have
ideas where the problem could lie and what else I could try to solve it?

Thank you very much,
Reto


Without CONFIG_NET_MULTI configured:
------------------------------------

=> ping 1.2.3.4
NetLoop: calling eth_halt()
NetLoop: returned from eth_halt()
NetLoop: calling eth_init()
 eth_init: calling ppc_4xx_eth_initialize()
  ppc_4xx_eth_initialize: calling irq_install_handler(MS...)
   irq_install_handler: executing mtdcr (uicer, mfdcr (uicer) |
(0x80000000 >> i));
        <-- here should come a "irq_install_handler: mtdcr done"
printout

    enetInt: entered function
    enetInt: calling mal_err
 
     MAL error occured.... ISR = 0 UIC = = 200000    MAL_DEF = 2e0000
MAL_ERR= 260000
     mal_err: calling eth_init again
      eth_init: calling ppc_4xx_eth_initialize()
       ppc_4xx_eth_initialize: calling irq_install_handler(MS...)
        irq_install_handler: executing mtdcr (uicer, mfdcr (uicer) |
(0x80000000 >> i));
        irq_install_handler: mtdcr... done
        Install interrupt for vector 10 ==> 007e55ec
       ppc_4xx_eth_initialize: returned from irq_install_handler(MS...)
       ppc_4xx_eth_initialize: calling irq_install_handler(MTE...)
        irq_install_handler: executing mtdcr (uicer, mfdcr (uicer) |
(0x80000000 >> i));
        irq_install_handler: mtdcr... done
        Install interrupt for vector 11 ==> 007e55ec
       ppc_4xx_eth_initialize: returned from irq_install_handler(MTE...)
       ppc_4xx_eth_initialize: calling irq_install_handler(MRE...)
        irq_install_handler: executing mtdcr (uicer, mfdcr (uicer) |
(0x80000000 >> i));
        irq_install_handler: mtdcr... done
        Install interrupt for vector 12 ==> 007e55ec
       ppc_4xx_eth_initialize: returned from irq_install_handler(MRE...)
       ppc_4xx_eth_initialize: calling irq_install_handler(TXDE...)
        irq_install_handler: executing mtdcr (uicer, mfdcr (uicer) |
(0x80000000 >> i));
        irq_install_handler: mtdcr... done
        Install interrupt for vector 13 ==> 007e55ec
       ppc_4xx_eth_initialize: returned from
irq_install_handler(TXDE...)
       ppc_4xx_eth_initialize: calling irq_install_handler(RXDE...)
        irq_install_handler: executing mtdcr (uicer, mfdcr (uicer) |
(0x80000000 >> i));
        irq_install_handler: mtdcr... done
        Install interrupt for vector 14 ==> 007e55ec
       ppc_4xx_eth_initialize: returned from
irq_install_handler(RXDE...)
       ppc_4xx_eth_initialize: calling miiphy_register()
        miiphy_register: non unique device name 'ppc_4xx_eth0'
       ppc_4xx_eth_initialize: returned from miiphy_register()
      eth_init: returned from ppc_4xx_eth_initialize()
      eth_init: calling _STATIC_ ppc_4xx_eth_init()
       About preceeding transfer (eth0):
       - Sent packet number 0
       - Received packet number 0
       - Handled packet number 0
       ENET Speed is 100 Mbps - FULL duplex connection
        irq_install_handler: executing mtdcr (uicer, mfdcr (uicer) |
(0x80000000 >> i));
        irq_install_handler: mtdcr... done
        Install interrupt for vector 15 ==> 007e55ec
      eth_init: returned from  ppc_4xx_eth_init()
     mal_err: returned from eth_init
    enetInt: returned from mal_err
    
    enetInt: entered function
    enetInt: calling mal_err

     MAL error occured.... ISR = c0100010 UIC = = 150000     MAL_DEF =
2e0000  MAL_ERR= 260000
     mal_err: calling eth_init again
      eth_init: calling ppc_4xx_eth_initialize()
       ppc_4xx_eth_initialize: calling miiphy_register()
        miiphy_register: non unique device name 'ppc_4xx_eth0'
       ppc_4xx_eth_initialize: returned from miiphy_register()
      eth_init: returned from ppc_4xx_eth_initialize()
      eth_init: calling ppc_4xx_eth_init()
       About preceeding transfer (eth0):
       - Sent packet number 0
       - Received packet number 0
       - Handled packet number 0
       ENET Speed is 100 Mbps - FULL duplex connection
        irq_install_handler: executing mtdcr (uicer, mfdcr (uicer) |
(0x80000000 >> i));
        irq_install_handler: mtdcr... done
        Install interrupt for vector 15 ==> 007e55ec
      eth_init: returned from  ppc_4xx_eth_init()
     mal_err: returned from eth_init
   enetInt: returned from mal_err
   
   enetInt: entered function
   enetInt: calling mal_err
    
    MAL error occured.... ISR = c0100010 UIC = = 150000     MAL_DEF =
2e0000  MAL_ERR= 260000
    mal_err: calling eth_init again
     eth_init: calling ppc_4xx_eth_initialize()
      ppc_4xx_eth_initialize: calling miiphy_register()
       miiphy_register: non unique device name 'ppc_4xx_eth0'
      ppc_4xx_eth_initialize: returned from miiphy_register()
     eth_init: returned from ppc_4xx_eth_initialize()
     eth_init: calling ppc_4xx_eth_init()
      About preceeding transfer (eth0):
      - Sent packet number 0
      - Received packet number 0
      - Handled packet number 0
      ENET Speed is 100 Mbps - FULL duplex connection
       irq_install_handler: executing mtdcr (uicer, mfdcr (uicer) |
(0x80000000 >> i));
       irq_install_handler: mtdcr... done
       Install interrupt for vector 15 ==> 007e55ec
     eth_init: returned from  ppc_4xx_eth_init()
    mal_err: returned from eth_init
   enetInt: returned from mal_err
   
   enetInt: entered function
   enetInt: calling mal_err


With CONFIG_NET_MULTI configured:
---------------------------------

U-Boot 1.1.4 (Jun 20 2006 - 10:06:31)

CPU:   AMCC PowerPC 405EP Rev. B at 133.333 MHz (PLB=133, OPB=66, EBC=33
MHz)
       I2C boot EEPROM disabled
       16 kB I-Cache 16 kB D-Cache
DRAM:   8 MB
FLASH: 16 MB
In:    serial
Out:   serial
Err:   serial
Net:   
ppc_4xx_eth_initialize: calling irq_install_handler(MS...)
 irq_install_handler: executing mtdcr (uicer, mfdcr (uicer) |
(0x80000000 >> i));
                <-- here should come a "irq_install_handler: mtdcr done"
printout
 enetInt: entered function
  enetInt: calling mal_err

   MAL error occured.... ISR = 0 UIC = = 200000    MAL_DEF = 2e0000
MAL_ERR= 260000
   mal_err: calling eth_init again
       <-- where is all the printf output from eth_init?
   mal_err: returned from eth_init
  enetInt: returned from mal_err

  enetInt: entered function
  enetInt: calling mal_err

   MAL error occured.... ISR = 0 UIC = = 200000    MAL_DEF = 2e0000
MAL_ERR= 260000
   mal_err: calling eth_init again
       <-- where is all the printf output from eth_init?
   mal_err: returned from eth_init
  enetInt: returned from mal_err
  enetInt: entered function
  
  enetInt: calling mal_err




More information about the U-Boot mailing list