Thanks for the patches. Please find my comments below. -----Original Message----- From: yocto@lists.yoctoproject.org <yocto@lists.yoctoproject.org> On Behalf Of Wojciech Zmuda Sent: Monday, December 7, 2020 4:15 AM To: yocto@lists.yoctoproject.org Cc: davide.ri...@huawei.com; zbigniew.bo...@huawei.com; jaroslaw.ma...@huawei.com; robert.d...@huawei.com; Wojciech Zmuda <wojciech.zm...@huawei.com> Subject: [yocto] [meta-zephyr][PATCH 5/5] zephyr-flash-pyocd.bbclass: support for flashing via pyocd
Flash boards supported via pyocd: MACHINE=xxx bitbake yyy -c flash_usb The only supported board for now is 96Boards Nitrogen. Modify its config accordingly. Modify helloworld and philosopers samples with adidtional .hex output file deployment, as this format is required by pyocd. Describe the feature in README. Signed-off-by: Wojciech Zmuda <wojciech.zm...@huawei.com> --- README.txt | 23 +++++++++++++++++++ classes/zephyr-flash-pyocd.bbclass | 17 ++++++++++++++ conf/machine/96b-nitrogen.conf | 1 + .../zephyr-kernel/zephyr-helloworld.bb | 1 + .../zephyr-kernel/zephyr-philosophers.bb | 1 + 5 files changed, 43 insertions(+) create mode 100644 classes/zephyr-flash-pyocd.bbclass diff --git a/README.txt b/README.txt index 6463339..4366764 100644 --- a/README.txt +++ b/README.txt @@ -43,6 +43,29 @@ The same sample, for Nios2 image: $ MACHINE=qemu-nios2 bitbake zephyr-philosophers $ runqemu qemu-nios2 +Flashing +================================= + +You can flash Zephyr samples to boards. Currently, the following +MACHINEs are supported: + * DFU: + - arduino_101_sss + - arduino_101 + - arduino_101_ble + * pyocd: + - 96b_nitrogen + +To flash the example you built with command e.g. + + $ MACHINE=96b_nitrogen bitbake zephyr-philosophers [Naveen Saini] Typo here, MACHINE=96b-nitrogen + +call similar command with explicit flash_usb command: + + $ MACHINE=96b_nitrogen bitbake zephyr-philosophers -c flash_usb [Naveen Saini] Same as above + +dfu-util and/or pyocd need to be installed in your system. If you +observe permission errors or the flashing process seem to hang, follow those instructions: +https://github.com/pyocd/pyOCD/tree/master/udev Building and Running Zephyr Tests ================================= diff --git a/classes/zephyr-flash-pyocd.bbclass b/classes/zephyr-flash-pyocd.bbclass new file mode 100644 index 0000000..aafe9e7 --- /dev/null +++ b/classes/zephyr-flash-pyocd.bbclass @@ -0,0 +1,17 @@ + +python do_flash_usb() { + from pyocd.core.helpers import ConnectHelper + from pyocd.flash.file_programmer import FileProgrammer + + image = f"{d.getVar('DEPLOY_DIR_IMAGE')}/{d.getVar('PN')}.hex" + bb.plain(f"Attempting to flash {image} to board + {d.getVar('BOARD')}") + + with ConnectHelper.session_with_chosen_probe() as session: + FileProgrammer(session).program(image) + session.board.target.reset() +} + +addtask do_flash_usb + +do_flash_usb[nostamp] = "1" +do_flash_usb[vardepsexclude] = "BB_ORIGENV" diff --git a/conf/machine/96b-nitrogen.conf b/conf/machine/96b-nitrogen.conf index d1905f2..998db4c 100644 --- a/conf/machine/96b-nitrogen.conf +++ b/conf/machine/96b-nitrogen.conf @@ -4,4 +4,5 @@ #@DESCRIPTION: Machine configuration for 96Boards Nitrogen Board. require conf/machine/include/nrf52832.inc +ZEPHYR_INHERIT_CLASSES += "zephyr-flash-pyocd" ARCH_96b-nitrogen = "arm" diff --git a/recipes-kernel/zephyr-kernel/zephyr-helloworld.bb b/recipes-kernel/zephyr-kernel/zephyr-helloworld.bb index 1400e72..9b77975 100644 --- a/recipes-kernel/zephyr-kernel/zephyr-helloworld.bb +++ b/recipes-kernel/zephyr-kernel/zephyr-helloworld.bb @@ -8,6 +8,7 @@ OECMAKE_SOURCEPATH = "${ZEPHYR_SRC_DIR}" do_deploy () { install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT}.elf ${DEPLOYDIR}/${PN}.elf + install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT}.hex + ${DEPLOYDIR}/${PN}.hex } [Naveen Saini] No *.hex file while building for MACHINE=qemu-x86 Error log: ...build/zephyr/zephyr.hex': No such file or directory addtask deploy after do_compile diff --git a/recipes-kernel/zephyr-kernel/zephyr-philosophers.bb b/recipes-kernel/zephyr-kernel/zephyr-philosophers.bb index 5f7fbcb..f720999 100644 --- a/recipes-kernel/zephyr-kernel/zephyr-philosophers.bb +++ b/recipes-kernel/zephyr-kernel/zephyr-philosophers.bb @@ -8,6 +8,7 @@ OECMAKE_SOURCEPATH = "${ZEPHYR_SRC_DIR}" do_deploy () { install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT}.elf ${DEPLOYDIR}/${PN}.elf + install -D ${B}/zephyr/${ZEPHYR_MAKE_OUTPUT}.hex + ${DEPLOYDIR}/${PN}.hex } [Naveen Saini] No *.hex file while building for MACHINE=qemu-x86 Error log: ...build/zephyr/zephyr.hex': No such file or directory Could you also try to build testcases !! $ MACHINE=96b-nitrogen bitbake zephyr-kernel-test-all Build breaks with error: ......build/zephyr/zephyr.elf.elf': No such file or directory addtask deploy after do_compile -- 2.25.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#51669): https://lists.yoctoproject.org/g/yocto/message/51669 Mute This Topic: https://lists.yoctoproject.org/mt/78763460/21656 Group Owner: yocto+ow...@lists.yoctoproject.org Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-