[U-Boot-Users] Re: Problem building U-boot for RpxLite with Mpc823e

Ccool ccool at ninjatech.biz
Sun Nov 28 01:08:32 CET 2004


Hi,

> I don't think this is the definition of "struct bd_info" ??
>
> > And I don't know what is the IMAP_ADDR, I don't know what to do.  If you
> > ca> n

I still don't have a clue what is "IMAP_ADDR" and what it does?

>
> We don't know your hardware or your memory map...
>
What can I tell you that will help you. I do have the memory map of my board 
and my hardware is simple, " EP MPC823 H1 DW " but with only 16M of RAM.  We 
ordered thoses board and we received a few boards with MPC823 and some with 
MPC823e.  I'm now developping for the MPC823.  Here is the link if you're 
interested.

http://www.embeddedplanet.com/products/lite.asp

The memory map is pretty much that.  I would be glad to be more specific if I 
need to.  I just need to understand :

0000 0000
 - 16 Mb SDRAM
00FF FFFF

FA00 0000
 - 128 Kb NVRAM
FA02 0000

FA20 0000
 - 16 Kb Internal Register and DP Ram
FA20 3FFF

FA40 0000
 - RPXlite configuration Register (32 bits), mirrored 8192 times
FA40 7FFF

FC00 0000
 - Mirror 16 Mb flash
FCFF FFFF

FD00 0000
 - Mirror 16 Mb flash
FDFF FFFF

FE00 0000
  - Mirror 16 Mb flash
FEFF FFFF

FF00 0000
 - 16 Mb flash,
 - At the adresse  FFF0 0000 (hard-coded) the RPXlite looks for a boot-loader 
at startup.  if the original bootloader is there, it looks for the diagnostic 
utilities at the adress FFF8 0000
FFFF FFFF

As for the struc bd_info, here they are.  I'm sorry if I'm a complete newbee, 
I did not know I should have sent both of the structures:

in u-boot/include/asm-ppc/u-boot.h (well, you should have it, but here it is 
anyway)
typedef struct bd_info {
        unsigned long   bi_memstart;    /* start of DRAM memory */
        unsigned long   bi_memsize;     /* size  of DRAM memory in bytes */
        unsigned long   bi_flashstart;  /* start of FLASH memory */
        unsigned long   bi_flashsize;   /* size  of FLASH memory */
        unsigned long   bi_flashoffset; /* reserved area for startup monitor 
*/
        unsigned long   bi_sramstart;   /* start of SRAM memory */
        unsigned long   bi_sramsize;    /* size  of SRAM memory */
#if defined(CONFIG_5xx) || defined(CONFIG_8xx) || defined(CONFIG_8260) \
        || defined(CONFIG_E500)
        unsigned long   bi_immr_base;   /* base of IMMR register */
#endif
#if defined(CONFIG_MPC5xxx)
        unsigned long   bi_mbar_base;   /* base of internal registers */
#endif
#if defined(CONFIG_MPC8220)
        unsigned long   bi_mbar_base;   /* base of internal registers */
        unsigned long   bi_inpfreq;     /* Input Freq, In MHz */
        unsigned long   bi_pcifreq;     /* PCI Freq, in MHz */
        unsigned long   bi_pevfreq;     /* PEV Freq, in MHz */
        unsigned long   bi_flbfreq;     /* Flexbus Freq, in MHz */
        unsigned long   bi_vcofreq;     /* VCO Freq, in MHz */
#endif
        unsigned long   bi_bootflags;   /* boot / reboot flag (for LynxOS) */
        unsigned long   bi_ip_addr;     /* IP Address */
        unsigned char   bi_enetaddr[6]; /* Ethernet adress */
        unsigned short  bi_ethspeed;    /* Ethernet speed in Mbps */
        unsigned long   bi_intfreq;     /* Internal Freq, in MHz */
        unsigned long   bi_busfreq;     /* Bus Freq, in MHz */
#if defined(CONFIG_8260) || defined(CONFIG_MPC8560)
        unsigned long   bi_cpmfreq;     /* CPM_CLK Freq, in MHz */
        unsigned long   bi_brgfreq;     /* BRG_CLK Freq, in MHz */
        unsigned long   bi_sccfreq;     /* SCC_CLK Freq, in MHz */
        unsigned long   bi_vco;         /* VCO Out from PLL, in MHz */
#endif
#if defined(CONFIG_MPC5xxx)
        unsigned long   bi_ipbfreq;     /* IPB Bus Freq, in MHz */
        unsigned long   bi_pcifreq;     /* PCI Bus Freq, in MHz */
#endif
        unsigned long   bi_baudrate;    /* Console Baudrate */
#if defined(CONFIG_405)   || \
    defined(CONFIG_405GP) || \
    defined(CONFIG_405CR) || \
    defined(CONFIG_405EP) || \
    defined(CONFIG_440)
        unsigned char   bi_s_version[4];        /* Version of this structure 
*/
        unsigned char   bi_r_version[32];       /* Version of the ROM (IBM) */
        unsigned int    bi_procfreq;    /* CPU (Internal) Freq, in Hz */
        unsigned int    bi_plb_busfreq; /* PLB Bus speed, in Hz */
        unsigned int    bi_pci_busfreq; /* PCI Bus speed, in Hz */
        unsigned char   bi_pci_enetaddr[6];     /* PCI Ethernet MAC address */
#endif
#if defined(CONFIG_HYMOD)
        hymod_conf_t    bi_hymod_conf;  /* hymod configuration information */
#endif

#if defined(CONFIG_ETH1ADDR)
        /* second onboard ethernet port */
        unsigned char   bi_enet1addr[6];
#endif
#if defined(CONFIG_ETH2ADDR)
        /* third onboard ethernet port */
        unsigned char   bi_enet2addr[6];
#endif
#if defined(CONFIG_ETH3ADDR)
        unsigned char   bi_enet3addr[6];
#endif

#if defined(CONFIG_405GP) || defined(CONFIG_405EP) || defined (CONFIG_440_GX)
        unsigned int    bi_opbfreq;             /* OPB clock in Hz */
        int             bi_iic_fast[2];         /* Use fast i2c mode */
#endif
#if defined(CONFIG_NX823)
        unsigned char   bi_sernum[8];
#endif
#if defined(CONFIG_440_GX)
        int             bi_phynum[4];           /* Determines phy mapping */
        int             bi_phymode[4];          /* Determines phy mode */
#endif
} bd_t;



in linux-2.4.22/include/asm-ppc/ppcboot.h
typedef struct bd_info {
        unsigned long   bi_memstart;    /* start of DRAM memory */
        unsigned long   bi_memsize;     /* size  of DRAM memory in bytes */
        unsigned long   bi_flashstart;  /* start of FLASH memory */
        unsigned long   bi_flashsize;   /* size  of FLASH memory */
        unsigned long   bi_flashoffset; /* reserved area for startup monitor 
*/
        unsigned long   bi_sramstart;   /* start of SRAM memory */
        unsigned long   bi_sramsize;    /* size  of SRAM memory */
#if defined(CONFIG_8xx) || defined(CONFIG_8260)
        unsigned long   bi_immr_base;   /* base of IMMR register */
#endif
        unsigned long   bi_bootflags;   /* boot / reboot flag (for LynxOS) */
        unsigned long   bi_ip_addr;     /* IP Address */
        unsigned char   bi_enetaddr[6]; /* Ethernet adress */
        unsigned short  bi_ethspeed;    /* Ethernet speed in Mbps */
        unsigned long   bi_intfreq;     /* Internal Freq, in MHz */
        unsigned long   bi_busfreq;     /* Bus Freq, in MHz */
#if defined(CONFIG_8260)
        unsigned long   bi_cpmfreq;     /* CPM_CLK Freq, in MHz */
        unsigned long   bi_brgfreq;     /* BRG_CLK Freq, in MHz */
        unsigned long   bi_sccfreq;     /* SCC_CLK Freq, in MHz */
        unsigned long   bi_vco;         /* VCO Out from PLL, in MHz */
#endif
        unsigned long   bi_baudrate;    /* Console Baudrate */
#if defined(CONFIG_405GP)
        unsigned char   bi_s_version[4];        /* Version of this structure 
*/
        unsigned char   bi_r_version[32];       /* Version of the ROM (IBM) */
        unsigned int    bi_procfreq;    /* CPU (Internal) Freq, in Hz */
        unsigned int    bi_plb_busfreq; /* PLB Bus speed, in Hz */
        unsigned int    bi_pci_busfreq; /* PCI Bus speed, in Hz */
        unsigned char   bi_pci_enetaddr[6];     /* PCI Ethernet MAC address */
#endif
#if defined(CONFIG_HYMOD)
        hymod_conf_t    bi_hymod_conf;  /* hymod configuration information */
#endif
#if defined(CONFIG_EVB64260)
        /* the board has three onboard ethernet ports */
        unsigned char   bi_enet1addr[6];
        unsigned char   bi_enet2addr[6];
#endif
        mon_fnc_t       *bi_mon_fnc;    /* Pointer to monitor functions */
} bd_t;


> > help me with only one question, please make it this one.  I've been
> > working> on this kernel for a long time.  I tried the linux-2.4.25 from
> > your site, (with the mkimage tool included and working with mkimage),
> > it's a great kernel, but the mtd is not working at all, and it is working
> > with my kernel> .
>
> MTD is working fine on all supported boards.
>
Well, it is not detected on my board with the linuxppc_2_4_devel, but I do 
have a character device on my linux-2.4.22 patched with the stuff on 
penguinppc.org  I used the same config and I tried some other and it does not 
work.

but I don't want to blame anyone by saying this.  All I'm trying to do here is 
to get this RPXlite board up and working with linux, a ramdisk, and access to 
the mtd device, pcmcia and I2c.  I know my last kernel worked fine and that 
is why I want to use it.  Whit the old/original boot-loader, I could just 
load the kernel (example "load at 0x0010 0000" and start it 64kb further, to 
skip the elf header, so "go at 0x0011 0000"), and it was booting.  So I 
though that the kernel would work with u-boot.  To do so, I have read the doc 
on http://www.denx.de/twiki/bin/view/DULG/Manual and some other tip found in 
google and the README in u-boot. 

Sadly, it did not work, it froze exactly after uncompressing the kernel.  So I 
refer myself to the FAQ and I am not experimented enough (or a good enough 
code-writer at this point) to fully understand what I had to do modify the 
bd_info structures correctly without breaking everything.  That's pretty much 
it.

Thanks for your help.  If the information I gave is not enough, I will be glad 
to give more, if I know what to give.  

Raphaël




More information about the U-Boot mailing list