|
|
|
Overview
|
|
|
|
--------
|
|
|
|
MPC8572DS is a high-performance computing, evaluation and development platform
|
|
|
|
supporting the mpc8572 PowerTM processor.
|
|
|
|
|
|
|
|
Building U-Boot
|
|
|
|
-----------
|
|
|
|
make MPC8572DS_config
|
|
|
|
make
|
|
|
|
|
|
|
|
Flash Banks
|
|
|
|
-----------
|
|
|
|
MPC8572DS board has two flash banks. They are both present on boot, but their
|
|
|
|
locations can be swapped using the dip-switch SW9[1:2].
|
|
|
|
|
|
|
|
Booting is always from the boot bank at 0xec00_0000.
|
|
|
|
|
|
|
|
|
|
|
|
Memory Map
|
|
|
|
----------
|
|
|
|
|
|
|
|
0xe800_0000 - 0xebff_ffff Alternate bank 64MB
|
|
|
|
0xec00_0000 - 0xefff_ffff Boot bank 64MB
|
|
|
|
|
|
|
|
0xebf8_0000 - 0xebff_ffff Alternate U-Boot address 512KB
|
|
|
|
0xeff8_0000 - 0xefff_ffff Boot U-Boot address 512KB
|
|
|
|
|
|
|
|
|
|
|
|
Flashing Images
|
|
|
|
---------------
|
|
|
|
|
|
|
|
To place a new U-Boot image in the alternate flash bank and then reset with that
|
|
|
|
new image temporarily, use this:
|
|
|
|
|
|
|
|
tftp 1000000 u-boot.bin
|
|
|
|
erase ebf80000 ebffffff
|
|
|
|
cp.b 1000000 ebf80000 80000
|
|
|
|
pixis_reset altbank
|
|
|
|
|
|
|
|
|
|
|
|
To program the image in the boot flash bank:
|
|
|
|
|
|
|
|
tftp 1000000 u-boot.bin
|
|
|
|
protect off all
|
|
|
|
erase eff80000 ffffffff
|
|
|
|
cp.b 1000000 eff80000 80000
|
|
|
|
|
|
|
|
|
|
|
|
The pixis_reset command
|
|
|
|
-----------------------
|
|
|
|
The command - "pixis_reset", is introduced to reset mpc8572ds board
|
|
|
|
using the FPGA sequencer. When the board restarts, it has the option
|
|
|
|
of using either the current or alternate flash bank as the boot
|
|
|
|
image, with or without the watchdog timer enabled, and finally with
|
|
|
|
or without frequency changes.
|
|
|
|
|
|
|
|
Usage is;
|
|
|
|
|
|
|
|
pixis_reset
|
|
|
|
pixis_reset altbank
|
|
|
|
pixis_reset altbank wd
|
|
|
|
pixis_reset altbank cf <SYSCLK freq> <COREPLL ratio> <MPXPLL ratio>
|
|
|
|
pixis_reset cf <SYSCLK freq> <COREPLL ratio> <MPXPLL ratio>
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
|
|
|
/* reset to current bank, like "reset" command */
|
|
|
|
pixis_reset
|
|
|
|
|
|
|
|
/* reset board but use the to alternate flash bank */
|
|
|
|
pixis_reset altbank
|
|
|
|
|
|
|
|
|
|
|
|
Using the Device Tree Source File
|
|
|
|
---------------------------------
|
|
|
|
To create the DTB (Device Tree Binary) image file,
|
|
|
|
use a command similar to this:
|
|
|
|
|
|
|
|
dtc -b 0 -f -I dts -O dtb mpc8572ds.dts > mpc8572ds.dtb
|
|
|
|
|
|
|
|
Likely, that .dts file will come from here;
|
|
|
|
|
|
|
|
linux-2.6/arch/powerpc/boot/dts/mpc8572ds.dts
|
|
|
|
|
|
|
|
|
|
|
|
Booting Linux
|
|
|
|
-------------
|
|
|
|
|
|
|
|
Place a linux uImage in the TFTP disk area.
|
|
|
|
|
|
|
|
tftp 1000000 uImage.8572
|
|
|
|
tftp c00000 mpc8572ds.dtb
|
|
|
|
bootm 1000000 - c00000
|
|
|
|
|
|
|
|
|
|
|
|
Implementing AMP(Asymmetric MultiProcessing)
|
|
|
|
-------------
|
|
|
|
1. Build kernel image for core0:
|
|
|
|
|
|
|
|
a. $ make 85xx/mpc8572_ds_defconfig
|
|
|
|
|
|
|
|
b. $ make menuconfig
|
|
|
|
- un-select "Processor support"->"Symetric multi-processing support"
|
|
|
|
|
|
|
|
c. $ make uImage
|
|
|
|
|
|
|
|
d. $ cp arch/powerpc/boot/uImage /tftpboot/uImage.core0
|
|
|
|
|
|
|
|
2. Build kernel image for core1:
|
|
|
|
|
|
|
|
a. $ make 85xx/mpc8572_ds_defconfig
|
|
|
|
|
|
|
|
b. $ make menuconfig
|
|
|
|
- Un-select "Processor support"->"Symetric multi-processing support"
|
|
|
|
- Select "Advanced setup" -> " Prompt for advanced kernel
|
|
|
|
configuration options"
|
|
|
|
- Select "Set physical address where the kernel is loaded" and
|
|
|
|
set it to 0x20000000, assuming core1 will start from 512MB.
|
|
|
|
- Select "Set custom page offset address"
|
|
|
|
- Select "Set custom kernel base address"
|
|
|
|
- Select "Set maximum low memory"
|
|
|
|
- "Exit" and save the selection.
|
|
|
|
|
|
|
|
c. $ make uImage
|
|
|
|
|
|
|
|
d. $ cp arch/powerpc/boot/uImage /tftpboot/uImage.core1
|
|
|
|
|
|
|
|
3. Create dtb for core0:
|
|
|
|
|
|
|
|
$ dtc -I dts -O dtb -f -b 0 arch/powerpc/boot/dts/mpc8572ds_core0.dts > /tftpboot/mpc8572ds_core0.dtb
|
|
|
|
|
|
|
|
4. Create dtb for core1:
|
|
|
|
|
|
|
|
$ dtc -I dts -O dtb -f -b 1 arch/powerpc/boot/dts/mpc8572ds_core1.dts > /tftpboot/mpc8572ds_core1.dtb
|
|
|
|
|
|
|
|
5. Bring up two cores separately:
|
|
|
|
|
|
|
|
a. Power on the board, under U-Boot prompt:
|
|
|
|
=> setenv <serverip>
|
|
|
|
=> setenv <ipaddr>
|
|
|
|
=> setenv bootargs root=/dev/ram rw console=ttyS0,115200
|
|
|
|
b. Bring up core1's kernel first:
|
|
|
|
=> setenv bootm_low 0x20000000
|
|
|
|
=> setenv bootm_size 0x10000000
|
|
|
|
=> tftp 21000000 8572/uImage.core1
|
|
|
|
=> tftp 22000000 8572/ramdiskfile
|
|
|
|
=> tftp 20c00000 8572/mpc8572ds_core1.dtb
|
|
|
|
=> interrupts off
|
|
|
|
=> bootm start 21000000 22000000 20c00000
|
|
|
|
=> bootm loados
|
|
|
|
=> bootm ramdisk
|
|
|
|
=> bootm fdt
|
|
|
|
=> fdt boardsetup
|
|
|
|
=> fdt chosen $initrd_start $initrd_end
|
|
|
|
=> bootm prep
|
|
|
|
=> cpu 1 release $bootm_low - $fdtaddr -
|
|
|
|
c. Bring up core0's kernel(on the same U-Boot console):
|
|
|
|
=> setenv bootm_low 0
|
|
|
|
=> setenv bootm_size 0x20000000
|
|
|
|
=> tftp 1000000 8572/uImage.core0
|
|
|
|
=> tftp 2000000 8572/ramdiskfile
|
|
|
|
=> tftp c00000 8572/mpc8572ds_core0.dtb
|
|
|
|
=> bootm 1000000 2000000 c00000
|
|
|
|
|
|
|
|
Please note only core0 will run U-Boot, core1 starts kernel directly after
|
|
|
|
"cpu release" command is issued.
|