https://github.com/RedPitaya/RedPitaya
Tip revision: 266a68ae60b09cc8667585ed5c9af348d36f3264 authored by n.danilyuk on 15 March 2024, 02:27:24 UTC
Merge branch 'master' of https://github.com/RedPitaya/RedPitaya
Merge branch 'master' of https://github.com/RedPitaya/RedPitaya
Tip revision: 266a68a
Makefile.x86
################################################################################
# versioning system
################################################################################
VER := $(shell cat apps-tools/ecosystem/info/info.json | grep version | sed -e 's/.*:\ *\"//' | sed -e 's/-.*//')
BUILD_NUMBER ?= 0
GIT_MODE ?= GITHUB
GITLAB_TOKEN ?= NONE
CPU_CORES = $(shell ./get_cpu_ram.sh)
REVISION ?= $(shell git rev-parse --short HEAD)
VERSION = $(VER)-$(BUILD_NUMBER)
export BUILD_NUMBER
export REVISION
export VERSION
SUBMODULE_UBT = "redpitaya-v2022.1"
SUBMODULE_LIN = "branch-redpitaya-v2024.1"
SUBMODULE_APP = ""
define GREET_MSG
##############################################################################
# Red Pitaya GNU/Linux Ecosystem
# Version: $(VER)-$(REVISION)
# Build: $(BUILD_NUMBER)
# Branch: $(GIT_LOCAL_BRANCH)
# Commit: $(GIT_COMMIT)
# U-Boot: $(SUBMODULE_UBT)
# Linux Kernel: $(SUBMODULE_LIN)
# Pro Applications: $(SUBMODULE_APP)
##############################################################################
endef
export GREET_MSG
################################################################################
# targets
################################################################################
all: dtc_compiler devicetree u-boot linux boot
################################################################################
#
################################################################################
# check if download cache directory is available
DL ?= dl
TMP = tmp
INSTALL_DIR = build
$(DL):
mkdir -p $@
$(TMP):
mkdir -p $@
$(INSTALL_DIR):
mkdir -p $@
################################################################################
# X86 build (Vivado FPGA synthesis, FSBL, devicetree, U-Boot, Linux kernel)
################################################################################
UBOOT_TAG = redpitaya-v2022.2
LINUX_TAG = branch-redpitaya-v2024.1
DTREE_TAG = xilinx_v2022.1
DTREE_PATH_TAG = xilinx-v2022.1
UBOOT_DIR = $(TMP)/u-boot-xlnx-$(UBOOT_TAG)
LINUX_DIR = $(TMP)/linux-xlnx-$(LINUX_TAG)
DTREE_DIR = $(TMP)/device-tree-xlnx-$(DTREE_PATH_TAG)
UBOOT_TAR = $(DL)/u-boot-xlnx-$(UBOOT_TAG).tar.gz
LINUX_TAR = $(DL)/linux-xlnx-$(LINUX_TAG).tar.gz
DTREE_TAR = $(DL)/device-tree-xlnx-$(DTREE_TAG).tar.gz
# it is possible to use an alternative download location (local) by setting environment variables
UBOOT_URL ?= https://github.com/RedPitaya/u-boot-xlnx/archive/$(UBOOT_TAG).tar.gz
LINUX_URL ?= https://github.com/RedPitaya/linux-xlnx/archive/$(LINUX_TAG).tar.gz
DTREE_URL ?= https://github.com/Xilinx/device-tree-xlnx/archive/$(DTREE_TAG).tar.gz
LINUX_CFLAGS = "-O2 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard"
KERNEL_HEADERS ?= YES
################################################################################
# FPGA build provides: $(FSBL), $(FPGA), $(DEVICETREE).
################################################################################
# HWID=v1r0 - this value for 250-12 rev 1.0. In all other cases, this parameter is empty.
FPGA_COMMIT ?= Release-2024.2
HWID ?=
DEF_PARAM ?=
FPGA_PRJ ?=
FPGA_VERSION ?=
FPGA_MODEL ?=
# stream_app
FPGA_STREAM_APP=
# stream_app_250
FPGA_STREAM_APP_250=
# classic
FPGA_CLASSIC=
# logic
FPGA_LOGIC=
# logic_250
FPGA_LOGIC_250=
# v0.94
FPGA_0_94=
# v0.94_250
FPGA_0_94_250=
# mercury
FPGA_MERCURY=
# axi4lite
FPGA_AXI4LITE=
# barebone
FPGA_BAREBONE=
# project fpga for build uboot
# Used with commit number or branch name
# FPGA_UBOOT=c822622082e63ce943c3b22e706e0c35dbe8d2f5
FPGA_UBOOT=$(FPGA_COMMIT)
ifeq ($(MODEL),Z10)
# Used in board: stream_app classic logic v0.94 mercury axi4lite barebones
FPGA_STREAM_APP = $(FPGA_COMMIT)
FPGA_CLASSIC = $(FPGA_COMMIT)
FPGA_LOGIC = $(FPGA_COMMIT)
FPGA_0_94 = $(FPGA_COMMIT)
FPGA_MERCURY = $(FPGA_COMMIT)
FPGA_AXI4LITE = $(FPGA_COMMIT)
FPGA_BAREBONE = $(FPGA_COMMIT)
FPGA_MODEL = Z10
FPGA_VERSION = z10_125
endif
ifeq ($(MODEL),Z20)
# Used in board: v0.94 stream_app
FPGA_STREAM_APP = $(FPGA_COMMIT)
FPGA_0_94 = $(FPGA_COMMIT)
FPGA_BAREBONE = $(FPGA_COMMIT)
FPGA_LOGIC = $(FPGA_COMMIT)
FPGA_MODEL = Z20
FPGA_VERSION = z20_122
endif
ifeq ($(MODEL),Z20_125)
# Used in board: stream_app classic logic v0.94 mercury axi4lite
FPGA_STREAM_APP = $(FPGA_COMMIT)
FPGA_CLASSIC = $(FPGA_COMMIT)
FPGA_LOGIC = $(FPGA_COMMIT)
FPGA_0_94 = $(FPGA_COMMIT)
FPGA_MERCURY = $(FPGA_COMMIT)
FPGA_AXI4LITE = $(FPGA_COMMIT)
FPGA_BAREBONE = $(FPGA_COMMIT)
FPGA_MODEL = Z20_14
FPGA_VERSION = z20_125
endif
ifeq ($(MODEL),Z20_125_4CH)
# Used in board: v0.94
FPGA_0_94 = $(FPGA_COMMIT)
FPGA_BAREBONE = $(FPGA_COMMIT)
FPGA_LOGIC = $(FPGA_COMMIT)
FPGA_STREAM_APP_4CH = $(FPGA_COMMIT)
FPGA_MODEL = Z20_4
FPGA_VERSION = z20_125_4ch
endif
ifeq ($(MODEL),Z10_125_4CH_TEST)
# Used in board: v0.94
FPGA_0_94 = $(FPGA_COMMIT)
FPGA_BAREBONE = $(FPGA_COMMIT)
FPGA_MODEL = Z10_4_test
FPGA_VERSION = z20_125_4ch
endif
ifeq ($(MODEL),Z20_250_12_1_0)
# Used in board: stream_app_250 v0.94_250 logic_250
FPGA_STREAM_APP_250 = $(FPGA_COMMIT)
FPGA_0_94_250 = $(FPGA_COMMIT)
FPGA_LOGIC_250 = $(FPGA_COMMIT)
FPGA_BAREBONE_250 = $(FPGA_COMMIT)
FPGA_MODEL = Z20_250
FPGA_VERSION = z20_250_1_0
HWID=v1r0
endif
ifeq ($(MODEL),Z20_250_12)
# Used in board: stream_app_250 v0.94_250 logic_250
FPGA_STREAM_APP_250 = $(FPGA_COMMIT)
FPGA_0_94_250 = $(FPGA_COMMIT)
FPGA_LOGIC_250 = $(FPGA_COMMIT)
FPGA_BAREBONE_250 = $(FPGA_COMMIT)
FPGA_MODEL = Z20_250
FPGA_VERSION = z20_250
endif
ifeq ($(MODEL),Z20_250_12a)
# Used FPGA bitstream from Z20_250_12 model
# need rebuild only barebone for new dts
FPGA_BAREBONE_250_A = $(FPGA_COMMIT)
FPGA_MODEL = Z20_250
FPGA_VERSION = z20_250a
endif
.PHONY: fpga $(INSTALL_DIR)/fpga
fpga: dtc_compiler $(INSTALL_DIR)/fpga
define build_fpga
./download_fpga.sh $(FPGA_VERSION) $(1) $(GIT_MODE) $(5) $(GITLAB_TOKEN) build
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)
make -C fpga/build PRJ=$(1) MODEL=$(2) DEFINES=$(3) HWID=$(4) DTS_VER=2022.1
rm -rf fpga/$(FPGA_VERSION)/$(1)
mkdir -p fpga/$(FPGA_VERSION)/$(1)
mv fpga/build/* fpga/$(FPGA_VERSION)/$(1)
cp fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/out/red_pitaya.bit $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)/fpga.bit
cp fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/sdk/fsbl/executable.elf $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)/fsbl.elf
cp -r fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/sdk/dts $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)
cp fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)/dts/
cp -f fpga/$(FPGA_VERSION)/$(1)/git_info.txt $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)/git_info.txt
#fix bug with #address-cells and #size-cells for overlay
sed -i 's/#address-cells/\/\/#address-cells/g' fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/sdk/dts/pl.dtsi
sed -i 's/#size-cells/\/\/#size-cells/g' fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/sdk/dts/pl.dtsi
sed -i 's/red_pitaya.bit.bin/fpga.bit.bin/g' fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/sdk/dts/pl.dtsi
grep -qxF '/include/ "pl_patch.dtsi"' fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/sdk/dts/pl.dtsi || echo '/include/ "pl_patch.dtsi"' >> fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/sdk/dts/pl.dtsi
$(TMP)/dtc -@ -I dts -O dtb -o $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)/fpga.dtbo -i fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/dts -i fpga/$(FPGA_VERSION)/$(1)/dts fpga/$(FPGA_VERSION)/$(1)/prj/$(1)/sdk/dts/pl.dtsi
echo -n "all:{ $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)/fpga.bit }" > $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)/fpga.bif
bootgen -image $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)/fpga.bif -arch zynq -process_bitstream bin -o $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/$(1)/red_pitaya.bit.bin -w
endef
$(INSTALL_DIR)/fpga: $(DTREE_DIR)
mkdir -p $(INSTALL_DIR)/fpga
ifneq "$(FPGA_BAREBONE)" ""
$(call build_fpga,barebones,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_BAREBONE))
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/barebones/dts_rp/
cp -r fpga/$(FPGA_VERSION)/barebones/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/barebones/dts_rp/
endif
ifneq "$(FPGA_BAREBONE_250)" ""
$(call build_fpga,barebones_250,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_BAREBONE_250))
mv $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/barebones_250 $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/barebones
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/barebones/dts_rp/
cp -r fpga/$(FPGA_VERSION)/barebones_250/dts_250/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/barebones/dts_rp/
endif
ifneq "$(FPGA_BAREBONE_250_A)" ""
$(call build_fpga,barebones_250,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_BAREBONE_250_A))
mv $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/barebones_250 $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/barebones
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/barebones/dts_rp/
cp -r fpga/$(FPGA_VERSION)/barebones_250/dts_250a/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/barebones/dts_rp/
endif
ifneq "$(FPGA_STREAM_APP)" ""
$(call build_fpga,stream_app,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_STREAM_APP))
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/stream_app/dts_rp/
cp -r fpga/$(FPGA_VERSION)/stream_app/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/stream_app/dts_rp/
endif
ifneq "$(FPGA_STREAM_APP_4CH)" ""
$(call build_fpga,stream_app_4ch,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_STREAM_APP_4CH))
mv $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/stream_app_4ch $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/stream_app
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/stream_app/dts_rp/
cp -r fpga/$(FPGA_VERSION)/stream_app_4ch/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/stream_app/dts_rp/
endif
ifneq "$(FPGA_STREAM_APP_250)" ""
$(call build_fpga,stream_app_250,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_STREAM_APP_250))
mv $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/stream_app_250 $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/stream_app
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/stream_app/dts_rp/
cp -r fpga/$(FPGA_VERSION)/stream_app_250/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/stream_app/dts_rp/
endif
ifneq "$(FPGA_CLASSIC)" ""
$(call build_fpga,classic,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_CLASSIC))
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/classic/dts_rp/
cp -r fpga/$(FPGA_VERSION)/classic/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/classic/dts_rp/
endif
ifneq "$(FPGA_LOGIC)" ""
$(call build_fpga,logic,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_LOGIC))
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/logic/dts_rp/
cp -r fpga/$(FPGA_VERSION)/logic/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/logic/dts_rp/
endif
ifneq "$(FPGA_LOGIC_250)" ""
$(call build_fpga,logic_250,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_LOGIC_250))
mv $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/logic_250 $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/logic
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/logic/dts_rp/
cp -r fpga/$(FPGA_VERSION)/logic_250/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/logic/dts_rp/
endif
ifneq "$(FPGA_0_94)" ""
$(call build_fpga,v0.94,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_0_94))
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/v0.94/dts_rp/
cp -r fpga/$(FPGA_VERSION)/v0.94/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/v0.94/dts_rp/
endif
ifneq "$(FPGA_0_94_250)" ""
$(call build_fpga,v0.94_250,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_0_94_250))
mv $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/v0.94_250 $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/v0.94
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/v0.94/dts_rp/
cp -r fpga/$(FPGA_VERSION)/v0.94_250/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/v0.94/dts_rp/
endif
ifneq "$(FPGA_MERCURY)" ""
$(call build_fpga,mercury,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_MERCURY))
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/mercury/dts_rp/
cp -r fpga/$(FPGA_VERSION)/mercury/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/mercury/dts_rp/
endif
ifneq "$(FPGA_AXI4LITE)" ""
$(call build_fpga,axi4lite,$(FPGA_MODEL),$(DEF_PARAM),$(HWID),$(FPGA_AXI4LITE))
mkdir -p $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/axi4lite/dts_rp/
cp -r fpga/$(FPGA_VERSION)/axi4lite/dts/* $(INSTALL_DIR)/fpga/$(FPGA_VERSION)/axi4lite/dts_rp/
endif
################################################################################
# device tree processing
################################################################################
DEVICETREE = devicetree.dtb
FPGA_DIRECTORY = $(patsubst $(INSTALL_DIR)/fpga/%/,%, $(sort $(dir $(wildcard $(INSTALL_DIR)/fpga/*/))))
.PHONY: devicetree devicetree-install $(DEVICETREE)
devicetree: devicetree-install dtc_compiler
$(DTREE_TAR): | $(DL)
curl -L $(DTREE_URL) -o $@
$(DTREE_DIR): $(DTREE_TAR)
mkdir -p $@
tar -zxf $< --strip-components=1 --directory=$@
mkdir -p fpga/tmp
cp -r $@ fpga/tmp
$(FPGA_DIRECTORY): $(DTREE_DIR) $(TMP) $(INSTALL_DIR)
echo $@
rm -rf $(TMP)/dts/$@
mkdir -p $(TMP)/dts/$@
mkdir -p $(TMP)/dts/$@/build
cp -r $(INSTALL_DIR)/fpga/$@/barebones/dts $(TMP)/dts/$@
cat $(TMP)/dts/$@/dts/system-top.dts > $(TMP)/dts/$@/build/system-top.dts
cat $(TMP)/dts/$@/dts/fpga.dts >> $(TMP)/dts/$@/build/system-top.dts
gcc -I $(TMP)/dts/$@/dts -E -nostdinc -undef -D__DTS__ -x assembler-with-cpp -o $(TMP)/dts/$@/build/system-top.dts.tmp $(TMP)/dts/$@/build/system-top.dts
$(TMP)/dtc -@ -I dts -O dtb -o $(TMP)/dts/$@/build/$(DEVICETREE) -i $(TMP)/dts/$@/dts -i $(INSTALL_DIR)/fpga/$@/barebones/dts_rp $(TMP)/dts/$@/build/system-top.dts.tmp
$(TMP)/dtc -I dtb -O dts --sort -o $(TMP)/dts/$@/build/dtraw.dts $(TMP)/dts/$@/build/$(DEVICETREE)
mkdir -p $(INSTALL_DIR)/dts/$@
cp -f $(TMP)/dts/$@/build/$(DEVICETREE) $(INSTALL_DIR)/dts/$@
cp -f $(TMP)/dts/$@/build/dtraw.dts $(INSTALL_DIR)/dts/$@
devicetree-install: $(FPGA_DIRECTORY)
################################################################################
# device tree for uboot processing
################################################################################
DEVICETREE_UB_PATH = fpga/uboot/dts_uboot
DEVICETREE_UB = $(TMP)/devicetree_uboot.dtb
.PHONY: devicetree_ub devicetree_ub_download $(DEVICETREE_UB)
devicetree_ub: $(DEVICETREE_UB)
devicetree_ub_download:
./download_fpga.sh all uboot $(GIT_MODE) $(FPGA_UBOOT) $(GITLAB_TOKEN) uboot
$(DEVICETREE_UB): devicetree_ub_download $(DTREE_DIR) $(TMP) $(INSTALL_DIR) dtc_compiler
echo $@
gcc -E -nostdinc -undef -D__DTS__ -x assembler-with-cpp -o $(DEVICETREE_UB_PATH)/system-top.dts.tmp $(DEVICETREE_UB_PATH)/system-top.dts
$(TMP)/dtc -@ -I dts -O dtb -o $(DEVICETREE_UB) $(DEVICETREE_UB_PATH)/system-top.dts.tmp
################################################################################
# FSBL for uboot processing
################################################################################
FSBL = $(TMP)/fsbl.elf
.PHONY: fsbl_ub
fsbl_ub: $(FSBL)
$(FSBL): $(DEVICETREE_UB)
echo $@
make -C fpga/uboot PRJ=fsbl MODEL=Z10 DEFINES= HWID= DTS_VER=2022.1
cp fpga/uboot/prj/fsbl/sdk/fsbl/executable.elf $@
################################################################################
# FSBL for uboot 1Gb RAM processing
################################################################################
FSBL_1Gb_ram = $(TMP)/fsbl_1Gb_ram.elf
.PHONY: fsbl_ub_1Gb_ram
fsbl_ub_1Gb_ram: $(FSBL_1Gb_ram)
$(FSBL_1Gb_ram):
echo $@
./download_fpga.sh all fsbl_1Gb_ram $(GIT_MODE) $(FPGA_UBOOT) $(GITLAB_TOKEN) fsbl_1Gb_ram
make -C fpga/fsbl_1Gb_ram PRJ=fsbl MODEL=Z20_250 DEFINES= HWID= DTS_VER=2022.1
cp fpga/fsbl_1Gb_ram/prj/fsbl/sdk/fsbl/executable.elf $@
################################################################################
# U-Boot build provides: $(UBOOT)
################################################################################
UBOOT = $(TMP)/u-boot.elf
UBOOT_SCRIPT = $(INSTALL_DIR)/u-boot.scr
UBOOT_SCRIPT_512Mb_ram = $(INSTALL_DIR)/uboot/u-boot_512Mb_ram.scr
UBOOT_SCRIPT_1Gb_ram = $(INSTALL_DIR)/uboot/u-boot_1Gb_ram.scr
.PHONY: u-boot $(UBOOT_TAR) $(UBOOT_DIR) $(UBOOT)
u-boot: $(UBOOT) $(UBOOT_SCRIPT_512Mb_ram) $(UBOOT_SCRIPT_1Gb_ram)
$(UBOOT_TAR): | $(DL)
curl -L $(UBOOT_URL) -o $@
$(UBOOT_DIR): $(UBOOT_TAR)
rm -rf $@
mkdir -p $@
tar -zxf $< --strip-components=1 --directory=$@
$(UBOOT): $(UBOOT_DIR) $(TMP) devicetree_ub
make -C $< distclean
make -C $< clean
make -C $< mrproper
mkdir -p $</arch/arm/dts/
cp $(DEVICETREE_UB) $</arch/arm/dts/red-pitaya.dtb
make -C $< zynq_red_pitaya_defconfig -j $(shell grep -c ^processor /proc/cpuinfo) DEVICE_TREE="red-pitaya"
make -C $< -j $(shell grep -c ^processor /proc/cpuinfo) DEVICE_TREE="red-pitaya"
cp $(UBOOT_DIR)/u-boot.elf $@
$(UBOOT_SCRIPT_512Mb_ram): $(INSTALL_DIR) $(UBOOT_DIR) $(UBOOT)
mkdir -p $(INSTALL_DIR)/uboot
$(UBOOT_DIR)/tools/mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n "boot Debian" -d patches/u-boot/u-boot.script $@
cp $(UBOOT_SCRIPT_512Mb_ram) $(UBOOT_SCRIPT)
$(UBOOT_SCRIPT_1Gb_ram): $(UBOOT_SCRIPT_512Mb_ram)
mkdir -p $(INSTALL_DIR)/uboot
$(UBOOT_DIR)/tools/mkimage -A ARM -O linux -T script -C none -a 0 -e 0 -n "boot Debian" -d patches/u-boot/u-boot_1Gb_ram.script $@
################################################################################
# Linux build provides: $(LINUX)
################################################################################
LINUX = $(LINUX_DIR)/arch/arm/boot/uImage
.PHONY: linux linux_scripts $(LINUX) $(LINUX_DIR) dtc_compiler
linux: $(LINUX)
$(LINUX_TAR): | $(DL)
curl -L $(LINUX_URL) -o $@
$(LINUX_DIR): $(LINUX_TAR)
mkdir -p $@
tar -zxf $< --strip-components=1 --directory=$@
linux_scripts: $(LINUX_DIR)
make -C $(LINUX_DIR) clean
make -C $(LINUX_DIR) mrproper
make -C $(LINUX_DIR) ARCH=arm redpitaya_zynq_defconfig -j $(shell grep -c ^processor /proc/cpuinfo)
make -C $(LINUX_DIR) scripts
$(LINUX): linux_scripts
make -C $(LINUX_DIR) clean
make -C $(LINUX_DIR) mrproper
make -C $(LINUX_DIR) ARCH=arm redpitaya_zynq_defconfig -j $(shell grep -c ^processor /proc/cpuinfo)
make -C $(LINUX_DIR) ARCH=arm CFLAGS=$(LINUX_CFLAGS) -j $(shell grep -c ^processor /proc/cpuinfo) UIMAGE_LOADADDR=0x8000 uImage
ifeq ($(KERNEL_HEADERS),YES)
make -C $(LINUX_DIR) headers_install ARCH=arm INSTALL_HDR_PATH=$(abspath $(INSTALL_DIR))/include/linux
endif
cp $(LINUX_DIR)/arch/arm/boot/uImage $(INSTALL_DIR)
dtc_compiler: linux_scripts
cp -u $(LINUX_DIR)/scripts/dtc/dtc $(TMP)/dtc
################################################################################
# boot file generator
################################################################################
BOOT = $(INSTALL_DIR)/boot.bin
BOOT_512Mb_ram = $(INSTALL_DIR)/uboot/boot_512Mb_ram.bin
BOOT_1Gb_ram = $(INSTALL_DIR)/uboot/boot_1Gb_ram.bin
.PHONY: boot
boot: boot_copy $(UBOOT_SCRIPT) $(UBOOT_SCRIPT_1Gb_ram)
$(BOOT_512Mb_ram): $(UBOOT) $(FSBL) $(FSBL_1Gb_ram) $(INSTALL_DIR)
mkdir -p $(INSTALL_DIR)/uboot
@echo the_ROM_image:{[bootloader] $(FSBL) $(UBOOT) } > boot_uboot_512Mb_ram.bif
bootgen -image boot_uboot_512Mb_ram.bif -arch zynq -o $@ -w on -log
$(BOOT_1Gb_ram): $(BOOT_512Mb_ram)
mkdir -p $(INSTALL_DIR)/uboot
@echo the_ROM_image:{[bootloader] $(FSBL_1Gb_ram) $(UBOOT) } > boot_uboot_1Gb_ram.bif
bootgen -image boot_uboot_1Gb_ram.bif -arch zynq -o $@ -w on -log
boot_copy: $(BOOT_1Gb_ram)
cp $(BOOT_512Mb_ram) $(BOOT)
################################################################################
# tarball
################################################################################
ZIPFILE=ecosystem-$(VERSION)-$(REVISION).zip
ZIP_FPGA_FILE=fpga-$(MODEL)-$(STREAMING)-$(VERSION)-$(REVISION).zip
zip: $(ZIPFILE)
$(ZIPFILE):
cp -r OS/filesystem/* $(INSTALL_DIR)
# create version file
@echo "$$GREET_MSG" > $(INSTALL_DIR)/version.txt
# build zip file
cd $(INSTALL_DIR); zip -r ../$(ZIPFILE) *
zip_fpga: $(ZIP_FPGA_FILE)
$(ZIP_FPGA_FILE):
cd $(INSTALL_DIR); zip -r ../$(ZIP_FPGA_FILE) *
################################################################################
#
################################################################################
clean:
-make -C $(LINUX_DIR) clean
make -C fpga clean
-make -C $(UBOOT_DIR) clean
# todo, remove downloaded libraries and symlinks
$(RM) $(INSTALL_DIR) -rf
################################################################################
#
################################################################################
gen_report_fpga:
./gen_fpga_report.sh $(FPGA_VERSION) $(FPGA_VERSION).xml FPGA
gen_report_kernel:
./gen_fpga_report.sh KERNEL kernel.xml KERNEL
gen_report_eco:
./gen_fpga_report.sh ECO ecosystem.xml ECO
################################################################################
# streaming_client
################################################################################
APP_STREAMINGMANAGER_DIR = apps-tools/streaming_manager
streaming: streaming_client streaming_client_win
streaming_client:
$(MAKE) -i -C $(APP_STREAMINGMANAGER_DIR) clean
$(MAKE) -C $(APP_STREAMINGMANAGER_DIR) INSTALL_DIR=$(abspath $(INSTALL_DIR)) install_client
streaming_client_win:
$(MAKE) -i -C $(APP_STREAMINGMANAGER_DIR) clean
$(MAKE) -C $(APP_STREAMINGMANAGER_DIR) INSTALL_DIR=$(abspath $(INSTALL_DIR)) install_client_win
streaming_client_qt:
$(MAKE) -i -C $(APP_STREAMINGMANAGER_DIR) clean
$(MAKE) -C $(APP_STREAMINGMANAGER_DIR) INSTALL_DIR=$(abspath $(INSTALL_DIR)) install_client_qt
streaming_client_qt_win:
$(MAKE) -i -C $(APP_STREAMINGMANAGER_DIR) clean
$(MAKE) -C $(APP_STREAMINGMANAGER_DIR) INSTALL_DIR=$(abspath $(INSTALL_DIR)) install_client_qt_win