diff options
| author | Mark Hatle <mark.hatle@xilinx.com> | 2021-04-22 09:54:47 -0700 |
|---|---|---|
| committer | Sai Hari Chandana Kalluri <chandana.kalluri@xilinx.com> | 2021-07-14 14:57:15 -0700 |
| commit | 674d7ba0f675f92bea884165558ef080b58e39c5 (patch) | |
| tree | 410c5ad5e3bf03807ddd59f901f23438838ca5e5 /meta-xilinx-standalone | |
| parent | 69593b46cce96e89e5a783bf109ec2b274e03f99 (diff) | |
| download | meta-xilinx-674d7ba0f675f92bea884165558ef080b58e39c5.tar.gz | |
fsbl/fsbl-firmware: Split the packaging and building of the fsbl
Following the example of the psm, pmu and plm, we split the FSBL into both
a packaging component (fsbl) and the build of the firmware (fsbl-firmware).
This also adds an additional multilib, fsbl-fw, that is used to handle the
multiconfig version, as the Linux and baremetal builds are done differently.
Typical build approach is:
Add to local.conf:
BBMULTICONFIG += "fsbl-fw"
then build using:
MACHINE=zynqmp-generic bitbake fsbl
Note, while 'zynq' is implemented, it does not currently function. To
build the fsbl for zynq, you must use the meta-xilinx-tools version.
Signed-off-by: Mark Hatle <mark.hatle@xilinx.com>
Diffstat (limited to 'meta-xilinx-standalone')
5 files changed, 336 insertions, 0 deletions
diff --git a/meta-xilinx-standalone/conf/multiconfig/fsbl-fw.conf b/meta-xilinx-standalone/conf/multiconfig/fsbl-fw.conf new file mode 100644 index 00000000..2a603c9e --- /dev/null +++ b/meta-xilinx-standalone/conf/multiconfig/fsbl-fw.conf | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | # Build the FSBL for Zynq and ZynqMP | ||
| 2 | |||
| 3 | DISTRO = "xilinx-standalone" | ||
| 4 | |||
| 5 | TMPDIR = "${TOPDIR}/tmp-fsbl-fw" | ||
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/embeddedsw/fsbl-fixups.patch b/meta-xilinx-standalone/recipes-bsp/embeddedsw/embeddedsw/fsbl-fixups.patch new file mode 100644 index 00000000..2c3b4e67 --- /dev/null +++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/embeddedsw/fsbl-fixups.patch | |||
| @@ -0,0 +1,230 @@ | |||
| 1 | Index: git/lib/sw_apps/zynqmp_fsbl/misc/makefile | ||
| 2 | =================================================================== | ||
| 3 | --- git.orig/lib/sw_apps/zynqmp_fsbl/misc/makefile | ||
| 4 | +++ git/lib/sw_apps/zynqmp_fsbl/misc/makefile | ||
| 5 | @@ -4,15 +4,46 @@ DRIVER_LIB_VERSION = 1.0 | ||
| 6 | PROC ?= a53 | ||
| 7 | A53_STATE ?= 64 | ||
| 8 | |||
| 9 | +ifeq "${CROSS_COMP}" "armclang" | ||
| 10 | +LTO_FLAGS = -mfpu=fp-armv8 -Wall -Wextra -march=armv8-a --target=aarch64-arm-none-eabi -Oz | ||
| 11 | +else | ||
| 12 | +LTO_FLAGS = -Wall -Wextra -Os -flto -ffat-lto-objects | ||
| 13 | +endif | ||
| 14 | + | ||
| 15 | ifeq "${PROC}" "a53" | ||
| 16 | PROCESSOR = zynqmp_fsbl_bsp/psu_cortexa53_0 | ||
| 17 | +ifeq "${A53_STATE}" "64" | ||
| 18 | +ifeq "${CROSS_COMP}" "armclang" | ||
| 19 | +CC := armclang --target=aarch64-arm-none-eabi | ||
| 20 | +AS := armasm | ||
| 21 | +LINKER := armlink | ||
| 22 | +ARCHIVER := armar | ||
| 23 | +EXTRA_COMPILER_FLAGS := -g $(LTO_FLAGS) | ||
| 24 | +else | ||
| 25 | +CC := $(CROSS)aarch64-none-elf-gcc | ||
| 26 | +AS := $(CROSS)aarch64-none-elf-gcc | ||
| 27 | +LINKER := $(CROSS)aarch64-none-elf-gcc | ||
| 28 | +ARCHIVER := $(CROSS)aarch64-none-elf-ar | ||
| 29 | +EXTRA_COMPILER_FLAGS := -g $(LTO_FLAGS) | ||
| 30 | +endif | ||
| 31 | +endif | ||
| 32 | +ifeq "${A53_STATE}" "32" | ||
| 33 | +CC := $(CROSS)arm-none-eabi-gcc | ||
| 34 | +AS := $(CROSS)arm-none-eabi-gcc | ||
| 35 | +LINKER := $(CROSS)arm-none-eabi-gcc | ||
| 36 | +ARCHIVER := $(CROSS)arm-none-eabi-ar | ||
| 37 | +EXTRA_COMPILER_FLAGS := -g -DARMA53_32 -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a $(LTO_FLAGS) | ||
| 38 | +endif | ||
| 39 | endif | ||
| 40 | ifeq "${PROC}" "r5" | ||
| 41 | PROCESSOR = zynqmp_fsbl_bsp/psu_cortexr5_0 | ||
| 42 | +CC := $(CROSS)armr5-none-eabi-gcc | ||
| 43 | +AS := $(CROSS)armr5-none-eabi-gcc | ||
| 44 | +LINKER := $(CROSS)armr5-none-eabi-gcc | ||
| 45 | +ARCHIVER := $(CROSS)armr5-none-eabi-ar | ||
| 46 | +EXTRA_COMPILER_FLAGS := -g -DARMR5 -Wall -Wextra -mfloat-abi=hard -mfpu=vfpv3-d16 $(LTO_FLAGS) | ||
| 47 | endif | ||
| 48 | -LTO_FLAGS = -Wall -Wextra -Os -flto -ffat-lto-objects | ||
| 49 | OTHER_FLAGS = -mfpu=vfpv3 -mfloat-abi=hard | ||
| 50 | -LTO_ARMCLANG_FLAGS = -mfpu=fp-armv8 -Wall -Wextra -march=armv8-a --target=aarch64-arm-none-eabi -Oz | ||
| 51 | LIBRARIES = ${PROCESSOR}/lib/libxil.a | ||
| 52 | BSP_MAKEFILES := $(wildcard $(PROCESSOR)/libsrc/*/src/Makefile) | ||
| 53 | SUBDIRS := $(patsubst %/Makefile, %, $(BSP_MAKEFILES)) | ||
| 54 | @@ -44,46 +75,13 @@ $(PROCESSOR)/lib/libxil.a: $(PROCESSOR)/ | ||
| 55 | |||
| 56 | %/make.include: $(if $(wildcard $(PROCESSOR)/lib/libxil_init.a),$(PROCESSOR)/lib/libxil.a,) | ||
| 57 | @echo "Running Make include in $(subst /make.include,,$@)" | ||
| 58 | -ifeq "${PROC}" "a53" | ||
| 59 | -ifeq "${A53_STATE}" "64" | ||
| 60 | -ifeq "${CROSS_COMP}" "armclang" | ||
| 61 | - $(MAKE) -C $(subst /make.include,,$@) -s include "SHELL=$(SHELL)" "COMPILER=armclang" \ | ||
| 62 | - "ARCHIVER=armar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-g $(LTO_ARMCLANG_FLAGS)" | ||
| 63 | -else | ||
| 64 | - $(MAKE) -C $(subst /make.include,,$@) -s include "SHELL=$(SHELL)" "COMPILER=aarch64-none-elf-gcc" \ | ||
| 65 | - "ARCHIVER=aarch64-none-elf-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-g $(LTO_FLAGS)" | ||
| 66 | -endif | ||
| 67 | -endif | ||
| 68 | -ifeq "${A53_STATE}" "32" | ||
| 69 | - $(MAKE) -C $(subst /make.include,,$@) -s include "SHELL=$(SHELL)" "COMPILER=arm-none-eabi-gcc" \ | ||
| 70 | - "ARCHIVER=arm-none-eabi-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-DARMA53_32 -mfpu=vfpv3 -mfloat-abi=hard -g -march=armv7-a $(LTO_FLAGS)" | ||
| 71 | -endif | ||
| 72 | -endif | ||
| 73 | -ifeq "${PROC}" "r5" | ||
| 74 | - $(MAKE) -C $(subst /make.include,,$@) -s include "SHELL=$(SHELL)" "COMPILER=armr5-none-eabi-gcc" \ | ||
| 75 | - "ARCHIVER=armr5-none-eabi-ar" "COMPILER_FLAGS= -O2 -c -mcpu=cortex-r5" "EXTRA_COMPILER_FLAGS=-g -DARMR5 -Wall -Wextra -mfloat-abi=hard -mfpu=vfpv3-d16 $(LTO_FLAGS)" | ||
| 76 | -endif | ||
| 77 | + $(MAKE) -C $(subst /make.include,,$@) -s include "SHELL=$(SHELL)" "COMPILER=$(CC)" \ | ||
| 78 | + "ARCHIVER=$(ARCHIVER)" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=$(EXTRA_COMPILER_FLAGS)" | ||
| 79 | |||
| 80 | %/make.libs: include | ||
| 81 | @echo "Running Make libs in $(subst /make.libs,,$@)" | ||
| 82 | -ifeq "${PROC}" "a53" | ||
| 83 | -ifeq "${A53_STATE}" "64" | ||
| 84 | -ifeq "${CROSS_COMP}" "armclang" | ||
| 85 | - $(MAKE) -C $(subst /make.libs,,$@) -s libs "SHELL=$(SHELL)" "COMPILER=armclang" \ | ||
| 86 | - "ARCHIVER=armar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-g $(LTO_ARMCLANG_FLAGS)" | ||
| 87 | -else | ||
| 88 | - $(MAKE) -C $(subst /make.libs,,$@) -s libs "SHELL=$(SHELL)" "COMPILER=aarch64-none-elf-gcc" \ | ||
| 89 | - "ARCHIVER=aarch64-none-elf-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-g $(LTO_FLAGS)" | ||
| 90 | -endif | ||
| 91 | -endif | ||
| 92 | -ifeq "${A53_STATE}" "32" | ||
| 93 | - $(MAKE) -C $(subst /make.libs,,$@) -s libs "SHELL=$(SHELL)" "COMPILER=arm-none-eabi-gcc" \ | ||
| 94 | - "ARCHIVER=arm-none-eabi-ar" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=-DARMA53_32 -mfpu=vfpv3 -mfloat-abi=hard -g -march=armv7-a $(LTO_FLAGS)" | ||
| 95 | -endif | ||
| 96 | -endif | ||
| 97 | -ifeq "${PROC}" "r5" | ||
| 98 | - $(MAKE) -C $(subst /make.libs,,$@) -s libs "SHELL=$(SHELL)" "COMPILER=armr5-none-eabi-gcc" "ARCHIVER=armr5-none-eabi-ar" "COMPILER_FLAGS= -O2 -c -mcpu=cortex-r5" "EXTRA_COMPILER_FLAGS=-g -DARMR5 -Wall -Wextra -mfloat-abi=hard -mfpu=vfpv3-d16 $(LTO_FLAGS)" | ||
| 99 | -endif | ||
| 100 | + $(MAKE) -C $(subst /make.libs,,$@) -s libs "SHELL=$(SHELL)" "COMPILER=$(CC)" \ | ||
| 101 | + "ARCHIVER=$(ARCHIVER)" "COMPILER_FLAGS= -O2 -c" "EXTRA_COMPILER_FLAGS=$(EXTRA_COMPILER_FLAGS)" | ||
| 102 | |||
| 103 | clean: | ||
| 104 | rm -f ${PROCESSOR}/lib/libxil.a | ||
| 105 | Index: git/lib/sw_apps/zynqmp_fsbl/src/Makefile | ||
| 106 | =================================================================== | ||
| 107 | --- git.orig/lib/sw_apps/zynqmp_fsbl/src/Makefile | ||
| 108 | +++ git/lib/sw_apps/zynqmp_fsbl/src/Makefile | ||
| 109 | @@ -49,6 +49,7 @@ ifeq '$(CROSS_COMP)' 'armclang' | ||
| 110 | CC := armclang --target=aarch64-arm-none-eabi | ||
| 111 | AS := armasm | ||
| 112 | LINKER := armlink | ||
| 113 | +ARCHIVER := armar | ||
| 114 | ECFLAGS = -DARMA53_64 -Wall -Oz -flto -c -march=armv8-a -mcpu=cortex-a53 | ||
| 115 | ASFLAGS = --cpu=8-A.64 --fpu=fp-armv8 | ||
| 116 | LSCRIPT := --scatter=scatter_a53_64.scat | ||
| 117 | @@ -59,8 +60,9 @@ else | ||
| 118 | CC := $(CROSS)aarch64-none-elf-gcc | ||
| 119 | AS := $(CROSS)aarch64-none-elf-gcc | ||
| 120 | LINKER := $(CROSS)aarch64-none-elf-gcc | ||
| 121 | +ARCHIVER := $(CROSS)aarch64-none-elf-ar | ||
| 122 | DUMP := $(CROSS)aarch64-none-elf-objdump -xSD | ||
| 123 | -ECFLAGS = -march=armv8-a -DARMA53_$(A53_STATE) -Os -flto -ffat-lto-objects | ||
| 124 | +ECFLAGS := -march=armv8-a -DARMA53_$(A53_STATE) -Os -flto -ffat-lto-objects | ||
| 125 | LSCRIPT := -Tlscript_a53.ld | ||
| 126 | LDFLAGS := -Wl,--start-group,-lxil,-lxilffs,-lxilsecure,-lxilpm,-lgcc,-lc,--end-group -L$(LIBPATH) -L./ -Wl,--build-id=none | ||
| 127 | OBJS += $(patsubst %.S, %.o, $(S_SOURCES)) | ||
| 128 | @@ -69,6 +71,7 @@ else | ||
| 129 | CC := $(CROSS)arm-none-eabi-gcc | ||
| 130 | AS := $(CROSS)arm-none-eabi-gcc | ||
| 131 | LINKER := $(CROSS)arm-none-eabi-gcc | ||
| 132 | +ARCHIVER := $(CROSS)arm-none-eabi-ar | ||
| 133 | DUMP := $(CROSS)arm-none-eabi-objdump -xSD | ||
| 134 | ECFLAGS := -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -DARMA53_$(A53_STATE) -Os -flto -ffat-lto-objects | ||
| 135 | LSCRIPT := -Tlscript.ld | ||
| 136 | @@ -80,6 +83,7 @@ endif | ||
| 137 | ifeq "$(CC)" "armcc" | ||
| 138 | AS=armasm | ||
| 139 | LINKER=armlink | ||
| 140 | +ARCHIVER=armar | ||
| 141 | CFLAGS += -c --c99 --wchar32 | ||
| 142 | CC_FLAGS += --cpu=Cortex-A9 --fpu=VFPv3_FP16 | ||
| 143 | LDFLAGS = --entry=_vector_table "$(LIBPATH)/libxil.a(*.o)" --no_search_dynamic_libraries --userlibpath=$(LIBPATH),. --library=xil | ||
| 144 | @@ -106,7 +110,8 @@ $(LIBS): | ||
| 145 | echo "Copying BSP files" | ||
| 146 | ../misc/copy_bsp.sh $(BOARD) $(PROC) $(A53_STATE) $(CROSS_COMP) | ||
| 147 | echo "Compiling bsp" | ||
| 148 | - make -C ../misc BOARD=$(BOARD) PROC=$(PROC) A53_STATE=$(A53_STATE) CROSS_COMP=$(CROSS_COMP) | ||
| 149 | + make -C ../misc BOARD=$(BOARD) PROC=$(PROC) A53_STATE=$(A53_STATE) CROSS_COMP=$(CROSS_COMP) \ | ||
| 150 | + CROSS="$(CROSS)" CC="$(CC)" AS="$(AS)" LINKER="$(LINKER)" ARCHIVER="$(ARCHIVER)" | ||
| 151 | |||
| 152 | %.o:%.c | ||
| 153 | $(CC) $(CC_FLAGS) $(CFLAGS) $(ECFLAGS) -c $< -o $@ $(INCLUDEPATH) | ||
| 154 | Index: git/lib/sw_apps/zynq_fsbl/src/Makefile | ||
| 155 | =================================================================== | ||
| 156 | --- git.orig/lib/sw_apps/zynq_fsbl/src/Makefile | ||
| 157 | +++ git/lib/sw_apps/zynq_fsbl/src/Makefile | ||
| 158 | @@ -31,21 +31,22 @@ INCLUDEPATH := -I$(BSP_DIR)/ps7_cortexa9 | ||
| 159 | LIBPATH := $(BSP_DIR)/ps7_cortexa9_0/lib | ||
| 160 | |||
| 161 | |||
| 162 | -ifeq "$(CC)" "arm-none-eabi-gcc" | ||
| 163 | -AS=arm-none-eabi-gcc | ||
| 164 | -CFLAGS=-Wall -O0 -g3 -c -fmessage-length=0 | ||
| 165 | -LINKER=arm-none-eabi-gcc | ||
| 166 | -LDFLAGS = -Wl,--start-group,-lxil,-lgcc,-lc,--end-group -Wl,--start-group,-lxilffs,-lxil,-lgcc,-lc,--end-group -Wl,--start-group,-lrsa,-lxil,-lgcc,-lc,--end-group | ||
| 167 | -LD1FLAGS = -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -Wl,-T -Wl,lscript.ld -L$(LIBPATH) -specs=../misc/Xilinx.spec | ||
| 168 | -ECFLAGS = -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard | ||
| 169 | -endif | ||
| 170 | -ifeq "$(CC)" "armcc" | ||
| 171 | +ifeq "${CROSS_COMP}" "armclang" | ||
| 172 | AS=armasm | ||
| 173 | LINKER=armlink | ||
| 174 | CFLAGS += -c --c99 --wchar32 | ||
| 175 | +EC_FLAGS=--debug --wchar32 | ||
| 176 | CC_FLAGS += --cpu=Cortex-A9 --fpu=VFPv3_FP16 | ||
| 177 | LDFLAGS = --entry=_vector_table "$(LIBPATH)/libxil.a(*.o)" --no_search_dynamic_libraries --userlibpath=$(LIBPATH),. --library=xil,xilffs,rsa | ||
| 178 | LSCRIPT = --scatter="scatter.scat" | ||
| 179 | +else | ||
| 180 | +AS=arm-none-eabi-gcc | ||
| 181 | +CFLAGS=-Wall -O0 -g3 -c -fmessage-length=0 | ||
| 182 | +EC_FLAGS=-g | ||
| 183 | +LINKER=arm-none-eabi-gcc | ||
| 184 | +LDFLAGS = -Wl,--start-group,-lxil,-lgcc,-lc,--end-group -Wl,--start-group,-lxilffs,-lxil,-lgcc,-lc,--end-group -Wl,--start-group,-lrsa,-lxil,-lgcc,-lc,--end-group | ||
| 185 | +LD1FLAGS = -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard -Wl,-build-id=none -Wl,-T -Wl,lscript.ld -L$(LIBPATH) -specs=../misc/Xilinx.spec | ||
| 186 | +ECFLAGS = -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard | ||
| 187 | endif | ||
| 188 | |||
| 189 | all: $(EXEC) | ||
| 190 | @@ -53,33 +54,23 @@ all: $(EXEC) | ||
| 191 | $(EXEC): $(LIBS) $(OBJS) $(INCLUDES) | ||
| 192 | $(LINKER) $(LD1FLAGS) -o $@ $(OBJS) $(LDFLAGS) | ||
| 193 | rm -rf $(OBJS) | ||
| 194 | - | ||
| 195 | - | ||
| 196 | -$(LIBS): | ||
| 197 | + | ||
| 198 | +$(LIBS): | ||
| 199 | echo "Copying BSP files" | ||
| 200 | $(BSP_DIR)/copy_bsp.sh $(BOARD) $(CC) | ||
| 201 | echo "Compiling bsp" | ||
| 202 | - if [ $(CC) == "arm-none-eabi-gcc" ]; then \ | ||
| 203 | - make -C $(BSP_DIR) -k all "CC=arm-none-eabi-gcc" "AR=arm-none-eabi-ar" "C_FLAGS=-O2 -c" "EC_FLAGS=-g"; \ | ||
| 204 | - elif [ $(CC) == "armcc" ]; then \ | ||
| 205 | - make -C $(BSP_DIR) -k all "CC=armcc" "AR=armar" "C_FLAGS= -O2 -c" "EC_FLAGS=--debug --wchar32"; \ | ||
| 206 | - fi; | ||
| 207 | + make -C $(BSP_DIR) -k all "CC=$(CC)" "AR=$(AR)" "C_FLAGS=$(C_FLAGS)" "EC_FLAGS=$(EC_FLAGS)" | ||
| 208 | |||
| 209 | %.o:%.c | ||
| 210 | $(CC) $(CC_FLAGS) $(CFLAGS) $(ECFLAGS) -c $< -o $@ $(INCLUDEPATH) | ||
| 211 | |||
| 212 | +ifneq "$(CROSS_COMP)" "armclang" | ||
| 213 | %.o:%.S | ||
| 214 | - if [ $(CC) == "arm-none-eabi-gcc" ]; then \ | ||
| 215 | - $(AS) $(CC_FLAGS) $(CFLAGS) $(ECFLAGS) -c $< -o $@ $(INCLUDEPATH); \ | ||
| 216 | - elif [ $(CC) == "armcc" ]; then \ | ||
| 217 | - $(CC) $(INCLUDEPATH) -E -o fsbl_handoff.s fsbl_handoff.S; \ | ||
| 218 | - $(AS) $(CC_FLAGS) -c fsbl_handoff.s -o fsbl_handoff.o $(INCLUDEPATH); \ | ||
| 219 | - rm fsbl_handoff.s; \ | ||
| 220 | - fi; | ||
| 221 | - | ||
| 222 | - | ||
| 223 | + $(AS) $(CC_FLAGS) $(CFLAGS) $(ECFLAGS) -c $< -o $@ $(INCLUDEPATH) | ||
| 224 | + | ||
| 225 | %.o:%.s | ||
| 226 | $(AS) $(CC_FLAGS) $(CFLAGS) $(ECFLAGS) -c $< -o $@ $(INCLUDEPATH) | ||
| 227 | +endif | ||
| 228 | |||
| 229 | clean: | ||
| 230 | rm -rf $(OBJS) $(BSP_DIR)/ps7_cortexa9_0 $(EXEC) | ||
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware.inc b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware.inc new file mode 100644 index 00000000..8d2ea1b6 --- /dev/null +++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware.inc | |||
| @@ -0,0 +1,69 @@ | |||
| 1 | DESCRIPTION = "First Stage Bootloader" | ||
| 2 | |||
| 3 | inherit xlnx-embeddedsw deploy | ||
| 4 | |||
| 5 | COMPATIBLE_HOST = ".*-(elf|eabi)" | ||
| 6 | COMPATIBLE_MACHINE = "none" | ||
| 7 | COMPATIBLE_MACHINE_zynq = ".*" | ||
| 8 | COMPATIBLE_MACHINE_zynqmp = ".*" | ||
| 9 | |||
| 10 | S = "${WORKDIR}/git" | ||
| 11 | |||
| 12 | B = "${S}/lib/sw_apps/undefined/src" | ||
| 13 | B_zynq = "${S}/lib/sw_apps/zynq_fsbl/src" | ||
| 14 | B_zynqmp = "${S}/lib/sw_apps/zynqmp_fsbl/src" | ||
| 15 | |||
| 16 | # The makefile does not handle parallelization | ||
| 17 | PARALLEL_MAKE = "-j1" | ||
| 18 | |||
| 19 | do_configure() { | ||
| 20 | : | ||
| 21 | } | ||
| 22 | |||
| 23 | COMPILER = "${CC}" | ||
| 24 | COMPILER_FLAGS = "-O2 -c" | ||
| 25 | EXTRA_COMPILER_FLAGS = "-g -Wall -Wextra -Os -flto -ffat-lto-objects" | ||
| 26 | ARCHIVER = "${AR}" | ||
| 27 | |||
| 28 | BSP_DIR ?= "${B}/../misc/undefined" | ||
| 29 | BSP_DIR_zynq ?= "${B}/../misc/zynq_fsbl_bsp" | ||
| 30 | BSP_DIR_zynqmp ?= "${B}/../misc/zynqmp_fsbl_bsp" | ||
| 31 | BSP_TARGETS_DIR ?= "${BSP_DIR}/psu_cortexa53_0/libsrc" | ||
| 32 | |||
| 33 | # FSBL components expect AS to be CC. | ||
| 34 | AS = "${CC}" | ||
| 35 | LINKER = "${CC}" | ||
| 36 | DUMP = "${OBJDUMP} -xSD" | ||
| 37 | |||
| 38 | def bsp_make_vars(d): | ||
| 39 | s = ["COMPILER", "CC", "COMPILER_FLAGS", "EXTRA_COMPILER_FLAGS", "ARCHIVER", "AR", "AS", "LINKER", "DUMP"] | ||
| 40 | return " ".join(["\"%s=%s\"" % (v, d.getVar(v)) for v in s]) | ||
| 41 | |||
| 42 | EXTRA_OEMAKE = "${@bsp_make_vars(d)}" | ||
| 43 | |||
| 44 | ARM_INSTRUCTION_SET_eabi_arm = "arm" | ||
| 45 | do_compile() { | ||
| 46 | oe_runmake | ||
| 47 | } | ||
| 48 | |||
| 49 | do_install() { | ||
| 50 | : | ||
| 51 | } | ||
| 52 | |||
| 53 | PACKAGES = "" | ||
| 54 | |||
| 55 | # This is the default in most BSPs. A MACHINE.conf can override this! | ||
| 56 | FSBL_IMAGE_NAME ??= "fsbl" | ||
| 57 | |||
| 58 | inherit image-artifact-names | ||
| 59 | |||
| 60 | FSBL_BASE_NAME ?= "${FSBL_IMAGE_NAME}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}${IMAGE_VERSION_SUFFIX}" | ||
| 61 | |||
| 62 | ESW_COMPONENT ??= "fsbl.elf" | ||
| 63 | |||
| 64 | do_deploy() { | ||
| 65 | install -Dm 0644 ${B}/${ESW_COMPONENT} ${DEPLOYDIR}/${FSBL_BASE_NAME}.elf | ||
| 66 | ln -sf ${FSBL_BASE_NAME}.elf ${DEPLOYDIR}/${FSBL_IMAGE_NAME}.elf | ||
| 67 | } | ||
| 68 | |||
| 69 | addtask deploy before do_build after do_install | ||
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2020.2.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2020.2.bb new file mode 100644 index 00000000..00c49774 --- /dev/null +++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_2020.2.bb | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | require fsbl-firmware.inc | ||
| 2 | |||
| 3 | FILESPATH .= ":${FILE_DIRNAME}/embeddedsw" | ||
| 4 | |||
| 5 | SRC_URI += " \ | ||
| 6 | file://0001-zynqmp_pmufw-Fix-reset-ops-for-assert.patch \ | ||
| 7 | file://0001-zynqmp_pmufw-Correct-structure-header-of-PmResetOps.patch \ | ||
| 8 | file://0001-sw_apps-versal_plm-Changes-to-ensure-versionless-bui.patch \ | ||
| 9 | file://0001-versal_psmfw-misc-Update-makefile-for-version-less-b.patch \ | ||
| 10 | file://0001-versal_psmfw-misc-Update-mcpu-version-in-Makefile.patch \ | ||
| 11 | file://zynqmp_pmufw-fixup.patch \ | ||
| 12 | file://makefile-skip-copy_bsp.sh.patch \ | ||
| 13 | file://fsbl-fixups.patch \ | ||
| 14 | " | ||
| 15 | |||
| 16 | # This version does not build for zynq | ||
| 17 | COMPATIBLE_MACHINE_zynq = "none" | ||
diff --git a/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_git.bb b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_git.bb new file mode 100644 index 00000000..852f7876 --- /dev/null +++ b/meta-xilinx-standalone/recipes-bsp/embeddedsw/fsbl-firmware_git.bb | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | # Only should be used for development | ||
| 2 | DEFAULT_PREFERENCE = "-1" | ||
| 3 | |||
| 4 | require fsbl-firmware.inc | ||
| 5 | |||
| 6 | FILESPATH .= ":${FILE_DIRNAME}/embeddedsw" | ||
| 7 | |||
| 8 | SRC_URI += " \ | ||
| 9 | file://zynqmp_pmufw-fixup.patch \ | ||
| 10 | file://makefile-skip-copy_bsp.sh.patch \ | ||
| 11 | file://fsbl-fixups.patch \ | ||
| 12 | " | ||
| 13 | |||
| 14 | # This version does not build for zynq | ||
| 15 | COMPATIBLE_MACHINE_zynq = "none" | ||
