[v3] board: Add support for Engicam PX30 SOM board

Message ID 20250310055356.273718-2-meena.murthy@amarulasolutions.com
State New
Headers show
Series
  • [v3] board: Add support for Engicam PX30 SOM board
Related show

Commit Message

Meena Murthy March 10, 2025, 5:53 a.m. UTC
Add initial support for Engicam PX30 SOM board
with below features:
- U-Boot 2024.01
- Linux 6.4.16
- Default packages from buildroot

px30 ctouch2 with 10 inches display

https://www.engicam.com/vis-prod/C-Touch-2-0-Carrier-Board/ \
	General-purpose-carrier-board-with-capacitive-touch-interface-EDIMM-20-compliant

---

Changes v2 -> v3:
Used BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS so tht arguments are passed only to BR2_ROOTFS_POST_IMAGE_SCRIPT

Changes v1 -> v2:
Based on code review comments
- Added more details in readme.txt for Engicam board
- Corrected board name
- Removed android-sparse image from genimage.cfg
- Changes to configuration file

Signed-off-by: Meena Murthy <meena.murthy@amarulasolutions.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
---
 DEVELOPERS                                    |  4 ++
 board/engicam/px30core/extlinux.conf          |  4 ++
 board/engicam/px30core/genimage.cfg           | 22 +++++++
 .../patches/linux-headers/linux-headers.hash  |  1 +
 .../engicam/px30core/patches/linux/linux.hash |  2 +
 .../engicam/px30core/patches/uboot/uboot.hash |  2 +
 board/engicam/px30core/post-build.sh          |  5 ++
 board/engicam/px30core/readme.txt             | 60 +++++++++++++++++++
 configs/engicam_px30_core_defconfig           | 55 +++++++++++++++++
 9 files changed, 155 insertions(+)
 create mode 100644 board/engicam/px30core/extlinux.conf
 create mode 100644 board/engicam/px30core/genimage.cfg
 create mode 120000 board/engicam/px30core/patches/linux-headers/linux-headers.hash
 create mode 100644 board/engicam/px30core/patches/linux/linux.hash
 create mode 100644 board/engicam/px30core/patches/uboot/uboot.hash
 create mode 100755 board/engicam/px30core/post-build.sh
 create mode 100644 board/engicam/px30core/readme.txt
 create mode 100644 configs/engicam_px30_core_defconfig

Comments

Julien Olivain March 16, 2025, 5:17 p.m. UTC | #1
Hi Meena,

Thanks for the patch!  I have few comments.

First, to follow the "convention" with other commits, could you
change the commit one-liner title to:

configs/engicam_px30_core_defconfig: new defconfig

See for example:
https://gitlab.com/buildroot.org/buildroot/-/commit/27b3e6774fe447dc5eb12cc7f498ec8868eb65c9

On 10/03/2025 06:53, Meena Murthy wrote:
> Add initial support for Engicam PX30 SOM board
> with below features:
> - U-Boot 2024.01
> - Linux 6.4.16
> - Default packages from buildroot
> 
> px30 ctouch2 with 10 inches display
> 
> https://www.engicam.com/vis-prod/C-Touch-2-0-Carrier-Board/ \
> 	General-purpose-carrier-board-with-capacitive-touch-interface-EDIMM-20-compliant
> 
> ---
> 
> Changes v2 -> v3:
> Used BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS so tht arguments are passed only 
> to BR2_ROOTFS_POST_IMAGE_SCRIPT
> 
> Changes v1 -> v2:
> Based on code review comments
> - Added more details in readme.txt for Engicam board
> - Corrected board name
> - Removed android-sparse image from genimage.cfg
> - Changes to configuration file
> 
> Signed-off-by: Meena Murthy <meena.murthy@amarulasolutions.com>
> Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>

Those "Signed-off-by" lines should be moved in the previous section
(before "---", as this patch change list gets removed when applied).

> ---
>  DEVELOPERS                                    |  4 ++
>  board/engicam/px30core/extlinux.conf          |  4 ++
>  board/engicam/px30core/genimage.cfg           | 22 +++++++
>  .../patches/linux-headers/linux-headers.hash  |  1 +
>  .../engicam/px30core/patches/linux/linux.hash |  2 +
>  .../engicam/px30core/patches/uboot/uboot.hash |  2 +
>  board/engicam/px30core/post-build.sh          |  5 ++
>  board/engicam/px30core/readme.txt             | 60 +++++++++++++++++++
>  configs/engicam_px30_core_defconfig           | 55 +++++++++++++++++
>  9 files changed, 155 insertions(+)
>  create mode 100644 board/engicam/px30core/extlinux.conf
>  create mode 100644 board/engicam/px30core/genimage.cfg
>  create mode 120000 
> board/engicam/px30core/patches/linux-headers/linux-headers.hash
>  create mode 100644 board/engicam/px30core/patches/linux/linux.hash
>  create mode 100644 board/engicam/px30core/patches/uboot/uboot.hash
>  create mode 100755 board/engicam/px30core/post-build.sh
>  create mode 100644 board/engicam/px30core/readme.txt
>  create mode 100644 configs/engicam_px30_core_defconfig

[...]

> diff --git a/board/engicam/px30core/patches/linux/linux.hash 
> b/board/engicam/px30core/patches/linux/linux.hash
> new file mode 100644
> index 0000000000..db84a5e56b
> --- /dev/null
> +++ b/board/engicam/px30core/patches/linux/linux.hash
> @@ -0,0 +1,2 @@
> +# Locally calculated

Since you are using an upstream Kernel, we can get hashes from
upstream. Can you change this "# Locally calculated" with:

# From https://www.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc

> +sha256  
> 9626ec84a39ecb009bf11a271dd520941159c165d4e62f82e3a77b79d20ff27d  
> linux-6.4.16.tar.xz

[...]

> diff --git a/configs/engicam_px30_core_defconfig 
> b/configs/engicam_px30_core_defconfig
> new file mode 100644
> index 0000000000..d92dba69ed
> --- /dev/null
> +++ b/configs/engicam_px30_core_defconfig
> @@ -0,0 +1,55 @@
> +BR2_aarch64=y
> +BR2_cortex_a72_a53=y

The Kernel device tree you reference below is:
rockchip/px30-engicam-px30-core-ctouch2-of10

 From:
https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/boot/dts/rockchip/px30-engicam-px30-core-ctouch2-of10.dts?h=v6.4.16#n9
https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/boot/dts/rockchip/px30.dtsi?h=v6.4.16#n38

this DTS describes 4x Cortex-A35 CPUs in the PX30.
This should preferably be:

BR2_cortex_a35=y

Can you double-check, and correct if needed?

> +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_4=y

I recommend to switch to 6.12.x series, so this should become:
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12=y
See also my comment for BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE.

> +BR2_BINUTILS_VERSION_2_42_X=y

Buildroot defconfigs usually keep the default binutils version. So
this "BR2_BINUTILS_VERSION_2_42_X=y" can be removed.

> +BR2_CURL="curl -q --ftp-pasv --retry 3"
> +BR2_WGET="wget -nd -t 3"
> +BR2_SVN="svn --non-interactive"
> +BR2_SCP="scp"
> +BR2_SFTP="sftp"
> +BR2_GNU_MIRROR="http://ftpmirror.gnu.org"

BR2_CURL to BR2_GNU_MIRROR variables does not seem specific to this
board defconfig. They can be removed so the defconfig can use the
Buildroot default values.

> +BR2_GLOBAL_PATCH_DIR="board/engicam/px30core/patches"
> +BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
> +BR2_TARGET_GENERIC_HOSTNAME=""

BR2_TARGET_GENERIC_HOSTNAME should preferably contain a string
identifying the board, like "engicam-px30-core", or could be
completely removed (to use the default value). Could you change
to use one of those two options?

> +BR2_TARGET_GENERIC_ISSUE=""

Same comment for BR2_TARGET_GENERIC_ISSUE. Can you use a string
identifying the board, like "Welcome to Engicam PX30.Core C.TOUCH 2.0"
or remove this config variable (to use the default value)?

> +BR2_ROOTFS_MERGED_USR=y

BR2_ROOTFS_MERGED_USR should be a choice left to the end user.
Can you remove this configuration from this defconfig?

> +BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
> +BR2_ROOTFS_POST_BUILD_SCRIPT="board/engicam/px30core/post-build.sh"
> +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
> +BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c 
> board/engicam/px30core/genimage.cfg"
> +BR2_LINUX_KERNEL=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.4.16"

Kernel 6.4.x series is not LTS and is no longer maintained. Since
this board is still maintained upstream, could you update the
kernel to the latest LTS? At this time, this is v6.12.19. See:
https://web.git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/arm64/boot/dts/rockchip/px30-engicam-px30-core-ctouch2-of10.dts?h=v6.12.19

> +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
> +BR2_LINUX_KERNEL_DTS_SUPPORT=y
> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/px30-engicam-px30-core-ctouch2-of10"
> +BR2_LINUX_KERNEL_INSTALL_TARGET=y
> +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
> +BR2_TARGET_ROOTFS_EXT2=y
> +BR2_TARGET_ROOTFS_EXT2_4=y
> +BR2_TARGET_ROOTFS_EXT2_SIZE="150M"
> +BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O 64bit"
> +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
> +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y
> +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git"

The _CUSTOM_REPO_URL given here is the same as the Buildroot
default value. See:
https://gitlab.com/buildroot.org/buildroot/-/blob/2025.02-rc2/boot/arm-trusted-firmware/arm-trusted-firmware.mk?ref_type=tags#L19

So _CUSTOM_GIT and _CUSTOM_REPO_URL can be removed.

> +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.9"

Since this platform seems to be supported upstream, can you
update to the latest lts version? At this time, it is "lts-v2.12.1".
See:
https://git.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a.git/+/refs/tags/lts-v2.12.1

So this should become:
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y
BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="lts-v2.12.1"

> +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="px30"
> +BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES=""
> +BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN=y
> +BR2_TARGET_UBOOT=y
> +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
> +BR2_TARGET_UBOOT_CUSTOM_VERSION=y
> +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01"

Same comment for u-boot. Since this board seems to be supported in
upstream u-boot, it could be updated to v2025.01. See:
https://source.denx.de/u-boot/u-boot/-/blob/v2025.01/configs/px30-core-ctouch2-of10-px30_defconfig

> +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="px30-core-ctouch2-of10-px30"
> +BR2_TARGET_UBOOT_NEEDS_DTC=y
> +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
> +BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y
> +BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF=y
> +BR2_TARGET_UBOOT_USE_BINMAN=y
> +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
> +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb"
> +BR2_TARGET_UBOOT_SPL=y
> +BR2_TARGET_UBOOT_SPL_NAME="idbloader.img"
> +BR2_PACKAGE_HOST_DOSFSTOOLS=y
> +BR2_PACKAGE_HOST_GENIMAGE=y
> +BR2_PACKAGE_HOST_MTOOLS=y

Can you send an updated version of this patch with those changes,
please?

Best regards,

Julien.

To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.
Meena Murthy March 20, 2025, 9:46 a.m. UTC | #2
Hi Julien,

Thank you for taking the time to review my patch, starting to work on your
feedback.

Regards,

*Meena Murthy*

Software Engineer

M. +91 994 5695125

meena.murthy@amarulasolutions.com

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index 1f04dd2a1e..a3c6ff87a0 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -2372,6 +2372,10 @@  F:	package/libtraceevent/
 F:	package/libtracefs
 F:	package/linux-tools/linux-tool-rtla.mk.in
 
+N:	Meena Murthy <meena.murthy@amarulasolutions.com>
+F:	board/engicam/px30core/
+F:	configs/engicam_px30_core_defconfig
+
 N:	Michael Durrant <mdurrant@arcturusnetworks.com>
 F:	board/arcturus/
 F:	configs/arcturus_ucp1020_defconfig
diff --git a/board/engicam/px30core/extlinux.conf b/board/engicam/px30core/extlinux.conf
new file mode 100644
index 0000000000..6d5a845cb0
--- /dev/null
+++ b/board/engicam/px30core/extlinux.conf
@@ -0,0 +1,4 @@ 
+label Engicam-EDIMM linux
+  kernel /boot/Image
+  devicetree /boot/px30-engicam-px30-core-ctouch2-of10.dtb
+  append earlycon=uart8250,mmio32,0xff160000 root=/dev/mmcblk1p1 rootwait
diff --git a/board/engicam/px30core/genimage.cfg b/board/engicam/px30core/genimage.cfg
new file mode 100644
index 0000000000..966c869273
--- /dev/null
+++ b/board/engicam/px30core/genimage.cfg
@@ -0,0 +1,22 @@ 
+image sdcard.img {
+	hdimage {
+	}
+
+	partition u-boot-tpl-spl-dtb {
+		in-partition-table = "no"
+		image = "idbloader.img"
+		offset = 32K
+	}
+
+	partition u-boot-dtb {
+		in-partition-table = "no"
+		image = "u-boot.itb"
+		offset = 8M
+		size = 30M
+	}
+
+	partition rootfs {
+		partition-type = 0x83
+		image = "rootfs.ext4"
+	}
+}
diff --git a/board/engicam/px30core/patches/linux-headers/linux-headers.hash b/board/engicam/px30core/patches/linux-headers/linux-headers.hash
new file mode 120000
index 0000000000..5808d92afe
--- /dev/null
+++ b/board/engicam/px30core/patches/linux-headers/linux-headers.hash
@@ -0,0 +1 @@ 
+../linux/linux.hash
\ No newline at end of file
diff --git a/board/engicam/px30core/patches/linux/linux.hash b/board/engicam/px30core/patches/linux/linux.hash
new file mode 100644
index 0000000000..db84a5e56b
--- /dev/null
+++ b/board/engicam/px30core/patches/linux/linux.hash
@@ -0,0 +1,2 @@ 
+# Locally calculated
+sha256  9626ec84a39ecb009bf11a271dd520941159c165d4e62f82e3a77b79d20ff27d  linux-6.4.16.tar.xz
diff --git a/board/engicam/px30core/patches/uboot/uboot.hash b/board/engicam/px30core/patches/uboot/uboot.hash
new file mode 100644
index 0000000000..bc999536af
--- /dev/null
+++ b/board/engicam/px30core/patches/uboot/uboot.hash
@@ -0,0 +1,2 @@ 
+# Locally calculated
+sha256  b99611f1ed237bf3541bdc8434b68c96a6e05967061f992443cb30aabebef5b3  u-boot-2024.01.tar.bz2
diff --git a/board/engicam/px30core/post-build.sh b/board/engicam/px30core/post-build.sh
new file mode 100755
index 0000000000..d84a5da0b0
--- /dev/null
+++ b/board/engicam/px30core/post-build.sh
@@ -0,0 +1,5 @@ 
+#!/bin/sh
+
+BOARD_DIR="$(dirname "$0")"
+
+install -m 0644 -D "$BOARD_DIR"/extlinux.conf "$TARGET_DIR"/boot/extlinux/extlinux.conf
diff --git a/board/engicam/px30core/readme.txt b/board/engicam/px30core/readme.txt
new file mode 100644
index 0000000000..0693792d56
--- /dev/null
+++ b/board/engicam/px30core/readme.txt
@@ -0,0 +1,60 @@ 
+ENGICAM PX30-EDIMM2.2 carrier board
+===================================
+
+Build:
+
+  $ make engicam_px30_core_defconfig
+  $ make
+
+Files created in output directory
+---------------------------------
+
+output/images
+
+├── bl31.elf
+├── idbloader.img
+├── Image
+├── px30-engicam-px30-core-ctouch2-of10.dtb
+├── rootfs.ext2
+├── rootfs.ext4 -> rootfs.ext2
+├── rootfs.tar
+├── sdcard.img
+├── u-boot.bin
+└── u-boot.itb
+
+How to connect the board and get started:
+-----------------------------------------
+Ensure that the power supply is stable and provides enough current to handle
+the board's needs, especially when peripherals are connected.
+
+Insert micro SD card on the board micro SD slot J17
+
+Creating bootable SD card:
+--------------------------
+sudo dd if=output/images/sdcard.img of=/dev/sdX && sync
+
+/dev/sdX is the path in host via which SD card is detected
+Where X is your SD card device
+
+Connect UART port on the board J26
+
+Serial console
+--------------
+Launch minicom at host with 1152008N1
+
+Power on the kit using J4
+
+Refer link on checking board booting
+
+Program eMMC
+------------
+Connect USB otg cable A-type to host pc, Micro USB end to board.
+
+Close Jumper JM5.
+
+Boot the Kit with SD boot.
+
+Program eMMC in U-Boot. (Refer link for the steps)
+
+Wiki link:
+https://wiki.amarulasolutions.com/bsp/rockchip/px30/engicam-px30-edimm2.2.html
diff --git a/configs/engicam_px30_core_defconfig b/configs/engicam_px30_core_defconfig
new file mode 100644
index 0000000000..d92dba69ed
--- /dev/null
+++ b/configs/engicam_px30_core_defconfig
@@ -0,0 +1,55 @@ 
+BR2_aarch64=y
+BR2_cortex_a72_a53=y
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_4=y
+BR2_BINUTILS_VERSION_2_42_X=y
+BR2_CURL="curl -q --ftp-pasv --retry 3"
+BR2_WGET="wget -nd -t 3"
+BR2_SVN="svn --non-interactive"
+BR2_SCP="scp"
+BR2_SFTP="sftp"
+BR2_GNU_MIRROR="http://ftpmirror.gnu.org"
+BR2_GLOBAL_PATCH_DIR="board/engicam/px30core/patches"
+BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
+BR2_TARGET_GENERIC_HOSTNAME=""
+BR2_TARGET_GENERIC_ISSUE=""
+BR2_ROOTFS_MERGED_USR=y
+BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/engicam/px30core/post-build.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT_ARGS="-c board/engicam/px30core/genimage.cfg"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.4.16"
+BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="rockchip/px30-engicam-px30-core-ctouch2-of10"
+BR2_LINUX_KERNEL_INSTALL_TARGET=y
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="150M"
+BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O 64bit"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="v2.9"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="px30"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_IMAGES=""
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_ARM32_TOOLCHAIN=y
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2024.01"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="px30-core-ctouch2-of10-px30"
+BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_NEEDS_OPENSSL=y
+BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y
+BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF=y
+BR2_TARGET_UBOOT_USE_BINMAN=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
+BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot.itb"
+BR2_TARGET_UBOOT_SPL=y
+BR2_TARGET_UBOOT_SPL_NAME="idbloader.img"
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y