[Buildroot] [PATCH] boot: introduce at91bootstrap4
Eugen Hristev
eugen.hristev at microchip.com
Fri Apr 23 07:08:22 UTC 2021
Introduce new bootloader package for the next generation
of at91bootstrap, at91bootstrap4
AT91Bootstrap4 only supports devices: sam9x60, sama5d2, sama5d3,
sama5d4, sama7g5.
Based on at91bootstrap3 recipes.
Signed-off-by: Eugen Hristev <eugen.hristev at microchip.com>
---
boot/Config.in | 1 +
boot/at91bootstrap4/Config.in | 103 ++++++++++++++++++++++++
boot/at91bootstrap4/at91bootstrap4.hash | 3 +
boot/at91bootstrap4/at91bootstrap4.mk | 103 ++++++++++++++++++++++++
4 files changed, 210 insertions(+)
create mode 100644 boot/at91bootstrap4/Config.in
create mode 100644 boot/at91bootstrap4/at91bootstrap4.hash
create mode 100644 boot/at91bootstrap4/at91bootstrap4.mk
diff --git a/boot/Config.in b/boot/Config.in
index b3adbfc8bc..2e7eea542c 100644
--- a/boot/Config.in
+++ b/boot/Config.in
@@ -3,6 +3,7 @@ menu "Bootloaders"
source "boot/afboot-stm32/Config.in"
source "boot/at91bootstrap/Config.in"
source "boot/at91bootstrap3/Config.in"
+source "boot/at91bootstrap4/Config.in"
source "boot/at91dataflashboot/Config.in"
source "boot/arm-trusted-firmware/Config.in"
source "boot/barebox/Config.in"
diff --git a/boot/at91bootstrap4/Config.in b/boot/at91bootstrap4/Config.in
new file mode 100644
index 0000000000..500cf7727f
--- /dev/null
+++ b/boot/at91bootstrap4/Config.in
@@ -0,0 +1,103 @@
+config BR2_TARGET_AT91BOOTSTRAP4
+ bool "AT91 Bootstrap 4"
+ depends on BR2_arm926t || BR2_cortex_a5 || BR2_cortex_a7
+ help
+ AT91Bootstrap is a first level bootloader for the Microchip AT91
+ devices. It integrates algorithms for:
+ - Device initialization such as clock configuration, PIO
+ settings...
+ - Peripheral drivers such as PIO, PMC or SDRAMC...
+ - Physical media algorithm such as DataFlash, NandFlash, NOR
+ Flash...
+
+ https://www.linux4sam.org/bin/view/Linux4SAM/AT91Bootstrap
+
+if BR2_TARGET_AT91BOOTSTRAP4
+
+choice
+
+ prompt "AT91 Bootstrap 4 version"
+
+config BR2_TARGET_AT91BOOTSTRAP4_LATEST_VERSION
+ bool "4.0.0-rc1"
+
+config BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_GIT
+ bool "Custom Git repository"
+ help
+ This option allows Buildroot to get the AT91 Bootstrap 4
+ source code from a Git repository.
+
+config BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL
+ bool "Custom tarball"
+
+endchoice
+
+config BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL_LOCATION
+ string "URL of custom AT91Bootstrap tarball"
+ depends on BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL
+
+if BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_GIT
+
+config BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_REPO_URL
+ string "URL of custom repository"
+
+config BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_REPO_VERSION
+ string "Custom repository version"
+ help
+ Revision to use in the typical format used by Git
+ E.G. a sha id, a tag, branch, ..
+
+endif
+
+config BR2_TARGET_AT91BOOTSTRAP4_VERSION
+ string
+ default "v4.0.0-rc1" if BR2_TARGET_AT91BOOTSTRAP4_LATEST_VERSION
+ default BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_REPO_VERSION \
+ if BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_GIT
+ default "custom" if BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL
+
+config BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_PATCH_DIR
+ string "custom patch dir"
+ help
+ If your board requires custom patches, add the path to the
+ directory containing the patches here. The patches must be
+ named at91bootstrap4-<something>.patch.
+
+ Most users may leave this empty
+
+#
+# Configuration selection
+#
+
+choice
+ prompt "AT91 Bootstrap 4 configuration"
+ default BR2_TARGET_AT91BOOTSTRAP4_USE_DEFCONFIG
+
+config BR2_TARGET_AT91BOOTSTRAP4_USE_DEFCONFIG
+ bool "Using a defconfig"
+
+config BR2_TARGET_AT91BOOTSTRAP4_USE_CUSTOM_CONFIG
+ bool "Using a custom config file"
+
+endchoice
+
+config BR2_TARGET_AT91BOOTSTRAP4_DEFCONFIG
+ string "Defconfig name"
+ depends on BR2_TARGET_AT91BOOTSTRAP4_USE_DEFCONFIG
+ help
+ Name of the at91bootstrap4 defconfig file to use, without the
+ trailing _defconfig. The defconfig is located at
+ configs/ in the at91bootstrap4 tree.
+
+config BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_CONFIG_FILE
+ string "Configuration file path"
+ depends on BR2_TARGET_AT91BOOTSTRAP4_USE_CUSTOM_CONFIG
+ help
+ Path to the at91bootstrap4 configuration file
+
+config BR2_TARGET_AT91BOOTSTRAP4_NEEDS_PYTHON3
+ bool "AT91Bootstrap4 requires host Python 3.x for NAND/PMECC scripts"
+ help
+ Host Python 3.x needs to be installed to use the NAND/PMECC python scripts
+
+endif # BR2_TARGET_AT91BOOTSTRAP4
diff --git a/boot/at91bootstrap4/at91bootstrap4.hash b/boot/at91bootstrap4/at91bootstrap4.hash
new file mode 100644
index 0000000000..0408e73190
--- /dev/null
+++ b/boot/at91bootstrap4/at91bootstrap4.hash
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 6f0bab65b134cf3f5df7d5bf3b902c1217cba2f25aafb983350cd631a73db60d at91bootstrap4-v4.0.0-rc1.tar.gz
+sha256 fd7a1ce5719bb7abf5e289da2e0ea8c933af3ba0f6ad03dbdbd2b7f54a77498a main.c
diff --git a/boot/at91bootstrap4/at91bootstrap4.mk b/boot/at91bootstrap4/at91bootstrap4.mk
new file mode 100644
index 0000000000..0b46af767f
--- /dev/null
+++ b/boot/at91bootstrap4/at91bootstrap4.mk
@@ -0,0 +1,103 @@
+################################################################################
+#
+# at91bootstra44
+#
+################################################################################
+
+AT91BOOTSTRAP4_VERSION = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP4_VERSION))
+
+ifeq ($(BR2_TARGET_AT91BOOTSTRAP4_NEEDS_PYTHON3),y)
+AT91BOOTSTRAP3_DEPENDENCIES += host-python3
+endif
+
+ifeq ($(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL),y)
+AT91BOOTSTRAP4_TARBALL = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL_LOCATION))
+AT91BOOTSTRAP4_SITE = $(patsubst %/,%,$(dir $(AT91BOOTSTRAP4_TARBALL)))
+AT91BOOTSTRAP4_SOURCE = $(notdir $(AT91BOOTSTRAP4_TARBALL))
+BR_NO_CHECK_HASH_FOR += $(AT91BOOTSTRAP4_SOURCE)
+else ifeq ($(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_GIT),y)
+AT91BOOTSTRAP4_SITE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_REPO_URL))
+AT91BOOTSTRAP4_SITE_METHOD = git
+BR_NO_CHECK_HASH_FOR += $(AT91BOOTSTRAP4_SOURCE)
+else
+AT91BOOTSTRAP4_SITE = $(call github,linux4sam,at91bootstrap,$(AT91BOOTSTRAP4_VERSION))
+endif
+
+AT91BOOTSTRAP4_LICENSE = Microchip License
+ifeq ($(BR2_TARGET_AT91BOOTSTRAP4_LATEST_VERSION),y)
+AT91BOOTSTRAP4_LICENSE_FILES = main.c
+endif
+
+AT91BOOTSTRAP4_CPE_ID_VENDOR = linux4sam
+AT91BOOTSTRAP4_CPE_ID_PRODUCT = at91bootstrap
+
+AT91BOOTSTRAP4_INSTALL_IMAGES = YES
+AT91BOOTSTRAP4_INSTALL_TARGET = NO
+
+AT91BOOTSTRAP4_CUSTOM_PATCH_DIR = \
+ $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_PATCH_DIR))
+
+AT91BOOTSTRAP4_MAKE_OPTS = CROSS_COMPILE=$(TARGET_CROSS) DESTDIR=$(BINARIES_DIR)
+
+ifneq ($(AT91BOOTSTRAP4_CUSTOM_PATCH_DIR),)
+define AT91BOOTSTRAP4_APPLY_CUSTOM_PATCHES
+ $(APPLY_PATCHES) $(@D) $(AT91BOOTSTRAP4_CUSTOM_PATCH_DIR) \*.patch
+endef
+
+AT91BOOTSTRAP4_POST_PATCH_HOOKS += AT91BOOTSTRAP4_APPLY_CUSTOM_PATCHES
+endif
+
+define AT91BOOTSTRAP4_BUILD_CMDS
+ $(MAKE) $(AT91BOOTSTRAP4_MAKE_OPTS) -C $(@D)
+endef
+
+define AT91BOOTSTRAP4_INSTALL_IMAGES_CMDS
+ cp $(@D)/build/binaries/*.bin $(BINARIES_DIR)
+endef
+
+ifeq ($(BR2_TARGET_AT91BOOTSTRAP4_USE_DEFCONFIG),y)
+AT91BOOTSTRAP4_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP4_DEFCONFIG))_defconfig
+else ifeq ($(BR2_TARGET_AT91BOOTSTRAP4_USE_CUSTOM_CONFIG),y)
+AT91BOOTSTRAP4_KCONFIG_FILE = $(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_CONFIG_FILE))
+endif
+
+AT91BOOTSTRAP4_KCONFIG_EDITORS = menuconfig xconfig gconfig
+AT91BOOTSTRAP4_KCONFIG_OPTS = $(AT91BOOTSTRAP4_MAKE_OPTS)
+
+# Checks to give errors that the user can understand
+# Must be before we call to kconfig-package
+ifeq ($(BR_BUILDING),y)
+
+ifeq ($(BR2_TARGET_AT91BOOTSTRAP4_USE_DEFCONFIG),y)
+# We must use the user-supplied kconfig value, because
+# AT91BOOTSTRAP4_KCONFIG_DEFCONFIG will at least contain
+# the trailing _defconfig
+ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP4_DEFCONFIG)),)
+$(error No at91bootstrap4 defconfig name specified, check your BR2_TARGET_AT91BOOTSTRAP4_DEFCONFIG setting)
+endif
+endif
+
+ifeq ($(BR2_TARGET_AT91BOOTSTRAP4_USE_CUSTOM_CONFIG),y)
+ifeq ($(AT91BOOTSTRAP4_KCONFIG_FILE),)
+$(error No at91bootstrap4 configuration file specified, check your BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_CONFIG_FILE setting)
+endif
+endif
+
+ifeq ($(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_GIT),y)
+ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_REPO_URL)),)
+$(error No custom at91bootstrap4 repository URL specified. Check your BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_REPO_URL setting)
+endif
+ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_REPO_VERSION)),)
+$(error No custom at91bootstrap4 repository version specified. Check your BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_REPO_VERSION setting)
+endif
+endif
+
+ifeq ($(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL),y)
+ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL_LOCATION)),)
+$(error No custom AT91Bootstrap4 tarball specified. Check your BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL_LOCATION setting)
+endif # qstrip BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL_LOCATION
+endif # BR2_TARGET_AT91BOOTSTRAP4_CUSTOM_TARBALL
+
+endif # BR_BUILDING
+
+$(eval $(kconfig-package))
--
2.25.1
More information about the buildroot
mailing list