[v2] board: add support for ARC HS Development Kit (HSDK)

Message ID 20171219145554.17718-1-didin@synopsys.com
State Accepted
Commit 7f430a4e87970d275af087d4fefcf15fa92778f9
Headers show
Series
  • [v2] board: add support for ARC HS Development Kit (HSDK)
Related show

Commit Message

Evgeniy Didin Dec. 19, 2017, 2:55 p.m.
Synopsys DesignWare HSDK (which stands for ARC HS
Development Kit) is the latest and greatest development
platform that sports quad-core ARC HS38 in real silicon.

Most noticeable features of the board are:
 * Quad-core ARC HS38 CPU running at 1GHz
 * 4Gb of DDR
 * Built-in Vivante GPU (well supported via open source
   Etnaviv drivers)
 * Built-in Wi-Fi/Bluetooth module (RedPine RS-9113)

And as usual we have:
 * [micro] SD-card slot
 * 2 USB 2.0 ports
 * 1Gbit Ethernet port
 * Built-in Digilent JTAG probe
 * Serial port accessible via micro-USB port

Writing sdcard.img on SDcard creates two partitions:
 * FAT32 with uImage and uboot.env
 * EXT4 with root filesystem

We modify kernel config because in default hsdk kernel config
CONFIG_INITRAMFS_SOURCE parameter is set and when we build
rootfs separately (BR2_TARGET_ROOTFS_INITRAMFS is not set)
error appears. Also we set up CONFIG_ARC_UBOOT_SUPPORT which
enables usage of uboot variables in the boot process.

Signed-off-by: Evgeniy Didin <didin@synopsys.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Alexey Brodkin <abrodkin@synopsys.com>
Cc: arc-buildroot@synopsys.com
---
Changes since v1:
-add entries in DEVELOPERS and .gitlab-ci.yml
-change genimage-hsdk.cfg to genimage.cfg
-enable BR2_TARGET_UBOOT_ENVIMAGE against mkenvimage in post-image.sh
-add renaming "uboot-env.bin" to "uboot.env" in post-image.sh
-changed tar to gzip when archiving sdcard.img
 .gitlab-ci.yml                     |  1 +
 DEVELOPERS                         |  1 +
 board/synopsys/hsdk/genimage.cfg   | 26 +++++++++++++++++++++++++
 board/synopsys/hsdk/linux.fragment |  2 ++
 board/synopsys/hsdk/post-image.sh  | 18 ++++++++++++++++++
 board/synopsys/hsdk/uboot.env.txt  |  9 +++++++++
 configs/snps_hsdk_defconfig        | 39 ++++++++++++++++++++++++++++++++++++++
 7 files changed, 96 insertions(+)
 create mode 100644 board/synopsys/hsdk/genimage.cfg
 create mode 100644 board/synopsys/hsdk/linux.fragment
 create mode 100755 board/synopsys/hsdk/post-image.sh
 create mode 100644 board/synopsys/hsdk/uboot.env.txt
 create mode 100644 configs/snps_hsdk_defconfig

Comments

Evgeniy Didin Jan. 17, 2018, 10:26 a.m. | #1
Hello,

Are there any comments about this one?
Otherwise could you please consider applying that patch.

-Evgeniy

On Tue, 2017-12-19 at 17:55 +0300, Evgeniy Didin wrote:
> Synopsys DesignWare HSDK (which stands for ARC HS

> Development Kit) is the latest and greatest development

> platform that sports quad-core ARC HS38 in real silicon.

> 

> Most noticeable features of the board are:

>  * Quad-core ARC HS38 CPU running at 1GHz

>  * 4Gb of DDR

>  * Built-in Vivante GPU (well supported via open source

>    Etnaviv drivers)

>  * Built-in Wi-Fi/Bluetooth module (RedPine RS-9113)

> 

> And as usual we have:

>  * [micro] SD-card slot

>  * 2 USB 2.0 ports

>  * 1Gbit Ethernet port

>  * Built-in Digilent JTAG probe

>  * Serial port accessible via micro-USB port

> 

> Writing sdcard.img on SDcard creates two partitions:

>  * FAT32 with uImage and uboot.env

>  * EXT4 with root filesystem

> 

> We modify kernel config because in default hsdk kernel config

> CONFIG_INITRAMFS_SOURCE parameter is set and when we build

> rootfs separately (BR2_TARGET_ROOTFS_INITRAMFS is not set)

> error appears. Also we set up CONFIG_ARC_UBOOT_SUPPORT which

> enables usage of uboot variables in the boot process.

> 

> Signed-off-by: Evgeniy Didin <didin@synopsys.com>

> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

> Cc: Alexey Brodkin <abrodkin@synopsys.com>

> Cc: arc-buildroot@synopsys.com

> ---

> Changes since v1:

> -add entries in DEVELOPERS and .gitlab-ci.yml

> -change genimage-hsdk.cfg to genimage.cfg

> -enable BR2_TARGET_UBOOT_ENVIMAGE against mkenvimage in post-image.sh

> -add renaming "uboot-env.bin" to "uboot.env" in post-image.sh

> -changed tar to gzip when archiving sdcard.img

>  .gitlab-ci.yml                     |  1 +

>  DEVELOPERS                         |  1 +

>  board/synopsys/hsdk/genimage.cfg   | 26 +++++++++++++++++++++++++

>  board/synopsys/hsdk/linux.fragment |  2 ++

>  board/synopsys/hsdk/post-image.sh  | 18 ++++++++++++++++++

>  board/synopsys/hsdk/uboot.env.txt  |  9 +++++++++

>  configs/snps_hsdk_defconfig        | 39

> ++++++++++++++++++++++++++++++++++++++

>  7 files changed, 96 insertions(+)

>  create mode 100644 board/synopsys/hsdk/genimage.cfg

>  create mode 100644 board/synopsys/hsdk/linux.fragment

>  create mode 100755 board/synopsys/hsdk/post-image.sh

>  create mode 100644 board/synopsys/hsdk/uboot.env.txt

>  create mode 100644 configs/snps_hsdk_defconfig

> 

> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml

> index 691669f7f1..00e3879f00 100644

> --- a/.gitlab-ci.yml

> +++ b/.gitlab-ci.yml

> @@ -215,6 +215,7 @@ snps_arc700_axs101_defconfig: *defconfig

>  snps_archs38_axs103_defconfig: *defconfig

>  snps_archs38_haps_defconfig: *defconfig

>  snps_archs38_vdk_defconfig: *defconfig

> +snps_hsdk_defconfig: *defconfig

>  socrates_cyclone5_defconfig: *defconfig

>  solidrun_macchiatobin_mainline_defconfig: *defconfig

>  solidrun_macchiatobin_marvell_defconfig: *defconfig

> diff --git a/DEVELOPERS b/DEVELOPERS

> index fe989c0775..9a93e423af 100644

> --- a/DEVELOPERS

> +++ b/DEVELOPERS

> @@ -153,6 +153,7 @@ F:	package/wf111/

>  

>  N:	ARC Maintainers <arc-buildroot@synopsys.com>

>  F:	arch/Config.in.arc

> +F:	board/synopsys

>  

>  N:	Ariel D'Alessandro <ariel@vanguardiasur.com.ar>

>  F:	package/axfsutils/

> diff --git a/board/synopsys/hsdk/genimage.cfg

> b/board/synopsys/hsdk/genimage.cfg

> new file mode 100644

> index 0000000000..8928f704a2

> --- /dev/null

> +++ b/board/synopsys/hsdk/genimage.cfg

> @@ -0,0 +1,26 @@

> +image boot.vfat {

> +  vfat {

> +    files = {

> +      "uboot.env",

> +      "uImage"

> +    }

> +  }

> +  size = 100M

> +}

> +

> +image sdcard.img {

> +  hdimage {

> +  }

> +

> +  partition boot {

> +    partition-type = 0xC

> +    bootable = "true"

> +    image = "boot.vfat"

> +  }

> +

> +  partition rootfs {

> +    partition-type = 0x83

> +    image = "rootfs.ext4"

> +    size = 1G

> +  }

> +}

> diff --git a/board/synopsys/hsdk/linux.fragment

> b/board/synopsys/hsdk/linux.fragment

> new file mode 100644

> index 0000000000..53b9305e09

> --- /dev/null

> +++ b/board/synopsys/hsdk/linux.fragment

> @@ -0,0 +1,2 @@

> +CONFIG_INITRAMFS_SOURCE=

> +CONFIG_ARC_UBOOT_SUPPORT=y

> diff --git a/board/synopsys/hsdk/post-image.sh

> b/board/synopsys/hsdk/post-image.sh

> new file mode 100755

> index 0000000000..e99a4a0b96

> --- /dev/null

> +++ b/board/synopsys/hsdk/post-image.sh

> @@ -0,0 +1,18 @@

> +#!/bin/bash

> +

> +BOARD_DIR="$(dirname $0)"

> +BOARD_NAME="$(basename ${BOARD_DIR})"

> +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"

> +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"

> +rm -rf "${GENIMAGE_TMP}"

> +

> +mv ${BINARIES_DIR}/uboot-env.bin ${BINARIES_DIR}/uboot.env

> +

> +genimage                           \

> +        --rootpath "${TARGET_DIR}"     \

> +        --tmppath "${GENIMAGE_TMP}"    \

> +        --inputpath "${BINARIES_DIR}"  \

> +        --outputpath "${BINARIES_DIR}" \

> +        --config "${GENIMAGE_CFG}"

> +gzip < ${BINARIES_DIR}/sdcard.img > ${BINARIES_DIR}/sdcard.img.gz

> +exit $?

> diff --git a/board/synopsys/hsdk/uboot.env.txt

> b/board/synopsys/hsdk/uboot.env.txt

> new file mode 100644

> index 0000000000..6bcfb56a77

> --- /dev/null

> +++ b/board/synopsys/hsdk/uboot.env.txt

> @@ -0,0 +1,9 @@

> +baudrate=115200

> +bootargs=console=ttyS3,115200n8 root=/dev/mmcblk0p2 rootwait

> +bootcmd=fatload mmc 0:1; bootm

> +bootdelay=2

> +bootfile=uImage

> +loadaddr=0x82000000

> +stderr=serial0@f0005000

> +stdin=serial0@f0005000

> +stdout=serial0@f0005000

> diff --git a/configs/snps_hsdk_defconfig

> b/configs/snps_hsdk_defconfig

> new file mode 100644

> index 0000000000..1f699f5e8c

> --- /dev/null

> +++ b/configs/snps_hsdk_defconfig

> @@ -0,0 +1,39 @@

> +#Architecture

> +BR2_arcle=y

> +BR2_archs38=y

> +

> +#Linux headers

> +BR2_KERNEL_HEADERS_4_14=y

> +

> +#System

> +BR2_TARGET_GENERIC_HOSTNAME="hsdk"

> +BR2_TARGET_GENERIC_ISSUE="Welcome to the HSDK Platform"

> +BR2_SYSTEM_DHCP="eth0"

> +

> +#Kernel

> +BR2_LINUX_KERNEL=y

> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y

> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.4"

> +BR2_LINUX_KERNEL_DEFCONFIG="hsdk"

> +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/synopsys/hsdk/linux.fr

> agment"

> +

> +#Filesystem / image

> +BR2_TARGET_ROOTFS_EXT2=y

> +BR2_TARGET_ROOTFS_EXT2_4=y

> +# BR2_TARGET_ROOTFS_TAR is not set

> +BR2_PACKAGE_HOST_DOSFSTOOLS=y

> +BR2_PACKAGE_HOST_GENIMAGE=y

> +BR2_PACKAGE_HOST_MTOOLS=y

> +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/synopsys/hsdk/post-image.sh"

> +

> +#Bootloader

> +BR2_TARGET_UBOOT=y

> +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y

> +BR2_TARGET_UBOOT_CUSTOM_VERSION=y

> +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11"

> +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="hsdk"

> +BR2_TARGET_UBOOT_NEEDS_DTC=y

> +BR2_TARGET_UBOOT_FORMAT_ELF=y

> +BR2_TARGET_UBOOT_ENVIMAGE=y

> +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/synopsys/hsdk/uboot.env.txt"

> +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000"
Alexey Brodkin Jan. 31, 2018, 7:58 a.m. | #2
Hello,

On Tue, 2017-12-19 at 17:55 +0300, Evgeniy Didin wrote:
> Synopsys DesignWare HSDK (which stands for ARC HS
> Development Kit) is the latest and greatest development
> platform that sports quad-core ARC HS38 in real silicon.
> 
> Most noticeable features of the board are:
>  * Quad-core ARC HS38 CPU running at 1GHz
>  * 4Gb of DDR
>  * Built-in Vivante GPU (well supported via open source
>    Etnaviv drivers)
>  * Built-in Wi-Fi/Bluetooth module (RedPine RS-9113)
> 
> And as usual we have:
>  * [micro] SD-card slot
>  * 2 USB 2.0 ports
>  * 1Gbit Ethernet port
>  * Built-in Digilent JTAG probe
>  * Serial port accessible via micro-USB port
> 
> Writing sdcard.img on SDcard creates two partitions:
>  * FAT32 with uImage and uboot.env
>  * EXT4 with root filesystem
> 
> We modify kernel config because in default hsdk kernel config
> CONFIG_INITRAMFS_SOURCE parameter is set and when we build
> rootfs separately (BR2_TARGET_ROOTFS_INITRAMFS is not set)
> error appears. Also we set up CONFIG_ARC_UBOOT_SUPPORT which
> enables usage of uboot variables in the boot process.
> 
> Signed-off-by: Evgeniy Didin <didin@synopsys.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Alexey Brodkin <abrodkin@synopsys.com>
> Cc: arc-buildroot@synopsys.com
> ---
> Changes since v1:
> -add entries in DEVELOPERS and .gitlab-ci.yml
> -change genimage-hsdk.cfg to genimage.cfg
> -enable BR2_TARGET_UBOOT_ENVIMAGE against mkenvimage in post-image.sh
> -add renaming "uboot-env.bin" to "uboot.env" in post-image.sh
> -changed tar to gzip when archiving sdcard.img

I'm worried if we can make it merged before the next Buildroot
release. Any comments [except probably requirement to rebase as 
it's been more than a month since v2 was posted] or/and suggestions on
this one?

-Alexey
Alexey Brodkin Feb. 7, 2018, 8:43 a.m. | #3
Hi Thomas, Peter, Arnout,

On Wed, 2018-01-31 at 10:58 +0300, Alexey Brodkin wrote:
> Hello,
> 
> On Tue, 2017-12-19 at 17:55 +0300, Evgeniy Didin wrote:
> > Synopsys DesignWare HSDK (which stands for ARC HS
> > Development Kit) is the latest and greatest development
> > platform that sports quad-core ARC HS38 in real silicon.
> > 
> > Most noticeable features of the board are:
> >  * Quad-core ARC HS38 CPU running at 1GHz
> >  * 4Gb of DDR
> >  * Built-in Vivante GPU (well supported via open source
> >    Etnaviv drivers)
> >  * Built-in Wi-Fi/Bluetooth module (RedPine RS-9113)
> > 
> > And as usual we have:
> >  * [micro] SD-card slot
> >  * 2 USB 2.0 ports
> >  * 1Gbit Ethernet port
> >  * Built-in Digilent JTAG probe
> >  * Serial port accessible via micro-USB port
> > 
> > Writing sdcard.img on SDcard creates two partitions:
> >  * FAT32 with uImage and uboot.env
> >  * EXT4 with root filesystem
> > 
> > We modify kernel config because in default hsdk kernel config
> > CONFIG_INITRAMFS_SOURCE parameter is set and when we build
> > rootfs separately (BR2_TARGET_ROOTFS_INITRAMFS is not set)
> > error appears. Also we set up CONFIG_ARC_UBOOT_SUPPORT which
> > enables usage of uboot variables in the boot process.
> > 
> > Signed-off-by: Evgeniy Didin <didin@synopsys.com>
> > Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> > Cc: Alexey Brodkin <abrodkin@synopsys.com>
> > Cc: arc-buildroot@synopsys.com
> > ---
> > Changes since v1:
> > -add entries in DEVELOPERS and .gitlab-ci.yml
> > -change genimage-hsdk.cfg to genimage.cfg
> > -enable BR2_TARGET_UBOOT_ENVIMAGE against mkenvimage in post-image.sh
> > -add renaming "uboot-env.bin" to "uboot.env" in post-image.sh
> > -changed tar to gzip when archiving sdcard.img
> 
> I'm worried if we can make it merged before the next Buildroot
> release. Any comments [except probably requirement to rebase as 
> it's been more than a month since v2 was posted] or/and suggestions on
> this one?

Please pardon myself for being that annoying but it looks like 2018.02-rc1
was recently cut and that patch is not there yet.

It would be really cool if we may still get this one merged ASAP so
it becomes a part of the upcoming release.

FWIW the board was now officially released, see 
https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit
and we're looking forward to have more people working with that
quite capable board.

-Alexey
Alexey Brodkin Feb. 19, 2018, 7:56 a.m. | #4
Hi gents,

Most probably this thread somehow slipped through the cracks...
I guess that's already too late for 2018.02 as we're on RC2 already :(

But anyways is there a chance to review/comment on this one?

-Alexey

On Wed, 2018-02-07 at 09:43 +0100, Alexey Brodkin wrote:
> Hi Thomas, Peter, Arnout,
> 
> On Wed, 2018-01-31 at 10:58 +0300, Alexey Brodkin wrote:
> > Hello,
> > 
> > On Tue, 2017-12-19 at 17:55 +0300, Evgeniy Didin wrote:
> > > Synopsys DesignWare HSDK (which stands for ARC HS
> > > Development Kit) is the latest and greatest development
> > > platform that sports quad-core ARC HS38 in real silicon.
> > > 
> > > Most noticeable features of the board are:
> > >  * Quad-core ARC HS38 CPU running at 1GHz
> > >  * 4Gb of DDR
> > >  * Built-in Vivante GPU (well supported via open source
> > >    Etnaviv drivers)
> > >  * Built-in Wi-Fi/Bluetooth module (RedPine RS-9113)
> > > 
> > > And as usual we have:
> > >  * [micro] SD-card slot
> > >  * 2 USB 2.0 ports
> > >  * 1Gbit Ethernet port
> > >  * Built-in Digilent JTAG probe
> > >  * Serial port accessible via micro-USB port
> > > 
> > > Writing sdcard.img on SDcard creates two partitions:
> > >  * FAT32 with uImage and uboot.env
> > >  * EXT4 with root filesystem
> > > 
> > > We modify kernel config because in default hsdk kernel config
> > > CONFIG_INITRAMFS_SOURCE parameter is set and when we build
> > > rootfs separately (BR2_TARGET_ROOTFS_INITRAMFS is not set)
> > > error appears. Also we set up CONFIG_ARC_UBOOT_SUPPORT which
> > > enables usage of uboot variables in the boot process.
> > > 
> > > Signed-off-by: Evgeniy Didin <didin@synopsys.com>
> > > Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> > > Cc: Alexey Brodkin <abrodkin@synopsys.com>
> > > Cc: arc-buildroot@synopsys.com
> > > ---
> > > Changes since v1:
> > > -add entries in DEVELOPERS and .gitlab-ci.yml
> > > -change genimage-hsdk.cfg to genimage.cfg
> > > -enable BR2_TARGET_UBOOT_ENVIMAGE against mkenvimage in post-image.sh
> > > -add renaming "uboot-env.bin" to "uboot.env" in post-image.sh
> > > -changed tar to gzip when archiving sdcard.img
> > 
> > I'm worried if we can make it merged before the next Buildroot
> > release. Any comments [except probably requirement to rebase as 
> > it's been more than a month since v2 was posted] or/and suggestions on
> > this one?
> 
> Please pardon myself for being that annoying but it looks like 2018.02-rc1
> was recently cut and that patch is not there yet.
> 
> It would be really cool if we may still get this one merged ASAP so
> it becomes a part of the upcoming release.
> 
> FWIW the board was now officially released, see 
> https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit
> and we're looking forward to have more people working with that
> quite capable board.
> 
> -Alexey
Evgeniy Didin March 29, 2018, 10:58 a.m. | #5
Hello,

More than 3 months have passed since the second version of patch was sent and there were no  any response/comment.
Could you please apply this patch if there is no problems with it?

Best regards,
Evgeniy Didin

On Mon, 2018-02-19 at 07:56 +0000, Alexey Brodkin wrote:
> Hi gents,
> 
> Most probably this thread somehow slipped through the cracks...
> I guess that's already too late for 2018.02 as we're on RC2 already :(
> 
> But anyways is there a chance to review/comment on this one?
> 
> -Alexey
> 
> On Wed, 2018-02-07 at 09:43 +0100, Alexey Brodkin wrote:
> > Hi Thomas, Peter, Arnout,
> > 
> > On Wed, 2018-01-31 at 10:58 +0300, Alexey Brodkin wrote:
> > > Hello,
> > > 
> > > On Tue, 2017-12-19 at 17:55 +0300, Evgeniy Didin wrote:
> > > > Synopsys DesignWare HSDK (which stands for ARC HS
> > > > Development Kit) is the latest and greatest development
> > > > platform that sports quad-core ARC HS38 in real silicon.
> > > > 
> > > > Most noticeable features of the board are:
> > > >  * Quad-core ARC HS38 CPU running at 1GHz
> > > >  * 4Gb of DDR
> > > >  * Built-in Vivante GPU (well supported via open source
> > > >    Etnaviv drivers)
> > > >  * Built-in Wi-Fi/Bluetooth module (RedPine RS-9113)
> > > > 
> > > > And as usual we have:
> > > >  * [micro] SD-card slot
> > > >  * 2 USB 2.0 ports
> > > >  * 1Gbit Ethernet port
> > > >  * Built-in Digilent JTAG probe
> > > >  * Serial port accessible via micro-USB port
> > > > 
> > > > Writing sdcard.img on SDcard creates two partitions:
> > > >  * FAT32 with uImage and uboot.env
> > > >  * EXT4 with root filesystem
> > > > 
> > > > We modify kernel config because in default hsdk kernel config
> > > > CONFIG_INITRAMFS_SOURCE parameter is set and when we build
> > > > rootfs separately (BR2_TARGET_ROOTFS_INITRAMFS is not set)
> > > > error appears. Also we set up CONFIG_ARC_UBOOT_SUPPORT which
> > > > enables usage of uboot variables in the boot process.
> > > > 
> > > > Signed-off-by: Evgeniy Didin <didin@synopsys.com>
> > > > Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> > > > Cc: Alexey Brodkin <abrodkin@synopsys.com>
> > > > Cc: arc-buildroot@synopsys.com
> > > > ---
> > > > Changes since v1:
> > > > -add entries in DEVELOPERS and .gitlab-ci.yml
> > > > -change genimage-hsdk.cfg to genimage.cfg
> > > > -enable BR2_TARGET_UBOOT_ENVIMAGE against mkenvimage in post-image.sh
> > > > -add renaming "uboot-env.bin" to "uboot.env" in post-image.sh
> > > > -changed tar to gzip when archiving sdcard.img
> > > 
> > > I'm worried if we can make it merged before the next Buildroot
> > > release. Any comments [except probably requirement to rebase as 
> > > it's been more than a month since v2 was posted] or/and suggestions on
> > > this one?
> > 
> > Please pardon myself for being that annoying but it looks like 2018.02-rc1
> > was recently cut and that patch is not there yet.
> > 
> > It would be really cool if we may still get this one merged ASAP so
> > it becomes a part of the upcoming release.
> > 
> > FWIW the board was now officially released, see 
> > https://www.synopsys.com/dw/ipdir.php?ds=arc-hs-development-kit
> > and we're looking forward to have more people working with that
> > quite capable board.
> > 
> > -Alexey
Romain Naour March 31, 2018, 12:56 p.m. | #6
Hi Evgeniy,

Le 19/12/2017 à 15:55, Evgeniy Didin a écrit :
> Synopsys DesignWare HSDK (which stands for ARC HS
> Development Kit) is the latest and greatest development
> platform that sports quad-core ARC HS38 in real silicon.
> 
> Most noticeable features of the board are:
>  * Quad-core ARC HS38 CPU running at 1GHz
>  * 4Gb of DDR
>  * Built-in Vivante GPU (well supported via open source
>    Etnaviv drivers)
>  * Built-in Wi-Fi/Bluetooth module (RedPine RS-9113)
> 
> And as usual we have:
>  * [micro] SD-card slot
>  * 2 USB 2.0 ports
>  * 1Gbit Ethernet port
>  * Built-in Digilent JTAG probe
>  * Serial port accessible via micro-USB port
> 
> Writing sdcard.img on SDcard creates two partitions:
>  * FAT32 with uImage and uboot.env
>  * EXT4 with root filesystem
> 
> We modify kernel config because in default hsdk kernel config
> CONFIG_INITRAMFS_SOURCE parameter is set and when we build
> rootfs separately (BR2_TARGET_ROOTFS_INITRAMFS is not set)
> error appears. Also we set up CONFIG_ARC_UBOOT_SUPPORT which
> enables usage of uboot variables in the boot process.
> 
> Signed-off-by: Evgeniy Didin <didin@synopsys.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Alexey Brodkin <abrodkin@synopsys.com>
> Cc: arc-buildroot@synopsys.com
> ---
> Changes since v1:
> -add entries in DEVELOPERS and .gitlab-ci.yml
> -change genimage-hsdk.cfg to genimage.cfg
> -enable BR2_TARGET_UBOOT_ENVIMAGE against mkenvimage in post-image.sh
> -add renaming "uboot-env.bin" to "uboot.env" in post-image.sh
> -changed tar to gzip when archiving sdcard.img
>  .gitlab-ci.yml                     |  1 +
>  DEVELOPERS                         |  1 +
>  board/synopsys/hsdk/genimage.cfg   | 26 +++++++++++++++++++++++++
>  board/synopsys/hsdk/linux.fragment |  2 ++
>  board/synopsys/hsdk/post-image.sh  | 18 ++++++++++++++++++
>  board/synopsys/hsdk/uboot.env.txt  |  9 +++++++++
>  configs/snps_hsdk_defconfig        | 39 ++++++++++++++++++++++++++++++++++++++
>  7 files changed, 96 insertions(+)
>  create mode 100644 board/synopsys/hsdk/genimage.cfg
>  create mode 100644 board/synopsys/hsdk/linux.fragment
>  create mode 100755 board/synopsys/hsdk/post-image.sh
>  create mode 100644 board/synopsys/hsdk/uboot.env.txt
>  create mode 100644 configs/snps_hsdk_defconfig
> 
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index 691669f7f1..00e3879f00 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -215,6 +215,7 @@ snps_arc700_axs101_defconfig: *defconfig
>  snps_archs38_axs103_defconfig: *defconfig
>  snps_archs38_haps_defconfig: *defconfig
>  snps_archs38_vdk_defconfig: *defconfig
> +snps_hsdk_defconfig: *defconfig
>  socrates_cyclone5_defconfig: *defconfig
>  solidrun_macchiatobin_mainline_defconfig: *defconfig
>  solidrun_macchiatobin_marvell_defconfig: *defconfig
> diff --git a/DEVELOPERS b/DEVELOPERS
> index fe989c0775..9a93e423af 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -153,6 +153,7 @@ F:	package/wf111/
>  
>  N:	ARC Maintainers <arc-buildroot@synopsys.com>
>  F:	arch/Config.in.arc
> +F:	board/synopsys
>  
>  N:	Ariel D'Alessandro <ariel@vanguardiasur.com.ar>
>  F:	package/axfsutils/
> diff --git a/board/synopsys/hsdk/genimage.cfg b/board/synopsys/hsdk/genimage.cfg
> new file mode 100644
> index 0000000000..8928f704a2
> --- /dev/null
> +++ b/board/synopsys/hsdk/genimage.cfg
> @@ -0,0 +1,26 @@
> +image boot.vfat {
> +  vfat {
> +    files = {
> +      "uboot.env",
> +      "uImage"
> +    }
> +  }
> +  size = 100M
> +}
> +
> +image sdcard.img {
> +  hdimage {
> +  }
> +
> +  partition boot {
> +    partition-type = 0xC
> +    bootable = "true"
> +    image = "boot.vfat"
> +  }
> +
> +  partition rootfs {
> +    partition-type = 0x83
> +    image = "rootfs.ext4"
> +    size = 1G
> +  }
> +}
> diff --git a/board/synopsys/hsdk/linux.fragment b/board/synopsys/hsdk/linux.fragment
> new file mode 100644
> index 0000000000..53b9305e09
> --- /dev/null
> +++ b/board/synopsys/hsdk/linux.fragment
> @@ -0,0 +1,2 @@
> +CONFIG_INITRAMFS_SOURCE=

should be CONFIG_INITRAMFS_SOURCE=""

> +CONFIG_ARC_UBOOT_SUPPORT=y
> diff --git a/board/synopsys/hsdk/post-image.sh b/board/synopsys/hsdk/post-image.sh
> new file mode 100755
> index 0000000000..e99a4a0b96
> --- /dev/null
> +++ b/board/synopsys/hsdk/post-image.sh
> @@ -0,0 +1,18 @@
> +#!/bin/bash
> +
> +BOARD_DIR="$(dirname $0)"
> +BOARD_NAME="$(basename ${BOARD_DIR})"
> +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
> +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
> +rm -rf "${GENIMAGE_TMP}"
> +
> +mv ${BINARIES_DIR}/uboot-env.bin ${BINARIES_DIR}/uboot.env
> +
> +genimage                           \
> +        --rootpath "${TARGET_DIR}"     \
> +        --tmppath "${GENIMAGE_TMP}"    \
> +        --inputpath "${BINARIES_DIR}"  \
> +        --outputpath "${BINARIES_DIR}" \
> +        --config "${GENIMAGE_CFG}"
> +gzip < ${BINARIES_DIR}/sdcard.img > ${BINARIES_DIR}/sdcard.img.gz
> +exit $?
> diff --git a/board/synopsys/hsdk/uboot.env.txt b/board/synopsys/hsdk/uboot.env.txt
> new file mode 100644
> index 0000000000..6bcfb56a77
> --- /dev/null
> +++ b/board/synopsys/hsdk/uboot.env.txt
> @@ -0,0 +1,9 @@
> +baudrate=115200
> +bootargs=console=ttyS3,115200n8 root=/dev/mmcblk0p2 rootwait
> +bootcmd=fatload mmc 0:1; bootm
> +bootdelay=2
> +bootfile=uImage
> +loadaddr=0x82000000
> +stderr=serial0@f0005000
> +stdin=serial0@f0005000
> +stdout=serial0@f0005000
> diff --git a/configs/snps_hsdk_defconfig b/configs/snps_hsdk_defconfig

should be snps_archs38_hsdk_defconfig like for other snps_archs38*_defconfig

With these minor comment

Reviewed-by: Romain Naour <romain.naour@smile.fr>

Best regards,
Romain


> new file mode 100644
> index 0000000000..1f699f5e8c
> --- /dev/null
> +++ b/configs/snps_hsdk_defconfig
> @@ -0,0 +1,39 @@
> +#Architecture
> +BR2_arcle=y
> +BR2_archs38=y
> +
> +#Linux headers
> +BR2_KERNEL_HEADERS_4_14=y
> +
> +#System
> +BR2_TARGET_GENERIC_HOSTNAME="hsdk"
> +BR2_TARGET_GENERIC_ISSUE="Welcome to the HSDK Platform"
> +BR2_SYSTEM_DHCP="eth0"
> +
> +#Kernel
> +BR2_LINUX_KERNEL=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.4"
> +BR2_LINUX_KERNEL_DEFCONFIG="hsdk"
> +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/synopsys/hsdk/linux.fragment"
> +
> +#Filesystem / image
> +BR2_TARGET_ROOTFS_EXT2=y
> +BR2_TARGET_ROOTFS_EXT2_4=y
> +# BR2_TARGET_ROOTFS_TAR is not set
> +BR2_PACKAGE_HOST_DOSFSTOOLS=y
> +BR2_PACKAGE_HOST_GENIMAGE=y
> +BR2_PACKAGE_HOST_MTOOLS=y
> +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/synopsys/hsdk/post-image.sh"
> +
> +#Bootloader
> +BR2_TARGET_UBOOT=y
> +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
> +BR2_TARGET_UBOOT_CUSTOM_VERSION=y
> +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11"
> +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="hsdk"
> +BR2_TARGET_UBOOT_NEEDS_DTC=y
> +BR2_TARGET_UBOOT_FORMAT_ELF=y
> +BR2_TARGET_UBOOT_ENVIMAGE=y
> +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/synopsys/hsdk/uboot.env.txt"
> +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000"
>
Thomas Petazzoni March 31, 2018, 1:10 p.m. | #7
Hello,

On Tue, 19 Dec 2017 17:55:54 +0300, Evgeniy Didin wrote:

> index 0000000000..e99a4a0b96
> --- /dev/null
> +++ b/board/synopsys/hsdk/post-image.sh
> @@ -0,0 +1,18 @@
> +#!/bin/bash
> +
> +BOARD_DIR="$(dirname $0)"
> +BOARD_NAME="$(basename ${BOARD_DIR})"
> +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
> +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
> +rm -rf "${GENIMAGE_TMP}"
> +
> +mv ${BINARIES_DIR}/uboot-env.bin ${BINARIES_DIR}/uboot.env

This rename can be done by the genimage.cfg file.

> +
> +genimage                           \
> +        --rootpath "${TARGET_DIR}"     \
> +        --tmppath "${GENIMAGE_TMP}"    \
> +        --inputpath "${BINARIES_DIR}"  \
> +        --outputpath "${BINARIES_DIR}" \
> +        --config "${GENIMAGE_CFG}"
> +gzip < ${BINARIES_DIR}/sdcard.img > ${BINARIES_DIR}/sdcard.img.gz

And we don't need to generate a compressed SD card image.

With those two changes, the common support/scripts/genimage.sh script
can be used.

I think Peter will fix this up when applying.

Best regards,

Thomas
Arnout Vandecappelle March 31, 2018, 1:25 p.m. | #8
I have a few more comments... Sorry it took so long to get any review at all,
but we have a really long patch backlog...

On 31-03-18 14:56, Romain Naour wrote:
> Hi Evgeniy,
> 
> Le 19/12/2017 à 15:55, Evgeniy Didin a écrit :
>> Synopsys DesignWare HSDK (which stands for ARC HS
>> Development Kit) is the latest and greatest development
>> platform that sports quad-core ARC HS38 in real silicon.
>>
>> Most noticeable features of the board are:
>>  * Quad-core ARC HS38 CPU running at 1GHz
>>  * 4Gb of DDR
>>  * Built-in Vivante GPU (well supported via open source
>>    Etnaviv drivers)
>>  * Built-in Wi-Fi/Bluetooth module (RedPine RS-9113)
>>
>> And as usual we have:
>>  * [micro] SD-card slot
>>  * 2 USB 2.0 ports
>>  * 1Gbit Ethernet port
>>  * Built-in Digilent JTAG probe
>>  * Serial port accessible via micro-USB port
>>
>> Writing sdcard.img on SDcard creates two partitions:
>>  * FAT32 with uImage and uboot.env
>>  * EXT4 with root filesystem
>>
>> We modify kernel config because in default hsdk kernel config
>> CONFIG_INITRAMFS_SOURCE parameter is set and when we build
>> rootfs separately (BR2_TARGET_ROOTFS_INITRAMFS is not set)
>> error appears. Also we set up CONFIG_ARC_UBOOT_SUPPORT which
>> enables usage of uboot variables in the boot process.

 And why is this needed?

>>
>> Signed-off-by: Evgeniy Didin <didin@synopsys.com>
>> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>> Cc: Alexey Brodkin <abrodkin@synopsys.com>
>> Cc: arc-buildroot@synopsys.com
>> ---
>> Changes since v1:
>> -add entries in DEVELOPERS and .gitlab-ci.yml
>> -change genimage-hsdk.cfg to genimage.cfg
>> -enable BR2_TARGET_UBOOT_ENVIMAGE against mkenvimage in post-image.sh
>> -add renaming "uboot-env.bin" to "uboot.env" in post-image.sh
>> -changed tar to gzip when archiving sdcard.img
>>  .gitlab-ci.yml                     |  1 +
>>  DEVELOPERS                         |  1 +
>>  board/synopsys/hsdk/genimage.cfg   | 26 +++++++++++++++++++++++++
>>  board/synopsys/hsdk/linux.fragment |  2 ++
>>  board/synopsys/hsdk/post-image.sh  | 18 ++++++++++++++++++
>>  board/synopsys/hsdk/uboot.env.txt  |  9 +++++++++

 Please also add a readme.txt, cfr. vdk. Yes, it can be extremely simple in this
case.

>>  configs/snps_hsdk_defconfig        | 39 ++++++++++++++++++++++++++++++++++++++
>>  7 files changed, 96 insertions(+)
>>  create mode 100644 board/synopsys/hsdk/genimage.cfg
>>  create mode 100644 board/synopsys/hsdk/linux.fragment
>>  create mode 100755 board/synopsys/hsdk/post-image.sh
>>  create mode 100644 board/synopsys/hsdk/uboot.env.txt
>>  create mode 100644 configs/snps_hsdk_defconfig
>>
>> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
>> index 691669f7f1..00e3879f00 100644
>> --- a/.gitlab-ci.yml
>> +++ b/.gitlab-ci.yml
>> @@ -215,6 +215,7 @@ snps_arc700_axs101_defconfig: *defconfig
>>  snps_archs38_axs103_defconfig: *defconfig
>>  snps_archs38_haps_defconfig: *defconfig
>>  snps_archs38_vdk_defconfig: *defconfig
>> +snps_hsdk_defconfig: *defconfig
>>  socrates_cyclone5_defconfig: *defconfig
>>  solidrun_macchiatobin_mainline_defconfig: *defconfig
>>  solidrun_macchiatobin_marvell_defconfig: *defconfig
>> diff --git a/DEVELOPERS b/DEVELOPERS
>> index fe989c0775..9a93e423af 100644
>> --- a/DEVELOPERS
>> +++ b/DEVELOPERS
>> @@ -153,6 +153,7 @@ F:	package/wf111/
>>  
>>  N:	ARC Maintainers <arc-buildroot@synopsys.com>
>>  F:	arch/Config.in.arc
>> +F:	board/synopsys

 Please add a / in the end like is done for (most) other directories.

>>  
>>  N:	Ariel D'Alessandro <ariel@vanguardiasur.com.ar>
>>  F:	package/axfsutils/
>> diff --git a/board/synopsys/hsdk/genimage.cfg b/board/synopsys/hsdk/genimage.cfg
>> new file mode 100644
>> index 0000000000..8928f704a2
>> --- /dev/null
>> +++ b/board/synopsys/hsdk/genimage.cfg
>> @@ -0,0 +1,26 @@
>> +image boot.vfat {
>> +  vfat {
>> +    files = {
>> +      "uboot.env",
>> +      "uImage"
>> +    }
>> +  }
>> +  size = 100M

 Does it really need to be that large? Making this partition large means that
also the sdcard.img will be large, which means it takes longer to dd it to an
actual SD card.

>> +}
>> +
>> +image sdcard.img {
>> +  hdimage {
>> +  }
>> +
>> +  partition boot {
>> +    partition-type = 0xC
>> +    bootable = "true"
>> +    image = "boot.vfat"
>> +  }
>> +
>> +  partition rootfs {
>> +    partition-type = 0x83
>> +    image = "rootfs.ext4"
>> +    size = 1G

 I would remove the size = 1G as well. genimage will infer the partition size
from the size of rootfs.ext4, which is fine. Putting an explicit size here which
is different from BR2_TARGET_ROOTFS_EXT2_SIZE is pointless I think. Yes, you can
use resize2fs to use the full partition size - but then you probably want to
also repartition and use the full SD card size.

 I understand that all the other genimage.cfg files we have in Buildroot do
specify a size (though normally only 512M), but I think we should change that.

 Can you try leaving it out and see if that works for you?

>> +  }
>> +}
>> diff --git a/board/synopsys/hsdk/linux.fragment b/board/synopsys/hsdk/linux.fragment
>> new file mode 100644
>> index 0000000000..53b9305e09
>> --- /dev/null
>> +++ b/board/synopsys/hsdk/linux.fragment
>> @@ -0,0 +1,2 @@
>> +CONFIG_INITRAMFS_SOURCE=
> 
> should be CONFIG_INITRAMFS_SOURCE=""
> 
>> +CONFIG_ARC_UBOOT_SUPPORT=y
>> diff --git a/board/synopsys/hsdk/post-image.sh b/board/synopsys/hsdk/post-image.sh
>> new file mode 100755
>> index 0000000000..e99a4a0b96
>> --- /dev/null
>> +++ b/board/synopsys/hsdk/post-image.sh
>> @@ -0,0 +1,18 @@
>> +#!/bin/bash
>> +
>> +BOARD_DIR="$(dirname $0)"
>> +BOARD_NAME="$(basename ${BOARD_DIR})"
>> +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
>> +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
>> +rm -rf "${GENIMAGE_TMP}"
>> +
>> +mv ${BINARIES_DIR}/uboot-env.bin ${BINARIES_DIR}/uboot.env
>> +
>> +genimage                           \
>> +        --rootpath "${TARGET_DIR}"     \
>> +        --tmppath "${GENIMAGE_TMP}"    \
>> +        --inputpath "${BINARIES_DIR}"  \
>> +        --outputpath "${BINARIES_DIR}" \
>> +        --config "${GENIMAGE_CFG}"

 Please use support/scripts/genimage.sh directly as BR2_ROOTFS_POST_IMAGE_SCRIPT.

>> +gzip < ${BINARIES_DIR}/sdcard.img > ${BINARIES_DIR}/sdcard.img.gz

 I don't think we should do this. If you don't use those huge sizes, the image
size isn't that large anyway :-).

>> +exit $?
>> diff --git a/board/synopsys/hsdk/uboot.env.txt b/board/synopsys/hsdk/uboot.env.txt
>> new file mode 100644
>> index 0000000000..6bcfb56a77
>> --- /dev/null
>> +++ b/board/synopsys/hsdk/uboot.env.txt
>> @@ -0,0 +1,9 @@
>> +baudrate=115200
>> +bootargs=console=ttyS3,115200n8 root=/dev/mmcblk0p2 rootwait
>> +bootcmd=fatload mmc 0:1; bootm
>> +bootdelay=2
>> +bootfile=uImage
>> +loadaddr=0x82000000
>> +stderr=serial0@f0005000
>> +stdin=serial0@f0005000
>> +stdout=serial0@f0005000
>> diff --git a/configs/snps_hsdk_defconfig b/configs/snps_hsdk_defconfig
> 
> should be snps_archs38_hsdk_defconfig like for other snps_archs38*_defconfig
> 
> With these minor comment
> 
> Reviewed-by: Romain Naour <romain.naour@smile.fr>
> 
> Best regards,
> Romain
> 
> 
>> new file mode 100644
>> index 0000000000..1f699f5e8c
>> --- /dev/null
>> +++ b/configs/snps_hsdk_defconfig
>> @@ -0,0 +1,39 @@
>> +#Architecture

 Good that you have comments here, but please add a space after #.


 Regards,
 Arnout


>> +BR2_arcle=y
>> +BR2_archs38=y
>> +
>> +#Linux headers
>> +BR2_KERNEL_HEADERS_4_14=y
>> +
>> +#System
>> +BR2_TARGET_GENERIC_HOSTNAME="hsdk"
>> +BR2_TARGET_GENERIC_ISSUE="Welcome to the HSDK Platform"
>> +BR2_SYSTEM_DHCP="eth0"
>> +
>> +#Kernel
>> +BR2_LINUX_KERNEL=y
>> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y
>> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.4"
>> +BR2_LINUX_KERNEL_DEFCONFIG="hsdk"
>> +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/synopsys/hsdk/linux.fragment"
>> +
>> +#Filesystem / image
>> +BR2_TARGET_ROOTFS_EXT2=y
>> +BR2_TARGET_ROOTFS_EXT2_4=y
>> +# BR2_TARGET_ROOTFS_TAR is not set
>> +BR2_PACKAGE_HOST_DOSFSTOOLS=y
>> +BR2_PACKAGE_HOST_GENIMAGE=y
>> +BR2_PACKAGE_HOST_MTOOLS=y
>> +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/synopsys/hsdk/post-image.sh"
>> +
>> +#Bootloader
>> +BR2_TARGET_UBOOT=y
>> +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
>> +BR2_TARGET_UBOOT_CUSTOM_VERSION=y
>> +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11"
>> +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="hsdk"
>> +BR2_TARGET_UBOOT_NEEDS_DTC=y
>> +BR2_TARGET_UBOOT_FORMAT_ELF=y
>> +BR2_TARGET_UBOOT_ENVIMAGE=y
>> +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/synopsys/hsdk/uboot.env.txt"
>> +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000"
Peter Korsgaard March 31, 2018, 2:06 p.m. | #9
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > Hello,
 > On Tue, 19 Dec 2017 17:55:54 +0300, Evgeniy Didin wrote:

 >> index 0000000000..e99a4a0b96
 >> --- /dev/null
 >> +++ b/board/synopsys/hsdk/post-image.sh
 >> @@ -0,0 +1,18 @@
 >> +#!/bin/bash
 >> +
 >> +BOARD_DIR="$(dirname $0)"
 >> +BOARD_NAME="$(basename ${BOARD_DIR})"
 >> +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
 >> +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
 >> +rm -rf "${GENIMAGE_TMP}"
 >> +
 >> +mv ${BINARIES_DIR}/uboot-env.bin ${BINARIES_DIR}/uboot.env

 > This rename can be done by the genimage.cfg file.

 >> +
 >> +genimage                           \
 >> +        --rootpath "${TARGET_DIR}"     \
 >> +        --tmppath "${GENIMAGE_TMP}"    \
 >> +        --inputpath "${BINARIES_DIR}"  \
 >> +        --outputpath "${BINARIES_DIR}" \
 >> +        --config "${GENIMAGE_CFG}"
 >> +gzip < ${BINARIES_DIR}/sdcard.img > ${BINARIES_DIR}/sdcard.img.gz

 > And we don't need to generate a compressed SD card image.

 > With those two changes, the common support/scripts/genimage.sh script
 > can be used.

 > I think Peter will fix this up when applying.

Correct. Applied with the following changes:

- Renamed defconfig to snps_archs38_hsdk_defconfig
- Fix comments in defconfig
- Added defconfig to DEVELOPERS and fixup board/synopsys entry
- Drop postimage script, rename env file in genimage.cfg and drop size
  setting for rootfs partition
- Add "" for CONFIG_INITRAMFS_SOURCE in linux fragment

It would be good if you could add a followup patch adding a readme.txt
and update DEVELOPERS with the other snps defconfigs.
Alexey Brodkin April 2, 2018, 3:28 p.m. | #10
Hi Arnout,

On Sat, 2018-03-31 at 15:25 +0200, Arnout Vandecappelle wrote:
>  I have a few more comments... Sorry it took so long to get any review at all,
> but we have a really long patch backlog...
> 
> On 31-03-18 14:56, Romain Naour wrote:
> > Hi Evgeniy,
> > 
> > Le 19/12/2017 à 15:55, Evgeniy Didin a écrit :
> > > Synopsys DesignWare HSDK (which stands for ARC HS
> > > Development Kit) is the latest and greatest development
> > > platform that sports quad-core ARC HS38 in real silicon.
> > > 
> > > Most noticeable features of the board are:
> > >  * Quad-core ARC HS38 CPU running at 1GHz
> > >  * 4Gb of DDR
> > >  * Built-in Vivante GPU (well supported via open source
> > >    Etnaviv drivers)
> > >  * Built-in Wi-Fi/Bluetooth module (RedPine RS-9113)
> > > 
> > > And as usual we have:
> > >  * [micro] SD-card slot
> > >  * 2 USB 2.0 ports
> > >  * 1Gbit Ethernet port
> > >  * Built-in Digilent JTAG probe
> > >  * Serial port accessible via micro-USB port
> > > 
> > > Writing sdcard.img on SDcard creates two partitions:
> > >  * FAT32 with uImage and uboot.env
> > >  * EXT4 with root filesystem
> > > 
> > > We modify kernel config because in default hsdk kernel config
> > > CONFIG_INITRAMFS_SOURCE parameter is set and when we build
> > > rootfs separately (BR2_TARGET_ROOTFS_INITRAMFS is not set)
> > > error appears. Also we set up CONFIG_ARC_UBOOT_SUPPORT which
> > > enables usage of uboot variables in the boot process.
> 
>  And why is this needed?

We use core registers to pass 2 important pieces of information from
U-boot to the Linux kernel.

1. R0 - There's a payload passed to the kernel
      =1 - bootargs are passed
      =2 - .dtb is passed

2. R2 - Address where mentioned above payload is stored

And if we use U-Boot there should be no problem because
R0 is guaranteed to be set to either 1 or 2 which we then check in the kernel
and R2 containing an address is checked for having sane address.

But if u-Boot is not used:
 - Linux kernel is loaded via JTAG
 - Linux kernel is loaded by some other pre-bootloader
those regs might contain bogus values causing us unpredictable
issues.

> > > 
> > > Signed-off-by: Evgeniy Didin <didin@synopsys.com>
> > > Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> > > Cc: Alexey Brodkin <abrodkin@synopsys.com>
> > > Cc: arc-buildroot@synopsys.com
> > > ---
> > > Changes since v1:
> > > -add entries in DEVELOPERS and .gitlab-ci.yml
> > > -change genimage-hsdk.cfg to genimage.cfg
> > > -enable BR2_TARGET_UBOOT_ENVIMAGE against mkenvimage in post-image.sh
> > > -add renaming "uboot-env.bin" to "uboot.env" in post-image.sh
> > > -changed tar to gzip when archiving sdcard.img
> > >  .gitlab-ci.yml                     |  1 +
> > >  DEVELOPERS                         |  1 +
> > >  board/synopsys/hsdk/genimage.cfg   | 26 +++++++++++++++++++++++++
> > >  board/synopsys/hsdk/linux.fragment |  2 ++
> > >  board/synopsys/hsdk/post-image.sh  | 18 ++++++++++++++++++
> > >  board/synopsys/hsdk/uboot.env.txt  |  9 +++++++++
> 
>  Please also add a readme.txt, cfr. vdk.

readme.txt is understood but what are "cfr. vdk."?

> > >  
> > >  N:	Ariel D'Alessandro <ariel@vanguardiasur.com.ar>
> > >  F:	package/axfsutils/
> > > diff --git a/board/synopsys/hsdk/genimage.cfg b/board/synopsys/hsdk/genimage.cfg
> > > new file mode 100644
> > > index 0000000000..8928f704a2
> > > --- /dev/null
> > > +++ b/board/synopsys/hsdk/genimage.cfg
> > > @@ -0,0 +1,26 @@
> > > +image boot.vfat {
> > > +  vfat {
> > > +    files = {
> > > +      "uboot.env",
> > > +      "uImage"
> > > +    }
> > > +  }
> > > +  size = 100M
> 
>  Does it really need to be that large? Making this partition large means that
> also the sdcard.img will be large, which means it takes longer to dd it to an
> actual SD card.

Well 100 Mb is not that much and with write speed ~20Mb/sec it's still tolerable.
But in the same time it leaves as an ability to put more things to that partition.
Like other uImages etc. Indeed if that was a production image we'd only expect fixed
and predefined stuff to be put there and say 10Mb would be just ok. But that vanilla
Buildroot config is just a good starting point for people to play with the board.

The only downside here is larger sdcard.img which if not compressed is not that
convenient for sharing thus we wanted to compress it.

> > > +}
> > > +
> > > +image sdcard.img {
> > > +  hdimage {
> > > +  }
> > > +
> > > +  partition boot {
> > > +    partition-type = 0xC
> > > +    bootable = "true"
> > > +    image = "boot.vfat"
> > > +  }
> > > +
> > > +  partition rootfs {
> > > +    partition-type = 0x83
> > > +    image = "rootfs.ext4"
> > > +    size = 1G
> 
>  I would remove the size = 1G as well. genimage will infer the partition size
> from the size of rootfs.ext4, which is fine. Putting an explicit size here which
> is different from BR2_TARGET_ROOTFS_EXT2_SIZE is pointless I think. Yes, you can
> use resize2fs to use the full partition size - but then you probably want to
> also repartition and use the full SD card size.
> 
>  I understand that all the other genimage.cfg files we have in Buildroot do
> specify a size (though normally only 512M), but I think we should change that.

Agree, that sounds good.

>  Can you try leaving it out and see if that works for you?

It works as expected!

-Alexey
Arnout Vandecappelle April 2, 2018, 8:27 p.m. | #11
On 02-04-18 17:28, Alexey Brodkin wrote:
> Hi Arnout,
> 
> On Sat, 2018-03-31 at 15:25 +0200, Arnout Vandecappelle wrote:
>>  I have a few more comments... Sorry it took so long to get any review at all,
>> but we have a really long patch backlog...
>>
>> On 31-03-18 14:56, Romain Naour wrote:
>>> Hi Evgeniy,
>>>
>>> Le 19/12/2017 à 15:55, Evgeniy Didin a écrit :

[snip]
>>>>  .gitlab-ci.yml                     |  1 +
>>>>  DEVELOPERS                         |  1 +
>>>>  board/synopsys/hsdk/genimage.cfg   | 26 +++++++++++++++++++++++++
>>>>  board/synopsys/hsdk/linux.fragment |  2 ++
>>>>  board/synopsys/hsdk/post-image.sh  | 18 ++++++++++++++++++
>>>>  board/synopsys/hsdk/uboot.env.txt  |  9 +++++++++
>>
>>  Please also add a readme.txt, cfr. vdk.
> 
> readme.txt is understood but what are "cfr. vdk."?

 There is another "board" in board/synopsys/vdk that has a proper readme.txt.
Since it's under board/synopsys, I assumed you guys were aware of it. I didn't
realize that it was an ARM simulator, not a real board.

>>>>  N:	Ariel D'Alessandro <ariel@vanguardiasur.com.ar>
>>>>  F:	package/axfsutils/
>>>> diff --git a/board/synopsys/hsdk/genimage.cfg b/board/synopsys/hsdk/genimage.cfg
>>>> new file mode 100644
>>>> index 0000000000..8928f704a2
>>>> --- /dev/null
>>>> +++ b/board/synopsys/hsdk/genimage.cfg
>>>> @@ -0,0 +1,26 @@
>>>> +image boot.vfat {
>>>> +  vfat {
>>>> +    files = {
>>>> +      "uboot.env",
>>>> +      "uImage"
>>>> +    }
>>>> +  }
>>>> +  size = 100M
>>
>>  Does it really need to be that large? Making this partition large means that
>> also the sdcard.img will be large, which means it takes longer to dd it to an
>> actual SD card.
> 
> Well 100 Mb is not that much and with write speed ~20Mb/sec it's still tolerable.

 You mean I should buy faster SD cards than the 1.4MB/s cards I typically use? :-)

> But in the same time it leaves as an ability to put more things to that partition.
> Like other uImages etc. Indeed if that was a production image we'd only expect fixed
> and predefined stuff to be put there and say 10Mb would be just ok. But that vanilla
> Buildroot config is just a good starting point for people to play with the board.

 IMO 100MB is total overkill. A kernel shouldn't grow much over 5MB (definitely
not in the buildroot context) and you don't need 20 different ones, do you?
Looking at other boards, 20-30MB is more typical.

 That said, I'm not going to block the patch over this thing :-).

 Regards,
 Arnout

> 
> The only downside here is larger sdcard.img which if not compressed is not that
> convenient for sharing thus we wanted to compress it.
> 
[snip]

Patch

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 691669f7f1..00e3879f00 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -215,6 +215,7 @@  snps_arc700_axs101_defconfig: *defconfig
 snps_archs38_axs103_defconfig: *defconfig
 snps_archs38_haps_defconfig: *defconfig
 snps_archs38_vdk_defconfig: *defconfig
+snps_hsdk_defconfig: *defconfig
 socrates_cyclone5_defconfig: *defconfig
 solidrun_macchiatobin_mainline_defconfig: *defconfig
 solidrun_macchiatobin_marvell_defconfig: *defconfig
diff --git a/DEVELOPERS b/DEVELOPERS
index fe989c0775..9a93e423af 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -153,6 +153,7 @@  F:	package/wf111/
 
 N:	ARC Maintainers <arc-buildroot@synopsys.com>
 F:	arch/Config.in.arc
+F:	board/synopsys
 
 N:	Ariel D'Alessandro <ariel@vanguardiasur.com.ar>
 F:	package/axfsutils/
diff --git a/board/synopsys/hsdk/genimage.cfg b/board/synopsys/hsdk/genimage.cfg
new file mode 100644
index 0000000000..8928f704a2
--- /dev/null
+++ b/board/synopsys/hsdk/genimage.cfg
@@ -0,0 +1,26 @@ 
+image boot.vfat {
+  vfat {
+    files = {
+      "uboot.env",
+      "uImage"
+    }
+  }
+  size = 100M
+}
+
+image sdcard.img {
+  hdimage {
+  }
+
+  partition boot {
+    partition-type = 0xC
+    bootable = "true"
+    image = "boot.vfat"
+  }
+
+  partition rootfs {
+    partition-type = 0x83
+    image = "rootfs.ext4"
+    size = 1G
+  }
+}
diff --git a/board/synopsys/hsdk/linux.fragment b/board/synopsys/hsdk/linux.fragment
new file mode 100644
index 0000000000..53b9305e09
--- /dev/null
+++ b/board/synopsys/hsdk/linux.fragment
@@ -0,0 +1,2 @@ 
+CONFIG_INITRAMFS_SOURCE=
+CONFIG_ARC_UBOOT_SUPPORT=y
diff --git a/board/synopsys/hsdk/post-image.sh b/board/synopsys/hsdk/post-image.sh
new file mode 100755
index 0000000000..e99a4a0b96
--- /dev/null
+++ b/board/synopsys/hsdk/post-image.sh
@@ -0,0 +1,18 @@ 
+#!/bin/bash
+
+BOARD_DIR="$(dirname $0)"
+BOARD_NAME="$(basename ${BOARD_DIR})"
+GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
+GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
+rm -rf "${GENIMAGE_TMP}"
+
+mv ${BINARIES_DIR}/uboot-env.bin ${BINARIES_DIR}/uboot.env
+
+genimage                           \
+        --rootpath "${TARGET_DIR}"     \
+        --tmppath "${GENIMAGE_TMP}"    \
+        --inputpath "${BINARIES_DIR}"  \
+        --outputpath "${BINARIES_DIR}" \
+        --config "${GENIMAGE_CFG}"
+gzip < ${BINARIES_DIR}/sdcard.img > ${BINARIES_DIR}/sdcard.img.gz
+exit $?
diff --git a/board/synopsys/hsdk/uboot.env.txt b/board/synopsys/hsdk/uboot.env.txt
new file mode 100644
index 0000000000..6bcfb56a77
--- /dev/null
+++ b/board/synopsys/hsdk/uboot.env.txt
@@ -0,0 +1,9 @@ 
+baudrate=115200
+bootargs=console=ttyS3,115200n8 root=/dev/mmcblk0p2 rootwait
+bootcmd=fatload mmc 0:1; bootm
+bootdelay=2
+bootfile=uImage
+loadaddr=0x82000000
+stderr=serial0@f0005000
+stdin=serial0@f0005000
+stdout=serial0@f0005000
diff --git a/configs/snps_hsdk_defconfig b/configs/snps_hsdk_defconfig
new file mode 100644
index 0000000000..1f699f5e8c
--- /dev/null
+++ b/configs/snps_hsdk_defconfig
@@ -0,0 +1,39 @@ 
+#Architecture
+BR2_arcle=y
+BR2_archs38=y
+
+#Linux headers
+BR2_KERNEL_HEADERS_4_14=y
+
+#System
+BR2_TARGET_GENERIC_HOSTNAME="hsdk"
+BR2_TARGET_GENERIC_ISSUE="Welcome to the HSDK Platform"
+BR2_SYSTEM_DHCP="eth0"
+
+#Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.4"
+BR2_LINUX_KERNEL_DEFCONFIG="hsdk"
+BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/synopsys/hsdk/linux.fragment"
+
+#Filesystem / image
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+# BR2_TARGET_ROOTFS_TAR is not set
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/synopsys/hsdk/post-image.sh"
+
+#Bootloader
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="hsdk"
+BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_FORMAT_ELF=y
+BR2_TARGET_UBOOT_ENVIMAGE=y
+BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/synopsys/hsdk/uboot.env.txt"
+BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000"