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

Ccool ccool@ninjatech.biz wrote:
I was talking about Readme file : "doc/README.RPXlite" file. I thought that the section 1 might be obsolete. With the documentation of my RPXlite, I have'nt found any VisionClick flash programmer.
A little hint: Pls make sure your board configuration. There are two type of RPXlite. One is CW,another DW. If it's CW,then RPXlite is what's your want.Or pls refer to RPXlite_DW board in u-boot cvs.There is another README in board/RPXlite_dw/ directory.I guess your target could be DW board because RPXlite CW was a old version board of EP.
As for how to debug or program U-Boot with a flash programmer,just as Wolfgang said,read DULG.
I also tried the u-boot.srec, just in case the S-record image would run=20 better, but it did'nt. I guess that's why I'm looking for someone who coul= d=20 give me a few hints about how to run u-boot. =20
There are some detailed points for a newbie to run u-boot.A good way is to list your process in details and consecution and some of us would see what's the wrong in that and give you a timely help.
Good Luck!
Sam
_________________________________________________________ Do You Yahoo!? 150万曲MP3疯狂搜,带您闯入音乐殿堂 http://music.yisou.com/ 美女明星应有尽有,搜遍美图、艳图和酷图 http://image.yisou.com 1G就是1000兆,雅虎电邮自助扩容! http://cn.rd.yahoo.com/mail_cn/tag/1g/*http://cn.mail.yahoo.com/event/mail_1...

Le 16 Août 2004 14:35, Sam Song a écrit :
A little hint: Pls make sure your board configuration. There are two type of RPXlite. One is CW,another DW. If it's CW,then RPXlite is what's your want.Or pls refer to RPXlite_DW board in u-boot cvs.There is another README in board/RPXlite_dw/ directory.I guess your target could be DW board because RPXlite CW was a old version board of EP.
Thanks for the advice, but for some reason, both (CW and DW) version did'nt work on their own. I had to use the RPXlite config and settings, but with the flash.c from the RPXlite_DW. There must be something else I have to do because I cannot write on the flash. The "saveenv" command does'nt work.
I know it is weird, but when I was using the RPXlite_DW config, U-boot could not start. When I used RPXlite, I started, but got stuck on the flash memory detection and I had a little warning saying that the processor is not the same as specified. That's why I changed it by replacing #define CONFIG_MPC850 by #define CONFIG_MPC823 in the RPXlite.h file, but I'm still having a warning.
So, to conclude, can someone help me about the flash memory problem. I would really like to understand this problem. Also, if someone knows the right settings to "remove" the processor warning, I'm all ears.
Raphael
My flash memory is mapped from FF00 0000 to FFFF FFFF and u-boot has to be put at FFF0 0000 to boot

Dear Raphael,
in message 200411261222.22768.ccool@ninjatech.biz you wrote:
Thanks for the advice, but for some reason, both (CW and DW) version did'nt work on their own. I had to use the RPXlite config and settings, but with the flash.c from the RPXlite_DW. There must be something else I have to do because I cannot write on the flash. The "saveenv" command does'nt work.
You should start by preparing an inventory of what board you actually have, which processor is on it, what's the flah configuration is, etc.
I know it is weird, but when I was using the RPXlite_DW config, U-boot could not start. When I used RPXlite, I started, but got stuck on the flash memory
That's not weird, it's what's to be expected as result of erratic and unsystematic actions. Please try to understand your hardware first before making any adaptions of the configuration.
detection and I had a little warning saying that the processor is not the same as specified. That's why I changed it by replacing #define CONFIG_MPC850 by #define CONFIG_MPC823 in the RPXlite.h file, but I'm still having a warning.
Don't you think that it might have been helpful if you had included the precise text of the warning in your posting?
Also, it should be fairly trivial to have a look at your board and read which type is printed on the processor.
So, to conclude, can someone help me about the flash memory problem. I would really like to understand this problem. Also, if someone knows the right settings to "remove" the processor warning, I'm all ears.
How could we know? Do we have access to your hardware, or who has?
Best regards,
Wolfgang Denk

Thanks for the kind reply,
In this email, I tried to be a lot more specific. I tried to explain more correctly the modification I have made. I'm sending this mail with 3 questions in it. The first one is about "saveenv" in U-boot. The second one is about the silicon bug warning. And my last one is about mkimage.
I thank you for taking the time to answer my many questions.
First, here is the details about my board: Rpxlite cw from embedded planet MPC823 processor 16 Mb of RAM (0000 0000 - 00FF FFFF) 16 Mb of Flash (FF00 0000 - FFFF FFFF) --> it is actually 4 AMD chips of 4 Mb each 128 Kb of NVRAM (FA00 0000 - FA02 0000)
The boot process, on the CW boards, start looking for a boot loader at the adresses FFF0 0000 on the flash memory, so that's where I have put U-boot.
Now, in my last mail, I could not write into the flash with "saveenv". I changed some of the configuration files, but as I'm a newbee, I kind of just went into the files and did some random changes from the standard files in the cvs until it worked. All my changes were based on what Sam Song has done for the RPXlite_dw. My board seems to be somewhere in the middle of the RPXlite and RPXlite_dw.
What I did, to make u-boot work for my board, I copied flash.c from /board/RPXlite_dw to /board/RPXlite
I also modified slightly include/configs/RPXlite.h
in include/configs/RPXlite.h
43c43 < #define CONFIG_MPC850 1 /* This is a MPC850 CPU */ ---
#define CONFIG_MPC823 1 /* This is a MPC823 CPU */
123c123 < #define CFG_FLASH_BASE 0xFFC00000 ---
#define CFG_FLASH_BASE 0xFF000000
145c145 < #define CFG_MAX_FLASH_SECT 19 /* max number of sectors on one chip */ ---
#define CFG_MAX_FLASH_SECT 71 /* max number of sectors on one chip
*/
Q1: Also I really think the best thing would be to have the same kind of configuration option like the ones you can find for the RPXlite_DW. I like the fact that you just add the specific options for your board in the "make RPXlite_XXX_config." I also like a lot the idea of using the NVRAM to save the environment. I'm not certain what I would have to modify to use this on my board?
Q2: Has I said in my last mail, I still have a "silicon bug warning"
CPU: PPC823ZTnnA at 48 MHz: 2 kB I-Cache 1 kB D-Cache *** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
I would like to know if that is a normal warning or it could really mess up the stability of my system. When I built my linux kernel, I add the silicon bugs patch. Is there a way in U-boot to apply a patch similar ?
Q3: This question is about the tool mkimage. It is the problem which is affecting me the most. I've read the FAQ and my bug is similar to one of the question there:
13.2.6. Linux hangs after uncompressing the kernel
I know it is not the "clocks_in_mhz" problem, because I've tested plenty. (I removed it and try to change the 1 for the correct value of the speed of the processor, just in case it would work)
I know my linux kernel work, because I have tested it before and it was booting correctly. ( I tested it with the original boot loader of the board )
So then, if I refer to the FAQ, the problem should be a bad definition of the bd_info structure. All I found was:
in u-boot/include/asm-ppc/u-boot.h unsigned long bi_immr_base; /* base of IMMR register */ in linux-2.4.22/include/asm-ppc/ppcboot.h unsigned long bi_immr_base; /* base of IMMR register */
And I don't know what is the IMAP_ADDR, I don't know what to do. If you can 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. I don't want to re-do all the work just for a little problem like this one with "mkimage"
Thanks Raphaël

In message 200411271459.32295.ccool@ninjatech.biz you wrote:
MPC823 processor 16 Mb of RAM (0000 0000 - 00FF FFFF) 16 Mb of Flash (FF00 0000 - FFFF FFFF) --> it is actually 4 AMD chips of 4 Mb each
You promised to be more specific. "4 AMD chips" is not really specific, though. AMD is manufacturing a wide range of different chips. We cannot guess...
The boot process, on the CW boards, start looking for a boot loader at the> adresses FFF0 0000 on the flash memory, so that's where I have put U-boot.
This is not necessarily a good idea. The mapping of your flash device at reset may be totally different.
Q1: Also I really think the best thing would be to have the same kind of configuration option like the ones you can find for the RPXlite_DW. I like>
Than add it, if you want it.
the environment. I'm not certain what I would have to modify to use this o> n my board?
We don't even know your baord, so how should we know?
Q2: Has I said in my last mail, I still have a "silicon bug warning"
CPU: PPC823ZTnnA at 48 MHz: 2 kB I-Cache 1 kB D-Cache *** Warning: CPU Core has Silicon Bugs -- Check the Errata ***
I would like to know if that is a normal warning or it could really mess up> the stability of my system. When I built my linux kernel, I add the silico> n bugs patch. Is there a way in U-boot to apply a patch similar ?
The message says what it says: you have a very old and known to be broken CPU; you better check the errata sheets carefully.
If I were you I'd avoid such ancient hardware.
Q3: This question is about the tool mkimage. It is the problem which is affecting me the most. I've read the FAQ and my bug is similar to one of t> he question there:
13.2.6. Linux hangs after uncompressing the kernel
This has NOTHING to do with mkimage, though.
I know it is not the "clocks_in_mhz" problem, because I've tested plenty. > (I removed it and try to change the 1 for the correct value of the speed of th> e processor, just in case it would work)
There is no "correct value". Please read the document more carefully.
I know my linux kernel work, because I have tested it before and it was booting correctly. ( I tested it with the original boot loader of the board )
You cannot test the same image with another boot loader.
So then, if I refer to the FAQ, the problem should be a bad definition of t> he bd_info structure. All I found was:
in u-boot/include/asm-ppc/u-boot.h unsigned long bi_immr_base; /* base of IMMR register */ in linux-2.4.22/include/asm-ppc/ppcboot.h unsigned long bi_immr_base; /* base of IMMR register */
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
We don't know your hardware or your memory map...
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.
Best regards,
Wolfgang Denk

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

In message 200411271908.32930.ccool@ninjatech.biz you wrote:
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?
Start reading the code. Where is it used, and what for? If you look, you'll see code like this:
volatile immap_t *immap = (immap_t *)IMAP_ADDR;
"immap_t" is defined in include/asm-ppc/8xx_immap.h resp. include/asm-ppc/immap_8260.h; check the code. Also read the processor's User's Manual.
You MUST understand the hardware you're working on before you can fiddle with low level code. There is no way around it.
And BTW: all these Linux related questions are off topic here. They have nothing to do with U-Boot.
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
Well, I have some other simple board here. It's a XYZZY board from the FOOBAR company with 128 MB of SDRAM. Do you now know which flah chips re on this board? You provide exactly the same level of information: it's useless, and you cannot expect useful replies.
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.
No, I'm not.
FA20 0000
- 16 Kb Internal Register and DP Ram
Aha!!! So use this address in your configuration.
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.
You do it again: you provide inaccurate and incomplete information - don't expect ANY usefule reply.
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
It will, after making sure the requirements imposed by U-Boot are met.
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.
Isn't "make sure that your machine specific header file (for instance include/asm-ppc/tqm8xx.h) includes the same definition of the Board Information structure as we define in include/ppcboot.h, and make sure that your definition of IMAP_ADDR uses the same value as your U-Boot configuration in CFG_IMMR" precise enough (quote from the FAQ section of the DULG) ?
Let's go through it step by step:
* make sure that your machine specific header file ... includes the same definition of the Board Information structure as we define in include/ppcboot.h":
The easiest way to acchieve this is to include the common U-Boot header; i. e. edit "arch/ppc/platforms/rpxlite.h" and remove all this code:
... 15 /* A Board Information structure that is given to a program when 16 * prom starts it up. 17 */ 18 typedef struct bd_info { 19 unsigned int bi_memstart; /* Memory start address */ 20 unsigned int bi_memsize; /* Memory (end) size in bytes */ 21 unsigned int bi_intfreq; /* Internal Freq, in Hz */ 22 unsigned int bi_busfreq; /* Bus Freq, in Hz */ 23 unsigned char bi_enetaddr[6]; 24 unsigned int bi_baudrate; 25 } bd_t; 26 27 extern bd_t m8xx_board_info; ...
Instead, insert a single line
#include <asm/ppcboot.h>
* "use the same value as your U-Boot configuration in CFG_IMMR":
-> grep CFG_IMMR include/configs/RPXl* include/configs/RPXlite.h:#define CFG_IMMR 0xFA200000 ... include/configs/RPXlite_DW.h:#define CFG_IMMR 0xFA200000 ...
This is the same as in your memory map above; fine!
Check the definition of IMAP_ADDR in "arch/ppc/platforms/rpxlite.h":
-> grep IMAP_ADDR arch/ppc/platforms/rpxlite.h #define IMAP_ADDR ((uint)0xfa200000)
Fine, they are the same; no need to change.
Then run the standard build sequence:
bash$ make mrproper bash$ make rpxlite_config bash$ make oldconfig bash$ make dep bash$ make uImage bash$ cp arch/ppc/boot/images/uImage /tftpboot/ ...
Best regards,
Wolfgang Denk
participants (4)
-
Ccool
-
Paul Ruhland
-
Sam Song
-
Wolfgang Denk