
Hi Raleigh,
Please keep the ML Cc'd (and please don't top-post)
On Thu, Jun 23, 2011 at 8:58 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
Thanks I will be looking for an eNET board. I am doing several Pentium U-boot projects.
An eNET board may be difficult to come by - They are a Remote Telemetry Unit (RTU) developed by Serck Controls in Australia but now manufactured by Control Microsystems in Canada (both companies are now subsiduaries of Schneider Electric). They are used to monitor and control water pumping stations, bore fields, reservoirs etc. They are not very usefull as a U-Boot development platform - The only reason I have one is that I work for Serck Controls and managed to convince someone to give me one that had been sent back for repairs but was deemed 'not fit for service'.
You could always buy one from Control Microsystems, but be warned, they are not exactly cheap ;)
As I said before, I am willing to help you get your Pentium projects running.
Hey so the 'make all' command makes the tool chain and the U-boot code itself. How do I just complie the U-boot source code now that I have the tool chain.
I think you might mean that it makes 'tools' and 'u-boot.bin' - 'tools' is not a toolchain - They are a set of executables that can be used in Linux to access the U-Boot environment etc. If you just want to build the binary, 'make u-boot.bin' may be what you need (someone will correct me if I'm wrong)
Regards,
Graeme
Date: Wed, 22 Jun 2011 12:56:25 +1000 Subject: Re: u-boot for x86 From: graeme.russ@gmail.com To: r_boulware@hotmail.com CC: u-boot@lists.denx.de
Hi Raleigh,
On Wed, Jun 22, 2011 at 12:44 PM, Raleigh Boulware r_boulware@hotmail.com wrote:
I am looking at the source code for the sc520 and can not figure out which board directory to look in. Which of the board plat form has the sc520?
The only board which currently builds for the sc520 is the eNET board
Also How do I configure for the sc520 board? How do I do a build for the sc520?
- Get the latest source using git
- make eNET_config
- make all
I doubt that will be much help though, as you will need an eNET board to run it on :)
If you have another x86 based board you want to get U-Boot running on, I am more than willing to help with advice and the odd bit of code
Regards,
Graeme

Thanks for your help.
I have several boards I am looking at. One is a Pentium Main board that uses the Intel 82340LX chip set. Anther board is a Pentium that uses the Opti Viper Chip set. The third is just a Mother board that has a custom FPGA as the North and south bridge.
I think the Intel and Opti main boards could be used down the road for others to port U-boot to other Later Platforms.
I have to admit my programming skills in the GNU enviroment is very limited. I am taken a Linux course now at work and I somewhat understand. I guess right now I am trying to understand and work my way through the U-boot source. So please excuse any questions that might seen odd or dumb.
thanks for your help.

Hi Raleigh,
On Thu, Jun 23, 2011 at 9:37 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
Thanks for your help.
I have several boards I am looking at. One is a Pentium Main board that uses the Intel 82340LX chip set. Anther board is a Pentium that uses the Opti Viper Chip set. The third is just a Mother board that has a custom FPGA as the North and south bridge.
A couple of questions: - Are these commercially available boards? - Do you have model/part numbers? - Is this a work related port (versus a spare time personal effort)?
I think the Intel and Opti main boards could be used down the road for others to port U-boot to other Later Platforms.
Yes, I would love to get bare-bones support for more x86 CPUs into U-Boot. So far I have only done sc520 because that is all I have ready access to
Also, have you looked at Coreboot (it is a BIOS replacement project). Not that I don't want to get more x86 U-Boot ports running, but you may find that the board you are looking at is already supported by Coreboot (especially if it is a commercially available motherboard)
I have to admit my programming skills in the GNU enviroment is very limited. I am taken a Linux course now at work and I somewhat understand. I guess right now I am trying to understand and work my way through the U-boot source. So please excuse any questions that might seen odd or dumb.
Ask away - If you are unsure of mailing list etiquette, Wolfgang is rather fond of these two links:
http://www.netmeister.org/news/learn2quote.html http://catb.org/esr/faqs/smart-questions.html
Don't forget to have a good look through the U-Boot wiki at:
http://www.denx.de/wiki/U-Boot/WebHome
And the 'U-Boot Porting Guide' found in the README:
http://git.denx.de/?p=u-boot.git;a=blob_plain;f=README;hb=HEAD
Just so you know, U-Boot is a hobby for me (i.e. limited time, no budget). I'm more than willing to help, but unfortunately that help is not going to extend to buying my own development hardware
thanks for your help.
My pleasure
Regards,
Graeme

Date: Thu, 23 Jun 2011 10:02:31 +1000 Subject: Re: U-boot for Pentium From: graeme.russ@gmail.com To: r_boulware@hotmail.com CC: u-boot@lists.denx.de
Hi Raleigh,
On Thu, Jun 23, 2011 at 9:37 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
Thanks for your help.
I have several boards I am looking at. One is a Pentium Main board that uses the Intel 82340LX chip set. Anther board is a Pentium that uses the Opti Viper Chip set. The third is just a Mother board that has a custom FPGA as the North and south bridge.
A couple of questions:
- Are these commercially available boards?
No these are boards I have here at home that I am working with.
- Do you have model/part numbers?
I believe the Chip set numbers are 82C556, 82C557, and 82C558 this is for the Opti board. I also have schematics in Orcad for this board and full ducmentation on this chipset.
- Is this a work related port (versus a spare time personal effort)?
No actually this is a home project. At work I do Hardware development. Schematics, board layout and debug.
I think the Intel and Opti main boards could be used down the road for others to port U-boot to other Later Platforms.
Yes, I would love to get bare-bones support for more x86 CPUs into U-Boot. So far I have only done sc520 because that is all I have ready access to
Well these boards are just first generation Pentium mother boards. I know the performance is slow compared to today's standard, but they are easy to write code for because the registers are as many as the chipsets today. I am also working on a platform that has no North bridge or south bridge. This might be easier from a U-boot linux stand point but more difficult from a Hardware standpoint
Also, have you looked at Coreboot (it is a BIOS replacement project). Not that I don't want to get more x86 U-Boot ports running, but you may find that the board you are looking at is already supported by Coreboot (especially if it is a commercially available motherboard)
I have to admit my programming skills in the GNU enviroment is very limited. I am taken a Linux course now at work and I somewhat understand. I guess right now I am trying to understand and work my way through the U-boot source. So please excuse any questions that might seen odd or dumb.
Ask away - If you are unsure of mailing list etiquette, Wolfgang is rather fond of these two links:
http://www.netmeister.org/news/learn2quote.html http://catb.org/esr/faqs/smart-questions.html
Yeah this seems like alot to try to remember to do...I'm sure I am breaking a bunch of rules on this.
Don't forget to have a good look through the U-Boot wiki at:
http://www.denx.de/wiki/U-Boot/WebHome
And the 'U-Boot Porting Guide' found in the README:
http://git.denx.de/?p=u-boot.git;a=blob_plain;f=README;hb=HEAD
Just so you know, U-Boot is a hobby for me (i.e. limited time, no budget). I'm more than willing to help, but unfortunately that help is not going to extend to buying my own development hardware
Yeah, this is a hobby for me too. It is a Sloooowww hobby at that...
This U-boot seems very big I am trying to fumble my way through it. Right now I am going through the .S files from the reset vector and following it from there. I got to the 'Start.S' and got lost that's why I asked about which board on the tree was the sc520 or x86 platform.
I will keep trying to make baby steps and ask questions if I get stuck
thanks for your help.
My pleasure
Regards,
Graeme

Hi Raleigh,
On Thu, Jun 23, 2011 at 10:47 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
[snip]
A couple of questions:
- Are these commercially available boards?
No these are boards I have here at home that I am working with.
- Do you have model/part numbers?
I believe the Chip set numbers are 82C556, 82C557, and 82C558 this is for the Opti board. I also have schematics in Orcad for this board and full ducmentation on this chipset.
Having full documentation is always helpful
- Is this a work related port (versus a spare time personal effort)?
No actually this is a home project. At work I do Hardware development. Schematics, board layout and debug.
That's great - nothing like scratching an itch
I think the Intel and Opti main boards could be used down the road for others to port U-boot to other Later Platforms.
Yes, I would love to get bare-bones support for more x86 CPUs into U-Boot. So far I have only done sc520 because that is all I have ready access to
Well these boards are just first generation Pentium mother boards. I know the performance is slow compared to today's standard, but they are easy to write code for because the registers are as many as the chipsets today. I am also working on a platform that has no North bridge or south bridge. This might be easier from a U-boot linux stand point but more difficult from a Hardware standpoint
Yes, the older hardware is much easier to work with because is is far simpler - No multi-core, no System Management Mode, not microcode etc
[snip]
Just so you know, U-Boot is a hobby for me (i.e. limited time, no budget). I'm more than willing to help, but unfortunately that help is not going to extend to buying my own development hardware
Yeah, this is a hobby for me too. It is a Sloooowww hobby at that...
I know the feeling
This U-boot seems very big I am trying to fumble my way through it. Right now I am going through the .S files from the reset vector and following it from there. I got to the 'Start.S' and got lost that's why I asked about which board on the tree was the sc520 or x86 platform.
Well really, most of U-Boot is platform independent. You are starting at the right point. The restet vector and Start16.S should not need any attention. You will need to focus first on getting RAM initialisation working. You need to be able to configure the SDRAM timings and determine the memory size very early. You have two potential options
1) Cache-As-RAM - Should be possible on the Pentium chips - Coreboot will probably have some code which may give you an idea. This is the way the current sc520 code works 2) Do full RAM init in assembler - sc520 used to work like this, so if you go back to a previous commit in git (the patch series that changed it starts at commit de47cbe6860654cc6c0cf8820d9165f059c7cf38) you should be able to see an example of this method
Option 1 tends to be more tricky conceptually, but requires far less assembler code - If you get it working, all the main RAM init can be done in C code
As a first step, you may be able to hard-code the SDRAM timings and RAM size just to get things going.
I will keep trying to make baby steps and ask questions if I get stuck thanks for your help.
That's the way to do it
Regards,
Graeme

I have been going through the code and I have stumbled accross a file called sc520_car.S that has something called Cache as ram. I am guessing that this is something special for the sc520 correct? Why was there a need to do this? Why was the Cache used like ram in the boot process?
Also I am I see something called early_board_init. I trace this to a file called eNET.S but all it does is jumps back to where it came from. I don't understand.
Where is the external memory controller set up at?
thanks for your time

Hi Raleigh,
On Thu, Jun 30, 2011 at 11:16 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
I have been going through the code and I have stumbled accross a file called sc520_car.S that has something called Cache as ram. I am guessing that this is something special for the sc520 correct? Why was there a need to do this? Why was the Cache used like ram in the boot process?
Cache-As-RAM allows the CPU cache to be used as regular RAM while U-Boot is running from Flash before the onboard SDRAM has been initialised. This allows a temporary stack, and therefore C runtime environment to be created. This this allows you to write the SDRAM initialisation code in C which is a lot easier than assembler.
Also I am I see something called early_board_init. I trace this to a file called eNET.S but all it does is jumps back to where it came from. I don't understand.
This is provided in case the board needs to do any specific initialisation extremely early in the boot process. In the case of the eNET, no such initialisation needs to be performed.
Where is the external memory controller set up at?
For the sc520, the is no external memory controller, and the initialisation of SDRAM is trivial (a couple of timing parameters in a control register)
thanks for your time
Regards,
Graeme

Hi Raleigh,
On Thu, Jun 30, 2011 at 11:16 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
I have been going through the code and I have stumbled accross a file called sc520_car.S that has something called Cache as ram. I am guessing that this is something special for the sc520 correct? Why was there a need to do this? Why was the Cache used like ram in the boot process?
Cache-As-RAM allows the CPU cache to be used as regular RAM while U-Boot is running from Flash before the onboard SDRAM has been initialised. This allows a temporary stack, and therefore C runtime environment to be created. This this allows you to write the SDRAM initialisation code in C which is a lot easier than assembler.
So this is pnly used if we want to setup the SDRAM controller in C code correct? In this code it is not used because the SDRAM cotroller is pretty much working from power up. So when I port this to my motherboard it looks as if i really do not need this.. Am I correct in this thinking??

On Thu, Jun 30, 2011 at 11:54 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
Hi Raleigh,
On Thu, Jun 30, 2011 at 11:16 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
I have been going through the code and I have stumbled accross a file called sc520_car.S that has something called Cache as ram. I am guessing that this is something special for the sc520 correct? Why was there a need to do this? Why was the Cache used like ram in the boot process?
Cache-As-RAM allows the CPU cache to be used as regular RAM while U-Boot is running from Flash before the onboard SDRAM has been initialised. This allows a temporary stack, and therefore C runtime environment to be created. This this allows you to write the SDRAM initialisation code in C which is a lot easier than assembler.
So this is pnly used if we want to setup the SDRAM controller in C code
More that just that - It is used for the duration of board_init_f() which may include all manner of peripheral initialisation prior to relocating U-Boot into RAM.
correct? In this code it is not used because the SDRAM cotroller is pretty much working from power up. So when I port this to my motherboard it looks as if i really do not need this.. Am I correct in this thinking??
You may need to initialise the SDRAM controller - It really depends on the underlying hardware. You are going to need to have a good look at the technical documentation for your board to figure this one out
Regards,
Graeme

Date: Thu, 30 Jun 2011 11:58:55 +1000 Subject: Re: more U-boot for Pentium From: graeme.russ@gmail.com To: r_boulware@hotmail.com CC: u-boot@lists.denx.de
On Thu, Jun 30, 2011 at 11:54 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
Hi Raleigh,
On Thu, Jun 30, 2011 at 11:16 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
I have been going through the code and I have stumbled accross a file called sc520_car.S that has something called Cache as ram. I am guessing that this is something special for the sc520 correct? Why was there a need to do this? Why was the Cache used like ram in the boot process?
Cache-As-RAM allows the CPU cache to be used as regular RAM while U-Boot is running from Flash before the onboard SDRAM has been initialised. This allows a temporary stack, and therefore C runtime environment to be created. This this allows you to write the SDRAM initialisation code in C which is a lot easier than assembler.
So this is pnly used if we want to setup the SDRAM controller in C code
More that just that - It is used for the duration of board_init_f() which may include all manner of peripheral initialisation prior to relocating U-Boot into RAM.
Is it possible to just set up the DDR controller early in the process in assembler to avoid doing a Cache as ram? The reason I ask is because I might have trouble getting other mother boards to do this.
Als I was looking at 2 rutines. board_init_r() and board_init_f(). It appears that the code goes from assmbler to this board_init_f() then back to assembler then to board_init_r(). I am not sure of the reason for this.

On Thu, Jun 30, 2011 at 12:08 PM, Raleigh Boulware r_boulware@hotmail.com wrote:
Date: Thu, 30 Jun 2011 11:58:55 +1000 Subject: Re: more U-boot for Pentium From: graeme.russ@gmail.com To: r_boulware@hotmail.com CC: u-boot@lists.denx.de
On Thu, Jun 30, 2011 at 11:54 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
Hi Raleigh,
On Thu, Jun 30, 2011 at 11:16 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
I have been going through the code and I have stumbled accross a file called sc520_car.S that has something called Cache as ram. I am guessing that this is something special for the sc520 correct? Why was there a need to do this? Why was the Cache used like ram in the boot process?
Cache-As-RAM allows the CPU cache to be used as regular RAM while U-Boot is running from Flash before the onboard SDRAM has been initialised. This allows a temporary stack, and therefore C runtime environment to be created. This this allows you to write the SDRAM initialisation code in C which is a lot easier than assembler.
So this is pnly used if we want to setup the SDRAM controller in C code
More that just that - It is used for the duration of board_init_f() which may include all manner of peripheral initialisation prior to relocating U-Boot into RAM.
Is it possible to just set up the DDR controller early in the process in assembler to avoid doing a Cache as ram? The reason I ask is because I might have trouble getting other mother boards to do this.
Yes, you can setup the SDRAM controller in assembler. This would occur in place of the Cache-As-RAM init you see for the sc520. You also need to determine the memory size while you are at it (at a pinch, you can hard- code the memory size initially)
Als I was looking at 2 rutines. board_init_r() and board_init_f(). It appears that the code goes from assmbler to this board_init_f() then back to assembler then to board_init_r(). I am not sure of the reason for this.
board_init_f() runs from Flash - It is responsible for getting everything setup ready to run U-Boot from RAM. The last thing board_init_f does is copy U-Boot from Flash into RAM and perform the relocation fixups. board_init_f() then calls back into assembler at which point a new stack is created in RAM before jumping to the in-RAM copy of board_init_r(). Once inside board_init_r(), the Flash is never again accessed unless you save the environment or erase it and write a new U-Boot binary (i.e. you can physically remove the Flash chip and U-Boot will still run fine)
Regards,
Graeme

Thanks for your help I will study up on this more and get back with more questions next week! thanks for your help..
BTW I just bought an eprom programer off EBAY it will take quite some time to ship it from china, so i am making baby steps.. :)
Date: Thu, 30 Jun 2011 12:17:46 +1000 Subject: Re: more U-boot for Pentium From: graeme.russ@gmail.com To: r_boulware@hotmail.com CC: u-boot@lists.denx.de
On Thu, Jun 30, 2011 at 12:08 PM, Raleigh Boulware r_boulware@hotmail.com wrote:
Date: Thu, 30 Jun 2011 11:58:55 +1000 Subject: Re: more U-boot for Pentium From: graeme.russ@gmail.com To: r_boulware@hotmail.com CC: u-boot@lists.denx.de
On Thu, Jun 30, 2011 at 11:54 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
Hi Raleigh,
On Thu, Jun 30, 2011 at 11:16 AM, Raleigh Boulware r_boulware@hotmail.com wrote:
I have been going through the code and I have stumbled accross a file called sc520_car.S that has something called Cache as ram. I am guessing that this is something special for the sc520 correct? Why was there a need to do this? Why was the Cache used like ram in the boot process?
Cache-As-RAM allows the CPU cache to be used as regular RAM while U-Boot is running from Flash before the onboard SDRAM has been initialised. This allows a temporary stack, and therefore C runtime environment to be created. This this allows you to write the SDRAM initialisation code in C which is a lot easier than assembler.
So this is pnly used if we want to setup the SDRAM controller in C code
More that just that - It is used for the duration of board_init_f() which may include all manner of peripheral initialisation prior to relocating U-Boot into RAM.
Is it possible to just set up the DDR controller early in the process in assembler to avoid doing a Cache as ram? The reason I ask is because I might have trouble getting other mother boards to do this.
Yes, you can setup the SDRAM controller in assembler. This would occur in place of the Cache-As-RAM init you see for the sc520. You also need to determine the memory size while you are at it (at a pinch, you can hard- code the memory size initially)
Als I was looking at 2 rutines. board_init_r() and board_init_f(). It appears that the code goes from assmbler to this board_init_f() then back to assembler then to board_init_r(). I am not sure of the reason for this.
board_init_f() runs from Flash - It is responsible for getting everything setup ready to run U-Boot from RAM. The last thing board_init_f does is copy U-Boot from Flash into RAM and perform the relocation fixups. board_init_f() then calls back into assembler at which point a new stack is created in RAM before jumping to the in-RAM copy of board_init_r(). Once inside board_init_r(), the Flash is never again accessed unless you save the environment or erase it and write a new U-Boot binary (i.e. you can physically remove the Flash chip and U-Boot will still run fine)
Regards,
Graeme

Hey do you know of a good dissassmbler for looking at these ROM binary files? I have tried Ida on the web and others and they have not been able accurately dissassamble the BIN files.

Dear Raleigh Boulware,
In message col109-w1889A5502835E3D9DB37ADF7450@phx.gbl you wrote:
Hey do you know of a good dissassmbler for looking at these ROM binary fil es? I have tried Ida on the web and others and they have not been able accu rately dissassamble the BIN files.
objdump ?
Best regards,
Wolfgang Denk

Dear Raleigh Boulware,
In message col109-w1889A5502835E3D9DB37ADF7450@phx.gbl you wrote:
Hey do you know of a good dissassmbler for looking at these ROM binary fil es? I have tried Ida on the web and others and they have not been able accu rately dissassamble the BIN files.
objdump ?
Does objdump work on the raw rom 'u-boot.bin' files? i thought it was for only object files
Regards..

On Monday, July 11, 2011 19:29:18 Raleigh Boulware wrote:
Raleigh Boulware wrote:
Hey do you know of a good dissassmbler for looking at these ROM binary fil es? I have tried Ida on the web and others and they have not been able accu rately dissassamble the BIN files.
objdump ?
Does objdump work on the raw rom 'u-boot.bin' files? i thought it was for only object files
use -D and manually specify -m/-b and it'll disassemble the entire file as code. you'll need to ignore the data-decoded-as-code regions yourself. -mike
participants (4)
-
Graeme Russ
-
Mike Frysinger
-
Raleigh Boulware
-
Wolfgang Denk