I'm debugging Linux 2.6.29-rc8 with OpenOCD.

Linux for arm has arm generic debug option which send debug messages via
DCC channel.

-- see --
make ARCH=arm menuconfig
Kernel hacking
  Kernel low-level debugging functions
     Kernel low-level debugging via EmbeddedICE DCC channel
---------

This patch adds a feature to recive such a message.
to enable this feature, type
target_request debugmsgs charmsg

# I am not a good english speaker, and I do not know about texi.
# please fix them, if there is strange sentence.

--------
Hiroshi Ito
Media Lab. Inc.,
URL http://www.mlb.co.jp ( Sorry, Japanese only. )
TEL +81-3-5294-7255  FAX +81-3-5294-7256

Index: src/target/target_request.c
===================================================================
--- src/target/target_request.c (revision 1430)
+++ src/target/target_request.c (working copy)
@@ -39,6 +39,7 @@
 #include <string.h>
 
 command_t *target_request_cmd = NULL;
+static int charmsg_mode = 0;
 
 int target_asciimsg(target_t *target, u32 length)
 {
@@ -119,7 +120,11 @@
 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:
@@ -268,7 +273,7 @@
 
        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)
@@ -276,6 +281,7 @@
                                receiving = 1;
                                add_debug_msg_receiver(cmd_ctx, target);
                        }
+                       charmsg_mode = !strcmp(args[0], "charmsg");
                }
                else if (!strcmp(args[0], "disable"))
                {
@@ -288,13 +294,12 @@
                }
                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;
 }
 
Index: doc/openocd.texi
===================================================================
--- doc/openocd.texi    (revision 1430)
+++ doc/openocd.texi    (working copy)
@@ -2871,9 +2871,9 @@
 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
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to