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

MAP  0x00000000, 0x001FFFFF  EXEC READ              /* 2048K Flash */
MAP  0x20000000, 0x201FFFFF  READ WRITE             /* 2048K RAM   */

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_Simulator.ini  /* Include specified log file */

/* 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, "coverage_clear(); test_start_msg();"
BS test_end    , 1, "coverage_msg(); 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 */
