mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-17 23:48:52 +09:00
![Bin Meng](/assets/img/avatar_default.png)
Correct spelling of "U-Boot" shall be used in all written text (documentation, comments in source files etc.). Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Heiko Schocher <hs@denx.de> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Minkyu Kang <mk7.kang@samsung.com>
270 lines
8.8 KiB
Plaintext
270 lines
8.8 KiB
Plaintext
Intro:
|
|
======
|
|
|
|
The SBC8548 is a stand alone single board computer with a 1GHz
|
|
MPC8548 CPU, 8MB boot flash, 64MB user flash and, 256MB DDR2 400MHz
|
|
memory. It also has 128MB SDRAM 100MHz LBC memory, with both a PCI-e,
|
|
and a PCI-X slot, dual mini-DB9 for UART, and dual RJ-45 for eTSEC
|
|
ethernet connections.
|
|
|
|
U-Boot Configuration:
|
|
=====================
|
|
|
|
The following possible U-Boot configuration targets are available:
|
|
|
|
1) sbc8548_config
|
|
2) sbc8548_PCI_33_config
|
|
3) sbc8548_PCI_66_config
|
|
4) sbc8548_PCI_33_PCIE_config
|
|
5) sbc8548_PCI_66_PCIE_config
|
|
|
|
Generally speaking, most people should choose to use #5. Details
|
|
of each choice are listed below.
|
|
|
|
Choice #1 does not enable CONFIG_PCI, and assumes that the PCI slot
|
|
will be left empty (M66EN high), and so the board will operate with
|
|
a base clock of 66MHz. Note that you need both PCI enabled in U-Boot
|
|
and linux in order to have functional PCI under linux.
|
|
|
|
The second enables PCI support and builds for a 33MHz clock rate. Note
|
|
that if a 33MHz 32bit card is inserted in the slot, then the whole board
|
|
will clock down to a 33MHz base clock instead of the default 66MHz. This
|
|
will change the baud clocks and mess up your serial console output if you
|
|
were previously running at 66MHz. If you want to use a 33MHz PCI card,
|
|
then you should build a U-Boot with a _PCI_33_ config and store this
|
|
to flash prior to powering down the board and inserting the 33MHz PCI
|
|
card. [The above discussion assumes that the SW2[1-4] has not been changed
|
|
to reflect a different CCB:SYSCLK ratio]
|
|
|
|
The third option builds PCI support in, and leaves the clocking at the
|
|
default 66MHz. Options four and five are just repeats of option two
|
|
and three, but with PCI-e support enabled as well.
|
|
|
|
PCI output listing with an intel e1000 PCI-x and a Syskonnect SK-9Exx
|
|
is shown below for sbc8548_PCI_66_PCIE_config. (Note that PCI-e with
|
|
a 33MHz PCI configuration is currently untested.)
|
|
|
|
=> pci 0
|
|
Scanning PCI devices on bus 0
|
|
BusDevFun VendorId DeviceId Device Class Sub-Class
|
|
_____________________________________________________________
|
|
00.00.00 0x1057 0x0012 Processor 0x20
|
|
00.01.00 0x8086 0x1026 Network controller 0x00
|
|
=> pci 1
|
|
Scanning PCI devices on bus 1
|
|
BusDevFun VendorId DeviceId Device Class Sub-Class
|
|
_____________________________________________________________
|
|
01.00.00 0x1957 0x0012 Processor 0x20
|
|
=> pci 2
|
|
Scanning PCI devices on bus 2
|
|
BusDevFun VendorId DeviceId Device Class Sub-Class
|
|
_____________________________________________________________
|
|
02.00.00 0x1148 0x9e00 Network controller 0x00
|
|
=>
|
|
|
|
Memory Size and using SPD:
|
|
==========================
|
|
|
|
The default configuration uses hard coded memory configuration settings
|
|
for 256MB of DDR2 @400MHz. It does not by default use the DDR2 SPD
|
|
EEPROM data to read what memory is installed.
|
|
|
|
There is a hardware errata, which causes the older local bus SDRAM
|
|
SPD EEPROM to land at the same address as the DDR2 SPD EEPROM, so
|
|
that the SPD data can not be read reliably. You can test if your
|
|
board has the errata fix by running "i2c probe". If you see 0x53
|
|
as a valid device, it has been fixed. If you only see 0x50, 0x51
|
|
then your board does not have the fix.
|
|
|
|
You can also visually inspect the board to see if this hardware
|
|
fix has been applied:
|
|
|
|
1) Remove R314 (RES-R0174-033, 1K, 0603). R314 is located on
|
|
the back of the PCB behind the DDR SDRAM SODIMM connector.
|
|
2) Solder RES-R0174-033 (1K, 0603) resistor from R314 pin 2 pad
|
|
to R313 pin 2. Pin 2 for each resistor is the end of the
|
|
resistor closest to the CPU.
|
|
|
|
Boards without the mod will have R314 and R313 in parallel, like "||".
|
|
After the mod, they will be touching and form an "L" shape.
|
|
|
|
If you want to upgrade to larger RAM size, you can simply enable
|
|
#define CONFIG_SPD_EEPROM
|
|
#define CONFIG_DDR_SPD
|
|
in include/configs/sbc8548.h file. (The lines are already there
|
|
but listed as #undef).
|
|
|
|
If you did the i2c test, and your board does not have the errata
|
|
fix, then you will have to physically remove the LBC 128MB DIMM
|
|
from the board's socket to resolve the above i2c address overlap
|
|
issue and allow SPD autodetection of RAM to work.
|
|
|
|
|
|
Updating U-Boot with U-Boot:
|
|
============================
|
|
|
|
Note that versions of U-Boot up to and including 2009.08 had U-Boot stored
|
|
at 0xfff8_0000 -> 0xffff_ffff (512k). Currently it is being stored from
|
|
0xfffa_0000 -> 0xffff_ffff (384k). If you use an old macro/script to
|
|
update U-Boot with U-Boot and it uses the old address, you will render
|
|
your board inoperable, and you will require JTAG recovery.
|
|
|
|
The following steps list how to update with the current address:
|
|
|
|
tftp u-boot.bin
|
|
md 200000 10
|
|
protect off all
|
|
erase fffa0000 ffffffff
|
|
cp.b 200000 fffa0000 60000
|
|
md fffa0000 10
|
|
protect on all
|
|
|
|
The "md" steps in the above are just a precautionary step that allow
|
|
you to confirm the U-Boot version that was downloaded, and then confirm
|
|
that it was copied to flash.
|
|
|
|
The above assumes that you are using the default board settings which
|
|
have U-Boot in the 8MB flash, tied to /CS0.
|
|
|
|
If you are running the default 8MB /CS0 settings but want to store an
|
|
image in the SODIMM that is built with CONFIG_SYS_ALT_BOOT enabled,
|
|
(as a backup, etc) then the steps will become:
|
|
|
|
tftp u-boot.bin
|
|
md 200000 10
|
|
protect off all
|
|
era eff00000 efffffff
|
|
cp.b 200000 eff00000 100000
|
|
md eff00000 10
|
|
protect on all
|
|
|
|
Finally, if you are running the alternate 64MB /CS0 settings and want
|
|
to update the in-use U-Boot image, then (again with CONFIG_SYS_ALT_BOOT
|
|
enabled) the steps will become:
|
|
|
|
tftp u-boot.bin
|
|
md 200000 10
|
|
protect off all
|
|
era fff00000 ffffffff
|
|
cp.b 200000 fff00000 100000
|
|
md fff00000 10
|
|
protect on all
|
|
|
|
|
|
Hardware Reference:
|
|
===================
|
|
|
|
The following contains some summary information on hardware settings
|
|
that are relevant to U-Boot, based on the board manual. For the
|
|
most up to date and complete details of the board, please request the
|
|
reference manual ERG-00327-001.pdf from www.windriver.com
|
|
|
|
Boot flash:
|
|
intel V28F640Jx, 8192x8 (one device) at 0xff80_0000
|
|
|
|
Sodimm flash:
|
|
intel V28F128Jx, 16384x8 (4 devices) at 0xfb80_0000
|
|
Note that this address reflects the default setting for
|
|
the JTAG debugging tools, but since the alignment is
|
|
rather inconvenient, U-Boot puts it at 0xec00_0000.
|
|
|
|
|
|
Jumpers:
|
|
|
|
Jumper Name ON OFF
|
|
----------------------------------------------------------------
|
|
JP12 CS0/CS6 swap see note[*] see note[*]
|
|
|
|
JP13 SODIMM flash write OK writes disabled
|
|
write prot.
|
|
|
|
JP14 HRESET/TRST joined isolated
|
|
|
|
JP15 PWR ON when AC pwr use S1 for on/off
|
|
|
|
JP16 Demo LEDs lit not lit
|
|
|
|
JP19 PCI mode PCI PCI-X
|
|
|
|
|
|
[*]JP12, when jumpered parallel to the SODIMM, puts the boot flash
|
|
onto /CS0 and the SODIMM flash on /CS6 (default). When JP12
|
|
is jumpered parallel to the LBC-SDRAM, then /CS0 is for the
|
|
SODIMM flash and /CS6 is for the boot flash. Note that in this
|
|
alternate setting, you also need to switch SW2.8 to ON.
|
|
See the setting CONFIG_SYS_ALT_BOOT if you want to use this setting
|
|
and boot U-Boot from the 64MB SODIMM
|
|
|
|
|
|
Switches:
|
|
|
|
The defaults are marked with a *
|
|
|
|
Name Desc. ON OFF
|
|
------------------------------------------------------------------
|
|
S1 Pwr toggle n/a n/a
|
|
|
|
SW2.1 CFG_SYS_PLL0 1 0*
|
|
SW2.2 CFG_SYS_PLL1 1* 0
|
|
SW2.3 CFG_SYS_PLL2 1* 0
|
|
SW2.4 CFG_SYS_PLL3 1 0*
|
|
SW2.5 CFG_CORE_PLL0 1* 0
|
|
SW2.6 CFG_CORE_PLL1 1 0*
|
|
SW2.7 CFG_CORE_PLL2 1* 0
|
|
SW2.8 CFG_ROM_LOC1 1 0*
|
|
|
|
SW3.1 CFG_HOST_AGT0 1* 0
|
|
SW3.2 CFG_HOST_AGT1 1* 0
|
|
SW3.3 CFG_HOST_AGT2 1* 0
|
|
SW3.4 CFG_IO_PORTS0 1* 0
|
|
SW3.5 CFG_IO_PORTS0 1 0*
|
|
SW3.6 CFG_IO_PORTS0 1 0*
|
|
|
|
SerDes CLK(MHz) SW5.1 SW5.2
|
|
----------------------------------------------
|
|
25 0 0
|
|
100* 1 0
|
|
125 0 1
|
|
200 1 1
|
|
|
|
SerDes CLK spread SW5.3 SW5.4
|
|
----------------------------------------------
|
|
+/- 0.25% 0 0
|
|
-0.50% 1 0
|
|
-0.75% 0 1
|
|
No Spread* 1 1
|
|
|
|
SW4 settings are readable from the EPLD and are currently not used for
|
|
any hardware settings (i.e. user configuration switches).
|
|
|
|
LEDs:
|
|
|
|
Name Desc. ON OFF
|
|
------------------------------------------------------------------
|
|
D13 PCI/PCI-X PCI-X PCI
|
|
D14 3.3V PWR 3.3V no power
|
|
D15 SYSCLK 66MHz 33MHz
|
|
|
|
|
|
Default Memory Map:
|
|
|
|
start end CS<n> width Desc.
|
|
----------------------------------------------------------------------
|
|
0000_0000 0fff_ffff MCS0,1 64 DDR2 (256MB)
|
|
f000_0000 f7ff_ffff CS3,4 32 LB SDRAM (128MB)
|
|
f800_0000 f8b0_1fff CS5 - EPLD
|
|
fb80_0000 ff7f_ffff CS6 32 SODIMM flash (64MB) [*]
|
|
ff80_0000 ffff_ffff CS0 8 Boot flash (8MB)
|
|
|
|
[*] fb80 represents the default programmed by WR JTAG register files,
|
|
but U-Boot places the flash at either ec00 or fc00 based on JP12.
|
|
|
|
The EPLD on CS5 demuxes the following devices at the following offsets:
|
|
|
|
offset size width device
|
|
--------------------------------------------------------
|
|
0 1fff 8 7 segment display LED
|
|
10_0000 1fff 4 user switches
|
|
30_0000 1fff 4 HW Rev. register
|
|
b0_0000 1fff 8 8kB EEPROM
|