3 P2020RDB is a Low End Dual core platform supporting the P2020 processor
4 of QorIQ series. P2020 is an e500 based dual core SOC.
8 To build the u-boot for P2020RDB:
14 RDB board for P2020 has two flash banks. They are both present on boot.
16 Booting by default is always from the boot bank at 0xef00_0000.
20 0xef00_0000 - 0xef7f_ffff Alernate bank 8MB
21 0xe800_0000 - 0xefff_ffff Boot bank 8MB
23 0xef78_0000 - 0xef7f_ffff Alternate u-boot address 512KB
24 0xeff8_0000 - 0xefff_ffff Boot u-boot address 512KB
26 Switch settings to boot from the NOR flash banks
27 ------------------------------------------------
28 SW4[8]=0 default NOR Flash bank
29 SW4[8]=1 Alternate NOR Flash bank
33 To place a new u-boot image in the alternate flash bank and then boot
34 with that new image temporarily, use this:
35 tftp 1000000 u-boot.bin
36 erase ef780000 ef7fffff
37 cp.b 1000000 ef780000 80000
39 Now to boot from the alternate bank change the SW4[8] from 0 to 1.
41 To program the image in the boot flash bank:
42 tftp 1000000 u-boot.bin
44 erase eff80000 ffffffff
45 cp.b 1000000 eff80000 80000
47 Using the Device Tree Source File
48 ---------------------------------
49 To create the DTB (Device Tree Binary) image file,
50 use a command similar to this:
52 dtc -b 0 -f -I dts -O dtb p2020rdb.dts > p2020rdb.dtb
54 Likely, that .dts file will come from here;
56 linux-2.6/arch/powerpc/boot/dts/p2020rdb.dts
60 Place a linux uImage in the TFTP disk area.
62 tftp 1000000 uImage.p2020rdb
63 tftp 2000000 rootfs.ext2.gz.uboot
64 tftp c00000 p2020rdb.dtb
65 bootm 1000000 2000000 c00000
67 Implementing AMP(Asymmetric MultiProcessing)
68 ---------------------------------------------
69 1. Build kernel image for core0:
71 a. $ make 85xx/p1_p2_rdb_defconfig
74 - un-select "Processor support"->
75 "Symetric multi-processing support"
79 d. $ cp arch/powerpc/boot/uImage /tftpboot/uImage.core0
81 2. Build kernel image for core1:
83 a. $ make 85xx/p1_p2_rdb_defconfig
86 - Un-select "Processor support"->
87 "Symetric multi-processing support"
88 - Select "Advanced setup" ->
89 "Prompt for advanced kernel configuration options"
91 "Set physical address where the kernel is loaded"
92 and set it to 0x20000000, asssuming core1 will
94 - Select "Set custom page offset address"
95 - Select "Set custom kernel base address"
96 - Select "Set maximum low memory"
97 - "Exit" and save the selection.
101 d. $ cp arch/powerpc/boot/uImage /tftpboot/uImage.core1
103 3. Create dtb for core0:
105 $ dtc -I dts -O dtb -f -b 0
106 arch/powerpc/boot/dts/p2020rdb_camp_core0.dts >
107 /tftpboot/p2020rdb_camp_core0.dtb
109 4. Create dtb for core1:
111 $ dtc -I dts -O dtb -f -b 1
112 arch/powerpc/boot/dts/p2020rdb_camp_core1.dts >
113 /tftpboot/p2020rdb_camp_core1.dtb
115 5. Bring up two cores separately:
117 a. Power on the board, under u-boot prompt:
120 => setenv bootargs root=/dev/ram rw console=ttyS0,115200
121 b. Bring up core1's kernel first:
122 => setenv bootm_low 0x20000000
123 => setenv bootm_size 0x10000000
124 => tftp 21000000 uImage.core1
125 => tftp 22000000 ramdiskfile
126 => tftp 20c00000 p2020rdb_camp_core1.dtb
128 => bootm start 21000000 22000000 20c00000
133 => fdt chosen $initrd_start $initrd_end
135 => cpu 1 release $bootm_low - $fdtaddr -
136 c. Bring up core0's kernel(on the same u-boot console):
137 => setenv bootm_low 0
138 => setenv bootm_size 0x20000000
139 => tftp 1000000 uImage.core0
140 => tftp 2000000 ramdiskfile
141 => tftp c00000 p2020rdb_camp_core0.dtb
142 => bootm 1000000 2000000 c00000
144 Please note only core0 will run u-boot, core1 starts kernel directly
145 after "cpu release" command is issued.