11# SPDX-License-Identifier: Apache-2.0 
2- if (( ${CONFIG_SOC_NSIM_HS_SMP} )  OR  ( ${CONFIG_SOC_NSIM_HS6X_SMP} ) )
2+ if (" ${BOARD_DEBUG_RUNNER} "   STREQUAL   "mdb-nsim"   OR  " ${BOARD_FLASH_RUNNER} "   STREQUAL   "mdb-nsim" )
33# mdb is required to run nsim multicore targets 
44find_program (
55  MDB
66  mdb
77  )
8+ set (MDB_BASIC_OPTIONS -nooptions -nogoifmain -toggle=include_local_symbols=1)
89
9- if (${CONFIG_SOC_NSIM_HS_SMP} )
10-  set (MDB_ARGS mdb_hs_smp.args)
11- elseif (${CONFIG_SOC_NSIM_HS6X_SMP} )
12-  set (MDB_ARGS mdb_hs6x_smp.args)
10+ # remove previous .sc.project folder which has temporary settings for MDB. 
11+ set (MDB_OPTIONS ${CMAKE_COMMAND}  -E rm -rf ${APPLICATION_BINARY_DIR} /.sc.project)
12+ if (CONFIG_MP_NUM_CPUS GREATER  1)
13+   set (MULTIFILES ${MDB}  -multifiles=)
14+   foreach (val RANGE ${CONFIG_MP_NUM_CPUS} )
15+     if (val LESS  CONFIG_MP_NUM_CPUS)
16+       MATH (EXPR  PSET_NUM "${CONFIG_MP_NUM_CPUS} -${val} " )
17+       MATH (EXPR  CORE_NUM "${CONFIG_MP_NUM_CPUS} -${val} -1" )
18+       if (PSET_NUM GREATER  0)
19+         list (APPEND  MDB_OPTIONS &&)
20+       endif ()
21+       list (APPEND  MDB_OPTIONS ${MDB}  -pset=${PSET_NUM}  -psetname=core${CORE_NUM} )
22+       if (PSET_NUM GREATER  1)
23+         list (APPEND  MDB_OPTIONS -prop=download=2)
24+         set (MULTIFILES ${MULTIFILES} core${CORE_NUM} ,)
25+       else ()
26+         set (MULTIFILES ${MULTIFILES} core${CORE_NUM} )
27+       endif ()
28+       list (APPEND  MDB_OPTIONS ${MDB_BASIC_OPTIONS}  -nsim @${BOARD_DIR} /support/${MDB_ARGS}  ${APPLICATION_BINARY_DIR} /zephyr/${KERNEL_ELF_NAME} )
29+     endif ()
30+   endforeach ()
31+   list (APPEND  MDB_OPTIONS && NSIM_MULTICORE=1 ${MULTIFILES}  -run -cl)
32+ else ()
33+  list (APPEND  MDB_OPTIONS && ${MDB}  ${MDB_BASIC_OPTIONS}  -nsim @${BOARD_DIR} /support/${MDB_ARGS}  -run -cl)
1334endif ()
1435
36+ string (REPLACE ";"  " "  MDB_COMMAND "${MDB_OPTIONS} " )
1537add_custom_target (run
1638  COMMAND 
17-   ${MDB}  -pset=1 -psetname=core0 -prop=ident=0x00000050 -cmpd=soc
18-   @${BOARD_DIR} /support/${MDB_ARGS}  ${APPLICATION_BINARY_DIR} /zephyr/${KERNEL_ELF_NAME}  &&
19-   ${MDB}  -pset=2 -psetname=core1 -prop=download=2 -prop=ident=0x00000150 -cmpd=soc
20-   @${BOARD_DIR} /support/${MDB_ARGS}  ${APPLICATION_BINARY_DIR} /zephyr/${KERNEL_ELF_NAME}  &&
21-   NSIM_MULTICORE=1 ${MDB}  -multifiles=core0,core1 -cmpd=soc -run -cl
39+   ${MDB_OPTIONS} 
40+   ${APPLICATION_BINARY_DIR} /zephyr/${KERNEL_ELF_NAME} 
2241  DEPENDS  ${logical_target_for_zephyr_elf} 
2342  WORKING_DIRECTORY  ${APPLICATION_BINARY_DIR} 
43+   COMMENT  "MDB COMMAND: ${MDB_COMMAND}  ${APPLICATION_BINARY_DIR} /zephyr/${KERNEL_ELF_NAME} " 
2444  USES_TERMINAL 
25-    )
45+ )
2646else ()
2747find_program (
2848  NSIM
2949  nsimdrv
3050  )
3151
32- if (${CONFIG_SOC_NSIM_EM} )
33-  set (NSIM_PROPS nsim_em.props)
34- elseif (${CONFIG_SOC_NSIM_EM7D_V22} )
35-  set (NSIM_PROPS nsim_em7d_v22.props)
36- elseif (${CONFIG_SOC_NSIM_SEM} )
37-  set (NSIM_PROPS nsim_sem.props)
38- elseif (${CONFIG_SOC_NSIM_HS} )
39-  set (NSIM_PROPS nsim_hs.props)
40- elseif (${CONFIG_SOC_NSIM_HS6X} )
41-  set (NSIM_PROPS nsim_hs6x.props)
42- endif ()
43- 
4452add_custom_target (run
4553  COMMAND 
4654  ${NSIM} 
@@ -49,6 +57,7 @@ add_custom_target(run
4957  ${APPLICATION_BINARY_DIR} /zephyr/${KERNEL_ELF_NAME} 
5058  DEPENDS  ${logical_target_for_zephyr_elf} 
5159  WORKING_DIRECTORY  ${APPLICATION_BINARY_DIR} 
60+   COMMENT  "nSIM COMMAND: ${NSIM}  -propsfile ${BOARD_DIR} /support/${NSIM_PROPS}  ${APPLICATION_BINARY_DIR} /zephyr/${KERNEL_ELF_NAME} " 
5261  USES_TERMINAL 
5362  )
5463
0 commit comments