zephyr-flash-pyocd.bbclass: support for flashing via pyocd

Implement do_flash_usb for boards supported by pyocd:

    MACHINE=xxx bitbake yyy -c flash_usb

Pyocd support abundance of boards, however for now this
meta-layer supports only one board that can be flashed
using pyocd, that is 96Boards Nitrogen.

Describe the feature in README.

Signed-off-by: Wojciech Zmuda <wojciech.zmuda@huawei.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
This commit is contained in:
Wojciech Zmuda
2020-12-10 16:02:10 +00:00
committed by Naveen Saini
parent 1247d07c6c
commit b74dee01fc
3 changed files with 40 additions and 0 deletions

View File

@@ -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
call similar command with explicit flash_usb command:
$ MACHINE=96b-nitrogen bitbake zephyr-philosophers -c flash_usb
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
=================================

View File

@@ -0,0 +1,16 @@
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')}.elf"
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"

View File

@@ -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"