imx6: reorganize build system
Changes include: * switching to profiles * adding ubifs support * building image for GW54XX board Signed-off-by: Luka Perkov <luka@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38441 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
c2338633c0
commit
9252c452cd
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
ARCH:=arm
|
ARCH:=arm
|
||||||
BOARD:=imx6
|
BOARD:=imx6
|
||||||
BOARDNAME:=Freescale i.MX 6 Series
|
BOARDNAME:=Freescale i.MX 6 Series
|
||||||
FEATURES:=audio display gpio pcie usb usbgadget squashfs targz
|
FEATURES:=audio display gpio pcie usb usbgadget squashfs targz ubifs
|
||||||
CPU_TYPE:=cortex-a9
|
CPU_TYPE:=cortex-a9
|
||||||
CPU_SUBTYPE:=vfpv3
|
CPU_SUBTYPE:=vfpv3
|
||||||
MAINTAINER:=Luka Perkov <luka@openwrt.org>
|
MAINTAINER:=Luka Perkov <luka@openwrt.org>
|
||||||
|
|
|
@ -7,23 +7,20 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
include $(INCLUDE_DIR)/image.mk
|
include $(INCLUDE_DIR)/image.mk
|
||||||
|
|
||||||
BOARDS := \
|
define get_human_name
|
||||||
imx6dl-wandboard \
|
$(shell echo $(PROFILE) | tr '[:upper:]' '[:lower:]' | sed 's/_/-/g')
|
||||||
imx6q-gw5400-a
|
endef
|
||||||
|
|
||||||
# emit FIT images, DTB's and generic zImage
|
define Image/BuildKernel/Template
|
||||||
define Image/BuildKernel
|
cp $(LINUX_DIR)/arch/arm/boot/dts/$(1).dtb $(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb
|
||||||
$(foreach board,$(BOARDS),
|
|
||||||
cp $(LINUX_DIR)/arch/arm/boot/dts/$(board).dtb $(BIN_DIR)/$(IMG_PREFIX)-$(board).dtb
|
|
||||||
|
|
||||||
$(call Image/BuildKernel/MkFIT,$(board),$(KDIR)/zImage,$(BIN_DIR)/$(IMG_PREFIX)-$(board).dtb,none,0x10008000,0x10008000)
|
$(call Image/BuildKernel/MkFIT,$(1),$(KDIR)/zImage,$(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb,none,0x10008000,0x10008000)
|
||||||
cp $(KDIR)/fit-$(board).itb $(BIN_DIR)/$(IMG_PREFIX)-$(board)-uImage.itb
|
cp $(KDIR)/fit-$(1).itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage.itb
|
||||||
|
|
||||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||||
$(call Image/BuildKernel/MkFIT,$(board),$(KDIR)/zImage-initramfs,$(BIN_DIR)/$(IMG_PREFIX)-$(board).dtb,none,0x10008000,0x10008000,-initramfs)
|
$(call Image/BuildKernel/MkFIT,$(1),$(KDIR)/zImage-initramfs,$(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb,none,0x10008000,0x10008000,-initramfs)
|
||||||
cp $(KDIR)/fit-$(board)-initramfs.itb $(BIN_DIR)/$(IMG_PREFIX)-$(board)-uImage-initramfs.itb
|
cp $(KDIR)/fit-$(1)-initramfs.itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage-initramfs.itb
|
||||||
endif
|
endif
|
||||||
)
|
|
||||||
|
|
||||||
cp $(KDIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-zImage
|
cp $(KDIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-zImage
|
||||||
|
|
||||||
|
@ -32,32 +29,76 @@ define Image/BuildKernel
|
||||||
endif
|
endif
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# board-specific sysupgrade image
|
define Image/InstallKernel/Template
|
||||||
define BuildFirmware/Generic
|
|
||||||
dd if=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-uImage.itb of=$(KDIR)/uImage.pad bs=64k conv=sync; \
|
ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_KERNEL),)
|
||||||
dd if=$(KDIR)/root.$(2) of=$(KDIR)/root.$(2).pad bs=128k conv=sync; \
|
$(INSTALL_DIR) $(TARGET_DIR)/boot
|
||||||
sh $(TOPDIR)/scripts/combined-image.sh \
|
$(CP) $(BIN_DIR)/$(IMG_PREFIX)-zImage $(TARGET_DIR)/boot/
|
||||||
$(KDIR)/uImage.pad \
|
ln -sf $(IMG_PREFIX)-zImage $(TARGET_DIR)/boot/zImage
|
||||||
$(KDIR)/root.$(2).pad \
|
endif
|
||||||
$(BIN_DIR)/$(IMG_PREFIX)-$(patsubst jffs2-%,jffs2,$(patsubst squashfs-%,squashfs,$(1)))-sysupgrade.bin
|
|
||||||
|
ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_DTB),)
|
||||||
|
$(INSTALL_DIR) $(TARGET_DIR)/boot
|
||||||
|
ifneq ($(1),)
|
||||||
|
$(CP) $(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb $(TARGET_DIR)/boot/
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Image/Build/squashfs
|
||||||
|
$(call prepare_generic_squashfs,$(KDIR)/root.$(1))
|
||||||
|
dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-$(1).bin bs=128k conv=sync
|
||||||
|
( \
|
||||||
|
dd if=$(BIN_DIR)/$(IMG_PREFIX)-$(call get_human_name)-fit-uImage.itb bs=2048k conv=sync; \
|
||||||
|
dd if=$(KDIR)/root.$(1) bs=128k conv=sync; \
|
||||||
|
) > $(BIN_DIR)/$(IMG_PREFIX)-$(call get_human_name)-fit-$(1).bin
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Image/mkfs/targz
|
||||||
|
|
||||||
|
$(TAR) -czpf $(BIN_DIR)/$(IMG_PREFIX)-$(call get_human_name)-rootfs.tar.gz --numeric-owner --owner=0 --group=0 -C $(TARGET_DIR)/ .
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Image/Build/ubifs
|
||||||
|
|
||||||
|
ifneq ($($(PROFILE)_UBIFS_OPTS),)
|
||||||
|
$(CP) $(KDIR)/root.ubifs $(BIN_DIR)/$(IMG_PREFIX)-$(call get_human_name)-ubifs.img
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Image/Build/ubi
|
||||||
|
|
||||||
|
ifneq ($($(PROFILE)_UBI_OPTS),)
|
||||||
|
$(CP) $(KDIR)/root.ubi $(BIN_DIR)/$(IMG_PREFIX)-$(call get_human_name)-ubi.img
|
||||||
|
endif
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
Image/BuildKernel/Template/generic=$(call Image/BuildKernel/Template)
|
||||||
|
Image/InstallKernel/Template/generic=$(call Image/InstallKernel/Template)
|
||||||
|
|
||||||
|
Image/BuildKernel/Template/IMX6DL_WANDBOARD=$(call Image/BuildKernel/Template,imx6dl-wandboard)
|
||||||
|
Image/InstallKernel/Template/IMX6DL_WANDBOARD=$(call Image/InstallKernel/Template,imx6dl-wandboard)
|
||||||
|
|
||||||
|
Image/BuildKernel/Template/IMX6Q_GW5400_A=$(call Image/BuildKernel/Template,imx6q-gw5400-a)
|
||||||
|
Image/InstallKernel/Template/IMX6Q_GW5400_A=$(call Image/InstallKernel/Template,imx6q-gw5400-a)
|
||||||
|
|
||||||
|
Image/BuildKernel/Template/IMX6Q_GW54XX=$(call Image/BuildKernel/Template,imx6q-gw54xx)
|
||||||
|
Image/InstallKernel/Template/IMX6Q_GW54XX=$(call Image/InstallKernel/Template,imx6q-gw54xx)
|
||||||
|
|
||||||
|
|
||||||
|
define Image/BuildKernel
|
||||||
|
$(call Image/BuildKernel/Template/$(PROFILE))
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Image/InstallKernel
|
||||||
|
$(call Image/InstallKernel/Template/$(PROFILE))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Image/Build
|
define Image/Build
|
||||||
$(call Image/Build/$(1),$(1))
|
$(if $(Image/Build/$(1)), \
|
||||||
$(foreach board,$(BOARDS),
|
$(call Image/Build/$(1),$(1)), \
|
||||||
$(call BuildFirmware/Generic,$(board),$(1))
|
$(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE)-$(1).img \
|
||||||
)
|
|
||||||
endef
|
|
||||||
|
|
||||||
# rootfs and board-specific combined kernel+rootfs for convenience
|
|
||||||
define Image/Build/squashfs
|
|
||||||
$(call prepare_generic_squashfs,$(KDIR)/root.$(1))
|
|
||||||
dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-$(1).img bs=128k conv=sync; \
|
|
||||||
$(foreach board,$(BOARDS),
|
|
||||||
( \
|
|
||||||
dd if=$(BIN_DIR)/$(IMG_PREFIX)-$(board)-uImage.itb bs=2048k conv=sync; \
|
|
||||||
dd if=$(KDIR)/root.$(1) bs=64k conv=sync; \
|
|
||||||
) > $(BIN_DIR)/$(IMG_PREFIX)-$(board)-$(1).bin
|
|
||||||
)
|
)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
[rootfs]
|
||||||
|
# Volume mode (other option is static)
|
||||||
|
mode=ubi
|
||||||
|
# Source image
|
||||||
|
image=root.ubifs
|
||||||
|
# Volume ID in UBI image
|
||||||
|
vol_id=0
|
||||||
|
# Allow for dynamic resize
|
||||||
|
vol_type=dynamic
|
||||||
|
# Volume name
|
||||||
|
vol_name=rootfs
|
||||||
|
# Autoresize volume at first mount
|
||||||
|
vol_flags=autoresize
|
|
@ -0,0 +1,15 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2013 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
define Profile/IMX6DL_WANDBOARD
|
||||||
|
NAME:=Wandboard Dual
|
||||||
|
PACKAGES:= \
|
||||||
|
kmod-thermal-imx kmod-usb-chipidea kmod-usb-mxs-phy \
|
||||||
|
uboot-envtools
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call Profile,IMX6DL_WANDBOARD))
|
|
@ -0,0 +1,57 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2013 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
define Profile/IMX6Q_GW5400_A
|
||||||
|
NAME:=Gateworks Ventana GW5400-A
|
||||||
|
PACKAGES:= \
|
||||||
|
kmod-thermal-imx kmod-usb-chipidea kmod-usb-mxs-phy
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Profile/IMX6Q_GW5400_A/Description
|
||||||
|
The Gateworks GW5400-A family of products is based on the Freescale i.MX6Q SoC
|
||||||
|
and offers a large variety of peripherals such as:
|
||||||
|
|
||||||
|
* DDR3
|
||||||
|
* SPI FLASH
|
||||||
|
* 6x PCIe (3x with USB)
|
||||||
|
* Optional expansion for additional USB/PCI based periperhals
|
||||||
|
* 1x USB EHCI
|
||||||
|
* 1x USB OTG
|
||||||
|
* HDMI Audio/Video in/out
|
||||||
|
* Analog Video in/out
|
||||||
|
* Analog Audio in/out
|
||||||
|
* Gateworks System Controller
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call Profile,IMX6Q_GW5400_A))
|
||||||
|
|
||||||
|
define Profile/IMX6Q_GW54XX
|
||||||
|
NAME:=Gateworks Ventana GW54XX
|
||||||
|
PACKAGES:= \
|
||||||
|
kmod-thermal-imx kmod-usb-chipidea kmod-usb-mxs-phy
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Profile/IMX6Q_GW54XX/Description
|
||||||
|
The Gateworks GW54xx family of products is based on the Freescale i.MX6Q SoC
|
||||||
|
and offers a large variety of peripherals such as:
|
||||||
|
|
||||||
|
* DDR3
|
||||||
|
* NAND FLASH
|
||||||
|
* 6x PCIe (3x with USB)
|
||||||
|
* Optional expansion for additional USB/PCI based periperhals
|
||||||
|
* 1x USB EHCI
|
||||||
|
* 1x USB OTG
|
||||||
|
* HDMI Audio/Video in/out
|
||||||
|
* Analog Video in/out
|
||||||
|
* Analog Audio in/out
|
||||||
|
* Gateworks System Controller
|
||||||
|
endef
|
||||||
|
|
||||||
|
IMX6Q_GW54XX_UBIFS_OPTS:="-m 2048 -e 124KiB -c 1912"
|
||||||
|
IMX6Q_GW54XX_UBI_OPTS:="-m 2048 -p 128KiB -s 2048"
|
||||||
|
|
||||||
|
$(eval $(call Profile,IMX6Q_GW54XX))
|
Loading…
Reference in New Issue