Files
meta-zephyr/meta-zephyr-core/classes/zephyr-flash-bossac.bbclass
Eilís Ní Fhlannagáin dde88ba40b meta-zephyr-core/bsp: Restructure into sublayers
This commit restructures meta-zephyr into meta-zephyr-core and
meta-zephyr-bsp. It moves machine definitions into meta-zephyr-bsp
in preparation for adding the autogenerated zephyr machines.

Signed-off-by: Eilís Ní Fhlannagáin <elizabeth.flanagan@huawei.com>
Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com>
2022-01-24 19:26:35 +08:00

51 lines
1.9 KiB
Plaintext

#@DESCRIPTION: class file to flash boards like Arduino Nano BLE which depends on bossac for flashing
python do_flash_usb() {
import shutil
import subprocess
import serial.tools.list_ports
# Note: make sure the installed bossac is set to PATH before running flash_usb()
# Check if bossac is avaiable for flashing
origbbenv = d.getVar("BB_ORIGENV", False)
bossac_path = shutil.which("bossac", path=origbbenv.getVar('PATH'))
if not bossac_path:
bb.fatal("ERROR: bossac not found, please install first and add to PATH")
board = d.getVar('BOARD')
if board == 'arduino_nano_33_ble':
# find the serial port to which board is connected to
for port in serial.tools.list_ports.comports():
if 'Arduino Nano 33 BLE' in port.description:
serial_port = port.device
break
else:
bb.fatal("ERROR: board not connected for flashing. Connect via USB and enable permission to connected port")
image = "%s/%s.bin" % (d.getVar('DEPLOY_DIR_IMAGE'), d.getVar('PN'))
command = [bossac_path, '-p', serial_port , '-R', '-e', '-w', '-v', '-b', image]
else:
bb.fatal("ERROR: Unsupported board %s" % board)
bb.note("command: %s" % command)
bb.plain("Attempting to flash board: %s" % board)
# Random failure are a possibility here, retry till there is a success for finite times
for _ in range(10, 0, -1):
try:
subprocess.check_call(command)
bb.plain("Bossac Flashing board: %s Success " % board)
break
except subprocess.CalledProcessError as e:
bb.warn("Failed to flash %s (error code: %s). Retrying after 1 second..." % (board, e.returncode))
time.sleep(1)
}
addtask do_flash_usb after do_deploy
do_flash_usb[nostamp] = "1"
do_flash_usb[vardepsexclude] = "BB_ORIGENV"