123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- Overview
- --------
- P2020RDB is a Low End Dual core platform supporting the P2020 processor
- of QorIQ series. P2020 is an e500 based dual core SOC.
- Building U-boot
- -----------
- To build the u-boot for P2020RDB:
- make P2020RDB_config
- make
- NOR Flash Banks
- -----------
- RDB board for P2020 has two flash banks. They are both present on boot.
- Booting by default is always from the boot bank at 0xef00_0000.
- Memory Map
- ----------
- 0xef00_0000 - 0xef7f_ffff Alternate bank 8MB
- 0xe800_0000 - 0xefff_ffff Boot bank 8MB
- 0xef78_0000 - 0xef7f_ffff Alternate u-boot address 512KB
- 0xeff8_0000 - 0xefff_ffff Boot u-boot address 512KB
- Switch settings to boot from the NOR flash banks
- ------------------------------------------------
- SW4[8]=0 default NOR Flash bank
- SW4[8]=1 Alternate NOR Flash bank
- Flashing Images
- ---------------
- To place a new u-boot image in the alternate flash bank and then boot
- with that new image temporarily, use this:
- tftp 1000000 u-boot.bin
- erase ef780000 ef7fffff
- cp.b 1000000 ef780000 80000
- Now to boot from the alternate bank change the SW4[8] from 0 to 1.
- 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
- 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 p2020rdb.dts > p2020rdb.dtb
- Likely, that .dts file will come from here;
- linux-2.6/arch/powerpc/boot/dts/p2020rdb.dts
- Booting Linux
- -------------
- Place a linux uImage in the TFTP disk area.
- tftp 1000000 uImage.p2020rdb
- tftp 2000000 rootfs.ext2.gz.uboot
- tftp c00000 p2020rdb.dtb
- bootm 1000000 2000000 c00000
- Implementing AMP(Asymmetric MultiProcessing)
- ---------------------------------------------
- 1. Build kernel image for core0:
- a. $ make 85xx/p1_p2_rdb_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/p1_p2_rdb_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/p2020rdb_camp_core0.dts >
- /tftpboot/p2020rdb_camp_core0.dtb
- 4. Create dtb for core1:
- $ dtc -I dts -O dtb -f -b 1
- arch/powerpc/boot/dts/p2020rdb_camp_core1.dts >
- /tftpboot/p2020rdb_camp_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 uImage.core1
- => tftp 22000000 ramdiskfile
- => tftp 20c00000 p2020rdb_camp_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 uImage.core0
- => tftp 2000000 ramdiskfile
- => tftp c00000 p2020rdb_camp_core0.dtb
- => bootm 1000000 2000000 c00000
- Please note only core0 will run u-boot, core1 starts kernel directly
- after "cpu release" command is issued.
|