1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
INHERIT += "xilinx-vars"
INHERIT += "xilinx-deprecated"
# Default Xilinx BSP Machine settings
MACHINE_FEATURES_BACKFILL_CONSIDERED += "rtc"
# File System Configuration
IMAGE_FSTYPES ?= "tar.gz cpio cpio.gz cpio.gz.u-boot"
# Kernel Configuration
PREFERRED_PROVIDER_virtual/kernel ??= "linux-xlnx"
# Device tree Configuration
PREFERRED_PROVIDER_virtual/dtb ??= "${@'device-tree' if d.getVar('XILINX_WITH_ESW') else ''}"
# U-Boot Configuration
PREFERRED_PROVIDER_virtual/bootloader ??= "u-boot-xlnx"
PREFERRED_PROVIDER_virtual/boot-bin ??= "xilinx-bootbin"
PREFERRED_PROVIDER_u-boot-tools ??= "u-boot-tools-xlnx"
PREFERRED_PROVIDER_u-boot-tools-native ??= "u-boot-tools-xlnx-native"
PREFERRED_PROVIDER_nativesdk-u-boot-tools ??= "nativesdk-u-boot-tools-xlnx"
# Libmetal and OpenAMP Configuration
PREFERRED_PROVIDER_libmetal ?= "libmetal-xlnx"
PREFERRED_PROVIDER_open-amp ?= "open-amp-xlnx"
UBOOT_SUFFIX ?= "bin"
UBOOT_BINARY ?= "u-boot.${UBOOT_SUFFIX}"
UBOOT_ELF ?= "u-boot.elf"
XSERVER ?= " \
xserver-xorg \
xf86-input-evdev \
xf86-input-mouse \
xf86-video-fbdev \
${XSERVER_EXT} \
"
SYSTEM_DTFILE ??= ""
CONFIG_DTFILE ??= "${SYSTEM_DTFILE}"
FIT_CONF_DEFAULT_DTB ?= "${@os.path.basename(d.getVar('CONFIG_DTFILE')).replace('.dts', '.dtb') if d.getVar('CONFIG_DTFILE') else ''}"
# Define to avoid parsse errors below if undefind elsewhere
INITRAMFS_IMAGE ??= ""
# IMAGE_BOOT_FILES is a whitespace-separated list of entries specifying files to be installed into the boot partition
# entries can change the installed filename by specifying the destination name after a semicolon (e.g. u-boot.img;uboot)
# make sure to use the installed filename when scanning IMAGE_BOOT_FILES
IMAGE_BOOT_FILES_INSTALLED = "${@' '.join([x.split(';')[-1] for x in d.getVar('IMAGE_BOOT_FILES').split()])}"
# Automatically add WKS_FILE_DEPENDS based on the configuration
# Initial value from oe-core/meta/classes-recipe/image_types_wic.bbclass
WKS_FILE_DEPENDS ?= "${WKS_FILE_DEPENDS_DEFAULT} ${WKS_FILE_DEPENDS_BOOTLOADERS}"
WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.bin', ' virtual/boot-bin', '', d)}"
WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'system.dtb', ' virtual/dtb', '', d)}"
WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.scr', ' u-boot-xlnx-scr', '', d)}"
WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}"
WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'Image', ' virtual/kernel', '', d)}"
WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uImage', ' virtual/kernel', '', d)}"
WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'zImage', ' virtual/kernel', '', d)}"
WKS_FILE_DEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' ${INITRAMFS_IMAGE}', '', d)}"
# Automatically add IMAGE_BOOT_FILES to /boot via packages
MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.bin', ' ${PREFERRED_PROVIDER_virtual/boot-bin}', '', d)}"
MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'system.dtb', ' ${PREFERRED_PROVIDER_virtual/dtb}', '', d)}"
MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'boot.scr', ' u-boot-xlnx-scr', '', d)}"
MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uEnv.txt', ' u-boot-xlnx-uenv', '', d)}"
MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'Image', ' kernel-image-image', '', d)}"
MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'uImage', ' kernel-image-uimage', '', d)}"
MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', 'zImage', ' kernel-image-zimage', '', d)}"
MACHINE_ESSENTIAL_EXTRA_RDEPENDS .= "${@bb.utils.contains('IMAGE_BOOT_FILES_INSTALLED', '${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz.u-boot', ' initramdisk-${INITRAMFS_IMAGE}', '', d)}"
# Default SD card wks file, split /boot and /
WKS_FILES ?= "xilinx-default-sd.wks"
IMAGE_BOOT_FILES ?= "${@get_default_image_boot_files(d)}"
def get_default_image_boot_files(d):
files = []
esw_type = d.getVar('XILINX_WITH_ESW') or ''
if esw_type:
if 'zynq' in d.getVar('OVERRIDES').split(':'):
files.append('boot.bin')
if 'zynqmp' in d.getVar('OVERRIDES').split(':'):
files.append('boot.bin')
if 'versal' in d.getVar('OVERRIDES').split(':'):
files.append('boot.bin')
if 'versal-net' in d.getVar('OVERRIDES').split(':'):
files.append('boot.bin')
# kernel images
kerneltypes = set((d.getVar("KERNEL_IMAGETYPE") or "").split())
kerneltypes |= set((d.getVar("KERNEL_IMAGETYPES") or "").split())
kerneltypes |= set((d.getVar("KERNEL_ALT_IMAGETYPE") or "").split())
for i in kerneltypes:
files.append(i)
# u-boot image
if d.getVar("UBOOT_BINARY"):
files.append(d.getVar("UBOOT_BINARY"))
# device trees (device-tree only), these are first as they are likely desired over the kernel ones
if "device-tree" in (d.getVar("PREFERRED_PROVIDER_virtual/dtb") or ""):
files.append("system.dtb")
files.append("devicetree/*.dtb;devicetree/")
files.append("devicetree/*.dtbo;devicetree/")
# device trees (kernel only)
if d.getVar("KERNEL_DEVICETREE"):
dtbs = d.getVar("KERNEL_DEVICETREE").split(" ")
dtbs = [os.path.basename(d) for d in dtbs]
for dtb in dtbs:
files.append(dtb)
return " ".join(files)
EXTRA_IMAGEDEPENDS += "${@get_default_extra_imagedepends(d)}"
def get_default_extra_imagedepends(d):
depends = []
# Add firmware dependencies
esw_type = d.getVar('XILINX_WITH_ESW') or ''
if esw_type:
depends.append('libyaml-native')
depends.append('python3-cython-native')
depends.append('python3-pyyaml-native')
if 'microblaze' in d.getVar('OVERRIDES').split(':'):
depends.append('virtual/bitstream')
if 'zynq' in d.getVar('OVERRIDES').split(':'):
depends.append('virtual/boot-bin')
if 'zynqmp' in d.getVar('OVERRIDES').split(':'):
depends.append('virtual/boot-bin')
if 'versal' in d.getVar('OVERRIDES').split(':'):
depends.append('virtual/boot-bin')
depends.append('virtual/cdo')
if 'versal-net' in d.getVar('OVERRIDES').split(':'):
depends.append('virtual/boot-bin')
depends.append('virtual/cdo')
return " ".join(depends)
XSERVER_EXT ?= ""
FPGA_MNGR_RECONFIG_ENABLE ?= "1"
# This variable is supported only with SysVinit.
SERIAL_CONSOLES_CHECK = "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '${SERIAL_CONSOLES}', '', d)}"
|