meta-digi-arm: simplify flash images generation
We inherited from DEL the requirement to build more than one flash image for the same rootfs contents depending on the EBS of the flash chip. Yocto does not have support to generate more than one flash image so we had to create functions in the image_types_digi bbclass to provide this feature. This commit removes that functionality and uses the standard yocto support to generate ubifs and jffs2 flash images. The way to customize the flash parameters is via EXTRA_IMAGECMD_jffs2 and MKUBIFS_ARGS variables. In our case those variables are already set depending on the different hardware variants. https://jira.digi.com/browse/DEL-232 Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
parent
dbd966543e
commit
09e72aa0f4
|
|
@ -1,69 +1,5 @@
|
||||||
inherit image_types_fsl
|
inherit image_types_fsl
|
||||||
|
|
||||||
# Dynamically calculate max LEB count for UBIFS images
|
|
||||||
FLASH_MLC = "${@max_leb_count(d)}"
|
|
||||||
def max_leb_count(d):
|
|
||||||
_mlc = []
|
|
||||||
_flash_peb = d.getVar('FLASH_PEB', True)
|
|
||||||
_flash_psz = d.getVar('FLASH_PSZ', True)
|
|
||||||
for i in _flash_peb.split(','):
|
|
||||||
_mlc.append(str(next_power_of_2(int(_flash_psz)/int(i)) - 1))
|
|
||||||
return ','.join(_mlc)
|
|
||||||
|
|
||||||
# Return next power_of_2 bigger than passed argument
|
|
||||||
def next_power_of_2(n):
|
|
||||||
i = 1
|
|
||||||
while (n > i):
|
|
||||||
i <<= 1
|
|
||||||
return i
|
|
||||||
|
|
||||||
# Return TRUE if jffs2 is not in IMAGE_FSTYPES
|
|
||||||
JFFS2_NOT_IN_FSTYPES = "${@jffs2_not_in_fstypes(d)}"
|
|
||||||
def jffs2_not_in_fstypes(d):
|
|
||||||
return str('jffs2' not in d.getVar('IMAGE_FSTYPES', True).split()).lower()
|
|
||||||
|
|
||||||
IMAGE_CMD_jffs2() {
|
|
||||||
nimg="$(echo ${FLASH_PEB} | awk -F, '{print NF}')"
|
|
||||||
for i in $(seq 1 ${nimg}); do
|
|
||||||
peb_it="$(echo ${FLASH_PEB} | cut -d',' -f${i})"
|
|
||||||
# Do not use '-p (padding)' option. It breaks 'ccardimx28js' flash images [JIRA:DEL-218]
|
|
||||||
mkfs.jffs2 -n -e ${peb_it} -d ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.${peb_it}.rootfs.jffs2
|
|
||||||
ln -sf ${IMAGE_NAME}.${peb_it}.rootfs.jffs2 ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${peb_it}.jffs2
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# The CWD for this set of commads is DEPLOY_DIR_IMAGE so the paths are relative to it.
|
|
||||||
COMPRESS_CMD_sum() {
|
|
||||||
# 'nimg' is set in IMAGE_CMD_jffs2 (which is executed just before)
|
|
||||||
for i in $(seq 1 ${nimg}); do
|
|
||||||
peb_it="$(echo ${FLASH_PEB} | cut -d',' -f${i})"
|
|
||||||
sumtool -e ${peb_it} -i ${IMAGE_NAME}.${peb_it}.rootfs.jffs2 -o ${IMAGE_NAME}.${peb_it}.rootfs.jffs2.sum
|
|
||||||
ln -sf ${IMAGE_NAME}.${peb_it}.rootfs.jffs2.sum ${IMAGE_LINK_NAME}.${peb_it}.jffs2.sum
|
|
||||||
|
|
||||||
# If 'jffs2' is not in IMAGE_FSTYPES remove the images and symlinks
|
|
||||||
if ${JFFS2_NOT_IN_FSTYPES}; then
|
|
||||||
rm -f ${IMAGE_NAME}.${peb_it}.rootfs.jffs2 ${IMAGE_LINK_NAME}.${peb_it}.jffs2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Create dummy file so the final script can remove it and not fail
|
|
||||||
if ${JFFS2_NOT_IN_FSTYPES}; then
|
|
||||||
touch ${IMAGE_NAME}.rootfs.jffs2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
IMAGE_CMD_ubifs() {
|
|
||||||
nimg="$(echo ${FLASH_PEB} | awk -F, '{print NF}')"
|
|
||||||
for i in $(seq 1 ${nimg}); do
|
|
||||||
mlc_it="$(echo ${FLASH_MLC} | cut -d',' -f${i})"
|
|
||||||
peb_it="$(echo ${FLASH_PEB} | cut -d',' -f${i})"
|
|
||||||
leb_it="$(echo ${FLASH_LEB} | cut -d',' -f${i})"
|
|
||||||
mio_it="$(echo ${FLASH_MIO} | cut -d',' -f${i})"
|
|
||||||
mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.${peb_it}.rootfs.ubifs -m ${mio_it} -e ${leb_it} -c ${mlc_it} ${MKUBIFS_ARGS}
|
|
||||||
ln -sf ${IMAGE_NAME}.${peb_it}.rootfs.ubifs ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.${peb_it}.ubifs
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
IMAGE_CMD_boot.vfat() {
|
IMAGE_CMD_boot.vfat() {
|
||||||
#
|
#
|
||||||
# Image generation code for image type 'boot.vfat'
|
# Image generation code for image type 'boot.vfat'
|
||||||
|
|
|
||||||
|
|
@ -12,19 +12,7 @@ KERNEL_DEVICETREE = "imx28-${MACHINE}.dtb"
|
||||||
# create a symlink to the correct device.
|
# create a symlink to the correct device.
|
||||||
SERIAL_CONSOLES = "115200;ttyS0"
|
SERIAL_CONSOLES = "115200;ttyS0"
|
||||||
|
|
||||||
#################################################
|
# FLASH parameters
|
||||||
## Flash parameters for JFFS2 and UBIFS images ##
|
MKUBIFS_ARGS ?= "-m 2048 -e 126976 -c 2047"
|
||||||
#################################################
|
EXTRA_IMAGECMD_jffs2 ?= "-l -e 128 -n"
|
||||||
# partition size (KiB)
|
JFFS2_SUM_EXTRA_ARGS ?= "${EXTRA_IMAGECMD_jffs2}"
|
||||||
# physical eraseblock size (KiB)
|
|
||||||
# logical eraseblock size (bytes)
|
|
||||||
# minimum input/output size (bytes)
|
|
||||||
# sub-page size (bytes)
|
|
||||||
#
|
|
||||||
# PEB, LEB, MIO and SUB might be a list of comma-separated values
|
|
||||||
#
|
|
||||||
FLASH_PSZ = "262144"
|
|
||||||
FLASH_PEB = "128"
|
|
||||||
FLASH_LEB = "126976"
|
|
||||||
FLASH_MIO = "2048"
|
|
||||||
FLASH_SUB = "-"
|
|
||||||
|
|
|
||||||
|
|
@ -6,19 +6,11 @@ include conf/machine/include/ccimx51.inc
|
||||||
|
|
||||||
SERIAL_CONSOLES = "38400;ttymxc1"
|
SERIAL_CONSOLES = "38400;ttymxc1"
|
||||||
|
|
||||||
#################################################
|
# Per-variant FLASH parameters
|
||||||
## Flash parameters for JFFS2 and UBIFS images ##
|
MKUBIFS_ARGS ?= "-m 2048 -e 129024 -c 4095"
|
||||||
#################################################
|
MKUBIFS_ARGS_agv4k ?= "-m 4096 -e 520192 -c 1023"
|
||||||
# partition size (KiB)
|
MKUBIFS_ARGS_eagv4k ?= "-m 4096 -e 520192 -c 1023"
|
||||||
# physical eraseblock size (KiB)
|
EXTRA_IMAGECMD_jffs2 ?= "-l -e 128 -n"
|
||||||
# logical eraseblock size (bytes)
|
EXTRA_IMAGECMD_jffs2_agv4k ?= "-l -e 512 -n"
|
||||||
# minimum input/output size (bytes)
|
EXTRA_IMAGECMD_jffs2_eagv4k ?= "-l -e 512 -n"
|
||||||
# sub-page size (bytes)
|
JFFS2_SUM_EXTRA_ARGS ?= "${EXTRA_IMAGECMD_jffs2}"
|
||||||
#
|
|
||||||
# PEB, LEB, MIO and SUB might be a list of comma-separated values
|
|
||||||
#
|
|
||||||
FLASH_PSZ = "524288"
|
|
||||||
FLASH_PEB = "128,512"
|
|
||||||
FLASH_LEB = "129024,520192"
|
|
||||||
FLASH_MIO = "2048,4096"
|
|
||||||
FLASH_SUB = "512,1024"
|
|
||||||
|
|
|
||||||
|
|
@ -7,19 +7,11 @@ include conf/machine/include/ccimx53.inc
|
||||||
|
|
||||||
SERIAL_CONSOLES = "115200;ttymxc0"
|
SERIAL_CONSOLES = "115200;ttymxc0"
|
||||||
|
|
||||||
#################################################
|
# Per-variant FLASH parameters
|
||||||
## Flash parameters for JFFS2 and UBIFS images ##
|
MKUBIFS_ARGS ?= "-m 2048 -e 129024 -c 4095"
|
||||||
#################################################
|
MKUBIFS_ARGS_4k ?= "-m 4096 -e 520192 -c 1023"
|
||||||
# partition size (KiB)
|
MKUBIFS_ARGS_e4k ?= "-m 4096 -e 520192 -c 1023"
|
||||||
# physical eraseblock size (KiB)
|
EXTRA_IMAGECMD_jffs2 ?= "-l -e 128 -n"
|
||||||
# logical eraseblock size (bytes)
|
EXTRA_IMAGECMD_jffs2_4k ?= "-l -e 512 -n"
|
||||||
# minimum input/output size (bytes)
|
EXTRA_IMAGECMD_jffs2_e4k ?= "-l -e 512 -n"
|
||||||
# sub-page size (bytes)
|
JFFS2_SUM_EXTRA_ARGS ?= "${EXTRA_IMAGECMD_jffs2}"
|
||||||
#
|
|
||||||
# PEB, LEB, MIO and SUB might be a list of comma-separated values
|
|
||||||
#
|
|
||||||
FLASH_PSZ = "524288"
|
|
||||||
FLASH_PEB = "128,512"
|
|
||||||
FLASH_LEB = "129024,520192"
|
|
||||||
FLASH_MIO = "2048,4096"
|
|
||||||
FLASH_SUB = "512,1024"
|
|
||||||
|
|
|
||||||
|
|
@ -37,24 +37,28 @@ module_autoload_pmic_battery = "pmic_battery"
|
||||||
# To build any of these variants configure MACHINE_VARIANT on the project's
|
# To build any of these variants configure MACHINE_VARIANT on the project's
|
||||||
# local.conf to the variant name.
|
# local.conf to the variant name.
|
||||||
#
|
#
|
||||||
# Name WiFi Eth2 RAM Accel GPU VPU
|
# Name WiFi Eth2 RAM=128MB NAND=2GB Accel GPU VPU
|
||||||
# ---------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# 128 N N 128 N N N
|
# 128 N N Y N N N N
|
||||||
# 128a N N 128 Y N N
|
# 128a N N Y N Y N N
|
||||||
# 128agv N N 128 Y Y Y
|
# 128agv N N Y N Y Y Y
|
||||||
# agv N N 256 Y Y Y
|
# agv N N N N Y Y Y
|
||||||
# eagv N Y 512 Y Y Y
|
# agv4k N N N Y Y Y Y
|
||||||
# w Y N 512 N N N
|
# eagv N Y N N Y Y Y
|
||||||
# w128a Y N 128 Y N N
|
# eagv4k N Y N Y Y Y Y
|
||||||
# w128agv Y N 128 Y Y Y
|
# w Y N N N N N N
|
||||||
# wagv Y N 256 Y Y Y
|
# w128a Y N Y N Y N N
|
||||||
# weagv Y Y 512 Y Y Y
|
# w128agv Y N Y N Y Y Y
|
||||||
|
# wagv Y N N N Y Y Y
|
||||||
|
# weagv Y Y N N Y Y Y
|
||||||
|
|
||||||
# Per-variant machine features
|
# Per-variant machine features
|
||||||
MACHINE_FEATURES_append_128a = " accelerometer"
|
MACHINE_FEATURES_append_128a = " accelerometer"
|
||||||
MACHINE_FEATURES_append_128agv = " accelerometer accel-video accel-graphics"
|
MACHINE_FEATURES_append_128agv = " accelerometer accel-video accel-graphics"
|
||||||
MACHINE_FEATURES_append_agv = " accelerometer accel-video accel-graphics"
|
MACHINE_FEATURES_append_agv = " accelerometer accel-video accel-graphics"
|
||||||
|
MACHINE_FEATURES_append_agv4k = " accelerometer accel-video accel-graphics"
|
||||||
MACHINE_FEATURES_append_eagv = " ext-eth accelerometer accel-video accel-graphics"
|
MACHINE_FEATURES_append_eagv = " ext-eth accelerometer accel-video accel-graphics"
|
||||||
|
MACHINE_FEATURES_append_eagv4k = " ext-eth accelerometer accel-video accel-graphics"
|
||||||
MACHINE_FEATURES_append_w = " wifi"
|
MACHINE_FEATURES_append_w = " wifi"
|
||||||
MACHINE_FEATURES_append_w128a = " wifi accelerometer"
|
MACHINE_FEATURES_append_w128a = " wifi accelerometer"
|
||||||
MACHINE_FEATURES_append_w128agv = " wifi accelerometer accel-video accel-graphics"
|
MACHINE_FEATURES_append_w128agv = " wifi accelerometer accel-video accel-graphics"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue