@ -22,7 +22,7 @@ DEFAULT_LINKSERVER_SEMIHOST_PORT = 3334
@@ -22,7 +22,7 @@ DEFAULT_LINKSERVER_SEMIHOST_PORT = 3334
class LinkServerBinaryRunner ( ZephyrBinaryRunner ) :
''' Runner front-end for NXP Linkserver '''
def __init__ ( self , cfg , device ,
def __init__ ( self , cfg , device , core ,
linkserver = DEFAULT_LINKSERVER_EXE ,
dt_flash = True , erase = True ,
probe = 1 ,
@ -39,6 +39,7 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
@@ -39,6 +39,7 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
self . elf_name = cfg . elf_file
self . gdb_cmd = cfg . gdb if cfg . gdb else None
self . device = device
self . core = core
self . linkserver = linkserver
self . dt_flash = dt_flash
self . erase = erase
@ -68,6 +69,8 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
@@ -68,6 +69,8 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
def do_add_parser ( cls , parser ) :
parser . add_argument ( ' --device ' , required = True , help = ' device name ' )
parser . add_argument ( ' --core ' , required = False , help = ' core of the device ' )
parser . add_argument ( ' --probe ' , default = 1 ,
help = ' interface to use (index, no serial number), default is 1 ' )
@ -92,7 +95,7 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
@@ -92,7 +95,7 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
@classmethod
def do_create ( cls , cfg , args ) :
return LinkServerBinaryRunner ( cfg , args . device ,
return LinkServerBinaryRunner ( cfg , args . device , args . core ,
linkserver = args . linkserver ,
dt_flash = args . dt_flash ,
erase = args . erase ,
@ -120,14 +123,22 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
@@ -120,14 +123,22 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
if command == ' flash ' :
self . flash ( * * kwargs )
else :
if self . core is not None :
_cmd_core = [ " -c " , self . core ]
else :
_cmd_core = [ ]
linkserver_cmd = ( [ self . linkserver ] +
[ " gdbserver " ] +
[ " --probe " , " # " + str ( self . probe ) ] +
[ " --gdb-port " , str ( self . gdb_port ) ] +
[ " --semihost-port " , str ( self . semihost_port ) ] +
self . override_cli +
_cmd_core +
self . override_cli +
[ self . device ] )
self . logger . debug ( f ' LinkServer cmd: + { linkserver_cmd } ' )
if command in ( ' debug ' , ' attach ' ) :
if self . elf_name is None or not os . path . isfile ( self . elf_name ) :
raise ValueError ( ' Cannot debug; elf file required ' )
@ -153,8 +164,13 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
@@ -153,8 +164,13 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
def do_erase ( self , * * kwargs ) :
if self . core is not None :
_cmd_core = " : " + self . core
else :
_cmd_core = " "
linkserver_cmd = ( [ self . linkserver , " flash " ] + [ " --probe " , " # " + str ( self . probe ) ] +
[ self . device ] + [ " erase " ] )
[ self . device + _cmd_core ] + [ " erase " ] )
self . logger . debug ( " flash erase command = " + str ( linkserver_cmd ) )
self . check_call ( linkserver_cmd )
@ -170,7 +186,13 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
@@ -170,7 +186,13 @@ class LinkServerBinaryRunner(ZephyrBinaryRunner):
def flash ( self , * * kwargs ) :
linkserver_cmd = ( [ self . linkserver , " flash " ] + [ " --probe " , " # " + str ( self . probe ) ] + self . override_cli + [ self . device ] )
if self . core is not None :
_cmd_core = " : " + self . core
else :
_cmd_core = " "
linkserver_cmd = ( [ self . linkserver , " flash " ] + [ " --probe " , " # " + str ( self . probe ) ] + self . override_cli + [ self . device + _cmd_core ] )
self . logger . debug ( f ' LinkServer cmd: + { linkserver_cmd } ' )
if self . erase :
self . do_erase ( )