/* This demonstrates how to setup a Debugger '*.ini' file to interface with the
 * C-code using the JTEST test framework.
 */

//_WDWORD(0x4001F000, 0x00000001);                    /* Remap on */

LOAD %L INCREMENTAL


RESET                                               /* Reset the target processor */
LOG OFF                                             /* Turn off Logging by default. */
BK *                                                /* Remove existing breakpoints. */

INCLUDE ../../Common/JTest/jtest_fns.ini            /* Load the JTEST helper functions */
INCLUDE ../../Common/JTest/jtest_log_MPS2.ini       /* Include a log file if specified by jtest_log.ini */

/* Break on special members of the JTEST framework.  The framework's
   name is defined in jtest_fw.h by the #DEFINE JTEST_FW. */
BS test_start  , 1, "test_start_msg();"
BS test_end    , 1, "test_end_msg();"
BS group_start , 1, "group_start_msg();"
BS group_end   , 1, "group_end_msg();"
BS dump_str    , 1, "dump_str_fn();"
//BS dump_data   , 1, "dump_data_fn();"
BS exit_fw     , 1, "break_fn(); debug_clean_fn(); log_off_fn();"

debug_setup_finished_msg()      /* Output a message to let the output
                                   parser know that setup has
                                   finished. */

G                                                   /* Start the Tests */
