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
|
||||
BOARD:=imx6
|
||||
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_SUBTYPE:=vfpv3
|
||||
MAINTAINER:=Luka Perkov <luka@openwrt.org>
|
||||
|
|
|
@ -7,23 +7,20 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/image.mk
|
||||
|
||||
BOARDS := \
|
||||
imx6dl-wandboard \
|
||||
imx6q-gw5400-a
|
||||
define get_human_name
|
||||
$(shell echo $(PROFILE) | tr '[:upper:]' '[:lower:]' | sed 's/_/-/g')
|
||||
endef
|
||||
|
||||
# emit FIT images, DTB's and generic zImage
|
||||
define Image/BuildKernel
|
||||
$(foreach board,$(BOARDS),
|
||||
cp $(LINUX_DIR)/arch/arm/boot/dts/$(board).dtb $(BIN_DIR)/$(IMG_PREFIX)-$(board).dtb
|
||||
define Image/BuildKernel/Template
|
||||
cp $(LINUX_DIR)/arch/arm/boot/dts/$(1).dtb $(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb
|
||||
|
||||
$(call Image/BuildKernel/MkFIT,$(board),$(KDIR)/zImage,$(BIN_DIR)/$(IMG_PREFIX)-$(board).dtb,none,0x10008000,0x10008000)
|
||||
cp $(KDIR)/fit-$(board).itb $(BIN_DIR)/$(IMG_PREFIX)-$(board)-uImage.itb
|
||||
$(call Image/BuildKernel/MkFIT,$(1),$(KDIR)/zImage,$(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb,none,0x10008000,0x10008000)
|
||||
cp $(KDIR)/fit-$(1).itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage.itb
|
||||
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
$(call Image/BuildKernel/MkFIT,$(board),$(KDIR)/zImage-initramfs,$(BIN_DIR)/$(IMG_PREFIX)-$(board).dtb,none,0x10008000,0x10008000,-initramfs)
|
||||
cp $(KDIR)/fit-$(board)-initramfs.itb $(BIN_DIR)/$(IMG_PREFIX)-$(board)-uImage-initramfs.itb
|
||||
$(call Image/BuildKernel/MkFIT,$(1),$(KDIR)/zImage-initramfs,$(BIN_DIR)/$(IMG_PREFIX)-$(1).dtb,none,0x10008000,0x10008000,-initramfs)
|
||||
cp $(KDIR)/fit-$(1)-initramfs.itb $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fit-uImage-initramfs.itb
|
||||
endif
|
||||
)
|
||||
|
||||
cp $(KDIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-zImage
|
||||
|
||||
|
@ -32,32 +29,76 @@ define Image/BuildKernel
|
|||
endif
|
||||
endef
|
||||
|
||||
# board-specific sysupgrade image
|
||||
define BuildFirmware/Generic
|
||||
dd if=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-uImage.itb of=$(KDIR)/uImage.pad bs=64k conv=sync; \
|
||||
dd if=$(KDIR)/root.$(2) of=$(KDIR)/root.$(2).pad bs=128k conv=sync; \
|
||||
sh $(TOPDIR)/scripts/combined-image.sh \
|
||||
$(KDIR)/uImage.pad \
|
||||
$(KDIR)/root.$(2).pad \
|
||||
$(BIN_DIR)/$(IMG_PREFIX)-$(patsubst jffs2-%,jffs2,$(patsubst squashfs-%,squashfs,$(1)))-sysupgrade.bin
|
||||
define Image/InstallKernel/Template
|
||||
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INCLUDE_KERNEL),)
|
||||
$(INSTALL_DIR) $(TARGET_DIR)/boot
|
||||
$(CP) $(BIN_DIR)/$(IMG_PREFIX)-zImage $(TARGET_DIR)/boot/
|
||||
ln -sf $(IMG_PREFIX)-zImage $(TARGET_DIR)/boot/zImage
|
||||
endif
|
||||
|
||||
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
|
||||
|
||||
define Image/Build
|
||||
$(call Image/Build/$(1),$(1))
|
||||
$(foreach board,$(BOARDS),
|
||||
$(call BuildFirmware/Generic,$(board),$(1))
|
||||
)
|
||||
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
|
||||
$(if $(Image/Build/$(1)), \
|
||||
$(call Image/Build/$(1),$(1)), \
|
||||
$(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE)-$(1).img \
|
||||
)
|
||||
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