blob: 38b923e3e6aaa9c39cc05044707f383543680387 [file] [log] [blame]
Igor Opaniukd496f982018-06-04 12:05:57 +03001################################################################################
2# Following variables defines how the NS_USER (Non Secure User - Client
3# Application), NS_KERNEL (Non Secure Kernel), S_KERNEL (Secure Kernel) and
4# S_USER (Secure User - TA) are compiled
5################################################################################
6COMPILE_NS_USER ?= 64
7override COMPILE_NS_KERNEL := 64
8COMPILE_S_USER ?= 32
9COMPILE_S_KERNEL ?= 64
10
11################################################################################
12# Includes
13################################################################################
14include common.mk
15
16################################################################################
17# Paths to git projects and various binaries
18################################################################################
19ifeq ($(DEBUG),1)
20ARM_TF_BUILD ?= debug
21else
22ARM_TF_BUILD ?= release
23endif
24
25OUT_PATH ?= $(ROOT)/out
Igor Opaniukb81fe042018-10-09 13:40:30 +030026ROOTFS_BIN ?= $(ROOT)/out-br/images/rootfs.tar
Igor Opaniukd496f982018-06-04 12:05:57 +030027ARM_TF_PATH ?= $(ROOT)/arm-trusted-firmware
28LLOADER_PATH ?= $(ROOT)/l-loader
29UBOOT_PATH ?= $(ROOT)/u-boot
Igor Opaniukd496f982018-06-04 12:05:57 +030030OPTEE_CLIENT_EXPORT ?= $(OPTEE_CLIENT_PATH)/out/export
Igor Opaniukb81fe042018-10-09 13:40:30 +030031OPTEE_PATH ?= $(ROOT)/optee_os
Igor Opaniukd496f982018-06-04 12:05:57 +030032LINUX_PATH ?= $(ROOT)/linux
33TOOLS_PATH ?= $(ROOT)/poplar-tools
34
35BL1_BIN ?= $(ARM_TF_PATH)/build/poplar/$(ARM_TF_BUILD)/bl1.bin
36FIP_BIN ?= $(ARM_TF_PATH)/build/poplar/$(ARM_TF_BUILD)/fip.bin
37LLOADER_BIN ?= $(LLOADER_PATH)/l-loader.bin
38
39LINUX_DTB ?= $(LINUX_PATH)/arch/arm64/boot/dts/hisilicon/hi3798cv200-poplar.dtb
40
41UBOOT_BIN ?= $(UBOOT_PATH)/u-boot.bin
42OPTEE_BIN ?= $(OPTEE_PATH)/out/arm/core/tee-header_v2.bin
43OPTEE_BIN_EXTRA1 ?= $(OPTEE_PATH)/out/arm/core/tee-pager_v2.bin
44OPTEE_BIN_EXTRA2 ?= $(OPTEE_PATH)/out/arm/core/tee-pageable_v2.bin
45
Igor Opaniukd496f982018-06-04 12:05:57 +030046################################################################################
47# Targets
48################################################################################
49.PHONY: all
Igor Opaniukb81fe042018-10-09 13:40:30 +030050all: u-boot arm-tf buildroot l-loader linux prepare-images | toolchains
Igor Opaniukd496f982018-06-04 12:05:57 +030051
52.PHONY: clean
Igor Opaniukb81fe042018-10-09 13:40:30 +030053clean: u-boot-clean arm-tf-clean l-loader-clean linux-clean optee-os-clean \
54 buildroot-clean
Igor Opaniukd496f982018-06-04 12:05:57 +030055
56################################################################################
57# Toolchain
58################################################################################
59include toolchain.mk
60
61################################################################################
62# U-Boot
63################################################################################
64.PHONY: u-boot-config
65u-boot-config:
66ifeq ($(wildcard $(UBOOT_PATH)/.config),)
67 $(MAKE) -C $(UBOOT_PATH) \
68 CROSS_COMPILE=$(AARCH64_CROSS_COMPILE) poplar_defconfig
69endif
70
71.PHONY: u-boot-menuconfig
72u-boot-menuconfig: u-boot-config
73 $(MAKE) -C $(UBOOT_PATH) \
74 CROSS_COMPILE=$(AARCH64_CROSS_COMPILE) menuconfig
75
76.PHONY: u-boot
77u-boot: u-boot-config
78 $(MAKE) -C $(UBOOT_PATH) \
79 CROSS_COMPILE="$(AARCH64_CROSS_COMPILE)"
80
81.PHONY: u-boot-clean
82u-boot-clean:
83 cd $(UBOOT_PATH) && git clean -xdf
84
85################################################################################
Igor Opaniukd496f982018-06-04 12:05:57 +030086# ARM Trusted Firmware
87################################################################################
88.PHONY: arm-tf
89arm-tf: u-boot optee-os
90 $(MAKE) -C $(ARM_TF_PATH) \
91 CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)" \
92 all fip \
93 DEBUG=$(DEBUG) \
94 PLAT=poplar \
95 SPD=opteed \
96 BL32=$(OPTEE_BIN) \
97 BL33=$(UBOOT_BIN) \
98 BL32_EXTRA1=$(OPTEE_BIN_EXTRA1) \
99 BL32_EXTRA2=$(OPTEE_BIN_EXTRA2)
100
101.PHONY: arm-tf-clean
102arm-tf-clean:
103 cd $(ARM_TF_PATH) && git clean -xdf
104
105################################################################################
106# OP-TEE
107################################################################################
108OPTEE_OS_COMMON_FLAGS += PLATFORM=poplar CFG_ARM64_core=y CFG_DRAM_SIZE_GB=2
109OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=poplar
110
111.PHONY: optee-os
112optee-os: optee-os-common
113
114.PHONY: optee-os-clean
115optee-os-clean: optee-os-clean-common
116
117################################################################################
118# l-loader
119################################################################################
120l-loader: arm-tf
121 cp $(BL1_BIN) $(LLOADER_PATH)/atf
122 cp $(FIP_BIN) $(LLOADER_PATH)/atf
123 $(MAKE) -C $(LLOADER_PATH) CROSS_COMPILE="$(AARCH32_CROSS_COMPILE)"
124
125.PHONY: l-loader-clean
126l-loader-clean:
127 cd $(LLOADER_PATH) && git clean -xdf
128
129################################################################################
Igor Opaniukd496f982018-06-04 12:05:57 +0300130# Linux
131################################################################################
132LINUX_DEFCONFIG_COMMON_ARCH := arm64
133LINUX_DEFCONFIG_COMMON_FILES := \
134 $(LINUX_PATH)/arch/arm64/configs/poplar_defconfig \
135 $(CURDIR)/kconfigs/hikey.conf
136
137linux-defconfig: $(LINUX_PATH)/.config
138
139LINUX_COMMON_FLAGS += ARCH=arm64
Jerome Forissier7fd8fc92018-08-13 09:36:17 +0200140# Avoid compile errors with GCC 8.x. These flags may be removed when
141# https://github.com/96boards-poplar/linux/pull/3 is merged.
142LINUX_COMMON_FLAGS += CFLAGS_drv_hifb_proc.o=-Wno-stringop-truncation \
143 CFLAGS_drv_pvr_intf.o=-Wno-sizeof-pointer-memaccess \
144 CFLAGS_drv_display.o=-Wno-array-bounds
Igor Opaniukd496f982018-06-04 12:05:57 +0300145
146linux: linux-common
147
148linux-defconfig-clean: linux-defconfig-clean-common
149
150LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64
151
152linux-clean: linux-clean-common
153
154LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64
155
156linux-cleaner: linux-cleaner-common
157
Igor Opaniukd496f982018-06-04 12:05:57 +0300158.PHONY: prepare-images
Igor Opaniukb81fe042018-10-09 13:40:30 +0300159prepare-images: linux l-loader buildroot
Igor Opaniukd496f982018-06-04 12:05:57 +0300160 @cp $(TOOLS_PATH)/poplar_recovery_builder.sh $(OUT_PATH)
161 @cp $(LLOADER_BIN) $(OUT_PATH)
162 @cp $(LINUX_PATH)/arch/arm64/boot/Image $(OUT_PATH)
163 @cp $(LINUX_DTB) $(OUT_PATH)
Igor Opaniukb81fe042018-10-09 13:40:30 +0300164 @cd $(OUT_PATH) && PATH=$(UBOOT_PATH)/tools:$$PATH \
165 bash ./poplar_recovery_builder.sh all "$(ROOTFS_BIN)"
166
167################################################################################
168# Buildroot/RootFS
169################################################################################
170.PHONY: update_rootfs
171update_rootfs: arm-tf u-boot
172
173.PHONY: buildroot
174buildroot: update_rootfs
Igor Opaniukd496f982018-06-04 12:05:57 +0300175
176################################################################################
177# Flash images
178################################################################################
179.PHONY: flash-help
180flash-help:
181 @echo "1. Install and configure TFTP server on your host PC:"
182 @echo ""
183 @echo " $$ sudo apt-get install atftpd # install atftpd server"
184 @echo " $$ sudo vim /etc/default/atftpd # edit atftpd server config"
185 @echo " $$ sudo service atftpd restart # restart atftpd server"
186 @echo ""
187 @echo "2. Proper configuration should look like:"
188 @echo ""
189 @echo " $$ cat /etc/default/atftpd"
190 @echo " USE_INETD=false"
191 @echo " OPTIONS=\"--tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /path/to/rep/out/dir\""
192 @echo ""
193 @echo "3. Flash proper U-boot build to USB stick."
194 @echo " It should be flashed to the first FAT32 partition. Then boot"
195 @echo " from it by pressing USB_BOOT switch on the board"
196 @echo ""
197 @echo "4. Connect to Poplar board over serial console (run on host PC):"
198 @echo ""
199 @echo " $$ screen /dev/ttyUSB0 115200"
200 @echo ""
201 @echo "5. Configure network interface in Poplar U-boot shell. If you can't"
202 @echo "get into U-boot console, press and hold Ctrl+C while booting:"
203 @echo ""
204 @echo " => setenv ipaddr 192.168.0.2"
205 @echo " => setenv netmask 255.255.255.0"
206 @echo " => setenv serverip 192.168.0.3"
207 @echo " ETH1: PHY(phyaddr=3, rgmii) link UP: DUPLEX=FULL : SPEED=1000M"
208 @echo " MAC: 00-16-8E-62-66-84"
209 @echo " host 192.168.0.3 is alive"
210 @echo ""
211 @echo "6. Verify connection is working (run in U-boot shell):"
212 @echo ""
213 @echo " => ping 192.168.0.3"
214 @echo ""
215 @echo "7. Run installer (run in U-boot shell):"
216 @echo ""
217 @echo " => tftp 0x08000000 recovery_files/install.scr"
218 @echo " => source 0x08000000"
219 @echo ""
220 @echo "8. After successful flashing reboot your board (U-boot shell):"
221 @echo ""
222 @echo " => reset"
223 @echo ""