From: Edi Feschiyan <edi.feschi...@konsulko.com> General usage for these hooks is documented in the README.md file. In terms of implementation, To start with, we add a common file to ensure that all required environment variables are set. Next, we add a console script which calls labgrid-console. We also add a reset script that behaves similarly. For writing files a wrapper around using labgrid-client sd-mux is provided and then both Raspberry Pi an TI K3 platforms have writers provided. Sample board conf files can be found in the bin/konsulko-labgrid directory.
Co-developed-by: Tom Rini <tr...@konsulko.com> Signed-off-by: Edi Feschiyan <edi.feschi...@konsulko.com> --- README.md | 13 ++++++ bin/common.labgrid | 35 ++++++++++++++ bin/console.labgrid | 24 ++++++++++ bin/flash.labgrid.sd-mux | 31 +++++++++++++ .../conf.am62x_beagleplay_a53_na | 30 ++++++++++++ bin/konsulko-labgrid/conf.am64x_evm_a53_na | 30 ++++++++++++ bin/konsulko-labgrid/conf.rpi_4_32b_na | 1 + bin/konsulko-labgrid/conf.rpi_4_na | 1 + bin/konsulko-labgrid/conf.rpi_arm64_na | 25 ++++++++++ bin/reset.labgrid | 24 ++++++++++ bin/writer.labgrid.rpi | 46 +++++++++++++++++++ bin/writer.labgrid.ti-k3 | 35 ++++++++++++++ 12 files changed, 295 insertions(+) create mode 100644 bin/common.labgrid create mode 100755 bin/console.labgrid create mode 100644 bin/flash.labgrid.sd-mux create mode 100644 bin/konsulko-labgrid/conf.am62x_beagleplay_a53_na create mode 100644 bin/konsulko-labgrid/conf.am64x_evm_a53_na create mode 120000 bin/konsulko-labgrid/conf.rpi_4_32b_na create mode 120000 bin/konsulko-labgrid/conf.rpi_4_na create mode 100644 bin/konsulko-labgrid/conf.rpi_arm64_na create mode 100755 bin/reset.labgrid create mode 100644 bin/writer.labgrid.rpi create mode 100644 bin/writer.labgrid.ti-k3 diff --git a/README.md b/README.md index 290e4d017b9d..bb836f4a20be 100644 --- a/README.md +++ b/README.md @@ -218,6 +218,19 @@ of which must be specified in the board configuration files: U-Boot's test framework also requires a `dfu-util` that supports the -p command-line option. Most distros provide this nowadays. +# Labgrid support + +It is possible to use labgrid to manage the hardware and use hooks provided +here to run the tests. In order for this to work, the following environment +variables must be set as per your lab: + +- `LG_CROSSBAR` must point at the crossbar service. +- `LG_PLACE` must point at the device under test. +- `LG_ENV` must point at the labgrid yaml file that describes your lab. + +In order for a given platform to be tested, it must be acquired before starting +tests and then released once complete. + # Python Modules See the `py/` directory in this repository. diff --git a/bin/common.labgrid b/bin/common.labgrid new file mode 100644 index 000000000000..e07107462a5e --- /dev/null +++ b/bin/common.labgrid @@ -0,0 +1,35 @@ +# Copyright (c) 2024 Konsulko Group. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +# Ensure we have all environment variables set +if [ -z "${LG_CROSSBAR}" ]; then + echo "LG_CROSSBAR is unset"; + exit 1; +fi + +if [ -z "${LG_PLACE}" ]; then + echo "LG_PLACE is unset"; + exit 1; +fi + +if [ -z "${LG_ENV}" ]; then + echo "LG_ENV is unset"; + exit 1; +fi diff --git a/bin/console.labgrid b/bin/console.labgrid new file mode 100755 index 000000000000..ac5d6a7c2620 --- /dev/null +++ b/bin/console.labgrid @@ -0,0 +1,24 @@ +# Copyright (c) 2024 Konsulko Group. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +# Ensure we have all environment variables set +. common.labgrid + +exec labgrid-client console diff --git a/bin/flash.labgrid.sd-mux b/bin/flash.labgrid.sd-mux new file mode 100644 index 000000000000..0dacf7d6dfd9 --- /dev/null +++ b/bin/flash.labgrid.sd-mux @@ -0,0 +1,31 @@ +# Copyright (c) 2024 Konsulko Group. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +# Ensure we have all environment variables set +. common.labgrid + +echo "switching sd-mux to host" +labgrid-client sd-mux host +#let mmc have some time to initialize to be available for udisks +sleep 1 +. writer.${flash_writer} + +echo "switching sd-mux to dut" +labgrid-client sd-mux dut diff --git a/bin/konsulko-labgrid/conf.am62x_beagleplay_a53_na b/bin/konsulko-labgrid/conf.am62x_beagleplay_a53_na new file mode 100644 index 000000000000..271cb19325df --- /dev/null +++ b/bin/konsulko-labgrid/conf.am62x_beagleplay_a53_na @@ -0,0 +1,30 @@ +# Copyright (c) 2024 Konsulko Group. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +# List the files to copy +tispl=tispl.bin_unsigned +uboot=u-boot.img_unsigned +tiboot3=tiboot3-am62x-gp-evm.bin + +# Use labgrid +console_impl=labgrid +reset_impl=labgrid +flash_impl=labgrid.sd-mux +flash_writer=labgrid.ti-k3 diff --git a/bin/konsulko-labgrid/conf.am64x_evm_a53_na b/bin/konsulko-labgrid/conf.am64x_evm_a53_na new file mode 100644 index 000000000000..fbc6b9b61fb4 --- /dev/null +++ b/bin/konsulko-labgrid/conf.am64x_evm_a53_na @@ -0,0 +1,30 @@ +# Copyright (c) 2024 Konsulko Group. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +# List the files to copy +tispl=tispl.bin_unsigned +uboot=u-boot.img_unsigned +tiboot3=tiboot3-am64x-gp-evm.bin + +# Use labgrid +console_impl=labgrid +reset_impl=labgrid +flash_impl=labgrid.sd-mux +flash_writer=labgrid.ti-k3 diff --git a/bin/konsulko-labgrid/conf.rpi_4_32b_na b/bin/konsulko-labgrid/conf.rpi_4_32b_na new file mode 120000 index 000000000000..d33d959874cb --- /dev/null +++ b/bin/konsulko-labgrid/conf.rpi_4_32b_na @@ -0,0 +1 @@ +conf.rpi_arm64_na \ No newline at end of file diff --git a/bin/konsulko-labgrid/conf.rpi_4_na b/bin/konsulko-labgrid/conf.rpi_4_na new file mode 120000 index 000000000000..d33d959874cb --- /dev/null +++ b/bin/konsulko-labgrid/conf.rpi_4_na @@ -0,0 +1 @@ +conf.rpi_arm64_na \ No newline at end of file diff --git a/bin/konsulko-labgrid/conf.rpi_arm64_na b/bin/konsulko-labgrid/conf.rpi_arm64_na new file mode 100644 index 000000000000..a65f078ac6e2 --- /dev/null +++ b/bin/konsulko-labgrid/conf.rpi_arm64_na @@ -0,0 +1,25 @@ +# Copyright (c) 2024 Konsulko Group. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +# Use labgrid +console_impl=labgrid +reset_impl=labgrid +flash_impl=labgrid.sd-mux +flash_writer=labgrid.rpi diff --git a/bin/reset.labgrid b/bin/reset.labgrid new file mode 100755 index 000000000000..1f6912ebb2b3 --- /dev/null +++ b/bin/reset.labgrid @@ -0,0 +1,24 @@ +# Copyright (c) 2024 Konsulko Group. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +# Ensure we have all environment variables set +. common.labgrid + +exec labgrid-client power cycle diff --git a/bin/writer.labgrid.rpi b/bin/writer.labgrid.rpi new file mode 100644 index 000000000000..73f1d589ed9f --- /dev/null +++ b/bin/writer.labgrid.rpi @@ -0,0 +1,46 @@ +# Copyright (c) 2024 Konsulko Group. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +# Ensure we have all environment variables set +. common.labgrid +set -e + +build=${U_BOOT_BUILD_DIR} +configtxt=`mktemp` + +echo "enable_uart=1" | tee ${configtxt} +echo "kernel=u-boot.bin" | tee -a ${configtxt} + +case "${board_type}" in +rpi_3|rpi_3b|rpi_3_b_plus|rpi_4|rpi_arm64) + echo "arm_64bit=1" | tee -a ${configtxt} + ;; +esac + +case "${board_ident}" in +3-32-pl011) + echo "dtoverlay=pi3-miniuart-bt" | sudo tee -a ${configtxt} + ;; +esac + +labgrid-client write-files -T ${configtxt} config.txt +labgrid-client write-files -T ${build}/u-boot.bin u-boot.bin +rm ${configtxt} +echo "Done writing build" diff --git a/bin/writer.labgrid.ti-k3 b/bin/writer.labgrid.ti-k3 new file mode 100644 index 000000000000..0210eeeda46e --- /dev/null +++ b/bin/writer.labgrid.ti-k3 @@ -0,0 +1,35 @@ +# Copyright (c) 2024 Konsulko Group. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +# Ensure we have all environment variables set +. common.labgrid + +build=${U_BOOT_BUILD_DIR} + +if [ -z "${tispl}" -o -z "${uboot}" -o -z "${tiboot3}" ]; then + echo "Must configure tispl, uboot, tiboot3 and optionally sysfw" + echo "per the board documentation." + exit 1 +fi +echo "Writing build at ${build}" +labgrid-client write-files -T ${build}/${tispl} tispl.bin +labgrid-client write-files -T ${build}/${uboot} u-boot.img +labgrid-client write-files -T ${build/_a??/_r5}/${tiboot3} tiboot3.bin +echo "Done writing build" -- 2.34.1