xref: /rk3399_rockchip-uboot/doc/README.bcm7xxx (revision f36ea2f6e17621c4d9dd97c4dbfab62d03d061df)
1*f36ea2f6SThomas FitzsimmonsSummary
2*f36ea2f6SThomas Fitzsimmons=======
3*f36ea2f6SThomas Fitzsimmons
4*f36ea2f6SThomas FitzsimmonsThis document describes how to use U-Boot on the Broadcom 7445 SoC, as
5*f36ea2f6SThomas Fitzsimmonsa third stage bootloader loaded by Broadcom's BOLT bootloader.
6*f36ea2f6SThomas Fitzsimmons
7*f36ea2f6SThomas FitzsimmonsBOLT loads U-Boot as a generic ELF binary.  Some U-Boot features such
8*f36ea2f6SThomas Fitzsimmonsas networking are not yet available but other important features are,
9*f36ea2f6SThomas Fitzsimmonsincluding:
10*f36ea2f6SThomas Fitzsimmons
11*f36ea2f6SThomas Fitzsimmons   - ext4 file system traversal
12*f36ea2f6SThomas Fitzsimmons
13*f36ea2f6SThomas Fitzsimmons   - support for loading FIT images
14*f36ea2f6SThomas Fitzsimmons
15*f36ea2f6SThomas Fitzsimmons   - advanced scripting
16*f36ea2f6SThomas Fitzsimmons
17*f36ea2f6SThomas Fitzsimmons   - support for FIT-provided DTBs instead of relying on the
18*f36ea2f6SThomas Fitzsimmons     BOLT-provided DTB
19*f36ea2f6SThomas Fitzsimmons
20*f36ea2f6SThomas FitzsimmonsA customized version of this port has been used in production.  The
21*f36ea2f6SThomas Fitzsimmonssame approach may work on other BCM7xxx boards, with some
22*f36ea2f6SThomas Fitzsimmonsconfiguration adjustments and memory layout experimentation.
23*f36ea2f6SThomas Fitzsimmons
24*f36ea2f6SThomas FitzsimmonsBuild
25*f36ea2f6SThomas Fitzsimmons=====
26*f36ea2f6SThomas Fitzsimmons
27*f36ea2f6SThomas Fitzsimmonsmake bcm7445_defconfig
28*f36ea2f6SThomas Fitzsimmonsmake
29*f36ea2f6SThomas Fitzsimmons${CROSS_COMPILE}strip u-boot
30*f36ea2f6SThomas Fitzsimmons
31*f36ea2f6SThomas FitzsimmonsRun
32*f36ea2f6SThomas Fitzsimmons===
33*f36ea2f6SThomas Fitzsimmons
34*f36ea2f6SThomas FitzsimmonsFlash the u-boot binary into board storage, then invoke it from BOLT.
35*f36ea2f6SThomas FitzsimmonsFor example:
36*f36ea2f6SThomas Fitzsimmons
37*f36ea2f6SThomas FitzsimmonsBOLT> boot -bsu -elf flash0.u-boot1
38*f36ea2f6SThomas Fitzsimmons
39*f36ea2f6SThomas FitzsimmonsThis port assumes that I-cache and D-cache are already enabled when
40*f36ea2f6SThomas FitzsimmonsU-Boot is entered.
41*f36ea2f6SThomas Fitzsimmons
42*f36ea2f6SThomas FitzsimmonsFlattened Image Tree Support
43*f36ea2f6SThomas Fitzsimmons============================
44*f36ea2f6SThomas Fitzsimmons
45*f36ea2f6SThomas FitzsimmonsWhat follows is an example FIT image source file.  Build it with:
46*f36ea2f6SThomas Fitzsimmons
47*f36ea2f6SThomas Fitzsimmonsmkimage -f image.its image.itb
48*f36ea2f6SThomas Fitzsimmons
49*f36ea2f6SThomas FitzsimmonsBooting the resulting image.itb was tested on BOLT v1.20, with the
50*f36ea2f6SThomas Fitzsimmonsfollowing kernels:
51*f36ea2f6SThomas Fitzsimmons
52*f36ea2f6SThomas Fitzsimmonshttps://github.com/Broadcom/stblinux-3.14
53*f36ea2f6SThomas Fitzsimmonshttps://github.com/Broadcom/stblinux-4.1
54*f36ea2f6SThomas Fitzsimmonshttps://github.com/Broadcom/stblinux-4.9
55*f36ea2f6SThomas Fitzsimmons
56*f36ea2f6SThomas Fitzsimmonsand with a generic ARMv7 root file system.
57*f36ea2f6SThomas Fitzsimmons
58*f36ea2f6SThomas Fitzsimmonsimage.its:
59*f36ea2f6SThomas Fitzsimmons/dts-v1/;
60*f36ea2f6SThomas Fitzsimmons/ {
61*f36ea2f6SThomas Fitzsimmons	description = "BCM7445 FIT";
62*f36ea2f6SThomas Fitzsimmons	images {
63*f36ea2f6SThomas Fitzsimmons		kernel@1 {
64*f36ea2f6SThomas Fitzsimmons			description = "Linux kernel";
65*f36ea2f6SThomas Fitzsimmons			/*
66*f36ea2f6SThomas Fitzsimmons			 * This kernel image output format can be
67*f36ea2f6SThomas Fitzsimmons			 * generated with:
68*f36ea2f6SThomas Fitzsimmons			 *
69*f36ea2f6SThomas Fitzsimmons			 * make vmlinux
70*f36ea2f6SThomas Fitzsimmons			 * ${CROSS_COMPILE}objcopy -O binary -S vmlinux vmlinux.bin
71*f36ea2f6SThomas Fitzsimmons			 * gzip -9 vmlinux.bin
72*f36ea2f6SThomas Fitzsimmons			 *
73*f36ea2f6SThomas Fitzsimmons			 * For stblinux-3.14, the specific Broadcom
74*f36ea2f6SThomas Fitzsimmons			 * board type should be configured in the
75*f36ea2f6SThomas Fitzsimmons			 * kernel, for example CONFIG_BCM7445D0=y.
76*f36ea2f6SThomas Fitzsimmons			 */
77*f36ea2f6SThomas Fitzsimmons			data = /incbin/("<vmlinux.bin.gz>");
78*f36ea2f6SThomas Fitzsimmons			type = "kernel";
79*f36ea2f6SThomas Fitzsimmons			arch = "arm";
80*f36ea2f6SThomas Fitzsimmons			os = "linux";
81*f36ea2f6SThomas Fitzsimmons			compression = "gzip";
82*f36ea2f6SThomas Fitzsimmons			load = <0x8000>;
83*f36ea2f6SThomas Fitzsimmons			entry = <0x8000>;
84*f36ea2f6SThomas Fitzsimmons			hash@1 {
85*f36ea2f6SThomas Fitzsimmons				algo = "sha256";
86*f36ea2f6SThomas Fitzsimmons			};
87*f36ea2f6SThomas Fitzsimmons		};
88*f36ea2f6SThomas Fitzsimmons		ramdisk@1 {
89*f36ea2f6SThomas Fitzsimmons			description = "Initramfs root file system";
90*f36ea2f6SThomas Fitzsimmons			data = /incbin/("<initramfs.cpio.gz>");
91*f36ea2f6SThomas Fitzsimmons			type = "ramdisk";
92*f36ea2f6SThomas Fitzsimmons			arch = "arm";
93*f36ea2f6SThomas Fitzsimmons			os = "linux";
94*f36ea2f6SThomas Fitzsimmons			compression = "gzip";
95*f36ea2f6SThomas Fitzsimmons			/*
96*f36ea2f6SThomas Fitzsimmons			 * Set the environment variable initrd_high to
97*f36ea2f6SThomas Fitzsimmons			 * 0xffffffff, and set "load" and "entry" here
98*f36ea2f6SThomas Fitzsimmons			 * to 0x0 to keep initramfs in-place and to
99*f36ea2f6SThomas Fitzsimmons			 * accommodate stblinux bmem/CMA reservations.
100*f36ea2f6SThomas Fitzsimmons			 */
101*f36ea2f6SThomas Fitzsimmons			load = <0x0>;
102*f36ea2f6SThomas Fitzsimmons			entry = <0x0>;
103*f36ea2f6SThomas Fitzsimmons			hash@1 {
104*f36ea2f6SThomas Fitzsimmons				algo = "sha256";
105*f36ea2f6SThomas Fitzsimmons			};
106*f36ea2f6SThomas Fitzsimmons		};
107*f36ea2f6SThomas Fitzsimmons		fdt@1 {
108*f36ea2f6SThomas Fitzsimmons			description = "Device tree dumped from BOLT";
109*f36ea2f6SThomas Fitzsimmons			/*
110*f36ea2f6SThomas Fitzsimmons			 * This DTB should be similar to the
111*f36ea2f6SThomas Fitzsimmons			 * BOLT-generated device tree, after BOLT has
112*f36ea2f6SThomas Fitzsimmons			 * done its runtime modifications to it.  For
113*f36ea2f6SThomas Fitzsimmons			 * example, it can be dumped from within
114*f36ea2f6SThomas Fitzsimmons			 * U-Boot (at ${fdtcontroladdr}), after BOLT
115*f36ea2f6SThomas Fitzsimmons			 * has loaded U-Boot.  The result can be added
116*f36ea2f6SThomas Fitzsimmons			 * to the Linux source tree as a .dts file.
117*f36ea2f6SThomas Fitzsimmons			 *
118*f36ea2f6SThomas Fitzsimmons			 * To support modifications to the device tree
119*f36ea2f6SThomas Fitzsimmons			 * in-place in U-Boot, add to Linux's
120*f36ea2f6SThomas Fitzsimmons			 * arch/arm/boot/dts/Makefile:
121*f36ea2f6SThomas Fitzsimmons			 *
122*f36ea2f6SThomas Fitzsimmons			 * DTC_FLAGS ?= -p 4096
123*f36ea2f6SThomas Fitzsimmons			 *
124*f36ea2f6SThomas Fitzsimmons			 * This will leave some padding in the DTB and
125*f36ea2f6SThomas Fitzsimmons			 * thus reserve room for node additions.
126*f36ea2f6SThomas Fitzsimmons			 *
127*f36ea2f6SThomas Fitzsimmons			 * Also, set the environment variable fdt_high
128*f36ea2f6SThomas Fitzsimmons			 * to 0xffffffff to keep the DTB in-place and
129*f36ea2f6SThomas Fitzsimmons			 * to accommodate stblinux bmem/CMA
130*f36ea2f6SThomas Fitzsimmons			 * reservations.
131*f36ea2f6SThomas Fitzsimmons			 */
132*f36ea2f6SThomas Fitzsimmons			data = /incbin/("<bolt-<version>.dtb");
133*f36ea2f6SThomas Fitzsimmons			type = "flat_dt";
134*f36ea2f6SThomas Fitzsimmons			arch = "arm";
135*f36ea2f6SThomas Fitzsimmons			compression = "none";
136*f36ea2f6SThomas Fitzsimmons			hash@1 {
137*f36ea2f6SThomas Fitzsimmons				algo = "sha256";
138*f36ea2f6SThomas Fitzsimmons			};
139*f36ea2f6SThomas Fitzsimmons		};
140*f36ea2f6SThomas Fitzsimmons	};
141*f36ea2f6SThomas Fitzsimmons	configurations {
142*f36ea2f6SThomas Fitzsimmons		default = "conf@bcm7445";
143*f36ea2f6SThomas Fitzsimmons		conf@bcm7445 {
144*f36ea2f6SThomas Fitzsimmons			description = "BCM7445 configuration";
145*f36ea2f6SThomas Fitzsimmons			kernel = "kernel@1";
146*f36ea2f6SThomas Fitzsimmons			ramdisk = "ramdisk@1";
147*f36ea2f6SThomas Fitzsimmons			fdt = "fdt@1";
148*f36ea2f6SThomas Fitzsimmons		};
149*f36ea2f6SThomas Fitzsimmons	};
150*f36ea2f6SThomas Fitzsimmons};
151