scripts: runner: pyocd: support pyocd-flashtool options

Allow the user to specify additional options for pyocd-flashtool. This
grants finer-grained control to individual applications, e.g. to
perform a chip erase instead of a sector erase when flashing.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
diff --git a/scripts/support/runner/pyocd.py b/scripts/support/runner/pyocd.py
index afc9d8d..35ce1dc 100644
--- a/scripts/support/runner/pyocd.py
+++ b/scripts/support/runner/pyocd.py
@@ -16,6 +16,7 @@
 
     def __init__(self, target,
                  flashtool='pyocd-flashtool', flash_addr=0x0,
+                 flashtool_opts=None,
                  gdb=None, gdbserver='pyocd-gdbserver',
                  gdb_port=DEFAULT_PYOCD_GDB_PORT, tui=False,
                  bin_name=None, elf_name=None,
@@ -42,6 +43,8 @@
             daparg_args = ['-da', daparg]
         self.daparg_args = daparg_args
 
+        self.flashtool_extra = flashtool_opts if flashtool_opts else []
+
     @classmethod
     def name(cls):
         return 'pyocd'
@@ -56,9 +59,12 @@
                             help='target override')
 
         parser.add_argument('--daparg',
-                            help='Additional arguments to pyocd tool')
+                            help='Additional -da arguments to pyocd tool')
         parser.add_argument('--flashtool', default='pyocd-flashtool',
                             help='flash tool path, default is pyocd-flashtool')
+        parser.add_argument('--flashtool-opt', default=[], action='append',
+                            help='''Additional options for pyocd-flashtool,
+                            e.g. -ce to chip erase''')
         parser.add_argument('--gdbserver', default='pyocd-gdbserver',
                             help='GDB server, default is pyocd-gdbserver')
         parser.add_argument('--gdb-port', default=DEFAULT_PYOCD_GDB_PORT,
@@ -87,6 +93,7 @@
 
         return PyOcdBinaryRunner(
             args.target, flashtool=args.flashtool,
+            flashtool_opts=args.flashtool_opt,
             flash_addr=flash_addr, gdb=args.gdb,
             gdbserver=args.gdbserver, gdb_port=args.gdb_port, tui=args.tui,
             bin_name=args.kernel_bin, elf_name=args.kernel_elf,
@@ -110,6 +117,7 @@
                self.daparg_args +
                self.target_args +
                self.board_args +
+               self.flashtool_extra +
                [self.bin_name])
 
         print('Flashing Target Device')