diff mbox series

[1/1,RFC] mvebu_espressobin-88f3720 : Add support for espressobin

Message ID 1506290733-6042-2-git-send-email-chevalliersebmax@gmail.com
State Changes Requested
Headers show
Series Add support for espressobin | expand

Commit Message

Maxime Chevallier Sept. 24, 2017, 10:05 p.m. UTC
Add support for the Globalscale 'Espressobin' board based
on Marvell Armada 3720.

This board has a dual Cortex-A53, 1GB DDR3, USBs, ethernets,
and some GPIO ports. More informations on the vendor site :
http://espressobin.net/tech-spec/

This config uses the mainline linux support for the board and
the buildroot toolchain using glibc, since uclibc does not
support aarch64.

Mainline device-tree does not include SDCard support yet, so USB
is the preferred way to boot the image, using the default pre-flashed
u-boot on SPI NOR.

Signed-off-by: Maxime Chevallier <chevalliersebmax@gmail.com>
---
 DEVELOPERS                                  |  4 ++
 board/globalscale/espressobin/genimage.cfg  | 11 +++++
 board/globalscale/espressobin/readme.txt    | 76 +++++++++++++++++++++++++++++
 configs/mvebu_espressobin-88f3720_defconfig | 29 +++++++++++
 4 files changed, 120 insertions(+)
 create mode 100644 board/globalscale/espressobin/genimage.cfg
 create mode 100644 board/globalscale/espressobin/readme.txt
 create mode 100644 configs/mvebu_espressobin-88f3720_defconfig

Comments

Romain Naour Sept. 25, 2017, 9:02 p.m. UTC | #1
Hi Maxime,

Le 25/09/2017 à 00:05, Maxime Chevallier a écrit :
> Add support for the Globalscale 'Espressobin' board based
> on Marvell Armada 3720.
> 
> This board has a dual Cortex-A53, 1GB DDR3, USBs, ethernets,
> and some GPIO ports. More informations on the vendor site :
> http://espressobin.net/tech-spec/
> 
> This config uses the mainline linux support for the board and
> the buildroot toolchain using glibc, since uclibc does not
> support aarch64.
> 
> Mainline device-tree does not include SDCard support yet, so USB
> is the preferred way to boot the image, using the default pre-flashed
> u-boot on SPI NOR.

Usually we use configs or board in the commit title.

"board: Add support for espressobin 88f3720" should be enough.

Otherwise, looks good for me as is.

Linux 4.14-rc2 is out, do you know if the SDCard support has been added in this
release?

Maybe you can also add a new entry in .gitlab-ci.yml file for CI testing in gitlab.
(see .gitlab-ci.yml.in to regenerate this file). But this can be done in a
follow up patch.

Best regards,
Romain

> 
> Signed-off-by: Maxime Chevallier <chevalliersebmax@gmail.com>
> ---
>  DEVELOPERS                                  |  4 ++
>  board/globalscale/espressobin/genimage.cfg  | 11 +++++
>  board/globalscale/espressobin/readme.txt    | 76 +++++++++++++++++++++++++++++
>  configs/mvebu_espressobin-88f3720_defconfig | 29 +++++++++++
>  4 files changed, 120 insertions(+)
>  create mode 100644 board/globalscale/espressobin/genimage.cfg
>  create mode 100644 board/globalscale/espressobin/readme.txt
>  create mode 100644 configs/mvebu_espressobin-88f3720_defconfig
> 
> diff --git a/DEVELOPERS b/DEVELOPERS
> index e34802f..5036ac2 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -1208,6 +1208,10 @@ F:	package/python-wsaccel/
>  N:	Max Filippov <jcmvbkbc@gmail.com>
>  F:	arch/Config.in.xtensa
>  
> +N:	Maxime Chevallier <chevalliersebmax@gmail.com>
> +F:	configs/mvebu_espressobin-88f3720_defconfig
> +F:	board/globalscale/espressobin/
> +
>  N:	Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
>  F:	package/babeld/
>  F:	package/dante/
> diff --git a/board/globalscale/espressobin/genimage.cfg b/board/globalscale/espressobin/genimage.cfg
> new file mode 100644
> index 0000000..664f81b
> --- /dev/null
> +++ b/board/globalscale/espressobin/genimage.cfg
> @@ -0,0 +1,11 @@
> +# Minimal image
> +
> +image sdcard.img {
> +  hdimage {
> +  }
> +
> +  partition rootfs {
> +    partition-type = 0x83
> +    image = "rootfs.ext4"
> +  }
> +}
> diff --git a/board/globalscale/espressobin/readme.txt b/board/globalscale/espressobin/readme.txt
> new file mode 100644
> index 0000000..fc9140e
> --- /dev/null
> +++ b/board/globalscale/espressobin/readme.txt
> @@ -0,0 +1,76 @@
> +Espressobin
> +===========
> +
> +This is the basic support for the Espressobin by globalscale technologies,
> +based on the Marvell Armada 3720.
> +
> +This support is based on the mainline linux kernel.
> +
> +
> +How to build
> +============
> +
> +1 - Use default configuration for espressobin :
> +
> +make mvebu_espressobin-88f3720_defconfig
> +
> +2 - Build the system
> +
> +make
> +
> +This generates the kernel image, the devicetree binary, the rootfs as a
> +tar.gz, and a filesystem image containing everything : sdcard.img (this name
> +is misleading though, see Limitations).
> +
> +Build artifacts are located in output/images.
> +
> +How to boot
> +===========
> +
> +To boot, you need an UART connection, using the on-board micro-usb port
> +at 115200 bauds.
> +
> +NOTE : As of today, booting from SDCard is not fully supported (rootfs cannot
> +be located on SCard).
> +
> +## From USB Stick ############################################################
> +
> +As of right now, this is the easiest way to boot the system, since the SDCard
> +support is not fully mainlined. It uses the pre-flashed u-boot on the SPI NOR
> +to load the kernel, device-tree and rootfs from a USB stick.
> +
> +The on-board jumpers must be configured to select the SPI NOR as a boot source.
> +
> +1 - Flash rootfs image on usb drive (Be careful to select the correct drive)
> +
> +sudo dd if=sdcard.img of=/dev/sdX bs=1M
> +sync
> +
> +2 - Boot from SPI NOR, interrupt boot by pressing Enter
> +
> +3 - Setup the bootusb u-boot script :
> +
> +setenv fdt_addr 0x1800000
> +setenv fdt_name boot/armada-3720-espressobin.dtb
> +setenv bootusb 'usb start; ext4load usb 0:1 $kernel_addr $image_name; ext4load usb 0:1 $fdt_addr $fdt_name; setenv bootargs $console root=/dev/sda1 rw rootwait; booti $kernel_addr - $fdt_addr'
> +run bootusb
> +
> +Limitations
> +===========
> +
> +Since the buildroot support for the espressobin is based on mainline
> +linux, especially regarding device-tree, the current functionnalities
> +for espressobin are limited.
> +
> +Namely, the mainline device-tree does not include support for sdcards yet, which
> +means the kernel is not able to load a rootfs located on a SDCard.
> +
> +Todo
> +====
> +
> +- Add bootloader generation
> +
> +- Use a custom devicetree to have SDcard support (or wait for support in mainline linux tree)
> +
> +- When SDcard support is working, add generation of sdcard image including bootloader, and
> +  document the on-board jumper configuration needed for sdcard boot.
> diff --git a/configs/mvebu_espressobin-88f3720_defconfig b/configs/mvebu_espressobin-88f3720_defconfig
> new file mode 100644
> index 0000000..394c881
> --- /dev/null
> +++ b/configs/mvebu_espressobin-88f3720_defconfig
> @@ -0,0 +1,29 @@
> +# Architecture
> +BR2_aarch64=y
> +BR2_cortex_a53=y
> +
> +# Linux headers same as kernel, a 4.13 series
> +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y
> +
> +# Filesystem
> +BR2_TARGET_ROOTFS_EXT2=y
> +BR2_TARGET_ROOTFS_EXT2_4=y
> +BR2_TARGET_ROOTFS_EXT2_GEN=4
> +BR2_TARGET_ROOTFS_TAR_GZIP=y
> +
> +# Kernel
> +BR2_LINUX_KERNEL=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13"
> +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
> +BR2_LINUX_KERNEL_DTS_SUPPORT=y
> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-3720-espressobin"
> +BR2_LINUX_KERNEL_INSTALL_TARGET=y
> +
> +# uClibc does not support aarch64 yet.
> +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
> +
> +# Image generation
> +BR2_PACKAGE_HOST_GENIMAGE=y
> +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
> +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/globalscale/espressobin/genimage.cfg"
>
Arnout Vandecappelle Sept. 25, 2017, 9:41 p.m. UTC | #2
On 25-09-17 23:02, Romain Naour wrote:
> Hi Maxime,
> 
> Le 25/09/2017 à 00:05, Maxime Chevallier a écrit :
>> Add support for the Globalscale 'Espressobin' board based
>> on Marvell Armada 3720.
>>
>> This board has a dual Cortex-A53, 1GB DDR3, USBs, ethernets,
>> and some GPIO ports. More informations on the vendor site :
>> http://espressobin.net/tech-spec/
>>
>> This config uses the mainline linux support for the board and
>> the buildroot toolchain using glibc, since uclibc does not
>> support aarch64.
>>
>> Mainline device-tree does not include SDCard support yet, so USB
>> is the preferred way to boot the image, using the default pre-flashed
>> u-boot on SPI NOR.
> Usually we use configs or board in the commit title.
> 
> "board: Add support for espressobin 88f3720" should be enough.
> 
> Otherwise, looks good for me as is.

 Indeed, looks good to me as well.

 I don't like the name much, though. Isn't globalscale_espressobin_defconfig
more appropriate?

> 
> Linux 4.14-rc2 is out, do you know if the SDCard support has been added in this
> release?
> 
> Maybe you can also add a new entry in .gitlab-ci.yml file for CI testing in gitlab.
> (see .gitlab-ci.yml.in to regenerate this file). But this can be done in a
> follow up patch.

 No, this is not optional, it *must* be added otherwise we get errors from CI
(well, except that the gitlab sync is currently broken). Just run
'make .gitlab-ci.yml'.


 Regards,
 Arnout

[snip]
Maxime Chevallier Sept. 26, 2017, 10:05 a.m. UTC | #3
Hi,

2017-09-25 23:41 GMT+02:00 Arnout Vandecappelle <arnout@mind.be>:
>
>
> On 25-09-17 23:02, Romain Naour wrote:
>> Hi Maxime,
>>
>> Le 25/09/2017 à 00:05, Maxime Chevallier a écrit :
>>> Add support for the Globalscale 'Espressobin' board based
>>> on Marvell Armada 3720.
>>>
>>> This board has a dual Cortex-A53, 1GB DDR3, USBs, ethernets,
>>> and some GPIO ports. More informations on the vendor site :
>>> http://espressobin.net/tech-spec/
>>>
>>> This config uses the mainline linux support for the board and
>>> the buildroot toolchain using glibc, since uclibc does not
>>> support aarch64.
>>>
>>> Mainline device-tree does not include SDCard support yet, so USB
>>> is the preferred way to boot the image, using the default pre-flashed
>>> u-boot on SPI NOR.
>> Usually we use configs or board in the commit title.
>>
>> "board: Add support for espressobin 88f3720" should be enough.

Ok

>>
>> Otherwise, looks good for me as is.
>
>  Indeed, looks good to me as well.
>
>  I don't like the name much, though. Isn't globalscale_espressobin_defconfig
> more appropriate?

Yes it makes more sense to me, but all support for this board in
u-boot and linux
include 'mvebu' somewhere in the name, so I thought I would do that to.

globalscale_espressobin_defconfig seems less confusing, I will update it in V2.

>>
>> Linux 4.14-rc2 is out, do you know if the SDCard support has been added in this
>> release?

Yes SDCard support has been added in linux 4.14-rc1. When 4.14 comes
out, we will be
able to generate bootable sdcards including the bootloader using
in-tree device-tree.

>> Maybe you can also add a new entry in .gitlab-ci.yml file for CI testing in gitlab.
>> (see .gitlab-ci.yml.in to regenerate this file). But this can be done in a
>> follow up patch.
>
>  No, this is not optional, it *must* be added otherwise we get errors from CI
> (well, except that the gitlab sync is currently broken). Just run
> 'make .gitlab-ci.yml'.

Ok I'll add that in V2.

Thanks for the feedback,

Regards,

Maxime
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index e34802f..5036ac2 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1208,6 +1208,10 @@  F:	package/python-wsaccel/
 N:	Max Filippov <jcmvbkbc@gmail.com>
 F:	arch/Config.in.xtensa
 
+N:	Maxime Chevallier <chevalliersebmax@gmail.com>
+F:	configs/mvebu_espressobin-88f3720_defconfig
+F:	board/globalscale/espressobin/
+
 N:	Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
 F:	package/babeld/
 F:	package/dante/
diff --git a/board/globalscale/espressobin/genimage.cfg b/board/globalscale/espressobin/genimage.cfg
new file mode 100644
index 0000000..664f81b
--- /dev/null
+++ b/board/globalscale/espressobin/genimage.cfg
@@ -0,0 +1,11 @@ 
+# Minimal image
+
+image sdcard.img {
+  hdimage {
+  }
+
+  partition rootfs {
+    partition-type = 0x83
+    image = "rootfs.ext4"
+  }
+}
diff --git a/board/globalscale/espressobin/readme.txt b/board/globalscale/espressobin/readme.txt
new file mode 100644
index 0000000..fc9140e
--- /dev/null
+++ b/board/globalscale/espressobin/readme.txt
@@ -0,0 +1,76 @@ 
+Espressobin
+===========
+
+This is the basic support for the Espressobin by globalscale technologies,
+based on the Marvell Armada 3720.
+
+This support is based on the mainline linux kernel.
+
+
+How to build
+============
+
+1 - Use default configuration for espressobin :
+
+make mvebu_espressobin-88f3720_defconfig
+
+2 - Build the system
+
+make
+
+This generates the kernel image, the devicetree binary, the rootfs as a
+tar.gz, and a filesystem image containing everything : sdcard.img (this name
+is misleading though, see Limitations).
+
+Build artifacts are located in output/images.
+
+How to boot
+===========
+
+To boot, you need an UART connection, using the on-board micro-usb port
+at 115200 bauds.
+
+NOTE : As of today, booting from SDCard is not fully supported (rootfs cannot
+be located on SCard).
+
+## From USB Stick ############################################################
+
+As of right now, this is the easiest way to boot the system, since the SDCard
+support is not fully mainlined. It uses the pre-flashed u-boot on the SPI NOR
+to load the kernel, device-tree and rootfs from a USB stick.
+
+The on-board jumpers must be configured to select the SPI NOR as a boot source.
+
+1 - Flash rootfs image on usb drive (Be careful to select the correct drive)
+
+sudo dd if=sdcard.img of=/dev/sdX bs=1M
+sync
+
+2 - Boot from SPI NOR, interrupt boot by pressing Enter
+
+3 - Setup the bootusb u-boot script :
+
+setenv fdt_addr 0x1800000
+setenv fdt_name boot/armada-3720-espressobin.dtb
+setenv bootusb 'usb start; ext4load usb 0:1 $kernel_addr $image_name; ext4load usb 0:1 $fdt_addr $fdt_name; setenv bootargs $console root=/dev/sda1 rw rootwait; booti $kernel_addr - $fdt_addr'
+run bootusb
+
+Limitations
+===========
+
+Since the buildroot support for the espressobin is based on mainline
+linux, especially regarding device-tree, the current functionnalities
+for espressobin are limited.
+
+Namely, the mainline device-tree does not include support for sdcards yet, which
+means the kernel is not able to load a rootfs located on a SDCard.
+
+Todo
+====
+
+- Add bootloader generation
+
+- Use a custom devicetree to have SDcard support (or wait for support in mainline linux tree)
+
+- When SDcard support is working, add generation of sdcard image including bootloader, and
+  document the on-board jumper configuration needed for sdcard boot.
diff --git a/configs/mvebu_espressobin-88f3720_defconfig b/configs/mvebu_espressobin-88f3720_defconfig
new file mode 100644
index 0000000..394c881
--- /dev/null
+++ b/configs/mvebu_espressobin-88f3720_defconfig
@@ -0,0 +1,29 @@ 
+# Architecture
+BR2_aarch64=y
+BR2_cortex_a53=y
+
+# Linux headers same as kernel, a 4.13 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y
+
+# Filesystem
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_GEN=4
+BR2_TARGET_ROOTFS_TAR_GZIP=y
+
+# Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13"
+BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-3720-espressobin"
+BR2_LINUX_KERNEL_INSTALL_TARGET=y
+
+# uClibc does not support aarch64 yet.
+BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
+
+# Image generation
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
+BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/globalscale/espressobin/genimage.cfg"