OpenOCD can handle certain target requests, currently debugmsg are only supported for arm7_9 and cortex_m3.
See libdcc in the contrib dir for more details.
@itemize @bullet
-@item @b{target_request debugmsgs} <@var{enable}|@var{disable}>
+@item @b{target_request debugmsgs} <@var{enable}|@var{disable}|@var{charmsg}>
@cindex target_request debugmsgs
-@*Enable/disable target debugmsgs requests. debugmsgs enable messages to be sent to the debugger while the target is running.
+@*Enable/disable target debugmsgs requests. debugmsgs enable messages to be sent to the debugger while the target is running. @var{charmsg} recives the message like linux kernel ``Kernel low-level debugging via EmbeddedICE DCC channel'' option way.
@end itemize
@node JTAG Commands
#include <string.h>
command_t *target_request_cmd = NULL;
+static int charmsg_mode = 0;
int target_asciimsg(target_t *target, u32 length)
{
int target_request(target_t *target, u32 request)
{
target_req_cmd_t target_req_cmd = request & 0xff;
-
+
+ if ( charmsg_mode ) {
+ target_charmsg(target, target_req_cmd );
+ return ERROR_OK;
+ }
switch (target_req_cmd)
{
case TARGET_REQ_TRACEMSG:
if (argc > 0)
{
- if (!strcmp(args[0], "enable"))
+ if (!strcmp(args[0], "enable") || !strcmp(args[0], "charmsg"))
{
/* don't register if this command context is already receiving */
if (!receiving)
receiving = 1;
add_debug_msg_receiver(cmd_ctx, target);
}
+ charmsg_mode = !strcmp(args[0], "charmsg");
}
else if (!strcmp(args[0], "disable"))
{
}
else
{
- command_print(cmd_ctx, "usage: target_request debugmsgs ['enable'|'disable']");
+ command_print(cmd_ctx, "usage: target_request debugmsgs ['enable'|'disable'|'charmsg']");
}
}
command_print(cmd_ctx, "receiving debug messages from current target %s",
- (receiving) ? "enabled" : "disabled");
-
+ (receiving) ? (charmsg_mode?"charmsg":"enabled") : "disabled" );
return ERROR_OK;
}