/* 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. */

